@astryxdesign/core 0.4.3 → 0.4.4-canary.0f4d45f

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 (200) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +79 -45
  3. package/dist/Banner/Banner.d.ts +3 -0
  4. package/dist/Banner/Banner.d.ts.map +1 -1
  5. package/dist/Banner/Banner.js +13 -3
  6. package/dist/BottomSheet/BottomSheet.d.ts +66 -0
  7. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -0
  8. package/dist/BottomSheet/BottomSheet.js +392 -0
  9. package/dist/BottomSheet/BottomSheetPanel.d.ts +60 -0
  10. package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -0
  11. package/dist/BottomSheet/BottomSheetPanel.js +398 -0
  12. package/dist/BottomSheet/BottomSheetSwitcher.d.ts +61 -0
  13. package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -0
  14. package/dist/BottomSheet/BottomSheetSwitcher.js +410 -0
  15. package/dist/BottomSheet/BottomSheetSwitcherContext.d.ts +21 -0
  16. package/dist/BottomSheet/BottomSheetSwitcherContext.d.ts.map +1 -0
  17. package/dist/BottomSheet/BottomSheetSwitcherContext.js +13 -0
  18. package/dist/BottomSheet/index.d.ts +11 -0
  19. package/dist/BottomSheet/index.d.ts.map +1 -0
  20. package/dist/BottomSheet/index.js +12 -0
  21. package/dist/BottomSheet/snapOffsets.d.ts +72 -0
  22. package/dist/BottomSheet/snapOffsets.d.ts.map +1 -0
  23. package/dist/BottomSheet/snapOffsets.js +130 -0
  24. package/dist/BottomSheet/useMobileKeyboard.d.ts +35 -0
  25. package/dist/BottomSheet/useMobileKeyboard.d.ts.map +1 -0
  26. package/dist/BottomSheet/useMobileKeyboard.js +373 -0
  27. package/dist/BottomSheet/useSheetGestures.d.ts +180 -0
  28. package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -0
  29. package/dist/BottomSheet/useSheetGestures.js +989 -0
  30. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  31. package/dist/Chat/ChatComposerInput.js +3 -4
  32. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  33. package/dist/ComplexSelector/ComplexSelector.js +12 -6
  34. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  35. package/dist/ContextMenu/ContextMenu.js +4 -2
  36. package/dist/DateInput/DateInput.d.ts.map +1 -1
  37. package/dist/DateInput/DateInput.js +9 -1
  38. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  39. package/dist/DateTimeInput/DateTimeInput.js +31 -1
  40. package/dist/Dialog/Dialog.d.ts.map +1 -1
  41. package/dist/Dialog/Dialog.js +2 -1
  42. package/dist/Field/InputClearButton.d.ts +2 -1
  43. package/dist/Field/InputClearButton.d.ts.map +1 -1
  44. package/dist/Field/InputClearButton.js +6 -1
  45. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  46. package/dist/Lightbox/Lightbox.js +9 -3
  47. package/dist/MobileNav/MobileNav.d.ts +12 -0
  48. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  49. package/dist/MobileNav/MobileNav.js +102 -30
  50. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  51. package/dist/MultiSelector/MultiSelector.js +21 -7
  52. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  53. package/dist/NumberInput/NumberInput.js +9 -1
  54. package/dist/PowerSearch/PowerSearchEditPopover.js +1 -1
  55. package/dist/Selector/Selector.d.ts.map +1 -1
  56. package/dist/Selector/Selector.js +14 -3
  57. package/dist/StatusDot/StatusDot.d.ts +43 -3
  58. package/dist/StatusDot/StatusDot.d.ts.map +1 -1
  59. package/dist/StatusDot/StatusDot.js +42 -5
  60. package/dist/Switch/Switch.d.ts.map +1 -1
  61. package/dist/Switch/Switch.js +5 -1
  62. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  63. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +7 -2
  64. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  65. package/dist/TimeInput/TimeInput.js +8 -1
  66. package/dist/Tokenizer/Tokenizer.js +11 -5
  67. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  68. package/dist/Tooltip/useTooltip.js +4 -1
  69. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  70. package/dist/Typeahead/BaseTypeahead.js +5 -3
  71. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  72. package/dist/Typeahead/Typeahead.js +10 -1
  73. package/dist/astryx.css +21 -0
  74. package/dist/hooks/index.d.ts +8 -1
  75. package/dist/hooks/index.d.ts.map +1 -1
  76. package/dist/hooks/index.js +8 -1
  77. package/dist/hooks/useFocusTrap.d.ts +0 -11
  78. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  79. package/dist/hooks/useFocusTrap.js +1 -11
  80. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  81. package/dist/hooks/useInputStatusIcon.js +1 -0
  82. package/dist/index.d.ts +1 -0
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +1 -0
  85. package/dist/theme/defineTheme.d.ts +22 -4
  86. package/dist/theme/defineTheme.d.ts.map +1 -1
  87. package/dist/theme/expandColorScale.d.ts +17 -2
  88. package/dist/theme/expandColorScale.d.ts.map +1 -1
  89. package/dist/theme/expandColorScale.js +63 -33
  90. package/dist/utils/ime.d.ts +5 -0
  91. package/dist/utils/ime.d.ts.map +1 -0
  92. package/dist/utils/ime.js +63 -0
  93. package/dist/utils/index.d.ts +1 -0
  94. package/dist/utils/index.d.ts.map +1 -1
  95. package/dist/utils/index.js +2 -1
  96. package/locales/af-ZA.json +958 -0
  97. package/locales/ar-SA.json +998 -0
  98. package/locales/ca-ES.json +974 -0
  99. package/locales/cs-CZ.json +990 -0
  100. package/locales/da-DK.json +966 -0
  101. package/locales/de-DE.json +966 -0
  102. package/locales/el-GR.json +990 -0
  103. package/locales/en.json +48 -0
  104. package/locales/es-ES.json +978 -0
  105. package/locales/fi-FI.json +990 -0
  106. package/locales/fr-FR.json +928 -0
  107. package/locales/he-IL.json +990 -0
  108. package/locales/hu-HU.json +990 -0
  109. package/locales/it-IT.json +978 -0
  110. package/locales/ja-JP.json +998 -0
  111. package/locales/ko-KR.json +990 -0
  112. package/locales/nl-NL.json +954 -0
  113. package/locales/no-NO.json +978 -0
  114. package/locales/pl-PL.json +982 -0
  115. package/locales/pseudo.json +36 -0
  116. package/locales/pt-BR.json +982 -0
  117. package/locales/pt-PT.json +982 -0
  118. package/locales/ro-RO.json +982 -0
  119. package/locales/ru-RU.json +990 -0
  120. package/locales/sr-SP.json +990 -0
  121. package/locales/sv-SE.json +986 -0
  122. package/locales/tr-TR.json +990 -0
  123. package/locales/uk-UA.json +990 -0
  124. package/locales/vi-VN.json +986 -0
  125. package/locales/zh-CN.json +998 -0
  126. package/locales/zh-TW.json +998 -0
  127. package/package.json +9 -8
  128. package/src/Banner/Banner.doc.mjs +3 -3
  129. package/src/Banner/Banner.test.tsx +40 -0
  130. package/src/Banner/Banner.tsx +27 -2
  131. package/src/BottomSheet/BottomSheet.doc.mjs +266 -0
  132. package/src/BottomSheet/BottomSheet.test.tsx +2114 -0
  133. package/src/BottomSheet/BottomSheet.tsx +545 -0
  134. package/src/BottomSheet/BottomSheetPanel.test.tsx +240 -0
  135. package/src/BottomSheet/BottomSheetPanel.tsx +547 -0
  136. package/src/BottomSheet/BottomSheetSwitcher.doc.mjs +219 -0
  137. package/src/BottomSheet/BottomSheetSwitcher.test.tsx +850 -0
  138. package/src/BottomSheet/BottomSheetSwitcher.tsx +628 -0
  139. package/src/BottomSheet/BottomSheetSwitcherContext.ts +51 -0
  140. package/src/BottomSheet/index.ts +15 -0
  141. package/src/BottomSheet/snapOffsets.test.ts +187 -0
  142. package/src/BottomSheet/snapOffsets.ts +159 -0
  143. package/src/BottomSheet/useMobileKeyboard.ts +499 -0
  144. package/src/BottomSheet/useSheetGestures.test.ts +1059 -0
  145. package/src/BottomSheet/useSheetGestures.ts +1459 -0
  146. package/src/Chat/ChatComposerInput.tsx +3 -4
  147. package/src/ComplexSelector/ComplexSelector.tsx +12 -5
  148. package/src/ContextMenu/ContextMenu.tsx +4 -2
  149. package/src/DateInput/DateInput.test.tsx +21 -0
  150. package/src/DateInput/DateInput.tsx +9 -1
  151. package/src/DateTimeInput/DateTimeInput.doc.mjs +4 -0
  152. package/src/DateTimeInput/DateTimeInput.test.tsx +137 -0
  153. package/src/DateTimeInput/DateTimeInput.tsx +39 -2
  154. package/src/Dialog/Dialog.tsx +2 -1
  155. package/src/Field/Field.doc.mjs +1 -0
  156. package/src/Field/InputClearButton.test.tsx +25 -0
  157. package/src/Field/InputClearButton.tsx +4 -1
  158. package/src/FileInput/FileInput.test.tsx +53 -9
  159. package/src/Lightbox/Lightbox.test.tsx +49 -28
  160. package/src/Lightbox/Lightbox.tsx +7 -3
  161. package/src/MobileNav/MobileNav.tsx +128 -37
  162. package/src/MobileNav/MobileNavCloseEdgeCases.test.tsx +426 -0
  163. package/src/MobileNav/MobileNavCloseTiming.test.ts +58 -0
  164. package/src/MobileNav/MobileNavCloseVisibility.test.tsx +172 -0
  165. package/src/MultiSelector/MultiSelector.test.tsx +195 -51
  166. package/src/MultiSelector/MultiSelector.tsx +22 -8
  167. package/src/NumberInput/NumberInput.test.tsx +18 -0
  168. package/src/NumberInput/NumberInput.tsx +9 -1
  169. package/src/PowerSearch/PowerSearchEditPopover.tsx +1 -1
  170. package/src/Selector/Selector.test.tsx +85 -26
  171. package/src/Selector/Selector.tsx +13 -4
  172. package/src/StatusDot/StatusDot.doc.mjs +13 -0
  173. package/src/StatusDot/StatusDot.test.tsx +115 -8
  174. package/src/StatusDot/StatusDot.tsx +74 -9
  175. package/src/Switch/Switch.test.tsx +16 -0
  176. package/src/Switch/Switch.tsx +7 -0
  177. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +20 -2
  178. package/src/TimeInput/TimeInput.test.tsx +23 -0
  179. package/src/TimeInput/TimeInput.tsx +8 -0
  180. package/src/Tokenizer/Tokenizer.test.tsx +50 -32
  181. package/src/Tokenizer/Tokenizer.tsx +5 -5
  182. package/src/Tooltip/useTooltip.tsx +4 -1
  183. package/src/Typeahead/BaseTypeahead.tsx +10 -3
  184. package/src/Typeahead/Typeahead.test.tsx +116 -7
  185. package/src/Typeahead/Typeahead.tsx +10 -1
  186. package/src/__tests__/stubMatchMedia.test.ts +79 -0
  187. package/src/__tests__/stubMatchMedia.ts +95 -0
  188. package/src/hooks/index.ts +9 -5
  189. package/src/hooks/useFocusTrap.ts +1 -14
  190. package/src/hooks/useInputStatusIcon.test.tsx +19 -0
  191. package/src/hooks/useInputStatusIcon.tsx +7 -0
  192. package/src/index.ts +1 -0
  193. package/src/theme/defineTheme.ts +22 -4
  194. package/src/theme/expandColorScale.test.ts +138 -0
  195. package/src/theme/expandColorScale.ts +89 -44
  196. package/src/utils/ime.test.ts +32 -0
  197. package/src/utils/ime.ts +69 -0
  198. package/src/utils/index.ts +2 -0
  199. package/dist/astryx.umd.js +0 -147
  200. package/dist/astryx.umd.js.map +0 -7
@@ -0,0 +1,180 @@
1
+ /**
2
+ * @file useSheetGestures.ts
3
+ * @input Uses React (useCallback, useEffect, useMemo, useRef, useState) and
4
+ * the core useMediaQuery hook
5
+ * @output Exports useSheetGestures hook and its option/result types
6
+ * @position Internal to BottomSheet; not exported from the core entry point
7
+ *
8
+ * Drag + snap machinery for the bottom sheet. Tracks a pointer drag down the
9
+ * block axis, translates the sliding surface live, and on release either
10
+ * settles to the nearest snap detent (a slow drag) or dismisses (a fast flick
11
+ * down). A fast flick up expands to the tallest detent. This is the core
12
+ * behavior split the sheet needs: DRAG places, SWIPE closes.
13
+ *
14
+ * A settled detent is split across two properties: `settledLayoutOffset` is
15
+ * the part the scrolling area gives up as layout height, and the remainder is
16
+ * a transform. Gestures and snaps only ever move the transform, so they stay
17
+ * on the compositor; layout height changes at rest, in one transition-free
18
+ * render whose visible geometry is identical. The peek detent keeps the full
19
+ * height and slides below the viewport instead of reflowing to a sliver.
20
+ *
21
+ * Those are pixels, and the detents behind them are viewport fractions, so a
22
+ * sheet at rest re-resolves its detent on `resize` / `orientationchange` and
23
+ * re-anchors to the new geometry without animating. The detent it returns to
24
+ * is tracked by index: the pixels stop meaning the same thing when the
25
+ * viewport changes, the stop the user chose does not.
26
+ *
27
+ * On touch, the scrolling body hands the gesture to the sheet at a scroll
28
+ * edge. Two shapes, because the browser only offers one of them a choice: a
29
+ * finger that lands on an edge and pulls away from it promotes by cancelling
30
+ * the first, still-cancelable touchmove; a finger that scrolls INTO the end of
31
+ * the content mid-gesture cannot, since the browser has committed the gesture
32
+ * to scrolling and every remaining event is non-cancelable. The second shape
33
+ * needs no cancelling — the scroller is clamped at its end, so there is
34
+ * nothing left to scroll — and instead anchors at the point where the content
35
+ * ran out and drives the sheet from the travel beyond it.
36
+ *
37
+ * Kept private to BottomSheet: a dismiss edge + detents on a bottom-anchored
38
+ * surface are inherently sheet concepts. It is not a general primitive and is
39
+ * intentionally not exported.
40
+ *
41
+ * SSR-safe: no window/document access at module scope; all measurement
42
+ * happens inside handlers. Respects prefers-reduced-motion by skipping the
43
+ * settle transition.
44
+ *
45
+ * SYNC: When modified, update these files to stay in sync:
46
+ * - /packages/core/src/BottomSheet/useSheetGestures.test.ts
47
+ */
48
+ import { type CSSProperties, type MouseEvent as ReactMouseEvent, type PointerEvent as ReactPointerEvent, type RefObject, type UIEvent as ReactUIEvent } from 'react';
49
+ export interface UseSheetGesturesOptions {
50
+ /** Whether the owning sheet is open. Drag state resets when it closes. */
51
+ isOpen: boolean;
52
+ /**
53
+ * Whether a downward swipe may dismiss the sheet. When false, a gesture
54
+ * past the dismiss threshold settles at the shortest detent instead.
55
+ * @default true
56
+ */
57
+ canDismiss?: boolean;
58
+ /**
59
+ * Portion of the measured sheet border box reserved below the viewport.
60
+ * Excluded from detent heights so a 50vh snap has 50vh of visible sheet.
61
+ * @default 0
62
+ */
63
+ offscreenBlockEndInset?: number;
64
+ /** Called on a swipe-to-close (fast downward flick, or drag past the floor). */
65
+ onDismiss: () => void;
66
+ /**
67
+ * Resolver for candidate visible detent heights in px below the fully open
68
+ * visible height. Called at the start of each drag, and again whenever the
69
+ * viewport changes while the sheet rests, so the detents track the window
70
+ * (rotation, a resized desktop window, collapsing browser chrome). The fully
71
+ * open height is always the tallest detent. Omit for a single-height sheet
72
+ * (a drag then only dismisses or springs back).
73
+ */
74
+ snapHeights?: () => number[];
75
+ /** Notified when the settled visible detent height (px) changes. */
76
+ onSnap?: (heightPx: number) => void;
77
+ /**
78
+ * Called with the scrim opacity the sheet should show (1 = fully visible,
79
+ * 0 = hidden) as the drag moves and on settle. Full while the sheet is at
80
+ * or above its mid detent, fading to 0 as it collapses onto the shortest
81
+ * "peek" detent — thinning to a faint glance state without fully clearing — and
82
+ * on the dismiss overshoot. Lets the owner mirror it onto the scrim.
83
+ */
84
+ onScrimOpacity?: (opacity: number) => void;
85
+ }
86
+ export interface SheetContentProps {
87
+ style: CSSProperties;
88
+ }
89
+ export interface SheetHandleProps {
90
+ style: CSSProperties;
91
+ onContextMenu: (event: ReactMouseEvent) => void;
92
+ onLostPointerCapture: (event: ReactPointerEvent) => void;
93
+ onPointerDown: (event: ReactPointerEvent) => void;
94
+ onPointerMove: (event: ReactPointerEvent) => void;
95
+ onPointerUp: (event: ReactPointerEvent) => void;
96
+ onPointerCancel: (event: ReactPointerEvent) => void;
97
+ }
98
+ export interface SheetBodyProps {
99
+ ref: (node: HTMLElement | null) => void;
100
+ onContextMenu: (event: ReactMouseEvent) => void;
101
+ onLostPointerCapture: (event: ReactPointerEvent) => void;
102
+ onPointerDown: (event: ReactPointerEvent) => void;
103
+ onPointerMove: (event: ReactPointerEvent) => void;
104
+ onPointerUp: (event: ReactPointerEvent) => void;
105
+ onPointerCancel: (event: ReactPointerEvent) => void;
106
+ onScroll: (event: ReactUIEvent<HTMLElement>) => void;
107
+ }
108
+ export interface UseSheetGesturesResult {
109
+ /**
110
+ * Callback ref for the sheet surface. The hook observes it (ResizeObserver)
111
+ * to keep the fully-open height current, so detents stay correct across
112
+ * rotation / viewport changes without re-measuring mid-drag.
113
+ */
114
+ sheetRef: (node: HTMLElement | null) => void;
115
+ /** Spread on the sliding surface: live translate + touch-action guard. */
116
+ contentProps: SheetContentProps;
117
+ /** Spread on the grab-handle element: pointer drag handlers. */
118
+ handleProps: SheetHandleProps;
119
+ /**
120
+ * Spread on the scrollable body. An overscroll-at-top pull-down starts a
121
+ * sheet drag (a larger, more forgiving target when the content isn't itself
122
+ * scrolling); normal scrolling passes through untouched.
123
+ */
124
+ bodyProps: SheetBodyProps;
125
+ /**
126
+ * The body element `bodyProps.ref` is attached to. The hook tracks the node
127
+ * anyway (it owns the non-passive touch listeners on it), so a host that
128
+ * also needs the element reads it here rather than wrapping `bodyProps.ref`
129
+ * in a second callback ref.
130
+ */
131
+ bodyElementRef: RefObject<HTMLElement | null>;
132
+ /** Current live drag translate in px (0 = fully expanded, larger = collapsed). */
133
+ dragOffset: number;
134
+ /** Translate of the resting detent in px (0 = tallest detent). */
135
+ settledOffset: number;
136
+ /** Whether a drag is currently in progress. */
137
+ isDragging: boolean;
138
+ /** Measured height of the fully expanded sheet. */
139
+ sheetHeight: number;
140
+ /** End padding that preserves the scroll position across height changes. */
141
+ scrollPreservationInset: number;
142
+ /** Layout offset retained until the transform-only snap finishes. */
143
+ settlingLayoutOffset: number | null;
144
+ /**
145
+ * Reconciles the final layout once the transform-only snap finishes. The
146
+ * panel decides WHEN a snap is over (it owns the element and its computed
147
+ * transition), so completion cannot be driven from a `transitionend`
148
+ * listener alone: with transitions disabled — inline `transition: none`, a
149
+ * `0s` duration token, a test harness turning animation off — no event ever
150
+ * arrives and the scroll area would keep its full height forever.
151
+ */
152
+ completeScrollAreaSettle: () => void;
153
+ /**
154
+ * How much of `settledOffset` is expressed as layout height rather than as a
155
+ * transform. Equals `settledOffset` at the resizing detents; 0 at fully open
156
+ * and at the peek, which keep the sheet's full height (see isPeekOffset).
157
+ */
158
+ settledLayoutOffset: number;
159
+ }
160
+ /**
161
+ * Drag + snap machinery for the bottom sheet. Returns props to spread on the
162
+ * grab handle and the sliding surface, plus live drag state. A slow drag
163
+ * settles to the nearest detent; a fast downward flick dismisses; a fast
164
+ * upward flick expands to the tallest detent.
165
+ *
166
+ * @example
167
+ * ```
168
+ * const {contentProps, handleProps} = useSheetGestures({
169
+ * isOpen,
170
+ * onDismiss: () => onOpenChange(false),
171
+ * snapHeights: () => [240, 0.5 * (window.visualViewport?.height ?? 0)],
172
+ * });
173
+ * <div {...contentProps}>
174
+ * <div {...handleProps} />
175
+ * {children}
176
+ * </div>
177
+ * ```
178
+ */
179
+ export declare function useSheetGestures({ isOpen, canDismiss, offscreenBlockEndInset, onDismiss, snapHeights, onSnap, onScrimOpacity, }: UseSheetGesturesOptions): UseSheetGesturesResult;
180
+ //# sourceMappingURL=useSheetGestures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSheetGestures.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/useSheetGestures.ts"],"names":[],"mappings":"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"}