@sentroy-co/client-sdk 2.13.4 → 2.13.7
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.
- package/README.md +52 -0
- package/dist/react/MediaManager.d.ts.map +1 -1
- package/dist/react/MediaManager.js +10 -2
- package/dist/react/MediaManager.js.map +1 -1
- package/dist/react/crop/CropDialog.d.ts +1 -2
- package/dist/react/crop/CropDialog.d.ts.map +1 -1
- package/dist/react/crop/CropDialog.js +48 -159
- package/dist/react/crop/CropDialog.js.map +1 -1
- package/dist/react/crop/styles.css +802 -59
- package/dist/react/lib/Lightbox.d.ts +14 -5
- package/dist/react/lib/Lightbox.d.ts.map +1 -1
- package/dist/react/lib/Lightbox.js +203 -26
- package/dist/react/lib/Lightbox.js.map +1 -1
- package/package.json +2 -2
- package/src/react/MediaManager.tsx +36 -12
- package/src/react/crop/CropDialog.tsx +125 -361
- package/src/react/lib/Lightbox.tsx +369 -78
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
import type { Media } from "../../types";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* Image/video native render, audio HTML5 player, diğerleri "download"
|
|
5
|
-
* fallback. ESC kapat, ←/→ next/prev (caller index callback'i sağlar).
|
|
3
|
+
* Sentroy Lightbox — fullscreen single-media preview.
|
|
6
4
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* Tasarım hedefi: image viewer için "Photos.app" hissiyatı; viewport'a
|
|
6
|
+
* fit (resim ne kadar büyük/uzun olursa olsun ilk açılışta tamamı görünür),
|
|
7
|
+
* fare tekerleği veya butonlarla zoom, zoom>fit iken drag ile pan.
|
|
8
|
+
*
|
|
9
|
+
* Önceki sürüm sabit `max-h-[80vh]` ile portrait/long resimleri kırpıyor +
|
|
10
|
+
* caption şeridi viewport'u taşırıyordu. Yeni sürüm container size'ını
|
|
11
|
+
* ölçer, image natural size'ına göre `fitScale`'i hesaplar ve transform
|
|
12
|
+
* matrisi ile uygular — CSS `max-*` zincirlerine güvenmez.
|
|
13
|
+
*
|
|
14
|
+
* Klavye:
|
|
15
|
+
* Esc → close, ←/→ → prev/next, +/- → zoom, 0 → reset (fit), Space →
|
|
16
|
+
* 1× ↔ fit toggle.
|
|
9
17
|
*/
|
|
10
18
|
export interface LightboxProps {
|
|
11
19
|
media: Media;
|
|
12
20
|
onClose: () => void;
|
|
13
21
|
onPrev?: () => void;
|
|
14
22
|
onNext?: () => void;
|
|
23
|
+
/** Outer container override — default fixed inset-0 black backdrop. */
|
|
15
24
|
className?: string;
|
|
16
25
|
}
|
|
17
26
|
export declare function Lightbox({ media, onClose, onPrev, onNext, className, }: LightboxProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../../src/react/lib/Lightbox.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../../src/react/lib/Lightbox.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAIxC;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAA;IACZ,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAKD,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,SAAS,GACV,EAAE,aAAa,2CAuYf"}
|
|
@@ -5,42 +5,219 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const thumbnails_1 = require("../../thumbnails");
|
|
7
7
|
const utils_1 = require("./utils");
|
|
8
|
+
const MIN_SCALE = 0.05;
|
|
9
|
+
const MAX_SCALE = 8;
|
|
8
10
|
function Lightbox({ media, onClose, onPrev, onNext, className, }) {
|
|
11
|
+
const kind = (0, utils_1.detectKind)(media);
|
|
12
|
+
const url = kind === "image"
|
|
13
|
+
? (0, thumbnails_1.pickPresetThumbnailUrl)(media, "preview") ?? media.url ?? media.downloadUrl
|
|
14
|
+
: media.url ?? media.downloadUrl;
|
|
15
|
+
// Body scroll lock + key handlers — bu effect media değişse de aynı kalır.
|
|
16
|
+
const onCloseRef = (0, react_1.useRef)(onClose);
|
|
17
|
+
const onPrevRef = (0, react_1.useRef)(onPrev);
|
|
18
|
+
const onNextRef = (0, react_1.useRef)(onNext);
|
|
19
|
+
onCloseRef.current = onClose;
|
|
20
|
+
onPrevRef.current = onPrev;
|
|
21
|
+
onNextRef.current = onNext;
|
|
9
22
|
(0, react_1.useEffect)(() => {
|
|
10
|
-
const onKey = (e) => {
|
|
11
|
-
if (e.key === "Escape")
|
|
12
|
-
onClose();
|
|
13
|
-
if (e.key === "ArrowLeft" && onPrev)
|
|
14
|
-
onPrev();
|
|
15
|
-
if (e.key === "ArrowRight" && onNext)
|
|
16
|
-
onNext();
|
|
17
|
-
};
|
|
18
|
-
document.addEventListener("keydown", onKey);
|
|
19
23
|
document.body.style.overflow = "hidden";
|
|
20
24
|
return () => {
|
|
21
|
-
document.removeEventListener("keydown", onKey);
|
|
22
25
|
document.body.style.overflow = "";
|
|
23
26
|
};
|
|
24
|
-
}, [
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
}, []);
|
|
28
|
+
// ── Image-only zoom/pan state ──────────────────────────────────────────
|
|
29
|
+
const stageRef = (0, react_1.useRef)(null);
|
|
30
|
+
const imgRef = (0, react_1.useRef)(null);
|
|
31
|
+
const [natural, setNatural] = (0, react_1.useState)(null);
|
|
32
|
+
const [fitScale, setFitScale] = (0, react_1.useState)(1);
|
|
33
|
+
const [scale, setScale] = (0, react_1.useState)(1);
|
|
34
|
+
const [translate, setTranslate] = (0, react_1.useState)({ x: 0, y: 0 });
|
|
35
|
+
const dragStateRef = (0, react_1.useRef)(null);
|
|
36
|
+
const [isDragging, setIsDragging] = (0, react_1.useState)(false);
|
|
37
|
+
// Yeni media → state sıfırla (fit recompute imgLoad'da gelir)
|
|
38
|
+
(0, react_1.useEffect)(() => {
|
|
39
|
+
setNatural(null);
|
|
40
|
+
setFitScale(1);
|
|
41
|
+
setScale(1);
|
|
42
|
+
setTranslate({ x: 0, y: 0 });
|
|
43
|
+
}, [media.id]);
|
|
44
|
+
const recomputeFit = (0, react_1.useCallback)(() => {
|
|
45
|
+
const stage = stageRef.current;
|
|
46
|
+
if (!stage || !natural)
|
|
47
|
+
return;
|
|
48
|
+
// Stage'in viewport içindeki boyutu — padding/border yok varsayıyoruz.
|
|
49
|
+
const sw = stage.clientWidth;
|
|
50
|
+
const sh = stage.clientHeight;
|
|
51
|
+
if (sw <= 0 || sh <= 0)
|
|
52
|
+
return;
|
|
53
|
+
const fit = Math.min(sw / natural.w, sh / natural.h, 1);
|
|
54
|
+
setFitScale(fit);
|
|
55
|
+
setScale(fit);
|
|
56
|
+
setTranslate({ x: 0, y: 0 });
|
|
57
|
+
}, [natural]);
|
|
58
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
59
|
+
recomputeFit();
|
|
60
|
+
}, [recomputeFit]);
|
|
61
|
+
(0, react_1.useEffect)(() => {
|
|
62
|
+
const onResize = () => recomputeFit();
|
|
63
|
+
window.addEventListener("resize", onResize);
|
|
64
|
+
return () => window.removeEventListener("resize", onResize);
|
|
65
|
+
}, [recomputeFit]);
|
|
66
|
+
const handleImgLoad = (0, react_1.useCallback)((e) => {
|
|
67
|
+
const img = e.currentTarget;
|
|
68
|
+
setNatural({ w: img.naturalWidth, h: img.naturalHeight });
|
|
69
|
+
}, []);
|
|
70
|
+
// Zoom around a pivot (cursor or center). Pivot stage-relative coords.
|
|
71
|
+
const zoomAt = (0, react_1.useCallback)((nextScale, pivot) => {
|
|
72
|
+
const stage = stageRef.current;
|
|
73
|
+
if (!stage)
|
|
74
|
+
return;
|
|
75
|
+
const clamped = Math.max(MIN_SCALE, Math.min(MAX_SCALE, nextScale));
|
|
76
|
+
const rect = stage.getBoundingClientRect();
|
|
77
|
+
const cx = pivot?.x ?? rect.width / 2;
|
|
78
|
+
const cy = pivot?.y ?? rect.height / 2;
|
|
79
|
+
// Image origin relative to stage center (current translate accounted)
|
|
80
|
+
// p = ((c - center) - t) / s → world coords. Yeni translate:
|
|
81
|
+
// t' = (c - center) - p * s'
|
|
82
|
+
const ox = cx - rect.width / 2 - translate.x;
|
|
83
|
+
const oy = cy - rect.height / 2 - translate.y;
|
|
84
|
+
const ratio = clamped / scale;
|
|
85
|
+
const tx = cx - rect.width / 2 - ox * ratio;
|
|
86
|
+
const ty = cy - rect.height / 2 - oy * ratio;
|
|
87
|
+
setScale(clamped);
|
|
88
|
+
setTranslate({ x: tx, y: ty });
|
|
89
|
+
}, [scale, translate]);
|
|
90
|
+
const zoomBy = (0, react_1.useCallback)((factor, pivot) => zoomAt(scale * factor, pivot), [scale, zoomAt]);
|
|
91
|
+
const resetView = (0, react_1.useCallback)(() => {
|
|
92
|
+
setScale(fitScale);
|
|
93
|
+
setTranslate({ x: 0, y: 0 });
|
|
94
|
+
}, [fitScale]);
|
|
95
|
+
const toggle1x = (0, react_1.useCallback)(() => {
|
|
96
|
+
if (Math.abs(scale - 1) < 0.001) {
|
|
97
|
+
resetView();
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
setScale(1);
|
|
101
|
+
setTranslate({ x: 0, y: 0 });
|
|
102
|
+
}
|
|
103
|
+
}, [scale, resetView]);
|
|
104
|
+
// Wheel zoom (cursor-aware)
|
|
105
|
+
const handleWheel = (0, react_1.useCallback)((e) => {
|
|
106
|
+
if (kind !== "image")
|
|
107
|
+
return;
|
|
108
|
+
e.preventDefault();
|
|
109
|
+
const stage = stageRef.current;
|
|
110
|
+
if (!stage)
|
|
111
|
+
return;
|
|
112
|
+
const rect = stage.getBoundingClientRect();
|
|
113
|
+
const pivot = { x: e.clientX - rect.left, y: e.clientY - rect.top };
|
|
114
|
+
const factor = e.deltaY < 0 ? 1.12 : 1 / 1.12;
|
|
115
|
+
zoomBy(factor, pivot);
|
|
116
|
+
}, [kind, zoomBy]);
|
|
117
|
+
// Drag-to-pan
|
|
118
|
+
const onPointerDown = (0, react_1.useCallback)((e) => {
|
|
119
|
+
if (kind !== "image")
|
|
120
|
+
return;
|
|
121
|
+
// Sadece sol tıklama (button 0) veya touch
|
|
122
|
+
if (e.button !== 0 && e.pointerType === "mouse")
|
|
123
|
+
return;
|
|
124
|
+
dragStateRef.current = {
|
|
125
|
+
active: true,
|
|
126
|
+
startX: e.clientX,
|
|
127
|
+
startY: e.clientY,
|
|
128
|
+
baseX: translate.x,
|
|
129
|
+
baseY: translate.y,
|
|
130
|
+
};
|
|
131
|
+
setIsDragging(true);
|
|
132
|
+
e.target.setPointerCapture?.(e.pointerId);
|
|
133
|
+
}, [kind, translate]);
|
|
134
|
+
const onPointerMove = (0, react_1.useCallback)((e) => {
|
|
135
|
+
const ds = dragStateRef.current;
|
|
136
|
+
if (!ds?.active)
|
|
137
|
+
return;
|
|
138
|
+
e.preventDefault();
|
|
139
|
+
const dx = e.clientX - ds.startX;
|
|
140
|
+
const dy = e.clientY - ds.startY;
|
|
141
|
+
setTranslate({ x: ds.baseX + dx, y: ds.baseY + dy });
|
|
142
|
+
}, []);
|
|
143
|
+
const endDrag = (0, react_1.useCallback)(() => {
|
|
144
|
+
if (dragStateRef.current?.active) {
|
|
145
|
+
dragStateRef.current.active = false;
|
|
146
|
+
setIsDragging(false);
|
|
147
|
+
}
|
|
148
|
+
}, []);
|
|
149
|
+
// Klavye
|
|
150
|
+
(0, react_1.useEffect)(() => {
|
|
151
|
+
const onKey = (e) => {
|
|
152
|
+
if (e.target instanceof HTMLElement &&
|
|
153
|
+
(e.target.tagName === "INPUT" || e.target.tagName === "TEXTAREA")) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (e.key === "Escape") {
|
|
157
|
+
e.preventDefault();
|
|
158
|
+
onCloseRef.current();
|
|
159
|
+
}
|
|
160
|
+
else if (e.key === "ArrowLeft" && onPrevRef.current) {
|
|
161
|
+
e.preventDefault();
|
|
162
|
+
onPrevRef.current();
|
|
163
|
+
}
|
|
164
|
+
else if (e.key === "ArrowRight" && onNextRef.current) {
|
|
165
|
+
e.preventDefault();
|
|
166
|
+
onNextRef.current();
|
|
167
|
+
}
|
|
168
|
+
else if (e.key === "+" || e.key === "=") {
|
|
169
|
+
e.preventDefault();
|
|
170
|
+
zoomBy(1.2);
|
|
171
|
+
}
|
|
172
|
+
else if (e.key === "-" || e.key === "_") {
|
|
173
|
+
e.preventDefault();
|
|
174
|
+
zoomBy(1 / 1.2);
|
|
175
|
+
}
|
|
176
|
+
else if (e.key === "0") {
|
|
177
|
+
e.preventDefault();
|
|
178
|
+
resetView();
|
|
179
|
+
}
|
|
180
|
+
else if (e.key === " ") {
|
|
181
|
+
e.preventDefault();
|
|
182
|
+
toggle1x();
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
document.addEventListener("keydown", onKey);
|
|
186
|
+
return () => document.removeEventListener("keydown", onKey);
|
|
187
|
+
}, [zoomBy, resetView, toggle1x]);
|
|
188
|
+
const canPan = kind === "image" && scale > fitScale + 0.001;
|
|
32
189
|
return ((0, jsx_runtime_1.jsxs)("div", { role: "dialog", "aria-modal": "true", onClick: (e) => {
|
|
33
190
|
if (e.target === e.currentTarget)
|
|
34
191
|
onClose();
|
|
35
192
|
}, className: className ||
|
|
36
|
-
"fixed inset-0 z-50 flex items-center justify-
|
|
37
|
-
e.
|
|
38
|
-
|
|
39
|
-
},
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
193
|
+
"fixed inset-0 z-50 flex flex-col bg-black/95 backdrop-blur-sm", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between gap-3 border-b border-white/10 bg-black/40 px-4 py-2.5", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex min-w-0 items-center gap-3 text-xs text-white/70", children: [(0, jsx_runtime_1.jsx)("span", { className: "font-mono truncate max-w-md", children: media.fileName }), media.size ? ((0, jsx_runtime_1.jsx)("span", { className: "text-white/40", children: "\u00B7" })) : null, media.size ? (0, jsx_runtime_1.jsx)("span", { children: (0, utils_1.formatBytes)(media.size) }) : null, media.mimeType ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { className: "text-white/40", children: "\u00B7" }), (0, jsx_runtime_1.jsx)("span", { className: "font-mono text-white/40", children: media.mimeType })] })) : null] }), (0, jsx_runtime_1.jsx)("button", { type: "button", onClick: onClose, "aria-label": "Close", className: "rounded-full bg-white/10 p-1.5 text-white transition-colors hover:bg-white/20", children: (0, jsx_runtime_1.jsx)("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: (0, jsx_runtime_1.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) }) })] }), (0, jsx_runtime_1.jsxs)("div", { ref: stageRef, onClick: (e) => {
|
|
194
|
+
if (e.target === e.currentTarget)
|
|
195
|
+
onClose();
|
|
196
|
+
}, onWheel: handleWheel, onPointerDown: onPointerDown, onPointerMove: onPointerMove, onPointerUp: endDrag, onPointerLeave: endDrag, className: "relative flex flex-1 min-h-0 items-center justify-center overflow-hidden select-none", style: {
|
|
197
|
+
cursor: kind === "image"
|
|
198
|
+
? isDragging
|
|
199
|
+
? "grabbing"
|
|
200
|
+
: canPan
|
|
201
|
+
? "grab"
|
|
202
|
+
: "default"
|
|
203
|
+
: "default",
|
|
204
|
+
}, children: [kind === "image" && url && (
|
|
43
205
|
// eslint-disable-next-line @next/next/no-img-element
|
|
44
|
-
(0, jsx_runtime_1.jsx)("img", { src: url, alt: media.alt ?? media.fileName,
|
|
206
|
+
(0, jsx_runtime_1.jsx)("img", { ref: imgRef, src: url, alt: media.alt ?? media.fileName, draggable: false, onLoad: handleImgLoad, onDoubleClick: toggle1x, className: "origin-center select-none", style: {
|
|
207
|
+
transform: `translate(${translate.x}px, ${translate.y}px) scale(${scale})`,
|
|
208
|
+
transition: isDragging ? "none" : "transform 0.18s ease-out",
|
|
209
|
+
maxWidth: "none",
|
|
210
|
+
maxHeight: "none",
|
|
211
|
+
willChange: "transform",
|
|
212
|
+
} })), kind === "video" && url && ((0, jsx_runtime_1.jsx)("video", { src: url, controls: true, autoPlay: true, className: "max-h-full max-w-full rounded-lg shadow-2xl" })), kind === "audio" && url && ((0, jsx_runtime_1.jsxs)("div", { className: "flex w-full max-w-md flex-col gap-3 rounded-lg bg-white/10 p-6 text-white", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-center text-sm font-medium", children: media.fileName }), (0, jsx_runtime_1.jsx)("audio", { src: url, controls: true, className: "w-full" })] })), kind !== "image" && kind !== "video" && kind !== "audio" && ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center gap-3 rounded-lg bg-white/10 p-8 text-white", children: [(0, jsx_runtime_1.jsxs)("svg", { width: "48", height: "48", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: [(0, jsx_runtime_1.jsx)("path", { d: "M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z" }), (0, jsx_runtime_1.jsx)("path", { d: "M14 2v6h6" })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-sm font-medium", children: media.fileName }), (0, jsx_runtime_1.jsx)("a", { href: url, download: media.fileName, target: "_blank", rel: "noreferrer", className: "rounded-md bg-white px-4 py-2 text-xs font-semibold text-black hover:bg-white/90", children: "Download" })] })), onPrev && ((0, jsx_runtime_1.jsx)("button", { type: "button", onClick: (e) => {
|
|
213
|
+
e.stopPropagation();
|
|
214
|
+
onPrev();
|
|
215
|
+
}, "aria-label": "Previous", className: "absolute left-4 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white transition-colors hover:bg-white/20", children: (0, jsx_runtime_1.jsx)("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: (0, jsx_runtime_1.jsx)("path", { d: "M15 18l-6-6 6-6" }) }) })), onNext && ((0, jsx_runtime_1.jsx)("button", { type: "button", onClick: (e) => {
|
|
216
|
+
e.stopPropagation();
|
|
217
|
+
onNext();
|
|
218
|
+
}, "aria-label": "Next", className: "absolute right-4 top-1/2 -translate-y-1/2 rounded-full bg-white/10 p-3 text-white transition-colors hover:bg-white/20", children: (0, jsx_runtime_1.jsx)("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: (0, jsx_runtime_1.jsx)("path", { d: "M9 6l6 6-6 6" }) }) }))] }), kind === "image" && ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-center gap-3 border-t border-white/10 bg-black/40 px-4 py-2.5", children: [(0, jsx_runtime_1.jsx)(ToolbarBtn, { onClick: () => zoomBy(1 / 1.2), title: "Zoom out (\u2212)", children: (0, jsx_runtime_1.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", width: "16", height: "16", children: [(0, jsx_runtime_1.jsx)("circle", { cx: "11", cy: "11", r: "7" }), (0, jsx_runtime_1.jsx)("path", { d: "M8 11h6M21 21l-4.3-4.3" })] }) }), (0, jsx_runtime_1.jsxs)("span", { className: "font-mono text-[11px] text-white/60 min-w-[3.5rem] text-center", children: [Math.round(scale * 100), "%"] }), (0, jsx_runtime_1.jsx)(ToolbarBtn, { onClick: () => zoomBy(1.2), title: "Zoom in (+)", children: (0, jsx_runtime_1.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", width: "16", height: "16", children: [(0, jsx_runtime_1.jsx)("circle", { cx: "11", cy: "11", r: "7" }), (0, jsx_runtime_1.jsx)("path", { d: "M8 11h6M11 8v6M21 21l-4.3-4.3" })] }) }), (0, jsx_runtime_1.jsx)("span", { className: "mx-2 h-5 w-px bg-white/15" }), (0, jsx_runtime_1.jsx)(ToolbarBtn, { onClick: resetView, title: "Fit (0)", children: (0, jsx_runtime_1.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", width: "16", height: "16", children: (0, jsx_runtime_1.jsx)("path", { d: "M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5" }) }) }), (0, jsx_runtime_1.jsx)(ToolbarBtn, { onClick: toggle1x, title: "100% (Space)", children: (0, jsx_runtime_1.jsx)("span", { className: "font-mono text-[11px] font-medium", children: "1:1" }) })] }))] }));
|
|
219
|
+
}
|
|
220
|
+
function ToolbarBtn({ children, onClick, title, }) {
|
|
221
|
+
return ((0, jsx_runtime_1.jsx)("button", { type: "button", onClick: onClick, title: title, "aria-label": title, className: "inline-flex size-8 items-center justify-center rounded-md text-white/80 transition-colors hover:bg-white/10 hover:text-white", children: children }));
|
|
45
222
|
}
|
|
46
223
|
//# sourceMappingURL=Lightbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Lightbox.js","sourceRoot":"","sources":["../../../src/react/lib/Lightbox.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Lightbox.js","sourceRoot":"","sources":["../../../src/react/lib/Lightbox.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sentroy-co/client-sdk",
|
|
3
|
-
"version": "2.13.
|
|
3
|
+
"version": "2.13.7",
|
|
4
4
|
"description": "TypeScript SDK + CLI for the Sentroy platform — mail, storage, env vault + React components.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -101,6 +101,6 @@
|
|
|
101
101
|
},
|
|
102
102
|
"dependencies": {
|
|
103
103
|
"motion": "^12.38.0",
|
|
104
|
-
"react-
|
|
104
|
+
"react-mobile-cropper": "^0.10.0"
|
|
105
105
|
}
|
|
106
106
|
}
|
|
@@ -323,7 +323,10 @@ export function MediaManager(props: MediaManagerProps) {
|
|
|
323
323
|
return (
|
|
324
324
|
<div
|
|
325
325
|
className={cn(
|
|
326
|
-
|
|
326
|
+
// `relative` — drop overlay (`absolute inset-0`) için positioning
|
|
327
|
+
// context. Eskiden eksikti, drag-and-drop görsel feedback hiç
|
|
328
|
+
// görünmüyordu.
|
|
329
|
+
"relative flex flex-col gap-3 rounded-xl border bg-background text-foreground",
|
|
327
330
|
className,
|
|
328
331
|
cls.root,
|
|
329
332
|
)}
|
|
@@ -414,11 +417,11 @@ export function MediaManager(props: MediaManagerProps) {
|
|
|
414
417
|
</div>
|
|
415
418
|
|
|
416
419
|
{/* Grid + details */}
|
|
417
|
-
<div className="flex min-h-[280px] flex-1">
|
|
420
|
+
<div className="flex min-h-[280px] flex-1 min-h-0">
|
|
418
421
|
<div className="flex-1 overflow-y-auto p-3">
|
|
419
422
|
{loading && (
|
|
420
|
-
<div className="grid gap-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5">
|
|
421
|
-
{Array.from({ length:
|
|
423
|
+
<div className="grid auto-rows-max gap-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5">
|
|
424
|
+
{Array.from({ length: 16 }).map((_, i) => (
|
|
422
425
|
<div
|
|
423
426
|
key={i}
|
|
424
427
|
className="h-28 animate-pulse rounded-md bg-muted/50"
|
|
@@ -432,20 +435,41 @@ export function MediaManager(props: MediaManagerProps) {
|
|
|
432
435
|
</div>
|
|
433
436
|
)}
|
|
434
437
|
{!loading && !error && visibleItems.length === 0 && (
|
|
438
|
+
// Empty state — `h-full justify-center` dialog'un ortasında
|
|
439
|
+
// "yükleme barı" hissi veriyordu. Top-align + büyük drop
|
|
440
|
+
// zone callout daha doğal: "buraya sürükle veya seç".
|
|
435
441
|
<div
|
|
436
442
|
className={cn(
|
|
437
|
-
"flex
|
|
443
|
+
"flex flex-col items-center gap-3 rounded-lg border-2 border-dashed border-border/60 px-6 py-12 text-center text-sm text-muted-foreground",
|
|
438
444
|
cls.empty,
|
|
439
445
|
)}
|
|
440
446
|
>
|
|
441
|
-
<
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
447
|
+
<svg
|
|
448
|
+
viewBox="0 0 24 24"
|
|
449
|
+
fill="none"
|
|
450
|
+
stroke="currentColor"
|
|
451
|
+
strokeWidth="1.5"
|
|
452
|
+
className="size-10 text-muted-foreground/40"
|
|
453
|
+
aria-hidden="true"
|
|
446
454
|
>
|
|
447
|
-
|
|
448
|
-
|
|
455
|
+
<path d="M12 4v12m0 0l-4-4m4 4l4-4" />
|
|
456
|
+
<path d="M4 16v2a2 2 0 002 2h12a2 2 0 002-2v-2" />
|
|
457
|
+
</svg>
|
|
458
|
+
<div className="flex flex-col gap-1">
|
|
459
|
+
<span className="text-foreground font-medium">
|
|
460
|
+
Drop files here
|
|
461
|
+
</span>
|
|
462
|
+
<span className="text-xs">
|
|
463
|
+
or{" "}
|
|
464
|
+
<button
|
|
465
|
+
type="button"
|
|
466
|
+
onClick={() => fileInputRef.current?.click()}
|
|
467
|
+
className="font-medium text-foreground underline-offset-4 hover:underline"
|
|
468
|
+
>
|
|
469
|
+
browse from your computer
|
|
470
|
+
</button>
|
|
471
|
+
</span>
|
|
472
|
+
</div>
|
|
449
473
|
</div>
|
|
450
474
|
)}
|
|
451
475
|
{!loading && !error && visibleItems.length > 0 && (
|