@arbidocs/blocks 0.4.15 → 0.4.17

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 (96) hide show
  1. package/dist/agents/index.cjs +369 -171
  2. package/dist/agents/index.js +4 -2
  3. package/dist/agents/tasks/DueDateMenu.d.ts +32 -0
  4. package/dist/agents/tasks/NewThreadDialog.d.ts +53 -0
  5. package/dist/agents/tasks/PersonPill.d.ts +22 -0
  6. package/dist/agents/tasks/PillSelect.d.ts +39 -0
  7. package/dist/agents/tasks/TaskActivityDialog.d.ts +14 -0
  8. package/dist/agents/tasks/TaskActivityTimeline.d.ts +54 -0
  9. package/dist/agents/tasks/TaskComposer.d.ts +6 -106
  10. package/dist/agents/tasks/TaskMoveDialog.d.ts +25 -0
  11. package/dist/agents/tasks/TaskOutputsCell.d.ts +23 -0
  12. package/dist/agents/tasks/TaskPlan.d.ts +4 -2
  13. package/dist/agents/tasks/TaskReviewActions.d.ts +44 -0
  14. package/dist/agents/tasks/TaskRowMenu.d.ts +28 -0
  15. package/dist/agents/tasks/TaskStatusPill.d.ts +24 -0
  16. package/dist/agents/tasks/TaskTable.d.ts +99 -0
  17. package/dist/agents/tasks/TaskThreadChip.d.ts +19 -0
  18. package/dist/agents/tasks/TaskTriggerChip.d.ts +24 -0
  19. package/dist/agents/tasks/TasksChrome.d.ts +17 -17
  20. package/dist/agents/tasks/WorkflowComposer.d.ts +10 -0
  21. package/dist/agents/tasks/WorkflowsTable.d.ts +72 -0
  22. package/dist/agents/tasks/gridWidth.d.ts +11 -0
  23. package/dist/agents/tasks/index.d.ts +23 -7
  24. package/dist/agents/tasks/taskColumns.d.ts +39 -63
  25. package/dist/agents/tasks/taskComposerTypes.d.ts +217 -0
  26. package/dist/agents/tasks/taskLabels.d.ts +27 -10
  27. package/dist/agents/tasks/taskRequest.d.ts +151 -25
  28. package/dist/agents/tasks/taskRows.d.ts +111 -0
  29. package/dist/agents/tasks/taskTableLabels.d.ts +64 -0
  30. package/dist/agents/tasks/workflowColumns.d.ts +23 -0
  31. package/dist/agents/tasks/workflowRows.d.ts +44 -0
  32. package/dist/agents/tasks/workflowTableLabels.d.ts +53 -0
  33. package/dist/agents/workflows/WorkflowConfigDialog.d.ts +5 -0
  34. package/dist/agents/workflows/index.d.ts +1 -0
  35. package/dist/agents/workflows/scopeRender.d.ts +10 -0
  36. package/dist/agents/workflows/types.d.ts +2 -0
  37. package/dist/chat/AssistantModeToggle.d.ts +25 -0
  38. package/dist/chat/MentionMenu.d.ts +52 -0
  39. package/dist/chat/index.cjs +119 -63
  40. package/dist/chat/index.d.ts +4 -0
  41. package/dist/chat/index.js +1 -1
  42. package/dist/chat/mentions.d.ts +64 -0
  43. package/dist/chat/useMentionAutocomplete.d.ts +33 -0
  44. package/dist/{chunk-IMA6I73C.js → chunk-ABSII3ND.js} +336 -4
  45. package/dist/chunk-ABSII3ND.js.map +1 -0
  46. package/dist/{chunk-22T6KHGB.cjs → chunk-C2V6HQKG.cjs} +348 -2
  47. package/dist/chunk-C2V6HQKG.cjs.map +1 -0
  48. package/dist/chunk-IC2VHFWR.js +158 -0
  49. package/dist/chunk-IC2VHFWR.js.map +1 -0
  50. package/dist/{chunk-67HGXV4I.cjs → chunk-IWOOGRNG.cjs} +4276 -855
  51. package/dist/chunk-IWOOGRNG.cjs.map +1 -0
  52. package/dist/{chunk-D6XY3C4O.cjs → chunk-JGZTRLKL.cjs} +207 -139
  53. package/dist/chunk-JGZTRLKL.cjs.map +1 -0
  54. package/dist/{chunk-H7OD4CHN.js → chunk-NUPVHEJW.js} +208 -140
  55. package/dist/chunk-NUPVHEJW.js.map +1 -0
  56. package/dist/{chunk-CVFBSUXL.js → chunk-OMF7444S.js} +4223 -851
  57. package/dist/chunk-OMF7444S.js.map +1 -0
  58. package/dist/chunk-ZPERNIMP.cjs +162 -0
  59. package/dist/chunk-ZPERNIMP.cjs.map +1 -0
  60. package/dist/connection/ai.d.ts +4 -1
  61. package/dist/facts/FactRowActions.d.ts +5 -1
  62. package/dist/facts/factColumns.d.ts +1 -1
  63. package/dist/facts/index.cjs +18 -9
  64. package/dist/facts/index.cjs.map +1 -1
  65. package/dist/facts/index.js +13 -4
  66. package/dist/facts/index.js.map +1 -1
  67. package/dist/files/GridView.d.ts +5 -0
  68. package/dist/files/index.cjs +17 -17
  69. package/dist/files/index.js +3 -4
  70. package/dist/files/index.js.map +1 -1
  71. package/dist/index.cjs +495 -243
  72. package/dist/index.js +4 -4
  73. package/dist/settings/ConversationSettingsParts.d.ts +5 -1
  74. package/dist/settings/index.cjs +8 -3
  75. package/dist/settings/index.cjs.map +1 -1
  76. package/dist/settings/index.js +8 -3
  77. package/dist/settings/index.js.map +1 -1
  78. package/dist/site/index.cjs +9 -9
  79. package/dist/site/index.js +1 -1
  80. package/dist/workspaces/index.cjs +1 -1
  81. package/dist/workspaces/index.cjs.map +1 -1
  82. package/dist/workspaces/index.js +1 -1
  83. package/dist/workspaces/index.js.map +1 -1
  84. package/package.json +3 -3
  85. package/dist/agents/tasks/LiveRunsBanner.d.ts +0 -26
  86. package/dist/agents/tasks/TaskRowActions.d.ts +0 -43
  87. package/dist/chunk-22T6KHGB.cjs.map +0 -1
  88. package/dist/chunk-67HGXV4I.cjs.map +0 -1
  89. package/dist/chunk-CVFBSUXL.js.map +0 -1
  90. package/dist/chunk-D6XY3C4O.cjs.map +0 -1
  91. package/dist/chunk-H7OD4CHN.js.map +0 -1
  92. package/dist/chunk-IMA6I73C.js.map +0 -1
  93. package/dist/chunk-NUNKSZKU.js +0 -203
  94. package/dist/chunk-NUNKSZKU.js.map +0 -1
  95. package/dist/chunk-V4ISCZJ7.cjs +0 -207
  96. package/dist/chunk-V4ISCZJ7.cjs.map +0 -1
@@ -0,0 +1,162 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var chunkMHVNT4J3_cjs = require('./chunk-MHVNT4J3.cjs');
5
+ var react = require('react');
6
+ var lucideReact = require('lucide-react');
7
+ var ui = require('@arbidocs/react/ui');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ var DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS = {
11
+ gallery: "Gallery",
12
+ table: "Table",
13
+ review: "Review",
14
+ smartSearch: "Smart Search"
15
+ };
16
+ function ViewToggleItem({
17
+ option,
18
+ size,
19
+ testIdPrefix,
20
+ showLabel,
21
+ labelClassName,
22
+ hideTooltip
23
+ }) {
24
+ const labelRef = react.useRef(null);
25
+ const [isTipNeeded, setIsTipNeeded] = react.useState(true);
26
+ const isLabelShown = () => !!labelRef.current && labelRef.current.offsetParent !== null;
27
+ const content = /* @__PURE__ */ jsxRuntime.jsxs(
28
+ "span",
29
+ {
30
+ className: "flex items-center gap-1.5",
31
+ onPointerEnter: () => setIsTipNeeded(!isLabelShown()),
32
+ onFocus: () => setIsTipNeeded(!isLabelShown()),
33
+ children: [
34
+ option.icon,
35
+ showLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { ref: labelRef, className: labelClassName, children: option.label })
36
+ ]
37
+ }
38
+ );
39
+ return (
40
+ // The tooltip lives INSIDE the item: wrapping the ToggleGroupItem would make Radix
41
+ // Tooltip's data-state collide with the toggle's on/off state.
42
+ /* @__PURE__ */ jsxRuntime.jsx(
43
+ ui.ToggleGroupItem,
44
+ {
45
+ value: option.value,
46
+ "aria-label": option.label,
47
+ size,
48
+ className: "rounded-[5px] border-0 bg-transparent text-muted-foreground pointer-coarse:min-h-11 data-[state=off]:hover:bg-background/60 data-[state=off]:hover:text-foreground data-[state=on]:bg-accent data-[state=on]:text-accent-foreground data-[state=on]:hover:bg-accent data-[state=on]:hover:text-accent-foreground",
49
+ "data-testid": option.testId ?? `${testIdPrefix}-${option.value}-button`,
50
+ children: hideTooltip ? content : /* @__PURE__ */ jsxRuntime.jsxs(ui.Tooltip, { children: [
51
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipTrigger, { asChild: true, children: content }),
52
+ isTipNeeded && /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipContent, { children: option.label })
53
+ ] })
54
+ }
55
+ )
56
+ );
57
+ }
58
+ function ViewToggle({
59
+ options,
60
+ value,
61
+ onChange,
62
+ testIdPrefix = "view",
63
+ showLabels = false,
64
+ hideTooltips = false,
65
+ size = "default",
66
+ containerCollapse = false,
67
+ className
68
+ }) {
69
+ const labelClassName = containerCollapse ? "hidden @lg:inline text-sm" : "hidden md:inline text-sm";
70
+ return /* @__PURE__ */ jsxRuntime.jsx(
71
+ ui.ToggleGroup,
72
+ {
73
+ variant: "default",
74
+ type: "single",
75
+ value,
76
+ onValueChange: (next) => next && onChange(next),
77
+ className: ui.cn("gap-0.5 rounded-md bg-muted p-0.5", className),
78
+ children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
79
+ ViewToggleItem,
80
+ {
81
+ option,
82
+ size,
83
+ testIdPrefix,
84
+ showLabel: showLabels,
85
+ labelClassName,
86
+ hideTooltip: hideTooltips
87
+ },
88
+ option.value
89
+ ))
90
+ }
91
+ );
92
+ }
93
+ function documentViewOptions(l) {
94
+ return [
95
+ // "Gallery" (page-preview grid) reads more conventionally than "Tiles".
96
+ { value: "explorer", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileImage, { className: "size-3.5" }), label: l.gallery },
97
+ { value: "grid", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Table2, { className: "size-3.5" }), label: l.table },
98
+ { value: "navigator", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.BookOpen, { className: "size-3.5" }), label: l.review },
99
+ { value: "search", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "size-3.5" }), label: l.smartSearch }
100
+ ];
101
+ }
102
+ function DocumentViewToggle({
103
+ viewMode,
104
+ onChange,
105
+ compact,
106
+ labels,
107
+ testIdPrefix,
108
+ testIds,
109
+ compactTestIds
110
+ }) {
111
+ const options = documentViewOptions({ ...DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS, ...labels }).map(
112
+ (o) => ({ ...o, testId: testIds?.[o.value] })
113
+ );
114
+ if (compact) {
115
+ const current = options.find((o) => o.value === viewMode) ?? options[0];
116
+ return /* @__PURE__ */ jsxRuntime.jsxs(ui.Select, { value: viewMode, onValueChange: (v) => onChange(v), children: [
117
+ /* @__PURE__ */ jsxRuntime.jsx(
118
+ ui.SelectTrigger,
119
+ {
120
+ className: "h-7 w-10 justify-center gap-0 border-input p-0 pointer-coarse:h-11! pointer-coarse:w-11! shrink-0 [&>svg]:hidden",
121
+ "aria-label": current.label,
122
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(compactTestIds?.select, {
123
+ testId: "documents-layout-compact-select"
124
+ }),
125
+ children: /* @__PURE__ */ jsxRuntime.jsx(ui.SelectValue, { children: current.icon })
126
+ }
127
+ ),
128
+ /* @__PURE__ */ jsxRuntime.jsx(ui.SelectContent, { align: "center", children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
129
+ ui.SelectItem,
130
+ {
131
+ value: option.value,
132
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(compactTestIds?.option?.(option.value), {
133
+ testId: `documents-layout-compact-${option.value}-option`
134
+ }),
135
+ children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
136
+ option.icon,
137
+ option.label
138
+ ] })
139
+ },
140
+ option.value
141
+ )) })
142
+ ] });
143
+ }
144
+ return /* @__PURE__ */ jsxRuntime.jsx(
145
+ ViewToggle,
146
+ {
147
+ options,
148
+ value: viewMode,
149
+ onChange: (v) => onChange(v),
150
+ testIdPrefix: testIdPrefix ?? "documents-layout",
151
+ showLabels: true,
152
+ containerCollapse: true,
153
+ size: "sm"
154
+ }
155
+ );
156
+ }
157
+
158
+ exports.DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS = DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS;
159
+ exports.DocumentViewToggle = DocumentViewToggle;
160
+ exports.ViewToggle = ViewToggle;
161
+ //# sourceMappingURL=chunk-ZPERNIMP.cjs.map
162
+ //# sourceMappingURL=chunk-ZPERNIMP.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/files/ViewToggle.tsx"],"names":["useRef","useState","jsxs","jsx","ToggleGroupItem","Tooltip","TooltipTrigger","TooltipContent","ToggleGroup","cn","FileImage","Table2","BookOpen","Search","Select","SelectTrigger","testIdOr","SelectValue","SelectContent","SelectItem"],"mappings":"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","file":"chunk-ZPERNIMP.cjs","sourcesContent":["import { useRef, useState, type ReactNode } from 'react'\nimport { BookOpen, FileImage, Search, Table2 } from 'lucide-react'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n ToggleGroup,\n ToggleGroupItem,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cn,\n} from '@arbidocs/react/ui'\nimport { testIdOr } from '../chat/test-id'\n\n/** Names of the four document view modes. Pass a partial `labels` to translate or reword. */\nexport interface DocumentViewToggleLabels {\n gallery: string\n table: string\n review: string\n smartSearch: string\n}\n\nexport const DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS: DocumentViewToggleLabels = {\n gallery: 'Gallery',\n table: 'Table',\n review: 'Review',\n smartSearch: 'Smart Search',\n}\n\nexport interface ViewToggleOption {\n value: string\n icon: ReactNode\n label: string\n /** Overrides this item's test id (default `${testIdPrefix}-${value}-button`). */\n testId?: string\n}\n\nexport interface ViewToggleProps {\n options: ViewToggleOption[]\n value: string\n onChange: (value: string) => void\n /** Item test ids are `${testIdPrefix}-${value}-button` unless an option sets its own `testId`. */\n testIdPrefix?: string\n showLabels?: boolean\n hideTooltips?: boolean\n size?: 'default' | 'sm'\n /**\n * Collapse labels to icons by the width of the nearest `@container` ancestor instead of the\n * viewport. The consumer must mark that region `@container`.\n */\n containerCollapse?: boolean\n className?: string\n}\n\ninterface ViewToggleItemProps {\n option: ViewToggleOption\n size: 'default' | 'sm'\n testIdPrefix: string\n showLabel: boolean\n labelClassName: string\n hideTooltip: boolean\n}\n\nfunction ViewToggleItem({\n option,\n size,\n testIdPrefix,\n showLabel,\n labelClassName,\n hideTooltip,\n}: ViewToggleItemProps) {\n const labelRef = useRef<HTMLSpanElement>(null)\n const [isTipNeeded, setIsTipNeeded] = useState(true)\n // A control that shows its own text needs no tooltip repeating it; when the container is too\n // narrow and the label collapses to the icon, the tooltip is the label.\n const isLabelShown = () => !!labelRef.current && labelRef.current.offsetParent !== null\n const content = (\n <span\n className=\"flex items-center gap-1.5\"\n onPointerEnter={() => setIsTipNeeded(!isLabelShown())}\n onFocus={() => setIsTipNeeded(!isLabelShown())}\n >\n {option.icon}\n {showLabel && (\n <span ref={labelRef} className={labelClassName}>\n {option.label}\n </span>\n )}\n </span>\n )\n return (\n // The tooltip lives INSIDE the item: wrapping the ToggleGroupItem would make Radix\n // Tooltip's data-state collide with the toggle's on/off state.\n <ToggleGroupItem\n value={option.value}\n aria-label={option.label}\n size={size}\n className=\"rounded-[5px] border-0 bg-transparent text-muted-foreground pointer-coarse:min-h-11 data-[state=off]:hover:bg-background/60 data-[state=off]:hover:text-foreground data-[state=on]:bg-accent data-[state=on]:text-accent-foreground data-[state=on]:hover:bg-accent data-[state=on]:hover:text-accent-foreground\"\n data-testid={option.testId ?? `${testIdPrefix}-${option.value}-button`}\n >\n {hideTooltip ? (\n content\n ) : (\n <Tooltip>\n <TooltipTrigger asChild>{content}</TooltipTrigger>\n {isTipNeeded && <TooltipContent>{option.label}</TooltipContent>}\n </Tooltip>\n )}\n </ToggleGroupItem>\n )\n}\n\n/** Segmented view switch: selected = accent tint, tone-only hover, 44px targets on touch. */\nexport function ViewToggle({\n options,\n value,\n onChange,\n testIdPrefix = 'view',\n showLabels = false,\n hideTooltips = false,\n size = 'default',\n containerCollapse = false,\n className,\n}: ViewToggleProps) {\n const labelClassName = containerCollapse\n ? 'hidden @lg:inline text-sm'\n : 'hidden md:inline text-sm'\n return (\n <ToggleGroup\n variant=\"default\"\n type=\"single\"\n value={value}\n onValueChange={(next) => next && onChange(next)}\n className={cn('gap-0.5 rounded-md bg-muted p-0.5', className)}\n >\n {options.map((option) => (\n <ViewToggleItem\n key={option.value}\n option={option}\n size={size}\n testIdPrefix={testIdPrefix}\n showLabel={showLabels}\n labelClassName={labelClassName}\n hideTooltip={hideTooltips}\n />\n ))}\n </ToggleGroup>\n )\n}\n\nexport type DocumentViewMode = 'grid' | 'explorer' | 'navigator' | 'search'\n\nfunction documentViewOptions(l: DocumentViewToggleLabels): ViewToggleOption[] {\n return [\n // \"Gallery\" (page-preview grid) reads more conventionally than \"Tiles\".\n { value: 'explorer', icon: <FileImage className=\"size-3.5\" />, label: l.gallery },\n { value: 'grid', icon: <Table2 className=\"size-3.5\" />, label: l.table },\n { value: 'navigator', icon: <BookOpen className=\"size-3.5\" />, label: l.review },\n { value: 'search', icon: <Search className=\"size-3.5\" />, label: l.smartSearch },\n ]\n}\n\nexport interface DocumentViewToggleProps {\n viewMode: DocumentViewMode\n onChange: (mode: DocumentViewMode) => void\n /** Collapse the four modes into one select trigger (narrow viewports). */\n compact?: boolean\n labels?: Partial<DocumentViewToggleLabels>\n /** Overrides the segmented items' prefix (default `documents-layout`: `<prefix>-<mode>-button`). */\n testIdPrefix?: string\n /** Per-mode item ids, for hosts that keep their own (e.g. `documents-view-gallery`). */\n testIds?: Partial<Record<DocumentViewMode, string>>\n /** Overrides the compact select test ids (defaults keep the current ids). */\n compactTestIds?: Partial<{ select: string; option: (mode: DocumentViewMode) => string }>\n}\n\n/** The Documents page's Gallery / Table / Review / Smart Search switch. */\nexport function DocumentViewToggle({\n viewMode,\n onChange,\n compact,\n labels,\n testIdPrefix,\n testIds,\n compactTestIds,\n}: DocumentViewToggleProps) {\n const options = documentViewOptions({ ...DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS, ...labels }).map(\n (o) => ({ ...o, testId: testIds?.[o.value as DocumentViewMode] })\n )\n if (compact) {\n const current = options.find((o) => o.value === viewMode) ?? options[0]\n return (\n <Select value={viewMode} onValueChange={(v) => onChange(v as DocumentViewMode)}>\n <SelectTrigger\n className=\"h-7 w-10 justify-center gap-0 border-input p-0 pointer-coarse:h-11! pointer-coarse:w-11! shrink-0 [&>svg]:hidden\"\n aria-label={current.label}\n data-testid={testIdOr(compactTestIds?.select, {\n testId: 'documents-layout-compact-select',\n })}\n >\n <SelectValue>{current.icon}</SelectValue>\n </SelectTrigger>\n <SelectContent align=\"center\">\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n data-testid={testIdOr(compactTestIds?.option?.(option.value as DocumentViewMode), {\n testId: `documents-layout-compact-${option.value}-option`,\n })}\n >\n <span className=\"flex items-center gap-2\">\n {option.icon}\n {option.label}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n }\n return (\n <ViewToggle\n options={options}\n value={viewMode}\n onChange={(v) => onChange(v as DocumentViewMode)}\n testIdPrefix={testIdPrefix ?? 'documents-layout'}\n showLabels\n containerCollapse\n size=\"sm\"\n />\n )\n}\n"]}
@@ -19,11 +19,12 @@ export declare function useConnectedAiTask(): {
19
19
  type: "arbi.artifact";
20
20
  doc_ext_id: string;
21
21
  title: string;
22
- mode: "markdown" | "html" | "text" | "image";
22
+ mode: "markdown" | "html" | "text" | "react" | "image";
23
23
  content: string;
24
24
  file_type: string;
25
25
  is_complete: boolean;
26
26
  version: number;
27
+ parent_doc_ext_id?: string | null;
27
28
  message_ext_id?: string | null;
28
29
  }[];
29
30
  reset: () => void;
@@ -52,6 +53,8 @@ export declare function useWorkspaceDocs(): {
52
53
  re_ocred?: boolean | null | undefined;
53
54
  config_ext_id?: string | null | undefined;
54
55
  parent_ext_id?: string | null | undefined;
56
+ source_message_ext_id?: string | null | undefined;
57
+ conversation_ext_id?: string | null | undefined;
55
58
  created_by_ext_id: string;
56
59
  updated_by_ext_id?: string | null | undefined;
57
60
  created_at: string;
@@ -1,6 +1,8 @@
1
1
  export interface FactRowActionsLabels {
2
2
  actions: string;
3
3
  edit: string;
4
+ /** Tooltip on a disabled Edit: rewording a fact is for its creator or a workspace owner. */
5
+ editRestricted: string;
4
6
  delete: string;
5
7
  }
6
8
  export declare const DEFAULT_FACT_ROW_ACTIONS_LABELS: FactRowActionsLabels;
@@ -11,8 +13,10 @@ export interface FactRowActionsTestIds {
11
13
  }
12
14
  export interface FactRowActionsProps {
13
15
  onEdit: () => void;
16
+ /** False when the viewer may not reword the fact: Edit is shown disabled, with the reason. */
17
+ canEdit?: boolean;
14
18
  onDelete: () => void;
15
19
  labels?: Partial<FactRowActionsLabels>;
16
20
  testIds?: Partial<FactRowActionsTestIds>;
17
21
  }
18
- export declare function FactRowActions({ onEdit, onDelete, labels, testIds }: FactRowActionsProps): import("react").JSX.Element;
22
+ export declare function FactRowActions({ onEdit, canEdit, onDelete, labels, testIds, }: FactRowActionsProps): import("react").JSX.Element;
@@ -62,7 +62,7 @@ export interface FactColumnSlots<T extends FactRowView> {
62
62
  /** The Verified switch. */
63
63
  renderVerified: (fact: T) => ReactNode;
64
64
  /** The Shared switch. */
65
- renderShared: (fact: T) => ReactNode;
65
+ renderShared: (fact: T, params: ICellRendererParams<T>) => ReactNode;
66
66
  /** The creator avatar. */
67
67
  renderCreator: (fact: T, params: ICellRendererParams<T>) => ReactNode;
68
68
  /** Sort/filter value for the Created by column (the creator's display name). */
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkD6XY3C4O_cjs = require('../chunk-D6XY3C4O.cjs');
4
+ var chunkZPERNIMP_cjs = require('../chunk-ZPERNIMP.cjs');
5
5
  var chunkOUW6G4O2_cjs = require('../chunk-OUW6G4O2.cjs');
6
6
  var chunkVPPX5XUF_cjs = require('../chunk-VPPX5XUF.cjs');
7
- var chunkV4ISCZJ7_cjs = require('../chunk-V4ISCZJ7.cjs');
7
+ var chunkJGZTRLKL_cjs = require('../chunk-JGZTRLKL.cjs');
8
8
  var chunk5B4PXAKI_cjs = require('../chunk-5B4PXAKI.cjs');
9
9
  require('../chunk-FX3K6LNZ.cjs');
10
10
  require('../chunk-C54XEN5T.cjs');
@@ -261,7 +261,7 @@ function createFactColumns(slots) {
261
261
  headerClass: "header-hcenter",
262
262
  cellDataType: "boolean",
263
263
  valueGetter: (params) => params.data?.shared ?? false,
264
- cellRenderer: (params) => params.data ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center", children: slots.renderShared(params.data) }) : null
264
+ cellRenderer: (params) => params.data ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center", children: slots.renderShared(params.data, params) }) : null
265
265
  },
266
266
  {
267
267
  colId: "created_by",
@@ -348,9 +348,16 @@ function createFactColumns(slots) {
348
348
  var DEFAULT_FACT_ROW_ACTIONS_LABELS = {
349
349
  actions: "Fact actions",
350
350
  edit: "Edit",
351
+ editRestricted: "Only the creator or a workspace owner can reword this fact",
351
352
  delete: "Delete"
352
353
  };
353
- function FactRowActions({ onEdit, onDelete, labels, testIds }) {
354
+ function FactRowActions({
355
+ onEdit,
356
+ canEdit = true,
357
+ onDelete,
358
+ labels,
359
+ testIds
360
+ }) {
354
361
  const l = { ...DEFAULT_FACT_ROW_ACTIONS_LABELS, ...labels };
355
362
  return /* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu, { children: [
356
363
  /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -369,6 +376,8 @@ function FactRowActions({ onEdit, onDelete, labels, testIds }) {
369
376
  ui.DropdownMenuItem,
370
377
  {
371
378
  onSelect: onEdit,
379
+ disabled: !canEdit,
380
+ title: canEdit ? void 0 : l.editRestricted,
372
381
  "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.edit, { testId: "fact-action-edit" }),
373
382
  children: [
374
383
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pencil, { className: "mr-2 size-4" }),
@@ -503,7 +512,7 @@ function FactsTable({
503
512
  ]
504
513
  );
505
514
  return /* @__PURE__ */ jsxRuntime.jsx(
506
- chunkD6XY3C4O_cjs.GridView,
515
+ chunkJGZTRLKL_cjs.GridView,
507
516
  {
508
517
  testId,
509
518
  items: facts,
@@ -1302,7 +1311,7 @@ function FactsViewToggle({
1302
1311
  testId: testIds?.[o.value]
1303
1312
  }));
1304
1313
  return /* @__PURE__ */ jsxRuntime.jsx(
1305
- chunkD6XY3C4O_cjs.ViewToggle,
1314
+ chunkZPERNIMP_cjs.ViewToggle,
1306
1315
  {
1307
1316
  options,
1308
1317
  value: viewMode,
@@ -1860,7 +1869,7 @@ function FactsBulkBar({
1860
1869
  const l = { ...DEFAULT_FACTS_BULK_BAR_LABELS, ...labels };
1861
1870
  const none = count === 0;
1862
1871
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pb-3", "data-slot": "facts-bulk-bar", children: /* @__PURE__ */ jsxRuntime.jsx(
1863
- chunkV4ISCZJ7_cjs.SelectionBar,
1872
+ chunkJGZTRLKL_cjs.SelectionBar,
1864
1873
  {
1865
1874
  count,
1866
1875
  onClear,
@@ -1878,7 +1887,7 @@ function FactsBulkBar({
1878
1887
  ) : null,
1879
1888
  children: (isCompact) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1880
1889
  /* @__PURE__ */ jsxRuntime.jsx(
1881
- chunkV4ISCZJ7_cjs.SelectionBarAction,
1890
+ chunkJGZTRLKL_cjs.SelectionBarAction,
1882
1891
  {
1883
1892
  icon: allSelectedPinned ? lucideReact.PinOff : lucideReact.Pin,
1884
1893
  label: allSelectedPinned ? l.unpin : l.pin,
@@ -1891,7 +1900,7 @@ function FactsBulkBar({
1891
1900
  }
1892
1901
  ),
1893
1902
  /* @__PURE__ */ jsxRuntime.jsx(
1894
- chunkV4ISCZJ7_cjs.SelectionBarAction,
1903
+ chunkJGZTRLKL_cjs.SelectionBarAction,
1895
1904
  {
1896
1905
  icon: lucideReact.Tags,
1897
1906
  label: l.label,