@appcorp/stellar-solutions-modules 0.1.52 → 0.1.53

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.
@@ -61,15 +61,14 @@ var utils_1 = require("../../lib/utils");
61
61
  var carousel_1 = require("./carousel");
62
62
  var button_1 = require("./button");
63
63
  var lucide_react_1 = require("lucide-react");
64
- var dropzone_1 = require("./shadcn-io/dropzone");
65
64
  var EnhancedDropzone = function (_a) {
66
65
  var id = _a.id, label = _a.label, info = _a.info, error = _a.error, accept = _a.accept, _b = _a.maxFiles, maxFiles = _b === void 0 ? 10 : _b, maxSize = _a.maxSize, minSize = _a.minSize, disabled = _a.disabled, _c = _a.value, value = _c === void 0 ? [] : _c, onChange = _a.onChange, onRemoveRemote = _a.onRemoveRemote, className = _a.className;
67
66
  // Local files selected by user
68
67
  var _d = (0, react_1.useState)([]), localFiles = _d[0], setLocalFiles = _d[1];
69
68
  // Track object URLs created for local files
70
69
  var localPreviewsRef = (0, react_1.useRef)(new Map());
71
- // Create object URLs for local files
72
- (0, react_1.useEffect)(function () {
70
+ // Create object URLs for local files synchronously to avoid loading state
71
+ var createObjectURLs = (0, react_1.useCallback)(function () {
73
72
  var map = localPreviewsRef.current;
74
73
  // Create URLs for new files
75
74
  localFiles.forEach(function (file) {
@@ -92,14 +91,19 @@ var EnhancedDropzone = function (_a) {
92
91
  map.delete(file);
93
92
  }
94
93
  });
95
- // Cleanup on unmount
94
+ }, [localFiles]);
95
+ // Run synchronously on every render to avoid "loading" flash
96
+ createObjectURLs();
97
+ // Cleanup on unmount
98
+ (0, react_1.useEffect)(function () {
99
+ var map = localPreviewsRef.current;
96
100
  return function () {
97
101
  Array.from(map.values()).forEach(function (url) {
98
102
  URL.revokeObjectURL(url);
99
103
  });
100
104
  map.clear();
101
105
  };
102
- }, [localFiles]);
106
+ }, []);
103
107
  var dropzoneOptions = {
104
108
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
105
109
  accept: (Array.isArray(accept) ? undefined : accept) || undefined,
@@ -137,9 +141,9 @@ var EnhancedDropzone = function (_a) {
137
141
  }); }), true);
138
142
  return (react_1.default.createElement("div", { className: (0, utils_1.cn)("w-full", className) },
139
143
  label && (react_1.default.createElement("label", { className: "mb-2 block text-sm font-medium" }, label)),
140
- react_1.default.createElement("div", __assign({}, getRootProps(), { className: (0, utils_1.cn)("relative w-full rounded-md border border-dashed p-6 text-center", isDragActive && "ring-2 ring-ring ring-offset-2", disabled && "opacity-60 pointer-events-none") }),
144
+ react_1.default.createElement("div", __assign({}, getRootProps(), { className: (0, utils_1.cn)("relative w-full rounded-md border border-dashed p-6 text-center min-h-[280px] flex items-center justify-center", isDragActive && "ring-2 ring-ring ring-offset-2", disabled && "opacity-60 pointer-events-none") }),
141
145
  react_1.default.createElement("input", __assign({}, getInputProps(), { id: id })),
142
- allPreviews.length > 0 ? (react_1.default.createElement("div", { className: "flex flex-col items-center" },
146
+ allPreviews.length > 0 ? (react_1.default.createElement("div", { className: "flex flex-col items-center w-full" },
143
147
  react_1.default.createElement("div", { className: "relative w-full max-w-md" },
144
148
  react_1.default.createElement(carousel_1.Carousel, { className: "w-full" },
145
149
  react_1.default.createElement(carousel_1.CarouselPrevious, { type: "button", onClick: function (e) { return e.stopPropagation(); }, onPointerDown: function (e) { return e.stopPropagation(); }, onMouseDown: function (e) { return e.stopPropagation(); } }),
@@ -163,7 +167,21 @@ var EnhancedDropzone = function (_a) {
163
167
  " image",
164
168
  allPreviews.length !== 1 ? "s" : "",
165
169
  " ",
166
- "selected"))) : (react_1.default.createElement(dropzone_1.DropzoneEmptyState, null))),
170
+ "selected"))) : (react_1.default.createElement("div", { className: "flex flex-col items-center justify-center gap-2" },
171
+ react_1.default.createElement("div", { className: "flex h-12 w-12 items-center justify-center rounded-lg bg-muted text-muted-foreground" },
172
+ react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "lucide lucide-image" },
173
+ react_1.default.createElement("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2" }),
174
+ react_1.default.createElement("circle", { cx: "9", cy: "9", r: "2" }),
175
+ react_1.default.createElement("path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21" }))),
176
+ react_1.default.createElement("div", { className: "space-y-1 text-center" },
177
+ react_1.default.createElement("p", { className: "font-medium text-sm" },
178
+ "Upload ",
179
+ maxFiles === 1 ? "an image" : "images"),
180
+ react_1.default.createElement("p", { className: "text-muted-foreground text-xs" }, "Drag and drop or click to browse"),
181
+ maxFiles > 1 && (react_1.default.createElement("p", { className: "text-muted-foreground text-xs" },
182
+ "Up to ",
183
+ maxFiles,
184
+ " files")))))),
167
185
  (error || info) && (react_1.default.createElement("div", { className: "mt-2" }, error ? (react_1.default.createElement("p", { className: "text-xs text-destructive" }, error)) : info ? (react_1.default.createElement("p", { className: "text-xs text-blue-600 dark:text-blue-400" }, info)) : null))));
168
186
  };
169
187
  exports.EnhancedDropzone = EnhancedDropzone;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appcorp/stellar-solutions-modules",
3
- "version": "0.1.52",
3
+ "version": "0.1.53",
4
4
  "scripts": {
5
5
  "automate": "./automate.sh",
6
6
  "build": "yarn clean && yarn build:ts && cp package.json lib && cp README.md lib && cp yarn.lock lib",