@arbidocs/react 0.5.119 → 0.5.121

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 (86) hide show
  1. package/dist/PdfViewerImpl-ZVJZ4KNW.cjs +22 -0
  2. package/dist/PdfViewerImpl-ZVJZ4KNW.cjs.map +1 -0
  3. package/dist/{PdfViewerImpl.d-B28hLEuj.d.ts → PdfViewerImpl.d-CqnEzQO7.d.ts} +9 -1
  4. package/dist/annotations/freeze/index.d.ts +1 -1
  5. package/dist/artifacts/artifact-kind.js +1 -0
  6. package/dist/artifacts/artifact-kind.js.map +2 -2
  7. package/dist/artifacts/index.cjs +3 -2
  8. package/dist/artifacts/index.cjs.map +1 -1
  9. package/dist/artifacts/index.d.ts +3 -2
  10. package/dist/calls/livekit/index.cjs +41 -41
  11. package/dist/chat/turn-flush.js +16 -0
  12. package/dist/chat/turn-flush.js.map +7 -0
  13. package/dist/chat/useConversationActions.js +3 -0
  14. package/dist/chat/useConversationActions.js.map +2 -2
  15. package/dist/{chunk-QP3WQSAA.cjs → chunk-4B2GW3AY.cjs} +3 -3
  16. package/dist/{chunk-QP3WQSAA.cjs.map → chunk-4B2GW3AY.cjs.map} +1 -1
  17. package/dist/{chunk-YMB6XUR2.cjs → chunk-7L7QRIQ2.cjs} +11 -7
  18. package/dist/chunk-7L7QRIQ2.cjs.map +1 -0
  19. package/dist/{chunk-LBAG7KL7.cjs → chunk-DLEHM4IA.cjs} +328 -180
  20. package/dist/chunk-DLEHM4IA.cjs.map +1 -0
  21. package/dist/{PdfViewerImpl-QUSDLNNM.cjs → chunk-ICBT2XGF.cjs} +5 -2
  22. package/dist/chunk-ICBT2XGF.cjs.map +1 -0
  23. package/dist/chunk-MAOGK7IC.cjs +61 -0
  24. package/dist/chunk-MAOGK7IC.cjs.map +1 -0
  25. package/dist/{chunk-5TRUFWKT.cjs → chunk-X5OZRLFZ.cjs} +5 -5
  26. package/dist/{chunk-5TRUFWKT.cjs.map → chunk-X5OZRLFZ.cjs.map} +1 -1
  27. package/dist/datasets/sources/documents.js +1 -1
  28. package/dist/datasets/sources/documents.js.map +2 -2
  29. package/dist/document-tools/images-to-pdf.js +43 -0
  30. package/dist/document-tools/images-to-pdf.js.map +7 -0
  31. package/dist/document-tools/index.cjs +104 -0
  32. package/dist/document-tools/index.cjs.map +1 -1
  33. package/dist/document-tools/index.d.ts +41 -1
  34. package/dist/document-tools/index.js +6 -1
  35. package/dist/document-tools/index.js.map +2 -2
  36. package/dist/document-tools/pdf-attachments.js +63 -0
  37. package/dist/document-tools/pdf-attachments.js.map +7 -0
  38. package/dist/entities/DocumentEntity.js +7 -2
  39. package/dist/entities/DocumentEntity.js.map +2 -2
  40. package/dist/entities/SharingEntity.js +85 -0
  41. package/dist/entities/SharingEntity.js.map +7 -0
  42. package/dist/entities/file-type.js +14 -2
  43. package/dist/entities/file-type.js.map +2 -2
  44. package/dist/entities/index.js +17 -1
  45. package/dist/entities/index.js.map +2 -2
  46. package/dist/icons/PresIcon.js +53 -0
  47. package/dist/icons/PresIcon.js.map +7 -0
  48. package/dist/icons/colors.js +2 -0
  49. package/dist/icons/colors.js.map +2 -2
  50. package/dist/icons/file-type.js +3 -0
  51. package/dist/icons/file-type.js.map +2 -2
  52. package/dist/icons/index.js +2 -0
  53. package/dist/icons/index.js.map +2 -2
  54. package/dist/index.cjs +834 -789
  55. package/dist/index.cjs.map +1 -1
  56. package/dist/{index.d-CYXcTKYt.d.ts → index.d-D2puqWeN.d.ts} +47 -3
  57. package/dist/index.d.ts +50 -8
  58. package/dist/index.js +1 -0
  59. package/dist/index.js.map +2 -2
  60. package/dist/pdf-region-impl-ZG5G2OX2.cjs +98 -0
  61. package/dist/pdf-region-impl-ZG5G2OX2.cjs.map +1 -0
  62. package/dist/session/documents.js +9 -5
  63. package/dist/session/documents.js.map +2 -2
  64. package/dist/ui/index.cjs +182 -158
  65. package/dist/ui/index.d.ts +1 -1
  66. package/dist/ui/slider.js +7 -1
  67. package/dist/ui/slider.js.map +2 -2
  68. package/dist/viewers/PdfViewer.cjs +3 -3
  69. package/dist/viewers/PdfViewer.d.ts +2 -2
  70. package/dist/viewers/PdfViewerImpl.js +4 -1
  71. package/dist/viewers/PdfViewerImpl.js.map +2 -2
  72. package/dist/viewers/index.cjs +30 -4
  73. package/dist/viewers/index.cjs.map +1 -1
  74. package/dist/viewers/index.d.ts +72 -2
  75. package/dist/viewers/index.js +14 -0
  76. package/dist/viewers/index.js.map +2 -2
  77. package/dist/viewers/pdf-region-impl.js +96 -0
  78. package/dist/viewers/pdf-region-impl.js.map +7 -0
  79. package/dist/viewers/pdf-region.js +57 -0
  80. package/dist/viewers/pdf-region.js.map +7 -0
  81. package/dist/viewers/useProcessedChunks.js +2 -1
  82. package/dist/viewers/useProcessedChunks.js.map +2 -2
  83. package/package.json +3 -3
  84. package/dist/PdfViewerImpl-QUSDLNNM.cjs.map +0 -1
  85. package/dist/chunk-LBAG7KL7.cjs.map +0 -1
  86. package/dist/chunk-YMB6XUR2.cjs.map +0 -1
@@ -12,8 +12,8 @@ var reactDom = require('react-dom');
12
12
  var jsxRuntime = require('react/jsx-runtime');
13
13
  var lucideReact = require('lucide-react');
14
14
  var classVarianceAuthority = require('class-variance-authority');
15
- var SelectPrimitive = require('@radix-ui/react-select');
16
15
  var HoverCardPrimitive = require('@radix-ui/react-hover-card');
16
+ var SelectPrimitive = require('@radix-ui/react-select');
17
17
  var SeparatorPrimitive = require('@radix-ui/react-separator');
18
18
  var CollapsiblePrimitive = require('@radix-ui/react-collapsible');
19
19
  var ProgressPrimitive = require('@radix-ui/react-progress');
@@ -46,8 +46,8 @@ function _interopNamespace(e) {
46
46
  }
47
47
 
48
48
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
49
- var SelectPrimitive__namespace = /*#__PURE__*/_interopNamespace(SelectPrimitive);
50
49
  var HoverCardPrimitive__namespace = /*#__PURE__*/_interopNamespace(HoverCardPrimitive);
50
+ var SelectPrimitive__namespace = /*#__PURE__*/_interopNamespace(SelectPrimitive);
51
51
  var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrimitive);
52
52
  var CollapsiblePrimitive__namespace = /*#__PURE__*/_interopNamespace(CollapsiblePrimitive);
53
53
  var ProgressPrimitive__namespace = /*#__PURE__*/_interopNamespace(ProgressPrimitive);
@@ -618,6 +618,8 @@ var FILE_TYPE_COLORS = {
618
618
  // green-600 (Excel)
619
619
  eml: "#0d9488",
620
620
  // teal-600 (email)
621
+ pres: "#c026d3",
622
+ // fuchsia-600 (presentations)
621
623
  txt: NEUTRAL_GRAY,
622
624
  // gray (plain text)
623
625
  generic: NEUTRAL_GRAY,
@@ -926,6 +928,53 @@ var PdfIcon = ({ size = 16, className = "" }) => {
926
928
  }
927
929
  );
928
930
  };
931
+ var PresIcon = ({ size = 16, className = "" }) => {
932
+ return /* @__PURE__ */ jsxRuntime.jsxs(
933
+ "svg",
934
+ {
935
+ width: size,
936
+ height: size,
937
+ viewBox: "0 0 24 24",
938
+ fill: "none",
939
+ xmlns: "http://www.w3.org/2000/svg",
940
+ className,
941
+ children: [
942
+ /* @__PURE__ */ jsxRuntime.jsx(
943
+ "path",
944
+ {
945
+ d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
946
+ fill: FILE_TYPE_COLORS.pres,
947
+ stroke: FILE_TYPE_COLORS.pres,
948
+ strokeWidth: "1",
949
+ strokeLinecap: "round",
950
+ strokeLinejoin: "round"
951
+ }
952
+ ),
953
+ /* @__PURE__ */ jsxRuntime.jsx(
954
+ "path",
955
+ {
956
+ d: "M14 2v6h6",
957
+ fill: "none",
958
+ stroke: FILE_TYPE_COLORS.white,
959
+ strokeWidth: "1",
960
+ strokeLinecap: "round",
961
+ strokeLinejoin: "round"
962
+ }
963
+ ),
964
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "7", y: "11", width: "10", height: "6", rx: "0.75", fill: FILE_TYPE_COLORS.white }),
965
+ /* @__PURE__ */ jsxRuntime.jsx(
966
+ "path",
967
+ {
968
+ d: "M12 17v2.5",
969
+ stroke: FILE_TYPE_COLORS.white,
970
+ strokeWidth: "1.2",
971
+ strokeLinecap: "round"
972
+ }
973
+ )
974
+ ]
975
+ }
976
+ );
977
+ };
929
978
  var TxtIcon = ({ size = 16, className = "" }) => {
930
979
  return /* @__PURE__ */ jsxRuntime.jsxs(
931
980
  "svg",
@@ -1076,6 +1125,164 @@ var XlsIcon = ({ size = 16, className = "" }) => {
1076
1125
  }
1077
1126
  );
1078
1127
  };
1128
+
1129
+ // src/entities/file-type.ts
1130
+ var EXT_LABELS = {
1131
+ pdf: "PDF",
1132
+ // Word / docs
1133
+ doc: "Word",
1134
+ docx: "Word",
1135
+ rtf: "Word",
1136
+ odt: "Word",
1137
+ // Spreadsheets
1138
+ xls: "Excel",
1139
+ xlsx: "Excel",
1140
+ ods: "Excel",
1141
+ csv: "CSV",
1142
+ tsv: "CSV",
1143
+ // Slides
1144
+ ppt: "PowerPoint",
1145
+ pptx: "PowerPoint",
1146
+ odp: "PowerPoint",
1147
+ // Plain text / markup
1148
+ txt: "Text",
1149
+ log: "Text",
1150
+ md: "Markdown",
1151
+ markdown: "Markdown",
1152
+ html: "HTML",
1153
+ htm: "HTML",
1154
+ xml: "XML",
1155
+ json: "JSON",
1156
+ yaml: "YAML",
1157
+ yml: "YAML",
1158
+ // Email
1159
+ eml: "Email",
1160
+ msg: "Email",
1161
+ mbox: "Email",
1162
+ pst: "Outlook",
1163
+ ost: "Outlook",
1164
+ // Images
1165
+ jpg: "Image",
1166
+ jpeg: "Image",
1167
+ png: "Image",
1168
+ gif: "Image",
1169
+ bmp: "Image",
1170
+ tif: "Image",
1171
+ tiff: "Image",
1172
+ webp: "Image",
1173
+ svg: "Image",
1174
+ heic: "Image",
1175
+ heif: "Image",
1176
+ // Audio
1177
+ mp3: "Audio",
1178
+ wav: "Audio",
1179
+ m4a: "Audio",
1180
+ aac: "Audio",
1181
+ ogg: "Audio",
1182
+ flac: "Audio",
1183
+ opus: "Audio",
1184
+ // Video
1185
+ mp4: "Video",
1186
+ webm: "Video",
1187
+ mov: "Video",
1188
+ avi: "Video",
1189
+ mkv: "Video",
1190
+ // Archives
1191
+ zip: "Archive",
1192
+ tar: "Archive",
1193
+ gz: "Archive",
1194
+ rar: "Archive",
1195
+ "7z": "Archive"
1196
+ };
1197
+ var MIME_SUBTYPE_LABELS = {
1198
+ // PDF
1199
+ pdf: "PDF",
1200
+ "x-pdf": "PDF",
1201
+ // Word
1202
+ msword: "Word",
1203
+ "vnd.openxmlformats-officedocument.wordprocessingml.document": "Word",
1204
+ "vnd.oasis.opendocument.text": "Word",
1205
+ rtf: "Word",
1206
+ // Excel
1207
+ "vnd.ms-excel": "Excel",
1208
+ "vnd.openxmlformats-officedocument.spreadsheetml.sheet": "Excel",
1209
+ "vnd.oasis.opendocument.spreadsheet": "Excel",
1210
+ csv: "CSV",
1211
+ "tab-separated-values": "CSV",
1212
+ // PowerPoint
1213
+ "vnd.ms-powerpoint": "PowerPoint",
1214
+ "vnd.openxmlformats-officedocument.presentationml.presentation": "PowerPoint",
1215
+ "vnd.oasis.opendocument.presentation": "PowerPoint",
1216
+ // Plain text / markup
1217
+ plain: "Text",
1218
+ html: "HTML",
1219
+ xml: "XML",
1220
+ json: "JSON",
1221
+ markdown: "Markdown",
1222
+ "x-markdown": "Markdown",
1223
+ yaml: "YAML",
1224
+ "x-yaml": "YAML",
1225
+ // Email
1226
+ rfc822: "Email",
1227
+ "vnd.ms-outlook": "Email",
1228
+ // Archives
1229
+ zip: "Archive",
1230
+ "x-zip-compressed": "Archive",
1231
+ "x-tar": "Archive",
1232
+ gzip: "Archive",
1233
+ "x-7z-compressed": "Archive",
1234
+ "x-rar-compressed": "Archive"
1235
+ };
1236
+ var MIME_TYPE_LABELS = {
1237
+ image: "Image",
1238
+ audio: "Audio",
1239
+ video: "Video",
1240
+ text: "Text"
1241
+ };
1242
+ function lookupExt(ext) {
1243
+ return EXT_LABELS[ext.toLowerCase().replace(/^\./, "")];
1244
+ }
1245
+ function lookupMime(mime) {
1246
+ const base = mime.toLowerCase().split(";")[0].trim();
1247
+ const slash = base.indexOf("/");
1248
+ if (slash <= 0) return void 0;
1249
+ const top = base.slice(0, slash);
1250
+ const sub = base.slice(slash + 1);
1251
+ return MIME_SUBTYPE_LABELS[sub] ?? MIME_TYPE_LABELS[top];
1252
+ }
1253
+ function extFromFileName(fileName) {
1254
+ if (!fileName) return void 0;
1255
+ const dot = fileName.lastIndexOf(".");
1256
+ if (dot <= 0 || dot === fileName.length - 1) return void 0;
1257
+ return fileName.slice(dot + 1);
1258
+ }
1259
+ var PRESENTATIONS_FOLDER = "Presentations";
1260
+ var PRESENTATION_TEMPLATES_FOLDER = `${PRESENTATIONS_FOLDER}/Templates`;
1261
+ function isPresentationFileName(fileName, folder) {
1262
+ const name = (fileName ?? "").toLowerCase();
1263
+ if (name.endsWith(".presentation.pdf") || name.endsWith(".presentation.json")) return true;
1264
+ if (name.endsWith(".pptx")) return true;
1265
+ return name.endsWith(".pdf") && (folder === PRESENTATIONS_FOLDER || folder === PRESENTATION_TEMPLATES_FOLDER);
1266
+ }
1267
+ function friendlyFileType(fileType, fileName, folder) {
1268
+ if (isPresentationFileName(fileName, folder)) return "Presentation";
1269
+ if (fileType) {
1270
+ const trimmed = fileType.trim();
1271
+ if (trimmed.includes("/")) {
1272
+ const fromMime = lookupMime(trimmed);
1273
+ if (fromMime) return fromMime;
1274
+ } else {
1275
+ const fromExt = lookupExt(trimmed);
1276
+ if (fromExt) return fromExt;
1277
+ }
1278
+ }
1279
+ const fnExt = extFromFileName(fileName);
1280
+ if (fnExt) {
1281
+ const fromExt = lookupExt(fnExt);
1282
+ if (fromExt) return fromExt;
1283
+ }
1284
+ return "Other";
1285
+ }
1079
1286
  function getDocumentTitle(document2, defaultValue = "") {
1080
1287
  if (!document2) return defaultValue;
1081
1288
  return document2.doc_metadata?.title || document2.file_name || defaultValue;
@@ -1106,7 +1313,10 @@ var TEXT_EXTENSIONS = /* @__PURE__ */ new Set([
1106
1313
  "yaml",
1107
1314
  "yml"
1108
1315
  ]);
1109
- function getDocIcon(fileName, iconSize = 14) {
1316
+ function getDocIcon(fileName, iconSize = 14, folder) {
1317
+ if (isPresentationFileName(fileName, folder)) {
1318
+ return /* @__PURE__ */ jsxRuntime.jsx(PresIcon, { size: iconSize, className: "flex-shrink-0" });
1319
+ }
1110
1320
  const ext = fileName?.split(".").pop()?.toLowerCase();
1111
1321
  if (ext && VIDEO_EXTENSIONS.has(ext)) return /* @__PURE__ */ jsxRuntime.jsx(VidIcon, { size: iconSize, className: "flex-shrink-0" });
1112
1322
  if (ext && AUDIO_EXTENSIONS.has(ext)) return /* @__PURE__ */ jsxRuntime.jsx(AudIcon, { size: iconSize, className: "flex-shrink-0" });
@@ -1140,7 +1350,7 @@ function DocumentEntity({
1140
1350
  const ext = doc.file_name?.split(".").pop()?.toLowerCase();
1141
1351
  const iconSize = size === "md" ? 16 : 14;
1142
1352
  const eyeSizeClass = size === "md" ? "h-4 w-4" : "h-3.5 w-3.5";
1143
- const baseIcon = icon ?? getDocIcon(doc.file_name, iconSize);
1353
+ const baseIcon = icon ?? getDocIcon(doc.file_name, iconSize, doc.folder);
1144
1354
  const displayIcon = viewing || iconBadge ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative inline-flex flex-shrink-0 items-center justify-center", children: [
1145
1355
  viewing ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Eye, { className: chunkS6A6FSG7_cjs.cn("text-primary-foreground", eyeSizeClass) }) : baseIcon,
1146
1356
  iconBadge
@@ -2106,6 +2316,103 @@ function ThreadVisibilityIcon({
2106
2316
  const Icon2 = shared ? lucideReact.MessageSquareShare : lucideReact.MessageSquareLock;
2107
2317
  return /* @__PURE__ */ jsxRuntime.jsx(Icon2, { ...props, className: chunkS6A6FSG7_cjs.cn(shared ? "text-secondary" : "text-primary", className) });
2108
2318
  }
2319
+ var HoverCard = HoverCardPrimitive__namespace.Root;
2320
+ var HoverCardTrigger = HoverCardPrimitive__namespace.Trigger;
2321
+ function HoverCardPortal({
2322
+ container,
2323
+ ...props
2324
+ }) {
2325
+ const fallback = chunkHJDR5HEO_cjs.usePortalContainer();
2326
+ return /* @__PURE__ */ jsxRuntime.jsx(HoverCardPrimitive__namespace.Portal, { container: container ?? fallback, ...props });
2327
+ }
2328
+ var HoverCardContent = React__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(HoverCardPortal, { children: /* @__PURE__ */ jsxRuntime.jsx(
2329
+ HoverCardPrimitive__namespace.Content,
2330
+ {
2331
+ ref,
2332
+ align,
2333
+ sideOffset,
2334
+ collisionPadding: chunkHJDR5HEO_cjs.getCollisionPadding(),
2335
+ className: chunkS6A6FSG7_cjs.cn(
2336
+ "z-50 w-64 max-w-[calc(100vw-1rem)] rounded-md border bg-popover p-4 text-popover-foreground shadow-lg outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-hover-card-content-transform-origin]",
2337
+ className
2338
+ ),
2339
+ ...props
2340
+ }
2341
+ ) }));
2342
+ HoverCardContent.displayName = HoverCardPrimitive__namespace.Content.displayName;
2343
+ var sharedMembers = null;
2344
+ function configureSharingMembers(members) {
2345
+ sharedMembers = members;
2346
+ }
2347
+ var SHARING_LABELS = { onlyMe: "Only me", workspace: "Workspace" };
2348
+ function SharingEntity({
2349
+ shared,
2350
+ variant = "full",
2351
+ size = "sm",
2352
+ onToggle,
2353
+ disabled = false,
2354
+ disabledTooltip,
2355
+ tooltipActive,
2356
+ tooltipInactive,
2357
+ members: membersProp,
2358
+ className,
2359
+ "data-testid": testId
2360
+ }) {
2361
+ const members = membersProp ?? sharedMembers;
2362
+ const [open, setOpen] = React.useState(false);
2363
+ const lastPointer = React.useRef("mouse");
2364
+ const canToggle = !!onToggle && !disabled;
2365
+ const label = shared ? SHARING_LABELS.workspace : SHARING_LABELS.onlyMe;
2366
+ const hint = disabled ? disabledTooltip : shared ? tooltipActive : tooltipInactive;
2367
+ const handleClick = (e) => {
2368
+ e.stopPropagation();
2369
+ if (shared && lastPointer.current === "touch") {
2370
+ setOpen(true);
2371
+ return;
2372
+ }
2373
+ if (canToggle) onToggle(!shared);
2374
+ };
2375
+ const pill = /* @__PURE__ */ jsxRuntime.jsx(
2376
+ EntityPill,
2377
+ {
2378
+ shape: "pill",
2379
+ size,
2380
+ icon: shared ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Users, { className: "size-3.5 shrink-0 text-primary", "aria-hidden": true }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.User, { className: "size-3.5 shrink-0 text-muted-foreground", "aria-hidden": true }),
2381
+ label,
2382
+ labelClassName: chunkS6A6FSG7_cjs.cn(variant === "icon" && "sr-only", !shared && "text-muted-foreground"),
2383
+ className: chunkS6A6FSG7_cjs.cn(shared && "text-primary", className),
2384
+ onClick: handleClick,
2385
+ tooltipContent: !shared && hint ? hint : void 0,
2386
+ "data-testid": testId
2387
+ }
2388
+ );
2389
+ if (!shared) return pill;
2390
+ return /* @__PURE__ */ jsxRuntime.jsxs(HoverCard, { open, onOpenChange: setOpen, openDelay: 200, closeDelay: 100, children: [
2391
+ /* @__PURE__ */ jsxRuntime.jsx(
2392
+ HoverCardTrigger,
2393
+ {
2394
+ asChild: true,
2395
+ onPointerDown: (e) => {
2396
+ lastPointer.current = e.pointerType;
2397
+ },
2398
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2399
+ "span",
2400
+ {
2401
+ className: "inline-flex",
2402
+ role: "group",
2403
+ "aria-label": `${SHARING_LABELS.workspace}: shared with all workspace members`,
2404
+ children: pill
2405
+ }
2406
+ )
2407
+ }
2408
+ ),
2409
+ open && /* @__PURE__ */ jsxRuntime.jsxs(HoverCardContent, { side: "left", align: "center", className: "w-60 space-y-2 p-3", children: [
2410
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold", children: "Workspace members" }),
2411
+ members,
2412
+ hint && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "border-t pt-2 text-xs text-muted-foreground", children: hint })
2413
+ ] })
2414
+ ] });
2415
+ }
2109
2416
  var ENTITY_MAPPINGS = {
2110
2417
  PRODUCT: {
2111
2418
  NAMES: {
@@ -2967,155 +3274,6 @@ function usesOriginalBytesForViewer(fileName) {
2967
3274
  function isDownloadOnlyFile(fileName) {
2968
3275
  return DOWNLOAD_ONLY_EXTENSIONS.has(getDottedExtension(fileName));
2969
3276
  }
2970
-
2971
- // src/entities/file-type.ts
2972
- var EXT_LABELS = {
2973
- pdf: "PDF",
2974
- // Word / docs
2975
- doc: "Word",
2976
- docx: "Word",
2977
- rtf: "Word",
2978
- odt: "Word",
2979
- // Spreadsheets
2980
- xls: "Excel",
2981
- xlsx: "Excel",
2982
- ods: "Excel",
2983
- csv: "CSV",
2984
- tsv: "CSV",
2985
- // Slides
2986
- ppt: "PowerPoint",
2987
- pptx: "PowerPoint",
2988
- odp: "PowerPoint",
2989
- // Plain text / markup
2990
- txt: "Text",
2991
- log: "Text",
2992
- md: "Markdown",
2993
- markdown: "Markdown",
2994
- html: "HTML",
2995
- htm: "HTML",
2996
- xml: "XML",
2997
- json: "JSON",
2998
- yaml: "YAML",
2999
- yml: "YAML",
3000
- // Email
3001
- eml: "Email",
3002
- msg: "Email",
3003
- mbox: "Email",
3004
- pst: "Outlook",
3005
- ost: "Outlook",
3006
- // Images
3007
- jpg: "Image",
3008
- jpeg: "Image",
3009
- png: "Image",
3010
- gif: "Image",
3011
- bmp: "Image",
3012
- tif: "Image",
3013
- tiff: "Image",
3014
- webp: "Image",
3015
- svg: "Image",
3016
- heic: "Image",
3017
- heif: "Image",
3018
- // Audio
3019
- mp3: "Audio",
3020
- wav: "Audio",
3021
- m4a: "Audio",
3022
- aac: "Audio",
3023
- ogg: "Audio",
3024
- flac: "Audio",
3025
- opus: "Audio",
3026
- // Video
3027
- mp4: "Video",
3028
- webm: "Video",
3029
- mov: "Video",
3030
- avi: "Video",
3031
- mkv: "Video",
3032
- // Archives
3033
- zip: "Archive",
3034
- tar: "Archive",
3035
- gz: "Archive",
3036
- rar: "Archive",
3037
- "7z": "Archive"
3038
- };
3039
- var MIME_SUBTYPE_LABELS = {
3040
- // PDF
3041
- pdf: "PDF",
3042
- "x-pdf": "PDF",
3043
- // Word
3044
- msword: "Word",
3045
- "vnd.openxmlformats-officedocument.wordprocessingml.document": "Word",
3046
- "vnd.oasis.opendocument.text": "Word",
3047
- rtf: "Word",
3048
- // Excel
3049
- "vnd.ms-excel": "Excel",
3050
- "vnd.openxmlformats-officedocument.spreadsheetml.sheet": "Excel",
3051
- "vnd.oasis.opendocument.spreadsheet": "Excel",
3052
- csv: "CSV",
3053
- "tab-separated-values": "CSV",
3054
- // PowerPoint
3055
- "vnd.ms-powerpoint": "PowerPoint",
3056
- "vnd.openxmlformats-officedocument.presentationml.presentation": "PowerPoint",
3057
- "vnd.oasis.opendocument.presentation": "PowerPoint",
3058
- // Plain text / markup
3059
- plain: "Text",
3060
- html: "HTML",
3061
- xml: "XML",
3062
- json: "JSON",
3063
- markdown: "Markdown",
3064
- "x-markdown": "Markdown",
3065
- yaml: "YAML",
3066
- "x-yaml": "YAML",
3067
- // Email
3068
- rfc822: "Email",
3069
- "vnd.ms-outlook": "Email",
3070
- // Archives
3071
- zip: "Archive",
3072
- "x-zip-compressed": "Archive",
3073
- "x-tar": "Archive",
3074
- gzip: "Archive",
3075
- "x-7z-compressed": "Archive",
3076
- "x-rar-compressed": "Archive"
3077
- };
3078
- var MIME_TYPE_LABELS = {
3079
- image: "Image",
3080
- audio: "Audio",
3081
- video: "Video",
3082
- text: "Text"
3083
- };
3084
- function lookupExt(ext) {
3085
- return EXT_LABELS[ext.toLowerCase().replace(/^\./, "")];
3086
- }
3087
- function lookupMime(mime) {
3088
- const base = mime.toLowerCase().split(";")[0].trim();
3089
- const slash = base.indexOf("/");
3090
- if (slash <= 0) return void 0;
3091
- const top = base.slice(0, slash);
3092
- const sub = base.slice(slash + 1);
3093
- return MIME_SUBTYPE_LABELS[sub] ?? MIME_TYPE_LABELS[top];
3094
- }
3095
- function extFromFileName(fileName) {
3096
- if (!fileName) return void 0;
3097
- const dot = fileName.lastIndexOf(".");
3098
- if (dot <= 0 || dot === fileName.length - 1) return void 0;
3099
- return fileName.slice(dot + 1);
3100
- }
3101
- function friendlyFileType(fileType, fileName) {
3102
- if (fileType) {
3103
- const trimmed = fileType.trim();
3104
- if (trimmed.includes("/")) {
3105
- const fromMime = lookupMime(trimmed);
3106
- if (fromMime) return fromMime;
3107
- } else {
3108
- const fromExt = lookupExt(trimmed);
3109
- if (fromExt) return fromExt;
3110
- }
3111
- }
3112
- const fnExt = extFromFileName(fileName);
3113
- if (fnExt) {
3114
- const fromExt = lookupExt(fnExt);
3115
- if (fromExt) return fromExt;
3116
- }
3117
- return "Other";
3118
- }
3119
3277
  var Select = SelectPrimitive__namespace.Root;
3120
3278
  var SelectGroup = SelectPrimitive__namespace.Group;
3121
3279
  var SelectValue = SelectPrimitive__namespace.Value;
@@ -3649,30 +3807,6 @@ function DebouncedInput({
3649
3807
  }
3650
3808
  );
3651
3809
  }
3652
- var HoverCard = HoverCardPrimitive__namespace.Root;
3653
- var HoverCardTrigger = HoverCardPrimitive__namespace.Trigger;
3654
- function HoverCardPortal({
3655
- container,
3656
- ...props
3657
- }) {
3658
- const fallback = chunkHJDR5HEO_cjs.usePortalContainer();
3659
- return /* @__PURE__ */ jsxRuntime.jsx(HoverCardPrimitive__namespace.Portal, { container: container ?? fallback, ...props });
3660
- }
3661
- var HoverCardContent = React__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(HoverCardPortal, { children: /* @__PURE__ */ jsxRuntime.jsx(
3662
- HoverCardPrimitive__namespace.Content,
3663
- {
3664
- ref,
3665
- align,
3666
- sideOffset,
3667
- collisionPadding: chunkHJDR5HEO_cjs.getCollisionPadding(),
3668
- className: chunkS6A6FSG7_cjs.cn(
3669
- "z-50 w-64 max-w-[calc(100vw-1rem)] rounded-md border bg-popover p-4 text-popover-foreground shadow-lg outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-hover-card-content-transform-origin]",
3670
- className
3671
- ),
3672
- ...props
3673
- }
3674
- ) }));
3675
- HoverCardContent.displayName = HoverCardPrimitive__namespace.Content.displayName;
3676
3810
  var cardVariants = classVarianceAuthority.cva("min-w-0 rounded-lg bg-card text-card-foreground", {
3677
3811
  variants: {
3678
3812
  variant: {
@@ -3951,7 +4085,13 @@ var Slider = React__namespace.forwardRef(
3951
4085
  ...props,
3952
4086
  children: [
3953
4087
  /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20", children: /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Range, { className: chunkS6A6FSG7_cjs.cn("absolute h-full bg-primary", rangeClassName) }) }),
3954
- /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Thumb, { className: "block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50" })
4088
+ /* @__PURE__ */ jsxRuntime.jsx(
4089
+ SliderPrimitive__namespace.Thumb,
4090
+ {
4091
+ "aria-label": props["aria-label"],
4092
+ className: "block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"
4093
+ }
4094
+ )
3955
4095
  ]
3956
4096
  }
3957
4097
  )
@@ -4609,6 +4749,7 @@ function iconFromMime(mime) {
4609
4749
  return null;
4610
4750
  }
4611
4751
  function getFileTypeIcon(fileName, opts) {
4752
+ if (isPresentationFileName(fileName, opts?.folder)) return PresIcon;
4612
4753
  return iconFromExtension(getFileExtension(fileName)) ?? (opts?.mime ? iconFromMime(opts.mime) : null) ?? (opts?.defaultToPdf ? PdfIcon : TextIcon);
4613
4754
  }
4614
4755
  var GoogleIcon = ({
@@ -5060,6 +5201,8 @@ exports.MicWaveformIndicator = MicWaveformIndicator;
5060
5201
  exports.NEUTRAL_GRAY = NEUTRAL_GRAY2;
5061
5202
  exports.OpenAIIcon = OpenAIIcon;
5062
5203
  exports.PLACEHOLDER_COLOR = PLACEHOLDER_COLOR;
5204
+ exports.PRESENTATIONS_FOLDER = PRESENTATIONS_FOLDER;
5205
+ exports.PRESENTATION_TEMPLATES_FOLDER = PRESENTATION_TEMPLATES_FOLDER;
5063
5206
  exports.PassageCard = PassageCard;
5064
5207
  exports.PdfIcon = PdfIcon;
5065
5208
  exports.Popover = Popover;
@@ -5067,12 +5210,14 @@ exports.PopoverAnchor = PopoverAnchor;
5067
5210
  exports.PopoverClose = PopoverClose;
5068
5211
  exports.PopoverContent = PopoverContent;
5069
5212
  exports.PopoverTrigger = PopoverTrigger;
5213
+ exports.PresIcon = PresIcon;
5070
5214
  exports.PresenceLabel = PresenceLabel;
5071
5215
  exports.Progress = Progress;
5072
5216
  exports.ProjectEntity = ProjectEntity;
5073
5217
  exports.ProviderIcon = ProviderIcon;
5074
5218
  exports.RadioGroup = RadioGroup;
5075
5219
  exports.RadioGroupItem = RadioGroupItem;
5220
+ exports.SHARING_LABELS = SHARING_LABELS;
5076
5221
  exports.Select = Select;
5077
5222
  exports.SelectContent = SelectContent;
5078
5223
  exports.SelectGroup = SelectGroup;
@@ -5084,6 +5229,7 @@ exports.SelectSeparator = SelectSeparator;
5084
5229
  exports.SelectTrigger = SelectTrigger;
5085
5230
  exports.SelectValue = SelectValue;
5086
5231
  exports.Separator = Separator2;
5232
+ exports.SharingEntity = SharingEntity;
5087
5233
  exports.ShieldIcon = ShieldIcon;
5088
5234
  exports.Slider = Slider;
5089
5235
  exports.StatusPill = StatusPill;
@@ -5131,6 +5277,7 @@ exports.cardVariants = cardVariants;
5131
5277
  exports.classifyMediaError = classifyMediaError;
5132
5278
  exports.configureEntityRegistry = configureEntityRegistry;
5133
5279
  exports.configureRagLabels = configureRagLabels;
5280
+ exports.configureSharingMembers = configureSharingMembers;
5134
5281
  exports.configureStatusRegistry = configureStatusRegistry;
5135
5282
  exports.createChunkedRecorder = createChunkedRecorder;
5136
5283
  exports.entityNoun = entityNoun;
@@ -5163,6 +5310,7 @@ exports.isDownloadOnlyFile = isDownloadOnlyFile;
5163
5310
  exports.isImageDocument = isImageDocument;
5164
5311
  exports.isImageFile = isImageFile;
5165
5312
  exports.isMediaFile = isMediaFile;
5313
+ exports.isPresentationFileName = isPresentationFileName;
5166
5314
  exports.isVideoFile = isVideoFile;
5167
5315
  exports.markdownToPlainText = markdownToPlainText;
5168
5316
  exports.markdownToPlainTextBlocks = markdownToPlainTextBlocks;
@@ -5174,5 +5322,5 @@ exports.toggleVariants = toggleVariants;
5174
5322
  exports.useAudioRecorder = useAudioRecorder;
5175
5323
  exports.useDictateContext = useDictateContext;
5176
5324
  exports.usesOriginalBytesForViewer = usesOriginalBytesForViewer;
5177
- //# sourceMappingURL=chunk-LBAG7KL7.cjs.map
5178
- //# sourceMappingURL=chunk-LBAG7KL7.cjs.map
5325
+ //# sourceMappingURL=chunk-DLEHM4IA.cjs.map
5326
+ //# sourceMappingURL=chunk-DLEHM4IA.cjs.map