@arbidocs/blocks 0.4.95 → 0.4.97

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 (106) hide show
  1. package/dist/agents/index.cjs +283 -283
  2. package/dist/agents/index.js +7 -7
  3. package/dist/chat/index.cjs +127 -127
  4. package/dist/chat/index.js +4 -4
  5. package/dist/{chunk-DCZGYCN2.cjs → chunk-3US5OIDQ.cjs} +5 -5
  6. package/dist/{chunk-DCZGYCN2.cjs.map → chunk-3US5OIDQ.cjs.map} +1 -1
  7. package/dist/{chunk-QQH2NI5U.js → chunk-5NQIBJPP.js} +8 -8
  8. package/dist/{chunk-QQH2NI5U.js.map → chunk-5NQIBJPP.js.map} +1 -1
  9. package/dist/{chunk-KBPHLW2R.cjs → chunk-B4SRYJLM.cjs} +3 -3
  10. package/dist/{chunk-KBPHLW2R.cjs.map → chunk-B4SRYJLM.cjs.map} +1 -1
  11. package/dist/chunk-D54JXTPG.cjs +164 -0
  12. package/dist/chunk-D54JXTPG.cjs.map +1 -0
  13. package/dist/{chunk-VQ65UHTV.cjs → chunk-DDYXFALG.cjs} +47 -47
  14. package/dist/{chunk-VQ65UHTV.cjs.map → chunk-DDYXFALG.cjs.map} +1 -1
  15. package/dist/{chunk-RZGVMV6B.cjs → chunk-EHB7J6SR.cjs} +5 -5
  16. package/dist/{chunk-RZGVMV6B.cjs.map → chunk-EHB7J6SR.cjs.map} +1 -1
  17. package/dist/{chunk-EJAYB7PP.js → chunk-EWSEQEPL.js} +4 -4
  18. package/dist/{chunk-EJAYB7PP.js.map → chunk-EWSEQEPL.js.map} +1 -1
  19. package/dist/{chunk-3OXWJ3CZ.cjs → chunk-GVOTXXZG.cjs} +5 -5
  20. package/dist/{chunk-3OXWJ3CZ.cjs.map → chunk-GVOTXXZG.cjs.map} +1 -1
  21. package/dist/{chunk-CKYA2IG5.cjs → chunk-HBF4BDRU.cjs} +3 -3
  22. package/dist/{chunk-CKYA2IG5.cjs.map → chunk-HBF4BDRU.cjs.map} +1 -1
  23. package/dist/{chunk-E2AAIMXO.cjs → chunk-HGJGALLN.cjs} +832 -219
  24. package/dist/chunk-HGJGALLN.cjs.map +1 -0
  25. package/dist/{chunk-24CS7JWU.js → chunk-HOXKR26S.js} +3 -3
  26. package/dist/{chunk-24CS7JWU.js.map → chunk-HOXKR26S.js.map} +1 -1
  27. package/dist/{chunk-PDEHIGJ5.js → chunk-ICBAFX5B.js} +3 -3
  28. package/dist/{chunk-PDEHIGJ5.js.map → chunk-ICBAFX5B.js.map} +1 -1
  29. package/dist/{chunk-OYMYNYFV.cjs → chunk-IF6VAYIA.cjs} +5 -5
  30. package/dist/{chunk-OYMYNYFV.cjs.map → chunk-IF6VAYIA.cjs.map} +1 -1
  31. package/dist/{chunk-TOVSTC2M.cjs → chunk-LENXDIMY.cjs} +5 -5
  32. package/dist/{chunk-TOVSTC2M.cjs.map → chunk-LENXDIMY.cjs.map} +1 -1
  33. package/dist/{chunk-VYKMBLDX.cjs → chunk-MP6FK43E.cjs} +8 -8
  34. package/dist/{chunk-VYKMBLDX.cjs.map → chunk-MP6FK43E.cjs.map} +1 -1
  35. package/dist/{chunk-HUFLBZWI.js → chunk-PGDL26TQ.js} +4 -4
  36. package/dist/{chunk-HUFLBZWI.js.map → chunk-PGDL26TQ.js.map} +1 -1
  37. package/dist/{chunk-WXLKMEMB.js → chunk-QIEEFBZ5.js} +834 -221
  38. package/dist/chunk-QIEEFBZ5.js.map +1 -0
  39. package/dist/{chunk-YPKSLTL5.js → chunk-RSUOOMPT.js} +3 -3
  40. package/dist/{chunk-YPKSLTL5.js.map → chunk-RSUOOMPT.js.map} +1 -1
  41. package/dist/{chunk-UMY6Y6BM.js → chunk-VLOPZHFH.js} +3 -3
  42. package/dist/{chunk-UMY6Y6BM.js.map → chunk-VLOPZHFH.js.map} +1 -1
  43. package/dist/{chunk-GNHOB2ZB.cjs → chunk-XMBYDLZQ.cjs} +4 -4
  44. package/dist/{chunk-GNHOB2ZB.cjs.map → chunk-XMBYDLZQ.cjs.map} +1 -1
  45. package/dist/{chunk-YG7DGGCA.js → chunk-XQDM6T6C.js} +3 -3
  46. package/dist/{chunk-YG7DGGCA.js.map → chunk-XQDM6T6C.js.map} +1 -1
  47. package/dist/{chunk-ZNDAXSDP.js → chunk-YH6SSJDW.js} +3 -3
  48. package/dist/{chunk-ZNDAXSDP.js.map → chunk-YH6SSJDW.js.map} +1 -1
  49. package/dist/{chunk-EOEDGJ75.js → chunk-Z3G65XHZ.js} +3 -3
  50. package/dist/{chunk-EOEDGJ75.js.map → chunk-Z3G65XHZ.js.map} +1 -1
  51. package/dist/chunk-ZCOVDK2E.js +153 -0
  52. package/dist/chunk-ZCOVDK2E.js.map +1 -0
  53. package/dist/components/DetailPanel.d.ts +106 -0
  54. package/dist/connect/docx.cjs +6 -6
  55. package/dist/connect/docx.js +4 -4
  56. package/dist/connect/index.cjs +47 -47
  57. package/dist/connect/index.js +17 -17
  58. package/dist/databases/DatabaseRowDetail.d.ts +32 -0
  59. package/dist/databases/DatabaseTable.d.ts +3 -1
  60. package/dist/databases/DatabaseToolbar.d.ts +9 -1
  61. package/dist/databases/PickCellEditor.d.ts +8 -1
  62. package/dist/databases/SelectCellEditor.d.ts +6 -1
  63. package/dist/databases/column-types.d.ts +5 -0
  64. package/dist/databases/databaseColumns.d.ts +7 -0
  65. package/dist/databases/index.cjs +381 -11
  66. package/dist/databases/index.cjs.map +1 -1
  67. package/dist/databases/index.d.ts +7 -5
  68. package/dist/databases/index.js +379 -14
  69. package/dist/databases/index.js.map +1 -1
  70. package/dist/databases/linkCells.d.ts +4 -2
  71. package/dist/docx/NativeDocxEditor.d.ts +3 -1
  72. package/dist/docx/RibbonMenu.d.ts +15 -0
  73. package/dist/docx/StyleGallery.d.ts +9 -0
  74. package/dist/docx/WordReferences.d.ts +21 -0
  75. package/dist/docx/index.cjs +24 -24
  76. package/dist/docx/index.js +3 -3
  77. package/dist/docx/review/DocxEditorReview.d.ts +4 -2
  78. package/dist/docx/review/commentText.d.ts +7 -0
  79. package/dist/docx/wordStyles.d.ts +21 -0
  80. package/dist/facts/index.cjs +5 -5
  81. package/dist/facts/index.js +2 -2
  82. package/dist/files/index.cjs +308 -0
  83. package/dist/files/index.cjs.map +1 -1
  84. package/dist/files/index.js +298 -2
  85. package/dist/files/index.js.map +1 -1
  86. package/dist/files/views/gridViews.d.ts +80 -0
  87. package/dist/files/views/index.d.ts +2 -0
  88. package/dist/files/views/useGridViews.d.ts +38 -0
  89. package/dist/index.cjs +1237 -1237
  90. package/dist/index.cjs.map +1 -1
  91. package/dist/index.d.ts +1 -0
  92. package/dist/index.js +100 -139
  93. package/dist/index.js.map +1 -1
  94. package/dist/settings/index.cjs +1 -1
  95. package/dist/settings/index.js +1 -1
  96. package/dist/shell/index.cjs +67 -67
  97. package/dist/shell/index.js +3 -3
  98. package/dist/studio/index.cjs +7 -7
  99. package/dist/studio/index.js +6 -6
  100. package/dist/tags/TagDetail.d.ts +1 -0
  101. package/dist/workflow-canvas/index.cjs +51 -51
  102. package/dist/workflow-canvas/index.js +8 -8
  103. package/package.json +4 -4
  104. package/src/docx/styles.css +564 -91
  105. package/dist/chunk-E2AAIMXO.cjs.map +0 -1
  106. package/dist/chunk-WXLKMEMB.js.map +0 -1
@@ -0,0 +1,153 @@
1
+ "use client";
2
+ import { X, Loader2 } from 'lucide-react';
3
+ import { Button, cn } from '@arbidocs/react/ui';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ // src/components/DetailPanel.tsx
7
+ var DEFAULT_DETAIL_PANEL_LABELS = {
8
+ close: "Close",
9
+ loading: "Loading\u2026",
10
+ showing: "Showing {shown} of {count}"
11
+ };
12
+ function DetailPanel({
13
+ title,
14
+ icon,
15
+ subtitle,
16
+ actions,
17
+ onClose,
18
+ isLoading,
19
+ children,
20
+ labels,
21
+ className,
22
+ testId = "detail-panel"
23
+ }) {
24
+ const l = { ...DEFAULT_DETAIL_PANEL_LABELS, ...labels };
25
+ return /* @__PURE__ */ jsxs(
26
+ "section",
27
+ {
28
+ className: cn("flex h-full min-h-0 flex-col bg-card", className),
29
+ "data-slot": "detail-panel",
30
+ "data-testid": testId,
31
+ children: [
32
+ /* @__PURE__ */ jsxs("header", { className: "flex items-start gap-2 border-b border-border px-4 py-3", children: [
33
+ icon && /* @__PURE__ */ jsx("span", { className: "mt-1 shrink-0 text-muted-foreground", children: icon }),
34
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
35
+ /* @__PURE__ */ jsx(
36
+ "h2",
37
+ {
38
+ className: "break-words text-base font-semibold leading-snug",
39
+ "data-testid": `${testId}-title`,
40
+ children: title
41
+ }
42
+ ),
43
+ subtitle && /* @__PURE__ */ jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: subtitle })
44
+ ] }),
45
+ actions && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-1", children: actions }),
46
+ onClose && /* @__PURE__ */ jsx(
47
+ Button,
48
+ {
49
+ variant: "ghost",
50
+ size: "icon",
51
+ className: "size-8 shrink-0",
52
+ onClick: onClose,
53
+ "aria-label": l.close,
54
+ title: l.close,
55
+ "data-testid": `${testId}-close`,
56
+ children: /* @__PURE__ */ jsx(X, { className: "size-4" })
57
+ }
58
+ )
59
+ ] }),
60
+ /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-y-auto px-4 py-4", children: isLoading ? /* @__PURE__ */ jsx(DetailLoading, { label: l.loading }) : /* @__PURE__ */ jsx(DetailBody, { children }) })
61
+ ]
62
+ }
63
+ );
64
+ }
65
+ function DetailBody({
66
+ children,
67
+ className,
68
+ testId
69
+ }) {
70
+ return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-6", className), "data-testid": testId, children });
71
+ }
72
+ function DetailLoading({ label = DEFAULT_DETAIL_PANEL_LABELS.loading }) {
73
+ return /* @__PURE__ */ jsxs("p", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
74
+ /* @__PURE__ */ jsx(Loader2, { className: "size-4 animate-spin" }),
75
+ " ",
76
+ label
77
+ ] });
78
+ }
79
+ function DetailSection({
80
+ title,
81
+ count,
82
+ shown,
83
+ showingLabel = DEFAULT_DETAIL_PANEL_LABELS.showing,
84
+ children,
85
+ testId
86
+ }) {
87
+ return /* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-2", "data-testid": testId, children: [
88
+ /* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2", children: [
89
+ /* @__PURE__ */ jsx("h2", { className: "text-sm font-semibold", children: title }),
90
+ count !== void 0 && /* @__PURE__ */ jsx("span", { className: "text-sm tabular-nums text-muted-foreground", children: count }),
91
+ count !== void 0 && shown !== void 0 && shown < count && /* @__PURE__ */ jsx("span", { className: "ml-auto text-xs text-muted-foreground", children: showingLabel.replace("{shown}", String(shown)).replace("{count}", String(count)) })
92
+ ] }),
93
+ children
94
+ ] });
95
+ }
96
+ function DetailFields({ children, className }) {
97
+ return /* @__PURE__ */ jsx(
98
+ "dl",
99
+ {
100
+ className: cn(
101
+ "grid grid-cols-1 gap-x-4 gap-y-2 sm:grid-cols-[minmax(8rem,auto)_1fr]",
102
+ className
103
+ ),
104
+ children
105
+ }
106
+ );
107
+ }
108
+ function DetailField({ label, icon, children, testId }) {
109
+ return /* @__PURE__ */ jsxs("div", { className: "contents", "data-testid": testId, children: [
110
+ /* @__PURE__ */ jsxs("dt", { className: "flex items-start gap-1.5 pt-1.5 text-sm text-muted-foreground", children: [
111
+ icon && /* @__PURE__ */ jsx("span", { className: "mt-0.5 shrink-0", children: icon }),
112
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 break-words", children: label })
113
+ ] }),
114
+ /* @__PURE__ */ jsx("dd", { className: "min-w-0", children })
115
+ ] });
116
+ }
117
+ function DetailLinkList({ children }) {
118
+ return /* @__PURE__ */ jsx("ul", { className: "divide-y divide-border overflow-hidden rounded-lg border border-border", children });
119
+ }
120
+ function DetailLinkItem({
121
+ icon,
122
+ children,
123
+ trailing,
124
+ after,
125
+ onClick,
126
+ testId
127
+ }) {
128
+ return /* @__PURE__ */ jsxs("li", { className: "flex items-start", children: [
129
+ /* @__PURE__ */ jsxs(
130
+ "button",
131
+ {
132
+ type: "button",
133
+ className: "flex w-full items-start gap-2 px-3 py-2 text-left text-sm transition-colors hover:bg-muted/50 disabled:hover:bg-transparent",
134
+ disabled: !onClick,
135
+ onClick,
136
+ "data-testid": testId,
137
+ children: [
138
+ icon && /* @__PURE__ */ jsx("span", { className: "mt-0.5 shrink-0 text-muted-foreground", children: icon }),
139
+ children,
140
+ trailing
141
+ ]
142
+ }
143
+ ),
144
+ after
145
+ ] });
146
+ }
147
+ function DetailEmpty({ children }) {
148
+ return /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children });
149
+ }
150
+
151
+ export { DEFAULT_DETAIL_PANEL_LABELS, DetailBody, DetailEmpty, DetailField, DetailFields, DetailLinkItem, DetailLinkList, DetailLoading, DetailPanel, DetailSection };
152
+ //# sourceMappingURL=chunk-ZCOVDK2E.js.map
153
+ //# sourceMappingURL=chunk-ZCOVDK2E.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/DetailPanel.tsx"],"names":[],"mappings":"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","file":"chunk-ZCOVDK2E.js","sourcesContent":["/**\n * DetailPanel: one record in full, the same way for every kind of record (a tag, a database row,\n * …). The parts compose:\n *\n * <DetailPanel title=\"Acme Ltd\" icon={…} actions={…} onClose={…}> header + scrolling body\n * <DetailSection title=\"Fields\"> a titled block (with a count)\n * <DetailFields> label / value grid\n * <DetailField label=\"Status\">{typed editor}</DetailField>\n * </DetailFields>\n * </DetailSection>\n * <DetailSection title=\"Documents\" count={12} shown={5}>\n * <DetailLinkList> linked items, each openable\n * <DetailLinkItem icon={…} onClick={…}>Engagement letter.pdf</DetailLinkItem>\n * </DetailLinkList>\n * </DetailSection>\n * </DetailPanel>\n *\n * `DetailBody` is the body alone (sections stacked, no header) for a host that has its own header,\n * like a page section. Presentational: values and edits belong to the host.\n */\nimport type { ReactNode } from 'react'\nimport { Loader2, X } from 'lucide-react'\nimport { Button, cn } from '@arbidocs/react/ui'\n\nexport interface DetailPanelLabels {\n close: string\n loading: string\n /** `{shown}` of `{count}` listed. */\n showing: string\n}\n\nexport const DEFAULT_DETAIL_PANEL_LABELS: DetailPanelLabels = {\n close: 'Close',\n loading: 'Loading…',\n showing: 'Showing {shown} of {count}',\n}\n\nexport interface DetailPanelProps {\n title: ReactNode\n /** A glyph before the title (the record's kind). */\n icon?: ReactNode\n /** A quieter line under the title. */\n subtitle?: ReactNode\n /** Buttons on the header's right (delete, open elsewhere, …). */\n actions?: ReactNode\n /** Shows a close button. */\n onClose?: () => void\n isLoading?: boolean\n children?: ReactNode\n labels?: Partial<DetailPanelLabels>\n className?: string\n testId?: string\n}\n\n/** A record's header (title, actions, close) over its sections, which scroll. */\nexport function DetailPanel({\n title,\n icon,\n subtitle,\n actions,\n onClose,\n isLoading,\n children,\n labels,\n className,\n testId = 'detail-panel',\n}: DetailPanelProps) {\n const l = { ...DEFAULT_DETAIL_PANEL_LABELS, ...labels }\n return (\n <section\n className={cn('flex h-full min-h-0 flex-col bg-card', className)}\n data-slot=\"detail-panel\"\n data-testid={testId}\n >\n <header className=\"flex items-start gap-2 border-b border-border px-4 py-3\">\n {icon && <span className=\"mt-1 shrink-0 text-muted-foreground\">{icon}</span>}\n <div className=\"min-w-0 flex-1\">\n <h2\n className=\"break-words text-base font-semibold leading-snug\"\n data-testid={`${testId}-title`}\n >\n {title}\n </h2>\n {subtitle && <p className=\"mt-0.5 text-xs text-muted-foreground\">{subtitle}</p>}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-1\">{actions}</div>}\n {onClose && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-8 shrink-0\"\n onClick={onClose}\n aria-label={l.close}\n title={l.close}\n data-testid={`${testId}-close`}\n >\n <X className=\"size-4\" />\n </Button>\n )}\n </header>\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-4\">\n {isLoading ? <DetailLoading label={l.loading} /> : <DetailBody>{children}</DetailBody>}\n </div>\n </section>\n )\n}\n\n/** The sections of a record, stacked (a host with its own header renders this alone). */\nexport function DetailBody({\n children,\n className,\n testId,\n}: {\n children?: ReactNode\n className?: string\n testId?: string\n}) {\n return (\n <div className={cn('flex flex-col gap-6', className)} data-testid={testId}>\n {children}\n </div>\n )\n}\n\n/** The record is still loading. */\nexport function DetailLoading({ label = DEFAULT_DETAIL_PANEL_LABELS.loading }: { label?: string }) {\n return (\n <p className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <Loader2 className=\"size-4 animate-spin\" /> {label}\n </p>\n )\n}\n\nexport interface DetailSectionProps {\n title: ReactNode\n /** How many there are (shown after the title). */\n count?: number\n /** How many are listed, when fewer than `count`: \"Showing 5 of 12\". */\n shown?: number\n /** The \"showing\" line, `{shown}` and `{count}` filled in. */\n showingLabel?: string\n children: ReactNode\n testId?: string\n}\n\n/** A titled block of a record: its fields, or a kind of linked item. */\nexport function DetailSection({\n title,\n count,\n shown,\n showingLabel = DEFAULT_DETAIL_PANEL_LABELS.showing,\n children,\n testId,\n}: DetailSectionProps) {\n return (\n <section className=\"flex flex-col gap-2\" data-testid={testId}>\n <div className=\"flex items-baseline gap-2\">\n <h2 className=\"text-sm font-semibold\">{title}</h2>\n {count !== undefined && (\n <span className=\"text-sm tabular-nums text-muted-foreground\">{count}</span>\n )}\n {count !== undefined && shown !== undefined && shown < count && (\n <span className=\"ml-auto text-xs text-muted-foreground\">\n {showingLabel.replace('{shown}', String(shown)).replace('{count}', String(count))}\n </span>\n )}\n </div>\n {children}\n </section>\n )\n}\n\n/** The fields of a record: labels beside their values (stacked on a narrow screen). */\nexport function DetailFields({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <dl\n className={cn(\n 'grid grid-cols-1 gap-x-4 gap-y-2 sm:grid-cols-[minmax(8rem,auto)_1fr]',\n className\n )}\n >\n {children}\n </dl>\n )\n}\n\nexport interface DetailFieldProps {\n label: ReactNode\n /** A glyph before the label (the field's type). */\n icon?: ReactNode\n /** The value: read-only text or the field's editor. */\n children: ReactNode\n testId?: string\n}\n\n/** One field: its label and its value (or editor). */\nexport function DetailField({ label, icon, children, testId }: DetailFieldProps) {\n return (\n <div className=\"contents\" data-testid={testId}>\n <dt className=\"flex items-start gap-1.5 pt-1.5 text-sm text-muted-foreground\">\n {icon && <span className=\"mt-0.5 shrink-0\">{icon}</span>}\n <span className=\"min-w-0 break-words\">{label}</span>\n </dt>\n <dd className=\"min-w-0\">{children}</dd>\n </div>\n )\n}\n\n/** Linked items (documents, facts, threads, rows), one per line. */\nexport function DetailLinkList({ children }: { children: ReactNode }) {\n return (\n <ul className=\"divide-y divide-border overflow-hidden rounded-lg border border-border\">\n {children}\n </ul>\n )\n}\n\nexport interface DetailLinkItemProps {\n icon?: ReactNode\n /** The item: its name, and any quieter lines under it. */\n children: ReactNode\n /** Right of the item, inside its button (a date, a count). */\n trailing?: ReactNode\n /** Right of the item, outside its button (its own control: a popover, …). */\n after?: ReactNode\n /** Open the item. Without it the line is inert. */\n onClick?: () => void\n testId?: string\n}\n\n/** One linked item: the whole line opens it. */\nexport function DetailLinkItem({\n icon,\n children,\n trailing,\n after,\n onClick,\n testId,\n}: DetailLinkItemProps) {\n return (\n <li className=\"flex items-start\">\n <button\n type=\"button\"\n className=\"flex w-full items-start gap-2 px-3 py-2 text-left text-sm transition-colors hover:bg-muted/50 disabled:hover:bg-transparent\"\n disabled={!onClick}\n onClick={onClick}\n data-testid={testId}\n >\n {icon && <span className=\"mt-0.5 shrink-0 text-muted-foreground\">{icon}</span>}\n {children}\n {trailing}\n </button>\n {after}\n </li>\n )\n}\n\n/** Nothing of a kind is linked yet. */\nexport function DetailEmpty({ children }: { children: ReactNode }) {\n return <p className=\"text-sm text-muted-foreground\">{children}</p>\n}\n"]}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * DetailPanel: one record in full, the same way for every kind of record (a tag, a database row,
3
+ * …). The parts compose:
4
+ *
5
+ * <DetailPanel title="Acme Ltd" icon={…} actions={…} onClose={…}> header + scrolling body
6
+ * <DetailSection title="Fields"> a titled block (with a count)
7
+ * <DetailFields> label / value grid
8
+ * <DetailField label="Status">{typed editor}</DetailField>
9
+ * </DetailFields>
10
+ * </DetailSection>
11
+ * <DetailSection title="Documents" count={12} shown={5}>
12
+ * <DetailLinkList> linked items, each openable
13
+ * <DetailLinkItem icon={…} onClick={…}>Engagement letter.pdf</DetailLinkItem>
14
+ * </DetailLinkList>
15
+ * </DetailSection>
16
+ * </DetailPanel>
17
+ *
18
+ * `DetailBody` is the body alone (sections stacked, no header) for a host that has its own header,
19
+ * like a page section. Presentational: values and edits belong to the host.
20
+ */
21
+ import type { ReactNode } from 'react';
22
+ export interface DetailPanelLabels {
23
+ close: string;
24
+ loading: string;
25
+ /** `{shown}` of `{count}` listed. */
26
+ showing: string;
27
+ }
28
+ export declare const DEFAULT_DETAIL_PANEL_LABELS: DetailPanelLabels;
29
+ export interface DetailPanelProps {
30
+ title: ReactNode;
31
+ /** A glyph before the title (the record's kind). */
32
+ icon?: ReactNode;
33
+ /** A quieter line under the title. */
34
+ subtitle?: ReactNode;
35
+ /** Buttons on the header's right (delete, open elsewhere, …). */
36
+ actions?: ReactNode;
37
+ /** Shows a close button. */
38
+ onClose?: () => void;
39
+ isLoading?: boolean;
40
+ children?: ReactNode;
41
+ labels?: Partial<DetailPanelLabels>;
42
+ className?: string;
43
+ testId?: string;
44
+ }
45
+ /** A record's header (title, actions, close) over its sections, which scroll. */
46
+ export declare function DetailPanel({ title, icon, subtitle, actions, onClose, isLoading, children, labels, className, testId, }: DetailPanelProps): import("react").JSX.Element;
47
+ /** The sections of a record, stacked (a host with its own header renders this alone). */
48
+ export declare function DetailBody({ children, className, testId, }: {
49
+ children?: ReactNode;
50
+ className?: string;
51
+ testId?: string;
52
+ }): import("react").JSX.Element;
53
+ /** The record is still loading. */
54
+ export declare function DetailLoading({ label }: {
55
+ label?: string;
56
+ }): import("react").JSX.Element;
57
+ export interface DetailSectionProps {
58
+ title: ReactNode;
59
+ /** How many there are (shown after the title). */
60
+ count?: number;
61
+ /** How many are listed, when fewer than `count`: "Showing 5 of 12". */
62
+ shown?: number;
63
+ /** The "showing" line, `{shown}` and `{count}` filled in. */
64
+ showingLabel?: string;
65
+ children: ReactNode;
66
+ testId?: string;
67
+ }
68
+ /** A titled block of a record: its fields, or a kind of linked item. */
69
+ export declare function DetailSection({ title, count, shown, showingLabel, children, testId, }: DetailSectionProps): import("react").JSX.Element;
70
+ /** The fields of a record: labels beside their values (stacked on a narrow screen). */
71
+ export declare function DetailFields({ children, className }: {
72
+ children: ReactNode;
73
+ className?: string;
74
+ }): import("react").JSX.Element;
75
+ export interface DetailFieldProps {
76
+ label: ReactNode;
77
+ /** A glyph before the label (the field's type). */
78
+ icon?: ReactNode;
79
+ /** The value: read-only text or the field's editor. */
80
+ children: ReactNode;
81
+ testId?: string;
82
+ }
83
+ /** One field: its label and its value (or editor). */
84
+ export declare function DetailField({ label, icon, children, testId }: DetailFieldProps): import("react").JSX.Element;
85
+ /** Linked items (documents, facts, threads, rows), one per line. */
86
+ export declare function DetailLinkList({ children }: {
87
+ children: ReactNode;
88
+ }): import("react").JSX.Element;
89
+ export interface DetailLinkItemProps {
90
+ icon?: ReactNode;
91
+ /** The item: its name, and any quieter lines under it. */
92
+ children: ReactNode;
93
+ /** Right of the item, inside its button (a date, a count). */
94
+ trailing?: ReactNode;
95
+ /** Right of the item, outside its button (its own control: a popover, …). */
96
+ after?: ReactNode;
97
+ /** Open the item. Without it the line is inert. */
98
+ onClick?: () => void;
99
+ testId?: string;
100
+ }
101
+ /** One linked item: the whole line opens it. */
102
+ export declare function DetailLinkItem({ icon, children, trailing, after, onClick, testId, }: DetailLinkItemProps): import("react").JSX.Element;
103
+ /** Nothing of a kind is linked yet. */
104
+ export declare function DetailEmpty({ children }: {
105
+ children: ReactNode;
106
+ }): import("react").JSX.Element;
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkRZGVMV6B_cjs = require('../chunk-RZGVMV6B.cjs');
4
+ var chunkEHB7J6SR_cjs = require('../chunk-EHB7J6SR.cjs');
5
5
  require('../chunk-MUMH3Z6K.cjs');
6
- var chunk3OXWJ3CZ_cjs = require('../chunk-3OXWJ3CZ.cjs');
7
- require('../chunk-E2AAIMXO.cjs');
6
+ var chunkGVOTXXZG_cjs = require('../chunk-GVOTXXZG.cjs');
7
+ require('../chunk-HGJGALLN.cjs');
8
8
  require('../chunk-AOFATOT3.cjs');
9
9
  require('../chunk-RC25WMVB.cjs');
10
10
  require('../chunk-7UTB4PHM.cjs');
@@ -16,13 +16,13 @@ function ConnectedStreamedWordArtifact({
16
16
  fontBaseUrl,
17
17
  ...props
18
18
  }) {
19
- const adapter = chunkRZGVMV6B_cjs.useConnectedNativeDocxAdapter(fontBaseUrl);
20
- return /* @__PURE__ */ jsxRuntime.jsx(chunk3OXWJ3CZ_cjs.StreamedWordArtifact, { ...props, adapter });
19
+ const adapter = chunkEHB7J6SR_cjs.useConnectedNativeDocxAdapter(fontBaseUrl);
20
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkGVOTXXZG_cjs.StreamedWordArtifact, { ...props, adapter });
21
21
  }
22
22
 
23
23
  Object.defineProperty(exports, "ConnectedNativeDocxEditor", {
24
24
  enumerable: true,
25
- get: function () { return chunkRZGVMV6B_cjs.ConnectedNativeDocxEditor; }
25
+ get: function () { return chunkEHB7J6SR_cjs.ConnectedNativeDocxEditor; }
26
26
  });
27
27
  exports.ConnectedStreamedWordArtifact = ConnectedStreamedWordArtifact;
28
28
  //# sourceMappingURL=docx.cjs.map
@@ -1,9 +1,9 @@
1
1
  "use client";
2
- import { useConnectedNativeDocxAdapter } from '../chunk-ZNDAXSDP.js';
3
- export { ConnectedNativeDocxEditor } from '../chunk-ZNDAXSDP.js';
2
+ import { useConnectedNativeDocxAdapter } from '../chunk-YH6SSJDW.js';
3
+ export { ConnectedNativeDocxEditor } from '../chunk-YH6SSJDW.js';
4
4
  import '../chunk-OYMWV45N.js';
5
- import { StreamedWordArtifact } from '../chunk-YPKSLTL5.js';
6
- import '../chunk-WXLKMEMB.js';
5
+ import { StreamedWordArtifact } from '../chunk-RSUOOMPT.js';
6
+ import '../chunk-QIEEFBZ5.js';
7
7
  import '../chunk-D3QPYKZG.js';
8
8
  import '../chunk-AF6RDAJF.js';
9
9
  import '../chunk-AA3PT6KR.js';
@@ -1,35 +1,35 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkGNHOB2ZB_cjs = require('../chunk-GNHOB2ZB.cjs');
5
4
  var chunk5YXG342J_cjs = require('../chunk-5YXG342J.cjs');
5
+ var chunkXMBYDLZQ_cjs = require('../chunk-XMBYDLZQ.cjs');
6
+ var chunkEHB7J6SR_cjs = require('../chunk-EHB7J6SR.cjs');
7
+ var chunkMUMH3Z6K_cjs = require('../chunk-MUMH3Z6K.cjs');
6
8
  var chunkJH6JTI76_cjs = require('../chunk-JH6JTI76.cjs');
9
+ require('../chunk-HGJGALLN.cjs');
7
10
  var chunkO4YPVYPO_cjs = require('../chunk-O4YPVYPO.cjs');
8
- var chunkTOVSTC2M_cjs = require('../chunk-TOVSTC2M.cjs');
9
- var chunkVYKMBLDX_cjs = require('../chunk-VYKMBLDX.cjs');
10
- require('../chunk-VGOFFCMT.cjs');
11
- var chunkDCZGYCN2_cjs = require('../chunk-DCZGYCN2.cjs');
11
+ var chunkLENXDIMY_cjs = require('../chunk-LENXDIMY.cjs');
12
+ var chunkAOFATOT3_cjs = require('../chunk-AOFATOT3.cjs');
13
+ require('../chunk-RC25WMVB.cjs');
14
+ var chunk3US5OIDQ_cjs = require('../chunk-3US5OIDQ.cjs');
12
15
  var chunkN26CXGXC_cjs = require('../chunk-N26CXGXC.cjs');
13
- require('../chunk-KBPHLW2R.cjs');
14
16
  var chunk7RGLTF76_cjs = require('../chunk-7RGLTF76.cjs');
15
- require('../chunk-7D737FLE.cjs');
16
17
  require('../chunk-DETZZBG2.cjs');
17
18
  require('../chunk-32HW2Q33.cjs');
18
19
  var chunk2EI7NCUA_cjs = require('../chunk-2EI7NCUA.cjs');
19
- require('../chunk-PPCATBOY.cjs');
20
- require('../chunk-ADOKTJHV.cjs');
20
+ require('../chunk-7D737FLE.cjs');
21
21
  var chunkQVBZESYQ_cjs = require('../chunk-QVBZESYQ.cjs');
22
+ require('../chunk-ADOKTJHV.cjs');
23
+ var chunkMP6FK43E_cjs = require('../chunk-MP6FK43E.cjs');
24
+ require('../chunk-VGOFFCMT.cjs');
25
+ require('../chunk-B4SRYJLM.cjs');
26
+ require('../chunk-7UTB4PHM.cjs');
27
+ require('../chunk-PPCATBOY.cjs');
22
28
  var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
23
29
  var chunk3R6XBYL7_cjs = require('../chunk-3R6XBYL7.cjs');
24
30
  var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
25
31
  require('../chunk-IXALYQT7.cjs');
26
32
  require('../chunk-FX3K6LNZ.cjs');
27
- var chunkRZGVMV6B_cjs = require('../chunk-RZGVMV6B.cjs');
28
- var chunkMUMH3Z6K_cjs = require('../chunk-MUMH3Z6K.cjs');
29
- require('../chunk-E2AAIMXO.cjs');
30
- var chunkAOFATOT3_cjs = require('../chunk-AOFATOT3.cjs');
31
- require('../chunk-RC25WMVB.cjs');
32
- require('../chunk-7UTB4PHM.cjs');
33
33
  require('../chunk-MHVNT4J3.cjs');
34
34
  require('../chunk-DES3K4SD.cjs');
35
35
  var react = require('react');
@@ -119,7 +119,7 @@ function ConnectedWorkspaceActivity({
119
119
  [feed.data]
120
120
  );
121
121
  return /* @__PURE__ */ jsxRuntime.jsx(
122
- chunkTOVSTC2M_cjs.WorkspaceActivityList,
122
+ chunkLENXDIMY_cjs.WorkspaceActivityList,
123
123
  {
124
124
  ...listProps,
125
125
  items,
@@ -145,7 +145,7 @@ function ConnectedWorkspaceNotificationMenu({
145
145
  });
146
146
  if (!workspaceId) return null;
147
147
  return /* @__PURE__ */ jsxRuntime.jsx(
148
- chunkTOVSTC2M_cjs.WorkspaceNotificationMenu,
148
+ chunkLENXDIMY_cjs.WorkspaceNotificationMenu,
149
149
  {
150
150
  ...menuProps,
151
151
  level,
@@ -164,7 +164,7 @@ function ConnectedThreadFollow({
164
164
  enabled: status === "authenticated"
165
165
  });
166
166
  if (!conversationId) return null;
167
- const Control = as === "menu-item" ? chunkTOVSTC2M_cjs.ThreadFollowMenuItem : chunkTOVSTC2M_cjs.ThreadFollowButton;
167
+ const Control = as === "menu-item" ? chunkLENXDIMY_cjs.ThreadFollowMenuItem : chunkLENXDIMY_cjs.ThreadFollowButton;
168
168
  return /* @__PURE__ */ jsxRuntime.jsx(
169
169
  Control,
170
170
  {
@@ -290,7 +290,7 @@ function StreamedArtifact({
290
290
  }
291
291
  var STARTING = /* @__PURE__ */ new Set(["pending", "running"]);
292
292
  function formValues(step, inputs) {
293
- const fields = chunkDCZGYCN2_cjs.stepFields(step);
293
+ const fields = chunk3US5OIDQ_cjs.stepFields(step);
294
294
  if (!fields.length) return void 0;
295
295
  if (step.kind === "form")
296
296
  return Object.fromEntries(fields.map((f) => [f.name, inputs[f.name] ?? ""]));
@@ -325,10 +325,10 @@ function useAnswerRetry(missing, refetch) {
325
325
  function useWorkflowThread(workflow, options = {}) {
326
326
  const arbi = react$1.useArbi();
327
327
  const { ensureWorkspaceOpen, status } = chunkMUMH3Z6K_cjs.useConnection();
328
- const { wsId } = chunkGNHOB2ZB_cjs.useWorkspaceDocs();
328
+ const { wsId } = chunkXMBYDLZQ_cjs.useWorkspaceDocs();
329
329
  const [threadId, setThreadId] = react.useState(options.conversationId);
330
330
  const [localInputs, setLocalInputs] = react.useState(
331
- () => chunkDCZGYCN2_cjs.initialRunInputs(workflow, options.initialInputs)
331
+ () => chunk3US5OIDQ_cjs.initialRunInputs(workflow, options.initialInputs)
332
332
  );
333
333
  const [edits, setEdits] = react.useState({});
334
334
  const [localStates, setLocalStates] = react.useState({});
@@ -348,12 +348,12 @@ function useWorkflowThread(workflow, options = {}) {
348
348
  );
349
349
  const conversation = conversations.data?.find((c) => c.external_id === threadId);
350
350
  const steps = react.useMemo(
351
- () => chunkDCZGYCN2_cjs.workflowSteps(workflow).length > 0 ? chunkDCZGYCN2_cjs.workflowSteps(workflow) : chunkDCZGYCN2_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
351
+ () => chunk3US5OIDQ_cjs.workflowSteps(workflow).length > 0 ? chunk3US5OIDQ_cjs.workflowSteps(workflow) : chunk3US5OIDQ_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
352
352
  [workflow, conversation?.plan?.steps]
353
353
  );
354
354
  const activity = react$1.useConversationActivity(threadId, { live: !!threadId });
355
355
  const serverStates = react.useMemo(
356
- () => chunkDCZGYCN2_cjs.stepStatesFromActivity(activity.data ?? []),
356
+ () => chunk3US5OIDQ_cjs.stepStatesFromActivity(activity.data ?? []),
357
357
  [activity.data]
358
358
  );
359
359
  const working = steps.some(
@@ -396,7 +396,7 @@ function useWorkflowThread(workflow, options = {}) {
396
396
  async (values, done) => {
397
397
  await ensureWorkspaceOpen();
398
398
  const created = await createWork.mutateAsync({
399
- title: chunkDCZGYCN2_cjs.runThreadTitle(workflow, values).slice(0, 60),
399
+ title: chunk3US5OIDQ_cjs.runThreadTitle(workflow, values).slice(0, 60),
400
400
  description: workflow.description || null,
401
401
  prompt: null,
402
402
  skill_ref: null,
@@ -408,7 +408,7 @@ function useWorkflowThread(workflow, options = {}) {
408
408
  criteria: [],
409
409
  max_passes: 3,
410
410
  documents: [],
411
- steps: chunkDCZGYCN2_cjs.toPlanSteps(workflow, {
411
+ steps: chunk3US5OIDQ_cjs.toPlanSteps(workflow, {
412
412
  inputs: values,
413
413
  resolveWorkflow: options.resolveWorkflow,
414
414
  compose: options.compose
@@ -495,7 +495,7 @@ function useWorkflowThread(workflow, options = {}) {
495
495
  const anyRunning = Object.values(states).some((s) => s.status === "running");
496
496
  const needsStart = !threadId || idle && !anyRunning;
497
497
  const runError = idle ? conversation?.last_error ?? null : null;
498
- const view = chunkDCZGYCN2_cjs.useWorkflowView({
498
+ const view = chunk3US5OIDQ_cjs.useWorkflowView({
499
499
  steps,
500
500
  states,
501
501
  inputs,
@@ -538,7 +538,7 @@ function WorkflowRunThread({
538
538
  if (listed && activeThreadId !== conversationId) selectThread(conversationId);
539
539
  }, [listed, activeThreadId, conversationId, selectThread]);
540
540
  return /* @__PURE__ */ jsxRuntime.jsx(
541
- chunkVYKMBLDX_cjs.ChatPage,
541
+ chunkMP6FK43E_cjs.ChatPage,
542
542
  {
543
543
  chat: { ...chat, threads: chat.threads.filter((t) => t.id === conversationId) },
544
544
  singleThread: true,
@@ -576,7 +576,7 @@ function WorkflowSignDialog({
576
576
  const arbi = react$1.useArbi();
577
577
  const { user, ensureWorkspaceOpen } = chunkMUMH3Z6K_cjs.useConnection();
578
578
  const tools = documentTools.useOptionalDocumentTools();
579
- const { id, version: stepVersion } = chunkDCZGYCN2_cjs.splitDocRef(docRef);
579
+ const { id, version: stepVersion } = chunk3US5OIDQ_cjs.splitDocRef(docRef);
580
580
  const [version, setVersion] = react.useState(stepVersion);
581
581
  const [pdf, setPdf] = react.useState(null);
582
582
  const [preparing, setPreparing] = react.useState(false);
@@ -654,7 +654,7 @@ function WorkflowWordDialog({
654
654
  onClose,
655
655
  labels
656
656
  }) {
657
- const { id } = chunkDCZGYCN2_cjs.splitDocRef(docRef);
657
+ const { id } = chunk3US5OIDQ_cjs.splitDocRef(docRef);
658
658
  return /* @__PURE__ */ jsxRuntime.jsx(
659
659
  chunkULWRNGGE_cjs.ModalScaffold,
660
660
  {
@@ -663,7 +663,7 @@ function WorkflowWordDialog({
663
663
  title: title ?? labels.wordTitle,
664
664
  size: "xl",
665
665
  testId: "workflow-word-dialog",
666
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkRZGVMV6B_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
666
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkEHB7J6SR_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
667
667
  }
668
668
  );
669
669
  }
@@ -803,7 +803,7 @@ function ConnectedWorkflowRunner({
803
803
  const dl = { ...DEFAULT_WORKFLOW_RUNNER_DIALOG_LABELS, ...dialogLabels };
804
804
  const arbi = react$1.useArbi();
805
805
  const { ensureWorkspaceOpen, user } = chunkMUMH3Z6K_cjs.useConnection();
806
- const { wsId } = chunkGNHOB2ZB_cjs.useWorkspaceDocs();
806
+ const { wsId } = chunkXMBYDLZQ_cjs.useWorkspaceDocs();
807
807
  const { data: docs = [], refetch } = react$1.useDocuments(wsId);
808
808
  const [sending, setSending] = react.useState([]);
809
809
  const [added, setAdded] = react.useState({});
@@ -826,7 +826,7 @@ function ConnectedWorkflowRunner({
826
826
  () => ({
827
827
  me: user?.externalId,
828
828
  openDocument: onOpenDocument && ((ref) => {
829
- const { id, version } = chunkDCZGYCN2_cjs.splitDocRef(ref);
829
+ const { id, version } = chunk3US5OIDQ_cjs.splitDocRef(ref);
830
830
  onOpenDocument(id, version);
831
831
  }),
832
832
  openDraft: onOpenDraft && ((draftId) => onOpenDraft(draftId)),
@@ -836,7 +836,7 @@ function ConnectedWorkflowRunner({
836
836
  const w = state.waiting;
837
837
  if (w?.doc_ext_id) setDialog({ kind: "sign", docRef: w.doc_ext_id });
838
838
  }),
839
- openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(chunkDCZGYCN2_cjs.splitDocRef(ref).id) ?? "" })),
839
+ openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(chunk3US5OIDQ_cjs.splitDocRef(ref).id) ?? "" })),
840
840
  openReview: hostActions?.openReview ?? ((tags, documents) => setDialog({ kind: "review", tags, documents }))
841
841
  }),
842
842
  [user?.externalId, onOpenDocument, onOpenDraft, onOpenMessage, hostActions, nameOfDoc, inThread]
@@ -972,7 +972,7 @@ function ConnectedWorkflowRunner({
972
972
  );
973
973
  };
974
974
  const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
975
- chunkDCZGYCN2_cjs.WorkflowRunner,
975
+ chunk3US5OIDQ_cjs.WorkflowRunner,
976
976
  {
977
977
  people,
978
978
  ...runnerProps,
@@ -1018,10 +1018,10 @@ function ConnectedWorkflowRunner({
1018
1018
  ) }),
1019
1019
  inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1020
1020
  /* @__PURE__ */ jsxRuntime.jsx(
1021
- chunkDCZGYCN2_cjs.WorkflowStepBar,
1021
+ chunk3US5OIDQ_cjs.WorkflowStepBar,
1022
1022
  {
1023
1023
  run: view,
1024
- levels: chunkDCZGYCN2_cjs.stepLevels(view.steps),
1024
+ levels: chunk3US5OIDQ_cjs.stepLevels(view.steps),
1025
1025
  doneTitle: (workflow.run.kind === "steps" ? workflow.run.completion?.title : void 0) ?? runnerProps.labels?.complete ?? "Done",
1026
1026
  icon: (key) => key && runnerProps.renderIcon ? runnerProps.renderIcon(key) : void 0,
1027
1027
  tid: (suffix) => `${testIdPrefix}-${suffix}`
@@ -1202,7 +1202,7 @@ function ConnectedTagTable({
1202
1202
  const fail = (e) => setError(e instanceof Error ? e.message : String(e));
1203
1203
  const snapshot = (data) => {
1204
1204
  const title = exportTitle ?? KIND_TITLES[kind];
1205
- const bytes = chunkTOVSTC2M_cjs.tagTableDocx(data, {
1205
+ const bytes = chunkLENXDIMY_cjs.tagTableDocx(data, {
1206
1206
  title,
1207
1207
  nameOf: (id) => people.find((p) => p.value === id)?.label
1208
1208
  });
@@ -1212,7 +1212,7 @@ function ConnectedTagTable({
1212
1212
  };
1213
1213
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1214
1214
  /* @__PURE__ */ jsxRuntime.jsx(
1215
- chunkTOVSTC2M_cjs.TagTable,
1215
+ chunkLENXDIMY_cjs.TagTable,
1216
1216
  {
1217
1217
  ...props,
1218
1218
  table,
@@ -3322,7 +3322,7 @@ function ConnectedMailbox({
3322
3322
  function ActiveChat({ agentId, workspaceId }) {
3323
3323
  const chat = react$1.useArbiChat({ agentId, workspaceId });
3324
3324
  return /* @__PURE__ */ jsxRuntime.jsx(
3325
- chunkVYKMBLDX_cjs.ChatPage,
3325
+ chunkMP6FK43E_cjs.ChatPage,
3326
3326
  {
3327
3327
  chat: { ...chat, assistantMode: void 0, setAssistantMode: void 0 },
3328
3328
  documentsRequired: false,
@@ -3384,35 +3384,35 @@ function ConnectedAgentChatPanel({
3384
3384
 
3385
3385
  Object.defineProperty(exports, "ConnectedAssistantDock", {
3386
3386
  enumerable: true,
3387
- get: function () { return chunkGNHOB2ZB_cjs.ConnectedAssistantDock; }
3387
+ get: function () { return chunkXMBYDLZQ_cjs.ConnectedAssistantDock; }
3388
3388
  });
3389
3389
  Object.defineProperty(exports, "redlineStats", {
3390
3390
  enumerable: true,
3391
- get: function () { return chunkGNHOB2ZB_cjs.redlineStats; }
3391
+ get: function () { return chunkXMBYDLZQ_cjs.redlineStats; }
3392
3392
  });
3393
3393
  Object.defineProperty(exports, "textToArtifact", {
3394
3394
  enumerable: true,
3395
- get: function () { return chunkGNHOB2ZB_cjs.textToArtifact; }
3395
+ get: function () { return chunkXMBYDLZQ_cjs.textToArtifact; }
3396
3396
  });
3397
3397
  Object.defineProperty(exports, "toRedlineMarkdown", {
3398
3398
  enumerable: true,
3399
- get: function () { return chunkGNHOB2ZB_cjs.toRedlineMarkdown; }
3399
+ get: function () { return chunkXMBYDLZQ_cjs.toRedlineMarkdown; }
3400
3400
  });
3401
3401
  Object.defineProperty(exports, "useConnectedAiTask", {
3402
3402
  enumerable: true,
3403
- get: function () { return chunkGNHOB2ZB_cjs.useConnectedAiTask; }
3403
+ get: function () { return chunkXMBYDLZQ_cjs.useConnectedAiTask; }
3404
3404
  });
3405
3405
  Object.defineProperty(exports, "useConnectedChat", {
3406
3406
  enumerable: true,
3407
- get: function () { return chunkGNHOB2ZB_cjs.useConnectedChat; }
3407
+ get: function () { return chunkXMBYDLZQ_cjs.useConnectedChat; }
3408
3408
  });
3409
3409
  Object.defineProperty(exports, "useSemanticSearch", {
3410
3410
  enumerable: true,
3411
- get: function () { return chunkGNHOB2ZB_cjs.useSemanticSearch; }
3411
+ get: function () { return chunkXMBYDLZQ_cjs.useSemanticSearch; }
3412
3412
  });
3413
3413
  Object.defineProperty(exports, "useWorkspaceDocs", {
3414
3414
  enumerable: true,
3415
- get: function () { return chunkGNHOB2ZB_cjs.useWorkspaceDocs; }
3415
+ get: function () { return chunkXMBYDLZQ_cjs.useWorkspaceDocs; }
3416
3416
  });
3417
3417
  Object.defineProperty(exports, "ConnectionProvider", {
3418
3418
  enumerable: true,