@retray-dev/ui-kit 12.2.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 +85 -143
- package/CONSUMER.md +2 -2
- package/DESIGN.md +2 -2
- package/README.md +11 -6
- package/dist/Accordion.js +48 -210
- package/dist/Accordion.mjs +6 -5
- package/dist/AlertBanner.js +29 -153
- package/dist/AlertBanner.mjs +3 -3
- package/dist/AppHeader.js +37 -235
- 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 -115
- package/dist/Avatar.mjs +2 -2
- package/dist/Badge.js +24 -149
- package/dist/Badge.mjs +3 -3
- package/dist/Button.js +79 -267
- package/dist/Button.mjs +6 -6
- package/dist/Card.js +15 -200
- 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 -265
- package/dist/CategoryStrip.mjs +6 -6
- package/dist/Checkbox.js +15 -200
- package/dist/Checkbox.mjs +5 -5
- package/dist/Chip.js +44 -236
- package/dist/Chip.mjs +7 -6
- package/dist/ConfirmDialog.js +84 -286
- package/dist/ConfirmDialog.mjs +7 -7
- package/dist/CurrencyDisplay.js +1 -114
- package/dist/CurrencyDisplay.mjs +2 -2
- package/dist/CurrencyInput.js +35 -162
- package/dist/CurrencyInput.mjs +5 -5
- package/dist/DetailRow.js +25 -150
- package/dist/DetailRow.mjs +3 -3
- package/dist/EmptyState.js +80 -268
- package/dist/EmptyState.mjs +7 -7
- package/dist/ErrorBoundary.js +32 -199
- package/dist/ErrorBoundary.mjs +4 -4
- package/dist/Form.js +1 -114
- 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 -234
- package/dist/IconButton.mjs +5 -6
- package/dist/IconPicker.js +222 -929
- package/dist/IconPicker.mjs +5 -5
- package/dist/ImageUpload.d.mts +3 -1
- package/dist/ImageUpload.d.ts +3 -1
- package/dist/ImageUpload.js +25 -215
- package/dist/ImageUpload.mjs +5 -6
- package/dist/ImageViewer.js +75 -266
- 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 -162
- package/dist/Input.mjs +4 -4
- package/dist/LabelValue.js +24 -149
- package/dist/LabelValue.mjs +3 -3
- package/dist/ListGroup.js +1 -114
- package/dist/ListGroup.mjs +2 -2
- package/dist/ListItem.js +38 -235
- 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 -315
- package/dist/MediaCard.mjs +5 -6
- package/dist/MenuGroup.js +1 -114
- package/dist/MenuGroup.mjs +2 -2
- package/dist/MenuItem.js +36 -234
- package/dist/MenuItem.mjs +5 -6
- package/dist/MonthPicker.js +8 -163
- package/dist/MonthPicker.mjs +3 -3
- package/dist/NumberStepper.js +40 -238
- 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 -224
- package/dist/PagerDots.mjs +6 -5
- package/dist/Pressable.js +14 -85
- package/dist/Pressable.mjs +4 -4
- package/dist/PricingCard.js +87 -272
- package/dist/PricingCard.mjs +8 -8
- package/dist/Progress.js +3 -123
- package/dist/Progress.mjs +3 -3
- package/dist/RadioGroup.js +52 -265
- package/dist/RadioGroup.mjs +5 -5
- package/dist/RetrayProvider.js +3 -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 -232
- package/dist/Select.mjs +4 -5
- package/dist/SelectableCard.js +33 -209
- package/dist/SelectableCard.mjs +5 -5
- package/dist/SelectableGrid.d.mts +0 -21
- package/dist/SelectableGrid.d.ts +0 -21
- package/dist/SelectableGrid.js +49 -271
- package/dist/SelectableGrid.mjs +5 -6
- package/dist/Separator.js +1 -114
- package/dist/Separator.mjs +2 -2
- package/dist/Sheet.js +7 -162
- package/dist/Sheet.mjs +3 -3
- package/dist/SheetSelect.js +39 -236
- package/dist/SheetSelect.mjs +6 -6
- package/dist/Skeleton.js +4 -124
- package/dist/Skeleton.mjs +3 -3
- package/dist/Slider.js +6 -161
- package/dist/Slider.mjs +3 -3
- package/dist/Spinner.js +3 -116
- package/dist/Spinner.mjs +2 -2
- package/dist/Stats.js +36 -234
- package/dist/Stats.mjs +5 -6
- package/dist/Switch.js +24 -175
- package/dist/Switch.mjs +5 -4
- package/dist/TabBar.js +43 -200
- package/dist/TabBar.mjs +5 -4
- package/dist/Tabs.js +15 -199
- package/dist/Tabs.mjs +5 -5
- package/dist/Text.js +9 -130
- 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 -219
- package/dist/Textarea.mjs +4 -4
- package/dist/Toast.js +1 -114
- package/dist/Toast.mjs +2 -2
- package/dist/Toggle.js +39 -236
- package/dist/Toggle.mjs +6 -6
- package/dist/{chunk-M3C7XM2M.mjs → chunk-2QOHHBJC.mjs} +3 -3
- package/dist/{chunk-LIS6I5UP.mjs → chunk-2VIDP72N.mjs} +3 -3
- package/dist/{chunk-DF7JA72E.mjs → chunk-4NQFTHN3.mjs} +13 -7
- package/dist/{chunk-UBUXUMER.mjs → chunk-4ZO5PTKF.mjs} +4 -4
- package/dist/{chunk-3XCFYSX4.mjs → chunk-5MYNAAFE.mjs} +13 -17
- package/dist/{chunk-E7NEHHXV.mjs → chunk-62BBSSUF.mjs} +3 -3
- package/dist/{chunk-MVMGPZN6.mjs → chunk-6CR4S6W2.mjs} +3 -3
- package/dist/{chunk-EDLCGYIO.mjs → chunk-6QLBHUEG.mjs} +8 -7
- package/dist/chunk-ARONDO7M.mjs +40 -0
- package/dist/{chunk-GH67YXG6.mjs → chunk-AZV7KNJI.mjs} +3 -3
- package/dist/{chunk-RMRS44MQ.mjs → chunk-BTUW5LSG.mjs} +11 -8
- package/dist/{chunk-2P2CB235.mjs → chunk-BULKGOIZ.mjs} +7 -8
- package/dist/{chunk-NHDI3VQB.mjs → chunk-CBIZLRYH.mjs} +15 -12
- package/dist/chunk-CM2DG4MR.mjs +142 -0
- package/dist/{chunk-TS7DGUIR.mjs → chunk-DBHSUUKU.mjs} +2 -2
- package/dist/{chunk-57V2LXCK.mjs → chunk-DE25XTVQ.mjs} +3 -3
- package/dist/{chunk-UQ4742ET.mjs → chunk-E4EQSCKR.mjs} +5 -5
- package/dist/{chunk-GUTDFUNF.mjs → chunk-EHGBHFMH.mjs} +9 -17
- package/dist/{chunk-CF27NBXO.mjs → chunk-EROPDCB5.mjs} +16 -24
- 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-2HFD4IHU.mjs → chunk-HUSSF6TF.mjs} +1 -1
- 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-ZR6HSEAB.mjs → chunk-MP7GLMIR.mjs} +17 -25
- package/dist/chunk-MZ6WRTD2.mjs +40 -0
- package/dist/chunk-NGEN2EES.mjs +581 -0
- 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-ELGEOM7I.mjs → chunk-TETMEKZE.mjs} +9 -9
- package/dist/{chunk-BXF4AMHY.mjs → chunk-TMH263OK.mjs} +5 -4
- package/dist/{chunk-NJG7DHVF.mjs → chunk-U6DEBYU5.mjs} +10 -9
- package/dist/{chunk-RJNLAH76.mjs → chunk-UOKFSFNJ.mjs} +2 -2
- package/dist/{chunk-HEDQPK4I.mjs → chunk-URIH43IJ.mjs} +13 -21
- package/dist/{chunk-QXDGGOLC.mjs → chunk-V2ZB2XNS.mjs} +6 -6
- 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/index.d.mts +12 -72
- package/dist/index.d.ts +12 -72
- package/dist/index.js +1051 -1838
- package/dist/index.mjs +81 -85
- package/package.json +8 -10
- package/src/components/Accordion/Accordion.tsx +12 -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 +50 -46
- 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 +3 -3
- 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 +14 -25
- 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 +4 -6
- package/src/components/SelectableGrid/SelectableGrid.tsx +38 -72
- package/src/components/Sheet/Sheet.tsx +1 -1
- package/src/components/SheetSelect/SheetSelect.tsx +3 -3
- package/src/components/Skeleton/Skeleton.tsx +1 -1
- package/src/components/Spinner/Spinner.tsx +2 -2
- package/src/components/Stats/Stats.tsx +2 -2
- 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 +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-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
|
@@ -25,7 +25,9 @@ interface ImageUploadProps {
|
|
|
25
25
|
disabled?: boolean;
|
|
26
26
|
style?: ViewStyle;
|
|
27
27
|
accessibilityLabel?: string;
|
|
28
|
+
/** Called synchronously when user taps the upload area, before dynamic import and permission request. */
|
|
29
|
+
onPickerStarting?: () => void;
|
|
28
30
|
}
|
|
29
|
-
declare function ImageUpload({ value, onChange, loading, placeholder, showPlaceholderText, width, height, borderRadius, resizeMode, allowsEditing, 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;
|
|
30
32
|
|
|
31
33
|
export { ImageUpload, type ImageUploadProps };
|
package/dist/ImageUpload.d.ts
CHANGED
|
@@ -25,7 +25,9 @@ interface ImageUploadProps {
|
|
|
25
25
|
disabled?: boolean;
|
|
26
26
|
style?: ViewStyle;
|
|
27
27
|
accessibilityLabel?: string;
|
|
28
|
+
/** Called synchronously when user taps the upload area, before dynamic import and permission request. */
|
|
29
|
+
onPickerStarting?: () => void;
|
|
28
30
|
}
|
|
29
|
-
declare function ImageUpload({ value, onChange, loading, placeholder, showPlaceholderText, width, height, borderRadius, resizeMode, allowsEditing, 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;
|
|
30
32
|
|
|
31
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,160 +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 skeleton = dark ? lighten(bg, -0.1) : darken(bg, 0.1);
|
|
155
|
-
const destructiveTint = dark ? withAlphaOnDark(t.destructive, 0.15, bg) : withAlphaOnWhite(t.destructive, 0.08);
|
|
156
|
-
const destructiveBorder = dark ? withAlphaOnDark(t.destructive, 0.45, bg) : withAlphaOnWhite(t.destructive, 0.3);
|
|
157
|
-
const successTint = dark ? withAlphaOnDark(t.success, 0.15, bg) : withAlphaOnWhite(t.success, 0.08);
|
|
158
|
-
const successBorder = dark ? withAlphaOnDark(t.success, 0.45, bg) : withAlphaOnWhite(t.success, 0.3);
|
|
159
|
-
const warningTint = dark ? withAlphaOnDark(t.warning, 0.15, bg) : withAlphaOnWhite(t.warning, 0.08);
|
|
160
|
-
const warningBorder = dark ? withAlphaOnDark(t.warning, 0.45, bg) : withAlphaOnWhite(t.warning, 0.3);
|
|
161
|
-
return {
|
|
162
|
-
...t,
|
|
163
|
-
foregroundSubtle,
|
|
164
|
-
foregroundMuted,
|
|
165
|
-
surface,
|
|
166
|
-
surfaceStrong,
|
|
167
|
-
skeleton,
|
|
168
|
-
destructiveTint,
|
|
169
|
-
destructiveBorder,
|
|
170
|
-
successTint,
|
|
171
|
-
successBorder,
|
|
172
|
-
warningTint,
|
|
173
|
-
warningBorder,
|
|
174
|
-
overlay: t.overlay ?? "rgba(0,0,0,0.45)",
|
|
175
|
-
accentResolved: t.accent ?? t.primary,
|
|
176
|
-
accentForegroundResolved: t.accentForeground ?? t.primaryForeground,
|
|
177
|
-
ring: t.accent ?? t.primary,
|
|
178
|
-
input: t.border,
|
|
179
|
-
separator: dark ? lighten(t.border, 0.22) : darken(t.border, 0.16)
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
// src/theme/ThemeProvider.tsx
|
|
184
|
-
var ThemeContext = React3.createContext({
|
|
185
|
-
colors: deriveColors(defaultLight, "light"),
|
|
186
|
-
colorScheme: "light"
|
|
187
|
-
});
|
|
37
|
+
var ThemeContext = React3.createContext(void 0);
|
|
188
38
|
function useTheme() {
|
|
189
39
|
const context = React3.useContext(ThemeContext);
|
|
190
40
|
if (!context) {
|
|
@@ -203,7 +53,7 @@ var RADIUS = {
|
|
|
203
53
|
lg: 20};
|
|
204
54
|
var sizeMap = {
|
|
205
55
|
sm: "small",
|
|
206
|
-
md: "
|
|
56
|
+
md: "large",
|
|
207
57
|
lg: "large"
|
|
208
58
|
};
|
|
209
59
|
var labelFontSize = {
|
|
@@ -213,7 +63,7 @@ var labelFontSize = {
|
|
|
213
63
|
};
|
|
214
64
|
function Spinner({ size = "md", color, label, ...props }) {
|
|
215
65
|
const { colors } = useTheme();
|
|
216
|
-
const a11yLabel = label || "
|
|
66
|
+
const a11yLabel = label || "Cargando";
|
|
217
67
|
if (label) {
|
|
218
68
|
return /* @__PURE__ */ React3__default.default.createElement(
|
|
219
69
|
reactNative.View,
|
|
@@ -256,52 +106,22 @@ var styles = reactNative.StyleSheet.create({
|
|
|
256
106
|
lineHeight: mvs(18)
|
|
257
107
|
}
|
|
258
108
|
});
|
|
259
|
-
({
|
|
260
|
-
/** Material-style ease-out — natural deceleration for state changes. */
|
|
261
|
-
standard: reactNativeReanimated.Easing.bezier(0.2, 0, 0, 1),
|
|
262
|
-
/** Strong ease-out for expanding surfaces (Accordion open). */
|
|
263
|
-
expand: reactNativeReanimated.Easing.bezier(0.23, 1, 0.32, 1),
|
|
264
|
-
/** Quick ease-in for collapsing. */
|
|
265
|
-
collapse: reactNativeReanimated.Easing.in(reactNativeReanimated.Easing.ease)
|
|
266
|
-
});
|
|
267
|
-
var PRESS_SCALE = {
|
|
268
|
-
button: 0.95,
|
|
269
|
-
card: 0.98,
|
|
270
|
-
row: 0.97,
|
|
271
|
-
chip: 0.94
|
|
272
|
-
};
|
|
273
|
-
pressto.createAnimatedPressable((progress) => {
|
|
274
|
-
"worklet";
|
|
275
|
-
const scale2 = 1 - (1 - PRESS_SCALE.button) * progress;
|
|
276
|
-
return { transform: [{ scale: scale2 }] };
|
|
277
|
-
});
|
|
278
|
-
var PressableCard = pressto.createAnimatedPressable((progress) => {
|
|
279
|
-
"worklet";
|
|
280
|
-
const scale2 = 1 - (1 - PRESS_SCALE.card) * progress;
|
|
281
|
-
return { transform: [{ scale: scale2 }] };
|
|
282
|
-
});
|
|
283
|
-
pressto.createAnimatedPressable((progress) => {
|
|
284
|
-
"worklet";
|
|
285
|
-
const scale2 = 1 - (1 - PRESS_SCALE.row) * progress;
|
|
286
|
-
return { transform: [{ scale: scale2 }] };
|
|
287
|
-
});
|
|
288
|
-
pressto.createAnimatedPressable((progress) => {
|
|
109
|
+
var makePressable = (scale2) => pressto.createAnimatedPressable((progress) => {
|
|
289
110
|
"worklet";
|
|
290
|
-
|
|
291
|
-
return { transform: [{ scale: scale2 }] };
|
|
292
|
-
});
|
|
293
|
-
pressto.createAnimatedPressable((progress) => {
|
|
294
|
-
"worklet";
|
|
295
|
-
const scale2 = 1 - (1 - PRESS_SCALE.button) * progress;
|
|
296
|
-
return { transform: [{ scale: scale2 }] };
|
|
111
|
+
return { transform: [{ scale: 1 - (1 - scale2) * progress }] };
|
|
297
112
|
});
|
|
113
|
+
makePressable(0.95);
|
|
114
|
+
var PressableCard = makePressable(0.98);
|
|
115
|
+
makePressable(0.97);
|
|
116
|
+
makePressable(0.94);
|
|
117
|
+
makePressable(0.95);
|
|
298
118
|
|
|
299
119
|
// src/components/ImageUpload/ImageUpload.tsx
|
|
300
120
|
function ImageUpload({
|
|
301
121
|
value,
|
|
302
122
|
onChange,
|
|
303
123
|
loading = false,
|
|
304
|
-
placeholder = "
|
|
124
|
+
placeholder = "Toca para a\xF1adir imagen",
|
|
305
125
|
showPlaceholderText = true,
|
|
306
126
|
width,
|
|
307
127
|
height = 200,
|
|
@@ -310,31 +130,21 @@ function ImageUpload({
|
|
|
310
130
|
allowsEditing = true,
|
|
311
131
|
disabled = false,
|
|
312
132
|
style,
|
|
313
|
-
accessibilityLabel
|
|
133
|
+
accessibilityLabel,
|
|
134
|
+
onPickerStarting
|
|
314
135
|
}) {
|
|
315
136
|
const { colors } = useTheme();
|
|
316
137
|
const [imageLoaded, setImageLoaded] = React3.useState(false);
|
|
317
138
|
const handlePress = async () => {
|
|
318
139
|
if (disabled || loading) return;
|
|
319
140
|
impactLight();
|
|
141
|
+
onPickerStarting?.();
|
|
320
142
|
let picker;
|
|
321
143
|
try {
|
|
322
|
-
|
|
323
|
-
picker = mod.default;
|
|
144
|
+
picker = __require("expo-image-picker");
|
|
324
145
|
} catch {
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
} catch {
|
|
328
|
-
if (__DEV__) console.warn("[ImageUpload] expo-image-picker not installed.");
|
|
329
|
-
return;
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
if (reactNative.Platform.OS !== "web") {
|
|
333
|
-
try {
|
|
334
|
-
const { status } = await picker.requestMediaLibraryPermissionsAsync();
|
|
335
|
-
if (status !== "granted") return;
|
|
336
|
-
} catch {
|
|
337
|
-
}
|
|
146
|
+
if (__DEV__) console.warn("[ImageUpload] expo-image-picker not installed.");
|
|
147
|
+
return;
|
|
338
148
|
}
|
|
339
149
|
const result = await picker.launchImageLibraryAsync({
|
|
340
150
|
mediaTypes: ["images"],
|
|
@@ -364,16 +174,16 @@ function ImageUpload({
|
|
|
364
174
|
rippleColor: "transparent",
|
|
365
175
|
touchSoundDisabled: true,
|
|
366
176
|
accessibilityRole: "button",
|
|
367
|
-
accessibilityLabel: accessibilityLabel ?? (value ? "
|
|
177
|
+
accessibilityLabel: accessibilityLabel ?? (value ? "Cambiar imagen" : placeholder),
|
|
368
178
|
accessibilityState: { disabled: disabled || loading },
|
|
369
179
|
style: [containerStyle, style]
|
|
370
180
|
},
|
|
371
181
|
value ? /* @__PURE__ */ React3__default.default.createElement(
|
|
372
|
-
|
|
182
|
+
expoImage.Image,
|
|
373
183
|
{
|
|
374
184
|
source: { uri: value },
|
|
375
185
|
style: [reactNative.StyleSheet.absoluteFillObject, { borderRadius }],
|
|
376
|
-
resizeMode,
|
|
186
|
+
contentFit: resizeMode === "stretch" ? "fill" : resizeMode,
|
|
377
187
|
onLoad: () => setImageLoaded(true),
|
|
378
188
|
onError: () => setImageLoaded(true)
|
|
379
189
|
}
|
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';
|