@jc-times/business-ui 0.2.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +6 -0
- package/CHANGELOG.md +267 -0
- package/README.md +55 -0
- package/THIRD_PARTY_NOTICES.md +29 -0
- package/bin/business-ui-gate.mjs +171 -0
- package/dist/Alert.js +47 -0
- package/dist/AsyncDirectoryPicker.js +134 -0
- package/dist/AsyncSearchPicker.js +155 -0
- package/dist/AutoComplete.js +34 -0
- package/dist/Badge.js +14 -0
- package/dist/Button.js +54 -0
- package/dist/Cascader.js +141 -0
- package/dist/Combobox.js +106 -0
- package/dist/ConfirmDialog.js +48 -0
- package/dist/DataTableHorizontalScrollbar.js +38 -0
- package/dist/DataTableIcons.js +37 -0
- package/dist/DataTableMergedRows.js +45 -0
- package/dist/DataTableTheme.js +135 -0
- package/dist/DateInput.js +223 -0
- package/dist/DropdownMenu.js +130 -0
- package/dist/EmptyState.js +27 -0
- package/dist/ExplainableButton.js +68 -0
- package/dist/FileDropzone.js +70 -0
- package/dist/FilePreparationDialog.js +33 -0
- package/dist/FloatingControls.js +120 -0
- package/dist/FormField.js +143 -0
- package/dist/MetricCard.js +38 -0
- package/dist/ModalShell.js +139 -0
- package/dist/MultiSelect.js +137 -0
- package/dist/NumericInput.js +97 -0
- package/dist/OverlayContainer.js +9 -0
- package/dist/PageHeader.js +36 -0
- package/dist/Pagination.js +115 -0
- package/dist/PreparedFileDropzone.js +30 -0
- package/dist/RecoverableAsyncState.js +35 -0
- package/dist/RovingTabs.js +54 -0
- package/dist/SectionCard.js +35 -0
- package/dist/SegmentedControl.js +46 -0
- package/dist/Select.js +73 -0
- package/dist/Skeleton.js +25 -0
- package/dist/SortableList.js +55 -0
- package/dist/StructuredAddressInput.js +157 -0
- package/dist/Toast.js +100 -0
- package/dist/ToggleSwitch.js +34 -0
- package/dist/TreeSelect.js +444 -0
- package/dist/amount-format.js +20 -0
- package/dist/business-ui.js +44 -0
- package/dist/chinese-address-regions.js +15 -0
- package/dist/classNames.js +6 -0
- package/dist/data-table.js +257 -0
- package/dist/document-render-budget.js +22 -0
- package/dist/document-viewer/ContinuousPdfViewer.js +145 -0
- package/dist/document-viewer/DocumentViewer.js +123 -0
- package/dist/document-viewer/DocumentViewerViewport.js +36 -0
- package/dist/document-viewer/ImagePage.js +39 -0
- package/dist/document-viewer/PdfCanvasPage.js +26 -0
- package/dist/document-viewer/PdfThumbnailRail.js +116 -0
- package/dist/document-viewer/PdfToolbar.js +61 -0
- package/dist/document-viewer/PdfWorkspace.js +42 -0
- package/dist/document-viewer/pdf-render-budget.js +7 -0
- package/dist/document-viewer/usePdfCanvas.js +69 -0
- package/dist/document-viewer/usePdfViewport.js +48 -0
- package/dist/document-viewer-v2/DocumentViewerV2.js +171 -0
- package/dist/document-viewer-v2/HeadlessPdfViewer.js +420 -0
- package/dist/document-viewer-v2/HeadlessSearch.js +66 -0
- package/dist/document-viewer-v2.js +13 -0
- package/dist/document-viewer.js +12 -0
- package/dist/pdfium-viewer.js +18 -0
- package/dist/styles.css +2 -0
- package/dist/types/Alert.d.ts +11 -0
- package/dist/types/AmountFormat.d.ts +15 -0
- package/dist/types/AsyncDirectoryPicker.d.ts +32 -0
- package/dist/types/AsyncSearchPicker.d.ts +26 -0
- package/dist/types/AutoComplete.d.ts +9 -0
- package/dist/types/Badge.d.ts +13 -0
- package/dist/types/Button.d.ts +36 -0
- package/dist/types/Cascader.d.ts +57 -0
- package/dist/types/ChineseAddressRegions.d.ts +4 -0
- package/dist/types/Combobox.d.ts +37 -0
- package/dist/types/ConfirmDialog.d.ts +20 -0
- package/dist/types/DataTable.d.ts +68 -0
- package/dist/types/DataTableHorizontalScrollbar.d.ts +8 -0
- package/dist/types/DataTableIcons.d.ts +19 -0
- package/dist/types/DataTableMergedRows.d.ts +11 -0
- package/dist/types/DataTableTheme.d.ts +4 -0
- package/dist/types/DateInput.d.ts +25 -0
- package/dist/types/DocumentRenderBudget.d.ts +9 -0
- package/dist/types/DocumentViewer.d.ts +11 -0
- package/dist/types/DocumentViewerV2.d.ts +10 -0
- package/dist/types/DropdownMenu.d.ts +73 -0
- package/dist/types/EmptyState.d.ts +9 -0
- package/dist/types/ExplainableButton.d.ts +7 -0
- package/dist/types/FileDropzone.d.ts +20 -0
- package/dist/types/FilePreparationDialog.d.ts +12 -0
- package/dist/types/FloatingControls.d.ts +39 -0
- package/dist/types/FormField.d.ts +35 -0
- package/dist/types/MetricCard.d.ts +17 -0
- package/dist/types/ModalShell.d.ts +33 -0
- package/dist/types/MultiSelect.d.ts +12 -0
- package/dist/types/NumericInput.d.ts +54 -0
- package/dist/types/OverlayContainer.d.ts +2 -0
- package/dist/types/PageHeader.d.ts +23 -0
- package/dist/types/Pagination.d.ts +14 -0
- package/dist/types/PdfiumViewer.d.ts +5 -0
- package/dist/types/PreparedFileDropzone.d.ts +7 -0
- package/dist/types/RecoverableAsyncState.d.ts +11 -0
- package/dist/types/RovingTabs.d.ts +21 -0
- package/dist/types/SectionCard.d.ts +18 -0
- package/dist/types/SegmentedControl.d.ts +26 -0
- package/dist/types/Select.d.ts +31 -0
- package/dist/types/Skeleton.d.ts +11 -0
- package/dist/types/SortableList.d.ts +17 -0
- package/dist/types/StructuredAddressInput.d.ts +57 -0
- package/dist/types/Toast.d.ts +22 -0
- package/dist/types/ToggleSwitch.d.ts +15 -0
- package/dist/types/TreeSelect.d.ts +58 -0
- package/dist/types/classNames.d.ts +1 -0
- package/dist/types/document-viewer/ContinuousPdfViewer.d.ts +16 -0
- package/dist/types/document-viewer/DocumentViewer.d.ts +31 -0
- package/dist/types/document-viewer/DocumentViewerViewport.d.ts +23 -0
- package/dist/types/document-viewer/ImagePage.d.ts +9 -0
- package/dist/types/document-viewer/PdfCanvasPage.d.ts +7 -0
- package/dist/types/document-viewer/PdfThumbnailRail.d.ts +12 -0
- package/dist/types/document-viewer/PdfToolbar.d.ts +13 -0
- package/dist/types/document-viewer/PdfWorkspace.d.ts +5 -0
- package/dist/types/document-viewer/pdf-render-budget.d.ts +2 -0
- package/dist/types/document-viewer/usePdfCanvas.d.ts +22 -0
- package/dist/types/document-viewer/usePdfViewport.d.ts +14 -0
- package/dist/types/document-viewer-v2/DocumentViewerV2.d.ts +50 -0
- package/dist/types/document-viewer-v2/HeadlessPdfViewer.d.ts +39 -0
- package/dist/types/document-viewer-v2/HeadlessSearch.d.ts +9 -0
- package/dist/types/index.d.ts +41 -0
- package/dist/types/useDebouncedValue.d.ts +2 -0
- package/dist/types/useFilePreparation.d.ts +28 -0
- package/dist/types/useModalFocusTrap.d.ts +3 -0
- package/dist/useDebouncedValue.js +16 -0
- package/dist/useFilePreparation.js +51 -0
- package/dist/useModalFocusTrap.js +71 -0
- package/docs/agent-guide.md +145 -0
- package/docs/api.md +220 -0
- package/docs/cascader.md +56 -0
- package/docs/component-strategy.md +94 -0
- package/docs/data-table.md +123 -0
- package/docs/dependencies.md +57 -0
- package/docs/document-viewer-v2.md +259 -0
- package/docs/document-viewer.md +28 -0
- package/docs/file-preparation.md +11 -0
- package/docs/maturity-migration.md +62 -0
- package/docs/modal-shell-migration.md +43 -0
- package/docs/mrt-poc.md +205 -0
- package/docs/release.md +32 -0
- package/docs/viewport-qa.md +99 -0
- package/licenses/rc-cascader-MIT.txt +21 -0
- package/package.json +163 -0
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
import { Button as e } from "../Button.js";
|
|
2
|
+
import { PdfWorkspace as t } from "../document-viewer/PdfWorkspace.js";
|
|
3
|
+
import { PdfToolbar as n } from "../document-viewer/PdfToolbar.js";
|
|
4
|
+
import { usePdfViewport as r } from "../document-viewer/usePdfViewport.js";
|
|
5
|
+
import { HeadlessSearch as i } from "./HeadlessSearch.js";
|
|
6
|
+
import { useEffect as a, useMemo as o, useRef as s, useState as c } from "react";
|
|
7
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
8
|
+
import { createPluginRegistration as d } from "@embedpdf/core";
|
|
9
|
+
import { EmbedPDF as f, useDocumentState as p } from "@embedpdf/core/react";
|
|
10
|
+
import { usePdfiumEngine as m } from "@embedpdf/engines/react";
|
|
11
|
+
import { DocumentManagerPluginPackage as h } from "@embedpdf/plugin-document-manager/react";
|
|
12
|
+
import { Viewport as ee, ViewportPluginPackage as g, useViewportCapability as te } from "@embedpdf/plugin-viewport/react";
|
|
13
|
+
import { ScrollPluginPackage as _, Scroller as ne, useScrollCapability as re } from "@embedpdf/plugin-scroll/react";
|
|
14
|
+
import { RenderLayer as v, RenderPluginPackage as y } from "@embedpdf/plugin-render/react";
|
|
15
|
+
import { Rotate as ie, RotatePluginPackage as b, useRotate as x } from "@embedpdf/plugin-rotate/react";
|
|
16
|
+
import { ZoomGestureWrapper as S, ZoomMode as C, ZoomPluginPackage as w, useZoom as ae } from "@embedpdf/plugin-zoom/react";
|
|
17
|
+
import { ThumbImg as T, ThumbnailPluginPackage as E, ThumbnailsPane as oe } from "@embedpdf/plugin-thumbnail/react";
|
|
18
|
+
import { SearchLayer as se, SearchPluginPackage as D } from "@embedpdf/plugin-search/react";
|
|
19
|
+
import { SelectionLayer as O, SelectionPluginPackage as k, useSelectionCapability as ce } from "@embedpdf/plugin-selection/react";
|
|
20
|
+
import { InteractionManagerPluginPackage as A, PagePointerProvider as le } from "@embedpdf/plugin-interaction-manager/react";
|
|
21
|
+
//#region src/document-viewer-v2/HeadlessPdfViewer.tsx
|
|
22
|
+
function j(e) {
|
|
23
|
+
let { engine: t, isLoading: n, error: r } = m({
|
|
24
|
+
worker: !0,
|
|
25
|
+
fontFallback: null,
|
|
26
|
+
...e.engineOptions
|
|
27
|
+
}), [i] = c(() => {
|
|
28
|
+
let { id: t, kind: n, ...r } = e.source;
|
|
29
|
+
return [
|
|
30
|
+
d(h, { initialDocuments: [{
|
|
31
|
+
...r,
|
|
32
|
+
documentId: t,
|
|
33
|
+
autoActivate: !0
|
|
34
|
+
}] }),
|
|
35
|
+
d(g),
|
|
36
|
+
d(_, { defaultPageGap: 20 }),
|
|
37
|
+
d(y),
|
|
38
|
+
d(w, {
|
|
39
|
+
defaultZoomLevel: 1,
|
|
40
|
+
minZoom: e.initialZoom === "fit-width" ? .1 : .5,
|
|
41
|
+
maxZoom: 3
|
|
42
|
+
}),
|
|
43
|
+
d(b),
|
|
44
|
+
d(A, { exclusionRules: { dataAttributes: ["data-pdf-business-control"] } }),
|
|
45
|
+
d(D),
|
|
46
|
+
d(k, { marquee: { enabled: !1 } }),
|
|
47
|
+
d(E, { width: 100 })
|
|
48
|
+
];
|
|
49
|
+
});
|
|
50
|
+
return r ? /* @__PURE__ */ u("div", {
|
|
51
|
+
role: "alert",
|
|
52
|
+
children: ["PDF 引擎加载失败:", r.message]
|
|
53
|
+
}) : n || !t ? /* @__PURE__ */ l("div", {
|
|
54
|
+
role: "status",
|
|
55
|
+
children: "正在加载 PDF 引擎…"
|
|
56
|
+
}) : /* @__PURE__ */ l(f, {
|
|
57
|
+
engine: t,
|
|
58
|
+
plugins: i,
|
|
59
|
+
onInitialized: async (t) => {
|
|
60
|
+
e.onReady?.(t);
|
|
61
|
+
},
|
|
62
|
+
children: /* @__PURE__ */ l(M, { ...e })
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function M(d) {
|
|
66
|
+
let f = d.source.id, m = p(f), h = m?.document, { provides: g } = re(), _ = o(() => g?.forDocument(f), [g, f]), { provides: y, state: b } = ae(f), { provides: w } = te(), { provides: E } = ce(), { provides: D, rotation: k } = x(f), A = r(f), [j, M] = c(1), [N, P] = c(null), F = h?.pages.length ?? 0, I = Math.max(1, Math.min(F || 1, d.currentPage ?? j)), L = d.pageMode === "single", R = s(d);
|
|
67
|
+
R.current = d;
|
|
68
|
+
let z = m?.scale ?? 1, B = s(!1), V = s(d.currentPage ?? 1), H = s(!0), U = s(I), W = s(L), G = s(null);
|
|
69
|
+
(U.current !== I || W.current !== L) && ((W.current !== L || I !== G.current) && (V.current = I), W.current !== L && (H.current = !0), U.current = I, W.current = L, G.current = null);
|
|
70
|
+
let K = s(y);
|
|
71
|
+
K.current = y, a(() => {
|
|
72
|
+
if (!w || !F) return;
|
|
73
|
+
let e = () => {
|
|
74
|
+
let e = w.forDocument(f).getMetrics();
|
|
75
|
+
!B.current && e.clientWidth && e.clientHeight && K.current && (B.current = !0, K.current.requestZoom(R.current.zoom ?? (R.current.initialZoom === "fit-width" ? C.FitWidth : R.current.initialZoom ?? 1)));
|
|
76
|
+
}, t = w.onViewportResize((t) => {
|
|
77
|
+
t.documentId === f && e();
|
|
78
|
+
});
|
|
79
|
+
return e(), t;
|
|
80
|
+
}, [
|
|
81
|
+
w,
|
|
82
|
+
f,
|
|
83
|
+
F
|
|
84
|
+
]), a(() => {
|
|
85
|
+
if (_ && !L) return _.onPageChange((e) => {
|
|
86
|
+
B.current && !H.current && (G.current = e.pageNumber, M(e.pageNumber), e.pageNumber !== R.current.currentPage && R.current.onCurrentPageChange?.(e.pageNumber));
|
|
87
|
+
});
|
|
88
|
+
}, [_, L]), a(() => {
|
|
89
|
+
if (!_ || L || !F) return;
|
|
90
|
+
let e = () => {
|
|
91
|
+
V.current !== null && (H.current = !0, _.scrollToPage({
|
|
92
|
+
pageNumber: V.current,
|
|
93
|
+
behavior: "instant",
|
|
94
|
+
...N?.page === V.current ? {
|
|
95
|
+
pageCoordinates: N,
|
|
96
|
+
alignX: 50,
|
|
97
|
+
alignY: 40
|
|
98
|
+
} : {}
|
|
99
|
+
}));
|
|
100
|
+
}, t = g?.onLayoutReady((t) => {
|
|
101
|
+
t.documentId === f && e();
|
|
102
|
+
}), n = w?.onViewportResize((t) => {
|
|
103
|
+
t.documentId === f && e();
|
|
104
|
+
}), r = requestAnimationFrame(e);
|
|
105
|
+
return () => {
|
|
106
|
+
cancelAnimationFrame(r), t?.(), n?.();
|
|
107
|
+
};
|
|
108
|
+
}, [
|
|
109
|
+
_,
|
|
110
|
+
g,
|
|
111
|
+
w,
|
|
112
|
+
f,
|
|
113
|
+
L,
|
|
114
|
+
F,
|
|
115
|
+
I,
|
|
116
|
+
z,
|
|
117
|
+
k,
|
|
118
|
+
N
|
|
119
|
+
]), a(() => {
|
|
120
|
+
if (!L || !N || !w) return;
|
|
121
|
+
let e = () => ue(A.containerRef.current, N, w.forDocument(f)), t = w.onViewportResize((t) => {
|
|
122
|
+
t.documentId === f && e();
|
|
123
|
+
}), n = requestAnimationFrame(e);
|
|
124
|
+
return () => {
|
|
125
|
+
cancelAnimationFrame(n), t();
|
|
126
|
+
};
|
|
127
|
+
}, [
|
|
128
|
+
L,
|
|
129
|
+
N,
|
|
130
|
+
w,
|
|
131
|
+
f,
|
|
132
|
+
I,
|
|
133
|
+
z,
|
|
134
|
+
k
|
|
135
|
+
]);
|
|
136
|
+
let q = s(d.zoom ?? null), J = s(d.rotation ?? null), Y = s(z), X = s(k);
|
|
137
|
+
a(() => {
|
|
138
|
+
d.zoom !== void 0 && y && F && Math.abs(d.zoom - z) > .001 && (q.current = d.zoom, y.requestZoom(d.zoom));
|
|
139
|
+
}, [
|
|
140
|
+
d.zoom,
|
|
141
|
+
!!y,
|
|
142
|
+
F
|
|
143
|
+
]), a(() => {
|
|
144
|
+
d.rotation !== void 0 && D && F && d.rotation !== k * 90 && (J.current = d.rotation, D.setRotation((d.rotation / 90 % 4 + 4) % 4));
|
|
145
|
+
}, [
|
|
146
|
+
d.rotation,
|
|
147
|
+
!!D,
|
|
148
|
+
F
|
|
149
|
+
]), a(() => {
|
|
150
|
+
if (q.current !== null) {
|
|
151
|
+
if (Math.abs(q.current - z) > .001) return;
|
|
152
|
+
q.current = null;
|
|
153
|
+
}
|
|
154
|
+
Y.current !== z && R.current.onZoomChange?.(z), Y.current = z;
|
|
155
|
+
}, [z]), a(() => {
|
|
156
|
+
if (J.current !== null) {
|
|
157
|
+
if (J.current !== k * 90) return;
|
|
158
|
+
J.current = null;
|
|
159
|
+
}
|
|
160
|
+
X.current !== k && R.current.onRotationChange?.(k * 90), X.current = k;
|
|
161
|
+
}, [k]), a(() => {
|
|
162
|
+
let e = d.focusTarget, t = e && h?.pages[e.page - 1];
|
|
163
|
+
e && t && _ && !L && (H.current = !0, _.scrollToPage({
|
|
164
|
+
pageNumber: e.page,
|
|
165
|
+
pageCoordinates: {
|
|
166
|
+
x: t.size.width / 2,
|
|
167
|
+
y: t.size.height * e.y
|
|
168
|
+
},
|
|
169
|
+
alignY: 40,
|
|
170
|
+
behavior: "instant"
|
|
171
|
+
}));
|
|
172
|
+
}, [
|
|
173
|
+
d.focusTarget?.token,
|
|
174
|
+
_,
|
|
175
|
+
F,
|
|
176
|
+
L
|
|
177
|
+
]);
|
|
178
|
+
let Z = () => {
|
|
179
|
+
H.current = !1, V.current = null;
|
|
180
|
+
}, Q = (e) => {
|
|
181
|
+
G.current = null;
|
|
182
|
+
let t = Math.max(1, Math.min(F, e));
|
|
183
|
+
d.currentPage === void 0 && M(t), d.onCurrentPageChange?.(t);
|
|
184
|
+
}, $ = (e) => {
|
|
185
|
+
let t = h?.pages[e];
|
|
186
|
+
if (!t) return null;
|
|
187
|
+
let n = (t.rotation + k) % 4, { width: r, height: i } = t.size, a = {
|
|
188
|
+
documentId: f,
|
|
189
|
+
page: e + 1,
|
|
190
|
+
pageIndex: e,
|
|
191
|
+
width: r,
|
|
192
|
+
height: i,
|
|
193
|
+
zoom: z,
|
|
194
|
+
rotation: n * 90
|
|
195
|
+
}, o = n % 2 == 1;
|
|
196
|
+
return /* @__PURE__ */ l("div", {
|
|
197
|
+
className: "ui-v2-native-page",
|
|
198
|
+
"data-page": e + 1,
|
|
199
|
+
style: {
|
|
200
|
+
position: "relative",
|
|
201
|
+
width: (o ? i : r) * z,
|
|
202
|
+
height: (o ? r : i) * z
|
|
203
|
+
},
|
|
204
|
+
children: /* @__PURE__ */ l(le, {
|
|
205
|
+
documentId: f,
|
|
206
|
+
pageIndex: e,
|
|
207
|
+
rotation: n,
|
|
208
|
+
scale: z,
|
|
209
|
+
children: /* @__PURE__ */ u(ie, {
|
|
210
|
+
documentId: f,
|
|
211
|
+
pageIndex: e,
|
|
212
|
+
rotation: n,
|
|
213
|
+
style: {
|
|
214
|
+
width: r * z,
|
|
215
|
+
height: i * z
|
|
216
|
+
},
|
|
217
|
+
children: [
|
|
218
|
+
d.renderPage ? d.renderPage({
|
|
219
|
+
page: e + 1,
|
|
220
|
+
zoom: z,
|
|
221
|
+
rotation: n * 90
|
|
222
|
+
}) : /* @__PURE__ */ l(v, {
|
|
223
|
+
draggable: !1,
|
|
224
|
+
documentId: f,
|
|
225
|
+
pageIndex: e,
|
|
226
|
+
"aria-label": `第 ${e + 1} 页`
|
|
227
|
+
}),
|
|
228
|
+
d.features?.search !== !1 && /* @__PURE__ */ l(se, {
|
|
229
|
+
"data-ui-search-layer": !0,
|
|
230
|
+
documentId: f,
|
|
231
|
+
pageIndex: e,
|
|
232
|
+
scale: z
|
|
233
|
+
}),
|
|
234
|
+
N?.page === e + 1 && /* @__PURE__ */ l("span", {
|
|
235
|
+
"data-ui-search-target": !0,
|
|
236
|
+
style: {
|
|
237
|
+
position: "absolute",
|
|
238
|
+
left: N.x * z,
|
|
239
|
+
top: N.y * z,
|
|
240
|
+
width: 0,
|
|
241
|
+
height: 0,
|
|
242
|
+
pointerEvents: "none"
|
|
243
|
+
}
|
|
244
|
+
}),
|
|
245
|
+
d.features?.textSelection !== !1 && /* @__PURE__ */ l(O, {
|
|
246
|
+
documentId: f,
|
|
247
|
+
pageIndex: e,
|
|
248
|
+
scale: z,
|
|
249
|
+
rotation: 0
|
|
250
|
+
}),
|
|
251
|
+
d.renderPageOverlay && /* @__PURE__ */ l("div", {
|
|
252
|
+
className: "ui-v2-page-overlay",
|
|
253
|
+
style: {
|
|
254
|
+
position: "absolute",
|
|
255
|
+
inset: 0,
|
|
256
|
+
width: r,
|
|
257
|
+
height: i,
|
|
258
|
+
transform: `scale(${z})`,
|
|
259
|
+
transformOrigin: "0 0",
|
|
260
|
+
pointerEvents: "none"
|
|
261
|
+
},
|
|
262
|
+
children: d.renderPageOverlay(a)
|
|
263
|
+
})
|
|
264
|
+
]
|
|
265
|
+
})
|
|
266
|
+
})
|
|
267
|
+
});
|
|
268
|
+
};
|
|
269
|
+
return /* @__PURE__ */ u("section", {
|
|
270
|
+
ref: A.containerRef,
|
|
271
|
+
style: d.style,
|
|
272
|
+
onKeyDown: (e) => {
|
|
273
|
+
if (d.features?.textSelection === !1 || !(e.ctrlKey || e.metaKey) || e.key.toLowerCase() !== "c" || e.target.closest("input, textarea, [contenteditable=\"true\"]")) return;
|
|
274
|
+
let t = E?.forDocument(f);
|
|
275
|
+
t?.getState().selection && (e.preventDefault(), t.copyToClipboard());
|
|
276
|
+
},
|
|
277
|
+
"aria-label": d.ariaLabel ?? "PDF 文档查看器",
|
|
278
|
+
className: [
|
|
279
|
+
"ui-document-viewer",
|
|
280
|
+
"ui-document-viewer-v2-headless",
|
|
281
|
+
A.fullscreen && "ui-viewer-fullscreen",
|
|
282
|
+
d.className
|
|
283
|
+
].filter(Boolean).join(" "),
|
|
284
|
+
children: [
|
|
285
|
+
d.showToolbar !== !1 && /* @__PURE__ */ u("div", {
|
|
286
|
+
className: "ui-viewer-toolbar",
|
|
287
|
+
children: [
|
|
288
|
+
d.title !== void 0 && /* @__PURE__ */ l("div", {
|
|
289
|
+
className: "ui-viewer-title",
|
|
290
|
+
children: d.title
|
|
291
|
+
}),
|
|
292
|
+
d.toolbar,
|
|
293
|
+
/* @__PURE__ */ l(n, {
|
|
294
|
+
zoom: b.currentZoomLevel,
|
|
295
|
+
disabled: !F,
|
|
296
|
+
fullscreen: A.fullscreen,
|
|
297
|
+
canZoomIn: z < 3,
|
|
298
|
+
canZoomOut: z > (d.initialZoom === "fit-width" ? .1 : .5),
|
|
299
|
+
onZoomIn: () => y?.zoomIn(),
|
|
300
|
+
onZoomOut: () => y?.zoomOut(),
|
|
301
|
+
onRotate: () => D?.rotateForward(),
|
|
302
|
+
onToggleFullscreen: A.toggleFullscreen
|
|
303
|
+
})
|
|
304
|
+
]
|
|
305
|
+
}),
|
|
306
|
+
d.features?.search !== !1 && /* @__PURE__ */ l(i, {
|
|
307
|
+
onClear: () => P(null),
|
|
308
|
+
enabled: !!F,
|
|
309
|
+
documentId: f,
|
|
310
|
+
onPageChange: (e, t) => {
|
|
311
|
+
V.current = e, P(t ? {
|
|
312
|
+
page: e,
|
|
313
|
+
...t
|
|
314
|
+
} : null), Q(e);
|
|
315
|
+
}
|
|
316
|
+
}),
|
|
317
|
+
m?.status === "error" ? /* @__PURE__ */ u("div", {
|
|
318
|
+
role: "alert",
|
|
319
|
+
children: ["PDF 加载失败:", m.error]
|
|
320
|
+
}) : h ? /* @__PURE__ */ l(t, {
|
|
321
|
+
rail: /* @__PURE__ */ l(oe, {
|
|
322
|
+
documentId: f,
|
|
323
|
+
children: (t) => /* @__PURE__ */ u(e, {
|
|
324
|
+
variant: "ghost",
|
|
325
|
+
className: "ui-v2-thumbnail",
|
|
326
|
+
"aria-label": `第 ${t.pageIndex + 1} 页`,
|
|
327
|
+
"aria-current": I === t.pageIndex + 1 ? "page" : void 0,
|
|
328
|
+
onClick: () => Q(t.pageIndex + 1),
|
|
329
|
+
style: {
|
|
330
|
+
position: "absolute",
|
|
331
|
+
top: t.top,
|
|
332
|
+
width: "100%",
|
|
333
|
+
height: t.wrapperHeight,
|
|
334
|
+
display: "grid"
|
|
335
|
+
},
|
|
336
|
+
children: [/* @__PURE__ */ l(T, {
|
|
337
|
+
documentId: f,
|
|
338
|
+
meta: t,
|
|
339
|
+
className: "ui-v2-thumbnail-image",
|
|
340
|
+
style: {
|
|
341
|
+
width: t.width,
|
|
342
|
+
height: t.height
|
|
343
|
+
}
|
|
344
|
+
}), /* @__PURE__ */ l("span", { children: t.pageIndex + 1 })]
|
|
345
|
+
}, t.pageIndex)
|
|
346
|
+
}),
|
|
347
|
+
children: /* @__PURE__ */ l(ee, {
|
|
348
|
+
documentId: f,
|
|
349
|
+
className: "ui-v2-native-viewport",
|
|
350
|
+
tabIndex: 0,
|
|
351
|
+
"aria-label": "PDF 页面滚动区域",
|
|
352
|
+
style: {
|
|
353
|
+
height: "100%",
|
|
354
|
+
minHeight: 0,
|
|
355
|
+
overflow: "auto"
|
|
356
|
+
},
|
|
357
|
+
onWheelCapture: Z,
|
|
358
|
+
onTouchMoveCapture: Z,
|
|
359
|
+
onPointerDownCapture: Z,
|
|
360
|
+
onKeyDownCapture: Z,
|
|
361
|
+
children: /* @__PURE__ */ l(S, {
|
|
362
|
+
documentId: f,
|
|
363
|
+
enablePinch: d.features?.pinchZoom !== !1,
|
|
364
|
+
children: L ? /* @__PURE__ */ l("div", {
|
|
365
|
+
className: "ui-v2-native-single",
|
|
366
|
+
children: $(I - 1)
|
|
367
|
+
}) : /* @__PURE__ */ l(ne, {
|
|
368
|
+
documentId: f,
|
|
369
|
+
renderPage: ({ pageIndex: e }) => $(e)
|
|
370
|
+
})
|
|
371
|
+
})
|
|
372
|
+
})
|
|
373
|
+
}) : /* @__PURE__ */ l("div", {
|
|
374
|
+
role: "status",
|
|
375
|
+
children: "正在加载 PDF 文档…"
|
|
376
|
+
}),
|
|
377
|
+
/* @__PURE__ */ u("div", {
|
|
378
|
+
className: "ui-viewer-footer",
|
|
379
|
+
children: [
|
|
380
|
+
/* @__PURE__ */ l(e, {
|
|
381
|
+
variant: "ghost",
|
|
382
|
+
size: "compact",
|
|
383
|
+
disabled: !F || I <= 1,
|
|
384
|
+
onClick: () => Q(I - 1),
|
|
385
|
+
children: "上一页"
|
|
386
|
+
}),
|
|
387
|
+
/* @__PURE__ */ u("span", {
|
|
388
|
+
"aria-live": "polite",
|
|
389
|
+
children: [
|
|
390
|
+
F ? I : 0,
|
|
391
|
+
" / ",
|
|
392
|
+
F
|
|
393
|
+
]
|
|
394
|
+
}),
|
|
395
|
+
/* @__PURE__ */ l(e, {
|
|
396
|
+
variant: "ghost",
|
|
397
|
+
size: "compact",
|
|
398
|
+
disabled: !F || I >= F,
|
|
399
|
+
onClick: () => Q(I + 1),
|
|
400
|
+
children: "下一页"
|
|
401
|
+
}),
|
|
402
|
+
d.footer
|
|
403
|
+
]
|
|
404
|
+
})
|
|
405
|
+
]
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
function ue(e, t, n) {
|
|
409
|
+
let r = e?.querySelector(`[data-page="${t.page}"] [data-ui-search-target]`), i = e?.querySelector(".ui-v2-native-viewport");
|
|
410
|
+
if (!r || !i) return;
|
|
411
|
+
let a = r.getBoundingClientRect(), o = i.getBoundingClientRect(), s = n.getMetrics();
|
|
412
|
+
n.scrollTo({
|
|
413
|
+
x: s.scrollLeft + a.left + a.width / 2 - o.left,
|
|
414
|
+
y: s.scrollTop + a.top + a.height / 2 - o.top,
|
|
415
|
+
alignX: 50,
|
|
416
|
+
alignY: 40
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
//#endregion
|
|
420
|
+
export { j as default };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Button as e } from "../Button.js";
|
|
2
|
+
import { TextInput as t } from "../FormField.js";
|
|
3
|
+
import { useEffect as n, useState as r } from "react";
|
|
4
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
5
|
+
import { useSearch as o } from "@embedpdf/plugin-search/react";
|
|
6
|
+
//#region src/document-viewer-v2/HeadlessSearch.tsx
|
|
7
|
+
function s({ documentId: s, onPageChange: c, enabled: l, onClear: u }) {
|
|
8
|
+
let { provides: d, state: f } = o(s), [p, m] = r("");
|
|
9
|
+
return n(() => {
|
|
10
|
+
let e = f.results[f.activeResultIndex], t = e?.rects[0];
|
|
11
|
+
e && c(e.pageIndex + 1, t ? {
|
|
12
|
+
x: t.origin.x + t.size.width / 2,
|
|
13
|
+
y: t.origin.y + t.size.height / 2
|
|
14
|
+
} : void 0);
|
|
15
|
+
}, [f.activeResultIndex, f.results]), /* @__PURE__ */ a("form", {
|
|
16
|
+
className: "ui-v2-search",
|
|
17
|
+
role: "search",
|
|
18
|
+
"aria-label": "搜索 PDF 文本",
|
|
19
|
+
onSubmit: (e) => {
|
|
20
|
+
e.preventDefault(), l && d && p.trim() && (d.startSearch(), d.searchAllPages(p.trim()));
|
|
21
|
+
},
|
|
22
|
+
children: [
|
|
23
|
+
/* @__PURE__ */ i(t, {
|
|
24
|
+
"aria-label": "搜索文档",
|
|
25
|
+
value: p,
|
|
26
|
+
onChange: (e) => m(e.target.value)
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ i(e, {
|
|
29
|
+
type: "submit",
|
|
30
|
+
variant: "outline",
|
|
31
|
+
size: "compact",
|
|
32
|
+
disabled: !l || !d || f.loading || !p.trim(),
|
|
33
|
+
children: "搜索"
|
|
34
|
+
}),
|
|
35
|
+
/* @__PURE__ */ i(e, {
|
|
36
|
+
variant: "ghost",
|
|
37
|
+
size: "compact",
|
|
38
|
+
disabled: !f.total,
|
|
39
|
+
onClick: () => d?.previousResult(),
|
|
40
|
+
children: "上一结果"
|
|
41
|
+
}),
|
|
42
|
+
/* @__PURE__ */ i(e, {
|
|
43
|
+
variant: "ghost",
|
|
44
|
+
size: "compact",
|
|
45
|
+
disabled: !f.total,
|
|
46
|
+
onClick: () => d?.nextResult(),
|
|
47
|
+
children: "下一结果"
|
|
48
|
+
}),
|
|
49
|
+
/* @__PURE__ */ a("span", {
|
|
50
|
+
role: "status",
|
|
51
|
+
children: [f.loading ? "搜索中…" : f.active ? `${f.total ? f.activeResultIndex + 1 : 0} / ${f.total}` : "", f.active && !f.loading && f.total === 0 ? " · 未找到可搜索文本;扫描件需要已有文本层,本查看器不执行 OCR。" : ""]
|
|
52
|
+
}),
|
|
53
|
+
/* @__PURE__ */ i(e, {
|
|
54
|
+
variant: "ghost",
|
|
55
|
+
size: "compact",
|
|
56
|
+
disabled: !f.active,
|
|
57
|
+
onClick: () => {
|
|
58
|
+
d?.stopSearch(), m(""), u?.();
|
|
59
|
+
},
|
|
60
|
+
children: "清除搜索"
|
|
61
|
+
})
|
|
62
|
+
]
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
export { s as HeadlessSearch };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
/* empty css */
|
|
3
|
+
import { usePdfCanvas as e } from "./document-viewer/usePdfCanvas.js";
|
|
4
|
+
import { PdfCanvasPage as t } from "./document-viewer/PdfCanvasPage.js";
|
|
5
|
+
import { ContinuousPdfViewer as n } from "./document-viewer/ContinuousPdfViewer.js";
|
|
6
|
+
import { PdfWorkspace as r } from "./document-viewer/PdfWorkspace.js";
|
|
7
|
+
import { DocumentViewerViewport as i } from "./document-viewer/DocumentViewerViewport.js";
|
|
8
|
+
import { PageThumbnail as a, PdfThumbnailRail as o } from "./document-viewer/PdfThumbnailRail.js";
|
|
9
|
+
import { PdfToolbar as s } from "./document-viewer/PdfToolbar.js";
|
|
10
|
+
import { usePdfViewport as c } from "./document-viewer/usePdfViewport.js";
|
|
11
|
+
/* empty css */
|
|
12
|
+
import { DOCUMENT_VIEWER_V2_DISABLED_CATEGORIES as l, DocumentViewerV2 as u, createDocumentViewerV2Config as d } from "./document-viewer-v2/DocumentViewerV2.js";
|
|
13
|
+
export { n as ContinuousPdfViewer, l as DOCUMENT_VIEWER_V2_DISABLED_CATEGORIES, u as DocumentViewer, u as DocumentViewerV2, i as DocumentViewerViewport, a as PageThumbnail, t as PdfCanvasPage, o as PdfThumbnailRail, s as PdfToolbar, r as PdfWorkspace, d as createDocumentViewerV2Config, e as usePdfCanvas, c as usePdfViewport };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
/* empty css */
|
|
3
|
+
import { usePdfCanvas as e } from "./document-viewer/usePdfCanvas.js";
|
|
4
|
+
import { PdfCanvasPage as t } from "./document-viewer/PdfCanvasPage.js";
|
|
5
|
+
import { ContinuousPdfViewer as n } from "./document-viewer/ContinuousPdfViewer.js";
|
|
6
|
+
import { PdfWorkspace as r } from "./document-viewer/PdfWorkspace.js";
|
|
7
|
+
import { DocumentViewerViewport as i } from "./document-viewer/DocumentViewerViewport.js";
|
|
8
|
+
import { PageThumbnail as a, PdfThumbnailRail as o } from "./document-viewer/PdfThumbnailRail.js";
|
|
9
|
+
import { PdfToolbar as s } from "./document-viewer/PdfToolbar.js";
|
|
10
|
+
import { usePdfViewport as c } from "./document-viewer/usePdfViewport.js";
|
|
11
|
+
import { DocumentViewer as l } from "./document-viewer/DocumentViewer.js";
|
|
12
|
+
export { n as ContinuousPdfViewer, l as DocumentViewer, i as DocumentViewerViewport, a as PageThumbnail, t as PdfCanvasPage, o as PdfThumbnailRail, s as PdfToolbar, r as PdfWorkspace, e as usePdfCanvas, c as usePdfViewport };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Suspense as e, lazy as t } from "react";
|
|
2
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
3
|
+
//#region src/PdfiumViewer.tsx
|
|
4
|
+
var r = t(() => import("./document-viewer-v2/HeadlessPdfViewer.js"));
|
|
5
|
+
function i(t) {
|
|
6
|
+
return /* @__PURE__ */ n(e, {
|
|
7
|
+
fallback: /* @__PURE__ */ n("div", {
|
|
8
|
+
role: "status",
|
|
9
|
+
children: "正在加载 PDF 查看器…"
|
|
10
|
+
}),
|
|
11
|
+
children: /* @__PURE__ */ n(r, {
|
|
12
|
+
...t,
|
|
13
|
+
renderer: "headless"
|
|
14
|
+
}, `${t.source.kind}:${t.source.id}`)
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { i as PdfiumViewer };
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
:root{--ui-primary:#5965a8;--ui-primary-hover:#414a78;--ui-primary-soft:#eef0fb;--ui-text:#242837;--ui-muted:#70778b;--ui-border:#dde0eb;--ui-border-strong:#b8bfdc;--ui-surface:#fff;--ui-canvas:#f4f5f9;--ui-danger:#b44a51;--ui-danger-soft:#fff0f1;--ui-warning:#b87512;--ui-warning-soft:#fff8eb;--ui-success:#2f7d52;--ui-success-soft:#edf8f1;--ui-focus:#5965a847;--ui-shadow:0 12px 32px #29315929;--ui-radius:8px;--ui-radius-large:12px;--ui-control-height:40px;--ui-touch-height:44px;--ui-motion-fast:.12s;--ui-motion-normal:.18s;--ui-motion-slow:.24s;--ui-ease-enter:cubic-bezier(.215,.61,.355,1);--ui-ease-exit:cubic-bezier(.55,.055,.675,.19);--ui-ease-standard:cubic-bezier(.645,.045,.355,1)}.ui-button{box-sizing:border-box;min-width:0;min-height:var(--ui-control-height);border-radius:var(--ui-radius);font:inherit;text-align:center;white-space:nowrap;cursor:pointer;transition:background-color var(--ui-motion-fast) var(--ui-ease-standard),border-color var(--ui-motion-fast) var(--ui-ease-standard),color var(--ui-motion-fast) var(--ui-ease-standard),box-shadow var(--ui-motion-fast) var(--ui-ease-standard),transform var(--ui-motion-fast) var(--ui-ease-standard);border:1px solid #0000;justify-content:center;align-items:center;gap:7px;padding:0 14px;font-weight:700;line-height:1.2;text-decoration:none;display:inline-flex}.ui-button:hover:not(:disabled,[aria-disabled=true]){transform:translateY(-1px)}.ui-button:active:not(:disabled,[aria-disabled=true]){transform:none}.ui-button:focus-visible,.ui-modal-close:focus-visible,.ui-alert-close:focus-visible,.ui-pagination button:focus-visible,.ui-tabs button:focus-visible,.ui-date-input input:focus-visible,.ui-date-trigger:focus-visible{outline:3px solid var(--ui-focus);outline-offset:2px}.ui-button:disabled,.ui-button[aria-disabled=true]{cursor:not-allowed;opacity:.58;transform:none}.ui-button-primary{border-color:var(--ui-primary);color:#fff;background:var(--ui-primary);box-shadow:0 5px 14px color-mix(in srgb,var(--ui-primary) 18%,transparent)}.ui-button-primary:hover:not(:disabled,[aria-disabled=true]){border-color:var(--ui-primary-hover);background:var(--ui-primary-hover)}.ui-button-secondary{border-color:var(--ui-border-strong);color:var(--ui-primary-hover);background:var(--ui-primary-soft)}.ui-button-outline{border-color:var(--ui-border);color:var(--ui-text);background:var(--ui-surface)}.ui-button-ghost{color:var(--ui-primary);background:0 0}.ui-button-danger{border-color:color-mix(in srgb,var(--ui-danger) 35%,white);color:var(--ui-danger);background:var(--ui-danger-soft)}.ui-button-default{height:var(--ui-control-height)}.ui-button-compact{height:32px;min-height:32px;padding-inline:10px;font-size:12px}.ui-button-touch{height:var(--ui-touch-height);min-height:var(--ui-touch-height);padding-inline:16px}.ui-button-icon{width:var(--ui-control-height);min-width:var(--ui-control-height);padding:0}.ui-button-compact.ui-button-icon{width:32px;min-width:32px}.ui-button-touch.ui-button-icon{width:var(--ui-touch-height);min-width:var(--ui-touch-height)}.ui-explainable-action{flex-direction:column;align-items:flex-start;gap:6px;display:inline-flex}.ui-explainable-reason{max-width:34rem;color:var(--ui-muted);align-items:flex-start;gap:5px;font-size:12px;line-height:1.5;display:flex}.ui-explainable-action.reason-popover{position:relative}.reason-popover .ui-explainable-reason{z-index:120;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface);width:max-content;max-width:min(320px,100vw - 24px);box-shadow:var(--ui-shadow);visibility:hidden;opacity:0;padding:8px 10px;position:absolute;top:calc(100% + 7px);left:0}.reason-popover.reason-open .ui-explainable-reason{visibility:visible;opacity:1}.ui-modal-backdrop{z-index:1000;background:#12172a7a;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.ui-modal{border:1px solid var(--ui-border);border-radius:var(--ui-radius-large);width:min(560px,100%);max-height:calc(100dvh - 40px);color:var(--ui-text);background:var(--ui-surface);flex-direction:column;display:flex;overflow:hidden;box-shadow:0 24px 80px #191f373d}.ui-modal-header{border-bottom:1px solid var(--ui-border);flex:none;justify-content:space-between;align-items:flex-start;gap:16px;min-width:0;padding:20px;display:flex}.ui-modal-header>div{min-width:0}.ui-modal-header h2{overflow-wrap:anywhere;margin:4px 0 0;font-size:1.15rem}.ui-modal-header p{color:var(--ui-muted);overflow-wrap:anywhere;margin:7px 0 0;font-size:.82rem;line-height:1.6}.ui-modal-eyebrow{color:var(--ui-primary);letter-spacing:.1em;font-size:.7rem;font-weight:750}.ui-modal-close{width:var(--ui-control-height);height:var(--ui-control-height);border:1px solid var(--ui-border);border-radius:var(--ui-radius);color:var(--ui-muted);background:var(--ui-surface);cursor:pointer;flex:none;place-items:center;display:grid}.ui-modal-content{overscroll-behavior:contain;flex-direction:column;flex:auto;min-height:0;display:flex;overflow:auto}.ui-modal-footer{border-top:1px solid var(--ui-border);background:var(--ui-surface);flex:none}.ui-form-field{min-width:0;color:var(--ui-text);align-content:start;gap:6px;display:grid}.ui-form-label{font-size:13px;font-weight:700}.ui-form-required{color:var(--ui-danger);margin-left:3px}.ui-input,.ui-select,.ui-textarea{box-sizing:border-box;width:100%;min-height:var(--ui-control-height);border:1px solid var(--ui-border);border-radius:var(--ui-radius);color:var(--ui-text);background:var(--ui-surface);font:inherit;padding:0 11px;line-height:1.2}.ui-input,.ui-select{height:var(--ui-control-height)}.ui-select{appearance:auto}.ui-textarea{resize:vertical;height:auto;min-height:88px;padding-block:9px}.ui-input:focus,.ui-select:focus,.ui-textarea:focus{border-color:var(--ui-primary);outline:3px solid var(--ui-focus)}.ui-input[aria-invalid=true],.ui-select[aria-invalid=true],.ui-textarea[aria-invalid=true]{border-color:var(--ui-danger)}.ui-form-help{color:var(--ui-muted);font-size:12px;line-height:1.5}.ui-form-error{color:var(--ui-danger);font-size:12px}.ui-checkbox{align-items:flex-start;gap:9px;display:flex}.ui-checkbox input{width:18px;height:18px;accent-color:var(--ui-primary)}.ui-checkbox-copy{gap:3px;display:grid}.ui-checkbox-copy small{color:var(--ui-muted)}.ui-input-affix{box-sizing:border-box;width:100%;height:var(--ui-control-height);min-height:var(--ui-control-height);border:1px solid var(--ui-border);border-radius:var(--ui-radius);color:var(--ui-text);background:var(--ui-surface);font:inherit;align-items:center;gap:8px;padding:0 11px;line-height:1.2;display:flex}.ui-input-affix:focus-within{border-color:var(--ui-primary);outline:3px solid var(--ui-focus)}.ui-input-affix[data-invalid=true]{border-color:var(--ui-danger)}.ui-input-affix[data-disabled=true],.ui-input-affix[data-disabled=true] .ui-input-adornment{cursor:not-allowed}.ui-input-affix>.ui-input{background:0 0;border:0;border-radius:0;outline:0;flex:auto;align-self:stretch;min-width:0;height:auto;min-height:0;padding:0}.ui-input-affix>.ui-input:focus,.ui-input-affix>.ui-input[aria-invalid=true]{border:0;outline:0}.ui-input-adornment{min-width:0;color:var(--ui-muted);white-space:nowrap;flex:none;justify-content:center;align-items:center;font-size:13px;display:inline-flex}.ui-input-adornment .ui-button-compact{margin-block:3px}.ui-pagination{min-height:58px;color:var(--ui-muted);justify-content:space-between;align-items:center;gap:14px;padding:10px 16px;font-size:12px;display:flex}.ui-pagination-pages{align-items:center;gap:6px;display:flex}.ui-pagination-pages button{border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface);cursor:pointer;min-width:34px;height:34px;padding:0 8px}.ui-pagination-pages button.active{border-color:var(--ui-primary);color:var(--ui-primary-hover);background:var(--ui-primary-soft);font-weight:700}.ui-pagination-pages button:disabled{cursor:not-allowed;opacity:.45}.ui-pagination-pages i{padding:0 3px;font-style:normal}.ui-pagination-auto-compact{white-space:nowrap;display:none}.ui-pagination-size{align-items:center;gap:5px;display:flex}.ui-pagination-size select{border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface);height:34px}.ui-tabs{align-items:center;gap:7px;display:flex;overflow-x:auto}.ui-tabs button{min-height:var(--ui-control-height);border-radius:var(--ui-radius);color:var(--ui-muted);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;padding:0 12px}.ui-tabs button.active{border-color:var(--ui-border);color:var(--ui-primary-hover);background:var(--ui-primary-soft);font-weight:700}.ui-toggle{cursor:pointer;align-items:center;gap:9px;display:inline-flex}.ui-toggle input{clip-path:inset(50%);width:1px;height:1px;position:absolute}.ui-toggle-track{background:var(--ui-border-strong);border-radius:99px;align-items:center;width:38px;height:22px;padding:3px;transition:background .15s;display:flex}.ui-toggle-track i{background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;box-shadow:0 1px 4px #0003}.ui-toggle input:checked+.ui-toggle-track{background:var(--ui-primary)}.ui-toggle input:checked+.ui-toggle-track i{transform:translate(16px)}.ui-toggle input:focus-visible+.ui-toggle-track{outline:3px solid var(--ui-focus);outline-offset:2px}.ui-toggle input[aria-disabled=true]~*{opacity:.58;cursor:not-allowed}.ui-segmented-control{--ui-segmented-height:var(--ui-control-height);box-sizing:border-box;border:1px solid var(--ui-border-strong);border-radius:var(--ui-radius);width:100%;min-width:0;max-width:100%;color:var(--ui-text);background:var(--ui-surface);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;display:grid;overflow:hidden}.ui-segmented-option{box-sizing:border-box;min-width:0;min-height:calc(var(--ui-segmented-height) - 2px);border:1px solid #0000;border-left-color:var(--ui-border);cursor:pointer;place-items:center;margin:-1px 0 -1px -1px;display:grid;position:relative}.ui-segmented-option:first-child{border-left-color:#0000;margin-left:-1px}.ui-segmented-option input{clip-path:inset(50%);width:1px;height:1px;min-height:1px;padding:0;position:absolute}.ui-segmented-content{box-sizing:border-box;min-width:0;max-width:100%;font:inherit;justify-content:center;align-items:center;gap:6px;padding:4px 12px;font-weight:650;display:flex}.ui-segmented-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ui-segmented-label:empty{display:none}.ui-segmented-icon{flex:none;align-items:center;display:inline-flex}.ui-segmented-icon svg{width:1em;height:1em}.ui-segmented-option:has(input:checked){z-index:1;border-color:var(--ui-primary);color:#fff;background:var(--ui-primary)}.ui-segmented-option:has(input:focus-visible){z-index:2;outline:3px solid var(--ui-focus);outline-offset:-3px}.ui-segmented-option:has(input:disabled){cursor:not-allowed;opacity:.52}.ui-segmented-compact{--ui-segmented-height:32px}.ui-segmented-compact .ui-segmented-content{padding-inline:10px;font-size:12px}.ui-segmented-touch{--ui-segmented-height:var(--ui-touch-height)}.ui-segmented-touch .ui-segmented-content{padding-inline:16px}.ui-segmented-control{min-height:var(--ui-segmented-height)}.ui-segmented-inline{grid-auto-columns:minmax(0,auto);width:fit-content;display:inline-grid}.ui-segmented-vertical{grid-template-columns:minmax(0,1fr);grid-auto-flow:row}.ui-segmented-vertical .ui-segmented-option{border-left-color:#0000;border-top-color:var(--ui-border);margin:-1px -1px 0}.ui-segmented-vertical .ui-segmented-option:first-child{border-top-color:#0000}.ui-segmented-vertical .ui-segmented-option:has(input:checked){border-color:var(--ui-primary)}.ui-segmented-soft{background:var(--ui-surface-subtle,var(--ui-primary-soft));border-color:#0000;gap:3px;padding:3px}.ui-segmented-soft .ui-segmented-option{border-radius:calc(var(--ui-radius) - 2px);border-color:#0000;margin:0}.ui-segmented-soft .ui-segmented-option:has(input:checked){border-color:var(--ui-border);background:var(--ui-surface);color:var(--ui-text);box-shadow:0 1px 3px #0000001a}.ui-segmented-soft .ui-segmented-option:has(input:not(:checked):not(:disabled)):hover{background:var(--ui-surface);color:var(--ui-primary)}.ui-segmented-shape-round{border-radius:24px}.ui-segmented-shape-round .ui-segmented-option{border-radius:20px}@media (pointer:coarse){.ui-segmented-control{--ui-segmented-height:var(--ui-touch-height)}.ui-segmented-option{min-height:var(--ui-touch-height)}}.ui-async-state{min-height:92px;color:var(--ui-muted);justify-content:center;align-items:center;gap:10px;padding:16px;display:flex}.ui-async-state>span{gap:3px;display:grid}.ui-async-state strong{color:var(--ui-text);font-size:14px}.ui-async-state small{font-size:12px}.ui-async-state.compact{justify-content:flex-start;min-height:54px;padding:8px}.ui-async-state .spin{animation:.8s linear infinite ui-spin}@keyframes ui-spin{to{transform:rotate(360deg)}}.ui-date-input{align-items:center;display:inline-flex;position:relative}.ui-date-input input{width:100%;height:var(--ui-control-height);border:1px solid var(--ui-border);border-radius:var(--ui-radius);font:inherit;padding:0 42px 0 11px}.ui-date-trigger{width:36px;height:36px;color:var(--ui-primary);background:0 0;border:0;place-items:center;display:grid;position:absolute;right:2px}.ui-date-calendar{z-index:1100;border:1px solid var(--ui-border);border-radius:var(--ui-radius-large);width:min(332px,100vw);color:var(--ui-text);background:var(--ui-surface);box-shadow:var(--ui-shadow);padding:12px;position:fixed}.ui-date-calendar header,.ui-date-calendar footer{justify-content:space-between;align-items:center;display:flex}.ui-date-calendar button{min-width:36px;min-height:36px;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px}.ui-date-grid{grid-template-columns:repeat(7,1fr);gap:2px;margin:8px 0;display:grid}.ui-date-weekday{height:28px;color:var(--ui-muted);place-items:center;font-size:12px;display:grid}.ui-date-grid button[aria-selected=true]{color:#fff;background:var(--ui-primary)}.ui-date-grid button.outside{color:color-mix(in srgb,var(--ui-muted) 50%,transparent)}.ui-date-clear{color:var(--ui-danger)!important}.ui-date-today{font-weight:700;color:var(--ui-primary)!important}.ui-button-spinner{flex:none;animation:.8s linear infinite ui-spin}.ui-alert{border:1px solid var(--ui-border);border-radius:var(--ui-radius-large);color:var(--ui-text);background:var(--ui-surface);animation:ui-slide-down var(--ui-motion-normal) var(--ui-ease-enter);grid-template-columns:auto minmax(0,1fr) auto auto;align-items:start;gap:10px;padding:12px 14px;display:grid;position:relative}.ui-alert-icon{color:var(--ui-primary);margin-top:1px}.ui-alert-content{gap:3px;min-width:0;display:grid}.ui-alert-content strong{font-size:13px}.ui-alert-description{color:var(--ui-muted);font-size:12px;line-height:1.55}.ui-alert-action{align-self:center}.ui-alert-close{width:28px;height:28px;color:var(--ui-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;margin:-5px -6px -5px 0;display:grid}.ui-alert-close:hover{color:var(--ui-text);background:color-mix(in srgb,var(--ui-text) 6%,transparent)}.ui-alert-success{border-color:color-mix(in srgb,var(--ui-success) 28%,var(--ui-border));background:var(--ui-success-soft)}.ui-alert-success .ui-alert-icon{color:var(--ui-success)}.ui-alert-warning{border-color:color-mix(in srgb,var(--ui-warning) 30%,var(--ui-border));background:var(--ui-warning-soft)}.ui-alert-warning .ui-alert-icon{color:var(--ui-warning)}.ui-alert-danger{border-color:color-mix(in srgb,var(--ui-danger) 30%,var(--ui-border));background:var(--ui-danger-soft)}.ui-alert-danger .ui-alert-icon{color:var(--ui-danger)}.ui-empty-state{text-align:center;min-height:180px;color:var(--ui-muted);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:28px;display:flex}.ui-empty-state.compact{min-height:112px;padding:18px}.ui-empty-icon{width:48px;height:48px;color:var(--ui-primary);background:var(--ui-primary-soft);border-radius:50%;place-items:center;margin-bottom:2px;display:grid}.ui-empty-state strong{color:var(--ui-text);font-size:14px}.ui-empty-description{max-width:34rem;font-size:12px;line-height:1.6}.ui-empty-action{margin-top:6px}.ui-skeleton{background:linear-gradient(90deg,var(--ui-canvas) 20%,color-mix(in srgb,var(--ui-border) 58%,var(--ui-surface)) 40%,var(--ui-canvas) 60%);width:100%;height:14px;animation:ui-skeleton-wave 1.5s var(--ui-ease-standard) infinite;background-size:300% 100%;border-radius:5px;display:block}.ui-skeleton.rounded{border-radius:999px}.ui-skeleton-text{align-content:start;gap:9px;display:grid}.reason-popover .ui-explainable-reason{transition:opacity var(--ui-motion-fast) var(--ui-ease-enter),transform var(--ui-motion-fast) var(--ui-ease-enter),visibility 0s linear var(--ui-motion-fast);transform:translateY(-3px)}.reason-popover.reason-open .ui-explainable-reason{transition-delay:0s;transform:none}.ui-modal-backdrop{animation:ui-fade-in var(--ui-motion-normal) var(--ui-ease-enter)}.ui-modal{animation:ui-modal-enter var(--ui-motion-slow) var(--ui-ease-enter)}.ui-date-calendar{transform-origin:top;animation:ui-popover-enter var(--ui-motion-normal) var(--ui-ease-enter)}@keyframes ui-fade-in{0%{opacity:0}}@keyframes ui-modal-enter{0%{opacity:0;transform:translateY(8px)scale(.985)}}@keyframes ui-popover-enter{0%{opacity:0;transform:translateY(-4px)scale(.985)}}@keyframes ui-slide-down{0%{opacity:0;transform:translateY(-5px)}}@keyframes ui-skeleton-wave{0%{background-position:100% 0}to{background-position:0 0}}.ui-tooltip,.ui-popover,.ui-select-content,.ui-combobox-popover{z-index:1200;border:1px solid var(--ui-border);color:var(--ui-text);background:var(--ui-surface);box-shadow:var(--ui-shadow);transform-origin:var(--radix-popover-content-transform-origin,var(--radix-tooltip-content-transform-origin,center));animation:ui-popover-enter var(--ui-motion-normal) var(--ui-ease-enter)}.ui-tooltip{border-radius:7px;max-width:min(280px,100vw - 24px);padding:7px 9px;font-size:12px;line-height:1.45}.ui-floating-arrow{fill:var(--ui-surface)}.ui-popover{width:min(340px,var(--radix-popover-content-available-width,calc(100vw - 24px)));max-height:var(--radix-popover-content-available-height,calc(100dvh - 24px));border-radius:var(--ui-radius-large);overflow:auto}.ui-popover-heading{border-bottom:1px solid var(--ui-border);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-size:13px;display:flex}.ui-popover-body{padding:14px}.ui-floating-close,.ui-toast-close{width:28px;height:28px;color:var(--ui-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.ui-floating-close:hover,.ui-toast-close:hover{color:var(--ui-text);background:color-mix(in srgb,var(--ui-text) 6%,transparent)}.ui-popconfirm-description{color:var(--ui-muted);font-size:12px;line-height:1.55}.ui-popconfirm-actions{justify-content:flex-end;gap:8px;margin-top:14px;display:flex}.ui-select-trigger{width:100%;min-height:var(--ui-control-height);border:1px solid var(--ui-border);border-radius:var(--ui-radius);color:var(--ui-text);background:var(--ui-surface);font:inherit;text-align:left;cursor:pointer;justify-content:space-between;align-items:center;gap:10px;padding:0 11px;display:flex}.ui-select-trigger[data-placeholder]{color:var(--ui-muted)}.ui-select-trigger:focus-visible,.ui-combobox-trigger:focus-visible,.ui-floating-close:focus-visible,.ui-toast-close:focus-visible,.ui-table-sort:focus-visible,.ui-data-table input:focus-visible{border-color:var(--ui-primary);outline:3px solid var(--ui-focus);outline-offset:2px}.ui-select-content{min-width:var(--radix-select-trigger-width);max-height:min(320px,var(--radix-select-content-available-height));border-radius:var(--ui-radius);overflow:hidden}.ui-select-viewport{padding:5px}.ui-select-item{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;outline:0;align-items:center;min-height:36px;padding:7px 32px 7px 9px;font-size:13px;line-height:1.4;display:flex;position:relative}.ui-select-item[data-highlighted]{color:var(--ui-primary-hover);background:var(--ui-primary-soft)}.ui-select-item[data-disabled]{opacity:.48;cursor:not-allowed}.ui-select-indicator{color:var(--ui-primary);place-items:center;display:grid;position:absolute;right:9px}.ui-select-scroll{width:100%;height:28px;color:var(--ui-muted);background:var(--ui-surface);border:0;place-items:center;display:grid}.ui-combobox{color:var(--ui-text);align-content:start;gap:6px;display:grid}.ui-combobox-control{display:flex;position:relative}.ui-combobox-control .ui-input{padding-right:42px}.ui-combobox-trigger{width:36px;height:36px;color:var(--ui-primary);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;display:grid;position:absolute;top:2px;right:2px}.ui-combobox-popover{width:var(--trigger-width);max-height:min(320px,var(--available-height));border-radius:var(--ui-radius);overflow:auto}.ui-combobox-list{outline:0;padding:4px;display:block}.ui-combobox-item{cursor:pointer;border-radius:6px;outline:0;justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:7px 9px;display:flex}.ui-combobox-item>span{gap:2px;min-width:0;display:grid}.ui-combobox-item strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.ui-combobox-item small{color:var(--ui-muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.ui-combobox-item[data-focused]{color:var(--ui-primary-hover);background:var(--ui-primary-soft)}.ui-combobox-item[data-selected]{font-weight:700}.ui-combobox-item[data-disabled]{opacity:.48;cursor:not-allowed}.ui-combobox-empty,.ui-combobox-loading{color:var(--ui-muted);text-align:center;padding:14px;font-size:12px}.ui-combobox-loading{border-bottom:1px solid var(--ui-border);justify-content:center;align-items:center;gap:7px;display:flex}.ui-async-search-picker{color:var(--ui-text);align-content:start;gap:8px;display:grid}.ui-async-search-control{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;display:grid}.ui-async-search-status:empty{display:none}.ui-async-search-status{color:var(--ui-muted);font-size:12px}.ui-async-search-list{border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface);max-height:320px;box-shadow:var(--ui-shadow);padding:4px;overflow:auto}.ui-async-search-option{width:100%;min-height:40px;color:var(--ui-text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;padding:8px 9px;display:flex}.ui-async-search-option[aria-selected=true],.ui-async-search-option:hover{color:var(--ui-primary-hover);background:var(--ui-primary-soft)}.ui-async-search-option:focus-visible{outline:3px solid var(--ui-focus);outline-offset:-1px}.ui-async-search-empty{text-align:center;padding:14px}.ui-dropdown-popover{z-index:1300;border:1px solid var(--ui-border);border-radius:var(--ui-radius);min-width:180px;max-width:min(320px,100vw - 24px);color:var(--ui-text);background:var(--ui-surface);box-shadow:var(--ui-shadow);animation:ui-popover-enter var(--ui-motion-normal) var(--ui-ease-enter);overflow:auto}.ui-visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.ui-dropdown-menu{outline:0;padding:5px}.ui-dropdown-item{cursor:pointer;border-radius:6px;outline:0;align-items:center;gap:9px;min-height:36px;padding:7px 9px;font-size:13px;display:flex}.ui-dropdown-item[data-focused]{color:var(--ui-primary-hover);background:var(--ui-primary-soft)}.ui-dropdown-item[data-disabled]{opacity:.48;cursor:not-allowed}.ui-dropdown-item.dangerous{color:var(--ui-danger)}.ui-dropdown-item-icon,.ui-dropdown-item-selected{flex:none;place-items:center;display:grid}.ui-dropdown-item-label{overflow-wrap:anywhere;flex:auto;min-width:0}.ui-dropdown-item-status{min-width:0;color:var(--ui-muted);flex:0 auto;font-size:11px}.ui-dropdown-item-selected{color:var(--ui-primary)}.ui-dropdown-separator{background:var(--ui-border);height:1px;margin:5px}.ui-dropdown-group{display:block}.ui-dropdown-header{color:var(--ui-muted);padding:7px 9px 4px;font-size:11px;font-weight:700}.ui-confirm-dialog-body{overflow-wrap:anywhere;min-width:0;padding:18px 20px}.ui-confirm-dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:14px 20px;display:flex}.ui-toast-viewport{z-index:2000;pointer-events:none;flex-direction:column;gap:10px;width:min(380px,100vw - 36px);display:flex;position:fixed;top:18px;right:18px}.ui-toast{border:1px solid var(--ui-border);border-radius:var(--ui-radius-large);color:var(--ui-text);background:var(--ui-surface);box-shadow:var(--ui-shadow);pointer-events:auto;animation:ui-toast-enter var(--ui-motion-slow) var(--ui-ease-enter);grid-template-columns:auto minmax(0,1fr) auto auto;align-items:start;gap:10px;padding:12px;display:grid}.ui-toast-icon{color:var(--ui-primary);margin-top:2px}.ui-toast-content{gap:3px;min-width:0;display:grid}.ui-toast-content strong{font-size:13px}.ui-toast-content div{color:var(--ui-muted);font-size:12px;line-height:1.5}.ui-toast-success .ui-toast-icon{color:var(--ui-success)}.ui-toast-warning .ui-toast-icon{color:var(--ui-warning)}.ui-toast-danger .ui-toast-icon{color:var(--ui-danger)}.ui-toast-close{margin:-4px -4px -4px 0}.ui-data-table-wrap{border:1px solid var(--ui-border);border-radius:var(--ui-radius-large);background:var(--ui-surface);max-width:100%;position:relative;overflow-x:auto;container-type:inline-size}.ui-data-table{border-collapse:collapse;width:100%;color:var(--ui-text);font-size:13px}.ui-data-table caption{text-align:left;padding:12px 14px;font-weight:700}.ui-data-table th,.ui-data-table td{border-bottom:1px solid var(--ui-border);text-align:left;vertical-align:middle;padding:11px 13px}.ui-data-table th{color:var(--ui-muted);background:var(--ui-canvas);white-space:nowrap;font-size:12px;font-weight:700}.ui-data-table tbody tr:last-child td{border-bottom:0}.ui-data-table tbody tr[aria-selected=true]{background:var(--ui-primary-soft)}.ui-data-table tbody tr[data-disabled]{opacity:.58}.ui-data-table [data-align=center]{text-align:center}.ui-data-table [data-align=end]{text-align:right}.ui-table-sort{color:inherit;font:inherit;font-weight:inherit;cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:6px;margin:-3px;padding:3px;display:inline-flex}.ui-table-sort:hover{color:var(--ui-text);background:color-mix(in srgb,var(--ui-text) 5%,transparent)}.ui-table-selection{width:44px;text-align:center!important}.ui-table-selection input{width:17px;height:17px;accent-color:var(--ui-primary)}.ui-badge{vertical-align:baseline;white-space:nowrap;border:1px solid #0000;border-radius:999px;flex:none;justify-content:center;align-items:center;max-width:100%;font-weight:700;line-height:1;display:inline-flex}.ui-badge-small{min-height:20px;padding:3px 7px;font-size:11px}.ui-badge-medium{min-height:24px;padding:4px 9px;font-size:12px}.ui-badge-neutral{border-color:var(--ui-border);color:var(--ui-text);background:var(--ui-canvas)}.ui-badge-info{border-color:color-mix(in srgb,var(--ui-primary) 24%,var(--ui-border));color:var(--ui-primary-hover);background:var(--ui-primary-soft)}.ui-badge-success{border-color:color-mix(in srgb,var(--ui-success) 28%,var(--ui-border));color:var(--ui-success);background:var(--ui-success-soft)}.ui-badge-warning{border-color:color-mix(in srgb,var(--ui-warning) 30%,var(--ui-border));color:color-mix(in srgb,var(--ui-warning) 80%,var(--ui-text));background:var(--ui-warning-soft)}.ui-badge-danger{border-color:color-mix(in srgb,var(--ui-danger) 30%,var(--ui-border));color:var(--ui-danger);background:var(--ui-danger-soft)}.ui-metric-card{border:1px solid var(--ui-border);border-radius:var(--ui-radius-large);min-width:0;min-height:132px;color:var(--ui-text);background:var(--ui-surface);box-shadow:0 8px 24px color-mix(in srgb,var(--ui-text) 6%,transparent);flex-direction:column;gap:9px;padding:18px;display:flex}.ui-metric-card-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.ui-metric-card-label{min-width:0;color:color-mix(in srgb,var(--ui-muted) 90%,var(--ui-text));overflow-wrap:anywhere;font-size:12px;font-weight:700;line-height:1.45}.ui-metric-card-icon{border-radius:var(--ui-radius);width:34px;height:34px;color:var(--ui-muted);background:var(--ui-canvas);flex:none;place-items:center;display:grid}.ui-metric-card-icon>svg{width:18px;height:18px}.ui-metric-card-value{letter-spacing:-.025em;overflow-wrap:anywhere;font-size:clamp(1.5rem,3vw,2rem);font-weight:750;line-height:1.08}.ui-metric-card-description{color:color-mix(in srgb,var(--ui-muted) 90%,var(--ui-text));overflow-wrap:anywhere;margin-top:auto;font-size:12px;line-height:1.5}.ui-metric-card-info .ui-metric-card-icon{color:var(--ui-primary);background:var(--ui-primary-soft)}.ui-metric-card-success .ui-metric-card-icon{color:var(--ui-success);background:var(--ui-success-soft)}.ui-metric-card-warning .ui-metric-card-icon{color:var(--ui-warning);background:var(--ui-warning-soft)}.ui-metric-card-danger .ui-metric-card-icon{color:var(--ui-danger);background:var(--ui-danger-soft)}.ui-page-header{min-width:0;color:var(--ui-text);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.ui-page-header-copy{flex:24rem;gap:8px;min-width:0;display:grid}.ui-page-header-eyebrow{color:var(--ui-primary);letter-spacing:.14em;text-transform:uppercase;font-size:12px;font-weight:800}.ui-page-header-title{letter-spacing:-.04em;overflow-wrap:anywhere;margin:0;font-size:clamp(1.75rem,4vw,3rem);line-height:1.08}.ui-page-header-description{max-width:48rem;color:color-mix(in srgb,var(--ui-muted) 90%,var(--ui-text));overflow-wrap:anywhere;font-size:14px;line-height:1.65}.ui-page-header-actions{flex-wrap:wrap;flex:0 auto;justify-content:flex-end;align-items:center;gap:10px;max-width:100%;display:flex}.ui-section-card{border:1px solid var(--ui-border);border-radius:var(--ui-radius-large);min-width:0;color:var(--ui-text);background:var(--ui-surface);box-shadow:var(--ui-shadow);overflow:hidden}.ui-section-card-header{border-bottom:1px solid var(--ui-border);justify-content:space-between;align-items:flex-start;gap:20px;padding:20px 24px;display:flex}.ui-section-card-copy{gap:5px;min-width:0;display:grid}.ui-section-card-title{overflow-wrap:anywhere;margin:0;font-size:17px;line-height:1.35}.ui-section-card-description{color:color-mix(in srgb,var(--ui-muted) 90%,var(--ui-text));overflow-wrap:anywhere;font-size:12px;line-height:1.55}.ui-section-card-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:8px;display:flex}.ui-section-card-body{min-width:0}.ui-popover,.ui-select-content,.ui-combobox-popover,.ui-dropdown-popover{overscroll-behavior:contain;max-width:calc(100vw - 24px)}.ui-popover,.ui-combobox-popover,.ui-dropdown-popover{max-height:min(320px,100dvh - 24px);overflow:auto}.ui-select-content{max-height:min(320px,var(--radix-select-content-available-height));overflow:hidden}.ui-select-viewport{overscroll-behavior:contain}.ui-async-search-list{max-height:min(320px,calc(100dvh - 180px - env(safe-area-inset-bottom)));overscroll-behavior:contain;scrollbar-gutter:stable}.ui-combobox .spin{animation:.8s linear infinite ui-spin}.ui-toast-viewport{overscroll-behavior:contain;max-height:calc(100dvh - 36px);overflow-y:auto}.ui-toast{min-width:0}.ui-toast-content{overflow-wrap:anywhere}.ui-data-table-wrap[data-mobile-layout=cards] .ui-empty-state{border-top:1px solid var(--ui-border)}@container (width<=760px){.ui-data-table-wrap[data-mobile-layout=cards] .ui-data-table,.ui-data-table-wrap[data-mobile-layout=cards] tbody,.ui-data-table-wrap[data-mobile-layout=cards] caption{display:block}.ui-data-table-wrap[data-mobile-layout=cards] thead{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.ui-data-table-wrap[data-mobile-layout=cards] tbody tr{border-bottom:1px solid var(--ui-border);padding:10px 12px;display:grid}.ui-data-table-wrap[data-mobile-layout=cards] tbody tr:last-child{border-bottom:0}.ui-data-table-wrap[data-mobile-layout=cards] td{white-space:normal;overflow-wrap:anywhere;border:0;grid-template-columns:minmax(84px,auto) minmax(0,1fr);gap:10px;min-width:0;padding:7px 2px;display:grid}.ui-data-table-wrap[data-mobile-layout=cards] td>*{min-width:0;max-width:100%}.ui-data-table-wrap[data-mobile-layout=cards] td[data-align=end]{text-align:left}.ui-data-table-wrap[data-mobile-layout=cards] td:before{content:attr(data-label);color:var(--ui-muted);text-align:left;font-size:12px;font-weight:700}.ui-data-table-wrap[data-mobile-layout=cards] td.ui-table-selection{width:auto;min-height:var(--ui-touch-height);align-items:center;display:flex;text-align:left!important}.ui-data-table-wrap[data-mobile-layout=cards] td.ui-table-selection:before{content:none}}@keyframes ui-toast-enter{0%{opacity:0;transform:translate(12px)}}.ui-tree-select,.ui-tree-select-root{position:relative}.ui-tree-select-control{display:flex;position:relative}.ui-tree-select-input{padding-right:72px}.ui-tree-select-clear,.ui-tree-select-trigger{height:36px;color:var(--ui-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;display:grid;position:absolute;top:2px}.ui-tree-select-clear{width:32px;right:38px}.ui-tree-select-trigger{width:36px;right:2px}.ui-tree-select-trigger:disabled{cursor:not-allowed;opacity:.55}.ui-tree-select-clear:hover,.ui-tree-select-trigger:hover{color:var(--ui-primary);background:var(--ui-primary-soft)}.ui-tree-select-clear:focus-visible,.ui-tree-select-trigger:focus-visible{outline:3px solid var(--ui-focus);outline-offset:1px}.ui-tree-select-popover{z-index:1100;box-sizing:border-box;overscroll-behavior:contain;border:1px solid var(--ui-border);border-radius:var(--ui-radius-large);width:100%;min-width:min(260px,100vw - 24px);max-height:min(360px,100dvh - 24px);color:var(--ui-text);background:var(--ui-surface);box-shadow:var(--ui-shadow);outline:0;position:absolute;top:calc(100% + 6px);left:0;overflow:hidden auto}.ui-tree-select-tree{padding:5px}.ui-tree-select-branch [role=group]{border-left:1px solid var(--ui-border);margin-left:16px;padding-left:7px}.ui-tree-select-item{cursor:pointer;border-radius:7px;outline:0;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:4px;min-height:36px;padding:3px 8px 3px 2px;display:grid}.ui-tree-select-item.active{color:var(--ui-primary-hover);background:var(--ui-primary-soft)}.ui-tree-select-item.selected{font-weight:700}.ui-tree-select-item.disabled{opacity:.48;cursor:not-allowed}.ui-tree-select-toggle{width:28px;color:var(--ui-muted);cursor:pointer;background:0 0;border:0;border-radius:5px;align-self:stretch;place-items:center;display:grid}.ui-tree-select-toggle:hover{background:color-mix(in srgb,var(--ui-primary-soft) 70%,var(--ui-surface))}.ui-tree-select-spacer{width:28px}.ui-tree-select-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ui-tree-select-status{color:var(--ui-muted);text-align:center;padding:14px;font-size:12px}.ui-tree-select-error{color:var(--ui-danger)}.ui-structured-address{box-sizing:border-box;border:1px solid var(--ui-border);border-radius:var(--ui-radius-large);min-width:0;max-width:100%;color:var(--ui-text);gap:10px;padding:12px;display:grid;container-type:inline-size}.ui-structured-address legend{color:var(--ui-muted);padding:0 5px;font-size:12px;font-weight:750}.ui-required-mark{color:var(--ui-danger);margin-right:3px}.ui-structured-address-annotation{margin-left:7px;font-size:11px;font-weight:500}.ui-structured-address label{min-width:0;color:var(--ui-muted);gap:6px;font-size:12px;font-weight:650;display:grid}.ui-structured-address-mode,.ui-structured-address-full,.ui-structured-address-region,.ui-structured-address-detail,.ui-structured-address-version{grid-column:1/-1}.ui-structured-address-region{min-width:0;color:var(--ui-muted);gap:6px;font-size:12px;font-weight:650;display:grid;position:relative}.ui-structured-address-region-control{position:relative}.ui-structured-address-region-control .ui-input{text-overflow:ellipsis;padding-right:36px}.ui-structured-address-region-control>svg{pointer-events:none;position:absolute;top:50%;right:11px;transform:translateY(-50%)}.ui-structured-address-popover{z-index:1100;box-sizing:border-box;border:1px solid var(--ui-border);border-radius:var(--ui-radius-large);background:var(--ui-surface);width:min(680px,100vw - 24px);max-width:100%;max-height:min(340px,100dvh - 24px);box-shadow:var(--ui-shadow);position:absolute;top:calc(100% + 6px);left:0;overflow:auto}.ui-structured-address-columns{grid-template-columns:repeat(var(--address-columns,1),minmax(0,1fr));display:grid}.ui-structured-address-columns[data-columns="2"]{--address-columns:2}.ui-structured-address-columns[data-columns="3"]{--address-columns:3}.ui-structured-address-columns[data-columns="4"]{--address-columns:4}.ui-structured-address-column{border-right:1px solid var(--ui-border);min-width:0;max-height:280px;padding:5px;overflow:auto}.ui-structured-address-column:last-child{border-right:0}.ui-structured-address-column button,.ui-structured-address-results button{width:100%;min-height:38px;color:var(--ui-text);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;justify-content:space-between;align-items:center;gap:6px;padding:7px 9px;display:flex}.ui-structured-address-column button:hover,.ui-structured-address-column button:focus-visible,.ui-structured-address-column button[aria-selected=true],.ui-structured-address-results button:hover,.ui-structured-address-results button:focus-visible{color:var(--ui-primary-hover);background:var(--ui-primary-soft);outline:0}.ui-structured-address-column button:disabled,.ui-structured-address-results button:disabled{opacity:.48;cursor:not-allowed}.ui-structured-address-results{max-height:280px;padding:5px;overflow:auto}.ui-structured-address-empty{color:var(--ui-muted);text-align:center;padding:16px;font-size:12px}.ui-structured-address-version{color:var(--ui-muted);font-size:11px}.ui-file-dropzone{box-sizing:border-box;border:1.5px dashed var(--ui-border-strong);border-radius:var(--ui-radius-large);min-width:0;color:var(--ui-primary);background:var(--ui-canvas);text-align:center;cursor:pointer;transition:border-color var(--ui-motion-fast) var(--ui-ease-standard),background-color var(--ui-motion-fast) var(--ui-ease-standard);place-content:center;justify-items:center;gap:7px;padding:18px;display:grid}.ui-file-dropzone:hover,.ui-file-dropzone.dragging{border-color:var(--ui-primary);background:var(--ui-primary-soft)}.ui-file-dropzone:focus-visible{outline:3px solid var(--ui-focus);outline-offset:2px}.ui-file-dropzone[aria-disabled=true]{cursor:not-allowed;opacity:.58}.ui-file-dropzone-input{clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.ui-file-dropzone-action{min-height:var(--ui-control-height);border:1px solid var(--ui-border-strong);border-radius:var(--ui-radius);color:var(--ui-primary-hover);background:var(--ui-surface);justify-content:center;align-items:center;padding:0 14px;font-size:13px;font-weight:700;display:inline-flex}@container (width>=520px){.ui-structured-address{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.ui-structured-address-mode,.ui-structured-address-detail{grid-column:auto}}@media (pointer:coarse){.ui-button-default,.ui-modal-close,.ui-tabs button,.ui-pagination-pages button,.ui-date-input input,.ui-date-trigger,.ui-date-calendar button,.ui-input,.ui-input-affix,.ui-select,.ui-select-trigger,.ui-select-item,.ui-combobox-item,.ui-dropdown-item,.ui-async-search-option,.ui-tree-select-item,.ui-structured-address-column button,.ui-structured-address-results button{min-height:var(--ui-touch-height)}.ui-input-affix>.ui-input{min-height:0}.ui-button-default.ui-button-icon,.ui-modal-close{width:var(--ui-touch-height);min-width:var(--ui-touch-height)}.ui-tree-select-clear,.ui-tree-select-trigger{height:40px}.ui-tree-select-clear{right:42px}.ui-tree-select-trigger{width:40px}.ui-checkbox input,.ui-table-selection input{width:22px;height:22px}}@media (width<=600px){.ui-tree-select-popover{width:100%;min-width:0;max-width:none;max-height:min(70dvh,calc(100dvh - max(48px,env(safe-area-inset-top))));padding:8px max(8px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(8px,env(safe-area-inset-left));border-radius:var(--ui-radius-large) var(--ui-radius-large) 0 0;border-width:1px 0 0;position:fixed;inset:auto 0 0;box-shadow:0 -18px 48px #191f3738}.ui-structured-address-popover{width:100%;max-width:none;max-height:min(72dvh,calc(100dvh - max(48px,env(safe-area-inset-top))));padding-bottom:env(safe-area-inset-bottom);border-radius:var(--ui-radius-large) var(--ui-radius-large) 0 0;border-width:1px 0 0;position:fixed;inset:auto 0 0;box-shadow:0 -18px 48px #191f3738}.ui-structured-address-columns[data-columns="3"],.ui-structured-address-columns[data-columns="4"]{grid-template-columns:repeat(3,minmax(0,1fr))}.ui-structured-address-column button{padding-inline:6px;font-size:12px}}@media (width<=600px),(width<=900px) and (height<=600px){.ui-dropdown-item{min-height:var(--ui-touch-height)}.ui-popover,.ui-combobox-popover,.ui-dropdown-popover{max-height:calc(100dvh - max(24px,env(safe-area-inset-top)) - max(24px,env(safe-area-inset-bottom)))}.ui-date-calendar{width:min(540px,calc(100vw - max(24px,env(safe-area-inset-left)) - max(24px,env(safe-area-inset-right))));max-height:calc(100dvh - max(12px,env(safe-area-inset-top)) - max(12px,env(safe-area-inset-bottom)));overscroll-behavior:contain;overflow:auto}}@media (width<=600px){.ui-modal-backdrop{padding:0}.ui-modal{border:0;border-radius:0;width:100%;height:100dvh;max-height:100dvh}.ui-modal-header{padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 16px max(16px,env(safe-area-inset-left))}.ui-modal-footer{padding-bottom:env(safe-area-inset-bottom)}.ui-alert{grid-template-columns:auto minmax(0,1fr) auto}.ui-alert-action{grid-column:2;justify-self:start}.ui-alert-close{grid-area:1/3}.ui-popover{max-width:calc(100vw - max(24px,env(safe-area-inset-left)) - max(24px,env(safe-area-inset-right)))}[data-radix-popper-content-wrapper]:has(>.ui-select-content){width:100%!important;min-width:0!important;position:fixed!important;inset:auto 0 0!important;transform:none!important}.ui-select-content{width:100%;min-width:0;max-width:none;max-height:min(70dvh,calc(100dvh - max(48px,env(safe-area-inset-top))));padding-bottom:env(safe-area-inset-bottom);border-radius:var(--ui-radius-large) var(--ui-radius-large) 0 0;transform-origin:bottom;border-width:1px 0 0;box-shadow:0 -18px 48px #191f3738}.ui-select-viewport{padding:10px max(8px,env(safe-area-inset-right)) 10px max(8px,env(safe-area-inset-left))}.ui-toast-viewport{top:auto;right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));left:max(12px,env(safe-area-inset-left));width:auto;max-height:calc(100dvh - max(24px,env(safe-area-inset-top)) - max(24px,env(safe-area-inset-bottom)))}.ui-toast{grid-template-columns:auto minmax(0,1fr) auto}.ui-toast>.ui-button{grid-column:2;justify-self:start}.ui-toast-close{grid-area:1/3}.ui-pagination{flex-wrap:wrap;align-items:flex-start}.ui-pagination-summary{width:100%}.ui-pagination-size{margin-left:auto}.ui-async-search-control{grid-template-columns:1fr}.ui-async-search-control>.ui-button{width:100%}.ui-page-header{flex-direction:column;justify-content:flex-start;align-items:stretch}.ui-page-header-copy{flex:none}.ui-page-header-actions{justify-content:flex-start;width:100%}.ui-page-header-actions>.ui-button{flex:140px}.ui-section-card-header{flex-direction:column;padding:17px 18px}.ui-section-card-actions{justify-content:flex-start;width:100%}.ui-section-card-actions>.ui-button{flex:140px}.ui-metric-card{min-height:120px;padding:16px}}@media (width>=601px) and (height<=600px){.ui-modal-backdrop{padding:12px}.ui-modal{max-height:calc(100dvh - 24px)}.ui-modal-header{padding:12px 16px}}@media (width<=360px){.ui-pagination{gap:8px;padding-inline:10px}.ui-pagination-pages{gap:4px}.ui-pagination-pages .ui-page-number,.ui-pagination-pages .ui-page-ellipsis{display:none}.ui-pagination-auto-compact{display:inline}.ui-pagination-size{margin-left:0}.ui-pagination-size span:first-child,.ui-pagination-size>span:last-child{display:none}}@media (hover:none){.ui-button:hover:not(:disabled,[aria-disabled=true]){transform:none}}@media (prefers-reduced-motion:reduce){.ui-button,.ui-toggle-track,.ui-toggle-track i,.ui-explainable-reason{transition:none}.ui-button-spinner,.ui-async-state .spin,.ui-alert,.ui-modal-backdrop,.ui-modal,.ui-date-calendar,.ui-skeleton,.ui-tooltip,.ui-popover,.ui-select-content,.ui-combobox-popover,.ui-dropdown-popover,.ui-toast{animation:none}}.ui-overlay-container{display:contents}.ui-date-calendar[data-side],.ui-tree-select-popover[data-side],.ui-structured-address-popover[data-side]{box-sizing:border-box;max-height:var(--radix-popover-content-available-height);position:relative;inset:auto;overflow:auto}.ui-tree-select-popover[data-side]{width:var(--radix-popover-trigger-width);min-width:min(260px,100vw - 24px);max-width:calc(100vw - 24px)}.ui-structured-address-popover[data-side]{width:min(680px,100vw - 24px);max-width:calc(100vw - 24px)}.ui-date-calendar header{justify-content:space-between;align-items:center;display:flex}.ui-date-calendar h2{margin:0;font-size:14px}.ui-date-month-jump{color:var(--ui-muted);justify-content:space-between;align-items:center;gap:8px;padding:4px 8px;font-size:12px;display:flex}.ui-date-month-jump input{border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface);max-width:180px;min-height:32px;color:var(--ui-text);font:inherit}.ui-aria-calendar-grid{border-collapse:separate;border-spacing:2px;table-layout:fixed;width:100%}.ui-aria-calendar-grid th{height:28px;color:var(--ui-muted);font-size:12px}.ui-aria-calendar-grid td{text-align:center;padding:0}.ui-aria-calendar-grid .react-aria-CalendarCell{border-radius:var(--ui-radius);cursor:pointer;outline:0;place-items:center;min-height:36px;font-size:13px;display:grid}.ui-aria-calendar-grid .react-aria-CalendarCell[data-selected]{background:var(--ui-primary);color:#fff}.ui-aria-calendar-grid .react-aria-CalendarCell[data-focus-visible]{outline:3px solid var(--ui-focus)}.ui-aria-calendar-grid .react-aria-CalendarCell[data-outside-month]{color:var(--ui-muted)}.ui-aria-calendar-grid .react-aria-CalendarCell[data-disabled],.ui-aria-calendar-grid .react-aria-CalendarCell[data-unavailable]{opacity:.4;cursor:not-allowed;text-decoration:line-through}.ui-toast-viewport{margin:0;list-style:none}.ui-table-selection-summary{background:var(--ui-primary-soft);flex-wrap:wrap;align-items:center;gap:12px;padding:10px 12px;font-size:13px;display:flex}.ui-multi-select{gap:6px;min-width:0;display:grid}.ui-multi-selection{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.ui-multi-selection .react-aria-TagList{flex-wrap:wrap;gap:6px;display:flex}.ui-selection-tag{border-radius:var(--ui-radius);background:var(--ui-primary-soft);color:var(--ui-primary-hover);align-items:center;gap:6px;padding:3px 8px;font-size:13px;display:inline-flex}.ui-selection-tag[data-focused]{outline:3px solid var(--ui-focus)}.ui-selection-tag button,.ui-selection-clear{color:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;min-width:28px;min-height:28px}.ui-selection-tag button:disabled,.ui-selection-clear:disabled{opacity:.5;cursor:not-allowed}@media (pointer:coarse){.ui-aria-calendar-grid .react-aria-CalendarCell,.ui-date-month-jump input,.ui-selection-tag button{min-height:var(--ui-touch-height)}}.ui-file-preparation-dialog{width:min(480px,100vw - 32px);height:auto;min-height:0;max-height:calc(100dvh - 32px)}.ui-file-preparation-name{overflow-wrap:anywhere;font-weight:600}.ui-sortable-list{outline:0;gap:12px;display:grid}.ui-sortable-item{outline:0;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:8px;min-width:0;display:grid;position:relative}.ui-sortable-item[data-focus-visible]{outline:3px solid var(--ui-focus);outline-offset:2px;border-radius:var(--ui-radius-large)}.ui-sortable-item[data-dragging]{opacity:.55}.ui-sortable-content{min-width:0}.ui-sortable-handle{border:1px solid var(--ui-border);border-radius:var(--ui-radius);width:32px;height:44px;color:var(--ui-muted);background:var(--ui-surface);cursor:grab;place-items:center;margin-top:8px;padding:0;display:grid}.ui-sortable-handle:active{cursor:grabbing}.ui-sortable-handle:focus-visible{outline:3px solid var(--ui-focus);outline-offset:2px}.react-aria-DropIndicator[data-drop-target]{background:var(--ui-primary);border-radius:999px;height:3px}@media (pointer:coarse){.ui-sortable-handle{width:44px;min-width:44px;height:44px}}.ui-sortable-content:only-child{grid-column:1/-1}.ui-cascader{box-sizing:border-box;width:100%;min-width:0;min-height:var(--ui-control-height);border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface);color:var(--ui-text);font:inherit;cursor:pointer;align-items:center;gap:6px;padding:5px 11px;display:flex;position:relative}.ui-cascader:focus-within{border-color:var(--ui-primary);outline:3px solid var(--ui-focus)}.ui-cascader:has([aria-invalid=true]){border-color:var(--ui-danger)}.ui-cascader-disabled{opacity:.55;cursor:not-allowed}.ui-cascader-content{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;line-height:26px;position:relative;overflow:hidden}.ui-cascader-input{box-sizing:border-box;font:inherit;color:inherit;background:0 0;border:0;outline:0;min-width:0;height:26px;margin:0;padding:0}.ui-cascader-single .ui-cascader-input{width:100%;position:absolute;inset:0}.ui-cascader-single .ui-cascader-content-has-search-value{color:#0000}.ui-cascader-single .ui-cascader-content-has-search-value .ui-cascader-input{color:var(--ui-text);background:var(--ui-surface)}.ui-cascader-content:empty{min-height:26px}.ui-cascader-placeholder{color:var(--ui-muted);pointer-events:none}.ui-cascader-suffix{color:var(--ui-muted);pointer-events:none;align-items:center;display:flex}.ui-cascader-clear,.ui-cascader-tag button{color:var(--ui-muted);cursor:pointer;background:0 0;border:0;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:4px;display:inline-flex}.ui-cascader-clear:focus-visible,.ui-cascader-tag button:focus-visible{outline:2px solid var(--ui-primary)}.ui-cascader-multiple .ui-cascader-content{white-space:normal;flex-wrap:wrap;align-items:center;gap:4px;display:flex;overflow:visible}.ui-cascader-content-item,.ui-cascader-content-item-suffix{align-items:center;min-width:0;max-width:100%;display:inline-flex}.ui-cascader-multiple .ui-cascader-input{width:var(--select-input-width,20px);min-width:20px;max-width:100%}.ui-cascader-tag{background:var(--ui-primary-soft);border-radius:4px;align-items:center;gap:3px;max-width:100%;padding:0 4px;font-size:13px;display:inline-flex}.ui-cascader-tag>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ui-cascader-dropdown{box-sizing:border-box;z-index:1400;background:var(--ui-surface);max-width:calc(100vw - 24px);color:var(--ui-text);border:1px solid var(--ui-border);border-radius:var(--ui-radius);box-shadow:var(--ui-shadow);font:inherit;padding:4px;position:absolute}.ui-cascader-dropdown-hidden{display:none}.ui-cascader-menus{overscroll-behavior:contain;max-width:100%;display:flex;overflow-x:auto}.ui-cascader-menu{box-sizing:border-box;overscroll-behavior:contain;border-right:1px solid var(--ui-border);flex:1 0 150px;min-width:0;max-height:min(320px,50dvh);margin:0;padding:0 4px;list-style:none;overflow-y:auto}.ui-cascader-menu:last-child{border-right:0}.ui-cascader-menu-item{box-sizing:border-box;cursor:pointer;border-radius:4px;align-items:center;gap:8px;min-height:36px;padding:6px 8px;display:flex}.ui-cascader-menu-item-content{overflow-wrap:anywhere;flex:1;min-width:0}.ui-cascader-menu-item:hover,.ui-cascader-menu-item-active{background:var(--ui-primary-soft);color:var(--ui-primary-hover)}.ui-cascader-menu-item[aria-checked=true]{font-weight:600}.ui-cascader-menu-item-disabled{opacity:.45;cursor:not-allowed}.ui-cascader-menu-item-expand-icon,.ui-cascader-menu-item-loading-icon{flex:none;display:flex}.ui-cascader-checkbox{box-sizing:border-box;border:1px solid var(--ui-border-strong);border-radius:3px;flex:none;place-items:center;width:16px;height:16px;display:inline-grid}.ui-cascader-checkbox-checked,.ui-cascader-checkbox-indeterminate{background:var(--ui-primary);border-color:var(--ui-primary);color:#fff}.ui-cascader-checkbox-checked:after{content:"";border:2px solid;border-width:0 2px 2px 0;width:4px;height:8px;margin-top:-2px;transform:rotate(45deg)}.ui-cascader-checkbox-indeterminate:after{content:"";background:currentColor;width:8px;height:2px}@media (pointer:coarse){.ui-cascader,.ui-cascader-menu-item{min-height:var(--ui-touch-height)}.ui-cascader-clear,.ui-cascader-tag button{min-width:32px;min-height:32px}}@media (width<=600px){.ui-cascader-menu{flex-basis:125px}.ui-cascader-dropdown{max-width:none;inset:auto 12px max(12px,env(safe-area-inset-bottom)) 12px!important;width:auto!important;position:fixed!important;transform:none!important}.ui-cascader-menu{max-height:45dvh}}.ui-structured-address-region{font:inherit;color:inherit}.ui-data-table-scroll-frame{min-width:0;max-width:100%;position:relative}.ui-data-table-horizontal-scroll{z-index:8;border-top:1px solid var(--ui-border);background:var(--ui-surface);scrollbar-color:var(--ui-border-strong) var(--ui-canvas);width:100%;height:18px;display:none;position:sticky;bottom:0;overflow:auto hidden}.ui-data-table-horizontal-scroll.is-visible{display:block}.ui-data-table-horizontal-scroll>div{height:1px}.ui-data-table-horizontal-scroll::-webkit-scrollbar{height:14px}.ui-data-table-horizontal-scroll::-webkit-scrollbar-track{background:var(--ui-canvas);border-radius:999px}.ui-data-table-horizontal-scroll::-webkit-scrollbar-thumb{border:3px solid var(--ui-canvas);background:var(--ui-border-strong);border-radius:999px}.ui-document-viewer{min-width:0;height:100%;min-height:360px;color:var(--ui-text,#253045);background:var(--ui-surface,#fff);flex-direction:column;display:flex;overflow:hidden}.ui-document-viewer.ui-viewer-fullscreen{z-index:10000;width:100vw;height:100dvh;position:fixed;inset:0}.ui-viewer-toolbar{border-bottom:1px solid var(--ui-border,#d9dee7);align-items:center;gap:8px;min-height:52px;padding:6px 12px;display:flex}.ui-viewer-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--ui-muted,#697386);flex:1;font-size:13px;font-weight:600;overflow:hidden}.ui-viewer-tools{flex:none;justify-content:flex-end;align-items:center;gap:2px;margin-left:auto;display:flex}.ui-viewer-tools>span{text-align:center;font-variant-numeric:tabular-nums;min-width:46px;color:var(--ui-muted,#697386);font-size:12px}.ui-viewer-tools>.ui-viewer-tool{border-radius:6px;width:34px;height:34px;min-height:34px;padding:0}.ui-viewer-tools>.ui-viewer-tool-separated{margin-left:6px}@media (pointer:coarse){.ui-viewer-tools>.ui-viewer-tool{width:44px;height:44px;min-height:44px}}.ui-viewer-footer{border-top:1px solid var(--ui-border,#d9dee7);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;padding:4px;display:flex}.ui-pdf-workspace{background:var(--ui-surface-muted,#edf0f4);flex:1;grid-template-columns:156px minmax(0,1fr);min-width:0;min-height:0;display:grid;position:relative;overflow:hidden}.ui-pdf-workspace.ui-rail-collapsed{grid-template-columns:minmax(0,1fr)}.ui-viewer-rail{border-right:1px solid var(--ui-border,#d9dee7);min-width:0;min-height:0;padding:8px;overflow:auto}.ui-viewer-rail[hidden]{display:none}.ui-viewer-stage{flex-direction:column;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.ui-pdf-workspace>.ui-viewer-rail-toggle{z-index:5;position:absolute;top:8px;left:164px}.ui-pdf-workspace.ui-rail-collapsed>.ui-viewer-rail-toggle{left:8px}.ui-thumbnail-rail{flex-direction:column;gap:8px;height:100%;min-height:0;display:flex}.ui-thumbnail-list{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex;overflow:hidden auto}.ui-thumbnail-list>.ui-page-thumbnail{white-space:normal;overflow-wrap:anywhere;border:2px solid #0000;flex:none;grid-template-columns:minmax(0,1fr);gap:5px;width:100%;height:auto;min-height:0;padding:6px;display:grid}.ui-thumbnail-list>.ui-page-thumbnail[aria-current=page]{border-color:var(--ui-primary,#5b63a5);background:var(--ui-primary-soft,#eef0fa)}.ui-page-thumbnail canvas,.ui-page-thumbnail img{width:100%;height:auto;display:block}.ui-thumbnail-placeholder{aspect-ratio:1/1.414;background:var(--ui-surface,#fff);width:100%;display:block}.ui-thumbnail-pager{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;display:grid}.ui-thumbnail-pager>span{text-align:center;grid-column:1/-1;font-size:12px}.ui-thumbnail-pager>.ui-button{padding-inline:4px;font-size:12px}.ui-document-viewport{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.ui-continuous-scroll,.ui-image-scroll,.ui-single-page{overscroll-behavior:contain;flex:1;min-width:0;min-height:0;padding:54px 16px 24px;overflow:auto}.ui-continuous-page{flex:none;margin:0 auto 20px}.ui-continuous-page>span{text-align:center;margin-bottom:8px;font-size:12px;display:block}.ui-page-placeholder,.ui-pdf-page{background:#fff;width:100%;position:relative}.ui-pdf-page>canvas{max-width:100%;display:block;width:100%!important;height:auto!important}.ui-pdf-page>[role=alert]{place-items:center;display:grid;position:absolute;inset:0}.ui-image-frame{flex:none;margin-inline:auto;position:relative}.ui-image-frame img{max-width:none;height:auto;position:absolute;top:50%;left:50%}@media (width<=900px){.ui-pdf-workspace{grid-template-columns:128px minmax(0,1fr)}.ui-pdf-workspace>.ui-viewer-rail-toggle{left:136px}.ui-continuous-scroll,.ui-image-scroll,.ui-single-page{padding-inline:8px}.ui-viewer-title{flex-basis:100%}}.ui-document-viewer-v2{box-sizing:border-box;border:1px solid var(--ui-border);border-radius:var(--ui-radius-large);width:100%;min-width:0;height:100%;min-height:360px;color:var(--ui-text);background:var(--ui-canvas);box-shadow:0 8px 24px color-mix(in srgb, var(--ui-text) 6%, transparent);flex-direction:column;display:flex;overflow:hidden;container-type:inline-size}.ui-document-viewer-v2-engine{flex:1;min-height:0}.ui-document-viewer-v2>.ui-viewer-toolbar,.ui-document-viewer-v2>.ui-viewer-footer{flex-wrap:wrap;flex:none}.ui-document-viewer-v2-compat{border:1px solid var(--ui-border);border-radius:var(--ui-radius-large)}.ui-document-viewer-v2-compat .ui-viewer-toolbar,.ui-document-viewer-v2-headless .ui-viewer-toolbar{flex-wrap:wrap}.ui-v2-search{border-bottom:1px solid var(--ui-border);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 10px;display:flex}.ui-v2-search>.ui-input{flex:1;min-width:100px}.ui-v2-native-page{background:#fff;flex:none}.ui-v2-native-page img{display:block}.ui-v2-thumbnail{grid-template-rows:minmax(0,1fr) auto;justify-items:center;padding:0;overflow:hidden}.ui-v2-thumbnail-image{object-fit:contain;max-width:100%;max-height:100%;display:block}.ui-v2-native-single{flex:1;min-height:0;padding:52px 12px 20px;overflow:auto}.ui-v2-native-single>.ui-v2-native-page{margin-inline:auto}.ui-document-viewer-v2-engine,.ui-document-viewer-v2-engine>embedpdf-container{width:100%;min-width:0;height:100%;display:block}@media (width<=600px){.ui-document-viewer-v2{border-left:0;border-right:0;border-radius:0;min-height:300px}}
|
|
2
|
+
/*$vite$:1*/
|