@retray-dev/ui-kit 12.2.0 → 13.2.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/CONSUMER.md +26 -11
- package/DESIGN.md +2 -2
- package/README.md +15 -11
- package/{COMPONENTS.md → SKILL.md} +374 -996
- package/dist/Accordion.d.mts +2 -0
- package/dist/Accordion.d.ts +2 -0
- package/dist/Accordion.js +49 -210
- package/dist/Accordion.mjs +6 -6
- package/dist/AlertBanner.js +29 -153
- package/dist/AlertBanner.mjs +3 -4
- package/dist/AppHeader.d.mts +5 -2
- package/dist/AppHeader.d.ts +5 -2
- package/dist/AppHeader.js +45 -239
- package/dist/AppHeader.mjs +6 -8
- package/dist/Avatar.d.mts +17 -1
- package/dist/Avatar.d.ts +17 -1
- package/dist/Avatar.js +80 -115
- package/dist/Avatar.mjs +2 -3
- package/dist/Badge.js +24 -149
- package/dist/Badge.mjs +3 -4
- package/dist/Button.js +79 -267
- package/dist/Button.mjs +6 -7
- package/dist/ButtonGroup.mjs +0 -1
- package/dist/Card.js +15 -200
- package/dist/Card.mjs +4 -6
- package/dist/CategoryStrip.d.mts +0 -5
- package/dist/CategoryStrip.d.ts +0 -5
- package/dist/CategoryStrip.js +47 -265
- package/dist/CategoryStrip.mjs +6 -7
- package/dist/Checkbox.d.mts +2 -1
- package/dist/Checkbox.d.ts +2 -1
- package/dist/Checkbox.js +18 -201
- package/dist/Checkbox.mjs +5 -6
- package/dist/Chip.js +44 -236
- package/dist/Chip.mjs +7 -7
- package/dist/ConfirmDialog.d.mts +2 -1
- package/dist/ConfirmDialog.d.ts +2 -1
- package/dist/ConfirmDialog.js +110 -300
- package/dist/ConfirmDialog.mjs +7 -8
- package/dist/CurrencyDisplay.js +1 -114
- package/dist/CurrencyDisplay.mjs +2 -3
- package/dist/CurrencyInput.js +35 -162
- package/dist/CurrencyInput.mjs +5 -6
- package/dist/DetailRow.js +25 -150
- package/dist/DetailRow.mjs +3 -4
- package/dist/EmptyState.js +80 -268
- package/dist/EmptyState.mjs +7 -8
- package/dist/ErrorBoundary.js +32 -199
- package/dist/ErrorBoundary.mjs +4 -5
- package/dist/Form.js +1 -114
- package/dist/Form.mjs +2 -3
- package/dist/HolographicCard.d.mts +0 -28
- package/dist/HolographicCard.d.ts +0 -28
- package/dist/HolographicCard.js +20 -130
- package/dist/HolographicCard.mjs +9 -33
- package/dist/IconButton.js +36 -234
- package/dist/IconButton.mjs +5 -7
- package/dist/IconPicker.js +222 -929
- package/dist/IconPicker.mjs +5 -6
- package/dist/ImageUpload.d.mts +3 -3
- package/dist/ImageUpload.d.ts +3 -3
- package/dist/ImageUpload.js +49 -238
- package/dist/ImageUpload.mjs +5 -7
- package/dist/ImageViewer.js +75 -266
- package/dist/ImageViewer.mjs +8 -9
- package/dist/Input.d.mts +1 -1
- package/dist/Input.d.ts +1 -1
- package/dist/Input.js +35 -162
- package/dist/Input.mjs +4 -5
- package/dist/LabelValue.js +24 -149
- package/dist/LabelValue.mjs +3 -4
- package/dist/ListGroup.js +1 -114
- package/dist/ListGroup.mjs +2 -3
- package/dist/ListItem.d.mts +2 -1
- package/dist/ListItem.d.ts +2 -1
- package/dist/ListItem.js +41 -236
- package/dist/ListItem.mjs +5 -7
- package/dist/MediaCard.d.mts +0 -14
- package/dist/MediaCard.d.ts +0 -14
- package/dist/MediaCard.js +69 -315
- package/dist/MediaCard.mjs +5 -7
- package/dist/MenuGroup.js +1 -114
- package/dist/MenuGroup.mjs +2 -3
- package/dist/MenuItem.d.mts +2 -1
- package/dist/MenuItem.d.ts +2 -1
- package/dist/MenuItem.js +39 -235
- package/dist/MenuItem.mjs +5 -7
- package/dist/MonthPicker.js +8 -163
- package/dist/MonthPicker.mjs +3 -4
- package/dist/NumberStepper.d.mts +2 -1
- package/dist/NumberStepper.d.ts +2 -1
- package/dist/NumberStepper.js +44 -239
- package/dist/NumberStepper.mjs +5 -7
- package/dist/PagerDots.d.mts +1 -1
- package/dist/PagerDots.d.ts +1 -1
- package/dist/PagerDots.js +69 -224
- package/dist/PagerDots.mjs +6 -6
- package/dist/Pressable.js +14 -85
- package/dist/Pressable.mjs +4 -5
- package/dist/PricingCard.js +87 -272
- package/dist/PricingCard.mjs +8 -9
- package/dist/Progress.js +3 -123
- package/dist/Progress.mjs +3 -4
- package/dist/RadioGroup.js +52 -265
- package/dist/RadioGroup.mjs +5 -6
- package/dist/RetrayProvider.js +3 -6
- package/dist/RetrayProvider.mjs +3 -4
- package/dist/Select.d.mts +3 -1
- package/dist/Select.d.ts +3 -1
- package/dist/Select.js +27 -233
- package/dist/Select.mjs +4 -6
- package/dist/SelectableCard.js +33 -209
- package/dist/SelectableCard.mjs +5 -6
- package/dist/SelectableGrid.d.mts +0 -21
- package/dist/SelectableGrid.d.ts +0 -21
- package/dist/SelectableGrid.js +49 -272
- package/dist/SelectableGrid.mjs +5 -7
- package/dist/Separator.js +1 -114
- package/dist/Separator.mjs +2 -3
- package/dist/Sheet.d.mts +1 -1
- package/dist/Sheet.d.ts +1 -1
- package/dist/Sheet.js +33 -175
- package/dist/Sheet.mjs +3 -4
- package/dist/SheetSelect.js +39 -236
- package/dist/SheetSelect.mjs +6 -7
- package/dist/Skeleton.js +4 -124
- package/dist/Skeleton.mjs +3 -4
- package/dist/Slider.d.mts +2 -1
- package/dist/Slider.d.ts +2 -1
- package/dist/Slider.js +8 -161
- package/dist/Slider.mjs +3 -4
- package/dist/Spinner.js +3 -116
- package/dist/Spinner.mjs +2 -3
- package/dist/Stats.js +36 -234
- package/dist/Stats.mjs +5 -7
- package/dist/Switch.d.mts +2 -1
- package/dist/Switch.d.ts +2 -1
- package/dist/Switch.js +26 -176
- package/dist/Switch.mjs +5 -5
- package/dist/TabBar.js +43 -200
- package/dist/TabBar.mjs +5 -5
- package/dist/Tabs.js +15 -199
- package/dist/Tabs.mjs +5 -6
- package/dist/Text.js +9 -130
- package/dist/Text.mjs +2 -3
- package/dist/Textarea.d.mts +2 -1
- package/dist/Textarea.d.ts +2 -1
- package/dist/Textarea.js +71 -219
- package/dist/Textarea.mjs +4 -5
- package/dist/Toast.d.mts +12 -10
- package/dist/Toast.d.ts +12 -10
- package/dist/Toast.js +1 -114
- package/dist/Toast.mjs +2 -3
- package/dist/Toggle.js +39 -236
- package/dist/Toggle.mjs +6 -7
- package/dist/{chunk-ELGEOM7I.mjs → chunk-2QXJDRVU.mjs} +13 -10
- package/dist/{chunk-LIS6I5UP.mjs → chunk-2VIDP72N.mjs} +3 -3
- package/dist/{chunk-NHDI3VQB.mjs → chunk-422IVD3H.mjs} +16 -12
- package/dist/{chunk-DF7JA72E.mjs → chunk-4NQFTHN3.mjs} +13 -7
- package/dist/{chunk-3XCFYSX4.mjs → chunk-5MYNAAFE.mjs} +13 -17
- package/dist/{chunk-E7NEHHXV.mjs → chunk-62BBSSUF.mjs} +3 -3
- package/dist/{chunk-UBUXUMER.mjs → chunk-77UOVFIS.mjs} +7 -5
- package/dist/{chunk-M3C7XM2M.mjs → chunk-7BZJRB77.mjs} +28 -18
- package/dist/chunk-ARONDO7M.mjs +40 -0
- package/dist/{chunk-GH67YXG6.mjs → chunk-AZV7KNJI.mjs} +3 -3
- package/dist/{chunk-2P2CB235.mjs → chunk-BULKGOIZ.mjs} +7 -8
- package/dist/{chunk-RJNLAH76.mjs → chunk-C5ZRMR2E.mjs} +4 -2
- package/dist/chunk-CM2DG4MR.mjs +142 -0
- package/dist/{chunk-UQ4742ET.mjs → chunk-COA2YZOX.mjs} +8 -6
- package/dist/{chunk-EDLCGYIO.mjs → chunk-CZN6L2QU.mjs} +11 -8
- package/dist/{chunk-TS7DGUIR.mjs → chunk-DBHSUUKU.mjs} +2 -2
- package/dist/{chunk-57V2LXCK.mjs → chunk-DE25XTVQ.mjs} +3 -3
- package/dist/{chunk-RMRS44MQ.mjs → chunk-E2PONRJG.mjs} +13 -9
- package/dist/{chunk-GUTDFUNF.mjs → chunk-EHGBHFMH.mjs} +9 -17
- package/dist/{chunk-ZIMY2QUM.mjs → chunk-ERWJPVX7.mjs} +2 -2
- package/dist/{chunk-NLZY4TXU.mjs → chunk-ESQDPO5E.mjs} +7 -7
- package/dist/{chunk-VJBUCITV.mjs → chunk-EW2FIDSM.mjs} +1 -1
- package/dist/{chunk-HC4VVCWY.mjs → chunk-FTTI6T5Q.mjs} +4 -4
- package/dist/{chunk-MVMGPZN6.mjs → chunk-H6MQL7PS.mjs} +12 -7
- package/dist/{chunk-CF27NBXO.mjs → chunk-HHOOFDBA.mjs} +38 -41
- package/dist/{chunk-2HFD4IHU.mjs → chunk-HUSSF6TF.mjs} +1 -1
- package/dist/{chunk-HEDQPK4I.mjs → chunk-IDVUZIVY.mjs} +16 -22
- package/dist/chunk-IFYMBOEN.mjs +14 -0
- package/dist/{chunk-QOLWA2PW.mjs → chunk-IGU223UM.mjs} +80 -4
- package/dist/chunk-IJCMPVW5.mjs +121 -0
- package/dist/{chunk-AENAVIKT.mjs → chunk-ITG4JQM3.mjs} +4 -4
- package/dist/{chunk-E5UKLSJZ.mjs → chunk-K3QX2M26.mjs} +11 -8
- package/dist/{chunk-4OORJ2DY.mjs → chunk-K7TKID3V.mjs} +8 -7
- package/dist/{chunk-2LG326TT.mjs → chunk-KAGADD2O.mjs} +4 -4
- package/dist/{chunk-IVSRW4HS.mjs → chunk-KC5QDYGZ.mjs} +4 -4
- package/dist/{chunk-7AFZWSCI.mjs → chunk-KPTY7UYQ.mjs} +1 -1
- package/dist/{chunk-YTXRIXNZ.mjs → chunk-KSSVIFYR.mjs} +9 -12
- package/dist/chunk-L3YKPTJQ.mjs +119 -0
- package/dist/chunk-M53LC4Q7.mjs +35 -0
- package/dist/chunk-MZ6WRTD2.mjs +40 -0
- package/dist/chunk-NGEN2EES.mjs +581 -0
- package/dist/{chunk-ZR6HSEAB.mjs → chunk-NPCBNGNE.mjs} +17 -26
- package/dist/{chunk-C43HRKXH.mjs → chunk-OBV72JD4.mjs} +1 -1
- package/dist/{chunk-LPV4NJJK.mjs → chunk-PGQ6FMXS.mjs} +6 -5
- package/dist/{chunk-MEPSKGBO.mjs → chunk-PI6RULJX.mjs} +1 -1
- package/dist/{chunk-F3YTWO3T.mjs → chunk-RA6SAAFE.mjs} +9 -8
- package/dist/{chunk-UNNRUJTM.mjs → chunk-RRKM4MKB.mjs} +7 -7
- package/dist/{chunk-ULGNQPNE.mjs → chunk-S2VGME7X.mjs} +1 -1
- package/dist/{chunk-OLVJFKXS.mjs → chunk-S44XWTTC.mjs} +35 -25
- package/dist/{chunk-YMYIEVZP.mjs → chunk-SZEKQAOY.mjs} +1 -1
- package/dist/{chunk-BXF4AMHY.mjs → chunk-TMH263OK.mjs} +5 -4
- package/dist/{chunk-NJG7DHVF.mjs → chunk-U6DEBYU5.mjs} +10 -9
- package/dist/{chunk-QXDGGOLC.mjs → chunk-UMZTPUB3.mjs} +33 -21
- package/dist/{chunk-KSUWPU2F.mjs → chunk-WIPEDNSD.mjs} +7 -7
- package/dist/{chunk-QDAZGZUF.mjs → chunk-XCIG6HT2.mjs} +3 -3
- package/dist/{chunk-4J2PXL36.mjs → chunk-Y6YS33GM.mjs} +40 -38
- package/dist/{chunk-4XOB5TTD.mjs → chunk-ZKDKKQCE.mjs} +5 -5
- package/dist/{chunk-LOBLCFMN.mjs → chunk-ZTPYUU5C.mjs} +5 -5
- package/dist/fonts.mjs +0 -2
- package/dist/index.d.mts +13 -73
- package/dist/index.d.ts +13 -73
- package/dist/index.js +1149 -1892
- package/dist/index.mjs +81 -86
- package/package.json +20 -20
- package/src/components/Accordion/Accordion.tsx +15 -9
- package/src/components/AlertBanner/AlertBanner.tsx +7 -6
- package/src/components/AppHeader/AppHeader.tsx +25 -10
- package/src/components/Avatar/Avatar.tsx +92 -1
- package/src/components/Avatar/index.ts +2 -2
- package/src/components/Badge/Badge.tsx +2 -2
- package/src/components/Button/Button.tsx +50 -46
- package/src/components/Card/Card.tsx +1 -0
- package/src/components/CategoryStrip/CategoryStrip.tsx +36 -49
- package/src/components/Checkbox/Checkbox.tsx +3 -0
- package/src/components/Chip/Chip.tsx +5 -4
- package/src/components/ConfirmDialog/ConfirmDialog.tsx +33 -17
- package/src/components/DetailRow/DetailRow.tsx +3 -3
- package/src/components/EmptyState/EmptyState.tsx +2 -2
- package/src/components/ErrorBoundary/ErrorBoundary.tsx +6 -6
- package/src/components/HolographicCard/HolographicCard.tsx +14 -95
- package/src/components/IconButton/IconButton.tsx +2 -2
- package/src/components/IconPicker/IconPicker.tsx +13 -12
- package/src/components/ImageUpload/ImageUpload.tsx +43 -46
- package/src/components/ImageViewer/ImageViewer.tsx +3 -3
- package/src/components/Input/Input.tsx +11 -5
- package/src/components/LabelValue/LabelValue.tsx +2 -2
- package/src/components/ListItem/ListItem.tsx +7 -4
- package/src/components/MediaCard/MediaCard.tsx +21 -59
- package/src/components/MenuItem/MenuItem.tsx +5 -2
- package/src/components/MonthPicker/MonthPicker.tsx +2 -2
- package/src/components/NumberStepper/NumberStepper.tsx +10 -6
- package/src/components/PagerDots/PagerDots.tsx +38 -28
- package/src/components/PricingCard/PricingCard.tsx +6 -6
- package/src/components/RadioGroup/RadioGroup.tsx +18 -31
- package/src/components/Select/Select.tsx +35 -39
- package/src/components/SelectableCard/SelectableCard.tsx +4 -6
- package/src/components/SelectableGrid/SelectableGrid.tsx +37 -72
- package/src/components/Sheet/Sheet.tsx +28 -15
- package/src/components/Sheet/index.ts +2 -2
- package/src/components/SheetSelect/SheetSelect.tsx +3 -3
- package/src/components/Skeleton/Skeleton.tsx +1 -1
- package/src/components/Slider/Slider.tsx +3 -0
- package/src/components/Spinner/Spinner.tsx +2 -2
- package/src/components/Stats/Stats.tsx +2 -2
- package/src/components/Switch/Switch.tsx +12 -7
- package/src/components/TabBar/TabBar.tsx +9 -8
- package/src/components/Text/Text.tsx +13 -1
- package/src/components/Textarea/Textarea.tsx +18 -32
- package/src/components/Toggle/Toggle.tsx +3 -3
- package/src/hooks/useConfirmDialog.ts +31 -42
- package/src/index.ts +3 -4
- package/src/theme/ThemeProvider.tsx +1 -4
- package/src/theme/colorUtils.ts +1 -72
- package/src/theme/colors.ts +40 -1
- package/src/theme/types.ts +2 -2
- package/src/utils/animations.ts +0 -47
- package/src/utils/curatedIcons.ts +93 -801
- package/src/utils/haptics.ts +13 -208
- package/src/utils/icons.ts +27 -91
- package/src/utils/pressable.ts +10 -61
- package/dist/VirtualList.d.mts +0 -19
- package/dist/VirtualList.d.ts +0 -19
- package/dist/VirtualList.js +0 -38
- package/dist/VirtualList.mjs +0 -2
- package/dist/chunk-2BA3JMKK.mjs +0 -136
- package/dist/chunk-3DKJ2GIC.mjs +0 -30
- package/dist/chunk-7ELGZ66G.mjs +0 -164
- package/dist/chunk-DVK4G2GT.mjs +0 -59
- package/dist/chunk-EJ7ZPXOH.mjs +0 -163
- package/dist/chunk-KA7LTET3.mjs +0 -71
- package/dist/chunk-LNPKGWBG.mjs +0 -134
- package/dist/chunk-NC5ZTR2Y.mjs +0 -32
- package/dist/chunk-SAWUXP3A.mjs +0 -1114
- package/dist/chunk-Y6FXYEAI.mjs +0 -8
- package/dist/chunk-YNROWHQJ.mjs +0 -46
- package/src/components/VirtualList/VirtualList.tsx +0 -60
- package/src/components/VirtualList/index.ts +0 -1
- package/src/utils/fontGuard.ts +0 -35
- package/src/utils/hover.ts +0 -25
- package/src/utils/useColorTransition.ts +0 -40
- package/src/utils/usePressScale.ts +0 -75
package/dist/HolographicCard.js
CHANGED
|
@@ -4,80 +4,29 @@ var React = require('react');
|
|
|
4
4
|
var reactNative = require('react-native');
|
|
5
5
|
var reactNativeSkia = require('@shopify/react-native-skia');
|
|
6
6
|
var Animated = require('react-native-reanimated');
|
|
7
|
+
var pressto = require('pressto');
|
|
7
8
|
|
|
8
9
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
10
|
|
|
10
11
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
11
12
|
var Animated__default = /*#__PURE__*/_interopDefault(Animated);
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
18
|
-
});
|
|
19
|
-
var SPRINGS = {
|
|
20
|
-
/** Tight, premium press feel — Buttons, Toggle, Tabs triggers. */
|
|
21
|
-
pressIn: { stiffness: 600, damping: 35, mass: 0.8 },
|
|
22
|
-
pressOut: { stiffness: 280, damping: 22, mass: 0.8 }};
|
|
23
|
-
({
|
|
24
|
-
/** Material-style ease-out — natural deceleration for state changes. */
|
|
25
|
-
standard: Animated.Easing.bezier(0.2, 0, 0, 1),
|
|
26
|
-
/** Strong ease-out for expanding surfaces (Accordion open). */
|
|
27
|
-
expand: Animated.Easing.bezier(0.23, 1, 0.32, 1),
|
|
28
|
-
/** Quick ease-in for collapsing. */
|
|
29
|
-
collapse: Animated.Easing.in(Animated.Easing.ease)
|
|
14
|
+
// src/components/HolographicCard/HolographicCard.tsx
|
|
15
|
+
var makePressable = (scale) => pressto.createAnimatedPressable((progress) => {
|
|
16
|
+
"worklet";
|
|
17
|
+
return { transform: [{ scale: 1 - (1 - scale) * progress }] };
|
|
30
18
|
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const onMouseEnter = React.useCallback(() => setHovered(true), []);
|
|
37
|
-
const onMouseLeave = React.useCallback(() => setHovered(false), []);
|
|
38
|
-
if (reactNative.Platform.OS !== "web") {
|
|
39
|
-
return { hovered: false, hoverHandlers: {} };
|
|
40
|
-
}
|
|
41
|
-
return { hovered, hoverHandlers: { onMouseEnter, onMouseLeave } };
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// src/utils/usePressScale.ts
|
|
45
|
-
function usePressScale({
|
|
46
|
-
pressScale = PRESS_SCALE.button,
|
|
47
|
-
hoverScale = 1.02,
|
|
48
|
-
pressInSpring = SPRINGS.pressIn,
|
|
49
|
-
pressOutSpring = SPRINGS.pressOut,
|
|
50
|
-
disabled = false
|
|
51
|
-
} = {}) {
|
|
52
|
-
const scale = Animated.useSharedValue(1);
|
|
53
|
-
const { hovered, hoverHandlers } = useHover();
|
|
54
|
-
const onPressIn = React.useCallback(() => {
|
|
55
|
-
if (disabled) return;
|
|
56
|
-
scale.value = Animated.withSpring(pressScale, pressInSpring);
|
|
57
|
-
}, [disabled, pressScale, pressInSpring, scale]);
|
|
58
|
-
const onPressOut = React.useCallback(() => {
|
|
59
|
-
if (disabled) return;
|
|
60
|
-
scale.value = Animated.withSpring(1, pressOutSpring);
|
|
61
|
-
}, [disabled, pressOutSpring, scale]);
|
|
62
|
-
const hoverActive = reactNative.Platform.OS === "web" && hovered && hoverScale !== 1 && !disabled;
|
|
63
|
-
const animatedStyle = Animated.useAnimatedStyle(() => ({
|
|
64
|
-
transform: [
|
|
65
|
-
{ scale: scale.value * (hoverActive ? hoverScale : 1) }
|
|
66
|
-
]
|
|
67
|
-
}));
|
|
68
|
-
return {
|
|
69
|
-
animatedStyle,
|
|
70
|
-
onPressIn,
|
|
71
|
-
onPressOut,
|
|
72
|
-
hoverHandlers
|
|
73
|
-
};
|
|
74
|
-
}
|
|
19
|
+
makePressable(0.95);
|
|
20
|
+
var PressableCard = makePressable(0.98);
|
|
21
|
+
makePressable(0.97);
|
|
22
|
+
makePressable(0.94);
|
|
23
|
+
makePressable(0.95);
|
|
75
24
|
var _haptics = null;
|
|
76
|
-
var
|
|
25
|
+
var _loaded = false;
|
|
77
26
|
async function getHaptics() {
|
|
78
27
|
if (reactNative.Platform.OS === "web") return null;
|
|
79
|
-
if (!
|
|
80
|
-
|
|
28
|
+
if (!_loaded) {
|
|
29
|
+
_loaded = true;
|
|
81
30
|
try {
|
|
82
31
|
_haptics = await import('expo-haptics');
|
|
83
32
|
} catch {
|
|
@@ -86,45 +35,8 @@ async function getHaptics() {
|
|
|
86
35
|
}
|
|
87
36
|
return _haptics;
|
|
88
37
|
}
|
|
89
|
-
var _pulsar = null;
|
|
90
|
-
var _pulsarChecked = false;
|
|
91
|
-
var _pulsarAvailable = false;
|
|
92
|
-
function isPulsarNativeRegistered() {
|
|
93
|
-
try {
|
|
94
|
-
const g = globalThis;
|
|
95
|
-
if (typeof g.__turboModuleProxy === "function") {
|
|
96
|
-
return g.__turboModuleProxy("RNPulsar") != null;
|
|
97
|
-
}
|
|
98
|
-
return reactNative.NativeModules?.RNPulsar != null;
|
|
99
|
-
} catch {
|
|
100
|
-
return false;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
function getPulsar() {
|
|
104
|
-
if (reactNative.Platform.OS === "web") return null;
|
|
105
|
-
if (!_pulsarChecked) {
|
|
106
|
-
_pulsarChecked = true;
|
|
107
|
-
try {
|
|
108
|
-
if (isPulsarNativeRegistered()) {
|
|
109
|
-
_pulsar = __require("react-native-pulsar");
|
|
110
|
-
_pulsarAvailable = true;
|
|
111
|
-
}
|
|
112
|
-
} catch {
|
|
113
|
-
_pulsar = null;
|
|
114
|
-
_pulsarAvailable = false;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return _pulsarAvailable ? _pulsar : null;
|
|
118
|
-
}
|
|
119
38
|
function impactLight() {
|
|
120
|
-
|
|
121
|
-
getHaptics().then((h) => {
|
|
122
|
-
if (h) {
|
|
123
|
-
h.impactAsync(h.ImpactFeedbackStyle.Light);
|
|
124
|
-
} else {
|
|
125
|
-
getPulsar()?.Presets.System.impactLight();
|
|
126
|
-
}
|
|
127
|
-
});
|
|
39
|
+
getHaptics().then((h) => h?.impactAsync(h.ImpactFeedbackStyle.Light));
|
|
128
40
|
}
|
|
129
41
|
|
|
130
42
|
// src/tokens.ts
|
|
@@ -133,7 +45,6 @@ var RADIUS = {
|
|
|
133
45
|
|
|
134
46
|
// src/components/HolographicCard/HolographicCard.tsx
|
|
135
47
|
var FOIL_PRESETS = {
|
|
136
|
-
// Classic holographic rainbow
|
|
137
48
|
rainbow: [
|
|
138
49
|
"rgba(255, 0, 128, 0.45)",
|
|
139
50
|
"rgba(255, 200, 0, 0.40)",
|
|
@@ -141,7 +52,6 @@ var FOIL_PRESETS = {
|
|
|
141
52
|
"rgba(0, 170, 255, 0.45)",
|
|
142
53
|
"rgba(180, 0, 255, 0.45)"
|
|
143
54
|
],
|
|
144
|
-
// Premium gold foil
|
|
145
55
|
gold: [
|
|
146
56
|
"rgba(255, 215, 0, 0.50)",
|
|
147
57
|
"rgba(255, 180, 0, 0.45)",
|
|
@@ -149,7 +59,6 @@ var FOIL_PRESETS = {
|
|
|
149
59
|
"rgba(255, 223, 128, 0.50)",
|
|
150
60
|
"rgba(184, 134, 11, 0.45)"
|
|
151
61
|
],
|
|
152
|
-
// Chrome silver foil
|
|
153
62
|
silver: [
|
|
154
63
|
"rgba(192, 192, 192, 0.50)",
|
|
155
64
|
"rgba(220, 220, 220, 0.45)",
|
|
@@ -157,7 +66,6 @@ var FOIL_PRESETS = {
|
|
|
157
66
|
"rgba(240, 240, 240, 0.50)",
|
|
158
67
|
"rgba(128, 128, 128, 0.45)"
|
|
159
68
|
],
|
|
160
|
-
// Deep space cosmic
|
|
161
69
|
cosmic: [
|
|
162
70
|
"rgba(75, 0, 130, 0.50)",
|
|
163
71
|
"rgba(138, 43, 226, 0.45)",
|
|
@@ -165,7 +73,6 @@ var FOIL_PRESETS = {
|
|
|
165
73
|
"rgba(0, 191, 255, 0.45)",
|
|
166
74
|
"rgba(148, 0, 211, 0.50)"
|
|
167
75
|
],
|
|
168
|
-
// Emerald green luxury
|
|
169
76
|
emerald: [
|
|
170
77
|
"rgba(0, 201, 87, 0.50)",
|
|
171
78
|
"rgba(46, 139, 87, 0.45)",
|
|
@@ -173,7 +80,6 @@ var FOIL_PRESETS = {
|
|
|
173
80
|
"rgba(60, 179, 113, 0.45)",
|
|
174
81
|
"rgba(0, 128, 0, 0.50)"
|
|
175
82
|
],
|
|
176
|
-
// Rose gold / pink
|
|
177
83
|
rose: [
|
|
178
84
|
"rgba(255, 105, 180, 0.50)",
|
|
179
85
|
"rgba(255, 182, 193, 0.45)",
|
|
@@ -181,7 +87,6 @@ var FOIL_PRESETS = {
|
|
|
181
87
|
"rgba(255, 20, 147, 0.45)",
|
|
182
88
|
"rgba(199, 21, 133, 0.50)"
|
|
183
89
|
],
|
|
184
|
-
// Deep ocean blue
|
|
185
90
|
ocean: [
|
|
186
91
|
"rgba(0, 119, 190, 0.50)",
|
|
187
92
|
"rgba(0, 180, 216, 0.45)",
|
|
@@ -189,7 +94,6 @@ var FOIL_PRESETS = {
|
|
|
189
94
|
"rgba(144, 224, 239, 0.45)",
|
|
190
95
|
"rgba(0, 150, 199, 0.50)"
|
|
191
96
|
],
|
|
192
|
-
// Hot fire gradient
|
|
193
97
|
fire: [
|
|
194
98
|
"rgba(255, 69, 0, 0.50)",
|
|
195
99
|
"rgba(255, 140, 0, 0.45)",
|
|
@@ -197,7 +101,6 @@ var FOIL_PRESETS = {
|
|
|
197
101
|
"rgba(255, 99, 71, 0.45)",
|
|
198
102
|
"rgba(220, 20, 60, 0.50)"
|
|
199
103
|
],
|
|
200
|
-
// Aurora borealis
|
|
201
104
|
aurora: [
|
|
202
105
|
"rgba(0, 255, 127, 0.45)",
|
|
203
106
|
"rgba(127, 255, 212, 0.40)",
|
|
@@ -205,7 +108,6 @@ var FOIL_PRESETS = {
|
|
|
205
108
|
"rgba(138, 43, 226, 0.40)",
|
|
206
109
|
"rgba(255, 20, 147, 0.45)"
|
|
207
110
|
],
|
|
208
|
-
// Neon cyberpunk
|
|
209
111
|
neon: [
|
|
210
112
|
"rgba(255, 0, 255, 0.55)",
|
|
211
113
|
"rgba(0, 255, 255, 0.50)",
|
|
@@ -226,7 +128,6 @@ function HolographicCard({
|
|
|
226
128
|
intensity = 1,
|
|
227
129
|
onPress,
|
|
228
130
|
style,
|
|
229
|
-
// New customization props
|
|
230
131
|
foilPreset = "rainbow",
|
|
231
132
|
foilColors,
|
|
232
133
|
maxTiltDegrees = DEFAULT_TILT_DEG,
|
|
@@ -271,10 +172,6 @@ function HolographicCard({
|
|
|
271
172
|
remove?.();
|
|
272
173
|
};
|
|
273
174
|
}, [enableTilt, tiltX, tiltY, normFactor, tiltAnimationDuration]);
|
|
274
|
-
const { animatedStyle: pressStyle, onPressIn, onPressOut, hoverHandlers } = usePressScale({
|
|
275
|
-
pressScale: PRESS_SCALE.card,
|
|
276
|
-
disabled: !onPress
|
|
277
|
-
});
|
|
278
175
|
const tiltStyle = Animated.useAnimatedStyle(() => ({
|
|
279
176
|
transform: [
|
|
280
177
|
{ perspective: clampedPerspective },
|
|
@@ -288,29 +185,22 @@ function HolographicCard({
|
|
|
288
185
|
const canvas = /* @__PURE__ */ React__default.default.createElement(reactNativeSkia.Canvas, { style: { width, height: h } }, image ? /* @__PURE__ */ React__default.default.createElement(reactNativeSkia.Group, { clip: { rect: rrct, rx: borderRadius, ry: borderRadius } }, /* @__PURE__ */ React__default.default.createElement(reactNativeSkia.Image, { image, x: 0, y: 0, width, height: h, fit: "cover" })) : null, /* @__PURE__ */ React__default.default.createElement(reactNativeSkia.RoundedRect, { x: 0, y: 0, width, height: h, r: borderRadius, opacity: intensity, blendMode }, /* @__PURE__ */ React__default.default.createElement(reactNativeSkia.LinearGradient, { start, end, colors: resolvedFoilColors })));
|
|
289
186
|
const card = /* @__PURE__ */ React__default.default.createElement(Animated__default.default.View, { style: [{ width, height: h }, tiltStyle, style] }, canvas);
|
|
290
187
|
if (!onPress) return card;
|
|
291
|
-
return /* @__PURE__ */ React__default.default.createElement(
|
|
292
|
-
|
|
188
|
+
return /* @__PURE__ */ React__default.default.createElement(
|
|
189
|
+
PressableCard,
|
|
293
190
|
{
|
|
294
191
|
onPress: () => {
|
|
295
192
|
impactLight();
|
|
296
193
|
onPress();
|
|
297
194
|
},
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
activeOpacity: 1,
|
|
195
|
+
enabled: true,
|
|
196
|
+
rippleColor: "transparent",
|
|
301
197
|
touchSoundDisabled: true,
|
|
302
198
|
accessibilityRole: "imagebutton",
|
|
303
|
-
|
|
304
|
-
style: styles.touch
|
|
199
|
+
style: { alignSelf: "flex-start" }
|
|
305
200
|
},
|
|
306
201
|
card
|
|
307
|
-
)
|
|
202
|
+
);
|
|
308
203
|
}
|
|
309
|
-
var styles = reactNative.StyleSheet.create({
|
|
310
|
-
touch: {
|
|
311
|
-
alignSelf: "flex-start"
|
|
312
|
-
}
|
|
313
|
-
});
|
|
314
204
|
|
|
315
205
|
exports.FOIL_PRESETS = FOIL_PRESETS;
|
|
316
206
|
exports.HolographicCard = HolographicCard;
|
package/dist/HolographicCard.mjs
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { impactLight } from './chunk-
|
|
3
|
-
import { PRESS_SCALE } from './chunk-DVK4G2GT.mjs';
|
|
1
|
+
import { PressableCard } from './chunk-IFYMBOEN.mjs';
|
|
2
|
+
import { impactLight } from './chunk-ARONDO7M.mjs';
|
|
4
3
|
import { RADIUS } from './chunk-QY3X2UYR.mjs';
|
|
5
|
-
import './chunk-Y6FXYEAI.mjs';
|
|
6
4
|
import React, { useMemo, useEffect } from 'react';
|
|
7
|
-
import {
|
|
5
|
+
import { Platform } from 'react-native';
|
|
8
6
|
import { useImage, vec, Canvas, Group, Image, RoundedRect, LinearGradient } from '@shopify/react-native-skia';
|
|
9
7
|
import Animated, { useSharedValue, withTiming, useAnimatedStyle, useDerivedValue } from 'react-native-reanimated';
|
|
10
8
|
|
|
11
9
|
var FOIL_PRESETS = {
|
|
12
|
-
// Classic holographic rainbow
|
|
13
10
|
rainbow: [
|
|
14
11
|
"rgba(255, 0, 128, 0.45)",
|
|
15
12
|
"rgba(255, 200, 0, 0.40)",
|
|
@@ -17,7 +14,6 @@ var FOIL_PRESETS = {
|
|
|
17
14
|
"rgba(0, 170, 255, 0.45)",
|
|
18
15
|
"rgba(180, 0, 255, 0.45)"
|
|
19
16
|
],
|
|
20
|
-
// Premium gold foil
|
|
21
17
|
gold: [
|
|
22
18
|
"rgba(255, 215, 0, 0.50)",
|
|
23
19
|
"rgba(255, 180, 0, 0.45)",
|
|
@@ -25,7 +21,6 @@ var FOIL_PRESETS = {
|
|
|
25
21
|
"rgba(255, 223, 128, 0.50)",
|
|
26
22
|
"rgba(184, 134, 11, 0.45)"
|
|
27
23
|
],
|
|
28
|
-
// Chrome silver foil
|
|
29
24
|
silver: [
|
|
30
25
|
"rgba(192, 192, 192, 0.50)",
|
|
31
26
|
"rgba(220, 220, 220, 0.45)",
|
|
@@ -33,7 +28,6 @@ var FOIL_PRESETS = {
|
|
|
33
28
|
"rgba(240, 240, 240, 0.50)",
|
|
34
29
|
"rgba(128, 128, 128, 0.45)"
|
|
35
30
|
],
|
|
36
|
-
// Deep space cosmic
|
|
37
31
|
cosmic: [
|
|
38
32
|
"rgba(75, 0, 130, 0.50)",
|
|
39
33
|
"rgba(138, 43, 226, 0.45)",
|
|
@@ -41,7 +35,6 @@ var FOIL_PRESETS = {
|
|
|
41
35
|
"rgba(0, 191, 255, 0.45)",
|
|
42
36
|
"rgba(148, 0, 211, 0.50)"
|
|
43
37
|
],
|
|
44
|
-
// Emerald green luxury
|
|
45
38
|
emerald: [
|
|
46
39
|
"rgba(0, 201, 87, 0.50)",
|
|
47
40
|
"rgba(46, 139, 87, 0.45)",
|
|
@@ -49,7 +42,6 @@ var FOIL_PRESETS = {
|
|
|
49
42
|
"rgba(60, 179, 113, 0.45)",
|
|
50
43
|
"rgba(0, 128, 0, 0.50)"
|
|
51
44
|
],
|
|
52
|
-
// Rose gold / pink
|
|
53
45
|
rose: [
|
|
54
46
|
"rgba(255, 105, 180, 0.50)",
|
|
55
47
|
"rgba(255, 182, 193, 0.45)",
|
|
@@ -57,7 +49,6 @@ var FOIL_PRESETS = {
|
|
|
57
49
|
"rgba(255, 20, 147, 0.45)",
|
|
58
50
|
"rgba(199, 21, 133, 0.50)"
|
|
59
51
|
],
|
|
60
|
-
// Deep ocean blue
|
|
61
52
|
ocean: [
|
|
62
53
|
"rgba(0, 119, 190, 0.50)",
|
|
63
54
|
"rgba(0, 180, 216, 0.45)",
|
|
@@ -65,7 +56,6 @@ var FOIL_PRESETS = {
|
|
|
65
56
|
"rgba(144, 224, 239, 0.45)",
|
|
66
57
|
"rgba(0, 150, 199, 0.50)"
|
|
67
58
|
],
|
|
68
|
-
// Hot fire gradient
|
|
69
59
|
fire: [
|
|
70
60
|
"rgba(255, 69, 0, 0.50)",
|
|
71
61
|
"rgba(255, 140, 0, 0.45)",
|
|
@@ -73,7 +63,6 @@ var FOIL_PRESETS = {
|
|
|
73
63
|
"rgba(255, 99, 71, 0.45)",
|
|
74
64
|
"rgba(220, 20, 60, 0.50)"
|
|
75
65
|
],
|
|
76
|
-
// Aurora borealis
|
|
77
66
|
aurora: [
|
|
78
67
|
"rgba(0, 255, 127, 0.45)",
|
|
79
68
|
"rgba(127, 255, 212, 0.40)",
|
|
@@ -81,7 +70,6 @@ var FOIL_PRESETS = {
|
|
|
81
70
|
"rgba(138, 43, 226, 0.40)",
|
|
82
71
|
"rgba(255, 20, 147, 0.45)"
|
|
83
72
|
],
|
|
84
|
-
// Neon cyberpunk
|
|
85
73
|
neon: [
|
|
86
74
|
"rgba(255, 0, 255, 0.55)",
|
|
87
75
|
"rgba(0, 255, 255, 0.50)",
|
|
@@ -102,7 +90,6 @@ function HolographicCard({
|
|
|
102
90
|
intensity = 1,
|
|
103
91
|
onPress,
|
|
104
92
|
style,
|
|
105
|
-
// New customization props
|
|
106
93
|
foilPreset = "rainbow",
|
|
107
94
|
foilColors,
|
|
108
95
|
maxTiltDegrees = DEFAULT_TILT_DEG,
|
|
@@ -147,10 +134,6 @@ function HolographicCard({
|
|
|
147
134
|
remove?.();
|
|
148
135
|
};
|
|
149
136
|
}, [enableTilt, tiltX, tiltY, normFactor, tiltAnimationDuration]);
|
|
150
|
-
const { animatedStyle: pressStyle, onPressIn, onPressOut, hoverHandlers } = usePressScale({
|
|
151
|
-
pressScale: PRESS_SCALE.card,
|
|
152
|
-
disabled: !onPress
|
|
153
|
-
});
|
|
154
137
|
const tiltStyle = useAnimatedStyle(() => ({
|
|
155
138
|
transform: [
|
|
156
139
|
{ perspective: clampedPerspective },
|
|
@@ -164,28 +147,21 @@ function HolographicCard({
|
|
|
164
147
|
const canvas = /* @__PURE__ */ React.createElement(Canvas, { style: { width, height: h } }, image ? /* @__PURE__ */ React.createElement(Group, { clip: { rect: rrct, rx: borderRadius, ry: borderRadius } }, /* @__PURE__ */ React.createElement(Image, { image, x: 0, y: 0, width, height: h, fit: "cover" })) : null, /* @__PURE__ */ React.createElement(RoundedRect, { x: 0, y: 0, width, height: h, r: borderRadius, opacity: intensity, blendMode }, /* @__PURE__ */ React.createElement(LinearGradient, { start, end, colors: resolvedFoilColors })));
|
|
165
148
|
const card = /* @__PURE__ */ React.createElement(Animated.View, { style: [{ width, height: h }, tiltStyle, style] }, canvas);
|
|
166
149
|
if (!onPress) return card;
|
|
167
|
-
return /* @__PURE__ */ React.createElement(
|
|
168
|
-
|
|
150
|
+
return /* @__PURE__ */ React.createElement(
|
|
151
|
+
PressableCard,
|
|
169
152
|
{
|
|
170
153
|
onPress: () => {
|
|
171
154
|
impactLight();
|
|
172
155
|
onPress();
|
|
173
156
|
},
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
activeOpacity: 1,
|
|
157
|
+
enabled: true,
|
|
158
|
+
rippleColor: "transparent",
|
|
177
159
|
touchSoundDisabled: true,
|
|
178
160
|
accessibilityRole: "imagebutton",
|
|
179
|
-
|
|
180
|
-
style: styles.touch
|
|
161
|
+
style: { alignSelf: "flex-start" }
|
|
181
162
|
},
|
|
182
163
|
card
|
|
183
|
-
)
|
|
164
|
+
);
|
|
184
165
|
}
|
|
185
|
-
var styles = StyleSheet.create({
|
|
186
|
-
touch: {
|
|
187
|
-
alignSelf: "flex-start"
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
166
|
|
|
191
167
|
export { FOIL_PRESETS, HolographicCard };
|