@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.
Files changed (94) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +191 -0
  3. package/dist/Drag/DragConstants.d.ts +9 -0
  4. package/dist/Drag/DragConstants.d.ts.map +1 -0
  5. package/dist/Drag/DragGeometry.d.ts +34 -0
  6. package/dist/Drag/DragGeometry.d.ts.map +1 -0
  7. package/dist/Drag/DragTypes.d.ts +34 -0
  8. package/dist/Drag/DragTypes.d.ts.map +1 -0
  9. package/dist/Drag/index.d.ts +3 -0
  10. package/dist/Drag/index.d.ts.map +1 -0
  11. package/dist/Drag/useDrag.d.ts +20 -0
  12. package/dist/Drag/useDrag.d.ts.map +1 -0
  13. package/dist/SheetPanel/DefaultHeader.d.ts +5 -0
  14. package/dist/SheetPanel/DefaultHeader.d.ts.map +1 -0
  15. package/dist/SheetPanel/SheetPanel.d.ts +3 -0
  16. package/dist/SheetPanel/SheetPanel.d.ts.map +1 -0
  17. package/dist/SheetPanel/SheetPanelContent.d.ts +13 -0
  18. package/dist/SheetPanel/SheetPanelContent.d.ts.map +1 -0
  19. package/dist/SheetPanel/SheetPanelFocus.d.ts +8 -0
  20. package/dist/SheetPanel/SheetPanelFocus.d.ts.map +1 -0
  21. package/dist/SheetPanel/SheetPanelHandles.d.ts +10 -0
  22. package/dist/SheetPanel/SheetPanelHandles.d.ts.map +1 -0
  23. package/dist/SheetPanel/SheetPanelTypes.d.ts +31 -0
  24. package/dist/SheetPanel/SheetPanelTypes.d.ts.map +1 -0
  25. package/dist/SheetPanel/index.d.ts +3 -0
  26. package/dist/SheetPanel/index.d.ts.map +1 -0
  27. package/dist/SheetParts/SheetBack.d.ts +3 -0
  28. package/dist/SheetParts/SheetBack.d.ts.map +1 -0
  29. package/dist/SheetParts/SheetBody.d.ts +3 -0
  30. package/dist/SheetParts/SheetBody.d.ts.map +1 -0
  31. package/dist/SheetParts/SheetClose.d.ts +3 -0
  32. package/dist/SheetParts/SheetClose.d.ts.map +1 -0
  33. package/dist/SheetParts/SheetDescription.d.ts +3 -0
  34. package/dist/SheetParts/SheetDescription.d.ts.map +1 -0
  35. package/dist/SheetParts/SheetFooter.d.ts +3 -0
  36. package/dist/SheetParts/SheetFooter.d.ts.map +1 -0
  37. package/dist/SheetParts/SheetHandle.d.ts +3 -0
  38. package/dist/SheetParts/SheetHandle.d.ts.map +1 -0
  39. package/dist/SheetParts/SheetHeader.d.ts +3 -0
  40. package/dist/SheetParts/SheetHeader.d.ts.map +1 -0
  41. package/dist/SheetParts/SheetPartTypes.d.ts +22 -0
  42. package/dist/SheetParts/SheetPartTypes.d.ts.map +1 -0
  43. package/dist/SheetParts/SheetParts.d.ts +28 -0
  44. package/dist/SheetParts/SheetParts.d.ts.map +1 -0
  45. package/dist/SheetParts/SheetTitle.d.ts +3 -0
  46. package/dist/SheetParts/SheetTitle.d.ts.map +1 -0
  47. package/dist/SheetParts/index.d.ts +11 -0
  48. package/dist/SheetParts/index.d.ts.map +1 -0
  49. package/dist/Store/StoreArgs.d.ts +15 -0
  50. package/dist/Store/StoreArgs.d.ts.map +1 -0
  51. package/dist/Store/StoreTypes.d.ts +21 -0
  52. package/dist/Store/StoreTypes.d.ts.map +1 -0
  53. package/dist/Store/createSheetStore.d.ts +15 -0
  54. package/dist/Store/createSheetStore.d.ts.map +1 -0
  55. package/dist/Store/index.d.ts +3 -0
  56. package/dist/Store/index.d.ts.map +1 -0
  57. package/dist/config.d.ts +4 -0
  58. package/dist/config.d.ts.map +1 -0
  59. package/dist/create.d.ts +33 -0
  60. package/dist/create.d.ts.map +1 -0
  61. package/dist/icons.d.ts +4 -0
  62. package/dist/icons.d.ts.map +1 -0
  63. package/dist/index.d.ts +10 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.mjs +1732 -0
  66. package/dist/index.mjs.map +1 -0
  67. package/dist/media.d.ts +9 -0
  68. package/dist/media.d.ts.map +1 -0
  69. package/dist/panel-context.d.ts +26 -0
  70. package/dist/panel-context.d.ts.map +1 -0
  71. package/dist/parts.d.ts +11 -0
  72. package/dist/parts.d.ts.map +1 -0
  73. package/dist/renderer-effects.d.ts +6 -0
  74. package/dist/renderer-effects.d.ts.map +1 -0
  75. package/dist/renderer-helpers.d.ts +53 -0
  76. package/dist/renderer-helpers.d.ts.map +1 -0
  77. package/dist/renderer.d.ts +29 -0
  78. package/dist/renderer.d.ts.map +1 -0
  79. package/dist/sheet-panel.d.ts +3 -0
  80. package/dist/sheet-panel.d.ts.map +1 -0
  81. package/dist/snap-points.d.ts +22 -0
  82. package/dist/snap-points.d.ts.map +1 -0
  83. package/dist/springs.d.ts +26 -0
  84. package/dist/springs.d.ts.map +1 -0
  85. package/dist/stacking.d.ts +38 -0
  86. package/dist/stacking.d.ts.map +1 -0
  87. package/dist/store.d.ts +3 -0
  88. package/dist/store.d.ts.map +1 -0
  89. package/dist/styles.css +2 -0
  90. package/dist/types.d.ts +232 -0
  91. package/dist/types.d.ts.map +1 -0
  92. package/dist/use-drag.d.ts +3 -0
  93. package/dist/use-drag.d.ts.map +1 -0
  94. 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,3 @@
1
+ export type { DragAxis, DragConfig, DragSign, DragState } from "./DragTypes";
2
+ export { useDrag } from "./useDrag";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,5 @@
1
+ import type { HeaderRenderProps } from "../types";
2
+ export declare function DefaultHeader({ isNested, onBack, onClose, className, }: HeaderRenderProps & {
3
+ className?: string;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=DefaultHeader.d.ts.map
@@ -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,3 @@
1
+ export { SheetPanel } from "./SheetPanel";
2
+ export type { SheetPanelProps } from "./SheetPanelTypes";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ import type { SheetOptionalContentPartProps } from "./SheetPartTypes";
2
+ export declare function SheetBack({ asChild, className, style, children, }: SheetOptionalContentPartProps): import("react/jsx-runtime").JSX.Element | null;
3
+ //# sourceMappingURL=SheetBack.d.ts.map
@@ -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,3 @@
1
+ import type { SheetPartProps } from "./SheetPartTypes";
2
+ export declare function SheetBody({ asChild, className, style, children, }: SheetPartProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=SheetBody.d.ts.map
@@ -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,3 @@
1
+ import type { SheetOptionalContentPartProps } from "./SheetPartTypes";
2
+ export declare function SheetClose({ asChild, className, style, children, }: SheetOptionalContentPartProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=SheetClose.d.ts.map
@@ -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,3 @@
1
+ import type { SheetPartProps } from "./SheetPartTypes";
2
+ export declare function SheetDescription({ asChild, className, style, children, }: SheetPartProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=SheetDescription.d.ts.map
@@ -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,3 @@
1
+ import type { SheetPartProps } from "./SheetPartTypes";
2
+ export declare function SheetFooter({ asChild, className, style, children, }: SheetPartProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=SheetFooter.d.ts.map
@@ -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,3 @@
1
+ import type { SheetOptionalContentPartProps } from "./SheetPartTypes";
2
+ export declare function SheetHandle({ asChild, className, style, children, }: SheetOptionalContentPartProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=SheetHandle.d.ts.map
@@ -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,3 @@
1
+ import type { SheetPartProps } from "./SheetPartTypes";
2
+ export declare function SheetHeader({ asChild, className, style, children, }: SheetPartProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=SheetHeader.d.ts.map
@@ -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,3 @@
1
+ import type { SheetPartProps } from "./SheetPartTypes";
2
+ export declare function SheetTitle({ asChild, className, style, children, }: SheetPartProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=SheetTitle.d.ts.map
@@ -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"}