@kortix/ui 0.14.4 → 0.14.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.
- package/README.md +8 -4
- package/dist/customize/sections/llm-provider/constants.d.ts +0 -1
- package/dist/customize/sections/llm-provider/constants.js +0 -2
- package/dist/customize/sections/llm-provider/models-tab-group.d.ts +1 -1
- package/dist/customize/sections/llm-provider/models-tab-group.js +7 -4
- package/dist/customize/sections/llm-provider/models-tab-row.d.ts +2 -18
- package/dist/customize/sections/llm-provider/models-tab-row.js +6 -30
- package/dist/customize/sections/llm-provider/models-tab.d.ts +0 -1
- package/dist/customize/sections/llm-provider/models-tab.js +1 -10
- package/dist/customize/sections/llm-provider/use-connected-providers.js +2 -2
- package/dist/customize/sections/llm-provider/utils.d.ts +1 -1
- package/dist/customize/sections/llm-provider/utils.js +7 -14
- package/dist/customize/sections/view/gateway/_shared.js +1 -2
- package/dist/customize/sections/view/gateway/gateway-routing.js +3 -2
- package/dist/customize/sections/view/sandbox-provider-coverage.d.ts +3 -18
- package/dist/customize/sections/view/sandbox-provider-coverage.js +7 -27
- package/dist/customize/settings/tabs/sandbox-tab.d.ts +2 -27
- package/dist/customize/settings/tabs/sandbox-tab.js +13 -112
- package/dist/customize/shared/entity/entity-modal.d.ts +5 -1
- package/dist/customize/shared/entity/entity-modal.js +7 -4
- package/dist/customize/skills/remove-skill-button.d.ts +16 -0
- package/dist/customize/skills/remove-skill-button.js +42 -0
- package/dist/customize/skills/skills-page.js +1 -1
- package/dist/customize/triggers/schedule/trigger-list.d.ts +0 -2
- package/dist/customize/triggers/schedule/trigger-list.js +1 -18
- package/dist/customize/triggers/schedule/trigger-tile.d.ts +1 -32
- package/dist/customize/triggers/schedule/trigger-tile.js +1 -16
- package/dist/files/project/hooks/use-change-requests.d.ts +14 -1
- package/dist/files/project/hooks/use-change-requests.js +44 -25
- package/dist/files/renderers/docx/docx-viewer.js +4 -1
- package/dist/files/renderers/pdf/pdf-renderer.d.ts +3 -1
- package/dist/files/renderers/pdf/pdf-renderer.js +2 -2
- package/dist/files/renderers/pdf/pdf-viewer.d.ts +3 -0
- package/dist/files/renderers/pdf/pdf-viewer.js +15 -6
- package/dist/files/viewer/file-content-renderer.d.ts +4 -1
- package/dist/files/viewer/file-content-renderer.js +2 -2
- package/dist/i18n/en.d.ts +26 -35
- package/dist/i18n/en.js +35 -44
- package/dist/index.d.ts +1 -1
- package/dist/internal/hooks/use-notification-center.js +21 -15
- package/dist/internal/hooks/use-review-session-summary.d.ts +6 -0
- package/dist/internal/hooks/use-review-session-summary.js +11 -0
- package/dist/internal/lib/browser-error-noise.d.ts +1 -1
- package/dist/internal/lib/browser-error-noise.js +1 -1
- package/dist/internal/lib/browser-noise/rules/rejections.d.ts +10 -0
- package/dist/internal/lib/browser-noise/rules/rejections.js +27 -1
- package/dist/internal/lib/provider-branding.js +14 -3
- package/dist/internal/lib/trigger-clock.d.ts +42 -0
- package/dist/internal/lib/trigger-clock.js +34 -0
- package/dist/internal/lib/web-notifications.d.ts +6 -0
- package/dist/internal/lib/web-notifications.js +57 -7
- package/dist/internal/notifications/notification-bell.d.ts +13 -0
- package/dist/internal/notifications/notification-bell.js +1 -1
- package/dist/internal/reminders/reminder-filter.d.ts +12 -0
- package/dist/internal/reminders/reminder-filter.js +34 -0
- package/dist/internal/reminders/reminder-format.d.ts +6 -0
- package/dist/internal/reminders/reminder-format.js +20 -2
- package/dist/internal/stores/kortix-computer-store.d.ts +1 -1
- package/dist/internal/stores/session-hover-store.d.ts +20 -5
- package/dist/internal/stores/session-hover-store.js +31 -13
- package/dist/internal/stores/session-panel-memory-store.js +2 -0
- package/dist/primitives/count-badge.d.ts +3 -1
- package/dist/primitives/count-badge.js +3 -3
- package/dist/primitives/glyph-paths-source.js +1 -1
- package/dist/primitives/glyph-paths.generated.js +1 -1
- package/dist/providers/ui-provider.d.ts +57 -0
- package/dist/providers/ui-provider.js +4 -0
- package/dist/session/composer/ComposerCard.d.ts +2 -0
- package/dist/session/composer/ComposerCard.js +5 -1
- package/dist/session/composer/agent-selector.js +12 -5
- package/dist/session/composer/composer-toolbar.js +4 -2
- package/dist/session/composer/composer-underbar.js +3 -1
- package/dist/session/composer/composer.js +34 -5
- package/dist/session/composer/menus/slash-actions.d.ts +22 -2
- package/dist/session/composer/menus/slash-actions.js +20 -0
- package/dist/session/composer/menus/slash-items.js +19 -3
- package/dist/session/header/reminder-parts.d.ts +285 -0
- package/dist/session/header/reminder-parts.js +115 -0
- package/dist/session/header/session-reminders-indicator.d.ts +13 -0
- package/dist/session/header/session-reminders-indicator.js +142 -35
- package/dist/session/models/model-availability.d.ts +23 -0
- package/dist/session/models/model-availability.js +20 -0
- package/dist/session/models/model-grouping.js +1 -4
- package/dist/session/models/model-selector.js +23 -14
- package/dist/session/models/use-model-connection-gate.js +4 -1
- package/dist/session/outcomes/session-outcomes-provider.d.ts +3 -1
- package/dist/session/outcomes/session-outcomes-provider.js +31 -3
- package/dist/session/overrides/session-overrides-composer.d.ts +1 -1
- package/dist/session/overrides/session-overrides-composer.js +5 -1
- package/dist/session/panel/mobile-tool-drawer.js +4 -2
- package/dist/session/panel/open-session-quick-view.js +2 -1
- package/dist/session/panel/panel-fallback.js +8 -4
- package/dist/session/panel/session-panel-provider.d.ts +1 -0
- package/dist/session/panel/session-panel-provider.js +13 -1
- package/dist/session/panel/session-reminders-panel.d.ts +4 -0
- package/dist/session/panel/session-reminders-panel.js +109 -0
- package/dist/session/panel/shared/use-panel-handoffs.d.ts +2 -2
- package/dist/session/panel/shared/use-panel-handoffs.js +5 -1
- package/dist/session/print/session-print-header.d.ts +0 -10
- package/dist/session/print/session-print-header.js +16 -1
- package/dist/session/status/session-surface.js +1 -1
- package/dist/session/thread/optimistic-turn.d.ts +5 -1
- package/dist/session/thread/optimistic-turn.js +8 -6
- package/dist/session/thread/session-chat.d.ts +6 -1
- package/dist/session/thread/session-chat.js +22 -3
- package/dist/session/thread/session-thread.d.ts +10 -1
- package/dist/session/thread/session-thread.js +2 -2
- package/dist/session/turn/burst-step-body.js +4 -0
- package/dist/styles.css +1 -1
- package/dist/workspace/sidebar/project-session-list.js +52 -55
- package/dist/workspace/sidebar/session-brief-hover-card.d.ts +35 -18
- package/dist/workspace/sidebar/session-brief-hover-card.js +114 -37
- package/dist/workspace/sidebar/session-status-mark.d.ts +15 -1
- package/dist/workspace/sidebar/session-status-mark.js +63 -17
- package/package.json +7 -3
- package/skills/kortix-ui/SKILL.md +1 -1
- package/dist/customize/sections/view/sandbox-provider-result.d.ts +0 -47
- package/dist/customize/sections/view/sandbox-provider-result.js +0 -79
|
@@ -45,6 +45,9 @@ const ZOOM_OPTIONS = [10, 25, 50, 75, 100, 125, 150, 175, 200, 400];
|
|
|
45
45
|
const DOCX_PADDING_WARNING_TEXT = 'a style property during rerender';
|
|
46
46
|
const DOCX_THUMBNAIL_FOCUS_RING_CLASS = 'group-focus-visible/docx-thumbnail-sidebar:ring-2 group-focus-visible/docx-thumbnail-sidebar:ring-ring group-focus-visible/docx-thumbnail-sidebar:ring-offset-1 group-focus-visible/docx-thumbnail-sidebar:ring-offset-background';
|
|
47
47
|
const DOCX_THUMBNAIL_PREFETCH_ROWS = 4;
|
|
48
|
+
// Night reader: the inverted page content's default text is black, so the
|
|
49
|
+
// inversion makes it light (see the <style> in the page shell below).
|
|
50
|
+
const NIGHT_READER_TEXT_STYLE = '.docx-night-reader-shell [style*="hue-rotate(180deg)"]{color:#000}';
|
|
48
51
|
function createDocxActivePageStore() {
|
|
49
52
|
let activePage = 1;
|
|
50
53
|
const listeners = new Set();
|
|
@@ -617,5 +620,5 @@ function DocxViewerContent({ className, defaultZoom, effectiveIsDark, fileName,
|
|
|
617
620
|
event.currentTarget.focus({ preventScroll: true });
|
|
618
621
|
},
|
|
619
622
|
tabIndex: 0,
|
|
620
|
-
}, viewportRef: setViewportRef, children: !url && !activeUploadedDocxFile ? (_jsx("div", { className: "grid h-full min-h-96 place-items-center p-6 text-center", children: _jsxs("div", { className: "bg-background max-w-md rounded-lg border p-4 text-sm shadow-xs", children: [_jsx("div", { className: "font-medium", children: tI18nComplete.raw('text53c247b8cf06') }), _jsxs("div", { className: "text-muted-foreground mt-1", children: [tI18nComplete.raw('text46800e585f61'), " ", _jsx("code", { children: "src" }), ' ', tI18nComplete.raw('text37056f2381e2')] }), _jsxs("div", { className: "text-muted-foreground mt-1", children: [tI18nComplete.raw('text1432897a6136'), " ", _jsx("code", { children: ".doc" }), ' ', tI18nComplete.raw('text73a2f5159338')] }), _jsxs(Button, { type: "button", variant: "outline", size: "sm", className: "mt-4", onClick: () => fileInputRef.current?.click(), children: [_jsx(Upload, { className: "size-4" }), tI18nComplete.raw('textdc0451eb46ce')] })] }) })) : loadError ? (_jsx("div", { className: "grid h-full min-h-96 place-items-center p-6 text-center", children: _jsxs("div", { className: "bg-background text-destructive max-w-md rounded-lg border p-4 text-sm shadow-xs", children: [_jsx("div", { className: "font-medium", children: tI18nComplete.raw('text2a5502b48b14') }), _jsx("div", { className: "text-muted-foreground mt-1", children: loadError })] }) })) : isLoadingDocument ? (loadingState) : (_jsx("div", { className: "flex min-h-full w-max min-w-full justify-center", children:
|
|
623
|
+
}, viewportRef: setViewportRef, children: !url && !activeUploadedDocxFile ? (_jsx("div", { className: "grid h-full min-h-96 place-items-center p-6 text-center", children: _jsxs("div", { className: "bg-background max-w-md rounded-lg border p-4 text-sm shadow-xs", children: [_jsx("div", { className: "font-medium", children: tI18nComplete.raw('text53c247b8cf06') }), _jsxs("div", { className: "text-muted-foreground mt-1", children: [tI18nComplete.raw('text46800e585f61'), " ", _jsx("code", { children: "src" }), ' ', tI18nComplete.raw('text37056f2381e2')] }), _jsxs("div", { className: "text-muted-foreground mt-1", children: [tI18nComplete.raw('text1432897a6136'), " ", _jsx("code", { children: ".doc" }), ' ', tI18nComplete.raw('text73a2f5159338')] }), _jsxs(Button, { type: "button", variant: "outline", size: "sm", className: "mt-4", onClick: () => fileInputRef.current?.click(), children: [_jsx(Upload, { className: "size-4" }), tI18nComplete.raw('textdc0451eb46ce')] })] }) })) : loadError ? (_jsx("div", { className: "grid h-full min-h-96 place-items-center p-6 text-center", children: _jsxs("div", { className: "bg-background text-destructive max-w-md rounded-lg border p-4 text-sm shadow-xs", children: [_jsx("div", { className: "font-medium", children: tI18nComplete.raw('text2a5502b48b14') }), _jsx("div", { className: "text-muted-foreground mt-1", children: loadError })] }) })) : isLoadingDocument ? (loadingState) : (_jsx("div", { className: "flex min-h-full w-max min-w-full justify-center", children: _jsxs("div", { className: cn('origin-top', effectiveIsDark && 'docx-night-reader-shell'), style: { zoom: zoomScale / 100 }, children: [effectiveIsDark && (_jsx("style", { children: NIGHT_READER_TEXT_STYLE })), _jsx(DocxEditorViewer, { editor: editor, mode: "read-only", showTrackedChanges: showTrackedChanges, renderTrackedChangeCard: renderTrackedChangeCard, showComments: showComments, renderCommentCard: renderCommentCard, loadingState: loadingState, pageBackgroundColor: effectiveIsDark ? 'var(--background)' : undefined, pageGapBackgroundColor: viewerBackgroundColor, pageVirtualization: pageVirtualization, deferInitialPaginationPaint: false, onPageCountChange: handlePageCountChange })] }) })) })] })] }));
|
|
621
624
|
}
|
|
@@ -13,9 +13,11 @@ interface PdfRendererProps {
|
|
|
13
13
|
toolbarActions?: React.ReactNode;
|
|
14
14
|
/** Start the zoom plugin at fit-to-page instead of the numeric default. */
|
|
15
15
|
fitOnOpen?: boolean;
|
|
16
|
+
/** Search for this text once the document opens: highlighted, first hit in view. */
|
|
17
|
+
findText?: string;
|
|
16
18
|
/** False when the host's own toolbar already has the Download button, so the
|
|
17
19
|
* viewer does not show a second one. */
|
|
18
20
|
showDownload?: boolean;
|
|
19
21
|
}
|
|
20
|
-
export declare function PdfRenderer({ fileContent, url, className, compact, fileName, toolbarActions, fitOnOpen, showDownload, }: PdfRendererProps): import("react").JSX.Element;
|
|
22
|
+
export declare function PdfRenderer({ fileContent, url, className, compact, fileName, toolbarActions, fitOnOpen, findText, showDownload, }: PdfRendererProps): import("react").JSX.Element;
|
|
21
23
|
export {};
|
|
@@ -14,7 +14,7 @@ export function base64PdfContentToBlob(fileContent) {
|
|
|
14
14
|
}
|
|
15
15
|
return new Blob([bytes], { type: 'application/pdf' });
|
|
16
16
|
}
|
|
17
|
-
export function PdfRenderer({ fileContent, url, className, compact = false, fileName, toolbarActions, fitOnOpen, showDownload = true, }) {
|
|
17
|
+
export function PdfRenderer({ fileContent, url, className, compact = false, fileName, toolbarActions, fitOnOpen, findText, showDownload = true, }) {
|
|
18
18
|
const tHardcodedUi = useTranslations('hardcodedUi');
|
|
19
19
|
const [pdfUrl, setPdfUrl] = useState(null);
|
|
20
20
|
const [status, setStatus] = useState('loading');
|
|
@@ -50,5 +50,5 @@ export function PdfRenderer({ fileContent, url, className, compact = false, file
|
|
|
50
50
|
if (status === 'error' || !pdfUrl) {
|
|
51
51
|
return (_jsxs("div", { className: cn('flex h-full w-full flex-col items-center justify-center gap-3 p-8 text-center', className), children: [_jsx("div", { className: "bg-muted flex h-10 w-10 items-center justify-center rounded-full", children: _jsx(AlertTriangle, { className: "text-muted-foreground h-4 w-4" }) }), _jsxs("div", { children: [_jsx("p", { className: "text-foreground text-sm font-medium", children: tHardcodedUi.raw('componentsFileRenderersPdfRenderer.line277JsxTextFailedToLoadPdf') }), !compact && (_jsx("p", { className: "text-muted-foreground mt-1 text-xs", children: tHardcodedUi.raw('componentsFileRenderersPdfRenderer.line278JsxTextTheFileMayBeCorruptedOrInaccessible') }))] })] }));
|
|
52
52
|
}
|
|
53
|
-
return (_jsx(PDFViewer, { src: pdfUrl, fileName: fileName, showToolbar: !compact, showDownload: showDownload, showUpload: false, className: cn('h-full w-full', className), toolbarActions: toolbarActions, fitOnOpen: fitOnOpen }));
|
|
53
|
+
return (_jsx(PDFViewer, { src: pdfUrl, fileName: fileName, showToolbar: !compact, showDownload: showDownload, showUpload: false, className: cn('h-full w-full', className), toolbarActions: toolbarActions, fitOnOpen: fitOnOpen, findText: findText }));
|
|
54
54
|
}
|
|
@@ -31,6 +31,9 @@ export type PDFViewerProps = {
|
|
|
31
31
|
showUpload?: boolean;
|
|
32
32
|
src?: string;
|
|
33
33
|
toolbarActions?: React.ReactNode;
|
|
34
|
+
/** Search the document for this text once it opens: hits are highlighted and the
|
|
35
|
+
* first is scrolled into view, as if typed into the toolbar's search. */
|
|
36
|
+
findText?: string;
|
|
34
37
|
pageClassName?: (pageNumber: number) => string | undefined;
|
|
35
38
|
renderPageOverlay?: (props: PDFViewerPageOverlayProps) => React.ReactNode;
|
|
36
39
|
onActivePageChange?: (pageNumber: number) => void;
|
|
@@ -282,7 +282,7 @@ function PDFViewerPageNumberControl({ activePage, controlsDisabled, numPages, on
|
|
|
282
282
|
setIsEditing(true);
|
|
283
283
|
}, children: displayPage })), _jsxs("span", { children: [tI18nComplete.raw('text28391d3bc64e'), " ", numPages || '–'] })] }));
|
|
284
284
|
}
|
|
285
|
-
function PDFViewerSearchControl({ documentId, controlsDisabled, }) {
|
|
285
|
+
function PDFViewerSearchControl({ documentId, controlsDisabled, initialSearch, }) {
|
|
286
286
|
const tI18nComplete = useTranslations('hardcodedUi.i18nComplete');
|
|
287
287
|
const { state, provides } = useSearch(documentId);
|
|
288
288
|
const { provides: scroll } = useScroll(documentId);
|
|
@@ -323,6 +323,12 @@ function PDFViewerSearchControl({ documentId, controlsDisabled, }) {
|
|
|
323
323
|
providesRef.current = provides;
|
|
324
324
|
scrollRef.current = scroll;
|
|
325
325
|
}, [provides, scroll]);
|
|
326
|
+
// A host's `findText`: search once the plugin is ready, and again when the text changes.
|
|
327
|
+
React.useEffect(() => {
|
|
328
|
+
const text = initialSearch?.trim();
|
|
329
|
+
if (text && provides && scroll)
|
|
330
|
+
setSearchDraft(text);
|
|
331
|
+
}, [initialSearch, provides, scroll]);
|
|
326
332
|
const runSearch = React.useCallback((rawQuery) => {
|
|
327
333
|
const query = rawQuery.trim();
|
|
328
334
|
const requestId = searchRequestIdRef.current + 1;
|
|
@@ -922,7 +928,7 @@ function PDFViewerScroller({ documentId, pageRotationDeltas, basePageRotations,
|
|
|
922
928
|
width: '100%',
|
|
923
929
|
} })] }));
|
|
924
930
|
}
|
|
925
|
-
function PDFViewerInner({ viewerRef, pdfFile, documentId, document: pdfDocument, defaultZoom, className, fileName, showDownload, showToolbar, showRotateControls, showUpload, toolbarActions, pageClassName, renderPageOverlay, onActivePageChange, onPdfUpload, onPagePointerDown, onPagePointerMove, onPagePointerUp, onPagePointerCancel, onUploadFile, }) {
|
|
931
|
+
function PDFViewerInner({ viewerRef, pdfFile, documentId, document: pdfDocument, defaultZoom, className, fileName, showDownload, showToolbar, showRotateControls, showUpload, toolbarActions, findText, pageClassName, renderPageOverlay, onActivePageChange, onPdfUpload, onPagePointerDown, onPagePointerMove, onPagePointerUp, onPagePointerCancel, onUploadFile, }) {
|
|
926
932
|
const tI18nComplete = useTranslations('hardcodedUi.i18nComplete');
|
|
927
933
|
const { registry } = useRegistry();
|
|
928
934
|
const { state: scrollState, provides: scroll } = useScroll(documentId);
|
|
@@ -1184,7 +1190,7 @@ function PDFViewerInner({ viewerRef, pdfFile, documentId, document: pdfDocument,
|
|
|
1184
1190
|
pdfDocument?.pages[page.pageIndex]?.rotation ??
|
|
1185
1191
|
normalizeRotation(0);
|
|
1186
1192
|
const pageRotation = normalizeRotation(basePageRotation + (pageRotationDeltas.get(page.pageIndex) ?? 0));
|
|
1187
|
-
return (_jsx(Rotate, { documentId: documentId, pageIndex: page.pageIndex, rotation: pageRotation, children: _jsxs(PagePointerProvider, { documentId: documentId, pageIndex: page.pageIndex, rotation: pageRotation, "data-pdf-viewer-page": pageNumber, className: cn('relative border border-transparent bg-transparent shadow-xs select-none selection:bg-transparent selection:text-inherit', pageClassName?.(pageNumber)), style: { backgroundColor: 'transparent' }, onPointerDown: (event) => onPagePointerDown?.(event, pageNumber), onPointerMove: (event) => onPagePointerMove?.(event, pageNumber), onPointerUp: (event) => onPagePointerUp?.(event, pageNumber), onPointerCancel: (event) => onPagePointerCancel?.(event, pageNumber), children: [_jsx("div", { "aria-hidden": "true", className: "pointer-events-none absolute inset-0 bg-white" }), _jsx(RenderLayer, { documentId: documentId, pageIndex: page.pageIndex, scale: Math.min(currentZoomLevel, PAGE_BASE_RENDER_MAX_SCALE), dpr: PAGE_BASE_RENDER_DPR, className: "pointer-events-none absolute inset-0 h-full w-full object-fill opacity-100 blur-[0.35px] transition-none" }), _jsx(TilingLayer, { documentId: documentId, pageIndex: page.pageIndex, className: "pointer-events-none opacity-100 transition-none [&_img]:opacity-100 [&_img]:transition-none" }, `tiles-${page.pageIndex}-${pageRotation}`), _jsx(SearchLayer, { documentId: documentId, pageIndex: page.pageIndex, className: "pointer-events-none", highlightColor: "color-mix(in srgb, var(--kortix-yellow) 45%, transparent)", activeHighlightColor: "color-mix(in srgb, var(--kortix-orange) 55%, transparent)" }), _jsx(PDFViewerTextSelectionLayer, { documentId: documentId, pageIndex: page.pageIndex, scale: currentZoomLevel }), renderPageOverlay?.({
|
|
1193
|
+
return (_jsx(Rotate, { documentId: documentId, pageIndex: page.pageIndex, rotation: pageRotation, children: _jsxs(PagePointerProvider, { documentId: documentId, pageIndex: page.pageIndex, rotation: pageRotation, "data-pdf-viewer-page": pageNumber, className: cn('relative border border-transparent bg-transparent shadow-xs select-none selection:bg-transparent selection:text-inherit', pageClassName?.(pageNumber)), style: { backgroundColor: 'transparent' }, onPointerDown: (event) => onPagePointerDown?.(event, pageNumber), onPointerMove: (event) => onPagePointerMove?.(event, pageNumber), onPointerUp: (event) => onPagePointerUp?.(event, pageNumber), onPointerCancel: (event) => onPagePointerCancel?.(event, pageNumber), children: [_jsx("div", { "aria-hidden": "true", className: "pointer-events-none absolute inset-0 grid place-items-center bg-white text-neutral-400", children: _jsx(Spinner, { className: "size-5" }) }), _jsx(RenderLayer, { documentId: documentId, pageIndex: page.pageIndex, scale: Math.min(currentZoomLevel, PAGE_BASE_RENDER_MAX_SCALE), dpr: PAGE_BASE_RENDER_DPR, className: "pointer-events-none absolute inset-0 h-full w-full object-fill opacity-100 blur-[0.35px] transition-none" }), _jsx(TilingLayer, { documentId: documentId, pageIndex: page.pageIndex, className: "pointer-events-none opacity-100 transition-none [&_img]:opacity-100 [&_img]:transition-none" }, `tiles-${page.pageIndex}-${pageRotation}`), _jsx(SearchLayer, { documentId: documentId, pageIndex: page.pageIndex, className: "pointer-events-none", highlightColor: "color-mix(in srgb, var(--kortix-yellow) 45%, transparent)", activeHighlightColor: "color-mix(in srgb, var(--kortix-orange) 55%, transparent)" }), _jsx(PDFViewerTextSelectionLayer, { documentId: documentId, pageIndex: page.pageIndex, scale: currentZoomLevel }), renderPageOverlay?.({
|
|
1188
1194
|
pageNumber,
|
|
1189
1195
|
pageWidth: page.width,
|
|
1190
1196
|
pageHeight: page.height,
|
|
@@ -1212,7 +1218,7 @@ function PDFViewerInner({ viewerRef, pdfFile, documentId, document: pdfDocument,
|
|
|
1212
1218
|
}, children: _jsx(CircleMinus, { className: "size-4" }) }) }), _jsxs(Select, { value: String(currentZoomLevel), onValueChange: (value) => zoom?.requestZoom(Number(value)), disabled: controlsDisabled, modal: false, children: [_jsx(SelectTrigger, { size: "sm", className: "w-[84px] min-w-[84px] tabular-nums", children: _jsxs(SelectValue, { placeholder: tI18nComplete.raw('text509c517ede79'), children: [Math.round(currentZoomLevel * 100), "%"] }) }), _jsx(SelectContent, { alignItemWithTrigger: false, children: ZOOM_OPTIONS.map((option) => (_jsxs(SelectItem, { value: String(option), children: [Math.round(option * 100), "%"] }, option))) })] }), _jsx(ToolbarTooltip, { label: tI18nComplete.raw('text0e47f09a748f'), children: _jsx(Button, { type: "button", variant: "ghost", size: "icon-sm", className: "transition-transform active:scale-[0.96]", "aria-label": tI18nComplete.raw('text0e47f09a748f'), disabled: controlsDisabled || currentZoomLevel >= ZOOM_OPTIONS[ZOOM_OPTIONS.length - 1], onClick: () => {
|
|
1213
1219
|
const nextZoom = ZOOM_OPTIONS.find((option) => option > currentZoomLevel);
|
|
1214
1220
|
zoom?.requestZoom(nextZoom ?? ZOOM_OPTIONS[ZOOM_OPTIONS.length - 1]);
|
|
1215
|
-
}, children: _jsx(CirclePlus, { className: "size-4" }) }) })] }), _jsx(Separator, { orientation: "vertical", className: "mx-1 h-4 self-center" }), _jsx(PDFViewerSearchControl, { documentId: documentId, controlsDisabled: controlsDisabled }, documentId), toolbarActions ? (_jsxs(_Fragment, { children: [_jsx(Separator, { orientation: "vertical", className: "mx-1 h-4 self-center" }), toolbarActions] })) : null, showDownload || showUpload ? (_jsxs(_Fragment, { children: [_jsx(Separator, { orientation: "vertical", className: "mx-1 h-4 self-center" }), _jsx(PDFViewerFileActionsMenu, { onUploadFile: handleUpload, showUpload: showUpload }), showDownload ? (_jsx(ViewerDownloadButton, { disabled: controlsDisabled, pending: isPreparingDownload, onDownload: () => void handleDownload() })) : null] })) : null] }) })] })) : null, _jsxs("div", { ref: viewerShellRef, className: "bg-muted/30 relative flex min-h-0 flex-1 overflow-hidden", children: [isLoading ? (_jsx(PDFViewerLoadingSkeleton, { sidebarInline: sidebarInline, sidebarOpen: sidebarOpen })) : null, _jsxs("div", { className: "flex h-full max-h-full min-h-0 w-full flex-1 overflow-hidden", children: [_jsx(DocumentViewerThumbnailSidebar, { closedInlineClassName: THUMBNAIL_SIDEBAR_CLOSED_CLASS, inline: sidebarInline, open: thumbnailSidebarVisible, widthClassName: THUMBNAIL_SIDEBAR_WIDTH_CLASS, children: thumbnailSidebarVisible ? (_jsx(PDFViewerThumbnails, { basePageRotations: basePageRotations, documentId: documentId, activePage: activePage, pageCount: numPages, pageRotationDeltas: pageRotationDeltas, pdfDocument: pdfDocument, selectedPageIndexes: selectedPageIndexes, onSelectPage: selectThumbnailPage })) : null }), _jsxs(PDFViewerScrollAreaViewport, { documentId: documentId, className: "relative h-full max-h-full min-h-0 min-w-0 flex-1", children: [_jsx(PDFViewerViewportBridge, { viewportElementRef: viewportElementRef }), _jsx(PDFViewerSelectionCopyShortcut, { documentId: documentId }), _jsx(PDFViewerSelectionReleaseGuard, { documentId: documentId }), _jsx(GlobalPointerProvider, { documentId: documentId, children: _jsx(PDFViewerScroller, { basePageRotations: basePageRotations, documentId: documentId, pageRotationDeltas: pageRotationDeltas, renderPage: renderPage }) }), _jsx(CopyToClipboard, {})] })] })] })] }));
|
|
1221
|
+
}, children: _jsx(CirclePlus, { className: "size-4" }) }) })] }), _jsx(Separator, { orientation: "vertical", className: "mx-1 h-4 self-center" }), _jsx(PDFViewerSearchControl, { documentId: documentId, controlsDisabled: controlsDisabled, initialSearch: findText }, documentId), toolbarActions ? (_jsxs(_Fragment, { children: [_jsx(Separator, { orientation: "vertical", className: "mx-1 h-4 self-center" }), toolbarActions] })) : null, showDownload || showUpload ? (_jsxs(_Fragment, { children: [_jsx(Separator, { orientation: "vertical", className: "mx-1 h-4 self-center" }), _jsx(PDFViewerFileActionsMenu, { onUploadFile: handleUpload, showUpload: showUpload }), showDownload ? (_jsx(ViewerDownloadButton, { disabled: controlsDisabled, pending: isPreparingDownload, onDownload: () => void handleDownload() })) : null] })) : null] }) })] })) : null, _jsxs("div", { ref: viewerShellRef, className: "bg-muted/30 relative flex min-h-0 flex-1 overflow-hidden", children: [isLoading ? (_jsx(PDFViewerLoadingSkeleton, { sidebarInline: sidebarInline, sidebarOpen: sidebarOpen })) : null, _jsxs("div", { className: "flex h-full max-h-full min-h-0 w-full flex-1 overflow-hidden", children: [_jsx(DocumentViewerThumbnailSidebar, { closedInlineClassName: THUMBNAIL_SIDEBAR_CLOSED_CLASS, inline: sidebarInline, open: thumbnailSidebarVisible, widthClassName: THUMBNAIL_SIDEBAR_WIDTH_CLASS, children: thumbnailSidebarVisible ? (_jsx(PDFViewerThumbnails, { basePageRotations: basePageRotations, documentId: documentId, activePage: activePage, pageCount: numPages, pageRotationDeltas: pageRotationDeltas, pdfDocument: pdfDocument, selectedPageIndexes: selectedPageIndexes, onSelectPage: selectThumbnailPage })) : null }), _jsxs(PDFViewerScrollAreaViewport, { documentId: documentId, className: "relative h-full max-h-full min-h-0 min-w-0 flex-1", children: [_jsx(PDFViewerViewportBridge, { viewportElementRef: viewportElementRef }), _jsx(PDFViewerSelectionCopyShortcut, { documentId: documentId }), _jsx(PDFViewerSelectionReleaseGuard, { documentId: documentId }), _jsx(GlobalPointerProvider, { documentId: documentId, children: _jsx(PDFViewerScroller, { basePageRotations: basePageRotations, documentId: documentId, pageRotationDeltas: pageRotationDeltas, renderPage: renderPage }) }), _jsx(CopyToClipboard, {})] })] })] })] }));
|
|
1216
1222
|
}
|
|
1217
1223
|
function PDFViewerDocumentLoader({ pdfFile, onDocumentLoadSuccess, ...innerProps }) {
|
|
1218
1224
|
const { provides: documentManager } = useDocumentManagerCapability();
|
|
@@ -1288,7 +1294,7 @@ function PDFViewerDocumentLoader({ pdfFile, onDocumentLoadSuccess, ...innerProps
|
|
|
1288
1294
|
}
|
|
1289
1295
|
return (_jsx(PDFViewerInner, { ...innerProps, pdfFile: pdfFile, documentId: activeDocumentId, document: document }, activeDocumentId));
|
|
1290
1296
|
}
|
|
1291
|
-
export const PDFViewer = React.forwardRef(function PDFViewer({ className, defaultZoom = DEFAULT_ZOOM, fitOnOpen, fileName, showDownload = true, showRotateControls = true, showToolbar = true, showUpload = true, src, toolbarActions, pageClassName, renderPageOverlay, onActivePageChange, onDocumentLoadSuccess, onPdfUpload, onPagePointerDown, onPagePointerMove, onPagePointerUp, onPagePointerCancel, }, ref) {
|
|
1297
|
+
export const PDFViewer = React.forwardRef(function PDFViewer({ className, defaultZoom = DEFAULT_ZOOM, fitOnOpen, fileName, showDownload = true, showRotateControls = true, showToolbar = true, showUpload = true, src, toolbarActions, findText, pageClassName, renderPageOverlay, onActivePageChange, onDocumentLoadSuccess, onPdfUpload, onPagePointerDown, onPagePointerMove, onPagePointerUp, onPagePointerCancel, }, ref) {
|
|
1292
1298
|
const tI18nComplete = useTranslations('hardcodedUi.i18nComplete');
|
|
1293
1299
|
const { engine, error: engineError } = useSharedPdfEngine();
|
|
1294
1300
|
const [uploadedPdfFile, setUploadedPdfFile] = React.useState(() => ({ src, url: null }));
|
|
@@ -1348,5 +1354,8 @@ export const PDFViewer = React.forwardRef(function PDFViewer({ className, defaul
|
|
|
1348
1354
|
if (!engine) {
|
|
1349
1355
|
return (_jsxs("div", { "data-slot": "pdf-viewer", className: cn('bg-background relative flex h-full max-h-full min-h-0 w-full flex-col overflow-hidden', className), children: [showToolbar ? _jsx("div", { className: "bg-background min-h-12 border-b" }) : null, _jsx("div", { className: "relative min-h-0 flex-1", children: _jsx(PDFViewerLoadingSkeleton, { sidebarInline: true, sidebarOpen: false }) })] }));
|
|
1350
1356
|
}
|
|
1351
|
-
return (_jsx(EmbedPDF, { engine: engine, plugins: plugins, children: _jsx(PDFViewerDocumentLoader, { viewerRef: ref, pdfFile: pdfFile,
|
|
1357
|
+
return (_jsx(EmbedPDF, { engine: engine, plugins: plugins, children: _jsx(PDFViewerDocumentLoader, { viewerRef: ref, pdfFile: pdfFile,
|
|
1358
|
+
// The same level the plugin starts at: a numeric default here would undo `fitOnOpen`
|
|
1359
|
+
// as soon as the document loads (the page opened at 100% and overflowed a narrow pane).
|
|
1360
|
+
defaultZoom: selectPdfZoomLevel(fitOnOpen, defaultZoom), className: className, fileName: fileName, showDownload: showDownload, showToolbar: showToolbar, showRotateControls: showRotateControls, showUpload: showUpload, toolbarActions: toolbarActions, findText: findText, pageClassName: pageClassName, renderPageOverlay: renderPageOverlay, onActivePageChange: onActivePageChange, onDocumentLoadSuccess: onDocumentLoadSuccess, onPdfUpload: onPdfUpload, onPagePointerDown: onPagePointerDown, onPagePointerMove: onPagePointerMove, onPagePointerUp: onPagePointerUp, onPagePointerCancel: onPagePointerCancel, onUploadFile: handleUploadFile }) }));
|
|
1352
1361
|
});
|
|
@@ -35,6 +35,9 @@ export interface FileContentRendererProps {
|
|
|
35
35
|
/** PDF only: start the zoom plugin at fit-to-page instead of the numeric
|
|
36
36
|
* default. No effect on any other file category. */
|
|
37
37
|
fitOnOpen?: boolean;
|
|
38
|
+
/** PDF only: search for this text once the file opens. Hits are highlighted and
|
|
39
|
+
* the first one is scrolled into view (a citation's quote, for example). */
|
|
40
|
+
findText?: string;
|
|
38
41
|
/** Additional class name for the code editor */
|
|
39
42
|
codeEditorEditorClassName?: string;
|
|
40
43
|
/** Bumped by the surface's Refresh control. Remounts the renderers that read
|
|
@@ -42,4 +45,4 @@ export interface FileContentRendererProps {
|
|
|
42
45
|
* cannot reach. */
|
|
43
46
|
reloadKey?: number;
|
|
44
47
|
}
|
|
45
|
-
export declare function FileContentRenderer({ filePath, showHeader, headerActions, onUnsavedChange, onSaved, className, errorFallback, targetLine, readOnly, markdownPreview, onMarkdownPreviewChange, onStatusChange, imageControls, fitOnOpen, codeEditorEditorClassName, reloadKey, }: FileContentRendererProps): React.JSX.Element;
|
|
48
|
+
export declare function FileContentRenderer({ filePath, showHeader, headerActions, onUnsavedChange, onSaved, className, errorFallback, targetLine, readOnly, markdownPreview, onMarkdownPreviewChange, onStatusChange, imageControls, fitOnOpen, findText, codeEditorEditorClassName, reloadKey, }: FileContentRendererProps): React.JSX.Element;
|
|
@@ -44,7 +44,7 @@ function FileNotFoundState({ filePath }) {
|
|
|
44
44
|
const tHardcodedUi = useTranslations('hardcodedUi');
|
|
45
45
|
return (_jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-3 p-8 text-center", children: [_jsx("div", { className: "bg-muted/50 flex h-12 w-12 items-center justify-center rounded-sm", children: _jsx(FileX, { className: "text-muted-foreground/40 h-6 w-6" }) }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: tHardcodedUi.raw('featuresFilesComponentsFileContentRenderer.line195JsxTextFileNotFound') }), _jsx("p", { className: "text-muted-foreground/50 max-w-sm font-mono text-xs break-all", children: filePath }), _jsx("p", { className: "text-muted-foreground/40 max-w-xs text-xs", children: tHardcodedUi.raw('featuresFilesComponentsFileContentRenderer.line201JsxTextThisFileDoesNotExistOrMayHave') })] }));
|
|
46
46
|
}
|
|
47
|
-
export function FileContentRenderer({ filePath, showHeader = true, headerActions, onUnsavedChange, onSaved, className, errorFallback, targetLine, readOnly = false, markdownPreview, onMarkdownPreviewChange, onStatusChange, imageControls, fitOnOpen = false, codeEditorEditorClassName, reloadKey = 0, }) {
|
|
47
|
+
export function FileContentRenderer({ filePath, showHeader = true, headerActions, onUnsavedChange, onSaved, className, errorFallback, targetLine, readOnly = false, markdownPreview, onMarkdownPreviewChange, onStatusChange, imageControls, fitOnOpen = false, findText, codeEditorEditorClassName, reloadKey = 0, }) {
|
|
48
48
|
const { source, Breadcrumbs, fileContent, isLoading, error, contentRevision, fetchRevision, hasUnsavedChanges, setHasUnsavedChanges, isSaving, saveFlash, latestContentRef, discardKey, fileName, isHeicImage, language, fileCategory, isMarkdownFile, isMermaidFile, hasPreviewToggle, isJsonFile, isHtmlFile, isMarkdownPreview, setIsMarkdownPreview, isJsonTreeView, setIsJsonTreeView, isHtmlPreview, setIsHtmlPreview, fileDiagErrorCount, fileDiagWarningCount, fileDiagnostics, tHardcodedUi, tI18nHardcoded, blobUrl, rawBlob, blobLoading, blobError, heicImageUrl, heicConverting, displayContent, handleDownload, handleSave, handleDiscard, handleEditorChange, imageDataUrl, needsBlob, isContentReady, contentError, showLoadingState, isSandboxWaking, isNotFound, } = useFileContentState({
|
|
49
49
|
filePath,
|
|
50
50
|
onUnsavedChange,
|
|
@@ -89,7 +89,7 @@ export function FileContentRenderer({ filePath, showHeader = true, headerActions
|
|
|
89
89
|
return (_jsxs("div", { className: cn('flex h-full flex-col', className), children: [_jsx(FileHeader, { showHeader, Breadcrumbs, filePath, readOnly, hasUnsavedChanges, saveFlash, fileDiagErrorCount, fileDiagWarningCount, fileContent, isSaving, handleSave, latestContentRef, discardLabel, handleDiscard, isHtmlFile, isHtmlPreview, setIsHtmlPreview, isJsonFile, isJsonTreeView, setIsJsonTreeView, hasPreviewToggle, isMarkdownPreview, setIsMarkdownPreview, headerActions, handleDownload, blobUrl, rawBlob, tI18nHardcoded, tHardcodedUi }), _jsx("div", { className: cn('flex-1', readOnly ? 'overflow-auto' : 'overflow-hidden'), children: _jsxs(ErrorBoundary, { fallback: () => (_jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-3 p-8 text-center", children: [_jsx("div", { className: "bg-destructive/10 flex h-12 w-12 items-center justify-center rounded-sm", children: _jsx(FileWarning, { className: "text-destructive/50 h-6 w-6" }) }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: tI18nHardcoded.raw('autoFeaturesFileViewerFileContentRendererJsxTextCouldnT794ae800') }), _jsx("p", { className: "text-muted-foreground/50 max-w-sm font-mono text-xs break-all", children: filePath }), _jsxs(Button, { variant: "outline", size: "sm", onClick: handleDownload, children: [_jsx(Download, { className: "mr-1.5 h-3.5 w-3.5" }), tI18nHardcoded.raw('i18nComplete.textd6eafe823591')] })] })), children: [showLoadingState && (_jsx("div", { className: "flex h-full items-center justify-center", children: _jsx(Loading, { className: "text-muted-foreground/40 h-4 w-4" }) })), contentError && !showLoadingState && isSandboxWaking && (_jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-3 p-8 text-center", children: [_jsx(Loading, { className: "text-muted-foreground/40 h-4 w-4" }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: tI18nHardcoded.raw('i18nComplete.text5e3de76869f3') }), _jsx("p", { className: "text-muted-foreground/50 max-w-sm font-mono text-xs break-all", children: filePath }), _jsx("p", { className: "text-muted-foreground/40 max-w-xs text-xs", children: tI18nHardcoded.raw('i18nComplete.textd4707c58c4a4') })] })), contentError &&
|
|
90
90
|
!showLoadingState &&
|
|
91
91
|
!isSandboxWaking &&
|
|
92
|
-
(errorFallback ? (errorFallback(contentError, filePath)) : isNotFound ? (_jsx(FileNotFoundState, { filePath: filePath })) : (_jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-3 p-8 text-center", children: [_jsx("div", { className: "bg-destructive/10 flex h-12 w-12 items-center justify-center rounded-sm", children: _jsx(FileWarning, { className: "text-destructive/50 h-6 w-6" }) }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: tHardcodedUi.raw('featuresFilesComponentsFileContentRenderer.line692JsxTextFailedToLoadFile') }), _jsx("p", { className: "text-muted-foreground/50 max-w-sm font-mono text-xs break-all", children: filePath }), _jsx("p", { className: "text-muted-foreground/60 max-w-sm text-xs", children: contentError })] }))), !isLoading && !error && imageDataUrl && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(ImageRenderer, { url: imageDataUrl, className: "h-full", fileName: fileName, controls: imageControls }) })), isHeicImage && (blobLoading || heicConverting) && _jsx(RendererFallback, {}), isHeicImage && !blobLoading && !blobError && heicImageUrl && !heicConverting && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(ImageRenderer, { url: heicImageUrl, className: "h-full", fileName: fileName, controls: imageControls }) })), isContentReady && fileCategory === 'pdf' && fileContent?.content && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(PdfRenderer, { fileContent: fileContent.content, fileName: fileName, className: "h-full", fitOnOpen: fitOnOpen, showDownload: false }) })), isContentReady && fileCategory === 'docx' && rawBlob && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(DocxRenderer, { blob: rawBlob, fileName: fileName, className: "h-full", showDownload: false }) })), isContentReady && fileCategory === 'zip' && rawBlob && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(ZipRenderer, { blob: rawBlob, fileName: fileName, className: "h-full" }, filePath) })), !isLoading && !error && !isNotFound && fileCategory === 'xlsx' && (!bytesOnly || blobUrl) && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(XlsxRenderer, {
|
|
92
|
+
(errorFallback ? (errorFallback(contentError, filePath)) : isNotFound ? (_jsx(FileNotFoundState, { filePath: filePath })) : (_jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-3 p-8 text-center", children: [_jsx("div", { className: "bg-destructive/10 flex h-12 w-12 items-center justify-center rounded-sm", children: _jsx(FileWarning, { className: "text-destructive/50 h-6 w-6" }) }), _jsx("p", { className: "text-muted-foreground text-sm font-medium", children: tHardcodedUi.raw('featuresFilesComponentsFileContentRenderer.line692JsxTextFailedToLoadFile') }), _jsx("p", { className: "text-muted-foreground/50 max-w-sm font-mono text-xs break-all", children: filePath }), _jsx("p", { className: "text-muted-foreground/60 max-w-sm text-xs", children: contentError })] }))), !isLoading && !error && imageDataUrl && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(ImageRenderer, { url: imageDataUrl, className: "h-full", fileName: fileName, controls: imageControls }) })), isHeicImage && (blobLoading || heicConverting) && _jsx(RendererFallback, {}), isHeicImage && !blobLoading && !blobError && heicImageUrl && !heicConverting && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(ImageRenderer, { url: heicImageUrl, className: "h-full", fileName: fileName, controls: imageControls }) })), isContentReady && fileCategory === 'pdf' && fileContent?.content && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(PdfRenderer, { fileContent: fileContent.content, fileName: fileName, className: "h-full", fitOnOpen: fitOnOpen, findText: findText, showDownload: false }) })), isContentReady && fileCategory === 'docx' && rawBlob && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(DocxRenderer, { blob: rawBlob, fileName: fileName, className: "h-full", showDownload: false }) })), isContentReady && fileCategory === 'zip' && rawBlob && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(ZipRenderer, { blob: rawBlob, fileName: fileName, className: "h-full" }, filePath) })), !isLoading && !error && !isNotFound && fileCategory === 'xlsx' && (!bytesOnly || blobUrl) && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(XlsxRenderer, {
|
|
93
93
|
// A bytes-only source hands the workbook over as a blob URL;
|
|
94
94
|
// the renderer reads a sandbox path only for a session.
|
|
95
95
|
filePath: bytesOnly ? blobUrl : filePath, fileName: fileName, className: "h-full", showDownload: false }, `xlsx-${filePath}-${contentRevision}-${reloadKey}`) })), !isLoading && !error && !isNotFound && fileCategory === 'sqlite' && (!bytesOnly || rawBlob) && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(SqliteRenderer, { filePath: filePath, fileName: fileName, className: "h-full", readOnly: readOnly, ...(bytesOnly ? { bytes: rawBlob, onSave: saveThroughSource } : {}) }, `sqlite-${filePath}-${contentRevision}-${reloadKey}`) })), !isLoading && !error && csvAsTable && fileContent && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(CsvRenderer, { content: fileContent.content, fileName: fileName, className: "h-full", showDownload: false }) })), isContentReady && fileCategory === 'video' && blobUrl && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(VideoRenderer, { url: blobUrl, className: "h-full" }) })), isContentReady && fileCategory === 'audio' && blobUrl && (_jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-5 p-8", children: [_jsx("div", { className: "bg-muted/50 flex h-14 w-14 items-center justify-center rounded-sm", children: _jsxs("svg", { className: "text-muted-foreground/40 h-6 w-6", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: [_jsx("path", { d: "M9 18V5l12-2v13" }), _jsx("circle", { cx: "6", cy: "18", r: "3" }), _jsx("circle", { cx: "18", cy: "16", r: "3" })] }) }), _jsx("p", { className: "text-muted-foreground/60 text-sm", children: fileName }), _jsx("audio", { controls: true, src: blobUrl, className: "w-full max-w-sm" })] })), isContentReady && fileCategory === 'pptx' && rawBlob && (_jsx(Suspense, { fallback: _jsx(RendererFallback, {}), children: _jsx(PptxRenderer, { blob: rawBlob, binaryUrl: blobUrl, filePath: filePath, fileName: fileName, className: "h-full", onDownload: handleDownload }) })), isHtmlFile && isHtmlPreview && (_jsx(HtmlPreview, { path: toSandboxAbsolutePath(filePath), reloadKey: `${fetchRevision}-${reloadKey}`, fileName: fileName, pendingLabel: tHardcodedUi.raw('featuresFilesComponentsFileContentRenderer.line805JsxTextStartingPreviewServer') }, `html-preview-${filePath}`)), isHtmlFile && !isHtmlPreview && !isLoading && !error && fileContent?.type === 'text' && (_jsx(CodeEditor, { editorClassName: codeEditorEditorClassName, ...codeEditorProps, className: readOnly ? 'min-h-full' : 'h-full' }, `html-source-${filePath}-${discardKey}`)), !isLoading &&
|
package/dist/i18n/en.d.ts
CHANGED
|
@@ -423,12 +423,6 @@ declare const catalog: {
|
|
|
423
423
|
kortixDefault: string;
|
|
424
424
|
definedIn: string;
|
|
425
425
|
};
|
|
426
|
-
routing: {
|
|
427
|
-
title: string;
|
|
428
|
-
automatic: string;
|
|
429
|
-
pinned: string;
|
|
430
|
-
pinnedWithProvider: string;
|
|
431
|
-
};
|
|
432
426
|
toasts: {
|
|
433
427
|
rebuildStarted: string;
|
|
434
428
|
buildFailed: string;
|
|
@@ -447,8 +441,6 @@ declare const catalog: {
|
|
|
447
441
|
failed: string;
|
|
448
442
|
notReady: string;
|
|
449
443
|
unavailable: string;
|
|
450
|
-
selected: string;
|
|
451
|
-
selectedAria: string;
|
|
452
444
|
};
|
|
453
445
|
defaultBadge: string;
|
|
454
446
|
runtime: string;
|
|
@@ -459,14 +451,6 @@ declare const catalog: {
|
|
|
459
451
|
confirm: string;
|
|
460
452
|
};
|
|
461
453
|
provider: {
|
|
462
|
-
label: string;
|
|
463
|
-
experimental: string;
|
|
464
|
-
description: string;
|
|
465
|
-
preparing: string;
|
|
466
|
-
fallback: string;
|
|
467
|
-
switched: string;
|
|
468
|
-
switchFailed: string;
|
|
469
|
-
updateFailed: string;
|
|
470
454
|
legacy: string;
|
|
471
455
|
legacyNote: string;
|
|
472
456
|
};
|
|
@@ -679,6 +663,7 @@ declare const catalog: {
|
|
|
679
663
|
};
|
|
680
664
|
credits: {
|
|
681
665
|
loadFailed: string;
|
|
666
|
+
resetAt: string;
|
|
682
667
|
availableBalance: string;
|
|
683
668
|
creditCount: string;
|
|
684
669
|
owed: string;
|
|
@@ -927,6 +912,10 @@ declare const catalog: {
|
|
|
927
912
|
showMore: string;
|
|
928
913
|
brief: {
|
|
929
914
|
status: string;
|
|
915
|
+
subAgent: string;
|
|
916
|
+
spawned: string;
|
|
917
|
+
subAgentCount: string;
|
|
918
|
+
spawnedCount: string;
|
|
930
919
|
created: string;
|
|
931
920
|
source: string;
|
|
932
921
|
changeRequests: string;
|
|
@@ -941,6 +930,7 @@ declare const catalog: {
|
|
|
941
930
|
};
|
|
942
931
|
status: {
|
|
943
932
|
needsYou: string;
|
|
933
|
+
needsInput: string;
|
|
944
934
|
starting: string;
|
|
945
935
|
running: string;
|
|
946
936
|
done: string;
|
|
@@ -2442,7 +2432,6 @@ declare const catalog: {
|
|
|
2442
2432
|
text1bbab8923e0a: string;
|
|
2443
2433
|
text1bc7a47dada1: string;
|
|
2444
2434
|
text1bfa15228ca8: string;
|
|
2445
|
-
text1c145081eddd: string;
|
|
2446
2435
|
text1c57f31d6315: string;
|
|
2447
2436
|
text1c6225ec7092: string;
|
|
2448
2437
|
text1c791e8c04de: string;
|
|
@@ -2519,7 +2508,6 @@ declare const catalog: {
|
|
|
2519
2508
|
text221ff19c904c: string;
|
|
2520
2509
|
text22206bc67806: string;
|
|
2521
2510
|
text222b8d57e366: string;
|
|
2522
|
-
text22412aa281cb: string;
|
|
2523
2511
|
text226f2b1f08a3: string;
|
|
2524
2512
|
text2283269ca150: string;
|
|
2525
2513
|
text22965568d22a: string;
|
|
@@ -2715,7 +2703,6 @@ declare const catalog: {
|
|
|
2715
2703
|
text32ae9b80f832: string;
|
|
2716
2704
|
text32c6817c8380: string;
|
|
2717
2705
|
text32d61a2331fe: string;
|
|
2718
|
-
text32f14aa9ea33: string;
|
|
2719
2706
|
text330010f40240: string;
|
|
2720
2707
|
text331551b0de41: string;
|
|
2721
2708
|
text3329a9bb48b9: string;
|
|
@@ -2807,7 +2794,6 @@ declare const catalog: {
|
|
|
2807
2794
|
text3af0e55ccc96: string;
|
|
2808
2795
|
text3af4d559fa0a: string;
|
|
2809
2796
|
text3b13192b9d88: string;
|
|
2810
|
-
text3b3c31642567: string;
|
|
2811
2797
|
text3b4153c0d3c8: string;
|
|
2812
2798
|
text3b41ba9c7cb8: string;
|
|
2813
2799
|
text3b61c181f516: string;
|
|
@@ -3840,7 +3826,6 @@ declare const catalog: {
|
|
|
3840
3826
|
text910ab2c6e011: string;
|
|
3841
3827
|
text911a1cde90bc: string;
|
|
3842
3828
|
text91273d498d36: string;
|
|
3843
|
-
text914be6d9bb89: string;
|
|
3844
3829
|
text914d43beac26: string;
|
|
3845
3830
|
text91721aa63069: string;
|
|
3846
3831
|
text9173e2705c5b: string;
|
|
@@ -4649,7 +4634,6 @@ declare const catalog: {
|
|
|
4649
4634
|
textd432610668ee: string;
|
|
4650
4635
|
textd440cfc72edc: string;
|
|
4651
4636
|
textd45336ed23b4: string;
|
|
4652
|
-
textd461a493a375: string;
|
|
4653
4637
|
textd4673300c1d2: string;
|
|
4654
4638
|
textd46dc6f5e3e3: string;
|
|
4655
4639
|
textd4707c58c4a4: string;
|
|
@@ -4963,7 +4947,6 @@ declare const catalog: {
|
|
|
4963
4947
|
texte99baf469ca8: string;
|
|
4964
4948
|
texte9b7cf835375: string;
|
|
4965
4949
|
texte9bef0b0f3c2: string;
|
|
4966
|
-
texte9ca8360a34d: string;
|
|
4967
4950
|
texte9d6212ef873: string;
|
|
4968
4951
|
texte9ec6c0ad396: string;
|
|
4969
4952
|
textea13cd34d9e0: string;
|
|
@@ -5586,6 +5569,10 @@ declare const catalog: {
|
|
|
5586
5569
|
textdfea5351a743: string;
|
|
5587
5570
|
text2f95b1c9ee2b: string;
|
|
5588
5571
|
text7971dd752669: string;
|
|
5572
|
+
text57f57edb6f16: string;
|
|
5573
|
+
texta8597db6f24b: string;
|
|
5574
|
+
text5f6ba69d66d1: string;
|
|
5575
|
+
textcb8d6b0c94c9: string;
|
|
5589
5576
|
};
|
|
5590
5577
|
publicShareConfirm: {
|
|
5591
5578
|
title: string;
|
|
@@ -5855,14 +5842,7 @@ declare const catalog: {
|
|
|
5855
5842
|
};
|
|
5856
5843
|
modelsList: {
|
|
5857
5844
|
onCount: string;
|
|
5858
|
-
perMillion: string;
|
|
5859
|
-
estimate: string;
|
|
5860
|
-
route: string;
|
|
5861
|
-
input: string;
|
|
5862
|
-
cached: string;
|
|
5863
|
-
output: string;
|
|
5864
5845
|
context: string;
|
|
5865
|
-
fromPrice: string;
|
|
5866
5846
|
price: string;
|
|
5867
5847
|
hiddenLine: string;
|
|
5868
5848
|
blockedLine: string;
|
|
@@ -5943,15 +5923,10 @@ declare const catalog: {
|
|
|
5943
5923
|
managedTitle: string;
|
|
5944
5924
|
managedDescription: string;
|
|
5945
5925
|
managedUpgradeHint: string;
|
|
5946
|
-
pricingEstimate: string;
|
|
5947
|
-
pricingRoute: string;
|
|
5948
|
-
pricingPreferred: string;
|
|
5949
5926
|
textImage: string;
|
|
5950
5927
|
textOnly: string;
|
|
5951
5928
|
zdrTitle: string;
|
|
5952
5929
|
zdrDescription: string;
|
|
5953
|
-
usProvidersTitle: string;
|
|
5954
|
-
usProvidersDescription: string;
|
|
5955
5930
|
hiddenHint: string;
|
|
5956
5931
|
hidden: string;
|
|
5957
5932
|
disableModel: string;
|
|
@@ -6284,6 +6259,22 @@ declare const catalog: {
|
|
|
6284
6259
|
chipLabel: string;
|
|
6285
6260
|
chipTitle: string;
|
|
6286
6261
|
manage: string;
|
|
6262
|
+
openInReminders: string;
|
|
6263
|
+
nextRun: string;
|
|
6264
|
+
repeats: string;
|
|
6265
|
+
timeZone: string;
|
|
6266
|
+
lastRun: string;
|
|
6267
|
+
lastRunFailed: string;
|
|
6268
|
+
neverRun: string;
|
|
6269
|
+
searchPlaceholder: string;
|
|
6270
|
+
statusAll: string;
|
|
6271
|
+
timeFilterLabel: string;
|
|
6272
|
+
timeAny: string;
|
|
6273
|
+
timeHour: string;
|
|
6274
|
+
timeDay: string;
|
|
6275
|
+
timeWeek: string;
|
|
6276
|
+
timeLater: string;
|
|
6277
|
+
noMatch: string;
|
|
6287
6278
|
cardLabel: string;
|
|
6288
6279
|
cardOneTime: string;
|
|
6289
6280
|
cardRecurring: string;
|
package/dist/i18n/en.js
CHANGED
|
@@ -424,12 +424,6 @@ const catalog = {
|
|
|
424
424
|
"kortixDefault": "Kortix default",
|
|
425
425
|
"definedIn": "Defined in"
|
|
426
426
|
},
|
|
427
|
-
"routing": {
|
|
428
|
-
"title": "Routing",
|
|
429
|
-
"automatic": "Automatic",
|
|
430
|
-
"pinned": "Pinned",
|
|
431
|
-
"pinnedWithProvider": "Pinned · {provider}"
|
|
432
|
-
},
|
|
433
427
|
"toasts": {
|
|
434
428
|
"rebuildStarted": "Rebuild started for “{name}”",
|
|
435
429
|
"buildFailed": "Failed to start build",
|
|
@@ -447,9 +441,7 @@ const catalog = {
|
|
|
447
441
|
"building": "Building",
|
|
448
442
|
"failed": "Failed",
|
|
449
443
|
"notReady": "Not ready",
|
|
450
|
-
"unavailable": "Unavailable"
|
|
451
|
-
"selected": "Selected",
|
|
452
|
-
"selectedAria": "selected"
|
|
444
|
+
"unavailable": "Unavailable"
|
|
453
445
|
},
|
|
454
446
|
"defaultBadge": "Default",
|
|
455
447
|
"runtime": "Session runtime",
|
|
@@ -460,14 +452,6 @@ const catalog = {
|
|
|
460
452
|
"confirm": "Delete"
|
|
461
453
|
},
|
|
462
454
|
"provider": {
|
|
463
|
-
"label": "Sandbox provider",
|
|
464
|
-
"experimental": "Experimental",
|
|
465
|
-
"description": "Pin this project to a specific sandbox provider, overriding the platform default. New sessions here run on the chosen provider — “Automatic” follows the platform default.",
|
|
466
|
-
"preparing": "Preparing {provider}… this can take a few minutes",
|
|
467
|
-
"fallback": "the sandbox provider",
|
|
468
|
-
"switched": "Switched to {provider}",
|
|
469
|
-
"switchFailed": "Sandbox provider switch failed",
|
|
470
|
-
"updateFailed": "Failed to update sandbox provider",
|
|
471
455
|
"legacy": "Legacy",
|
|
472
456
|
"legacyNote": "Daytona is a legacy fallback provider. Its removal is scheduled. Existing Daytona sessions keep working for now, but Daytona gets no new features and no support guarantee. Use Platinum."
|
|
473
457
|
},
|
|
@@ -680,6 +664,7 @@ const catalog = {
|
|
|
680
664
|
},
|
|
681
665
|
"credits": {
|
|
682
666
|
"loadFailed": "Could not load this account.",
|
|
667
|
+
"resetAt": "Plan credits reset on",
|
|
683
668
|
"availableBalance": "Available balance",
|
|
684
669
|
"creditCount": "{count, plural, one {{formatted} credit} other {{formatted} credits}}",
|
|
685
670
|
"owed": "owed",
|
|
@@ -928,6 +913,10 @@ const catalog = {
|
|
|
928
913
|
"showMore": "Show more",
|
|
929
914
|
"brief": {
|
|
930
915
|
"status": "Status",
|
|
916
|
+
"subAgent": "Sub-agent",
|
|
917
|
+
"spawned": "Spawned session",
|
|
918
|
+
"subAgentCount": "{count, plural, one {# sub-agent} other {# sub-agents}}",
|
|
919
|
+
"spawnedCount": "{count, plural, one {# spawned session} other {# spawned sessions}}",
|
|
931
920
|
"created": "Created",
|
|
932
921
|
"source": "Source",
|
|
933
922
|
"changeRequests": "Change requests",
|
|
@@ -941,11 +930,12 @@ const catalog = {
|
|
|
941
930
|
}
|
|
942
931
|
},
|
|
943
932
|
"status": {
|
|
944
|
-
"needsYou": "Needs
|
|
945
|
-
"
|
|
946
|
-
"
|
|
947
|
-
"
|
|
948
|
-
"
|
|
933
|
+
"needsYou": "Needs review",
|
|
934
|
+
"needsInput": "Needs input",
|
|
935
|
+
"starting": "Waking",
|
|
936
|
+
"running": "Working",
|
|
937
|
+
"done": "Ready",
|
|
938
|
+
"stopped": "Asleep",
|
|
949
939
|
"failed": "Failed",
|
|
950
940
|
"legacy": "Legacy"
|
|
951
941
|
}
|
|
@@ -2443,7 +2433,6 @@ const catalog = {
|
|
|
2443
2433
|
"text1bbab8923e0a": "/path/to/folder",
|
|
2444
2434
|
"text1bc7a47dada1": "Dockerfile.ml",
|
|
2445
2435
|
"text1bfa15228ca8": "Slack connected",
|
|
2446
|
-
"text1c145081eddd": "Switched to {provider}",
|
|
2447
2436
|
"text1c57f31d6315": "Hidden credential",
|
|
2448
2437
|
"text1c6225ec7092": "Budget",
|
|
2449
2438
|
"text1c791e8c04de": "Audit logs are an Enterprise feature",
|
|
@@ -2520,7 +2509,6 @@ const catalog = {
|
|
|
2520
2509
|
"text221ff19c904c": "Schedules",
|
|
2521
2510
|
"text22206bc67806": "Exit selection",
|
|
2522
2511
|
"text222b8d57e366": "Failed to save overrides",
|
|
2523
|
-
"text22412aa281cb": "the sandbox provider",
|
|
2524
2512
|
"text226f2b1f08a3": "An open runtime today, pluggable by design. The sandbox is yours to read and replace.",
|
|
2525
2513
|
"text2283269ca150": "Channel connection",
|
|
2526
2514
|
"text22965568d22a": "Connected",
|
|
@@ -2716,7 +2704,6 @@ const catalog = {
|
|
|
2716
2704
|
"text32ae9b80f832": "No skills yet",
|
|
2717
2705
|
"text32c6817c8380": "Review the exact parameters. Your decision applies to this call only.",
|
|
2718
2706
|
"text32d61a2331fe": "Product deck",
|
|
2719
|
-
"text32f14aa9ea33": "Preparing {provider}… this can take a few minutes",
|
|
2720
2707
|
"text330010f40240": "Not ready",
|
|
2721
2708
|
"text331551b0de41": "Pending",
|
|
2722
2709
|
"text3329a9bb48b9": "Applying…",
|
|
@@ -2808,7 +2795,6 @@ const catalog = {
|
|
|
2808
2795
|
"text3af0e55ccc96": "OpenCode",
|
|
2809
2796
|
"text3af4d559fa0a": "Loading schema…",
|
|
2810
2797
|
"text3b13192b9d88": "Discard your changes?",
|
|
2811
|
-
"text3b3c31642567": "Pinned provider",
|
|
2812
2798
|
"text3b4153c0d3c8": "Pick a date and time",
|
|
2813
2799
|
"text3b41ba9c7cb8": "No data",
|
|
2814
2800
|
"text3b61c181f516": "Add a separate AgentMail inbox connection for support, sales, founders, or any mailbox the agent should run.",
|
|
@@ -3841,7 +3827,6 @@ const catalog = {
|
|
|
3841
3827
|
"text910ab2c6e011": "Per provider",
|
|
3842
3828
|
"text911a1cde90bc": "OAuth 2.0 device connection failed",
|
|
3843
3829
|
"text91273d498d36": "These",
|
|
3844
|
-
"text914be6d9bb89": "Failed to update sandbox provider",
|
|
3845
3830
|
"text914d43beac26": "Remove access?",
|
|
3846
3831
|
"text91721aa63069": "Service errors",
|
|
3847
3832
|
"text9173e2705c5b": "You need the manage-keys permission to view gateway keys.",
|
|
@@ -4650,7 +4635,6 @@ const catalog = {
|
|
|
4650
4635
|
"textd432610668ee": "The identifier selects this credential. Access decides whether agent code can read the value, and who else may spend it.",
|
|
4651
4636
|
"textd440cfc72edc": "branding logo icon favicon product name app name white label whitelabel theme identity",
|
|
4652
4637
|
"textd45336ed23b4": "We couldn't reach the runtime to ask whether a turn is running. Reloading restarts it, and if one is in flight it will be lost.",
|
|
4653
|
-
"textd461a493a375": "Automatic",
|
|
4654
4638
|
"textd4673300c1d2": "Notifications are working correctly!",
|
|
4655
4639
|
"textd46dc6f5e3e3": "Copied \"{value0}\" to clipboard",
|
|
4656
4640
|
"textd4707c58c4a4": "The sandbox is starting. This file will load automatically.",
|
|
@@ -4964,7 +4948,6 @@ const catalog = {
|
|
|
4964
4948
|
"texte99baf469ca8": "to this project. You connect an account right after.",
|
|
4965
4949
|
"texte9b7cf835375": "In your words",
|
|
4966
4950
|
"texte9bef0b0f3c2": "Keyboard shortcuts",
|
|
4967
|
-
"texte9ca8360a34d": "Sandbox provider switch failed",
|
|
4968
4951
|
"texte9d6212ef873": "Setting up...",
|
|
4969
4952
|
"texte9ec6c0ad396": "Managed by Kortix",
|
|
4970
4953
|
"textea13cd34d9e0": "billed as Kortix credits",
|
|
@@ -5586,7 +5569,11 @@ const catalog = {
|
|
|
5586
5569
|
"text815464994ec4": "Telegram connected",
|
|
5587
5570
|
"textdfea5351a743": "Telegram disconnected",
|
|
5588
5571
|
"text2f95b1c9ee2b": "Allowed users saved",
|
|
5589
|
-
"text7971dd752669": "Reminders"
|
|
5572
|
+
"text7971dd752669": "Reminders",
|
|
5573
|
+
"text57f57edb6f16": "Change request #{number} is ready to review.",
|
|
5574
|
+
"texta8597db6f24b": "Remove skill",
|
|
5575
|
+
"text5f6ba69d66d1": "Skill removed",
|
|
5576
|
+
"textcb8d6b0c94c9": " and every file in it, edits included, and removes the skill from every agent that lists it. One commit on the default branch."
|
|
5590
5577
|
},
|
|
5591
5578
|
"publicShareConfirm": {
|
|
5592
5579
|
"title": "Create a public link?",
|
|
@@ -5788,7 +5775,7 @@ const catalog = {
|
|
|
5788
5775
|
"metaKey": "API key",
|
|
5789
5776
|
"metaSignIn": "Sign in",
|
|
5790
5777
|
"metaSignInOrKey": "Sign in or API key",
|
|
5791
|
-
"metaIncluded": "Paid from credits",
|
|
5778
|
+
"metaIncluded": "Paid from credits · Platinum Inference",
|
|
5792
5779
|
"apiKey": "API key",
|
|
5793
5780
|
"savedKey": "Saved key",
|
|
5794
5781
|
"replace": "Replace",
|
|
@@ -5856,14 +5843,7 @@ const catalog = {
|
|
|
5856
5843
|
},
|
|
5857
5844
|
"modelsList": {
|
|
5858
5845
|
"onCount": "{on} of {total} on",
|
|
5859
|
-
"perMillion": "{model} · per 1M",
|
|
5860
|
-
"estimate": "estimate",
|
|
5861
|
-
"route": "Route",
|
|
5862
|
-
"input": "In",
|
|
5863
|
-
"cached": "Cached",
|
|
5864
|
-
"output": "Out",
|
|
5865
5846
|
"context": "{value} context",
|
|
5866
|
-
"fromPrice": "from {input} / {output} per 1M",
|
|
5867
5847
|
"price": "{input} / {output} per 1M",
|
|
5868
5848
|
"hiddenLine": "Not in the model picker · direct requests still work",
|
|
5869
5849
|
"blockedLine": "Requests to this model are blocked",
|
|
@@ -5942,17 +5922,12 @@ const catalog = {
|
|
|
5942
5922
|
"credentialsHint": "Disable inference without removing credentials.",
|
|
5943
5923
|
"providerError": "Could not update provider access.",
|
|
5944
5924
|
"managedTitle": "Kortix Managed Models",
|
|
5945
|
-
"managedDescription": "
|
|
5925
|
+
"managedDescription": "Models from Platinum Inference, at its price plus a {fee}% platform fee, paid from credits. No API key needed.",
|
|
5946
5926
|
"managedUpgradeHint": "Upgrade to use Kortix's managed models, or connect your own provider.",
|
|
5947
|
-
"pricingEstimate": "Provider base price, before the platform fee. The serving route determines the charge.",
|
|
5948
|
-
"pricingRoute": "{route}: {input} input / {cacheRead} cached / {output} output per 1M tokens",
|
|
5949
|
-
"pricingPreferred": "Preferred",
|
|
5950
5927
|
"textImage": "Text + image",
|
|
5951
5928
|
"textOnly": "Text only",
|
|
5952
5929
|
"zdrTitle": "Zero data retention",
|
|
5953
5930
|
"zdrDescription": "Zero data retention (ZDR) means the model provider processes your text and images, then does not keep the input or reply after the request. Kortix stores your project and conversation history separately.",
|
|
5954
|
-
"usProvidersTitle": "Hosted in the US",
|
|
5955
|
-
"usProvidersDescription": "Kortix models run in US data centers. We only partner with American inference providers.",
|
|
5956
5931
|
"hiddenHint": "Hidden from the picker. Direct requests are still allowed; use the model menu to disable them.",
|
|
5957
5932
|
"hidden": "Hidden from picker",
|
|
5958
5933
|
"disableModel": "Disable model",
|
|
@@ -6285,6 +6260,22 @@ const catalog = {
|
|
|
6285
6260
|
"chipLabel": "{count, plural, one {# active reminder} other {# active reminders}}",
|
|
6286
6261
|
"chipTitle": "Reminders on this session",
|
|
6287
6262
|
"manage": "Manage reminders",
|
|
6263
|
+
"openInReminders": "Open in Reminders",
|
|
6264
|
+
"nextRun": "Next run {time}",
|
|
6265
|
+
"repeats": "Repeats",
|
|
6266
|
+
"timeZone": "Time zone",
|
|
6267
|
+
"lastRun": "Last run",
|
|
6268
|
+
"lastRunFailed": "Last run failed",
|
|
6269
|
+
"neverRun": "Not run yet",
|
|
6270
|
+
"searchPlaceholder": "Search reminders",
|
|
6271
|
+
"statusAll": "All",
|
|
6272
|
+
"timeFilterLabel": "Next run",
|
|
6273
|
+
"timeAny": "Any time",
|
|
6274
|
+
"timeHour": "Next hour",
|
|
6275
|
+
"timeDay": "Next 24 hours",
|
|
6276
|
+
"timeWeek": "Next 7 days",
|
|
6277
|
+
"timeLater": "Later",
|
|
6278
|
+
"noMatch": "No reminders match",
|
|
6288
6279
|
"cardLabel": "Reminder",
|
|
6289
6280
|
"cardOneTime": "One-time",
|
|
6290
6281
|
"cardRecurring": "Recurring",
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { cn } from './lib/utils.js';
|
|
2
|
-
export { UiProvider, defaultUiHostConfig, defaultUiNavigation, defaultUiStrings, useUiBrand, useUiHostConfig, useUiImage, useUiLink, useUiParams, useUiPathname, useUiRouter, useUiShallowNavigate, useUiSearchParams, useUiStrings, useUiViewerId, type UiBrand, type UiHostConfig, type UiImageComponent, type UiImageProps, type UiLinkComponent, type UiLinkProps, type UiNavigation, type UiRouteParams, type UiRouter, type UiSearchParams, type UiShallowNavigate, type UiStrings, type UiStringsInput, type UseUiBrand, } from './providers/ui-provider.js';
|
|
2
|
+
export { UiProvider, defaultUiHostConfig, defaultUiNavigation, defaultUiStrings, useUiBrand, useUiHostConfig, useUiImage, useUiLink, useUiParams, useUiPathname, useUiRouter, useUiShallowNavigate, useUiSearchParams, useUiStrings, useUiViewerId, type UiBrand, type UiHostConfig, type UiImageComponent, type UiImageProps, type UiLinkComponent, type UiLinkProps, type UiNavigation, type UiRouteParams, type UiRouter, type UiSearchParams, type UiShallowNavigate, type UiSlashAction, type UiStrings, type UiStringsInput, type UseUiBrand, } from './providers/ui-provider.js';
|
|
3
3
|
export { SessionIdsProvider, useSessionIds, type UiSessionIds } from './providers/session-ids.js';
|
|
4
4
|
export { useIsDark } from './hooks/use-is-dark.js';
|
|
5
5
|
export { Button, buttonVariants, type ButtonProps, } from './primitives/button.js';
|