@retray-dev/ui-kit 12.1.0 → 13.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/COMPONENTS.md +183 -147
- package/CONSUMER.md +2 -2
- package/DESIGN.md +2 -2
- package/README.md +13 -8
- package/dist/Accordion.d.mts +6 -0
- package/dist/Accordion.d.ts +6 -0
- package/dist/Accordion.js +62 -208
- package/dist/Accordion.mjs +6 -5
- package/dist/AlertBanner.js +29 -151
- package/dist/AlertBanner.mjs +3 -3
- package/dist/AppHeader.js +37 -233
- package/dist/AppHeader.mjs +6 -7
- package/dist/Avatar.d.mts +17 -1
- package/dist/Avatar.d.ts +17 -1
- package/dist/Avatar.js +80 -113
- package/dist/Avatar.mjs +2 -2
- package/dist/Badge.js +24 -147
- package/dist/Badge.mjs +3 -3
- package/dist/Button.js +86 -274
- package/dist/Button.mjs +6 -6
- package/dist/Card.js +15 -198
- package/dist/Card.mjs +4 -5
- package/dist/CategoryStrip.d.mts +0 -5
- package/dist/CategoryStrip.d.ts +0 -5
- package/dist/CategoryStrip.js +47 -263
- package/dist/CategoryStrip.mjs +6 -6
- package/dist/Checkbox.js +15 -198
- package/dist/Checkbox.mjs +5 -5
- package/dist/Chip.js +44 -234
- package/dist/Chip.mjs +7 -6
- package/dist/ConfirmDialog.js +100 -296
- package/dist/ConfirmDialog.mjs +7 -7
- package/dist/CurrencyDisplay.js +1 -112
- package/dist/CurrencyDisplay.mjs +2 -2
- package/dist/CurrencyInput.js +35 -160
- package/dist/CurrencyInput.mjs +5 -5
- package/dist/DetailRow.js +25 -148
- package/dist/DetailRow.mjs +3 -3
- package/dist/EmptyState.js +87 -275
- package/dist/EmptyState.mjs +7 -7
- package/dist/ErrorBoundary.js +32 -197
- package/dist/ErrorBoundary.mjs +4 -4
- package/dist/Form.js +1 -112
- package/dist/Form.mjs +2 -2
- 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 -32
- package/dist/IconButton.js +36 -232
- package/dist/IconButton.mjs +5 -6
- package/dist/IconPicker.js +222 -927
- package/dist/IconPicker.mjs +5 -5
- package/dist/ImageUpload.d.mts +5 -1
- package/dist/ImageUpload.d.ts +5 -1
- package/dist/ImageUpload.js +32 -215
- package/dist/ImageUpload.mjs +5 -6
- package/dist/ImageViewer.js +75 -264
- package/dist/ImageViewer.mjs +8 -8
- package/dist/Input.d.mts +1 -1
- package/dist/Input.d.ts +1 -1
- package/dist/Input.js +35 -160
- package/dist/Input.mjs +4 -4
- package/dist/LabelValue.js +24 -147
- package/dist/LabelValue.mjs +3 -3
- package/dist/ListGroup.js +1 -112
- package/dist/ListGroup.mjs +2 -2
- package/dist/ListItem.js +38 -233
- package/dist/ListItem.mjs +5 -6
- package/dist/MediaCard.d.mts +0 -14
- package/dist/MediaCard.d.ts +0 -14
- package/dist/MediaCard.js +69 -313
- package/dist/MediaCard.mjs +5 -6
- package/dist/MenuGroup.js +1 -112
- package/dist/MenuGroup.mjs +2 -2
- package/dist/MenuItem.js +36 -232
- package/dist/MenuItem.mjs +5 -6
- package/dist/MonthPicker.js +8 -161
- package/dist/MonthPicker.mjs +3 -3
- package/dist/NumberStepper.js +40 -236
- package/dist/NumberStepper.mjs +5 -6
- package/dist/PagerDots.d.mts +1 -1
- package/dist/PagerDots.d.ts +1 -1
- package/dist/PagerDots.js +69 -222
- package/dist/PagerDots.mjs +6 -5
- package/dist/Pressable.js +14 -85
- package/dist/Pressable.mjs +4 -4
- package/dist/PricingCard.js +94 -279
- package/dist/PricingCard.mjs +8 -8
- package/dist/Progress.js +3 -121
- package/dist/Progress.mjs +3 -3
- package/dist/RadioGroup.js +52 -263
- package/dist/RadioGroup.mjs +5 -5
- package/dist/RetrayProvider.d.mts +1 -1
- package/dist/RetrayProvider.d.ts +1 -1
- package/dist/RetrayProvider.js +5 -6
- package/dist/RetrayProvider.mjs +3 -3
- package/dist/Select.d.mts +2 -1
- package/dist/Select.d.ts +2 -1
- package/dist/Select.js +24 -230
- package/dist/Select.mjs +4 -5
- package/dist/SelectableCard.d.mts +27 -0
- package/dist/SelectableCard.d.ts +27 -0
- package/dist/SelectableCard.js +335 -0
- package/dist/SelectableCard.mjs +8 -0
- package/dist/SelectableGrid.d.mts +0 -21
- package/dist/SelectableGrid.d.ts +0 -21
- package/dist/SelectableGrid.js +49 -269
- package/dist/SelectableGrid.mjs +5 -6
- package/dist/Separator.js +1 -112
- package/dist/Separator.mjs +2 -2
- package/dist/Sheet.js +16 -163
- package/dist/Sheet.mjs +3 -3
- package/dist/SheetSelect.js +39 -234
- package/dist/SheetSelect.mjs +6 -6
- package/dist/Skeleton.d.mts +3 -1
- package/dist/Skeleton.d.ts +3 -1
- package/dist/Skeleton.js +7 -124
- package/dist/Skeleton.mjs +3 -3
- package/dist/Slider.js +6 -159
- package/dist/Slider.mjs +3 -3
- package/dist/Spinner.js +3 -114
- package/dist/Spinner.mjs +2 -2
- package/dist/Stats.d.mts +4 -1
- package/dist/Stats.d.ts +4 -1
- package/dist/Stats.js +60 -234
- package/dist/Stats.mjs +5 -6
- package/dist/Switch.js +24 -173
- package/dist/Switch.mjs +5 -4
- package/dist/TabBar.js +43 -198
- package/dist/TabBar.mjs +5 -4
- package/dist/Tabs.js +15 -197
- package/dist/Tabs.mjs +5 -5
- package/dist/Text.js +9 -128
- package/dist/Text.mjs +2 -2
- package/dist/Textarea.d.mts +2 -1
- package/dist/Textarea.d.ts +2 -1
- package/dist/Textarea.js +71 -217
- package/dist/Textarea.mjs +4 -4
- package/dist/Toast.js +1 -112
- package/dist/Toast.mjs +2 -2
- package/dist/Toggle.js +39 -234
- package/dist/Toggle.mjs +6 -6
- package/dist/{chunk-FFTYLPSB.mjs → chunk-2QOHHBJC.mjs} +13 -7
- package/dist/{chunk-BCWEHE34.mjs → chunk-2VIDP72N.mjs} +3 -3
- package/dist/{chunk-PGERH3P7.mjs → chunk-4NQFTHN3.mjs} +13 -7
- package/dist/{chunk-3N2M3WZL.mjs → chunk-4ZO5PTKF.mjs} +4 -4
- package/dist/{chunk-MYZ2EDYU.mjs → chunk-5MYNAAFE.mjs} +13 -17
- package/dist/{chunk-E7NEHHXV.mjs → chunk-62BBSSUF.mjs} +3 -3
- package/dist/{chunk-ISY26JQJ.mjs → chunk-6CR4S6W2.mjs} +3 -3
- package/dist/{chunk-FUVYSVGR.mjs → chunk-6QLBHUEG.mjs} +8 -7
- package/dist/chunk-ARONDO7M.mjs +40 -0
- package/dist/{chunk-3UYAZ7I4.mjs → chunk-AZV7KNJI.mjs} +3 -3
- package/dist/{chunk-HLMPMUK2.mjs → chunk-BTUW5LSG.mjs} +11 -8
- package/dist/chunk-BULKGOIZ.mjs +235 -0
- package/dist/{chunk-265G6A46.mjs → chunk-CBIZLRYH.mjs} +29 -12
- package/dist/chunk-CM2DG4MR.mjs +142 -0
- package/dist/{chunk-2I2AYECM.mjs → chunk-DBHSUUKU.mjs} +2 -2
- package/dist/{chunk-P64WHW4A.mjs → chunk-DE25XTVQ.mjs} +3 -3
- package/dist/{chunk-DI7CBDL6.mjs → chunk-E4EQSCKR.mjs} +5 -5
- package/dist/{chunk-357YO24D.mjs → chunk-EHGBHFMH.mjs} +9 -17
- package/dist/{chunk-GK4VRMNE.mjs → chunk-EROPDCB5.mjs} +24 -27
- package/dist/{chunk-XBAGGKLW.mjs → chunk-ERWJPVX7.mjs} +2 -2
- package/dist/{chunk-LRM4AVYY.mjs → chunk-ESQDPO5E.mjs} +7 -7
- package/dist/{chunk-EFLFRAHD.mjs → chunk-EW2FIDSM.mjs} +1 -1
- package/dist/{chunk-7HSILTC4.mjs → chunk-FTTI6T5Q.mjs} +4 -4
- package/dist/{chunk-X26S5EVZ.mjs → chunk-HUSSF6TF.mjs} +1 -1
- package/dist/chunk-IFYMBOEN.mjs +14 -0
- package/dist/{chunk-S3KJCPEJ.mjs → chunk-IGU223UM.mjs} +80 -4
- package/dist/chunk-IJCMPVW5.mjs +121 -0
- package/dist/{chunk-I4V5XZPS.mjs → chunk-ITG4JQM3.mjs} +4 -4
- package/dist/{chunk-F4V6XLP4.mjs → chunk-K3QX2M26.mjs} +11 -8
- package/dist/{chunk-V6NFJXKO.mjs → chunk-K7TKID3V.mjs} +8 -7
- package/dist/{chunk-ZHMSAYLT.mjs → chunk-KAGADD2O.mjs} +4 -4
- package/dist/{chunk-3GEYJ7I5.mjs → chunk-KC5QDYGZ.mjs} +4 -4
- package/dist/{chunk-HJ46DTJE.mjs → chunk-KPTY7UYQ.mjs} +1 -1
- package/dist/{chunk-EMUWGDWC.mjs → chunk-KSSVIFYR.mjs} +11 -12
- package/dist/chunk-L3YKPTJQ.mjs +119 -0
- package/dist/chunk-M53LC4Q7.mjs +35 -0
- package/dist/{chunk-NXI4YDZ2.mjs → chunk-MP7GLMIR.mjs} +17 -25
- package/dist/chunk-MZ6WRTD2.mjs +40 -0
- package/dist/chunk-NGEN2EES.mjs +581 -0
- package/dist/{chunk-JULSIZDM.mjs → chunk-OBV72JD4.mjs} +1 -1
- package/dist/{chunk-2A2LEFZG.mjs → chunk-PGQ6FMXS.mjs} +6 -5
- package/dist/{chunk-BQZE3HAW.mjs → chunk-PI6RULJX.mjs} +1 -1
- package/dist/{chunk-FA2KMTH5.mjs → chunk-RA6SAAFE.mjs} +9 -8
- package/dist/{chunk-FVTVCJAH.mjs → chunk-RRKM4MKB.mjs} +7 -7
- package/dist/{chunk-AKM4EPOT.mjs → chunk-S2VGME7X.mjs} +1 -1
- package/dist/{chunk-OULVKTWL.mjs → chunk-S44XWTTC.mjs} +35 -25
- package/dist/{chunk-QSFV2P7O.mjs → chunk-SZEKQAOY.mjs} +1 -1
- package/dist/{chunk-N4ZPVCJH.mjs → chunk-TETMEKZE.mjs} +9 -9
- package/dist/{chunk-2CBQKU7H.mjs → chunk-TMH263OK.mjs} +5 -4
- package/dist/{chunk-D3Y2T42P.mjs → chunk-U6DEBYU5.mjs} +10 -9
- package/dist/{chunk-4WFMPFZB.mjs → chunk-UOKFSFNJ.mjs} +2 -2
- package/dist/{chunk-WOEWGSTU.mjs → chunk-URIH43IJ.mjs} +13 -21
- package/dist/{chunk-JCZQOY4O.mjs → chunk-V2ZB2XNS.mjs} +16 -10
- package/dist/{chunk-P73V2EKS.mjs → chunk-WIPEDNSD.mjs} +7 -7
- package/dist/{chunk-BOVUP27T.mjs → chunk-XCIG6HT2.mjs} +6 -5
- package/dist/chunk-Y6YS33GM.mjs +131 -0
- package/dist/{chunk-5OLNXP3S.mjs → chunk-ZKDKKQCE.mjs} +29 -7
- package/dist/{chunk-DF6DU42P.mjs → chunk-ZTPYUU5C.mjs} +5 -5
- package/dist/{index-wt-orHUi.d.ts → index-CY34hxPN.d.mts} +1 -0
- package/dist/{index-wt-orHUi.d.mts → index-CY34hxPN.d.ts} +1 -0
- package/dist/index.d.mts +15 -74
- package/dist/index.d.ts +15 -74
- package/dist/index.js +1055 -1562
- package/dist/index.mjs +81 -84
- package/package.json +8 -10
- package/src/components/Accordion/Accordion.tsx +32 -9
- package/src/components/AlertBanner/AlertBanner.tsx +7 -6
- package/src/components/AppHeader/AppHeader.tsx +1 -1
- 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 +64 -57
- package/src/components/Card/Card.tsx +1 -0
- package/src/components/CategoryStrip/CategoryStrip.tsx +36 -49
- package/src/components/Chip/Chip.tsx +5 -4
- package/src/components/ConfirmDialog/ConfirmDialog.tsx +13 -6
- 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 +24 -28
- 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 +4 -4
- package/src/components/MediaCard/MediaCard.tsx +21 -59
- package/src/components/MenuItem/MenuItem.tsx +2 -2
- package/src/components/MonthPicker/MonthPicker.tsx +2 -2
- package/src/components/NumberStepper/NumberStepper.tsx +6 -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 +32 -39
- package/src/components/SelectableCard/SelectableCard.tsx +302 -0
- package/src/components/SelectableCard/index.ts +1 -0
- package/src/components/SelectableGrid/SelectableGrid.tsx +38 -72
- package/src/components/Sheet/Sheet.tsx +11 -4
- package/src/components/SheetSelect/SheetSelect.tsx +3 -3
- package/src/components/Skeleton/Skeleton.tsx +6 -3
- package/src/components/Spinner/Spinner.tsx +2 -2
- package/src/components/Stats/Stats.tsx +36 -8
- package/src/components/Switch/Switch.tsx +9 -6
- package/src/components/TabBar/TabBar.tsx +9 -8
- package/src/components/Text/Text.tsx +12 -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 +4 -4
- package/src/theme/ThemeProvider.tsx +1 -4
- package/src/theme/colorUtils.ts +1 -72
- package/src/theme/colors.ts +47 -1
- package/src/theme/types.ts +6 -3
- 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-3DKJ2GIC.mjs +0 -30
- package/dist/chunk-AQEVCEXV.mjs +0 -164
- package/dist/chunk-DOGIPOF5.mjs +0 -131
- package/dist/chunk-DVK4G2GT.mjs +0 -59
- package/dist/chunk-EJ7ZPXOH.mjs +0 -163
- package/dist/chunk-J6Q2YJEV.mjs +0 -134
- package/dist/chunk-JNVAIDLK.mjs +0 -136
- package/dist/chunk-KA7LTET3.mjs +0 -71
- package/dist/chunk-KHYX4IOM.mjs +0 -1114
- package/dist/chunk-NC5ZTR2Y.mjs +0 -32
- 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/IconPicker.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { IconPicker } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
export { IconPicker } from './chunk-NGEN2EES.mjs';
|
|
2
|
+
import './chunk-2VIDP72N.mjs';
|
|
3
|
+
import './chunk-ARONDO7M.mjs';
|
|
4
4
|
import './chunk-QY3X2UYR.mjs';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
5
|
+
import './chunk-MZ6WRTD2.mjs';
|
|
6
|
+
import './chunk-KSSVIFYR.mjs';
|
|
7
7
|
import './chunk-2CE3TQVY.mjs';
|
|
8
8
|
import './chunk-Y6FXYEAI.mjs';
|
package/dist/ImageUpload.d.mts
CHANGED
|
@@ -20,10 +20,14 @@ interface ImageUploadProps {
|
|
|
20
20
|
borderRadius?: number;
|
|
21
21
|
/** Aspect ratio for the selected image. Defaults to 'cover'. */
|
|
22
22
|
resizeMode?: 'cover' | 'contain' | 'stretch';
|
|
23
|
+
/** Whether to allow the user to crop the image after selecting. Defaults to true. */
|
|
24
|
+
allowsEditing?: boolean;
|
|
23
25
|
disabled?: boolean;
|
|
24
26
|
style?: ViewStyle;
|
|
25
27
|
accessibilityLabel?: string;
|
|
28
|
+
/** Called synchronously when user taps the upload area, before dynamic import and permission request. */
|
|
29
|
+
onPickerStarting?: () => void;
|
|
26
30
|
}
|
|
27
|
-
declare function ImageUpload({ value, onChange, loading, placeholder, showPlaceholderText, width, height, borderRadius, resizeMode, disabled, style, accessibilityLabel, }: ImageUploadProps): React.JSX.Element;
|
|
31
|
+
declare function ImageUpload({ value, onChange, loading, placeholder, showPlaceholderText, width, height, borderRadius, resizeMode, allowsEditing, disabled, style, accessibilityLabel, onPickerStarting, }: ImageUploadProps): React.JSX.Element;
|
|
28
32
|
|
|
29
33
|
export { ImageUpload, type ImageUploadProps };
|
package/dist/ImageUpload.d.ts
CHANGED
|
@@ -20,10 +20,14 @@ interface ImageUploadProps {
|
|
|
20
20
|
borderRadius?: number;
|
|
21
21
|
/** Aspect ratio for the selected image. Defaults to 'cover'. */
|
|
22
22
|
resizeMode?: 'cover' | 'contain' | 'stretch';
|
|
23
|
+
/** Whether to allow the user to crop the image after selecting. Defaults to true. */
|
|
24
|
+
allowsEditing?: boolean;
|
|
23
25
|
disabled?: boolean;
|
|
24
26
|
style?: ViewStyle;
|
|
25
27
|
accessibilityLabel?: string;
|
|
28
|
+
/** Called synchronously when user taps the upload area, before dynamic import and permission request. */
|
|
29
|
+
onPickerStarting?: () => void;
|
|
26
30
|
}
|
|
27
|
-
declare function ImageUpload({ value, onChange, loading, placeholder, showPlaceholderText, width, height, borderRadius, resizeMode, disabled, style, accessibilityLabel, }: ImageUploadProps): React.JSX.Element;
|
|
31
|
+
declare function ImageUpload({ value, onChange, loading, placeholder, showPlaceholderText, width, height, borderRadius, resizeMode, allowsEditing, disabled, style, accessibilityLabel, onPickerStarting, }: ImageUploadProps): React.JSX.Element;
|
|
28
32
|
|
|
29
33
|
export { ImageUpload, type ImageUploadProps };
|
package/dist/ImageUpload.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var React3 = require('react');
|
|
4
|
+
var expoImage = require('expo-image');
|
|
4
5
|
var reactNative = require('react-native');
|
|
5
6
|
var vectorIcons = require('@expo/vector-icons');
|
|
6
7
|
var reactNativeSizeMatters = require('react-native-size-matters');
|
|
7
8
|
var pressto = require('pressto');
|
|
8
|
-
var reactNativeReanimated = require('react-native-reanimated');
|
|
9
9
|
|
|
10
10
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
|
|
@@ -18,11 +18,11 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
18
18
|
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
19
19
|
});
|
|
20
20
|
var _haptics = null;
|
|
21
|
-
var
|
|
21
|
+
var _loaded = false;
|
|
22
22
|
async function getHaptics() {
|
|
23
23
|
if (reactNative.Platform.OS === "web") return null;
|
|
24
|
-
if (!
|
|
25
|
-
|
|
24
|
+
if (!_loaded) {
|
|
25
|
+
_loaded = true;
|
|
26
26
|
try {
|
|
27
27
|
_haptics = await import('expo-haptics');
|
|
28
28
|
} catch {
|
|
@@ -31,158 +31,10 @@ async function getHaptics() {
|
|
|
31
31
|
}
|
|
32
32
|
return _haptics;
|
|
33
33
|
}
|
|
34
|
-
var _pulsar = null;
|
|
35
|
-
var _pulsarChecked = false;
|
|
36
|
-
var _pulsarAvailable = false;
|
|
37
|
-
function isPulsarNativeRegistered() {
|
|
38
|
-
try {
|
|
39
|
-
const g = globalThis;
|
|
40
|
-
if (typeof g.__turboModuleProxy === "function") {
|
|
41
|
-
return g.__turboModuleProxy("RNPulsar") != null;
|
|
42
|
-
}
|
|
43
|
-
return reactNative.NativeModules?.RNPulsar != null;
|
|
44
|
-
} catch {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
function getPulsar() {
|
|
49
|
-
if (reactNative.Platform.OS === "web") return null;
|
|
50
|
-
if (!_pulsarChecked) {
|
|
51
|
-
_pulsarChecked = true;
|
|
52
|
-
try {
|
|
53
|
-
if (isPulsarNativeRegistered()) {
|
|
54
|
-
_pulsar = __require("react-native-pulsar");
|
|
55
|
-
_pulsarAvailable = true;
|
|
56
|
-
}
|
|
57
|
-
} catch {
|
|
58
|
-
_pulsar = null;
|
|
59
|
-
_pulsarAvailable = false;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return _pulsarAvailable ? _pulsar : null;
|
|
63
|
-
}
|
|
64
34
|
function impactLight() {
|
|
65
|
-
|
|
66
|
-
getHaptics().then((h) => {
|
|
67
|
-
if (h) {
|
|
68
|
-
h.impactAsync(h.ImpactFeedbackStyle.Light);
|
|
69
|
-
} else {
|
|
70
|
-
getPulsar()?.Presets.System.impactLight();
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// src/theme/colorUtils.ts
|
|
76
|
-
function hexToRgb(hex) {
|
|
77
|
-
const clean = hex.replace("#", "");
|
|
78
|
-
const full = clean.length === 3 ? clean.split("").map((c) => c + c).join("") : clean;
|
|
79
|
-
if (full.length !== 6) return null;
|
|
80
|
-
return {
|
|
81
|
-
r: parseInt(full.slice(0, 2), 16),
|
|
82
|
-
g: parseInt(full.slice(2, 4), 16),
|
|
83
|
-
b: parseInt(full.slice(4, 6), 16)
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
function componentToHex(c) {
|
|
87
|
-
return Math.round(Math.max(0, Math.min(255, c))).toString(16).padStart(2, "0");
|
|
88
|
-
}
|
|
89
|
-
function rgbToHex(r, g, b) {
|
|
90
|
-
return `#${componentToHex(r)}${componentToHex(g)}${componentToHex(b)}`;
|
|
91
|
-
}
|
|
92
|
-
function withAlphaOnWhite(hex, alpha) {
|
|
93
|
-
const rgb = hexToRgb(hex);
|
|
94
|
-
if (!rgb) return hex;
|
|
95
|
-
const r = rgb.r * alpha + 255 * (1 - alpha);
|
|
96
|
-
const g = rgb.g * alpha + 255 * (1 - alpha);
|
|
97
|
-
const b = rgb.b * alpha + 255 * (1 - alpha);
|
|
98
|
-
return rgbToHex(r, g, b);
|
|
99
|
-
}
|
|
100
|
-
function withAlphaOnDark(hex, alpha, bgHex = "#0f0f0f") {
|
|
101
|
-
const rgb = hexToRgb(hex);
|
|
102
|
-
const bg = hexToRgb(bgHex);
|
|
103
|
-
if (!rgb || !bg) return hex;
|
|
104
|
-
const r = rgb.r * alpha + bg.r * (1 - alpha);
|
|
105
|
-
const g = rgb.g * alpha + bg.g * (1 - alpha);
|
|
106
|
-
const b = rgb.b * alpha + bg.b * (1 - alpha);
|
|
107
|
-
return rgbToHex(r, g, b);
|
|
108
|
-
}
|
|
109
|
-
function mixWithBackground(fgHex, bgHex, opacity) {
|
|
110
|
-
const fg = hexToRgb(fgHex);
|
|
111
|
-
const bg = hexToRgb(bgHex);
|
|
112
|
-
if (!fg || !bg) return fgHex;
|
|
113
|
-
const r = fg.r * opacity + bg.r * (1 - opacity);
|
|
114
|
-
const g = fg.g * opacity + bg.g * (1 - opacity);
|
|
115
|
-
const b = fg.b * opacity + bg.b * (1 - opacity);
|
|
116
|
-
return rgbToHex(r, g, b);
|
|
117
|
-
}
|
|
118
|
-
function lighten(hex, amount) {
|
|
119
|
-
return withAlphaOnWhite(hex, 1 - amount);
|
|
35
|
+
getHaptics().then((h) => h?.impactAsync(h.ImpactFeedbackStyle.Light));
|
|
120
36
|
}
|
|
121
|
-
|
|
122
|
-
const rgb = hexToRgb(hex);
|
|
123
|
-
if (!rgb) return hex;
|
|
124
|
-
return rgbToHex(rgb.r * (1 - amount), rgb.g * (1 - amount), rgb.b * (1 - amount));
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// src/theme/colors.ts
|
|
128
|
-
var defaultLight = {
|
|
129
|
-
background: "#ffffff",
|
|
130
|
-
foreground: "#1a1a1a",
|
|
131
|
-
card: "#ffffff",
|
|
132
|
-
primary: "#1a1a1a",
|
|
133
|
-
primaryForeground: "#ffffff",
|
|
134
|
-
// AUDIT FIX: brand accent — was undefined; falls back to primary when omitted
|
|
135
|
-
accent: "#d4561d",
|
|
136
|
-
accentForeground: "#ffffff",
|
|
137
|
-
border: "#dddddd",
|
|
138
|
-
// AUDIT FIX: was #e53935 (4.22:1 on white — fails AA); #c72828 = 5.59:1 ✓
|
|
139
|
-
destructive: "#c72828",
|
|
140
|
-
destructiveForeground: "#ffffff",
|
|
141
|
-
success: "#1a7a45",
|
|
142
|
-
successForeground: "#ffffff",
|
|
143
|
-
// AUDIT FIX: was #e67e00 (2.86:1 — severe fail); #9a5200 = 5.86:1 ✓ AAA-near
|
|
144
|
-
warning: "#9a5200",
|
|
145
|
-
warningForeground: "#ffffff"
|
|
146
|
-
};
|
|
147
|
-
function deriveColors(t, scheme) {
|
|
148
|
-
const dark = scheme === "dark";
|
|
149
|
-
const bg = t.background;
|
|
150
|
-
const foregroundSubtle = mixWithBackground(t.foreground, bg, 0.7);
|
|
151
|
-
const foregroundMuted = mixWithBackground(t.foreground, bg, 0.62);
|
|
152
|
-
const surface = dark ? lighten(bg, -0.06) : darken(bg, 0.04);
|
|
153
|
-
const surfaceStrong = dark ? lighten(bg, -0.12) : darken(bg, 0.08);
|
|
154
|
-
const destructiveTint = dark ? withAlphaOnDark(t.destructive, 0.15, bg) : withAlphaOnWhite(t.destructive, 0.08);
|
|
155
|
-
const destructiveBorder = dark ? withAlphaOnDark(t.destructive, 0.45, bg) : withAlphaOnWhite(t.destructive, 0.3);
|
|
156
|
-
const successTint = dark ? withAlphaOnDark(t.success, 0.15, bg) : withAlphaOnWhite(t.success, 0.08);
|
|
157
|
-
const successBorder = dark ? withAlphaOnDark(t.success, 0.45, bg) : withAlphaOnWhite(t.success, 0.3);
|
|
158
|
-
const warningTint = dark ? withAlphaOnDark(t.warning, 0.15, bg) : withAlphaOnWhite(t.warning, 0.08);
|
|
159
|
-
const warningBorder = dark ? withAlphaOnDark(t.warning, 0.45, bg) : withAlphaOnWhite(t.warning, 0.3);
|
|
160
|
-
return {
|
|
161
|
-
...t,
|
|
162
|
-
foregroundSubtle,
|
|
163
|
-
foregroundMuted,
|
|
164
|
-
surface,
|
|
165
|
-
surfaceStrong,
|
|
166
|
-
destructiveTint,
|
|
167
|
-
destructiveBorder,
|
|
168
|
-
successTint,
|
|
169
|
-
successBorder,
|
|
170
|
-
warningTint,
|
|
171
|
-
warningBorder,
|
|
172
|
-
overlay: t.overlay ?? "rgba(0,0,0,0.45)",
|
|
173
|
-
accentResolved: t.accent ?? t.primary,
|
|
174
|
-
accentForegroundResolved: t.accentForeground ?? t.primaryForeground,
|
|
175
|
-
ring: t.accent ?? t.primary,
|
|
176
|
-
input: t.border,
|
|
177
|
-
separator: dark ? lighten(t.border, 0.22) : darken(t.border, 0.16)
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// src/theme/ThemeProvider.tsx
|
|
182
|
-
var ThemeContext = React3.createContext({
|
|
183
|
-
colors: deriveColors(defaultLight, "light"),
|
|
184
|
-
colorScheme: "light"
|
|
185
|
-
});
|
|
37
|
+
var ThemeContext = React3.createContext(void 0);
|
|
186
38
|
function useTheme() {
|
|
187
39
|
const context = React3.useContext(ThemeContext);
|
|
188
40
|
if (!context) {
|
|
@@ -201,7 +53,7 @@ var RADIUS = {
|
|
|
201
53
|
lg: 20};
|
|
202
54
|
var sizeMap = {
|
|
203
55
|
sm: "small",
|
|
204
|
-
md: "
|
|
56
|
+
md: "large",
|
|
205
57
|
lg: "large"
|
|
206
58
|
};
|
|
207
59
|
var labelFontSize = {
|
|
@@ -211,7 +63,7 @@ var labelFontSize = {
|
|
|
211
63
|
};
|
|
212
64
|
function Spinner({ size = "md", color, label, ...props }) {
|
|
213
65
|
const { colors } = useTheme();
|
|
214
|
-
const a11yLabel = label || "
|
|
66
|
+
const a11yLabel = label || "Cargando";
|
|
215
67
|
if (label) {
|
|
216
68
|
return /* @__PURE__ */ React3__default.default.createElement(
|
|
217
69
|
reactNative.View,
|
|
@@ -254,90 +106,53 @@ var styles = reactNative.StyleSheet.create({
|
|
|
254
106
|
lineHeight: mvs(18)
|
|
255
107
|
}
|
|
256
108
|
});
|
|
257
|
-
({
|
|
258
|
-
/** Material-style ease-out — natural deceleration for state changes. */
|
|
259
|
-
standard: reactNativeReanimated.Easing.bezier(0.2, 0, 0, 1),
|
|
260
|
-
/** Strong ease-out for expanding surfaces (Accordion open). */
|
|
261
|
-
expand: reactNativeReanimated.Easing.bezier(0.23, 1, 0.32, 1),
|
|
262
|
-
/** Quick ease-in for collapsing. */
|
|
263
|
-
collapse: reactNativeReanimated.Easing.in(reactNativeReanimated.Easing.ease)
|
|
264
|
-
});
|
|
265
|
-
var PRESS_SCALE = {
|
|
266
|
-
button: 0.95,
|
|
267
|
-
card: 0.98,
|
|
268
|
-
row: 0.97,
|
|
269
|
-
chip: 0.94
|
|
270
|
-
};
|
|
271
|
-
pressto.createAnimatedPressable((progress) => {
|
|
272
|
-
"worklet";
|
|
273
|
-
const scale2 = 1 - (1 - PRESS_SCALE.button) * progress;
|
|
274
|
-
return { transform: [{ scale: scale2 }] };
|
|
275
|
-
});
|
|
276
|
-
var PressableCard = pressto.createAnimatedPressable((progress) => {
|
|
277
|
-
"worklet";
|
|
278
|
-
const scale2 = 1 - (1 - PRESS_SCALE.card) * progress;
|
|
279
|
-
return { transform: [{ scale: scale2 }] };
|
|
280
|
-
});
|
|
281
|
-
pressto.createAnimatedPressable((progress) => {
|
|
282
|
-
"worklet";
|
|
283
|
-
const scale2 = 1 - (1 - PRESS_SCALE.row) * progress;
|
|
284
|
-
return { transform: [{ scale: scale2 }] };
|
|
285
|
-
});
|
|
286
|
-
pressto.createAnimatedPressable((progress) => {
|
|
109
|
+
var makePressable = (scale2) => pressto.createAnimatedPressable((progress) => {
|
|
287
110
|
"worklet";
|
|
288
|
-
|
|
289
|
-
return { transform: [{ scale: scale2 }] };
|
|
290
|
-
});
|
|
291
|
-
pressto.createAnimatedPressable((progress) => {
|
|
292
|
-
"worklet";
|
|
293
|
-
const scale2 = 1 - (1 - PRESS_SCALE.button) * progress;
|
|
294
|
-
return { transform: [{ scale: scale2 }] };
|
|
111
|
+
return { transform: [{ scale: 1 - (1 - scale2) * progress }] };
|
|
295
112
|
});
|
|
113
|
+
makePressable(0.95);
|
|
114
|
+
var PressableCard = makePressable(0.98);
|
|
115
|
+
makePressable(0.97);
|
|
116
|
+
makePressable(0.94);
|
|
117
|
+
makePressable(0.95);
|
|
296
118
|
|
|
297
119
|
// src/components/ImageUpload/ImageUpload.tsx
|
|
298
120
|
function ImageUpload({
|
|
299
121
|
value,
|
|
300
122
|
onChange,
|
|
301
123
|
loading = false,
|
|
302
|
-
placeholder = "
|
|
124
|
+
placeholder = "Toca para a\xF1adir imagen",
|
|
303
125
|
showPlaceholderText = true,
|
|
304
126
|
width,
|
|
305
127
|
height = 200,
|
|
306
128
|
borderRadius = RADIUS.lg,
|
|
307
129
|
resizeMode = "cover",
|
|
130
|
+
allowsEditing = true,
|
|
308
131
|
disabled = false,
|
|
309
132
|
style,
|
|
310
|
-
accessibilityLabel
|
|
133
|
+
accessibilityLabel,
|
|
134
|
+
onPickerStarting
|
|
311
135
|
}) {
|
|
312
136
|
const { colors } = useTheme();
|
|
137
|
+
const [imageLoaded, setImageLoaded] = React3.useState(false);
|
|
313
138
|
const handlePress = async () => {
|
|
314
139
|
if (disabled || loading) return;
|
|
315
140
|
impactLight();
|
|
141
|
+
onPickerStarting?.();
|
|
316
142
|
let picker;
|
|
317
143
|
try {
|
|
318
|
-
|
|
319
|
-
picker = mod.default;
|
|
144
|
+
picker = __require("expo-image-picker");
|
|
320
145
|
} catch {
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
} catch {
|
|
324
|
-
if (__DEV__) console.warn("[ImageUpload] expo-image-picker not installed.");
|
|
325
|
-
return;
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
if (reactNative.Platform.OS !== "web") {
|
|
329
|
-
try {
|
|
330
|
-
const { status } = await picker.requestMediaLibraryPermissionsAsync();
|
|
331
|
-
if (status !== "granted") return;
|
|
332
|
-
} catch {
|
|
333
|
-
}
|
|
146
|
+
if (__DEV__) console.warn("[ImageUpload] expo-image-picker not installed.");
|
|
147
|
+
return;
|
|
334
148
|
}
|
|
335
149
|
const result = await picker.launchImageLibraryAsync({
|
|
336
150
|
mediaTypes: ["images"],
|
|
337
|
-
allowsEditing
|
|
151
|
+
allowsEditing,
|
|
338
152
|
quality: 0.8
|
|
339
153
|
});
|
|
340
154
|
if (!result.canceled && result.assets?.[0]) {
|
|
155
|
+
setImageLoaded(false);
|
|
341
156
|
onChange?.(result.assets[0].uri);
|
|
342
157
|
}
|
|
343
158
|
};
|
|
@@ -348,7 +163,7 @@ function ImageUpload({
|
|
|
348
163
|
borderWidth: value ? 0 : 1,
|
|
349
164
|
borderStyle: "dashed",
|
|
350
165
|
borderColor: colors.border,
|
|
351
|
-
backgroundColor: value ? "transparent" : colors.surface,
|
|
166
|
+
backgroundColor: value && imageLoaded ? "transparent" : colors.surface,
|
|
352
167
|
overflow: "hidden"
|
|
353
168
|
};
|
|
354
169
|
return /* @__PURE__ */ React3__default.default.createElement(
|
|
@@ -359,16 +174,18 @@ function ImageUpload({
|
|
|
359
174
|
rippleColor: "transparent",
|
|
360
175
|
touchSoundDisabled: true,
|
|
361
176
|
accessibilityRole: "button",
|
|
362
|
-
accessibilityLabel: accessibilityLabel ?? (value ? "
|
|
177
|
+
accessibilityLabel: accessibilityLabel ?? (value ? "Cambiar imagen" : placeholder),
|
|
363
178
|
accessibilityState: { disabled: disabled || loading },
|
|
364
179
|
style: [containerStyle, style]
|
|
365
180
|
},
|
|
366
181
|
value ? /* @__PURE__ */ React3__default.default.createElement(
|
|
367
|
-
|
|
182
|
+
expoImage.Image,
|
|
368
183
|
{
|
|
369
184
|
source: { uri: value },
|
|
370
185
|
style: [reactNative.StyleSheet.absoluteFillObject, { borderRadius }],
|
|
371
|
-
resizeMode
|
|
186
|
+
contentFit: resizeMode === "stretch" ? "fill" : resizeMode,
|
|
187
|
+
onLoad: () => setImageLoaded(true),
|
|
188
|
+
onError: () => setImageLoaded(true)
|
|
372
189
|
}
|
|
373
190
|
) : /* @__PURE__ */ React3__default.default.createElement(reactNative.View, { style: styles2.placeholder }, /* @__PURE__ */ React3__default.default.createElement(vectorIcons.Feather, { name: "image", size: ms(28), color: colors.foregroundMuted }), showPlaceholderText ? /* @__PURE__ */ React3__default.default.createElement(
|
|
374
191
|
reactNative.Text,
|
package/dist/ImageUpload.mjs
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
export { ImageUpload } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-DVK4G2GT.mjs';
|
|
1
|
+
export { ImageUpload } from './chunk-EROPDCB5.mjs';
|
|
2
|
+
import './chunk-2VIDP72N.mjs';
|
|
3
|
+
import './chunk-IFYMBOEN.mjs';
|
|
4
|
+
import './chunk-ARONDO7M.mjs';
|
|
6
5
|
import './chunk-QY3X2UYR.mjs';
|
|
7
|
-
import './chunk-
|
|
6
|
+
import './chunk-KSSVIFYR.mjs';
|
|
8
7
|
import './chunk-2CE3TQVY.mjs';
|
|
9
8
|
import './chunk-Y6FXYEAI.mjs';
|