@arbidocs/blocks 0.4.32 → 0.4.37

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 (199) hide show
  1. package/dist/agents/index.cjs +258 -216
  2. package/dist/agents/index.js +9 -7
  3. package/dist/agents/tasks/ConversationListView.d.ts +58 -0
  4. package/dist/agents/tasks/ConversationTurnSpeaker.d.ts +16 -0
  5. package/dist/agents/tasks/NewThreadDialog.d.ts +1 -1
  6. package/dist/agents/tasks/TaskActivityTimeline.d.ts +1 -1
  7. package/dist/agents/tasks/TaskFlow.d.ts +22 -0
  8. package/dist/agents/tasks/TaskInbox.d.ts +26 -0
  9. package/dist/agents/tasks/TaskReviewDialog.d.ts +22 -0
  10. package/dist/agents/tasks/TaskRowMenu.d.ts +10 -2
  11. package/dist/agents/tasks/TaskRunsDialog.d.ts +8 -3
  12. package/dist/agents/tasks/TaskStartDialog.d.ts +24 -0
  13. package/dist/agents/tasks/TaskTable.d.ts +1 -1
  14. package/dist/agents/tasks/ThreadNotifyDialog.d.ts +11 -0
  15. package/dist/agents/tasks/WorkflowComposer.d.ts +1 -1
  16. package/dist/agents/tasks/WorkflowsTable.d.ts +7 -0
  17. package/dist/agents/tasks/compact-thread-activity.d.ts +8 -0
  18. package/dist/agents/tasks/index.d.ts +10 -0
  19. package/dist/agents/tasks/taskComposerTypes.d.ts +16 -1
  20. package/dist/agents/tasks/taskRequest.d.ts +1 -0
  21. package/dist/agents/tasks/testGrid.d.ts +24 -0
  22. package/dist/agents/tasks/workflowColumns.d.ts +2 -1
  23. package/dist/agents/tasks/workflowRows.d.ts +6 -0
  24. package/dist/agents/workflows/types.d.ts +2 -0
  25. package/dist/auth/index.cjs +27 -27
  26. package/dist/auth/index.js +1 -1
  27. package/dist/chat/Message.d.ts +8 -2
  28. package/dist/chat/index.cjs +132 -120
  29. package/dist/chat/index.d.ts +2 -0
  30. package/dist/chat/index.js +2 -2
  31. package/dist/chat/participant-tints.d.ts +1 -0
  32. package/dist/chat/useRecipientDraft.d.ts +14 -0
  33. package/dist/{chunk-KF4EC5XU.js → chunk-24KQJYSB.js} +3 -3
  34. package/dist/{chunk-KF4EC5XU.js.map → chunk-24KQJYSB.js.map} +1 -1
  35. package/dist/{chunk-GVQOBJKR.cjs → chunk-2EAE5JP6.cjs} +7 -4
  36. package/dist/chunk-2EAE5JP6.cjs.map +1 -0
  37. package/dist/chunk-3AFWGEDJ.cjs +53 -0
  38. package/dist/chunk-3AFWGEDJ.cjs.map +1 -0
  39. package/dist/{chunk-UBNVIIBT.js → chunk-4WWM3GQ5.js} +23 -8
  40. package/dist/chunk-4WWM3GQ5.js.map +1 -0
  41. package/dist/{chunk-56BUD74K.cjs → chunk-65THHQVB.cjs} +27 -27
  42. package/dist/{chunk-56BUD74K.cjs.map → chunk-65THHQVB.cjs.map} +1 -1
  43. package/dist/{chunk-UTYQPVIW.cjs → chunk-7QDX2CO4.cjs} +6 -6
  44. package/dist/{chunk-UTYQPVIW.cjs.map → chunk-7QDX2CO4.cjs.map} +1 -1
  45. package/dist/{chunk-5B4PXAKI.cjs → chunk-7RGLTF76.cjs} +23 -8
  46. package/dist/chunk-7RGLTF76.cjs.map +1 -0
  47. package/dist/{chunk-PLGVMLBD.cjs → chunk-AMXQQCCB.cjs} +1975 -610
  48. package/dist/chunk-AMXQQCCB.cjs.map +1 -0
  49. package/dist/{chunk-NUPVHEJW.js → chunk-BUHKUKKB.js} +7 -4
  50. package/dist/chunk-BUHKUKKB.js.map +1 -0
  51. package/dist/{chunk-4XJZ6AAY.js → chunk-CKB64Z4R.js} +245 -6
  52. package/dist/chunk-CKB64Z4R.js.map +1 -0
  53. package/dist/chunk-DDW3M22Z.js +126 -0
  54. package/dist/chunk-DDW3M22Z.js.map +1 -0
  55. package/dist/{chunk-KXMDOTGW.js → chunk-DLBUFHLY.js} +10 -2
  56. package/dist/chunk-DLBUFHLY.js.map +1 -0
  57. package/dist/{chunk-ZHLMDJCO.cjs → chunk-DLVX6R6B.cjs} +62 -26
  58. package/dist/chunk-DLVX6R6B.cjs.map +1 -0
  59. package/dist/{chunk-JGZTRLKL.cjs → chunk-IA7RTPT3.cjs} +7 -4
  60. package/dist/chunk-IA7RTPT3.cjs.map +1 -0
  61. package/dist/{chunk-6YVI74BC.js → chunk-JH25QIZW.js} +439 -12
  62. package/dist/chunk-JH25QIZW.js.map +1 -0
  63. package/dist/{chunk-FRRDPYBR.cjs → chunk-L7B4W4LA.cjs} +74 -5
  64. package/dist/chunk-L7B4W4LA.cjs.map +1 -0
  65. package/dist/{chunk-NJL4LIXX.js → chunk-LFGJAZ5H.js} +11 -8
  66. package/dist/chunk-LFGJAZ5H.js.map +1 -0
  67. package/dist/{chunk-IAKUTBPX.js → chunk-LYUO3E6V.js} +3 -3
  68. package/dist/{chunk-IAKUTBPX.js.map → chunk-LYUO3E6V.js.map} +1 -1
  69. package/dist/{chunk-EYPPB5CY.cjs → chunk-M2YGPC5N.cjs} +4 -4
  70. package/dist/{chunk-EYPPB5CY.cjs.map → chunk-M2YGPC5N.cjs.map} +1 -1
  71. package/dist/{chunk-5ZBP7TCD.cjs → chunk-MJCCBMM5.cjs} +10 -2
  72. package/dist/chunk-MJCCBMM5.cjs.map +1 -0
  73. package/dist/{chunk-VMCOH3AY.cjs → chunk-NUF2WGGF.cjs} +527 -96
  74. package/dist/chunk-NUF2WGGF.cjs.map +1 -0
  75. package/dist/{chunk-OJSWQM4G.js → chunk-OZJ5PXA6.js} +29 -4
  76. package/dist/chunk-OZJ5PXA6.js.map +1 -0
  77. package/dist/{chunk-3NZR6PAG.js → chunk-PE7Z53RB.js} +70 -4
  78. package/dist/chunk-PE7Z53RB.js.map +1 -0
  79. package/dist/chunk-Q6LF7N3A.cjs +130 -0
  80. package/dist/chunk-Q6LF7N3A.cjs.map +1 -0
  81. package/dist/{chunk-RGHQFJOL.cjs → chunk-QFUF4A4J.cjs} +28 -2
  82. package/dist/chunk-QFUF4A4J.cjs.map +1 -0
  83. package/dist/chunk-RFXJYIDV.js +50 -0
  84. package/dist/chunk-RFXJYIDV.js.map +1 -0
  85. package/dist/{chunk-QN42OA5J.js → chunk-SFXVNFES.js} +4 -4
  86. package/dist/chunk-SFXVNFES.js.map +1 -0
  87. package/dist/{chunk-YVIOCITQ.cjs → chunk-VUEZARW5.cjs} +3 -3
  88. package/dist/chunk-VUEZARW5.cjs.map +1 -0
  89. package/dist/{chunk-JLOYWXRB.js → chunk-VZGBCBYB.js} +3 -3
  90. package/dist/chunk-VZGBCBYB.js.map +1 -0
  91. package/dist/{chunk-ZVPTFTGV.cjs → chunk-WBDK4PIA.cjs} +11 -8
  92. package/dist/chunk-WBDK4PIA.cjs.map +1 -0
  93. package/dist/{chunk-ZORQ5M3W.cjs → chunk-WQFGG2BV.cjs} +4 -4
  94. package/dist/chunk-WQFGG2BV.cjs.map +1 -0
  95. package/dist/{chunk-C75S6USL.js → chunk-WYVCXY7R.js} +7 -4
  96. package/dist/chunk-WYVCXY7R.js.map +1 -0
  97. package/dist/{chunk-WSJVHSGN.js → chunk-XWEJ5LV2.js} +63 -27
  98. package/dist/chunk-XWEJ5LV2.js.map +1 -0
  99. package/dist/{chunk-S5HZBXZA.cjs → chunk-YJQVLVBJ.cjs} +243 -2
  100. package/dist/chunk-YJQVLVBJ.cjs.map +1 -0
  101. package/dist/{chunk-YMHGF6R5.js → chunk-ZCF2JJFA.js} +3 -3
  102. package/dist/{chunk-YMHGF6R5.js.map → chunk-ZCF2JJFA.js.map} +1 -1
  103. package/dist/{chunk-TZ4QF7EP.js → chunk-ZDA5CZPS.js} +1948 -594
  104. package/dist/chunk-ZDA5CZPS.js.map +1 -0
  105. package/dist/collaboration/index.cjs +45 -41
  106. package/dist/collaboration/index.js +1 -1
  107. package/dist/collaboration/mail/MailMessagePreview.d.ts +11 -0
  108. package/dist/collaboration/mail/index.d.ts +1 -0
  109. package/dist/connect/docx.cjs +4 -4
  110. package/dist/connect/docx.js +1 -1
  111. package/dist/connect/index.cjs +32 -32
  112. package/dist/connect/index.js +3 -3
  113. package/dist/docx/NativeDocxEditor.d.ts +2 -2
  114. package/dist/docx/index.cjs +33 -30
  115. package/dist/docx/index.cjs.map +1 -1
  116. package/dist/docx/index.d.ts +2 -2
  117. package/dist/docx/index.js +3 -4
  118. package/dist/docx/index.js.map +1 -1
  119. package/dist/docx/review/DocxEditorReview.d.ts +16 -0
  120. package/dist/docx/review/index.d.ts +3 -0
  121. package/dist/docx/review/reviewModule.d.ts +6 -0
  122. package/dist/docx/review/useReview.d.ts +29 -0
  123. package/dist/facts/FactsFilterInput.d.ts +2 -46
  124. package/dist/facts/FactsToolbar.d.ts +5 -5
  125. package/dist/facts/index.cjs +27 -124
  126. package/dist/facts/index.cjs.map +1 -1
  127. package/dist/facts/index.js +13 -118
  128. package/dist/facts/index.js.map +1 -1
  129. package/dist/files/FilesPage.d.ts +1 -1
  130. package/dist/files/FilesToolbar.d.ts +1 -1
  131. package/dist/files/FolderPicker.d.ts +2 -1
  132. package/dist/files/ViewerChrome.d.ts +1 -1
  133. package/dist/files/bulk/FolderFilterButton.d.ts +3 -2
  134. package/dist/files/cells/BulkLabelSelect.d.ts +11 -0
  135. package/dist/files/cells/LabelMultiSelect.d.ts +2 -1
  136. package/dist/files/cells/index.d.ts +1 -0
  137. package/dist/files/index.cjs +110 -167
  138. package/dist/files/index.cjs.map +1 -1
  139. package/dist/files/index.js +96 -159
  140. package/dist/files/index.js.map +1 -1
  141. package/dist/home/index.cjs +20 -20
  142. package/dist/home/index.cjs.map +1 -1
  143. package/dist/home/index.js +5 -5
  144. package/dist/home/index.js.map +1 -1
  145. package/dist/index.cjs +646 -623
  146. package/dist/index.cjs.map +1 -1
  147. package/dist/index.d.ts +1 -0
  148. package/dist/index.js +20 -68
  149. package/dist/index.js.map +1 -1
  150. package/dist/settings/SettingsPanel.d.ts +1 -1
  151. package/dist/settings/TriStateFilterMenu.d.ts +3 -1
  152. package/dist/settings/index.cjs +55 -280
  153. package/dist/settings/index.cjs.map +1 -1
  154. package/dist/settings/index.js +17 -248
  155. package/dist/settings/index.js.map +1 -1
  156. package/dist/shell/FilterInput.d.ts +48 -0
  157. package/dist/shell/TabHeader.d.ts +7 -1
  158. package/dist/shell/index.cjs +62 -49
  159. package/dist/shell/index.d.ts +1 -0
  160. package/dist/shell/index.js +4 -3
  161. package/dist/site/index.cjs +62 -62
  162. package/dist/site/index.js +2 -2
  163. package/dist/studio/index.cjs +75 -75
  164. package/dist/studio/index.js +6 -6
  165. package/dist/workspaces/WorkspaceCard.d.ts +2 -2
  166. package/dist/workspaces/index.cjs +9 -2
  167. package/dist/workspaces/index.cjs.map +1 -1
  168. package/dist/workspaces/index.js +9 -2
  169. package/dist/workspaces/index.js.map +1 -1
  170. package/package.json +9 -13
  171. package/src/blocks.css +4 -0
  172. package/src/components/grid.css +10 -0
  173. package/src/docx/styles.css +488 -43
  174. package/dist/chunk-3NZR6PAG.js.map +0 -1
  175. package/dist/chunk-4XJZ6AAY.js.map +0 -1
  176. package/dist/chunk-5B4PXAKI.cjs.map +0 -1
  177. package/dist/chunk-5ZBP7TCD.cjs.map +0 -1
  178. package/dist/chunk-6YVI74BC.js.map +0 -1
  179. package/dist/chunk-C75S6USL.js.map +0 -1
  180. package/dist/chunk-FRRDPYBR.cjs.map +0 -1
  181. package/dist/chunk-GVQOBJKR.cjs.map +0 -1
  182. package/dist/chunk-JGZTRLKL.cjs.map +0 -1
  183. package/dist/chunk-JLOYWXRB.js.map +0 -1
  184. package/dist/chunk-KXMDOTGW.js.map +0 -1
  185. package/dist/chunk-NJL4LIXX.js.map +0 -1
  186. package/dist/chunk-NUPVHEJW.js.map +0 -1
  187. package/dist/chunk-OJSWQM4G.js.map +0 -1
  188. package/dist/chunk-PLGVMLBD.cjs.map +0 -1
  189. package/dist/chunk-QN42OA5J.js.map +0 -1
  190. package/dist/chunk-RGHQFJOL.cjs.map +0 -1
  191. package/dist/chunk-S5HZBXZA.cjs.map +0 -1
  192. package/dist/chunk-TZ4QF7EP.js.map +0 -1
  193. package/dist/chunk-UBNVIIBT.js.map +0 -1
  194. package/dist/chunk-VMCOH3AY.cjs.map +0 -1
  195. package/dist/chunk-WSJVHSGN.js.map +0 -1
  196. package/dist/chunk-YVIOCITQ.cjs.map +0 -1
  197. package/dist/chunk-ZHLMDJCO.cjs.map +0 -1
  198. package/dist/chunk-ZORQ5M3W.cjs.map +0 -1
  199. package/dist/chunk-ZVPTFTGV.cjs.map +0 -1
@@ -13,7 +13,7 @@ export interface FilesPageProps extends ComponentProps<'div'> {
13
13
  export declare function FilesPage({ isModal, testId, className, ...props }: FilesPageProps): import("react").JSX.Element;
14
14
  /**
15
15
  * Sticky region on top: the title row (title, view switch, Add) and the calm filter row. 16px
16
- * gutters on phones, 24px from `sm`, the same as the other pages.
16
+ * gutters are owned by the shared TabHeader and the content toolbar.
17
17
  */
18
18
  export declare function FilesPageHeader({ className, ...props }: ComponentProps<'div'>): import("react").JSX.Element;
19
19
  /** The scrolling content area (grid, gallery, review, smart search). */
@@ -56,4 +56,4 @@ export interface FilesSearchInputProps {
56
56
  * field picker chooses which fields the text matches, and a clear control shows while there is
57
57
  * text. Both inline controls stay visible and are 32px+ on touch.
58
58
  */
59
- export declare function FilesSearchInput({ value, onChange, fields, selectedFields, onSelectedFieldsChange, placeholder, labels, testIds, className, filterSlot, }: FilesSearchInputProps): import("react").JSX.Element;
59
+ export declare function FilesSearchInput(props: FilesSearchInputProps): import("react").JSX.Element;
@@ -19,7 +19,8 @@ export interface FolderPickerRowProps {
19
19
  label: string;
20
20
  /** Optional leading glyph (e.g. a connector brand mark for provider roots). */
21
21
  icon?: ReactNode;
22
- count: number;
22
+ /** Shown at the right edge; omit for rows with nothing to count (e.g. an empty unread count). */
23
+ count?: number;
23
24
  depth: number;
24
25
  isActive: boolean;
25
26
  muted?: boolean;
@@ -58,7 +58,7 @@ export interface ViewerTitleProps {
58
58
  /** Overrides the shared-marker test id (default `document-title-shared-indicator`). */
59
59
  sharedTestId?: string;
60
60
  }
61
- /** Read-only document name pill with the shared marker and version label. */
61
+ /** Read-only document name (plain text, no fill) with the shared marker and version label. */
62
62
  export declare function ViewerTitle({ title, shared, versionLabel, shrink, labels, sharedTestId, }: ViewerTitleProps): import("react").JSX.Element;
63
63
  export interface ViewerImageActionsProps {
64
64
  compact: boolean;
@@ -15,8 +15,9 @@ export interface FolderFilterButtonProps {
15
15
  open: boolean;
16
16
  onOpenChange: (open: boolean) => void;
17
17
  /** Total documents, shown on the "All" row. */
18
- allCount: number;
19
- onSelectAll: () => void;
18
+ allCount?: number;
19
+ /** When set, the popover starts with an "All" row; omit it for lists that have no "All". */
20
+ onSelectAll?: () => void;
20
21
  /** When set, the popover offers a "New folder" action. */
21
22
  onNewFolder?: () => void;
22
23
  /** Slot: the folder tree picker. */
@@ -0,0 +1,11 @@
1
+ import { type LabelOption } from './LabelMultiSelect';
2
+ /** Shared bulk label control: mixed labels apply to all; checked labels remove from all. */
3
+ export declare function BulkLabelSelectView({ options, appliedIds, mixedIds, onToggle, onCreate, disabled, isCompact, }: {
4
+ options: LabelOption[];
5
+ appliedIds: ReadonlySet<string>;
6
+ mixedIds?: ReadonlySet<string>;
7
+ onToggle: (id: string) => void;
8
+ onCreate?: (name: string) => void;
9
+ disabled?: boolean;
10
+ isCompact?: boolean;
11
+ }): import("react").JSX.Element;
@@ -30,6 +30,7 @@ export interface LabelMultiSelectViewProps {
30
30
  export interface LabelPickerListProps {
31
31
  options: LabelOption[];
32
32
  appliedIds: ReadonlySet<string>;
33
+ mixedIds?: ReadonlySet<string>;
33
34
  onToggle: (id: string) => void;
34
35
  /** Create a label named `name`; omit to hide "Create ..." (the picker only toggles). */
35
36
  onCreate?: (name: string) => void;
@@ -41,7 +42,7 @@ export interface LabelPickerListProps {
41
42
  * Searchable list of labels with check boxes: type to filter, Enter (or the "Create ..." row)
42
43
  * creates a label that does not exist yet. Used by the grid cell and the document form field.
43
44
  */
44
- export declare function LabelPickerList({ options, appliedIds, onToggle, onCreate, onEditLabels, labels, }: LabelPickerListProps): import("react").JSX.Element;
45
+ export declare function LabelPickerList({ options, appliedIds, mixedIds, onToggle, onCreate, onEditLabels, labels, }: LabelPickerListProps): import("react").JSX.Element;
45
46
  /**
46
47
  * Labels column cell: applied labels as bordered chips; click (or Enter) opens a popover to
47
48
  * toggle labels or type a new name and press Enter to create it. Empty cells show a pencil on
@@ -4,3 +4,4 @@ export { DocumentNameCellFrame, DocumentRowMenu, type DocumentNameCellFrameProps
4
4
  export { CellHoverIcon, HoverIconCell, type CellHoverIconKind, type HoverIconCellProps, } from './HoverIconCell';
5
5
  export { LabelMultiSelectView, LabelPickerList, labelChipClampHeight, DEFAULT_LABEL_MULTI_SELECT_LABELS, type LabelMultiSelectViewProps, type LabelPickerListProps, type LabelMultiSelectLabels, type LabelOption, } from './LabelMultiSelect';
6
6
  export { CheckboxCell, TagColumnHeader, type CheckboxCellProps, type TagColumnHeaderProps, } from './TagColumnParts';
7
+ export { BulkLabelSelectView } from './BulkLabelSelect';
@@ -3,12 +3,14 @@
3
3
 
4
4
  var chunkZPERNIMP_cjs = require('../chunk-ZPERNIMP.cjs');
5
5
  var chunk223D4727_cjs = require('../chunk-223D4727.cjs');
6
- var chunkJGZTRLKL_cjs = require('../chunk-JGZTRLKL.cjs');
7
- var chunkVFUWWH52_cjs = require('../chunk-VFUWWH52.cjs');
6
+ var chunk3AFWGEDJ_cjs = require('../chunk-3AFWGEDJ.cjs');
7
+ var chunkIA7RTPT3_cjs = require('../chunk-IA7RTPT3.cjs');
8
+ var chunkQ6LF7N3A_cjs = require('../chunk-Q6LF7N3A.cjs');
8
9
  var chunkOB5F4577_cjs = require('../chunk-OB5F4577.cjs');
10
+ var chunkVFUWWH52_cjs = require('../chunk-VFUWWH52.cjs');
11
+ require('../chunk-C54XEN5T.cjs');
9
12
  require('../chunk-FX3K6LNZ.cjs');
10
13
  require('../chunk-PPCATBOY.cjs');
11
- require('../chunk-C54XEN5T.cjs');
12
14
  var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
13
15
  var chunkVLCY46K6_cjs = require('../chunk-VLCY46K6.cjs');
14
16
  var chunk2ZTONLT5_cjs = require('../chunk-2ZTONLT5.cjs');
@@ -212,100 +214,28 @@ var DEFAULT_FILES_SEARCH_LABELS = {
212
214
  clearFilter: "Clear filter",
213
215
  chooseFields: "Choose fields to search"
214
216
  };
215
- function FilesSearchInput({
216
- value,
217
- onChange,
218
- fields,
219
- selectedFields,
220
- onSelectedFieldsChange,
221
- placeholder,
222
- labels,
223
- testIds,
224
- className,
225
- filterSlot
226
- }) {
227
- const l = { ...DEFAULT_FILES_SEARCH_LABELS, ...labels };
228
- const toggleField = (field) => onSelectedFieldsChange(
229
- selectedFields.includes(field) ? selectedFields.filter((f) => f !== field) : [...selectedFields, field]
230
- );
231
- return /* @__PURE__ */ jsxRuntime.jsxs(
232
- "div",
217
+ function FilesSearchInput(props) {
218
+ return /* @__PURE__ */ jsxRuntime.jsx(
219
+ chunkQ6LF7N3A_cjs.FilterInput,
233
220
  {
234
- className: ui.cn("relative flex min-w-0 items-center", className),
235
- "data-slot": "files-search",
236
- "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.root, { testId: "documents-search" }),
237
- children: [
238
- filterSlot && /* @__PURE__ */ jsxRuntime.jsx(
239
- "div",
240
- {
241
- className: "absolute left-1 top-1/2 z-10 -translate-y-1/2",
242
- "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.filterSlot, { testId: "documents-search-filter" }),
243
- children: filterSlot
244
- }
245
- ),
246
- /* @__PURE__ */ jsxRuntime.jsx(
247
- ui.Input,
248
- {
249
- value,
250
- onChange: (e) => onChange(e.target.value),
251
- placeholder: placeholder ?? l.placeholder,
252
- "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.input, { testId: "filter-bar-search-input" }),
253
- className: ui.cn(
254
- "h-8 border-transparent bg-muted text-sm shadow-none focus-visible:border-input focus-visible:bg-background pointer-coarse:h-11",
255
- filterSlot ? "pl-11" : "pl-2.5",
256
- value ? "pr-14 pointer-coarse:pr-24" : "pr-8 pointer-coarse:pr-12"
257
- )
258
- }
259
- ),
260
- value && /* @__PURE__ */ jsxRuntime.jsx(
261
- "button",
262
- {
263
- type: "button",
264
- onClick: () => onChange(""),
265
- "aria-label": l.clearFilter,
266
- className: "absolute right-8 top-1/2 z-10 flex size-5 -translate-y-1/2 items-center justify-center rounded-sm text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:right-11 pointer-coarse:size-11!",
267
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "size-3" })
268
- }
269
- ),
270
- /* @__PURE__ */ jsxRuntime.jsxs(ui.Popover, { children: [
271
- /* @__PURE__ */ jsxRuntime.jsx(ui.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
272
- "button",
273
- {
274
- type: "button",
275
- "aria-label": l.chooseFields,
276
- "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.fieldsButton, {
277
- testId: "documents-search-fields-button"
278
- }),
279
- className: "absolute right-1.5 top-1/2 z-10 flex size-5 -translate-y-1/2 items-center justify-center rounded-sm text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:right-0 pointer-coarse:size-11!",
280
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SlidersHorizontal, { className: "size-3.5" })
281
- }
282
- ) }),
283
- /* @__PURE__ */ jsxRuntime.jsx(ui.PopoverContent, { className: "w-44 p-0", align: "end", sideOffset: 6, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Command, { shouldFilter: false, children: /* @__PURE__ */ jsxRuntime.jsx(ui.CommandList, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.CommandGroup, { children: fields.map((field) => {
284
- const isSelected = selectedFields.includes(field.value);
285
- return /* @__PURE__ */ jsxRuntime.jsxs(
286
- ui.CommandItem,
287
- {
288
- onSelect: () => toggleField(field.value),
289
- className: "cursor-pointer text-sm",
290
- children: [
291
- /* @__PURE__ */ jsxRuntime.jsx(
292
- "div",
293
- {
294
- className: ui.cn(
295
- "mr-2 flex size-3.5 items-center justify-center rounded-sm border border-primary",
296
- isSelected ? "bg-primary text-primary-foreground" : "opacity-50 [&_svg]:invisible"
297
- ),
298
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "size-3" })
299
- }
300
- ),
301
- field.label
302
- ]
303
- },
304
- field.value
305
- );
306
- }) }) }) }) })
307
- ] })
308
- ]
221
+ value: props.value,
222
+ onChange: props.onChange,
223
+ fieldOptions: props.fields,
224
+ fields: props.selectedFields,
225
+ onFieldsChange: props.onSelectedFieldsChange,
226
+ filter: props.filterSlot,
227
+ className: props.className,
228
+ labels: {
229
+ placeholder: props.placeholder ?? props.labels?.placeholder ?? DEFAULT_FILES_SEARCH_LABELS.placeholder,
230
+ clear: props.labels?.clearFilter ?? DEFAULT_FILES_SEARCH_LABELS.clearFilter,
231
+ chooseFields: props.labels?.chooseFields ?? DEFAULT_FILES_SEARCH_LABELS.chooseFields
232
+ },
233
+ testIds: {
234
+ root: props.testIds?.root ?? "documents-search",
235
+ quick: props.testIds?.filterSlot ?? "documents-search-filter",
236
+ input: props.testIds?.input ?? "filter-bar-search-input",
237
+ fieldsButton: props.testIds?.fieldsButton ?? "documents-search-fields-button"
238
+ }
309
239
  }
310
240
  );
311
241
  }
@@ -1050,7 +980,7 @@ function UploadDropArea({
1050
980
  onClick,
1051
981
  className: ui.cn(
1052
982
  "relative flex w-full flex-col items-center justify-center rounded-lg border text-center transition-colors",
1053
- active ? "border-dashed border-primary bg-accent" : "border-transparent bg-muted hover:bg-muted/70",
983
+ active ? "border-dashed border-primary bg-accent" : "border-border bg-card shadow-xs hover:border-ring/50 hover:bg-accent/40",
1054
984
  isDisabled || isProcessing ? "cursor-not-allowed" : "cursor-pointer",
1055
985
  isCompact ? "min-h-[150px] p-4" : "min-h-[200px] p-5",
1056
986
  // Touch screens cannot drag files in: the area stays in the DOM (assistive tech, e2e) but
@@ -1536,7 +1466,7 @@ function ViewerTitle({
1536
1466
  "span",
1537
1467
  {
1538
1468
  className: ui.cn(
1539
- "inline-flex min-w-0 items-center gap-1.5 rounded-md bg-muted px-2 py-1 text-sm font-medium",
1469
+ "inline-flex min-w-0 items-center gap-1.5 px-1 py-1 text-sm font-medium",
1540
1470
  shrink ? "shrink" : "shrink-0"
1541
1471
  ),
1542
1472
  title,
@@ -1808,10 +1738,7 @@ function FilesPageHeader({ className, ...props }) {
1808
1738
  "div",
1809
1739
  {
1810
1740
  "data-slot": "files-page-header",
1811
- className: ui.cn(
1812
- "sticky top-0 z-10 flex flex-col gap-3 bg-background px-4 pb-3 pt-4 sm:px-6",
1813
- className
1814
- ),
1741
+ className: ui.cn("sticky top-0 z-10 flex flex-col bg-background", className),
1815
1742
  ...props
1816
1743
  }
1817
1744
  );
@@ -1830,7 +1757,7 @@ var DOCUMENT_GRID_CLASS = "w-full [&_.cell-empty]:text-muted-foreground [&_.ag-r
1830
1757
  function DocumentGrid({
1831
1758
  layout,
1832
1759
  presets,
1833
- GridComponent = chunkJGZTRLKL_cjs.GridView,
1760
+ GridComponent = chunkIA7RTPT3_cjs.GridView,
1834
1761
  emptyWorkspace,
1835
1762
  showEmptyWorkspace,
1836
1763
  testId = "documents-grid",
@@ -2141,7 +2068,7 @@ function FolderPickerRow({
2141
2068
  ) : isActive && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "size-3.5 text-primary" }) }),
2142
2069
  icon,
2143
2070
  label !== "" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: ui.cn("min-w-0 truncate", isActive && "font-semibold text-primary"), children: label }),
2144
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto pl-2 text-sm font-semibold text-muted-foreground", children: count })
2071
+ count !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto pl-2 text-sm font-semibold text-muted-foreground", children: count })
2145
2072
  ]
2146
2073
  }
2147
2074
  );
@@ -2835,6 +2762,7 @@ function FilesAddMenu({
2835
2762
  testId
2836
2763
  }) {
2837
2764
  const [open, setOpen] = react.useState(false);
2765
+ const triggerRef = react.useRef(null);
2838
2766
  const closeTimer = react.useRef(null);
2839
2767
  const cancelClose = () => {
2840
2768
  if (closeTimer.current) {
@@ -2854,6 +2782,7 @@ function FilesAddMenu({
2854
2782
  const trigger = /* @__PURE__ */ jsxRuntime.jsxs(
2855
2783
  ui.Button,
2856
2784
  {
2785
+ ref: triggerRef,
2857
2786
  variant: "default",
2858
2787
  size,
2859
2788
  disabled: !canAdd,
@@ -2862,6 +2791,7 @@ function FilesAddMenu({
2862
2791
  "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "documents-upload-button" }),
2863
2792
  onPointerEnter: (e) => e.pointerType === "mouse" && openMenu(),
2864
2793
  onPointerLeave: (e) => e.pointerType === "mouse" && scheduleClose(),
2794
+ onPointerDown: (e) => e.pointerType === "mouse" && open && e.preventDefault(),
2865
2795
  children: [
2866
2796
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Upload, { className: "h-4 w-4" }),
2867
2797
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: isCompact ? "hidden" : "inline", children: label }),
@@ -2885,6 +2815,7 @@ function FilesAddMenu({
2885
2815
  className: "w-56",
2886
2816
  onPointerEnter: (e) => e.pointerType === "mouse" && openMenu(),
2887
2817
  onPointerLeave: (e) => e.pointerType === "mouse" && scheduleClose(),
2818
+ onPointerDownOutside: (e) => triggerRef.current?.contains(e.target) && e.preventDefault(),
2888
2819
  onCloseAutoFocus: (e) => e.preventDefault(),
2889
2820
  children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "contents", children: [
2890
2821
  item.separatorBefore && /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuSeparator, {}),
@@ -4010,45 +3941,6 @@ function DocumentNameCellFrame({
4010
3941
  }
4011
3942
  );
4012
3943
  }
4013
- var ICONS = { pencil: lucideReact.Pencil, plus: lucideReact.Plus, blocked: lucideReact.Ban };
4014
- function CellHoverIcon({
4015
- kind = "pencil",
4016
- className
4017
- }) {
4018
- const Icon = ICONS[kind];
4019
- return /* @__PURE__ */ jsxRuntime.jsx(
4020
- "span",
4021
- {
4022
- "data-slot": "cell-hover-icon",
4023
- "data-kind": kind,
4024
- "aria-hidden": true,
4025
- className: ui.cn(
4026
- "inline-flex shrink-0 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-70 group-focus-within:opacity-70 pointer-coarse:opacity-70",
4027
- className
4028
- ),
4029
- children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-3.5" })
4030
- }
4031
- );
4032
- }
4033
- var HoverIconCell = react.memo(function HoverIconCell2({
4034
- content,
4035
- isEditable,
4036
- showIcon = true,
4037
- icon = "pencil",
4038
- className
4039
- }) {
4040
- return /* @__PURE__ */ jsxRuntime.jsxs(
4041
- "div",
4042
- {
4043
- "data-slot": "hover-icon-cell",
4044
- className: ui.cn("group flex h-full w-full items-center gap-2 pr-2", className),
4045
- children: [
4046
- content,
4047
- showIcon && /* @__PURE__ */ jsxRuntime.jsx(CellHoverIcon, { kind: isEditable ? icon : "blocked" })
4048
- ]
4049
- }
4050
- );
4051
- });
4052
3944
  var CHIP_ROW_H = 24;
4053
3945
  var CHIP_GAP = 4;
4054
3946
  function labelChipClampHeight(rowHeight) {
@@ -4065,6 +3957,7 @@ var CHECK_BOX = "flex shrink-0 items-center justify-center rounded border-2";
4065
3957
  function LabelPickerList({
4066
3958
  options,
4067
3959
  appliedIds,
3960
+ mixedIds,
4068
3961
  onToggle,
4069
3962
  onCreate,
4070
3963
  onEditLabels,
@@ -4106,6 +3999,7 @@ function LabelPickerList({
4106
3999
  ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: l.noLabels }) }),
4107
4000
  /* @__PURE__ */ jsxRuntime.jsx(ui.CommandGroup, { children: options.map((o) => {
4108
4001
  const isApplied = appliedIds.has(o.id);
4002
+ const isMixed = mixedIds?.has(o.id);
4109
4003
  return /* @__PURE__ */ jsxRuntime.jsxs(
4110
4004
  ui.CommandItem,
4111
4005
  {
@@ -4115,7 +4009,7 @@ function LabelPickerList({
4115
4009
  className: "group/label cursor-pointer",
4116
4010
  "data-testid": `label-select-${o.id}`,
4117
4011
  children: [
4118
- /* @__PURE__ */ jsxRuntime.jsx(
4012
+ /* @__PURE__ */ jsxRuntime.jsxs(
4119
4013
  "span",
4120
4014
  {
4121
4015
  className: `mr-2 size-4 ${CHECK_BOX} ${isApplied ? "" : "bg-background"}`,
@@ -4123,7 +4017,10 @@ function LabelPickerList({
4123
4017
  borderColor: o.color,
4124
4018
  backgroundColor: isApplied ? o.color : void 0
4125
4019
  },
4126
- children: isApplied && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "size-3 text-white", strokeWidth: 3 })
4020
+ children: [
4021
+ isApplied && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "size-3 text-white", strokeWidth: 3 }),
4022
+ isMixed && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Minus, { className: "size-3", style: { color: o.color } })
4023
+ ]
4127
4024
  }
4128
4025
  ),
4129
4026
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 text-sm", children: o.name }),
@@ -4180,7 +4077,7 @@ var LabelMultiSelectView = react.memo(function LabelMultiSelectView2({
4180
4077
  type: "button",
4181
4078
  "data-slot": "label-multi-select",
4182
4079
  className: "group relative flex h-full w-full min-w-0 cursor-pointer items-center gap-1 pr-4 text-left hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",
4183
- children: applied.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(CellHoverIcon, {}) }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4080
+ children: applied.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(chunk3AFWGEDJ_cjs.CellHoverIcon, {}) }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4184
4081
  /* @__PURE__ */ jsxRuntime.jsx(
4185
4082
  "div",
4186
4083
  {
@@ -4295,6 +4192,43 @@ var TagColumnHeader = react.memo(function TagColumnHeader2({
4295
4192
  }
4296
4193
  );
4297
4194
  });
4195
+ function BulkLabelSelectView({
4196
+ options,
4197
+ appliedIds,
4198
+ mixedIds,
4199
+ onToggle,
4200
+ onCreate,
4201
+ disabled,
4202
+ isCompact
4203
+ }) {
4204
+ return /* @__PURE__ */ jsxRuntime.jsxs(ui.Popover, { children: [
4205
+ /* @__PURE__ */ jsxRuntime.jsx(ui.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
4206
+ ui.Button,
4207
+ {
4208
+ variant: "outline",
4209
+ size: "sm",
4210
+ disabled,
4211
+ className: "h-7 gap-1.5 px-2 text-yellow-text hover:text-yellow-text hover:bg-yellow-bg border-yellow-border",
4212
+ "data-testid": "bulk-label-button",
4213
+ "aria-label": "Labels",
4214
+ children: [
4215
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SquareCheckBig, { className: "size-4" }),
4216
+ !isCompact && /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Labels" })
4217
+ ]
4218
+ }
4219
+ ) }),
4220
+ /* @__PURE__ */ jsxRuntime.jsx(ui.PopoverContent, { className: "w-[220px] p-0", align: "start", side: "top", sideOffset: 4, children: /* @__PURE__ */ jsxRuntime.jsx(
4221
+ LabelPickerList,
4222
+ {
4223
+ options,
4224
+ appliedIds,
4225
+ mixedIds,
4226
+ onToggle,
4227
+ onCreate
4228
+ }
4229
+ ) })
4230
+ ] });
4231
+ }
4298
4232
  var DEFAULT_BULK_ACTIONS_LABELS = {
4299
4233
  chat: "Chat",
4300
4234
  chatTooltip: "Start a new chat with the selected document(s)",
@@ -4354,7 +4288,7 @@ function BulkActionsBar({
4354
4288
  const noSelection = count === 0;
4355
4289
  const divider = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-5 w-px flex-shrink-0 bg-border" });
4356
4290
  return /* @__PURE__ */ jsxRuntime.jsx(
4357
- chunkJGZTRLKL_cjs.SelectionBar,
4291
+ chunkIA7RTPT3_cjs.SelectionBar,
4358
4292
  {
4359
4293
  count,
4360
4294
  onClear,
@@ -4365,7 +4299,7 @@ function BulkActionsBar({
4365
4299
  const isCompact = compactBar && !isNarrow;
4366
4300
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4367
4301
  /* @__PURE__ */ jsxRuntime.jsx(
4368
- chunkJGZTRLKL_cjs.SelectionBarAction,
4302
+ chunkIA7RTPT3_cjs.SelectionBarAction,
4369
4303
  {
4370
4304
  icon: lucideReact.MessagesSquare,
4371
4305
  label: l.chat,
@@ -4378,7 +4312,7 @@ function BulkActionsBar({
4378
4312
  }
4379
4313
  ),
4380
4314
  isMember && /* @__PURE__ */ jsxRuntime.jsx(
4381
- chunkJGZTRLKL_cjs.SelectionBarAction,
4315
+ chunkIA7RTPT3_cjs.SelectionBarAction,
4382
4316
  {
4383
4317
  icon: lucideReact.NotebookPen,
4384
4318
  label: l.annotate,
@@ -4391,7 +4325,7 @@ function BulkActionsBar({
4391
4325
  ),
4392
4326
  isMember && !isNarrow && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4393
4327
  /* @__PURE__ */ jsxRuntime.jsx(
4394
- chunkJGZTRLKL_cjs.SelectionBarAction,
4328
+ chunkIA7RTPT3_cjs.SelectionBarAction,
4395
4329
  {
4396
4330
  icon: lucideReact.Tags,
4397
4331
  label: l.label,
@@ -4589,17 +4523,19 @@ function FolderFilterButton({
4589
4523
  align: "start",
4590
4524
  sideOffset: 4,
4591
4525
  children: [
4592
- /* @__PURE__ */ jsxRuntime.jsx(
4593
- FolderPickerRow,
4594
- {
4595
- label: l.all,
4596
- count: allCount,
4597
- depth: 0,
4598
- isActive: !isActive,
4599
- onClick: onSelectAll
4600
- }
4601
- ),
4602
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "my-1 border-t border-border" }),
4526
+ onSelectAll && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4527
+ /* @__PURE__ */ jsxRuntime.jsx(
4528
+ FolderPickerRow,
4529
+ {
4530
+ label: l.all,
4531
+ count: allCount,
4532
+ depth: 0,
4533
+ isActive: !isActive,
4534
+ onClick: onSelectAll
4535
+ }
4536
+ ),
4537
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "my-1 border-t border-border" })
4538
+ ] }),
4603
4539
  children,
4604
4540
  onNewFolder && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4605
4541
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "my-1 border-t border-border" }),
@@ -6930,28 +6866,36 @@ Object.defineProperty(exports, "ViewToggle", {
6930
6866
  enumerable: true,
6931
6867
  get: function () { return chunkZPERNIMP_cjs.ViewToggle; }
6932
6868
  });
6869
+ Object.defineProperty(exports, "CellHoverIcon", {
6870
+ enumerable: true,
6871
+ get: function () { return chunk3AFWGEDJ_cjs.CellHoverIcon; }
6872
+ });
6873
+ Object.defineProperty(exports, "HoverIconCell", {
6874
+ enumerable: true,
6875
+ get: function () { return chunk3AFWGEDJ_cjs.HoverIconCell; }
6876
+ });
6933
6877
  Object.defineProperty(exports, "DEFAULT_SELECTION_BAR_LABELS", {
6934
6878
  enumerable: true,
6935
- get: function () { return chunkJGZTRLKL_cjs.DEFAULT_SELECTION_BAR_LABELS; }
6879
+ get: function () { return chunkIA7RTPT3_cjs.DEFAULT_SELECTION_BAR_LABELS; }
6936
6880
  });
6937
6881
  Object.defineProperty(exports, "GridView", {
6938
6882
  enumerable: true,
6939
- get: function () { return chunkJGZTRLKL_cjs.GridView; }
6883
+ get: function () { return chunkIA7RTPT3_cjs.GridView; }
6940
6884
  });
6941
6885
  Object.defineProperty(exports, "SelectionBar", {
6942
6886
  enumerable: true,
6943
- get: function () { return chunkJGZTRLKL_cjs.SelectionBar; }
6887
+ get: function () { return chunkIA7RTPT3_cjs.SelectionBar; }
6944
6888
  });
6945
6889
  Object.defineProperty(exports, "SelectionBarAction", {
6946
6890
  enumerable: true,
6947
- get: function () { return chunkJGZTRLKL_cjs.SelectionBarAction; }
6891
+ get: function () { return chunkIA7RTPT3_cjs.SelectionBarAction; }
6948
6892
  });
6949
6893
  exports.AiReviewDialogView = AiReviewDialogView;
6950
6894
  exports.BulkActionsBar = BulkActionsBar;
6895
+ exports.BulkLabelSelectView = BulkLabelSelectView;
6951
6896
  exports.BulkReplaceDialog = BulkReplaceDialog;
6952
6897
  exports.BulkTagEditorDialog = BulkTagEditorDialog;
6953
6898
  exports.CalendarImportRow = CalendarImportRow;
6954
- exports.CellHoverIcon = CellHoverIcon;
6955
6899
  exports.CheckboxCell = CheckboxCell;
6956
6900
  exports.CitedRunNav = CitedRunNav;
6957
6901
  exports.DEFAULT_AI_REVIEW_DIALOG_LABELS = DEFAULT_AI_REVIEW_DIALOG_LABELS;
@@ -7043,7 +6987,6 @@ exports.FolderFilterButton = FolderFilterButton;
7043
6987
  exports.FolderPickerRow = FolderPickerRow;
7044
6988
  exports.FolderSummary = FolderSummary;
7045
6989
  exports.FolderTree = FolderTree;
7046
- exports.HoverIconCell = HoverIconCell;
7047
6990
  exports.HtmlPage = HtmlPage;
7048
6991
  exports.HtmlPassage = HtmlPassage;
7049
6992
  exports.HtmlViewerEmpty = HtmlViewerEmpty;