@arbidocs/blocks 0.5.20 → 0.5.21
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/dist/{ConnectedNativeDocxComparison-KUDFJ3GG.js → ConnectedNativeDocxComparison-4X7H57LE.js} +9 -9
- package/dist/{ConnectedStreamedWordArtifact-JD2XZCYP.js.map → ConnectedNativeDocxComparison-4X7H57LE.js.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-FUNR66KP.cjs → ConnectedNativeDocxComparison-7WTVHEKI.cjs} +10 -10
- package/dist/{ConnectedNativeDocxComparison-FUNR66KP.cjs.map → ConnectedNativeDocxComparison-7WTVHEKI.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-G6R3SFZ3.js → ConnectedNativeDocxEditor-I6RQUSR3.js} +7 -7
- package/dist/{ConnectedNativeDocxEditor-G6R3SFZ3.js.map → ConnectedNativeDocxEditor-I6RQUSR3.js.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-XVCAXAAU.cjs → ConnectedNativeDocxEditor-PZ2ASQO3.cjs} +9 -9
- package/dist/{ConnectedNativeDocxEditor-XVCAXAAU.cjs.map → ConnectedNativeDocxEditor-PZ2ASQO3.cjs.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-JD2XZCYP.js → ConnectedStreamedWordArtifact-KCYSJ3B2.js} +9 -9
- package/dist/{ConnectedNativeDocxComparison-KUDFJ3GG.js.map → ConnectedStreamedWordArtifact-KCYSJ3B2.js.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-P55WP3MC.cjs → ConnectedStreamedWordArtifact-Q5KC4W7O.cjs} +10 -10
- package/dist/ConnectedStreamedWordArtifact-Q5KC4W7O.cjs.map +1 -0
- package/dist/{NativeDocxEditor-6O7UMP7Y.cjs → NativeDocxEditor-JUTTA46L.cjs} +8 -8
- package/dist/{NativeDocxEditor-6O7UMP7Y.cjs.map → NativeDocxEditor-JUTTA46L.cjs.map} +1 -1
- package/dist/{NativeDocxEditor-MHO7LF4E.js → NativeDocxEditor-PSC3JWWA.js} +4 -4
- package/dist/{NativeDocxEditor-MHO7LF4E.js.map → NativeDocxEditor-PSC3JWWA.js.map} +1 -1
- package/dist/{WorkspaceTableView-UR3WLSJG.cjs → WorkspaceTableView-6JVHGDUB.cjs} +8 -8
- package/dist/{WorkspaceTableView-UR3WLSJG.cjs.map → WorkspaceTableView-6JVHGDUB.cjs.map} +1 -1
- package/dist/{WorkspaceTableView-TNUEU6OO.js → WorkspaceTableView-ECPHGWHF.js} +6 -6
- package/dist/{WorkspaceTableView-TNUEU6OO.js.map → WorkspaceTableView-ECPHGWHF.js.map} +1 -1
- package/dist/agents/index.cjs +326 -326
- package/dist/agents/index.js +4 -4
- package/dist/auth/index.cjs +44 -44
- package/dist/auth/index.js +2 -2
- package/dist/auth0/index.cjs +4 -3
- package/dist/auth0/index.cjs.map +1 -1
- package/dist/auth0/index.js +4 -3
- package/dist/auth0/index.js.map +1 -1
- package/dist/{chunk-BQNDBWLB.js → chunk-4ML5AMMO.js} +3 -3
- package/dist/{chunk-BQNDBWLB.js.map → chunk-4ML5AMMO.js.map} +1 -1
- package/dist/{chunk-ODFDMORE.cjs → chunk-4S34OHJX.cjs} +4 -4
- package/dist/{chunk-ODFDMORE.cjs.map → chunk-4S34OHJX.cjs.map} +1 -1
- package/dist/{chunk-QS3AJ3FT.cjs → chunk-5H37UWWS.cjs} +5 -5
- package/dist/{chunk-QS3AJ3FT.cjs.map → chunk-5H37UWWS.cjs.map} +1 -1
- package/dist/{chunk-2FQ4CMRY.cjs → chunk-5ZU2XYXO.cjs} +278 -4
- package/dist/chunk-5ZU2XYXO.cjs.map +1 -0
- package/dist/{chunk-JS7KJRKG.js → chunk-75Z5AUMM.js} +3 -3
- package/dist/{chunk-JS7KJRKG.js.map → chunk-75Z5AUMM.js.map} +1 -1
- package/dist/chunk-BITGO5LI.cjs +18 -0
- package/dist/{chunk-WDCD3OZH.cjs.map → chunk-BITGO5LI.cjs.map} +1 -1
- package/dist/{chunk-E2SKI6VO.js → chunk-D3BHUDOU.js} +3 -3
- package/dist/{chunk-E2SKI6VO.js.map → chunk-D3BHUDOU.js.map} +1 -1
- package/dist/{chunk-WJZK5GAV.js → chunk-DTENNALR.js} +3 -3
- package/dist/{chunk-WJZK5GAV.js.map → chunk-DTENNALR.js.map} +1 -1
- package/dist/{chunk-P5RZPEHW.cjs → chunk-F2BYURQZ.cjs} +5 -5
- package/dist/{chunk-P5RZPEHW.cjs.map → chunk-F2BYURQZ.cjs.map} +1 -1
- package/dist/{chunk-HNGGKANF.js → chunk-F6LC2CRB.js} +5 -5
- package/dist/{chunk-HNGGKANF.js.map → chunk-F6LC2CRB.js.map} +1 -1
- package/dist/{chunk-MBRUUST5.js → chunk-F7IQGPZH.js} +4 -4
- package/dist/{chunk-MBRUUST5.js.map → chunk-F7IQGPZH.js.map} +1 -1
- package/dist/{chunk-X2SQZY7U.js → chunk-FERNQVSH.js} +274 -8
- package/dist/chunk-FERNQVSH.js.map +1 -0
- package/dist/{chunk-KBSKN3NF.cjs → chunk-FQIJICZE.cjs} +9 -9
- package/dist/{chunk-KBSKN3NF.cjs.map → chunk-FQIJICZE.cjs.map} +1 -1
- package/dist/{chunk-SSJLYCX7.cjs → chunk-FV32BTXV.cjs} +84 -56
- package/dist/chunk-FV32BTXV.cjs.map +1 -0
- package/dist/{chunk-2YZ35KKK.cjs → chunk-FZVAJFRH.cjs} +80 -84
- package/dist/chunk-FZVAJFRH.cjs.map +1 -0
- package/dist/{chunk-HHJALHRS.js → chunk-H5XHCIWY.js} +83 -55
- package/dist/chunk-H5XHCIWY.js.map +1 -0
- package/dist/{chunk-TBNXJHTP.js → chunk-IA5BYEO7.js} +7 -5
- package/dist/chunk-IA5BYEO7.js.map +1 -0
- package/dist/{chunk-NFTANEP6.cjs → chunk-IJQ5DIZT.cjs} +5 -5
- package/dist/{chunk-NFTANEP6.cjs.map → chunk-IJQ5DIZT.cjs.map} +1 -1
- package/dist/{chunk-NMZI3K6R.cjs → chunk-IRY63R4L.cjs} +16 -2
- package/dist/chunk-IRY63R4L.cjs.map +1 -0
- package/dist/{chunk-MVP7METT.js → chunk-IXBJEQH5.js} +4 -80
- package/dist/chunk-IXBJEQH5.js.map +1 -0
- package/dist/{chunk-PAKPD3LB.js → chunk-JKJI5SRF.js} +3 -3
- package/dist/{chunk-PAKPD3LB.js.map → chunk-JKJI5SRF.js.map} +1 -1
- package/dist/{chunk-EWRRV37Z.cjs → chunk-K237IYOD.cjs} +2 -80
- package/dist/chunk-K237IYOD.cjs.map +1 -0
- package/dist/chunk-KL6XOSEN.js +156 -0
- package/dist/chunk-KL6XOSEN.js.map +1 -0
- package/dist/{chunk-TRDY3ZT7.js → chunk-LU23I2HS.js} +3 -3
- package/dist/{chunk-TRDY3ZT7.js.map → chunk-LU23I2HS.js.map} +1 -1
- package/dist/{chunk-SAYEQE5R.cjs → chunk-MJT7KHHT.cjs} +48 -48
- package/dist/{chunk-SAYEQE5R.cjs.map → chunk-MJT7KHHT.cjs.map} +1 -1
- package/dist/chunk-MSCDYRSA.cjs +18 -0
- package/dist/{chunk-JPNFVDH4.cjs.map → chunk-MSCDYRSA.cjs.map} +1 -1
- package/dist/chunk-MSPNYW6Z.cjs +165 -0
- package/dist/chunk-MSPNYW6Z.cjs.map +1 -0
- package/dist/{chunk-2R3GGNPA.js → chunk-MZA7GMOH.js} +16 -3
- package/dist/chunk-MZA7GMOH.js.map +1 -0
- package/dist/{chunk-4UGVMOTK.cjs → chunk-NML42O7Q.cjs} +4 -4
- package/dist/{chunk-4UGVMOTK.cjs.map → chunk-NML42O7Q.cjs.map} +1 -1
- package/dist/{chunk-YKGZG353.js → chunk-NVRJ6WTR.js} +3 -3
- package/dist/{chunk-YKGZG353.js.map → chunk-NVRJ6WTR.js.map} +1 -1
- package/dist/{chunk-ZW4QFL3Y.cjs → chunk-PFVCOUU6.cjs} +13 -13
- package/dist/{chunk-ZW4QFL3Y.cjs.map → chunk-PFVCOUU6.cjs.map} +1 -1
- package/dist/{chunk-QLLV5UUI.cjs → chunk-PSIKUQYM.cjs} +5 -5
- package/dist/{chunk-QLLV5UUI.cjs.map → chunk-PSIKUQYM.cjs.map} +1 -1
- package/dist/{chunk-R53JJZNW.js → chunk-RVKVGS72.js} +76 -79
- package/dist/chunk-RVKVGS72.js.map +1 -0
- package/dist/{chunk-H32DV7XS.cjs → chunk-UAEYU2NN.cjs} +136 -2
- package/dist/chunk-UAEYU2NN.cjs.map +1 -0
- package/dist/{chunk-USZ32EKR.js → chunk-VFZLZSJ3.js} +4 -4
- package/dist/{chunk-USZ32EKR.js.map → chunk-VFZLZSJ3.js.map} +1 -1
- package/dist/{chunk-XRL4R2TT.js → chunk-WZ63HE2C.js} +136 -4
- package/dist/chunk-WZ63HE2C.js.map +1 -0
- package/dist/{chunk-F72ZD5Q2.cjs → chunk-YD3RN2FY.cjs} +3 -3
- package/dist/{chunk-F72ZD5Q2.cjs.map → chunk-YD3RN2FY.cjs.map} +1 -1
- package/dist/{chunk-VYFRW6NN.cjs → chunk-YRHQ7OLG.cjs} +3 -3
- package/dist/{chunk-VYFRW6NN.cjs.map → chunk-YRHQ7OLG.cjs.map} +1 -1
- package/dist/{chunk-PYJUIEYV.js → chunk-YT5OOFK3.js} +3 -3
- package/dist/{chunk-PYJUIEYV.js.map → chunk-YT5OOFK3.js.map} +1 -1
- package/dist/{chunk-XCL6ZCI5.js → chunk-Z6CAKLA5.js} +3 -3
- package/dist/{chunk-XCL6ZCI5.js.map → chunk-Z6CAKLA5.js.map} +1 -1
- package/dist/{chunk-RAYCOBF7.cjs → chunk-ZESMRGDV.cjs} +7 -5
- package/dist/chunk-ZESMRGDV.cjs.map +1 -0
- package/dist/{chunk-6FWUZGPF.js → chunk-ZMYK7XTS.js} +4 -4
- package/dist/{chunk-6FWUZGPF.js.map → chunk-ZMYK7XTS.js.map} +1 -1
- package/dist/connect/docx.cjs +13 -13
- package/dist/connect/docx.js +9 -9
- package/dist/connect/index.cjs +1138 -906
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +1 -0
- package/dist/connect/index.js +480 -249
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +17 -17
- package/dist/connect/viewer.js +6 -6
- package/dist/connection/ConnectedAccountAccessBadge.d.ts +1 -0
- package/dist/connection/ConnectedSettings.d.ts +6 -2
- package/dist/connection/ConnectedSsoDisconnect.d.ts +2 -0
- package/dist/connection/auth/support.d.ts +1 -0
- package/dist/connection/auth/useLoginActions.d.ts +1 -1
- package/dist/connection/settings-page/ConnectedAccountSettings.d.ts +5 -1
- package/dist/document-tools/AdoptSignatureDialog.d.ts +3 -1
- package/dist/document-tools/index.cjs +20 -20
- package/dist/document-tools/index.js +3 -3
- package/dist/document-tools/viewer/index.cjs +10 -10
- package/dist/document-tools/viewer/index.js +3 -3
- package/dist/docx/index.cjs +51 -51
- package/dist/docx/index.js +4 -4
- package/dist/facts/index.cjs +55 -55
- package/dist/facts/index.js +3 -3
- package/dist/home/index.cjs +15 -16
- package/dist/home/index.cjs.map +1 -1
- package/dist/home/index.js +1 -2
- package/dist/home/index.js.map +1 -1
- package/dist/index.cjs +425 -425
- package/dist/index.js +7 -7
- package/dist/settings/IdentityVerification.d.ts +3 -1
- package/dist/settings/ProfileCard.d.ts +3 -1
- package/dist/settings/SettingsPanel.d.ts +6 -0
- package/dist/settings/SubscriptionParts.d.ts +0 -11
- package/dist/settings/index.cjs +162 -166
- package/dist/settings/index.d.ts +1 -1
- package/dist/settings/index.js +3 -3
- package/dist/workflow-canvas/index.cjs +17 -17
- package/dist/workflow-canvas/index.js +4 -4
- package/dist/workspaces/WorkspaceFormParts.d.ts +10 -2
- package/dist/workspaces/index.cjs +52 -287
- package/dist/workspaces/index.cjs.map +1 -1
- package/dist/workspaces/index.js +9 -268
- package/dist/workspaces/index.js.map +1 -1
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/ConnectedStreamedWordArtifact-P55WP3MC.cjs.map +0 -1
- package/dist/chunk-2FQ4CMRY.cjs.map +0 -1
- package/dist/chunk-2R3GGNPA.js.map +0 -1
- package/dist/chunk-2YZ35KKK.cjs.map +0 -1
- package/dist/chunk-5TDGVOR5.js +0 -142
- package/dist/chunk-5TDGVOR5.js.map +0 -1
- package/dist/chunk-6AXJBTHM.js +0 -77
- package/dist/chunk-6AXJBTHM.js.map +0 -1
- package/dist/chunk-EWRRV37Z.cjs.map +0 -1
- package/dist/chunk-H32DV7XS.cjs.map +0 -1
- package/dist/chunk-HHJALHRS.js.map +0 -1
- package/dist/chunk-JPNFVDH4.cjs +0 -18
- package/dist/chunk-MKNSIZWR.cjs +0 -84
- package/dist/chunk-MKNSIZWR.cjs.map +0 -1
- package/dist/chunk-MVP7METT.js.map +0 -1
- package/dist/chunk-NMZI3K6R.cjs.map +0 -1
- package/dist/chunk-R53JJZNW.js.map +0 -1
- package/dist/chunk-RAYCOBF7.cjs.map +0 -1
- package/dist/chunk-REH7PX3N.cjs +0 -145
- package/dist/chunk-REH7PX3N.cjs.map +0 -1
- package/dist/chunk-SSJLYCX7.cjs.map +0 -1
- package/dist/chunk-TBNXJHTP.js.map +0 -1
- package/dist/chunk-WDCD3OZH.cjs +0 -18
- package/dist/chunk-X2SQZY7U.js.map +0 -1
- package/dist/chunk-XRL4R2TT.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/document-tools/viewer/SignatureFieldsOverlay.tsx","../src/document-tools/viewer/GuidedSigningViewer.tsx","../src/document-tools/viewer/SharedFileView.tsx"],"names":["FIELD_TYPE_LABELS","useRef","useState","DEFAULT_FIELD_SIZE","jsxs","cn","Fragment","jsx","X","PdfViewer","KitPdfViewer","useDocumentTools","useSignSignatureRequest","useSavedSignature","useStoreSavedSignature","useDeclineSignatureRequest","useMemo","fieldsInSigningOrder","useEffect","useCallback","MARK_FIELD_TYPES","TYPED_SIGNATURE_STYLE","SigningError","Button","ArrowRight","ArrowLeft","Check","Progress","AdoptSignatureDialog","ModalScaffold","Label","Input","intentText","useFileShare","useFileSharePdf","fileShareSigningRequest","signFileShare","fileShareBytes","useFileShares"],"mappings":"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","file":"chunk-QLLV5UUI.cjs","sourcesContent":["/**\n * The signature fields of one PDF page, drawn over it. Coordinates are fractions of the page as\n * shown (origin top-left), pages 0-based like the API; the kit viewer's overlay fills the page box.\n *\n * - `editable`: the author's view. With a field type chosen, a click drops a field of the default\n * size and a drag draws one; a field is selected by a click, moved by dragging it and resized by\n * its corner handle; the selected one has a remove button.\n * - otherwise the signer's view: fields are buttons; `renderContent` shows what was applied.\n */\n\nimport { useRef, useState, type PointerEvent, type ReactElement, type ReactNode } from 'react'\nimport { X } from 'lucide-react'\nimport {\n DEFAULT_FIELD_SIZE,\n FIELD_TYPE_LABELS,\n type SignatureField,\n type SignatureFieldType,\n} from '@arbidocs/react/document-tools'\nimport { cn } from '@arbidocs/react/ui'\n\n/** One colour per signer, in the order they were added. */\nexport const SIGNER_COLORS = ['#1c7ed6', '#e8590c', '#2f9e44', '#9c36b5', '#c2255c', '#0c8599']\n\nconst MIN_DRAG = 0.01\n\ntype Box = { x: number; y: number; width: number; height: number }\n\nconst clamp = (v: number, lo: number, hi: number) => Math.min(hi, Math.max(lo, v))\nconst round = (v: number) => Math.round(v * 10000) / 10000\n\nfunction fit(box: Box): Box {\n const width = clamp(box.width, 0.02, 1)\n const height = clamp(box.height, 0.015, 1)\n return {\n x: round(clamp(box.x, 0, 1 - width)),\n y: round(clamp(box.y, 0, 1 - height)),\n width: round(width),\n height: round(height),\n }\n}\n\ntype Drag =\n | { kind: 'create'; startX: number; startY: number; box: Box }\n | { kind: 'move' | 'resize'; id: string; startX: number; startY: number; origin: Box }\n\nexport interface SignatureFieldsOverlayProps {\n /** 0-based page index this overlay covers. */\n page: number\n fields: SignatureField[]\n colorOf: (signer: string) => string\n labelOf?: (field: SignatureField) => string\n editable?: boolean\n /** Editing: the type a click or drag on the page creates (null: none, selection only). */\n placing?: SignatureFieldType | null\n selectedId?: string | null\n onSelect?: (id: string | null) => void\n onCreate?: (box: Box) => void\n onChange?: (id: string, box: Box) => void\n onRemove?: (id: string) => void\n /** Signing: the field the signer is on. */\n activeId?: string | null\n onActivate?: (id: string) => void\n /** Signing: what a completed field shows (the adopted signature, the date…). */\n renderContent?: (field: SignatureField) => ReactNode\n}\n\nexport function SignatureFieldsOverlay({\n page,\n fields,\n colorOf,\n labelOf = (f) => FIELD_TYPE_LABELS[f.type],\n editable = false,\n placing = null,\n selectedId = null,\n onSelect,\n onCreate,\n onChange,\n onRemove,\n activeId = null,\n onActivate,\n renderContent,\n}: SignatureFieldsOverlayProps): ReactElement {\n const ref = useRef<HTMLDivElement>(null)\n const [drag, setDrag] = useState<Drag | null>(null)\n const [preview, setPreview] = useState<Box | null>(null)\n const onPage = fields.filter((f) => f.page === page)\n\n const point = (e: PointerEvent) => {\n const r = ref.current!.getBoundingClientRect()\n return { x: (e.clientX - r.left) / r.width, y: (e.clientY - r.top) / r.height }\n }\n\n const startCreate = (e: PointerEvent<HTMLDivElement>) => {\n if (!editable || e.target !== e.currentTarget || e.button !== 0) return\n if (!placing) {\n onSelect?.(null)\n return\n }\n const p = point(e)\n e.currentTarget.setPointerCapture?.(e.pointerId)\n setDrag({ kind: 'create', startX: p.x, startY: p.y, box: { ...p, width: 0, height: 0 } })\n }\n\n const startField = (e: PointerEvent, field: SignatureField, kind: 'move' | 'resize') => {\n if (!editable || e.button !== 0) return\n e.stopPropagation()\n onSelect?.(field.id)\n const p = point(e)\n ref.current?.setPointerCapture?.(e.pointerId)\n setDrag({\n kind,\n id: field.id,\n startX: p.x,\n startY: p.y,\n origin: { x: field.x, y: field.y, width: field.width, height: field.height },\n })\n }\n\n const onMove = (e: PointerEvent) => {\n if (!drag) return\n const p = point(e)\n const dx = p.x - drag.startX\n const dy = p.y - drag.startY\n if (drag.kind === 'create') {\n setPreview({\n x: Math.min(p.x, drag.startX),\n y: Math.min(p.y, drag.startY),\n width: Math.abs(dx),\n height: Math.abs(dy),\n })\n } else if (drag.kind === 'move') {\n setPreview(fit({ ...drag.origin, x: drag.origin.x + dx, y: drag.origin.y + dy }))\n } else {\n setPreview(\n fit({ ...drag.origin, width: drag.origin.width + dx, height: drag.origin.height + dy })\n )\n }\n }\n\n const onUp = (e: PointerEvent) => {\n if (!drag) return\n const p = point(e)\n if (drag.kind === 'create' && placing) {\n const drawn = Math.abs(p.x - drag.startX) > MIN_DRAG && Math.abs(p.y - drag.startY) > MIN_DRAG\n const size = DEFAULT_FIELD_SIZE[placing]\n onCreate?.(\n fit(\n drawn && preview\n ? preview\n : { x: drag.startX - size.width / 2, y: drag.startY - size.height / 2, ...size }\n )\n )\n } else if (drag.kind !== 'create' && preview) {\n onChange?.(drag.id, preview)\n }\n setDrag(null)\n setPreview(null)\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'absolute inset-0 z-10',\n editable && placing && 'cursor-crosshair',\n !editable && 'pointer-events-none'\n )}\n onPointerDown={startCreate}\n onPointerMove={onMove}\n onPointerUp={onUp}\n onPointerCancel={() => {\n setDrag(null)\n setPreview(null)\n }}\n data-testid={`signature-fields-page-${page}`}\n >\n {onPage.map((field) => {\n const dragging = drag && drag.kind !== 'create' && drag.id === field.id && preview\n const box = dragging ? preview! : field\n const color = colorOf(field.signer)\n const selected = editable && selectedId === field.id\n const active = !editable && activeId === field.id\n const content = renderContent?.(field)\n return (\n <div\n key={field.id}\n role={editable ? undefined : 'button'}\n tabIndex={editable ? undefined : 0}\n aria-label={editable ? undefined : `${labelOf(field)}${content ? ' (done)' : ''}`}\n className={cn(\n 'pointer-events-auto absolute flex items-center justify-center overflow-visible rounded-sm border-2 text-[11px] font-medium select-none',\n editable ? 'cursor-move' : 'cursor-pointer',\n active && 'ring-4 ring-offset-1 motion-safe:animate-pulse',\n selected && 'ring-2 ring-offset-1'\n )}\n style={{\n left: `${box.x * 100}%`,\n top: `${box.y * 100}%`,\n width: `${box.width * 100}%`,\n height: `${box.height * 100}%`,\n borderColor: color,\n borderStyle: content ? 'solid' : 'dashed',\n backgroundColor: content ? 'transparent' : `${color}22`,\n color,\n ['--tw-ring-color' as string]: color,\n }}\n onPointerDown={(e) => startField(e, field, 'move')}\n onClick={() => !editable && onActivate?.(field.id)}\n onKeyDown={(e) => {\n if (!editable && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault()\n onActivate?.(field.id)\n }\n if (editable && selected && (e.key === 'Delete' || e.key === 'Backspace')) {\n onRemove?.(field.id)\n }\n }}\n data-testid={`signature-field-${field.id}`}\n data-field-type={field.type}\n data-field-done={content ? 'true' : undefined}\n >\n {content ?? (\n <span className=\"truncate px-1\">\n {labelOf(field)}\n {field.required ? '' : ' (optional)'}\n </span>\n )}\n {selected && (\n <>\n <button\n type=\"button\"\n aria-label=\"Remove field\"\n className=\"absolute -top-2.5 -right-2.5 flex size-5 items-center justify-center rounded-full border bg-background text-foreground shadow\"\n onPointerDown={(e) => e.stopPropagation()}\n onClick={() => onRemove?.(field.id)}\n data-testid=\"signature-field-remove\"\n >\n <X className=\"size-3\" />\n </button>\n <span\n aria-hidden\n className=\"absolute -right-1.5 -bottom-1.5 size-3 cursor-nwse-resize rounded-sm border bg-background\"\n style={{ borderColor: color }}\n onPointerDown={(e) => startField(e, field, 'resize')}\n data-testid=\"signature-field-resize\"\n />\n </>\n )}\n </div>\n )\n })}\n {drag?.kind === 'create' && preview && (\n <div\n className=\"pointer-events-none absolute rounded-sm border-2 border-dashed\"\n style={{\n left: `${preview.x * 100}%`,\n top: `${preview.y * 100}%`,\n width: `${preview.width * 100}%`,\n height: `${preview.height * 100}%`,\n borderColor: '#868e96',\n }}\n />\n )}\n </div>\n )\n}\n","/**\n * Sign a document you were asked to sign, field by field. The viewer takes the signer to each of\n * their fields in turn (page by page, scrolled into view, \"Field 3 of 7\"); they adopt a signature\n * once and click each field to apply it (the date signed and their printed name fill in on\n * adoption). Finishing re-enters the password and signs every field at once; the last signer's\n * signature completes the request and the signed copy becomes the document's next version.\n * Needs a `<DocumentToolsProvider>` with a `user` inside a React Query `QueryClientProvider`.\n */\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type FormEvent,\n type ReactElement,\n} from 'react'\nimport { ArrowLeft, ArrowRight, Check } from 'lucide-react'\nimport {\n FIELD_TYPE_LABELS,\n MARK_FIELD_TYPES,\n SigningError,\n fieldsInSigningOrder,\n intentText,\n useDeclineSignatureRequest,\n useDocumentTools,\n useSavedSignature,\n useSignSignatureRequest,\n useStoreSavedSignature,\n type SignRequestSignResponse,\n type SignatureField,\n type SignatureRequest,\n} from '@arbidocs/react/document-tools'\nimport { Button, Input, Label, Progress } from '@arbidocs/react/ui'\nimport { PdfViewer as KitPdfViewer, type PdfViewerProps } from '@arbidocs/react/viewers'\nimport { ModalScaffold } from '../../settings/ModalScaffold'\nimport {\n AdoptSignatureDialog,\n TYPED_SIGNATURE_STYLE,\n type AdoptedMark,\n} from '../AdoptSignatureDialog'\nimport type { DocumentPdfViewer } from './AnnotatedPdfViewer'\nimport { SignatureFieldsOverlay } from './SignatureFieldsOverlay'\n\nexport interface GuidedSigningViewerProps extends Omit<\n PdfViewerProps,\n 'file' | 'renderPageOverlay' | 'currentPage' | 'scrollTrigger'\n> {\n /** The PDF of the request's version (`GET /view?version=`): what is signed. */\n file: Blob\n request: SignatureRequest\n signRequest?: (\n vars: import('@arbidocs/react/document-tools').SignRequestVars\n ) => Promise<SignRequestSignResponse>\n declineRequest?: () => Promise<void>\n sharedFile?: boolean\n /** The signer (usr-*): their fields are the ones walked through. */\n signer: string\n onClose: () => void\n onSigned?: (result: SignRequestSignResponse) => void\n viewer?: DocumentPdfViewer\n}\n\nconst INK = '#1c7ed6'\n\n/** \"19 October 2026\", as the signed PDF writes the date. */\nexport function signingDate(date = new Date()): string {\n return `${date.getDate()} ${date.toLocaleString('en-GB', { month: 'long' })} ${date.getFullYear()}`\n}\n\nexport function GuidedSigningViewer({\n file,\n request,\n signer,\n onClose,\n onSigned,\n signRequest,\n declineRequest,\n sharedFile = false,\n viewer: PdfViewer = KitPdfViewer,\n ...viewerProps\n}: GuidedSigningViewerProps): ReactElement {\n const { user, notify } = useDocumentTools()\n const sign = useSignSignatureRequest()\n const [submitting, setSubmitting] = useState(false)\n const signingPending = submitting || sign.isPending\n const savedSignature = useSavedSignature()\n const storeSignature = useStoreSavedSignature()\n const decline = useDeclineSignatureRequest()\n const mine = useMemo(() => fieldsInSigningOrder(request.fields, signer), [request.fields, signer])\n const [mark, setMark] = useState<AdoptedMark | null>(null)\n const [applied, setApplied] = useState<Set<string>>(new Set())\n const [index, setIndex] = useState(-1)\n const [page, setPage] = useState(1)\n const [trigger, setTrigger] = useState(0)\n const [adoptFor, setAdoptFor] = useState<SignatureField | null>(null)\n const [finishing, setFinishing] = useState(false)\n const [password, setPassword] = useState('')\n const [error, setError] = useState<string | null>(null)\n const [declining, setDeclining] = useState(false)\n const [declineReason, setDeclineReason] = useState('')\n const scrollTimer = useRef<number | undefined>(undefined)\n\n const required = mine.filter((f) => f.required)\n const done = mine.filter((f) => applied.has(f.id)).length\n const ready = required.every((f) => applied.has(f.id))\n const current = index >= 0 ? mine[index] : undefined\n\n useEffect(() => () => window.clearTimeout(scrollTimer.current), [])\n\n const goTo = useCallback(\n (i: number) => {\n const field = mine[i]\n if (!field) return\n setIndex(i)\n setPage(field.page + 1)\n setTrigger((t) => t + 1)\n // Once the page is in view, bring the field itself to the middle of the screen.\n window.clearTimeout(scrollTimer.current)\n scrollTimer.current = window.setTimeout(() => {\n document\n .querySelector(`[data-testid=\"signature-field-${field.id}\"]`)\n ?.scrollIntoView({ block: 'center', behavior: 'smooth' })\n }, 300)\n },\n [mine]\n )\n\n /** The next field still to do after `from` (wrapping), or -1 when every field is done. */\n const nextOpen = (from: number, filled: Set<string>) => {\n for (let k = 1; k <= mine.length; k++) {\n const i = (from + k) % mine.length\n if (!filled.has(mine[i]!.id)) return i\n }\n return -1\n }\n\n const apply = (field: SignatureField, base: Set<string> = applied) => {\n const next = new Set(base)\n next.add(field.id)\n setApplied(next)\n const i = nextOpen(mine.indexOf(field), next)\n if (i >= 0) goTo(i)\n else setIndex(mine.indexOf(field))\n }\n\n const activate = (id: string) => {\n const field = mine.find((f) => f.id === id)\n if (!field) return\n setIndex(mine.indexOf(field))\n if (applied.has(id)) {\n // A second click takes it back off.\n setApplied((a) => {\n const next = new Set(a)\n next.delete(id)\n return next\n })\n return\n }\n if (!mark) {\n setAdoptFor(field)\n return\n }\n apply(field)\n }\n\n const onAdopt = (adopted: AdoptedMark) => {\n setMark(adopted)\n const field = adoptFor\n setAdoptFor(null)\n // The date signed and the printed name need no click: they fill in from what was adopted.\n const filled = new Set(applied)\n for (const f of mine)\n if (f.required && (f.type === 'date' || f.type === 'name')) filled.add(f.id)\n if (field) apply(field, filled)\n else setApplied(filled)\n }\n\n const renderContent = useCallback(\n (field: SignatureField) => {\n if (!applied.has(field.id) || !mark) return null\n const { adopted, signatureUrl, initialsUrl } = mark\n const image =\n field.type === 'signature' ? signatureUrl : field.type === 'initials' ? initialsUrl : null\n if (image) {\n return (\n <img\n src={image}\n alt={field.type === 'signature' ? 'Your signature' : 'Your initials'}\n className=\"h-full w-full object-contain\"\n />\n )\n }\n const text =\n field.type === 'signature'\n ? adopted.name\n : field.type === 'initials'\n ? adopted.initials\n : field.type === 'date'\n ? signingDate()\n : adopted.name\n const typed = MARK_FIELD_TYPES.includes(field.type)\n return (\n <span\n className=\"flex h-full w-full items-center px-1 whitespace-nowrap [container-type:size]\"\n style={typed ? TYPED_SIGNATURE_STYLE : { color: '#1a1a26' }}\n >\n <span style={{ fontSize: typed ? '70cqh' : '62cqh', lineHeight: 1 }}>{text}</span>\n </span>\n )\n },\n [applied, mark]\n )\n\n const renderPageOverlay = useCallback(\n ({ pageNumber }: { pageNumber: number }) => (\n <SignatureFieldsOverlay\n page={pageNumber - 1}\n fields={mine}\n colorOf={() => INK}\n labelOf={(f) =>\n MARK_FIELD_TYPES.includes(f.type)\n ? `Sign: ${FIELD_TYPE_LABELS[f.type]}`\n : FIELD_TYPE_LABELS[f.type]\n }\n activeId={current?.id ?? null}\n onActivate={activate}\n renderContent={renderContent}\n />\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- activate reads the latest state\n [mine, current?.id, renderContent, mark, applied]\n )\n\n const submit = async (e: FormEvent) => {\n e.preventDefault()\n if (!mark || !user?.email) return\n setError(null)\n setSubmitting(true)\n try {\n const result = await (signRequest ?? sign.mutateAsync)({\n request,\n pdfBlob: file,\n email: user.email,\n password,\n adopted: mark.adopted,\n fields: mine.filter((f) => applied.has(f.id)).map((f) => f.id),\n })\n setPassword('')\n setFinishing(false)\n notify(\n result.completed\n ? sharedFile\n ? 'Everyone has signed. The completed PDF is ready to download.'\n : `Signed. Everyone has signed: the signed copy is version ${result.signed_version}.`\n : 'Signed. The others are still to sign; you will see the signed copy when they have.',\n 'success'\n )\n onSigned?.(result)\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Signing failed')\n if (err instanceof SigningError && err.reason === 'stale') setFinishing(false)\n } finally {\n setSubmitting(false)\n }\n }\n\n const onDecline = async (e: FormEvent) => {\n e.preventDefault()\n try {\n if (declineRequest) await declineRequest()\n else\n await decline.mutateAsync({ requestId: request.external_id, reason: declineReason.trim() })\n setDeclining(false)\n notify('You declined to sign. The sender has been told.', 'info')\n onClose()\n } catch (err) {\n notify(err instanceof Error ? err.message : 'Could not decline', 'error')\n }\n }\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid=\"guided-signing-viewer\">\n <div className=\"space-y-2 border-b border-border px-3 py-2 text-sm\">\n <div className=\"flex flex-wrap items-center gap-2\">\n {index < 0 ? (\n <span className=\"mr-auto\" data-testid=\"guided-signing-intro\">\n You are asked to complete {mine.length} field{mine.length === 1 ? '' : 's'}.\n {request.message ? (\n <span className=\"text-muted-foreground\"> “{request.message}”</span>\n ) : null}\n </span>\n ) : (\n <span className=\"mr-auto font-medium\" data-testid=\"guided-signing-position\">\n Field {index + 1} of {mine.length}: {current ? FIELD_TYPE_LABELS[current.type] : ''}\n {current && !current.required ? ' (optional)' : ''}\n <span className=\"ml-2 font-normal text-muted-foreground\">\n Page {current ? current.page + 1 : ''}\n </span>\n </span>\n )}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setDeclining(true)}\n data-testid=\"guided-signing-decline\"\n >\n Decline\n </Button>\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onClose}>\n Close\n </Button>\n {index < 0 ? (\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => goTo(0)}\n data-testid=\"guided-signing-start\"\n >\n Start\n <ArrowRight className=\"ml-1 size-4\" aria-hidden />\n </Button>\n ) : (\n <>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => goTo(Math.max(0, index - 1))}\n disabled={index === 0}\n aria-label=\"Previous field\"\n >\n <ArrowLeft className=\"size-4\" aria-hidden />\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => goTo(Math.min(mine.length - 1, index + 1))}\n disabled={index >= mine.length - 1}\n aria-label=\"Next field\"\n data-testid=\"guided-signing-next\"\n >\n <ArrowRight className=\"size-4\" aria-hidden />\n </Button>\n {current && !applied.has(current.id) && (\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => activate(current.id)}\n data-testid=\"guided-signing-apply\"\n >\n {MARK_FIELD_TYPES.includes(current.type) ? 'Sign here' : 'Fill in'}\n </Button>\n )}\n </>\n )}\n <Button\n type=\"button\"\n size=\"sm\"\n variant={ready ? 'default' : 'outline'}\n disabled={!ready || !mark}\n onClick={() => setFinishing(true)}\n data-testid=\"guided-signing-finish\"\n >\n <Check className=\"mr-1 size-4\" aria-hidden />\n Finish\n </Button>\n </div>\n <div className=\"flex items-center gap-3\">\n <Progress\n value={mine.length ? (done / mine.length) * 100 : 0}\n className=\"h-1.5 max-w-xs\"\n />\n <span className=\"text-muted-foreground\" data-testid=\"guided-signing-progress\">\n {done} of {mine.length} done\n </span>\n </div>\n </div>\n <div className=\"min-h-0 flex-1\">\n <PdfViewer\n {...viewerProps}\n file={file}\n currentPage={page}\n scrollTrigger={trigger}\n renderPageOverlay={renderPageOverlay}\n />\n </div>\n <AdoptSignatureDialog\n open={!!adoptFor}\n onOpenChange={(open) => !open && setAdoptFor(null)}\n defaultName={user?.name ?? ''}\n onAdopt={onAdopt}\n saved={savedSignature.data ?? null}\n onSave={async (signature) => void (await storeSignature.mutateAsync(signature))}\n />\n <ModalScaffold\n open={declining}\n onOpenChange={(open) => !decline.isPending && setDeclining(open)}\n title=\"Decline to sign\"\n description=\"The request ends for everyone and the sender is told. The document is unchanged.\"\n showDescription\n testId=\"guided-signing-decline-dialog\"\n >\n <form onSubmit={onDecline}>\n <ModalScaffold.Body>\n {!sharedFile && (\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"guided-decline-reason\">Reason (optional)</Label>\n <Input\n id=\"guided-decline-reason\"\n value={declineReason}\n maxLength={1000}\n onChange={(e) => setDeclineReason(e.target.value)}\n />\n </div>\n )}\n </ModalScaffold.Body>\n <ModalScaffold.Footer>\n <Button type=\"button\" variant=\"outline\" onClick={() => setDeclining(false)}>\n Cancel\n </Button>\n <Button type=\"submit\" variant=\"destructive\" disabled={decline.isPending}>\n Decline\n </Button>\n </ModalScaffold.Footer>\n </form>\n </ModalScaffold>\n <ModalScaffold\n open={finishing}\n onOpenChange={(open) => !signingPending && setFinishing(open)}\n title=\"Sign the document\"\n description=\"Confirm with your password. Your signature is applied to every field you completed.\"\n showDescription\n testId=\"guided-signing-confirm\"\n >\n <form onSubmit={submit}>\n <ModalScaffold.Body>\n {mark && (\n <blockquote className=\"border-l-2 border-border pl-3 text-sm text-muted-foreground\">\n {intentText({ name: mark.adopted.name })}\n </blockquote>\n )}\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"guided-sign-password\">Password</Label>\n <Input\n id=\"guided-sign-password\"\n type=\"password\"\n autoComplete=\"current-password\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n data-testid=\"guided-signing-password\"\n required\n />\n </div>\n {error && (\n <p className=\"text-sm text-red-text\" role=\"alert\" data-testid=\"guided-signing-error\">\n {error}\n </p>\n )}\n </ModalScaffold.Body>\n <ModalScaffold.Footer>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => setFinishing(false)}\n disabled={signingPending}\n >\n Cancel\n </Button>\n <Button\n type=\"submit\"\n disabled={signingPending || !password}\n data-testid=\"guided-signing-submit\"\n >\n {signingPending ? 'Signing…' : 'Sign'}\n </Button>\n </ModalScaffold.Footer>\n </form>\n </ModalScaffold>\n </div>\n )\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport {\n fileShareBytes,\n fileShareSigningRequest,\n useFileShare,\n useFileSharePdf,\n useFileShares,\n signFileShare,\n useDocumentTools,\n type FileShare,\n} from '@arbidocs/react/document-tools'\nimport { Button } from '@arbidocs/react/ui'\nimport { PdfViewer } from '@arbidocs/react/viewers'\nimport { GuidedSigningViewer } from './GuidedSigningViewer'\n\nexport function SharedFileView({\n shareId,\n onPublish,\n}: {\n shareId: string\n onPublish?: (share: FileShare) => Promise<void>\n}) {\n const { client, user, deploymentDomain, saveFile } = useDocumentTools()\n const [signing, setSigning] = useState(false)\n const [busy, setBusy] = useState(false)\n const [actionError, setActionError] = useState('')\n const detail = useFileShare(client, shareId, signing)\n const share = detail.data\n const pdf = useFileSharePdf(client, shareId, share)\n const action = useCallback(\n async (run: () => Promise<unknown>) => {\n setBusy(true)\n setActionError('')\n try {\n await run()\n await detail.refetch()\n } catch (e) {\n setActionError(e instanceof Error ? e.message : 'The action failed')\n } finally {\n setBusy(false)\n }\n },\n [detail]\n )\n useEffect(() => {\n if (share && !share.can_sign) setSigning(false)\n }, [share])\n if (detail.isPending)\n return (\n <p role=\"status\" className=\"p-6\">\n Opening shared file…\n </p>\n )\n if (detail.error)\n return (\n <p role=\"alert\" className=\"p-6\">\n {detail.error.message}\n </p>\n )\n if (!share) return null\n if (signing && pdf.data && user?.email)\n return (\n <GuidedSigningViewer\n file={pdf.data}\n request={fileShareSigningRequest(share)}\n signer={user.email.toLowerCase()}\n sharedFile\n onClose={() => setSigning(false)}\n onSigned={() => {\n setSigning(false)\n void detail.refetch()\n }}\n signRequest={(vars) => signFileShare(client, deploymentDomain ?? '', vars)}\n declineRequest={async () => {\n const result = await client.POST('/v1/file-shares/{share_id}/decline', {\n params: { path: { share_id: shareId } },\n })\n if (result.error) throw new Error('Could not decline the request')\n setSigning(false)\n await detail.refetch()\n }}\n />\n )\n const download = (kind: 'original' | 'signed') =>\n action(async () => {\n const blob = await fileShareBytes(client, shareId, kind)\n saveFile(\n blob,\n kind === 'signed'\n ? share.file_name.replace(/\\.[^.]+$/, '') + ' (signed).pdf'\n : share.file_name\n )\n })\n return (\n <main className=\"flex h-full min-h-0 flex-col\" data-testid=\"shared-file-view\">\n <header className=\"space-y-3 border-b p-4\">\n <a href=\"/shared-files\" className=\"text-sm text-primary underline\">\n Shared files\n </a>\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"mr-auto text-lg font-semibold\">\n {share.file_name} · version {share.version}\n </h1>\n <span data-testid=\"file-share-status\">\n {share.status === 'completed'\n ? 'Everyone has signed'\n : share.status === 'signing'\n ? 'Waiting for signatures'\n : share.status}\n </span>\n {share.can_sign && (\n <Button\n disabled={!pdf.data}\n onClick={() => setSigning(true)}\n data-testid=\"file-share-review-sign\"\n >\n Review and sign\n </Button>\n )}\n <Button variant=\"outline\" disabled={busy} onClick={() => void download('original')}>\n Download original\n </Button>\n {share.status === 'completed' && (\n <Button\n disabled={busy}\n onClick={() => void download('signed')}\n data-testid=\"file-share-download-signed\"\n >\n Download signed PDF\n </Button>\n )}\n {share.owner && share.status === 'completed' && !share.published_version && onPublish && (\n <Button\n disabled={busy}\n onClick={() => void action(() => onPublish(share))}\n data-testid=\"file-share-publish\"\n >\n Save signed PDF as a new document version\n </Button>\n )}\n {share.published_version && (\n <span data-testid=\"file-share-published\">\n Saved as version {share.published_version}\n </span>\n )}\n {share.owner && (\n <Button\n variant=\"outline\"\n disabled={busy}\n onClick={() =>\n void action(async () => {\n const result = await client.POST('/v1/file-shares/{share_id}/resend', {\n params: { path: { share_id: shareId } },\n })\n if (result.error) throw new Error('Could not resend the invitation')\n })\n }\n >\n Renew expired access and resend email\n </Button>\n )}\n {share.owner && share.status !== 'revoked' && (\n <Button\n variant=\"outline\"\n disabled={busy}\n onClick={() =>\n void action(async () => {\n const result = await client.DELETE('/v1/file-shares/{share_id}', {\n params: { path: { share_id: shareId } },\n })\n if (result.error) throw new Error('Could not revoke access')\n window.location.assign('/shared-files')\n })\n }\n >\n Revoke access\n </Button>\n )}\n </div>\n <p className=\"text-sm text-muted-foreground\">\n Access covers this file version only. It does not include its workspace or version\n history.\n </p>\n {share.message && <p>{share.message}</p>}\n <ul className=\"flex flex-wrap gap-x-5 gap-y-1 text-sm\" data-testid=\"file-share-recipients\">\n {share.recipients.map((r) => (\n <li key={r.email}>\n {r.email} ·{' '}\n {r.permission === 'sign'\n ? r.status === 'signed'\n ? 'Signed'\n : r.status === 'declined'\n ? 'Declined'\n : 'Signature pending'\n : 'Can view'}\n {share.owner &&\n ` · ${r.delivery_status === 'accepted' ? 'Email accepted for delivery' : r.delivery_status === 'failed' ? 'Email delivery failed' : 'Email queued'}`}\n {r.expires_at && ` · expires ${new Date(r.expires_at).toLocaleString()}`}\n </li>\n ))}\n </ul>\n {actionError && (\n <p role=\"alert\" className=\"text-destructive\">\n {actionError}\n </p>\n )}\n </header>\n <div className=\"min-h-0 flex-1\">\n {pdf.data ? (\n <PdfViewer file={pdf.data} />\n ) : pdf.error ? (\n <p role=\"alert\" className=\"p-4\">\n {pdf.error.message}\n </p>\n ) : (\n <p className=\"p-4\">\n {share.can_preview ? 'Loading PDF…' : 'Download the original file to open it.'}\n </p>\n )}\n </div>\n </main>\n )\n}\n\nexport function SharedFilesInbox() {\n const { client } = useDocumentTools()\n const listed = useFileShares(client)\n return (\n <main className=\"mx-auto max-w-3xl p-6\">\n <a href=\"/\" className=\"text-primary underline\">\n Back to ARBI\n </a>\n <h1 className=\"my-5 text-2xl font-semibold\">Shared files</h1>\n {listed.error && <p role=\"alert\">{listed.error.message}</p>}\n {listed.isPending && <p role=\"status\">Loading…</p>}\n {listed.data?.length === 0 && <p>No files have been shared with this account.</p>}\n <ul className=\"space-y-3\">\n {listed.data?.map((s: FileShare) => (\n <li key={s.external_id} className=\"rounded border p-4\">\n <a className=\"text-primary underline\" href={`/shared-files/${s.external_id}`}>\n {s.file_name} · version {s.version}\n </a>\n <p className=\"text-sm text-muted-foreground\">\n {s.owner ? 'Shared by you' : 'Shared with you'} · {s.status}\n </p>\n </li>\n ))}\n </ul>\n </main>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/document-tools/viewer/SignatureFieldsOverlay.tsx","../src/document-tools/viewer/GuidedSigningViewer.tsx","../src/document-tools/viewer/SharedFileView.tsx"],"names":["FIELD_TYPE_LABELS","useRef","useState","DEFAULT_FIELD_SIZE","jsxs","cn","Fragment","jsx","X","PdfViewer","KitPdfViewer","useDocumentTools","useSignSignatureRequest","useSavedSignature","useStoreSavedSignature","useDeclineSignatureRequest","useMemo","fieldsInSigningOrder","useEffect","useCallback","MARK_FIELD_TYPES","TYPED_SIGNATURE_STYLE","SigningError","Button","ArrowRight","ArrowLeft","Check","Progress","AdoptSignatureDialog","ModalScaffold","Label","Input","intentText","useFileShare","useFileSharePdf","fileShareSigningRequest","signFileShare","fileShareBytes","useFileShares"],"mappings":"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","file":"chunk-PSIKUQYM.cjs","sourcesContent":["/**\n * The signature fields of one PDF page, drawn over it. Coordinates are fractions of the page as\n * shown (origin top-left), pages 0-based like the API; the kit viewer's overlay fills the page box.\n *\n * - `editable`: the author's view. With a field type chosen, a click drops a field of the default\n * size and a drag draws one; a field is selected by a click, moved by dragging it and resized by\n * its corner handle; the selected one has a remove button.\n * - otherwise the signer's view: fields are buttons; `renderContent` shows what was applied.\n */\n\nimport { useRef, useState, type PointerEvent, type ReactElement, type ReactNode } from 'react'\nimport { X } from 'lucide-react'\nimport {\n DEFAULT_FIELD_SIZE,\n FIELD_TYPE_LABELS,\n type SignatureField,\n type SignatureFieldType,\n} from '@arbidocs/react/document-tools'\nimport { cn } from '@arbidocs/react/ui'\n\n/** One colour per signer, in the order they were added. */\nexport const SIGNER_COLORS = ['#1c7ed6', '#e8590c', '#2f9e44', '#9c36b5', '#c2255c', '#0c8599']\n\nconst MIN_DRAG = 0.01\n\ntype Box = { x: number; y: number; width: number; height: number }\n\nconst clamp = (v: number, lo: number, hi: number) => Math.min(hi, Math.max(lo, v))\nconst round = (v: number) => Math.round(v * 10000) / 10000\n\nfunction fit(box: Box): Box {\n const width = clamp(box.width, 0.02, 1)\n const height = clamp(box.height, 0.015, 1)\n return {\n x: round(clamp(box.x, 0, 1 - width)),\n y: round(clamp(box.y, 0, 1 - height)),\n width: round(width),\n height: round(height),\n }\n}\n\ntype Drag =\n | { kind: 'create'; startX: number; startY: number; box: Box }\n | { kind: 'move' | 'resize'; id: string; startX: number; startY: number; origin: Box }\n\nexport interface SignatureFieldsOverlayProps {\n /** 0-based page index this overlay covers. */\n page: number\n fields: SignatureField[]\n colorOf: (signer: string) => string\n labelOf?: (field: SignatureField) => string\n editable?: boolean\n /** Editing: the type a click or drag on the page creates (null: none, selection only). */\n placing?: SignatureFieldType | null\n selectedId?: string | null\n onSelect?: (id: string | null) => void\n onCreate?: (box: Box) => void\n onChange?: (id: string, box: Box) => void\n onRemove?: (id: string) => void\n /** Signing: the field the signer is on. */\n activeId?: string | null\n onActivate?: (id: string) => void\n /** Signing: what a completed field shows (the adopted signature, the date…). */\n renderContent?: (field: SignatureField) => ReactNode\n}\n\nexport function SignatureFieldsOverlay({\n page,\n fields,\n colorOf,\n labelOf = (f) => FIELD_TYPE_LABELS[f.type],\n editable = false,\n placing = null,\n selectedId = null,\n onSelect,\n onCreate,\n onChange,\n onRemove,\n activeId = null,\n onActivate,\n renderContent,\n}: SignatureFieldsOverlayProps): ReactElement {\n const ref = useRef<HTMLDivElement>(null)\n const [drag, setDrag] = useState<Drag | null>(null)\n const [preview, setPreview] = useState<Box | null>(null)\n const onPage = fields.filter((f) => f.page === page)\n\n const point = (e: PointerEvent) => {\n const r = ref.current!.getBoundingClientRect()\n return { x: (e.clientX - r.left) / r.width, y: (e.clientY - r.top) / r.height }\n }\n\n const startCreate = (e: PointerEvent<HTMLDivElement>) => {\n if (!editable || e.target !== e.currentTarget || e.button !== 0) return\n if (!placing) {\n onSelect?.(null)\n return\n }\n const p = point(e)\n e.currentTarget.setPointerCapture?.(e.pointerId)\n setDrag({ kind: 'create', startX: p.x, startY: p.y, box: { ...p, width: 0, height: 0 } })\n }\n\n const startField = (e: PointerEvent, field: SignatureField, kind: 'move' | 'resize') => {\n if (!editable || e.button !== 0) return\n e.stopPropagation()\n onSelect?.(field.id)\n const p = point(e)\n ref.current?.setPointerCapture?.(e.pointerId)\n setDrag({\n kind,\n id: field.id,\n startX: p.x,\n startY: p.y,\n origin: { x: field.x, y: field.y, width: field.width, height: field.height },\n })\n }\n\n const onMove = (e: PointerEvent) => {\n if (!drag) return\n const p = point(e)\n const dx = p.x - drag.startX\n const dy = p.y - drag.startY\n if (drag.kind === 'create') {\n setPreview({\n x: Math.min(p.x, drag.startX),\n y: Math.min(p.y, drag.startY),\n width: Math.abs(dx),\n height: Math.abs(dy),\n })\n } else if (drag.kind === 'move') {\n setPreview(fit({ ...drag.origin, x: drag.origin.x + dx, y: drag.origin.y + dy }))\n } else {\n setPreview(\n fit({ ...drag.origin, width: drag.origin.width + dx, height: drag.origin.height + dy })\n )\n }\n }\n\n const onUp = (e: PointerEvent) => {\n if (!drag) return\n const p = point(e)\n if (drag.kind === 'create' && placing) {\n const drawn = Math.abs(p.x - drag.startX) > MIN_DRAG && Math.abs(p.y - drag.startY) > MIN_DRAG\n const size = DEFAULT_FIELD_SIZE[placing]\n onCreate?.(\n fit(\n drawn && preview\n ? preview\n : { x: drag.startX - size.width / 2, y: drag.startY - size.height / 2, ...size }\n )\n )\n } else if (drag.kind !== 'create' && preview) {\n onChange?.(drag.id, preview)\n }\n setDrag(null)\n setPreview(null)\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'absolute inset-0 z-10',\n editable && placing && 'cursor-crosshair',\n !editable && 'pointer-events-none'\n )}\n onPointerDown={startCreate}\n onPointerMove={onMove}\n onPointerUp={onUp}\n onPointerCancel={() => {\n setDrag(null)\n setPreview(null)\n }}\n data-testid={`signature-fields-page-${page}`}\n >\n {onPage.map((field) => {\n const dragging = drag && drag.kind !== 'create' && drag.id === field.id && preview\n const box = dragging ? preview! : field\n const color = colorOf(field.signer)\n const selected = editable && selectedId === field.id\n const active = !editable && activeId === field.id\n const content = renderContent?.(field)\n return (\n <div\n key={field.id}\n role={editable ? undefined : 'button'}\n tabIndex={editable ? undefined : 0}\n aria-label={editable ? undefined : `${labelOf(field)}${content ? ' (done)' : ''}`}\n className={cn(\n 'pointer-events-auto absolute flex items-center justify-center overflow-visible rounded-sm border-2 text-[11px] font-medium select-none',\n editable ? 'cursor-move' : 'cursor-pointer',\n active && 'ring-4 ring-offset-1 motion-safe:animate-pulse',\n selected && 'ring-2 ring-offset-1'\n )}\n style={{\n left: `${box.x * 100}%`,\n top: `${box.y * 100}%`,\n width: `${box.width * 100}%`,\n height: `${box.height * 100}%`,\n borderColor: color,\n borderStyle: content ? 'solid' : 'dashed',\n backgroundColor: content ? 'transparent' : `${color}22`,\n color,\n ['--tw-ring-color' as string]: color,\n }}\n onPointerDown={(e) => startField(e, field, 'move')}\n onClick={() => !editable && onActivate?.(field.id)}\n onKeyDown={(e) => {\n if (!editable && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault()\n onActivate?.(field.id)\n }\n if (editable && selected && (e.key === 'Delete' || e.key === 'Backspace')) {\n onRemove?.(field.id)\n }\n }}\n data-testid={`signature-field-${field.id}`}\n data-field-type={field.type}\n data-field-done={content ? 'true' : undefined}\n >\n {content ?? (\n <span className=\"truncate px-1\">\n {labelOf(field)}\n {field.required ? '' : ' (optional)'}\n </span>\n )}\n {selected && (\n <>\n <button\n type=\"button\"\n aria-label=\"Remove field\"\n className=\"absolute -top-2.5 -right-2.5 flex size-5 items-center justify-center rounded-full border bg-background text-foreground shadow\"\n onPointerDown={(e) => e.stopPropagation()}\n onClick={() => onRemove?.(field.id)}\n data-testid=\"signature-field-remove\"\n >\n <X className=\"size-3\" />\n </button>\n <span\n aria-hidden\n className=\"absolute -right-1.5 -bottom-1.5 size-3 cursor-nwse-resize rounded-sm border bg-background\"\n style={{ borderColor: color }}\n onPointerDown={(e) => startField(e, field, 'resize')}\n data-testid=\"signature-field-resize\"\n />\n </>\n )}\n </div>\n )\n })}\n {drag?.kind === 'create' && preview && (\n <div\n className=\"pointer-events-none absolute rounded-sm border-2 border-dashed\"\n style={{\n left: `${preview.x * 100}%`,\n top: `${preview.y * 100}%`,\n width: `${preview.width * 100}%`,\n height: `${preview.height * 100}%`,\n borderColor: '#868e96',\n }}\n />\n )}\n </div>\n )\n}\n","/**\n * Sign a document you were asked to sign, field by field. The viewer takes the signer to each of\n * their fields in turn (page by page, scrolled into view, \"Field 3 of 7\"); they adopt a signature\n * once and click each field to apply it (the date signed and their printed name fill in on\n * adoption). Finishing re-enters the password and signs every field at once; the last signer's\n * signature completes the request and the signed copy becomes the document's next version.\n * Needs a `<DocumentToolsProvider>` with a `user` inside a React Query `QueryClientProvider`.\n */\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type FormEvent,\n type ReactElement,\n} from 'react'\nimport { ArrowLeft, ArrowRight, Check } from 'lucide-react'\nimport {\n FIELD_TYPE_LABELS,\n MARK_FIELD_TYPES,\n SigningError,\n fieldsInSigningOrder,\n intentText,\n useDeclineSignatureRequest,\n useDocumentTools,\n useSavedSignature,\n useSignSignatureRequest,\n useStoreSavedSignature,\n type SignRequestSignResponse,\n type SignatureField,\n type SignatureRequest,\n} from '@arbidocs/react/document-tools'\nimport { Button, Input, Label, Progress } from '@arbidocs/react/ui'\nimport { PdfViewer as KitPdfViewer, type PdfViewerProps } from '@arbidocs/react/viewers'\nimport { ModalScaffold } from '../../settings/ModalScaffold'\nimport {\n AdoptSignatureDialog,\n TYPED_SIGNATURE_STYLE,\n type AdoptedMark,\n} from '../AdoptSignatureDialog'\nimport type { DocumentPdfViewer } from './AnnotatedPdfViewer'\nimport { SignatureFieldsOverlay } from './SignatureFieldsOverlay'\n\nexport interface GuidedSigningViewerProps extends Omit<\n PdfViewerProps,\n 'file' | 'renderPageOverlay' | 'currentPage' | 'scrollTrigger'\n> {\n /** The PDF of the request's version (`GET /view?version=`): what is signed. */\n file: Blob\n request: SignatureRequest\n signRequest?: (\n vars: import('@arbidocs/react/document-tools').SignRequestVars\n ) => Promise<SignRequestSignResponse>\n declineRequest?: () => Promise<void>\n sharedFile?: boolean\n /** The signer (usr-*): their fields are the ones walked through. */\n signer: string\n onClose: () => void\n onSigned?: (result: SignRequestSignResponse) => void\n viewer?: DocumentPdfViewer\n}\n\nconst INK = '#1c7ed6'\n\n/** \"19 October 2026\", as the signed PDF writes the date. */\nexport function signingDate(date = new Date()): string {\n return `${date.getDate()} ${date.toLocaleString('en-GB', { month: 'long' })} ${date.getFullYear()}`\n}\n\nexport function GuidedSigningViewer({\n file,\n request,\n signer,\n onClose,\n onSigned,\n signRequest,\n declineRequest,\n sharedFile = false,\n viewer: PdfViewer = KitPdfViewer,\n ...viewerProps\n}: GuidedSigningViewerProps): ReactElement {\n const { user, notify } = useDocumentTools()\n const sign = useSignSignatureRequest()\n const [submitting, setSubmitting] = useState(false)\n const signingPending = submitting || sign.isPending\n const savedSignature = useSavedSignature()\n const storeSignature = useStoreSavedSignature()\n const decline = useDeclineSignatureRequest()\n const mine = useMemo(() => fieldsInSigningOrder(request.fields, signer), [request.fields, signer])\n const [mark, setMark] = useState<AdoptedMark | null>(null)\n const [applied, setApplied] = useState<Set<string>>(new Set())\n const [index, setIndex] = useState(-1)\n const [page, setPage] = useState(1)\n const [trigger, setTrigger] = useState(0)\n const [adoptFor, setAdoptFor] = useState<SignatureField | null>(null)\n const [finishing, setFinishing] = useState(false)\n const [password, setPassword] = useState('')\n const [error, setError] = useState<string | null>(null)\n const [declining, setDeclining] = useState(false)\n const [declineReason, setDeclineReason] = useState('')\n const scrollTimer = useRef<number | undefined>(undefined)\n\n const required = mine.filter((f) => f.required)\n const done = mine.filter((f) => applied.has(f.id)).length\n const ready = required.every((f) => applied.has(f.id))\n const current = index >= 0 ? mine[index] : undefined\n\n useEffect(() => () => window.clearTimeout(scrollTimer.current), [])\n\n const goTo = useCallback(\n (i: number) => {\n const field = mine[i]\n if (!field) return\n setIndex(i)\n setPage(field.page + 1)\n setTrigger((t) => t + 1)\n // Once the page is in view, bring the field itself to the middle of the screen.\n window.clearTimeout(scrollTimer.current)\n scrollTimer.current = window.setTimeout(() => {\n document\n .querySelector(`[data-testid=\"signature-field-${field.id}\"]`)\n ?.scrollIntoView({ block: 'center', behavior: 'smooth' })\n }, 300)\n },\n [mine]\n )\n\n /** The next field still to do after `from` (wrapping), or -1 when every field is done. */\n const nextOpen = (from: number, filled: Set<string>) => {\n for (let k = 1; k <= mine.length; k++) {\n const i = (from + k) % mine.length\n if (!filled.has(mine[i]!.id)) return i\n }\n return -1\n }\n\n const apply = (field: SignatureField, base: Set<string> = applied) => {\n const next = new Set(base)\n next.add(field.id)\n setApplied(next)\n const i = nextOpen(mine.indexOf(field), next)\n if (i >= 0) goTo(i)\n else setIndex(mine.indexOf(field))\n }\n\n const activate = (id: string) => {\n const field = mine.find((f) => f.id === id)\n if (!field) return\n setIndex(mine.indexOf(field))\n if (applied.has(id)) {\n // A second click takes it back off.\n setApplied((a) => {\n const next = new Set(a)\n next.delete(id)\n return next\n })\n return\n }\n if (!mark) {\n setAdoptFor(field)\n return\n }\n apply(field)\n }\n\n const onAdopt = (adopted: AdoptedMark) => {\n setMark(adopted)\n const field = adoptFor\n setAdoptFor(null)\n // The date signed and the printed name need no click: they fill in from what was adopted.\n const filled = new Set(applied)\n for (const f of mine)\n if (f.required && (f.type === 'date' || f.type === 'name')) filled.add(f.id)\n if (field) apply(field, filled)\n else setApplied(filled)\n }\n\n const renderContent = useCallback(\n (field: SignatureField) => {\n if (!applied.has(field.id) || !mark) return null\n const { adopted, signatureUrl, initialsUrl } = mark\n const image =\n field.type === 'signature' ? signatureUrl : field.type === 'initials' ? initialsUrl : null\n if (image) {\n return (\n <img\n src={image}\n alt={field.type === 'signature' ? 'Your signature' : 'Your initials'}\n className=\"h-full w-full object-contain\"\n />\n )\n }\n const text =\n field.type === 'signature'\n ? adopted.name\n : field.type === 'initials'\n ? adopted.initials\n : field.type === 'date'\n ? signingDate()\n : adopted.name\n const typed = MARK_FIELD_TYPES.includes(field.type)\n return (\n <span\n className=\"flex h-full w-full items-center px-1 whitespace-nowrap [container-type:size]\"\n style={typed ? TYPED_SIGNATURE_STYLE : { color: '#1a1a26' }}\n >\n <span style={{ fontSize: typed ? '70cqh' : '62cqh', lineHeight: 1 }}>{text}</span>\n </span>\n )\n },\n [applied, mark]\n )\n\n const renderPageOverlay = useCallback(\n ({ pageNumber }: { pageNumber: number }) => (\n <SignatureFieldsOverlay\n page={pageNumber - 1}\n fields={mine}\n colorOf={() => INK}\n labelOf={(f) =>\n MARK_FIELD_TYPES.includes(f.type)\n ? `Sign: ${FIELD_TYPE_LABELS[f.type]}`\n : FIELD_TYPE_LABELS[f.type]\n }\n activeId={current?.id ?? null}\n onActivate={activate}\n renderContent={renderContent}\n />\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- activate reads the latest state\n [mine, current?.id, renderContent, mark, applied]\n )\n\n const submit = async (e: FormEvent) => {\n e.preventDefault()\n if (!mark || !user?.email) return\n setError(null)\n setSubmitting(true)\n try {\n const result = await (signRequest ?? sign.mutateAsync)({\n request,\n pdfBlob: file,\n email: user.email,\n password,\n adopted: mark.adopted,\n fields: mine.filter((f) => applied.has(f.id)).map((f) => f.id),\n })\n setPassword('')\n setFinishing(false)\n notify(\n result.completed\n ? sharedFile\n ? 'Everyone has signed. The completed PDF is ready to download.'\n : `Signed. Everyone has signed: the signed copy is version ${result.signed_version}.`\n : 'Signed. The others are still to sign; you will see the signed copy when they have.',\n 'success'\n )\n onSigned?.(result)\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Signing failed')\n if (err instanceof SigningError && err.reason === 'stale') setFinishing(false)\n } finally {\n setSubmitting(false)\n }\n }\n\n const onDecline = async (e: FormEvent) => {\n e.preventDefault()\n try {\n if (declineRequest) await declineRequest()\n else\n await decline.mutateAsync({ requestId: request.external_id, reason: declineReason.trim() })\n setDeclining(false)\n notify('You declined to sign. The sender has been told.', 'info')\n onClose()\n } catch (err) {\n notify(err instanceof Error ? err.message : 'Could not decline', 'error')\n }\n }\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid=\"guided-signing-viewer\">\n <div className=\"space-y-2 border-b border-border px-3 py-2 text-sm\">\n <div className=\"flex flex-wrap items-center gap-2\">\n {index < 0 ? (\n <span className=\"mr-auto\" data-testid=\"guided-signing-intro\">\n You are asked to complete {mine.length} field{mine.length === 1 ? '' : 's'}.\n {request.message ? (\n <span className=\"text-muted-foreground\"> “{request.message}”</span>\n ) : null}\n </span>\n ) : (\n <span className=\"mr-auto font-medium\" data-testid=\"guided-signing-position\">\n Field {index + 1} of {mine.length}: {current ? FIELD_TYPE_LABELS[current.type] : ''}\n {current && !current.required ? ' (optional)' : ''}\n <span className=\"ml-2 font-normal text-muted-foreground\">\n Page {current ? current.page + 1 : ''}\n </span>\n </span>\n )}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setDeclining(true)}\n data-testid=\"guided-signing-decline\"\n >\n Decline\n </Button>\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onClose}>\n Close\n </Button>\n {index < 0 ? (\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => goTo(0)}\n data-testid=\"guided-signing-start\"\n >\n Start\n <ArrowRight className=\"ml-1 size-4\" aria-hidden />\n </Button>\n ) : (\n <>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => goTo(Math.max(0, index - 1))}\n disabled={index === 0}\n aria-label=\"Previous field\"\n >\n <ArrowLeft className=\"size-4\" aria-hidden />\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => goTo(Math.min(mine.length - 1, index + 1))}\n disabled={index >= mine.length - 1}\n aria-label=\"Next field\"\n data-testid=\"guided-signing-next\"\n >\n <ArrowRight className=\"size-4\" aria-hidden />\n </Button>\n {current && !applied.has(current.id) && (\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => activate(current.id)}\n data-testid=\"guided-signing-apply\"\n >\n {MARK_FIELD_TYPES.includes(current.type) ? 'Sign here' : 'Fill in'}\n </Button>\n )}\n </>\n )}\n <Button\n type=\"button\"\n size=\"sm\"\n variant={ready ? 'default' : 'outline'}\n disabled={!ready || !mark}\n onClick={() => setFinishing(true)}\n data-testid=\"guided-signing-finish\"\n >\n <Check className=\"mr-1 size-4\" aria-hidden />\n Finish\n </Button>\n </div>\n <div className=\"flex items-center gap-3\">\n <Progress\n value={mine.length ? (done / mine.length) * 100 : 0}\n className=\"h-1.5 max-w-xs\"\n />\n <span className=\"text-muted-foreground\" data-testid=\"guided-signing-progress\">\n {done} of {mine.length} done\n </span>\n </div>\n </div>\n <div className=\"min-h-0 flex-1\">\n <PdfViewer\n {...viewerProps}\n file={file}\n currentPage={page}\n scrollTrigger={trigger}\n renderPageOverlay={renderPageOverlay}\n />\n </div>\n <AdoptSignatureDialog\n open={!!adoptFor}\n onOpenChange={(open) => !open && setAdoptFor(null)}\n defaultName={user?.name ?? ''}\n onAdopt={onAdopt}\n saved={savedSignature.data ?? null}\n onSave={async (signature) => void (await storeSignature.mutateAsync(signature))}\n />\n <ModalScaffold\n open={declining}\n onOpenChange={(open) => !decline.isPending && setDeclining(open)}\n title=\"Decline to sign\"\n description=\"The request ends for everyone and the sender is told. The document is unchanged.\"\n showDescription\n testId=\"guided-signing-decline-dialog\"\n >\n <form onSubmit={onDecline}>\n <ModalScaffold.Body>\n {!sharedFile && (\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"guided-decline-reason\">Reason (optional)</Label>\n <Input\n id=\"guided-decline-reason\"\n value={declineReason}\n maxLength={1000}\n onChange={(e) => setDeclineReason(e.target.value)}\n />\n </div>\n )}\n </ModalScaffold.Body>\n <ModalScaffold.Footer>\n <Button type=\"button\" variant=\"outline\" onClick={() => setDeclining(false)}>\n Cancel\n </Button>\n <Button type=\"submit\" variant=\"destructive\" disabled={decline.isPending}>\n Decline\n </Button>\n </ModalScaffold.Footer>\n </form>\n </ModalScaffold>\n <ModalScaffold\n open={finishing}\n onOpenChange={(open) => !signingPending && setFinishing(open)}\n title=\"Sign the document\"\n description=\"Confirm with your password. Your signature is applied to every field you completed.\"\n showDescription\n testId=\"guided-signing-confirm\"\n >\n <form onSubmit={submit}>\n <ModalScaffold.Body>\n {mark && (\n <blockquote className=\"border-l-2 border-border pl-3 text-sm text-muted-foreground\">\n {intentText({ name: mark.adopted.name })}\n </blockquote>\n )}\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"guided-sign-password\">Password</Label>\n <Input\n id=\"guided-sign-password\"\n type=\"password\"\n autoComplete=\"current-password\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n data-testid=\"guided-signing-password\"\n required\n />\n </div>\n {error && (\n <p className=\"text-sm text-red-text\" role=\"alert\" data-testid=\"guided-signing-error\">\n {error}\n </p>\n )}\n </ModalScaffold.Body>\n <ModalScaffold.Footer>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => setFinishing(false)}\n disabled={signingPending}\n >\n Cancel\n </Button>\n <Button\n type=\"submit\"\n disabled={signingPending || !password}\n data-testid=\"guided-signing-submit\"\n >\n {signingPending ? 'Signing…' : 'Sign'}\n </Button>\n </ModalScaffold.Footer>\n </form>\n </ModalScaffold>\n </div>\n )\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport {\n fileShareBytes,\n fileShareSigningRequest,\n useFileShare,\n useFileSharePdf,\n useFileShares,\n signFileShare,\n useDocumentTools,\n type FileShare,\n} from '@arbidocs/react/document-tools'\nimport { Button } from '@arbidocs/react/ui'\nimport { PdfViewer } from '@arbidocs/react/viewers'\nimport { GuidedSigningViewer } from './GuidedSigningViewer'\n\nexport function SharedFileView({\n shareId,\n onPublish,\n}: {\n shareId: string\n onPublish?: (share: FileShare) => Promise<void>\n}) {\n const { client, user, deploymentDomain, saveFile } = useDocumentTools()\n const [signing, setSigning] = useState(false)\n const [busy, setBusy] = useState(false)\n const [actionError, setActionError] = useState('')\n const detail = useFileShare(client, shareId, signing)\n const share = detail.data\n const pdf = useFileSharePdf(client, shareId, share)\n const action = useCallback(\n async (run: () => Promise<unknown>) => {\n setBusy(true)\n setActionError('')\n try {\n await run()\n await detail.refetch()\n } catch (e) {\n setActionError(e instanceof Error ? e.message : 'The action failed')\n } finally {\n setBusy(false)\n }\n },\n [detail]\n )\n useEffect(() => {\n if (share && !share.can_sign) setSigning(false)\n }, [share])\n if (detail.isPending)\n return (\n <p role=\"status\" className=\"p-6\">\n Opening shared file…\n </p>\n )\n if (detail.error)\n return (\n <p role=\"alert\" className=\"p-6\">\n {detail.error.message}\n </p>\n )\n if (!share) return null\n if (signing && pdf.data && user?.email)\n return (\n <GuidedSigningViewer\n file={pdf.data}\n request={fileShareSigningRequest(share)}\n signer={user.email.toLowerCase()}\n sharedFile\n onClose={() => setSigning(false)}\n onSigned={() => {\n setSigning(false)\n void detail.refetch()\n }}\n signRequest={(vars) => signFileShare(client, deploymentDomain ?? '', vars)}\n declineRequest={async () => {\n const result = await client.POST('/v1/file-shares/{share_id}/decline', {\n params: { path: { share_id: shareId } },\n })\n if (result.error) throw new Error('Could not decline the request')\n setSigning(false)\n await detail.refetch()\n }}\n />\n )\n const download = (kind: 'original' | 'signed') =>\n action(async () => {\n const blob = await fileShareBytes(client, shareId, kind)\n saveFile(\n blob,\n kind === 'signed'\n ? share.file_name.replace(/\\.[^.]+$/, '') + ' (signed).pdf'\n : share.file_name\n )\n })\n return (\n <main className=\"flex h-full min-h-0 flex-col\" data-testid=\"shared-file-view\">\n <header className=\"space-y-3 border-b p-4\">\n <a href=\"/shared-files\" className=\"text-sm text-primary underline\">\n Shared files\n </a>\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"mr-auto text-lg font-semibold\">\n {share.file_name} · version {share.version}\n </h1>\n <span data-testid=\"file-share-status\">\n {share.status === 'completed'\n ? 'Everyone has signed'\n : share.status === 'signing'\n ? 'Waiting for signatures'\n : share.status}\n </span>\n {share.can_sign && (\n <Button\n disabled={!pdf.data}\n onClick={() => setSigning(true)}\n data-testid=\"file-share-review-sign\"\n >\n Review and sign\n </Button>\n )}\n <Button variant=\"outline\" disabled={busy} onClick={() => void download('original')}>\n Download original\n </Button>\n {share.status === 'completed' && (\n <Button\n disabled={busy}\n onClick={() => void download('signed')}\n data-testid=\"file-share-download-signed\"\n >\n Download signed PDF\n </Button>\n )}\n {share.owner && share.status === 'completed' && !share.published_version && onPublish && (\n <Button\n disabled={busy}\n onClick={() => void action(() => onPublish(share))}\n data-testid=\"file-share-publish\"\n >\n Save signed PDF as a new document version\n </Button>\n )}\n {share.published_version && (\n <span data-testid=\"file-share-published\">\n Saved as version {share.published_version}\n </span>\n )}\n {share.owner && (\n <Button\n variant=\"outline\"\n disabled={busy}\n onClick={() =>\n void action(async () => {\n const result = await client.POST('/v1/file-shares/{share_id}/resend', {\n params: { path: { share_id: shareId } },\n })\n if (result.error) throw new Error('Could not resend the invitation')\n })\n }\n >\n Renew expired access and resend email\n </Button>\n )}\n {share.owner && share.status !== 'revoked' && (\n <Button\n variant=\"outline\"\n disabled={busy}\n onClick={() =>\n void action(async () => {\n const result = await client.DELETE('/v1/file-shares/{share_id}', {\n params: { path: { share_id: shareId } },\n })\n if (result.error) throw new Error('Could not revoke access')\n window.location.assign('/shared-files')\n })\n }\n >\n Revoke access\n </Button>\n )}\n </div>\n <p className=\"text-sm text-muted-foreground\">\n Access covers this file version only. It does not include its workspace or version\n history.\n </p>\n {share.message && <p>{share.message}</p>}\n <ul className=\"flex flex-wrap gap-x-5 gap-y-1 text-sm\" data-testid=\"file-share-recipients\">\n {share.recipients.map((r) => (\n <li key={r.email}>\n {r.email} ·{' '}\n {r.permission === 'sign'\n ? r.status === 'signed'\n ? 'Signed'\n : r.status === 'declined'\n ? 'Declined'\n : 'Signature pending'\n : 'Can view'}\n {share.owner &&\n ` · ${r.delivery_status === 'accepted' ? 'Email accepted for delivery' : r.delivery_status === 'failed' ? 'Email delivery failed' : 'Email queued'}`}\n {r.expires_at && ` · expires ${new Date(r.expires_at).toLocaleString()}`}\n </li>\n ))}\n </ul>\n {actionError && (\n <p role=\"alert\" className=\"text-destructive\">\n {actionError}\n </p>\n )}\n </header>\n <div className=\"min-h-0 flex-1\">\n {pdf.data ? (\n <PdfViewer file={pdf.data} />\n ) : pdf.error ? (\n <p role=\"alert\" className=\"p-4\">\n {pdf.error.message}\n </p>\n ) : (\n <p className=\"p-4\">\n {share.can_preview ? 'Loading PDF…' : 'Download the original file to open it.'}\n </p>\n )}\n </div>\n </main>\n )\n}\n\nexport function SharedFilesInbox() {\n const { client } = useDocumentTools()\n const listed = useFileShares(client)\n return (\n <main className=\"mx-auto max-w-3xl p-6\">\n <a href=\"/\" className=\"text-primary underline\">\n Back to ARBI\n </a>\n <h1 className=\"my-5 text-2xl font-semibold\">Shared files</h1>\n {listed.error && <p role=\"alert\">{listed.error.message}</p>}\n {listed.isPending && <p role=\"status\">Loading…</p>}\n {listed.data?.length === 0 && <p>No files have been shared with this account.</p>}\n <ul className=\"space-y-3\">\n {listed.data?.map((s: FileShare) => (\n <li key={s.external_id} className=\"rounded border p-4\">\n <a className=\"text-primary underline\" href={`/shared-files/${s.external_id}`}>\n {s.file_name} · version {s.version}\n </a>\n <p className=\"text-sm text-muted-foreground\">\n {s.owner ? 'Shared by you' : 'Shared with you'} · {s.status}\n </p>\n </li>\n ))}\n </ul>\n </main>\n )\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { SettingsCard, SettingsRow, SettingsPanel, SettingsSection } from './chunk-
|
|
2
|
+
import { SettingsCard, SettingsRow, SettingsDisclosure, SettingsPanel, SettingsSection } from './chunk-MZA7GMOH.js';
|
|
3
3
|
import { UsageMeter } from './chunk-66TA5IBN.js';
|
|
4
4
|
import { getFontPairing } from './chunk-NHZK64TQ.js';
|
|
5
5
|
import { ToneBadge } from './chunk-5LXQPP2K.js';
|
|
@@ -3634,7 +3634,7 @@ var DEFAULT_PROFILE_CARD_LABELS = {
|
|
|
3634
3634
|
save: "Save",
|
|
3635
3635
|
cancel: "Cancel",
|
|
3636
3636
|
sso: "SSO",
|
|
3637
|
-
ssoTooltip: "
|
|
3637
|
+
ssoTooltip: "This email comes from your sign-in provider.",
|
|
3638
3638
|
change: "Change",
|
|
3639
3639
|
newEmailAddress: "New email address",
|
|
3640
3640
|
emailPlaceholder: "you@example.com",
|
|
@@ -3651,6 +3651,7 @@ var DEFAULT_PROFILE_CARD_LABELS = {
|
|
|
3651
3651
|
function ProfileCard({
|
|
3652
3652
|
avatar,
|
|
3653
3653
|
name,
|
|
3654
|
+
nameBadge,
|
|
3654
3655
|
email,
|
|
3655
3656
|
isSso,
|
|
3656
3657
|
isVerified = false,
|
|
@@ -3664,61 +3665,73 @@ function ProfileCard({
|
|
|
3664
3665
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-5", children: [
|
|
3665
3666
|
avatar,
|
|
3666
3667
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1 space-y-3", children: [
|
|
3667
|
-
|
|
3668
|
-
/* @__PURE__ */
|
|
3669
|
-
/* @__PURE__ */
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
|
|
3673
|
-
|
|
3674
|
-
|
|
3675
|
-
|
|
3676
|
-
|
|
3677
|
-
|
|
3678
|
-
|
|
3679
|
-
|
|
3680
|
-
|
|
3681
|
-
|
|
3682
|
-
|
|
3683
|
-
|
|
3684
|
-
|
|
3685
|
-
|
|
3686
|
-
|
|
3687
|
-
|
|
3688
|
-
|
|
3689
|
-
|
|
3690
|
-
/* @__PURE__ */ jsxs(
|
|
3691
|
-
|
|
3692
|
-
|
|
3693
|
-
|
|
3694
|
-
|
|
3695
|
-
|
|
3696
|
-
|
|
3697
|
-
|
|
3698
|
-
|
|
3699
|
-
|
|
3700
|
-
|
|
3701
|
-
|
|
3702
|
-
|
|
3703
|
-
|
|
3704
|
-
|
|
3705
|
-
|
|
3706
|
-
|
|
3707
|
-
|
|
3708
|
-
|
|
3709
|
-
|
|
3710
|
-
|
|
3711
|
-
|
|
3712
|
-
|
|
3713
|
-
type: "button",
|
|
3714
|
-
onClick: name.onStartEdit,
|
|
3715
|
-
className: "-mx-2 w-full rounded-md px-2 py-1 text-left transition-colors hover:bg-background/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11",
|
|
3716
|
-
children: /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
3717
|
-
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-heading text-xl font-semibold text-foreground", children: name.display }),
|
|
3718
|
-
/* @__PURE__ */ jsx(Pencil, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" })
|
|
3668
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3669
|
+
/* @__PURE__ */ jsx("div", { className: "min-w-0 flex-1", children: name.isEditing ? /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
3670
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 @xl:flex-row", children: [
|
|
3671
|
+
/* @__PURE__ */ jsx(
|
|
3672
|
+
Input,
|
|
3673
|
+
{
|
|
3674
|
+
value: name.givenName,
|
|
3675
|
+
onChange: (e) => name.onGivenNameChange(e.target.value),
|
|
3676
|
+
placeholder: l.firstName,
|
|
3677
|
+
className: "flex-1",
|
|
3678
|
+
autoFocus: true
|
|
3679
|
+
}
|
|
3680
|
+
),
|
|
3681
|
+
/* @__PURE__ */ jsx(
|
|
3682
|
+
Input,
|
|
3683
|
+
{
|
|
3684
|
+
value: name.familyName,
|
|
3685
|
+
onChange: (e) => name.onFamilyNameChange(e.target.value),
|
|
3686
|
+
placeholder: l.lastName,
|
|
3687
|
+
className: "flex-1"
|
|
3688
|
+
}
|
|
3689
|
+
)
|
|
3690
|
+
] }),
|
|
3691
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3692
|
+
/* @__PURE__ */ jsxs(
|
|
3693
|
+
Button,
|
|
3694
|
+
{
|
|
3695
|
+
onClick: name.onSave,
|
|
3696
|
+
size: "sm",
|
|
3697
|
+
disabled: !name.givenName.trim() || name.isSaving,
|
|
3698
|
+
children: [
|
|
3699
|
+
name.isSaving ? /* @__PURE__ */ jsx(Loader2, { className: "mr-1 h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx(Check, { className: "mr-1 h-4 w-4" }),
|
|
3700
|
+
l.save
|
|
3701
|
+
]
|
|
3702
|
+
}
|
|
3703
|
+
),
|
|
3704
|
+
/* @__PURE__ */ jsx(
|
|
3705
|
+
Button,
|
|
3706
|
+
{
|
|
3707
|
+
onClick: name.onCancel,
|
|
3708
|
+
size: "sm",
|
|
3709
|
+
variant: "ghost",
|
|
3710
|
+
disabled: name.isSaving,
|
|
3711
|
+
children: l.cancel
|
|
3712
|
+
}
|
|
3713
|
+
)
|
|
3719
3714
|
] })
|
|
3720
|
-
}
|
|
3721
|
-
|
|
3715
|
+
] }) : isVerified ? /* @__PURE__ */ jsxs("div", { className: "-mx-2 w-full px-2 py-1", "data-testid": "verified-name", children: [
|
|
3716
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
3717
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-heading text-xl font-semibold text-foreground", children: name.display }),
|
|
3718
|
+
/* @__PURE__ */ jsx(VerifiedBadge, { className: "h-4 w-4" })
|
|
3719
|
+
] }),
|
|
3720
|
+
/* @__PURE__ */ jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: l.verifiedNameLocked })
|
|
3721
|
+
] }) : /* @__PURE__ */ jsx(
|
|
3722
|
+
"button",
|
|
3723
|
+
{
|
|
3724
|
+
type: "button",
|
|
3725
|
+
onClick: name.onStartEdit,
|
|
3726
|
+
className: "-mx-2 w-full rounded-md px-2 py-1 text-left transition-colors hover:bg-background/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11",
|
|
3727
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
3728
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-heading text-xl font-semibold text-foreground", children: name.display }),
|
|
3729
|
+
/* @__PURE__ */ jsx(Pencil, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" })
|
|
3730
|
+
] })
|
|
3731
|
+
}
|
|
3732
|
+
) }),
|
|
3733
|
+
!name.isEditing && nameBadge
|
|
3734
|
+
] }),
|
|
3722
3735
|
!emailChange && /* @__PURE__ */ jsxs("div", { className: "-mx-2 flex min-w-0 items-center gap-2 px-2 py-1", children: [
|
|
3723
3736
|
/* @__PURE__ */ jsx(Mail, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" }),
|
|
3724
3737
|
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate text-sm text-muted-foreground", children: email }),
|
|
@@ -4233,24 +4246,6 @@ function QuotaExceededDialogView({
|
|
|
4233
4246
|
] })
|
|
4234
4247
|
] }) });
|
|
4235
4248
|
}
|
|
4236
|
-
function WelcomeProjectPicker({
|
|
4237
|
-
value,
|
|
4238
|
-
options,
|
|
4239
|
-
onChange,
|
|
4240
|
-
testId = "welcome-modal-project-select"
|
|
4241
|
-
}) {
|
|
4242
|
-
return /* @__PURE__ */ jsxs(Select, { value, onValueChange: onChange, children: [
|
|
4243
|
-
/* @__PURE__ */ jsx(
|
|
4244
|
-
SelectTrigger,
|
|
4245
|
-
{
|
|
4246
|
-
className: "h-7 w-auto max-w-[9.5rem] shrink-0 gap-1 border-none bg-muted px-2 text-xs font-medium pointer-coarse:h-11",
|
|
4247
|
-
"data-testid": testId,
|
|
4248
|
-
children: /* @__PURE__ */ jsx(SelectValue, {})
|
|
4249
|
-
}
|
|
4250
|
-
),
|
|
4251
|
-
/* @__PURE__ */ jsx(SelectContent, { align: "end", children: options.map((o) => /* @__PURE__ */ jsx(SelectItem, { value: o.id, children: o.name }, o.id)) })
|
|
4252
|
-
] });
|
|
4253
|
-
}
|
|
4254
4249
|
function ProjectGroup({ children }) {
|
|
4255
4250
|
return /* @__PURE__ */ jsx("div", { "data-slot": "project-group", className: "space-y-2", children });
|
|
4256
4251
|
}
|
|
@@ -4528,6 +4523,7 @@ function Problem({
|
|
|
4528
4523
|
] });
|
|
4529
4524
|
}
|
|
4530
4525
|
function IdentityVerificationCard({
|
|
4526
|
+
collapsible = false,
|
|
4531
4527
|
flow,
|
|
4532
4528
|
onManageBilling,
|
|
4533
4529
|
labels
|
|
@@ -4568,10 +4564,11 @@ function IdentityVerificationCard({
|
|
|
4568
4564
|
resuming ? l.continue : l.verify
|
|
4569
4565
|
] });
|
|
4570
4566
|
}
|
|
4571
|
-
|
|
4572
|
-
/* @__PURE__ */ jsx(SettingsRow, { label: l.title, description, children: action }),
|
|
4567
|
+
const card = /* @__PURE__ */ jsxs(SettingsCard, { padding: "sm", "data-testid": "identity-verification-card", children: [
|
|
4568
|
+
/* @__PURE__ */ jsx(SettingsRow, { label: collapsible ? null : l.title, description, children: action }),
|
|
4573
4569
|
!flow.isOpen && /* @__PURE__ */ jsx(Problem, { flow, onManageBilling, label: l.manageBilling })
|
|
4574
4570
|
] });
|
|
4571
|
+
return collapsible ? /* @__PURE__ */ jsx(SettingsDisclosure, { title: l.title, testId: "identity-verification-settings", children: card }) : card;
|
|
4575
4572
|
}
|
|
4576
4573
|
function IdentityVerificationDialog({
|
|
4577
4574
|
flow,
|
|
@@ -4887,6 +4884,6 @@ function buildInvertedIndex(items, getId, getKeys) {
|
|
|
4887
4884
|
return index;
|
|
4888
4885
|
}
|
|
4889
4886
|
|
|
4890
|
-
export { ActiveSessionsDialog, AppearanceSettings, AvatarPicker, CONVERSATION_TITLE_MAX, CheckoutDialogFrame, ConfigSwitcherBar, ConnectionCard, ConnectionsEmpty, ConnectionsError, ConnectionsLoading, ConversationTitleSection, DEFAULT_ACTIVE_SESSIONS_DIALOG_LABELS, DEFAULT_APPEARANCE_PAIRING_IDS, DEFAULT_AVATAR_PICKER_LABELS, DEFAULT_CHECKOUT_DIALOG_LABELS, DEFAULT_CONFIG_SWITCHER_BAR_LABELS, DEFAULT_CONNECTION_CARD_LABELS, DEFAULT_CONVERSATION_TITLE_SECTION_LABELS, DEFAULT_DAILY_CAP_FIELD_LABELS, DEFAULT_DELETE_ACCOUNT_DIALOG_LABELS, DEFAULT_EMAIL_WORKSPACE_DIALOG_LABELS, DEFAULT_ERROR_DIALOG_LABELS, DEFAULT_IDENTITY_VERIFICATION_LABELS, DEFAULT_INVITE_CONTACTS_DIALOG_LABELS, DEFAULT_INVOICES_DIALOG_LABELS, DEFAULT_LOGOUT_DIALOG_LABELS, DEFAULT_MODEL_SELECTION_SECTION_LABELS, DEFAULT_PASSWORD_CHANGE_DIALOG_LABELS, DEFAULT_PLAN_CARD_LABELS, DEFAULT_PROFILE_CARD_LABELS, DEFAULT_PROJECT_DETAIL_HEADER_LABELS, DEFAULT_PROJECT_LIST_LABELS, DEFAULT_QUOTA_EXCEEDED_DIALOG_LABELS, DEFAULT_REFERRAL_REWARD_LABELS, DEFAULT_RENAME_DIALOG_LABELS, DEFAULT_SHARED_PROJECTS_SECTION_LABELS, DEFAULT_SUBSCRIPTION_STATUS_LABELS, DEFAULT_SUPPORT_PANEL_LABELS, DEFAULT_SYNC_DIALOG_FOOTER_LABELS, DEFAULT_SYNC_FOLDER_ROW_LABELS, DEFAULT_TIPS_EDITOR_LABELS, DEFAULT_USAGE_LINE_CHART_LABELS, DEFAULT_USAGE_PANEL_LABELS, DEFAULT_USAGE_PROPORTION_BAR_LABELS, DEFAULT_WELCOME_DIALOG_LABELS, DEFAULT_WORK_OFFLINE_LABELS, DailyCapField, DeleteAccountDialog, DraggableHeader, EMAIL_NOTIFICATION_CATEGORIES, EMAIL_NOTIFICATION_KEYS, EmailWorkspaceDialogView, ErrorDialogView, FilterChip, FloatingPanel, IdentityVerificationCard, IdentityVerificationDialog, InviteContactsDialog, InvoicesDialog, JsonTree, LogoutDialog, MessageJsonTree, ModelProviderLabel, ModelSelectionSection, MoreInfo, MoreInfoList, NotificationCategoryList, PanelActionsRow, PanelAddButton, PanelFrame, PanelFrameBody, PanelNote, PanelScroll, PanelTitleBar, PasswordChangeDialog, PlanActionButton, PlanActionRow, PlanBadge, PlanCard, PlanCardGrid, PlanDialogFrame, PlanInfoPopover, PlanNotice, PlanPickerCard, PlanPickerHeader, PlanStack, PlanTierOption, PremiumModelsFrame, PricingToggle, ProfileCard, ProjectDetailHeader, ProjectDetailSection, ProjectGroup, ProjectList, ProjectRow, PromoCodeInput, QuotaExceededDialogView, QuotaMeter, ReferralRewardBadge, ReferralRewardNote, ReferralRewardSummary, RenameDialog, RequireVerified, SegmentedControl, ServerConnectionButton, SettingsPage, SettingsSwitchGroup, SettingsSwitchRow, SharedProjectRow, SharedProjectsSection, SubscriptionStatusView, SupportPanel, SupportUnavailable, SyncCheckList, SyncDialogBody, SyncDialogFooter, SyncField, SyncFolderRow, SyncFolderStatus, SyncLinkButton, SyncLinkRow, SyncLoading, SyncNote, SyncOptionToggle, SyncOptions, SyncReconnectNotice, SyncSelect, SyncSmallNote, SyncTreeFrame, ThreadPreviewDialog, TipsEditorDialog, UsageActionButton, UsageLegend, UsageLineChart, UsagePanel, UsageProportionBar, UsageQuotaHint, UsageSection, UsageSummary, UsageToggle, WelcomeDialog,
|
|
4891
|
-
//# sourceMappingURL=chunk-
|
|
4892
|
-
//# sourceMappingURL=chunk-
|
|
4887
|
+
export { ActiveSessionsDialog, AppearanceSettings, AvatarPicker, CONVERSATION_TITLE_MAX, CheckoutDialogFrame, ConfigSwitcherBar, ConnectionCard, ConnectionsEmpty, ConnectionsError, ConnectionsLoading, ConversationTitleSection, DEFAULT_ACTIVE_SESSIONS_DIALOG_LABELS, DEFAULT_APPEARANCE_PAIRING_IDS, DEFAULT_AVATAR_PICKER_LABELS, DEFAULT_CHECKOUT_DIALOG_LABELS, DEFAULT_CONFIG_SWITCHER_BAR_LABELS, DEFAULT_CONNECTION_CARD_LABELS, DEFAULT_CONVERSATION_TITLE_SECTION_LABELS, DEFAULT_DAILY_CAP_FIELD_LABELS, DEFAULT_DELETE_ACCOUNT_DIALOG_LABELS, DEFAULT_EMAIL_WORKSPACE_DIALOG_LABELS, DEFAULT_ERROR_DIALOG_LABELS, DEFAULT_IDENTITY_VERIFICATION_LABELS, DEFAULT_INVITE_CONTACTS_DIALOG_LABELS, DEFAULT_INVOICES_DIALOG_LABELS, DEFAULT_LOGOUT_DIALOG_LABELS, DEFAULT_MODEL_SELECTION_SECTION_LABELS, DEFAULT_PASSWORD_CHANGE_DIALOG_LABELS, DEFAULT_PLAN_CARD_LABELS, DEFAULT_PROFILE_CARD_LABELS, DEFAULT_PROJECT_DETAIL_HEADER_LABELS, DEFAULT_PROJECT_LIST_LABELS, DEFAULT_QUOTA_EXCEEDED_DIALOG_LABELS, DEFAULT_REFERRAL_REWARD_LABELS, DEFAULT_RENAME_DIALOG_LABELS, DEFAULT_SHARED_PROJECTS_SECTION_LABELS, DEFAULT_SUBSCRIPTION_STATUS_LABELS, DEFAULT_SUPPORT_PANEL_LABELS, DEFAULT_SYNC_DIALOG_FOOTER_LABELS, DEFAULT_SYNC_FOLDER_ROW_LABELS, DEFAULT_TIPS_EDITOR_LABELS, DEFAULT_USAGE_LINE_CHART_LABELS, DEFAULT_USAGE_PANEL_LABELS, DEFAULT_USAGE_PROPORTION_BAR_LABELS, DEFAULT_WELCOME_DIALOG_LABELS, DEFAULT_WORK_OFFLINE_LABELS, DailyCapField, DeleteAccountDialog, DraggableHeader, EMAIL_NOTIFICATION_CATEGORIES, EMAIL_NOTIFICATION_KEYS, EmailWorkspaceDialogView, ErrorDialogView, FilterChip, FloatingPanel, IdentityVerificationCard, IdentityVerificationDialog, InviteContactsDialog, InvoicesDialog, JsonTree, LogoutDialog, MessageJsonTree, ModelProviderLabel, ModelSelectionSection, MoreInfo, MoreInfoList, NotificationCategoryList, PanelActionsRow, PanelAddButton, PanelFrame, PanelFrameBody, PanelNote, PanelScroll, PanelTitleBar, PasswordChangeDialog, PlanActionButton, PlanActionRow, PlanBadge, PlanCard, PlanCardGrid, PlanDialogFrame, PlanInfoPopover, PlanNotice, PlanPickerCard, PlanPickerHeader, PlanStack, PlanTierOption, PremiumModelsFrame, PricingToggle, ProfileCard, ProjectDetailHeader, ProjectDetailSection, ProjectGroup, ProjectList, ProjectRow, PromoCodeInput, QuotaExceededDialogView, QuotaMeter, ReferralRewardBadge, ReferralRewardNote, ReferralRewardSummary, RenameDialog, RequireVerified, SegmentedControl, ServerConnectionButton, SettingsPage, SettingsSwitchGroup, SettingsSwitchRow, SharedProjectRow, SharedProjectsSection, SubscriptionStatusView, SupportPanel, SupportUnavailable, SyncCheckList, SyncDialogBody, SyncDialogFooter, SyncField, SyncFolderRow, SyncFolderStatus, SyncLinkButton, SyncLinkRow, SyncLoading, SyncNote, SyncOptionToggle, SyncOptions, SyncReconnectNotice, SyncSelect, SyncSmallNote, SyncTreeFrame, ThreadPreviewDialog, TipsEditorDialog, UsageActionButton, UsageLegend, UsageLineChart, UsagePanel, UsageProportionBar, UsageQuotaHint, UsageSection, UsageSummary, UsageToggle, WelcomeDialog, WorkOfflineToggle, applyInvertedIndexFilter, applyTriStateFilters, buildInvertedIndex, formatSessionTtl, resolveSettingsSection, serverConnectionView, toActiveSessionViews, toDeleteBlockerViews, toLogoutSessionViews, toNotificationCategories };
|
|
4888
|
+
//# sourceMappingURL=chunk-RVKVGS72.js.map
|
|
4889
|
+
//# sourceMappingURL=chunk-RVKVGS72.js.map
|