@epam/ai-dial-chat-shared 1.3.0-dev.98 → 1.4.0-dev.5

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 (155) hide show
  1. package/components/ActionMenu/ActionMenu.d.ts +26 -0
  2. package/components/ActionMenu/ActionMenu.d.ts.map +1 -0
  3. package/components/ActionMenu/ActionMenu.js +50 -0
  4. package/components/ConfirmationDialog/ConfirmationDialog.d.ts +6 -1
  5. package/components/ConfirmationDialog/ConfirmationDialog.d.ts.map +1 -1
  6. package/components/ConfirmationDialog/ConfirmationDialog.js +11 -9
  7. package/components/ConfirmationIdentityCard/ConfirmationIdentityCard.module.scss.js +5 -4
  8. package/components/ConfirmationIdentityRow/ConfirmationIdentityRow.js +2 -2
  9. package/components/ConfirmationIdentityRow/ConfirmationIdentityRow.module.scss.js +3 -2
  10. package/components/ConfirmationView/ConfirmationFooter.d.ts.map +1 -1
  11. package/components/ConfirmationView/ConfirmationFooter.js +24 -25
  12. package/components/ConfirmationView/ConfirmationView.d.ts +2 -0
  13. package/components/ConfirmationView/ConfirmationView.d.ts.map +1 -1
  14. package/components/ConfirmationView/ConfirmationView.js +12 -12
  15. package/components/ConfirmationView/ConfirmationView.module.scss.js +6 -5
  16. package/components/DeleteConfirmationDrawer/DeleteConfirmationDrawer.d.ts +31 -0
  17. package/components/DeleteConfirmationDrawer/DeleteConfirmationDrawer.d.ts.map +1 -0
  18. package/components/DeleteConfirmationDrawer/DeleteConfirmationDrawer.js +36 -0
  19. package/components/DeleteConfirmationView/DeleteConfirmationView.d.ts +3 -0
  20. package/components/DeleteConfirmationView/DeleteConfirmationView.d.ts.map +1 -1
  21. package/components/DeleteConfirmationView/DeleteConfirmationView.js +36 -27
  22. package/components/DeleteConfirmationView/DeleteConfirmationView.module.scss.js +5 -4
  23. package/components/DeploymentIcon/DeploymentIcon.module.scss.js +3 -2
  24. package/components/EntityHeader/EntityHeader.js +1 -1
  25. package/components/InitialsAvatar/InitialsAvatar.d.ts +3 -0
  26. package/components/InitialsAvatar/InitialsAvatar.d.ts.map +1 -1
  27. package/components/InitialsAvatar/InitialsAvatar.js +4 -3
  28. package/components/ItemHeader/ItemHeader.module.scss.js +5 -4
  29. package/components/MarkdownRenderer/CodeBlock/CodeBlock.d.ts +6 -2
  30. package/components/MarkdownRenderer/CodeBlock/CodeBlock.d.ts.map +1 -1
  31. package/components/MarkdownRenderer/CodeBlock/CodeBlock.js +58 -58
  32. package/components/MarkdownRenderer/CodeBlock/CodeBlock.module.scss.js +9 -8
  33. package/components/MarkdownRenderer/CodeBlock/syntax-theme.d.ts.map +1 -1
  34. package/components/MarkdownRenderer/MarkdownRenderer.d.ts +6 -0
  35. package/components/MarkdownRenderer/MarkdownRenderer.d.ts.map +1 -1
  36. package/components/MarkdownRenderer/MarkdownRenderer.js +29 -24
  37. package/components/MarkdownRenderer/MarkdownRenderer.module.scss.js +9 -8
  38. package/components/MarkdownRenderer/Math/MarkdownMathBlock.module.scss.js +5 -4
  39. package/components/MarkdownRenderer/PlainTextRenderer.js +1 -1
  40. package/components/MarkdownRenderer/Table/MarkdownTable.d.ts +4 -0
  41. package/components/MarkdownRenderer/Table/MarkdownTable.d.ts.map +1 -1
  42. package/components/MarkdownRenderer/Table/MarkdownTable.js +68 -63
  43. package/components/MarkdownRenderer/Table/MarkdownTable.module.scss.js +15 -13
  44. package/components/MarkdownRenderer/Table/TableHeader.module.scss.js +3 -2
  45. package/components/MarkdownRenderer/markdown-whitespace.js +2 -6
  46. package/components/NewVersionAlert/NewVersionAlert.d.ts +27 -0
  47. package/components/NewVersionAlert/NewVersionAlert.d.ts.map +1 -0
  48. package/components/NewVersionAlert/NewVersionAlert.js +28 -0
  49. package/components/NewVersionAlert/NewVersionAlert.module.scss.js +4 -0
  50. package/components/NotificationStack/NotificationStack.d.ts +48 -0
  51. package/components/NotificationStack/NotificationStack.d.ts.map +1 -0
  52. package/components/NotificationStack/NotificationStack.js +111 -0
  53. package/components/PanelEmptyState/PanelEmptyState.d.ts +12 -2
  54. package/components/PanelEmptyState/PanelEmptyState.d.ts.map +1 -1
  55. package/components/PanelEmptyState/PanelEmptyState.js +19 -9
  56. package/components/PanelEmptyState/PanelEmptyState.module.scss.js +6 -2
  57. package/components/ResourceSummary/ResourceSummary.module.scss.js +5 -4
  58. package/components/TextRefinementField/TextRefinementField.d.ts +4 -2
  59. package/components/TextRefinementField/TextRefinementField.d.ts.map +1 -1
  60. package/components/TextRefinementField/TextRefinementField.js +84 -55
  61. package/components/UnsavedChangesProvider/UnsavedChangesProvider.d.ts +22 -0
  62. package/components/UnsavedChangesProvider/UnsavedChangesProvider.d.ts.map +1 -0
  63. package/components/UnsavedChangesProvider/UnsavedChangesProvider.js +57 -0
  64. package/components/UnsavedChangesProvider/unsaved-changes-context.d.ts +44 -0
  65. package/components/UnsavedChangesProvider/unsaved-changes-context.d.ts.map +1 -0
  66. package/components/UnsavedChangesProvider/unsaved-changes-context.js +13 -0
  67. package/constants/breakpoint.d.ts +6 -0
  68. package/constants/breakpoint.d.ts.map +1 -1
  69. package/constants/breakpoint.js +2 -2
  70. package/conversation-transfer/conversation-transfer-queue.d.ts +16 -0
  71. package/conversation-transfer/conversation-transfer-queue.d.ts.map +1 -0
  72. package/conversation-transfer/conversation-transfer-queue.js +24 -0
  73. package/file-manager/DialFileManagerShell/DialFileManagerShell.d.ts +9 -0
  74. package/file-manager/DialFileManagerShell/DialFileManagerShell.d.ts.map +1 -1
  75. package/file-manager/DialFileManagerShell/DialFileManagerShell.js +330 -269
  76. package/file-manager/DialFileManagerShell/DialFileManagerShell.module.scss.js +8 -0
  77. package/file-manager/FileManagerAttachModal/FileManagerAttachModal.d.ts +7 -0
  78. package/file-manager/FileManagerAttachModal/FileManagerAttachModal.d.ts.map +1 -1
  79. package/file-manager/FileManagerAttachModal/FileManagerAttachModal.js +85 -80
  80. package/file-manager/FileManagerAttachModal/FileManagerAttachModal.module.scss.js +7 -0
  81. package/file-manager/OperationLoaderModal/OperationLoaderModal.d.ts +5 -0
  82. package/file-manager/OperationLoaderModal/OperationLoaderModal.d.ts.map +1 -1
  83. package/file-manager/OperationLoaderModal/OperationLoaderModal.js +25 -20
  84. package/file-manager/OperationLoaderModal/OperationLoaderModal.module.scss.js +4 -0
  85. package/file-manager/file-manager-controller.d.ts +11 -3
  86. package/file-manager/file-manager-controller.d.ts.map +1 -1
  87. package/file-manager/index.d.ts +1 -0
  88. package/file-manager/index.d.ts.map +1 -1
  89. package/file-manager/labels.d.ts +21 -2
  90. package/file-manager/labels.d.ts.map +1 -1
  91. package/file-manager/shell-styles.d.ts +37 -0
  92. package/file-manager/shell-styles.d.ts.map +1 -0
  93. package/file-manager/upload-batch.d.ts +46 -0
  94. package/file-manager/upload-batch.d.ts.map +1 -1
  95. package/file-manager/upload-batch.js +6 -2
  96. package/file-manager/upload-queue.d.ts +44 -4
  97. package/file-manager/upload-queue.d.ts.map +1 -1
  98. package/file-manager/upload-queue.js +45 -13
  99. package/file-manager.js +4 -4
  100. package/hooks/useAvailableHeightCap.js +1 -1
  101. package/hooks/useControlErrorAssociation.d.ts +3 -0
  102. package/hooks/useControlErrorAssociation.d.ts.map +1 -0
  103. package/hooks/useControlErrorAssociation.js +12 -0
  104. package/hooks/useIsMobile.js +1 -1
  105. package/hooks/useIsPhone.d.ts +3 -0
  106. package/hooks/useIsPhone.d.ts.map +1 -0
  107. package/hooks/useIsPhone.js +13 -0
  108. package/hooks/useIsTablet.d.ts +3 -0
  109. package/hooks/useIsTablet.d.ts.map +1 -0
  110. package/hooks/useIsTablet.js +13 -0
  111. package/hooks/useIsTextClipped.d.ts +26 -0
  112. package/hooks/useIsTextClipped.d.ts.map +1 -0
  113. package/hooks/useIsTextClipped.js +25 -0
  114. package/hooks/useIsVerticallyClamped.d.ts +16 -0
  115. package/hooks/useIsVerticallyClamped.d.ts.map +1 -0
  116. package/hooks/useIsVerticallyClamped.js +20 -0
  117. package/hooks/useTextRefinement.d.ts +1 -1
  118. package/hooks/useTextRefinement.d.ts.map +1 -1
  119. package/hooks/useTextRefinement.js +4 -4
  120. package/hooks/useUnsavedChangesGuard.js +1 -5
  121. package/hooks/useUnsavedChangesLeaveConfirmation.d.ts +12 -0
  122. package/hooks/useUnsavedChangesLeaveConfirmation.d.ts.map +1 -0
  123. package/hooks/useUnsavedChangesLeaveConfirmation.js +22 -0
  124. package/hooks/useUnsavedChangesLeaveGuard.d.ts +24 -0
  125. package/hooks/useUnsavedChangesLeaveGuard.d.ts.map +1 -0
  126. package/hooks/useUnsavedChangesLeaveGuard.js +24 -0
  127. package/index.css +2 -2
  128. package/index.d.ts +15 -0
  129. package/index.d.ts.map +1 -1
  130. package/index.js +93 -78
  131. package/models/auth.d.ts +2 -0
  132. package/models/auth.d.ts.map +1 -1
  133. package/models/chat.d.ts +19 -0
  134. package/models/chat.d.ts.map +1 -1
  135. package/models/conversation-classification.d.ts +5 -0
  136. package/models/conversation-classification.d.ts.map +1 -1
  137. package/models/conversation-classification.js +3 -1
  138. package/models/text-refinement.d.ts +6 -2
  139. package/models/text-refinement.d.ts.map +1 -1
  140. package/package.json +10 -17
  141. package/types/mime-type.d.ts +30 -0
  142. package/types/mime-type.d.ts.map +1 -1
  143. package/types/mime-type.js +1 -1
  144. package/utils/dom.d.ts +8 -0
  145. package/utils/dom.d.ts.map +1 -0
  146. package/utils/dom.js +10 -0
  147. package/utils/format-price.js +10 -10
  148. package/utils/inline-segments.js +1 -1
  149. package/utils/latex.d.ts +4 -3
  150. package/utils/latex.d.ts.map +1 -1
  151. package/utils/latex.js +47 -41
  152. package/utils/message-attachment-to-display.js +1 -1
  153. package/utils/mime-type.js +1 -1
  154. package/utils/prompt-variables.js +5 -9
  155. package/utils/syntax-highlighting.js +8 -8
@@ -1,5 +1,45 @@
1
- import { TransferQueueItem } from '@epam/ai-dial-ui-kit';
2
- import { FileUploadEntry } from './upload-batch';
3
- /** Maps upload entries onto the UI kit's `TransferQueue` rows. */
4
- export declare const toUploadQueueItems: (files: FileUploadEntry[]) => TransferQueueItem[];
1
+ import { TransferQueueItem, TransferQueueLabels } from '@epam/ai-dial-ui-kit';
2
+ import { FileDownloadBatchState, FileUploadBatchState, FileUploadEntry, FileUploadFailureReason } from './upload-batch';
3
+ /** Maps upload entries onto the UI kit's `TransferQueue` rows; a failed row's `message` is the host text for its reason, when there is one. */
4
+ export declare const toUploadQueueItems: (files: FileUploadEntry[], failureMessages?: Partial<Record<FileUploadFailureReason, string>>) => TransferQueueItem[];
5
+ /** Kind of a transfer-queue row, carried as its id prefix so cancel routes to the right batch. */
6
+ export declare enum TransferQueueRowKind {
7
+ Upload = "upload",
8
+ Download = "download"
9
+ }
10
+ /** Builds the id of a transfer-queue row from its kind and its batch entry id. */
11
+ export declare const toTransferQueueRowId: (kind: TransferQueueRowKind, entryId: string) => string;
12
+ /** Splits a transfer-queue row id back into its kind and batch entry id; `undefined` for an id of neither kind. */
13
+ export declare const parseTransferQueueRowId: (rowId: string) => {
14
+ kind: TransferQueueRowKind;
15
+ entryId: string;
16
+ } | undefined;
17
+ /**
18
+ * Maps the upload and download batches onto one UI kit `TransferQueue`:
19
+ * upload rows first, then download rows, each id prefixed by its kind.
20
+ */
21
+ export declare const toTransferQueueItems: (uploadBatch: FileUploadBatchState | null, downloadBatch: FileDownloadBatchState | null, failureMessages?: Partial<Record<FileUploadFailureReason, string>>) => TransferQueueItem[];
22
+ /** Row wording for a download row, as `DialFileManagerShellLabels.downloadQueueLabels` carries it. */
23
+ type DownloadRowLabels = Partial<Pick<TransferQueueLabels, 'cancelItemAriaLabel' | 'itemProgressAriaLabel' | 'queueProgressAriaLabel'>>;
24
+ /** Inputs of {@link buildTransferQueueLabels}. */
25
+ interface TransferQueueLabelSources {
26
+ /** The upload queue's labels, used for every upload row and as the base. */
27
+ uploadLabels?: Partial<TransferQueueLabels>;
28
+ /** Download-row wording; without it the queue keeps the upload labels. */
29
+ downloadLabels?: DownloadRowLabels;
30
+ /** Name of the aggregate bar while both kinds run. */
31
+ mixedProgressLabel?: string;
32
+ /** File names of the upload rows. */
33
+ uploadNames: ReadonlySet<string>;
34
+ /** File names of the download rows. */
35
+ downloadNames: ReadonlySet<string>;
36
+ }
37
+ /**
38
+ * The queue's labels with each row's cancel and progress names worded for its
39
+ * own kind (uploading / downloading), since the kit labels a whole queue
40
+ * rather than a row. A name present in both kinds keeps the upload wording.
41
+ * The aggregate bar is named for downloads, uploads, or both.
42
+ */
43
+ export declare const buildTransferQueueLabels: ({ uploadLabels, downloadLabels, mixedProgressLabel, uploadNames, downloadNames, }: TransferQueueLabelSources) => Partial<TransferQueueLabels> | undefined;
44
+ export {};
5
45
  //# sourceMappingURL=upload-queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"upload-queue.d.ts","sourceRoot":"","sources":["../../src/file-manager/upload-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,eAAe,EAAoB,MAAM,gBAAgB,CAAC;AAexE,kEAAkE;AAClE,eAAO,MAAM,kBAAkB,GAC7B,OAAO,eAAe,EAAE,KACvB,iBAAiB,EAMf,CAAC"}
1
+ {"version":3,"file":"upload-queue.d.ts","sourceRoot":"","sources":["../../src/file-manager/upload-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,sBAAsB,EAG3B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAE7B,MAAM,gBAAgB,CAAC;AAexB,+IAA+I;AAC/I,eAAO,MAAM,kBAAkB,GAC7B,OAAO,eAAe,EAAE,EACxB,kBAAkB,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,KACjE,iBAAiB,EAWf,CAAC;AAYN,kGAAkG;AAClG,oBAAY,oBAAoB;IAC9B,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAED,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,GAC/B,MAAM,oBAAoB,EAC1B,SAAS,MAAM,KACd,MAA8B,CAAC;AAElC,mHAAmH;AACnH,eAAO,MAAM,uBAAuB,GAClC,OAAO,MAAM,KACZ;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAUpD,CAAC;AAgBF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,aAAa,oBAAoB,GAAG,IAAI,EACxC,eAAe,sBAAsB,GAAG,IAAI,EAC5C,kBAAkB,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,KACjE,iBAAiB,EAUnB,CAAC;AAEF,sGAAsG;AACtG,KAAK,iBAAiB,GAAG,OAAO,CAC9B,IAAI,CACF,mBAAmB,EACnB,qBAAqB,GAAG,uBAAuB,GAAG,wBAAwB,CAC3E,CACF,CAAC;AAEF,kDAAkD;AAClD,UAAU,yBAAyB;IACjC,4EAA4E;IAC5E,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC5C,0EAA0E;IAC1E,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qCAAqC;IACrC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,uCAAuC;IACvC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACpC;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,mFAMtC,yBAAyB,KAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,SAoC7D,CAAC"}
@@ -1,17 +1,49 @@
1
- import { FileUploadStatus as e } from "./upload-batch.js";
2
- import { TransferQueueItemStatus as t } from "@epam/ai-dial-ui-kit";
1
+ import { FileDownloadStatus as e, FileUploadStatus as t } from "./upload-batch.js";
2
+ import { TransferQueueItemStatus as n } from "@epam/ai-dial-ui-kit";
3
3
  //#region src/file-manager/upload-queue.ts
4
- var n = {
5
- [e.Queued]: t.InProgress,
6
- [e.Uploading]: t.InProgress,
7
- [e.Completed]: t.Success,
8
- [e.Failed]: t.Failed,
9
- [e.Cancelled]: t.Canceled
10
- }, r = (e) => e.map((e) => ({
4
+ var r = {
5
+ [t.Queued]: n.InProgress,
6
+ [t.Uploading]: n.InProgress,
7
+ [t.Completed]: n.Success,
8
+ [t.Failed]: n.Failed,
9
+ [t.Cancelled]: n.Canceled
10
+ }, i = (e, n) => e.map((e) => ({
11
11
  id: e.id,
12
12
  name: e.name,
13
- status: n[e.status],
14
- percent: e.percent
15
- }));
13
+ status: r[e.status],
14
+ percent: e.percent,
15
+ message: e.status === t.Failed && e.failureReason != null ? n?.[e.failureReason] : void 0
16
+ })), a = {
17
+ [e.Downloading]: n.InProgress,
18
+ [e.Completed]: n.Success,
19
+ [e.Failed]: n.Failed,
20
+ [e.Cancelled]: n.Canceled
21
+ }, o = /* @__PURE__ */ function(e) {
22
+ return e.Upload = "upload", e.Download = "download", e;
23
+ }({}), s = (e, t) => `${e}:${t}`, c = (e) => {
24
+ let t = e.indexOf(":"), n = e.slice(0, t);
25
+ if (n === "upload" || n === "download") return {
26
+ kind: n,
27
+ entryId: e.slice(t + 1)
28
+ };
29
+ }, l = (t, n) => ({
30
+ id: s("download", t.id),
31
+ name: t.name,
32
+ status: a[t.status],
33
+ percent: t.percent,
34
+ message: t.status === e.Failed && t.failureReason != null ? n?.[t.failureReason] : void 0
35
+ }), u = (e, t, n) => [...i(e?.files ?? [], n).map((e) => ({
36
+ ...e,
37
+ id: s("upload", e.id)
38
+ })), ...(t?.files ?? []).map((e) => l(e, n))], d = ({ uploadLabels: e, downloadLabels: t, mixedProgressLabel: n, uploadNames: r, downloadNames: i }) => {
39
+ if (!t || i.size === 0) return e;
40
+ let a = (e) => i.has(e) && !r.has(e), o = (e, t) => e && t ? (n) => a(n) ? t(n) : e(n) : e ?? t, s = r.size === 0 ? t.queueProgressAriaLabel ?? e?.queueProgressAriaLabel : n ?? e?.queueProgressAriaLabel, c = o(e?.cancelItemAriaLabel, t.cancelItemAriaLabel), l = o(e?.itemProgressAriaLabel, t.itemProgressAriaLabel);
41
+ return {
42
+ ...e,
43
+ ...c ? { cancelItemAriaLabel: c } : {},
44
+ ...l ? { itemProgressAriaLabel: l } : {},
45
+ ...s ? { queueProgressAriaLabel: s } : {}
46
+ };
47
+ };
16
48
  //#endregion
17
- export { r as toUploadQueueItems };
49
+ export { o as TransferQueueRowKind, d as buildTransferQueueLabels, c as parseTransferQueueRowId, u as toTransferQueueItems, s as toTransferQueueRowId, i as toUploadQueueItems };
package/file-manager.js CHANGED
@@ -1,4 +1,4 @@
1
- import { toUploadQueueItems as e } from "./file-manager/upload-queue.js";
2
- import { DialFileManagerShell as t } from "./file-manager/DialFileManagerShell/DialFileManagerShell.js";
3
- import { FileManagerAttachModal as n } from "./file-manager/FileManagerAttachModal/FileManagerAttachModal.js";
4
- export { t as DialFileManagerShell, n as FileManagerAttachModal, e as toUploadQueueItems };
1
+ import { TransferQueueRowKind as e, buildTransferQueueLabels as t, parseTransferQueueRowId as n, toTransferQueueItems as r, toTransferQueueRowId as i, toUploadQueueItems as a } from "./file-manager/upload-queue.js";
2
+ import { DialFileManagerShell as o } from "./file-manager/DialFileManagerShell/DialFileManagerShell.js";
3
+ import { FileManagerAttachModal as s } from "./file-manager/FileManagerAttachModal/FileManagerAttachModal.js";
4
+ export { o as DialFileManagerShell, s as FileManagerAttachModal, e as TransferQueueRowKind, t as buildTransferQueueLabels, n as parseTransferQueueRowId, r as toTransferQueueItems, i as toTransferQueueRowId, a as toUploadQueueItems };
@@ -1,7 +1,7 @@
1
1
  import { RESIZABLE_FIELD_MAX_HEIGHT_CSS_VARIABLE as e } from "../constants/resizable-fields.js";
2
2
  import { useCallback as t, useLayoutEffect as n, useRef as r } from "react";
3
3
  //#region src/hooks/useAvailableHeightCap.ts
4
- var i = 16, a = 200, o = new Set([
4
+ var i = 16, a = 200, o = /* @__PURE__ */ new Set([
5
5
  "auto",
6
6
  "scroll",
7
7
  "overlay"
@@ -0,0 +1,3 @@
1
+ /** Adds `errorId` to the `aria-describedby` of the element `getControl` returns and sets `aria-invalid` while `hasError` is true. */
2
+ export declare const useControlErrorAssociation: (getControl: () => Element | null, errorId: string, hasError: boolean) => void;
3
+ //# sourceMappingURL=useControlErrorAssociation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useControlErrorAssociation.d.ts","sourceRoot":"","sources":["../../src/hooks/useControlErrorAssociation.ts"],"names":[],"mappings":"AASA,qIAAqI;AACrI,eAAO,MAAM,0BAA0B,GACrC,YAAY,MAAM,OAAO,GAAG,IAAI,EAChC,SAAS,MAAM,EACf,UAAU,OAAO,KAChB,IAqBF,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { useLayoutEffect as e } from "react";
2
+ //#region src/hooks/useControlErrorAssociation.ts
3
+ var t = (t, n, r) => {
4
+ e(() => {
5
+ let e = t();
6
+ if (!e) return;
7
+ let i = (e.getAttribute("aria-describedby") ?? "").split(/\s+/).filter((e) => e !== "" && e !== n);
8
+ r ? (i.push(n), e.setAttribute("aria-invalid", "true")) : e.removeAttribute("aria-invalid"), i.length > 0 ? e.setAttribute("aria-describedby", i.join(" ")) : e.removeAttribute("aria-describedby");
9
+ });
10
+ };
11
+ //#endregion
12
+ export { t as useControlErrorAssociation };
@@ -1,7 +1,7 @@
1
1
  import { MOBILE_MEDIA_QUERY as e } from "../constants/breakpoint.js";
2
2
  import { useEffect as t, useState as n } from "react";
3
3
  //#region src/hooks/useIsMobile.ts
4
- var r = () => typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia(e).matches, i = () => {
4
+ var r = () => typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(max-width: 1279px)").matches, i = () => {
5
5
  let [i, a] = n(r);
6
6
  return t(() => {
7
7
  if (typeof window > "u" || typeof window.matchMedia != "function") return;
@@ -0,0 +1,3 @@
1
+ /** Tracks the phone surface policy without changing the app's layout breakpoint. */
2
+ export declare const useIsPhone: () => boolean;
3
+ //# sourceMappingURL=useIsPhone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsPhone.d.ts","sourceRoot":"","sources":["../../src/hooks/useIsPhone.ts"],"names":[],"mappings":"AAQA,oFAAoF;AACpF,eAAO,MAAM,UAAU,QAAO,OAiB7B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { PHONE_MEDIA_QUERY as e } from "../constants/breakpoint.js";
2
+ import { useEffect as t, useState as n } from "react";
3
+ //#region src/hooks/useIsPhone.ts
4
+ var r = () => typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(width < 768px)").matches, i = () => {
5
+ let [i, a] = n(r);
6
+ return t(() => {
7
+ if (typeof window > "u" || typeof window.matchMedia != "function") return;
8
+ let t = window.matchMedia(e), n = () => a(t.matches);
9
+ return n(), t.addEventListener("change", n), () => t.removeEventListener("change", n);
10
+ }, []), i;
11
+ };
12
+ //#endregion
13
+ export { i as useIsPhone };
@@ -0,0 +1,3 @@
1
+ /** Tracks the tablet surface policy without changing the app's layout breakpoint. */
2
+ export declare const useIsTablet: () => boolean;
3
+ //# sourceMappingURL=useIsTablet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsTablet.d.ts","sourceRoot":"","sources":["../../src/hooks/useIsTablet.ts"],"names":[],"mappings":"AAQA,qFAAqF;AACrF,eAAO,MAAM,WAAW,QAAO,OAiB9B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { TABLET_MEDIA_QUERY as e } from "../constants/breakpoint.js";
2
+ import { useEffect as t, useState as n } from "react";
3
+ //#region src/hooks/useIsTablet.ts
4
+ var r = () => typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(768px <= width < 1280px)").matches, i = () => {
5
+ let [i, a] = n(r);
6
+ return t(() => {
7
+ if (typeof window > "u" || typeof window.matchMedia != "function") return;
8
+ let t = window.matchMedia(e), n = () => a(t.matches);
9
+ return n(), t.addEventListener("change", n), () => t.removeEventListener("change", n);
10
+ }, []), i;
11
+ };
12
+ //#endregion
13
+ export { i as useIsTablet };
@@ -0,0 +1,26 @@
1
+ import { RefObject } from 'react';
2
+ /** Return value of `useIsTextClipped`. */
3
+ export interface UseIsTextClippedResult<TElement extends HTMLElement> {
4
+ /** Ref attached to the element whose text may be clipped. */
5
+ ref: RefObject<TElement | null>;
6
+ /** Whether the element's text overflows its box horizontally. */
7
+ isClipped: boolean;
8
+ }
9
+ /**
10
+ * Reports whether an element's text overflows horizontally, so a caller can
11
+ * offer a way to reveal the hidden part only when something is actually
12
+ * hidden.
13
+ *
14
+ * `isMeasuring` exists because the answer is only meaningful while the element
15
+ * is in its clipped state: once the caller lets the text wrap, nothing
16
+ * overflows any more, and re-measuring there would retract the very control
17
+ * the reader just used. The last measurement taken while clipped is kept
18
+ * instead.
19
+ *
20
+ * @param isMeasuring - Whether the element is currently in its clipped state.
21
+ * @param contentKey - Text whose change should force a re-measure. A
22
+ * ResizeObserver does not fire for it: clipped text keeps the same box when
23
+ * its content grows.
24
+ */
25
+ export declare const useIsTextClipped: <TElement extends HTMLElement>(isMeasuring: boolean, contentKey: string) => UseIsTextClippedResult<TElement>;
26
+ //# sourceMappingURL=useIsTextClipped.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsTextClipped.d.ts","sourceRoot":"","sources":["../../src/hooks/useIsTextClipped.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOvC,0CAA0C;AAC1C,MAAM,WAAW,sBAAsB,CAAC,QAAQ,SAAS,WAAW;IAClE,6DAA6D;IAC7D,GAAG,EAAE,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAChC,iEAAiE;IACjE,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,WAAW,EAC3D,aAAa,OAAO,EACpB,YAAY,MAAM,KACjB,sBAAsB,CAAC,QAAQ,CA8BjC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { useCallback as e, useLayoutEffect as t, useRef as n, useState as r } from "react";
2
+ //#region src/hooks/useIsTextClipped.ts
3
+ var i = 1, a = (a, o) => {
4
+ let s = n(null), [c, l] = r(!1), u = e(() => {
5
+ let e = s.current;
6
+ e && l(e.scrollWidth - e.clientWidth > i);
7
+ }, []);
8
+ return t(() => {
9
+ if (!a) return;
10
+ u();
11
+ let e = s.current;
12
+ if (!e || typeof ResizeObserver > "u") return;
13
+ let t = new ResizeObserver(u);
14
+ return t.observe(e), () => t.disconnect();
15
+ }, [
16
+ a,
17
+ o,
18
+ u
19
+ ]), {
20
+ ref: s,
21
+ isClipped: c
22
+ };
23
+ };
24
+ //#endregion
25
+ export { a as useIsTextClipped };
@@ -0,0 +1,16 @@
1
+ import { RefObject } from 'react';
2
+ /** Return value of `useIsVerticallyClamped`. */
3
+ export interface UseIsVerticallyClampedResult<TElement extends HTMLElement> {
4
+ /** Ref attached to the clamped element whose overflow is measured. */
5
+ ref: RefObject<TElement | null>;
6
+ /** Whether the element, or one of its direct children, is taller inside than its visible box. */
7
+ isClamped: boolean;
8
+ }
9
+ /**
10
+ * Tracks whether a `line-clamp-*` (or any `overflow: hidden`) element hides
11
+ * part of its content, so a caller can reveal the rest — e.g. in a tooltip —
12
+ * only when something is actually cut off. Re-measures on every resize of the
13
+ * element and whenever `content` changes.
14
+ */
15
+ export declare const useIsVerticallyClamped: <TElement extends HTMLElement>(content: unknown) => UseIsVerticallyClampedResult<TElement>;
16
+ //# sourceMappingURL=useIsVerticallyClamped.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsVerticallyClamped.d.ts","sourceRoot":"","sources":["../../src/hooks/useIsVerticallyClamped.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,gDAAgD;AAChD,MAAM,WAAW,4BAA4B,CAAC,QAAQ,SAAS,WAAW;IACxE,sEAAsE;IACtE,GAAG,EAAE,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAChC,iGAAiG;IACjG,SAAS,EAAE,OAAO,CAAC;CACpB;AAKD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,SAAS,WAAW,EACjE,SAAS,OAAO,KACf,4BAA4B,CAAC,QAAQ,CAiCvC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { useCallback as e, useLayoutEffect as t, useRef as n, useState as r } from "react";
2
+ //#region src/hooks/useIsVerticallyClamped.ts
3
+ var i = 1, a = (e) => e.scrollHeight - e.clientHeight > i, o = (i) => {
4
+ let o = n(null), [s, c] = r(!1), l = e(() => {
5
+ let e = o.current;
6
+ e && c(a(e) || Array.from(e.children).some(a));
7
+ }, []);
8
+ return t(() => {
9
+ l();
10
+ let e = o.current;
11
+ if (!e || typeof ResizeObserver > "u") return;
12
+ let t = new ResizeObserver(l);
13
+ return t.observe(e), () => t.disconnect();
14
+ }, [l, i]), {
15
+ ref: o,
16
+ isClamped: s
17
+ };
18
+ };
19
+ //#endregion
20
+ export { o as useIsVerticallyClamped };
@@ -32,7 +32,7 @@ export interface TextRefinementResult {
32
32
  canRefine: boolean;
33
33
  /** Whether an original baseline can be restored. */
34
34
  canUndo: boolean;
35
- /** Refines the latest committed value; duplicate activation is ignored. */
35
+ /** Refines the latest committed value, or the Undo baseline when one exists; duplicate activation is ignored. */
36
36
  refine: () => Promise<void>;
37
37
  /** Restores the baseline from before the first successful refinement. */
38
38
  undo: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useTextRefinement.d.ts","sourceRoot":"","sources":["../../src/hooks/useTextRefinement.ts"],"names":[],"mappings":"AAEA,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,6CAA6C;AAC7C,oBAAY,mBAAmB;IAC7B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,SAAS,cAAc;CACxB;AAED,qEAAqE;AACrE,MAAM,WAAW,wBAAwB;IACvC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,mEAAmE;IACnE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,gDAAgD;AAChD,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,KAAK,EAAE,mBAAmB,CAAC;IAC3B,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,yEAAyE;IACzE,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,GAC5B,SAAS,wBAAwB,KAChC,oBA+IF,CAAC"}
1
+ {"version":3,"file":"useTextRefinement.d.ts","sourceRoot":"","sources":["../../src/hooks/useTextRefinement.ts"],"names":[],"mappings":"AAEA,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,6CAA6C;AAC7C,oBAAY,mBAAmB;IAC7B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,SAAS,cAAc;CACxB;AAED,qEAAqE;AACrE,MAAM,WAAW,wBAAwB;IACvC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,mEAAmE;IACnE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,gDAAgD;AAChD,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,KAAK,EAAE,mBAAmB,CAAC;IAC3B,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,iHAAiH;IACjH,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,yEAAyE;IACzE,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,GAC5B,SAAS,wBAAwB,KAChC,oBAiJF,CAAC"}
@@ -29,11 +29,11 @@ var i = /* @__PURE__ */ function(e) {
29
29
  if (!u.current || !e.onRefine || e.disabled || !e.value.trim() || t.controller || t.expected !== void 0) return;
30
30
  let n = new AbortController();
31
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;
32
+ let r = ++t.generation, i = e.value, a = t.baseline ?? i, s = () => u.current && r === t.generation && !n.signal.aborted && l.current.value === i;
33
33
  o("pending");
34
34
  try {
35
- let r = await e.onRefine(i, n.signal);
36
- if (!a()) return;
35
+ let r = await e.onRefine(a, n.signal);
36
+ if (!s()) return;
37
37
  if (typeof r != "string" || !r.trim()) throw Error("Empty refinement");
38
38
  if (r === i) {
39
39
  o("unchanged");
@@ -41,7 +41,7 @@ var i = /* @__PURE__ */ function(e) {
41
41
  }
42
42
  t.baseline ??= i, t.expected = r, c(!0), o("success"), l.current.onChange(r);
43
43
  } catch (e) {
44
- if (!a()) return;
44
+ if (!s()) return;
45
45
  typeof e == "object" && e && "name" in e && e.name === "AbortError" ? o("idle") : o("error");
46
46
  } finally {
47
47
  r === t.generation && (t.controller = void 0);
@@ -10,11 +10,7 @@ var i = (i) => {
10
10
  return window.addEventListener("beforeunload", e), () => window.removeEventListener("beforeunload", e);
11
11
  }, [i]), {
12
12
  guard: e((e) => {
13
- if (!i) {
14
- e();
15
- return;
16
- }
17
- s.current = e, o(!0);
13
+ i ? (s.current = e, o(!0)) : e();
18
14
  }, [i]),
19
15
  isConfirmOpen: a,
20
16
  confirm: e(() => {
@@ -0,0 +1,12 @@
1
+ /** Options of {@link useUnsavedChangesLeaveConfirmation}. */
2
+ export interface UnsavedChangesLeaveConfirmationOptions {
3
+ /** Whether a transition is currently held by the host's blocker. */
4
+ isBlocked: boolean;
5
+ /** Lets the held transition continue; runs on Discard changes. */
6
+ onDiscard: () => void;
7
+ /** Drops the held transition; runs on Keep editing or any dismissal. */
8
+ onKeep: () => void;
9
+ }
10
+ /** Opens the `UnsavedChangesProvider` dialog while a transition is blocked, and closes it unanswered once the transition is gone or the caller unmounts. */
11
+ export declare const useUnsavedChangesLeaveConfirmation: ({ isBlocked, onDiscard, onKeep, }: UnsavedChangesLeaveConfirmationOptions) => void;
12
+ //# sourceMappingURL=useUnsavedChangesLeaveConfirmation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUnsavedChangesLeaveConfirmation.d.ts","sourceRoot":"","sources":["../../src/hooks/useUnsavedChangesLeaveConfirmation.ts"],"names":[],"mappings":"AAGA,6DAA6D;AAC7D,MAAM,WAAW,sCAAsC;IACrD,oEAAoE;IACpE,SAAS,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,wEAAwE;IACxE,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,4JAA4J;AAC5J,eAAO,MAAM,kCAAkC,GAAI,mCAIhD,sCAAsC,KAAG,IAyB3C,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { useUnsavedChangesInternal as e } from "../components/UnsavedChangesProvider/unsaved-changes-context.js";
2
+ import { useEffect as t, useLayoutEffect as n, useRef as r } from "react";
3
+ //#region src/hooks/useUnsavedChangesLeaveConfirmation.ts
4
+ var i = ({ isBlocked: i, onDiscard: a, onKeep: o }) => {
5
+ let { open: s } = e(), c = r({
6
+ onDiscard: a,
7
+ onKeep: o
8
+ });
9
+ n(() => {
10
+ c.current = {
11
+ onDiscard: a,
12
+ onKeep: o
13
+ };
14
+ }, [a, o]), t(() => {
15
+ if (i) return s({
16
+ onDiscard: () => c.current.onDiscard(),
17
+ onKeep: () => c.current.onKeep()
18
+ });
19
+ }, [i, s]);
20
+ };
21
+ //#endregion
22
+ export { i as useUnsavedChangesLeaveConfirmation };
@@ -0,0 +1,24 @@
1
+ /** Options of {@link useUnsavedChangesLeaveGuard}. */
2
+ export interface UnsavedChangesLeaveGuardOptions {
3
+ /** Whether the form currently holds edits that leaving would discard. */
4
+ isDirty: boolean;
5
+ }
6
+ /** Result of {@link useUnsavedChangesLeaveGuard}. */
7
+ export interface UnsavedChangesLeaveGuardResult {
8
+ /**
9
+ * Returns whether a transition must be blocked: `isLeaving` (the host's own
10
+ * "this transition leaves the form" decision) while the form is dirty,
11
+ * unless `allowNextNavigation` armed a bypass, which this call consumes.
12
+ * Stable across renders and reads the latest `isDirty`.
13
+ */
14
+ shouldBlockLeave: (isLeaving: boolean) => boolean;
15
+ /**
16
+ * Lets exactly one following transition through unblocked. Call it right
17
+ * before the form's own post-save exit, while `isDirty` may still be `true`
18
+ * because the clean state has not re-rendered yet.
19
+ */
20
+ allowNextNavigation: () => void;
21
+ }
22
+ /** Registers the form's dirty state with `UnsavedChangesProvider`, warns before the page unloads while dirty, and returns a router-agnostic block predicate with a one-shot bypass. */
23
+ export declare const useUnsavedChangesLeaveGuard: ({ isDirty, }: UnsavedChangesLeaveGuardOptions) => UnsavedChangesLeaveGuardResult;
24
+ //# sourceMappingURL=useUnsavedChangesLeaveGuard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUnsavedChangesLeaveGuard.d.ts","sourceRoot":"","sources":["../../src/hooks/useUnsavedChangesLeaveGuard.ts"],"names":[],"mappings":"AAGA,sDAAsD;AACtD,MAAM,WAAW,+BAA+B;IAC9C,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qDAAqD;AACrD,MAAM,WAAW,8BAA8B;IAC7C;;;;;OAKG;IACH,gBAAgB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC;IAClD;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,uLAAuL;AACvL,eAAO,MAAM,2BAA2B,GAAI,cAEzC,+BAA+B,KAAG,8BAuCpC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { useUnsavedChangesInternal as e } from "../components/UnsavedChangesProvider/unsaved-changes-context.js";
2
+ import { useCallback as t, useEffect as n, useLayoutEffect as r, useRef as i } from "react";
3
+ //#region src/hooks/useUnsavedChangesLeaveGuard.ts
4
+ var a = ({ isDirty: a }) => {
5
+ let { register: o, unloadAllowedRef: s } = e(), c = i(a), l = i(!1);
6
+ r(() => {
7
+ c.current = a;
8
+ }, [a]), n(() => o(a), [o, a]);
9
+ let u = t((e) => l.current ? (l.current = !1, !1) : c.current && e, []);
10
+ return n(() => {
11
+ if (!a) return;
12
+ let e = (e) => {
13
+ s.current || e.preventDefault();
14
+ };
15
+ return window.addEventListener("beforeunload", e), () => window.removeEventListener("beforeunload", e);
16
+ }, [a, s]), {
17
+ shouldBlockLeave: u,
18
+ allowNextNavigation: t(() => {
19
+ l.current = !0;
20
+ }, [])
21
+ };
22
+ };
23
+ //#endregion
24
+ export { a as useUnsavedChangesLeaveGuard };
package/index.css CHANGED
@@ -1,3 +1,3 @@
1
- ._message_1iqfi_1{color:var(--cfm-message-text,var(--text-primary,#161b2d))}._consequences_1iqfi_5{color:var(--cfm-consequence-text,var(--text-secondary,#57647a))}._footer_1iqfi_9{border-block-start:1px solid var(--cfm-footer-border,var(--stroke-tertiary,#e0e6f0))}._info_pkxew_1{--rs-bg:var(--bg-info,#e1eaf9)}._danger_pkxew_5{--rs-bg:var(--bg-control-error-alpha-active,#f7646433);--rs-border:var(--stroke-error-alpha,#ae2f2f73)}._agentIconBadge_1ger8_1{background:var(--di-icon-bg,var(--bg-layer-sunken,#eef1f7))}._title_11w3i_1{color:var(--ih-title-color,var(--text-primary,#161b2d))}._count_11w3i_5{color:var(--ih-count-color,var(--text-secondary,#57647a))}._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}._typeLabel_17nhs_1{color:var(--cir-type-label-text,var(--text-secondary,#57647a))}._names_g31v4_1{color:var(--cfm-message-text,var(--text-primary,#161b2d))}._more_g31v4_5{color:var(--cfm-consequence-text,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_1ql91_1{0%{background-position:200%}to{background-position:-200%}}._thinking_1ql91_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_1ql91_1}._h6_1ql91_18{color:var(--cm-h6-text,var(--text-secondary,#57647a))}._codeInline_1ql91_22{background:var(--cm-code-inline-bg,var(--bg-layer-raised,#fcfcfc));color:var(--cm-code-inline-text,var(--text-primary,#161b2d))}._secondaryBorder_1ql91_27{border-color:var(--cm-markdown-border,var(--stroke-secondary,#d1dbea))}._blockquote_1ql91_31{border-color:var(--cm-blockquote-border,var(--stroke-primary,#57647a));color:var(--cm-blockquote-text,var(--text-secondary,#57647a))}._link_1ql91_36{color:var(--cm-link-text,var(--text-accent,#1d4ed8))}._link_1ql91_36:focus-visible{outline-color:var(--cm-link-focus,var(--stroke-focus,#161b2d))}._scrollContainer_n2oom_1{scrollbar-width:thin;scrollbar-color:var(--cm-math-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_n2oom_1::-webkit-scrollbar{height:4px}._scrollContainer_n2oom_1::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_n2oom_1::-webkit-scrollbar-thumb{background-color:var(--cm-math-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._scrollContainer_n2oom_1:focus-visible{outline:1px solid var(--cm-math-focus,var(--stroke-focus,#161b2d));outline-offset:2px}._mathContent_n2oom_24{width:max-content;min-width:100%;display:block}._tableContainer_1qw2e_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_1qw2e_6{background:var(--cm-code-block-bg,var(--bg-layer-base,#f5f7fa))}._copiedIcon_1qw2e_10{color:var(--cm-code-block-copied,var(--text-success,#007274))}._scrollContainer_1qw2e_14{scrollbar-width:thin;scrollbar-color:var(--cm-table-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_1qw2e_14::-webkit-scrollbar{width:4px;height:4px}._scrollContainer_1qw2e_14::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_1qw2e_14::-webkit-scrollbar-thumb{background-color:var(--cm-table-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._tableHeaderCell_1qw2e_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_1qw2e_37 td{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc))}._rowDivider_1qw2e_41{border-block-end:.5px solid var(--cm-table-row-divider,var(--stroke-tertiary,#e0e6f0))}tbody ._row_1qw2e_41:hover td{background:var(--cm-table-row-hover-bg,var(--bg-control-accent-alpha-hover,#2764d924))}._tableScrollFadeEnd_1qw2e_51{-webkit-mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-black,#161b2d)) calc(100% - 1rem), transparent 100%)}[dir=rtl] ._tableScrollFadeEnd_1qw2e_51{-webkit-mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-black,#161b2d)) calc(100% - 1rem), transparent 100%)}._tableScrollFadeStart_1qw2e_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%);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_1qw2e_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%);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_1qw2e_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%);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))}
1
+ ._text_89yo1_1{color:var(--olm-text,var(--text-secondary,#57647a))}._surface_t5bi8_1{background:var(--dfms-surface,var(--bg-layer-base,#f5f7fa))}._tree_t5bi8_5{border-color:var(--dfms-tree-border,var(--stroke-tertiary,#e0e6f0));background:var(--dfms-tree-bg,var(--bg-layer-raised,#fcfcfc));box-shadow:4px 0 8px 0 var(--dfms-tree-shadow,#2764d91a);clip-path:inset(0 -12px 0 0)}[dir=rtl] ._tree_t5bi8_5{box-shadow:-4px 0 8px 0 var(--dfms-tree-shadow,#2764d91a);clip-path:inset(0 0 0 -12px)}._overlay_t5bi8_20{background:var(--dfms-overlay-backdrop,var(--bg-backdrop,#161b2d4d))}._popup_1d7g5_2{box-shadow:0 8px 32px 0 var(--fmam-shadow,#00000029);background:var(--fmam-bg,var(--bg-layer-raised,#fcfcfc))!important}._title_1d7g5_8{color:var(--fmam-title,var(--text-primary,#161b2d))}._agentIconBadge_147d2_1{background:var(--di-icon-bg,var(--bg-entity-icon,var(--bg-layer-sunken,#eef1f7)))}._label_1qwvo_1{color:var(--pes-label-color,var(--text-primary,#161b2d))}._description_1qwvo_5{color:var(--pes-description-color,var(--text-secondary,#57647a))}._icon_18yqy_1{color:var(--nva-icon,var(--text-accent,#1d4ed8))}._title_11w3i_1{color:var(--ih-title-color,var(--text-primary,#161b2d))}._count_11w3i_5{color:var(--ih-count-color,var(--text-secondary,#57647a))}._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}._info_pkxew_1{--rs-bg:var(--bg-info,#e1eaf9)}._danger_pkxew_5{--rs-bg:var(--bg-control-error-alpha-active,#f7646433);--rs-border:var(--stroke-error-alpha,#ae2f2f73)}._typeLabel_17nhs_1{color:var(--cir-type-label-text,var(--text-secondary,#57647a))}._message_1iqfi_1{color:var(--cfm-message-text,var(--text-primary,#161b2d))}._consequences_1iqfi_5{color:var(--cfm-consequence-text,var(--text-secondary,#57647a))}._footer_1iqfi_9{border-block-start:1px solid var(--cfm-footer-border,var(--stroke-tertiary,#e0e6f0))}._names_g31v4_1{color:var(--cfm-message-text,var(--text-primary,#161b2d))}._more_g31v4_5{color:var(--cfm-consequence-text,var(--text-secondary,#57647a))}._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)))}._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}._tableContainer_82t2b_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_82t2b_6{background:var(--cm-code-block-bg,var(--bg-layer-base,#f5f7fa))}._actions_82t2b_10{border-color:var(--cm-table-actions-border,var(--stroke-tertiary,#e0e6f0));background:var(--cm-table-actions-bg,var(--bg-layer-raised,#fcfcfc))}._copiedIcon_82t2b_15{color:var(--cm-code-block-copied,var(--text-success,#007274))}._scrollContainer_82t2b_19{scrollbar-width:thin;scrollbar-color:var(--cm-table-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_82t2b_19::-webkit-scrollbar{width:4px;height:4px}._scrollContainer_82t2b_19::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_82t2b_19::-webkit-scrollbar-thumb{background-color:var(--cm-table-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._tableHeaderCell_82t2b_35{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_82t2b_42 td{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc))}._rowDivider_82t2b_46{border-block-end:.5px solid var(--cm-table-row-divider,var(--stroke-tertiary,#e0e6f0))}tbody ._row_82t2b_46:hover td{background:var(--cm-table-row-hover-bg,var(--bg-control-accent-alpha-hover,#2764d924))}._tableScrollFadeEnd_82t2b_56{-webkit-mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-black,#161b2d)) calc(100% - 1rem), transparent 100%)}[dir=rtl] ._tableScrollFadeEnd_82t2b_56{-webkit-mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-black,#161b2d)) calc(100% - 1rem), transparent 100%)}._tableScrollFadeStart_82t2b_64{-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_82t2b_64{-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_82t2b_72{-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%)}@keyframes _cm-shimmer_1ql91_1{0%{background-position:200%}to{background-position:-200%}}._thinking_1ql91_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_1ql91_1}._h6_1ql91_18{color:var(--cm-h6-text,var(--text-secondary,#57647a))}._codeInline_1ql91_22{background:var(--cm-code-inline-bg,var(--bg-layer-raised,#fcfcfc));color:var(--cm-code-inline-text,var(--text-primary,#161b2d))}._secondaryBorder_1ql91_27{border-color:var(--cm-markdown-border,var(--stroke-secondary,#d1dbea))}._blockquote_1ql91_31{border-color:var(--cm-blockquote-border,var(--stroke-primary,#57647a));color:var(--cm-blockquote-text,var(--text-secondary,#57647a))}._link_1ql91_36{color:var(--cm-link-text,var(--text-accent,#1d4ed8))}._link_1ql91_36:focus-visible{outline-color:var(--cm-link-focus,var(--stroke-focus,#161b2d))}._scrollContainer_n2oom_1{scrollbar-width:thin;scrollbar-color:var(--cm-math-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_n2oom_1::-webkit-scrollbar{height:4px}._scrollContainer_n2oom_1::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_n2oom_1::-webkit-scrollbar-thumb{background-color:var(--cm-math-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._scrollContainer_n2oom_1:focus-visible{outline:1px solid var(--cm-math-focus,var(--stroke-focus,#161b2d));outline-offset:2px}._mathContent_n2oom_24{width:max-content;min-width:100%;display:block}
2
2
  /*$vite$:1*//*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
3
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.end-0{inset-inline-end:0}.end-2{inset-inline-end:.5rem}.end-4{inset-inline-end:1rem}.top-0{top:0}.top-2{top:.5rem}.top-\[-6px\]{top:-6px}.bottom-4{bottom:1rem}.z-10{z-index:10}.z-\[2\]{z-index:2}.z-\[52\]{z-index:52}.z-\[70\]{z-index:70}.mx-0\.5{margin-inline:.125rem}.my-4{margin-block:1rem}.my-5{margin-block:1.25rem}.ms-auto{margin-inline-start:auto}.me-1\.5{margin-inline-end:.375rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-full{width:100%;height:100%}.\!h-\[min\(900px\,100dvh\)\]{height:min(900px,100dvh)!important}.\!h-fit{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-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[344px\]{max-height:344px}.min-h-0{min-height:0}.min-h-10{min-height:2.5rem}.\!w-\[400px\]{width:400px!important}.w-\[360px\]{width:360px}.w-full{width:100%}.w-max{width:max-content}.\!max-w-\[1600px\]{max-width:1600px!important}.max-w-96{max-width:24rem}.max-w-\[30\%\]{max-width:30%}.max-w-\[45\%\]{max-width:45%}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-full{min-width:100%}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.resize{resize:both}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.25rem * var(--tw-space-y-reverse));margin-block-end:calc(.25rem * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:.75rem}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[overflow\:clip\]{overflow:clip}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-hidden{overflow-y:hidden}.rounded{border-radius:4px}.rounded-\[14px\]{border-radius:14px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-s-2{border-inline-start-style:var(--tw-border-style);border-inline-start-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-tertiary{border-color:var(--stroke-tertiary,#e0e6f0)}.\!bg-layer-base{background-color:var(--bg-layer-base,#f5f7fa)!important}.bg-backdrop{background-color:var(--bg-backdrop,#161b2d4d)}.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)}.object-contain{object-fit:contain}.p-0{padding:0}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-inline:0}.px-1{padding-inline:.25rem}.px-1\.5{padding-inline:.375rem}.px-2{padding-inline:.5rem}.px-3{padding-inline:.75rem}.px-4{padding-inline:1rem}.px-6{padding-inline:1.5rem}.py-0{padding-block:0}.py-0\.5{padding-block:.125rem}.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-2\.5{padding-block:.625rem}.py-4{padding-block:1rem}.py-\[7px\]{padding-block:7px}.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}.pb-0{padding-bottom:0}.text-center{text-align:center}.text-end{text-align:end}.text-start{text-align:start}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.\[text-wrap\:balance\]{text-wrap:balance}.\[text-wrap\:pretty\]{text-wrap:pretty}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-primary{color:var(--text-primary,#161b2d)}.text-secondary{color:var(--text-secondary,#57647a)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.decoration-current\/60{text-decoration-color:currentColor}@supports (color:color-mix(in lab, red, red)){.decoration-current\/60{-webkit-text-decoration-color:color-mix(in oklab, currentcolor 60%, transparent);-webkit-text-decoration-color:color-mix(in oklab, currentcolor 60%, transparent);text-decoration-color:color-mix(in oklab, currentcolor 60%, transparent)}}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-chat-button{--tw-shadow:0 2px 12px 0 var(--tw-shadow-color,var(--shadow-xs-1,#2764d933)), 0 2px 6px 0 var(--tw-shadow-color,var(--shadow-xs-2,#161b2d08));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 8px 10px 0 var(--tw-shadow-color,var(--shadow-sm,#2764d914));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 4px 0 var(--tw-shadow-color,var(--shadow-xs-1,#2764d933)), 0 1px 2px 0 var(--tw-shadow-color,var(--shadow-xs-2,#161b2d08));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,cubic-bezier(.4, 0, .2, 1));transition-duration:var(--tw-duration,.15s)}@media (hover:hover){.group-hover\/table\:opacity-100:is(:where(.group\/table):hover *){opacity:1}}.first\:mt-0:first-child{margin-top:0}.last\:mb-0:last-child{margin-bottom:0}.focus-within\:opacity-100:focus-within{opacity:1}@media (hover:hover){.hover\:decoration-current:hover{text-decoration-color:currentColor}}.focus-visible\:outline:focus-visible,.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.rtl\:flex-row-reverse:where(:dir(rtl),[dir=rtl],[dir=rtl] *){flex-direction:row-reverse}.rtl\:justify-start:where(:dir(rtl),[dir=rtl],[dir=rtl] *){justify-content:flex-start}@media (max-width:1279px){.mobile\:\!h-full{height:100%!important}.mobile\:\!max-w-full{max-width:100%!important}.mobile\:flex-1{flex:1}.mobile\:rounded-none{border-radius:0}.mobile\:p-0{padding:0}}@media (min-width:1280px){.desktop\:p-4{padding:1rem}.desktop\:px-6{padding-inline:1.5rem}}.\[\&_\.w-md-editor\:not\(\.w-md-editor-fullscreen\)\]\:\!h-\[var\(--resizable-field-max-height\,70vh\)\] .w-md-editor:not(.w-md-editor-fullscreen){height:var(--resizable-field-max-height,70vh)!important}.\[\&_\.w-md-editor\:not\(\.w-md-editor-fullscreen\)\]\:max-h-\[var\(--resizable-field-max-height\,70vh\)\] .w-md-editor:not(.w-md-editor-fullscreen){max-height:var(--resizable-field-max-height,70vh)}.\[\&_\.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}.\[\&_\.wmde-markdown\>ol\]\:list-decimal .wmde-markdown>ol{list-style-type:decimal}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
3
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-e-0{inset-inline-end:0}.inset-e-2{inset-inline-end:.5rem}.inset-e-4{inset-inline-end:1rem}.top-0{top:0}.top-2{top:.5rem}.top-\[-6px\]{top:-6px}.bottom-4{bottom:1rem}.bottom-\[calc\(1\.5rem\+env\(safe-area-inset-bottom\)\)\]{bottom:calc(1.5rem + env(safe-area-inset-bottom))}.z-1{z-index:1}.z-2{z-index:2}.z-10{z-index:10}.z-51{z-index:51}.z-52{z-index:52}.z-70{z-index:70}.mx-0\.5{margin-inline:.125rem}.my-4{margin-block:1rem}.my-5{margin-block:1.25rem}.ms-auto{margin-inline-start:auto}.me-1\.5{margin-inline-end:.375rem}.mt-1{margin-top:.25rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-full{width:100%;height:100%}.h-0{height:0}.h-\[24px\]{height:24px}.h-\[min\(900px\,100dvh\)\]\!{height:min(900px,100dvh)!important}.h-fit\!{height:fit-content!important}.h-full{height:100%}.max-h-\[30vh\]{max-height:30vh}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[344px\]{max-height:344px}.max-h-\[calc\(100dvh-3rem\)\]{max-height:calc(100dvh - 3rem)}.max-h-full\!{max-height:100%!important}.min-h-0{min-height:0}.min-h-10{min-height:2.5rem}.w-\[360px\]{width:360px}.w-\[400px\]\!{width:400px!important}.w-full{width:100%}.w-max{width:max-content}.max-w-96{max-width:24rem}.max-w-\[30\%\]{max-width:30%}.max-w-\[45\%\]{max-width:45%}.max-w-\[1600px\]\!{max-width:1600px!important}.max-w-\[min\(600px\,100\%\)\]{max-width:min(600px,100%)}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-full{min-width:100%}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.resize{resize:both}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.25rem * var(--tw-space-y-reverse));margin-block-end:calc(.25rem * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:.75rem}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.rounded{border-radius:4px}.rounded-\[14px\]{border-radius:14px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-xl{border-radius:.75rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-s-2{border-inline-start-style:var(--tw-border-style);border-inline-start-width:2px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.bg-layer-raised{background-color:var(--bg-layer-raised,#fcfcfc)}.bg-layer-sunken{background-color:var(--bg-layer-sunken,#eef1f7)}.object-contain{object-fit:contain}.p-0{padding:0}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-inline:0}.px-1{padding-inline:.25rem}.px-1\.5{padding-inline:.375rem}.px-2{padding-inline:.5rem}.px-3{padding-inline:.75rem}.px-4{padding-inline:1rem}.px-6{padding-inline:1.5rem}.py-0{padding-block:0}.py-0\.5{padding-block:.125rem}.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-2\.5{padding-block:.625rem}.py-4{padding-block:1rem}.py-\[7px\]{padding-block:7px}.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}.pb-0{padding-bottom:0}.pb-4{padding-bottom:1rem}.text-center{text-align:center}.text-end{text-align:end}.text-start{text-align:start}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.\[text-wrap\:balance\]{text-wrap:balance}.\[text-wrap\:pretty\]{text-wrap:pretty}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.wrap-anywhere{overflow-wrap:anywhere}.wrap-break-word{overflow-wrap:break-word}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.decoration-current\/60{text-decoration-color:currentColor}@supports (color:color-mix(in lab, red, red)){.decoration-current\/60{-webkit-text-decoration-color:color-mix(in oklab, currentcolor 60%, transparent);-webkit-text-decoration-color:color-mix(in oklab, currentcolor 60%, transparent);text-decoration-color:color-mix(in oklab, currentcolor 60%, transparent)}}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-chat-button{--tw-shadow:0 2px 12px 0 var(--tw-shadow-color,var(--shadow-xs-1,#2764d933)), 0 2px 6px 0 var(--tw-shadow-color,var(--shadow-xs-2,#161b2d08));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 0 8px 1px var(--tw-shadow-color,var(--shadow-xs-1,#2764d933));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,cubic-bezier(.4, 0, .2, 1));transition-duration:var(--tw-duration,.15s)}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,cubic-bezier(.4, 0, .2, 1));transition-duration:var(--tw-duration,.15s)}@media (hover:hover){.group-hover\/table\:opacity-100:is(:where(.group\/table):hover *){opacity:1}}.first\:mt-0:first-child{margin-top:0}.last\:mb-0:last-child{margin-bottom:0}.focus-within\:opacity-100:focus-within{opacity:1}@media (hover:hover){.hover\:decoration-current:hover{text-decoration-color:currentColor}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.rtl\:flex-row-reverse:where(:dir(rtl),[dir=rtl],[dir=rtl] *){flex-direction:row-reverse}.rtl\:justify-start:where(:dir(rtl),[dir=rtl],[dir=rtl] *){justify-content:flex-start}@media (max-width:1279px){.mobile\:h-full\!{height:100%!important}.mobile\:max-w-full\!{max-width:100%!important}.mobile\:flex-1{flex:1}.mobile\:rounded-none{border-radius:0}.mobile\:p-0{padding:0}}@media (min-width:1280px){.desktop\:inset-s-auto{inset-inline-start:auto}.desktop\:me-6{margin-inline-end:1.5rem}.desktop\:w-\[min\(600px\,calc\(100vw-3rem\)\)\]{width:min(600px,100vw - 3rem)}.desktop\:w-auto{width:auto}.desktop\:items-end{align-items:flex-end}.desktop\:p-4{padding:1rem}.desktop\:px-0{padding-inline:0}.desktop\:px-6{padding-inline:1.5rem}}.\[\&_\.w-md-editor\:not\(\.w-md-editor-fullscreen\)\]\:\!h-\[var\(--resizable-field-max-height\,70vh\)\] .w-md-editor:not(.w-md-editor-fullscreen){height:var(--resizable-field-max-height,70vh)!important}.\[\&_\.w-md-editor\:not\(\.w-md-editor-fullscreen\)\]\:max-h-\[var\(--resizable-field-max-height\,70vh\)\] .w-md-editor:not(.w-md-editor-fullscreen){max-height:var(--resizable-field-max-height,70vh)}.\[\&_\.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}.\[\&_\.wmde-markdown\>ol\]\:list-decimal .wmde-markdown>ol{list-style-type:decimal}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}