@dreamtree-org/twreact-ui 1.3.10 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -6
- package/ai-skills/dreamtree-ui.md +58 -15
- package/codemods/v2.cjs +198 -0
- package/dist/ai-schema.json +745 -53
- package/dist/charts/index.js +195 -66
- package/dist/components/blocks/AppShell.d.ts.map +1 -1
- package/dist/components/blocks/BottomActionBar.d.ts +6 -0
- package/dist/components/blocks/BottomActionBar.d.ts.map +1 -0
- package/dist/components/blocks/ConfirmDialog.d.ts.map +1 -1
- package/dist/components/blocks/PageHeader.d.ts.map +1 -1
- package/dist/components/charts/CartesianChart.d.ts.map +1 -1
- package/dist/components/charts/ChartFrame.d.ts.map +1 -1
- package/dist/components/charts/useChartLayout.d.ts +25 -0
- package/dist/components/charts/useChartLayout.d.ts.map +1 -0
- package/dist/components/core/Button.d.ts.map +1 -1
- package/dist/components/core/Checkbox.d.ts.map +1 -1
- package/dist/components/core/ColorPicker.d.ts.map +1 -1
- package/dist/components/core/DatePicker.d.ts.map +1 -1
- package/dist/components/core/DateRangePicker.d.ts.map +1 -1
- package/dist/components/core/Form.d.ts.map +1 -1
- package/dist/components/core/Input.d.ts.map +1 -1
- package/dist/components/core/Loader.d.ts.map +1 -1
- package/dist/components/core/LocationPicker.d.ts.map +1 -1
- package/dist/components/core/Popover.d.ts.map +1 -1
- package/dist/components/core/ProgressBar.d.ts.map +1 -1
- package/dist/components/core/Radio.d.ts.map +1 -1
- package/dist/components/core/Rate.d.ts.map +1 -1
- package/dist/components/core/RoundedTag.d.ts.map +1 -1
- package/dist/components/core/SearchField.d.ts +9 -0
- package/dist/components/core/SearchField.d.ts.map +1 -0
- package/dist/components/core/SegmentedControl.d.ts +8 -0
- package/dist/components/core/SegmentedControl.d.ts.map +1 -0
- package/dist/components/core/Select.d.ts.map +1 -1
- package/dist/components/core/Skeleton.d.ts.map +1 -1
- package/dist/components/core/Slider.d.ts.map +1 -1
- package/dist/components/core/SpeechToText.d.ts.map +1 -1
- package/dist/components/core/SwipeableListItem.d.ts +4 -0
- package/dist/components/core/SwipeableListItem.d.ts.map +1 -0
- package/dist/components/core/SwipeableListItemGesture.d.ts +58 -0
- package/dist/components/core/SwipeableListItemGesture.d.ts.map +1 -0
- package/dist/components/core/Switch.d.ts.map +1 -1
- package/dist/components/core/Table/ActionMenu.d.ts +10 -3
- package/dist/components/core/Table/ActionMenu.d.ts.map +1 -1
- package/dist/components/core/Table/MobileCard.d.ts +10 -1
- package/dist/components/core/Table/MobileCard.d.ts.map +1 -1
- package/dist/components/core/Table/MobileFilters.d.ts +8 -2
- package/dist/components/core/Table/MobileFilters.d.ts.map +1 -1
- package/dist/components/core/Table/Table.d.ts.map +1 -1
- package/dist/components/core/Table/TableRow.d.ts +2 -1
- package/dist/components/core/Table/TableRow.d.ts.map +1 -1
- package/dist/components/core/Tabs.d.ts +5 -8
- package/dist/components/core/Tabs.d.ts.map +1 -1
- package/dist/components/core/Textarea.d.ts.map +1 -1
- package/dist/components/core/ThreeDotPopover.d.ts +10 -22
- package/dist/components/core/ThreeDotPopover.d.ts.map +1 -1
- package/dist/components/core/Tooltip.d.ts +2 -1
- package/dist/components/core/Tooltip.d.ts.map +1 -1
- package/dist/components/core/internal/Calendar.d.ts +77 -0
- package/dist/components/core/internal/Calendar.d.ts.map +1 -0
- package/dist/components/core/menu/ActionMenuSurface.d.ts +42 -0
- package/dist/components/core/menu/ActionMenuSurface.d.ts.map +1 -0
- package/dist/components/core/menu/ActionSheetMenu.d.ts +17 -0
- package/dist/components/core/menu/ActionSheetMenu.d.ts.map +1 -0
- package/dist/components/core/menu/MenuPopover.d.ts +21 -0
- package/dist/components/core/menu/MenuPopover.d.ts.map +1 -0
- package/dist/components/core/menu/menuItems.d.ts +21 -0
- package/dist/components/core/menu/menuItems.d.ts.map +1 -0
- package/dist/components/core/menu/menuKeyboard.d.ts +16 -0
- package/dist/components/core/menu/menuKeyboard.d.ts.map +1 -0
- package/dist/components/feedback/ActionSheet.d.ts +4 -0
- package/dist/components/feedback/ActionSheet.d.ts.map +1 -0
- package/dist/components/feedback/Alert.d.ts.map +1 -1
- package/dist/components/feedback/Dialog.d.ts.map +1 -1
- package/dist/components/feedback/Drawer.d.ts.map +1 -1
- package/dist/components/feedback/Sheet.d.ts +4 -0
- package/dist/components/feedback/Sheet.d.ts.map +1 -0
- package/dist/components/feedback/Toast.d.ts +4 -3
- package/dist/components/feedback/Toast.d.ts.map +1 -1
- package/dist/components/feedback/ToastItem.d.ts +47 -0
- package/dist/components/feedback/ToastItem.d.ts.map +1 -0
- package/dist/components/feedback/ToastStack.d.ts +20 -0
- package/dist/components/feedback/ToastStack.d.ts.map +1 -0
- package/dist/components/feedback/ToastSwipe.d.ts +22 -0
- package/dist/components/feedback/ToastSwipe.d.ts.map +1 -0
- package/dist/components/feedback/Tour.d.ts.map +1 -1
- package/dist/components/feedback/sheetCore.d.ts +30 -0
- package/dist/components/feedback/sheetCore.d.ts.map +1 -0
- package/dist/components/navigation/Breadcrumbs.d.ts.map +1 -1
- package/dist/components/navigation/FootNav.d.ts.map +1 -1
- package/dist/components/navigation/Navbar.d.ts.map +1 -1
- package/dist/components/navigation/Sidebar.d.ts +6 -0
- package/dist/components/navigation/Sidebar.d.ts.map +1 -1
- package/dist/components/rich-text/RichTextEditor.d.ts.map +1 -1
- package/dist/components/rich-text/RichTextToolbar.d.ts +6 -2
- package/dist/components/rich-text/RichTextToolbar.d.ts.map +1 -1
- package/dist/components/utility/Avatar.d.ts +8 -0
- package/dist/components/utility/Avatar.d.ts.map +1 -1
- package/dist/components/utility/AvatarGroup.d.ts +4 -0
- package/dist/components/utility/AvatarGroup.d.ts.map +1 -0
- package/dist/components/utility/Badge.d.ts.map +1 -1
- package/dist/components/utility/Card.d.ts.map +1 -1
- package/dist/components/utility/Carousel.d.ts.map +1 -1
- package/dist/components/utility/FileUpload.d.ts.map +1 -1
- package/dist/components/utility/Pagination.d.ts.map +1 -1
- package/dist/components/utility/PullToRefresh.d.ts +5 -0
- package/dist/components/utility/PullToRefresh.d.ts.map +1 -0
- package/dist/components/utility/Sortable.d.ts.map +1 -1
- package/dist/components/utility/Stepper.d.ts.map +1 -1
- package/dist/esm/components/blocks/AppShell.js +97 -90
- package/dist/esm/components/blocks/BottomActionBar.js +132 -0
- package/dist/esm/components/blocks/ConfirmDialog.js +40 -4
- package/dist/esm/components/blocks/EmptyState.js +1 -1
- package/dist/esm/components/blocks/ErrorState.js +1 -1
- package/dist/esm/components/blocks/LoadingState.js +4 -4
- package/dist/esm/components/blocks/PageHeader.js +16 -3
- package/dist/esm/components/blocks/StatCard.js +6 -6
- package/dist/esm/components/blocks/StatusPill.js +5 -8
- package/dist/esm/components/charts/CartesianChart.js +85 -62
- package/dist/esm/components/charts/ChartFrame.js +12 -5
- package/dist/esm/components/charts/useChartLayout.js +105 -0
- package/dist/esm/components/core/Button.js +49 -25
- package/dist/esm/components/core/Checkbox.js +72 -57
- package/dist/esm/components/core/ColorPicker.js +31 -42
- package/dist/esm/components/core/DatePicker.js +117 -304
- package/dist/esm/components/core/DateRangePicker.js +260 -308
- package/dist/esm/components/core/Form.js +11 -2
- package/dist/esm/components/core/Input.js +100 -38
- package/dist/esm/components/core/Loader.js +30 -44
- package/dist/esm/components/core/LocationPicker.js +82 -16
- package/dist/esm/components/core/Popover.js +59 -48
- package/dist/esm/components/core/ProgressBar.js +40 -72
- package/dist/esm/components/core/Radio.js +10 -12
- package/dist/esm/components/core/Rate.js +77 -14
- package/dist/esm/components/core/RoundedTag.js +5 -5
- package/dist/esm/components/core/SearchField.js +311 -0
- package/dist/esm/components/core/SegmentedControl.js +189 -0
- package/dist/esm/components/core/Select.js +185 -190
- package/dist/esm/components/core/Skeleton.js +13 -14
- package/dist/esm/components/core/Slider.js +24 -6
- package/dist/esm/components/core/SpeechToText.js +68 -16
- package/dist/esm/components/core/SwipeableListItem.js +286 -0
- package/dist/esm/components/core/SwipeableListItemGesture.js +219 -0
- package/dist/esm/components/core/Switch.js +98 -28
- package/dist/esm/components/core/Table/ActionMenu.js +45 -231
- package/dist/esm/components/core/Table/ColumnMenu.js +1 -1
- package/dist/esm/components/core/Table/MobileCard.js +66 -16
- package/dist/esm/components/core/Table/MobileFilters.js +181 -10
- package/dist/esm/components/core/Table/Table.js +149 -102
- package/dist/esm/components/core/Table/TableRow.js +10 -2
- package/dist/esm/components/core/Tabs.js +186 -39
- package/dist/esm/components/core/Textarea.js +10 -2
- package/dist/esm/components/core/ThreeDotPopover.js +93 -99
- package/dist/esm/components/core/Tooltip.js +138 -145
- package/dist/esm/components/core/internal/Calendar.js +381 -0
- package/dist/esm/components/core/menu/ActionMenuSurface.js +110 -0
- package/dist/esm/components/core/menu/ActionSheetMenu.js +140 -0
- package/dist/esm/components/core/menu/MenuPopover.js +177 -0
- package/dist/esm/components/core/menu/menuItems.js +61 -0
- package/dist/esm/components/core/menu/menuKeyboard.js +54 -0
- package/dist/esm/components/feedback/ActionSheet.js +55 -0
- package/dist/esm/components/feedback/Alert.js +63 -53
- package/dist/esm/components/feedback/Dialog.js +141 -53
- package/dist/esm/components/feedback/Drawer.js +130 -132
- package/dist/esm/components/feedback/Sheet.js +125 -0
- package/dist/esm/components/feedback/Toast.js +21 -291
- package/dist/esm/components/feedback/ToastItem.js +348 -0
- package/dist/esm/components/feedback/ToastStack.js +130 -0
- package/dist/esm/components/feedback/ToastSwipe.js +52 -0
- package/dist/esm/components/feedback/Tour.js +107 -30
- package/dist/esm/components/feedback/sheetCore.js +494 -0
- package/dist/esm/components/navigation/Breadcrumbs.js +97 -35
- package/dist/esm/components/navigation/Dropdown.js +1 -1
- package/dist/esm/components/navigation/FootNav.js +102 -13
- package/dist/esm/components/navigation/Navbar.js +172 -37
- package/dist/esm/components/navigation/Sidebar.js +263 -111
- package/dist/esm/components/rich-text/RichTextEditor.js +9 -3
- package/dist/esm/components/rich-text/RichTextToolbar.js +29 -9
- package/dist/esm/components/utility/Avatar.js +14 -12
- package/dist/esm/components/utility/AvatarGroup.js +56 -0
- package/dist/esm/components/utility/Badge.js +43 -23
- package/dist/esm/components/utility/Card.js +32 -8
- package/dist/esm/components/utility/Carousel.js +139 -29
- package/dist/esm/components/utility/FileUpload.js +106 -31
- package/dist/esm/components/utility/Pagination.js +31 -13
- package/dist/esm/components/utility/Portal.js +31 -0
- package/dist/esm/components/utility/PullToRefresh.js +229 -0
- package/dist/esm/components/utility/Sortable.js +6 -2
- package/dist/esm/components/utility/Stepper.js +110 -47
- package/dist/esm/hooks/useFloatingPosition.js +82 -0
- package/dist/esm/hooks/useHaptics.js +65 -0
- package/dist/esm/hooks/usePresence.js +58 -0
- package/dist/esm/hooks/usePresentation.js +21 -0
- package/dist/esm/hooks/useSheetDrag.js +220 -0
- package/dist/esm/hooks/useSliderValues.js +8 -2
- package/dist/esm/hooks/useSortable.js +107 -5
- package/dist/esm/index.js +14 -2
- package/dist/esm/utils/position.js +10 -63
- package/dist/esm/utils/touchTarget.js +4 -1
- package/dist/hooks/useFloatingPosition.d.ts +8 -4
- package/dist/hooks/useFloatingPosition.d.ts.map +1 -1
- package/dist/hooks/useHaptics.d.ts +19 -0
- package/dist/hooks/useHaptics.d.ts.map +1 -0
- package/dist/hooks/useSheetDrag.d.ts +31 -0
- package/dist/hooks/useSheetDrag.d.ts.map +1 -0
- package/dist/hooks/useSliderValues.d.ts +6 -2
- package/dist/hooks/useSliderValues.d.ts.map +1 -1
- package/dist/hooks/useSortable.d.ts +11 -1
- package/dist/hooks/useSortable.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +11 -2
- package/dist/index.esm.css +1 -1
- package/dist/index.esm.js +10645 -3842
- package/dist/index.js +10657 -3845
- package/dist/rich-text/index.js +41 -11
- package/dist/types/blocks.d.ts +32 -2
- package/dist/types/blocks.d.ts.map +1 -1
- package/dist/types/charts.d.ts +3 -1
- package/dist/types/charts.d.ts.map +1 -1
- package/dist/types/index.d.ts +409 -26
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/rich-text.d.ts +5 -0
- package/dist/types/rich-text.d.ts.map +1 -1
- package/dist/utils/position.d.ts +0 -15
- package/dist/utils/position.d.ts.map +1 -1
- package/doc/README.md +16 -0
- package/mcp/catalog.snapshot.json +1540 -407
- package/package.json +7 -2
- package/dist/esm/hooks/useSwipeToClose.js +0 -66
- package/dist/hooks/useSwipeToClose.d.ts +0 -24
- package/dist/hooks/useSwipeToClose.d.ts.map +0 -1
|
@@ -6,14 +6,23 @@ import { createPortal } from 'react-dom';
|
|
|
6
6
|
import { X } from 'lucide-react';
|
|
7
7
|
import Button from '../core/Button.js';
|
|
8
8
|
import { cn } from '../../utils/cn.js';
|
|
9
|
-
import {
|
|
9
|
+
import { setRefs, parsePlacement } from '../../utils/position.js';
|
|
10
|
+
import { TOUCH_TARGET } from '../../utils/touchTarget.js';
|
|
10
11
|
import { useFocusTrap } from '../../hooks/useFocusTrap.js';
|
|
11
12
|
import { useScrollLock } from '../../hooks/useScrollLock.js';
|
|
12
13
|
import { useTourTarget } from '../../hooks/useTourTarget.js';
|
|
14
|
+
import { useFloatingPosition } from '../../hooks/useFloatingPosition.js';
|
|
15
|
+
import { usePresentation } from '../../hooks/usePresentation.js';
|
|
13
16
|
import TourSpotlight from './TourSpotlight.js';
|
|
14
17
|
|
|
15
|
-
var _excluded = ["open", "steps", "onClose", "onFinish", "step", "defaultStep", "onStepChange", "labels", "targetTimeout", "spotlightPadding", "className"];
|
|
18
|
+
var _excluded = ["open", "steps", "onClose", "onFinish", "step", "defaultStep", "onStepChange", "labels", "targetTimeout", "spotlightPadding", "presentation", "className", "style", "onPointerDown", "onPointerUp", "onPointerCancel", "onClickCapture"];
|
|
16
19
|
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect;
|
|
20
|
+
// Docked (phone) card: a horizontal swipe at least this long (px), and clearly
|
|
21
|
+
// more horizontal than vertical, goes to the next / previous step.
|
|
22
|
+
var SWIPE_DISTANCE = 50;
|
|
23
|
+
var SWIPE_RATIO = 1.5;
|
|
24
|
+
// The click a swipe may produce arrives right after pointerup.
|
|
25
|
+
var SWIPE_CLICK_MS = 400;
|
|
17
26
|
var DEFAULT_LABELS = {
|
|
18
27
|
next: "Next",
|
|
19
28
|
back: "Back",
|
|
@@ -24,6 +33,17 @@ var DEFAULT_LABELS = {
|
|
|
24
33
|
return "Step ".concat(current, " of ").concat(total);
|
|
25
34
|
}
|
|
26
35
|
};
|
|
36
|
+
// Tour placements ("top", "bottom-start", …) as floating-ui placements.
|
|
37
|
+
var toFloatingPlacement = function toFloatingPlacement(placement) {
|
|
38
|
+
var _parsePlacement = parsePlacement(placement || "bottom"),
|
|
39
|
+
side = _parsePlacement.side,
|
|
40
|
+
align = _parsePlacement.align;
|
|
41
|
+
return align === "start" || align === "end" ? "".concat(side, "-").concat(align) : side;
|
|
42
|
+
};
|
|
43
|
+
var isTextEntry = function isTextEntry(el) {
|
|
44
|
+
var _el$closest;
|
|
45
|
+
return !!(el !== null && el !== void 0 && (_el$closest = el.closest) !== null && _el$closest !== void 0 && _el$closest.call(el, "input, textarea, select, [contenteditable='true']"));
|
|
46
|
+
};
|
|
27
47
|
var Tour = /*#__PURE__*/forwardRef(function (_ref, _ref2) {
|
|
28
48
|
var _ref$open = _ref.open,
|
|
29
49
|
open = _ref$open === void 0 ? false : _ref$open,
|
|
@@ -40,11 +60,25 @@ var Tour = /*#__PURE__*/forwardRef(function (_ref, _ref2) {
|
|
|
40
60
|
targetTimeout = _ref$targetTimeout === void 0 ? 3000 : _ref$targetTimeout,
|
|
41
61
|
_ref$spotlightPadding = _ref.spotlightPadding,
|
|
42
62
|
spotlightPadding = _ref$spotlightPadding === void 0 ? 6 : _ref$spotlightPadding,
|
|
63
|
+
_ref$presentation = _ref.presentation,
|
|
64
|
+
presentation = _ref$presentation === void 0 ? "auto" : _ref$presentation,
|
|
43
65
|
className = _ref.className,
|
|
66
|
+
style = _ref.style,
|
|
67
|
+
_onPointerDown = _ref.onPointerDown,
|
|
68
|
+
_onPointerUp = _ref.onPointerUp,
|
|
69
|
+
_onPointerCancel = _ref.onPointerCancel,
|
|
70
|
+
_onClickCapture = _ref.onClickCapture,
|
|
44
71
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
45
72
|
var cardRef = useRef(null);
|
|
73
|
+
var swipeRef = useRef({
|
|
74
|
+
x: 0,
|
|
75
|
+
y: 0,
|
|
76
|
+
tracking: false,
|
|
77
|
+
swipedAt: -Infinity
|
|
78
|
+
});
|
|
46
79
|
var baseId = useId();
|
|
47
80
|
var text = _objectSpread2(_objectSpread2({}, DEFAULT_LABELS), labels);
|
|
81
|
+
var docked = usePresentation(presentation) === "sheet";
|
|
48
82
|
// Each opening is a new session: the uncontrolled step restarts and stale
|
|
49
83
|
// target measurements from the previous run are ignored.
|
|
50
84
|
var _useState = useState({
|
|
@@ -74,6 +108,25 @@ var Tour = /*#__PURE__*/forwardRef(function (_ref, _ref2) {
|
|
|
74
108
|
}),
|
|
75
109
|
rect = _useTourTarget.rect,
|
|
76
110
|
ready = _useTourTarget.ready;
|
|
111
|
+
var anchored = Boolean(rect) && !docked;
|
|
112
|
+
var _useFloatingPosition = useFloatingPosition({
|
|
113
|
+
placement: toFloatingPlacement(current === null || current === void 0 ? void 0 : current.placement),
|
|
114
|
+
offset: spotlightPadding + 10,
|
|
115
|
+
open: active && anchored
|
|
116
|
+
}),
|
|
117
|
+
refs = _useFloatingPosition.refs,
|
|
118
|
+
floatingStyles = _useFloatingPosition.floatingStyles;
|
|
119
|
+
var setReference = refs.setReference,
|
|
120
|
+
setFloating = refs.setFloating;
|
|
121
|
+
// The target's measured box is the (virtual) reference; useTourTarget
|
|
122
|
+
// re-measures it on scroll/resize.
|
|
123
|
+
useIsomorphicLayoutEffect(function () {
|
|
124
|
+
setReference(anchored ? {
|
|
125
|
+
getBoundingClientRect: function getBoundingClientRect() {
|
|
126
|
+
return rect;
|
|
127
|
+
}
|
|
128
|
+
} : null);
|
|
129
|
+
}, [anchored, rect, setReference]);
|
|
77
130
|
var goTo = function goTo(next) {
|
|
78
131
|
if (next < 0 || next >= total || next === index) return;
|
|
79
132
|
if (stepProp === undefined) setSession(function (s) {
|
|
@@ -99,44 +152,66 @@ var Tour = /*#__PURE__*/forwardRef(function (_ref, _ref2) {
|
|
|
99
152
|
return close("escape");
|
|
100
153
|
}
|
|
101
154
|
});
|
|
102
|
-
useIsomorphicLayoutEffect(function () {
|
|
103
|
-
var card = cardRef.current;
|
|
104
|
-
if (!card) return;
|
|
105
|
-
if (!rect) {
|
|
106
|
-
card.style.top = "";
|
|
107
|
-
card.style.left = "";
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
var size = {
|
|
111
|
-
width: card.offsetWidth,
|
|
112
|
-
height: card.offsetHeight
|
|
113
|
-
};
|
|
114
|
-
var pos = computePosition(rect, size, {
|
|
115
|
-
placement: (current === null || current === void 0 ? void 0 : current.placement) || "bottom",
|
|
116
|
-
offset: spotlightPadding + 10
|
|
117
|
-
});
|
|
118
|
-
card.style.top = "".concat(pos.top, "px");
|
|
119
|
-
card.style.left = "".concat(pos.left, "px");
|
|
120
|
-
}, [rect, ready, index, current === null || current === void 0 ? void 0 : current.placement, spotlightPadding]);
|
|
121
155
|
if (!active || typeof document === "undefined") return null;
|
|
122
156
|
var isFirst = index === 0;
|
|
123
157
|
var isLast = index === total - 1;
|
|
124
158
|
var titleId = "tour-title-".concat(baseId);
|
|
125
159
|
var bodyId = "tour-body-".concat(baseId);
|
|
126
160
|
var handleKeyDown = function handleKeyDown(e) {
|
|
127
|
-
|
|
128
|
-
if ((_e$target$closest = (_e$target = e.target).closest) !== null && _e$target$closest !== void 0 && _e$target$closest.call(_e$target, "input, textarea, select, [contenteditable='true']")) return;
|
|
161
|
+
if (isTextEntry(e.target)) return;
|
|
129
162
|
if (e.key === "ArrowRight") goTo(index + 1);else if (e.key === "ArrowLeft") goTo(index - 1);
|
|
130
163
|
};
|
|
164
|
+
// Swipe on the docked card: left = next, right = back.
|
|
165
|
+
var swipeHandlers = docked ? {
|
|
166
|
+
onPointerDown: function onPointerDown(e) {
|
|
167
|
+
_onPointerDown === null || _onPointerDown === void 0 || _onPointerDown(e);
|
|
168
|
+
var swipe = swipeRef.current;
|
|
169
|
+
swipe.swipedAt = -Infinity;
|
|
170
|
+
swipe.tracking = e.isPrimary !== false && !isTextEntry(e.target);
|
|
171
|
+
swipe.x = e.clientX;
|
|
172
|
+
swipe.y = e.clientY;
|
|
173
|
+
},
|
|
174
|
+
onPointerUp: function onPointerUp(e) {
|
|
175
|
+
_onPointerUp === null || _onPointerUp === void 0 || _onPointerUp(e);
|
|
176
|
+
var swipe = swipeRef.current;
|
|
177
|
+
if (!swipe.tracking) return;
|
|
178
|
+
swipe.tracking = false;
|
|
179
|
+
var dx = e.clientX - swipe.x;
|
|
180
|
+
var dy = e.clientY - swipe.y;
|
|
181
|
+
if (Math.abs(dx) < SWIPE_DISTANCE || Math.abs(dx) < Math.abs(dy) * SWIPE_RATIO) return;
|
|
182
|
+
swipe.swipedAt = Date.now();
|
|
183
|
+
goTo(dx < 0 ? index + 1 : index - 1);
|
|
184
|
+
},
|
|
185
|
+
onPointerCancel: function onPointerCancel(e) {
|
|
186
|
+
_onPointerCancel === null || _onPointerCancel === void 0 || _onPointerCancel(e);
|
|
187
|
+
swipeRef.current.tracking = false;
|
|
188
|
+
},
|
|
189
|
+
// A swipe that ends on a button must not also press it.
|
|
190
|
+
onClickCapture: function onClickCapture(e) {
|
|
191
|
+
_onClickCapture === null || _onClickCapture === void 0 || _onClickCapture(e);
|
|
192
|
+
var swipe = swipeRef.current;
|
|
193
|
+
if (Date.now() - swipe.swipedAt > SWIPE_CLICK_MS) return;
|
|
194
|
+
swipe.swipedAt = -Infinity;
|
|
195
|
+
e.preventDefault();
|
|
196
|
+
e.stopPropagation();
|
|
197
|
+
}
|
|
198
|
+
} : {
|
|
199
|
+
onPointerDown: _onPointerDown,
|
|
200
|
+
onPointerUp: _onPointerUp,
|
|
201
|
+
onPointerCancel: _onPointerCancel,
|
|
202
|
+
onClickCapture: _onClickCapture
|
|
203
|
+
};
|
|
204
|
+
var placementAttr = "center";
|
|
205
|
+
if (docked) placementAttr = "docked";else if (rect) placementAttr = current.placement || "bottom";
|
|
131
206
|
return /*#__PURE__*/createPortal(jsxs("div", {
|
|
132
|
-
className: "fixed inset-0 z-
|
|
207
|
+
className: "fixed inset-0 z-modal",
|
|
133
208
|
"data-testid": "tour-overlay",
|
|
134
209
|
children: [jsx(TourSpotlight, {
|
|
135
210
|
rect: ready ? rect : null,
|
|
136
211
|
padding: spotlightPadding
|
|
137
|
-
}), jsxs("div", _objectSpread2(_objectSpread2({
|
|
212
|
+
}), jsxs("div", _objectSpread2(_objectSpread2(_objectSpread2({
|
|
138
213
|
ref: function ref(node) {
|
|
139
|
-
return setRefs(node, cardRef, _ref2);
|
|
214
|
+
return setRefs(node, cardRef, _ref2, setFloating);
|
|
140
215
|
},
|
|
141
216
|
role: "dialog",
|
|
142
217
|
"aria-modal": "true",
|
|
@@ -144,9 +219,11 @@ var Tour = /*#__PURE__*/forwardRef(function (_ref, _ref2) {
|
|
|
144
219
|
"aria-describedby": current.content ? bodyId : undefined,
|
|
145
220
|
tabIndex: -1,
|
|
146
221
|
onKeyDown: handleKeyDown,
|
|
147
|
-
"data-placement":
|
|
148
|
-
|
|
149
|
-
|
|
222
|
+
"data-placement": placementAttr,
|
|
223
|
+
"data-presentation": docked ? "sheet" : "popover",
|
|
224
|
+
className: cn("fixed overflow-y-auto overscroll-contain rounded-lg border border-gray-200 bg-white text-gray-900 shadow-xl focus:outline-none", "dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100", "transition-opacity duration-200 motion-reduce:transition-none", docked ? "inset-x-4 bottom-4 max-h-[60dvh] pb-safe touch-pan-y" : "w-[min(22rem,calc(100vw-2rem))] max-h-[calc(100dvh-2rem)]", !docked && !rect && "left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2", ready ? "opacity-100" : "pointer-events-none opacity-0", className),
|
|
225
|
+
style: anchored ? _objectSpread2(_objectSpread2({}, floatingStyles), style) : style
|
|
226
|
+
}, swipeHandlers), rest), {}, {
|
|
150
227
|
children: [jsxs("div", {
|
|
151
228
|
className: "flex items-start justify-between gap-3 px-4 pt-4",
|
|
152
229
|
children: [jsxs("div", {
|
|
@@ -165,7 +242,7 @@ var Tour = /*#__PURE__*/forwardRef(function (_ref, _ref2) {
|
|
|
165
242
|
return close("close");
|
|
166
243
|
},
|
|
167
244
|
"aria-label": text.close,
|
|
168
|
-
className: "rounded-md p-1 text-gray-500 hover:bg-gray-100 hover:text-gray-700 focus:outline-none focus:ring-2 focus:ring-primary-500 dark:text-gray-400 dark:hover:bg-gray-800",
|
|
245
|
+
className: cn("-mr-1 -mt-1 inline-flex shrink-0 items-center justify-center rounded-md p-1 text-gray-500 hover:bg-gray-100 hover:text-gray-700 focus:outline-none focus:ring-2 focus:ring-primary-500 dark:text-gray-400 dark:hover:bg-gray-800", TOUCH_TARGET),
|
|
169
246
|
children: jsx(X, {
|
|
170
247
|
className: "h-4 w-4",
|
|
171
248
|
"aria-hidden": "true"
|