@arbidocs/blocks 0.4.81 → 0.4.82

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 (35) hide show
  1. package/dist/agents/index.cjs +209 -209
  2. package/dist/agents/index.js +2 -2
  3. package/dist/{chunk-B3WCKBJ7.cjs → chunk-5XVWGJ2H.cjs} +3 -3
  4. package/dist/{chunk-B3WCKBJ7.cjs.map → chunk-5XVWGJ2H.cjs.map} +1 -1
  5. package/dist/{chunk-SWSVPQNB.js → chunk-COP6GVKN.js} +148 -5
  6. package/dist/chunk-COP6GVKN.js.map +1 -0
  7. package/dist/{chunk-I56ORHPY.js → chunk-IRG5LPDP.js} +3 -3
  8. package/dist/{chunk-I56ORHPY.js.map → chunk-IRG5LPDP.js.map} +1 -1
  9. package/dist/{chunk-UA2AMDR6.cjs → chunk-LRRJ2HBW.cjs} +151 -3
  10. package/dist/chunk-LRRJ2HBW.cjs.map +1 -0
  11. package/dist/{chunk-GJV2G4FC.js → chunk-O35LRB3P.js} +3 -3
  12. package/dist/{chunk-GJV2G4FC.js.map → chunk-O35LRB3P.js.map} +1 -1
  13. package/dist/{chunk-F5WIETZY.cjs → chunk-VWK24TEY.cjs} +3 -3
  14. package/dist/{chunk-F5WIETZY.cjs.map → chunk-VWK24TEY.cjs.map} +1 -1
  15. package/dist/connect/index.cjs +59 -38
  16. package/dist/connect/index.cjs.map +1 -1
  17. package/dist/connect/index.js +35 -14
  18. package/dist/connect/index.js.map +1 -1
  19. package/dist/connection/ConnectedTagMatrix.d.ts +6 -3
  20. package/dist/files/index.cjs +2 -2
  21. package/dist/files/index.js +2 -2
  22. package/dist/index.cjs +414 -398
  23. package/dist/index.js +6 -6
  24. package/dist/settings/index.cjs +35 -35
  25. package/dist/settings/index.js +3 -3
  26. package/dist/tags/TagMatrix.d.ts +7 -3
  27. package/dist/tags/index.d.ts +1 -0
  28. package/dist/tags/tagMatrixDocx.d.ts +42 -0
  29. package/dist/workflow-canvas/index.cjs +9 -9
  30. package/dist/workflow-canvas/index.js +2 -2
  31. package/dist/workspaces/index.cjs +1 -1
  32. package/dist/workspaces/index.js +1 -1
  33. package/package.json +4 -4
  34. package/dist/chunk-SWSVPQNB.js.map +0 -1
  35. package/dist/chunk-UA2AMDR6.cjs.map +0 -1
package/dist/index.js CHANGED
@@ -7,11 +7,11 @@ export { DataTable, DataTableBlock, MetricCard, PageHeader, StatGroup } from './
7
7
  export { Accordion, AvatarBlock, Banner, BlockImage, BlockLink, CTABanner, Columns, ContactForm, Container, FAQ, FONT_PAIRINGS, FeatureGrid, Footer, Gallery, Hero, ListBlock, LogoCloud, MediaText, Navbar, PricingTable, ProfileCard, RichTextBlock, SectionHeading, Spacer, Steps, THEME_STYLE_ID, Tabs, TeamGrid, Testimonial, TestimonialGrid, ThemeEditor, VideoEmbed, applyFontVars, applyStoredTheme, applyThemeVars, clearFontVars, clearThemeVars, createThemeStore, fontPackages, getFontPairing, matchFontPairing, tid, toEmbedUrl, toHslTriplet } from './chunk-DLBUFHLY.js';
8
8
  export { Timeline } from './chunk-OVEQERPO.js';
9
9
  export { MemberAvatarStack } from './chunk-XNOASBGW.js';
10
- export { DEFAULT_TAG_MATRIX_LABELS, TagMatrix, cellText, cellValue, isGap, parseCell, tagMatrixColumns, tagMatrixMarkdown } from './chunk-SWSVPQNB.js';
10
+ export { DEFAULT_TAG_MATRIX_DOCX_LABELS, DEFAULT_TAG_MATRIX_LABELS, TAG_MATRIX_DOCX_LANDSCAPE_AFTER, TagMatrix, cellText, cellValue, isGap, parseCell, tagMatrixColumns, tagMatrixDocumentXml, tagMatrixDocx, tagMatrixMarkdown } from './chunk-COP6GVKN.js';
11
11
  export { DEFAULT_SEARCH_HIT_LABELS, SearchHit } from './chunk-A2YAC22G.js';
12
12
  export { TIMELINE_ZOOM, TimelineCalendar, TimelineGantt, TimelineZoomControl, dayKey, formatSpan, monthLabel, parseIso, utcDay } from './chunk-4EZVCGRL.js';
13
13
  export { Callout } from './chunk-UJE32SST.js';
14
- 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, EntityChip, 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-I56ORHPY.js';
14
+ 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, EntityChip, 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';
15
15
  import './chunk-CKB64Z4R.js';
16
16
  export { EmptyState } from './chunk-P6GHJSLR.js';
17
17
  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';
@@ -29,6 +29,10 @@ export { AccountRecoveryDialog, AuthAlert, AuthConsent, AuthDivider, AuthField,
29
29
  export { DEFAULT_PASSWORD_STRENGTH_INPUT_LABELS, PasswordStrengthInput } from './chunk-VILAPTCB.js';
30
30
  export { CitationEditor, DEFAULT_PASSAGE_PILL_LABELS, DEFAULT_QUIET_MARK_LABELS, LabelMark, NoteMark, PassageMark, PassagePill, QuietLink, useCopyText } from './chunk-XQKGYGCJ.js';
31
31
  export { BlocksProvider, useBlocksEnvironment } from './chunk-76JDDMSP.js';
32
+ export { ActionMenu, AddContactsForm, AddContactsResults, ContactCard, DEFAULT_ADD_CONTACTS_LABELS, DEFAULT_CONTACT_CARD_LABELS, DEFAULT_CONTACT_OUTCOME_LABELS, DEFAULT_DM_ACCESS_REQUEST_BANNER_LABELS, DEFAULT_DM_GRANT_ACCESS_DIALOG_LABELS, DEFAULT_DM_INVITE_CHIP_LABELS, DEFAULT_DM_THREAD_FRAME_LABELS, DEFAULT_MAIL_FOLDER_TREE_LABELS, DEFAULT_RECIPIENT_PICKER_LABELS, DmAccessRequestBanner, DmGrantAccessDialogView, DmInviteAvatar, DmInviteChip, DmNewTabIcon, DmThreadFrame, DmThreadHeader, MAX_INVITE_EMAILS, MailDeliveryBadge, MailFolderTree, MailMessagePreview, MemberBulkActions, MemberListLoading, MemberMutedText, MemberNameCell, MemberRoleCell, RecipientPicker, RoleSelect, WorkspaceDeleteButton, buildMailFolderTree, contactToVCard, descendantFolderIds, downloadVCard, isInboxFolder, parseEmails, toAddContactsRow, toAddContactsRows, toggleMailFolder, vCardFilename } from './chunk-SB5ZKOYN.js';
33
+ import './chunk-NBV56SGU.js';
34
+ export { DEFAULT_SHARE_CONTROL_LABELS, ShareControl } from './chunk-K4BGOPGG.js';
35
+ import './chunk-TX2ZICS7.js';
32
36
  export { AssistantToaster, BranchControls, ComposerAccessories, ComposerTools, ContextActionButton, ContextCheckRow, ContextPanelContent, ContextPanelFooter, ContextPanelTabs, ContextPickerList, ContextPickerRow, ContextSearchInput, ContextSelectList, ContextSelectRow, Conversation, ConversationBody, ConversationHeader, ConversationHeaderActions, ConversationHistoryPane, ConversationLoading, ConversationMain, ConversationRoot, ConversationSearchView, ConversationSettingsButton, DEFAULT_BRANCH_CONTROLS_LABELS, DEFAULT_CONVERSATION_LAYOUT_LABELS, DEFAULT_CONVERSATION_PARTS_LABELS, DEFAULT_CONVERSATION_SEARCH_LABELS, DEFAULT_LABEL_PIN_ROW_LABELS, DEFAULT_MODEL_PRICING_TIP_LABELS, DEFAULT_PENDING_ANSWER_BAR_LABELS, DEFAULT_PINNED_DOC_CHIP_LABELS, DEFAULT_SLASH_MENU_LABELS, DEFAULT_THREAD_MAP_LABELS, LabelPinRow, ModelAutoIcon, ModelConfigureButton, ModelDot, ModelMenuDivider, ModelMenuMessage, ModelOption, ModelOptionLabel, ModelPickerPopover, ModelPickerTrigger, ModelPricingTip, ModelTierIcon, ModelTierOption, ModelTriggerContent, NewChatButton, NewPaChatButton, PaModeBadge, PendingAnswerBar, PinnedDocChip, SlashMenu, ThreadMap, ThreadMapDiagram, ThreadMapError, ThreadMapLoading, getParticipantTints, hasMessageBody, isLongPastedText, useDismissibleCard, useLongPaste, useRecipientDraft } from './chunk-ICBAFX5B.js';
33
37
  export { DEFAULT_DOCK_WIDTH, Toaster } from './chunk-BV7FEMSI.js';
34
38
  export { AssistantDock, AssistantDockToggle, AssistantModeToggle, ChatDocuments, ChatMessageContent, ChatPage, ChatThreadList, ChatThreadSelect, CitationMark, Composer, ComposerBranchingNotice, ComposerContainer, ComposerDock, ComposerFrame, ComposerInput, ComposerRoot, ComposerSend, ComposerToolbar, ComposerVoiceButton, ContextChip, ConversationEmpty, DEFAULT_ASSISTANT_MODE_TOGGLE_LABELS, DEFAULT_CHAT_PAGE_LABELS, DEFAULT_COMPOSER_LABELS, DEFAULT_CONVERSATION_EMPTY_LABELS, DEFAULT_MESSAGE_ALERT_LABELS, DEFAULT_MESSAGE_LABELS, DEFAULT_MESSAGE_LIST_LABELS, DEFAULT_WORKFLOW_STEP_CHIP_LABELS, Message, MessageActionButton, MessageActionMenu, MessageAlert, MessageBody, MessageBubble, MessageByline, MessageContent, MessageFooter, MessageList, MessageListBanner, MessageListEmpty, MessageListRoot, MessageListRow, MessageListRows, MessageListStatus, MessageListTail, MessageNarration, MessageRoot, MessageSources, MessageSubagentBadge, ScrollToBottom, SourceChip, WorkflowStepChip, toSpeakableText, useAssistantDock, useChatSurface, useRegisterEmbeddedChat, useStreamAnnouncement } from './chunk-EWSEQEPL.js';
@@ -38,10 +42,6 @@ export { DEFAULT_MENTION_LABELS, MENTION_HREF_PREFIX, MentionChip, MentionMenu,
38
42
  export { BREAKPOINT_QUERIES, useIsNarrow, useIsPhone, useIsTouchScreen, useMediaQuery } from './chunk-SLSBJRWW.js';
39
43
  import './chunk-NPLYHR2E.js';
40
44
  export { daysUntil, displayName, fmtDate, fmtDateTime, formatCount, formatCurrency, formatPageRefs, fromNow, hrs, initials, pct, pluralize } from './chunk-OXF2IFXG.js';
41
- export { ActionMenu, AddContactsForm, AddContactsResults, ContactCard, DEFAULT_ADD_CONTACTS_LABELS, DEFAULT_CONTACT_CARD_LABELS, DEFAULT_CONTACT_OUTCOME_LABELS, DEFAULT_DM_ACCESS_REQUEST_BANNER_LABELS, DEFAULT_DM_GRANT_ACCESS_DIALOG_LABELS, DEFAULT_DM_INVITE_CHIP_LABELS, DEFAULT_DM_THREAD_FRAME_LABELS, DEFAULT_MAIL_FOLDER_TREE_LABELS, DEFAULT_RECIPIENT_PICKER_LABELS, DmAccessRequestBanner, DmGrantAccessDialogView, DmInviteAvatar, DmInviteChip, DmNewTabIcon, DmThreadFrame, DmThreadHeader, MAX_INVITE_EMAILS, MailDeliveryBadge, MailFolderTree, MailMessagePreview, MemberBulkActions, MemberListLoading, MemberMutedText, MemberNameCell, MemberRoleCell, RecipientPicker, RoleSelect, WorkspaceDeleteButton, buildMailFolderTree, contactToVCard, descendantFolderIds, downloadVCard, isInboxFolder, parseEmails, toAddContactsRow, toAddContactsRows, toggleMailFolder, vCardFilename } from './chunk-SB5ZKOYN.js';
42
- import './chunk-NBV56SGU.js';
43
- export { DEFAULT_SHARE_CONTROL_LABELS, ShareControl } from './chunk-K4BGOPGG.js';
44
- import './chunk-TX2ZICS7.js';
45
45
  import './chunk-7F6CBP3Z.js';
46
46
  import './chunk-VUNV25KB.js';
47
47
  import { Search, Pencil, Sparkles } from 'lucide-react';
@@ -1,16 +1,16 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkB3WCKBJ7_cjs = require('../chunk-B3WCKBJ7.cjs');
4
+ var chunk5XVWGJ2H_cjs = require('../chunk-5XVWGJ2H.cjs');
5
5
  var chunk223D4727_cjs = require('../chunk-223D4727.cjs');
6
6
  var chunk46IU3UPF_cjs = require('../chunk-46IU3UPF.cjs');
7
7
  var chunkYJQVLVBJ_cjs = require('../chunk-YJQVLVBJ.cjs');
8
8
  var chunk7RGLTF76_cjs = require('../chunk-7RGLTF76.cjs');
9
9
  var chunkVFUWWH52_cjs = require('../chunk-VFUWWH52.cjs');
10
10
  require('../chunk-ADOKTJHV.cjs');
11
+ var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
11
12
  require('../chunk-PPCATBOY.cjs');
12
13
  var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
13
- var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
14
14
  var chunkMHVNT4J3_cjs = require('../chunk-MHVNT4J3.cjs');
15
15
  require('../chunk-DES3K4SD.cjs');
16
16
  var react = require('react');
@@ -3476,135 +3476,135 @@ function ErrorDialogView({
3476
3476
 
3477
3477
  Object.defineProperty(exports, "ActiveSessionsDialog", {
3478
3478
  enumerable: true,
3479
- get: function () { return chunkB3WCKBJ7_cjs.ActiveSessionsDialog; }
3479
+ get: function () { return chunk5XVWGJ2H_cjs.ActiveSessionsDialog; }
3480
3480
  });
3481
3481
  Object.defineProperty(exports, "AvatarPicker", {
3482
3482
  enumerable: true,
3483
- get: function () { return chunkB3WCKBJ7_cjs.AvatarPicker; }
3483
+ get: function () { return chunk5XVWGJ2H_cjs.AvatarPicker; }
3484
3484
  });
3485
3485
  Object.defineProperty(exports, "DEFAULT_ACTIVE_SESSIONS_DIALOG_LABELS", {
3486
3486
  enumerable: true,
3487
- get: function () { return chunkB3WCKBJ7_cjs.DEFAULT_ACTIVE_SESSIONS_DIALOG_LABELS; }
3487
+ get: function () { return chunk5XVWGJ2H_cjs.DEFAULT_ACTIVE_SESSIONS_DIALOG_LABELS; }
3488
3488
  });
3489
3489
  Object.defineProperty(exports, "DEFAULT_AVATAR_PICKER_LABELS", {
3490
3490
  enumerable: true,
3491
- get: function () { return chunkB3WCKBJ7_cjs.DEFAULT_AVATAR_PICKER_LABELS; }
3491
+ get: function () { return chunk5XVWGJ2H_cjs.DEFAULT_AVATAR_PICKER_LABELS; }
3492
3492
  });
3493
3493
  Object.defineProperty(exports, "DEFAULT_DELETE_ACCOUNT_DIALOG_LABELS", {
3494
3494
  enumerable: true,
3495
- get: function () { return chunkB3WCKBJ7_cjs.DEFAULT_DELETE_ACCOUNT_DIALOG_LABELS; }
3495
+ get: function () { return chunk5XVWGJ2H_cjs.DEFAULT_DELETE_ACCOUNT_DIALOG_LABELS; }
3496
3496
  });
3497
3497
  Object.defineProperty(exports, "DEFAULT_IDENTITY_VERIFICATION_LABELS", {
3498
3498
  enumerable: true,
3499
- get: function () { return chunkB3WCKBJ7_cjs.DEFAULT_IDENTITY_VERIFICATION_LABELS; }
3499
+ get: function () { return chunk5XVWGJ2H_cjs.DEFAULT_IDENTITY_VERIFICATION_LABELS; }
3500
3500
  });
3501
3501
  Object.defineProperty(exports, "DEFAULT_LOGOUT_DIALOG_LABELS", {
3502
3502
  enumerable: true,
3503
- get: function () { return chunkB3WCKBJ7_cjs.DEFAULT_LOGOUT_DIALOG_LABELS; }
3503
+ get: function () { return chunk5XVWGJ2H_cjs.DEFAULT_LOGOUT_DIALOG_LABELS; }
3504
3504
  });
3505
3505
  Object.defineProperty(exports, "DEFAULT_PASSWORD_CHANGE_DIALOG_LABELS", {
3506
3506
  enumerable: true,
3507
- get: function () { return chunkB3WCKBJ7_cjs.DEFAULT_PASSWORD_CHANGE_DIALOG_LABELS; }
3507
+ get: function () { return chunk5XVWGJ2H_cjs.DEFAULT_PASSWORD_CHANGE_DIALOG_LABELS; }
3508
3508
  });
3509
3509
  Object.defineProperty(exports, "DEFAULT_PROFILE_CARD_LABELS", {
3510
3510
  enumerable: true,
3511
- get: function () { return chunkB3WCKBJ7_cjs.DEFAULT_PROFILE_CARD_LABELS; }
3511
+ get: function () { return chunk5XVWGJ2H_cjs.DEFAULT_PROFILE_CARD_LABELS; }
3512
3512
  });
3513
3513
  Object.defineProperty(exports, "DEFAULT_SETTINGS_DANGER_ZONE_LABELS", {
3514
3514
  enumerable: true,
3515
- get: function () { return chunkB3WCKBJ7_cjs.DEFAULT_SETTINGS_DANGER_ZONE_LABELS; }
3515
+ get: function () { return chunk5XVWGJ2H_cjs.DEFAULT_SETTINGS_DANGER_ZONE_LABELS; }
3516
3516
  });
3517
3517
  Object.defineProperty(exports, "DeleteAccountDialog", {
3518
3518
  enumerable: true,
3519
- get: function () { return chunkB3WCKBJ7_cjs.DeleteAccountDialog; }
3519
+ get: function () { return chunk5XVWGJ2H_cjs.DeleteAccountDialog; }
3520
3520
  });
3521
3521
  Object.defineProperty(exports, "EMAIL_NOTIFICATION_CATEGORIES", {
3522
3522
  enumerable: true,
3523
- get: function () { return chunkB3WCKBJ7_cjs.EMAIL_NOTIFICATION_CATEGORIES; }
3523
+ get: function () { return chunk5XVWGJ2H_cjs.EMAIL_NOTIFICATION_CATEGORIES; }
3524
3524
  });
3525
3525
  Object.defineProperty(exports, "EMAIL_NOTIFICATION_KEYS", {
3526
3526
  enumerable: true,
3527
- get: function () { return chunkB3WCKBJ7_cjs.EMAIL_NOTIFICATION_KEYS; }
3527
+ get: function () { return chunk5XVWGJ2H_cjs.EMAIL_NOTIFICATION_KEYS; }
3528
3528
  });
3529
3529
  Object.defineProperty(exports, "IdentityVerificationCard", {
3530
3530
  enumerable: true,
3531
- get: function () { return chunkB3WCKBJ7_cjs.IdentityVerificationCard; }
3531
+ get: function () { return chunk5XVWGJ2H_cjs.IdentityVerificationCard; }
3532
3532
  });
3533
3533
  Object.defineProperty(exports, "IdentityVerificationDialog", {
3534
3534
  enumerable: true,
3535
- get: function () { return chunkB3WCKBJ7_cjs.IdentityVerificationDialog; }
3535
+ get: function () { return chunk5XVWGJ2H_cjs.IdentityVerificationDialog; }
3536
3536
  });
3537
3537
  Object.defineProperty(exports, "LogoutDialog", {
3538
3538
  enumerable: true,
3539
- get: function () { return chunkB3WCKBJ7_cjs.LogoutDialog; }
3539
+ get: function () { return chunk5XVWGJ2H_cjs.LogoutDialog; }
3540
3540
  });
3541
3541
  Object.defineProperty(exports, "NotificationCategoryList", {
3542
3542
  enumerable: true,
3543
- get: function () { return chunkB3WCKBJ7_cjs.NotificationCategoryList; }
3543
+ get: function () { return chunk5XVWGJ2H_cjs.NotificationCategoryList; }
3544
3544
  });
3545
3545
  Object.defineProperty(exports, "PasswordChangeDialog", {
3546
3546
  enumerable: true,
3547
- get: function () { return chunkB3WCKBJ7_cjs.PasswordChangeDialog; }
3547
+ get: function () { return chunk5XVWGJ2H_cjs.PasswordChangeDialog; }
3548
3548
  });
3549
3549
  Object.defineProperty(exports, "ProfileCard", {
3550
3550
  enumerable: true,
3551
- get: function () { return chunkB3WCKBJ7_cjs.ProfileCard; }
3551
+ get: function () { return chunk5XVWGJ2H_cjs.ProfileCard; }
3552
3552
  });
3553
3553
  Object.defineProperty(exports, "RequireVerified", {
3554
3554
  enumerable: true,
3555
- get: function () { return chunkB3WCKBJ7_cjs.RequireVerified; }
3555
+ get: function () { return chunk5XVWGJ2H_cjs.RequireVerified; }
3556
3556
  });
3557
3557
  Object.defineProperty(exports, "SettingsActionRow", {
3558
3558
  enumerable: true,
3559
- get: function () { return chunkB3WCKBJ7_cjs.SettingsActionRow; }
3559
+ get: function () { return chunk5XVWGJ2H_cjs.SettingsActionRow; }
3560
3560
  });
3561
3561
  Object.defineProperty(exports, "SettingsCard", {
3562
3562
  enumerable: true,
3563
- get: function () { return chunkB3WCKBJ7_cjs.SettingsCard; }
3563
+ get: function () { return chunk5XVWGJ2H_cjs.SettingsCard; }
3564
3564
  });
3565
3565
  Object.defineProperty(exports, "SettingsDangerZone", {
3566
3566
  enumerable: true,
3567
- get: function () { return chunkB3WCKBJ7_cjs.SettingsDangerZone; }
3567
+ get: function () { return chunk5XVWGJ2H_cjs.SettingsDangerZone; }
3568
3568
  });
3569
3569
  Object.defineProperty(exports, "SettingsPanel", {
3570
3570
  enumerable: true,
3571
- get: function () { return chunkB3WCKBJ7_cjs.SettingsPanel; }
3571
+ get: function () { return chunk5XVWGJ2H_cjs.SettingsPanel; }
3572
3572
  });
3573
3573
  Object.defineProperty(exports, "SettingsRow", {
3574
3574
  enumerable: true,
3575
- get: function () { return chunkB3WCKBJ7_cjs.SettingsRow; }
3575
+ get: function () { return chunk5XVWGJ2H_cjs.SettingsRow; }
3576
3576
  });
3577
3577
  Object.defineProperty(exports, "SettingsSection", {
3578
3578
  enumerable: true,
3579
- get: function () { return chunkB3WCKBJ7_cjs.SettingsSection; }
3579
+ get: function () { return chunk5XVWGJ2H_cjs.SettingsSection; }
3580
3580
  });
3581
3581
  Object.defineProperty(exports, "SettingsSwitchGroup", {
3582
3582
  enumerable: true,
3583
- get: function () { return chunkB3WCKBJ7_cjs.SettingsSwitchGroup; }
3583
+ get: function () { return chunk5XVWGJ2H_cjs.SettingsSwitchGroup; }
3584
3584
  });
3585
3585
  Object.defineProperty(exports, "SettingsSwitchRow", {
3586
3586
  enumerable: true,
3587
- get: function () { return chunkB3WCKBJ7_cjs.SettingsSwitchRow; }
3587
+ get: function () { return chunk5XVWGJ2H_cjs.SettingsSwitchRow; }
3588
3588
  });
3589
3589
  Object.defineProperty(exports, "formatSessionTtl", {
3590
3590
  enumerable: true,
3591
- get: function () { return chunkB3WCKBJ7_cjs.formatSessionTtl; }
3591
+ get: function () { return chunk5XVWGJ2H_cjs.formatSessionTtl; }
3592
3592
  });
3593
3593
  Object.defineProperty(exports, "toActiveSessionViews", {
3594
3594
  enumerable: true,
3595
- get: function () { return chunkB3WCKBJ7_cjs.toActiveSessionViews; }
3595
+ get: function () { return chunk5XVWGJ2H_cjs.toActiveSessionViews; }
3596
3596
  });
3597
3597
  Object.defineProperty(exports, "toDeleteBlockerViews", {
3598
3598
  enumerable: true,
3599
- get: function () { return chunkB3WCKBJ7_cjs.toDeleteBlockerViews; }
3599
+ get: function () { return chunk5XVWGJ2H_cjs.toDeleteBlockerViews; }
3600
3600
  });
3601
3601
  Object.defineProperty(exports, "toLogoutSessionViews", {
3602
3602
  enumerable: true,
3603
- get: function () { return chunkB3WCKBJ7_cjs.toLogoutSessionViews; }
3603
+ get: function () { return chunk5XVWGJ2H_cjs.toLogoutSessionViews; }
3604
3604
  });
3605
3605
  Object.defineProperty(exports, "toNotificationCategories", {
3606
3606
  enumerable: true,
3607
- get: function () { return chunkB3WCKBJ7_cjs.toNotificationCategories; }
3607
+ get: function () { return chunk5XVWGJ2H_cjs.toNotificationCategories; }
3608
3608
  });
3609
3609
  Object.defineProperty(exports, "ModalBreadcrumbHeader", {
3610
3610
  enumerable: true,
@@ -1,15 +1,15 @@
1
1
  "use client";
2
- export { ActiveSessionsDialog, AvatarPicker, DEFAULT_ACTIVE_SESSIONS_DIALOG_LABELS, DEFAULT_AVATAR_PICKER_LABELS, DEFAULT_DELETE_ACCOUNT_DIALOG_LABELS, DEFAULT_IDENTITY_VERIFICATION_LABELS, DEFAULT_LOGOUT_DIALOG_LABELS, DEFAULT_PASSWORD_CHANGE_DIALOG_LABELS, DEFAULT_PROFILE_CARD_LABELS, DEFAULT_SETTINGS_DANGER_ZONE_LABELS, DeleteAccountDialog, EMAIL_NOTIFICATION_CATEGORIES, EMAIL_NOTIFICATION_KEYS, IdentityVerificationCard, IdentityVerificationDialog, LogoutDialog, NotificationCategoryList, PasswordChangeDialog, ProfileCard, RequireVerified, SettingsActionRow, SettingsCard, SettingsDangerZone, SettingsPanel, SettingsRow, SettingsSection, SettingsSwitchGroup, SettingsSwitchRow, formatSessionTtl, toActiveSessionViews, toDeleteBlockerViews, toLogoutSessionViews, toNotificationCategories } from '../chunk-GJV2G4FC.js';
2
+ export { ActiveSessionsDialog, AvatarPicker, DEFAULT_ACTIVE_SESSIONS_DIALOG_LABELS, DEFAULT_AVATAR_PICKER_LABELS, DEFAULT_DELETE_ACCOUNT_DIALOG_LABELS, DEFAULT_IDENTITY_VERIFICATION_LABELS, DEFAULT_LOGOUT_DIALOG_LABELS, DEFAULT_PASSWORD_CHANGE_DIALOG_LABELS, DEFAULT_PROFILE_CARD_LABELS, DEFAULT_SETTINGS_DANGER_ZONE_LABELS, DeleteAccountDialog, EMAIL_NOTIFICATION_CATEGORIES, EMAIL_NOTIFICATION_KEYS, IdentityVerificationCard, IdentityVerificationDialog, LogoutDialog, NotificationCategoryList, PasswordChangeDialog, ProfileCard, RequireVerified, SettingsActionRow, SettingsCard, SettingsDangerZone, SettingsPanel, SettingsRow, SettingsSection, SettingsSwitchGroup, SettingsSwitchRow, formatSessionTtl, toActiveSessionViews, toDeleteBlockerViews, toLogoutSessionViews, toNotificationCategories } from '../chunk-O35LRB3P.js';
3
3
  export { ModalBreadcrumbHeader, ModalCrumbs } from '../chunk-RC6VTY2H.js';
4
4
  import { UsageMeter } from '../chunk-D5T53XCL.js';
5
5
  export { DEFAULT_DOCUMENT_PICKER_LABELS, DEFAULT_TRI_STATE_FILTER_MENU_LABELS, DocumentPicker, MultiSelect, TriStateFilterMenu } from '../chunk-CKB64Z4R.js';
6
6
  import { TabHeader } from '../chunk-4WWM3GQ5.js';
7
7
  import { TONE_BORDER, TONE_SURFACE, ToneBadge } from '../chunk-DPLRHEJZ.js';
8
8
  import '../chunk-VILAPTCB.js';
9
- import '../chunk-NPLYHR2E.js';
10
- import { formatCount } from '../chunk-OXF2IFXG.js';
11
9
  import { ModalScaffold, ModalSection, ModalSectionTitle, ModalHeader } from '../chunk-TX2ZICS7.js';
12
10
  export { MODAL_SECTION_TITLE_CLASS, ModalHeader, ModalScaffold, ModalSection, ModalSectionTitle } from '../chunk-TX2ZICS7.js';
11
+ import '../chunk-NPLYHR2E.js';
12
+ import { formatCount } from '../chunk-OXF2IFXG.js';
13
13
  import { testIdOr, prefixedTestId } from '../chunk-7F6CBP3Z.js';
14
14
  import '../chunk-VUNV25KB.js';
15
15
  import { useMemo, useRef, useState, useId, Fragment as Fragment$1 } from 'react';
@@ -2,7 +2,8 @@
2
2
  * A label's children as a matrix: one row per child label, a column per field they share,
3
3
  * editable in place by type (text, number, date, checkbox, choice, person), and the evidence behind
4
4
  * each row (its linked documents and facts, with counts). Rows with no evidence are marked as
5
- * gaps. A row can be added (a new child label), and the matrix exported as a document snapshot.
5
+ * gaps. A row can be added (a new child label), and the matrix exported as a Word document
6
+ * snapshot (filed in the workspace) or downloaded.
6
7
  * The data and every write come from the host (`ConnectedTagMatrix` binds them to ARBI).
7
8
  */
8
9
  import { type ReactNode } from 'react';
@@ -28,6 +29,7 @@ export interface TagMatrixLabels {
28
29
  add: string;
29
30
  export: string;
30
31
  exporting: string;
32
+ download: string;
31
33
  empty: string;
32
34
  loading: string;
33
35
  noColumns: string;
@@ -48,8 +50,10 @@ export interface TagMatrixProps {
48
50
  onOpenFact?: (factId: string) => void;
49
51
  /** Open a row's label (all its evidence). */
50
52
  onOpenRow?: (tagId: string) => void;
51
- /** Export the matrix as it stands. Absent: no export button. */
53
+ /** Export the matrix as it stands (filed as a document). Absent: no export button. */
52
54
  onExport?: () => void | Promise<unknown>;
55
+ /** Download the matrix as it stands as a file. Absent: no download button. */
56
+ onDownload?: () => void | Promise<unknown>;
53
57
  /** Who a person column offers. */
54
58
  people?: ReadonlyArray<{
55
59
  value: string;
@@ -61,4 +65,4 @@ export interface TagMatrixProps {
61
65
  className?: string;
62
66
  testId?: string;
63
67
  }
64
- export declare function TagMatrix({ matrix, isLoading, onChangeValue, onAddRow, onOpenDocument, onOpenFact, onOpenRow, onExport, people, actions, labels, className, testId, }: TagMatrixProps): import("react").JSX.Element;
68
+ export declare function TagMatrix({ matrix, isLoading, onChangeValue, onAddRow, onOpenDocument, onOpenFact, onOpenRow, onExport, onDownload, people, actions, labels, className, testId, }: TagMatrixProps): import("react").JSX.Element;
@@ -1,3 +1,4 @@
1
1
  /** A label's children as an editable matrix with their evidence (`TagMatrix`). */
2
2
  export { TagMatrix, DEFAULT_TAG_MATRIX_LABELS, type TagMatrixProps, type TagMatrixLabels, } from './TagMatrix';
3
3
  export { tagMatrixColumns, tagMatrixMarkdown, cellValue, cellText, parseCell, isGap, type TagMatrixData, type TagMatrixRowData, type TagMatrixField, type TagMatrixFieldType, type TagMatrixMarkdownOptions, } from './tagMatrixModel';
4
+ export { tagMatrixDocx, tagMatrixDocumentXml, DEFAULT_TAG_MATRIX_DOCX_LABELS, TAG_MATRIX_DOCX_LANDSCAPE_AFTER, type TagMatrixDocxLabels, type TagMatrixDocxOptions, } from './tagMatrixDocx';
@@ -0,0 +1,42 @@
1
+ /**
2
+ * The tag matrix as a Word document: a title, when the snapshot was taken, then one table with a
3
+ * row per item, a column per field, the evidence behind it (linked document names and fact
4
+ * excerpts) and its gaps. Written straight as WordprocessingML and zipped with `fflate` (already a
5
+ * dependency, and what `docx/export.ts` uses), so the result opens in the native Word editor and
6
+ * in Word without pulling the editor engine into the tags module.
7
+ */
8
+ import { type TagMatrixData } from './tagMatrixModel';
9
+ export declare const DOCX_MIME_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
10
+ /** More table columns than this (item, fields, evidence, gaps) turn the page to landscape. */
11
+ export declare const TAG_MATRIX_DOCX_LANDSCAPE_AFTER = 6;
12
+ export interface TagMatrixDocxLabels {
13
+ /** The row column's heading. */
14
+ row: string;
15
+ evidence: string;
16
+ gaps: string;
17
+ /** `{at}` is the snapshot time, `YYYY-MM-DD HH:MM UTC`. */
18
+ takenAt: string;
19
+ /** A row with no linked document and no fact. */
20
+ noEvidence: string;
21
+ /** `{fields}`: the row's empty fields. */
22
+ missing: string;
23
+ /** `{count}` more links than listed. */
24
+ more: string;
25
+ document: string;
26
+ documents: string;
27
+ fact: string;
28
+ facts: string;
29
+ empty: string;
30
+ }
31
+ export declare const DEFAULT_TAG_MATRIX_DOCX_LABELS: TagMatrixDocxLabels;
32
+ export interface TagMatrixDocxOptions {
33
+ title: string;
34
+ nameOf?: (id: string) => string | undefined;
35
+ /** When the snapshot was taken (ISO); default now. */
36
+ at?: string;
37
+ labels?: Partial<TagMatrixDocxLabels>;
38
+ }
39
+ /** `word/document.xml` for the matrix (exposed for tests and for hosts that assemble their own package). */
40
+ export declare function tagMatrixDocumentXml(matrix: TagMatrixData, options: TagMatrixDocxOptions): string;
41
+ /** The matrix as `.docx` bytes. */
42
+ export declare function tagMatrixDocx(matrix: TagMatrixData, options: TagMatrixDocxOptions): Uint8Array;
@@ -2,7 +2,7 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkMUMH3Z6K_cjs = require('../chunk-MUMH3Z6K.cjs');
5
- var chunkF5WIETZY_cjs = require('../chunk-F5WIETZY.cjs');
5
+ var chunkVWK24TEY_cjs = require('../chunk-VWK24TEY.cjs');
6
6
  require('../chunk-YJQVLVBJ.cjs');
7
7
  require('../chunk-ZW6FPIFC.cjs');
8
8
  var chunkBX7JWZWE_cjs = require('../chunk-BX7JWZWE.cjs');
@@ -17,12 +17,12 @@ require('../chunk-Z5VUZ6YD.cjs');
17
17
  require('../chunk-7D737FLE.cjs');
18
18
  require('../chunk-OB5F4577.cjs');
19
19
  require('../chunk-C54XEN5T.cjs');
20
+ require('../chunk-ULWRNGGE.cjs');
20
21
  require('../chunk-B4SRYJLM.cjs');
21
22
  require('../chunk-7UTB4PHM.cjs');
22
23
  require('../chunk-FX3K6LNZ.cjs');
23
24
  require('../chunk-PPCATBOY.cjs');
24
25
  require('../chunk-KDG6FER6.cjs');
25
- require('../chunk-ULWRNGGE.cjs');
26
26
  require('../chunk-MHVNT4J3.cjs');
27
27
  require('../chunk-DES3K4SD.cjs');
28
28
  var react = require('react');
@@ -1487,7 +1487,7 @@ function triggerFields(trigger, clearOthers) {
1487
1487
  return {
1488
1488
  timezone: trigger.timezone,
1489
1489
  rrule: trigger.start === "repeat" ? trigger.rrule.trim() : none,
1490
- run_at: trigger.start === "once" ? chunkF5WIETZY_cjs.localInputToIso(trigger.runAt) : none,
1490
+ run_at: trigger.start === "once" ? chunkVWK24TEY_cjs.localInputToIso(trigger.runAt) : none,
1491
1491
  event_kind: trigger.start === "event" ? trigger.eventKind.trim() : none,
1492
1492
  // A step signal is `workflow_signal` narrowed to one signal name.
1493
1493
  event_filter: filter ?? none,
@@ -1546,7 +1546,7 @@ function workflowRecordToBuilder(record) {
1546
1546
  ...record.skill_ref ? { workflow: record.skill_ref } : { run: { kind: "prompt", promptTemplate: record.prompt } }
1547
1547
  }
1548
1548
  ] : [];
1549
- const when = chunkF5WIETZY_cjs.workflowWhen(record);
1549
+ const when = chunkVWK24TEY_cjs.workflowWhen(record);
1550
1550
  return {
1551
1551
  workflow: {
1552
1552
  id: record.external_id,
@@ -1560,7 +1560,7 @@ function workflowRecordToBuilder(record) {
1560
1560
  trigger: {
1561
1561
  ...DEFAULT_WORKFLOW_TRIGGER,
1562
1562
  start: when === "now" ? "manual" : when,
1563
- runAt: chunkF5WIETZY_cjs.isoToLocalInput(record.run_at),
1563
+ runAt: chunkVWK24TEY_cjs.isoToLocalInput(record.run_at),
1564
1564
  rrule: record.rrule ?? "",
1565
1565
  timezone: record.timezone || DEFAULT_WORKFLOW_TRIGGER.timezone,
1566
1566
  eventKind: record.event_kind ?? "",
@@ -1616,7 +1616,7 @@ function triggerSummary(trigger, options = {}) {
1616
1616
  case "once":
1617
1617
  return trigger.runAt ? new Date(trigger.runAt).toLocaleString() : l.starts.once;
1618
1618
  case "repeat":
1619
- return trigger.rrule ? chunkF5WIETZY_cjs.describeRRule(trigger.rrule) : l.starts.repeat;
1619
+ return trigger.rrule ? chunkVWK24TEY_cjs.describeRRule(trigger.rrule) : l.starts.repeat;
1620
1620
  case "event":
1621
1621
  if (isSignalTrigger(trigger))
1622
1622
  return trigger.signal ? l.signalSummary.replace("{signal}", trigger.signal) : l.stepSignals;
@@ -1675,7 +1675,7 @@ function TriggerInspector({
1675
1675
  }
1676
1676
  )
1677
1677
  ] }),
1678
- trigger.start === "repeat" && /* @__PURE__ */ jsxRuntime.jsx(chunkF5WIETZY_cjs.RecurrenceBuilder, { rrule: trigger.rrule, onChange: (rrule) => set({ rrule }) }),
1678
+ trigger.start === "repeat" && /* @__PURE__ */ jsxRuntime.jsx(chunkVWK24TEY_cjs.RecurrenceBuilder, { rrule: trigger.rrule, onChange: (rrule) => set({ rrule }) }),
1679
1679
  trigger.start === "event" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
1680
1680
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs", children: l.event }),
1681
1681
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -1727,7 +1727,7 @@ function TriggerInspector({
1727
1727
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
1728
1728
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs", children: l.agent }),
1729
1729
  /* @__PURE__ */ jsxRuntime.jsx(
1730
- chunkF5WIETZY_cjs.AgentSelect,
1730
+ chunkVWK24TEY_cjs.AgentSelect,
1731
1731
  {
1732
1732
  agents,
1733
1733
  value: trigger.agentId,
@@ -2578,7 +2578,7 @@ function WorkflowPreview({
2578
2578
  renderIcon,
2579
2579
  testId
2580
2580
  }) {
2581
- const run = chunkF5WIETZY_cjs.useWorkflowPreview(workflow, {
2581
+ const run = chunkVWK24TEY_cjs.useWorkflowPreview(workflow, {
2582
2582
  resolveWorkflow: (id) => workflows.find((w) => w.id === id),
2583
2583
  compose,
2584
2584
  answer
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { useConnection } from '../chunk-OYMWV45N.js';
3
- import { workflowWhen, isoToLocalInput, describeRRule, RecurrenceBuilder, AgentSelect, useWorkflowPreview, localInputToIso } from '../chunk-I56ORHPY.js';
3
+ import { workflowWhen, isoToLocalInput, describeRRule, RecurrenceBuilder, AgentSelect, useWorkflowPreview, localInputToIso } from '../chunk-IRG5LPDP.js';
4
4
  import '../chunk-CKB64Z4R.js';
5
5
  import '../chunk-P6GHJSLR.js';
6
6
  import { workflowSteps, dependsOn, stepLevels, isIncompleteSignal, runFields, upstreamSteps, stepDependencies, canAssign, fromPlanSteps, layoutFromPlanSteps, validateWorkflowGraph, stepConfigProblems, WorkflowRunner, skillToWorkflow, assigneeName, orderSteps, toPlanSteps } from '../chunk-THCFZKTM.js';
@@ -15,12 +15,12 @@ import '../chunk-DDF5GPIJ.js';
15
15
  import '../chunk-XD2M6LIG.js';
16
16
  import '../chunk-S7PSMMRG.js';
17
17
  import '../chunk-76JDDMSP.js';
18
+ import '../chunk-TX2ZICS7.js';
18
19
  import '../chunk-HOXKR26S.js';
19
20
  import '../chunk-AA3PT6KR.js';
20
21
  import '../chunk-SLSBJRWW.js';
21
22
  import '../chunk-NPLYHR2E.js';
22
23
  import '../chunk-OXF2IFXG.js';
23
- import '../chunk-TX2ZICS7.js';
24
24
  import '../chunk-7F6CBP3Z.js';
25
25
  import '../chunk-VUNV25KB.js';
26
26
  import { useMemo, useState, useEffect, useCallback, useRef } from 'react';
@@ -5,9 +5,9 @@ var chunkXZIYRKLW_cjs = require('../chunk-XZIYRKLW.cjs');
5
5
  var chunkXAJIKT6Y_cjs = require('../chunk-XAJIKT6Y.cjs');
6
6
  var chunkOB5F4577_cjs = require('../chunk-OB5F4577.cjs');
7
7
  require('../chunk-C54XEN5T.cjs');
8
- var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
9
8
  var chunk7G2LJMUG_cjs = require('../chunk-7G2LJMUG.cjs');
10
9
  var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
10
+ var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
11
11
  require('../chunk-DES3K4SD.cjs');
12
12
  var react = require('react');
13
13
  var lucideReact = require('lucide-react');
@@ -3,9 +3,9 @@ import { CollapsibleSection, KeyValueRow } from '../chunk-LGBAZD37.js';
3
3
  import { MemberAvatarStack } from '../chunk-XNOASBGW.js';
4
4
  import { ActionLink } from '../chunk-S7PSMMRG.js';
5
5
  import '../chunk-76JDDMSP.js';
6
- import { fromNow, fmtDate } from '../chunk-OXF2IFXG.js';
7
6
  export { RoleBadge, WorkspaceTypeBadgeView } from '../chunk-NBV56SGU.js';
8
7
  import { ModalHeader } from '../chunk-TX2ZICS7.js';
8
+ import { fromNow, fmtDate } from '../chunk-OXF2IFXG.js';
9
9
  import '../chunk-VUNV25KB.js';
10
10
  import { createContext, useContext, useMemo, useState, useCallback, useId } from 'react';
11
11
  import { FileText, MessagesSquare, Users, Check, ChevronRight, UserPlus, LogOut, AlertCircle, Plus, ArrowUpRight, AlignLeft, Globe, CreditCard, Loader2, FolderLock } from 'lucide-react';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbidocs/blocks",
3
- "version": "0.4.81",
3
+ "version": "0.4.82",
4
4
  "description": "Composable, domain-neutral UI blocks for ARBI apps, organised by capability (retrieval, facts, agents, workspaces, citations, collaboration) plus shell, theme and site primitives, on top of @arbidocs/react.",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -266,8 +266,8 @@
266
266
  "example:test:e2e": "playwright test -c examples/custom-ui/playwright.config.ts"
267
267
  },
268
268
  "dependencies": {
269
- "@arbidocs/client": "0.4.81",
270
- "@arbidocs/coedit": "0.4.81",
269
+ "@arbidocs/client": "0.4.82",
270
+ "@arbidocs/coedit": "0.4.82",
271
271
  "@dnd-kit/core": "^6.3.1",
272
272
  "@dnd-kit/sortable": "^10.0.0",
273
273
  "@dnd-kit/utilities": "^3.2.2",
@@ -293,7 +293,7 @@
293
293
  "zustand": "^5.0.14"
294
294
  },
295
295
  "peerDependencies": {
296
- "@arbidocs/react": "0.4.81",
296
+ "@arbidocs/react": "0.4.82",
297
297
  "@docx-editor.dev/core": "2.28.0",
298
298
  "@docx-editor.dev/react": "2.28.0",
299
299
  "@mdxeditor/editor": "^4.0.4",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tags/tagMatrixModel.ts","../src/tags/TagMatrix.tsx"],"names":[],"mappings":"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","file":"chunk-SWSVPQNB.js","sourcesContent":["/**\n * The tag matrix as data: a parent label's child labels are the rows, the fields they share (the\n * parent's, then any a row adds) the columns, and each row's linked documents and facts its\n * evidence. Pure helpers for `TagMatrix`: the columns, a row's value, the gaps, and the snapshot\n * as a Markdown document.\n */\n\nimport type { components } from '@arbidocs/client'\n\nexport type TagMatrixData = components['schemas']['TagMatrixResponse']\nexport type TagMatrixRowData = components['schemas']['TagMatrixRow']\nexport type TagMatrixField = components['schemas']['TagField']\nexport type TagMatrixFieldType = TagMatrixField['type']\n\n/**\n * The columns: the parent's fields (shared by every row), then fields only some rows define,\n * each once, in the order first seen. Mirrors the SDK's `tagMatrixColumns`.\n */\nexport function tagMatrixColumns(matrix: TagMatrixData | null | undefined): TagMatrixField[] {\n const columns: TagMatrixField[] = []\n const add = (f: TagMatrixField) => {\n if (!columns.some((c) => c.id === f.id)) columns.push(f)\n }\n for (const f of matrix?.parent?.fields ?? []) add(f)\n for (const row of matrix?.rows ?? []) for (const f of row.tag.fields ?? []) add(f)\n return columns\n}\n\n/** A row's value for a column (values are keyed by field id). */\nexport const cellValue = (row: TagMatrixRowData, column: TagMatrixField): unknown =>\n row.tag.field_values?.[column.id]\n\n/** A row with nothing behind it: no linked document and no fact. */\nexport const isGap = (row: TagMatrixRowData): boolean => row.doc_count + row.fact_count === 0\n\n/** A value as text (a person by name, a checkbox as yes or no, blank as empty). */\nexport function cellText(\n value: unknown,\n column: Pick<TagMatrixField, 'type'>,\n nameOf?: (id: string) => string | undefined\n): string {\n if (value === undefined || value === null || value === '') return ''\n if (column.type === 'checkbox') return value ? 'Yes' : 'No'\n if (column.type === 'person' && typeof value === 'string') return nameOf?.(value) ?? value\n if (Array.isArray(value)) return value.map(String).join(', ')\n return String(value)\n}\n\n/** A typed input's text back as the value to store (`null` clears it). */\nexport function parseCell(text: string, type: TagMatrixFieldType): unknown {\n const t = text.trim()\n if (t === '') return null\n if (type === 'number') {\n const n = Number(t)\n return Number.isNaN(n) ? null : n\n }\n return t\n}\n\nconst escapeCell = (text: string) => text.replace(/\\|/g, '\\\\|').replace(/\\n+/g, ' ')\n\nexport interface TagMatrixMarkdownOptions {\n title: string\n /** The evidence column's heading. */\n evidence?: string\n /** The row column's heading. */\n rowHeading?: string\n nameOf?: (id: string) => string | undefined\n /** When the snapshot was taken (ISO); default now. */\n at?: string\n}\n\n/**\n * The matrix as a Markdown document: a heading, when it was taken, and one table (a row per\n * label, a column per field, then the evidence counts). What a host files or has signed.\n */\nexport function tagMatrixMarkdown(\n matrix: TagMatrixData,\n options: TagMatrixMarkdownOptions\n): string {\n const columns = tagMatrixColumns(matrix)\n const heads = [\n options.rowHeading ?? 'Item',\n ...columns.map((c) => c.name),\n options.evidence ?? 'Evidence',\n ]\n const lines = [\n `# ${options.title}`,\n '',\n `_Snapshot taken ${new Date(options.at ?? Date.now()).toISOString().slice(0, 16).replace('T', ' ')} UTC_`,\n '',\n `| ${heads.map(escapeCell).join(' | ')} |`,\n `| ${heads.map(() => '---').join(' | ')} |`,\n ]\n for (const row of matrix.rows ?? []) {\n const evidence = [\n `${row.doc_count} document${row.doc_count === 1 ? '' : 's'}`,\n `${row.fact_count} fact${row.fact_count === 1 ? '' : 's'}`,\n ].join(', ')\n const cells = [\n row.tag.name,\n ...columns.map((c) => cellText(cellValue(row, c), c, options.nameOf)),\n evidence,\n ]\n lines.push(`| ${cells.map(escapeCell).join(' | ')} |`)\n }\n return `${lines.join('\\n')}\\n`\n}\n","/**\n * A label's children as a matrix: one row per child label, a column per field they share,\n * editable in place by type (text, number, date, checkbox, choice, person), and the evidence behind\n * each row (its linked documents and facts, with counts). Rows with no evidence are marked as\n * gaps. A row can be added (a new child label), and the matrix exported as a document snapshot.\n * The data and every write come from the host (`ConnectedTagMatrix` binds them to ARBI).\n */\n\nimport { useEffect, useMemo, useState, type ReactNode } from 'react'\nimport { AlertTriangle, FileDown, FileText, Lightbulb, Loader2, Plus } from 'lucide-react'\nimport { Button, Checkbox, Input, cn } from '@arbidocs/react/ui'\nimport {\n cellText,\n cellValue,\n isGap,\n parseCell,\n tagMatrixColumns,\n type TagMatrixData,\n type TagMatrixField,\n type TagMatrixRowData,\n} from './tagMatrixModel'\n\nexport interface TagMatrixLabels {\n row: string\n evidence: string\n /** `{count}` documents linked. */\n documents: string\n /** `{count}` facts linked. */\n facts: string\n /** One document, one fact. */\n document: string\n fact: string\n /** `{count}` more links than shown. */\n more: string\n gap: string\n gapsOnly: string\n /** `{count}` rows without evidence. */\n gapCount: string\n addRow: string\n addRowPlaceholder: string\n add: string\n export: string\n exporting: string\n empty: string\n loading: string\n noColumns: string\n choose: string\n yes: string\n}\n\nexport const DEFAULT_TAG_MATRIX_LABELS: TagMatrixLabels = {\n row: 'Item',\n evidence: 'Evidence',\n documents: '{count} documents',\n facts: '{count} facts',\n document: '1 document',\n fact: '1 fact',\n more: '+{count} more',\n gap: 'No evidence',\n gapsOnly: 'Show gaps only',\n gapCount: '{count} without evidence',\n addRow: 'Add row',\n addRowPlaceholder: 'Name of the new row',\n add: 'Add',\n export: 'Export as document',\n exporting: 'Exporting…',\n empty: 'No rows yet.',\n loading: 'Loading…',\n noColumns: 'No fields yet: add fields to the parent label to get columns.',\n choose: '—',\n yes: 'Yes',\n}\n\nexport interface TagMatrixProps {\n matrix: TagMatrixData | undefined\n isLoading?: boolean\n /** Change one cell (`null` clears it). Absent: read only. */\n onChangeValue?: (tagId: string, fieldId: string, value: unknown) => void | Promise<unknown>\n /** Add a row (a new child label). Absent: no \"Add row\". */\n onAddRow?: (name: string) => void | Promise<unknown>\n /** Open a linked document. */\n onOpenDocument?: (documentId: string) => void\n /** Open a linked fact. */\n onOpenFact?: (factId: string) => void\n /** Open a row's label (all its evidence). */\n onOpenRow?: (tagId: string) => void\n /** Export the matrix as it stands. Absent: no export button. */\n onExport?: () => void | Promise<unknown>\n /** Who a person column offers. */\n people?: ReadonlyArray<{ value: string; label: string }>\n /** Extra controls in the toolbar. */\n actions?: ReactNode\n labels?: Partial<TagMatrixLabels>\n className?: string\n testId?: string\n}\n\n/**\n * The row-label (\"Item\") column: wide enough for a legal issue's name to read, never so wide the\n * fields are pushed out of view. Long names wrap inside it (cut after three lines, in full in the\n * tooltip), so a label never runs into the next column.\n */\nconst ROW_LABEL_WIDTH = 'w-[18rem] min-w-[12rem] max-w-[18rem]'\nconst ROW_LABEL = 'line-clamp-3 whitespace-normal break-words'\n\n/** One editable cell: committed on blur or Enter (a checkbox and a choice at once). */\nfunction Cell({\n row,\n column,\n people,\n onChange,\n l,\n testId,\n}: {\n row: TagMatrixRowData\n column: TagMatrixField\n people?: TagMatrixProps['people']\n onChange?: TagMatrixProps['onChangeValue']\n l: TagMatrixLabels\n testId: string\n}) {\n const value = cellValue(row, column)\n const nameOf = (id: string) => people?.find((p) => p.value === id)?.label\n const shown = cellText(value, column, nameOf)\n const [draft, setDraft] = useState(shown)\n useEffect(() => setDraft(cellText(value, column)), [value, column])\n const set = (next: unknown) => void onChange?.(row.tag.external_id, column.id, next)\n\n if (!onChange)\n return (\n <span className=\"block truncate\" title={shown} data-testid={testId}>\n {shown || <span className=\"text-muted-foreground\">{l.choose}</span>}\n </span>\n )\n const field =\n 'h-8 w-full min-w-24 rounded-md border border-transparent bg-transparent px-1.5 text-sm hover:border-input focus:border-input focus:bg-background focus:outline-none'\n switch (column.type) {\n case 'checkbox':\n return (\n <Checkbox\n checked={value === true}\n onCheckedChange={(v) => set(v === true)}\n aria-label={`${row.tag.name}: ${column.name}`}\n data-testid={testId}\n />\n )\n case 'select':\n case 'person': {\n const options =\n column.type === 'select'\n ? (column.options ?? []).map((o) => ({ value: o, label: o }))\n : (people ?? [])\n return (\n <select\n className={cn(field, 'min-w-32 pr-6')}\n value={typeof value === 'string' ? value : ''}\n onChange={(e) => set(e.target.value || null)}\n aria-label={`${row.tag.name}: ${column.name}`}\n data-testid={testId}\n >\n <option value=\"\">{l.choose}</option>\n {options.map((o) => (\n <option key={o.value} value={o.value}>\n {o.label}\n </option>\n ))}\n {typeof value === 'string' && value && !options.some((o) => o.value === value) && (\n <option value={value}>{value}</option>\n )}\n </select>\n )\n }\n default: {\n const commit = () => {\n if (draft !== cellText(value, column)) set(parseCell(draft, column.type))\n }\n return (\n <input\n className={cn(field, 'min-w-32 pr-6')}\n type={column.type === 'number' ? 'number' : column.type === 'date' ? 'date' : 'text'}\n value={column.type === 'date' ? draft.slice(0, 10) : draft}\n onChange={(e) => setDraft(e.target.value)}\n onBlur={commit}\n onKeyDown={(e) => {\n if (e.key === 'Enter') (e.target as HTMLInputElement).blur()\n if (e.key === 'Escape') setDraft(cellText(value, column))\n }}\n aria-label={`${row.tag.name}: ${column.name}`}\n data-testid={testId}\n />\n )\n }\n }\n}\n\n/** What backs a row: its documents and facts as links, with counts and \"+N more\". */\nfunction Evidence({\n row,\n l,\n onOpenDocument,\n onOpenFact,\n onOpenRow,\n testId,\n}: {\n row: TagMatrixRowData\n l: TagMatrixLabels\n onOpenDocument?: (id: string) => void\n onOpenFact?: (id: string) => void\n onOpenRow?: (id: string) => void\n testId: string\n}) {\n if (isGap(row))\n return (\n <span\n className=\"inline-flex items-center gap-1 rounded-full bg-amber-500/15 px-2 py-0.5 text-xs font-medium text-amber-700 dark:text-amber-300\"\n data-testid={`${testId}-gap`}\n >\n <AlertTriangle className=\"size-3\" /> {l.gap}\n </span>\n )\n const docs = row.docs ?? []\n const facts = row.facts ?? []\n const more = row.doc_count - docs.length + (row.fact_count - facts.length)\n const chip =\n 'inline-flex max-w-44 items-center gap-1 truncate rounded-md border border-border px-1.5 py-0.5 text-xs hover:border-primary/40 hover:text-primary disabled:hover:border-border disabled:hover:text-inherit'\n return (\n <div className=\"flex flex-wrap items-center gap-1\" data-testid={testId}>\n <span className=\"mr-1 text-xs text-muted-foreground\">\n {[\n row.doc_count === 1\n ? l.document\n : row.doc_count\n ? l.documents.replace('{count}', String(row.doc_count))\n : null,\n row.fact_count === 1\n ? l.fact\n : row.fact_count\n ? l.facts.replace('{count}', String(row.fact_count))\n : null,\n ]\n .filter(Boolean)\n .join(' · ')}\n </span>\n {docs.map((d) => (\n <button\n key={d.doc_ext_id}\n type=\"button\"\n className={chip}\n title={d.note ? `${d.file_name}: ${d.note}` : d.file_name}\n disabled={!onOpenDocument}\n onClick={() => onOpenDocument?.(d.doc_ext_id)}\n data-testid={`${testId}-doc-${d.doc_ext_id}`}\n >\n <FileText className=\"size-3 shrink-0\" />\n <span className=\"truncate\">{d.file_name}</span>\n </button>\n ))}\n {facts.map((f) => (\n <button\n key={f.fact_ext_id}\n type=\"button\"\n className={chip}\n title={f.text}\n disabled={!onOpenFact}\n onClick={() => onOpenFact?.(f.fact_ext_id)}\n data-testid={`${testId}-fact-${f.fact_ext_id}`}\n >\n <Lightbulb className=\"size-3 shrink-0\" />\n <span className=\"truncate\">{f.text}</span>\n </button>\n ))}\n {more > 0 &&\n (onOpenRow ? (\n <button\n type=\"button\"\n className=\"text-xs text-primary hover:underline\"\n onClick={() => onOpenRow(row.tag.external_id)}\n data-testid={`${testId}-more`}\n >\n {l.more.replace('{count}', String(more))}\n </button>\n ) : (\n <span className=\"text-xs text-muted-foreground\" data-testid={`${testId}-more`}>\n {l.more.replace('{count}', String(more))}\n </span>\n ))}\n </div>\n )\n}\n\nexport function TagMatrix({\n matrix,\n isLoading,\n onChangeValue,\n onAddRow,\n onOpenDocument,\n onOpenFact,\n onOpenRow,\n onExport,\n people,\n actions,\n labels,\n className,\n testId = 'tag-matrix',\n}: TagMatrixProps) {\n const l = { ...DEFAULT_TAG_MATRIX_LABELS, ...labels }\n const columns = useMemo(() => tagMatrixColumns(matrix), [matrix])\n const rows = matrix?.rows ?? []\n const gaps = rows.filter(isGap).length\n const [gapsOnly, setGapsOnly] = useState(false)\n const [name, setName] = useState('')\n const [adding, setAdding] = useState(false)\n const [exporting, setExporting] = useState(false)\n const shown = gapsOnly ? rows.filter(isGap) : rows\n\n const add = async () => {\n const n = name.trim()\n if (!n || !onAddRow) return\n setAdding(true)\n try {\n await onAddRow(n)\n setName('')\n } finally {\n setAdding(false)\n }\n }\n\n return (\n <div className={cn('space-y-3', className)} data-testid={testId}>\n <div className=\"flex flex-wrap items-center gap-2\">\n {gaps > 0 && (\n <label className=\"flex items-center gap-2 text-sm\">\n <Checkbox\n checked={gapsOnly}\n onCheckedChange={(v) => setGapsOnly(v === true)}\n data-testid={`${testId}-gaps-only`}\n />\n {l.gapsOnly}\n <span className=\"text-xs text-amber-700 dark:text-amber-300\">\n ({l.gapCount.replace('{count}', String(gaps))})\n </span>\n </label>\n )}\n <div className=\"ml-auto flex flex-wrap items-center gap-2\">\n {actions}\n {onExport && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={exporting || rows.length === 0}\n onClick={async () => {\n setExporting(true)\n try {\n await onExport()\n } finally {\n setExporting(false)\n }\n }}\n data-testid={`${testId}-export`}\n >\n {exporting ? (\n <Loader2 className=\"size-4 animate-spin\" />\n ) : (\n <FileDown className=\"size-4\" />\n )}\n {exporting ? l.exporting : l.export}\n </Button>\n )}\n </div>\n </div>\n\n {isLoading ? (\n <p className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <Loader2 className=\"size-4 animate-spin\" /> {l.loading}\n </p>\n ) : (\n <div className=\"overflow-x-auto rounded-lg border border-border\">\n <table className=\"w-full border-collapse text-sm\" data-testid={`${testId}-table`}>\n <thead className=\"bg-muted/40\">\n <tr>\n <th\n className={cn(\n ROW_LABEL_WIDTH,\n 'sticky left-0 z-10 bg-muted/40 px-3 py-2 text-left font-medium'\n )}\n >\n {l.row}\n </th>\n {columns.map((c) => (\n <th\n key={c.id}\n className=\"px-3 py-2 text-left font-medium\"\n data-testid={`${testId}-column-${c.id}`}\n >\n {c.name}\n </th>\n ))}\n <th className=\"px-3 py-2 text-left font-medium\">{l.evidence}</th>\n </tr>\n </thead>\n <tbody>\n {shown.map((row) => {\n const id = row.tag.external_id\n const gap = isGap(row)\n return (\n <tr\n key={id}\n className={cn('border-t border-border align-top', gap && 'bg-amber-500/5')}\n data-gap={gap || undefined}\n data-testid={`${testId}-row-${id}`}\n >\n <th\n scope=\"row\"\n className={cn(\n ROW_LABEL_WIDTH,\n 'sticky left-0 z-10 px-3 py-2 text-left font-medium',\n gap ? 'bg-amber-50 dark:bg-amber-950' : 'bg-background',\n gap && 'border-l-2 border-l-amber-500'\n )}\n >\n {onOpenRow ? (\n <button\n type=\"button\"\n className={cn(ROW_LABEL, 'text-left hover:text-primary hover:underline')}\n title={row.tag.name}\n onClick={() => onOpenRow(id)}\n data-testid={`${testId}-row-${id}-label`}\n >\n {row.tag.name}\n </button>\n ) : (\n <span\n className={ROW_LABEL}\n title={row.tag.name}\n data-testid={`${testId}-row-${id}-label`}\n >\n {row.tag.name}\n </span>\n )}\n </th>\n {columns.map((c) => (\n <td key={c.id} className=\"px-1.5 py-1\">\n <Cell\n row={row}\n column={c}\n people={people}\n onChange={onChangeValue}\n l={l}\n testId={`${testId}-cell-${id}-${c.id}`}\n />\n </td>\n ))}\n <td className=\"px-3 py-2\">\n <Evidence\n row={row}\n l={l}\n onOpenDocument={onOpenDocument}\n onOpenFact={onOpenFact}\n onOpenRow={onOpenRow}\n testId={`${testId}-evidence-${id}`}\n />\n </td>\n </tr>\n )\n })}\n {shown.length === 0 && (\n <tr>\n <td\n colSpan={columns.length + 2}\n className=\"px-3 py-6 text-center text-sm text-muted-foreground\"\n >\n {l.empty}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n {columns.length === 0 && rows.length > 0 && (\n <p className=\"border-t border-border px-3 py-2 text-xs text-muted-foreground\">\n {l.noColumns}\n </p>\n )}\n </div>\n )}\n\n {onAddRow && (\n <form\n className=\"flex max-w-md items-center gap-2\"\n onSubmit={(e) => {\n e.preventDefault()\n void add()\n }}\n >\n <Input\n value={name}\n placeholder={l.addRowPlaceholder}\n aria-label={l.addRow}\n onChange={(e) => setName(e.target.value)}\n data-testid={`${testId}-add-name`}\n />\n <Button\n type=\"submit\"\n size=\"sm\"\n variant=\"outline\"\n disabled={!name.trim() || adding}\n data-testid={`${testId}-add`}\n >\n <Plus className=\"size-4\" /> {l.addRow}\n </Button>\n </form>\n )}\n </div>\n )\n}\n"]}