@patternmode/stacksheet 1.3.3
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/LICENSE +21 -0
- package/README.md +191 -0
- package/dist/Drag/DragConstants.d.ts +9 -0
- package/dist/Drag/DragConstants.d.ts.map +1 -0
- package/dist/Drag/DragGeometry.d.ts +34 -0
- package/dist/Drag/DragGeometry.d.ts.map +1 -0
- package/dist/Drag/DragTypes.d.ts +34 -0
- package/dist/Drag/DragTypes.d.ts.map +1 -0
- package/dist/Drag/index.d.ts +3 -0
- package/dist/Drag/index.d.ts.map +1 -0
- package/dist/Drag/useDrag.d.ts +20 -0
- package/dist/Drag/useDrag.d.ts.map +1 -0
- package/dist/SheetPanel/DefaultHeader.d.ts +5 -0
- package/dist/SheetPanel/DefaultHeader.d.ts.map +1 -0
- package/dist/SheetPanel/SheetPanel.d.ts +3 -0
- package/dist/SheetPanel/SheetPanel.d.ts.map +1 -0
- package/dist/SheetPanel/SheetPanelContent.d.ts +13 -0
- package/dist/SheetPanel/SheetPanelContent.d.ts.map +1 -0
- package/dist/SheetPanel/SheetPanelFocus.d.ts +8 -0
- package/dist/SheetPanel/SheetPanelFocus.d.ts.map +1 -0
- package/dist/SheetPanel/SheetPanelHandles.d.ts +10 -0
- package/dist/SheetPanel/SheetPanelHandles.d.ts.map +1 -0
- package/dist/SheetPanel/SheetPanelTypes.d.ts +31 -0
- package/dist/SheetPanel/SheetPanelTypes.d.ts.map +1 -0
- package/dist/SheetPanel/index.d.ts +3 -0
- package/dist/SheetPanel/index.d.ts.map +1 -0
- package/dist/SheetParts/SheetBack.d.ts +3 -0
- package/dist/SheetParts/SheetBack.d.ts.map +1 -0
- package/dist/SheetParts/SheetBody.d.ts +3 -0
- package/dist/SheetParts/SheetBody.d.ts.map +1 -0
- package/dist/SheetParts/SheetClose.d.ts +3 -0
- package/dist/SheetParts/SheetClose.d.ts.map +1 -0
- package/dist/SheetParts/SheetDescription.d.ts +3 -0
- package/dist/SheetParts/SheetDescription.d.ts.map +1 -0
- package/dist/SheetParts/SheetFooter.d.ts +3 -0
- package/dist/SheetParts/SheetFooter.d.ts.map +1 -0
- package/dist/SheetParts/SheetHandle.d.ts +3 -0
- package/dist/SheetParts/SheetHandle.d.ts.map +1 -0
- package/dist/SheetParts/SheetHeader.d.ts +3 -0
- package/dist/SheetParts/SheetHeader.d.ts.map +1 -0
- package/dist/SheetParts/SheetPartTypes.d.ts +22 -0
- package/dist/SheetParts/SheetPartTypes.d.ts.map +1 -0
- package/dist/SheetParts/SheetParts.d.ts +28 -0
- package/dist/SheetParts/SheetParts.d.ts.map +1 -0
- package/dist/SheetParts/SheetTitle.d.ts +3 -0
- package/dist/SheetParts/SheetTitle.d.ts.map +1 -0
- package/dist/SheetParts/index.d.ts +11 -0
- package/dist/SheetParts/index.d.ts.map +1 -0
- package/dist/Store/StoreArgs.d.ts +15 -0
- package/dist/Store/StoreArgs.d.ts.map +1 -0
- package/dist/Store/StoreTypes.d.ts +21 -0
- package/dist/Store/StoreTypes.d.ts.map +1 -0
- package/dist/Store/createSheetStore.d.ts +15 -0
- package/dist/Store/createSheetStore.d.ts.map +1 -0
- package/dist/Store/index.d.ts +3 -0
- package/dist/Store/index.d.ts.map +1 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/create.d.ts +33 -0
- package/dist/create.d.ts.map +1 -0
- package/dist/icons.d.ts +4 -0
- package/dist/icons.d.ts.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +1732 -0
- package/dist/index.mjs.map +1 -0
- package/dist/media.d.ts +9 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/panel-context.d.ts +26 -0
- package/dist/panel-context.d.ts.map +1 -0
- package/dist/parts.d.ts +11 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/renderer-effects.d.ts +6 -0
- package/dist/renderer-effects.d.ts.map +1 -0
- package/dist/renderer-helpers.d.ts +53 -0
- package/dist/renderer-helpers.d.ts.map +1 -0
- package/dist/renderer.d.ts +29 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/sheet-panel.d.ts +3 -0
- package/dist/sheet-panel.d.ts.map +1 -0
- package/dist/snap-points.d.ts +22 -0
- package/dist/snap-points.d.ts.map +1 -0
- package/dist/springs.d.ts +26 -0
- package/dist/springs.d.ts.map +1 -0
- package/dist/stacking.d.ts +38 -0
- package/dist/stacking.d.ts.map +1 -0
- package/dist/store.d.ts +3 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/styles.css +2 -0
- package/dist/types.d.ts +232 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/use-drag.d.ts +3 -0
- package/dist/use-drag.d.ts.map +1 -0
- package/package.json +90 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Daniel Howells
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# Stacksheet
|
|
2
|
+
|
|
3
|
+
Typed, animated sheet stacking for React.
|
|
4
|
+
|
|
5
|
+
Stacksheet gives you a provider and a hook for opening, pushing, replacing, and navigating Sheets from anywhere in your app. It handles the motion, layering, focus management, scroll locking, and mobile/desktop presentation details for you.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @patternmode/stacksheet
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Peer dependencies: `react >= 18`, `react-dom >= 18`.
|
|
12
|
+
|
|
13
|
+
## What it includes
|
|
14
|
+
|
|
15
|
+
- Direct-component API: `open(Component, props)`
|
|
16
|
+
- Optional type registry for large apps: `open("user-profile", "u1", data)`
|
|
17
|
+
- Stacked navigation: `open`, `push`, `replace`, `swap`, `navigate`, `pop`, `close`
|
|
18
|
+
- Desktop side Sheets and mobile bottom Sheets from one API
|
|
19
|
+
- Built-in focus trapping, Escape handling, scroll lock, and Android back gesture support
|
|
20
|
+
- Drag, Swipe, and Snap Point behavior for bottom Sheets
|
|
21
|
+
- Classic Layout with auto header, or Composable Layout with `Sheet.*` Sheet Parts
|
|
22
|
+
|
|
23
|
+
## Quick start
|
|
24
|
+
|
|
25
|
+
Create a sheet instance once and use it across your app:
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
import { createStacksheet } from "@patternmode/stacksheet";
|
|
29
|
+
import "@patternmode/stacksheet/styles.css";
|
|
30
|
+
|
|
31
|
+
export const { StacksheetProvider, useSheet } = createStacksheet();
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Wrap your app:
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
import { StacksheetProvider } from "./sheets";
|
|
38
|
+
|
|
39
|
+
export function App() {
|
|
40
|
+
return (
|
|
41
|
+
<StacksheetProvider>
|
|
42
|
+
<YourRoutes />
|
|
43
|
+
</StacksheetProvider>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Open a sheet from any component:
|
|
49
|
+
|
|
50
|
+
```tsx
|
|
51
|
+
import { useSheet } from "./sheets";
|
|
52
|
+
|
|
53
|
+
function UserProfile({ userId }: { userId: string }) {
|
|
54
|
+
const { close } = useSheet();
|
|
55
|
+
|
|
56
|
+
return (
|
|
57
|
+
<div>
|
|
58
|
+
<h2>User {userId}</h2>
|
|
59
|
+
<button onClick={close}>Done</button>
|
|
60
|
+
</div>
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function ViewProfileButton() {
|
|
65
|
+
const { open } = useSheet();
|
|
66
|
+
|
|
67
|
+
return (
|
|
68
|
+
<button onClick={() => open(UserProfile, { userId: "u_abc" })}>
|
|
69
|
+
View profile
|
|
70
|
+
</button>
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Typed registry mode
|
|
76
|
+
|
|
77
|
+
If your app has a fixed set of known sheet types, you can pre-register them for string-keyed, compile-time checked actions:
|
|
78
|
+
|
|
79
|
+
```tsx
|
|
80
|
+
import { createStacksheet } from "@patternmode/stacksheet";
|
|
81
|
+
|
|
82
|
+
const { StacksheetProvider, useSheet } = createStacksheet<{
|
|
83
|
+
"user-profile": { userId: string };
|
|
84
|
+
settings: { tab?: string };
|
|
85
|
+
}>();
|
|
86
|
+
|
|
87
|
+
function UserProfile({ userId }: { userId: string }) {
|
|
88
|
+
return <div>User {userId}</div>;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function Settings({ tab }: { tab?: string }) {
|
|
92
|
+
return <div>Settings: {tab}</div>;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function App() {
|
|
96
|
+
return (
|
|
97
|
+
<StacksheetProvider
|
|
98
|
+
sheets={{
|
|
99
|
+
"user-profile": UserProfile,
|
|
100
|
+
settings: Settings,
|
|
101
|
+
}}
|
|
102
|
+
>
|
|
103
|
+
<YourRoutes />
|
|
104
|
+
</StacksheetProvider>
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function OpenSettingsButton() {
|
|
109
|
+
const { open } = useSheet();
|
|
110
|
+
return (
|
|
111
|
+
<button onClick={() => open("settings", "settings-root", { tab: "billing" })}>
|
|
112
|
+
Open settings
|
|
113
|
+
</button>
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Composable layout
|
|
119
|
+
|
|
120
|
+
Classic mode is the default: Stacksheet owns the standard Panel chrome and header around your Sheet content.
|
|
121
|
+
|
|
122
|
+
If you want full control over Sheet structure, use `layout="composable"` and build the Sheet with exported Sheet Parts:
|
|
123
|
+
|
|
124
|
+
```tsx
|
|
125
|
+
import { Sheet } from "@patternmode/stacksheet";
|
|
126
|
+
|
|
127
|
+
function App() {
|
|
128
|
+
return (
|
|
129
|
+
<StacksheetProvider layout="composable">
|
|
130
|
+
<YourRoutes />
|
|
131
|
+
</StacksheetProvider>
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function SettingsSheet() {
|
|
136
|
+
return (
|
|
137
|
+
<>
|
|
138
|
+
<Sheet.Handle />
|
|
139
|
+
<Sheet.Header>
|
|
140
|
+
<Sheet.Back />
|
|
141
|
+
<Sheet.Title>Settings</Sheet.Title>
|
|
142
|
+
<Sheet.Close />
|
|
143
|
+
</Sheet.Header>
|
|
144
|
+
<Sheet.Body>
|
|
145
|
+
<div className="p-4">Sheet content</div>
|
|
146
|
+
</Sheet.Body>
|
|
147
|
+
</>
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
For custom controls and Sheet metadata inside a Sheet, use `useSheetPanel()`.
|
|
153
|
+
|
|
154
|
+
## Accessibility
|
|
155
|
+
|
|
156
|
+
The default Panel is rendered as a dialog with focus management, keyboard navigation, and focus restoration built in.
|
|
157
|
+
|
|
158
|
+
You can set a global label:
|
|
159
|
+
|
|
160
|
+
```tsx
|
|
161
|
+
createStacksheet({ ariaLabel: "Settings Sheet" });
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Or override it per sheet:
|
|
165
|
+
|
|
166
|
+
```tsx
|
|
167
|
+
const { open } = useSheet();
|
|
168
|
+
|
|
169
|
+
open(UserProfile, { userId: "u_abc" }, { ariaLabel: "User profile for Jane" });
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
In composable mode, use `Sheet.Title` and `Sheet.Description` so the Panel gets `aria-labelledby` and `aria-describedby` automatically.
|
|
173
|
+
|
|
174
|
+
## Documentation
|
|
175
|
+
|
|
176
|
+
Full docs, interactive playground, and API reference:
|
|
177
|
+
|
|
178
|
+
**[stacksheet.danielhowells.com](https://stacksheet.danielhowells.com)**
|
|
179
|
+
|
|
180
|
+
- [Getting Started](https://stacksheet.danielhowells.com/docs)
|
|
181
|
+
- [Hooks](https://stacksheet.danielhowells.com/docs/hooks)
|
|
182
|
+
- [Configuration](https://stacksheet.danielhowells.com/docs/config)
|
|
183
|
+
- [Composable Parts](https://stacksheet.danielhowells.com/docs/composable-parts)
|
|
184
|
+
- [Accessibility](https://stacksheet.danielhowells.com/docs/accessibility)
|
|
185
|
+
- [Drag and Dismissal](https://stacksheet.danielhowells.com/docs/drag-to-dismiss)
|
|
186
|
+
- [Styling](https://stacksheet.danielhowells.com/docs/styling)
|
|
187
|
+
- [Type Registry](https://stacksheet.danielhowells.com/docs/type-registry)
|
|
188
|
+
|
|
189
|
+
## License
|
|
190
|
+
|
|
191
|
+
MIT
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Elements that should never initiate a drag */
|
|
2
|
+
export declare const INTERACTIVE_TAGS: Set<string>;
|
|
3
|
+
/** Dead zone in px before committing to drag vs text selection */
|
|
4
|
+
export declare const DEAD_ZONE = 10;
|
|
5
|
+
/** Max angle (degrees) from dismiss axis to qualify as drag intent */
|
|
6
|
+
export declare const MAX_ANGLE_DEG = 35;
|
|
7
|
+
/** Rubber-band resistance factor for dragging past resting position */
|
|
8
|
+
export declare const RUBBER_BAND_FACTOR = 0.6;
|
|
9
|
+
//# sourceMappingURL=DragConstants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DragConstants.d.ts","sourceRoot":"","sources":["../../src/Drag/DragConstants.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,eAAO,MAAM,gBAAgB,aAM3B,CAAC;AAEH,kEAAkE;AAClE,eAAO,MAAM,SAAS,KAAK,CAAC;AAE5B,sEAAsE;AACtE,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,MAAM,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Side } from "../types";
|
|
2
|
+
import type { DragAxis, DragSign } from "./DragTypes";
|
|
3
|
+
export declare function isInteractiveElement(el: Element): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Walk up from `el` to find the nearest scrollable ancestor.
|
|
6
|
+
* Returns null if nothing is scrollable in the dismiss axis.
|
|
7
|
+
*/
|
|
8
|
+
export declare function findScrollableAncestor(el: Element, axis: DragAxis): Element | null;
|
|
9
|
+
/**
|
|
10
|
+
* Check if a scrollable element is at its edge in the dismiss direction.
|
|
11
|
+
* For bottom sheets (sign=1, axis=y), "at edge" means scrolled to top.
|
|
12
|
+
* For left panels (sign=-1, axis=x), "at edge" means scrolled to right end.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isAtScrollEdge(el: Element, axis: DragAxis, sign: DragSign): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Get the dismiss direction axis and sign for a given side.
|
|
17
|
+
* - right panel → dismiss by dragging right (+x)
|
|
18
|
+
* - left panel → dismiss by dragging left (-x)
|
|
19
|
+
* - bottom panel → dismiss by dragging down (+y)
|
|
20
|
+
*/
|
|
21
|
+
export declare function getDismissAxis(side: Side): {
|
|
22
|
+
axis: DragAxis;
|
|
23
|
+
sign: DragSign;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Decide whether a gesture past the dead zone qualifies as a dismiss drag.
|
|
27
|
+
* Returns "drag" if it's a valid dismiss gesture, "none" if it's off-axis
|
|
28
|
+
* or moving in the wrong direction.
|
|
29
|
+
*/
|
|
30
|
+
export declare function classifyGesture(dx: number, dy: number, axis: DragAxis, sign: DragSign): "drag" | "none";
|
|
31
|
+
/** Decide whether a pointer gesture commits as a drag or should be ignored. */
|
|
32
|
+
export declare function commitGesture(dx: number, dy: number, axis: DragAxis, sign: DragSign, scrollEl: Element | null): "drag" | "none";
|
|
33
|
+
export declare function getPanelDimension(panel: HTMLDivElement | null, axis: DragAxis): number;
|
|
34
|
+
//# sourceMappingURL=DragGeometry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DragGeometry.d.ts","sourceRoot":"","sources":["../../src/Drag/DragGeometry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAezD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,QAAQ,GACZ,OAAO,GAAG,IAAI,CAmBhB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC7B,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,QAAQ,GACZ,OAAO,CAWT;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG;IAC3C,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;CACf,CAWA;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC9B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,QAAQ,GACZ,MAAM,GAAG,MAAM,CAuBjB;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAC5B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,OAAO,GAAG,IAAI,GACtB,MAAM,GAAG,MAAM,CASjB;AAED,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,cAAc,GAAG,IAAI,EAC5B,IAAI,EAAE,QAAQ,GACZ,MAAM,CAKR"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Side } from "../types";
|
|
2
|
+
export interface DragConfig {
|
|
3
|
+
/** Current active snap point index */
|
|
4
|
+
activeSnapIndex: number;
|
|
5
|
+
/** Fraction of panel dimension to trigger close (0-1). Default: 0.25 */
|
|
6
|
+
closeThreshold: number;
|
|
7
|
+
/** Enable drag-driven dismissal. Default: true */
|
|
8
|
+
enabled: boolean;
|
|
9
|
+
/** Whether the stack has >1 sheet (swipe pops instead of closing) */
|
|
10
|
+
isNested: boolean;
|
|
11
|
+
/** Callback when drag ends and close should fire */
|
|
12
|
+
onClose: () => void;
|
|
13
|
+
/** Callback when drag ends and pop should fire */
|
|
14
|
+
onPop: () => void;
|
|
15
|
+
/** Called when snap target changes on release */
|
|
16
|
+
onSnap: (index: number) => void;
|
|
17
|
+
/** When true, can't skip intermediate snap points */
|
|
18
|
+
sequential: boolean;
|
|
19
|
+
/** Side the panel is on — determines drag direction */
|
|
20
|
+
side: Side;
|
|
21
|
+
/** Resolved snap point heights in px (sorted ascending). Empty = no snap points. */
|
|
22
|
+
snapHeights: number[];
|
|
23
|
+
/** Velocity threshold (px/ms) to trigger close. Default: 0.5 */
|
|
24
|
+
velocityThreshold: number;
|
|
25
|
+
}
|
|
26
|
+
export interface DragState {
|
|
27
|
+
/** Whether a drag is currently active */
|
|
28
|
+
isDragging: boolean;
|
|
29
|
+
/** Current drag offset in the dismiss direction (px) */
|
|
30
|
+
offset: number;
|
|
31
|
+
}
|
|
32
|
+
export type DragAxis = "x" | "y";
|
|
33
|
+
export type DragSign = 1 | -1;
|
|
34
|
+
//# sourceMappingURL=DragTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DragTypes.d.ts","sourceRoot":"","sources":["../../src/Drag/DragTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,WAAW,UAAU;IAC1B,sCAAsC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,QAAQ,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kDAAkD;IAClD,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,iDAAiD;IACjD,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,qDAAqD;IACrD,UAAU,EAAE,OAAO,CAAC;IACpB,uDAAuD;IACvD,IAAI,EAAE,IAAI,CAAC;IACX,oFAAoF;IACpF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gEAAgE;IAChE,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACzB,yCAAyC;IACzC,UAAU,EAAE,OAAO,CAAC;IACpB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;AACjC,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Drag/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
import type { DragConfig, DragState } from "./DragTypes";
|
|
3
|
+
/**
|
|
4
|
+
* Hook that manages drag gestures that can dismiss a sheet panel.
|
|
5
|
+
*
|
|
6
|
+
* Gesture pipeline:
|
|
7
|
+
* 1. Dead zone (10px) — ignores micro-movements
|
|
8
|
+
* 2. Angle check (35°) — must be roughly aligned with dismiss axis
|
|
9
|
+
* 3. Scroll conflict — yields to scrollable containers not at edge
|
|
10
|
+
* 4. Commit — drag is active, applies offset via `onDragUpdate`
|
|
11
|
+
* 5. Release — velocity + threshold determine close/snap/bounce-back
|
|
12
|
+
*
|
|
13
|
+
* Opposite-direction drag uses √(offset) damping for elastic
|
|
14
|
+
* rubber-band resistance (same physics as iOS over-scroll).
|
|
15
|
+
*
|
|
16
|
+
* When `snapHeights` is provided, release targeting uses
|
|
17
|
+
* `findSnapTarget()` instead of the simple threshold check.
|
|
18
|
+
*/
|
|
19
|
+
export declare function useDrag(panelRef: RefObject<HTMLDivElement | null>, config: DragConfig, onDragUpdate: (state: DragState) => void): void;
|
|
20
|
+
//# sourceMappingURL=useDrag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDrag.d.ts","sourceRoot":"","sources":["../../src/Drag/useDrag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAkC,MAAM,OAAO,CAAC;AAUvE,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CACtB,QAAQ,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,EAC1C,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,QAkMxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultHeader.d.ts","sourceRoot":"","sources":["../../src/SheetPanel/DefaultHeader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,wBAAgB,aAAa,CAAC,EAC7B,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,GACT,EAAE,iBAAiB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CA2B5C"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { SheetPanelProps } from "./SheetPanelTypes";
|
|
2
|
+
export declare const SheetPanel: import("react").MemoExoticComponent<({ item, index, depth, isTop, isNested, side, config, classNames, Content, shouldRender, pop, close, swipeClose, swipePop, snapHeights, activeSnapIndex, onSnap, layout, renderHeader, slideFrom, slideTarget, spring, stackSpring, prefersReducedMotion, }: SheetPanelProps) => import("react/jsx-runtime").JSX.Element>;
|
|
3
|
+
//# sourceMappingURL=SheetPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetPanel.d.ts","sourceRoot":"","sources":["../../src/SheetPanel/SheetPanel.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,eAAO,MAAM,UAAU,mSAyBpB,eAAe,6CAoNhB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ComponentType, type ReactNode } from "react";
|
|
2
|
+
import type { HeaderRenderProps, StacksheetLayout } from "../types";
|
|
3
|
+
export declare const PanelInnerContent: import("react").MemoExoticComponent<({ isComposable, shouldRender, Content, data, renderHeader, headerProps, headerClassName, }: {
|
|
4
|
+
isComposable: boolean;
|
|
5
|
+
shouldRender: boolean;
|
|
6
|
+
Content: ComponentType<any> | undefined;
|
|
7
|
+
data: Record<string, unknown>;
|
|
8
|
+
renderHeader?: false | ((props: HeaderRenderProps) => ReactNode);
|
|
9
|
+
headerProps: HeaderRenderProps;
|
|
10
|
+
headerClassName: string | undefined;
|
|
11
|
+
}) => import("react/jsx-runtime").JSX.Element | null>;
|
|
12
|
+
export declare function resolvePanelLayout(layout: StacksheetLayout | undefined, renderHeader?: false | ((props: HeaderRenderProps) => ReactNode)): StacksheetLayout;
|
|
13
|
+
//# sourceMappingURL=SheetPanelContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetPanelContent.d.ts","sourceRoot":"","sources":["../../src/SheetPanel/SheetPanelContent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAQ,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGpE,eAAO,MAAM,iBAAiB,mIAQ3B;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IAEtB,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC;IACjE,WAAW,EAAE,iBAAiB,CAAC;IAC/B,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,oDAsBC,CAAC;AAIH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,YAAY,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,iBAAiB,KAAK,SAAS,CAAC,GAC9D,gBAAgB,CAKlB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ReactNode, RefObject } from "react";
|
|
2
|
+
export declare function ModalFocusTrap({ enabled, active, fallbackRef, children, }: {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
active: boolean;
|
|
5
|
+
fallbackRef: RefObject<HTMLElement | null>;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
|
|
8
|
+
//# sourceMappingURL=SheetPanelFocus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetPanelFocus.d.ts","sourceRoot":"","sources":["../../src/SheetPanel/SheetPanelFocus.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAUlD,wBAAgB,cAAc,CAAC,EAC9B,OAAO,EACP,MAAM,EACN,WAAW,EACX,QAAQ,GACR,EAAE;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC3C,QAAQ,EAAE,SAAS,CAAC;CACpB,2UA8BA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Side } from "../types";
|
|
2
|
+
export declare function BottomHandle({ onDismiss }: {
|
|
3
|
+
onDismiss?: () => void;
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare function SideHandle({ side, isHovered, onDismiss, }: {
|
|
6
|
+
side: Side;
|
|
7
|
+
isHovered: boolean;
|
|
8
|
+
onDismiss?: () => void;
|
|
9
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=SheetPanelHandles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetPanelHandles.d.ts","sourceRoot":"","sources":["../../src/SheetPanel/SheetPanelHandles.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,2CAerE;AAED,wBAAgB,UAAU,CAAC,EAC1B,IAAI,EACJ,SAAS,EACT,SAAS,GACT,EAAE;IACF,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,2CAyBA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ComponentType, ReactNode } from "react";
|
|
2
|
+
import type { ResolvedClassNames } from "../renderer-helpers";
|
|
3
|
+
import type { SlideValues } from "../stacking";
|
|
4
|
+
import type { HeaderRenderProps, ResolvedConfig, SheetItem, Side, StacksheetLayout } from "../types";
|
|
5
|
+
export interface SheetPanelProps {
|
|
6
|
+
activeSnapIndex: number;
|
|
7
|
+
Content: ComponentType<any> | undefined;
|
|
8
|
+
classNames: ResolvedClassNames;
|
|
9
|
+
close: () => void;
|
|
10
|
+
config: ResolvedConfig;
|
|
11
|
+
depth: number;
|
|
12
|
+
index: number;
|
|
13
|
+
isNested: boolean;
|
|
14
|
+
isTop: boolean;
|
|
15
|
+
item: SheetItem;
|
|
16
|
+
layout?: StacksheetLayout;
|
|
17
|
+
onSnap: (index: number) => void;
|
|
18
|
+
pop: () => void;
|
|
19
|
+
prefersReducedMotion: boolean;
|
|
20
|
+
renderHeader?: false | ((props: HeaderRenderProps) => ReactNode);
|
|
21
|
+
shouldRender: boolean;
|
|
22
|
+
side: Side;
|
|
23
|
+
slideFrom: SlideValues;
|
|
24
|
+
slideTarget: SlideValues;
|
|
25
|
+
snapHeights: number[];
|
|
26
|
+
spring: Record<string, unknown>;
|
|
27
|
+
stackSpring: Record<string, unknown>;
|
|
28
|
+
swipeClose: () => void;
|
|
29
|
+
swipePop: () => void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=SheetPanelTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetPanelTypes.d.ts","sourceRoot":"","sources":["../../src/SheetPanel/SheetPanelTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EACX,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,IAAI,EACJ,gBAAgB,EAChB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,eAAe;IAC/B,eAAe,EAAE,MAAM,CAAC;IAExB,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACxC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC;IACjE,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,WAAW,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/SheetPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetBack.d.ts","sourceRoot":"","sources":["../../src/SheetParts/SheetBack.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAEtE,wBAAgB,SAAS,CAAC,EACzB,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,GACR,EAAE,6BAA6B,kDAsB/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetBody.d.ts","sourceRoot":"","sources":["../../src/SheetParts/SheetBody.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,wBAAgB,SAAS,CAAC,EACzB,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,GACR,EAAE,cAAc,2CAkChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetClose.d.ts","sourceRoot":"","sources":["../../src/SheetParts/SheetClose.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAEtE,wBAAgB,UAAU,CAAC,EAC1B,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,GACR,EAAE,6BAA6B,2CAiB/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetDescription.d.ts","sourceRoot":"","sources":["../../src/SheetParts/SheetDescription.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,wBAAgB,gBAAgB,CAAC,EAChC,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,GACR,EAAE,cAAc,2CAUhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetFooter.d.ts","sourceRoot":"","sources":["../../src/SheetParts/SheetFooter.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,wBAAgB,WAAW,CAAC,EAC3B,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,GACR,EAAE,cAAc,2CAUhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetHandle.d.ts","sourceRoot":"","sources":["../../src/SheetParts/SheetHandle.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAEtE,wBAAgB,WAAW,CAAC,EAC3B,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,GACR,EAAE,6BAA6B,2CA4B/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetHeader.d.ts","sourceRoot":"","sources":["../../src/SheetParts/SheetHeader.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,wBAAgB,WAAW,CAAC,EAC3B,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,GACR,EAAE,cAAc,2CAYhB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CSSProperties, ReactNode } from "react";
|
|
2
|
+
export interface SheetPartProps {
|
|
3
|
+
asChild?: boolean;
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
className?: string;
|
|
6
|
+
style?: CSSProperties;
|
|
7
|
+
}
|
|
8
|
+
export interface SheetOptionalContentPartProps {
|
|
9
|
+
asChild?: boolean;
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
className?: string;
|
|
12
|
+
style?: CSSProperties;
|
|
13
|
+
}
|
|
14
|
+
export type SheetBackProps = SheetOptionalContentPartProps;
|
|
15
|
+
export type SheetBodyProps = SheetPartProps;
|
|
16
|
+
export type SheetCloseProps = SheetOptionalContentPartProps;
|
|
17
|
+
export type SheetDescriptionProps = SheetPartProps;
|
|
18
|
+
export type SheetFooterProps = SheetPartProps;
|
|
19
|
+
export type SheetHandleProps = SheetOptionalContentPartProps;
|
|
20
|
+
export type SheetHeaderProps = SheetPartProps;
|
|
21
|
+
export type SheetTitleProps = SheetPartProps;
|
|
22
|
+
//# sourceMappingURL=SheetPartTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetPartTypes.d.ts","sourceRoot":"","sources":["../../src/SheetParts/SheetPartTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,6BAA6B;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GAAG,6BAA6B,CAAC;AAC3D,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC;AAC5C,MAAM,MAAM,eAAe,GAAG,6BAA6B,CAAC;AAC5D,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAAC;AACnD,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAC9C,MAAM,MAAM,gBAAgB,GAAG,6BAA6B,CAAC;AAC7D,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAC9C,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SheetBack } from "./SheetBack";
|
|
2
|
+
import { SheetBody } from "./SheetBody";
|
|
3
|
+
import { SheetClose } from "./SheetClose";
|
|
4
|
+
import { SheetDescription } from "./SheetDescription";
|
|
5
|
+
import { SheetFooter } from "./SheetFooter";
|
|
6
|
+
import { SheetHandle } from "./SheetHandle";
|
|
7
|
+
import { SheetHeader } from "./SheetHeader";
|
|
8
|
+
import { SheetTitle } from "./SheetTitle";
|
|
9
|
+
/**
|
|
10
|
+
* Composable Sheet Parts for building custom Sheet layouts.
|
|
11
|
+
*
|
|
12
|
+
* Use with `layout="composable"` on the provider to opt into composable mode:
|
|
13
|
+
* no auto header or scroll wrapper, full control over the Sheet structure.
|
|
14
|
+
*
|
|
15
|
+
* `Sheet.Title` and `Sheet.Description` are linked to the Panel's
|
|
16
|
+
* `aria-labelledby` and `aria-describedby` via matching IDs.
|
|
17
|
+
*/
|
|
18
|
+
export declare const Sheet: {
|
|
19
|
+
readonly Back: typeof SheetBack;
|
|
20
|
+
readonly Body: typeof SheetBody;
|
|
21
|
+
readonly Close: typeof SheetClose;
|
|
22
|
+
readonly Description: typeof SheetDescription;
|
|
23
|
+
readonly Footer: typeof SheetFooter;
|
|
24
|
+
readonly Handle: typeof SheetHandle;
|
|
25
|
+
readonly Header: typeof SheetHeader;
|
|
26
|
+
readonly Title: typeof SheetTitle;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=SheetParts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetParts.d.ts","sourceRoot":"","sources":["../../src/SheetParts/SheetParts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK;;;;;;;;;CASR,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetTitle.d.ts","sourceRoot":"","sources":["../../src/SheetParts/SheetTitle.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,wBAAgB,UAAU,CAAC,EAC1B,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,GACR,EAAE,cAAc,2CAahB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { SheetBack } from "./SheetBack";
|
|
2
|
+
export { SheetBody } from "./SheetBody";
|
|
3
|
+
export { SheetClose } from "./SheetClose";
|
|
4
|
+
export { SheetDescription } from "./SheetDescription";
|
|
5
|
+
export { SheetFooter } from "./SheetFooter";
|
|
6
|
+
export { SheetHandle } from "./SheetHandle";
|
|
7
|
+
export { SheetHeader } from "./SheetHeader";
|
|
8
|
+
export { Sheet } from "./SheetParts";
|
|
9
|
+
export type { SheetBackProps, SheetBodyProps, SheetCloseProps, SheetDescriptionProps, SheetFooterProps, SheetHandleProps, SheetHeaderProps, SheetOptionalContentPartProps, SheetPartProps, SheetTitleProps, } from "./SheetPartTypes";
|
|
10
|
+
export { SheetTitle } from "./SheetTitle";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/SheetParts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,YAAY,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,6BAA6B,EAC7B,cAAc,EACd,eAAe,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { SheetPresentationOptions } from "../types";
|
|
2
|
+
import type { AnyComponent, ResolvedItem } from "./StoreTypes";
|
|
3
|
+
export declare function resolvePresentationOptions(value: unknown): SheetPresentationOptions | undefined;
|
|
4
|
+
/**
|
|
5
|
+
* Dev-mode warning: detect likely inline arrow functions passed as ad-hoc components.
|
|
6
|
+
* When a new component reference has the same displayName/name as an existing one,
|
|
7
|
+
* it's almost always an inline arrow being re-created every render.
|
|
8
|
+
*/
|
|
9
|
+
export declare function warnInlineComponent(component: AnyComponent, componentRegistry: Map<AnyComponent, string>, warnedNames: Set<string>): void;
|
|
10
|
+
/**
|
|
11
|
+
* If `first` is a function (component), register it and return { type, id, data }.
|
|
12
|
+
* Otherwise, pass through the string-based (type, id, data) args unchanged.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveArgs(componentRegistry: Map<AnyComponent, string>, componentMap: Map<string, AnyComponent>, getNextKey: () => string, warnedNames: Set<string>, first: unknown, second: unknown, third: unknown, fourth?: unknown): ResolvedItem;
|
|
15
|
+
//# sourceMappingURL=StoreArgs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StoreArgs.d.ts","sourceRoot":"","sources":["../../src/Store/StoreArgs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE/D,wBAAgB,0BAA0B,CACzC,KAAK,EAAE,OAAO,GACZ,wBAAwB,GAAG,SAAS,CAYtC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAClC,SAAS,EAAE,YAAY,EACvB,iBAAiB,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,EAC5C,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GACtB,IAAI,CA8BN;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAC1B,iBAAiB,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,EAC5C,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACvC,UAAU,EAAE,MAAM,MAAM,EACxB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,OAAO,GACd,YAAY,CAkCd"}
|