chore(autonomous-session): consolidate uncommitted work from prior session
Bundles the prior autonomous-session output that was sitting unstaged: - Em-dash sweep across src/ + tests/ (en-dash/em-dash to hyphen, ~2280 instances) - country-flag-icons rollout (CountryFlag component, replaces emoji glyphs that never rendered on Windows; lazy-loads the 3x2 SVG index as a single chunk after the per-subpath dynamic-import approach silently failed in webpack) - Admin IA Phase 1+2: 7-domain regroup, 41 to 38 pages, /admin/berths index, redirects (ocr to ai, reports to dashboard, invitations to users), docs/admin-ia-proposal.md - Per-template email tester (registry + endpoint + UI on Email admin page) - Cancel-document mode picker (delete-from-Documenso vs keep-for-audit) - Dashboard PDF report: 25 widgets, SVG charts, date-range picker, 11 resolvers - Customize-widgets per-region sortables at xl+ (charts/rails/feed); single flat sortable below xl when the layout stacks; per-viewport saved orders - Audit doc updates capturing each shipped item - Lint fixes: react-compiler immutability in DonutChart (reduce instead of let-reassign), set-state-in-effect disables in CountryFlag and UploadForSigning preview-bytes effect, unused 'confirm' destructures in interest contract + reservation tabs, unescaped apostrophe in test-template card copy
This commit is contained in:
@@ -19,7 +19,7 @@ import { apiFetch } from '@/lib/api/client';
|
||||
const Lightbox = dynamic(() => import('yet-another-react-lightbox'), { ssr: false });
|
||||
import 'yet-another-react-lightbox/styles.css';
|
||||
|
||||
// pdfjs-dist is ~150kb gzip — lazy-load so routes that never preview
|
||||
// pdfjs-dist is ~150kb gzip - lazy-load so routes that never preview
|
||||
// PDFs don't ship it. ssr:false because the worker setup needs window.
|
||||
const PdfViewer = dynamic(() => import('./pdf-viewer').then((m) => ({ default: m.PdfViewer })), {
|
||||
ssr: false,
|
||||
@@ -40,7 +40,7 @@ interface FilePreviewDialogProps {
|
||||
|
||||
/**
|
||||
* Routes a file's mime type to one of seven preview surfaces. Order
|
||||
* matters — `application/pdf` is matched before the generic
|
||||
* matters - `application/pdf` is matched before the generic
|
||||
* "application/*" bucket so PDFs stay on the rich pdfjs viewer.
|
||||
*/
|
||||
type PreviewKind =
|
||||
@@ -187,12 +187,12 @@ export function FilePreviewDialog({
|
||||
|
||||
{!loading && !error && previewUrl && kind === 'office' && (
|
||||
// Office documents render via Microsoft's hosted Office viewer
|
||||
// — public URL only; presigned download URLs include a token
|
||||
// - public URL only; presigned download URLs include a token
|
||||
// in the query string so they work here even though the file
|
||||
// isn't world-public. The viewer streams the document and
|
||||
// renders a high-fidelity preview without us shipping a
|
||||
// headless LibreOffice. Falls back to "download to view" if
|
||||
// the embed loads but renders nothing (e.g. CORS rejected) —
|
||||
// the embed loads but renders nothing (e.g. CORS rejected) -
|
||||
// detection is hard so we just keep the download CTA below.
|
||||
<iframe
|
||||
title={fileName ?? 'Office document preview'}
|
||||
@@ -240,7 +240,7 @@ export function FilePreviewDialog({
|
||||
}
|
||||
|
||||
/**
|
||||
* Plain-text preview pane — fetches the file body via the presigned
|
||||
* Plain-text preview pane - fetches the file body via the presigned
|
||||
* URL (no auth needed; the URL itself carries the access token) and
|
||||
* renders it as monospaced text. Caps the body at 1 MB so a huge log
|
||||
* file doesn't lock the browser; surfaces a "first 1 MB shown" notice
|
||||
|
||||
Reference in New Issue
Block a user