@hjmds/react-native 1.17.2 → 1.19.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 +8 -8
- package/dist/actions.d.ts +3 -23
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +8 -11
- package/dist/actions.js.map +1 -1
- package/dist/activity-chip.d.ts +29 -0
- package/dist/activity-chip.d.ts.map +1 -0
- package/dist/activity-chip.js +54 -0
- package/dist/activity-chip.js.map +1 -0
- package/dist/agreement.d.ts +1 -7
- package/dist/agreement.d.ts.map +1 -1
- package/dist/agreement.js +21 -15
- package/dist/agreement.js.map +1 -1
- package/dist/asset.d.ts +2 -13
- package/dist/asset.d.ts.map +1 -1
- package/dist/asset.js +4 -7
- package/dist/asset.js.map +1 -1
- package/dist/bottom-info.d.ts +1 -7
- package/dist/bottom-info.d.ts.map +1 -1
- package/dist/bottom-info.js +2 -4
- package/dist/bottom-info.js.map +1 -1
- package/dist/carousel-motion.d.ts +1 -0
- package/dist/carousel-motion.d.ts.map +1 -1
- package/dist/carousel-motion.js +5 -3
- package/dist/carousel-motion.js.map +1 -1
- package/dist/carousel.d.ts +1 -7
- package/dist/carousel.d.ts.map +1 -1
- package/dist/carousel.js +14 -6
- package/dist/carousel.js.map +1 -1
- package/dist/collapsible.d.ts +1 -7
- package/dist/collapsible.d.ts.map +1 -1
- package/dist/collapsible.js +4 -4
- package/dist/collapsible.js.map +1 -1
- package/dist/content-transition.d.ts +2 -1
- package/dist/content-transition.d.ts.map +1 -1
- package/dist/content-transition.js +3 -3
- package/dist/content-transition.js.map +1 -1
- package/dist/data-display.d.ts +23 -154
- package/dist/data-display.d.ts.map +1 -1
- package/dist/data-display.js +86 -92
- package/dist/data-display.js.map +1 -1
- package/dist/date-entry.d.ts +1 -0
- package/dist/date-entry.d.ts.map +1 -1
- package/dist/date-entry.js +22 -20
- package/dist/date-entry.js.map +1 -1
- package/dist/date-picker.d.ts +1 -7
- package/dist/date-picker.d.ts.map +1 -1
- package/dist/date-picker.js +19 -11
- package/dist/date-picker.js.map +1 -1
- package/dist/duration-field.d.ts +1 -1
- package/dist/duration-field.d.ts.map +1 -1
- package/dist/duration-field.js +11 -9
- package/dist/duration-field.js.map +1 -1
- package/dist/evidence.d.ts +1 -1
- package/dist/evidence.js +1 -1
- package/dist/feedback.d.ts +9 -88
- package/dist/feedback.d.ts.map +1 -1
- package/dist/feedback.js +124 -81
- package/dist/feedback.js.map +1 -1
- package/dist/field-group.d.ts +3 -2
- package/dist/field-group.d.ts.map +1 -1
- package/dist/field-group.js +7 -4
- package/dist/field-group.js.map +1 -1
- package/dist/file-picker.d.ts +1 -7
- package/dist/file-picker.d.ts.map +1 -1
- package/dist/file-picker.js +21 -11
- package/dist/file-picker.js.map +1 -1
- package/dist/forms.d.ts +6 -21
- package/dist/forms.d.ts.map +1 -1
- package/dist/forms.js +29 -35
- package/dist/forms.js.map +1 -1
- package/dist/gravity-letters.d.ts.map +1 -1
- package/dist/gravity-letters.js +13 -5
- package/dist/gravity-letters.js.map +1 -1
- package/dist/grid-reveal.d.ts.map +1 -1
- package/dist/grid-reveal.js +10 -2
- package/dist/grid-reveal.js.map +1 -1
- package/dist/heading.d.ts +1 -7
- package/dist/heading.d.ts.map +1 -1
- package/dist/heading.js +1 -4
- package/dist/heading.js.map +1 -1
- package/dist/image-viewer.d.ts.map +1 -1
- package/dist/image-viewer.js +2 -1
- package/dist/image-viewer.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/inline-confirm.d.ts.map +1 -1
- package/dist/inline-confirm.js +5 -1
- package/dist/inline-confirm.js.map +1 -1
- package/dist/inputs.d.ts +4 -71
- package/dist/inputs.d.ts.map +1 -1
- package/dist/inputs.js +52 -67
- package/dist/inputs.js.map +1 -1
- package/dist/internal/accessible-focus.d.ts +3 -0
- package/dist/internal/accessible-focus.d.ts.map +1 -0
- package/dist/internal/accessible-focus.js +15 -0
- package/dist/internal/accessible-focus.js.map +1 -0
- package/dist/internal/diagnostics.d.ts +7 -0
- package/dist/internal/diagnostics.d.ts.map +1 -0
- package/dist/internal/diagnostics.js +20 -0
- package/dist/internal/diagnostics.js.map +1 -0
- package/dist/internal/document-resource.d.ts.map +1 -1
- package/dist/internal/document-resource.js +2 -2
- package/dist/internal/document-resource.js.map +1 -1
- package/dist/internal/recipe-button.js +1 -1
- package/dist/internal/recipe-button.js.map +1 -1
- package/dist/internal/spinner.d.ts +1 -7
- package/dist/internal/spinner.d.ts.map +1 -1
- package/dist/internal/spinner.js +2 -4
- package/dist/internal/spinner.js.map +1 -1
- package/dist/masonry.d.ts.map +1 -1
- package/dist/masonry.js +2 -1
- package/dist/masonry.js.map +1 -1
- package/dist/mentions.d.ts +1 -7
- package/dist/mentions.d.ts.map +1 -1
- package/dist/mentions.js +11 -7
- package/dist/mentions.js.map +1 -1
- package/dist/navigation.d.ts +4 -74
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +86 -45
- package/dist/navigation.js.map +1 -1
- package/dist/number-field.d.ts +1 -21
- package/dist/number-field.d.ts.map +1 -1
- package/dist/number-field.js +6 -5
- package/dist/number-field.js.map +1 -1
- package/dist/overlays.d.ts +7 -16
- package/dist/overlays.d.ts.map +1 -1
- package/dist/overlays.js +220 -213
- package/dist/overlays.js.map +1 -1
- package/dist/primitives.d.ts +3 -18
- package/dist/primitives.d.ts.map +1 -1
- package/dist/primitives.js +8 -10
- package/dist/primitives.js.map +1 -1
- package/dist/provider-button.d.ts +1 -7
- package/dist/provider-button.d.ts.map +1 -1
- package/dist/provider-button.js +1 -4
- package/dist/provider-button.js.map +1 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +9 -1
- package/dist/provider.js.map +1 -1
- package/dist/saved-items.d.ts.map +1 -1
- package/dist/saved-items.js +6 -1
- package/dist/saved-items.js.map +1 -1
- package/dist/screen-flows.d.ts +1 -2
- package/dist/screen-flows.d.ts.map +1 -1
- package/dist/screen-flows.js +60 -16
- package/dist/screen-flows.js.map +1 -1
- package/dist/screens.d.ts +1 -1
- package/dist/screens.d.ts.map +1 -1
- package/dist/screens.js +32 -15
- package/dist/screens.js.map +1 -1
- package/dist/sheet-gesture.d.ts.map +1 -1
- package/dist/sheet-gesture.js +6 -3
- package/dist/sheet-gesture.js.map +1 -1
- package/dist/slider.d.ts +1 -21
- package/dist/slider.d.ts.map +1 -1
- package/dist/slider.js +3 -5
- package/dist/slider.js.map +1 -1
- package/dist/sortable.d.ts.map +1 -1
- package/dist/sortable.js +2 -1
- package/dist/sortable.js.map +1 -1
- package/dist/status-text.d.ts +17 -0
- package/dist/status-text.d.ts.map +1 -0
- package/dist/status-text.js +18 -0
- package/dist/status-text.js.map +1 -0
- package/dist/steps.d.ts +1 -7
- package/dist/steps.d.ts.map +1 -1
- package/dist/steps.js +2 -4
- package/dist/steps.js.map +1 -1
- package/dist/swipe-actions.d.ts.map +1 -1
- package/dist/swipe-actions.js +13 -2
- package/dist/swipe-actions.js.map +1 -1
- package/dist/tags-input.d.ts +1 -7
- package/dist/tags-input.d.ts.map +1 -1
- package/dist/tags-input.js +2 -4
- package/dist/tags-input.js.map +1 -1
- package/dist/toggle-group.d.ts +1 -7
- package/dist/toggle-group.d.ts.map +1 -1
- package/dist/toggle-group.js +10 -5
- package/dist/toggle-group.js.map +1 -1
- package/dist/top.d.ts +1 -7
- package/dist/top.d.ts.map +1 -1
- package/dist/top.js +1 -4
- package/dist/top.js.map +1 -1
- package/dist/transfer-list.d.ts +2 -8
- package/dist/transfer-list.d.ts.map +1 -1
- package/dist/transfer-list.js +30 -11
- package/dist/transfer-list.js.map +1 -1
- package/dist/upload-item.d.ts +1 -7
- package/dist/upload-item.d.ts.map +1 -1
- package/dist/upload-item.js +2 -4
- package/dist/upload-item.js.map +1 -1
- package/dist/virtual-list.d.ts.map +1 -1
- package/dist/virtual-list.js +2 -1
- package/dist/virtual-list.js.map +1 -1
- package/docs/liquid-toast.md +20 -0
- package/package.json +17 -4
- package/dist/internal/deprecated-style.d.ts +0 -8
- package/dist/internal/deprecated-style.d.ts.map +0 -1
- package/dist/internal/deprecated-style.js +0 -34
- package/dist/internal/deprecated-style.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bottom-info.d.ts","sourceRoot":"","sources":["../src/bottom-info.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,gDAAgD,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"bottom-info.d.ts","sourceRoot":"","sources":["../src/bottom-info.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,gDAAgD,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGtE,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAChD,QAAQ,CAAC;IACP,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACxD,4EAA4E;IAC5E,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEL,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,IAAqC,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,eAAe,+BAmBpH"}
|
package/dist/bottom-info.js
CHANGED
|
@@ -3,16 +3,14 @@ import { bottomInfoRecipe, validateBottomInfoDescriptor, } from "@hjmds/design-c
|
|
|
3
3
|
import { resolveColorReference } from "@hjmds/design-contracts/color-references";
|
|
4
4
|
import { View } from "react-native";
|
|
5
5
|
import { Text } from "./primitives.js";
|
|
6
|
-
import { warnDeprecatedStyleProps } from "./internal/deprecated-style.js";
|
|
7
6
|
import { useHjmNativeTheme } from "./provider.js";
|
|
8
|
-
export function BottomInfo({ items, tone = bottomInfoRecipe.defaults.tone, renderItem, layoutStyle
|
|
9
|
-
warnDeprecatedStyleProps("BottomInfo", { style }, "layoutStyle for placement; bottomInfoRecipe owns appearance");
|
|
7
|
+
export function BottomInfo({ items, tone = bottomInfoRecipe.defaults.tone, renderItem, layoutStyle }) {
|
|
10
8
|
validateBottomInfoDescriptor({ items, tone });
|
|
11
9
|
const theme = useHjmNativeTheme();
|
|
12
10
|
const color = resolveColorReference(bottomInfoRecipe.tones[tone], theme.palette);
|
|
13
11
|
// One line reads as a sentence; several read as a list. A bullet on a single
|
|
14
12
|
// line is noise, which is why the threshold lives in the recipe.
|
|
15
13
|
const asList = items.length >= bottomInfoRecipe.listMarkerFrom;
|
|
16
|
-
return (_jsx(View, { style: [{ gap: bottomInfoRecipe.gap, paddingTop: bottomInfoRecipe.paddingTop },
|
|
14
|
+
return (_jsx(View, { style: [{ gap: bottomInfoRecipe.gap, paddingTop: bottomInfoRecipe.paddingTop }, layoutStyle], children: items.map((item, index) => (_jsxs(View, { style: { flexDirection: "row", gap: 4 }, children: [asList ? _jsx(Text, { style: { color }, variant: bottomInfoRecipe.textVariant, children: "\u00B7" }) : null, _jsx(Text, { style: { color, flex: 1 }, variant: bottomInfoRecipe.textVariant, children: renderItem?.(item, index) ?? item })] }, item))) }));
|
|
17
15
|
}
|
|
18
16
|
//# sourceMappingURL=bottom-info.js.map
|
package/dist/bottom-info.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bottom-info.js","sourceRoot":"","sources":["../src/bottom-info.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,4BAA4B,GAE7B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"bottom-info.js","sourceRoot":"","sources":["../src/bottom-info.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,gBAAgB,EAChB,4BAA4B,GAE7B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AASlD,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,EAAmB;IACnH,4BAA4B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACjF,6EAA6E;IAC7E,iEAAiE;IACjE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,gBAAgB,CAAC,cAAc,CAAC;IAC/D,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,gBAAgB,CAAC,UAAU,EAAE,EAAE,WAAW,CAAC,YAC/F,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,MAAC,IAAI,IAAY,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,aACrD,MAAM,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC,WAAW,uBAAU,CAAC,CAAC,CAAC,IAAI,EACxF,KAAC,IAAI,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC,WAAW,YACnE,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,GAC7B,KAJE,IAAI,CAKR,CACR,CAAC,GACG,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { type ReactNode } from "react";
|
|
|
2
2
|
import type { SortableItem } from "@hjmds/design-contracts/components/interaction-adapters";
|
|
3
3
|
import { type ComposeCarouselAccessibleName } from "@hjmds/design-contracts/components/carousel";
|
|
4
4
|
export type CarouselMotionProps = {
|
|
5
|
+
navigation?: "buttons" | "counter";
|
|
5
6
|
slides: readonly SortableItem[];
|
|
6
7
|
currentKey: string;
|
|
7
8
|
onCurrentKeyChange(key: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel-motion.d.ts","sourceRoot":"","sources":["../src/carousel-motion.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yDAAyD,CAAC;AAC5F,OAAO,EAA0D,KAAK,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"carousel-motion.d.ts","sourceRoot":"","sources":["../src/carousel-motion.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yDAAyD,CAAC;AAC5F,OAAO,EAA0D,KAAK,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAYzJ,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACnC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3F,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,6BAA6B,CAAC;IACtD,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IACpG,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAC/B,CAAC;AACF,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,+BA0DxD"}
|
package/dist/carousel-motion.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useRef } from "react";
|
|
3
3
|
import { View } from "react-native";
|
|
4
4
|
import { Carousel } from "react-native-reanimated-carousel";
|
|
5
5
|
import { scheduleOnRN } from "react-native-worklets";
|
|
6
6
|
import { resolveCarouselDescriptor, getCarouselNavigationTarget } from "@hjmds/design-contracts/components/carousel";
|
|
7
7
|
import { motion as timing } from "@hjmds/design-contracts/foundations";
|
|
8
|
-
import { Button } from "./actions.js";
|
|
8
|
+
import { Button, IconButton } from "./actions.js";
|
|
9
|
+
import { Text } from "./primitives.js";
|
|
10
|
+
import { FixedGlyph } from "./internal/fixed-glyph.js";
|
|
9
11
|
import { useHjmNativeTheme } from "./provider.js";
|
|
10
12
|
/** Fraction of a slide past which a slow release still pages (platform paging uses half). */
|
|
11
13
|
const carouselReleasePageFraction = 0.5;
|
|
@@ -61,6 +63,6 @@ export function CarouselMotion(props) {
|
|
|
61
63
|
const forward = dx < 0 ? 1 : -1;
|
|
62
64
|
scheduleOnRN(pageBy, (rtl ? -forward : forward));
|
|
63
65
|
}), onSnapToItem: next => { const slide = props.slides[next]; if (slide && slide.id !== props.currentKey)
|
|
64
|
-
props.onCurrentKeyChange(slide.id); }, renderItem: ({ item, index: i }) => _jsx(View, { accessibilityLabel: resolved[i].accessibleName, accessibilityElementsHidden: resolved[i].inert, importantForAccessibility: i === index ? "auto" : "no-hide-descendants", pointerEvents: i === index ? "auto" : "none", children: props.renderSlide(item) }) }), _jsx(
|
|
66
|
+
props.onCurrentKeyChange(slide.id); }, renderItem: ({ item, index: i }) => _jsx(View, { accessibilityLabel: resolved[i].accessibleName, accessibilityElementsHidden: resolved[i].inert, importantForAccessibility: i === index ? "auto" : "no-hide-descendants", pointerEvents: i === index ? "auto" : "none", children: props.renderSlide(item) }) }), props.navigation === "counter" ? _jsxs(View, { style: { flexDirection: "row", alignItems: "center", justifyContent: "space-between" }, children: [_jsx(IconButton, { label: props.previousLabel, tone: "ghost", disabled: index === 0, onPress: () => pageBy(-1), children: _jsx(FixedGlyph, { children: rtl ? "›" : "‹" }) }), _jsxs(Text, { align: "center", variant: "caption", accessibilityLiveRegion: "polite", children: [index + 1, "/", props.slides.length] }), _jsx(IconButton, { label: props.nextLabel, tone: "ghost", disabled: index === props.slides.length - 1, onPress: () => pageBy(1), children: _jsx(FixedGlyph, { children: rtl ? "‹" : "›" }) })] }) : _jsxs(_Fragment, { children: [_jsx(Button, { tone: "ghost", disabled: index === 0, onPress: () => pageBy(-1), children: props.previousLabel }), _jsx(Button, { tone: "ghost", disabled: index === props.slides.length - 1, onPress: () => pageBy(1), children: props.nextLabel })] })] });
|
|
65
67
|
}
|
|
66
68
|
//# sourceMappingURL=carousel-motion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel-motion.js","sourceRoot":"","sources":["../src/carousel-motion.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAkB,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAoB,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAsC,MAAM,6CAA6C,CAAC;AACzJ,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"carousel-motion.js","sourceRoot":"","sources":["../src/carousel-motion.tsx"],"names":[],"mappings":"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"}
|
package/dist/carousel.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
|
-
import { type StyleProp, type ViewStyle } from "react-native";
|
|
3
2
|
import { type CarouselSlideDescriptor, type CarouselSelection, type CarouselAutoplayConfig, type ComposeCarouselAccessibleName } from "@hjmds/design-contracts/components/carousel";
|
|
4
3
|
import type { HjmCompositionStyleProp } from "./composition-style.js";
|
|
5
4
|
export type CarouselLabels = Readonly<{
|
|
@@ -18,11 +17,6 @@ export type CarouselProps = CarouselSelection & Readonly<{
|
|
|
18
17
|
autoplay?: CarouselAutoplayConfig;
|
|
19
18
|
/** Canonical layout-only placement. Controlled visual keys are excluded. */
|
|
20
19
|
layoutStyle?: HjmCompositionStyleProp;
|
|
21
|
-
/**
|
|
22
|
-
* @deprecated Raw visual style bypasses the HJM recipe. Use `layoutStyle` for placement;
|
|
23
|
-
* `carouselRecipe` owns appearance. Removed in the next major (consumer-policy.md §3.1).
|
|
24
|
-
*/
|
|
25
|
-
style?: StyleProp<ViewStyle>;
|
|
26
20
|
}>;
|
|
27
|
-
export declare function Carousel({ label, slides, renderSlide, composeAccessibleName, labels, autoplay, currentKey, defaultCurrentKey, onCurrentKeyChange, layoutStyle
|
|
21
|
+
export declare function Carousel({ label, slides, renderSlide, composeAccessibleName, labels, autoplay, currentKey, defaultCurrentKey, onCurrentKeyChange, layoutStyle }: CarouselProps): import("react").JSX.Element;
|
|
28
22
|
//# sourceMappingURL=carousel.d.ts.map
|
package/dist/carousel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../src/carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../src/carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAErF,OAAO,EAEL,KAAK,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,KAAK,sBAAsB,EACjF,KAAK,6BAA6B,EACnC,MAAM,6CAA6C,CAAC;AAGrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAItE,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC7H,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,QAAQ,CAAC;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC3C,WAAW,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,SAAS,CAAC;IAC3D,qBAAqB,EAAE,6BAA6B,CAAC;IACrD,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,EAAE,QAAQ,EAC5F,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,WAAW,EAAE,EAAE,aAAa,+BAkFhF"}
|
package/dist/carousel.js
CHANGED
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useRef, useState } from "react";
|
|
2
|
+
import { useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
3
3
|
import { AccessibilityInfo, AppState, PanResponder, View } from "react-native";
|
|
4
4
|
import { carouselRecipe, resolveCarouselDescriptor, getCarouselNavigationTarget, isCarouselAutoplayActive, } from "@hjmds/design-contracts/components/carousel";
|
|
5
5
|
import { Button } from "./actions.js";
|
|
6
6
|
import { Text } from "./primitives.js";
|
|
7
|
-
import { warnDeprecatedStyleProps } from "./internal/deprecated-style.js";
|
|
8
7
|
import { useHjmNativeTheme } from "./provider.js";
|
|
9
8
|
import { useControllableState } from "./internal/state.js";
|
|
10
|
-
export function Carousel({ label, slides, renderSlide, composeAccessibleName, labels, autoplay, currentKey, defaultCurrentKey, onCurrentKeyChange, layoutStyle
|
|
11
|
-
warnDeprecatedStyleProps("Carousel", { style }, "layoutStyle for placement; carouselRecipe owns appearance");
|
|
9
|
+
export function Carousel({ label, slides, renderSlide, composeAccessibleName, labels, autoplay, currentKey, defaultCurrentKey, onCurrentKeyChange, layoutStyle }) {
|
|
12
10
|
const { environment, tokens } = useHjmNativeTheme();
|
|
13
|
-
const [
|
|
11
|
+
const [storedCurrent, setCurrent] = useControllableState({
|
|
14
12
|
...(currentKey === undefined ? {} : { value: currentKey }),
|
|
15
13
|
defaultValue: defaultCurrentKey ?? slides[0]?.id ?? "",
|
|
16
14
|
...(onCurrentKeyChange === undefined ? {} : { onChange: onCurrentKeyChange }),
|
|
17
15
|
});
|
|
16
|
+
const previousIndex = useRef(null);
|
|
17
|
+
// A host can delete the current uncontrolled slide after mount. Keep its place
|
|
18
|
+
// in the collection (or the new last slide); explicit invalid keys still fail validation.
|
|
19
|
+
const recovering = currentKey === undefined && previousIndex.current !== null && !slides.some(slide => slide.id === storedCurrent);
|
|
20
|
+
const current = recovering ? slides[Math.min(previousIndex.current, slides.length - 1)]?.id ?? storedCurrent : storedCurrent;
|
|
21
|
+
useLayoutEffect(() => {
|
|
22
|
+
previousIndex.current = slides.findIndex(slide => slide.id === current);
|
|
23
|
+
if (recovering)
|
|
24
|
+
setCurrent(current);
|
|
25
|
+
}, [current, recovering, slides, setCurrent]);
|
|
18
26
|
const descriptor = { slides, currentKey: current, ...(autoplay ? { autoplay } : {}) };
|
|
19
27
|
const resolved = resolveCarouselDescriptor(descriptor, { composeAccessibleName });
|
|
20
28
|
if (!label.trim() || Object.values(labels).some((value) => !value.trim()))
|
|
@@ -61,7 +69,7 @@ export function Carousel({ label, slides, renderSlide, composeAccessibleName, la
|
|
|
61
69
|
},
|
|
62
70
|
});
|
|
63
71
|
const selected = resolved.find((slide) => slide.current);
|
|
64
|
-
return _jsxs(View, { style: [{ gap: carouselRecipe.sizes.medium.gap, direction: environment.direction },
|
|
72
|
+
return _jsxs(View, { style: [{ gap: carouselRecipe.sizes.medium.gap, direction: environment.direction }, layoutStyle], children: [autoplay ? _jsx(Button, { tone: "ghost", disabled: environment.reducedMotion || screenReader, onPress: () => { if (last)
|
|
65
73
|
setCurrent(slides[0].id); setRotating(!rotating || last); }, children: rotating && !last && !environment.reducedMotion && !screenReader ? labels.pause : labels.resume }) : null, _jsx(View, { ...swipe.panHandlers, onTouchStart: () => setRotating(false), onFocus: () => setRotating(false), children: resolved.map((slide) => _jsx(View, { style: slide.inert ? { display: "none" } : undefined, accessibilityElementsHidden: slide.inert, importantForAccessibility: slide.inert ? "no-hide-descendants" : "auto", pointerEvents: slide.inert ? "none" : "auto", children: renderSlide(slide) }, slide.id)) }), _jsx(View, { accessible: true, accessibilityRole: "adjustable", accessibilityLabel: `${label}: ${selected.accessibleName}`, accessibilityValue: { min: 1, max: slides.length, now: selected.position, text: selected.accessibleName }, accessibilityActions: [{ name: "increment", label: labels.next }, { name: "decrement", label: labels.previous }], onAccessibilityAction: ({ nativeEvent }) => { if (nativeEvent.actionName === "increment")
|
|
66
74
|
move("next"); if (nativeEvent.actionName === "decrement")
|
|
67
75
|
move("previous"); }, children: _jsx(Text, { align: "center", variant: "caption", children: selected.accessibleName }) }), _jsxs(View, { accessibilityLabel: labels.navigation, onFocus: () => setRotating(false), style: { flexDirection: "row", flexWrap: "wrap", gap: tokens.spacing.xs, justifyContent: "center" }, children: [_jsx(Button, { tone: "ghost", disabled: current === slides[0].id, onPress: () => move("previous"), children: labels.previous }), resolved.map((slide) => _jsx(Button, { tone: slide.current ? "secondary" : "ghost", accessibilityLabel: slide.accessibleName, accessibilityState: { selected: slide.current }, onPress: () => select(slide.id), children: String(slide.position) }, slide.id)), _jsx(Button, { tone: "ghost", disabled: last, onPress: () => move("next"), children: labels.next })] })] });
|
package/dist/carousel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel.js","sourceRoot":"","sources":["../src/carousel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"carousel.js","sourceRoot":"","sources":["../src/carousel.tsx"],"names":[],"mappings":"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"}
|
package/dist/collapsible.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type CollapsibleOpenState } from "@hjmds/design-contracts/components/collapsible";
|
|
2
2
|
import { type ReactNode } from "react";
|
|
3
|
-
import { type StyleProp, type ViewStyle } from "react-native";
|
|
4
3
|
import type { HjmCompositionStyleProp } from "./composition-style.js";
|
|
5
4
|
export type CollapsibleProps = CollapsibleOpenState & Readonly<{
|
|
6
5
|
/** The control's label; it also tells the user what will appear. */
|
|
@@ -13,11 +12,6 @@ export type CollapsibleProps = CollapsibleOpenState & Readonly<{
|
|
|
13
12
|
keepMounted?: boolean;
|
|
14
13
|
/** Canonical layout-only placement. Controlled visual keys are excluded. */
|
|
15
14
|
layoutStyle?: HjmCompositionStyleProp;
|
|
16
|
-
/**
|
|
17
|
-
* @deprecated Raw visual style bypasses the HJM recipe. Use `layoutStyle` for placement;
|
|
18
|
-
* `collapsibleRecipe` owns appearance. Removed in the next major (consumer-policy.md §3.1).
|
|
19
|
-
*/
|
|
20
|
-
style?: StyleProp<ViewStyle>;
|
|
21
15
|
}>;
|
|
22
|
-
export declare function Collapsible({ trigger, children, disabled, presentation, keepMounted, layoutStyle,
|
|
16
|
+
export declare function Collapsible({ trigger, children, disabled, presentation, keepMounted, layoutStyle, ...openState }: CollapsibleProps): import("react").JSX.Element;
|
|
23
17
|
//# sourceMappingURL=collapsible.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collapsible.d.ts","sourceRoot":"","sources":["../src/collapsible.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"collapsible.d.ts","sourceRoot":"","sources":["../src/collapsible.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GACjD,QAAQ,CAAC;IACP,oEAAoE;IACpE,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC;IACvC,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAIL,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAgB,EAAE,YAA2B,EAAE,WAAmB,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,EAAE,gBAAgB,+BA+BjK"}
|
package/dist/collapsible.js
CHANGED
|
@@ -4,15 +4,15 @@ import { useState } from "react";
|
|
|
4
4
|
import { control } from "@hjmds/design-contracts/foundations";
|
|
5
5
|
import { Pressable, View } from "react-native";
|
|
6
6
|
import { Text } from "./primitives.js";
|
|
7
|
-
import { warnDeprecatedStyleProps } from "./internal/deprecated-style.js";
|
|
8
7
|
// UI control labels keep the ui font even when their metric variant is body; content still uses reading.
|
|
9
|
-
export function Collapsible({ trigger, children, disabled = false, presentation = "disclosure", keepMounted = false, layoutStyle,
|
|
10
|
-
warnDeprecatedStyleProps("Collapsible", { style }, "layoutStyle for placement; collapsibleRecipe owns appearance");
|
|
8
|
+
export function Collapsible({ trigger, children, disabled = false, presentation = "disclosure", keepMounted = false, layoutStyle, ...openState }) {
|
|
11
9
|
validateCollapsibleOpenState(openState);
|
|
12
10
|
const controlled = openState.open !== undefined;
|
|
13
11
|
const [internalOpen, setInternalOpen] = useState(openState.defaultOpen ?? false);
|
|
14
12
|
const open = presentation === "inline" || (openState.open ?? internalOpen);
|
|
15
|
-
return (_jsxs(View, { style: [{ gap: collapsibleRecipe.gap },
|
|
13
|
+
return (_jsxs(View, { style: [{ gap: collapsibleRecipe.gap }, layoutStyle], children: [_jsxs(Pressable, { accessibilityRole: "button", accessibilityState: { expanded: open, disabled }, disabled: disabled, onPress: () => {
|
|
14
|
+
if (disabled || presentation === "inline")
|
|
15
|
+
return;
|
|
16
16
|
const next = !open;
|
|
17
17
|
if (!controlled)
|
|
18
18
|
setInternalOpen(next);
|
package/dist/collapsible.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collapsible.js","sourceRoot":"","sources":["../src/collapsible.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,iBAAiB,EACjB,4BAA4B,GAE7B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"collapsible.js","sourceRoot":"","sources":["../src/collapsible.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,iBAAiB,EACjB,4BAA4B,GAE7B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAkBvC,yGAAyG;AACzG,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAE,YAAY,GAAG,YAAY,EAAE,WAAW,GAAG,KAAK,EAAE,WAAW,EAAE,GAAG,SAAS,EAAoB;IAChK,4BAA4B,CAAC,SAAiC,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC;IAChD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,YAAY,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC;IAC3E,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,iBAAiB,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,aACxD,MAAC,SAAS,IACR,iBAAiB,EAAC,QAAQ,EAC1B,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAChD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,QAAQ,IAAI,YAAY,KAAK,QAAQ;wBAAE,OAAO;oBAClD,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC;oBACnB,IAAI,CAAC,UAAU;wBAAE,eAAe,CAAC,IAAI,CAAC,CAAC;oBACvC,SAAS,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;gBACD,kFAAkF;gBAClF,4FAA4F;gBAC5F,KAAK,EAAE,EAAE,OAAO,EAAE,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,EAAE,iBAAiB,CAAC,GAAG,EAAE,aAE1M,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAC,IAAI,IAC9B,QAAQ,EAAC,IAAI,YAAE,OAAO,GAAQ,CAAC,CAAC,CAAC,OAAO,EAE9C,KAAC,IAAI,IAAC,2BAA2B,QAAC,yBAAyB,EAAC,IAAI,YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAQ,IAChF,EAGX,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,2BAA2B,EAAE,CAAC,IAAI,EAAE,yBAAyB,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,YAAG,QAAQ,GAAQ,CAAC,CAAC,CAAC,IAAI,IAClM,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -2,13 +2,14 @@ import { type ContentTransitionPreset } from "@hjmds/design-contracts/content-tr
|
|
|
2
2
|
import { type ReactNode } from "react";
|
|
3
3
|
export type ContentTransitionProps = {
|
|
4
4
|
preset?: ContentTransitionPreset;
|
|
5
|
+
travelDirection?: "forward" | "backward";
|
|
5
6
|
stateKey: string;
|
|
6
7
|
children: ReactNode;
|
|
7
8
|
motion?: "system" | "none";
|
|
8
9
|
animateHeight?: boolean;
|
|
9
10
|
enterOnMount?: boolean;
|
|
10
11
|
};
|
|
11
|
-
export declare function ContentTransition({ stateKey, children, motion: preference, preset: suppliedPreset, animateHeight, enterOnMount }: ContentTransitionProps): import("react").JSX.Element;
|
|
12
|
+
export declare function ContentTransition({ stateKey, children, motion: preference, preset: suppliedPreset, travelDirection, animateHeight, enterOnMount }: ContentTransitionProps): import("react").JSX.Element;
|
|
12
13
|
export declare function TextTransition({ text, motion: preference, preset }: {
|
|
13
14
|
preset?: ContentTransitionPreset;
|
|
14
15
|
text: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-transition.d.ts","sourceRoot":"","sources":["../src/content-transition.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACpH,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMpE,MAAM,MAAM,sBAAsB,GAAG;IAAE,MAAM,CAAC,EAAE,uBAAuB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"content-transition.d.ts","sourceRoot":"","sources":["../src/content-transition.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACpH,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMpE,MAAM,MAAM,sBAAsB,GAAG;IAAE,MAAM,CAAC,EAAE,uBAAuB,CAAC;IAAC,eAAe,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AACxO,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAqB,EAAE,MAAM,EAAE,cAAc,EAAE,eAA2B,EAAE,aAAqB,EAAE,YAAoB,EAAE,EAAE,sBAAsB,+BA6ChN;AACD,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,uBAAuB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;CAAE,+BAElJ"}
|
|
@@ -5,10 +5,10 @@ import { Animated, AppState, Easing, View } from "react-native";
|
|
|
5
5
|
import { easing, motion as timing } from "@hjmds/design-contracts/foundations";
|
|
6
6
|
import { useHjmNativeTheme } from "./provider.js";
|
|
7
7
|
import { Text } from "./primitives.js";
|
|
8
|
-
export function ContentTransition({ stateKey, children, motion: preference = "system", preset: suppliedPreset, animateHeight = false, enterOnMount = false }) {
|
|
8
|
+
export function ContentTransition({ stateKey, children, motion: preference = "system", preset: suppliedPreset, travelDirection = "forward", animateHeight = false, enterOnMount = false }) {
|
|
9
9
|
const { environment, designProfile } = useHjmNativeTheme();
|
|
10
10
|
const preset = suppliedPreset ?? designProfile?.interactions.contentTransition ?? "fade";
|
|
11
|
-
const from = resolveContentTransition(preset, environment.direction);
|
|
11
|
+
const from = resolveContentTransition(preset, environment.direction, travelDirection);
|
|
12
12
|
const opacity = useRef(new Animated.Value(1)).current;
|
|
13
13
|
const height = useRef(new Animated.Value(0)).current;
|
|
14
14
|
const targetHeight = useRef(null);
|
|
@@ -63,7 +63,7 @@ export function ContentTransition({ stateKey, children, motion: preference = "sy
|
|
|
63
63
|
return () => { animation.stop(); sub.remove(); };
|
|
64
64
|
// A new preset/direction mid-flight must settle the current content rather
|
|
65
65
|
// than bend an already running transform onto a different path.
|
|
66
|
-
}, [stateKey, opacity, environment.reducedMotion, environment.direction, preference, preset, enterOnMount]);
|
|
66
|
+
}, [stateKey, opacity, environment.reducedMotion, environment.direction, preference, preset, enterOnMount, travelDirection]);
|
|
67
67
|
// Keep only the current subtree; exit copies could remain touchable or spoken.
|
|
68
68
|
return _jsx(Animated.View, { style: heightEnabled && measured ? { height, overflow: "hidden" } : undefined, children: _jsx(View, { onLayout: animateHeight ? measureHeight : undefined, children: _jsx(Animated.View, { style: { opacity, transform: [{ translateX: opacity.interpolate({ inputRange: [0, 1], outputRange: [from.translateX, 0] }) }, { translateY: opacity.interpolate({ inputRange: [0, 1], outputRange: [from.translateY, 0] }) }, { scale: opacity.interpolate({ inputRange: [0, 1], outputRange: [from.scale, 1] }) }] }, children: children }) }) });
|
|
69
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-transition.js","sourceRoot":"","sources":["../src/content-transition.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,wBAAwB,EAAgC,MAAM,4CAA4C,CAAC;AACpH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAA0B,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGvC,MAAM,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,GAAG,KAAK,EAAE,YAAY,GAAG,KAAK,EAA0B;
|
|
1
|
+
{"version":3,"file":"content-transition.js","sourceRoot":"","sources":["../src/content-transition.tsx"],"names":[],"mappings":"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"}
|