@boostdev/design-system-react-native 0.4.0 → 0.5.1
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/CHANGELOG.md +65 -0
- package/README.md +10 -0
- package/dist/index.cjs +854 -764
- package/dist/index.d.cts +35 -4
- package/dist/index.d.ts +35 -4
- package/dist/index.js +645 -659
- package/package.json +1 -1
- package/src/components/interaction/Button/Button.mdx +5 -1
- package/src/components/interaction/Button/Button.spec.tsx +40 -0
- package/src/components/interaction/Button/Button.tsx +15 -8
- package/src/components/interaction/Dialog/Dialog.tsx +2 -9
- package/src/components/interaction/DropdownMenu/DropdownMenu.tsx +2 -13
- package/src/components/interaction/Rating/Rating.tsx +2 -1
- package/src/components/interaction/SideSheet/SideSheet.tsx +2 -11
- package/src/components/interaction/Toast/Toast.tsx +2 -9
- package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.tsx +2 -1
- package/src/components/interaction/form/Combobox/Combobox.spec.tsx +9 -0
- package/src/components/interaction/form/Combobox/Combobox.tsx +4 -12
- package/src/components/interaction/form/FileInput/FileInput.spec.tsx +6 -0
- package/src/components/interaction/form/FileInput/FileInput.tsx +3 -2
- package/src/components/interaction/form/FormInput/FormInput.spec.tsx +18 -9
- package/src/components/interaction/form/FormInput/FormInput.tsx +5 -11
- package/src/components/interaction/form/NumberInput/NumberInput.spec.tsx +8 -0
- package/src/components/interaction/form/NumberInput/NumberInput.tsx +6 -13
- package/src/components/interaction/form/RadioGroup/RadioGroup.tsx +2 -1
- package/src/components/interaction/form/SegmentedControl/SegmentedControl.spec.tsx +40 -0
- package/src/components/interaction/form/SegmentedControl/SegmentedControl.tsx +8 -2
- package/src/components/interaction/form/Select/Select.mdx +2 -1
- package/src/components/interaction/form/Select/Select.spec.tsx +22 -1
- package/src/components/interaction/form/Select/Select.tsx +9 -17
- package/src/components/interaction/form/Slider/Slider.tsx +2 -9
- package/src/components/interaction/form/Textarea/Textarea.spec.tsx +6 -0
- package/src/components/interaction/form/Textarea/Textarea.tsx +3 -8
- package/src/components/interaction/form/atoms/Label.tsx +2 -1
- package/src/components/interaction/form/atoms/Message.tsx +2 -1
- package/src/components/layout/SectionHeader/SectionHeader.tsx +2 -1
- package/src/components/ui/Accordion/Accordion.tsx +2 -11
- package/src/components/ui/Alert/Alert.tsx +2 -1
- package/src/components/ui/Avatar/Avatar.tsx +2 -1
- package/src/components/ui/Badge/Badge.spec.tsx +28 -0
- package/src/components/ui/Badge/Badge.tsx +9 -3
- package/src/components/ui/Breadcrumb/Breadcrumb.tsx +2 -1
- package/src/components/ui/Calendar/Calendar.tsx +2 -8
- package/src/components/ui/Carousel/Carousel.tsx +2 -12
- package/src/components/ui/Collapsible/Collapsible.spec.tsx +1 -1
- package/src/components/ui/Collapsible/Collapsible.tsx +7 -22
- package/src/components/ui/DescriptionList/DescriptionList.tsx +2 -1
- package/src/components/ui/Link/Link.tsx +2 -1
- package/src/components/ui/NotificationBanner/NotificationBanner.tsx +2 -1
- package/src/components/ui/Pagination/Pagination.tsx +2 -1
- package/src/components/ui/Progress/Progress.tsx +2 -1
- package/src/components/ui/ProgressCircle/ProgressCircle.tsx +2 -1
- package/src/components/ui/Table/Table.tsx +2 -9
- package/src/components/ui/Tabs/Tabs.tsx +2 -10
- package/src/components/ui/Tooltip/Tooltip.tsx +2 -1
- package/src/components/ui/Typography/Typography.mdx +2 -0
- package/src/components/ui/Typography/Typography.spec.tsx +59 -0
- package/src/components/ui/Typography/Typography.tsx +18 -2
- package/src/index.ts +2 -0
- package/src/native/Chevron.spec.tsx +34 -0
- package/src/native/Chevron.tsx +50 -0
- package/src/native/ScaledText.guard.spec.ts +25 -0
- package/src/native/ScaledText.spec.tsx +77 -0
- package/src/native/ScaledText.tsx +30 -0
- package/src/native/fontScale.spec.ts +35 -0
- package/src/native/fontScale.ts +15 -0
- package/src/test/cornerRadii.ts +15 -0
package/dist/index.js
CHANGED
|
@@ -72,10 +72,37 @@ function useReactNavigationTheme(overrides = {}) {
|
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
// src/
|
|
76
|
-
import {
|
|
75
|
+
// src/native/ScaledText.tsx
|
|
76
|
+
import { forwardRef } from "react";
|
|
77
|
+
import { StyleSheet, Text, TextInput } from "react-native";
|
|
78
|
+
|
|
79
|
+
// src/native/fontScale.ts
|
|
80
|
+
function maxFontScaleFor(fontSize) {
|
|
81
|
+
if (fontSize >= 60) return 1;
|
|
82
|
+
if (fontSize >= 26) return 1.3;
|
|
83
|
+
if (fontSize >= 20) return 1.5;
|
|
84
|
+
return 2;
|
|
85
|
+
}
|
|
86
|
+
var DEFAULT_FONT_SIZE = 14;
|
|
87
|
+
|
|
88
|
+
// src/native/ScaledText.tsx
|
|
77
89
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
78
|
-
|
|
90
|
+
function maxFontScaleForStyle(style, override) {
|
|
91
|
+
if (override !== void 0 && override !== null) return override;
|
|
92
|
+
const fontSize = StyleSheet.flatten(style)?.fontSize;
|
|
93
|
+
return maxFontScaleFor(typeof fontSize === "number" ? fontSize : DEFAULT_FONT_SIZE);
|
|
94
|
+
}
|
|
95
|
+
var ScaledText = forwardRef(function ScaledText2({ maxFontSizeMultiplier, style, ...rest }, ref) {
|
|
96
|
+
return /* @__PURE__ */ jsx2(Text, { ref, style, maxFontSizeMultiplier: maxFontScaleForStyle(style, maxFontSizeMultiplier), ...rest });
|
|
97
|
+
});
|
|
98
|
+
var ScaledTextInput = forwardRef(function ScaledTextInput2({ maxFontSizeMultiplier, style, ...rest }, ref) {
|
|
99
|
+
return /* @__PURE__ */ jsx2(TextInput, { ref, style, maxFontSizeMultiplier: maxFontScaleForStyle(style, maxFontSizeMultiplier), ...rest });
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
// src/components/ui/Typography/Typography.tsx
|
|
103
|
+
import { StyleSheet as StyleSheet2 } from "react-native";
|
|
104
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
105
|
+
var styles = StyleSheet2.create({
|
|
79
106
|
base: {
|
|
80
107
|
fontFamily: font.family.body,
|
|
81
108
|
fontWeight: font.weight.body
|
|
@@ -114,22 +141,30 @@ var accessibilityRoles = {
|
|
|
114
141
|
body: "text",
|
|
115
142
|
body_s: "text"
|
|
116
143
|
};
|
|
117
|
-
function Typography({
|
|
144
|
+
function Typography({
|
|
145
|
+
variant = "body",
|
|
146
|
+
children,
|
|
147
|
+
style,
|
|
148
|
+
maxFontSizeMultiplier,
|
|
149
|
+
numberOfLines
|
|
150
|
+
}) {
|
|
118
151
|
const { colors: colors2 } = useTheme();
|
|
119
|
-
return /* @__PURE__ */
|
|
120
|
-
|
|
152
|
+
return /* @__PURE__ */ jsx3(
|
|
153
|
+
ScaledText,
|
|
121
154
|
{
|
|
122
155
|
accessibilityRole: accessibilityRoles[variant],
|
|
123
156
|
style: [styles.base, styles[variant], { color: colors2.colorOnBg }, style],
|
|
157
|
+
maxFontSizeMultiplier,
|
|
158
|
+
numberOfLines,
|
|
124
159
|
children
|
|
125
160
|
}
|
|
126
161
|
);
|
|
127
162
|
}
|
|
128
163
|
|
|
129
164
|
// src/components/ui/Badge/Badge.tsx
|
|
130
|
-
import { StyleSheet as
|
|
131
|
-
import { jsx as
|
|
132
|
-
var styles2 =
|
|
165
|
+
import { StyleSheet as StyleSheet3, View } from "react-native";
|
|
166
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
167
|
+
var styles2 = StyleSheet3.create({
|
|
133
168
|
badge: {
|
|
134
169
|
alignSelf: "flex-start",
|
|
135
170
|
flexDirection: "row",
|
|
@@ -146,7 +181,7 @@ var styles2 = StyleSheet2.create({
|
|
|
146
181
|
lineHeight: font.size.bodyS
|
|
147
182
|
}
|
|
148
183
|
});
|
|
149
|
-
function Badge({ children, variant = "primary", style }) {
|
|
184
|
+
function Badge({ children, variant = "primary", style, maxFontSizeMultiplier }) {
|
|
150
185
|
const { colors: colors2 } = useTheme();
|
|
151
186
|
const variantColors = {
|
|
152
187
|
primary: { bg: colors2.colorInteractive, text: colors2.colorOnInteractive },
|
|
@@ -156,12 +191,12 @@ function Badge({ children, variant = "primary", style }) {
|
|
|
156
191
|
warning: { bg: colors2.colorWarning, text: colors2.colorOnWarning }
|
|
157
192
|
};
|
|
158
193
|
const { bg, text } = variantColors[variant];
|
|
159
|
-
return /* @__PURE__ */
|
|
194
|
+
return /* @__PURE__ */ jsx4(View, { style: [styles2.badge, { backgroundColor: bg }, style], children: /* @__PURE__ */ jsx4(ScaledText, { style: [styles2.text, { color: text }], maxFontSizeMultiplier, children }) });
|
|
160
195
|
}
|
|
161
196
|
|
|
162
197
|
// src/components/ui/Avatar/Avatar.tsx
|
|
163
|
-
import { StyleSheet as
|
|
164
|
-
import { jsx as
|
|
198
|
+
import { StyleSheet as StyleSheet4, View as View2, Image } from "react-native";
|
|
199
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
165
200
|
var sizeMap = {
|
|
166
201
|
small: { container: 32, fontSize: font.size.bodyS },
|
|
167
202
|
medium: { container: 48, fontSize: font.size.body },
|
|
@@ -170,7 +205,7 @@ var sizeMap = {
|
|
|
170
205
|
function getInitials(name) {
|
|
171
206
|
return name.split(" ").filter(Boolean).slice(0, 2).map((word) => word[0].toUpperCase()).join("");
|
|
172
207
|
}
|
|
173
|
-
var styles3 =
|
|
208
|
+
var styles3 = StyleSheet4.create({
|
|
174
209
|
container: {
|
|
175
210
|
borderRadius: border.radius.full,
|
|
176
211
|
overflow: "hidden",
|
|
@@ -191,18 +226,18 @@ function Avatar({ src, alt, name, size = "medium", style }) {
|
|
|
191
226
|
const { container, fontSize } = sizeMap[size];
|
|
192
227
|
const label = alt ?? name ?? "User avatar";
|
|
193
228
|
if (src) {
|
|
194
|
-
return /* @__PURE__ */
|
|
229
|
+
return /* @__PURE__ */ jsx5(
|
|
195
230
|
View2,
|
|
196
231
|
{
|
|
197
232
|
style: [styles3.container, { width: container, height: container }, style],
|
|
198
233
|
accessibilityLabel: label,
|
|
199
234
|
accessibilityRole: "image",
|
|
200
|
-
children: /* @__PURE__ */
|
|
235
|
+
children: /* @__PURE__ */ jsx5(Image, { source: { uri: src }, style: styles3.image })
|
|
201
236
|
}
|
|
202
237
|
);
|
|
203
238
|
}
|
|
204
239
|
const initials = name ? getInitials(name) : "";
|
|
205
|
-
return /* @__PURE__ */
|
|
240
|
+
return /* @__PURE__ */ jsx5(
|
|
206
241
|
View2,
|
|
207
242
|
{
|
|
208
243
|
style: [
|
|
@@ -212,8 +247,8 @@ function Avatar({ src, alt, name, size = "medium", style }) {
|
|
|
212
247
|
],
|
|
213
248
|
accessibilityLabel: label,
|
|
214
249
|
accessibilityRole: "image",
|
|
215
|
-
children: /* @__PURE__ */
|
|
216
|
-
|
|
250
|
+
children: /* @__PURE__ */ jsx5(
|
|
251
|
+
ScaledText,
|
|
217
252
|
{
|
|
218
253
|
style: [styles3.initials, { fontSize, color: colors2.colorOnBlue }],
|
|
219
254
|
importantForAccessibility: "no",
|
|
@@ -226,21 +261,21 @@ function Avatar({ src, alt, name, size = "medium", style }) {
|
|
|
226
261
|
}
|
|
227
262
|
|
|
228
263
|
// src/components/ui/Separator/Separator.tsx
|
|
229
|
-
import { StyleSheet as
|
|
230
|
-
import { jsx as
|
|
231
|
-
var styles4 =
|
|
264
|
+
import { StyleSheet as StyleSheet5, View as View3 } from "react-native";
|
|
265
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
266
|
+
var styles4 = StyleSheet5.create({
|
|
232
267
|
horizontal: {
|
|
233
|
-
height:
|
|
268
|
+
height: StyleSheet5.hairlineWidth,
|
|
234
269
|
width: "100%"
|
|
235
270
|
},
|
|
236
271
|
vertical: {
|
|
237
|
-
width:
|
|
272
|
+
width: StyleSheet5.hairlineWidth,
|
|
238
273
|
alignSelf: "stretch"
|
|
239
274
|
}
|
|
240
275
|
});
|
|
241
276
|
function Separator({ orientation = "horizontal", style }) {
|
|
242
277
|
const { colors: colors2 } = useTheme();
|
|
243
|
-
return /* @__PURE__ */
|
|
278
|
+
return /* @__PURE__ */ jsx6(
|
|
244
279
|
View3,
|
|
245
280
|
{
|
|
246
281
|
accessibilityRole: "none",
|
|
@@ -255,7 +290,7 @@ function Separator({ orientation = "horizontal", style }) {
|
|
|
255
290
|
|
|
256
291
|
// src/components/ui/Loading/Loading.tsx
|
|
257
292
|
import { ActivityIndicator } from "react-native";
|
|
258
|
-
import { jsx as
|
|
293
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
259
294
|
var rnSize = {
|
|
260
295
|
small: "small",
|
|
261
296
|
medium: "large",
|
|
@@ -263,7 +298,7 @@ var rnSize = {
|
|
|
263
298
|
};
|
|
264
299
|
function Loading({ size = "medium", accessibilityLabel = "Loading", style }) {
|
|
265
300
|
const { colors: colors2 } = useTheme();
|
|
266
|
-
return /* @__PURE__ */
|
|
301
|
+
return /* @__PURE__ */ jsx7(
|
|
267
302
|
ActivityIndicator,
|
|
268
303
|
{
|
|
269
304
|
size: rnSize[size],
|
|
@@ -276,14 +311,14 @@ function Loading({ size = "medium", accessibilityLabel = "Loading", style }) {
|
|
|
276
311
|
}
|
|
277
312
|
|
|
278
313
|
// src/components/ui/Progress/Progress.tsx
|
|
279
|
-
import { StyleSheet as
|
|
280
|
-
import { jsx as
|
|
314
|
+
import { StyleSheet as StyleSheet6, View as View4 } from "react-native";
|
|
315
|
+
import { jsx as jsx8, jsxs } from "react/jsx-runtime";
|
|
281
316
|
var trackHeight = {
|
|
282
317
|
small: 4,
|
|
283
318
|
medium: 8,
|
|
284
319
|
large: 12
|
|
285
320
|
};
|
|
286
|
-
var styles5 =
|
|
321
|
+
var styles5 = StyleSheet6.create({
|
|
287
322
|
container: {
|
|
288
323
|
width: "100%"
|
|
289
324
|
},
|
|
@@ -320,20 +355,20 @@ function Progress({
|
|
|
320
355
|
const height = trackHeight[size];
|
|
321
356
|
return /* @__PURE__ */ jsxs(View4, { style: [styles5.container, style], children: [
|
|
322
357
|
showLabel && /* @__PURE__ */ jsxs(View4, { style: styles5.labelRow, children: [
|
|
323
|
-
/* @__PURE__ */
|
|
324
|
-
/* @__PURE__ */ jsxs(
|
|
358
|
+
/* @__PURE__ */ jsx8(ScaledText, { style: [styles5.labelText, { color: colors2.colorOnBg }], children: label }),
|
|
359
|
+
/* @__PURE__ */ jsxs(ScaledText, { style: [styles5.labelText, { color: colors2.colorOnBgSubtle }], children: [
|
|
325
360
|
Math.round(percentage),
|
|
326
361
|
"%"
|
|
327
362
|
] })
|
|
328
363
|
] }),
|
|
329
|
-
/* @__PURE__ */
|
|
364
|
+
/* @__PURE__ */ jsx8(
|
|
330
365
|
View4,
|
|
331
366
|
{
|
|
332
367
|
style: [styles5.track, { height, backgroundColor: colors2.colorBgSubtle }],
|
|
333
368
|
accessibilityRole: "progressbar",
|
|
334
369
|
accessibilityLabel: label,
|
|
335
370
|
accessibilityValue: { min: 0, max, now: value },
|
|
336
|
-
children: /* @__PURE__ */
|
|
371
|
+
children: /* @__PURE__ */ jsx8(
|
|
337
372
|
View4,
|
|
338
373
|
{
|
|
339
374
|
style: [
|
|
@@ -349,9 +384,9 @@ function Progress({
|
|
|
349
384
|
|
|
350
385
|
// src/components/ui/Skeleton/Skeleton.tsx
|
|
351
386
|
import { useEffect, useRef } from "react";
|
|
352
|
-
import { Animated, StyleSheet as
|
|
353
|
-
import { jsx as
|
|
354
|
-
var styles6 =
|
|
387
|
+
import { Animated, StyleSheet as StyleSheet7 } from "react-native";
|
|
388
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
389
|
+
var styles6 = StyleSheet7.create({
|
|
355
390
|
skeleton: {
|
|
356
391
|
borderRadius: border.radius.xs,
|
|
357
392
|
overflow: "hidden"
|
|
@@ -370,7 +405,7 @@ function Skeleton({ style }) {
|
|
|
370
405
|
anim.start();
|
|
371
406
|
return () => anim.stop();
|
|
372
407
|
}, [opacity]);
|
|
373
|
-
return /* @__PURE__ */
|
|
408
|
+
return /* @__PURE__ */ jsx9(
|
|
374
409
|
Animated.View,
|
|
375
410
|
{
|
|
376
411
|
importantForAccessibility: "no-hide-descendants",
|
|
@@ -384,9 +419,9 @@ function Skeleton({ style }) {
|
|
|
384
419
|
}
|
|
385
420
|
|
|
386
421
|
// src/components/ui/Alert/Alert.tsx
|
|
387
|
-
import { StyleSheet as
|
|
388
|
-
import { jsx as
|
|
389
|
-
var styles7 =
|
|
422
|
+
import { StyleSheet as StyleSheet8, View as View5, Pressable } from "react-native";
|
|
423
|
+
import { jsx as jsx10, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
424
|
+
var styles7 = StyleSheet8.create({
|
|
390
425
|
alert: {
|
|
391
426
|
flexDirection: "row",
|
|
392
427
|
alignItems: "flex-start",
|
|
@@ -443,12 +478,12 @@ function Alert({
|
|
|
443
478
|
accessibilityLiveRegion: isUrgent ? "assertive" : "polite",
|
|
444
479
|
style: [styles7.alert, { backgroundColor: bg, borderStartWidth: spacing.s, borderStartColor: borderColor }, style],
|
|
445
480
|
children: [
|
|
446
|
-
icon && /* @__PURE__ */
|
|
481
|
+
icon && /* @__PURE__ */ jsx10(View5, { style: styles7.icon, children: icon }),
|
|
447
482
|
/* @__PURE__ */ jsxs2(View5, { style: styles7.content, children: [
|
|
448
|
-
title && /* @__PURE__ */
|
|
449
|
-
typeof resolvedChildren === "string" || typeof resolvedChildren === "number" ? /* @__PURE__ */
|
|
483
|
+
title && /* @__PURE__ */ jsx10(ScaledText, { style: [styles7.title, { color: text }], children: title }),
|
|
484
|
+
typeof resolvedChildren === "string" || typeof resolvedChildren === "number" ? /* @__PURE__ */ jsx10(ScaledText, { style: [styles7.body, { color: text }], children: resolvedChildren }) : resolvedChildren
|
|
450
485
|
] }),
|
|
451
|
-
onDismiss && /* @__PURE__ */
|
|
486
|
+
onDismiss && /* @__PURE__ */ jsx10(
|
|
452
487
|
Pressable,
|
|
453
488
|
{
|
|
454
489
|
onPress: onDismiss,
|
|
@@ -456,7 +491,7 @@ function Alert({
|
|
|
456
491
|
accessibilityLabel: "Dismiss alert",
|
|
457
492
|
accessibilityRole: "button",
|
|
458
493
|
hitSlop: 8,
|
|
459
|
-
children: /* @__PURE__ */
|
|
494
|
+
children: /* @__PURE__ */ jsx10(ScaledText, { style: { color: text, fontSize: 16 }, children: "\u2715" })
|
|
460
495
|
}
|
|
461
496
|
)
|
|
462
497
|
]
|
|
@@ -465,9 +500,9 @@ function Alert({
|
|
|
465
500
|
}
|
|
466
501
|
|
|
467
502
|
// src/components/ui/NotificationBanner/NotificationBanner.tsx
|
|
468
|
-
import { StyleSheet as
|
|
469
|
-
import { jsx as
|
|
470
|
-
var styles8 =
|
|
503
|
+
import { StyleSheet as StyleSheet9, View as View6, Pressable as Pressable2 } from "react-native";
|
|
504
|
+
import { jsx as jsx11, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
505
|
+
var styles8 = StyleSheet9.create({
|
|
471
506
|
banner: {
|
|
472
507
|
flexDirection: "row",
|
|
473
508
|
alignItems: "center",
|
|
@@ -512,9 +547,9 @@ function NotificationBanner({
|
|
|
512
547
|
accessibilityLiveRegion: isUrgent ? "assertive" : "polite",
|
|
513
548
|
style: [styles8.banner, { backgroundColor: bg, borderBottomWidth: 3, borderBottomColor: borderColor }, style],
|
|
514
549
|
children: [
|
|
515
|
-
/* @__PURE__ */
|
|
550
|
+
/* @__PURE__ */ jsx11(View6, { style: styles8.body, children: typeof resolvedChildren === "string" || typeof resolvedChildren === "number" ? /* @__PURE__ */ jsx11(ScaledText, { style: [styles8.content, { color: text }], children: resolvedChildren }) : resolvedChildren }),
|
|
516
551
|
action,
|
|
517
|
-
onDismiss && /* @__PURE__ */
|
|
552
|
+
onDismiss && /* @__PURE__ */ jsx11(
|
|
518
553
|
Pressable2,
|
|
519
554
|
{
|
|
520
555
|
onPress: onDismiss,
|
|
@@ -522,7 +557,7 @@ function NotificationBanner({
|
|
|
522
557
|
accessibilityLabel: "Dismiss notification",
|
|
523
558
|
accessibilityRole: "button",
|
|
524
559
|
hitSlop: 8,
|
|
525
|
-
children: /* @__PURE__ */
|
|
560
|
+
children: /* @__PURE__ */ jsx11(ScaledText, { style: { color: text, fontSize: 16 }, children: "\u2715" })
|
|
526
561
|
}
|
|
527
562
|
)
|
|
528
563
|
]
|
|
@@ -531,9 +566,9 @@ function NotificationBanner({
|
|
|
531
566
|
}
|
|
532
567
|
|
|
533
568
|
// src/components/ui/Link/Link.tsx
|
|
534
|
-
import { StyleSheet as
|
|
535
|
-
import { jsx as
|
|
536
|
-
var styles9 =
|
|
569
|
+
import { StyleSheet as StyleSheet10, Pressable as Pressable3, Linking } from "react-native";
|
|
570
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
571
|
+
var styles9 = StyleSheet10.create({
|
|
537
572
|
text: {
|
|
538
573
|
fontSize: font.size.body,
|
|
539
574
|
fontFamily: font.family.body,
|
|
@@ -552,22 +587,22 @@ function Link({ href, children, accessibilityLabel, style, onPress }) {
|
|
|
552
587
|
Linking.openURL(href);
|
|
553
588
|
}
|
|
554
589
|
};
|
|
555
|
-
return /* @__PURE__ */
|
|
590
|
+
return /* @__PURE__ */ jsx12(
|
|
556
591
|
Pressable3,
|
|
557
592
|
{
|
|
558
593
|
onPress: handlePress,
|
|
559
594
|
accessibilityRole: "link",
|
|
560
595
|
accessibilityLabel,
|
|
561
596
|
style: ({ pressed }) => pressed && styles9.pressed,
|
|
562
|
-
children: /* @__PURE__ */
|
|
597
|
+
children: /* @__PURE__ */ jsx12(ScaledText, { style: [styles9.text, { color: colors2.colorInteractiveOnBg }, style], children })
|
|
563
598
|
}
|
|
564
599
|
);
|
|
565
600
|
}
|
|
566
601
|
|
|
567
602
|
// src/components/ui/DescriptionList/DescriptionList.tsx
|
|
568
|
-
import { StyleSheet as
|
|
569
|
-
import { jsx as
|
|
570
|
-
var styles10 =
|
|
603
|
+
import { StyleSheet as StyleSheet11, View as View7 } from "react-native";
|
|
604
|
+
import { jsx as jsx13, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
605
|
+
var styles10 = StyleSheet11.create({
|
|
571
606
|
list: {
|
|
572
607
|
gap: spacing.m
|
|
573
608
|
},
|
|
@@ -589,16 +624,16 @@ var styles10 = StyleSheet10.create({
|
|
|
589
624
|
});
|
|
590
625
|
function DescriptionList({ items, style }) {
|
|
591
626
|
const { colors: colors2 } = useTheme();
|
|
592
|
-
return /* @__PURE__ */
|
|
593
|
-
/* @__PURE__ */
|
|
594
|
-
typeof item.description === "string" ? /* @__PURE__ */
|
|
627
|
+
return /* @__PURE__ */ jsx13(View7, { style: [styles10.list, style], accessibilityRole: "list", children: items.map((item, i) => /* @__PURE__ */ jsxs4(View7, { style: styles10.group, accessibilityRole: "listitem", children: [
|
|
628
|
+
/* @__PURE__ */ jsx13(ScaledText, { style: [styles10.term, { color: colors2.colorOnBgSubtle }], children: item.term }),
|
|
629
|
+
typeof item.description === "string" ? /* @__PURE__ */ jsx13(ScaledText, { style: [styles10.description, { color: colors2.colorOnBg }], children: item.description }) : /* @__PURE__ */ jsx13(View7, { children: item.description })
|
|
595
630
|
] }, i)) });
|
|
596
631
|
}
|
|
597
632
|
|
|
598
633
|
// src/components/ui/Breadcrumb/Breadcrumb.tsx
|
|
599
|
-
import { StyleSheet as
|
|
600
|
-
import { Fragment, jsx as
|
|
601
|
-
var styles11 =
|
|
634
|
+
import { StyleSheet as StyleSheet12, View as View8, Pressable as Pressable4 } from "react-native";
|
|
635
|
+
import { Fragment, jsx as jsx14, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
636
|
+
var styles11 = StyleSheet12.create({
|
|
602
637
|
container: {
|
|
603
638
|
flexDirection: "row",
|
|
604
639
|
flexWrap: "wrap",
|
|
@@ -621,7 +656,7 @@ var styles11 = StyleSheet11.create({
|
|
|
621
656
|
});
|
|
622
657
|
function Breadcrumb({ items, style }) {
|
|
623
658
|
const { colors: colors2 } = useTheme();
|
|
624
|
-
return /* @__PURE__ */
|
|
659
|
+
return /* @__PURE__ */ jsx14(
|
|
625
660
|
View8,
|
|
626
661
|
{
|
|
627
662
|
style: [styles11.container, style],
|
|
@@ -629,25 +664,25 @@ function Breadcrumb({ items, style }) {
|
|
|
629
664
|
accessibilityLabel: "Breadcrumb",
|
|
630
665
|
children: items.map((item, index) => {
|
|
631
666
|
const isLast = index === items.length - 1;
|
|
632
|
-
return /* @__PURE__ */
|
|
633
|
-
|
|
667
|
+
return /* @__PURE__ */ jsx14(View8, { style: { flexDirection: "row", alignItems: "center", minHeight: 44 }, children: isLast ? /* @__PURE__ */ jsx14(
|
|
668
|
+
ScaledText,
|
|
634
669
|
{
|
|
635
670
|
style: [styles11.itemText, { color: colors2.colorOnBg }],
|
|
636
671
|
accessibilityRole: "text",
|
|
637
672
|
children: item.label
|
|
638
673
|
}
|
|
639
674
|
) : /* @__PURE__ */ jsxs5(Fragment, { children: [
|
|
640
|
-
/* @__PURE__ */
|
|
675
|
+
/* @__PURE__ */ jsx14(
|
|
641
676
|
Pressable4,
|
|
642
677
|
{
|
|
643
678
|
onPress: item.onPress,
|
|
644
679
|
accessibilityRole: "link",
|
|
645
680
|
style: ({ pressed }) => pressed && styles11.pressed,
|
|
646
|
-
children: /* @__PURE__ */
|
|
681
|
+
children: /* @__PURE__ */ jsx14(ScaledText, { style: [styles11.itemText, { color: colors2.colorInteractiveOnBg }], children: item.label })
|
|
647
682
|
}
|
|
648
683
|
),
|
|
649
|
-
/* @__PURE__ */
|
|
650
|
-
|
|
684
|
+
/* @__PURE__ */ jsx14(
|
|
685
|
+
ScaledText,
|
|
651
686
|
{
|
|
652
687
|
style: [styles11.separator, { color: colors2.colorOnBgSubtle }],
|
|
653
688
|
importantForAccessibility: "no",
|
|
@@ -662,8 +697,8 @@ function Breadcrumb({ items, style }) {
|
|
|
662
697
|
}
|
|
663
698
|
|
|
664
699
|
// src/components/ui/ProgressCircle/ProgressCircle.tsx
|
|
665
|
-
import { StyleSheet as
|
|
666
|
-
import { jsx as
|
|
700
|
+
import { StyleSheet as StyleSheet13, View as View9 } from "react-native";
|
|
701
|
+
import { jsx as jsx15, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
667
702
|
var SIZE_PX = {
|
|
668
703
|
small: 40,
|
|
669
704
|
medium: 64,
|
|
@@ -679,7 +714,7 @@ var FONT_SIZE = {
|
|
|
679
714
|
medium: font.size.bodyS,
|
|
680
715
|
large: font.size.body
|
|
681
716
|
};
|
|
682
|
-
var styles12 =
|
|
717
|
+
var styles12 = StyleSheet13.create({
|
|
683
718
|
wrapper: {
|
|
684
719
|
alignItems: "center",
|
|
685
720
|
justifyContent: "center"
|
|
@@ -696,7 +731,7 @@ function HalfCircle({
|
|
|
696
731
|
color,
|
|
697
732
|
rotation
|
|
698
733
|
}) {
|
|
699
|
-
return /* @__PURE__ */
|
|
734
|
+
return /* @__PURE__ */ jsx15(
|
|
700
735
|
View9,
|
|
701
736
|
{
|
|
702
737
|
style: {
|
|
@@ -704,7 +739,7 @@ function HalfCircle({
|
|
|
704
739
|
height: size,
|
|
705
740
|
overflow: "hidden"
|
|
706
741
|
},
|
|
707
|
-
children: /* @__PURE__ */
|
|
742
|
+
children: /* @__PURE__ */ jsx15(
|
|
708
743
|
View9,
|
|
709
744
|
{
|
|
710
745
|
style: {
|
|
@@ -747,7 +782,7 @@ function ProgressCircle({
|
|
|
747
782
|
accessibilityLabel: label,
|
|
748
783
|
accessibilityValue: { min: 0, max, now: value },
|
|
749
784
|
children: [
|
|
750
|
-
/* @__PURE__ */
|
|
785
|
+
/* @__PURE__ */ jsx15(
|
|
751
786
|
View9,
|
|
752
787
|
{
|
|
753
788
|
style: {
|
|
@@ -760,7 +795,7 @@ function ProgressCircle({
|
|
|
760
795
|
}
|
|
761
796
|
}
|
|
762
797
|
),
|
|
763
|
-
/* @__PURE__ */
|
|
798
|
+
/* @__PURE__ */ jsx15(
|
|
764
799
|
View9,
|
|
765
800
|
{
|
|
766
801
|
style: {
|
|
@@ -770,7 +805,7 @@ function ProgressCircle({
|
|
|
770
805
|
start: px / 2,
|
|
771
806
|
overflow: "hidden"
|
|
772
807
|
},
|
|
773
|
-
children: /* @__PURE__ */
|
|
808
|
+
children: /* @__PURE__ */ jsx15(
|
|
774
809
|
HalfCircle,
|
|
775
810
|
{
|
|
776
811
|
size: px,
|
|
@@ -781,7 +816,7 @@ function ProgressCircle({
|
|
|
781
816
|
)
|
|
782
817
|
}
|
|
783
818
|
),
|
|
784
|
-
degrees > 180 && /* @__PURE__ */
|
|
819
|
+
degrees > 180 && /* @__PURE__ */ jsx15(
|
|
785
820
|
View9,
|
|
786
821
|
{
|
|
787
822
|
style: {
|
|
@@ -791,14 +826,14 @@ function ProgressCircle({
|
|
|
791
826
|
start: 0,
|
|
792
827
|
overflow: "hidden"
|
|
793
828
|
},
|
|
794
|
-
children: /* @__PURE__ */
|
|
829
|
+
children: /* @__PURE__ */ jsx15(
|
|
795
830
|
View9,
|
|
796
831
|
{
|
|
797
832
|
style: {
|
|
798
833
|
position: "absolute",
|
|
799
834
|
end: 0
|
|
800
835
|
},
|
|
801
|
-
children: /* @__PURE__ */
|
|
836
|
+
children: /* @__PURE__ */ jsx15(
|
|
802
837
|
HalfCircle,
|
|
803
838
|
{
|
|
804
839
|
size: px,
|
|
@@ -812,7 +847,7 @@ function ProgressCircle({
|
|
|
812
847
|
}
|
|
813
848
|
),
|
|
814
849
|
showValue && /* @__PURE__ */ jsxs6(
|
|
815
|
-
|
|
850
|
+
ScaledText,
|
|
816
851
|
{
|
|
817
852
|
style: [styles12.valueText, { fontSize: FONT_SIZE[size], color: colors2.colorOnBg }],
|
|
818
853
|
importantForAccessibility: "no",
|
|
@@ -830,9 +865,9 @@ function ProgressCircle({
|
|
|
830
865
|
|
|
831
866
|
// src/components/ui/Tooltip/Tooltip.tsx
|
|
832
867
|
import { useState } from "react";
|
|
833
|
-
import { StyleSheet as
|
|
834
|
-
import { jsx as
|
|
835
|
-
var styles13 =
|
|
868
|
+
import { StyleSheet as StyleSheet14, View as View10, Pressable as Pressable5 } from "react-native";
|
|
869
|
+
import { jsx as jsx16, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
870
|
+
var styles13 = StyleSheet14.create({
|
|
836
871
|
wrapper: {
|
|
837
872
|
position: "relative"
|
|
838
873
|
},
|
|
@@ -856,7 +891,7 @@ function Tooltip({ content, children, style }) {
|
|
|
856
891
|
const { colors: colors2 } = useTheme();
|
|
857
892
|
const [visible, setVisible] = useState(false);
|
|
858
893
|
return /* @__PURE__ */ jsxs7(View10, { style: [styles13.wrapper, style], children: [
|
|
859
|
-
/* @__PURE__ */
|
|
894
|
+
/* @__PURE__ */ jsx16(
|
|
860
895
|
Pressable5,
|
|
861
896
|
{
|
|
862
897
|
onLongPress: () => setVisible(true),
|
|
@@ -865,21 +900,21 @@ function Tooltip({ content, children, style }) {
|
|
|
865
900
|
children
|
|
866
901
|
}
|
|
867
902
|
),
|
|
868
|
-
visible && /* @__PURE__ */
|
|
903
|
+
visible && /* @__PURE__ */ jsx16(
|
|
869
904
|
View10,
|
|
870
905
|
{
|
|
871
906
|
style: [styles13.tooltip, { backgroundColor: colors2.colorOnBg }],
|
|
872
907
|
accessibilityRole: "text",
|
|
873
908
|
accessibilityLabel: content,
|
|
874
|
-
children: /* @__PURE__ */
|
|
909
|
+
children: /* @__PURE__ */ jsx16(ScaledText, { style: [styles13.text, { color: colors2.colorBg }], children: content })
|
|
875
910
|
}
|
|
876
911
|
)
|
|
877
912
|
] });
|
|
878
913
|
}
|
|
879
914
|
|
|
880
915
|
// src/components/ui/Pagination/Pagination.tsx
|
|
881
|
-
import { StyleSheet as
|
|
882
|
-
import { jsx as
|
|
916
|
+
import { StyleSheet as StyleSheet15, View as View11, Pressable as Pressable6 } from "react-native";
|
|
917
|
+
import { jsx as jsx17, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
883
918
|
function getPageRange(current, total) {
|
|
884
919
|
const delta = 1;
|
|
885
920
|
const range = [];
|
|
@@ -892,7 +927,7 @@ function getPageRange(current, total) {
|
|
|
892
927
|
}
|
|
893
928
|
return range;
|
|
894
929
|
}
|
|
895
|
-
var styles14 =
|
|
930
|
+
var styles14 = StyleSheet15.create({
|
|
896
931
|
container: {
|
|
897
932
|
flexDirection: "row",
|
|
898
933
|
alignItems: "center",
|
|
@@ -950,7 +985,7 @@ function Pagination({
|
|
|
950
985
|
accessibilityRole: "navigation",
|
|
951
986
|
accessibilityLabel: "Pagination",
|
|
952
987
|
children: [
|
|
953
|
-
/* @__PURE__ */
|
|
988
|
+
/* @__PURE__ */ jsx17(
|
|
954
989
|
Pressable6,
|
|
955
990
|
{
|
|
956
991
|
onPress: () => onPageChange(currentPage - 1),
|
|
@@ -963,12 +998,12 @@ function Pagination({
|
|
|
963
998
|
currentPage <= 1 && styles14.disabled,
|
|
964
999
|
pressed && !currentPage && styles14.pressed
|
|
965
1000
|
],
|
|
966
|
-
children: /* @__PURE__ */
|
|
1001
|
+
children: /* @__PURE__ */ jsx17(ScaledText, { style: [styles14.navText, { color: colors2.colorOnBg }], children: "\u2039" })
|
|
967
1002
|
}
|
|
968
1003
|
),
|
|
969
1004
|
pages.map(
|
|
970
|
-
(page, index) => page === "..." ? /* @__PURE__ */
|
|
971
|
-
|
|
1005
|
+
(page, index) => page === "..." ? /* @__PURE__ */ jsx17(
|
|
1006
|
+
ScaledText,
|
|
972
1007
|
{
|
|
973
1008
|
style: [styles14.ellipsis, { color: colors2.colorOnBgSubtle }],
|
|
974
1009
|
importantForAccessibility: "no",
|
|
@@ -976,7 +1011,7 @@ function Pagination({
|
|
|
976
1011
|
children: "..."
|
|
977
1012
|
},
|
|
978
1013
|
`ellipsis-${index}`
|
|
979
|
-
) : /* @__PURE__ */
|
|
1014
|
+
) : /* @__PURE__ */ jsx17(
|
|
980
1015
|
Pressable6,
|
|
981
1016
|
{
|
|
982
1017
|
onPress: () => onPageChange(page),
|
|
@@ -988,8 +1023,8 @@ function Pagination({
|
|
|
988
1023
|
currentPage === page && { backgroundColor: colors2.colorInteractive },
|
|
989
1024
|
pressed && styles14.pressed
|
|
990
1025
|
],
|
|
991
|
-
children: /* @__PURE__ */
|
|
992
|
-
|
|
1026
|
+
children: /* @__PURE__ */ jsx17(
|
|
1027
|
+
ScaledText,
|
|
993
1028
|
{
|
|
994
1029
|
style: [
|
|
995
1030
|
styles14.buttonText,
|
|
@@ -1005,7 +1040,7 @@ function Pagination({
|
|
|
1005
1040
|
page
|
|
1006
1041
|
)
|
|
1007
1042
|
),
|
|
1008
|
-
/* @__PURE__ */
|
|
1043
|
+
/* @__PURE__ */ jsx17(
|
|
1009
1044
|
Pressable6,
|
|
1010
1045
|
{
|
|
1011
1046
|
onPress: () => onPageChange(currentPage + 1),
|
|
@@ -1018,7 +1053,7 @@ function Pagination({
|
|
|
1018
1053
|
currentPage >= totalPages && styles14.disabled,
|
|
1019
1054
|
pressed && styles14.pressed
|
|
1020
1055
|
],
|
|
1021
|
-
children: /* @__PURE__ */
|
|
1056
|
+
children: /* @__PURE__ */ jsx17(ScaledText, { style: [styles14.navText, { color: colors2.colorOnBg }], children: "\u203A" })
|
|
1022
1057
|
}
|
|
1023
1058
|
)
|
|
1024
1059
|
]
|
|
@@ -1028,21 +1063,50 @@ function Pagination({
|
|
|
1028
1063
|
|
|
1029
1064
|
// src/components/ui/Collapsible/Collapsible.tsx
|
|
1030
1065
|
import { useCallback, useRef as useRef2, useState as useState2 } from "react";
|
|
1031
|
-
import {
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1066
|
+
import { StyleSheet as StyleSheet17, View as View12, Pressable as Pressable7, Animated as Animated3, LayoutAnimation, Platform, UIManager } from "react-native";
|
|
1067
|
+
|
|
1068
|
+
// src/native/Chevron.tsx
|
|
1069
|
+
import { Animated as Animated2, StyleSheet as StyleSheet16 } from "react-native";
|
|
1070
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
1071
|
+
var SIZE = 8;
|
|
1072
|
+
var STROKE = 1.5;
|
|
1073
|
+
var CENTRE_SHIFT = -(SIZE - STROKE) / 4;
|
|
1074
|
+
var styles15 = StyleSheet16.create({
|
|
1075
|
+
chevron: {
|
|
1076
|
+
// Border-box chevron (no glyph font dependency): a small square with two
|
|
1077
|
+
// adjacent borders, rotated to form a crisp "›" / "⌄" indicator.
|
|
1078
|
+
width: SIZE,
|
|
1079
|
+
height: SIZE,
|
|
1080
|
+
borderRightWidth: STROKE,
|
|
1081
|
+
borderBottomWidth: STROKE
|
|
1082
|
+
}
|
|
1083
|
+
});
|
|
1084
|
+
function Chevron({ color, rotate = "45deg", testID, style }) {
|
|
1085
|
+
return /* @__PURE__ */ jsx18(
|
|
1086
|
+
Animated2.View,
|
|
1087
|
+
{
|
|
1088
|
+
testID,
|
|
1089
|
+
style: [
|
|
1090
|
+
styles15.chevron,
|
|
1091
|
+
{
|
|
1092
|
+
borderColor: color,
|
|
1093
|
+
transform: [{ rotate }, { translateX: CENTRE_SHIFT }, { translateY: CENTRE_SHIFT }]
|
|
1094
|
+
},
|
|
1095
|
+
style
|
|
1096
|
+
],
|
|
1097
|
+
"aria-hidden": true,
|
|
1098
|
+
importantForAccessibility: "no-hide-descendants",
|
|
1099
|
+
accessibilityElementsHidden: true
|
|
1100
|
+
}
|
|
1101
|
+
);
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
// src/components/ui/Collapsible/Collapsible.tsx
|
|
1105
|
+
import { jsx as jsx19, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1042
1106
|
if (Platform.OS === "android" && UIManager.setLayoutAnimationEnabledExperimental) {
|
|
1043
1107
|
UIManager.setLayoutAnimationEnabledExperimental(true);
|
|
1044
1108
|
}
|
|
1045
|
-
var
|
|
1109
|
+
var styles16 = StyleSheet17.create({
|
|
1046
1110
|
container: {
|
|
1047
1111
|
borderRadius: border.radius.m,
|
|
1048
1112
|
overflow: "hidden"
|
|
@@ -1063,12 +1127,6 @@ var styles15 = StyleSheet15.create({
|
|
|
1063
1127
|
lineHeight: lineHeight.body
|
|
1064
1128
|
},
|
|
1065
1129
|
chevron: {
|
|
1066
|
-
// Border-box chevron (no glyph font dependency): a small square with two
|
|
1067
|
-
// adjacent borders, rotated to form a crisp "›" / "⌄" disclosure indicator.
|
|
1068
|
-
width: 8,
|
|
1069
|
-
height: 8,
|
|
1070
|
-
borderRightWidth: 2,
|
|
1071
|
-
borderBottomWidth: 2,
|
|
1072
1130
|
marginStart: spacing.xs
|
|
1073
1131
|
},
|
|
1074
1132
|
content: {
|
|
@@ -1093,11 +1151,11 @@ function Collapsible({
|
|
|
1093
1151
|
const [internalOpen, setInternalOpen] = useState2(defaultOpen);
|
|
1094
1152
|
const isControlled = controlledOpen !== void 0;
|
|
1095
1153
|
const isOpen = isControlled ? controlledOpen : internalOpen;
|
|
1096
|
-
const rotation = useRef2(new
|
|
1154
|
+
const rotation = useRef2(new Animated3.Value(isOpen ? 1 : 0)).current;
|
|
1097
1155
|
const toggle = useCallback(() => {
|
|
1098
1156
|
const next = !isOpen;
|
|
1099
1157
|
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);
|
|
1100
|
-
|
|
1158
|
+
Animated3.timing(rotation, {
|
|
1101
1159
|
toValue: next ? 1 : 0,
|
|
1102
1160
|
duration: 200,
|
|
1103
1161
|
useNativeDriver: true
|
|
@@ -1114,7 +1172,7 @@ function Collapsible({
|
|
|
1114
1172
|
return /* @__PURE__ */ jsxs9(
|
|
1115
1173
|
View12,
|
|
1116
1174
|
{
|
|
1117
|
-
style: [
|
|
1175
|
+
style: [styles16.container, { borderBottomWidth: 1, borderBottomColor: colors2.colorBgSubtle }, style],
|
|
1118
1176
|
accessibilityRole: "summary",
|
|
1119
1177
|
children: [
|
|
1120
1178
|
/* @__PURE__ */ jsxs9(
|
|
@@ -1124,22 +1182,22 @@ function Collapsible({
|
|
|
1124
1182
|
accessibilityRole: "button",
|
|
1125
1183
|
accessibilityLabel: summary,
|
|
1126
1184
|
accessibilityState: { expanded: isOpen },
|
|
1127
|
-
style: ({ pressed }) => [
|
|
1185
|
+
style: ({ pressed }) => [styles16.header, pressed && styles16.pressed],
|
|
1128
1186
|
children: [
|
|
1129
|
-
/* @__PURE__ */
|
|
1130
|
-
/* @__PURE__ */
|
|
1131
|
-
|
|
1187
|
+
/* @__PURE__ */ jsx19(ScaledText, { style: [styles16.summaryText, { color: colors2.colorOnBg }], children: summary }),
|
|
1188
|
+
/* @__PURE__ */ jsx19(
|
|
1189
|
+
Chevron,
|
|
1132
1190
|
{
|
|
1133
1191
|
testID: "bds-collapsible-chevron",
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1192
|
+
color: colors2.colorOnBgSubtle,
|
|
1193
|
+
rotate,
|
|
1194
|
+
style: styles16.chevron
|
|
1137
1195
|
}
|
|
1138
1196
|
)
|
|
1139
1197
|
]
|
|
1140
1198
|
}
|
|
1141
1199
|
),
|
|
1142
|
-
isOpen && /* @__PURE__ */
|
|
1200
|
+
isOpen && /* @__PURE__ */ jsx19(View12, { style: styles16.content, children })
|
|
1143
1201
|
]
|
|
1144
1202
|
}
|
|
1145
1203
|
);
|
|
@@ -1147,20 +1205,12 @@ function Collapsible({
|
|
|
1147
1205
|
|
|
1148
1206
|
// src/components/ui/Accordion/Accordion.tsx
|
|
1149
1207
|
import { useState as useState3 } from "react";
|
|
1150
|
-
import {
|
|
1151
|
-
|
|
1152
|
-
View as View13,
|
|
1153
|
-
Text as Text14,
|
|
1154
|
-
Pressable as Pressable8,
|
|
1155
|
-
LayoutAnimation as LayoutAnimation2,
|
|
1156
|
-
Platform as Platform2,
|
|
1157
|
-
UIManager as UIManager2
|
|
1158
|
-
} from "react-native";
|
|
1159
|
-
import { jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1208
|
+
import { StyleSheet as StyleSheet18, View as View13, Pressable as Pressable8, LayoutAnimation as LayoutAnimation2, Platform as Platform2, UIManager as UIManager2 } from "react-native";
|
|
1209
|
+
import { jsx as jsx20, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1160
1210
|
if (Platform2.OS === "android" && UIManager2.setLayoutAnimationEnabledExperimental) {
|
|
1161
1211
|
UIManager2.setLayoutAnimationEnabledExperimental(true);
|
|
1162
1212
|
}
|
|
1163
|
-
var
|
|
1213
|
+
var styles17 = StyleSheet18.create({
|
|
1164
1214
|
container: {
|
|
1165
1215
|
overflow: "hidden",
|
|
1166
1216
|
borderRadius: border.radius.s
|
|
@@ -1214,14 +1264,14 @@ function Accordion({
|
|
|
1214
1264
|
return allowMultiple ? [...prev, id] : [id];
|
|
1215
1265
|
});
|
|
1216
1266
|
};
|
|
1217
|
-
return /* @__PURE__ */
|
|
1267
|
+
return /* @__PURE__ */ jsx20(View13, { style: [styles17.container, style], children: items.map((item, index) => {
|
|
1218
1268
|
const isOpen = openIds.includes(item.id);
|
|
1219
1269
|
const isLast = index === items.length - 1;
|
|
1220
1270
|
return /* @__PURE__ */ jsxs10(
|
|
1221
1271
|
View13,
|
|
1222
1272
|
{
|
|
1223
1273
|
style: [
|
|
1224
|
-
|
|
1274
|
+
styles17.item,
|
|
1225
1275
|
{ borderBottomColor: colors2.colorBgSubtle },
|
|
1226
1276
|
isLast && { borderBottomWidth: 0 }
|
|
1227
1277
|
],
|
|
@@ -1234,16 +1284,16 @@ function Accordion({
|
|
|
1234
1284
|
accessibilityRole: "button",
|
|
1235
1285
|
accessibilityState: { expanded: isOpen, disabled: item.disabled },
|
|
1236
1286
|
style: ({ pressed }) => [
|
|
1237
|
-
|
|
1238
|
-
item.disabled &&
|
|
1239
|
-
pressed && !item.disabled &&
|
|
1287
|
+
styles17.header,
|
|
1288
|
+
item.disabled && styles17.disabled,
|
|
1289
|
+
pressed && !item.disabled && styles17.pressed
|
|
1240
1290
|
],
|
|
1241
1291
|
children: [
|
|
1242
|
-
/* @__PURE__ */
|
|
1243
|
-
/* @__PURE__ */
|
|
1244
|
-
|
|
1292
|
+
/* @__PURE__ */ jsx20(ScaledText, { style: [styles17.titleText, { color: colors2.colorOnBg }], children: typeof item.title === "string" ? item.title : item.title }),
|
|
1293
|
+
/* @__PURE__ */ jsx20(
|
|
1294
|
+
ScaledText,
|
|
1245
1295
|
{
|
|
1246
|
-
style: [
|
|
1296
|
+
style: [styles17.chevron, { color: colors2.colorOnBgSubtle }],
|
|
1247
1297
|
importantForAccessibility: "no",
|
|
1248
1298
|
accessibilityElementsHidden: true,
|
|
1249
1299
|
children: isOpen ? "\u25BE" : "\u25B8"
|
|
@@ -1252,7 +1302,7 @@ function Accordion({
|
|
|
1252
1302
|
]
|
|
1253
1303
|
}
|
|
1254
1304
|
),
|
|
1255
|
-
isOpen && /* @__PURE__ */
|
|
1305
|
+
isOpen && /* @__PURE__ */ jsx20(View13, { style: styles17.panel, accessibilityRole: "summary", children: item.content })
|
|
1256
1306
|
]
|
|
1257
1307
|
},
|
|
1258
1308
|
item.id
|
|
@@ -1262,15 +1312,9 @@ function Accordion({
|
|
|
1262
1312
|
|
|
1263
1313
|
// src/components/ui/Tabs/Tabs.tsx
|
|
1264
1314
|
import { useState as useState4 } from "react";
|
|
1265
|
-
import {
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
Text as Text15,
|
|
1269
|
-
Pressable as Pressable9,
|
|
1270
|
-
ScrollView
|
|
1271
|
-
} from "react-native";
|
|
1272
|
-
import { jsx as jsx19, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1273
|
-
var styles17 = StyleSheet17.create({
|
|
1315
|
+
import { StyleSheet as StyleSheet19, View as View14, Pressable as Pressable9, ScrollView } from "react-native";
|
|
1316
|
+
import { jsx as jsx21, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1317
|
+
var styles18 = StyleSheet19.create({
|
|
1274
1318
|
container: {
|
|
1275
1319
|
overflow: "hidden"
|
|
1276
1320
|
},
|
|
@@ -1309,17 +1353,17 @@ function Tabs({
|
|
|
1309
1353
|
}) {
|
|
1310
1354
|
const { colors: colors2 } = useTheme();
|
|
1311
1355
|
const [activeTab, setActiveTab] = useState4(defaultTab ?? tabs[0]?.id);
|
|
1312
|
-
return /* @__PURE__ */ jsxs11(View14, { style: [
|
|
1313
|
-
/* @__PURE__ */
|
|
1356
|
+
return /* @__PURE__ */ jsxs11(View14, { style: [styles18.container, style], children: [
|
|
1357
|
+
/* @__PURE__ */ jsx21(
|
|
1314
1358
|
ScrollView,
|
|
1315
1359
|
{
|
|
1316
1360
|
horizontal: true,
|
|
1317
1361
|
showsHorizontalScrollIndicator: false,
|
|
1318
|
-
contentContainerStyle: [
|
|
1362
|
+
contentContainerStyle: [styles18.tabList, { borderBottomColor: colors2.colorBgSubtle }],
|
|
1319
1363
|
accessibilityRole: "tabbar",
|
|
1320
1364
|
children: tabs.map((tab) => {
|
|
1321
1365
|
const isActive = activeTab === tab.id;
|
|
1322
|
-
return /* @__PURE__ */
|
|
1366
|
+
return /* @__PURE__ */ jsx21(
|
|
1323
1367
|
Pressable9,
|
|
1324
1368
|
{
|
|
1325
1369
|
onPress: () => setActiveTab(tab.id),
|
|
@@ -1331,18 +1375,18 @@ function Tabs({
|
|
|
1331
1375
|
},
|
|
1332
1376
|
accessibilityLabel: typeof tab.label === "string" ? tab.label : void 0,
|
|
1333
1377
|
style: ({ pressed }) => [
|
|
1334
|
-
|
|
1378
|
+
styles18.tabButton,
|
|
1335
1379
|
{
|
|
1336
1380
|
borderBottomColor: isActive ? colors2.colorInteractive : "transparent"
|
|
1337
1381
|
},
|
|
1338
|
-
tab.disabled &&
|
|
1339
|
-
pressed && !tab.disabled &&
|
|
1382
|
+
tab.disabled && styles18.disabled,
|
|
1383
|
+
pressed && !tab.disabled && styles18.pressed
|
|
1340
1384
|
],
|
|
1341
|
-
children: /* @__PURE__ */
|
|
1342
|
-
|
|
1385
|
+
children: /* @__PURE__ */ jsx21(
|
|
1386
|
+
ScaledText,
|
|
1343
1387
|
{
|
|
1344
1388
|
style: [
|
|
1345
|
-
|
|
1389
|
+
styles18.tabLabel,
|
|
1346
1390
|
{
|
|
1347
1391
|
color: isActive ? colors2.colorInteractive : colors2.colorOnBgSubtle,
|
|
1348
1392
|
fontWeight: isActive ? font.weight.semibold : font.weight.body
|
|
@@ -1360,21 +1404,15 @@ function Tabs({
|
|
|
1360
1404
|
tabs.map((tab) => {
|
|
1361
1405
|
const isActive = activeTab === tab.id;
|
|
1362
1406
|
if (!isActive) return null;
|
|
1363
|
-
return /* @__PURE__ */
|
|
1407
|
+
return /* @__PURE__ */ jsx21(View14, { style: styles18.panel, accessibilityRole: "tabpanel", children: tab.content }, tab.id);
|
|
1364
1408
|
})
|
|
1365
1409
|
] });
|
|
1366
1410
|
}
|
|
1367
1411
|
|
|
1368
1412
|
// src/components/ui/Table/Table.tsx
|
|
1369
|
-
import {
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
Text as Text16,
|
|
1373
|
-
ScrollView as ScrollView2,
|
|
1374
|
-
Pressable as Pressable10
|
|
1375
|
-
} from "react-native";
|
|
1376
|
-
import { jsx as jsx20, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1377
|
-
var styles18 = StyleSheet18.create({
|
|
1413
|
+
import { StyleSheet as StyleSheet20, View as View15, ScrollView as ScrollView2, Pressable as Pressable10 } from "react-native";
|
|
1414
|
+
import { jsx as jsx22, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1415
|
+
var styles19 = StyleSheet20.create({
|
|
1378
1416
|
wrapper: {
|
|
1379
1417
|
borderRadius: border.radius.s,
|
|
1380
1418
|
overflow: "hidden"
|
|
@@ -1450,29 +1488,29 @@ function Table({
|
|
|
1450
1488
|
if (sortKey !== col.key) return base;
|
|
1451
1489
|
return `${base}, currently ${sortDirection === "asc" ? "ascending" : "descending"}`;
|
|
1452
1490
|
};
|
|
1453
|
-
return /* @__PURE__ */
|
|
1491
|
+
return /* @__PURE__ */ jsx22(
|
|
1454
1492
|
ScrollView2,
|
|
1455
1493
|
{
|
|
1456
1494
|
horizontal: true,
|
|
1457
1495
|
showsHorizontalScrollIndicator: true,
|
|
1458
|
-
style: [
|
|
1496
|
+
style: [styles19.wrapper, { backgroundColor: colors2.colorBg }, style],
|
|
1459
1497
|
children: /* @__PURE__ */ jsxs12(View15, { children: [
|
|
1460
|
-
caption && /* @__PURE__ */
|
|
1461
|
-
/* @__PURE__ */
|
|
1498
|
+
caption && /* @__PURE__ */ jsx22(ScaledText, { style: [styles19.caption, { color: colors2.colorOnBgSubtle }], children: caption }),
|
|
1499
|
+
/* @__PURE__ */ jsx22(View15, { style: [styles19.headerRow, { backgroundColor: colors2.colorBgSubtle }], children: columns.map(
|
|
1462
1500
|
(col) => col.sortable ? /* @__PURE__ */ jsxs12(
|
|
1463
1501
|
Pressable10,
|
|
1464
1502
|
{
|
|
1465
1503
|
onPress: () => handleSort(col.key),
|
|
1466
1504
|
accessibilityRole: "button",
|
|
1467
1505
|
accessibilityLabel: getSortLabel(col),
|
|
1468
|
-
style: ({ pressed }) => [
|
|
1506
|
+
style: ({ pressed }) => [styles19.headerCell, pressed && styles19.pressed],
|
|
1469
1507
|
children: [
|
|
1470
|
-
/* @__PURE__ */
|
|
1471
|
-
/* @__PURE__ */
|
|
1472
|
-
|
|
1508
|
+
/* @__PURE__ */ jsx22(ScaledText, { style: [styles19.headerText, { color: colors2.colorOnBg }], children: col.header }),
|
|
1509
|
+
/* @__PURE__ */ jsx22(
|
|
1510
|
+
ScaledText,
|
|
1473
1511
|
{
|
|
1474
1512
|
style: [
|
|
1475
|
-
|
|
1513
|
+
styles19.sortIndicator,
|
|
1476
1514
|
{
|
|
1477
1515
|
color: sortKey === col.key ? colors2.colorInteractive : colors2.colorOnBgSubtle
|
|
1478
1516
|
}
|
|
@@ -1485,18 +1523,18 @@ function Table({
|
|
|
1485
1523
|
]
|
|
1486
1524
|
},
|
|
1487
1525
|
col.key
|
|
1488
|
-
) : /* @__PURE__ */
|
|
1526
|
+
) : /* @__PURE__ */ jsx22(View15, { style: styles19.headerCell, children: /* @__PURE__ */ jsx22(ScaledText, { style: [styles19.headerText, { color: colors2.colorOnBg }], children: col.header }) }, col.key)
|
|
1489
1527
|
) }),
|
|
1490
|
-
rows.map((row, rowIndex) => /* @__PURE__ */
|
|
1528
|
+
rows.map((row, rowIndex) => /* @__PURE__ */ jsx22(
|
|
1491
1529
|
View15,
|
|
1492
1530
|
{
|
|
1493
1531
|
style: [
|
|
1494
|
-
|
|
1532
|
+
styles19.row,
|
|
1495
1533
|
{ borderTopColor: colors2.colorBgSubtle },
|
|
1496
1534
|
rowIndex % 2 === 1 && { backgroundColor: colors2.colorBgSubtle }
|
|
1497
1535
|
],
|
|
1498
1536
|
accessibilityRole: "none",
|
|
1499
|
-
children: columns.map((col) => /* @__PURE__ */
|
|
1537
|
+
children: columns.map((col) => /* @__PURE__ */ jsx22(View15, { style: styles19.cell, children: col.render ? typeof col.render(row) === "string" ? /* @__PURE__ */ jsx22(ScaledText, { style: [styles19.cellText, { color: colors2.colorOnBg }], children: col.render(row) }) : col.render(row) : /* @__PURE__ */ jsx22(ScaledText, { style: [styles19.cellText, { color: colors2.colorOnBg }], children: String(row[col.key] ?? "") }) }, col.key))
|
|
1500
1538
|
},
|
|
1501
1539
|
rowIndex
|
|
1502
1540
|
))
|
|
@@ -1507,13 +1545,8 @@ function Table({
|
|
|
1507
1545
|
|
|
1508
1546
|
// src/components/ui/Calendar/Calendar.tsx
|
|
1509
1547
|
import { useState as useState5 } from "react";
|
|
1510
|
-
import {
|
|
1511
|
-
|
|
1512
|
-
View as View16,
|
|
1513
|
-
Text as Text17,
|
|
1514
|
-
Pressable as Pressable11
|
|
1515
|
-
} from "react-native";
|
|
1516
|
-
import { jsx as jsx21, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1548
|
+
import { StyleSheet as StyleSheet21, View as View16, Pressable as Pressable11 } from "react-native";
|
|
1549
|
+
import { jsx as jsx23, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1517
1550
|
var DAYS = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
|
|
1518
1551
|
var DAY_LABELS = {
|
|
1519
1552
|
Su: "Sunday",
|
|
@@ -1556,7 +1589,7 @@ function getFirstDayOfMonth(year, month) {
|
|
|
1556
1589
|
return new Date(year, month, 1).getDay();
|
|
1557
1590
|
}
|
|
1558
1591
|
var DAY_SIZE = 44;
|
|
1559
|
-
var
|
|
1592
|
+
var styles20 = StyleSheet21.create({
|
|
1560
1593
|
container: {
|
|
1561
1594
|
alignSelf: "flex-start"
|
|
1562
1595
|
},
|
|
@@ -1671,25 +1704,25 @@ function Calendar({
|
|
|
1671
1704
|
return /* @__PURE__ */ jsxs13(
|
|
1672
1705
|
View16,
|
|
1673
1706
|
{
|
|
1674
|
-
style: [
|
|
1707
|
+
style: [styles20.container, style],
|
|
1675
1708
|
accessibilityRole: "none",
|
|
1676
1709
|
accessibilityLabel: `${MONTHS[viewMonth]} ${viewYear} calendar`,
|
|
1677
1710
|
children: [
|
|
1678
|
-
/* @__PURE__ */ jsxs13(View16, { style:
|
|
1679
|
-
/* @__PURE__ */
|
|
1711
|
+
/* @__PURE__ */ jsxs13(View16, { style: styles20.header, children: [
|
|
1712
|
+
/* @__PURE__ */ jsx23(
|
|
1680
1713
|
Pressable11,
|
|
1681
1714
|
{
|
|
1682
1715
|
onPress: () => navigate(-1),
|
|
1683
1716
|
accessibilityRole: "button",
|
|
1684
1717
|
accessibilityLabel: "Previous month",
|
|
1685
|
-
style: ({ pressed }) => [
|
|
1686
|
-
children: /* @__PURE__ */
|
|
1718
|
+
style: ({ pressed }) => [styles20.navButton, pressed && styles20.pressed],
|
|
1719
|
+
children: /* @__PURE__ */ jsx23(ScaledText, { style: [styles20.navText, { color: colors2.colorOnBg }], children: "\u2039" })
|
|
1687
1720
|
}
|
|
1688
1721
|
),
|
|
1689
1722
|
/* @__PURE__ */ jsxs13(
|
|
1690
|
-
|
|
1723
|
+
ScaledText,
|
|
1691
1724
|
{
|
|
1692
|
-
style: [
|
|
1725
|
+
style: [styles20.monthYear, { color: colors2.colorOnBg }],
|
|
1693
1726
|
accessibilityRole: "text",
|
|
1694
1727
|
accessibilityLiveRegion: "polite",
|
|
1695
1728
|
children: [
|
|
@@ -1699,34 +1732,34 @@ function Calendar({
|
|
|
1699
1732
|
]
|
|
1700
1733
|
}
|
|
1701
1734
|
),
|
|
1702
|
-
/* @__PURE__ */
|
|
1735
|
+
/* @__PURE__ */ jsx23(
|
|
1703
1736
|
Pressable11,
|
|
1704
1737
|
{
|
|
1705
1738
|
onPress: () => navigate(1),
|
|
1706
1739
|
accessibilityRole: "button",
|
|
1707
1740
|
accessibilityLabel: "Next month",
|
|
1708
|
-
style: ({ pressed }) => [
|
|
1709
|
-
children: /* @__PURE__ */
|
|
1741
|
+
style: ({ pressed }) => [styles20.navButton, pressed && styles20.pressed],
|
|
1742
|
+
children: /* @__PURE__ */ jsx23(ScaledText, { style: [styles20.navText, { color: colors2.colorOnBg }], children: "\u203A" })
|
|
1710
1743
|
}
|
|
1711
1744
|
)
|
|
1712
1745
|
] }),
|
|
1713
|
-
/* @__PURE__ */
|
|
1714
|
-
|
|
1746
|
+
/* @__PURE__ */ jsx23(View16, { style: styles20.weekRow, children: DAYS.map((d) => /* @__PURE__ */ jsx23(View16, { style: styles20.weekday, children: /* @__PURE__ */ jsx23(
|
|
1747
|
+
ScaledText,
|
|
1715
1748
|
{
|
|
1716
|
-
style: [
|
|
1749
|
+
style: [styles20.weekdayText, { color: colors2.colorOnBgSubtle }],
|
|
1717
1750
|
accessibilityLabel: DAY_LABELS[d],
|
|
1718
1751
|
children: d
|
|
1719
1752
|
}
|
|
1720
1753
|
) }, d)) }),
|
|
1721
|
-
/* @__PURE__ */
|
|
1754
|
+
/* @__PURE__ */ jsx23(View16, { style: styles20.grid, children: rows.map((row, rowIndex) => /* @__PURE__ */ jsx23(View16, { style: styles20.dayRow, children: row.map((cell, colIndex) => {
|
|
1722
1755
|
if (!cell) {
|
|
1723
|
-
return /* @__PURE__ */
|
|
1756
|
+
return /* @__PURE__ */ jsx23(View16, { style: styles20.dayCell }, colIndex);
|
|
1724
1757
|
}
|
|
1725
1758
|
const date = new Date(viewYear, viewMonth, cell.day);
|
|
1726
1759
|
const isSelected = selected ? isSameDay(date, selected) : false;
|
|
1727
1760
|
const isToday = isSameDay(date, today);
|
|
1728
1761
|
const disabled = isOutOfRange(date, min, max);
|
|
1729
|
-
return /* @__PURE__ */
|
|
1762
|
+
return /* @__PURE__ */ jsx23(
|
|
1730
1763
|
Pressable11,
|
|
1731
1764
|
{
|
|
1732
1765
|
onPress: () => selectDay(cell.day),
|
|
@@ -1742,22 +1775,22 @@ function Calendar({
|
|
|
1742
1775
|
disabled
|
|
1743
1776
|
},
|
|
1744
1777
|
style: ({ pressed }) => [
|
|
1745
|
-
|
|
1778
|
+
styles20.dayCell,
|
|
1746
1779
|
isSelected && {
|
|
1747
1780
|
backgroundColor: colors2.colorInteractive
|
|
1748
1781
|
},
|
|
1749
1782
|
isToday && !isSelected && [
|
|
1750
|
-
|
|
1783
|
+
styles20.today,
|
|
1751
1784
|
{ borderColor: colors2.colorInteractive }
|
|
1752
1785
|
],
|
|
1753
|
-
disabled &&
|
|
1754
|
-
pressed && !disabled &&
|
|
1786
|
+
disabled && styles20.disabled,
|
|
1787
|
+
pressed && !disabled && styles20.pressed
|
|
1755
1788
|
],
|
|
1756
|
-
children: /* @__PURE__ */
|
|
1757
|
-
|
|
1789
|
+
children: /* @__PURE__ */ jsx23(
|
|
1790
|
+
ScaledText,
|
|
1758
1791
|
{
|
|
1759
1792
|
style: [
|
|
1760
|
-
|
|
1793
|
+
styles20.dayText,
|
|
1761
1794
|
{
|
|
1762
1795
|
color: isSelected ? colors2.colorOnInteractive : colors2.colorOnBg,
|
|
1763
1796
|
fontWeight: isToday ? font.weight.semibold : font.weight.body
|
|
@@ -1777,18 +1810,11 @@ function Calendar({
|
|
|
1777
1810
|
|
|
1778
1811
|
// src/components/ui/Carousel/Carousel.tsx
|
|
1779
1812
|
import { useCallback as useCallback2, useRef as useRef3, useState as useState6 } from "react";
|
|
1780
|
-
import {
|
|
1781
|
-
|
|
1782
|
-
View as View17,
|
|
1783
|
-
Text as Text18,
|
|
1784
|
-
Pressable as Pressable12,
|
|
1785
|
-
ScrollView as ScrollView3,
|
|
1786
|
-
Dimensions
|
|
1787
|
-
} from "react-native";
|
|
1788
|
-
import { jsx as jsx22, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1813
|
+
import { StyleSheet as StyleSheet22, View as View17, Pressable as Pressable12, ScrollView as ScrollView3, Dimensions } from "react-native";
|
|
1814
|
+
import { jsx as jsx24, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1789
1815
|
var DOT_SIZE = 8;
|
|
1790
1816
|
var DOT_HIT_SIZE = 44;
|
|
1791
|
-
var
|
|
1817
|
+
var styles21 = StyleSheet22.create({
|
|
1792
1818
|
container: {
|
|
1793
1819
|
width: "100%"
|
|
1794
1820
|
},
|
|
@@ -1864,11 +1890,11 @@ function Carousel({
|
|
|
1864
1890
|
return /* @__PURE__ */ jsxs14(
|
|
1865
1891
|
View17,
|
|
1866
1892
|
{
|
|
1867
|
-
style: [
|
|
1893
|
+
style: [styles21.container, style],
|
|
1868
1894
|
accessibilityRole: "none",
|
|
1869
1895
|
accessibilityLabel: label,
|
|
1870
1896
|
children: [
|
|
1871
|
-
/* @__PURE__ */
|
|
1897
|
+
/* @__PURE__ */ jsx24(
|
|
1872
1898
|
ScrollView3,
|
|
1873
1899
|
{
|
|
1874
1900
|
ref: scrollRef,
|
|
@@ -1878,12 +1904,12 @@ function Carousel({
|
|
|
1878
1904
|
onScroll: handleScroll,
|
|
1879
1905
|
scrollEventThrottle: 16,
|
|
1880
1906
|
onLayout: (e) => setSlideWidth(e.nativeEvent.layout.width),
|
|
1881
|
-
style:
|
|
1882
|
-
children: items.map((item, index) => /* @__PURE__ */
|
|
1907
|
+
style: styles21.scrollView,
|
|
1908
|
+
children: items.map((item, index) => /* @__PURE__ */ jsx24(View17, { style: [styles21.slide, { width: slideWidth }], children: item }, index))
|
|
1883
1909
|
}
|
|
1884
1910
|
),
|
|
1885
|
-
/* @__PURE__ */ jsxs14(View17, { style:
|
|
1886
|
-
/* @__PURE__ */
|
|
1911
|
+
/* @__PURE__ */ jsxs14(View17, { style: styles21.nav, children: [
|
|
1912
|
+
/* @__PURE__ */ jsx24(
|
|
1887
1913
|
Pressable12,
|
|
1888
1914
|
{
|
|
1889
1915
|
onPress: () => scrollTo(activeIndex - 1),
|
|
@@ -1892,26 +1918,26 @@ function Carousel({
|
|
|
1892
1918
|
accessibilityLabel: "Previous",
|
|
1893
1919
|
accessibilityState: { disabled: activeIndex <= 0 },
|
|
1894
1920
|
style: ({ pressed }) => [
|
|
1895
|
-
|
|
1921
|
+
styles21.navButton,
|
|
1896
1922
|
activeIndex <= 0 && { opacity: 0.4 },
|
|
1897
|
-
pressed &&
|
|
1923
|
+
pressed && styles21.pressed
|
|
1898
1924
|
],
|
|
1899
|
-
children: /* @__PURE__ */
|
|
1925
|
+
children: /* @__PURE__ */ jsx24(ScaledText, { style: [styles21.navText, { color: colors2.colorOnBg }], children: "\u2039" })
|
|
1900
1926
|
}
|
|
1901
1927
|
),
|
|
1902
|
-
/* @__PURE__ */
|
|
1928
|
+
/* @__PURE__ */ jsx24(View17, { style: styles21.dots, children: items.map((_, index) => /* @__PURE__ */ jsx24(
|
|
1903
1929
|
Pressable12,
|
|
1904
1930
|
{
|
|
1905
1931
|
onPress: () => scrollTo(index),
|
|
1906
1932
|
accessibilityRole: "button",
|
|
1907
1933
|
accessibilityLabel: `Go to slide ${index + 1}`,
|
|
1908
1934
|
accessibilityState: { selected: activeIndex === index },
|
|
1909
|
-
style:
|
|
1910
|
-
children: /* @__PURE__ */
|
|
1935
|
+
style: styles21.dotWrapper,
|
|
1936
|
+
children: /* @__PURE__ */ jsx24(
|
|
1911
1937
|
View17,
|
|
1912
1938
|
{
|
|
1913
1939
|
style: [
|
|
1914
|
-
|
|
1940
|
+
styles21.dot,
|
|
1915
1941
|
{
|
|
1916
1942
|
backgroundColor: activeIndex === index ? colors2.colorInteractive : colors2.colorBgSubtle
|
|
1917
1943
|
}
|
|
@@ -1921,7 +1947,7 @@ function Carousel({
|
|
|
1921
1947
|
},
|
|
1922
1948
|
index
|
|
1923
1949
|
)) }),
|
|
1924
|
-
/* @__PURE__ */
|
|
1950
|
+
/* @__PURE__ */ jsx24(
|
|
1925
1951
|
Pressable12,
|
|
1926
1952
|
{
|
|
1927
1953
|
onPress: () => scrollTo(activeIndex + 1),
|
|
@@ -1930,11 +1956,11 @@ function Carousel({
|
|
|
1930
1956
|
accessibilityLabel: "Next",
|
|
1931
1957
|
accessibilityState: { disabled: activeIndex >= items.length - 1 },
|
|
1932
1958
|
style: ({ pressed }) => [
|
|
1933
|
-
|
|
1959
|
+
styles21.navButton,
|
|
1934
1960
|
activeIndex >= items.length - 1 && { opacity: 0.4 },
|
|
1935
|
-
pressed &&
|
|
1961
|
+
pressed && styles21.pressed
|
|
1936
1962
|
],
|
|
1937
|
-
children: /* @__PURE__ */
|
|
1963
|
+
children: /* @__PURE__ */ jsx24(ScaledText, { style: [styles21.navText, { color: colors2.colorOnBg }], children: "\u203A" })
|
|
1938
1964
|
}
|
|
1939
1965
|
)
|
|
1940
1966
|
] })
|
|
@@ -1944,8 +1970,8 @@ function Carousel({
|
|
|
1944
1970
|
}
|
|
1945
1971
|
|
|
1946
1972
|
// src/components/layout/Card/Card.tsx
|
|
1947
|
-
import { StyleSheet as
|
|
1948
|
-
import { jsx as
|
|
1973
|
+
import { StyleSheet as StyleSheet23, View as View18, Pressable as Pressable13 } from "react-native";
|
|
1974
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
1949
1975
|
var paddingMap = {
|
|
1950
1976
|
none: 0,
|
|
1951
1977
|
small: spacing.s,
|
|
@@ -1957,7 +1983,7 @@ var alignMap = {
|
|
|
1957
1983
|
center: "center",
|
|
1958
1984
|
end: "flex-end"
|
|
1959
1985
|
};
|
|
1960
|
-
var
|
|
1986
|
+
var styles22 = StyleSheet23.create({
|
|
1961
1987
|
card: {
|
|
1962
1988
|
borderRadius: border.radius.m,
|
|
1963
1989
|
overflow: "hidden"
|
|
@@ -1992,29 +2018,29 @@ function Card({
|
|
|
1992
2018
|
alignItems: alignMap[textAlign]
|
|
1993
2019
|
};
|
|
1994
2020
|
if (onPress) {
|
|
1995
|
-
return /* @__PURE__ */
|
|
2021
|
+
return /* @__PURE__ */ jsx25(
|
|
1996
2022
|
Pressable13,
|
|
1997
2023
|
{
|
|
1998
2024
|
onPress,
|
|
1999
2025
|
accessibilityRole: "button",
|
|
2000
2026
|
accessibilityLabel,
|
|
2001
|
-
style: ({ pressed }) => [
|
|
2027
|
+
style: ({ pressed }) => [styles22.card, variantStyle, inner, pressed && { opacity: 0.8 }, style],
|
|
2002
2028
|
children
|
|
2003
2029
|
}
|
|
2004
2030
|
);
|
|
2005
2031
|
}
|
|
2006
|
-
return /* @__PURE__ */
|
|
2032
|
+
return /* @__PURE__ */ jsx25(View18, { style: [styles22.card, variantStyle, inner, style], children });
|
|
2007
2033
|
}
|
|
2008
2034
|
|
|
2009
2035
|
// src/components/layout/SectionHeader/SectionHeader.tsx
|
|
2010
|
-
import { StyleSheet as
|
|
2011
|
-
import { jsx as
|
|
2036
|
+
import { StyleSheet as StyleSheet24, View as View19 } from "react-native";
|
|
2037
|
+
import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
2012
2038
|
var alignMap2 = {
|
|
2013
2039
|
start: "flex-start",
|
|
2014
2040
|
center: "center",
|
|
2015
2041
|
end: "flex-end"
|
|
2016
2042
|
};
|
|
2017
|
-
var titleStyles =
|
|
2043
|
+
var titleStyles = StyleSheet24.create({
|
|
2018
2044
|
small: {
|
|
2019
2045
|
fontSize: font.size.heading3,
|
|
2020
2046
|
fontFamily: font.family.heading,
|
|
@@ -2034,7 +2060,7 @@ var titleStyles = StyleSheet22.create({
|
|
|
2034
2060
|
lineHeight: lineHeight.heading1
|
|
2035
2061
|
}
|
|
2036
2062
|
});
|
|
2037
|
-
var
|
|
2063
|
+
var styles23 = StyleSheet24.create({
|
|
2038
2064
|
container: {
|
|
2039
2065
|
gap: spacing.xxs
|
|
2040
2066
|
},
|
|
@@ -2053,24 +2079,24 @@ function SectionHeader({
|
|
|
2053
2079
|
}) {
|
|
2054
2080
|
const { colors: colors2 } = useTheme();
|
|
2055
2081
|
const align = alignMap2[alignment];
|
|
2056
|
-
return /* @__PURE__ */ jsxs15(View19, { style: [
|
|
2057
|
-
/* @__PURE__ */
|
|
2058
|
-
|
|
2082
|
+
return /* @__PURE__ */ jsxs15(View19, { style: [styles23.container, { alignItems: align }, style], children: [
|
|
2083
|
+
/* @__PURE__ */ jsx26(
|
|
2084
|
+
ScaledText,
|
|
2059
2085
|
{
|
|
2060
2086
|
accessibilityRole: "header",
|
|
2061
2087
|
style: [titleStyles[size], { color: colors2.colorOnBg }],
|
|
2062
2088
|
children: title
|
|
2063
2089
|
}
|
|
2064
2090
|
),
|
|
2065
|
-
subtitle && /* @__PURE__ */
|
|
2091
|
+
subtitle && /* @__PURE__ */ jsx26(ScaledText, { style: [styles23.subtitle, { color: colors2.colorOnBgSubtle }], children: subtitle })
|
|
2066
2092
|
] });
|
|
2067
2093
|
}
|
|
2068
2094
|
|
|
2069
2095
|
// src/components/layout/IconWrapper/IconWrapper.tsx
|
|
2070
2096
|
import { View as View20 } from "react-native";
|
|
2071
|
-
import { jsx as
|
|
2097
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
2072
2098
|
function IconWrapper({ children, style, accessibilityElementsHidden }) {
|
|
2073
|
-
return /* @__PURE__ */
|
|
2099
|
+
return /* @__PURE__ */ jsx27(
|
|
2074
2100
|
View20,
|
|
2075
2101
|
{
|
|
2076
2102
|
style: [{ alignItems: "center", justifyContent: "center" }, style],
|
|
@@ -2082,9 +2108,9 @@ function IconWrapper({ children, style, accessibilityElementsHidden }) {
|
|
|
2082
2108
|
}
|
|
2083
2109
|
|
|
2084
2110
|
// src/components/layout/ButtonGroup/ButtonGroup.tsx
|
|
2085
|
-
import { StyleSheet as
|
|
2086
|
-
import { jsx as
|
|
2087
|
-
var
|
|
2111
|
+
import { StyleSheet as StyleSheet25, View as View21 } from "react-native";
|
|
2112
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
2113
|
+
var styles24 = StyleSheet25.create({
|
|
2088
2114
|
group: {
|
|
2089
2115
|
flexDirection: "row",
|
|
2090
2116
|
flexWrap: "wrap",
|
|
@@ -2097,11 +2123,11 @@ var styles23 = StyleSheet23.create({
|
|
|
2097
2123
|
});
|
|
2098
2124
|
function ButtonContainer({ children, variant, accessibilityLabel, style }) {
|
|
2099
2125
|
const isColumn = variant === "card" || variant === "modal";
|
|
2100
|
-
return /* @__PURE__ */
|
|
2126
|
+
return /* @__PURE__ */ jsx28(
|
|
2101
2127
|
View21,
|
|
2102
2128
|
{
|
|
2103
2129
|
accessibilityLabel,
|
|
2104
|
-
style: [isColumn ?
|
|
2130
|
+
style: [isColumn ? styles24.column : styles24.group, style],
|
|
2105
2131
|
children
|
|
2106
2132
|
}
|
|
2107
2133
|
);
|
|
@@ -2109,14 +2135,14 @@ function ButtonContainer({ children, variant, accessibilityLabel, style }) {
|
|
|
2109
2135
|
var ButtonGroup = ButtonContainer;
|
|
2110
2136
|
|
|
2111
2137
|
// src/components/interaction/Button/Button.tsx
|
|
2112
|
-
import { StyleSheet as
|
|
2113
|
-
import { jsx as
|
|
2138
|
+
import { StyleSheet as StyleSheet26, Pressable as Pressable14, View as View22 } from "react-native";
|
|
2139
|
+
import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
2114
2140
|
var sizeTokens = {
|
|
2115
|
-
small: { height: 36, px: spacing.m, fontSize: font.size.bodyS
|
|
2116
|
-
medium: { height: 48, px: spacing.m, fontSize: font.size.body
|
|
2117
|
-
large: { height: 56, px: spacing.xxl, fontSize: font.size.heading3
|
|
2141
|
+
small: { height: 36, px: spacing.m, fontSize: font.size.bodyS },
|
|
2142
|
+
medium: { height: 48, px: spacing.m, fontSize: font.size.body },
|
|
2143
|
+
large: { height: 56, px: spacing.xxl, fontSize: font.size.heading3 }
|
|
2118
2144
|
};
|
|
2119
|
-
var
|
|
2145
|
+
var styles25 = StyleSheet26.create({
|
|
2120
2146
|
pressable: {
|
|
2121
2147
|
flexDirection: "row",
|
|
2122
2148
|
alignItems: "center",
|
|
@@ -2127,7 +2153,9 @@ var styles24 = StyleSheet24.create({
|
|
|
2127
2153
|
label: {
|
|
2128
2154
|
fontFamily: font.family.body,
|
|
2129
2155
|
fontWeight: font.weight.semibold,
|
|
2130
|
-
includeFontPadding: false
|
|
2156
|
+
includeFontPadding: false,
|
|
2157
|
+
flexShrink: 1,
|
|
2158
|
+
textAlign: "center"
|
|
2131
2159
|
}
|
|
2132
2160
|
});
|
|
2133
2161
|
function Button({
|
|
@@ -2143,18 +2171,22 @@ function Button({
|
|
|
2143
2171
|
style
|
|
2144
2172
|
}) {
|
|
2145
2173
|
const { colors: colors2 } = useTheme();
|
|
2146
|
-
const { height, px, fontSize
|
|
2174
|
+
const { height, px, fontSize } = sizeTokens[size];
|
|
2147
2175
|
const primaryColor = colors2.colorInteractive;
|
|
2148
2176
|
const onPrimaryColor = colors2.colorOnInteractive;
|
|
2149
2177
|
const outlineTextColor = colors2.colorInteractiveOnBg;
|
|
2150
2178
|
const isOutline = variant === "outline" || variant === "ghost";
|
|
2151
2179
|
const containerStyle = {
|
|
2152
|
-
height,
|
|
2180
|
+
minHeight: height,
|
|
2153
2181
|
paddingHorizontal: isIconOnly ? spacing.xs : px,
|
|
2154
|
-
|
|
2182
|
+
// A text button has medium corners on every size; an icon-only button stays round.
|
|
2183
|
+
borderRadius: isIconOnly ? border.radius.full : border.radius.m,
|
|
2155
2184
|
opacity: disabled ? 0.4 : 1,
|
|
2156
2185
|
// Icon-only: square with equal xs padding on both axes.
|
|
2157
2186
|
...isIconOnly && { aspectRatio: 1, paddingVertical: spacing.xs },
|
|
2187
|
+
// Icon-only keeps a fixed height (stays square); a text button gets vertical padding
|
|
2188
|
+
// instead, so a wrapped label grows the button from minHeight rather than clipping.
|
|
2189
|
+
...isIconOnly ? { height } : { paddingVertical: spacing.xxs },
|
|
2158
2190
|
...variant === "default" && { backgroundColor: primaryColor },
|
|
2159
2191
|
...isOutline && {
|
|
2160
2192
|
backgroundColor: "transparent",
|
|
@@ -2171,21 +2203,21 @@ function Button({
|
|
|
2171
2203
|
accessibilityRole: "button",
|
|
2172
2204
|
accessibilityLabel,
|
|
2173
2205
|
accessibilityState: { disabled },
|
|
2174
|
-
style: ({ pressed }) => [
|
|
2206
|
+
style: ({ pressed }) => [styles25.pressable, containerStyle, pressed && { opacity: 0.75 }, style],
|
|
2175
2207
|
children: [
|
|
2176
|
-
iconStart && /* @__PURE__ */
|
|
2177
|
-
children && (isIconOnly ? children : /* @__PURE__ */
|
|
2178
|
-
iconEnd && /* @__PURE__ */
|
|
2208
|
+
iconStart && /* @__PURE__ */ jsx29(View22, { importantForAccessibility: "no-hide-descendants", accessibilityElementsHidden: true, children: iconStart }),
|
|
2209
|
+
children && (isIconOnly ? children : /* @__PURE__ */ jsx29(ScaledText, { style: [styles25.label, { fontSize, color: textColor }], children })),
|
|
2210
|
+
iconEnd && /* @__PURE__ */ jsx29(View22, { importantForAccessibility: "no-hide-descendants", children: iconEnd })
|
|
2179
2211
|
]
|
|
2180
2212
|
}
|
|
2181
2213
|
);
|
|
2182
2214
|
}
|
|
2183
2215
|
|
|
2184
2216
|
// src/components/interaction/Rating/Rating.tsx
|
|
2185
|
-
import { StyleSheet as
|
|
2186
|
-
import { jsx as
|
|
2217
|
+
import { StyleSheet as StyleSheet27, View as View23 } from "react-native";
|
|
2218
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
2187
2219
|
var STAR_SIZE = 24;
|
|
2188
|
-
var
|
|
2220
|
+
var styles26 = StyleSheet27.create({
|
|
2189
2221
|
container: {
|
|
2190
2222
|
flexDirection: "row",
|
|
2191
2223
|
alignItems: "center"
|
|
@@ -2198,17 +2230,17 @@ var styles25 = StyleSheet25.create({
|
|
|
2198
2230
|
function Rating({ value, max = 5, style, accessibilityLabel }) {
|
|
2199
2231
|
const { colors: colors2 } = useTheme();
|
|
2200
2232
|
const label = accessibilityLabel ?? `${value} out of ${max} stars`;
|
|
2201
|
-
return /* @__PURE__ */
|
|
2233
|
+
return /* @__PURE__ */ jsx30(
|
|
2202
2234
|
View23,
|
|
2203
2235
|
{
|
|
2204
|
-
style: [
|
|
2236
|
+
style: [styles26.container, style],
|
|
2205
2237
|
accessibilityRole: "image",
|
|
2206
2238
|
accessibilityLabel: label,
|
|
2207
|
-
children: Array.from({ length: max }).map((_, i) => /* @__PURE__ */
|
|
2208
|
-
|
|
2239
|
+
children: Array.from({ length: max }).map((_, i) => /* @__PURE__ */ jsx30(
|
|
2240
|
+
ScaledText,
|
|
2209
2241
|
{
|
|
2210
2242
|
style: [
|
|
2211
|
-
|
|
2243
|
+
styles26.star,
|
|
2212
2244
|
{ color: i < value ? colors2.colorWarning : colors2.colorBgSubtle }
|
|
2213
2245
|
],
|
|
2214
2246
|
importantForAccessibility: "no",
|
|
@@ -2222,15 +2254,14 @@ function Rating({ value, max = 5, style, accessibilityLabel }) {
|
|
|
2222
2254
|
}
|
|
2223
2255
|
|
|
2224
2256
|
// src/components/interaction/form/Switch/Switch.tsx
|
|
2225
|
-
import { Switch as RNSwitch, View as View24, StyleSheet as
|
|
2257
|
+
import { Switch as RNSwitch, View as View24, StyleSheet as StyleSheet29 } from "react-native";
|
|
2226
2258
|
|
|
2227
2259
|
// src/components/interaction/form/atoms/Label.tsx
|
|
2228
|
-
import {
|
|
2229
|
-
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
2260
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
2230
2261
|
function Label({ label, style }) {
|
|
2231
2262
|
const { colors: colors2 } = useTheme();
|
|
2232
|
-
return /* @__PURE__ */
|
|
2233
|
-
|
|
2263
|
+
return /* @__PURE__ */ jsx31(
|
|
2264
|
+
ScaledText,
|
|
2234
2265
|
{
|
|
2235
2266
|
style: [
|
|
2236
2267
|
{
|
|
@@ -2248,9 +2279,9 @@ function Label({ label, style }) {
|
|
|
2248
2279
|
}
|
|
2249
2280
|
|
|
2250
2281
|
// src/components/interaction/form/atoms/Message.tsx
|
|
2251
|
-
import { StyleSheet as
|
|
2252
|
-
import { jsx as
|
|
2253
|
-
var
|
|
2282
|
+
import { StyleSheet as StyleSheet28 } from "react-native";
|
|
2283
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
2284
|
+
var styles27 = StyleSheet28.create({
|
|
2254
2285
|
base: {
|
|
2255
2286
|
fontFamily: font.family.body,
|
|
2256
2287
|
fontSize: font.size.bodyS,
|
|
@@ -2261,20 +2292,20 @@ function Message({ message, type, style }) {
|
|
|
2261
2292
|
const { colors: colors2 } = useTheme();
|
|
2262
2293
|
if (!message) return null;
|
|
2263
2294
|
const color = type === "error" ? colors2.colorError : colors2.colorOnBgSubtle;
|
|
2264
|
-
return /* @__PURE__ */
|
|
2265
|
-
|
|
2295
|
+
return /* @__PURE__ */ jsx32(
|
|
2296
|
+
ScaledText,
|
|
2266
2297
|
{
|
|
2267
2298
|
accessibilityRole: type === "error" ? "alert" : "none",
|
|
2268
2299
|
accessibilityLiveRegion: type === "error" ? "assertive" : "polite",
|
|
2269
|
-
style: [
|
|
2300
|
+
style: [styles27.base, { color }, style],
|
|
2270
2301
|
children: message
|
|
2271
2302
|
}
|
|
2272
2303
|
);
|
|
2273
2304
|
}
|
|
2274
2305
|
|
|
2275
2306
|
// src/components/interaction/form/Switch/Switch.tsx
|
|
2276
|
-
import { jsx as
|
|
2277
|
-
var
|
|
2307
|
+
import { jsx as jsx33, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
2308
|
+
var styles28 = StyleSheet29.create({
|
|
2278
2309
|
container: {
|
|
2279
2310
|
gap: spacing.xxs
|
|
2280
2311
|
},
|
|
@@ -2294,9 +2325,9 @@ function Switch({
|
|
|
2294
2325
|
style
|
|
2295
2326
|
}) {
|
|
2296
2327
|
const { colors: colors2 } = useTheme();
|
|
2297
|
-
return /* @__PURE__ */ jsxs17(View24, { style: [
|
|
2298
|
-
/* @__PURE__ */ jsxs17(View24, { style:
|
|
2299
|
-
/* @__PURE__ */
|
|
2328
|
+
return /* @__PURE__ */ jsxs17(View24, { style: [styles28.container, style], children: [
|
|
2329
|
+
/* @__PURE__ */ jsxs17(View24, { style: styles28.row, children: [
|
|
2330
|
+
/* @__PURE__ */ jsx33(
|
|
2300
2331
|
RNSwitch,
|
|
2301
2332
|
{
|
|
2302
2333
|
value,
|
|
@@ -2309,18 +2340,18 @@ function Switch({
|
|
|
2309
2340
|
trackColor: { false: colors2.colorBgSubtle, true: colors2.colorBlueSubtle }
|
|
2310
2341
|
}
|
|
2311
2342
|
),
|
|
2312
|
-
/* @__PURE__ */
|
|
2343
|
+
/* @__PURE__ */ jsx33(Label, { label })
|
|
2313
2344
|
] }),
|
|
2314
|
-
/* @__PURE__ */
|
|
2315
|
-
/* @__PURE__ */
|
|
2345
|
+
/* @__PURE__ */ jsx33(Message, { type: "error", message: error }),
|
|
2346
|
+
/* @__PURE__ */ jsx33(Message, { type: "hint", message: hint })
|
|
2316
2347
|
] });
|
|
2317
2348
|
}
|
|
2318
2349
|
|
|
2319
2350
|
// src/components/interaction/form/Checkbox/Checkbox.tsx
|
|
2320
|
-
import { StyleSheet as
|
|
2321
|
-
import { jsx as
|
|
2351
|
+
import { StyleSheet as StyleSheet30, View as View25, Pressable as Pressable15 } from "react-native";
|
|
2352
|
+
import { jsx as jsx34, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2322
2353
|
var BOX = 22;
|
|
2323
|
-
var
|
|
2354
|
+
var styles29 = StyleSheet30.create({
|
|
2324
2355
|
container: {
|
|
2325
2356
|
gap: spacing.xxs
|
|
2326
2357
|
},
|
|
@@ -2357,7 +2388,7 @@ function Checkbox({
|
|
|
2357
2388
|
const { colors: colors2 } = useTheme();
|
|
2358
2389
|
const borderColor = error ? colors2.colorError : checked ? colors2.colorInteractive : colors2.colorOnBg;
|
|
2359
2390
|
const bgColor = checked ? colors2.colorInteractive : "transparent";
|
|
2360
|
-
return /* @__PURE__ */ jsxs18(View25, { style: [
|
|
2391
|
+
return /* @__PURE__ */ jsxs18(View25, { style: [styles29.container, style], children: [
|
|
2361
2392
|
/* @__PURE__ */ jsxs18(
|
|
2362
2393
|
Pressable15,
|
|
2363
2394
|
{
|
|
@@ -2366,22 +2397,22 @@ function Checkbox({
|
|
|
2366
2397
|
accessibilityLabel: typeof label === "string" ? label : name,
|
|
2367
2398
|
accessibilityState: { checked, disabled },
|
|
2368
2399
|
disabled,
|
|
2369
|
-
style: ({ pressed }) => [
|
|
2400
|
+
style: ({ pressed }) => [styles29.row, pressed && { opacity: 0.7 }, disabled && { opacity: 0.4 }],
|
|
2370
2401
|
children: [
|
|
2371
|
-
/* @__PURE__ */
|
|
2372
|
-
/* @__PURE__ */
|
|
2402
|
+
/* @__PURE__ */ jsx34(View25, { style: [styles29.box, { borderColor, backgroundColor: bgColor }], children: checked && /* @__PURE__ */ jsx34(Label, { label: "\u2713", style: [styles29.checkmark, { color: colors2.colorOnInteractive }] }) }),
|
|
2403
|
+
/* @__PURE__ */ jsx34(Label, { label })
|
|
2373
2404
|
]
|
|
2374
2405
|
}
|
|
2375
2406
|
),
|
|
2376
|
-
/* @__PURE__ */
|
|
2377
|
-
/* @__PURE__ */
|
|
2407
|
+
/* @__PURE__ */ jsx34(Message, { type: "error", message: error }),
|
|
2408
|
+
/* @__PURE__ */ jsx34(Message, { type: "hint", message: hint })
|
|
2378
2409
|
] });
|
|
2379
2410
|
}
|
|
2380
2411
|
|
|
2381
2412
|
// src/components/interaction/form/CheckboxGroup/CheckboxGroup.tsx
|
|
2382
|
-
import { StyleSheet as
|
|
2383
|
-
import { jsx as
|
|
2384
|
-
var
|
|
2413
|
+
import { StyleSheet as StyleSheet31, View as View26 } from "react-native";
|
|
2414
|
+
import { jsx as jsx35, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2415
|
+
var styles30 = StyleSheet31.create({
|
|
2385
2416
|
container: {
|
|
2386
2417
|
gap: spacing.xs
|
|
2387
2418
|
},
|
|
@@ -2411,28 +2442,28 @@ function CheckboxGroup({
|
|
|
2411
2442
|
return /* @__PURE__ */ jsxs19(
|
|
2412
2443
|
View26,
|
|
2413
2444
|
{
|
|
2414
|
-
style: [
|
|
2445
|
+
style: [styles30.container, disabled && { opacity: 0.4 }, style],
|
|
2415
2446
|
accessibilityRole: "none",
|
|
2416
2447
|
accessibilityLabel: legend,
|
|
2417
2448
|
children: [
|
|
2418
|
-
/* @__PURE__ */ jsxs19(
|
|
2449
|
+
/* @__PURE__ */ jsxs19(ScaledText, { style: [styles30.legend, { color: colors2.colorOnBg }], children: [
|
|
2419
2450
|
legend,
|
|
2420
|
-
required && /* @__PURE__ */
|
|
2451
|
+
required && /* @__PURE__ */ jsx35(ScaledText, { style: [styles30.required, { color: colors2.colorOnBgSubtle }], children: " *" })
|
|
2421
2452
|
] }),
|
|
2422
|
-
/* @__PURE__ */
|
|
2423
|
-
/* @__PURE__ */
|
|
2424
|
-
/* @__PURE__ */
|
|
2453
|
+
/* @__PURE__ */ jsx35(View26, { style: styles30.items, children }),
|
|
2454
|
+
/* @__PURE__ */ jsx35(Message, { type: "error", message: error }),
|
|
2455
|
+
/* @__PURE__ */ jsx35(Message, { type: "hint", message: hint })
|
|
2425
2456
|
]
|
|
2426
2457
|
}
|
|
2427
2458
|
);
|
|
2428
2459
|
}
|
|
2429
2460
|
|
|
2430
2461
|
// src/components/interaction/form/Radio/Radio.tsx
|
|
2431
|
-
import { StyleSheet as
|
|
2432
|
-
import { jsx as
|
|
2462
|
+
import { StyleSheet as StyleSheet32, View as View27, Pressable as Pressable16 } from "react-native";
|
|
2463
|
+
import { jsx as jsx36, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2433
2464
|
var DOT = 22;
|
|
2434
2465
|
var INNER = 10;
|
|
2435
|
-
var
|
|
2466
|
+
var styles31 = StyleSheet32.create({
|
|
2436
2467
|
container: {
|
|
2437
2468
|
gap: spacing.xxs
|
|
2438
2469
|
},
|
|
@@ -2468,7 +2499,7 @@ function Radio({
|
|
|
2468
2499
|
}) {
|
|
2469
2500
|
const { colors: colors2 } = useTheme();
|
|
2470
2501
|
const borderColor = error ? colors2.colorError : checked ? colors2.colorInteractive : colors2.colorOnBg;
|
|
2471
|
-
return /* @__PURE__ */ jsxs20(View27, { style: [
|
|
2502
|
+
return /* @__PURE__ */ jsxs20(View27, { style: [styles31.container, style], children: [
|
|
2472
2503
|
/* @__PURE__ */ jsxs20(
|
|
2473
2504
|
Pressable16,
|
|
2474
2505
|
{
|
|
@@ -2477,22 +2508,22 @@ function Radio({
|
|
|
2477
2508
|
accessibilityLabel: typeof label === "string" ? label : name,
|
|
2478
2509
|
accessibilityState: { checked, disabled },
|
|
2479
2510
|
disabled,
|
|
2480
|
-
style: ({ pressed }) => [
|
|
2511
|
+
style: ({ pressed }) => [styles31.row, pressed && { opacity: 0.7 }, disabled && { opacity: 0.4 }],
|
|
2481
2512
|
children: [
|
|
2482
|
-
/* @__PURE__ */
|
|
2483
|
-
/* @__PURE__ */
|
|
2513
|
+
/* @__PURE__ */ jsx36(View27, { style: [styles31.outer, { borderColor }], children: checked && /* @__PURE__ */ jsx36(View27, { style: [styles31.inner, { backgroundColor: colors2.colorInteractive }] }) }),
|
|
2514
|
+
/* @__PURE__ */ jsx36(Label, { label })
|
|
2484
2515
|
]
|
|
2485
2516
|
}
|
|
2486
2517
|
),
|
|
2487
|
-
/* @__PURE__ */
|
|
2488
|
-
/* @__PURE__ */
|
|
2518
|
+
/* @__PURE__ */ jsx36(Message, { type: "error", message: error }),
|
|
2519
|
+
/* @__PURE__ */ jsx36(Message, { type: "hint", message: hint })
|
|
2489
2520
|
] });
|
|
2490
2521
|
}
|
|
2491
2522
|
|
|
2492
2523
|
// src/components/interaction/form/RadioGroup/RadioGroup.tsx
|
|
2493
|
-
import { StyleSheet as
|
|
2494
|
-
import { jsx as
|
|
2495
|
-
var
|
|
2524
|
+
import { StyleSheet as StyleSheet33, View as View28 } from "react-native";
|
|
2525
|
+
import { jsx as jsx37, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2526
|
+
var styles32 = StyleSheet33.create({
|
|
2496
2527
|
container: {
|
|
2497
2528
|
gap: spacing.xs
|
|
2498
2529
|
},
|
|
@@ -2522,26 +2553,26 @@ function RadioGroup({
|
|
|
2522
2553
|
return /* @__PURE__ */ jsxs21(
|
|
2523
2554
|
View28,
|
|
2524
2555
|
{
|
|
2525
|
-
style: [
|
|
2556
|
+
style: [styles32.container, disabled && { opacity: 0.4 }, style],
|
|
2526
2557
|
accessibilityRole: "radiogroup",
|
|
2527
2558
|
accessibilityLabel: legend,
|
|
2528
2559
|
children: [
|
|
2529
|
-
/* @__PURE__ */ jsxs21(
|
|
2560
|
+
/* @__PURE__ */ jsxs21(ScaledText, { style: [styles32.legend, { color: colors2.colorOnBg }], children: [
|
|
2530
2561
|
legend,
|
|
2531
|
-
required && /* @__PURE__ */
|
|
2562
|
+
required && /* @__PURE__ */ jsx37(ScaledText, { style: [styles32.required, { color: colors2.colorOnBgSubtle }], children: " *" })
|
|
2532
2563
|
] }),
|
|
2533
|
-
/* @__PURE__ */
|
|
2534
|
-
/* @__PURE__ */
|
|
2535
|
-
/* @__PURE__ */
|
|
2564
|
+
/* @__PURE__ */ jsx37(View28, { style: styles32.items, children }),
|
|
2565
|
+
/* @__PURE__ */ jsx37(Message, { type: "error", message: error }),
|
|
2566
|
+
/* @__PURE__ */ jsx37(Message, { type: "hint", message: hint })
|
|
2536
2567
|
]
|
|
2537
2568
|
}
|
|
2538
2569
|
);
|
|
2539
2570
|
}
|
|
2540
2571
|
|
|
2541
2572
|
// src/components/interaction/form/FileInput/FileInput.tsx
|
|
2542
|
-
import { StyleSheet as
|
|
2543
|
-
import { jsx as
|
|
2544
|
-
var
|
|
2573
|
+
import { StyleSheet as StyleSheet34, View as View29, Pressable as Pressable17 } from "react-native";
|
|
2574
|
+
import { jsx as jsx38, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2575
|
+
var styles33 = StyleSheet34.create({
|
|
2545
2576
|
container: {
|
|
2546
2577
|
gap: spacing.xxs
|
|
2547
2578
|
},
|
|
@@ -2553,7 +2584,7 @@ var styles32 = StyleSheet32.create({
|
|
|
2553
2584
|
paddingHorizontal: spacing.m,
|
|
2554
2585
|
borderWidth: 2,
|
|
2555
2586
|
borderStyle: "dashed",
|
|
2556
|
-
borderRadius: border.radius.
|
|
2587
|
+
borderRadius: border.radius.m,
|
|
2557
2588
|
minHeight: 120
|
|
2558
2589
|
},
|
|
2559
2590
|
icon: {
|
|
@@ -2596,8 +2627,8 @@ function FileInput({
|
|
|
2596
2627
|
}) {
|
|
2597
2628
|
const { colors: colors2 } = useTheme();
|
|
2598
2629
|
const borderColor = error ? colors2.colorError : colors2.colorBgSubtle;
|
|
2599
|
-
return /* @__PURE__ */ jsxs22(View29, { style: [
|
|
2600
|
-
/* @__PURE__ */
|
|
2630
|
+
return /* @__PURE__ */ jsxs22(View29, { style: [styles33.container, style], testID: name, children: [
|
|
2631
|
+
/* @__PURE__ */ jsx38(
|
|
2601
2632
|
Label,
|
|
2602
2633
|
{
|
|
2603
2634
|
label: required ? `${label} *` : label
|
|
@@ -2612,7 +2643,7 @@ function FileInput({
|
|
|
2612
2643
|
accessibilityLabel: `${label}, tap to select file`,
|
|
2613
2644
|
accessibilityState: { disabled },
|
|
2614
2645
|
style: ({ pressed }) => [
|
|
2615
|
-
|
|
2646
|
+
styles33.dropZone,
|
|
2616
2647
|
{
|
|
2617
2648
|
borderColor,
|
|
2618
2649
|
backgroundColor: "transparent"
|
|
@@ -2621,42 +2652,35 @@ function FileInput({
|
|
|
2621
2652
|
disabled && { opacity: 0.4 }
|
|
2622
2653
|
],
|
|
2623
2654
|
children: [
|
|
2624
|
-
/* @__PURE__ */
|
|
2625
|
-
/* @__PURE__ */
|
|
2626
|
-
fileNames.length > 0 && /* @__PURE__ */
|
|
2627
|
-
accept && /* @__PURE__ */
|
|
2655
|
+
/* @__PURE__ */ jsx38(ScaledText, { style: [styles33.icon, { color: colors2.colorInteractive }], children: "\u2191" }),
|
|
2656
|
+
/* @__PURE__ */ jsx38(ScaledText, { style: [styles33.prompt, { color: colors2.colorOnBgSubtle }], children: fileNames.length > 0 ? "Selected files:" : "Tap to select file" }),
|
|
2657
|
+
fileNames.length > 0 && /* @__PURE__ */ jsx38(View29, { style: styles33.fileList, children: fileNames.map((fileName) => /* @__PURE__ */ jsx38(ScaledText, { style: [styles33.fileName, { color: colors2.colorOnBg }], children: fileName }, fileName)) }),
|
|
2658
|
+
accept && /* @__PURE__ */ jsx38(ScaledText, { style: [styles33.acceptHint, { color: colors2.colorOnBgSubtle }], children: accept })
|
|
2628
2659
|
]
|
|
2629
2660
|
}
|
|
2630
2661
|
),
|
|
2631
|
-
/* @__PURE__ */
|
|
2632
|
-
/* @__PURE__ */
|
|
2662
|
+
/* @__PURE__ */ jsx38(Message, { type: "error", message: error }),
|
|
2663
|
+
/* @__PURE__ */ jsx38(Message, { type: "hint", message: hint })
|
|
2633
2664
|
] });
|
|
2634
2665
|
}
|
|
2635
2666
|
|
|
2636
2667
|
// src/components/interaction/form/Combobox/Combobox.tsx
|
|
2637
2668
|
import { useState as useState7, useMemo as useMemo2 } from "react";
|
|
2638
|
-
import {
|
|
2639
|
-
StyleSheet as StyleSheet33,
|
|
2640
|
-
View as View30,
|
|
2641
|
-
TextInput,
|
|
2642
|
-
Pressable as Pressable18,
|
|
2643
|
-
Text as Text27,
|
|
2644
|
-
ScrollView as ScrollView4
|
|
2645
|
-
} from "react-native";
|
|
2669
|
+
import { StyleSheet as StyleSheet35, View as View30, Pressable as Pressable18, ScrollView as ScrollView4 } from "react-native";
|
|
2646
2670
|
|
|
2647
2671
|
// src/components/interaction/form/atoms/inputHelpers.ts
|
|
2648
2672
|
var OPTICAL_TEXT_SHIFT = -1.5;
|
|
2649
2673
|
|
|
2650
2674
|
// src/components/interaction/form/Combobox/Combobox.tsx
|
|
2651
|
-
import { jsx as
|
|
2675
|
+
import { jsx as jsx39, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2652
2676
|
var INPUT_HEIGHT = 44;
|
|
2653
2677
|
var MAX_DROPDOWN_HEIGHT = 200;
|
|
2654
|
-
var
|
|
2678
|
+
var styles34 = StyleSheet35.create({
|
|
2655
2679
|
container: {
|
|
2656
2680
|
gap: spacing.xxs
|
|
2657
2681
|
},
|
|
2658
2682
|
/**
|
|
2659
|
-
* Draws the
|
|
2683
|
+
* Draws the rounded border and provides the fixed 44pt touch-target height.
|
|
2660
2684
|
* justifyContent: 'center' vertically centers the inner TextInput.
|
|
2661
2685
|
* position: 'relative' is required for the dropdown's absolute positioning.
|
|
2662
2686
|
*/
|
|
@@ -2665,7 +2689,7 @@ var styles33 = StyleSheet33.create({
|
|
|
2665
2689
|
height: INPUT_HEIGHT,
|
|
2666
2690
|
justifyContent: "center",
|
|
2667
2691
|
borderWidth: 1,
|
|
2668
|
-
borderRadius: border.radius.
|
|
2692
|
+
borderRadius: border.radius.m
|
|
2669
2693
|
},
|
|
2670
2694
|
/**
|
|
2671
2695
|
* No vertical padding: iOS centers text automatically inside the wrapper height.
|
|
@@ -2747,13 +2771,13 @@ function Combobox({
|
|
|
2747
2771
|
setTimeout(() => setIsOpen(false), 150);
|
|
2748
2772
|
};
|
|
2749
2773
|
const borderColor = error ? colors2.colorError : colors2.colorOnBg;
|
|
2750
|
-
return /* @__PURE__ */ jsxs23(View30, { style: [
|
|
2751
|
-
/* @__PURE__ */
|
|
2774
|
+
return /* @__PURE__ */ jsxs23(View30, { style: [styles34.container, style], children: [
|
|
2775
|
+
/* @__PURE__ */ jsx39(Label, { label }),
|
|
2752
2776
|
/* @__PURE__ */ jsxs23(
|
|
2753
2777
|
View30,
|
|
2754
2778
|
{
|
|
2755
2779
|
style: [
|
|
2756
|
-
|
|
2780
|
+
styles34.inputWrapper,
|
|
2757
2781
|
{
|
|
2758
2782
|
borderColor,
|
|
2759
2783
|
backgroundColor: colors2.colorBg
|
|
@@ -2761,8 +2785,8 @@ function Combobox({
|
|
|
2761
2785
|
disabled && { opacity: 0.4 }
|
|
2762
2786
|
],
|
|
2763
2787
|
children: [
|
|
2764
|
-
/* @__PURE__ */
|
|
2765
|
-
|
|
2788
|
+
/* @__PURE__ */ jsx39(
|
|
2789
|
+
ScaledTextInput,
|
|
2766
2790
|
{
|
|
2767
2791
|
value: inputValue,
|
|
2768
2792
|
onChangeText: handleChangeText,
|
|
@@ -2775,16 +2799,16 @@ function Combobox({
|
|
|
2775
2799
|
accessibilityLabel: typeof label === "string" ? label : name,
|
|
2776
2800
|
accessibilityState: { disabled, expanded: isOpen },
|
|
2777
2801
|
style: [
|
|
2778
|
-
|
|
2802
|
+
styles34.input,
|
|
2779
2803
|
{ color: colors2.colorOnBg }
|
|
2780
2804
|
]
|
|
2781
2805
|
}
|
|
2782
2806
|
),
|
|
2783
|
-
isOpen && filtered.length > 0 && /* @__PURE__ */
|
|
2807
|
+
isOpen && filtered.length > 0 && /* @__PURE__ */ jsx39(
|
|
2784
2808
|
ScrollView4,
|
|
2785
2809
|
{
|
|
2786
2810
|
style: [
|
|
2787
|
-
|
|
2811
|
+
styles34.dropdown,
|
|
2788
2812
|
{
|
|
2789
2813
|
borderColor: colors2.colorBgSubtle,
|
|
2790
2814
|
backgroundColor: colors2.colorBg
|
|
@@ -2795,7 +2819,7 @@ function Combobox({
|
|
|
2795
2819
|
children: filtered.map((option) => {
|
|
2796
2820
|
const isSelected = option.value === value;
|
|
2797
2821
|
const isDisabled = option.disabled;
|
|
2798
|
-
return /* @__PURE__ */
|
|
2822
|
+
return /* @__PURE__ */ jsx39(
|
|
2799
2823
|
Pressable18,
|
|
2800
2824
|
{
|
|
2801
2825
|
onPress: () => !isDisabled && selectOption(option),
|
|
@@ -2804,16 +2828,16 @@ function Combobox({
|
|
|
2804
2828
|
accessibilityLabel: option.label,
|
|
2805
2829
|
accessibilityState: { selected: isSelected, disabled: isDisabled },
|
|
2806
2830
|
style: ({ pressed }) => [
|
|
2807
|
-
|
|
2831
|
+
styles34.option,
|
|
2808
2832
|
isSelected && { backgroundColor: colors2.colorBlueSubtle },
|
|
2809
2833
|
pressed && !isDisabled && { backgroundColor: colors2.colorBgSubtle },
|
|
2810
2834
|
isDisabled && { opacity: 0.4 }
|
|
2811
2835
|
],
|
|
2812
|
-
children: /* @__PURE__ */
|
|
2813
|
-
|
|
2836
|
+
children: /* @__PURE__ */ jsx39(
|
|
2837
|
+
ScaledText,
|
|
2814
2838
|
{
|
|
2815
2839
|
style: [
|
|
2816
|
-
|
|
2840
|
+
styles34.optionText,
|
|
2817
2841
|
{
|
|
2818
2842
|
color: isSelected ? colors2.colorInteractive : colors2.colorOnBg
|
|
2819
2843
|
},
|
|
@@ -2831,15 +2855,15 @@ function Combobox({
|
|
|
2831
2855
|
]
|
|
2832
2856
|
}
|
|
2833
2857
|
),
|
|
2834
|
-
/* @__PURE__ */
|
|
2835
|
-
/* @__PURE__ */
|
|
2858
|
+
/* @__PURE__ */ jsx39(Message, { type: "error", message: error }),
|
|
2859
|
+
/* @__PURE__ */ jsx39(Message, { type: "hint", message: hint })
|
|
2836
2860
|
] });
|
|
2837
2861
|
}
|
|
2838
2862
|
|
|
2839
2863
|
// src/components/interaction/form/SegmentedControl/SegmentedControl.tsx
|
|
2840
2864
|
import { Children } from "react";
|
|
2841
|
-
import { StyleSheet as
|
|
2842
|
-
import { jsx as
|
|
2865
|
+
import { StyleSheet as StyleSheet36, View as View31, Pressable as Pressable19 } from "react-native";
|
|
2866
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
2843
2867
|
var TRACK_PADDING = spacing.xxxs;
|
|
2844
2868
|
var sizeTokens2 = {
|
|
2845
2869
|
small: { minHeight: 32, fontSize: font.size.bodyS, px: spacing.s, py: spacing.xxs },
|
|
@@ -2854,7 +2878,7 @@ var thumbShadow = {
|
|
|
2854
2878
|
shadowRadius: 2,
|
|
2855
2879
|
elevation: 2
|
|
2856
2880
|
};
|
|
2857
|
-
var
|
|
2881
|
+
var styles35 = StyleSheet36.create({
|
|
2858
2882
|
track: {
|
|
2859
2883
|
flexDirection: "row",
|
|
2860
2884
|
borderRadius: border.radius.full,
|
|
@@ -2889,10 +2913,10 @@ function SegmentedControl({
|
|
|
2889
2913
|
const items = Children.toArray(children);
|
|
2890
2914
|
const trackBg = colors2.colorBgSubtle;
|
|
2891
2915
|
const thumbBg = variant === "outline" ? colors2.colorBg : colors2.colorInteractive;
|
|
2892
|
-
return /* @__PURE__ */
|
|
2916
|
+
return /* @__PURE__ */ jsx40(
|
|
2893
2917
|
View31,
|
|
2894
2918
|
{
|
|
2895
|
-
style: [
|
|
2919
|
+
style: [styles35.track, { backgroundColor: trackBg }, style],
|
|
2896
2920
|
accessibilityRole: "tablist",
|
|
2897
2921
|
accessibilityLabel,
|
|
2898
2922
|
children: items.map((child, index) => {
|
|
@@ -2905,7 +2929,7 @@ function SegmentedControl({
|
|
|
2905
2929
|
paddingVertical: py,
|
|
2906
2930
|
...isActive ? { backgroundColor: thumbBg, ...thumbShadow } : { backgroundColor: "transparent" }
|
|
2907
2931
|
};
|
|
2908
|
-
return /* @__PURE__ */
|
|
2932
|
+
return /* @__PURE__ */ jsx40(
|
|
2909
2933
|
Pressable19,
|
|
2910
2934
|
{
|
|
2911
2935
|
onPress: () => !disabled && onValueChange?.(index),
|
|
@@ -2914,12 +2938,21 @@ function SegmentedControl({
|
|
|
2914
2938
|
accessibilityLabel: label ?? void 0,
|
|
2915
2939
|
accessibilityState: { selected: isActive, disabled },
|
|
2916
2940
|
style: ({ pressed }) => [
|
|
2917
|
-
|
|
2941
|
+
styles35.segment,
|
|
2918
2942
|
segmentStyle,
|
|
2919
2943
|
pressed && !disabled && { opacity: 0.7 },
|
|
2920
2944
|
disabled && { opacity: 0.4 }
|
|
2921
2945
|
],
|
|
2922
|
-
children: label !== null ? /* @__PURE__ */
|
|
2946
|
+
children: label !== null ? /* @__PURE__ */ jsx40(
|
|
2947
|
+
ScaledText,
|
|
2948
|
+
{
|
|
2949
|
+
style: [styles35.label, { fontSize, color: labelColor }],
|
|
2950
|
+
numberOfLines: 1,
|
|
2951
|
+
adjustsFontSizeToFit: true,
|
|
2952
|
+
minimumFontScale: 0.5,
|
|
2953
|
+
children: label
|
|
2954
|
+
}
|
|
2955
|
+
) : child
|
|
2923
2956
|
},
|
|
2924
2957
|
index
|
|
2925
2958
|
);
|
|
@@ -2930,12 +2963,8 @@ function SegmentedControl({
|
|
|
2930
2963
|
|
|
2931
2964
|
// src/components/interaction/form/FormInput/FormInput.tsx
|
|
2932
2965
|
import { useState as useState8 } from "react";
|
|
2933
|
-
import {
|
|
2934
|
-
|
|
2935
|
-
View as View32,
|
|
2936
|
-
TextInput as TextInput2
|
|
2937
|
-
} from "react-native";
|
|
2938
|
-
import { jsx as jsx39, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2966
|
+
import { StyleSheet as StyleSheet37, View as View32 } from "react-native";
|
|
2967
|
+
import { jsx as jsx41, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2939
2968
|
var INPUT_HEIGHT2 = 44;
|
|
2940
2969
|
var keyboardTypeMap = {
|
|
2941
2970
|
text: "default",
|
|
@@ -2946,19 +2975,19 @@ var keyboardTypeMap = {
|
|
|
2946
2975
|
number: "numeric",
|
|
2947
2976
|
search: "default"
|
|
2948
2977
|
};
|
|
2949
|
-
var
|
|
2978
|
+
var styles36 = StyleSheet37.create({
|
|
2950
2979
|
container: {
|
|
2951
2980
|
gap: spacing.xxs
|
|
2952
2981
|
},
|
|
2953
2982
|
/**
|
|
2954
|
-
* The wrapper draws the
|
|
2983
|
+
* The wrapper draws the rounded border and provides at least 44pt touch-target height.
|
|
2955
2984
|
* justifyContent: 'center' vertically centers the inner TextInput on both iOS and Android.
|
|
2956
2985
|
*/
|
|
2957
2986
|
inputWrapper: {
|
|
2958
|
-
|
|
2987
|
+
minHeight: INPUT_HEIGHT2,
|
|
2959
2988
|
justifyContent: "center",
|
|
2960
2989
|
borderWidth: 1,
|
|
2961
|
-
borderRadius: border.radius.
|
|
2990
|
+
borderRadius: border.radius.m
|
|
2962
2991
|
},
|
|
2963
2992
|
/**
|
|
2964
2993
|
* No vertical padding: iOS centers text automatically inside the wrapper height.
|
|
@@ -2994,21 +3023,21 @@ function FormInput({
|
|
|
2994
3023
|
const { colors: colors2 } = useTheme();
|
|
2995
3024
|
const [focused, setFocused] = useState8(false);
|
|
2996
3025
|
const borderColor = error ? colors2.colorError : focused ? colors2.colorInteractive : colors2.colorOnBg;
|
|
2997
|
-
return /* @__PURE__ */ jsxs24(View32, { style: [
|
|
2998
|
-
/* @__PURE__ */
|
|
2999
|
-
/* @__PURE__ */
|
|
3026
|
+
return /* @__PURE__ */ jsxs24(View32, { style: [styles36.container, style], children: [
|
|
3027
|
+
/* @__PURE__ */ jsx41(Label, { label }),
|
|
3028
|
+
/* @__PURE__ */ jsx41(
|
|
3000
3029
|
View32,
|
|
3001
3030
|
{
|
|
3002
3031
|
style: [
|
|
3003
|
-
|
|
3032
|
+
styles36.inputWrapper,
|
|
3004
3033
|
{
|
|
3005
3034
|
borderColor,
|
|
3006
3035
|
backgroundColor: colors2.colorBg
|
|
3007
3036
|
},
|
|
3008
3037
|
disabled && { opacity: 0.4 }
|
|
3009
3038
|
],
|
|
3010
|
-
children: /* @__PURE__ */
|
|
3011
|
-
|
|
3039
|
+
children: /* @__PURE__ */ jsx41(
|
|
3040
|
+
ScaledTextInput,
|
|
3012
3041
|
{
|
|
3013
3042
|
accessibilityLabel: typeof label === "string" ? label : name,
|
|
3014
3043
|
accessibilityState: { disabled },
|
|
@@ -3032,27 +3061,23 @@ function FormInput({
|
|
|
3032
3061
|
onBlur?.();
|
|
3033
3062
|
},
|
|
3034
3063
|
style: [
|
|
3035
|
-
|
|
3064
|
+
styles36.input,
|
|
3036
3065
|
{ color: colors2.colorOnBg }
|
|
3037
3066
|
]
|
|
3038
3067
|
}
|
|
3039
3068
|
)
|
|
3040
3069
|
}
|
|
3041
3070
|
),
|
|
3042
|
-
/* @__PURE__ */
|
|
3043
|
-
/* @__PURE__ */
|
|
3071
|
+
/* @__PURE__ */ jsx41(Message, { type: "error", message: error }),
|
|
3072
|
+
/* @__PURE__ */ jsx41(Message, { type: "hint", message: hint })
|
|
3044
3073
|
] });
|
|
3045
3074
|
}
|
|
3046
3075
|
|
|
3047
3076
|
// src/components/interaction/form/Textarea/Textarea.tsx
|
|
3048
3077
|
import { useState as useState9 } from "react";
|
|
3049
|
-
import {
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
TextInput as TextInput3
|
|
3053
|
-
} from "react-native";
|
|
3054
|
-
import { jsx as jsx40, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
3055
|
-
var styles36 = StyleSheet36.create({
|
|
3078
|
+
import { StyleSheet as StyleSheet38, View as View33 } from "react-native";
|
|
3079
|
+
import { jsx as jsx42, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
3080
|
+
var styles37 = StyleSheet38.create({
|
|
3056
3081
|
container: {
|
|
3057
3082
|
gap: spacing.xxs
|
|
3058
3083
|
},
|
|
@@ -3063,7 +3088,7 @@ var styles36 = StyleSheet36.create({
|
|
|
3063
3088
|
paddingHorizontal: spacing.s,
|
|
3064
3089
|
paddingVertical: spacing.xs,
|
|
3065
3090
|
borderWidth: 1,
|
|
3066
|
-
borderRadius: border.radius.
|
|
3091
|
+
borderRadius: border.radius.m,
|
|
3067
3092
|
minHeight: 100,
|
|
3068
3093
|
textAlignVertical: "top"
|
|
3069
3094
|
}
|
|
@@ -3086,10 +3111,10 @@ function Textarea({
|
|
|
3086
3111
|
const { colors: colors2 } = useTheme();
|
|
3087
3112
|
const [focused, setFocused] = useState9(false);
|
|
3088
3113
|
const borderColor = error ? colors2.colorError : focused ? colors2.colorInteractive : colors2.colorOnBg;
|
|
3089
|
-
return /* @__PURE__ */ jsxs25(View33, { style: [
|
|
3090
|
-
/* @__PURE__ */
|
|
3091
|
-
/* @__PURE__ */
|
|
3092
|
-
|
|
3114
|
+
return /* @__PURE__ */ jsxs25(View33, { style: [styles37.container, style], children: [
|
|
3115
|
+
/* @__PURE__ */ jsx42(Label, { label }),
|
|
3116
|
+
/* @__PURE__ */ jsx42(
|
|
3117
|
+
ScaledTextInput,
|
|
3093
3118
|
{
|
|
3094
3119
|
accessibilityLabel: typeof label === "string" ? label : name,
|
|
3095
3120
|
accessibilityState: { disabled },
|
|
@@ -3111,7 +3136,7 @@ function Textarea({
|
|
|
3111
3136
|
onBlur?.();
|
|
3112
3137
|
},
|
|
3113
3138
|
style: [
|
|
3114
|
-
|
|
3139
|
+
styles37.textarea,
|
|
3115
3140
|
{
|
|
3116
3141
|
borderColor,
|
|
3117
3142
|
color: colors2.colorOnBg,
|
|
@@ -3121,24 +3146,16 @@ function Textarea({
|
|
|
3121
3146
|
]
|
|
3122
3147
|
}
|
|
3123
3148
|
),
|
|
3124
|
-
/* @__PURE__ */
|
|
3125
|
-
/* @__PURE__ */
|
|
3149
|
+
/* @__PURE__ */ jsx42(Message, { type: "error", message: error }),
|
|
3150
|
+
/* @__PURE__ */ jsx42(Message, { type: "hint", message: hint })
|
|
3126
3151
|
] });
|
|
3127
3152
|
}
|
|
3128
3153
|
|
|
3129
3154
|
// src/components/interaction/form/Select/Select.tsx
|
|
3130
3155
|
import { useState as useState10 } from "react";
|
|
3131
|
-
import {
|
|
3132
|
-
|
|
3133
|
-
|
|
3134
|
-
Text as Text29,
|
|
3135
|
-
Pressable as Pressable20,
|
|
3136
|
-
Modal,
|
|
3137
|
-
FlatList,
|
|
3138
|
-
SafeAreaView
|
|
3139
|
-
} from "react-native";
|
|
3140
|
-
import { jsx as jsx41, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
3141
|
-
var styles37 = StyleSheet37.create({
|
|
3156
|
+
import { StyleSheet as StyleSheet39, View as View34, Pressable as Pressable20, Modal, FlatList, SafeAreaView } from "react-native";
|
|
3157
|
+
import { jsx as jsx43, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
3158
|
+
var styles38 = StyleSheet39.create({
|
|
3142
3159
|
container: {
|
|
3143
3160
|
gap: spacing.xxs
|
|
3144
3161
|
},
|
|
@@ -3149,7 +3166,7 @@ var styles37 = StyleSheet37.create({
|
|
|
3149
3166
|
paddingHorizontal: spacing.s,
|
|
3150
3167
|
paddingVertical: spacing.xs,
|
|
3151
3168
|
borderWidth: 1,
|
|
3152
|
-
borderRadius: border.radius.
|
|
3169
|
+
borderRadius: border.radius.m,
|
|
3153
3170
|
minHeight: 44
|
|
3154
3171
|
},
|
|
3155
3172
|
triggerText: {
|
|
@@ -3159,8 +3176,6 @@ var styles37 = StyleSheet37.create({
|
|
|
3159
3176
|
flex: 1
|
|
3160
3177
|
},
|
|
3161
3178
|
chevron: {
|
|
3162
|
-
fontFamily: font.family.body,
|
|
3163
|
-
fontSize: font.size.body,
|
|
3164
3179
|
marginStart: spacing.xs
|
|
3165
3180
|
},
|
|
3166
3181
|
overlay: {
|
|
@@ -3226,8 +3241,8 @@ function Select({
|
|
|
3226
3241
|
onChange?.(optionValue);
|
|
3227
3242
|
setOpen(false);
|
|
3228
3243
|
};
|
|
3229
|
-
return /* @__PURE__ */ jsxs26(View34, { style: [
|
|
3230
|
-
/* @__PURE__ */
|
|
3244
|
+
return /* @__PURE__ */ jsxs26(View34, { style: [styles38.container, style], children: [
|
|
3245
|
+
/* @__PURE__ */ jsx43(Label, { label }),
|
|
3231
3246
|
/* @__PURE__ */ jsxs26(
|
|
3232
3247
|
Pressable20,
|
|
3233
3248
|
{
|
|
@@ -3238,7 +3253,7 @@ function Select({
|
|
|
3238
3253
|
disabled,
|
|
3239
3254
|
onPress: () => setOpen(true),
|
|
3240
3255
|
style: [
|
|
3241
|
-
|
|
3256
|
+
styles38.trigger,
|
|
3242
3257
|
{
|
|
3243
3258
|
borderColor,
|
|
3244
3259
|
backgroundColor: colors2.colorBg
|
|
@@ -3246,11 +3261,11 @@ function Select({
|
|
|
3246
3261
|
disabled && { opacity: 0.4 }
|
|
3247
3262
|
],
|
|
3248
3263
|
children: [
|
|
3249
|
-
/* @__PURE__ */
|
|
3250
|
-
|
|
3264
|
+
/* @__PURE__ */ jsx43(
|
|
3265
|
+
ScaledText,
|
|
3251
3266
|
{
|
|
3252
3267
|
style: [
|
|
3253
|
-
|
|
3268
|
+
styles38.triggerText,
|
|
3254
3269
|
{
|
|
3255
3270
|
color: isPlaceholder ? colors2.colorOnBgSubtle : colors2.colorOnBg
|
|
3256
3271
|
}
|
|
@@ -3258,52 +3273,59 @@ function Select({
|
|
|
3258
3273
|
children: displayText
|
|
3259
3274
|
}
|
|
3260
3275
|
),
|
|
3261
|
-
/* @__PURE__ */
|
|
3276
|
+
/* @__PURE__ */ jsx43(
|
|
3277
|
+
Chevron,
|
|
3278
|
+
{
|
|
3279
|
+
testID: "bds-select-chevron",
|
|
3280
|
+
color: colors2.colorOnBgSubtle,
|
|
3281
|
+
style: styles38.chevron
|
|
3282
|
+
}
|
|
3283
|
+
)
|
|
3262
3284
|
]
|
|
3263
3285
|
}
|
|
3264
3286
|
),
|
|
3265
|
-
/* @__PURE__ */
|
|
3287
|
+
/* @__PURE__ */ jsx43(
|
|
3266
3288
|
Modal,
|
|
3267
3289
|
{
|
|
3268
3290
|
visible: open,
|
|
3269
3291
|
transparent: true,
|
|
3270
3292
|
animationType: "slide",
|
|
3271
3293
|
onRequestClose: () => setOpen(false),
|
|
3272
|
-
children: /* @__PURE__ */
|
|
3294
|
+
children: /* @__PURE__ */ jsx43(
|
|
3273
3295
|
Pressable20,
|
|
3274
3296
|
{
|
|
3275
|
-
style:
|
|
3297
|
+
style: styles38.overlay,
|
|
3276
3298
|
onPress: () => setOpen(false),
|
|
3277
3299
|
accessibilityRole: "button",
|
|
3278
3300
|
accessibilityLabel: "Close options",
|
|
3279
|
-
children: /* @__PURE__ */
|
|
3301
|
+
children: /* @__PURE__ */ jsx43(
|
|
3280
3302
|
Pressable20,
|
|
3281
3303
|
{
|
|
3282
|
-
style: [
|
|
3304
|
+
style: [styles38.sheet, { backgroundColor: colors2.colorBg }],
|
|
3283
3305
|
onPress: () => {
|
|
3284
3306
|
},
|
|
3285
3307
|
children: /* @__PURE__ */ jsxs26(SafeAreaView, { children: [
|
|
3286
|
-
/* @__PURE__ */ jsxs26(View34, { style:
|
|
3287
|
-
/* @__PURE__ */
|
|
3288
|
-
/* @__PURE__ */
|
|
3308
|
+
/* @__PURE__ */ jsxs26(View34, { style: styles38.sheetHeader, children: [
|
|
3309
|
+
/* @__PURE__ */ jsx43(ScaledText, { style: [styles38.sheetTitle, { color: colors2.colorOnBg }], children: typeof label === "string" ? label : "Select" }),
|
|
3310
|
+
/* @__PURE__ */ jsx43(
|
|
3289
3311
|
Pressable20,
|
|
3290
3312
|
{
|
|
3291
3313
|
accessibilityRole: "button",
|
|
3292
3314
|
accessibilityLabel: "Close",
|
|
3293
3315
|
onPress: () => setOpen(false),
|
|
3294
3316
|
hitSlop: 8,
|
|
3295
|
-
children: /* @__PURE__ */
|
|
3317
|
+
children: /* @__PURE__ */ jsx43(ScaledText, { style: [styles38.closeText, { color: colors2.colorInteractive }], children: "Done" })
|
|
3296
3318
|
}
|
|
3297
3319
|
)
|
|
3298
3320
|
] }),
|
|
3299
|
-
/* @__PURE__ */
|
|
3321
|
+
/* @__PURE__ */ jsx43(
|
|
3300
3322
|
FlatList,
|
|
3301
3323
|
{
|
|
3302
3324
|
data: options,
|
|
3303
3325
|
keyExtractor: (item) => item.value,
|
|
3304
3326
|
renderItem: ({ item }) => {
|
|
3305
3327
|
const isSelected = item.value === value;
|
|
3306
|
-
return /* @__PURE__ */
|
|
3328
|
+
return /* @__PURE__ */ jsx43(
|
|
3307
3329
|
Pressable20,
|
|
3308
3330
|
{
|
|
3309
3331
|
accessibilityRole: "button",
|
|
@@ -3315,16 +3337,16 @@ function Select({
|
|
|
3315
3337
|
disabled: item.disabled,
|
|
3316
3338
|
onPress: () => handleSelect(item.value),
|
|
3317
3339
|
style: ({ pressed }) => [
|
|
3318
|
-
|
|
3340
|
+
styles38.optionItem,
|
|
3319
3341
|
isSelected && { backgroundColor: colors2.colorBgSubtle },
|
|
3320
3342
|
pressed && { opacity: 0.7 },
|
|
3321
3343
|
item.disabled && { opacity: 0.4 }
|
|
3322
3344
|
],
|
|
3323
|
-
children: /* @__PURE__ */
|
|
3324
|
-
|
|
3345
|
+
children: /* @__PURE__ */ jsx43(
|
|
3346
|
+
ScaledText,
|
|
3325
3347
|
{
|
|
3326
3348
|
style: [
|
|
3327
|
-
|
|
3349
|
+
styles38.optionText,
|
|
3328
3350
|
{
|
|
3329
3351
|
color: isSelected ? colors2.colorInteractive : colors2.colorOnBg,
|
|
3330
3352
|
fontWeight: isSelected ? font.weight.semibold : font.weight.body
|
|
@@ -3345,22 +3367,18 @@ function Select({
|
|
|
3345
3367
|
)
|
|
3346
3368
|
}
|
|
3347
3369
|
),
|
|
3348
|
-
/* @__PURE__ */
|
|
3349
|
-
/* @__PURE__ */
|
|
3370
|
+
/* @__PURE__ */ jsx43(Message, { type: "error", message: error }),
|
|
3371
|
+
/* @__PURE__ */ jsx43(Message, { type: "hint", message: hint })
|
|
3350
3372
|
] });
|
|
3351
3373
|
}
|
|
3352
3374
|
|
|
3353
3375
|
// src/components/interaction/form/Slider/Slider.tsx
|
|
3354
3376
|
import { useState as useState11 } from "react";
|
|
3355
|
-
import {
|
|
3356
|
-
|
|
3357
|
-
View as View35,
|
|
3358
|
-
Text as Text30
|
|
3359
|
-
} from "react-native";
|
|
3360
|
-
import { jsx as jsx42, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
3377
|
+
import { StyleSheet as StyleSheet40, View as View35 } from "react-native";
|
|
3378
|
+
import { jsx as jsx44, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
3361
3379
|
var TRACK_HEIGHT = 6;
|
|
3362
3380
|
var THUMB_SIZE = 24;
|
|
3363
|
-
var
|
|
3381
|
+
var styles39 = StyleSheet40.create({
|
|
3364
3382
|
container: {
|
|
3365
3383
|
gap: spacing.xxs
|
|
3366
3384
|
},
|
|
@@ -3457,31 +3475,31 @@ function Slider({
|
|
|
3457
3475
|
return /* @__PURE__ */ jsxs27(
|
|
3458
3476
|
View35,
|
|
3459
3477
|
{
|
|
3460
|
-
style: [
|
|
3478
|
+
style: [styles39.container, style],
|
|
3461
3479
|
accessibilityRole: "adjustable",
|
|
3462
3480
|
accessibilityLabel: label,
|
|
3463
3481
|
accessibilityValue: { min, max, now: currentValue, text: String(currentValue) },
|
|
3464
3482
|
accessibilityState: { disabled },
|
|
3465
3483
|
children: [
|
|
3466
|
-
/* @__PURE__ */ jsxs27(View35, { style:
|
|
3467
|
-
/* @__PURE__ */
|
|
3468
|
-
showValue && /* @__PURE__ */
|
|
3484
|
+
/* @__PURE__ */ jsxs27(View35, { style: styles39.labelRow, children: [
|
|
3485
|
+
/* @__PURE__ */ jsx44(Label, { label }),
|
|
3486
|
+
showValue && /* @__PURE__ */ jsx44(ScaledText, { style: [styles39.valueText, { color: colors2.colorOnBg }], children: currentValue })
|
|
3469
3487
|
] }),
|
|
3470
3488
|
/* @__PURE__ */ jsxs27(
|
|
3471
3489
|
View35,
|
|
3472
3490
|
{
|
|
3473
|
-
style: [
|
|
3491
|
+
style: [styles39.trackContainer, disabled && { opacity: 0.4 }],
|
|
3474
3492
|
onLayout: handleTrackLayout,
|
|
3475
3493
|
onStartShouldSetResponder: handleStartShouldSetResponder,
|
|
3476
3494
|
onMoveShouldSetResponder: handleStartShouldSetResponder,
|
|
3477
3495
|
onResponderGrant: handleResponderGrant,
|
|
3478
3496
|
onResponderMove: handleResponderMove,
|
|
3479
3497
|
children: [
|
|
3480
|
-
/* @__PURE__ */
|
|
3498
|
+
/* @__PURE__ */ jsx44(View35, { style: [styles39.track, { backgroundColor: colors2.colorBgSubtle }], children: /* @__PURE__ */ jsx44(
|
|
3481
3499
|
View35,
|
|
3482
3500
|
{
|
|
3483
3501
|
style: [
|
|
3484
|
-
|
|
3502
|
+
styles39.fill,
|
|
3485
3503
|
{
|
|
3486
3504
|
width: `${fillPct}%`,
|
|
3487
3505
|
backgroundColor: error ? colors2.colorError : colors2.colorInteractive
|
|
@@ -3489,11 +3507,11 @@ function Slider({
|
|
|
3489
3507
|
]
|
|
3490
3508
|
}
|
|
3491
3509
|
) }),
|
|
3492
|
-
/* @__PURE__ */
|
|
3510
|
+
/* @__PURE__ */ jsx44(
|
|
3493
3511
|
View35,
|
|
3494
3512
|
{
|
|
3495
3513
|
style: [
|
|
3496
|
-
|
|
3514
|
+
styles39.thumb,
|
|
3497
3515
|
{
|
|
3498
3516
|
start: `${fillPct}%`,
|
|
3499
3517
|
marginStart: -(THUMB_SIZE / 2),
|
|
@@ -3506,8 +3524,8 @@ function Slider({
|
|
|
3506
3524
|
]
|
|
3507
3525
|
}
|
|
3508
3526
|
),
|
|
3509
|
-
/* @__PURE__ */
|
|
3510
|
-
/* @__PURE__ */
|
|
3527
|
+
/* @__PURE__ */ jsx44(Message, { type: "error", message: error }),
|
|
3528
|
+
/* @__PURE__ */ jsx44(Message, { type: "hint", message: hint })
|
|
3511
3529
|
]
|
|
3512
3530
|
}
|
|
3513
3531
|
);
|
|
@@ -3515,16 +3533,10 @@ function Slider({
|
|
|
3515
3533
|
|
|
3516
3534
|
// src/components/interaction/form/NumberInput/NumberInput.tsx
|
|
3517
3535
|
import { useState as useState12 } from "react";
|
|
3518
|
-
import {
|
|
3519
|
-
|
|
3520
|
-
View as View36,
|
|
3521
|
-
TextInput as TextInput4,
|
|
3522
|
-
Text as Text31,
|
|
3523
|
-
Pressable as Pressable21
|
|
3524
|
-
} from "react-native";
|
|
3525
|
-
import { jsx as jsx43, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
3536
|
+
import { StyleSheet as StyleSheet41, View as View36, Pressable as Pressable21 } from "react-native";
|
|
3537
|
+
import { jsx as jsx45, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
3526
3538
|
var STEPPER_SIZE = 44;
|
|
3527
|
-
var
|
|
3539
|
+
var styles40 = StyleSheet41.create({
|
|
3528
3540
|
container: {
|
|
3529
3541
|
gap: spacing.xxs
|
|
3530
3542
|
},
|
|
@@ -3540,13 +3552,13 @@ var styles39 = StyleSheet39.create({
|
|
|
3540
3552
|
borderWidth: 1
|
|
3541
3553
|
},
|
|
3542
3554
|
stepperStart: {
|
|
3543
|
-
borderTopStartRadius: border.radius.
|
|
3544
|
-
borderBottomStartRadius: border.radius.
|
|
3555
|
+
borderTopStartRadius: border.radius.m,
|
|
3556
|
+
borderBottomStartRadius: border.radius.m,
|
|
3545
3557
|
borderEndWidth: 0
|
|
3546
3558
|
},
|
|
3547
3559
|
stepperEnd: {
|
|
3548
|
-
borderTopEndRadius: border.radius.
|
|
3549
|
-
borderBottomEndRadius: border.radius.
|
|
3560
|
+
borderTopEndRadius: border.radius.m,
|
|
3561
|
+
borderBottomEndRadius: border.radius.m,
|
|
3550
3562
|
borderStartWidth: 0
|
|
3551
3563
|
},
|
|
3552
3564
|
stepperText: {
|
|
@@ -3613,10 +3625,10 @@ function NumberInput({
|
|
|
3613
3625
|
const canDecrease = min === void 0 || currentValue > min;
|
|
3614
3626
|
const canIncrease = max === void 0 || currentValue < max;
|
|
3615
3627
|
const borderColor = error ? colors2.colorError : colors2.colorOnBg;
|
|
3616
|
-
return /* @__PURE__ */ jsxs28(View36, { style: [
|
|
3617
|
-
/* @__PURE__ */
|
|
3618
|
-
/* @__PURE__ */ jsxs28(View36, { style: [
|
|
3619
|
-
/* @__PURE__ */
|
|
3628
|
+
return /* @__PURE__ */ jsxs28(View36, { style: [styles40.container, style], children: [
|
|
3629
|
+
/* @__PURE__ */ jsx45(Label, { label }),
|
|
3630
|
+
/* @__PURE__ */ jsxs28(View36, { style: [styles40.inputRow, disabled && { opacity: 0.4 }], children: [
|
|
3631
|
+
/* @__PURE__ */ jsx45(
|
|
3620
3632
|
Pressable21,
|
|
3621
3633
|
{
|
|
3622
3634
|
accessibilityRole: "button",
|
|
@@ -3625,8 +3637,8 @@ function NumberInput({
|
|
|
3625
3637
|
disabled: disabled || !canDecrease,
|
|
3626
3638
|
onPress: () => update(currentValue - step),
|
|
3627
3639
|
style: ({ pressed }) => [
|
|
3628
|
-
|
|
3629
|
-
|
|
3640
|
+
styles40.stepper,
|
|
3641
|
+
styles40.stepperStart,
|
|
3630
3642
|
{
|
|
3631
3643
|
borderColor,
|
|
3632
3644
|
backgroundColor: colors2.colorBgSubtle
|
|
@@ -3634,28 +3646,28 @@ function NumberInput({
|
|
|
3634
3646
|
pressed && { opacity: 0.7 },
|
|
3635
3647
|
(disabled || !canDecrease) && { opacity: 0.4 }
|
|
3636
3648
|
],
|
|
3637
|
-
children: /* @__PURE__ */
|
|
3638
|
-
|
|
3649
|
+
children: /* @__PURE__ */ jsx45(
|
|
3650
|
+
ScaledText,
|
|
3639
3651
|
{
|
|
3640
|
-
style: [
|
|
3652
|
+
style: [styles40.stepperText, { color: colors2.colorOnBg }],
|
|
3641
3653
|
"aria-hidden": true,
|
|
3642
3654
|
children: "\u2212"
|
|
3643
3655
|
}
|
|
3644
3656
|
)
|
|
3645
3657
|
}
|
|
3646
3658
|
),
|
|
3647
|
-
/* @__PURE__ */
|
|
3659
|
+
/* @__PURE__ */ jsx45(
|
|
3648
3660
|
View36,
|
|
3649
3661
|
{
|
|
3650
3662
|
style: [
|
|
3651
|
-
|
|
3663
|
+
styles40.inputWrapper,
|
|
3652
3664
|
{
|
|
3653
3665
|
borderColor,
|
|
3654
3666
|
backgroundColor: colors2.colorBg
|
|
3655
3667
|
}
|
|
3656
3668
|
],
|
|
3657
|
-
children: /* @__PURE__ */
|
|
3658
|
-
|
|
3669
|
+
children: /* @__PURE__ */ jsx45(
|
|
3670
|
+
ScaledTextInput,
|
|
3659
3671
|
{
|
|
3660
3672
|
accessibilityLabel: label,
|
|
3661
3673
|
accessibilityState: { disabled },
|
|
@@ -3674,14 +3686,14 @@ function NumberInput({
|
|
|
3674
3686
|
update(safe);
|
|
3675
3687
|
},
|
|
3676
3688
|
style: [
|
|
3677
|
-
|
|
3689
|
+
styles40.input,
|
|
3678
3690
|
{ color: colors2.colorOnBg }
|
|
3679
3691
|
]
|
|
3680
3692
|
}
|
|
3681
3693
|
)
|
|
3682
3694
|
}
|
|
3683
3695
|
),
|
|
3684
|
-
/* @__PURE__ */
|
|
3696
|
+
/* @__PURE__ */ jsx45(
|
|
3685
3697
|
Pressable21,
|
|
3686
3698
|
{
|
|
3687
3699
|
accessibilityRole: "button",
|
|
@@ -3690,8 +3702,8 @@ function NumberInput({
|
|
|
3690
3702
|
disabled: disabled || !canIncrease,
|
|
3691
3703
|
onPress: () => update(currentValue + step),
|
|
3692
3704
|
style: ({ pressed }) => [
|
|
3693
|
-
|
|
3694
|
-
|
|
3705
|
+
styles40.stepper,
|
|
3706
|
+
styles40.stepperEnd,
|
|
3695
3707
|
{
|
|
3696
3708
|
borderColor,
|
|
3697
3709
|
backgroundColor: colors2.colorBgSubtle
|
|
@@ -3699,10 +3711,10 @@ function NumberInput({
|
|
|
3699
3711
|
pressed && { opacity: 0.7 },
|
|
3700
3712
|
(disabled || !canIncrease) && { opacity: 0.4 }
|
|
3701
3713
|
],
|
|
3702
|
-
children: /* @__PURE__ */
|
|
3703
|
-
|
|
3714
|
+
children: /* @__PURE__ */ jsx45(
|
|
3715
|
+
ScaledText,
|
|
3704
3716
|
{
|
|
3705
|
-
style: [
|
|
3717
|
+
style: [styles40.stepperText, { color: colors2.colorOnBg }],
|
|
3706
3718
|
"aria-hidden": true,
|
|
3707
3719
|
children: "+"
|
|
3708
3720
|
}
|
|
@@ -3710,21 +3722,15 @@ function NumberInput({
|
|
|
3710
3722
|
}
|
|
3711
3723
|
)
|
|
3712
3724
|
] }),
|
|
3713
|
-
/* @__PURE__ */
|
|
3714
|
-
/* @__PURE__ */
|
|
3725
|
+
/* @__PURE__ */ jsx45(Message, { type: "error", message: error }),
|
|
3726
|
+
/* @__PURE__ */ jsx45(Message, { type: "hint", message: hint })
|
|
3715
3727
|
] });
|
|
3716
3728
|
}
|
|
3717
3729
|
|
|
3718
3730
|
// src/components/interaction/Dialog/Dialog.tsx
|
|
3719
|
-
import {
|
|
3720
|
-
|
|
3721
|
-
|
|
3722
|
-
Pressable as Pressable22,
|
|
3723
|
-
Text as Text32,
|
|
3724
|
-
StyleSheet as StyleSheet40
|
|
3725
|
-
} from "react-native";
|
|
3726
|
-
import { jsx as jsx44, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
3727
|
-
var styles40 = StyleSheet40.create({
|
|
3731
|
+
import { Modal as Modal2, View as View37, Pressable as Pressable22, StyleSheet as StyleSheet42 } from "react-native";
|
|
3732
|
+
import { jsx as jsx46, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
3733
|
+
var styles41 = StyleSheet42.create({
|
|
3728
3734
|
overlay: {
|
|
3729
3735
|
flex: 1,
|
|
3730
3736
|
justifyContent: "center",
|
|
@@ -3780,19 +3786,19 @@ function Dialog({
|
|
|
3780
3786
|
style
|
|
3781
3787
|
}) {
|
|
3782
3788
|
const { colors: colors2 } = useTheme();
|
|
3783
|
-
return /* @__PURE__ */
|
|
3789
|
+
return /* @__PURE__ */ jsx46(
|
|
3784
3790
|
Modal2,
|
|
3785
3791
|
{
|
|
3786
3792
|
visible: isOpen,
|
|
3787
3793
|
transparent: true,
|
|
3788
3794
|
animationType: "fade",
|
|
3789
3795
|
onRequestClose: onClose,
|
|
3790
|
-
children: /* @__PURE__ */ jsxs29(View37, { style:
|
|
3791
|
-
/* @__PURE__ */
|
|
3796
|
+
children: /* @__PURE__ */ jsxs29(View37, { style: styles41.overlay, children: [
|
|
3797
|
+
/* @__PURE__ */ jsx46(
|
|
3792
3798
|
Pressable22,
|
|
3793
3799
|
{
|
|
3794
3800
|
testID: "bds-dialog-backdrop",
|
|
3795
|
-
style:
|
|
3801
|
+
style: StyleSheet42.absoluteFill,
|
|
3796
3802
|
onPress: onClose,
|
|
3797
3803
|
accessible: false,
|
|
3798
3804
|
importantForAccessibility: "no"
|
|
@@ -3801,29 +3807,29 @@ function Dialog({
|
|
|
3801
3807
|
/* @__PURE__ */ jsxs29(
|
|
3802
3808
|
View37,
|
|
3803
3809
|
{
|
|
3804
|
-
style: [
|
|
3810
|
+
style: [styles41.panel, { backgroundColor: colors2.colorGreySubtle }, style],
|
|
3805
3811
|
accessibilityViewIsModal: true,
|
|
3806
3812
|
onAccessibilityEscape: onClose,
|
|
3807
3813
|
children: [
|
|
3808
|
-
/* @__PURE__ */
|
|
3814
|
+
/* @__PURE__ */ jsx46(
|
|
3809
3815
|
Pressable22,
|
|
3810
3816
|
{
|
|
3811
|
-
style:
|
|
3817
|
+
style: styles41.closeButton,
|
|
3812
3818
|
onPress: onClose,
|
|
3813
3819
|
accessibilityRole: "button",
|
|
3814
3820
|
accessibilityLabel: "Close dialog",
|
|
3815
3821
|
hitSlop: 8,
|
|
3816
|
-
children: /* @__PURE__ */
|
|
3817
|
-
|
|
3822
|
+
children: /* @__PURE__ */ jsx46(
|
|
3823
|
+
ScaledText,
|
|
3818
3824
|
{
|
|
3819
|
-
style: [
|
|
3825
|
+
style: [styles41.closeText, { color: colors2.colorOnBgSubtle }],
|
|
3820
3826
|
"aria-hidden": true,
|
|
3821
3827
|
children: "\u2715"
|
|
3822
3828
|
}
|
|
3823
3829
|
)
|
|
3824
3830
|
}
|
|
3825
3831
|
),
|
|
3826
|
-
!!title && /* @__PURE__ */
|
|
3832
|
+
!!title && /* @__PURE__ */ jsx46(View37, { style: styles41.header, children: /* @__PURE__ */ jsx46(ScaledText, { style: [styles41.title, { color: colors2.colorOnGreySubtle }], children: title }) }),
|
|
3827
3833
|
children
|
|
3828
3834
|
]
|
|
3829
3835
|
}
|
|
@@ -3835,17 +3841,9 @@ function Dialog({
|
|
|
3835
3841
|
|
|
3836
3842
|
// src/components/interaction/SideSheet/SideSheet.tsx
|
|
3837
3843
|
import { useEffect as useEffect2, useRef as useRef4 } from "react";
|
|
3838
|
-
import {
|
|
3839
|
-
|
|
3840
|
-
|
|
3841
|
-
Pressable as Pressable23,
|
|
3842
|
-
Text as Text33,
|
|
3843
|
-
Animated as Animated3,
|
|
3844
|
-
StyleSheet as StyleSheet41,
|
|
3845
|
-
Dimensions as Dimensions2
|
|
3846
|
-
} from "react-native";
|
|
3847
|
-
import { jsx as jsx45, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
3848
|
-
var styles41 = StyleSheet41.create({
|
|
3844
|
+
import { Modal as Modal3, View as View38, Pressable as Pressable23, Animated as Animated4, StyleSheet as StyleSheet43, Dimensions as Dimensions2 } from "react-native";
|
|
3845
|
+
import { jsx as jsx47, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
3846
|
+
var styles42 = StyleSheet43.create({
|
|
3849
3847
|
overlay: {
|
|
3850
3848
|
flex: 1,
|
|
3851
3849
|
justifyContent: "flex-end"
|
|
@@ -3903,30 +3901,30 @@ function SideSheet({
|
|
|
3903
3901
|
}) {
|
|
3904
3902
|
const { colors: colors2 } = useTheme();
|
|
3905
3903
|
const screenHeight = Dimensions2.get("window").height;
|
|
3906
|
-
const slideAnim = useRef4(new
|
|
3907
|
-
const backdropAnim = useRef4(new
|
|
3904
|
+
const slideAnim = useRef4(new Animated4.Value(screenHeight)).current;
|
|
3905
|
+
const backdropAnim = useRef4(new Animated4.Value(0)).current;
|
|
3908
3906
|
useEffect2(() => {
|
|
3909
3907
|
if (isOpen) {
|
|
3910
|
-
|
|
3911
|
-
|
|
3908
|
+
Animated4.parallel([
|
|
3909
|
+
Animated4.timing(slideAnim, {
|
|
3912
3910
|
toValue: 0,
|
|
3913
3911
|
duration: 250,
|
|
3914
3912
|
useNativeDriver: true
|
|
3915
3913
|
}),
|
|
3916
|
-
|
|
3914
|
+
Animated4.timing(backdropAnim, {
|
|
3917
3915
|
toValue: 1,
|
|
3918
3916
|
duration: 250,
|
|
3919
3917
|
useNativeDriver: true
|
|
3920
3918
|
})
|
|
3921
3919
|
]).start();
|
|
3922
3920
|
} else {
|
|
3923
|
-
|
|
3924
|
-
|
|
3921
|
+
Animated4.parallel([
|
|
3922
|
+
Animated4.timing(slideAnim, {
|
|
3925
3923
|
toValue: screenHeight,
|
|
3926
3924
|
duration: 200,
|
|
3927
3925
|
useNativeDriver: true
|
|
3928
3926
|
}),
|
|
3929
|
-
|
|
3927
|
+
Animated4.timing(backdropAnim, {
|
|
3930
3928
|
toValue: 0,
|
|
3931
3929
|
duration: 200,
|
|
3932
3930
|
useNativeDriver: true
|
|
@@ -3934,25 +3932,25 @@ function SideSheet({
|
|
|
3934
3932
|
]).start();
|
|
3935
3933
|
}
|
|
3936
3934
|
}, [isOpen, slideAnim, backdropAnim, screenHeight]);
|
|
3937
|
-
return /* @__PURE__ */
|
|
3935
|
+
return /* @__PURE__ */ jsx47(
|
|
3938
3936
|
Modal3,
|
|
3939
3937
|
{
|
|
3940
3938
|
visible: isOpen,
|
|
3941
3939
|
transparent: true,
|
|
3942
3940
|
animationType: "none",
|
|
3943
3941
|
onRequestClose: onClose,
|
|
3944
|
-
children: /* @__PURE__ */ jsxs30(View38, { style:
|
|
3945
|
-
/* @__PURE__ */
|
|
3946
|
-
|
|
3942
|
+
children: /* @__PURE__ */ jsxs30(View38, { style: styles42.overlay, children: [
|
|
3943
|
+
/* @__PURE__ */ jsx47(
|
|
3944
|
+
Animated4.View,
|
|
3947
3945
|
{
|
|
3948
3946
|
style: [
|
|
3949
|
-
|
|
3947
|
+
StyleSheet43.absoluteFill,
|
|
3950
3948
|
{ backgroundColor: "rgba(0, 0, 0, 0.5)", opacity: backdropAnim }
|
|
3951
3949
|
],
|
|
3952
|
-
children: /* @__PURE__ */
|
|
3950
|
+
children: /* @__PURE__ */ jsx47(
|
|
3953
3951
|
Pressable23,
|
|
3954
3952
|
{
|
|
3955
|
-
style:
|
|
3953
|
+
style: StyleSheet43.absoluteFill,
|
|
3956
3954
|
onPress: onClose,
|
|
3957
3955
|
testID: "bds-sidesheet-backdrop",
|
|
3958
3956
|
accessible: false,
|
|
@@ -3962,10 +3960,10 @@ function SideSheet({
|
|
|
3962
3960
|
}
|
|
3963
3961
|
),
|
|
3964
3962
|
/* @__PURE__ */ jsxs30(
|
|
3965
|
-
|
|
3963
|
+
Animated4.View,
|
|
3966
3964
|
{
|
|
3967
3965
|
style: [
|
|
3968
|
-
|
|
3966
|
+
styles42.panel,
|
|
3969
3967
|
{
|
|
3970
3968
|
backgroundColor: colors2.colorBg,
|
|
3971
3969
|
transform: [{ translateY: slideAnim }]
|
|
@@ -3978,21 +3976,21 @@ function SideSheet({
|
|
|
3978
3976
|
/* @__PURE__ */ jsxs30(
|
|
3979
3977
|
View38,
|
|
3980
3978
|
{
|
|
3981
|
-
style: [
|
|
3979
|
+
style: [styles42.header, { borderBottomColor: colors2.colorBgSubtle }],
|
|
3982
3980
|
children: [
|
|
3983
|
-
!!title && /* @__PURE__ */
|
|
3984
|
-
/* @__PURE__ */
|
|
3981
|
+
!!title && /* @__PURE__ */ jsx47(ScaledText, { style: [styles42.title, { color: colors2.colorOnBg }], children: title }),
|
|
3982
|
+
/* @__PURE__ */ jsx47(
|
|
3985
3983
|
Pressable23,
|
|
3986
3984
|
{
|
|
3987
|
-
style:
|
|
3985
|
+
style: styles42.closeButton,
|
|
3988
3986
|
onPress: onClose,
|
|
3989
3987
|
accessibilityRole: "button",
|
|
3990
3988
|
accessibilityLabel: "Close side sheet",
|
|
3991
3989
|
hitSlop: 8,
|
|
3992
|
-
children: /* @__PURE__ */
|
|
3993
|
-
|
|
3990
|
+
children: /* @__PURE__ */ jsx47(
|
|
3991
|
+
ScaledText,
|
|
3994
3992
|
{
|
|
3995
|
-
style: [
|
|
3993
|
+
style: [styles42.closeText, { color: colors2.colorOnBgSubtle }],
|
|
3996
3994
|
"aria-hidden": true,
|
|
3997
3995
|
children: "\u2715"
|
|
3998
3996
|
}
|
|
@@ -4002,7 +4000,7 @@ function SideSheet({
|
|
|
4002
4000
|
]
|
|
4003
4001
|
}
|
|
4004
4002
|
),
|
|
4005
|
-
/* @__PURE__ */
|
|
4003
|
+
/* @__PURE__ */ jsx47(View38, { style: styles42.body, testID: "bds-sidesheet-body", children })
|
|
4006
4004
|
]
|
|
4007
4005
|
}
|
|
4008
4006
|
)
|
|
@@ -4021,16 +4019,10 @@ import {
|
|
|
4021
4019
|
createContext as createContext2,
|
|
4022
4020
|
useContext as useContext2
|
|
4023
4021
|
} from "react";
|
|
4024
|
-
import {
|
|
4025
|
-
|
|
4026
|
-
Text as Text34,
|
|
4027
|
-
Pressable as Pressable24,
|
|
4028
|
-
Animated as Animated4,
|
|
4029
|
-
StyleSheet as StyleSheet42
|
|
4030
|
-
} from "react-native";
|
|
4031
|
-
import { jsx as jsx46, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
4022
|
+
import { View as View39, Pressable as Pressable24, Animated as Animated5, StyleSheet as StyleSheet44 } from "react-native";
|
|
4023
|
+
import { jsx as jsx48, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
4032
4024
|
var ToastContext = createContext2(void 0);
|
|
4033
|
-
var
|
|
4025
|
+
var styles43 = StyleSheet44.create({
|
|
4034
4026
|
container: {
|
|
4035
4027
|
position: "absolute",
|
|
4036
4028
|
top: 0,
|
|
@@ -4075,8 +4067,8 @@ function ToastItem({
|
|
|
4075
4067
|
onRemove
|
|
4076
4068
|
}) {
|
|
4077
4069
|
const { colors: colors2 } = useTheme();
|
|
4078
|
-
const slideAnim = useRef5(new
|
|
4079
|
-
const opacityAnim = useRef5(new
|
|
4070
|
+
const slideAnim = useRef5(new Animated5.Value(-100)).current;
|
|
4071
|
+
const opacityAnim = useRef5(new Animated5.Value(0)).current;
|
|
4080
4072
|
const variantColors = useMemo3(
|
|
4081
4073
|
() => ({
|
|
4082
4074
|
success: { bg: colors2.colorSuccess, text: colors2.colorOnSuccess },
|
|
@@ -4086,13 +4078,13 @@ function ToastItem({
|
|
|
4086
4078
|
[colors2]
|
|
4087
4079
|
);
|
|
4088
4080
|
useEffect3(() => {
|
|
4089
|
-
|
|
4090
|
-
|
|
4081
|
+
Animated5.parallel([
|
|
4082
|
+
Animated5.timing(slideAnim, {
|
|
4091
4083
|
toValue: 0,
|
|
4092
4084
|
duration: 200,
|
|
4093
4085
|
useNativeDriver: true
|
|
4094
4086
|
}),
|
|
4095
|
-
|
|
4087
|
+
Animated5.timing(opacityAnim, {
|
|
4096
4088
|
toValue: 1,
|
|
4097
4089
|
duration: 200,
|
|
4098
4090
|
useNativeDriver: true
|
|
@@ -4105,10 +4097,10 @@ function ToastItem({
|
|
|
4105
4097
|
}, [onRemove]);
|
|
4106
4098
|
const { bg, text } = variantColors[toast.variant];
|
|
4107
4099
|
return /* @__PURE__ */ jsxs31(
|
|
4108
|
-
|
|
4100
|
+
Animated5.View,
|
|
4109
4101
|
{
|
|
4110
4102
|
style: [
|
|
4111
|
-
|
|
4103
|
+
styles43.toast,
|
|
4112
4104
|
{
|
|
4113
4105
|
backgroundColor: bg,
|
|
4114
4106
|
transform: [{ translateY: slideAnim }],
|
|
@@ -4118,16 +4110,16 @@ function ToastItem({
|
|
|
4118
4110
|
accessibilityRole: "alert",
|
|
4119
4111
|
accessibilityLiveRegion: "polite",
|
|
4120
4112
|
children: [
|
|
4121
|
-
/* @__PURE__ */
|
|
4122
|
-
/* @__PURE__ */
|
|
4113
|
+
/* @__PURE__ */ jsx48(ScaledText, { style: [styles43.message, { color: text }], children: toast.message }),
|
|
4114
|
+
/* @__PURE__ */ jsx48(
|
|
4123
4115
|
Pressable24,
|
|
4124
4116
|
{
|
|
4125
|
-
style:
|
|
4117
|
+
style: styles43.closeButton,
|
|
4126
4118
|
onPress: onRemove,
|
|
4127
4119
|
accessibilityRole: "button",
|
|
4128
4120
|
accessibilityLabel: "Dismiss",
|
|
4129
4121
|
hitSlop: 8,
|
|
4130
|
-
children: /* @__PURE__ */
|
|
4122
|
+
children: /* @__PURE__ */ jsx48(ScaledText, { style: [styles43.closeText, { color: text }], "aria-hidden": true, children: "\u2715" })
|
|
4131
4123
|
}
|
|
4132
4124
|
)
|
|
4133
4125
|
]
|
|
@@ -4147,15 +4139,15 @@ function ToastProvider({
|
|
|
4147
4139
|
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
4148
4140
|
}, []);
|
|
4149
4141
|
const value = useMemo3(() => ({ showToast }), [showToast]);
|
|
4150
|
-
return /* @__PURE__ */
|
|
4142
|
+
return /* @__PURE__ */ jsx48(ToastContext.Provider, { value, children: /* @__PURE__ */ jsxs31(View39, { style: [{ flex: 1 }, style], children: [
|
|
4151
4143
|
children,
|
|
4152
|
-
toasts.length > 0 && /* @__PURE__ */
|
|
4144
|
+
toasts.length > 0 && /* @__PURE__ */ jsx48(
|
|
4153
4145
|
View39,
|
|
4154
4146
|
{
|
|
4155
|
-
style:
|
|
4147
|
+
style: styles43.container,
|
|
4156
4148
|
accessibilityRole: "summary",
|
|
4157
4149
|
accessibilityLabel: "Notifications",
|
|
4158
|
-
children: toasts.map((toast) => /* @__PURE__ */
|
|
4150
|
+
children: toasts.map((toast) => /* @__PURE__ */ jsx48(
|
|
4159
4151
|
ToastItem,
|
|
4160
4152
|
{
|
|
4161
4153
|
toast,
|
|
@@ -4177,19 +4169,9 @@ function useToast() {
|
|
|
4177
4169
|
|
|
4178
4170
|
// src/components/interaction/DropdownMenu/DropdownMenu.tsx
|
|
4179
4171
|
import React, { useState as useState14, useEffect as useEffect4, useRef as useRef6 } from "react";
|
|
4180
|
-
import {
|
|
4181
|
-
|
|
4182
|
-
|
|
4183
|
-
Pressable as Pressable25,
|
|
4184
|
-
Text as Text35,
|
|
4185
|
-
FlatList as FlatList2,
|
|
4186
|
-
Animated as Animated5,
|
|
4187
|
-
StyleSheet as StyleSheet43,
|
|
4188
|
-
Dimensions as Dimensions3,
|
|
4189
|
-
SafeAreaView as SafeAreaView2
|
|
4190
|
-
} from "react-native";
|
|
4191
|
-
import { Fragment as Fragment2, jsx as jsx47, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
4192
|
-
var styles43 = StyleSheet43.create({
|
|
4172
|
+
import { Modal as Modal4, View as View40, Pressable as Pressable25, FlatList as FlatList2, Animated as Animated6, StyleSheet as StyleSheet45, Dimensions as Dimensions3, SafeAreaView as SafeAreaView2 } from "react-native";
|
|
4173
|
+
import { Fragment as Fragment2, jsx as jsx49, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
4174
|
+
var styles44 = StyleSheet45.create({
|
|
4193
4175
|
overlay: {
|
|
4194
4176
|
flex: 1,
|
|
4195
4177
|
justifyContent: "flex-end"
|
|
@@ -4248,30 +4230,30 @@ function DropdownMenu({
|
|
|
4248
4230
|
const { colors: colors2 } = useTheme();
|
|
4249
4231
|
const [open, setOpen] = useState14(false);
|
|
4250
4232
|
const screenHeight = Dimensions3.get("window").height;
|
|
4251
|
-
const slideAnim = useRef6(new
|
|
4252
|
-
const backdropAnim = useRef6(new
|
|
4233
|
+
const slideAnim = useRef6(new Animated6.Value(screenHeight)).current;
|
|
4234
|
+
const backdropAnim = useRef6(new Animated6.Value(0)).current;
|
|
4253
4235
|
useEffect4(() => {
|
|
4254
4236
|
if (open) {
|
|
4255
|
-
|
|
4256
|
-
|
|
4237
|
+
Animated6.parallel([
|
|
4238
|
+
Animated6.timing(slideAnim, {
|
|
4257
4239
|
toValue: 0,
|
|
4258
4240
|
duration: 250,
|
|
4259
4241
|
useNativeDriver: true
|
|
4260
4242
|
}),
|
|
4261
|
-
|
|
4243
|
+
Animated6.timing(backdropAnim, {
|
|
4262
4244
|
toValue: 1,
|
|
4263
4245
|
duration: 250,
|
|
4264
4246
|
useNativeDriver: true
|
|
4265
4247
|
})
|
|
4266
4248
|
]).start();
|
|
4267
4249
|
} else {
|
|
4268
|
-
|
|
4269
|
-
|
|
4250
|
+
Animated6.parallel([
|
|
4251
|
+
Animated6.timing(slideAnim, {
|
|
4270
4252
|
toValue: screenHeight,
|
|
4271
4253
|
duration: 200,
|
|
4272
4254
|
useNativeDriver: true
|
|
4273
4255
|
}),
|
|
4274
|
-
|
|
4256
|
+
Animated6.timing(backdropAnim, {
|
|
4275
4257
|
toValue: 0,
|
|
4276
4258
|
duration: 200,
|
|
4277
4259
|
useNativeDriver: true
|
|
@@ -4289,25 +4271,25 @@ function DropdownMenu({
|
|
|
4289
4271
|
accessibilityRole: "button",
|
|
4290
4272
|
accessibilityLabel: title
|
|
4291
4273
|
}),
|
|
4292
|
-
/* @__PURE__ */
|
|
4274
|
+
/* @__PURE__ */ jsx49(
|
|
4293
4275
|
Modal4,
|
|
4294
4276
|
{
|
|
4295
4277
|
visible: open,
|
|
4296
4278
|
transparent: true,
|
|
4297
4279
|
animationType: "none",
|
|
4298
4280
|
onRequestClose: () => setOpen(false),
|
|
4299
|
-
children: /* @__PURE__ */ jsxs32(View40, { style:
|
|
4300
|
-
/* @__PURE__ */
|
|
4301
|
-
|
|
4281
|
+
children: /* @__PURE__ */ jsxs32(View40, { style: styles44.overlay, children: [
|
|
4282
|
+
/* @__PURE__ */ jsx49(
|
|
4283
|
+
Animated6.View,
|
|
4302
4284
|
{
|
|
4303
4285
|
style: [
|
|
4304
|
-
|
|
4286
|
+
StyleSheet45.absoluteFill,
|
|
4305
4287
|
{ backgroundColor: "rgba(0, 0, 0, 0.5)", opacity: backdropAnim }
|
|
4306
4288
|
],
|
|
4307
|
-
children: /* @__PURE__ */
|
|
4289
|
+
children: /* @__PURE__ */ jsx49(
|
|
4308
4290
|
Pressable25,
|
|
4309
4291
|
{
|
|
4310
|
-
style:
|
|
4292
|
+
style: StyleSheet45.absoluteFill,
|
|
4311
4293
|
onPress: () => setOpen(false),
|
|
4312
4294
|
testID: "bds-dropdownmenu-backdrop",
|
|
4313
4295
|
accessible: false,
|
|
@@ -4316,11 +4298,11 @@ function DropdownMenu({
|
|
|
4316
4298
|
)
|
|
4317
4299
|
}
|
|
4318
4300
|
),
|
|
4319
|
-
/* @__PURE__ */
|
|
4320
|
-
|
|
4301
|
+
/* @__PURE__ */ jsx49(
|
|
4302
|
+
Animated6.View,
|
|
4321
4303
|
{
|
|
4322
4304
|
style: [
|
|
4323
|
-
|
|
4305
|
+
styles44.sheet,
|
|
4324
4306
|
{
|
|
4325
4307
|
backgroundColor: colors2.colorBg,
|
|
4326
4308
|
transform: [{ translateY: slideAnim }]
|
|
@@ -4333,23 +4315,23 @@ function DropdownMenu({
|
|
|
4333
4315
|
View40,
|
|
4334
4316
|
{
|
|
4335
4317
|
style: [
|
|
4336
|
-
|
|
4318
|
+
styles44.sheetHeader,
|
|
4337
4319
|
{ borderBottomColor: colors2.colorBgSubtle }
|
|
4338
4320
|
],
|
|
4339
4321
|
children: [
|
|
4340
|
-
/* @__PURE__ */
|
|
4341
|
-
/* @__PURE__ */
|
|
4322
|
+
/* @__PURE__ */ jsx49(ScaledText, { style: [styles44.sheetTitle, { color: colors2.colorOnBg }], children: title }),
|
|
4323
|
+
/* @__PURE__ */ jsx49(
|
|
4342
4324
|
Pressable25,
|
|
4343
4325
|
{
|
|
4344
4326
|
accessibilityRole: "button",
|
|
4345
4327
|
accessibilityLabel: "Close",
|
|
4346
4328
|
onPress: () => setOpen(false),
|
|
4347
4329
|
hitSlop: 8,
|
|
4348
|
-
children: /* @__PURE__ */
|
|
4349
|
-
|
|
4330
|
+
children: /* @__PURE__ */ jsx49(
|
|
4331
|
+
ScaledText,
|
|
4350
4332
|
{
|
|
4351
4333
|
style: [
|
|
4352
|
-
|
|
4334
|
+
styles44.closeText,
|
|
4353
4335
|
{ color: colors2.colorInteractive }
|
|
4354
4336
|
],
|
|
4355
4337
|
children: "Done"
|
|
@@ -4360,17 +4342,17 @@ function DropdownMenu({
|
|
|
4360
4342
|
]
|
|
4361
4343
|
}
|
|
4362
4344
|
),
|
|
4363
|
-
/* @__PURE__ */
|
|
4345
|
+
/* @__PURE__ */ jsx49(
|
|
4364
4346
|
FlatList2,
|
|
4365
4347
|
{
|
|
4366
4348
|
data: items,
|
|
4367
4349
|
keyExtractor: (item) => item.id,
|
|
4368
4350
|
renderItem: ({ item }) => /* @__PURE__ */ jsxs32(Fragment2, { children: [
|
|
4369
|
-
item.separator && /* @__PURE__ */
|
|
4351
|
+
item.separator && /* @__PURE__ */ jsx49(
|
|
4370
4352
|
View40,
|
|
4371
4353
|
{
|
|
4372
4354
|
style: [
|
|
4373
|
-
|
|
4355
|
+
styles44.separator,
|
|
4374
4356
|
{ backgroundColor: colors2.colorBgSubtle }
|
|
4375
4357
|
],
|
|
4376
4358
|
accessibilityRole: "none"
|
|
@@ -4385,12 +4367,12 @@ function DropdownMenu({
|
|
|
4385
4367
|
disabled: item.disabled,
|
|
4386
4368
|
onPress: () => handleItemPress(item),
|
|
4387
4369
|
style: ({ pressed }) => [
|
|
4388
|
-
|
|
4370
|
+
styles44.item,
|
|
4389
4371
|
pressed && { backgroundColor: colors2.colorBgSubtle },
|
|
4390
4372
|
item.disabled && { opacity: 0.4 }
|
|
4391
4373
|
],
|
|
4392
4374
|
children: [
|
|
4393
|
-
!!item.icon && /* @__PURE__ */
|
|
4375
|
+
!!item.icon && /* @__PURE__ */ jsx49(
|
|
4394
4376
|
View40,
|
|
4395
4377
|
{
|
|
4396
4378
|
importantForAccessibility: "no-hide-descendants",
|
|
@@ -4398,11 +4380,11 @@ function DropdownMenu({
|
|
|
4398
4380
|
children: item.icon
|
|
4399
4381
|
}
|
|
4400
4382
|
),
|
|
4401
|
-
/* @__PURE__ */
|
|
4402
|
-
|
|
4383
|
+
/* @__PURE__ */ jsx49(
|
|
4384
|
+
ScaledText,
|
|
4403
4385
|
{
|
|
4404
4386
|
style: [
|
|
4405
|
-
|
|
4387
|
+
styles44.itemText,
|
|
4406
4388
|
{ color: colors2.colorOnBg }
|
|
4407
4389
|
],
|
|
4408
4390
|
children: item.label
|
|
@@ -4429,10 +4411,10 @@ import {
|
|
|
4429
4411
|
Modal as Modal5,
|
|
4430
4412
|
View as View41,
|
|
4431
4413
|
Pressable as Pressable26,
|
|
4432
|
-
StyleSheet as
|
|
4414
|
+
StyleSheet as StyleSheet46
|
|
4433
4415
|
} from "react-native";
|
|
4434
|
-
import { jsx as
|
|
4435
|
-
var
|
|
4416
|
+
import { jsx as jsx50, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
4417
|
+
var styles45 = StyleSheet46.create({
|
|
4436
4418
|
wrapper: {
|
|
4437
4419
|
alignSelf: "flex-start"
|
|
4438
4420
|
},
|
|
@@ -4464,35 +4446,35 @@ function Popover({
|
|
|
4464
4446
|
const { colors: colors2 } = useTheme();
|
|
4465
4447
|
const [isOpen, setIsOpen] = useState15(false);
|
|
4466
4448
|
const close = () => setIsOpen(false);
|
|
4467
|
-
return /* @__PURE__ */ jsxs33(View41, { style: [
|
|
4449
|
+
return /* @__PURE__ */ jsxs33(View41, { style: [styles45.wrapper, style], children: [
|
|
4468
4450
|
React2.cloneElement(children, {
|
|
4469
4451
|
onPress: () => setIsOpen(true),
|
|
4470
4452
|
accessibilityRole: "button",
|
|
4471
4453
|
accessibilityLabel: accessibilityLabel ?? "Open popover"
|
|
4472
4454
|
}),
|
|
4473
|
-
/* @__PURE__ */
|
|
4455
|
+
/* @__PURE__ */ jsx50(
|
|
4474
4456
|
Modal5,
|
|
4475
4457
|
{
|
|
4476
4458
|
visible: isOpen,
|
|
4477
4459
|
transparent: true,
|
|
4478
4460
|
animationType: "fade",
|
|
4479
4461
|
onRequestClose: close,
|
|
4480
|
-
children: /* @__PURE__ */ jsxs33(View41, { style:
|
|
4481
|
-
/* @__PURE__ */
|
|
4462
|
+
children: /* @__PURE__ */ jsxs33(View41, { style: styles45.overlay, onAccessibilityEscape: close, children: [
|
|
4463
|
+
/* @__PURE__ */ jsx50(
|
|
4482
4464
|
Pressable26,
|
|
4483
4465
|
{
|
|
4484
4466
|
testID: "bds-popover-backdrop",
|
|
4485
|
-
style:
|
|
4467
|
+
style: StyleSheet46.absoluteFill,
|
|
4486
4468
|
onPress: close,
|
|
4487
4469
|
onAccessibilityTap: close,
|
|
4488
4470
|
accessibilityRole: "button",
|
|
4489
4471
|
accessibilityLabel: "Close popover"
|
|
4490
4472
|
}
|
|
4491
4473
|
),
|
|
4492
|
-
/* @__PURE__ */
|
|
4474
|
+
/* @__PURE__ */ jsx50(
|
|
4493
4475
|
View41,
|
|
4494
4476
|
{
|
|
4495
|
-
style: [
|
|
4477
|
+
style: [styles45.panel, { backgroundColor: colors2.colorBg }],
|
|
4496
4478
|
accessibilityLabel,
|
|
4497
4479
|
children: content
|
|
4498
4480
|
}
|
|
@@ -4537,6 +4519,8 @@ export {
|
|
|
4537
4519
|
Radio,
|
|
4538
4520
|
RadioGroup,
|
|
4539
4521
|
Rating,
|
|
4522
|
+
ScaledText,
|
|
4523
|
+
ScaledTextInput,
|
|
4540
4524
|
SectionHeader,
|
|
4541
4525
|
SegmentedControl,
|
|
4542
4526
|
Select,
|
|
@@ -4558,6 +4542,8 @@ export {
|
|
|
4558
4542
|
createReactNavigationTheme,
|
|
4559
4543
|
font,
|
|
4560
4544
|
lineHeight,
|
|
4545
|
+
maxFontScaleFor,
|
|
4546
|
+
maxFontScaleForStyle,
|
|
4561
4547
|
spacing,
|
|
4562
4548
|
useReactNavigationTheme,
|
|
4563
4549
|
useTheme,
|