@revikornmann/muka-ui 0.27.2 → 0.28.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.
- package/dist/cjs/components/Avatar/Avatar.css +30 -7
- package/dist/cjs/components/Avatar/Avatar.js +4 -1
- package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
- package/dist/cjs/components/DataPieChart/DataPieChart.css +4 -1
- package/dist/cjs/components/DataPieChart/DataPieChart.js +1 -1
- package/dist/cjs/components/DataPieChart/DataPieChart.js.map +1 -1
- package/dist/cjs/components/Dialog/Dialog.css +3 -0
- package/dist/cjs/components/Dialog/Dialog.js +66 -3
- package/dist/cjs/components/Dialog/Dialog.js.map +1 -1
- package/dist/cjs/components/Input/Input.css +21 -0
- package/dist/cjs/components/MediaViewer/MediaViewer.css +180 -0
- package/dist/cjs/components/MediaViewer/MediaViewer.js +271 -0
- package/dist/cjs/components/MediaViewer/MediaViewer.js.map +1 -0
- package/dist/cjs/components/MediaViewer/index.js +6 -0
- package/dist/cjs/components/MediaViewer/index.js.map +1 -0
- package/dist/cjs/components/MediaViewer/mediaViewerGestures.js +65 -0
- package/dist/cjs/components/MediaViewer/mediaViewerGestures.js.map +1 -0
- package/dist/cjs/components/Thumbnail/Thumbnail.css +11 -0
- package/dist/cjs/components/Thumbnail/Thumbnail.js +6 -2
- package/dist/cjs/components/Thumbnail/Thumbnail.js.map +1 -1
- package/dist/cjs/components/index.js +3 -1
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/esm/components/Avatar/Avatar.css +30 -7
- package/dist/esm/components/Avatar/Avatar.js +4 -1
- package/dist/esm/components/Avatar/Avatar.js.map +1 -1
- package/dist/esm/components/DataPieChart/DataPieChart.css +4 -1
- package/dist/esm/components/DataPieChart/DataPieChart.js +1 -1
- package/dist/esm/components/DataPieChart/DataPieChart.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.css +3 -0
- package/dist/esm/components/Dialog/Dialog.js +66 -3
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/Input/Input.css +21 -0
- package/dist/esm/components/MediaViewer/MediaViewer.css +180 -0
- package/dist/esm/components/MediaViewer/MediaViewer.js +267 -0
- package/dist/esm/components/MediaViewer/MediaViewer.js.map +1 -0
- package/dist/esm/components/MediaViewer/index.js +2 -0
- package/dist/esm/components/MediaViewer/index.js.map +1 -0
- package/dist/esm/components/MediaViewer/mediaViewerGestures.js +58 -0
- package/dist/esm/components/MediaViewer/mediaViewerGestures.js.map +1 -0
- package/dist/esm/components/Thumbnail/Thumbnail.css +11 -0
- package/dist/esm/components/Thumbnail/Thumbnail.js +6 -2
- package/dist/esm/components/Thumbnail/Thumbnail.js.map +1 -1
- package/dist/esm/components/index.js +1 -0
- package/dist/esm/components/index.js.map +1 -1
- package/dist/styles/base.css +2 -0
- package/dist/styles/components/Avatar.css +30 -7
- package/dist/styles/components/DataPieChart.css +4 -1
- package/dist/styles/components/Dialog.css +3 -0
- package/dist/styles/components/Input.css +21 -0
- package/dist/styles/components/MediaViewer.css +180 -0
- package/dist/styles/components/Thumbnail.css +11 -0
- package/dist/styles/index.css +554 -301
- package/dist/styles/muka-dark.css +554 -301
- package/dist/styles/muka-light.css +554 -301
- package/dist/styles/tokens-bouwplan-dark.css +8 -1
- package/dist/styles/tokens-bouwplan-light.css +8 -1
- package/dist/styles/tokens-fscl-dark.css +8 -1
- package/dist/styles/tokens-fscl-light.css +8 -1
- package/dist/styles/tokens-grip-dark.css +8 -1
- package/dist/styles/tokens-grip-light.css +8 -1
- package/dist/styles/tokens-muka-dark.css +8 -1
- package/dist/styles/tokens-muka-light.css +8 -1
- package/dist/styles/tokens-wireframe-dark.css +8 -1
- package/dist/styles/tokens-wireframe-light.css +8 -1
- package/dist/styles/wireframe-dark.css +554 -301
- package/dist/styles/wireframe-light.css +554 -301
- package/dist/types/components/Avatar/Avatar.d.ts +4 -1
- package/dist/types/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/types/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/types/components/MediaViewer/MediaViewer.d.ts +86 -0
- package/dist/types/components/MediaViewer/MediaViewer.d.ts.map +1 -0
- package/dist/types/components/MediaViewer/index.d.ts +2 -0
- package/dist/types/components/MediaViewer/index.d.ts.map +1 -0
- package/dist/types/components/MediaViewer/mediaViewerGestures.d.ts +35 -0
- package/dist/types/components/MediaViewer/mediaViewerGestures.d.ts.map +1 -0
- package/dist/types/components/Thumbnail/Thumbnail.d.ts +21 -0
- package/dist/types/components/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/types/components/index.d.ts +1 -0
- package/dist/types/components/index.d.ts.map +1 -1
- package/docs/consumers/brand.md +6 -2
- package/docs/consumers/setup-instructions.md +35 -3
- package/package.json +1 -1
- package/skills/setup-muka/SKILL.md +36 -3
- package/tokens/t4-components/avatar.json +33 -1
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
|
4
|
+
import { TopBar } from '../TopBar';
|
|
5
|
+
import { Button } from '../Button';
|
|
6
|
+
import { Icon } from '../Icon';
|
|
7
|
+
import { clampDragX, lockAxis, resolveDismiss, resolveSwipe, } from './mediaViewerGestures';
|
|
8
|
+
import './MediaViewer.css';
|
|
9
|
+
const defaultCounterLabel = (index, total) => `${index + 1} / ${total}`;
|
|
10
|
+
/** Fallback when `transitionend` does not fire (e.g. the element unmounted). */
|
|
11
|
+
const SETTLE_FALLBACK_MS = 400;
|
|
12
|
+
function prefersReducedMotion() {
|
|
13
|
+
return (typeof window !== 'undefined' &&
|
|
14
|
+
window.matchMedia?.('(prefers-reduced-motion: reduce)').matches === true);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* MediaViewer Component
|
|
18
|
+
*
|
|
19
|
+
* Full-screen viewer that shows a list of images one at a time.
|
|
20
|
+
*
|
|
21
|
+
* - **Touch:** swipe sideways to page; the image follows the finger and snaps
|
|
22
|
+
* to the next or previous image past a quarter of the width or on a flick.
|
|
23
|
+
* It doesn't move past the first or last image. Swipe down to close.
|
|
24
|
+
* - **Desktop:** previous/next buttons on hover or focus, and ← / →.
|
|
25
|
+
* - **Close:** the close button, Escape, or swiping down. A tap on the dark
|
|
26
|
+
* stage does not close it, so a mis-aimed tap can't swallow an action.
|
|
27
|
+
* - **Slots:** `caption`, `meta` (a `Badge`) and `actions` (buttons) render
|
|
28
|
+
* under the image for the current `index`.
|
|
29
|
+
* - **Pagination:** `onEndReached` fires near the end so more items can be
|
|
30
|
+
* appended; appending does not move the current image.
|
|
31
|
+
*
|
|
32
|
+
* The images either side of the current one are rendered (and so preloaded).
|
|
33
|
+
*
|
|
34
|
+
* @accessibility
|
|
35
|
+
* - Native modal `<dialog>`: focus is trapped and returns to the opener
|
|
36
|
+
* - The track is a carousel; each image is a labelled slide
|
|
37
|
+
* - The counter is announced in a polite live region
|
|
38
|
+
* - With reduced motion, images swap without the slide
|
|
39
|
+
*
|
|
40
|
+
* Tokens used: color-black-alpha-12, color-surface-level3,
|
|
41
|
+
* color-text-default-default, color-text-subtle-default, spacing-*,
|
|
42
|
+
* motion-duration-component, motion-easing-default, motion-easing-enter.
|
|
43
|
+
*/
|
|
44
|
+
export const MediaViewer = ({ open, items, index, onIndexChange, onClose, caption, meta, actions, onEndReached, endReachedThreshold = 3, counterLabel = defaultCounterLabel, closeLabel = 'Close', previousLabel = 'Previous', nextLabel = 'Next', 'aria-label': ariaLabel = 'Media viewer', className = '', }) => {
|
|
45
|
+
const dialogRef = useRef(null);
|
|
46
|
+
const stageRef = useRef(null);
|
|
47
|
+
const openerRef = useRef(null);
|
|
48
|
+
const total = items.length;
|
|
49
|
+
const hasPrevious = index > 0;
|
|
50
|
+
const hasNext = index < total - 1;
|
|
51
|
+
// Horizontal drag (px), vertical drag (px), and the slide shift (in slide
|
|
52
|
+
// widths) while a page change animates: -1 towards next, 1 towards previous.
|
|
53
|
+
const [dragX, setDragX] = useState(0);
|
|
54
|
+
const [dragY, setDragY] = useState(0);
|
|
55
|
+
const [dragging, setDragging] = useState(false);
|
|
56
|
+
const [shift, setShift] = useState(0);
|
|
57
|
+
const dragRef = useRef(null);
|
|
58
|
+
const pendingRef = useRef(null);
|
|
59
|
+
// ─── Open / close the native dialog ─────────────────
|
|
60
|
+
useLayoutEffect(() => {
|
|
61
|
+
const dialog = dialogRef.current;
|
|
62
|
+
if (!open || !dialog)
|
|
63
|
+
return;
|
|
64
|
+
const active = document.activeElement;
|
|
65
|
+
openerRef.current =
|
|
66
|
+
active instanceof HTMLElement && active !== document.body ? active : null;
|
|
67
|
+
if (!dialog.open)
|
|
68
|
+
dialog.showModal();
|
|
69
|
+
// A modal <dialog> does not stop the page behind it from scrolling.
|
|
70
|
+
const root = document.documentElement;
|
|
71
|
+
const previousOverflow = root.style.overflow;
|
|
72
|
+
root.style.overflow = 'hidden';
|
|
73
|
+
return () => {
|
|
74
|
+
root.style.overflow = previousOverflow;
|
|
75
|
+
if (dialog.open)
|
|
76
|
+
dialog.close();
|
|
77
|
+
const opener = openerRef.current;
|
|
78
|
+
openerRef.current = null;
|
|
79
|
+
if (opener?.isConnected)
|
|
80
|
+
opener.focus({ preventScroll: true });
|
|
81
|
+
};
|
|
82
|
+
}, [open]);
|
|
83
|
+
// Escape: the native `cancel` event. Keep the viewer controlled.
|
|
84
|
+
useEffect(() => {
|
|
85
|
+
const dialog = dialogRef.current;
|
|
86
|
+
if (!open || !dialog)
|
|
87
|
+
return;
|
|
88
|
+
const handleCancel = (e) => {
|
|
89
|
+
e.preventDefault();
|
|
90
|
+
onClose();
|
|
91
|
+
};
|
|
92
|
+
dialog.addEventListener('cancel', handleCancel);
|
|
93
|
+
return () => dialog.removeEventListener('cancel', handleCancel);
|
|
94
|
+
}, [open, onClose]);
|
|
95
|
+
// ─── Page changes ───────────────────────────────────
|
|
96
|
+
const commit = useCallback(() => {
|
|
97
|
+
const pending = pendingRef.current;
|
|
98
|
+
if (!pending)
|
|
99
|
+
return;
|
|
100
|
+
pendingRef.current = null;
|
|
101
|
+
window.clearTimeout(pending.timer);
|
|
102
|
+
setShift(0);
|
|
103
|
+
onIndexChange(pending.target);
|
|
104
|
+
}, [onIndexChange]);
|
|
105
|
+
/** Page by `direction` (1 = next, -1 = previous), animated unless reduced. */
|
|
106
|
+
const go = useCallback((direction) => {
|
|
107
|
+
if (pendingRef.current)
|
|
108
|
+
return;
|
|
109
|
+
const target = index + direction;
|
|
110
|
+
if (target < 0 || target >= total)
|
|
111
|
+
return;
|
|
112
|
+
if (prefersReducedMotion()) {
|
|
113
|
+
setDragX(0);
|
|
114
|
+
onIndexChange(target);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
setDragX(0);
|
|
118
|
+
setShift(-direction);
|
|
119
|
+
pendingRef.current = {
|
|
120
|
+
target,
|
|
121
|
+
timer: window.setTimeout(commit, SETTLE_FALLBACK_MS),
|
|
122
|
+
};
|
|
123
|
+
}, [index, total, onIndexChange, commit]);
|
|
124
|
+
// A new index from outside (or our own commit) cancels a pending animation.
|
|
125
|
+
useEffect(() => {
|
|
126
|
+
const pending = pendingRef.current;
|
|
127
|
+
if (pending && pending.target !== index) {
|
|
128
|
+
window.clearTimeout(pending.timer);
|
|
129
|
+
pendingRef.current = null;
|
|
130
|
+
}
|
|
131
|
+
setShift(0);
|
|
132
|
+
setDragX(0);
|
|
133
|
+
}, [index]);
|
|
134
|
+
useEffect(() => () => {
|
|
135
|
+
if (pendingRef.current)
|
|
136
|
+
window.clearTimeout(pendingRef.current.timer);
|
|
137
|
+
}, []);
|
|
138
|
+
// ─── Pagination ─────────────────────────────────────
|
|
139
|
+
const endReportedForRef = useRef(null);
|
|
140
|
+
useEffect(() => {
|
|
141
|
+
if (!open || !onEndReached || total === 0)
|
|
142
|
+
return;
|
|
143
|
+
if (total - 1 - index > endReachedThreshold)
|
|
144
|
+
return;
|
|
145
|
+
if (endReportedForRef.current === total)
|
|
146
|
+
return;
|
|
147
|
+
endReportedForRef.current = total;
|
|
148
|
+
onEndReached();
|
|
149
|
+
}, [open, index, total, endReachedThreshold, onEndReached]);
|
|
150
|
+
// ─── Keyboard ───────────────────────────────────────
|
|
151
|
+
const handleKeyDown = (e) => {
|
|
152
|
+
if (e.key === 'ArrowRight') {
|
|
153
|
+
e.preventDefault();
|
|
154
|
+
go(1);
|
|
155
|
+
}
|
|
156
|
+
else if (e.key === 'ArrowLeft') {
|
|
157
|
+
e.preventDefault();
|
|
158
|
+
go(-1);
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
// ─── Touch gestures ─────────────────────────────────
|
|
162
|
+
const handlePointerDown = (e) => {
|
|
163
|
+
// Desktop uses the buttons and arrow keys; a mouse drag would fight text
|
|
164
|
+
// selection and image dragging.
|
|
165
|
+
if (e.pointerType === 'mouse' || pendingRef.current)
|
|
166
|
+
return;
|
|
167
|
+
dragRef.current = {
|
|
168
|
+
pointerId: e.pointerId,
|
|
169
|
+
startX: e.clientX,
|
|
170
|
+
startY: e.clientY,
|
|
171
|
+
axis: null,
|
|
172
|
+
lastX: e.clientX,
|
|
173
|
+
lastY: e.clientY,
|
|
174
|
+
lastTime: e.timeStamp,
|
|
175
|
+
velocityX: 0,
|
|
176
|
+
velocityY: 0,
|
|
177
|
+
};
|
|
178
|
+
// Keep receiving moves when the finger leaves the stage. Capture throws
|
|
179
|
+
// when the pointer is already gone; the drag still works without it.
|
|
180
|
+
try {
|
|
181
|
+
e.currentTarget.setPointerCapture?.(e.pointerId);
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
// ignore
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
const handlePointerMove = (e) => {
|
|
188
|
+
const drag = dragRef.current;
|
|
189
|
+
if (!drag || drag.pointerId !== e.pointerId)
|
|
190
|
+
return;
|
|
191
|
+
const dt = e.timeStamp - drag.lastTime;
|
|
192
|
+
if (dt > 0) {
|
|
193
|
+
drag.velocityX = (e.clientX - drag.lastX) / dt;
|
|
194
|
+
drag.velocityY = (e.clientY - drag.lastY) / dt;
|
|
195
|
+
}
|
|
196
|
+
drag.lastX = e.clientX;
|
|
197
|
+
drag.lastY = e.clientY;
|
|
198
|
+
drag.lastTime = e.timeStamp;
|
|
199
|
+
const dx = e.clientX - drag.startX;
|
|
200
|
+
const dy = e.clientY - drag.startY;
|
|
201
|
+
if (!drag.axis) {
|
|
202
|
+
drag.axis = lockAxis(dx, dy);
|
|
203
|
+
if (!drag.axis)
|
|
204
|
+
return;
|
|
205
|
+
setDragging(true);
|
|
206
|
+
}
|
|
207
|
+
if (drag.axis === 'x') {
|
|
208
|
+
setDragX(clampDragX(dx, hasPrevious, hasNext));
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
setDragY(Math.max(0, dy));
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
const endDrag = (e, cancelled) => {
|
|
215
|
+
const drag = dragRef.current;
|
|
216
|
+
if (!drag || drag.pointerId !== e.pointerId)
|
|
217
|
+
return;
|
|
218
|
+
dragRef.current = null;
|
|
219
|
+
setDragging(false);
|
|
220
|
+
if (drag.axis === 'x') {
|
|
221
|
+
const dx = clampDragX(e.clientX - drag.startX, hasPrevious, hasNext);
|
|
222
|
+
const width = stageRef.current?.clientWidth ?? 0;
|
|
223
|
+
const direction = cancelled ? 0 : resolveSwipe(dx, drag.velocityX, width);
|
|
224
|
+
if (direction === 0) {
|
|
225
|
+
setDragX(0);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
go(direction);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else if (drag.axis === 'y') {
|
|
232
|
+
const dy = Math.max(0, e.clientY - drag.startY);
|
|
233
|
+
setDragY(0);
|
|
234
|
+
if (!cancelled && resolveDismiss(dy, drag.velocityY))
|
|
235
|
+
onClose();
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
if (!open)
|
|
239
|
+
return null;
|
|
240
|
+
const counter = total > 0 ? counterLabel(Math.min(index, total - 1), total) : '';
|
|
241
|
+
const hasFooter = Boolean(caption || meta || actions);
|
|
242
|
+
const classes = [
|
|
243
|
+
'muka-media-viewer',
|
|
244
|
+
dragging && 'muka-media-viewer--dragging',
|
|
245
|
+
className,
|
|
246
|
+
]
|
|
247
|
+
.filter(Boolean)
|
|
248
|
+
.join(' ');
|
|
249
|
+
// Fade the stage as it is dragged down, so the dismiss reads as "away".
|
|
250
|
+
const dismissProgress = Math.min(1, dragY / 400);
|
|
251
|
+
const slides = [];
|
|
252
|
+
for (const offset of [-1, 0, 1]) {
|
|
253
|
+
const itemIndex = index + offset;
|
|
254
|
+
const item = items[itemIndex];
|
|
255
|
+
if (!item)
|
|
256
|
+
continue;
|
|
257
|
+
slides.push(_jsx("div", { className: "muka-media-viewer__slide", role: "group", "aria-roledescription": "slide", "aria-label": counterLabel(itemIndex, total), "aria-hidden": offset !== 0, style: {
|
|
258
|
+
transform: `translate3d(calc(${(offset + shift) * 100}% + ${dragX}px), ${dragY}px, 0)`,
|
|
259
|
+
}, onTransitionEnd: offset !== 0 && shift !== 0 ? commit : undefined, children: _jsx("img", { className: "muka-media-viewer__image", src: item.src, alt: item.alt ?? '', draggable: false, decoding: "async" }) }, item.id ?? `index-${itemIndex}`));
|
|
260
|
+
}
|
|
261
|
+
return (
|
|
262
|
+
// Native <dialog> handles Escape (via `cancel`); arrow keys page.
|
|
263
|
+
_jsxs("dialog", { ref: dialogRef, className: classes, "aria-label": ariaLabel, onKeyDown: handleKeyDown, children: [_jsx(TopBar, { className: "muka-media-viewer__topbar", title: counter, trailing: _jsx(Button, { variant: "ghost", size: "md", iconOnly: true, "aria-label": closeLabel, onClick: onClose, children: _jsx(Icon, { name: "close", variant: "line" }) }) }), _jsx("span", { className: "muka-media-viewer__live", "aria-live": "polite", "aria-atomic": "true", children: counter }), _jsxs("div", { ref: stageRef, className: "muka-media-viewer__stage", role: "region", "aria-roledescription": "carousel", "aria-label": ariaLabel, style: dismissProgress > 0 ? { opacity: 1 - dismissProgress * 0.6 } : undefined, onPointerDown: handlePointerDown, onPointerMove: handlePointerMove, onPointerUp: (e) => endDrag(e, false), onPointerCancel: (e) => endDrag(e, true), children: [slides, hasPrevious && (_jsx("div", { className: "muka-media-viewer__nav muka-media-viewer__nav--previous", children: _jsx(Button, { variant: "secondary", size: "md", iconOnly: true, "aria-label": previousLabel, onClick: () => go(-1), children: _jsx(Icon, { name: "arrow-left-s", variant: "line" }) }) })), hasNext && (_jsx("div", { className: "muka-media-viewer__nav muka-media-viewer__nav--next", children: _jsx(Button, { variant: "secondary", size: "md", iconOnly: true, "aria-label": nextLabel, onClick: () => go(1), children: _jsx(Icon, { name: "arrow-right-s", variant: "line" }) }) }))] }), hasFooter && (_jsxs("div", { className: "muka-media-viewer__footer", children: [(caption || meta) && (_jsxs("div", { className: "muka-media-viewer__details", children: [caption && _jsx("div", { className: "muka-media-viewer__caption", children: caption }), meta && _jsx("div", { className: "muka-media-viewer__meta", children: meta })] })), actions && _jsx("div", { className: "muka-media-viewer__actions", children: actions })] }))] }));
|
|
264
|
+
};
|
|
265
|
+
MediaViewer.displayName = 'MediaViewer';
|
|
266
|
+
export default MediaViewer;
|
|
267
|
+
//# sourceMappingURL=MediaViewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaViewer.js","sourceRoot":"","sources":["../../../../components/MediaViewer/MediaViewer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../components/MediaViewer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA+C,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure gesture maths for `MediaViewer`, kept out of the component so the
|
|
3
|
+
* swipe and dismiss decisions are unit-testable without pointer events.
|
|
4
|
+
*/
|
|
5
|
+
/** Movement (px) before a drag commits to an axis. */
|
|
6
|
+
export const AXIS_LOCK_DISTANCE = 8;
|
|
7
|
+
/** Fraction of the stage width a slow horizontal drag must pass to page. */
|
|
8
|
+
export const SWIPE_DISTANCE_RATIO = 0.25;
|
|
9
|
+
/** Velocity (px/ms) that pages even on a short horizontal flick. */
|
|
10
|
+
export const SWIPE_VELOCITY = 0.5;
|
|
11
|
+
/** Minimum distance (px) a flick must travel to count. */
|
|
12
|
+
export const FLICK_MIN_DISTANCE = 20;
|
|
13
|
+
/** Downward distance (px) that dismisses on a slow drag. */
|
|
14
|
+
export const DISMISS_DISTANCE = 120;
|
|
15
|
+
/** Downward velocity (px/ms) that dismisses on a short flick. */
|
|
16
|
+
export const DISMISS_VELOCITY = 0.5;
|
|
17
|
+
/**
|
|
18
|
+
* Decide which axis a drag belongs to, or null while it is still within the
|
|
19
|
+
* lock distance. Horizontal wins ties so a diagonal flick still pages.
|
|
20
|
+
*/
|
|
21
|
+
export function lockAxis(dx, dy) {
|
|
22
|
+
if (Math.max(Math.abs(dx), Math.abs(dy)) < AXIS_LOCK_DISTANCE)
|
|
23
|
+
return null;
|
|
24
|
+
return Math.abs(dx) >= Math.abs(dy) ? 'x' : 'y';
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Clamp a horizontal drag so it cannot move past the first or last item:
|
|
28
|
+
* there is nothing to reveal there, so the image stays put (no rubber band).
|
|
29
|
+
*/
|
|
30
|
+
export function clampDragX(dx, hasPrevious, hasNext) {
|
|
31
|
+
if (dx > 0 && !hasPrevious)
|
|
32
|
+
return 0;
|
|
33
|
+
if (dx < 0 && !hasNext)
|
|
34
|
+
return 0;
|
|
35
|
+
return dx;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Where a released horizontal drag goes: `1` to the next item, `-1` to the
|
|
39
|
+
* previous one, `0` back to the current one. `dx` is already clamped.
|
|
40
|
+
*/
|
|
41
|
+
export function resolveSwipe(dx, velocityX, stageWidth) {
|
|
42
|
+
const far = stageWidth > 0 && Math.abs(dx) >= stageWidth * SWIPE_DISTANCE_RATIO;
|
|
43
|
+
const flick = Math.abs(velocityX) >= SWIPE_VELOCITY &&
|
|
44
|
+
Math.abs(dx) >= FLICK_MIN_DISTANCE &&
|
|
45
|
+
Math.sign(velocityX) === Math.sign(dx);
|
|
46
|
+
if (!far && !flick)
|
|
47
|
+
return 0;
|
|
48
|
+
return dx < 0 ? 1 : -1;
|
|
49
|
+
}
|
|
50
|
+
/** Whether a released downward drag dismisses the viewer. */
|
|
51
|
+
export function resolveDismiss(dy, velocityY) {
|
|
52
|
+
if (dy <= 0)
|
|
53
|
+
return false;
|
|
54
|
+
if (dy >= DISMISS_DISTANCE)
|
|
55
|
+
return true;
|
|
56
|
+
return velocityY >= DISMISS_VELOCITY && dy >= FLICK_MIN_DISTANCE;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=mediaViewerGestures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediaViewerGestures.js","sourceRoot":"","sources":["../../../../components/MediaViewer/mediaViewerGestures.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAEpC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAEzC,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAEpC,iEAAiE;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAIpC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAU,EAAE,EAAU;IAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,kBAAkB;QAAE,OAAO,IAAI,CAAC;IAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU,EAAE,WAAoB,EAAE,OAAgB;IAC3E,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW;QAAE,OAAO,CAAC,CAAC;IACrC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;IACjC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,EAAU,EAAE,SAAiB,EAAE,UAAkB;IAC5E,MAAM,GAAG,GAAG,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,GAAG,oBAAoB,CAAC;IAChF,MAAM,KAAK,GACT,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,cAAc;QACrC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,kBAAkB;QAClC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,cAAc,CAAC,EAAU,EAAE,SAAiB;IAC1D,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1B,IAAI,EAAE,IAAI,gBAAgB;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,SAAS,IAAI,gBAAgB,IAAI,EAAE,IAAI,kBAAkB,CAAC;AACnE,CAAC"}
|
|
@@ -33,6 +33,17 @@
|
|
|
33
33
|
height: 120px;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
/* Fluid: fill the parent's width; the shape sets the height via aspect-ratio. */
|
|
37
|
+
.muka-thumbnail--fluid {
|
|
38
|
+
width: 100%;
|
|
39
|
+
height: auto;
|
|
40
|
+
aspect-ratio: 1 / 1;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.muka-thumbnail--fluid.muka-thumbnail--4-3 {
|
|
44
|
+
aspect-ratio: 4 / 3;
|
|
45
|
+
}
|
|
46
|
+
|
|
36
47
|
.muka-thumbnail--ellipse .muka-thumbnail__frame {
|
|
37
48
|
border-radius: var(--border-radius-full);
|
|
38
49
|
}
|
|
@@ -19,12 +19,15 @@ import './Thumbnail.css';
|
|
|
19
19
|
* and clicking activates `onClick` (e.g. to enlarge in a dialog).
|
|
20
20
|
* - **removable** — a tertiary × button in the top-right corner calls
|
|
21
21
|
* `onRemove` to delete the photo.
|
|
22
|
+
* - **fluid** — fills its parent's width at the shape's aspect ratio, for
|
|
23
|
+
* responsive grids; **lazy** defers loading the image until it nears the
|
|
24
|
+
* viewport.
|
|
22
25
|
*
|
|
23
26
|
* Tokens used: border-radius-lg, color-black-alpha-3, dialog-color-backdrop,
|
|
24
27
|
* button-color-tertiary-*, alias-color-state-error-*, alert-color-error-accent,
|
|
25
28
|
* motion-duration-micro, motion-easing-enter.
|
|
26
29
|
*/
|
|
27
|
-
export const Thumbnail = forwardRef(({ src, alt = '', shape = '4:3', loading = false, progress = 0, processing = false, error = false, caption, errorReason, onRemove, onClick, removeLabel = 'Remove photo', viewLabel = 'View photo', className = '', ...props }, ref) => {
|
|
30
|
+
export const Thumbnail = forwardRef(({ src, alt = '', shape = '4:3', fluid = false, lazy = false, imgProps, loading = false, progress = 0, processing = false, error = false, caption, errorReason, onRemove, onClick, removeLabel = 'Remove photo', viewLabel = 'View photo', className = '', ...props }, ref) => {
|
|
28
31
|
const isBusy = loading || processing;
|
|
29
32
|
const isInteractive = !isBusy && !error && Boolean(onClick);
|
|
30
33
|
const showRemove = !isBusy && Boolean(onRemove);
|
|
@@ -32,6 +35,7 @@ export const Thumbnail = forwardRef(({ src, alt = '', shape = '4:3', loading = f
|
|
|
32
35
|
'muka-thumbnail',
|
|
33
36
|
// '4:3' → '--4-3', '1:1' → '--1-1', 'ellipse' → '--ellipse'
|
|
34
37
|
`muka-thumbnail--${shape.replace(':', '-')}`,
|
|
38
|
+
fluid && 'muka-thumbnail--fluid',
|
|
35
39
|
loading && 'muka-thumbnail--loading',
|
|
36
40
|
processing && 'muka-thumbnail--processing',
|
|
37
41
|
error && 'muka-thumbnail--error',
|
|
@@ -40,7 +44,7 @@ export const Thumbnail = forwardRef(({ src, alt = '', shape = '4:3', loading = f
|
|
|
40
44
|
]
|
|
41
45
|
.filter(Boolean)
|
|
42
46
|
.join(' ');
|
|
43
|
-
const image = _jsx("img", { className: "muka-thumbnail__image", src: src, alt: alt });
|
|
47
|
+
const image = (_jsx("img", { ...(lazy && { loading: 'lazy' }), decoding: "async", ...imgProps, className: "muka-thumbnail__image", src: src, alt: alt }));
|
|
44
48
|
const removeButton = showRemove ? (_jsx("button", { type: "button", className: "muka-thumbnail__remove", onClick: onRemove, "aria-label": removeLabel, children: _jsx(Icon, { name: "close", variant: "line", size: "xs" }) })) : null;
|
|
45
49
|
// The frame owns the shape's clip (border-radius + overflow), so the remove
|
|
46
50
|
// button — a sibling of the frame — is never clipped, even for the circle.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Thumbnail.js","sourceRoot":"","sources":["../../../../components/Thumbnail/Thumbnail.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"Thumbnail.js","sourceRoot":"","sources":["../../../../components/Thumbnail/Thumbnail.tsx"],"names":[],"mappings":"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"}
|
|
@@ -87,6 +87,7 @@ export { PullToRefresh } from './PullToRefresh';
|
|
|
87
87
|
export { LicensePlateInput, } from './LicensePlateInput';
|
|
88
88
|
export { SocialSignInButton, } from './SocialSignInButton';
|
|
89
89
|
export { Thumbnail } from './Thumbnail';
|
|
90
|
+
export { MediaViewer, } from './MediaViewer';
|
|
90
91
|
export { PhotoUploader, } from './PhotoUploader';
|
|
91
92
|
export { TextLink } from './TextLink';
|
|
92
93
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/index.ts"],"names":[],"mappings":"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"}
|
package/dist/styles/base.css
CHANGED
|
@@ -116,4 +116,6 @@ body {
|
|
|
116
116
|
padding: 0;
|
|
117
117
|
/* Page background uses Muka surface token so it matches theme (e.g. dark for muka-dark, wireframe-dark) */
|
|
118
118
|
background-color: var(--color-surface-level3);
|
|
119
|
+
/* Default text color so bare text (h1–h6, p, span outside components) follows the theme instead of browser black */
|
|
120
|
+
color: var(--color-text-default-default);
|
|
119
121
|
}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
align-items: center;
|
|
8
8
|
justify-content: center;
|
|
9
9
|
flex-shrink: 0;
|
|
10
|
-
overflow:
|
|
10
|
+
/* No overflow clipping: the status dot sits on the edge. The image and the
|
|
11
|
+
loading shimmer round themselves to the avatar shape instead. */
|
|
11
12
|
user-select: none;
|
|
12
13
|
vertical-align: middle;
|
|
13
14
|
background-color: var(--avatar-color-background-default);
|
|
@@ -80,9 +81,10 @@
|
|
|
80
81
|
border-radius: var(--avatar-radius-square-sm);
|
|
81
82
|
}
|
|
82
83
|
|
|
83
|
-
/* 4xs is too small for initials, the fallback icon or a status dot:
|
|
84
|
+
/* 4xs is too small for initials, an icon, the fallback icon or a status dot:
|
|
84
85
|
it shows the picture, or the plain background */
|
|
85
86
|
.muka-avatar--4xs .muka-avatar__initials,
|
|
87
|
+
.muka-avatar--4xs .muka-avatar__icon,
|
|
86
88
|
.muka-avatar--4xs .muka-avatar__fallback,
|
|
87
89
|
.muka-avatar--4xs .muka-avatar__status {
|
|
88
90
|
display: none;
|
|
@@ -118,38 +120,59 @@
|
|
|
118
120
|
.muka-avatar__skeleton {
|
|
119
121
|
position: absolute;
|
|
120
122
|
inset: 0;
|
|
123
|
+
border-radius: inherit;
|
|
121
124
|
background: linear-gradient(
|
|
122
125
|
90deg,
|
|
123
126
|
transparent 0%,
|
|
124
127
|
var(--color-surface-level1) 50%,
|
|
125
128
|
transparent 100%
|
|
126
|
-
);
|
|
129
|
+
) no-repeat;
|
|
130
|
+
background-size: 50% 100%;
|
|
127
131
|
animation: avatar-loading 1.5s ease-in-out infinite;
|
|
128
132
|
}
|
|
129
133
|
|
|
134
|
+
/* The highlight sweeps by background position, so it stays inside the
|
|
135
|
+
rounded shape without the avatar clipping its overflow */
|
|
130
136
|
@keyframes avatar-loading {
|
|
131
137
|
0% {
|
|
132
|
-
|
|
138
|
+
background-position: -100% 0;
|
|
133
139
|
}
|
|
134
140
|
100% {
|
|
135
|
-
|
|
141
|
+
background-position: 200% 0;
|
|
136
142
|
}
|
|
137
143
|
}
|
|
138
144
|
|
|
139
145
|
/* Avatar content */
|
|
140
146
|
.muka-avatar__image {
|
|
147
|
+
border-radius: inherit;
|
|
141
148
|
width: 100%;
|
|
142
149
|
height: 100%;
|
|
143
150
|
object-fit: cover;
|
|
144
151
|
display: block;
|
|
145
152
|
}
|
|
146
153
|
|
|
154
|
+
/* Icon slot: a fixed icon size per avatar size, in the initials colour
|
|
155
|
+
(subtle text) */
|
|
147
156
|
.muka-avatar__icon {
|
|
148
|
-
width: 60%;
|
|
149
|
-
height: 60%;
|
|
150
157
|
display: flex;
|
|
151
158
|
align-items: center;
|
|
152
159
|
justify-content: center;
|
|
160
|
+
color: var(--avatar-color-foreground-default);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.muka-avatar--3xs .muka-avatar__icon { width: var(--avatar-icon-size-3xs); height: var(--avatar-icon-size-3xs); }
|
|
164
|
+
.muka-avatar--2xs .muka-avatar__icon { width: var(--avatar-icon-size-2xs); height: var(--avatar-icon-size-2xs); }
|
|
165
|
+
.muka-avatar--xs .muka-avatar__icon { width: var(--avatar-icon-size-xs); height: var(--avatar-icon-size-xs); }
|
|
166
|
+
.muka-avatar--sm .muka-avatar__icon { width: var(--avatar-icon-size-sm); height: var(--avatar-icon-size-sm); }
|
|
167
|
+
.muka-avatar--md .muka-avatar__icon { width: var(--avatar-icon-size-md); height: var(--avatar-icon-size-md); }
|
|
168
|
+
.muka-avatar--lg .muka-avatar__icon { width: var(--avatar-icon-size-lg); height: var(--avatar-icon-size-lg); }
|
|
169
|
+
.muka-avatar--xl .muka-avatar__icon { width: var(--avatar-icon-size-xl); height: var(--avatar-icon-size-xl); }
|
|
170
|
+
|
|
171
|
+
/* A Muka Icon fills the slot and takes its colour (its own `color` prop still wins) */
|
|
172
|
+
.muka-avatar__icon .muka-icon {
|
|
173
|
+
width: 100%;
|
|
174
|
+
height: 100%;
|
|
175
|
+
color: inherit;
|
|
153
176
|
}
|
|
154
177
|
|
|
155
178
|
.muka-avatar__icon svg {
|
|
@@ -24,7 +24,10 @@
|
|
|
24
24
|
fill: none;
|
|
25
25
|
/* Subtle lift on the filled segment, matching the Figma elevation */
|
|
26
26
|
filter: drop-shadow(0 2px 4px var(--color-black-alpha-5, rgba(0, 0, 0, 0.05)));
|
|
27
|
-
|
|
27
|
+
/* Butt caps keep the always-rendered 0% arc invisible (round caps would draw a dot) */
|
|
28
|
+
stroke-linecap: butt;
|
|
29
|
+
/* view duration (300ms) reads at the 24px size; tokens zero it for reduced motion */
|
|
30
|
+
transition: stroke-dasharray var(--motion-duration-view) var(--motion-easing-default);
|
|
28
31
|
}
|
|
29
32
|
|
|
30
33
|
/* ─── Indeterminate (spinner) ─────────────────────────── */
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
height: 100%;
|
|
39
39
|
max-width: 100vw;
|
|
40
40
|
max-height: 100vh;
|
|
41
|
+
max-height: 100dvh;
|
|
41
42
|
margin: 0;
|
|
42
43
|
display: flex;
|
|
43
44
|
flex-direction: column;
|
|
@@ -72,6 +73,8 @@
|
|
|
72
73
|
|
|
73
74
|
.muka-dialog--lg .muka-dialog__surface {
|
|
74
75
|
height: calc(100vh - var(--dialog-margin-top-mobile));
|
|
76
|
+
/* dvh tracks the visible area as mobile toolbars show and hide */
|
|
77
|
+
height: calc(100dvh - var(--dialog-margin-top-mobile));
|
|
75
78
|
}
|
|
76
79
|
|
|
77
80
|
/* Body */
|
|
@@ -192,6 +192,9 @@
|
|
|
192
192
|
flex-shrink: 0;
|
|
193
193
|
width: var(--size-2xl, 2rem);
|
|
194
194
|
height: var(--size-2xl, 2rem);
|
|
195
|
+
/* Bleed into the field's vertical padding: keeps the full hit area without
|
|
196
|
+
making a password or clearable field taller than a plain one. */
|
|
197
|
+
margin-block: calc(var(--input-field-padding-y) * -1);
|
|
195
198
|
padding: 0;
|
|
196
199
|
border: none;
|
|
197
200
|
background: transparent;
|
|
@@ -199,6 +202,24 @@
|
|
|
199
202
|
cursor: pointer;
|
|
200
203
|
}
|
|
201
204
|
|
|
205
|
+
/* The outermost button bleeds into the right padding by the same amount, so
|
|
206
|
+
its glyph sits as close to the edge as it does to the top and bottom. */
|
|
207
|
+
.muka-input__clear:last-child,
|
|
208
|
+
.muka-input__reveal:last-child {
|
|
209
|
+
margin-inline-end: calc(var(--input-field-padding-y) * -1);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/* md: match the right gap to the gap above and below the vertically centred
|
|
213
|
+
button exactly, i.e. (field height − borders − button) / 2. Holds in the
|
|
214
|
+
focus/error state too, where border and padding trade 1px. */
|
|
215
|
+
.muka-input__field--md .muka-input__clear:last-child,
|
|
216
|
+
.muka-input__field--md .muka-input__reveal:last-child {
|
|
217
|
+
margin-inline-end: calc(
|
|
218
|
+
(var(--input-field-height-default) - 2 * var(--border-width-regular) - var(--size-2xl, 2rem)) / 2
|
|
219
|
+
- var(--input-field-padding-x)
|
|
220
|
+
);
|
|
221
|
+
}
|
|
222
|
+
|
|
202
223
|
.muka-input__field--sm .muka-input__clear,
|
|
203
224
|
.muka-input__field--sm .muka-input__reveal {
|
|
204
225
|
width: var(--size-xl, 1.5rem);
|