@tecsinapse/cortex-react 1.15.0-beta.1 → 1.15.0-beta.11

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 (73) hide show
  1. package/dist/cjs/components/Calendar/Calendar.js +1 -0
  2. package/dist/cjs/components/Calendar/CalendarCell.js +4 -0
  3. package/dist/cjs/components/Calendar/CalendarGrid.js +1 -0
  4. package/dist/cjs/components/Calendar/RangeCalendar.js +1 -0
  5. package/dist/cjs/components/DatePicker/DatePickerInput.js +1 -0
  6. package/dist/cjs/components/DatePicker/DateRangePickerInput.js +1 -0
  7. package/dist/cjs/components/Input/Mask.js +1 -0
  8. package/dist/cjs/components/Input/Search.js +1 -0
  9. package/dist/cjs/components/Menubar/Categories.js +1 -0
  10. package/dist/cjs/components/Menubar/Dropdown.js +1 -0
  11. package/dist/cjs/components/Menubar/Header.js +1 -0
  12. package/dist/cjs/components/Menubar/Item.js +1 -0
  13. package/dist/cjs/components/Menubar/MostUsed.js +1 -0
  14. package/dist/cjs/components/Menubar/Root.js +1 -0
  15. package/dist/cjs/components/Menubar/Search.js +1 -0
  16. package/dist/cjs/components/Menubar/SubItem.js +1 -0
  17. package/dist/cjs/components/Popover/Provider.js +1 -0
  18. package/dist/cjs/components/Select/GroupedOptions.js +1 -0
  19. package/dist/cjs/components/Select/MultiGroupedOptions.js +1 -0
  20. package/dist/cjs/components/Select/MultiOptions.js +1 -0
  21. package/dist/cjs/components/Select/Options.js +1 -0
  22. package/dist/cjs/components/TimePicker/TimePickerInput.js +1 -0
  23. package/dist/cjs/components/Tooltip.js +1 -0
  24. package/dist/cjs/components/Uploader/Manager.js +41 -23
  25. package/dist/cjs/components/Uploader/Modal.js +1 -2
  26. package/dist/cjs/components/Uploader/Upload.js +78 -5
  27. package/dist/cjs/hooks/useCalendarCell.js +1 -0
  28. package/dist/cjs/hooks/useFileUpload.js +50 -13
  29. package/dist/cjs/hooks/useManagerHelpers.js +25 -0
  30. package/dist/cjs/index.js +3 -0
  31. package/dist/cjs/provider/ManagerContext.js +35 -0
  32. package/dist/cjs/provider/MenubarProvider.js +1 -0
  33. package/dist/cjs/styles/progressBar.js +1 -1
  34. package/dist/esm/components/Calendar/Calendar.js +1 -0
  35. package/dist/esm/components/Calendar/CalendarCell.js +4 -0
  36. package/dist/esm/components/Calendar/CalendarGrid.js +1 -0
  37. package/dist/esm/components/Calendar/RangeCalendar.js +1 -0
  38. package/dist/esm/components/DatePicker/DatePickerInput.js +1 -0
  39. package/dist/esm/components/DatePicker/DateRangePickerInput.js +1 -0
  40. package/dist/esm/components/Input/Mask.js +1 -0
  41. package/dist/esm/components/Input/Search.js +1 -0
  42. package/dist/esm/components/Menubar/Categories.js +1 -0
  43. package/dist/esm/components/Menubar/Dropdown.js +1 -0
  44. package/dist/esm/components/Menubar/Header.js +1 -0
  45. package/dist/esm/components/Menubar/Item.js +1 -0
  46. package/dist/esm/components/Menubar/MostUsed.js +1 -0
  47. package/dist/esm/components/Menubar/Root.js +1 -0
  48. package/dist/esm/components/Menubar/Search.js +1 -0
  49. package/dist/esm/components/Menubar/SubItem.js +1 -0
  50. package/dist/esm/components/Popover/Provider.js +1 -0
  51. package/dist/esm/components/Select/GroupedOptions.js +1 -0
  52. package/dist/esm/components/Select/MultiGroupedOptions.js +1 -0
  53. package/dist/esm/components/Select/MultiOptions.js +1 -0
  54. package/dist/esm/components/Select/Options.js +1 -0
  55. package/dist/esm/components/TimePicker/TimePickerInput.js +1 -0
  56. package/dist/esm/components/Tooltip.js +1 -0
  57. package/dist/esm/components/Uploader/Manager.js +42 -24
  58. package/dist/esm/components/Uploader/Modal.js +1 -2
  59. package/dist/esm/components/Uploader/Upload.js +79 -8
  60. package/dist/esm/hooks/useCalendarCell.js +1 -0
  61. package/dist/esm/hooks/useFileUpload.js +51 -14
  62. package/dist/esm/hooks/useManagerHelpers.js +23 -0
  63. package/dist/esm/index.js +1 -0
  64. package/dist/esm/provider/ManagerContext.js +32 -0
  65. package/dist/esm/provider/MenubarProvider.js +1 -0
  66. package/dist/esm/styles/progressBar.js +1 -1
  67. package/dist/types/components/Uploader/Upload.d.ts +4 -2
  68. package/dist/types/components/Uploader/types.d.ts +23 -5
  69. package/dist/types/hooks/useFileUpload.d.ts +6 -2
  70. package/dist/types/hooks/useManagerHelpers.d.ts +9 -0
  71. package/dist/types/provider/ManagerContext.d.ts +14 -0
  72. package/dist/types/provider/index.d.ts +1 -0
  73. package/package.json +3 -3
@@ -8,6 +8,7 @@ require('react-aria');
8
8
  require('../../provider/MenubarContext.js');
9
9
  require('../../provider/SnackbarProvider.js');
10
10
  var CalendarProvider = require('../../provider/CalendarProvider.js');
11
+ require('../../provider/ManagerContext.js');
11
12
  require('react-stately');
12
13
  require('../Popover/Context.js');
13
14
  require('react-dropzone');
@@ -9,6 +9,10 @@ var useCalendarCell = require('../../hooks/useCalendarCell.js');
9
9
  require('../Popover/Context.js');
10
10
  require('react-dropzone');
11
11
  require('uuid');
12
+ require('../../provider/MenubarContext.js');
13
+ require('../../provider/SnackbarProvider.js');
14
+ require('../../provider/CalendarProvider.js');
15
+ require('../../provider/ManagerContext.js');
12
16
  require('@floating-ui/react');
13
17
  require('currency.js');
14
18
  var calendarCell = require('../../styles/calendar-cell.js');
@@ -8,6 +8,7 @@ require('react');
8
8
  require('../../provider/MenubarContext.js');
9
9
  require('../../provider/SnackbarProvider.js');
10
10
  require('../../provider/CalendarProvider.js');
11
+ require('../../provider/ManagerContext.js');
11
12
  var useCalendarGrid = require('../../hooks/useCalendarGrid.js');
12
13
  require('../Popover/Context.js');
13
14
  require('react-dropzone');
@@ -8,6 +8,7 @@ require('react');
8
8
  require('../../provider/MenubarContext.js');
9
9
  require('../../provider/SnackbarProvider.js');
10
10
  var CalendarProvider = require('../../provider/CalendarProvider.js');
11
+ require('../../provider/ManagerContext.js');
11
12
  require('../Popover/Context.js');
12
13
  require('react-dropzone');
13
14
  require('uuid');
@@ -9,6 +9,7 @@ require('react');
9
9
  require('../../provider/MenubarContext.js');
10
10
  require('../../provider/SnackbarProvider.js');
11
11
  require('../../provider/CalendarProvider.js');
12
+ require('../../provider/ManagerContext.js');
12
13
  var useDatePickerInput = require('../../hooks/useDatePickerInput.js');
13
14
  var useDatePickerInputCommon = require('../../hooks/useDatePickerInputCommon.js');
14
15
  require('react-dropzone');
@@ -9,6 +9,7 @@ require('react');
9
9
  require('../../provider/MenubarContext.js');
10
10
  require('../../provider/SnackbarProvider.js');
11
11
  require('../../provider/CalendarProvider.js');
12
+ require('../../provider/ManagerContext.js');
12
13
  var useDatePickerInputCommon = require('../../hooks/useDatePickerInputCommon.js');
13
14
  var useDateRangePickerInput = require('../../hooks/useDateRangePickerInput.js');
14
15
  require('react-dropzone');
@@ -8,6 +8,7 @@ require('react-stately');
8
8
  require('../../provider/MenubarContext.js');
9
9
  require('../../provider/SnackbarProvider.js');
10
10
  require('../../provider/CalendarProvider.js');
11
+ require('../../provider/ManagerContext.js');
11
12
  require('../Popover/Context.js');
12
13
  require('react-dropzone');
13
14
  require('uuid');
@@ -9,6 +9,7 @@ require('react-stately');
9
9
  require('../../provider/MenubarContext.js');
10
10
  require('../../provider/SnackbarProvider.js');
11
11
  require('../../provider/CalendarProvider.js');
12
+ require('../../provider/ManagerContext.js');
12
13
  require('../Popover/Context.js');
13
14
  var useDebouncedState = require('../../hooks/useDebouncedState.js');
14
15
  require('react-dropzone');
@@ -9,6 +9,7 @@ require('react');
9
9
  require('../../provider/MenubarContext.js');
10
10
  require('../../provider/SnackbarProvider.js');
11
11
  require('../../provider/CalendarProvider.js');
12
+ require('../../provider/ManagerContext.js');
12
13
  require('../Popover/Context.js');
13
14
  var useDimensions = require('../../hooks/useDimensions.js');
14
15
  require('react-dropzone');
@@ -16,6 +16,7 @@ require('../../provider/MenubarContext.js');
16
16
  require('../../provider/SnackbarProvider.js');
17
17
  var useMenubar = require('../../provider/useMenubar.js');
18
18
  require('../../provider/CalendarProvider.js');
19
+ require('../../provider/ManagerContext.js');
19
20
 
20
21
  const { dropdown } = menubar.menubar();
21
22
  const Dropdown = ({ children, ...rest }) => {
@@ -15,6 +15,7 @@ require('../../provider/MenubarContext.js');
15
15
  require('../../provider/SnackbarProvider.js');
16
16
  var useMenubar = require('../../provider/useMenubar.js');
17
17
  require('../../provider/CalendarProvider.js');
18
+ require('../../provider/ManagerContext.js');
18
19
  var menubar = require('../../styles/menubar.js');
19
20
  var Button = require('../Button.js');
20
21
 
@@ -15,6 +15,7 @@ require('../../provider/MenubarContext.js');
15
15
  require('../../provider/SnackbarProvider.js');
16
16
  var useMenubar = require('../../provider/useMenubar.js');
17
17
  require('../../provider/CalendarProvider.js');
18
+ require('../../provider/ManagerContext.js');
18
19
  var menubar = require('../../styles/menubar.js');
19
20
  var IconControlSubItem = require('./IconControlSubItem.js');
20
21
  var ItemLink = require('./ItemLink.js');
@@ -9,6 +9,7 @@ require('react');
9
9
  require('../../provider/MenubarContext.js');
10
10
  require('../../provider/SnackbarProvider.js');
11
11
  require('../../provider/CalendarProvider.js');
12
+ require('../../provider/ManagerContext.js');
12
13
  require('../Popover/Context.js');
13
14
  var useDimensions = require('../../hooks/useDimensions.js');
14
15
  require('react-dropzone');
@@ -6,6 +6,7 @@ require('../../provider/SnackbarProvider.js');
6
6
  require('../../provider/MenubarContext.js');
7
7
  require('react');
8
8
  require('../../provider/CalendarProvider.js');
9
+ require('../../provider/ManagerContext.js');
9
10
 
10
11
  const Root = ({ children }) => {
11
12
  return /* @__PURE__ */ jsxRuntime.jsx(MenubarProvider.MenubarProvider, { children });
@@ -17,6 +17,7 @@ require('../../provider/MenubarContext.js');
17
17
  require('../../provider/SnackbarProvider.js');
18
18
  var useMenubar = require('../../provider/useMenubar.js');
19
19
  require('../../provider/CalendarProvider.js');
20
+ require('../../provider/ManagerContext.js');
20
21
 
21
22
  const Search = (props) => {
22
23
  const [show] = useMenubar.useMenubar();
@@ -16,6 +16,7 @@ require('../../provider/MenubarContext.js');
16
16
  require('../../provider/SnackbarProvider.js');
17
17
  var useMenubar = require('../../provider/useMenubar.js');
18
18
  require('../../provider/CalendarProvider.js');
19
+ require('../../provider/ManagerContext.js');
19
20
 
20
21
  const { container } = menubar.subItem();
21
22
  const SubItem = ({
@@ -8,6 +8,7 @@ require('react');
8
8
  require('../../provider/MenubarContext.js');
9
9
  require('../../provider/SnackbarProvider.js');
10
10
  require('../../provider/CalendarProvider.js');
11
+ require('../../provider/ManagerContext.js');
11
12
  var Context = require('./Context.js');
12
13
  require('react-dropzone');
13
14
  require('uuid');
@@ -9,6 +9,7 @@ require('react-stately');
9
9
  require('../../provider/MenubarContext.js');
10
10
  require('../../provider/SnackbarProvider.js');
11
11
  require('../../provider/CalendarProvider.js');
12
+ require('../../provider/ManagerContext.js');
12
13
  var Context = require('../Popover/Context.js');
13
14
  require('react-dropzone');
14
15
  require('uuid');
@@ -9,6 +9,7 @@ require('react-stately');
9
9
  require('../../provider/MenubarContext.js');
10
10
  require('../../provider/SnackbarProvider.js');
11
11
  require('../../provider/CalendarProvider.js');
12
+ require('../../provider/ManagerContext.js');
12
13
  require('../Popover/Context.js');
13
14
  require('react-dropzone');
14
15
  require('uuid');
@@ -9,6 +9,7 @@ require('react-stately');
9
9
  require('../../provider/MenubarContext.js');
10
10
  require('../../provider/SnackbarProvider.js');
11
11
  require('../../provider/CalendarProvider.js');
12
+ require('../../provider/ManagerContext.js');
12
13
  require('../Popover/Context.js');
13
14
  require('react-dropzone');
14
15
  require('uuid');
@@ -9,6 +9,7 @@ require('react-stately');
9
9
  require('../../provider/MenubarContext.js');
10
10
  require('../../provider/SnackbarProvider.js');
11
11
  require('../../provider/CalendarProvider.js');
12
+ require('../../provider/ManagerContext.js');
12
13
  var Context = require('../Popover/Context.js');
13
14
  require('react-dropzone');
14
15
  require('uuid');
@@ -8,6 +8,7 @@ require('react');
8
8
  require('../../provider/MenubarContext.js');
9
9
  require('../../provider/SnackbarProvider.js');
10
10
  require('../../provider/CalendarProvider.js');
11
+ require('../../provider/ManagerContext.js');
11
12
  require('../Popover/Context.js');
12
13
  require('react-dropzone');
13
14
  require('uuid');
@@ -10,6 +10,7 @@ var react = require('../utils/react.js');
10
10
  require('../provider/MenubarContext.js');
11
11
  require('../provider/SnackbarProvider.js');
12
12
  require('../provider/CalendarProvider.js');
13
+ require('../provider/ManagerContext.js');
13
14
  require('./Popover/Context.js');
14
15
  require('react-dropzone');
15
16
  require('uuid');
@@ -1,21 +1,15 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
- var tailwindVariants = require('tailwind-variants');
5
4
  var reactDom = require('react-dom');
6
5
  var Upload = require('./Upload.js');
7
6
  var Button = require('../Button.js');
8
7
  var io = require('react-icons/io');
8
+ var clsx = require('clsx');
9
+ var io5 = require('react-icons/io5');
10
+ var cortexCore = require('@tecsinapse/cortex-core');
11
+ var useManagerHelpers = require('../../hooks/useManagerHelpers.js');
9
12
 
10
- const foldermodal = tailwindVariants.tv({
11
- base: "fixed rounded-micro p-kilo bg-white shadow-xl flex transition z-modal",
12
- variants: {
13
- open: {
14
- true: "scale-100 visible",
15
- false: "invisible"
16
- }
17
- }
18
- });
19
13
  const Manager = ({
20
14
  open,
21
15
  files,
@@ -23,36 +17,60 @@ const Manager = ({
23
17
  uploadProgressText = "Upload(s) in progress",
24
18
  onClose
25
19
  }) => {
20
+ const { min, setMin, regularFiles, folderFiles } = useManagerHelpers.useManagerHelpers({
21
+ files
22
+ });
26
23
  return reactDom.createPortal(
27
24
  /* @__PURE__ */ jsxRuntime.jsx(
28
25
  "div",
29
26
  {
30
- className: foldermodal({
31
- className: "h-[350px] w-[400px] bg-white bottom-deca right-deca overflow-hidden",
27
+ className: cortexCore.manager({
28
+ className: "h-auto max-h-[350px] w-[450px] overflow-hidden",
32
29
  open
33
30
  }),
34
31
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col w-full h-full gap-mili items-center", children: [
35
32
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between w-full", children: [
36
- /* @__PURE__ */ jsxRuntime.jsx("div", {}),
37
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ml-mega", "data-testid": "upload-progress", children: uploadProgressText }),
38
33
  /* @__PURE__ */ jsxRuntime.jsx(
39
34
  Button.Button,
40
35
  {
41
- variants: { variant: "outline", size: "circle" },
36
+ variants: { variant: "text", size: "square" },
37
+ onClick: () => setMin((min2) => !min2),
38
+ children: min ? /* @__PURE__ */ jsxRuntime.jsx(io5.IoChevronUp, {}) : /* @__PURE__ */ jsxRuntime.jsx(io5.IoChevronDown, {})
39
+ }
40
+ ),
41
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { "data-testid": "upload-progress", children: uploadProgressText }),
42
+ /* @__PURE__ */ jsxRuntime.jsx(
43
+ Button.Button,
44
+ {
45
+ variants: { variant: "filled", size: "square" },
42
46
  onClick: onClose,
43
47
  children: /* @__PURE__ */ jsxRuntime.jsx(io.IoMdClose, {})
44
48
  }
45
49
  )
46
50
  ] }),
47
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col w-full overflow-scroll", children: files.map((file, index) => /* @__PURE__ */ jsxRuntime.jsx(
48
- Upload.File,
51
+ /* @__PURE__ */ jsxRuntime.jsxs(
52
+ "div",
49
53
  {
50
- file,
51
- index,
52
- onDelete
53
- },
54
- file.uid
55
- )) })
54
+ className: clsx.clsx("w-full h-auto max-h-[300px] gap-mili", {
55
+ hidden: min,
56
+ "flex flex-col": !min,
57
+ "pb-kilo overflow-scroll pr-deca": (files ?? []).length > 3
58
+ }),
59
+ children: [
60
+ regularFiles.length > 0 ? regularFiles.map((file, index) => /* @__PURE__ */ jsxRuntime.jsx(
61
+ Upload.File,
62
+ {
63
+ file,
64
+ index,
65
+ onDelete,
66
+ showDelete: false
67
+ },
68
+ file.uid
69
+ )) : null,
70
+ folderFiles.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(Upload.FolderList, { files: folderFiles }) : null
71
+ ]
72
+ }
73
+ )
56
74
  ] })
57
75
  }
58
76
  ),
@@ -21,8 +21,7 @@ const Modal = ({
21
21
  className: "flex flex-col bg-secondary-xlight rounded-mili min-w-[70vw] max-w-[95vh] max-h-[95vh] overflow-auto",
22
22
  children: [
23
23
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-center justify-between mb-deca", children: [
24
- /* @__PURE__ */ jsxRuntime.jsx("div", {}),
25
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-deca font-semibold", children: title }),
24
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-deca font-semibold ml-tera flex-1 text-center", children: title }),
26
25
  /* @__PURE__ */ jsxRuntime.jsx(
27
26
  "button",
28
27
  {
@@ -2,11 +2,38 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var cortexCore = require('@tecsinapse/cortex-core');
5
+ var React = require('react');
5
6
  var fa6 = require('react-icons/fa6');
6
7
  var md = require('react-icons/md');
7
8
  var ProgressBar = require('../ProgressBar/ProgressBar.js');
8
9
 
9
- const File = ({ file, index, onDelete }) => {
10
+ const recursiveCountFolderElements = (node) => {
11
+ let count = 0;
12
+ for (const key in node) {
13
+ count++;
14
+ count += recursiveCountFolderElements(node[key]);
15
+ }
16
+ return count;
17
+ };
18
+ const countFolderElements = (paths, root) => {
19
+ if (!paths.length) return 0;
20
+ const tree = {};
21
+ for (const path of paths) {
22
+ const parts = path.replace(root + "/", "").split("/").filter(Boolean);
23
+ let current = tree;
24
+ for (const part of parts) {
25
+ if (!current[part]) current[part] = {};
26
+ current = current[part];
27
+ }
28
+ }
29
+ return recursiveCountFolderElements(tree);
30
+ };
31
+ const File = ({
32
+ file,
33
+ index,
34
+ onDelete,
35
+ showDelete = true
36
+ }) => {
10
37
  function statusIntent(status) {
11
38
  switch (status) {
12
39
  case "success":
@@ -17,7 +44,7 @@ const File = ({ file, index, onDelete }) => {
17
44
  return "info";
18
45
  }
19
46
  }
20
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
47
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col w-full", children: [
21
48
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border rounded-t-mili shadow p-mili", children: [
22
49
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-centi", children: [
23
50
  file.file && file.file.type.startsWith("image/") ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -36,10 +63,10 @@ const File = ({ file, index, onDelete }) => {
36
63
  ] })
37
64
  ] })
38
65
  ] }),
39
- file.status === "success" && /* @__PURE__ */ jsxRuntime.jsx(
66
+ file.status === "success" && showDelete ? /* @__PURE__ */ jsxRuntime.jsx(
40
67
  "button",
41
68
  {
42
- onClick: () => onDelete(index),
69
+ onClick: () => onDelete?.(index),
43
70
  "data-testid": "remove-button",
44
71
  className: cortexCore.button({
45
72
  className: " bg-inherit border-2 border-primary-light text-primary-light",
@@ -47,7 +74,7 @@ const File = ({ file, index, onDelete }) => {
47
74
  }),
48
75
  children: /* @__PURE__ */ jsxRuntime.jsx(md.MdClose, { size: 15 })
49
76
  }
50
- )
77
+ ) : null
51
78
  ] }),
52
79
  /* @__PURE__ */ jsxRuntime.jsx(
53
80
  ProgressBar.ProgressBar,
@@ -58,5 +85,51 @@ const File = ({ file, index, onDelete }) => {
58
85
  )
59
86
  ] }, index);
60
87
  };
88
+ const Folder = ({ name, subItems }) => {
89
+ const size = countFolderElements(
90
+ subItems.map((it) => it.path),
91
+ name
92
+ );
93
+ const loading = React.useMemo(
94
+ () => subItems.some((it) => it.status === "uploading"),
95
+ [subItems]
96
+ );
97
+ const intent = React.useMemo(() => {
98
+ if (loading) return "info";
99
+ if ((subItems ?? []).some((item) => item.status === "error") && (subItems ?? []).some((item) => item.status === "success")) {
100
+ return "warning";
101
+ }
102
+ return "success";
103
+ }, [subItems]);
104
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col w-full", children: [
105
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-between border rounded-t-mili shadow p-mili", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-centi", children: [
106
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "border-2 text-kilo text-primary-medium w-tera h-tera flex items-center justify-center rounded-mili", children: /* @__PURE__ */ jsxRuntime.jsx(fa6.FaRegFolder, {}) }),
107
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-col", children: [
108
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold truncate max-w-[200px]", children: name }),
109
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-gray-500", children: [
110
+ size,
111
+ " ",
112
+ size > 1 ? "itens" : "item"
113
+ ] })
114
+ ] })
115
+ ] }) }),
116
+ /* @__PURE__ */ jsxRuntime.jsx(ProgressBar.ProgressBar, { intent, infinite: loading })
117
+ ] });
118
+ };
119
+ const FolderList = ({ files }) => {
120
+ const folders = React.useMemo(() => {
121
+ const segments = {};
122
+ files.forEach((file) => {
123
+ const path = file.file.relativePath.replace(/^\//, "");
124
+ const root = path.split("/")[0];
125
+ const current = Array.from(segments?.[root] ?? []);
126
+ segments[root] = [...current, { path, status: file.status }];
127
+ });
128
+ return segments;
129
+ }, [files]);
130
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: Object.entries(folders).map(([name, children], index) => /* @__PURE__ */ jsxRuntime.jsx(Folder, { name, subItems: children }, index)) });
131
+ };
61
132
 
62
133
  exports.File = File;
134
+ exports.Folder = Folder;
135
+ exports.FolderList = FolderList;
@@ -13,6 +13,7 @@ require('currency.js');
13
13
  require('../provider/MenubarContext.js');
14
14
  require('../provider/SnackbarProvider.js');
15
15
  var CalendarProvider = require('../provider/CalendarProvider.js');
16
+ require('../provider/ManagerContext.js');
16
17
 
17
18
  const useCalendarCell = ({ state, date: date$1 }) => {
18
19
  const { isTodayHighlited } = CalendarProvider.useCalendarContext();
@@ -4,6 +4,17 @@ var React = require('react');
4
4
  var reactDropzone = require('react-dropzone');
5
5
  var uuid = require('uuid');
6
6
  var types = require('../components/Uploader/types.js');
7
+ require('react/jsx-runtime');
8
+ require('@internationalized/date');
9
+ require('react-aria');
10
+ require('react-stately');
11
+ require('../components/Popover/Context.js');
12
+ require('@floating-ui/react');
13
+ require('currency.js');
14
+ require('../provider/MenubarContext.js');
15
+ require('../provider/SnackbarProvider.js');
16
+ require('../provider/CalendarProvider.js');
17
+ var ManagerContext = require('../provider/ManagerContext.js');
7
18
 
8
19
  const useFileUpload = ({
9
20
  accept = {},
@@ -12,16 +23,33 @@ const useFileUpload = ({
12
23
  maxSize,
13
24
  allowMultiple = true,
14
25
  preventDuplicates = false,
15
- onDuplicate
26
+ onDuplicate,
27
+ hasManager = true,
28
+ isFolder = false,
29
+ uploadProgressText
16
30
  }) => {
17
- const [files, setFiles] = React.useState([]);
31
+ const {
32
+ showManager,
33
+ files,
34
+ setFiles,
35
+ isOpen: isManagerOpen,
36
+ setIsOpen: setIsManagerOpen
37
+ } = ManagerContext.useManager();
18
38
  const [duplicates, setDuplicates] = React.useState([]);
19
39
  const [isOpen, setIsOpen] = React.useState(false);
20
- const [isManagerOpen, setIsManagerOpen] = React.useState(false);
21
40
  const onOpen = React.useCallback(() => setIsOpen(true), []);
22
41
  const onClose = React.useCallback(() => setIsOpen(false), []);
42
+ const handleRemoveFile = React.useCallback((index) => {
43
+ setFiles((prevFiles) => prevFiles.filter((_, i) => i !== index));
44
+ }, []);
45
+ const handleClearFiles = React.useCallback(() => {
46
+ setFiles([]);
47
+ }, []);
23
48
  const openManager = React.useCallback(() => setIsManagerOpen(true), []);
24
- const closeManager = React.useCallback(() => setIsManagerOpen(false), []);
49
+ const closeManager = React.useCallback(() => {
50
+ handleClearFiles();
51
+ setIsManagerOpen(false);
52
+ }, []);
25
53
  const updateFiles = React.useCallback(
26
54
  (prevFiles, newFiles) => {
27
55
  const current = /* @__PURE__ */ new Map();
@@ -31,8 +59,10 @@ const useFileUpload = ({
31
59
  []
32
60
  );
33
61
  const onDrop = async (acceptedFiles) => {
34
- openManager();
35
- onClose();
62
+ if (hasManager) {
63
+ openManager();
64
+ onClose();
65
+ }
36
66
  let toProcess = acceptedFiles;
37
67
  if (preventDuplicates) {
38
68
  const found = (acceptedFiles ?? []).filter(
@@ -50,7 +80,8 @@ const useFileUpload = ({
50
80
  const newFiles = toProcess.map((file) => ({
51
81
  file,
52
82
  status: onAccept ? types.FileStatus.UPLOADING : types.FileStatus.SUCCESS,
53
- uid: uuid.v4()
83
+ uid: uuid.v4(),
84
+ isFolder
54
85
  }));
55
86
  try {
56
87
  setFiles((prevFiles) => [...prevFiles, ...newFiles]);
@@ -66,6 +97,17 @@ const useFileUpload = ({
66
97
  setFiles((prevFiles) => updateFiles(prevFiles, updatedFiles));
67
98
  }
68
99
  };
100
+ React.useEffect(() => {
101
+ if (hasManager) {
102
+ showManager?.({
103
+ files,
104
+ onClose: closeManager,
105
+ onDelete: handleRemoveFile,
106
+ open: isManagerOpen,
107
+ uploadProgressText
108
+ });
109
+ }
110
+ }, [isManagerOpen, files, handleRemoveFile, closeManager]);
69
111
  const addMimeTypes = (key, acc) => {
70
112
  types.AcceptSpecificMap[key].forEach((mimeType) => {
71
113
  acc[mimeType] = [];
@@ -89,12 +131,6 @@ const useFileUpload = ({
89
131
  maxSize,
90
132
  onDropRejected: onFileRejected
91
133
  });
92
- const handleRemoveFile = React.useCallback((index) => {
93
- setFiles((prevFiles) => prevFiles.filter((_, i) => i !== index));
94
- }, []);
95
- const handleClearFiles = React.useCallback(() => {
96
- setFiles([]);
97
- }, []);
98
134
  const isFileLimitReached = !allowMultiple && files.length > 0;
99
135
  return {
100
136
  onOpen,
@@ -107,6 +143,7 @@ const useFileUpload = ({
107
143
  isFileLimitReached
108
144
  },
109
145
  open: isOpen,
146
+ openManager,
110
147
  closeManager,
111
148
  isManagerOpen,
112
149
  files,
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ const useManagerHelpers = ({
6
+ files
7
+ }) => {
8
+ const [min, setMin] = React.useState(false);
9
+ const folderFiles = React.useMemo(
10
+ () => files?.filter((file) => file.isFolder) ?? [],
11
+ [files]
12
+ );
13
+ const regularFiles = React.useMemo(
14
+ () => files?.filter((file) => !file.isFolder) ?? [],
15
+ [files]
16
+ );
17
+ return {
18
+ min,
19
+ setMin,
20
+ folderFiles,
21
+ regularFiles
22
+ };
23
+ };
24
+
25
+ exports.useManagerHelpers = useManagerHelpers;
package/dist/cjs/index.js CHANGED
@@ -67,6 +67,7 @@ var SnackbarProvider = require('./provider/SnackbarProvider.js');
67
67
  var MenubarContext = require('./provider/MenubarContext.js');
68
68
  var useMenubar = require('./provider/useMenubar.js');
69
69
  var CalendarProvider = require('./provider/CalendarProvider.js');
70
+ var ManagerContext = require('./provider/ManagerContext.js');
70
71
  var context = require('./components/Accordion/context.js');
71
72
  var masks = require('./components/Input/masks.js');
72
73
  var Root = require('./components/Uploader/Root.js');
@@ -156,6 +157,8 @@ exports.MenubarContext = MenubarContext.MenubarContext;
156
157
  exports.useMenubar = useMenubar.useMenubar;
157
158
  exports.CalendarProvider = CalendarProvider.CalendarProvider;
158
159
  exports.useCalendarContext = CalendarProvider.useCalendarContext;
160
+ exports.ManagerProvider = ManagerContext.ManagerProvider;
161
+ exports.useManager = ManagerContext.useManager;
159
162
  exports.Context = context.Context;
160
163
  exports.useAccordionContext = context.useAccordionContext;
161
164
  exports.BRLMask = masks.BRLMask;
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var Manager = require('../components/Uploader/Manager.js');
6
+
7
+ const ManagerContext = React.createContext(null);
8
+ const ManagerProvider = ({ children }) => {
9
+ const [props, setProps] = React.useState({});
10
+ const [files, setFiles] = React.useState([]);
11
+ const [isOpen, setIsOpen] = React.useState(false);
12
+ const showManager = (_props) => {
13
+ setProps(_props);
14
+ };
15
+ return /* @__PURE__ */ jsxRuntime.jsxs(
16
+ ManagerContext.Provider,
17
+ {
18
+ value: { showManager, files, setFiles, isOpen, setIsOpen },
19
+ children: [
20
+ children,
21
+ /* @__PURE__ */ jsxRuntime.jsx(Manager.Manager, { ...props })
22
+ ]
23
+ }
24
+ );
25
+ };
26
+ const useManager = () => {
27
+ const context = React.useContext(ManagerContext);
28
+ if (!context) {
29
+ throw new Error("useManager must be used within a ManagerProvider");
30
+ }
31
+ return context;
32
+ };
33
+
34
+ exports.ManagerProvider = ManagerProvider;
35
+ exports.useManager = useManager;