@neuronection/assistant-ui 0.28.0 → 0.29.0

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 (38) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/about.d.ts +2 -1
  3. package/dist/badge.d.ts +1 -1
  4. package/dist/button.d.ts +1 -1
  5. package/dist/chat-branch-tree.d.ts +2 -2
  6. package/dist/chat-core.d.ts +3 -3
  7. package/dist/chat-message.d.ts +1 -1
  8. package/dist/chat-panel.js +1 -1
  9. package/dist/chat-tools-catalog.js +1 -1
  10. package/dist/chat-trace-timeline.d.ts +12 -0
  11. package/dist/chat-trace-timeline.js +1 -1
  12. package/dist/chat-transcript.d.ts +1 -1
  13. package/dist/chunk-HC6DBXYJ.js +236 -0
  14. package/dist/chunk-HC6DBXYJ.js.map +1 -0
  15. package/dist/{chunk-LFSICACE.js → chunk-MVT4F6TA.js} +13 -6
  16. package/dist/chunk-MVT4F6TA.js.map +1 -0
  17. package/dist/{chunk-ZSCL34WT.js → chunk-N55WQMBA.js} +11 -4
  18. package/dist/chunk-N55WQMBA.js.map +1 -0
  19. package/dist/chunk-U5WSPZLX.js +133 -0
  20. package/dist/chunk-U5WSPZLX.js.map +1 -0
  21. package/dist/index.d.ts +2526 -91
  22. package/dist/index.js +7 -137
  23. package/dist/index.js.map +1 -1
  24. package/dist/logo.d.ts +9 -3
  25. package/dist/styles.css +1 -1
  26. package/dist/task-assignment-picker.d.ts +14 -1
  27. package/dist/theme-scope.d.ts +7 -1
  28. package/dist/{tree-YaIz73vo.d.ts → tree-4Hv9stjF.d.ts} +2 -2
  29. package/dist/{types-DZwzmyKE.d.ts → types-LhE1KFBf.d.ts} +1 -1
  30. package/dist/upload-dropzone.d.ts +24 -0
  31. package/dist/upload-dropzone.js +3 -0
  32. package/dist/upload-dropzone.js.map +1 -0
  33. package/package.json +3 -2
  34. package/dist/Logo-D8DEBUoL.d.ts +0 -11
  35. package/dist/chunk-5KFOQEOG.js +0 -154
  36. package/dist/chunk-5KFOQEOG.js.map +0 -1
  37. package/dist/chunk-LFSICACE.js.map +0 -1
  38. package/dist/chunk-ZSCL34WT.js.map +0 -1
@@ -0,0 +1,133 @@
1
+ import { cn } from './chunk-BLJWR4ZV.js';
2
+ import * as React from 'react';
3
+ import { Loader2, FolderUp, Upload } from 'lucide-react';
4
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
5
+
6
+ var UploadDropzone = React.forwardRef(
7
+ function UploadDropzone2({
8
+ onFiles,
9
+ uploading = false,
10
+ variant = "block",
11
+ label = "Drop files here or click to browse",
12
+ hint,
13
+ browseLabel = "Choose files",
14
+ folderLabel = "Choose folder",
15
+ accept,
16
+ multiple = true,
17
+ allowFolders = false,
18
+ disabled = false,
19
+ className
20
+ }, ref) {
21
+ const [dragging, setDragging] = React.useState(false);
22
+ const fileInput = React.useRef(null);
23
+ const folderInput = React.useRef(null);
24
+ const active = !disabled && !uploading;
25
+ const emit = (list) => {
26
+ if (!active || !list || list.length === 0) return;
27
+ onFiles(Array.from(list));
28
+ };
29
+ const input = allowFolders ? /* @__PURE__ */ jsxs(Fragment, { children: [
30
+ /* @__PURE__ */ jsx(
31
+ "input",
32
+ {
33
+ ref: fileInput,
34
+ type: "file",
35
+ accept,
36
+ multiple,
37
+ className: "hidden",
38
+ "aria-hidden": true,
39
+ tabIndex: -1,
40
+ onChange: (event) => {
41
+ emit(event.target.files);
42
+ event.target.value = "";
43
+ }
44
+ }
45
+ ),
46
+ /* @__PURE__ */ jsx(
47
+ "input",
48
+ {
49
+ ref: folderInput,
50
+ type: "file",
51
+ multiple: true,
52
+ className: "hidden",
53
+ webkitdirectory: "",
54
+ "aria-hidden": true,
55
+ tabIndex: -1,
56
+ onChange: (event) => {
57
+ emit(event.target.files);
58
+ event.target.value = "";
59
+ }
60
+ }
61
+ )
62
+ ] }) : /* @__PURE__ */ jsx(
63
+ "input",
64
+ {
65
+ ref: fileInput,
66
+ type: "file",
67
+ accept,
68
+ multiple,
69
+ className: "hidden",
70
+ "aria-hidden": true,
71
+ tabIndex: -1,
72
+ onChange: (event) => {
73
+ emit(event.target.files);
74
+ event.target.value = "";
75
+ }
76
+ }
77
+ );
78
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
79
+ input,
80
+ /* @__PURE__ */ jsxs(
81
+ "div",
82
+ {
83
+ ref,
84
+ "data-as": "upload-dropzone",
85
+ "data-variant": variant,
86
+ "data-dragging": dragging || void 0,
87
+ role: "button",
88
+ tabIndex: active ? 0 : -1,
89
+ "aria-label": label,
90
+ "aria-disabled": disabled || uploading || void 0,
91
+ onClick: () => active && fileInput.current?.click(),
92
+ onKeyDown: (event) => {
93
+ if (active && (event.key === "Enter" || event.key === " ")) {
94
+ event.preventDefault();
95
+ fileInput.current?.click();
96
+ }
97
+ },
98
+ onDragOver: (event) => {
99
+ event.preventDefault();
100
+ if (active) setDragging(true);
101
+ },
102
+ onDragLeave: () => setDragging(false),
103
+ onDrop: (event) => {
104
+ event.preventDefault();
105
+ setDragging(false);
106
+ emit(event.dataTransfer.files);
107
+ },
108
+ className: cn(
109
+ "flex cursor-pointer items-center justify-center gap-3 border border-dashed border-[var(--as-border)] bg-[var(--as-surface)] text-[var(--as-muted-fg)] transition-colors",
110
+ "hover:border-[var(--as-primary)] hover:text-[var(--as-fg)]",
111
+ "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)]",
112
+ variant === "block" ? "rounded-[var(--as-radius-lg)] p-8" : "rounded-[var(--as-radius)] px-4 py-3",
113
+ dragging && "border-[var(--as-primary)] bg-[color-mix(in_srgb,var(--as-primary)_8%,transparent)] text-[var(--as-fg)]",
114
+ uploading && "cursor-progress opacity-70",
115
+ disabled && "pointer-events-none opacity-50",
116
+ className
117
+ ),
118
+ children: [
119
+ uploading ? /* @__PURE__ */ jsx(Loader2, { className: "size-5 shrink-0 animate-spin", "aria-hidden": true }) : allowFolders ? /* @__PURE__ */ jsx(FolderUp, { className: "size-5 shrink-0", "aria-hidden": true }) : /* @__PURE__ */ jsx(Upload, { className: "size-5 shrink-0", "aria-hidden": true }),
120
+ /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-col", children: [
121
+ /* @__PURE__ */ jsx("span", { className: "truncate text-sm font-medium", role: uploading ? "status" : void 0, children: uploading ? `${browseLabel}\u2026` : dragging ? folderLabel : label }),
122
+ hint ? /* @__PURE__ */ jsx("span", { className: "truncate text-xs", children: hint }) : null
123
+ ] })
124
+ ]
125
+ }
126
+ )
127
+ ] });
128
+ }
129
+ );
130
+
131
+ export { UploadDropzone };
132
+ //# sourceMappingURL=chunk-U5WSPZLX.js.map
133
+ //# sourceMappingURL=chunk-U5WSPZLX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/upload-dropzone/UploadDropzone.tsx"],"names":["UploadDropzone"],"mappings":"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","file":"chunk-U5WSPZLX.js","sourcesContent":["import * as React from 'react'\nimport { FolderUp, Loader2, Upload } from 'lucide-react'\nimport { cn } from '../../lib/utils'\n\nexport interface UploadDropzoneProps {\n onFiles: (files: File[]) => void\n uploading?: boolean\n variant?: 'block' | 'row'\n label?: string\n hint?: string\n browseLabel?: string\n folderLabel?: string\n accept?: string\n multiple?: boolean\n allowFolders?: boolean\n disabled?: boolean\n className?: string\n}\n\n/**\n * Presentational dropzone: drag events and file-picker results go out via\n * `onFiles` — uploading, storage and progress stay app-side. Pass\n * `uploading` to render a busy state and suppress input.\n */\nexport const UploadDropzone = React.forwardRef<HTMLDivElement, UploadDropzoneProps>(\n function UploadDropzone(\n {\n onFiles,\n uploading = false,\n variant = 'block',\n label = 'Drop files here or click to browse',\n hint,\n browseLabel = 'Choose files',\n folderLabel = 'Choose folder',\n accept,\n multiple = true,\n allowFolders = false,\n disabled = false,\n className,\n },\n ref,\n ) {\n const [dragging, setDragging] = React.useState(false)\n const fileInput = React.useRef<HTMLInputElement>(null)\n const folderInput = React.useRef<HTMLInputElement>(null)\n\n const active = !disabled && !uploading\n\n const emit = (list: FileList | null) => {\n if (!active || !list || list.length === 0) return\n onFiles(Array.from(list))\n }\n\n const input = allowFolders ? (\n <>\n <input\n ref={fileInput}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n className=\"hidden\"\n aria-hidden\n tabIndex={-1}\n onChange={(event) => {\n emit(event.target.files)\n event.target.value = ''\n }}\n />\n <input\n ref={folderInput}\n type=\"file\"\n multiple\n className=\"hidden\"\n // @ts-expect-error non-standard but universally supported directory picker\n webkitdirectory=\"\"\n aria-hidden\n tabIndex={-1}\n onChange={(event) => {\n emit(event.target.files)\n event.target.value = ''\n }}\n />\n </>\n ) : (\n <input\n ref={fileInput}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n className=\"hidden\"\n aria-hidden\n tabIndex={-1}\n onChange={(event) => {\n emit(event.target.files)\n event.target.value = ''\n }}\n />\n )\n\n return (\n <>\n {input}\n <div\n ref={ref}\n data-as=\"upload-dropzone\"\n data-variant={variant}\n data-dragging={dragging || undefined}\n role=\"button\"\n tabIndex={active ? 0 : -1}\n aria-label={label}\n aria-disabled={disabled || uploading || undefined}\n onClick={() => active && fileInput.current?.click()}\n onKeyDown={(event) => {\n if (active && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault()\n fileInput.current?.click()\n }\n }}\n onDragOver={(event) => {\n event.preventDefault()\n if (active) setDragging(true)\n }}\n onDragLeave={() => setDragging(false)}\n onDrop={(event) => {\n event.preventDefault()\n setDragging(false)\n emit(event.dataTransfer.files)\n }}\n className={cn(\n 'flex cursor-pointer items-center justify-center gap-3 border border-dashed border-[var(--as-border)] bg-[var(--as-surface)] text-[var(--as-muted-fg)] transition-colors',\n 'hover:border-[var(--as-primary)] hover:text-[var(--as-fg)]',\n 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-focus-ring)]',\n variant === 'block' ? 'rounded-[var(--as-radius-lg)] p-8' : 'rounded-[var(--as-radius)] px-4 py-3',\n dragging && 'border-[var(--as-primary)] bg-[color-mix(in_srgb,var(--as-primary)_8%,transparent)] text-[var(--as-fg)]',\n uploading && 'cursor-progress opacity-70',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n >\n {uploading ? (\n <Loader2 className=\"size-5 shrink-0 animate-spin\" aria-hidden />\n ) : allowFolders ? (\n <FolderUp className=\"size-5 shrink-0\" aria-hidden />\n ) : (\n <Upload className=\"size-5 shrink-0\" aria-hidden />\n )}\n <span className=\"flex min-w-0 flex-col\">\n <span className=\"truncate text-sm font-medium\" role={uploading ? 'status' : undefined}>\n {uploading ? `${browseLabel}…` : dragging ? folderLabel : label}\n </span>\n {hint ? <span className=\"truncate text-xs\">{hint}</span> : null}\n </span>\n </div>\n </>\n )\n },\n)\n"]}