@ecohouse/ui 0.1.28 → 0.1.30
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 +17 -13
- package/dist/index.cjs +782 -191
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +89 -2
- package/dist/index.d.ts +89 -2
- package/dist/index.js +782 -194
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/AvatarSimple/AvatarSimple.stories.tsx +62 -0
- package/src/components/AvatarSimple/AvatarSimple.tsx +178 -0
- package/src/components/AvatarSimple/index.ts +2 -0
- package/src/components/SegmentedToggle/SegmentedToggle.stories.tsx +22 -0
- package/src/components/SegmentedToggle/SegmentedToggle.tsx +51 -18
- package/src/components/Sidebar/Sidebar.stories.tsx +119 -0
- package/src/components/Sidebar/Sidebar.tsx +305 -0
- package/src/components/Sidebar/index.ts +2 -0
- package/src/components/VerificationCodeInput/VerificationCodeInput.stories.tsx +112 -0
- package/src/components/VerificationCodeInput/VerificationCodeInput.test.ts +42 -0
- package/src/components/VerificationCodeInput/VerificationCodeInput.tsx +255 -0
- package/src/components/VerificationCodeInput/VerificationCodeInput.utils.ts +34 -0
- package/src/components/VerificationCodeInput/index.ts +5 -0
- package/src/components/index.ts +12 -0
- package/src/icons/LogOut/logOutPath.ts +1 -1
- package/src/index.ts +9 -0
package/dist/index.cjs
CHANGED
|
@@ -878,7 +878,7 @@ function LocationPinIcon({ size = 20, color = colors.grey200, strokeWidth = 2 })
|
|
|
878
878
|
}
|
|
879
879
|
|
|
880
880
|
// src/icons/LogOut/logOutPath.ts
|
|
881
|
-
var LOG_OUT_PATH = "M10.6667 4.66667L14 8L10.6667 11.3333M14
|
|
881
|
+
var LOG_OUT_PATH = "M10.6667 4.66667L14 8L10.6667 11.3333M14 8H6M6 2H5.2C4.0799 2 3.51984 2 3.09202 2.21799C2.7157 2.40973 2.40973 2.71569 2.21799 3.09202C2 3.51984 2 4.07989 2 5.2V10.8C2 11.9201 2 12.4802 2.21799 12.908C2.40973 13.2843 2.71569 13.5903 3.09202 13.782C3.51984 14 4.0799 14 5.2 14H6";
|
|
882
882
|
function LogOutIcon({ size = 20, color = colors.red, strokeWidth = 1.5 }) {
|
|
883
883
|
return /* @__PURE__ */ jsxRuntime.jsx(Svg16__default.default, { width: size, height: size, viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
884
884
|
Svg16.Path,
|
|
@@ -2076,6 +2076,136 @@ var styles4 = reactNative.StyleSheet.create({
|
|
|
2076
2076
|
})
|
|
2077
2077
|
}
|
|
2078
2078
|
});
|
|
2079
|
+
var IMAGE_SIZE2 = 32;
|
|
2080
|
+
var CARD_WIDTH = 268;
|
|
2081
|
+
var CARD_HEIGHT = 56;
|
|
2082
|
+
var LOG_OUT_SIZE = 16;
|
|
2083
|
+
var AvatarSimple = react.forwardRef(
|
|
2084
|
+
function AvatarSimple2({
|
|
2085
|
+
name,
|
|
2086
|
+
email,
|
|
2087
|
+
imageUrl,
|
|
2088
|
+
onLogOut,
|
|
2089
|
+
logOutAccessibilityLabel = "Log out",
|
|
2090
|
+
compact = false,
|
|
2091
|
+
style,
|
|
2092
|
+
className,
|
|
2093
|
+
...rest
|
|
2094
|
+
}, forwardedRef) {
|
|
2095
|
+
const containerRef = react.useRef(null);
|
|
2096
|
+
const setContainerRef = react.useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);
|
|
2097
|
+
const [imageFailed, setImageFailed] = react.useState(false);
|
|
2098
|
+
const showImage = Boolean(imageUrl) && !imageFailed;
|
|
2099
|
+
useApplyWebClassName(containerRef, className);
|
|
2100
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2101
|
+
reactNative.View,
|
|
2102
|
+
{
|
|
2103
|
+
...rest,
|
|
2104
|
+
ref: setContainerRef,
|
|
2105
|
+
style: [styles5.root, compact ? styles5.rootCompact : styles5.rootCard, style],
|
|
2106
|
+
accessibilityRole: "summary",
|
|
2107
|
+
accessibilityLabel: `${name}, ${email}`,
|
|
2108
|
+
children: [
|
|
2109
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles5.avatar, children: showImage ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2110
|
+
reactNative.Image,
|
|
2111
|
+
{
|
|
2112
|
+
source: { uri: imageUrl ?? void 0 },
|
|
2113
|
+
style: styles5.avatarImage,
|
|
2114
|
+
onError: () => setImageFailed(true),
|
|
2115
|
+
accessibilityIgnoresInvertColors: true
|
|
2116
|
+
}
|
|
2117
|
+
) : null }),
|
|
2118
|
+
!compact ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles5.details, children: [
|
|
2119
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles5.textBlock, children: [
|
|
2120
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles5.name, numberOfLines: 1, children: name }),
|
|
2121
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles5.email, numberOfLines: 1, children: email })
|
|
2122
|
+
] }),
|
|
2123
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2124
|
+
reactNative.Pressable,
|
|
2125
|
+
{
|
|
2126
|
+
onPress: onLogOut,
|
|
2127
|
+
accessibilityRole: "button",
|
|
2128
|
+
accessibilityLabel: logOutAccessibilityLabel,
|
|
2129
|
+
hitSlop: 8,
|
|
2130
|
+
style: styles5.logOutButton,
|
|
2131
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(LogOutIcon, { color: colors.primary, size: LOG_OUT_SIZE, strokeWidth: 2 })
|
|
2132
|
+
}
|
|
2133
|
+
)
|
|
2134
|
+
] }) : null
|
|
2135
|
+
]
|
|
2136
|
+
}
|
|
2137
|
+
);
|
|
2138
|
+
}
|
|
2139
|
+
);
|
|
2140
|
+
var styles5 = reactNative.StyleSheet.create({
|
|
2141
|
+
root: {
|
|
2142
|
+
flexDirection: "row",
|
|
2143
|
+
alignItems: "center",
|
|
2144
|
+
overflow: "hidden"
|
|
2145
|
+
},
|
|
2146
|
+
rootCard: {
|
|
2147
|
+
width: CARD_WIDTH,
|
|
2148
|
+
height: CARD_HEIGHT,
|
|
2149
|
+
gap: 12,
|
|
2150
|
+
borderRadius: 12,
|
|
2151
|
+
paddingVertical: 4,
|
|
2152
|
+
paddingHorizontal: 12,
|
|
2153
|
+
backgroundColor: colors.grey700
|
|
2154
|
+
},
|
|
2155
|
+
rootCompact: {
|
|
2156
|
+
width: IMAGE_SIZE2,
|
|
2157
|
+
height: IMAGE_SIZE2,
|
|
2158
|
+
borderRadius: IMAGE_SIZE2,
|
|
2159
|
+
backgroundColor: "transparent"
|
|
2160
|
+
},
|
|
2161
|
+
avatar: {
|
|
2162
|
+
width: IMAGE_SIZE2,
|
|
2163
|
+
height: IMAGE_SIZE2,
|
|
2164
|
+
borderRadius: 56,
|
|
2165
|
+
backgroundColor: colors.grey500,
|
|
2166
|
+
overflow: "hidden",
|
|
2167
|
+
flexShrink: 0
|
|
2168
|
+
},
|
|
2169
|
+
avatarImage: {
|
|
2170
|
+
width: IMAGE_SIZE2,
|
|
2171
|
+
height: IMAGE_SIZE2
|
|
2172
|
+
},
|
|
2173
|
+
details: {
|
|
2174
|
+
flex: 1,
|
|
2175
|
+
minWidth: 0,
|
|
2176
|
+
flexDirection: "row",
|
|
2177
|
+
alignItems: "center",
|
|
2178
|
+
gap: 12
|
|
2179
|
+
},
|
|
2180
|
+
textBlock: {
|
|
2181
|
+
flex: 1,
|
|
2182
|
+
minWidth: 0
|
|
2183
|
+
},
|
|
2184
|
+
name: {
|
|
2185
|
+
fontFamily: fonts.sans,
|
|
2186
|
+
fontSize: 12,
|
|
2187
|
+
fontWeight: "600",
|
|
2188
|
+
lineHeight: 16,
|
|
2189
|
+
letterSpacing: 0,
|
|
2190
|
+
color: colors.white
|
|
2191
|
+
},
|
|
2192
|
+
email: {
|
|
2193
|
+
marginTop: 2,
|
|
2194
|
+
fontFamily: fonts.sans,
|
|
2195
|
+
fontSize: 12,
|
|
2196
|
+
fontWeight: "400",
|
|
2197
|
+
lineHeight: 16,
|
|
2198
|
+
letterSpacing: 0,
|
|
2199
|
+
color: colors.grey0
|
|
2200
|
+
},
|
|
2201
|
+
logOutButton: {
|
|
2202
|
+
width: LOG_OUT_SIZE,
|
|
2203
|
+
height: LOG_OUT_SIZE,
|
|
2204
|
+
alignItems: "center",
|
|
2205
|
+
justifyContent: "center",
|
|
2206
|
+
flexShrink: 0
|
|
2207
|
+
}
|
|
2208
|
+
});
|
|
2079
2209
|
var ICON_SIZE3 = 20;
|
|
2080
2210
|
var webBlurStyle2 = reactNative.Platform.OS === "web" ? {
|
|
2081
2211
|
backdropFilter: "blur(10.3px)",
|
|
@@ -2107,22 +2237,22 @@ var Badge = react.forwardRef(function Badge2({ label, variant = "default", icon:
|
|
|
2107
2237
|
...rest,
|
|
2108
2238
|
ref: setContainerRef,
|
|
2109
2239
|
style: [
|
|
2110
|
-
|
|
2240
|
+
styles6.base,
|
|
2111
2241
|
{ backgroundColor: preset.backgroundColor },
|
|
2112
|
-
preset.border ?
|
|
2242
|
+
preset.border ? styles6.transparentBorder : null,
|
|
2113
2243
|
preset.blur ? webBlurStyle2 : null,
|
|
2114
2244
|
style
|
|
2115
2245
|
],
|
|
2116
2246
|
accessibilityRole: "text",
|
|
2117
2247
|
accessibilityLabel: accessibilityLabel ?? label,
|
|
2118
2248
|
children: [
|
|
2119
|
-
Icon2 ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
2120
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
2249
|
+
Icon2 ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles6.iconSlot, children: /* @__PURE__ */ jsxRuntime.jsx(Icon2, { size: ICON_SIZE3, color: preset.iconColor }) }) : null,
|
|
2250
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles6.label, reactNative.Platform.OS === "android" ? styles6.labelAndroid : null], children: label })
|
|
2121
2251
|
]
|
|
2122
2252
|
}
|
|
2123
2253
|
);
|
|
2124
2254
|
});
|
|
2125
|
-
var
|
|
2255
|
+
var styles6 = reactNative.StyleSheet.create({
|
|
2126
2256
|
base: {
|
|
2127
2257
|
flexDirection: "row",
|
|
2128
2258
|
alignItems: "center",
|
|
@@ -2195,7 +2325,7 @@ var Counter = react.forwardRef(function Counter2({
|
|
|
2195
2325
|
if (!isControlled) setUncontrolledValue(next);
|
|
2196
2326
|
onValueChange?.(next);
|
|
2197
2327
|
};
|
|
2198
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ...rest, ref: setContainerRef, style: [
|
|
2328
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ...rest, ref: setContainerRef, style: [styles7.base, style], children: [
|
|
2199
2329
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2200
2330
|
reactNative.Pressable,
|
|
2201
2331
|
{
|
|
@@ -2205,11 +2335,11 @@ var Counter = react.forwardRef(function Counter2({
|
|
|
2205
2335
|
accessibilityRole: "button",
|
|
2206
2336
|
accessibilityLabel: "Decrease value",
|
|
2207
2337
|
accessibilityState: { disabled: decrementDisabled },
|
|
2208
|
-
style: [
|
|
2338
|
+
style: [styles7.button, webBlurStyle3, decrementDisabled && styles7.buttonDisabled],
|
|
2209
2339
|
children: /* @__PURE__ */ jsxRuntime.jsx(MinusIcon, {})
|
|
2210
2340
|
}
|
|
2211
2341
|
),
|
|
2212
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
2342
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles7.value, children: resolvedValue }),
|
|
2213
2343
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2214
2344
|
reactNative.Pressable,
|
|
2215
2345
|
{
|
|
@@ -2219,13 +2349,13 @@ var Counter = react.forwardRef(function Counter2({
|
|
|
2219
2349
|
accessibilityRole: "button",
|
|
2220
2350
|
accessibilityLabel: "Increase value",
|
|
2221
2351
|
accessibilityState: { disabled: incrementDisabled },
|
|
2222
|
-
style: [
|
|
2352
|
+
style: [styles7.button, webBlurStyle3, incrementDisabled && styles7.buttonDisabled],
|
|
2223
2353
|
children: /* @__PURE__ */ jsxRuntime.jsx(PlusIcon, {})
|
|
2224
2354
|
}
|
|
2225
2355
|
)
|
|
2226
2356
|
] });
|
|
2227
2357
|
});
|
|
2228
|
-
var
|
|
2358
|
+
var styles7 = reactNative.StyleSheet.create({
|
|
2229
2359
|
base: {
|
|
2230
2360
|
flexDirection: "row",
|
|
2231
2361
|
alignItems: "center",
|
|
@@ -2255,6 +2385,17 @@ var OPTION_HORIZONTAL_PADDING = 16;
|
|
|
2255
2385
|
var OPTION_CONTENT_GAP = 12;
|
|
2256
2386
|
var OPTION_MIN_WIDTH = 97;
|
|
2257
2387
|
var OPTION_MEASUREMENT_TOLERANCE = 0.5;
|
|
2388
|
+
var TRACK_PADDING = 4;
|
|
2389
|
+
var OPTION_GAP = 4;
|
|
2390
|
+
function buildIndicatorOutputRange(optionWidths) {
|
|
2391
|
+
const outputRange = [];
|
|
2392
|
+
let offset = 0;
|
|
2393
|
+
for (let index = 0; index < optionWidths.length; index += 1) {
|
|
2394
|
+
outputRange.push(offset);
|
|
2395
|
+
offset += optionWidths[index] + OPTION_GAP;
|
|
2396
|
+
}
|
|
2397
|
+
return outputRange;
|
|
2398
|
+
}
|
|
2258
2399
|
var SegmentedToggle = react.forwardRef(
|
|
2259
2400
|
function SegmentedToggle2({
|
|
2260
2401
|
options,
|
|
@@ -2269,6 +2410,7 @@ var SegmentedToggle = react.forwardRef(
|
|
|
2269
2410
|
onLayout,
|
|
2270
2411
|
...rest
|
|
2271
2412
|
}, forwardedRef) {
|
|
2413
|
+
const optionCount = options.length;
|
|
2272
2414
|
const containerRef = react.useRef(null);
|
|
2273
2415
|
const isControlled = value !== void 0;
|
|
2274
2416
|
const [uncontrolledValue, setUncontrolledValue] = react.useState(defaultValue);
|
|
@@ -2280,20 +2422,31 @@ var SegmentedToggle = react.forwardRef(
|
|
|
2280
2422
|
const resolvedClassName = className?.trim() || void 0;
|
|
2281
2423
|
const setContainerRef = react.useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);
|
|
2282
2424
|
const progress = react.useRef(new reactNative.Animated.Value(selectedIndex)).current;
|
|
2283
|
-
const [contentWidths, setContentWidths] = react.useState(
|
|
2425
|
+
const [contentWidths, setContentWidths] = react.useState(
|
|
2426
|
+
() => Array.from({ length: optionCount }, () => 0)
|
|
2427
|
+
);
|
|
2284
2428
|
const [containerWidth, setContainerWidth] = react.useState(0);
|
|
2285
|
-
const
|
|
2429
|
+
const trackChrome = TRACK_PADDING * 2 + OPTION_GAP * (optionCount - 1);
|
|
2430
|
+
const availableOptionWidth = Math.max(0, (containerWidth - trackChrome) / optionCount);
|
|
2286
2431
|
const resolveContentOptionWidth = (contentWidth) => contentWidth > 0 ? Math.max(
|
|
2287
2432
|
OPTION_MIN_WIDTH,
|
|
2288
2433
|
contentWidth + OPTION_HORIZONTAL_PADDING * 2 + OPTION_MEASUREMENT_TOLERANCE
|
|
2289
2434
|
) : 0;
|
|
2290
|
-
const optionWidths = fullWidth ?
|
|
2291
|
-
const selectedOptionWidth = optionWidths[selectedIndex];
|
|
2435
|
+
const optionWidths = fullWidth ? Array.from({ length: optionCount }, () => availableOptionWidth) : contentWidths.map((width) => resolveContentOptionWidth(width));
|
|
2436
|
+
const selectedOptionWidth = optionWidths[selectedIndex] ?? 0;
|
|
2437
|
+
const indicatorInputRange = options.map((_, index) => index);
|
|
2438
|
+
const indicatorOutputRange = buildIndicatorOutputRange(optionWidths);
|
|
2292
2439
|
const indicatorTranslateX = progress.interpolate({
|
|
2293
|
-
inputRange:
|
|
2294
|
-
outputRange:
|
|
2440
|
+
inputRange: indicatorInputRange,
|
|
2441
|
+
outputRange: indicatorOutputRange
|
|
2295
2442
|
});
|
|
2296
2443
|
useApplyWebClassName(containerRef, resolvedClassName);
|
|
2444
|
+
react.useEffect(() => {
|
|
2445
|
+
setContentWidths((current) => {
|
|
2446
|
+
if (current.length === optionCount) return current;
|
|
2447
|
+
return Array.from({ length: optionCount }, (_, index) => current[index] ?? 0);
|
|
2448
|
+
});
|
|
2449
|
+
}, [optionCount]);
|
|
2297
2450
|
react.useEffect(() => {
|
|
2298
2451
|
const animation = reactNative.Animated.timing(progress, {
|
|
2299
2452
|
toValue: selectedIndex,
|
|
@@ -2322,9 +2475,9 @@ var SegmentedToggle = react.forwardRef(
|
|
|
2322
2475
|
onLayout?.(event);
|
|
2323
2476
|
},
|
|
2324
2477
|
style: [
|
|
2325
|
-
|
|
2326
|
-
fullWidth ?
|
|
2327
|
-
disabled &&
|
|
2478
|
+
styles8.base,
|
|
2479
|
+
fullWidth ? styles8.fullWidth : styles8.contentWidth,
|
|
2480
|
+
disabled && styles8.disabled,
|
|
2328
2481
|
style
|
|
2329
2482
|
],
|
|
2330
2483
|
accessibilityRole: "radiogroup",
|
|
@@ -2340,15 +2493,15 @@ var SegmentedToggle = react.forwardRef(
|
|
|
2340
2493
|
const nextWidth = event.nativeEvent.layout.width;
|
|
2341
2494
|
setContentWidths((currentWidths) => {
|
|
2342
2495
|
if (currentWidths[index] === nextWidth) return currentWidths;
|
|
2343
|
-
const nextWidths = [currentWidths
|
|
2496
|
+
const nextWidths = [...currentWidths];
|
|
2344
2497
|
nextWidths[index] = nextWidth;
|
|
2345
2498
|
return nextWidths;
|
|
2346
2499
|
});
|
|
2347
2500
|
},
|
|
2348
|
-
style:
|
|
2501
|
+
style: styles8.optionMeasurement,
|
|
2349
2502
|
children: [
|
|
2350
2503
|
Icon2 ? /* @__PURE__ */ jsxRuntime.jsx(Icon2, { size: ICON_SIZE4 }) : null,
|
|
2351
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
2504
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles8.label, styles8.contentWidthLabel], children: label })
|
|
2352
2505
|
]
|
|
2353
2506
|
},
|
|
2354
2507
|
`${optionValue}-measurement`
|
|
@@ -2358,7 +2511,7 @@ var SegmentedToggle = react.forwardRef(
|
|
|
2358
2511
|
{
|
|
2359
2512
|
pointerEvents: "none",
|
|
2360
2513
|
style: [
|
|
2361
|
-
|
|
2514
|
+
styles8.activeIndicator,
|
|
2362
2515
|
{ width: selectedOptionWidth, transform: [{ translateX: indicatorTranslateX }] }
|
|
2363
2516
|
]
|
|
2364
2517
|
}
|
|
@@ -2367,6 +2520,7 @@ var SegmentedToggle = react.forwardRef(
|
|
|
2367
2520
|
const selected = optionValue === selectedValue;
|
|
2368
2521
|
const iconColor = selected ? colors.primary : colors.whiteAlpha20;
|
|
2369
2522
|
const labelColor = selected ? colors.whiteAlpha86 : colors.whiteAlpha40;
|
|
2523
|
+
const optionWidth = optionWidths[index] ?? 0;
|
|
2370
2524
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2371
2525
|
reactNative.Pressable,
|
|
2372
2526
|
{
|
|
@@ -2377,21 +2531,18 @@ var SegmentedToggle = react.forwardRef(
|
|
|
2377
2531
|
accessibilityLabel: label,
|
|
2378
2532
|
accessibilityState: { selected, disabled },
|
|
2379
2533
|
style: [
|
|
2380
|
-
|
|
2381
|
-
fullWidth ?
|
|
2382
|
-
styles7.optionContentWidth,
|
|
2383
|
-
optionWidths[index] > 0 && { width: optionWidths[index] }
|
|
2384
|
-
]
|
|
2534
|
+
styles8.option,
|
|
2535
|
+
fullWidth ? styles8.optionFullWidth : [styles8.optionContentWidth, optionWidth > 0 && { width: optionWidth }]
|
|
2385
2536
|
],
|
|
2386
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
2537
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles8.optionContent, children: [
|
|
2387
2538
|
Icon2 ? /* @__PURE__ */ jsxRuntime.jsx(Icon2, { size: ICON_SIZE4, color: iconColor }) : null,
|
|
2388
2539
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2389
2540
|
reactNative.Text,
|
|
2390
2541
|
{
|
|
2391
2542
|
numberOfLines: fullWidth ? 1 : void 0,
|
|
2392
2543
|
style: [
|
|
2393
|
-
|
|
2394
|
-
!fullWidth &&
|
|
2544
|
+
styles8.label,
|
|
2545
|
+
!fullWidth && styles8.contentWidthLabel,
|
|
2395
2546
|
{ color: labelColor }
|
|
2396
2547
|
],
|
|
2397
2548
|
children: label
|
|
@@ -2407,12 +2558,12 @@ var SegmentedToggle = react.forwardRef(
|
|
|
2407
2558
|
);
|
|
2408
2559
|
}
|
|
2409
2560
|
);
|
|
2410
|
-
var
|
|
2561
|
+
var styles8 = reactNative.StyleSheet.create({
|
|
2411
2562
|
base: {
|
|
2412
2563
|
height: 44,
|
|
2413
2564
|
flexDirection: "row",
|
|
2414
|
-
padding:
|
|
2415
|
-
gap:
|
|
2565
|
+
padding: TRACK_PADDING,
|
|
2566
|
+
gap: OPTION_GAP,
|
|
2416
2567
|
borderRadius: 60,
|
|
2417
2568
|
backgroundColor: colors.grey700,
|
|
2418
2569
|
overflow: "hidden"
|
|
@@ -2457,8 +2608,8 @@ var styles7 = reactNative.StyleSheet.create({
|
|
|
2457
2608
|
},
|
|
2458
2609
|
activeIndicator: {
|
|
2459
2610
|
position: "absolute",
|
|
2460
|
-
top:
|
|
2461
|
-
left:
|
|
2611
|
+
top: TRACK_PADDING,
|
|
2612
|
+
left: TRACK_PADDING,
|
|
2462
2613
|
height: 36,
|
|
2463
2614
|
backgroundColor: colors.grey600,
|
|
2464
2615
|
borderRadius: 60
|
|
@@ -2471,6 +2622,242 @@ var styles7 = reactNative.StyleSheet.create({
|
|
|
2471
2622
|
flexShrink: 0
|
|
2472
2623
|
}
|
|
2473
2624
|
});
|
|
2625
|
+
var SIDEBAR_WIDTH = 300;
|
|
2626
|
+
var SIDEBAR_COLLAPSED_WIDTH = 72;
|
|
2627
|
+
var HEADER_HEIGHT = 64;
|
|
2628
|
+
var LOGO_WIDTH = 31;
|
|
2629
|
+
var LOGO_HEIGHT = 44;
|
|
2630
|
+
var TOGGLE_SIZE = 20;
|
|
2631
|
+
var MENU_ICON_SIZE = 16;
|
|
2632
|
+
var PROFILE_SECTION_HEIGHT = 80;
|
|
2633
|
+
var SIDEBAR_TRANSITION_MS = 300;
|
|
2634
|
+
var Sidebar = react.forwardRef(function Sidebar2({
|
|
2635
|
+
items,
|
|
2636
|
+
user,
|
|
2637
|
+
onLogOut,
|
|
2638
|
+
logoAccessibilityLabel = "Cortel Booking",
|
|
2639
|
+
navigationAccessibilityLabel = "Account navigation",
|
|
2640
|
+
collapseAccessibilityLabel = "Collapse sidebar",
|
|
2641
|
+
expandAccessibilityLabel = "Expand sidebar",
|
|
2642
|
+
logOutAccessibilityLabel = "Log out",
|
|
2643
|
+
collapsed: collapsedProp,
|
|
2644
|
+
defaultCollapsed = false,
|
|
2645
|
+
onCollapsedChange,
|
|
2646
|
+
style,
|
|
2647
|
+
className,
|
|
2648
|
+
...rest
|
|
2649
|
+
}, forwardedRef) {
|
|
2650
|
+
const containerRef = react.useRef(null);
|
|
2651
|
+
const setContainerRef = react.useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);
|
|
2652
|
+
const [uncontrolledCollapsed, setUncontrolledCollapsed] = react.useState(defaultCollapsed);
|
|
2653
|
+
const collapsed = collapsedProp ?? uncontrolledCollapsed;
|
|
2654
|
+
const widthAnim = react.useRef(
|
|
2655
|
+
new reactNative.Animated.Value(collapsed ? SIDEBAR_COLLAPSED_WIDTH : SIDEBAR_WIDTH)
|
|
2656
|
+
).current;
|
|
2657
|
+
const labelOpacity = react.useRef(new reactNative.Animated.Value(collapsed ? 0 : 1)).current;
|
|
2658
|
+
useApplyWebClassName(containerRef, className);
|
|
2659
|
+
react.useEffect(() => {
|
|
2660
|
+
const nextWidth = collapsed ? SIDEBAR_COLLAPSED_WIDTH : SIDEBAR_WIDTH;
|
|
2661
|
+
const nextOpacity = collapsed ? 0 : 1;
|
|
2662
|
+
const timing = {
|
|
2663
|
+
duration: SIDEBAR_TRANSITION_MS,
|
|
2664
|
+
easing: reactNative.Easing.inOut(reactNative.Easing.ease),
|
|
2665
|
+
useNativeDriver: false
|
|
2666
|
+
};
|
|
2667
|
+
const widthAnimation = reactNative.Animated.timing(widthAnim, { ...timing, toValue: nextWidth });
|
|
2668
|
+
const opacityAnimation = reactNative.Animated.timing(labelOpacity, { ...timing, toValue: nextOpacity });
|
|
2669
|
+
reactNative.Animated.parallel([widthAnimation, opacityAnimation]).start();
|
|
2670
|
+
return () => {
|
|
2671
|
+
widthAnimation.stop();
|
|
2672
|
+
opacityAnimation.stop();
|
|
2673
|
+
};
|
|
2674
|
+
}, [collapsed, labelOpacity, widthAnim]);
|
|
2675
|
+
const setCollapsed = (next) => {
|
|
2676
|
+
onCollapsedChange?.(next);
|
|
2677
|
+
if (collapsedProp === void 0) {
|
|
2678
|
+
setUncontrolledCollapsed(next);
|
|
2679
|
+
}
|
|
2680
|
+
};
|
|
2681
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2682
|
+
reactNative.Animated.View,
|
|
2683
|
+
{
|
|
2684
|
+
...rest,
|
|
2685
|
+
ref: setContainerRef,
|
|
2686
|
+
style: [styles9.root, { width: widthAnim }, style],
|
|
2687
|
+
accessibilityRole: "menu",
|
|
2688
|
+
children: [
|
|
2689
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles9.header, collapsed ? styles9.headerCollapsed : styles9.headerExpanded], children: [
|
|
2690
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2691
|
+
reactNative.Animated.View,
|
|
2692
|
+
{
|
|
2693
|
+
pointerEvents: collapsed ? "none" : "auto",
|
|
2694
|
+
style: [
|
|
2695
|
+
styles9.logoSlot,
|
|
2696
|
+
{
|
|
2697
|
+
opacity: labelOpacity,
|
|
2698
|
+
maxWidth: collapsed ? 0 : LOGO_WIDTH
|
|
2699
|
+
}
|
|
2700
|
+
],
|
|
2701
|
+
accessibilityElementsHidden: collapsed,
|
|
2702
|
+
importantForAccessibility: collapsed ? "no-hide-descendants" : "auto",
|
|
2703
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2704
|
+
BrandLogo,
|
|
2705
|
+
{
|
|
2706
|
+
accessibilityLabel: logoAccessibilityLabel,
|
|
2707
|
+
height: LOGO_HEIGHT,
|
|
2708
|
+
variant: "brand",
|
|
2709
|
+
width: LOGO_WIDTH
|
|
2710
|
+
}
|
|
2711
|
+
)
|
|
2712
|
+
}
|
|
2713
|
+
),
|
|
2714
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2715
|
+
reactNative.Pressable,
|
|
2716
|
+
{
|
|
2717
|
+
accessibilityRole: "button",
|
|
2718
|
+
accessibilityLabel: collapsed ? expandAccessibilityLabel : collapseAccessibilityLabel,
|
|
2719
|
+
accessibilityState: { expanded: !collapsed },
|
|
2720
|
+
hitSlop: 8,
|
|
2721
|
+
onPress: () => setCollapsed(!collapsed),
|
|
2722
|
+
style: styles9.toggleButton,
|
|
2723
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(SidebarIcon, { color: colors.grey100, size: TOGGLE_SIZE, strokeWidth: 2 })
|
|
2724
|
+
}
|
|
2725
|
+
)
|
|
2726
|
+
] }),
|
|
2727
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2728
|
+
reactNative.View,
|
|
2729
|
+
{
|
|
2730
|
+
accessibilityLabel: navigationAccessibilityLabel,
|
|
2731
|
+
accessibilityRole: "menu",
|
|
2732
|
+
style: styles9.nav,
|
|
2733
|
+
children: items.map((item) => {
|
|
2734
|
+
const isActive = Boolean(item.active);
|
|
2735
|
+
const iconColor = isActive ? colors.primary : colors.grey300;
|
|
2736
|
+
const Icon2 = item.icon;
|
|
2737
|
+
const iconNode = /* @__PURE__ */ jsxRuntime.jsx(Icon2, { color: iconColor, size: MENU_ICON_SIZE, strokeWidth: 1.5 });
|
|
2738
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2739
|
+
MenuItem,
|
|
2740
|
+
{
|
|
2741
|
+
icon: iconNode,
|
|
2742
|
+
label: item.label,
|
|
2743
|
+
accessibilityLabel: item.label,
|
|
2744
|
+
backgroundColor: isActive ? colors.grey700 : "transparent",
|
|
2745
|
+
hoverColor: colors.grey700,
|
|
2746
|
+
onPress: item.onPress,
|
|
2747
|
+
labelStyle: [
|
|
2748
|
+
styles9.menuLabel,
|
|
2749
|
+
{ color: isActive ? colors.white : colors.grey200 },
|
|
2750
|
+
collapsed ? styles9.menuLabelCollapsed : styles9.menuLabelExpanded
|
|
2751
|
+
],
|
|
2752
|
+
style: [styles9.menuItem, collapsed ? styles9.menuItemCollapsed : null]
|
|
2753
|
+
},
|
|
2754
|
+
item.key
|
|
2755
|
+
);
|
|
2756
|
+
})
|
|
2757
|
+
}
|
|
2758
|
+
),
|
|
2759
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles9.footer, collapsed ? styles9.footerCollapsed : styles9.footerExpanded], children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2760
|
+
AvatarSimple,
|
|
2761
|
+
{
|
|
2762
|
+
name: user.name,
|
|
2763
|
+
email: user.email,
|
|
2764
|
+
imageUrl: user.imageUrl,
|
|
2765
|
+
onLogOut,
|
|
2766
|
+
logOutAccessibilityLabel,
|
|
2767
|
+
compact: collapsed
|
|
2768
|
+
}
|
|
2769
|
+
) })
|
|
2770
|
+
]
|
|
2771
|
+
}
|
|
2772
|
+
);
|
|
2773
|
+
});
|
|
2774
|
+
var styles9 = reactNative.StyleSheet.create({
|
|
2775
|
+
root: {
|
|
2776
|
+
height: "100%",
|
|
2777
|
+
flexShrink: 0,
|
|
2778
|
+
backgroundColor: colors.dark,
|
|
2779
|
+
borderRightWidth: 1,
|
|
2780
|
+
borderRightColor: colors.grey700,
|
|
2781
|
+
overflow: "hidden"
|
|
2782
|
+
},
|
|
2783
|
+
header: {
|
|
2784
|
+
zIndex: 1,
|
|
2785
|
+
height: HEADER_HEIGHT,
|
|
2786
|
+
width: "100%",
|
|
2787
|
+
flexDirection: "row",
|
|
2788
|
+
alignItems: "center",
|
|
2789
|
+
borderBottomWidth: 1,
|
|
2790
|
+
borderBottomColor: colors.grey700,
|
|
2791
|
+
backgroundColor: colors.dark
|
|
2792
|
+
},
|
|
2793
|
+
headerExpanded: {
|
|
2794
|
+
justifyContent: "space-between",
|
|
2795
|
+
paddingHorizontal: 24
|
|
2796
|
+
},
|
|
2797
|
+
headerCollapsed: {
|
|
2798
|
+
justifyContent: "center",
|
|
2799
|
+
paddingHorizontal: 0
|
|
2800
|
+
},
|
|
2801
|
+
logoSlot: {
|
|
2802
|
+
minWidth: 0,
|
|
2803
|
+
height: LOGO_HEIGHT,
|
|
2804
|
+
flexShrink: 0,
|
|
2805
|
+
overflow: "hidden"
|
|
2806
|
+
},
|
|
2807
|
+
toggleButton: {
|
|
2808
|
+
width: TOGGLE_SIZE,
|
|
2809
|
+
height: TOGGLE_SIZE,
|
|
2810
|
+
alignItems: "center",
|
|
2811
|
+
justifyContent: "center",
|
|
2812
|
+
flexShrink: 0
|
|
2813
|
+
},
|
|
2814
|
+
nav: {
|
|
2815
|
+
flex: 1,
|
|
2816
|
+
width: "100%",
|
|
2817
|
+
padding: 16,
|
|
2818
|
+
gap: 10
|
|
2819
|
+
},
|
|
2820
|
+
menuItem: {
|
|
2821
|
+
gap: 8
|
|
2822
|
+
},
|
|
2823
|
+
menuItemCollapsed: {
|
|
2824
|
+
gap: 0
|
|
2825
|
+
},
|
|
2826
|
+
menuLabel: {
|
|
2827
|
+
fontFamily: fonts.sans,
|
|
2828
|
+
fontSize: 12,
|
|
2829
|
+
fontWeight: "600",
|
|
2830
|
+
lineHeight: 16,
|
|
2831
|
+
letterSpacing: 0
|
|
2832
|
+
},
|
|
2833
|
+
menuLabelExpanded: {
|
|
2834
|
+
flexGrow: 1,
|
|
2835
|
+
flexShrink: 1,
|
|
2836
|
+
opacity: 1
|
|
2837
|
+
},
|
|
2838
|
+
menuLabelCollapsed: {
|
|
2839
|
+
flexGrow: 0,
|
|
2840
|
+
flexShrink: 0,
|
|
2841
|
+
width: 0,
|
|
2842
|
+
maxWidth: 0,
|
|
2843
|
+
opacity: 0,
|
|
2844
|
+
overflow: "hidden"
|
|
2845
|
+
},
|
|
2846
|
+
footer: {
|
|
2847
|
+
height: PROFILE_SECTION_HEIGHT,
|
|
2848
|
+
width: "100%",
|
|
2849
|
+
flexShrink: 0,
|
|
2850
|
+
alignItems: "center",
|
|
2851
|
+
justifyContent: "center",
|
|
2852
|
+
paddingVertical: 12
|
|
2853
|
+
},
|
|
2854
|
+
footerExpanded: {
|
|
2855
|
+
paddingHorizontal: 16
|
|
2856
|
+
},
|
|
2857
|
+
footerCollapsed: {
|
|
2858
|
+
paddingHorizontal: 0
|
|
2859
|
+
}
|
|
2860
|
+
});
|
|
2474
2861
|
var defaultLanguageOptions = [
|
|
2475
2862
|
{ value: "hy", label: "\u0540\u0561\u0575" },
|
|
2476
2863
|
{ value: "en", label: "Eng" },
|
|
@@ -2558,7 +2945,7 @@ var LanguageSwitcher = react.forwardRef(
|
|
|
2558
2945
|
{
|
|
2559
2946
|
...rest,
|
|
2560
2947
|
ref: setWrapperRef,
|
|
2561
|
-
style: [
|
|
2948
|
+
style: [styles10.wrapper, isOpen && styles10.wrapperOpen, disabled && styles10.disabled, style],
|
|
2562
2949
|
children: [
|
|
2563
2950
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2564
2951
|
reactNative.Pressable,
|
|
@@ -2573,17 +2960,17 @@ var LanguageSwitcher = react.forwardRef(
|
|
|
2573
2960
|
onHoverIn: () => setTriggerHovered(true),
|
|
2574
2961
|
onHoverOut: () => setTriggerHovered(false),
|
|
2575
2962
|
style: ({ pressed }) => [
|
|
2576
|
-
|
|
2577
|
-
(triggerHovered || pressed || isOpen) &&
|
|
2963
|
+
styles10.trigger,
|
|
2964
|
+
(triggerHovered || pressed || isOpen) && styles10.triggerActive
|
|
2578
2965
|
],
|
|
2579
2966
|
children: [
|
|
2580
2967
|
/* @__PURE__ */ jsxRuntime.jsx(GlobeIcon, { size: ICON_SIZE5, color: colors.white, strokeWidth: 2 }),
|
|
2581
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
2582
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [
|
|
2968
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles10.triggerLabel, numberOfLines: 1, children: selectedOption?.label ?? "" }),
|
|
2969
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles10.chevron, isOpen && styles10.chevronOpen], children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, { size: ICON_SIZE5, color: colors.white, strokeWidth: 2 }) })
|
|
2583
2970
|
]
|
|
2584
2971
|
}
|
|
2585
2972
|
),
|
|
2586
|
-
isOpen && options.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
2973
|
+
isOpen && options.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles10.menu, accessibilityRole: "menu", children: options.map((option) => {
|
|
2587
2974
|
const selected = option.value === selectedValue;
|
|
2588
2975
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2589
2976
|
reactNative.Pressable,
|
|
@@ -2595,10 +2982,10 @@ var LanguageSwitcher = react.forwardRef(
|
|
|
2595
2982
|
onHoverIn: () => setHoveredValue(option.value),
|
|
2596
2983
|
onHoverOut: () => setHoveredValue(null),
|
|
2597
2984
|
style: ({ pressed }) => [
|
|
2598
|
-
|
|
2599
|
-
selected ?
|
|
2985
|
+
styles10.item,
|
|
2986
|
+
selected ? styles10.itemSelected : (hoveredValue === option.value || pressed) && styles10.itemHovered
|
|
2600
2987
|
],
|
|
2601
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
2988
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles10.itemLabel, selected && styles10.itemLabelSelected], children: option.label })
|
|
2602
2989
|
},
|
|
2603
2990
|
option.value
|
|
2604
2991
|
);
|
|
@@ -2608,7 +2995,7 @@ var LanguageSwitcher = react.forwardRef(
|
|
|
2608
2995
|
);
|
|
2609
2996
|
}
|
|
2610
2997
|
);
|
|
2611
|
-
var
|
|
2998
|
+
var styles10 = reactNative.StyleSheet.create({
|
|
2612
2999
|
wrapper: {
|
|
2613
3000
|
position: "relative",
|
|
2614
3001
|
width: CONTROL_WIDTH,
|
|
@@ -2704,17 +3091,17 @@ var StatCard = react.forwardRef(function StatCard2({
|
|
|
2704
3091
|
{
|
|
2705
3092
|
...rest,
|
|
2706
3093
|
ref: setContainerRef,
|
|
2707
|
-
style: [
|
|
3094
|
+
style: [styles11.base, style],
|
|
2708
3095
|
accessibilityRole: "text",
|
|
2709
3096
|
accessibilityLabel: accessibilityLabel ?? label,
|
|
2710
3097
|
children: [
|
|
2711
3098
|
/* @__PURE__ */ jsxRuntime.jsx(Icon2, { ...iconProps, size: iconSize, color: iconProps?.color ?? colors.white }),
|
|
2712
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
3099
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles11.label, children: label })
|
|
2713
3100
|
]
|
|
2714
3101
|
}
|
|
2715
3102
|
);
|
|
2716
3103
|
});
|
|
2717
|
-
var
|
|
3104
|
+
var styles11 = reactNative.StyleSheet.create({
|
|
2718
3105
|
base: {
|
|
2719
3106
|
width: 204.5,
|
|
2720
3107
|
minHeight: 114,
|
|
@@ -2800,7 +3187,7 @@ var Button = react.forwardRef(
|
|
|
2800
3187
|
useApplyWebClassName(textRef, textClassName);
|
|
2801
3188
|
const iconNode = customIcon ?? /* @__PURE__ */ jsxRuntime.jsx(ArrowRightIcon, { size: metrics.iconSize, color: preset.iconColor });
|
|
2802
3189
|
const containerStyle = [
|
|
2803
|
-
|
|
3190
|
+
styles12.base,
|
|
2804
3191
|
{
|
|
2805
3192
|
minHeight: metrics.minHeight,
|
|
2806
3193
|
borderRadius: metrics.borderRadius,
|
|
@@ -2811,16 +3198,16 @@ var Button = react.forwardRef(
|
|
|
2811
3198
|
paddingRight: hasIcon ? metrics.paddingRightWithIcon : metrics.paddingRight,
|
|
2812
3199
|
gap: hasIcon ? metrics.gap : 0
|
|
2813
3200
|
},
|
|
2814
|
-
hasIcon ?
|
|
2815
|
-
disabled &&
|
|
3201
|
+
hasIcon ? styles12.contentWithIcon : styles12.contentWithoutIcon,
|
|
3202
|
+
disabled && styles12.disabled,
|
|
2816
3203
|
style
|
|
2817
3204
|
];
|
|
2818
3205
|
const labelStyle = [
|
|
2819
|
-
|
|
3206
|
+
styles12.label,
|
|
2820
3207
|
metrics.text,
|
|
2821
3208
|
{ color: preset.textColor },
|
|
2822
|
-
reactNative.Platform.OS === "android" ?
|
|
2823
|
-
!hasIcon &&
|
|
3209
|
+
reactNative.Platform.OS === "android" ? styles12.labelAndroid : null,
|
|
3210
|
+
!hasIcon && styles12.labelCentered,
|
|
2824
3211
|
textStyle
|
|
2825
3212
|
];
|
|
2826
3213
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2841,7 +3228,7 @@ var Button = react.forwardRef(
|
|
|
2841
3228
|
reactNative.View,
|
|
2842
3229
|
{
|
|
2843
3230
|
style: [
|
|
2844
|
-
|
|
3231
|
+
styles12.iconContainer,
|
|
2845
3232
|
{
|
|
2846
3233
|
width: metrics.iconContainerSize,
|
|
2847
3234
|
height: metrics.iconContainerSize,
|
|
@@ -2857,7 +3244,7 @@ var Button = react.forwardRef(
|
|
|
2857
3244
|
);
|
|
2858
3245
|
}
|
|
2859
3246
|
);
|
|
2860
|
-
var
|
|
3247
|
+
var styles12 = reactNative.StyleSheet.create({
|
|
2861
3248
|
base: {
|
|
2862
3249
|
flexDirection: "row",
|
|
2863
3250
|
alignItems: "center",
|
|
@@ -2941,13 +3328,13 @@ var Checkbox = react.forwardRef(function Checkbox2({
|
|
|
2941
3328
|
accessibilityRole: "checkbox",
|
|
2942
3329
|
accessibilityLabel: resolvedAccessibilityLabel,
|
|
2943
3330
|
accessibilityState: { checked: isActive, disabled },
|
|
2944
|
-
style: [
|
|
3331
|
+
style: [styles13.root, disabled && styles13.disabled, style],
|
|
2945
3332
|
children: [
|
|
2946
3333
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2947
3334
|
reactNative.View,
|
|
2948
3335
|
{
|
|
2949
3336
|
style: [
|
|
2950
|
-
|
|
3337
|
+
styles13.box,
|
|
2951
3338
|
{
|
|
2952
3339
|
backgroundColor: chrome.backgroundColor,
|
|
2953
3340
|
borderColor: chrome.borderColor
|
|
@@ -2956,12 +3343,12 @@ var Checkbox = react.forwardRef(function Checkbox2({
|
|
|
2956
3343
|
children: isActive ? /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, { size: CHECK_SIZE, color: colors.primary, strokeWidth: CHECK_STROKE }) : null
|
|
2957
3344
|
}
|
|
2958
3345
|
),
|
|
2959
|
-
labelContent != null && labelContent !== false ? typeof labelContent === "string" || typeof labelContent === "number" ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
3346
|
+
labelContent != null && labelContent !== false ? typeof labelContent === "string" || typeof labelContent === "number" ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles13.label, labelStyle], children: labelContent }) : labelContent : null
|
|
2960
3347
|
]
|
|
2961
3348
|
}
|
|
2962
3349
|
);
|
|
2963
3350
|
});
|
|
2964
|
-
var
|
|
3351
|
+
var styles13 = reactNative.StyleSheet.create({
|
|
2965
3352
|
root: {
|
|
2966
3353
|
flexDirection: "row",
|
|
2967
3354
|
alignItems: "center",
|
|
@@ -3069,13 +3456,13 @@ function RangeTriggerField({
|
|
|
3069
3456
|
value,
|
|
3070
3457
|
time
|
|
3071
3458
|
}) {
|
|
3072
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
3073
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { numberOfLines: 1, style:
|
|
3074
|
-
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
3075
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { numberOfLines: 1, style:
|
|
3076
|
-
time ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
3459
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles14.rangeField, children: [
|
|
3460
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { numberOfLines: 1, style: styles14.rangeLabel, children: label }),
|
|
3461
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles14.rangeValueRow, children: [
|
|
3462
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { numberOfLines: 1, style: styles14.rangeDate, children: value }),
|
|
3463
|
+
time ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles14.rangeTimeWrap, children: [
|
|
3077
3464
|
/* @__PURE__ */ jsxRuntime.jsx(ClockFilledIcon, { color: colors.lightGrey, size: 16 }),
|
|
3078
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
3465
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles14.rangeTime, children: time })
|
|
3079
3466
|
] }) : null
|
|
3080
3467
|
] })
|
|
3081
3468
|
] });
|
|
@@ -3241,14 +3628,14 @@ var DatePicker = react.forwardRef(
|
|
|
3241
3628
|
...rest,
|
|
3242
3629
|
ref: setRootRef,
|
|
3243
3630
|
style: [
|
|
3244
|
-
|
|
3245
|
-
usesRangeTrigger &&
|
|
3246
|
-
isOpen &&
|
|
3247
|
-
disabled &&
|
|
3631
|
+
styles14.root,
|
|
3632
|
+
usesRangeTrigger && styles14.rangeRoot,
|
|
3633
|
+
isOpen && styles14.rootOpen,
|
|
3634
|
+
disabled && styles14.disabled,
|
|
3248
3635
|
style
|
|
3249
3636
|
],
|
|
3250
3637
|
accessibilityState: { disabled, expanded: isOpen },
|
|
3251
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [
|
|
3638
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles14.triggerWrap, isOpen && styles14.triggerWrapOpen], children: [
|
|
3252
3639
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3253
3640
|
reactNative.Pressable,
|
|
3254
3641
|
{
|
|
@@ -3259,9 +3646,9 @@ var DatePicker = react.forwardRef(
|
|
|
3259
3646
|
accessibilityLabel: resolvedAccessibilityLabel,
|
|
3260
3647
|
accessibilityState: { disabled, expanded: isOpen },
|
|
3261
3648
|
style: [
|
|
3262
|
-
|
|
3263
|
-
usesRangeTrigger &&
|
|
3264
|
-
usesRangeTrigger && (usesVerticalRangeTrigger ?
|
|
3649
|
+
styles14.trigger,
|
|
3650
|
+
usesRangeTrigger && styles14.rangeTrigger,
|
|
3651
|
+
usesRangeTrigger && (usesVerticalRangeTrigger ? styles14.rangeTriggerVertical : styles14.rangeTriggerHorizontal),
|
|
3265
3652
|
{
|
|
3266
3653
|
borderColor: triggerBorderColor,
|
|
3267
3654
|
backgroundColor: usesRangeTrigger ? "transparent" : colors.grey700
|
|
@@ -3272,18 +3659,18 @@ var DatePicker = react.forwardRef(
|
|
|
3272
3659
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3273
3660
|
reactNative.View,
|
|
3274
3661
|
{
|
|
3275
|
-
style: usesVerticalRangeTrigger ?
|
|
3662
|
+
style: usesVerticalRangeTrigger ? styles14.rangeDividerVertical : styles14.rangeDividerHorizontal
|
|
3276
3663
|
}
|
|
3277
3664
|
),
|
|
3278
3665
|
/* @__PURE__ */ jsxRuntime.jsx(RangeTriggerField, { label: endLabel, time: endTime, value: endValue })
|
|
3279
3666
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3280
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
3281
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
3667
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles14.triggerText, { color: triggerTextColor }], numberOfLines: 1, children: triggerLabel }),
|
|
3668
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles14.iconSlot, children: /* @__PURE__ */ jsxRuntime.jsx(CalendarOutlineIcon, { size: ICON_SIZE7, color: colors.grey100 }) })
|
|
3282
3669
|
] })
|
|
3283
3670
|
}
|
|
3284
3671
|
),
|
|
3285
|
-
isOpen ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [
|
|
3286
|
-
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
3672
|
+
isOpen ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles14.menu, usesRangeTrigger && styles14.rangeMenu, calendarStyle], children: [
|
|
3673
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles14.calendarHeader, children: [
|
|
3287
3674
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3288
3675
|
reactNative.Pressable,
|
|
3289
3676
|
{
|
|
@@ -3291,11 +3678,11 @@ var DatePicker = react.forwardRef(
|
|
|
3291
3678
|
hitSlop: 8,
|
|
3292
3679
|
accessibilityRole: "button",
|
|
3293
3680
|
accessibilityLabel: "Previous month",
|
|
3294
|
-
style:
|
|
3681
|
+
style: styles14.navButton,
|
|
3295
3682
|
children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon, { size: NAV_ICON_SIZE, color: colors.white })
|
|
3296
3683
|
}
|
|
3297
3684
|
),
|
|
3298
|
-
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.Text, { style:
|
|
3685
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.Text, { style: styles14.monthHeading, children: [
|
|
3299
3686
|
monthNames[visibleMonth.getMonth()],
|
|
3300
3687
|
" ",
|
|
3301
3688
|
visibleMonth.getFullYear()
|
|
@@ -3307,13 +3694,13 @@ var DatePicker = react.forwardRef(
|
|
|
3307
3694
|
hitSlop: 8,
|
|
3308
3695
|
accessibilityRole: "button",
|
|
3309
3696
|
accessibilityLabel: "Next month",
|
|
3310
|
-
style:
|
|
3311
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
3697
|
+
style: styles14.navButton,
|
|
3698
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles14.navIconMirror, children: /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon, { size: NAV_ICON_SIZE, color: colors.white }) })
|
|
3312
3699
|
}
|
|
3313
3700
|
)
|
|
3314
3701
|
] }),
|
|
3315
3702
|
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { children: [
|
|
3316
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
3703
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles14.weekdayRow, children: weekdayLabels.map((weekdayLabel, index) => /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles14.dayCellWrap, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles14.weekdayText, children: weekdayLabel }) }, `${weekdayLabel}-${index}`)) }),
|
|
3317
3704
|
weeks.map((week, weekIndex) => {
|
|
3318
3705
|
let rangeHighlightStyle = null;
|
|
3319
3706
|
if (isRange && rangeValue.start && rangeValue.end) {
|
|
@@ -3350,13 +3737,13 @@ var DatePicker = react.forwardRef(
|
|
|
3350
3737
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3351
3738
|
reactNative.View,
|
|
3352
3739
|
{
|
|
3353
|
-
style: [
|
|
3740
|
+
style: [styles14.weekRow, weekIndex > 0 && styles14.weekRowSpaced],
|
|
3354
3741
|
children: [
|
|
3355
3742
|
rangeHighlightStyle ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3356
3743
|
reactNative.View,
|
|
3357
3744
|
{
|
|
3358
3745
|
pointerEvents: "none",
|
|
3359
|
-
style: [
|
|
3746
|
+
style: [styles14.rangeHighlight, rangeHighlightStyle]
|
|
3360
3747
|
}
|
|
3361
3748
|
) : null,
|
|
3362
3749
|
week.map((day, dayIndex) => {
|
|
@@ -3379,7 +3766,7 @@ var DatePicker = react.forwardRef(
|
|
|
3379
3766
|
onHoverOut: () => setHoveredDayKey((current) => current === dayKey ? null : current),
|
|
3380
3767
|
onPressIn: () => setHoveredDayKey(dayKey),
|
|
3381
3768
|
onPressOut: () => setHoveredDayKey((current) => current === dayKey ? null : current),
|
|
3382
|
-
style:
|
|
3769
|
+
style: styles14.dayCellWrap,
|
|
3383
3770
|
accessibilityRole: "button",
|
|
3384
3771
|
accessibilityLabel: formatValue(day),
|
|
3385
3772
|
accessibilityState: {
|
|
@@ -3391,14 +3778,14 @@ var DatePicker = react.forwardRef(
|
|
|
3391
3778
|
reactNative.View,
|
|
3392
3779
|
{
|
|
3393
3780
|
style: [
|
|
3394
|
-
|
|
3395
|
-
isSelectedEndpoint &&
|
|
3396
|
-
isHovered &&
|
|
3781
|
+
styles14.dayCircle,
|
|
3782
|
+
isSelectedEndpoint && styles14.dayCircleSelected,
|
|
3783
|
+
isHovered && styles14.dayCircleHovered
|
|
3397
3784
|
],
|
|
3398
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
3785
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles14.dayText, { color: dayTextColor }], children: day.getDate() })
|
|
3399
3786
|
}
|
|
3400
3787
|
),
|
|
3401
|
-
isToday && !isSelectedEndpoint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
3788
|
+
isToday && !isSelectedEndpoint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles14.todayDot }) : null
|
|
3402
3789
|
]
|
|
3403
3790
|
},
|
|
3404
3791
|
dayIndex
|
|
@@ -3416,7 +3803,7 @@ var DatePicker = react.forwardRef(
|
|
|
3416
3803
|
);
|
|
3417
3804
|
}
|
|
3418
3805
|
);
|
|
3419
|
-
var
|
|
3806
|
+
var styles14 = reactNative.StyleSheet.create({
|
|
3420
3807
|
root: {
|
|
3421
3808
|
width: DEFAULT_WIDTH,
|
|
3422
3809
|
gap: 8,
|
|
@@ -3760,13 +4147,13 @@ var Input = react.forwardRef(function Input2({
|
|
|
3760
4147
|
});
|
|
3761
4148
|
useApplyWebClassName(rootRef, className);
|
|
3762
4149
|
useApplyWebClassName(inputRef, inputClassName);
|
|
3763
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ref: rootRef, style: [
|
|
3764
|
-
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
4150
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ref: rootRef, style: [styles15.root, disabled && styles15.disabled, style], children: [
|
|
4151
|
+
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles15.label, { color: chrome.labelColor }], children: label }) : null,
|
|
3765
4152
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3766
4153
|
reactNative.View,
|
|
3767
4154
|
{
|
|
3768
4155
|
style: [
|
|
3769
|
-
|
|
4156
|
+
styles15.field,
|
|
3770
4157
|
{
|
|
3771
4158
|
height: metrics.height,
|
|
3772
4159
|
borderRadius: metrics.borderRadius,
|
|
@@ -3781,7 +4168,7 @@ var Input = react.forwardRef(function Input2({
|
|
|
3781
4168
|
fieldStyle
|
|
3782
4169
|
],
|
|
3783
4170
|
children: [
|
|
3784
|
-
hasLeftIcon ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [
|
|
4171
|
+
hasLeftIcon ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles15.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }], children: leftIconNode }) : null,
|
|
3785
4172
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3786
4173
|
reactNative.TextInput,
|
|
3787
4174
|
{
|
|
@@ -3805,11 +4192,11 @@ var Input = react.forwardRef(function Input2({
|
|
|
3805
4192
|
onBlur?.(event);
|
|
3806
4193
|
},
|
|
3807
4194
|
style: [
|
|
3808
|
-
|
|
4195
|
+
styles15.input,
|
|
3809
4196
|
metrics.text,
|
|
3810
4197
|
{ color: chrome.textColor },
|
|
3811
|
-
reactNative.Platform.OS === "web" ?
|
|
3812
|
-
reactNative.Platform.OS === "android" ?
|
|
4198
|
+
reactNative.Platform.OS === "web" ? styles15.inputWeb : null,
|
|
4199
|
+
reactNative.Platform.OS === "android" ? styles15.inputAndroid : null,
|
|
3813
4200
|
inputStyle
|
|
3814
4201
|
],
|
|
3815
4202
|
accessibilityLabel: resolvedAccessibilityLabel,
|
|
@@ -3821,20 +4208,20 @@ var Input = react.forwardRef(function Input2({
|
|
|
3821
4208
|
{
|
|
3822
4209
|
onPress: onRightIconPress,
|
|
3823
4210
|
disabled,
|
|
3824
|
-
style: [
|
|
4211
|
+
style: [styles15.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }],
|
|
3825
4212
|
accessibilityRole: "button",
|
|
3826
4213
|
accessibilityLabel: rightIconAccessibilityLabel,
|
|
3827
4214
|
hitSlop: 8,
|
|
3828
4215
|
children: rightIconNode
|
|
3829
4216
|
}
|
|
3830
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [
|
|
4217
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles15.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }], children: rightIconNode }) : null
|
|
3831
4218
|
]
|
|
3832
4219
|
}
|
|
3833
4220
|
),
|
|
3834
|
-
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
4221
|
+
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles15.hint, { color: chrome.hintColor }], children: hint }) : null
|
|
3835
4222
|
] });
|
|
3836
4223
|
});
|
|
3837
|
-
var
|
|
4224
|
+
var styles15 = reactNative.StyleSheet.create({
|
|
3838
4225
|
root: {
|
|
3839
4226
|
width: DEFAULT_WIDTH2,
|
|
3840
4227
|
gap: 8,
|
|
@@ -3871,6 +4258,207 @@ var styles13 = reactNative.StyleSheet.create({
|
|
|
3871
4258
|
...inputTypography.hint
|
|
3872
4259
|
}
|
|
3873
4260
|
});
|
|
4261
|
+
|
|
4262
|
+
// src/components/VerificationCodeInput/VerificationCodeInput.utils.ts
|
|
4263
|
+
function normalizeVerificationCode(value, length) {
|
|
4264
|
+
return value.replace(/\D/g, "").slice(0, Math.max(1, length));
|
|
4265
|
+
}
|
|
4266
|
+
function updateVerificationCode(currentCode, index, input, length) {
|
|
4267
|
+
const safeLength = Math.max(1, length);
|
|
4268
|
+
const safeIndex = Math.min(Math.max(0, index), safeLength - 1);
|
|
4269
|
+
const current = normalizeVerificationCode(currentCode, safeLength);
|
|
4270
|
+
const insertedDigits = normalizeVerificationCode(input, safeLength - safeIndex);
|
|
4271
|
+
if (!insertedDigits) {
|
|
4272
|
+
return {
|
|
4273
|
+
code: `${current.slice(0, safeIndex)}${current.slice(safeIndex + 1)}`,
|
|
4274
|
+
nextFocus: safeIndex
|
|
4275
|
+
};
|
|
4276
|
+
}
|
|
4277
|
+
return {
|
|
4278
|
+
code: `${current.slice(0, safeIndex)}${insertedDigits}${current.slice(
|
|
4279
|
+
safeIndex + insertedDigits.length
|
|
4280
|
+
)}`.slice(0, safeLength),
|
|
4281
|
+
nextFocus: Math.min(safeIndex + insertedDigits.length, safeLength - 1)
|
|
4282
|
+
};
|
|
4283
|
+
}
|
|
4284
|
+
var DEFAULT_LENGTH = 6;
|
|
4285
|
+
var DESKTOP_CELL_WIDTH = 54;
|
|
4286
|
+
var MOBILE_CELL_WIDTH = 50;
|
|
4287
|
+
var CELL_HEIGHT = 68;
|
|
4288
|
+
var DESKTOP_GAP = 12;
|
|
4289
|
+
var MOBILE_GAP = 4;
|
|
4290
|
+
var MOBILE_BREAKPOINT = 640;
|
|
4291
|
+
var VerificationCodeInput = react.forwardRef(function VerificationCodeInput2({
|
|
4292
|
+
length = DEFAULT_LENGTH,
|
|
4293
|
+
value,
|
|
4294
|
+
defaultValue = "",
|
|
4295
|
+
onValueChange,
|
|
4296
|
+
onComplete,
|
|
4297
|
+
onSubmit,
|
|
4298
|
+
error = false,
|
|
4299
|
+
disabled = false,
|
|
4300
|
+
autoFocus = false,
|
|
4301
|
+
getDigitAccessibilityLabel,
|
|
4302
|
+
style,
|
|
4303
|
+
inputStyle,
|
|
4304
|
+
className,
|
|
4305
|
+
...viewProps
|
|
4306
|
+
}, forwardedRef) {
|
|
4307
|
+
const safeLength = Math.max(1, Math.floor(length));
|
|
4308
|
+
const isControlled = typeof value === "string";
|
|
4309
|
+
const [uncontrolledValue, setUncontrolledValue] = react.useState(
|
|
4310
|
+
() => normalizeVerificationCode(defaultValue, safeLength)
|
|
4311
|
+
);
|
|
4312
|
+
const [focusedIndex, setFocusedIndex] = react.useState(null);
|
|
4313
|
+
const { width: viewportWidth } = reactNative.useWindowDimensions();
|
|
4314
|
+
const rootRef = react.useRef(null);
|
|
4315
|
+
const inputRefs = react.useRef([]);
|
|
4316
|
+
const currentCode = normalizeVerificationCode(
|
|
4317
|
+
isControlled ? value : uncontrolledValue,
|
|
4318
|
+
safeLength
|
|
4319
|
+
);
|
|
4320
|
+
useApplyWebClassName(rootRef, className);
|
|
4321
|
+
const focus = react.useCallback(
|
|
4322
|
+
(index = 0) => {
|
|
4323
|
+
const safeIndex = Math.min(Math.max(0, index), safeLength - 1);
|
|
4324
|
+
inputRefs.current[safeIndex]?.focus();
|
|
4325
|
+
},
|
|
4326
|
+
[safeLength]
|
|
4327
|
+
);
|
|
4328
|
+
const commit = react.useCallback(
|
|
4329
|
+
(nextValue) => {
|
|
4330
|
+
const normalized = normalizeVerificationCode(nextValue, safeLength);
|
|
4331
|
+
if (!isControlled) {
|
|
4332
|
+
setUncontrolledValue(normalized);
|
|
4333
|
+
}
|
|
4334
|
+
onValueChange?.(normalized);
|
|
4335
|
+
if (normalized.length === safeLength) {
|
|
4336
|
+
onComplete?.(normalized);
|
|
4337
|
+
}
|
|
4338
|
+
},
|
|
4339
|
+
[isControlled, onComplete, onValueChange, safeLength]
|
|
4340
|
+
);
|
|
4341
|
+
react.useImperativeHandle(
|
|
4342
|
+
forwardedRef,
|
|
4343
|
+
() => ({
|
|
4344
|
+
clear: () => {
|
|
4345
|
+
commit("");
|
|
4346
|
+
focus(0);
|
|
4347
|
+
},
|
|
4348
|
+
focus
|
|
4349
|
+
}),
|
|
4350
|
+
[commit, focus]
|
|
4351
|
+
);
|
|
4352
|
+
const handleChange = (index, input) => {
|
|
4353
|
+
const update = updateVerificationCode(currentCode, index, input, safeLength);
|
|
4354
|
+
commit(update.code);
|
|
4355
|
+
focus(update.nextFocus);
|
|
4356
|
+
};
|
|
4357
|
+
const handleKeyPress = (index, event) => {
|
|
4358
|
+
const key = event.nativeEvent.key;
|
|
4359
|
+
if (key === "Backspace" && !currentCode[index] && index > 0) {
|
|
4360
|
+
const update = updateVerificationCode(currentCode, index - 1, "", safeLength);
|
|
4361
|
+
commit(update.code);
|
|
4362
|
+
focus(index - 1);
|
|
4363
|
+
return;
|
|
4364
|
+
}
|
|
4365
|
+
if (key === "ArrowLeft" && index > 0) {
|
|
4366
|
+
focus(index - 1);
|
|
4367
|
+
}
|
|
4368
|
+
if (key === "ArrowRight" && index < safeLength - 1) {
|
|
4369
|
+
focus(index + 1);
|
|
4370
|
+
}
|
|
4371
|
+
};
|
|
4372
|
+
const mobile = viewportWidth < MOBILE_BREAKPOINT;
|
|
4373
|
+
const cellWidth = mobile ? MOBILE_CELL_WIDTH : DESKTOP_CELL_WIDTH;
|
|
4374
|
+
const cellGap = mobile ? MOBILE_GAP : DESKTOP_GAP;
|
|
4375
|
+
const rootWidth = cellWidth * safeLength + cellGap * Math.max(0, safeLength - 1);
|
|
4376
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4377
|
+
reactNative.View,
|
|
4378
|
+
{
|
|
4379
|
+
...viewProps,
|
|
4380
|
+
ref: rootRef,
|
|
4381
|
+
style: [
|
|
4382
|
+
styles16.root,
|
|
4383
|
+
{ width: rootWidth, maxWidth: "100%", gap: cellGap },
|
|
4384
|
+
disabled && styles16.disabled,
|
|
4385
|
+
style
|
|
4386
|
+
],
|
|
4387
|
+
children: Array.from({ length: safeLength }, (_, index) => {
|
|
4388
|
+
const active = focusedIndex === index;
|
|
4389
|
+
const borderColor = error ? colors.redHover : active ? colors.primary : colors.grey600;
|
|
4390
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4391
|
+
reactNative.TextInput,
|
|
4392
|
+
{
|
|
4393
|
+
ref: (element) => {
|
|
4394
|
+
inputRefs.current[index] = element;
|
|
4395
|
+
},
|
|
4396
|
+
accessibilityLabel: getDigitAccessibilityLabel?.(index) ?? `Verification code digit ${index + 1}`,
|
|
4397
|
+
accessibilityState: { disabled },
|
|
4398
|
+
autoComplete: index === 0 ? "one-time-code" : "off",
|
|
4399
|
+
autoFocus: autoFocus && index === 0,
|
|
4400
|
+
caretHidden: reactNative.Platform.OS !== "web",
|
|
4401
|
+
editable: !disabled,
|
|
4402
|
+
inputMode: "numeric",
|
|
4403
|
+
keyboardType: "number-pad",
|
|
4404
|
+
maxLength: safeLength,
|
|
4405
|
+
onBlur: () => setFocusedIndex((current) => current === index ? null : current),
|
|
4406
|
+
onChangeText: (text) => handleChange(index, text),
|
|
4407
|
+
onFocus: () => setFocusedIndex(index),
|
|
4408
|
+
onKeyPress: (event) => handleKeyPress(index, event),
|
|
4409
|
+
onSubmitEditing: () => onSubmit?.(currentCode),
|
|
4410
|
+
selectTextOnFocus: true,
|
|
4411
|
+
style: [
|
|
4412
|
+
styles16.cell,
|
|
4413
|
+
{
|
|
4414
|
+
width: cellWidth,
|
|
4415
|
+
height: CELL_HEIGHT,
|
|
4416
|
+
borderColor,
|
|
4417
|
+
color: error ? colors.red : colors.white
|
|
4418
|
+
},
|
|
4419
|
+
reactNative.Platform.OS === "web" ? styles16.cellWeb : null,
|
|
4420
|
+
reactNative.Platform.OS === "android" ? styles16.cellAndroid : null,
|
|
4421
|
+
inputStyle
|
|
4422
|
+
],
|
|
4423
|
+
value: currentCode[index] ?? ""
|
|
4424
|
+
},
|
|
4425
|
+
index
|
|
4426
|
+
);
|
|
4427
|
+
})
|
|
4428
|
+
}
|
|
4429
|
+
);
|
|
4430
|
+
});
|
|
4431
|
+
var styles16 = reactNative.StyleSheet.create({
|
|
4432
|
+
root: {
|
|
4433
|
+
minWidth: 0,
|
|
4434
|
+
alignSelf: "center",
|
|
4435
|
+
flexDirection: "row",
|
|
4436
|
+
justifyContent: "center"
|
|
4437
|
+
},
|
|
4438
|
+
disabled: {
|
|
4439
|
+
opacity: 0.6
|
|
4440
|
+
},
|
|
4441
|
+
cell: {
|
|
4442
|
+
minWidth: 0,
|
|
4443
|
+
flexGrow: 0,
|
|
4444
|
+
flexShrink: 0,
|
|
4445
|
+
borderWidth: 1,
|
|
4446
|
+
borderRadius: 16,
|
|
4447
|
+
padding: 0,
|
|
4448
|
+
margin: 0,
|
|
4449
|
+
textAlign: "center",
|
|
4450
|
+
fontFamily: fonts.sans,
|
|
4451
|
+
fontSize: 22,
|
|
4452
|
+
fontWeight: "600",
|
|
4453
|
+
lineHeight: 22
|
|
4454
|
+
},
|
|
4455
|
+
cellWeb: {
|
|
4456
|
+
outlineStyle: "none"
|
|
4457
|
+
},
|
|
4458
|
+
cellAndroid: {
|
|
4459
|
+
includeFontPadding: false
|
|
4460
|
+
}
|
|
4461
|
+
});
|
|
3874
4462
|
var DEFAULT_WIDTH3 = 308;
|
|
3875
4463
|
var TRIGGER_HEIGHT2 = 44;
|
|
3876
4464
|
var TRIGGER_RADIUS2 = 60;
|
|
@@ -3950,25 +4538,25 @@ function MultiValueChips({ options, disabled, onRemove }) {
|
|
|
3950
4538
|
const next = Math.ceil(event.nativeEvent.layout.width);
|
|
3951
4539
|
setEllipsisWidth((current) => current === next ? current : next);
|
|
3952
4540
|
};
|
|
3953
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
3954
|
-
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { pointerEvents: "none", style:
|
|
4541
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles17.multiValueRoot, children: [
|
|
4542
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { pointerEvents: "none", style: styles17.measureRow, children: [
|
|
3955
4543
|
options.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3956
4544
|
reactNative.View,
|
|
3957
4545
|
{
|
|
3958
|
-
style:
|
|
4546
|
+
style: styles17.chip,
|
|
3959
4547
|
onLayout: (event) => handleChipLayout(option.value, event),
|
|
3960
4548
|
children: [
|
|
3961
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
3962
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
4549
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles17.chipLabel, numberOfLines: 1, children: option.label }),
|
|
4550
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles17.chipRemove, children: "\xD7" })
|
|
3963
4551
|
]
|
|
3964
4552
|
},
|
|
3965
4553
|
`measure-${option.value}`
|
|
3966
4554
|
)),
|
|
3967
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
4555
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles17.ellipsis, onLayout: handleEllipsisLayout, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles17.ellipsisText, children: "..." }) })
|
|
3968
4556
|
] }),
|
|
3969
|
-
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
3970
|
-
visible.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
3971
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
4557
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles17.chipsRow, onLayout: handleContainerLayout, children: [
|
|
4558
|
+
visible.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles17.chip, children: [
|
|
4559
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles17.chipLabel, numberOfLines: 1, children: option.label }),
|
|
3972
4560
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3973
4561
|
reactNative.Pressable,
|
|
3974
4562
|
{
|
|
@@ -3980,11 +4568,11 @@ function MultiValueChips({ options, disabled, onRemove }) {
|
|
|
3980
4568
|
hitSlop: 6,
|
|
3981
4569
|
accessibilityRole: "button",
|
|
3982
4570
|
accessibilityLabel: `Remove ${option.label}`,
|
|
3983
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
4571
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles17.chipRemove, children: "\xD7" })
|
|
3984
4572
|
}
|
|
3985
4573
|
)
|
|
3986
4574
|
] }, option.value)),
|
|
3987
|
-
hasOverflow ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
4575
|
+
hasOverflow ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles17.ellipsis, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles17.ellipsisText, children: "..." }) }) : null
|
|
3988
4576
|
] })
|
|
3989
4577
|
] });
|
|
3990
4578
|
}
|
|
@@ -4208,11 +4796,11 @@ var Select = react.forwardRef(
|
|
|
4208
4796
|
{
|
|
4209
4797
|
...rest,
|
|
4210
4798
|
ref: setRootRef,
|
|
4211
|
-
style: [
|
|
4799
|
+
style: [styles17.root, isOpen && styles17.rootOpen, disabled && styles17.disabled, style],
|
|
4212
4800
|
accessibilityState: { disabled, expanded: isOpen },
|
|
4213
4801
|
children: [
|
|
4214
|
-
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
4215
|
-
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [
|
|
4802
|
+
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles17.label, { color: labelColor }], children: label }) : null,
|
|
4803
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles17.triggerWrap, isOpen && styles17.triggerWrapOpen], children: [
|
|
4216
4804
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4217
4805
|
reactNative.Pressable,
|
|
4218
4806
|
{
|
|
@@ -4223,29 +4811,29 @@ var Select = react.forwardRef(
|
|
|
4223
4811
|
accessibilityLabel: resolvedAccessibilityLabel,
|
|
4224
4812
|
accessibilityState: { disabled, expanded: isOpen },
|
|
4225
4813
|
style: [
|
|
4226
|
-
|
|
4814
|
+
styles17.trigger,
|
|
4227
4815
|
{
|
|
4228
4816
|
borderColor: triggerBorderColor,
|
|
4229
4817
|
backgroundColor: colors.grey700
|
|
4230
4818
|
}
|
|
4231
4819
|
],
|
|
4232
4820
|
children: [
|
|
4233
|
-
hasLeftIcon ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
4234
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
4821
|
+
hasLeftIcon ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles17.iconSlot, children: leftIconNode }) : null,
|
|
4822
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles17.triggerContent, children: multiple && hasValue ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4235
4823
|
MultiValueChips,
|
|
4236
4824
|
{
|
|
4237
4825
|
options: selectedOptions,
|
|
4238
4826
|
disabled,
|
|
4239
4827
|
onRemove: handleRemoveChip
|
|
4240
4828
|
}
|
|
4241
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
4242
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [
|
|
4829
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles17.triggerText, { color: triggerTextColor }], numberOfLines: 1, children: multiple ? placeholder : singleLabel }) }),
|
|
4830
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: [styles17.iconSlot, isOpen && styles17.chevronOpen], children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, { size: ICON_SIZE8, color: isOpen ? colors.primary : colors.grey100 }) })
|
|
4243
4831
|
]
|
|
4244
4832
|
}
|
|
4245
4833
|
),
|
|
4246
|
-
isOpen ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
4247
|
-
showSearch ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
4248
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
4834
|
+
isOpen ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles17.menu, children: [
|
|
4835
|
+
showSearch ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles17.searchField, children: [
|
|
4836
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles17.iconSlot, children: /* @__PURE__ */ jsxRuntime.jsx(SearchIcon, { size: ICON_SIZE8, color: colors.grey100 }) }),
|
|
4249
4837
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4250
4838
|
reactNative.TextInput,
|
|
4251
4839
|
{
|
|
@@ -4256,9 +4844,9 @@ var Select = react.forwardRef(
|
|
|
4256
4844
|
placeholder: searchPlaceholder,
|
|
4257
4845
|
placeholderTextColor: colors.grey100,
|
|
4258
4846
|
style: [
|
|
4259
|
-
|
|
4260
|
-
reactNative.Platform.OS === "web" ?
|
|
4261
|
-
reactNative.Platform.OS === "android" ?
|
|
4847
|
+
styles17.searchInput,
|
|
4848
|
+
reactNative.Platform.OS === "web" ? styles17.searchInputWeb : null,
|
|
4849
|
+
reactNative.Platform.OS === "android" ? styles17.searchInputAndroid : null
|
|
4262
4850
|
],
|
|
4263
4851
|
accessibilityLabel: searchPlaceholder
|
|
4264
4852
|
}
|
|
@@ -4267,12 +4855,12 @@ var Select = react.forwardRef(
|
|
|
4267
4855
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4268
4856
|
reactNative.ScrollView,
|
|
4269
4857
|
{
|
|
4270
|
-
style:
|
|
4271
|
-
contentContainerStyle:
|
|
4858
|
+
style: styles17.optionList,
|
|
4859
|
+
contentContainerStyle: styles17.optionListContent,
|
|
4272
4860
|
keyboardShouldPersistTaps: "handled",
|
|
4273
4861
|
showsVerticalScrollIndicator: false,
|
|
4274
4862
|
children: [
|
|
4275
|
-
loading ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
4863
|
+
loading ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles17.statusRow, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles17.statusText, children: "Loading..." }) }) : filteredOptions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles17.statusRow, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles17.statusText, children: emptyText }) }) : null,
|
|
4276
4864
|
!loading && filteredOptions.map((option) => {
|
|
4277
4865
|
const isSelected = selectedValues.includes(option.value);
|
|
4278
4866
|
const isHovered = hoveredValue === option.value;
|
|
@@ -4289,14 +4877,14 @@ var Select = react.forwardRef(
|
|
|
4289
4877
|
accessibilityRole: multiple ? "checkbox" : "button",
|
|
4290
4878
|
accessibilityState: { selected: isSelected, checked: isSelected, disabled },
|
|
4291
4879
|
style: [
|
|
4292
|
-
|
|
4880
|
+
styles17.item,
|
|
4293
4881
|
{
|
|
4294
4882
|
backgroundColor: itemBackground(visualState)
|
|
4295
4883
|
}
|
|
4296
4884
|
],
|
|
4297
4885
|
children: [
|
|
4298
|
-
multiple ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { pointerEvents: "none", style:
|
|
4299
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style:
|
|
4886
|
+
multiple ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { pointerEvents: "none", style: styles17.itemCheckbox, children: /* @__PURE__ */ jsxRuntime.jsx(Checkbox, { value: isSelected, variant: "light" }) }) : null,
|
|
4887
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles17.itemLabel, numberOfLines: 1, children: option.label })
|
|
4300
4888
|
]
|
|
4301
4889
|
},
|
|
4302
4890
|
option.value
|
|
@@ -4307,13 +4895,13 @@ var Select = react.forwardRef(
|
|
|
4307
4895
|
)
|
|
4308
4896
|
] }) : null
|
|
4309
4897
|
] }),
|
|
4310
|
-
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
4898
|
+
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles17.hint, { color: hintColor }], children: hint }) : null
|
|
4311
4899
|
]
|
|
4312
4900
|
}
|
|
4313
4901
|
);
|
|
4314
4902
|
}
|
|
4315
4903
|
);
|
|
4316
|
-
var
|
|
4904
|
+
var styles17 = reactNative.StyleSheet.create({
|
|
4317
4905
|
root: {
|
|
4318
4906
|
width: DEFAULT_WIDTH3,
|
|
4319
4907
|
gap: 8,
|
|
@@ -4575,13 +5163,13 @@ var Textarea = react.forwardRef(function Textarea2({
|
|
|
4575
5163
|
const resolvedAccessibilityLabel = accessibilityLabel ?? (showLabel ? void 0 : label);
|
|
4576
5164
|
useApplyWebClassName(rootRef, className);
|
|
4577
5165
|
useApplyWebClassName(inputRef, inputClassName);
|
|
4578
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ref: rootRef, style: [
|
|
4579
|
-
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
5166
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ref: rootRef, style: [styles18.root, disabled && styles18.disabled, style], children: [
|
|
5167
|
+
showLabel && label ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles18.label, { color: chrome.labelColor }], children: label }) : null,
|
|
4580
5168
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4581
5169
|
reactNative.View,
|
|
4582
5170
|
{
|
|
4583
5171
|
style: [
|
|
4584
|
-
|
|
5172
|
+
styles18.field,
|
|
4585
5173
|
{
|
|
4586
5174
|
borderColor: chrome.borderColor,
|
|
4587
5175
|
backgroundColor: chrome.backgroundColor
|
|
@@ -4613,11 +5201,11 @@ var Textarea = react.forwardRef(function Textarea2({
|
|
|
4613
5201
|
onBlur?.(event);
|
|
4614
5202
|
},
|
|
4615
5203
|
style: [
|
|
4616
|
-
|
|
5204
|
+
styles18.input,
|
|
4617
5205
|
textareaTypography.field,
|
|
4618
5206
|
{ color: chrome.textColor },
|
|
4619
|
-
reactNative.Platform.OS === "web" ?
|
|
4620
|
-
reactNative.Platform.OS === "android" ?
|
|
5207
|
+
reactNative.Platform.OS === "web" ? styles18.inputWeb : null,
|
|
5208
|
+
reactNative.Platform.OS === "android" ? styles18.inputAndroid : null,
|
|
4621
5209
|
inputStyle
|
|
4622
5210
|
],
|
|
4623
5211
|
accessibilityLabel: resolvedAccessibilityLabel,
|
|
@@ -4626,10 +5214,10 @@ var Textarea = react.forwardRef(function Textarea2({
|
|
|
4626
5214
|
)
|
|
4627
5215
|
}
|
|
4628
5216
|
),
|
|
4629
|
-
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
5217
|
+
showHint && hint ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles18.hint, { color: chrome.hintColor }], children: hint }) : null
|
|
4630
5218
|
] });
|
|
4631
5219
|
});
|
|
4632
|
-
var
|
|
5220
|
+
var styles18 = reactNative.StyleSheet.create({
|
|
4633
5221
|
root: {
|
|
4634
5222
|
width: DEFAULT_WIDTH4,
|
|
4635
5223
|
gap: 8,
|
|
@@ -4669,9 +5257,9 @@ var styles15 = reactNative.StyleSheet.create({
|
|
|
4669
5257
|
var TRACK_WIDTH = 44;
|
|
4670
5258
|
var TRACK_HEIGHT = 24;
|
|
4671
5259
|
var TRACK_RADIUS = 43;
|
|
4672
|
-
var
|
|
4673
|
-
var THUMB_SIZE = TRACK_HEIGHT -
|
|
4674
|
-
var THUMB_TRAVEL = TRACK_WIDTH -
|
|
5260
|
+
var TRACK_PADDING2 = 4;
|
|
5261
|
+
var THUMB_SIZE = TRACK_HEIGHT - TRACK_PADDING2 * 2;
|
|
5262
|
+
var THUMB_TRAVEL = TRACK_WIDTH - TRACK_PADDING2 * 2 - THUMB_SIZE;
|
|
4675
5263
|
var ANIMATION_DURATION2 = 300;
|
|
4676
5264
|
var Toggle = react.forwardRef(function Toggle2({
|
|
4677
5265
|
value,
|
|
@@ -4729,13 +5317,13 @@ var Toggle = react.forwardRef(function Toggle2({
|
|
|
4729
5317
|
accessibilityRole: "switch",
|
|
4730
5318
|
accessibilityLabel: resolvedAccessibilityLabel,
|
|
4731
5319
|
accessibilityState: { checked: isActive, disabled },
|
|
4732
|
-
style: [
|
|
5320
|
+
style: [styles19.pressable, disabled && styles19.disabled, style],
|
|
4733
5321
|
children: [
|
|
4734
5322
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4735
5323
|
reactNative.Animated.View,
|
|
4736
5324
|
{
|
|
4737
5325
|
style: [
|
|
4738
|
-
|
|
5326
|
+
styles19.track,
|
|
4739
5327
|
{
|
|
4740
5328
|
backgroundColor: trackBackgroundColor
|
|
4741
5329
|
}
|
|
@@ -4744,7 +5332,7 @@ var Toggle = react.forwardRef(function Toggle2({
|
|
|
4744
5332
|
reactNative.Animated.View,
|
|
4745
5333
|
{
|
|
4746
5334
|
style: [
|
|
4747
|
-
|
|
5335
|
+
styles19.thumb,
|
|
4748
5336
|
{
|
|
4749
5337
|
transform: [{ translateX: thumbTranslateX }]
|
|
4750
5338
|
}
|
|
@@ -4753,12 +5341,12 @@ var Toggle = react.forwardRef(function Toggle2({
|
|
|
4753
5341
|
)
|
|
4754
5342
|
}
|
|
4755
5343
|
),
|
|
4756
|
-
labelContent != null && labelContent !== false ? typeof labelContent === "string" || typeof labelContent === "number" ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [
|
|
5344
|
+
labelContent != null && labelContent !== false ? typeof labelContent === "string" || typeof labelContent === "number" ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: [styles19.label, labelStyle], children: labelContent }) : labelContent : null
|
|
4757
5345
|
]
|
|
4758
5346
|
}
|
|
4759
5347
|
);
|
|
4760
5348
|
});
|
|
4761
|
-
var
|
|
5349
|
+
var styles19 = reactNative.StyleSheet.create({
|
|
4762
5350
|
pressable: {
|
|
4763
5351
|
flexDirection: "row",
|
|
4764
5352
|
alignItems: "center",
|
|
@@ -4772,7 +5360,7 @@ var styles16 = reactNative.StyleSheet.create({
|
|
|
4772
5360
|
width: TRACK_WIDTH,
|
|
4773
5361
|
height: TRACK_HEIGHT,
|
|
4774
5362
|
borderRadius: TRACK_RADIUS,
|
|
4775
|
-
padding:
|
|
5363
|
+
padding: TRACK_PADDING2,
|
|
4776
5364
|
justifyContent: "center"
|
|
4777
5365
|
},
|
|
4778
5366
|
thumb: {
|
|
@@ -4833,21 +5421,21 @@ var RatingInput = react.forwardRef(
|
|
|
4833
5421
|
{
|
|
4834
5422
|
...rest,
|
|
4835
5423
|
ref: setContainerRef,
|
|
4836
|
-
style: [
|
|
5424
|
+
style: [styles20.root, disabled && styles20.disabled, style],
|
|
4837
5425
|
children: [
|
|
4838
|
-
showValue ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { numberOfLines: 1, style: [
|
|
5426
|
+
showValue ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { numberOfLines: 1, style: [styles20.value, valueStyle], children: selectedValue.toFixed(precision) }) : null,
|
|
4839
5427
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4840
5428
|
reactNative.View,
|
|
4841
5429
|
{
|
|
4842
5430
|
accessibilityRole: readOnly ? "image" : "radiogroup",
|
|
4843
5431
|
accessibilityLabel: resolvedAccessibilityLabel,
|
|
4844
5432
|
accessibilityState: { disabled },
|
|
4845
|
-
style: [
|
|
5433
|
+
style: [styles20.stars, { gap: resolvedStarGap }],
|
|
4846
5434
|
children: Array.from({ length: STAR_COUNT }, (_, index) => {
|
|
4847
5435
|
const starValue = index + 1;
|
|
4848
5436
|
const isSelected = starValue <= selectedStarCount;
|
|
4849
5437
|
const icon = isSelected ? /* @__PURE__ */ jsxRuntime.jsx(StarFilledIcon, { size: iconWidth, height: iconHeight }) : /* @__PURE__ */ jsxRuntime.jsx(StarIcon, { size: iconWidth, height: iconHeight });
|
|
4850
|
-
const itemStyle = [
|
|
5438
|
+
const itemStyle = [styles20.starItem, { width: size, height: size }];
|
|
4851
5439
|
if (readOnly) {
|
|
4852
5440
|
return /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: itemStyle, children: icon }, starValue);
|
|
4853
5441
|
}
|
|
@@ -4873,7 +5461,7 @@ var RatingInput = react.forwardRef(
|
|
|
4873
5461
|
);
|
|
4874
5462
|
}
|
|
4875
5463
|
);
|
|
4876
|
-
var
|
|
5464
|
+
var styles20 = reactNative.StyleSheet.create({
|
|
4877
5465
|
root: {
|
|
4878
5466
|
flexDirection: "row",
|
|
4879
5467
|
alignItems: "center",
|
|
@@ -4897,7 +5485,7 @@ var styles17 = reactNative.StyleSheet.create({
|
|
|
4897
5485
|
opacity: 0.5
|
|
4898
5486
|
}
|
|
4899
5487
|
});
|
|
4900
|
-
var
|
|
5488
|
+
var CARD_WIDTH2 = 370;
|
|
4901
5489
|
var CARD_MIN_HEIGHT = 173;
|
|
4902
5490
|
var AVATAR_SIZE = 44;
|
|
4903
5491
|
var CommentCard = react.forwardRef(
|
|
@@ -4937,19 +5525,19 @@ var CommentCard = react.forwardRef(
|
|
|
4937
5525
|
setExpanded(next);
|
|
4938
5526
|
onExpandedChange?.(next);
|
|
4939
5527
|
};
|
|
4940
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ...rest, ref: setContainerRef, style: [
|
|
4941
|
-
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
4942
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
5528
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { ...rest, ref: setContainerRef, style: [styles21.root, style], children: [
|
|
5529
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles21.header, children: [
|
|
5530
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles21.avatar, children: hasImage ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4943
5531
|
reactNative.Image,
|
|
4944
5532
|
{
|
|
4945
5533
|
source: { uri: imageUrl ?? void 0 },
|
|
4946
|
-
style:
|
|
5534
|
+
style: styles21.avatarImage,
|
|
4947
5535
|
onError: () => setImageFailed(true)
|
|
4948
5536
|
}
|
|
4949
5537
|
) : /* @__PURE__ */ jsxRuntime.jsx(UserIcon, { size: 20, color: colors.primary }) }),
|
|
4950
|
-
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
4951
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { numberOfLines: 1, style:
|
|
4952
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { numberOfLines: 1, style:
|
|
5538
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles21.identity, children: [
|
|
5539
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { numberOfLines: 1, style: styles21.name, children: userName }),
|
|
5540
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { numberOfLines: 1, style: styles21.date, children: date })
|
|
4953
5541
|
] }),
|
|
4954
5542
|
/* @__PURE__ */ jsxRuntime.jsx(RatingInput, { value: rating, readOnly: true, showValue: false, size: 16 })
|
|
4955
5543
|
] }),
|
|
@@ -4957,7 +5545,7 @@ var CommentCard = react.forwardRef(
|
|
|
4957
5545
|
reactNative.Text,
|
|
4958
5546
|
{
|
|
4959
5547
|
numberOfLines: expanded ? void 0 : maxCommentLines,
|
|
4960
|
-
style: [
|
|
5548
|
+
style: [styles21.comment, commentStyle],
|
|
4961
5549
|
children: commentText
|
|
4962
5550
|
}
|
|
4963
5551
|
),
|
|
@@ -4970,14 +5558,14 @@ var CommentCard = react.forwardRef(
|
|
|
4970
5558
|
hitSlop: 6,
|
|
4971
5559
|
onHoverIn: () => setActionHovered(true),
|
|
4972
5560
|
onHoverOut: () => setActionHovered(false),
|
|
4973
|
-
style:
|
|
5561
|
+
style: styles21.action,
|
|
4974
5562
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4975
5563
|
reactNative.Text,
|
|
4976
5564
|
{
|
|
4977
5565
|
style: [
|
|
4978
|
-
|
|
4979
|
-
expanded &&
|
|
4980
|
-
actionHovered && (expanded ?
|
|
5566
|
+
styles21.actionText,
|
|
5567
|
+
expanded && styles21.closeActionText,
|
|
5568
|
+
actionHovered && (expanded ? styles21.closeActionTextHovered : styles21.openActionTextHovered)
|
|
4981
5569
|
],
|
|
4982
5570
|
children: expanded ? readLessLabel : readMoreLabel
|
|
4983
5571
|
}
|
|
@@ -4987,9 +5575,9 @@ var CommentCard = react.forwardRef(
|
|
|
4987
5575
|
] });
|
|
4988
5576
|
}
|
|
4989
5577
|
);
|
|
4990
|
-
var
|
|
5578
|
+
var styles21 = reactNative.StyleSheet.create({
|
|
4991
5579
|
root: {
|
|
4992
|
-
width:
|
|
5580
|
+
width: CARD_WIDTH2,
|
|
4993
5581
|
minHeight: CARD_MIN_HEIGHT,
|
|
4994
5582
|
padding: 16,
|
|
4995
5583
|
gap: 12,
|
|
@@ -5426,7 +6014,7 @@ var Range = react.forwardRef(function Range2({
|
|
|
5426
6014
|
...rest,
|
|
5427
6015
|
ref: setRootRef,
|
|
5428
6016
|
onLayout,
|
|
5429
|
-
style: [
|
|
6017
|
+
style: [styles22.root, disabled && styles22.disabled, style],
|
|
5430
6018
|
children: [
|
|
5431
6019
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5432
6020
|
reactNative.Pressable,
|
|
@@ -5440,16 +6028,16 @@ var Range = react.forwardRef(function Range2({
|
|
|
5440
6028
|
updateNearestFromTrack(event.nativeEvent.offsetX);
|
|
5441
6029
|
} : void 0,
|
|
5442
6030
|
onPress: reactNative.Platform.OS === "web" ? void 0 : handleTrackPress,
|
|
5443
|
-
style:
|
|
6031
|
+
style: styles22.sliderPlane,
|
|
5444
6032
|
tabIndex: -1,
|
|
5445
6033
|
children: [
|
|
5446
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { pointerEvents: "none", style:
|
|
6034
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { pointerEvents: "none", style: styles22.track }),
|
|
5447
6035
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5448
6036
|
reactNative.View,
|
|
5449
6037
|
{
|
|
5450
6038
|
pointerEvents: "none",
|
|
5451
6039
|
style: [
|
|
5452
|
-
|
|
6040
|
+
styles22.activeTrack,
|
|
5453
6041
|
{
|
|
5454
6042
|
left: TRACK_HORIZONTAL_INSET + fromOffset,
|
|
5455
6043
|
width: toOffset - fromOffset + THUMB_SIZE2
|
|
@@ -5491,9 +6079,9 @@ var Range = react.forwardRef(function Range2({
|
|
|
5491
6079
|
onAccessibilityAction: (event) => handleAccessibilityAction(event, effectiveFrom, updateFromInput),
|
|
5492
6080
|
pointerEvents: disabled ? "none" : "auto",
|
|
5493
6081
|
style: [
|
|
5494
|
-
|
|
5495
|
-
reactNative.Platform.OS === "web" &&
|
|
5496
|
-
focusedThumb === "from" && reactNative.Platform.OS === "web" &&
|
|
6082
|
+
styles22.thumb,
|
|
6083
|
+
reactNative.Platform.OS === "web" && styles22.thumbWeb,
|
|
6084
|
+
focusedThumb === "from" && reactNative.Platform.OS === "web" && styles22.thumbFocusedWeb,
|
|
5497
6085
|
{ left: TRACK_HORIZONTAL_INSET + fromOffset }
|
|
5498
6086
|
],
|
|
5499
6087
|
tabIndex: disabled ? -1 : 0
|
|
@@ -5533,9 +6121,9 @@ var Range = react.forwardRef(function Range2({
|
|
|
5533
6121
|
onAccessibilityAction: (event) => handleAccessibilityAction(event, effectiveTo, updateToInput),
|
|
5534
6122
|
pointerEvents: disabled ? "none" : "auto",
|
|
5535
6123
|
style: [
|
|
5536
|
-
|
|
5537
|
-
reactNative.Platform.OS === "web" &&
|
|
5538
|
-
focusedThumb === "to" && reactNative.Platform.OS === "web" &&
|
|
6124
|
+
styles22.thumb,
|
|
6125
|
+
reactNative.Platform.OS === "web" && styles22.thumbWeb,
|
|
6126
|
+
focusedThumb === "to" && reactNative.Platform.OS === "web" && styles22.thumbFocusedWeb,
|
|
5539
6127
|
{ left: TRACK_HORIZONTAL_INSET + toOffset }
|
|
5540
6128
|
],
|
|
5541
6129
|
tabIndex: disabled ? -1 : 0
|
|
@@ -5544,7 +6132,7 @@ var Range = react.forwardRef(function Range2({
|
|
|
5544
6132
|
]
|
|
5545
6133
|
}
|
|
5546
6134
|
),
|
|
5547
|
-
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style:
|
|
6135
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles22.inputs, children: [
|
|
5548
6136
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5549
6137
|
RangeInput,
|
|
5550
6138
|
{
|
|
@@ -5595,7 +6183,7 @@ function RangeInput({
|
|
|
5595
6183
|
placeholder,
|
|
5596
6184
|
value
|
|
5597
6185
|
}) {
|
|
5598
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [
|
|
6186
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: [styles22.inputField, focused && styles22.inputFieldFocused], children: [
|
|
5599
6187
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5600
6188
|
reactNative.TextInput,
|
|
5601
6189
|
{
|
|
@@ -5611,15 +6199,15 @@ function RangeInput({
|
|
|
5611
6199
|
placeholder,
|
|
5612
6200
|
placeholderTextColor: colors.grey150,
|
|
5613
6201
|
returnKeyType: "done",
|
|
5614
|
-
style: [
|
|
6202
|
+
style: [styles22.input, reactNative.Platform.OS === "web" && styles22.inputWeb],
|
|
5615
6203
|
tabIndex: disabled ? -1 : void 0,
|
|
5616
6204
|
value
|
|
5617
6205
|
}
|
|
5618
6206
|
),
|
|
5619
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style:
|
|
6207
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles22.currencySlot, children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles22.currency, children: currency }) })
|
|
5620
6208
|
] });
|
|
5621
6209
|
}
|
|
5622
|
-
var
|
|
6210
|
+
var styles22 = reactNative.StyleSheet.create({
|
|
5623
6211
|
root: {
|
|
5624
6212
|
width: DEFAULT_WIDTH5,
|
|
5625
6213
|
gap: 15,
|
|
@@ -5729,6 +6317,7 @@ exports.AppleIcon = AppleIcon;
|
|
|
5729
6317
|
exports.AreaExpandIcon = AreaExpandIcon;
|
|
5730
6318
|
exports.ArrowRightIcon = ArrowRightIcon;
|
|
5731
6319
|
exports.Avatar = Avatar;
|
|
6320
|
+
exports.AvatarSimple = AvatarSimple;
|
|
5732
6321
|
exports.BRAND_LOGO_COLORS = BRAND_LOGO_COLORS;
|
|
5733
6322
|
exports.BRAND_LOGO_DEFAULT_HEIGHT = BRAND_LOGO_DEFAULT_HEIGHT;
|
|
5734
6323
|
exports.BRAND_LOGO_DEFAULT_WIDTH = BRAND_LOGO_DEFAULT_WIDTH;
|
|
@@ -5797,6 +6386,7 @@ exports.Select = Select;
|
|
|
5797
6386
|
exports.SettingsIcon = SettingsIcon;
|
|
5798
6387
|
exports.ShareIcon = ShareIcon;
|
|
5799
6388
|
exports.ShowIcon = ShowIcon;
|
|
6389
|
+
exports.Sidebar = Sidebar;
|
|
5800
6390
|
exports.SidebarIcon = SidebarIcon;
|
|
5801
6391
|
exports.SortIcon = SortIcon;
|
|
5802
6392
|
exports.StarFilledIcon = StarFilledIcon;
|
|
@@ -5807,6 +6397,7 @@ exports.Toggle = Toggle;
|
|
|
5807
6397
|
exports.TooltipArrowIcon = TooltipArrowIcon;
|
|
5808
6398
|
exports.UserIcon = UserIcon;
|
|
5809
6399
|
exports.UsersAltIcon = UsersAltIcon;
|
|
6400
|
+
exports.VerificationCodeInput = VerificationCodeInput;
|
|
5810
6401
|
exports.VideoIcon = VideoIcon;
|
|
5811
6402
|
exports.WhatsAppIcon = WhatsAppIcon;
|
|
5812
6403
|
exports.avatarTypography = avatarTypography;
|