@howells/stacksheet 0.2.0 → 1.0.1
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 +61 -0
- package/dist/index.d.ts +401 -6
- package/dist/index.js +1349 -4
- package/dist/index.js.map +1 -1
- package/package.json +29 -12
- package/dist/config.d.ts +0 -3
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -37
- package/dist/config.js.map +0 -1
- package/dist/create.d.ts +0 -13
- package/dist/create.d.ts.map +0 -1
- package/dist/create.js +0 -56
- package/dist/create.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/media.d.ts +0 -9
- package/dist/media.d.ts.map +0 -1
- package/dist/media.js +0 -22
- package/dist/media.js.map +0 -1
- package/dist/renderer.d.ts +0 -12
- package/dist/renderer.d.ts.map +0 -1
- package/dist/renderer.js +0 -198
- package/dist/renderer.js.map +0 -1
- package/dist/stacking.d.ts +0 -26
- package/dist/stacking.d.ts.map +0 -1
- package/dist/stacking.js +0 -68
- package/dist/stacking.js.map +0 -1
- package/dist/store.d.ts +0 -9
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js +0 -73
- package/dist/store.js.map +0 -1
- package/dist/types.d.ts +0 -129
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
package/dist/renderer.js
DELETED
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { AnimatePresence, m } from "motion/react";
|
|
3
|
-
import { useEffect, useRef, useState, } from "react";
|
|
4
|
-
import { useStore } from "zustand";
|
|
5
|
-
import { useResolvedSide } from "./media.js";
|
|
6
|
-
import { getSlideFrom, getSlideTarget, getStackTransform, getPanelStyles, } from "./stacking.js";
|
|
7
|
-
// ── Icons (inline SVG — no external dependency) ─
|
|
8
|
-
function ArrowLeftIcon() {
|
|
9
|
-
return (_jsx("svg", { "aria-hidden": "true", fill: "none", height: 16, stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, viewBox: "0 0 24 24", width: 16, children: _jsx("path", { d: "M19 12H5M12 19l-7-7 7-7" }) }));
|
|
10
|
-
}
|
|
11
|
-
function XIcon() {
|
|
12
|
-
return (_jsx("svg", { "aria-hidden": "true", fill: "none", height: 16, stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, viewBox: "0 0 24 24", width: 16, children: _jsx("path", { d: "M18 6L6 18M6 6l12 12" }) }));
|
|
13
|
-
}
|
|
14
|
-
// ── Default header ──────────────────────────────
|
|
15
|
-
const BUTTON_STYLE = {
|
|
16
|
-
display: "inline-flex",
|
|
17
|
-
alignItems: "center",
|
|
18
|
-
justifyContent: "center",
|
|
19
|
-
width: 32,
|
|
20
|
-
height: 32,
|
|
21
|
-
borderRadius: "50%",
|
|
22
|
-
border: "none",
|
|
23
|
-
background: "transparent",
|
|
24
|
-
cursor: "pointer",
|
|
25
|
-
color: "inherit",
|
|
26
|
-
opacity: 0.5,
|
|
27
|
-
transition: "opacity 150ms",
|
|
28
|
-
padding: 0,
|
|
29
|
-
};
|
|
30
|
-
function DefaultHeader({ isNested, onBack, onClose }) {
|
|
31
|
-
return (_jsxs("div", { style: {
|
|
32
|
-
display: "flex",
|
|
33
|
-
alignItems: "center",
|
|
34
|
-
height: 48,
|
|
35
|
-
flexShrink: 0,
|
|
36
|
-
padding: "0 12px",
|
|
37
|
-
borderBottom: "1px solid transparent",
|
|
38
|
-
}, children: [isNested && (_jsx("button", { "aria-label": "Back", onClick: onBack, style: BUTTON_STYLE, type: "button", children: _jsx(ArrowLeftIcon, {}) })), _jsx("div", { style: { flex: 1 } }), _jsx("button", { "aria-label": "Close", onClick: onClose, style: BUTTON_STYLE, type: "button", children: _jsx(XIcon, {}) })] }));
|
|
39
|
-
}
|
|
40
|
-
const EMPTY_CLASSNAMES = {
|
|
41
|
-
backdrop: "",
|
|
42
|
-
panel: "",
|
|
43
|
-
header: "",
|
|
44
|
-
};
|
|
45
|
-
function resolveClassNames(cn) {
|
|
46
|
-
if (!cn)
|
|
47
|
-
return EMPTY_CLASSNAMES;
|
|
48
|
-
return {
|
|
49
|
-
backdrop: cn.backdrop ?? "",
|
|
50
|
-
panel: cn.panel ?? "",
|
|
51
|
-
header: cn.header ?? "",
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
export function SheetRenderer({ store, config, content, classNames: classNamesProp, renderHeader, }) {
|
|
55
|
-
const isOpen = useStore(store, (s) => s.isOpen);
|
|
56
|
-
const stack = useStore(store, (s) => s.stack);
|
|
57
|
-
const close = useStore(store, (s) => s.close);
|
|
58
|
-
const pop = useStore(store, (s) => s.pop);
|
|
59
|
-
const side = useResolvedSide(config);
|
|
60
|
-
const classNames = resolveClassNames(classNamesProp);
|
|
61
|
-
// Display stack — keep items during exit animation
|
|
62
|
-
const [displayStack, setDisplayStack] = useState([]);
|
|
63
|
-
const clearTimerRef = useRef(null);
|
|
64
|
-
useEffect(() => {
|
|
65
|
-
if (stack.length > 0) {
|
|
66
|
-
if (clearTimerRef.current) {
|
|
67
|
-
clearTimeout(clearTimerRef.current);
|
|
68
|
-
clearTimerRef.current = null;
|
|
69
|
-
}
|
|
70
|
-
setDisplayStack(stack);
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
// Delay clearing so exit animations complete
|
|
74
|
-
clearTimerRef.current = setTimeout(() => {
|
|
75
|
-
setDisplayStack([]);
|
|
76
|
-
}, 500);
|
|
77
|
-
}
|
|
78
|
-
return () => {
|
|
79
|
-
if (clearTimerRef.current) {
|
|
80
|
-
clearTimeout(clearTimerRef.current);
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
}, [stack]);
|
|
84
|
-
// Scroll lock
|
|
85
|
-
useEffect(() => {
|
|
86
|
-
if (!isOpen || !config.lockScroll)
|
|
87
|
-
return;
|
|
88
|
-
const prev = document.body.style.overflow;
|
|
89
|
-
document.body.style.overflow = "hidden";
|
|
90
|
-
return () => {
|
|
91
|
-
document.body.style.overflow = prev;
|
|
92
|
-
};
|
|
93
|
-
}, [isOpen, config.lockScroll]);
|
|
94
|
-
// Escape key
|
|
95
|
-
useEffect(() => {
|
|
96
|
-
if (!isOpen || !config.closeOnEscape)
|
|
97
|
-
return;
|
|
98
|
-
function handleKeyDown(e) {
|
|
99
|
-
if (e.key === "Escape") {
|
|
100
|
-
e.preventDefault();
|
|
101
|
-
if (stack.length > 1) {
|
|
102
|
-
pop();
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
close();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
document.addEventListener("keydown", handleKeyDown);
|
|
110
|
-
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
111
|
-
}, [isOpen, config.closeOnEscape, stack.length, pop, close]);
|
|
112
|
-
const slideFrom = getSlideFrom(side);
|
|
113
|
-
const slideTarget = getSlideTarget();
|
|
114
|
-
const spring = {
|
|
115
|
-
type: "spring",
|
|
116
|
-
damping: config.spring.damping,
|
|
117
|
-
stiffness: config.spring.stiffness,
|
|
118
|
-
mass: config.spring.mass,
|
|
119
|
-
};
|
|
120
|
-
// Backdrop: use className if provided, otherwise inline fallback
|
|
121
|
-
const hasBackdropClass = classNames.backdrop !== "";
|
|
122
|
-
const backdropStyle = {
|
|
123
|
-
position: "fixed",
|
|
124
|
-
inset: 0,
|
|
125
|
-
zIndex: config.zIndex,
|
|
126
|
-
cursor: config.closeOnBackdrop ? "pointer" : undefined,
|
|
127
|
-
...(hasBackdropClass ? {} : { background: "rgba(0, 0, 0, 0.2)" }),
|
|
128
|
-
};
|
|
129
|
-
return (_jsx(AnimatePresence, { children: isOpen && (_jsxs(_Fragment, { children: [_jsx(m.div, { animate: { opacity: 1 }, className: classNames.backdrop || undefined, exit: { opacity: 0 }, initial: { opacity: 0 }, onClick: config.closeOnBackdrop ? close : undefined, style: backdropStyle, transition: { duration: 0.2 } }, "stacksheet-backdrop"), displayStack.map((item, index) => {
|
|
130
|
-
const depth = displayStack.length - 1 - index;
|
|
131
|
-
const isTop = depth === 0;
|
|
132
|
-
const isNested = displayStack.length > 1;
|
|
133
|
-
const transform = getStackTransform(depth, config.stacking);
|
|
134
|
-
const panelStyles = getPanelStyles(side, config, depth, index);
|
|
135
|
-
const shouldRender = depth < config.stacking.renderThreshold;
|
|
136
|
-
// Compute stacking offset for animate
|
|
137
|
-
const stackOffset = getStackingOffset(side, transform.offset);
|
|
138
|
-
const Content = content[item.type];
|
|
139
|
-
// Panel: use className if provided, strip inline background
|
|
140
|
-
const hasPanelClass = classNames.panel !== "";
|
|
141
|
-
const panelStyle = {
|
|
142
|
-
...panelStyles,
|
|
143
|
-
boxShadow: isTop ? getShadow(side, false) : getShadow(side, true),
|
|
144
|
-
pointerEvents: isTop ? "auto" : "none",
|
|
145
|
-
...(hasPanelClass ? { background: undefined } : {}),
|
|
146
|
-
};
|
|
147
|
-
const headerProps = {
|
|
148
|
-
isNested,
|
|
149
|
-
onBack: pop,
|
|
150
|
-
onClose: close,
|
|
151
|
-
};
|
|
152
|
-
return (_jsxs(m.div, { animate: {
|
|
153
|
-
...slideTarget,
|
|
154
|
-
...stackOffset,
|
|
155
|
-
scale: transform.scale,
|
|
156
|
-
opacity: transform.opacity,
|
|
157
|
-
borderRadius: transform.borderRadius,
|
|
158
|
-
}, "aria-modal": isTop ? "true" : undefined, className: classNames.panel || undefined, exit: {
|
|
159
|
-
...slideFrom,
|
|
160
|
-
opacity: 0.6,
|
|
161
|
-
}, initial: {
|
|
162
|
-
...slideFrom,
|
|
163
|
-
opacity: 0.8,
|
|
164
|
-
}, role: isTop ? "dialog" : undefined, style: panelStyle, transition: spring, children: [isTop &&
|
|
165
|
-
(renderHeader ? (renderHeader(headerProps)) : (_jsx(DefaultHeader, { ...headerProps }))), shouldRender && Content && (_jsx("div", { style: {
|
|
166
|
-
flex: 1,
|
|
167
|
-
minHeight: 0,
|
|
168
|
-
overflowY: "auto",
|
|
169
|
-
overscrollBehavior: "contain",
|
|
170
|
-
}, children: _jsx(Content, { data: item.data, onClose: close }) }))] }, item.id));
|
|
171
|
-
})] })) }));
|
|
172
|
-
}
|
|
173
|
-
// ── Helpers ─────────────────────────────────────
|
|
174
|
-
function getStackingOffset(side, offset) {
|
|
175
|
-
if (offset === 0)
|
|
176
|
-
return {};
|
|
177
|
-
switch (side) {
|
|
178
|
-
case "right":
|
|
179
|
-
return { x: -offset };
|
|
180
|
-
case "left":
|
|
181
|
-
return { x: offset };
|
|
182
|
-
case "bottom":
|
|
183
|
-
return { y: -offset };
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
function getShadow(side, isNested) {
|
|
187
|
-
if (side === "bottom") {
|
|
188
|
-
return isNested
|
|
189
|
-
? "0 -2px 16px rgba(0,0,0,0.06)"
|
|
190
|
-
: "0 -8px 32px rgba(0,0,0,0.15)";
|
|
191
|
-
}
|
|
192
|
-
// Left/right
|
|
193
|
-
const dir = side === "right" ? -1 : 1;
|
|
194
|
-
return isNested
|
|
195
|
-
? `${dir * 2}px 0 16px rgba(0,0,0,0.06)`
|
|
196
|
-
: `${dir * 8}px 0 32px rgba(0,0,0,0.15)`;
|
|
197
|
-
}
|
|
198
|
-
//# sourceMappingURL=renderer.js.map
|
package/dist/renderer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.tsx"],"names":[],"mappings":"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"}
|
package/dist/stacking.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { CSSProperties } from "react";
|
|
2
|
-
import type { ResolvedConfig, Side, StackingConfig } from "./types.js";
|
|
3
|
-
export interface StackTransform {
|
|
4
|
-
scale: number;
|
|
5
|
-
offset: number;
|
|
6
|
-
opacity: number;
|
|
7
|
-
borderRadius: number;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Compute visual transforms for a panel at a given depth.
|
|
11
|
-
* depth=0 is the top (foreground) panel.
|
|
12
|
-
*/
|
|
13
|
-
export declare function getStackTransform(depth: number, stacking: StackingConfig): StackTransform;
|
|
14
|
-
export interface SlideValues {
|
|
15
|
-
x?: string | number;
|
|
16
|
-
y?: string | number;
|
|
17
|
-
}
|
|
18
|
-
/** Motion initial/exit values for sliding from the given side. */
|
|
19
|
-
export declare function getSlideFrom(side: Side): SlideValues;
|
|
20
|
-
/** Motion animate target — the resting position. */
|
|
21
|
-
export declare function getSlideTarget(): SlideValues;
|
|
22
|
-
/**
|
|
23
|
-
* Fixed-position styles for a panel, accounting for side, width, and depth.
|
|
24
|
-
*/
|
|
25
|
-
export declare function getPanelStyles(side: Side, config: ResolvedConfig, depth: number, index: number): CSSProperties;
|
|
26
|
-
//# sourceMappingURL=stacking.d.ts.map
|
package/dist/stacking.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stacking.d.ts","sourceRoot":"","sources":["../src/stacking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIvE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,GACvB,cAAc,CAUhB;AAID,MAAM,WAAW,WAAW;IAC1B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CASpD;AAED,oDAAoD;AACpD,wBAAgB,cAAc,IAAI,WAAW,CAE5C;AAID;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,aAAa,CAoCf"}
|
package/dist/stacking.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compute visual transforms for a panel at a given depth.
|
|
3
|
-
* depth=0 is the top (foreground) panel.
|
|
4
|
-
*/
|
|
5
|
-
export function getStackTransform(depth, stacking) {
|
|
6
|
-
if (depth <= 0) {
|
|
7
|
-
return { scale: 1, offset: 0, opacity: 1, borderRadius: 0 };
|
|
8
|
-
}
|
|
9
|
-
return {
|
|
10
|
-
scale: Math.max(0.5, 1 - depth * stacking.scaleStep),
|
|
11
|
-
offset: depth * stacking.offsetStep,
|
|
12
|
-
opacity: Math.max(0, 1 - depth * stacking.opacityStep),
|
|
13
|
-
borderRadius: stacking.radius,
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
/** Motion initial/exit values for sliding from the given side. */
|
|
17
|
-
export function getSlideFrom(side) {
|
|
18
|
-
switch (side) {
|
|
19
|
-
case "right":
|
|
20
|
-
return { x: "100%" };
|
|
21
|
-
case "left":
|
|
22
|
-
return { x: "-100%" };
|
|
23
|
-
case "bottom":
|
|
24
|
-
return { y: "100%" };
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/** Motion animate target — the resting position. */
|
|
28
|
-
export function getSlideTarget() {
|
|
29
|
-
return { x: 0, y: 0 };
|
|
30
|
-
}
|
|
31
|
-
// ── Panel positioning ───────────────────────────
|
|
32
|
-
/**
|
|
33
|
-
* Fixed-position styles for a panel, accounting for side, width, and depth.
|
|
34
|
-
*/
|
|
35
|
-
export function getPanelStyles(side, config, depth, index) {
|
|
36
|
-
const { width, maxWidth, zIndex } = config;
|
|
37
|
-
const base = {
|
|
38
|
-
position: "fixed",
|
|
39
|
-
zIndex: zIndex + 10 + index,
|
|
40
|
-
display: "flex",
|
|
41
|
-
flexDirection: "column",
|
|
42
|
-
overflow: "hidden",
|
|
43
|
-
willChange: "transform",
|
|
44
|
-
transformOrigin: side === "bottom" ? "center bottom" : `${side} center`,
|
|
45
|
-
};
|
|
46
|
-
if (side === "bottom") {
|
|
47
|
-
return {
|
|
48
|
-
...base,
|
|
49
|
-
left: 0,
|
|
50
|
-
right: 0,
|
|
51
|
-
bottom: 0,
|
|
52
|
-
maxHeight: "85vh",
|
|
53
|
-
borderTopLeftRadius: depth > 0 ? config.stacking.radius : 16,
|
|
54
|
-
borderTopRightRadius: depth > 0 ? config.stacking.radius : 16,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
// Left or right side panel
|
|
58
|
-
const sideStyles = side === "right"
|
|
59
|
-
? { top: 0, right: 0, bottom: 0 }
|
|
60
|
-
: { top: 0, left: 0, bottom: 0 };
|
|
61
|
-
return {
|
|
62
|
-
...base,
|
|
63
|
-
...sideStyles,
|
|
64
|
-
width,
|
|
65
|
-
maxWidth,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=stacking.js.map
|
package/dist/stacking.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stacking.js","sourceRoot":"","sources":["../src/stacking.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,QAAwB;IAExB,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;QACpD,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC,UAAU;QACnC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC;QACtD,YAAY,EAAE,QAAQ,CAAC,MAAM;KAC9B,CAAC;AACJ,CAAC;AASD,kEAAkE;AAClE,MAAM,UAAU,YAAY,CAAC,IAAU;IACrC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,cAAc;IAC5B,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxB,CAAC;AAED,mDAAmD;AAEnD;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAU,EACV,MAAsB,EACtB,KAAa,EACb,KAAa;IAEb,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC3C,MAAM,IAAI,GAAkB;QAC1B,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,KAAK;QAC3B,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,QAAQ;QACvB,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,WAAW;QACvB,eAAe,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS;KACxE,CAAC;IAEF,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,MAAM;YACjB,mBAAmB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC5D,oBAAoB,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;SAC9D,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,MAAM,UAAU,GACd,IAAI,KAAK,OAAO;QACd,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACjC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAErC,OAAO;QACL,GAAG,IAAI;QACP,GAAG,UAAU;QACb,KAAK;QACL,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
package/dist/store.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type StoreApi } from "zustand";
|
|
2
|
-
import type { ResolvedConfig, SheetActions, SheetSnapshot } from "./types.js";
|
|
3
|
-
type StoreState<TMap extends Record<string, unknown>> = SheetSnapshot<TMap> & SheetActions<TMap>;
|
|
4
|
-
/**
|
|
5
|
-
* Create an isolated Zustand store for a sheet stack instance.
|
|
6
|
-
*/
|
|
7
|
-
export declare function createSheetStore<TMap extends Record<string, unknown>>(config: ResolvedConfig): StoreApi<StoreState<TMap>>;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=store.d.ts.map
|
package/dist/store.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EAEZ,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,KAAK,UAAU,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,GACzE,YAAY,CAAC,IAAI,CAAC,CAAC;AAErB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,MAAM,EAAE,cAAc,GACrB,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAgF5B"}
|
package/dist/store.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { createStore } from "zustand";
|
|
2
|
-
/**
|
|
3
|
-
* Create an isolated Zustand store for a sheet stack instance.
|
|
4
|
-
*/
|
|
5
|
-
export function createSheetStore(config) {
|
|
6
|
-
return createStore()((set, get) => ({
|
|
7
|
-
stack: [],
|
|
8
|
-
isOpen: false,
|
|
9
|
-
open(type, id, data) {
|
|
10
|
-
set({
|
|
11
|
-
stack: [{ id, type, data }],
|
|
12
|
-
isOpen: true,
|
|
13
|
-
});
|
|
14
|
-
},
|
|
15
|
-
push(type, id, data) {
|
|
16
|
-
set((state) => {
|
|
17
|
-
const item = { id, type, data };
|
|
18
|
-
if (Number.isFinite(config.maxDepth) &&
|
|
19
|
-
state.stack.length >= config.maxDepth) {
|
|
20
|
-
// Replace top at max depth
|
|
21
|
-
return {
|
|
22
|
-
stack: [...state.stack.slice(0, -1), item],
|
|
23
|
-
isOpen: true,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
return {
|
|
27
|
-
stack: [...state.stack, item],
|
|
28
|
-
isOpen: true,
|
|
29
|
-
};
|
|
30
|
-
});
|
|
31
|
-
},
|
|
32
|
-
replace(type, id, data) {
|
|
33
|
-
set((state) => {
|
|
34
|
-
const item = { id, type, data };
|
|
35
|
-
if (state.stack.length === 0) {
|
|
36
|
-
return { stack: [item], isOpen: true };
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
stack: [...state.stack.slice(0, -1), item],
|
|
40
|
-
isOpen: true,
|
|
41
|
-
};
|
|
42
|
-
});
|
|
43
|
-
},
|
|
44
|
-
navigate(type, id, data) {
|
|
45
|
-
const { stack } = get();
|
|
46
|
-
const top = stack.at(-1);
|
|
47
|
-
// Empty → open
|
|
48
|
-
if (stack.length === 0) {
|
|
49
|
-
get().open(type, id, data);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
// Same type on top → replace
|
|
53
|
-
if (top?.type === type) {
|
|
54
|
-
get().replace(type, id, data);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
// Different type → push
|
|
58
|
-
get().push(type, id, data);
|
|
59
|
-
},
|
|
60
|
-
pop() {
|
|
61
|
-
set((state) => {
|
|
62
|
-
if (state.stack.length <= 1) {
|
|
63
|
-
return { stack: [], isOpen: false };
|
|
64
|
-
}
|
|
65
|
-
return { stack: state.stack.slice(0, -1), isOpen: true };
|
|
66
|
-
});
|
|
67
|
-
},
|
|
68
|
-
close() {
|
|
69
|
-
set({ stack: [], isOpen: false });
|
|
70
|
-
},
|
|
71
|
-
}));
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=store.js.map
|
package/dist/store.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import type { ComponentType, ReactNode } from "react";
|
|
2
|
-
export interface SheetClassNames {
|
|
3
|
-
/** Applied to backdrop overlay */
|
|
4
|
-
backdrop?: string;
|
|
5
|
-
/** Applied to each panel container */
|
|
6
|
-
panel?: string;
|
|
7
|
-
/** Applied to the header bar */
|
|
8
|
-
header?: string;
|
|
9
|
-
}
|
|
10
|
-
export interface HeaderRenderProps {
|
|
11
|
-
isNested: boolean;
|
|
12
|
-
onBack: () => void;
|
|
13
|
-
onClose: () => void;
|
|
14
|
-
}
|
|
15
|
-
export interface SheetItem<TType extends string = string> {
|
|
16
|
-
id: string;
|
|
17
|
-
type: TType;
|
|
18
|
-
data: Record<string, unknown>;
|
|
19
|
-
}
|
|
20
|
-
export type Side = "left" | "right" | "bottom";
|
|
21
|
-
export interface ResponsiveSide {
|
|
22
|
-
desktop: Side;
|
|
23
|
-
mobile: Side;
|
|
24
|
-
}
|
|
25
|
-
export type SideConfig = Side | ResponsiveSide;
|
|
26
|
-
export interface StackingConfig {
|
|
27
|
-
/** Scale reduction per depth level (default: 0.04) */
|
|
28
|
-
scaleStep: number;
|
|
29
|
-
/** Horizontal/vertical offset per depth level in px (default: 24) */
|
|
30
|
-
offsetStep: number;
|
|
31
|
-
/** Opacity reduction per depth level (default: 0.15) */
|
|
32
|
-
opacityStep: number;
|
|
33
|
-
/** Border radius applied to stacked panels in px (default: 12) */
|
|
34
|
-
radius: number;
|
|
35
|
-
/** Max depth before content stops rendering (default: 5) */
|
|
36
|
-
renderThreshold: number;
|
|
37
|
-
}
|
|
38
|
-
export interface SpringConfig {
|
|
39
|
-
/** Damping — higher = less oscillation (default: 30) */
|
|
40
|
-
damping: number;
|
|
41
|
-
/** Stiffness — higher = snappier (default: 170) */
|
|
42
|
-
stiffness: number;
|
|
43
|
-
/** Mass — higher = more momentum (default: 0.8) */
|
|
44
|
-
mass: number;
|
|
45
|
-
}
|
|
46
|
-
export interface SheetStackConfig {
|
|
47
|
-
/** Maximum stack depth. Default: Infinity (unlimited) */
|
|
48
|
-
maxDepth?: number;
|
|
49
|
-
/** Close on ESC key. Default: true */
|
|
50
|
-
closeOnEscape?: boolean;
|
|
51
|
-
/** Close on backdrop click. Default: true */
|
|
52
|
-
closeOnBackdrop?: boolean;
|
|
53
|
-
/** Lock body scroll when open. Default: true */
|
|
54
|
-
lockScroll?: boolean;
|
|
55
|
-
/** Panel width in px. Default: 420 */
|
|
56
|
-
width?: number;
|
|
57
|
-
/** Maximum panel width as CSS value. Default: "90vw" */
|
|
58
|
-
maxWidth?: string;
|
|
59
|
-
/** Mobile breakpoint in px. Default: 768 */
|
|
60
|
-
breakpoint?: number;
|
|
61
|
-
/** Sheet slide-from side. Default: { desktop: "right", mobile: "bottom" } */
|
|
62
|
-
side?: SideConfig;
|
|
63
|
-
/** Stacking visual parameters */
|
|
64
|
-
stacking?: Partial<StackingConfig>;
|
|
65
|
-
/** Spring animation parameters */
|
|
66
|
-
spring?: Partial<SpringConfig>;
|
|
67
|
-
/** Base z-index. Default: 100 */
|
|
68
|
-
zIndex?: number;
|
|
69
|
-
}
|
|
70
|
-
/** Fully resolved config — all fields required */
|
|
71
|
-
export interface ResolvedConfig {
|
|
72
|
-
maxDepth: number;
|
|
73
|
-
closeOnEscape: boolean;
|
|
74
|
-
closeOnBackdrop: boolean;
|
|
75
|
-
lockScroll: boolean;
|
|
76
|
-
width: number;
|
|
77
|
-
maxWidth: string;
|
|
78
|
-
breakpoint: number;
|
|
79
|
-
side: ResponsiveSide;
|
|
80
|
-
stacking: StackingConfig;
|
|
81
|
-
spring: SpringConfig;
|
|
82
|
-
zIndex: number;
|
|
83
|
-
}
|
|
84
|
-
/** Component rendered inside a sheet panel */
|
|
85
|
-
export type SheetContentComponent<TData = unknown> = ComponentType<{
|
|
86
|
-
data: TData;
|
|
87
|
-
onClose: () => void;
|
|
88
|
-
}>;
|
|
89
|
-
/** Map of sheet type → content component */
|
|
90
|
-
export type ContentMap<TMap extends Record<string, unknown>> = {
|
|
91
|
-
[K in keyof TMap]: SheetContentComponent<TMap[K]>;
|
|
92
|
-
};
|
|
93
|
-
export interface SheetSnapshot<TMap extends Record<string, unknown>> {
|
|
94
|
-
stack: SheetItem<Extract<keyof TMap, string>>[];
|
|
95
|
-
isOpen: boolean;
|
|
96
|
-
}
|
|
97
|
-
export interface SheetActions<TMap extends Record<string, unknown>> {
|
|
98
|
-
/** Replace stack with a single item */
|
|
99
|
-
open<K extends Extract<keyof TMap, string>>(type: K, id: string, data: TMap[K]): void;
|
|
100
|
-
/** Push onto stack (replaces top at maxDepth) */
|
|
101
|
-
push<K extends Extract<keyof TMap, string>>(type: K, id: string, data: TMap[K]): void;
|
|
102
|
-
/** Swap the top item */
|
|
103
|
-
replace<K extends Extract<keyof TMap, string>>(type: K, id: string, data: TMap[K]): void;
|
|
104
|
-
/** Smart: empty→open, same type on top→replace, different→push */
|
|
105
|
-
navigate<K extends Extract<keyof TMap, string>>(type: K, id: string, data: TMap[K]): void;
|
|
106
|
-
/** Pop top item; close if last */
|
|
107
|
-
pop(): void;
|
|
108
|
-
/** Clear entire stack */
|
|
109
|
-
close(): void;
|
|
110
|
-
}
|
|
111
|
-
export interface SheetProviderProps<TMap extends Record<string, unknown>> {
|
|
112
|
-
content: ContentMap<TMap>;
|
|
113
|
-
children: ReactNode;
|
|
114
|
-
/** CSS class overrides for backdrop, panel, and header */
|
|
115
|
-
classNames?: SheetClassNames;
|
|
116
|
-
/** Custom header renderer — replaces the default back/close buttons */
|
|
117
|
-
renderHeader?: (props: HeaderRenderProps) => ReactNode;
|
|
118
|
-
}
|
|
119
|
-
export interface SheetStackInstance<TMap extends Record<string, unknown>> {
|
|
120
|
-
/** Provider component — wrap your app, pass content map */
|
|
121
|
-
SheetProvider: ComponentType<SheetProviderProps<TMap>>;
|
|
122
|
-
/** Hook returning sheet actions */
|
|
123
|
-
useSheet: () => SheetActions<TMap>;
|
|
124
|
-
/** Hook returning sheet state (stack, isOpen) */
|
|
125
|
-
useSheetState: () => SheetSnapshot<TMap>;
|
|
126
|
-
/** Raw Zustand store for advanced use */
|
|
127
|
-
store: import("zustand").StoreApi<SheetSnapshot<TMap> & SheetActions<TMap>>;
|
|
128
|
-
}
|
|
129
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|