@arbidocs/blocks 0.4.82 → 0.4.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/agents/index.cjs +279 -279
  2. package/dist/agents/index.js +4 -4
  3. package/dist/agents/workflows/StepBarFrame.d.ts +12 -4
  4. package/dist/{chunk-FE4ULGOR.js → chunk-2YOVK524.js} +28 -5
  5. package/dist/chunk-2YOVK524.js.map +1 -0
  6. package/dist/{chunk-5XVWGJ2H.cjs → chunk-B3WCKBJ7.cjs} +3 -3
  7. package/dist/{chunk-5XVWGJ2H.cjs.map → chunk-B3WCKBJ7.cjs.map} +1 -1
  8. package/dist/{chunk-THCFZKTM.js → chunk-CONIA2ZA.js} +8 -8
  9. package/dist/chunk-CONIA2ZA.js.map +1 -0
  10. package/dist/{chunk-O35LRB3P.js → chunk-GJV2G4FC.js} +3 -3
  11. package/dist/{chunk-O35LRB3P.js.map → chunk-GJV2G4FC.js.map} +1 -1
  12. package/dist/{chunk-ZVBPRMHJ.cjs → chunk-JH6JTI76.cjs} +27 -4
  13. package/dist/chunk-JH6JTI76.cjs.map +1 -0
  14. package/dist/{chunk-COP6GVKN.js → chunk-RSKSXEPW.js} +57 -19
  15. package/dist/chunk-RSKSXEPW.js.map +1 -0
  16. package/dist/{chunk-IRG5LPDP.js → chunk-RX35SMPR.js} +6 -6
  17. package/dist/{chunk-IRG5LPDP.js.map → chunk-RX35SMPR.js.map} +1 -1
  18. package/dist/{chunk-BX7JWZWE.cjs → chunk-RYYYHPFU.cjs} +8 -8
  19. package/dist/chunk-RYYYHPFU.cjs.map +1 -0
  20. package/dist/{chunk-VWK24TEY.cjs → chunk-XA5S4776.cjs} +45 -45
  21. package/dist/chunk-XA5S4776.cjs.map +1 -0
  22. package/dist/{chunk-LRRJ2HBW.cjs → chunk-ZQYE7J3J.cjs} +54 -14
  23. package/dist/chunk-ZQYE7J3J.cjs.map +1 -0
  24. package/dist/connect/index.cjs +81 -51
  25. package/dist/connect/index.cjs.map +1 -1
  26. package/dist/connect/index.js +43 -13
  27. package/dist/connect/index.js.map +1 -1
  28. package/dist/connection/ConnectedWorkflowBuilder.d.ts +9 -2
  29. package/dist/connection/WorkflowRunnerDialogs.d.ts +12 -1
  30. package/dist/document-tools/SignDocumentDialog.d.ts +9 -2
  31. package/dist/document-tools/index.cjs +2 -2
  32. package/dist/document-tools/index.js +1 -1
  33. package/dist/facts/index.cjs +1 -1
  34. package/dist/facts/index.js +1 -1
  35. package/dist/files/index.cjs +22 -3
  36. package/dist/files/index.cjs.map +1 -1
  37. package/dist/files/index.js +22 -4
  38. package/dist/files/index.js.map +1 -1
  39. package/dist/files/views/TagFormParts.d.ts +8 -0
  40. package/dist/files/views/index.d.ts +1 -1
  41. package/dist/home/index.cjs +1 -1
  42. package/dist/home/index.js +1 -1
  43. package/dist/index.cjs +891 -609
  44. package/dist/index.cjs.map +1 -1
  45. package/dist/index.js +283 -12
  46. package/dist/index.js.map +1 -1
  47. package/dist/settings/index.cjs +35 -35
  48. package/dist/settings/index.js +3 -3
  49. package/dist/shell/index.cjs +1 -1
  50. package/dist/shell/index.js +1 -1
  51. package/dist/studio/index.cjs +1 -1
  52. package/dist/studio/index.js +1 -1
  53. package/dist/tags/TagDetail.d.ts +38 -0
  54. package/dist/tags/TagMatrix.d.ts +27 -8
  55. package/dist/tags/TagsNav.d.ts +44 -0
  56. package/dist/tags/index.d.ts +8 -3
  57. package/dist/tags/tagMatrixDocx.d.ts +4 -1
  58. package/dist/tags/tagMatrixModel.d.ts +10 -6
  59. package/dist/workflow-canvas/index.cjs +82 -64
  60. package/dist/workflow-canvas/index.cjs.map +1 -1
  61. package/dist/workflow-canvas/index.js +40 -22
  62. package/dist/workflow-canvas/index.js.map +1 -1
  63. package/dist/workspaces/index.cjs +1 -1
  64. package/dist/workspaces/index.js +1 -1
  65. package/package.json +4 -4
  66. package/dist/chunk-BX7JWZWE.cjs.map +0 -1
  67. package/dist/chunk-COP6GVKN.js.map +0 -1
  68. package/dist/chunk-FE4ULGOR.js.map +0 -1
  69. package/dist/chunk-LRRJ2HBW.cjs.map +0 -1
  70. package/dist/chunk-THCFZKTM.js.map +0 -1
  71. package/dist/chunk-VWK24TEY.cjs.map +0 -1
  72. package/dist/chunk-ZVBPRMHJ.cjs.map +0 -1
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- export { AgentAvatarField, AgentBar, AgentBarIconButton, AgentBarMenu, AgentBarNotes, AgentBarProbeAnswer, AgentBarQueuedNote, AgentBarStatus, AgentCard, AgentCreateView, AgentCreatedView, AgentCreator, AgentEditView, AgentGallery, AgentMainView, AgentSelect, AgentTypeSelector, CapabilityGrid, CapabilityTile, ConfigField, ConfigForm, ConsentActions, ConsentBulletList, ConsentCard, ConsentFootnote, ConsentHeader, ConsentMessage, ConsentNotice, ConsentPage, ConsentPermissionList, ConsentSection, ConsentStrong, ConsentText, ConversationListView, ConversationTurnSpeaker, CopyableUrl, DEFAULT_AGENT_AVATAR_FIELD_LABELS, DEFAULT_AGENT_BAR_LABELS, DEFAULT_AGENT_CARD_LABELS, DEFAULT_AGENT_CREATOR_LABELS, DEFAULT_AGENT_GALLERY_LABELS, DEFAULT_AGENT_SELECT_LABELS, DEFAULT_AGENT_STEPS_LABELS, DEFAULT_AGENT_TYPE_SELECTOR_LABELS, DEFAULT_AUTHORIZE_AGENT_LABELS, DEFAULT_CONFIG_FIELD_LABELS, DEFAULT_CONFIG_FORM_LABELS, DEFAULT_CONSENT_ACTIONS_LABELS, DEFAULT_COPYABLE_URL_LABELS, DEFAULT_NEW_THREAD_DIALOG_LABELS, DEFAULT_PILL_SELECT_LABELS, DEFAULT_RECURRENCE, DEFAULT_RECURRENCE_BUILDER_LABELS, DEFAULT_SKILL_CARD_LABELS, DEFAULT_SKILL_EDIT_FORM_LABELS, DEFAULT_SKILL_GENERATE_FORM_LABELS, DEFAULT_SKILL_GLOBAL_BADGE_LABELS, DEFAULT_SKILL_ROW_LABELS, DEFAULT_SKILL_VIEW_TOGGLE_LABELS, DEFAULT_SUBAGENT_ROSTER_LABELS, DEFAULT_TASKS_CHROME_LABELS, DEFAULT_TASK_ACTIVITY_LABELS, DEFAULT_TASK_COMPOSER_LABELS, DEFAULT_TASK_LIST_LABELS, DEFAULT_TASK_OUTPUTS_CELL_LABELS, DEFAULT_TASK_PLAN_LABELS, DEFAULT_TASK_RUNS_DIALOG_LABELS, DEFAULT_TASK_STATUS_PILL_LABELS, DEFAULT_TASK_THREAD_CHIP_LABELS, DEFAULT_TASK_TRIGGER_CHIP_LABELS, DEFAULT_TUPLE_ARRAY_FIELD_LABELS, DEFAULT_UPLOAD_TASK_ITEM_LABELS, DEFAULT_UPLOAD_TASK_LIST_LABELS, DEFAULT_WORKFLOWS_CHROME_LABELS, DEFAULT_WORKFLOW_CONFIG_DIALOG_LABELS, DEFAULT_WORKFLOW_LIST_LABELS, DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, GoalCriteria, MAX_TASK_DEPTH, NewThreadDialog, PersonPill, PillSelect, RecurrenceBuilder, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, SkillActionButton, SkillCard, SkillDetail, SkillDetailSection, SkillEditForm, SkillFilterChips, SkillGenerateForm, SkillGlobalBadge, SkillRow, SkillTile, SkillTypeBadge, SkillViewToggle, StepDetail, StepNarration, StepOutcome, StepParams, StepRow, StepSummary, StepTrace, StepTraceSummary, SubAgentLane, SubStepGroup, SubagentRoster, TASK_COLUMN_ORDER, TRIGGER_LABELS, TaskActivityDialog, TaskActivityTimeline, TaskComposer, TaskFlow, TaskInbox, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskRunsDialog, TaskStartDialog, TaskStatusPill, TaskTable, TaskThreadChip, TaskTriggerChip, TasksToolbar, ThreadActivity, ThreadNotifyDialog, TupleArrayField, UploadTaskItem, UploadTaskList, WEEKDAYS, WORKFLOW_COLUMN_ORDER, WorkflowConfigDialog, WorkflowDocumentsField, WorkflowLauncher, WorkflowThreadStartedBy, WorkflowThreadStrip, WorkflowsTable, WorkflowsToolbar, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildRRule, buildTaskRows, buildWorkflowScopeSource, compactThreadActivity, composePersona, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createWorkflowColumns, createsWork, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveWorkflowName, descendantIds, describeRRule, filterConversationRows, firstWords, formatElapsed, goalProgress, groupThreadActivity, hasTaskFields, hasTrigger, humanizeSection, indexTasks, inferType, inputDocumentIds, isAgenticWorkflow, isOutOfBounds, isPlainTodo, isSkillRow, isValidAgentName, isoToLocalInput, linkedRunsFromActivity, localInputToIso, matchWorkflowScope, moveTargets, newThreadToRequest, nextCriterionId, ownerExtId, parseRRule, prettifyKey, resolveScopeInputs, skillSlug, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, useWorkflowPreview, workflowFromSkillMarkdown, workflowStatus, workflowTaskFields, workflowToComposerValues, workflowToSkillMarkdown, workflowTriggerType, workflowWhen } from '../chunk-IRG5LPDP.js';
2
+ export { AgentAvatarField, AgentBar, AgentBarIconButton, AgentBarMenu, AgentBarNotes, AgentBarProbeAnswer, AgentBarQueuedNote, AgentBarStatus, AgentCard, AgentCreateView, AgentCreatedView, AgentCreator, AgentEditView, AgentGallery, AgentMainView, AgentSelect, AgentTypeSelector, CapabilityGrid, CapabilityTile, ConfigField, ConfigForm, ConsentActions, ConsentBulletList, ConsentCard, ConsentFootnote, ConsentHeader, ConsentMessage, ConsentNotice, ConsentPage, ConsentPermissionList, ConsentSection, ConsentStrong, ConsentText, ConversationListView, ConversationTurnSpeaker, CopyableUrl, DEFAULT_AGENT_AVATAR_FIELD_LABELS, DEFAULT_AGENT_BAR_LABELS, DEFAULT_AGENT_CARD_LABELS, DEFAULT_AGENT_CREATOR_LABELS, DEFAULT_AGENT_GALLERY_LABELS, DEFAULT_AGENT_SELECT_LABELS, DEFAULT_AGENT_STEPS_LABELS, DEFAULT_AGENT_TYPE_SELECTOR_LABELS, DEFAULT_AUTHORIZE_AGENT_LABELS, DEFAULT_CONFIG_FIELD_LABELS, DEFAULT_CONFIG_FORM_LABELS, DEFAULT_CONSENT_ACTIONS_LABELS, DEFAULT_COPYABLE_URL_LABELS, DEFAULT_NEW_THREAD_DIALOG_LABELS, DEFAULT_PILL_SELECT_LABELS, DEFAULT_RECURRENCE, DEFAULT_RECURRENCE_BUILDER_LABELS, DEFAULT_SKILL_CARD_LABELS, DEFAULT_SKILL_EDIT_FORM_LABELS, DEFAULT_SKILL_GENERATE_FORM_LABELS, DEFAULT_SKILL_GLOBAL_BADGE_LABELS, DEFAULT_SKILL_ROW_LABELS, DEFAULT_SKILL_VIEW_TOGGLE_LABELS, DEFAULT_SUBAGENT_ROSTER_LABELS, DEFAULT_TASKS_CHROME_LABELS, DEFAULT_TASK_ACTIVITY_LABELS, DEFAULT_TASK_COMPOSER_LABELS, DEFAULT_TASK_LIST_LABELS, DEFAULT_TASK_OUTPUTS_CELL_LABELS, DEFAULT_TASK_PLAN_LABELS, DEFAULT_TASK_RUNS_DIALOG_LABELS, DEFAULT_TASK_STATUS_PILL_LABELS, DEFAULT_TASK_THREAD_CHIP_LABELS, DEFAULT_TASK_TRIGGER_CHIP_LABELS, DEFAULT_TUPLE_ARRAY_FIELD_LABELS, DEFAULT_UPLOAD_TASK_ITEM_LABELS, DEFAULT_UPLOAD_TASK_LIST_LABELS, DEFAULT_WORKFLOWS_CHROME_LABELS, DEFAULT_WORKFLOW_CONFIG_DIALOG_LABELS, DEFAULT_WORKFLOW_LIST_LABELS, DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, GoalCriteria, MAX_TASK_DEPTH, NewThreadDialog, PersonPill, PillSelect, RecurrenceBuilder, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, SkillActionButton, SkillCard, SkillDetail, SkillDetailSection, SkillEditForm, SkillFilterChips, SkillGenerateForm, SkillGlobalBadge, SkillRow, SkillTile, SkillTypeBadge, SkillViewToggle, StepDetail, StepNarration, StepOutcome, StepParams, StepRow, StepSummary, StepTrace, StepTraceSummary, SubAgentLane, SubStepGroup, SubagentRoster, TASK_COLUMN_ORDER, TRIGGER_LABELS, TaskActivityDialog, TaskActivityTimeline, TaskComposer, TaskFlow, TaskInbox, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskRunsDialog, TaskStartDialog, TaskStatusPill, TaskTable, TaskThreadChip, TaskTriggerChip, TasksToolbar, ThreadActivity, ThreadNotifyDialog, TupleArrayField, UploadTaskItem, UploadTaskList, WEEKDAYS, WORKFLOW_COLUMN_ORDER, WorkflowConfigDialog, WorkflowDocumentsField, WorkflowLauncher, WorkflowThreadStartedBy, WorkflowThreadStrip, WorkflowsTable, WorkflowsToolbar, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildRRule, buildTaskRows, buildWorkflowScopeSource, compactThreadActivity, composePersona, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createWorkflowColumns, createsWork, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveWorkflowName, descendantIds, describeRRule, filterConversationRows, firstWords, formatElapsed, goalProgress, groupThreadActivity, hasTaskFields, hasTrigger, humanizeSection, indexTasks, inferType, inputDocumentIds, isAgenticWorkflow, isOutOfBounds, isPlainTodo, isSkillRow, isValidAgentName, isoToLocalInput, linkedRunsFromActivity, localInputToIso, matchWorkflowScope, moveTargets, newThreadToRequest, nextCriterionId, ownerExtId, parseRRule, prettifyKey, resolveScopeInputs, skillSlug, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, useWorkflowPreview, workflowFromSkillMarkdown, workflowStatus, workflowTaskFields, workflowToComposerValues, workflowToSkillMarkdown, workflowTriggerType, workflowWhen } from '../chunk-RX35SMPR.js';
3
3
  import '../chunk-CKB64Z4R.js';
4
4
  import '../chunk-P6GHJSLR.js';
5
- export { ActionStepBody, ApprovalEvidence, AssigneeLine, DEFAULT_ASSIGNEE_WORDING, DEFAULT_SCHEMA_FORM_LABELS, DEFAULT_STEP_BAR_LABELS, DEFAULT_WORKFLOW_RUNNER_LABELS, DEFAULT_WORKFLOW_STEP_PARTS_LABELS, EMPTY_WORKFLOW_SCOPE, SKILL_PROMPT_FALLBACK_PLACEHOLDER, SKILL_PROMPT_LABEL, SchemaForm, SendBackControl, WorkflowRunner, activeStepId, assigneeName, buildLaunch, canAssign, composeStepPrompt, composeWorkflowPrompt, defaultInputs, dependsOn, fieldToFrontmatter, fillRunText, fillStepInputs, fromPlanAssignee, fromPlanDocumentRef, fromPlanSteps, initialRunInputs, inputsFromContext, isEmptyWorkflowScope, isIncompleteSignal, isPersonAction, isPersonStep, isRunFinished, isSteppedWorkflow, isWorkflowScope, layoutFromPlanSteps, nextAction, orderSteps, promptFieldName, reviewInstructions, runFields, runFieldsOf, runThreadTitle, sendBackTargets, skillToWorkflow, splitDocRef, stepConfigProblems, stepDependencies, stepFields, stepLevels, stepPhase, stepStatesFromActivity, stepWindow, toPlanAssignee, toPlanDocumentRef, toPlanSteps, upstreamSteps, useWorkflowView, validateInputs, validateStep, validateWorkflowGraph, workflowAccepts, workflowFromFrontmatter, workflowSteps, workflowsAccepting, workflowsForHost } from '../chunk-THCFZKTM.js';
5
+ export { ActionStepBody, ApprovalEvidence, AssigneeLine, DEFAULT_ASSIGNEE_WORDING, DEFAULT_SCHEMA_FORM_LABELS, DEFAULT_STEP_BAR_LABELS, DEFAULT_WORKFLOW_RUNNER_LABELS, DEFAULT_WORKFLOW_STEP_PARTS_LABELS, EMPTY_WORKFLOW_SCOPE, SKILL_PROMPT_FALLBACK_PLACEHOLDER, SKILL_PROMPT_LABEL, SchemaForm, SendBackControl, WorkflowRunner, activeStepId, assigneeName, buildLaunch, canAssign, composeStepPrompt, composeWorkflowPrompt, defaultInputs, dependsOn, fieldToFrontmatter, fillRunText, fillStepInputs, fromPlanAssignee, fromPlanDocumentRef, fromPlanSteps, initialRunInputs, inputsFromContext, isEmptyWorkflowScope, isIncompleteSignal, isPersonAction, isPersonStep, isRunFinished, isSteppedWorkflow, isWorkflowScope, layoutFromPlanSteps, nextAction, orderSteps, promptFieldName, reviewInstructions, runFields, runFieldsOf, runThreadTitle, sendBackTargets, skillToWorkflow, splitDocRef, stepConfigProblems, stepDependencies, stepFields, stepLevels, stepPhase, stepStatesFromActivity, stepWindow, toPlanAssignee, toPlanDocumentRef, toPlanSteps, upstreamSteps, useWorkflowView, validateInputs, validateStep, validateWorkflowGraph, workflowAccepts, workflowFromFrontmatter, workflowSteps, workflowsAccepting, workflowsForHost } from '../chunk-CONIA2ZA.js';
6
6
  import '../chunk-4WWM3GQ5.js';
7
7
  import '../chunk-RFXJYIDV.js';
8
8
  import '../chunk-DPLRHEJZ.js';
@@ -13,13 +13,13 @@ import '../chunk-ZPLG7QYF.js';
13
13
  import '../chunk-DDF5GPIJ.js';
14
14
  import '../chunk-XD2M6LIG.js';
15
15
  import '../chunk-S7PSMMRG.js';
16
- import '../chunk-76JDDMSP.js';
17
- import '../chunk-TX2ZICS7.js';
18
16
  import '../chunk-HOXKR26S.js';
19
17
  import '../chunk-AA3PT6KR.js';
20
18
  import '../chunk-SLSBJRWW.js';
21
19
  import '../chunk-NPLYHR2E.js';
20
+ import '../chunk-76JDDMSP.js';
22
21
  import '../chunk-OXF2IFXG.js';
22
+ import '../chunk-TX2ZICS7.js';
23
23
  import '../chunk-7F6CBP3Z.js';
24
24
  import '../chunk-VUNV25KB.js';
25
25
  //# sourceMappingURL=index.js.map
@@ -40,13 +40,21 @@ export declare const STEP_PILL = "flex min-w-0 items-center gap-1.5 whitespace-n
40
40
  /**
41
41
  * A label is the full title, cut with an ellipsis only when very long (in full in `title`) or when
42
42
  * the bar is out of room — connectors give up their room first. Its widest is `LABEL_MAX_PX`
43
- * (20rem); the step in view's is wider.
43
+ * (20rem).
44
44
  */
45
45
  export declare const STEP_LABEL = "min-w-[2.5rem] truncate";
46
46
  export declare const STEP_LABEL_MAX = "max-w-[20rem]";
47
- export declare const STEP_LABEL_MAX_CURRENT = "max-w-[26rem]";
48
- /** What follows a name on its pill ("Waiting for …"): cut before the name is. */
49
- export declare const STEP_EXTRA = "min-w-[3rem] shrink-[1000] truncate font-normal opacity-80";
47
+ /**
48
+ * The step in view's label: wider (26rem), the last to give up room (what is around it shrinks a
49
+ * million times harder, so it is not cut while anything else on its pill or the bar can still
50
+ * give), and when it must, it wraps to a second line before it is cut.
51
+ */
52
+ export declare const STEP_LABEL_CURRENT = "min-w-[2.5rem] max-w-[26rem] whitespace-normal text-left text-balance line-clamp-2";
53
+ /**
54
+ * What follows a name on its pill ("Waiting for …"): cut before the name is. Flex shares a shortage
55
+ * in proportion, so the factor is huge: even a sliver taken from the name would show an ellipsis.
56
+ */
57
+ export declare const STEP_EXTRA = "min-w-[3rem] shrink-[1000000] truncate font-normal opacity-80";
50
58
  /** A step in the frame's lists: its title, for naming it. */
51
59
  export interface StepBarStep extends StepWindowStep {
52
60
  title: string;
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { ModalScaffold } from './chunk-TX2ZICS7.js';
3
3
  import { useState } from 'react';
4
- import { useDocumentTools, useSignDocument, intentText, certificateLink } from '@arbidocs/react/document-tools';
4
+ import { useDocumentTools, useSignDocument, intentText, certificateLink, SigningError } from '@arbidocs/react/document-tools';
5
5
  import { Label, Input, Checkbox, Button } from '@arbidocs/react/ui';
6
6
  import { jsx, jsxs } from 'react/jsx-runtime';
7
7
 
@@ -10,23 +10,32 @@ function SignDocumentDialog({
10
10
  onOpenChange,
11
11
  documentId,
12
12
  pdfBlob,
13
- appearance
13
+ version,
14
+ appearance,
15
+ onOpenCurrent
14
16
  }) {
15
17
  const { user, notify, openDocument, emailDocument, certificateUrl } = useDocumentTools();
16
18
  const [name, setName] = useState(() => user?.name ?? "");
17
19
  const [includeDate, setIncludeDate] = useState(false);
18
20
  const [password, setPassword] = useState("");
19
21
  const [error, setError] = useState(null);
22
+ const [isStale, setIsStale] = useState(false);
20
23
  const sign = useSignDocument();
24
+ const openCurrent = onOpenCurrent ?? (openDocument ? () => {
25
+ onOpenChange(false);
26
+ openDocument(documentId);
27
+ } : void 0);
21
28
  const signer = { name };
22
29
  const handleSubmit = async (e) => {
23
30
  e.preventDefault();
24
31
  if (!user?.email) return;
25
32
  setError(null);
33
+ setIsStale(false);
26
34
  try {
27
35
  const result = await sign.mutateAsync({
28
36
  documentId,
29
37
  pdfBlob,
38
+ version,
30
39
  email: user.email,
31
40
  password,
32
41
  signer,
@@ -52,6 +61,7 @@ function SignDocumentDialog({
52
61
  openDocument?.(signedId);
53
62
  } catch (err) {
54
63
  setError(err instanceof Error ? err.message : "Signing failed");
64
+ setIsStale(err instanceof SigningError && err.reason === "stale");
55
65
  }
56
66
  };
57
67
  return /* @__PURE__ */ jsx(
@@ -118,7 +128,20 @@ function SignDocumentDialog({
118
128
  }
119
129
  )
120
130
  ] }),
121
- error && /* @__PURE__ */ jsx("p", { className: "text-sm text-red-text", role: "alert", "data-testid": "sign-document-error", children: error })
131
+ error && /* @__PURE__ */ jsxs("div", { className: "space-y-2", role: "alert", children: [
132
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-red-text", "data-testid": "sign-document-error", children: error }),
133
+ isStale && openCurrent && /* @__PURE__ */ jsx(
134
+ Button,
135
+ {
136
+ type: "button",
137
+ variant: "outline",
138
+ size: "sm",
139
+ onClick: openCurrent,
140
+ "data-testid": "sign-document-open-current-button",
141
+ children: "Open the current version"
142
+ }
143
+ )
144
+ ] })
122
145
  ] }),
123
146
  /* @__PURE__ */ jsxs(ModalScaffold.Footer, { children: [
124
147
  /* @__PURE__ */ jsx(
@@ -147,5 +170,5 @@ function SignDocumentDialog({
147
170
  }
148
171
 
149
172
  export { SignDocumentDialog };
150
- //# sourceMappingURL=chunk-FE4ULGOR.js.map
151
- //# sourceMappingURL=chunk-FE4ULGOR.js.map
173
+ //# sourceMappingURL=chunk-2YOVK524.js.map
174
+ //# sourceMappingURL=chunk-2YOVK524.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/document-tools/SignDocumentDialog.tsx"],"names":[],"mappings":"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","file":"chunk-2YOVK524.js","sourcesContent":["/**\n * Sign a document electronically: confirm the name, choose whether the date is shown, read the\n * statement of intent, re-enter the password. Only the signature (and the date, if ticked) is drawn\n * on the page; a role, a firm or a place go on as ordinary annotation text. Anyone can click the\n * signature to check it. The signed copy is saved as a new version and opened, with an offer to\n * email it when the host gives the tools an `emailDocument`. Needs a `<DocumentToolsProvider>` with\n * a `user` (its email) and a `deploymentDomain`, inside a React Query `QueryClientProvider`.\n */\n\nimport { useState, type FormEvent, type ReactElement } from 'react'\nimport {\n certificateLink,\n intentText,\n SigningError,\n useDocumentTools,\n useSignDocument,\n type SignatureAppearance,\n} from '@arbidocs/react/document-tools'\nimport { Button, Checkbox, Input, Label } from '@arbidocs/react/ui'\nimport { ModalScaffold } from '../settings/ModalScaffold'\n\nexport interface SignDocumentDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n documentId: string\n /** The PDF the viewer is showing: `GET /view?version=`, never the original's download. */\n pdfBlob: Blob\n /** The version `pdfBlob` is of; omitted = the current version. */\n version?: number\n /** Where the signature goes; omitted = bottom of the last page. */\n appearance?: SignatureAppearance\n /**\n * Open the current version when the one shown has been superseded (only the current version can\n * be signed). Default: the host's `openDocument` on the document, after the dialog closes.\n */\n onOpenCurrent?: () => void\n}\n\nexport function SignDocumentDialog({\n open,\n onOpenChange,\n documentId,\n pdfBlob,\n version,\n appearance,\n onOpenCurrent,\n}: SignDocumentDialogProps): ReactElement {\n const { user, notify, openDocument, emailDocument, certificateUrl } = useDocumentTools()\n const [name, setName] = useState(() => user?.name ?? '')\n const [includeDate, setIncludeDate] = useState(false)\n const [password, setPassword] = useState('')\n const [error, setError] = useState<string | null>(null)\n const [isStale, setIsStale] = useState(false)\n const sign = useSignDocument()\n const openCurrent =\n onOpenCurrent ??\n (openDocument\n ? () => {\n onOpenChange(false)\n openDocument(documentId)\n }\n : undefined)\n\n const signer = { name }\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault()\n if (!user?.email) return\n setError(null)\n setIsStale(false)\n try {\n const result = await sign.mutateAsync({\n documentId,\n pdfBlob,\n version,\n email: user.email,\n password,\n signer,\n appearance,\n includeDate,\n })\n const signedId = result.doc_ext_id\n const certificate = certificateLink(result.signature, certificateUrl)\n notify(\n `Signed. The signed copy is saved as version ${result.version}.`,\n 'success',\n emailDocument\n ? { action: { label: 'Email it', onClick: () => emailDocument(signedId) } }\n : {\n action: {\n label: 'View certificate',\n onClick: () => {\n window.open(certificate, '_blank', 'noopener,noreferrer')\n },\n },\n }\n )\n setPassword('')\n onOpenChange(false)\n openDocument?.(signedId)\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Signing failed')\n setIsStale(err instanceof SigningError && err.reason === 'stale')\n }\n }\n\n return (\n <ModalScaffold\n open={open}\n onOpenChange={(next) => !sign.isPending && onOpenChange(next)}\n title=\"Sign document\"\n description=\"Sign this document electronically. The signed copy is saved as a new version.\"\n showDescription\n testId=\"sign-document-dialog\"\n >\n <form onSubmit={handleSubmit}>\n <ModalScaffold.Body>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"sign-name\">Name</Label>\n <Input\n id=\"sign-name\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n data-testid=\"sign-document-name-input\"\n required\n />\n </div>\n <div className=\"flex items-center gap-2 pointer-coarse:min-h-11\">\n <Checkbox\n id=\"sign-include-date\"\n checked={includeDate}\n onCheckedChange={(checked) => setIncludeDate(checked === true)}\n data-testid=\"sign-document-include-date\"\n />\n <Label htmlFor=\"sign-include-date\" className=\"font-normal\">\n Include date\n </Label>\n </div>\n <p className=\"text-sm text-muted-foreground\" data-testid=\"sign-document-appearance-note\">\n Only your signature{includeDate ? ' and the date appear' : ' appears'} on the page.\n Anyone can click it to check it.\n </p>\n {name.trim() && (\n <blockquote\n className=\"border-l-2 border-border pl-3 text-sm text-muted-foreground\"\n data-testid=\"sign-document-intent\"\n >\n {intentText(signer)}\n </blockquote>\n )}\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"sign-password\">Password</Label>\n <Input\n id=\"sign-password\"\n type=\"password\"\n autoComplete=\"current-password\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n data-testid=\"sign-document-password-input\"\n required\n />\n </div>\n {error && (\n <div className=\"space-y-2\" role=\"alert\">\n <p className=\"text-sm text-red-text\" data-testid=\"sign-document-error\">\n {error}\n </p>\n {isStale && openCurrent && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={openCurrent}\n data-testid=\"sign-document-open-current-button\"\n >\n Open the current version\n </Button>\n )}\n </div>\n )}\n </ModalScaffold.Body>\n <ModalScaffold.Footer>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => onOpenChange(false)}\n disabled={sign.isPending}\n >\n Cancel\n </Button>\n <Button\n type=\"submit\"\n disabled={sign.isPending || !name.trim() || !password}\n data-testid=\"sign-document-submit-button\"\n >\n {sign.isPending ? 'Signing...' : 'Sign'}\n </Button>\n </ModalScaffold.Footer>\n </form>\n </ModalScaffold>\n )\n}\n"]}
@@ -2,8 +2,8 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkADOKTJHV_cjs = require('./chunk-ADOKTJHV.cjs');
5
- var chunkULWRNGGE_cjs = require('./chunk-ULWRNGGE.cjs');
6
5
  var chunkKDG6FER6_cjs = require('./chunk-KDG6FER6.cjs');
6
+ var chunkULWRNGGE_cjs = require('./chunk-ULWRNGGE.cjs');
7
7
  var chunkMHVNT4J3_cjs = require('./chunk-MHVNT4J3.cjs');
8
8
  var react = require('react');
9
9
  var lucideReact = require('lucide-react');
@@ -1455,5 +1455,5 @@ exports.toActiveSessionViews = toActiveSessionViews;
1455
1455
  exports.toDeleteBlockerViews = toDeleteBlockerViews;
1456
1456
  exports.toLogoutSessionViews = toLogoutSessionViews;
1457
1457
  exports.toNotificationCategories = toNotificationCategories;
1458
- //# sourceMappingURL=chunk-5XVWGJ2H.cjs.map
1459
- //# sourceMappingURL=chunk-5XVWGJ2H.cjs.map
1458
+ //# sourceMappingURL=chunk-B3WCKBJ7.cjs.map
1459
+ //# sourceMappingURL=chunk-B3WCKBJ7.cjs.map