@expokit/cli 0.4.3 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -3
- package/bin/expo-kit.js +749 -288
- package/bin/lib.mjs +313 -4
- package/package.json +1 -1
- package/registry/_docs/action-sheet.json +1 -1
- package/registry/_docs/alert.json +6 -0
- package/registry/_docs/bottom-sheet.json +6 -0
- package/registry/_docs/bullet.json +6 -0
- package/registry/_docs/dialog.json +1 -1
- package/registry/_docs/drawer.json +3 -3
- package/registry/_docs/flip-calendar.json +106 -0
- package/registry/_docs/glass-search-bar.json +1 -1
- package/registry/_docs/grain.json +6 -1
- package/registry/_docs/isometric-bar.json +6 -0
- package/registry/_docs/liquidglass-tab.json +1 -1
- package/registry/_docs/password-input.json +1 -1
- package/registry/_docs/paywall.json +144 -0
- package/registry/_docs/pixel-bar.json +6 -0
- package/registry/_docs/polar-area.json +6 -0
- package/registry/_docs/qr-code-button.json +9 -3
- package/registry/_docs/ruler-time-picker.json +147 -0
- package/registry/_docs/scratch-card.json +7 -1
- package/registry/_docs/search-bar.json +1 -1
- package/registry/_docs/select.json +2 -2
- package/registry/_docs/slide-to-confirm.json +2 -2
- package/registry/_docs/spinner.json +1 -1
- package/registry/_docs/stateful-button.json +2 -2
- package/registry/_docs/swipe-deck.json +1 -1
- package/registry/_docs/time-picker.json +2 -2
- package/registry/_docs/timeline-chart.json +6 -0
- package/registry/_docs/toast.json +15 -3
- package/registry/_docs/treemap.json +6 -0
- package/registry/_docs/waterfall.json +6 -0
- package/registry/accordion/files/src/components/ui/accordion.tsx +6 -4
- package/registry/accordion/files/src/lib/kit.tsx +462 -12
- package/registry/accordion.json +1 -0
- package/registry/action-sheet/files/src/components/ui/action-sheet.tsx +50 -58
- package/registry/action-sheet/files/src/lib/kit.tsx +462 -12
- package/registry/action-sheet.json +1 -0
- package/registry/alert/files/src/components/ui/alert.tsx +20 -13
- package/registry/alert/files/src/lib/kit.tsx +462 -12
- package/registry/alert.json +3 -4
- package/registry/assistant-app.json +1 -0
- package/registry/avatar/files/src/components/ui/avatar.tsx +89 -74
- package/registry/avatar/files/src/lib/kit.tsx +462 -12
- package/registry/avatar.json +1 -0
- package/registry/badge/files/src/components/ui/badge.tsx +36 -36
- package/registry/badge/files/src/lib/kit.tsx +462 -12
- package/registry/badge.json +1 -0
- package/registry/bottom-nav/files/src/components/ui/bottom-nav.tsx +39 -44
- package/registry/bottom-nav/files/src/lib/kit.tsx +462 -12
- package/registry/bottom-nav.json +5 -0
- package/registry/bottom-sheet/files/src/components/ui/bottom-sheet.tsx +357 -300
- package/registry/bottom-sheet/files/src/lib/kit.tsx +462 -12
- package/registry/bottom-sheet.json +5 -1
- package/registry/bullet.json +1 -0
- package/registry/button/files/src/components/ui/button.tsx +23 -34
- package/registry/button/files/src/lib/kit.tsx +462 -12
- package/registry/button-3d/files/src/components/ui/button-3d.tsx +6 -9
- package/registry/button-3d/files/src/lib/kit.tsx +462 -12
- package/registry/button-3d.json +1 -0
- package/registry/button.json +1 -0
- package/registry/calendar/files/src/components/ui/calendar.tsx +77 -79
- package/registry/calendar/files/src/lib/kit.tsx +462 -12
- package/registry/calendar.json +1 -0
- package/registry/card/files/src/components/ui/card.tsx +7 -6
- package/registry/card/files/src/lib/kit.tsx +462 -12
- package/registry/card-stack.json +1 -0
- package/registry/card.json +1 -0
- package/registry/carousel.json +1 -0
- package/registry/chat.json +7 -0
- package/registry/checkbox/files/src/components/ui/checkbox.tsx +4 -4
- package/registry/checkbox/files/src/lib/kit.tsx +462 -12
- package/registry/checkbox.json +1 -0
- package/registry/checkout.json +1 -0
- package/registry/chip-group/files/src/components/ui/chip-group.tsx +24 -24
- package/registry/chip-group/files/src/lib/kit.tsx +462 -12
- package/registry/chip-group.json +1 -0
- package/registry/confetti/files/src/components/ui/confetti.tsx +15 -14
- package/registry/confetti.json +3 -6
- package/registry/coupon/files/src/components/ui/coupon.tsx +47 -52
- package/registry/coupon/files/src/components/ui/flip-card.tsx +9 -14
- package/registry/coupon/files/src/components/ui/tilt-card.tsx +80 -101
- package/registry/coupon/files/src/lib/kit.tsx +462 -12
- package/registry/coupon/files/src/lib/ticket-shape.tsx +54 -44
- package/registry/coupon.json +1 -0
- package/registry/cube-pager.json +1 -0
- package/registry/dashboard.json +1 -0
- package/registry/date-picker/files/src/components/ui/calendar.tsx +77 -79
- package/registry/date-picker/files/src/components/ui/date-picker.tsx +64 -71
- package/registry/date-picker/files/src/lib/kit.tsx +462 -12
- package/registry/date-picker.json +1 -0
- package/registry/dialog/files/src/components/ui/dialog.tsx +66 -68
- package/registry/dialog/files/src/lib/kit.tsx +462 -12
- package/registry/dialog.json +1 -0
- package/registry/donut-shop.json +1 -0
- package/registry/drawer/files/src/components/ui/drawer.tsx +76 -88
- package/registry/drawer/files/src/lib/kit.tsx +462 -12
- package/registry/drawer.json +1 -0
- package/registry/fab.json +1 -0
- package/registry/fintech-app.json +1 -0
- package/registry/flip-calendar/files/src/components/ui/flip-calendar.tsx +632 -0
- package/registry/flip-calendar/files/src/lib/kit.tsx +672 -0
- package/registry/flip-calendar.json +24 -0
- package/registry/flip-card/files/src/components/ui/flip-card.tsx +9 -14
- package/registry/flip-card/files/src/lib/kit.tsx +462 -12
- package/registry/flip-card.json +1 -0
- package/registry/floating-input/files/src/components/ui/floating-input.tsx +33 -33
- package/registry/floating-input/files/src/lib/kit.tsx +462 -12
- package/registry/floating-input.json +1 -0
- package/registry/food-app.json +1 -0
- package/registry/gift-card.json +1 -0
- package/registry/glass-button.json +5 -0
- package/registry/glass-nav-bar.json +1 -0
- package/registry/glass-search-bar.json +1 -0
- package/registry/glass-segmented.json +1 -0
- package/registry/glass-sheet.json +1 -0
- package/registry/glass-tab-bar.json +5 -0
- package/registry/glass.json +1 -0
- package/registry/grain/files/src/components/ui/grain.tsx +16 -14
- package/registry/grain.json +8 -6
- package/registry/inbox.json +1 -0
- package/registry/isometric-bar.json +1 -0
- package/registry/kit/files/src/lib/kit.tsx +462 -12
- package/registry/kit.json +1 -0
- package/registry/liquidglass-tab/files/src/app/_layout.tsx +0 -1
- package/registry/liquidglass-tab/files/src/components/GlassTabBar.tsx +29 -16
- package/registry/liquidglass-tab/files/src/components/TabScreen.tsx +33 -19
- package/registry/liquidglass-tab/files/src/lib/tab-icons.ts +1 -1
- package/registry/liquidglass-tab.json +1 -0
- package/registry/list-item/files/src/components/ui/list-item.tsx +43 -43
- package/registry/list-item/files/src/lib/kit.tsx +462 -12
- package/registry/list-item.json +1 -0
- package/registry/loyalty-card.json +1 -0
- package/registry/morphing-button-group.json +1 -0
- package/registry/number-ticker.json +1 -0
- package/registry/offers.json +1 -0
- package/registry/onboarding.json +1 -0
- package/registry/orb-reveal.json +1 -0
- package/registry/otp-input/files/src/components/ui/otp-input.tsx +49 -30
- package/registry/otp-input/files/src/lib/kit.tsx +462 -12
- package/registry/otp-input.json +1 -0
- package/registry/parallax-layers.json +1 -0
- package/registry/parallax-scroll.json +1 -0
- package/registry/password-input/files/src/components/ui/floating-input.tsx +33 -33
- package/registry/password-input/files/src/components/ui/password-input.tsx +29 -25
- package/registry/password-input/files/src/lib/kit.tsx +462 -12
- package/registry/password-input.json +1 -0
- package/registry/payment-card/files/src/components/ui/flip-card.tsx +9 -14
- package/registry/payment-card/files/src/components/ui/payment-card.tsx +26 -20
- package/registry/payment-card/files/src/components/ui/tilt-card.tsx +80 -101
- package/registry/payment-card/files/src/lib/kit.tsx +462 -12
- package/registry/payment-card.json +1 -0
- package/registry/paywall.json +23 -0
- package/registry/pixel-bar.json +1 -0
- package/registry/polar-area.json +1 -0
- package/registry/profile.json +1 -0
- package/registry/progress/files/src/components/ui/progress.tsx +31 -29
- package/registry/progress/files/src/lib/kit.tsx +462 -12
- package/registry/progress-steps/files/src/components/ui/progress-steps.tsx +21 -21
- package/registry/progress-steps/files/src/lib/kit.tsx +462 -12
- package/registry/progress-steps.json +1 -0
- package/registry/progress.json +1 -0
- package/registry/qr-code-button.json +1 -0
- package/registry/radio-group/files/src/components/ui/radio-group.tsx +19 -19
- package/registry/radio-group/files/src/lib/kit.tsx +462 -12
- package/registry/radio-group.json +1 -0
- package/registry/rating.json +1 -0
- package/registry/ring-carousel.json +1 -0
- package/registry/ruler-time-picker/files/src/components/ui/ruler-time-picker.tsx +832 -0
- package/registry/ruler-time-picker/files/src/lib/kit.tsx +672 -0
- package/registry/ruler-time-picker.json +26 -0
- package/registry/scratch-card.json +1 -0
- package/registry/search-bar/files/src/components/ui/search-bar.tsx +28 -28
- package/registry/search-bar/files/src/lib/kit.tsx +462 -12
- package/registry/search-bar.json +1 -0
- package/registry/search-results.json +4 -0
- package/registry/segmented-control/files/src/components/ui/segmented-control.tsx +11 -17
- package/registry/segmented-control/files/src/lib/kit.tsx +462 -12
- package/registry/segmented-control.json +1 -0
- package/registry/select/files/src/components/ui/select.tsx +107 -104
- package/registry/select/files/src/lib/kit.tsx +462 -12
- package/registry/select.json +6 -0
- package/registry/settings.json +1 -0
- package/registry/sign-in.json +1 -0
- package/registry/skeleton/files/src/components/ui/skeleton.tsx +149 -80
- package/registry/skeleton/files/src/lib/kit.tsx +462 -12
- package/registry/skeleton.json +1 -0
- package/registry/slide-to-confirm.json +1 -0
- package/registry/slider/files/src/components/ui/slider.tsx +106 -108
- package/registry/slider/files/src/lib/kit.tsx +462 -12
- package/registry/slider.json +5 -0
- package/registry/spin-wheel.json +1 -0
- package/registry/spinner/files/src/components/ui/spinner.tsx +39 -29
- package/registry/spinner/files/src/lib/kit.tsx +462 -12
- package/registry/spinner.json +6 -0
- package/registry/stateful-button/files/src/components/ui/stateful-button.tsx +39 -32
- package/registry/stateful-button/files/src/lib/kit.tsx +462 -12
- package/registry/stateful-button.json +5 -0
- package/registry/stepper/files/src/components/ui/stepper.tsx +40 -38
- package/registry/stepper/files/src/lib/kit.tsx +462 -12
- package/registry/stepper.json +1 -0
- package/registry/swipe-deck.json +1 -0
- package/registry/swipeable-row.json +4 -0
- package/registry/switch/files/src/components/ui/switch.tsx +41 -47
- package/registry/switch/files/src/lib/kit.tsx +462 -12
- package/registry/switch.json +1 -0
- package/registry/tabs/files/src/components/ui/tabs.tsx +61 -64
- package/registry/tabs/files/src/lib/kit.tsx +462 -12
- package/registry/tabs.json +1 -0
- package/registry/text-animation/files/src/components/ui/text-animation.tsx +55 -42
- package/registry/text-animation/files/src/lib/kit.tsx +462 -12
- package/registry/text-animation.json +7 -0
- package/registry/textarea/files/src/components/ui/textarea.tsx +10 -10
- package/registry/textarea/files/src/lib/kit.tsx +462 -12
- package/registry/textarea.json +1 -0
- package/registry/ticket-card.json +1 -0
- package/registry/ticket-shape/files/src/lib/kit.tsx +462 -12
- package/registry/ticket-shape/files/src/lib/ticket-shape.tsx +54 -44
- package/registry/ticket-shape.json +1 -0
- package/registry/tilt-card/files/src/components/ui/tilt-card.tsx +80 -101
- package/registry/tilt-card/files/src/lib/kit.tsx +462 -12
- package/registry/tilt-card.json +1 -0
- package/registry/time-picker/files/src/components/ui/time-picker.tsx +136 -131
- package/registry/time-picker/files/src/lib/kit.tsx +462 -12
- package/registry/time-picker.json +1 -0
- package/registry/timeline/files/src/components/ui/avatar.tsx +89 -74
- package/registry/timeline/files/src/components/ui/timeline.tsx +49 -57
- package/registry/timeline/files/src/lib/kit.tsx +462 -12
- package/registry/timeline-chart.json +1 -0
- package/registry/timeline.json +1 -0
- package/registry/toast/files/src/components/ui/toast.tsx +543 -465
- package/registry/toast/files/src/lib/kit.tsx +462 -12
- package/registry/toast.json +7 -5
- package/registry/treemap.json +1 -0
- package/registry/waterfall.json +1 -0
- package/registry/wheel-list.json +1 -0
- package/schema/components.schema.json +1 -0
- package/registry/alert/files/src/components/ui/button.tsx +0 -303
- package/registry/confetti/files/src/lib/kit.tsx +0 -222
- package/registry/grain/files/src/lib/kit.tsx +0 -222
- package/registry/toast/files/src/components/ui/button.tsx +0 -303
|
@@ -29,42 +29,42 @@ export type StepperLegacyVariant = 'default' | 'pill' | 'segmented' | 'vertical'
|
|
|
29
29
|
export type StepperSize = 'sm' | 'md' | 'lg';
|
|
30
30
|
|
|
31
31
|
export interface StepperProps {
|
|
32
|
-
value?: number;
|
|
33
|
-
defaultValue?: number;
|
|
34
|
-
onValueChange?: (value: number) => void;
|
|
35
|
-
min?: number;
|
|
36
|
-
max?: number;
|
|
37
|
-
step?: number;
|
|
38
|
-
variant?: StepperVariant | StepperLegacyVariant;
|
|
32
|
+
value?: number | undefined;
|
|
33
|
+
defaultValue?: number | undefined;
|
|
34
|
+
onValueChange?: ((value: number) => void) | undefined;
|
|
35
|
+
min?: number | undefined;
|
|
36
|
+
max?: number | undefined;
|
|
37
|
+
step?: number | undefined;
|
|
38
|
+
variant?: StepperVariant | StepperLegacyVariant | undefined;
|
|
39
39
|
/** 'sm' 32 · 'md' 36 · 'lg' 44pt buttons (touch area is always ≥ 44pt); the number and icons scale too. */
|
|
40
|
-
size?: StepperSize;
|
|
40
|
+
size?: StepperSize | undefined;
|
|
41
41
|
/** Stack the buttons above and below the number (outline, filled, compact). */
|
|
42
|
-
orientation?: 'horizontal' | 'vertical';
|
|
42
|
+
orientation?: 'horizontal' | 'vertical' | undefined;
|
|
43
43
|
/** Formats the number (e.g. `(n) => '₹' + n`). Every changed character rolls. */
|
|
44
|
-
format?: (value: number) => string;
|
|
44
|
+
format?: ((value: number) => string) | undefined;
|
|
45
45
|
/** Static muted text after the number: `'kg'` or `(n) => (n === 1 ? 'night' : 'nights')`. */
|
|
46
|
-
suffix?: string | ((value: number) => string);
|
|
46
|
+
suffix?: (string | ((value: number) => string)) | undefined;
|
|
47
47
|
/** Hold a button to keep stepping, accelerating the longer you hold (default true). */
|
|
48
|
-
repeat?: boolean;
|
|
49
|
-
disabled?: boolean;
|
|
48
|
+
repeat?: boolean | undefined;
|
|
49
|
+
disabled?: boolean | undefined;
|
|
50
50
|
/** Highlight colour: icons (filled, compact), press tint (outline), fill (cart). Default theme accent. */
|
|
51
|
-
accent?: string;
|
|
51
|
+
accent?: string | undefined;
|
|
52
52
|
/** Overrides the −/+ icon colour. */
|
|
53
|
-
iconColor?: string;
|
|
53
|
+
iconColor?: string | undefined;
|
|
54
54
|
/** cart: text next to the + while collapsed at 0, e.g. "Add". */
|
|
55
|
-
addLabel?: string;
|
|
55
|
+
addLabel?: string | undefined;
|
|
56
56
|
/** Title shown to the left of the control (the control moves to the right edge). */
|
|
57
|
-
label?: string;
|
|
57
|
+
label?: string | undefined;
|
|
58
58
|
/** Muted line under `label`. */
|
|
59
|
-
description?: string;
|
|
59
|
+
description?: string | undefined;
|
|
60
60
|
/** Read by screen readers, e.g. "Guests" (defaults to `label`). */
|
|
61
|
-
accessibilityLabel?: string;
|
|
61
|
+
accessibilityLabel?: string | undefined;
|
|
62
62
|
/** The control, or the whole row when `label` / `description` is set. */
|
|
63
|
-
style?: StyleProp<ViewStyle
|
|
63
|
+
style?: StyleProp<ViewStyle> | undefined;
|
|
64
64
|
/** Applied to each −/+ button. */
|
|
65
|
-
buttonStyle?: StyleProp<ViewStyle
|
|
65
|
+
buttonStyle?: StyleProp<ViewStyle> | undefined;
|
|
66
66
|
/** Applied to the number (fontSize, colour, weight…). */
|
|
67
|
-
valueStyle?: StyleProp<TextStyle
|
|
67
|
+
valueStyle?: StyleProp<TextStyle> | undefined;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
// Controls stop growing at iOS's largest standard text size (xxxL ≈ 1.35×) so they keep their shape;
|
|
@@ -124,7 +124,7 @@ export function Stepper({
|
|
|
124
124
|
buttonStyle,
|
|
125
125
|
valueStyle,
|
|
126
126
|
}: StepperProps) {
|
|
127
|
-
const { colors, radius, font } = useKit();
|
|
127
|
+
const { colors, radius, font, labels } = useKit();
|
|
128
128
|
const ff = font.family ? { fontFamily: font.family } : null;
|
|
129
129
|
const reduce = useReduceMotion();
|
|
130
130
|
const variant: StepperVariant = variantProp in LEGACY ? LEGACY[variantProp as StepperLegacyVariant] : (variantProp as StepperVariant);
|
|
@@ -135,7 +135,9 @@ export function Stepper({
|
|
|
135
135
|
const [inner, setInner] = useState(defaultValue ?? Math.max(min, 0));
|
|
136
136
|
const current = value ?? inner;
|
|
137
137
|
const valueRef = useRef(current);
|
|
138
|
-
|
|
138
|
+
useLayoutEffect(() => {
|
|
139
|
+
valueRef.current = current;
|
|
140
|
+
});
|
|
139
141
|
|
|
140
142
|
// Direction of the last change, so digits roll the right way.
|
|
141
143
|
const [track, setTrack] = useState({ v: current, dir: 1 });
|
|
@@ -143,7 +145,7 @@ export function Stepper({
|
|
|
143
145
|
|
|
144
146
|
// Press past a limit: the number nudges toward the wall and springs back (not with Reduce Motion;
|
|
145
147
|
// the dimmed button already says it's the limit).
|
|
146
|
-
const bump =
|
|
148
|
+
const [bump] = useState(() => new Animated.Value(0));
|
|
147
149
|
const nudge = (dir: 1 | -1) => {
|
|
148
150
|
if (reduce) return;
|
|
149
151
|
Animated.sequence([
|
|
@@ -246,7 +248,7 @@ export function Stepper({
|
|
|
246
248
|
look={look[variant].btn}
|
|
247
249
|
limit={dir === 1 ? atMax : atMin}
|
|
248
250
|
disabled={!!disabled}
|
|
249
|
-
label={a11y ??
|
|
251
|
+
label={a11y ?? (title ? (dir === 1 ? labels.increaseItem : labels.decreaseItem)(title) : dir === 1 ? labels.increase : labels.decrease)}
|
|
250
252
|
reduce={reduce}
|
|
251
253
|
style={buttonStyle}
|
|
252
254
|
onPressIn={() => startRepeat(dir)}
|
|
@@ -272,8 +274,8 @@ export function Stepper({
|
|
|
272
274
|
accessibilityValue: { min, max: Number.isFinite(max) ? max : undefined, now: current, text: suffixText ? `${text} ${suffixText}` : text },
|
|
273
275
|
accessibilityState: { disabled: !!disabled },
|
|
274
276
|
accessibilityActions: [
|
|
275
|
-
{ name: 'increment', label:
|
|
276
|
-
{ name: 'decrement', label:
|
|
277
|
+
{ name: 'increment', label: labels.increase },
|
|
278
|
+
{ name: 'decrement', label: labels.decrease },
|
|
277
279
|
],
|
|
278
280
|
onAccessibilityAction: (e: AccessibilityActionEvent) => {
|
|
279
281
|
if (disabled) return;
|
|
@@ -365,9 +367,9 @@ function CartControl({
|
|
|
365
367
|
numStyle: TextStyle;
|
|
366
368
|
number: React.ReactNode;
|
|
367
369
|
text: string;
|
|
368
|
-
suffixText?: string;
|
|
370
|
+
suffixText?: string | undefined;
|
|
369
371
|
collapsed: boolean;
|
|
370
|
-
addLabel?: string;
|
|
372
|
+
addLabel?: string | undefined;
|
|
371
373
|
bump: Animated.Value;
|
|
372
374
|
disabled: boolean;
|
|
373
375
|
reduce: boolean;
|
|
@@ -387,8 +389,8 @@ function CartControl({
|
|
|
387
389
|
const closedW = addLabel ? Math.max(s.btn, addW || s.btn * 2.2) : s.btn;
|
|
388
390
|
const target = collapsed ? closedW : openW;
|
|
389
391
|
|
|
390
|
-
const width =
|
|
391
|
-
const open =
|
|
392
|
+
const [width] = useState(() => new Animated.Value(target)); // JS driver (layout)
|
|
393
|
+
const [open] = useState(() => new Animated.Value(collapsed ? 0 : 1)); // native driver
|
|
392
394
|
const settled = useRef(false);
|
|
393
395
|
|
|
394
396
|
const measured = textW > 0 && (!addLabel || addW > 0);
|
|
@@ -507,8 +509,8 @@ function StepButton({
|
|
|
507
509
|
onPressOut: () => void;
|
|
508
510
|
}) {
|
|
509
511
|
// Scale and dim share one native-driven view; nothing JS-driven touches it.
|
|
510
|
-
const scale =
|
|
511
|
-
const dim =
|
|
512
|
+
const [scale] = useState(() => new Animated.Value(1));
|
|
513
|
+
const [dim] = useState(() => new Animated.Value(limit ? 0.32 : 1));
|
|
512
514
|
// Reduce Motion: no press squeeze; the pressed background still shows the press.
|
|
513
515
|
const spring = (to: number) => {
|
|
514
516
|
if (reduce) scale.setValue(1);
|
|
@@ -562,7 +564,7 @@ function StepButton({
|
|
|
562
564
|
|
|
563
565
|
/** Stroked icon; pops in when its shape changes (− ↔ trash). */
|
|
564
566
|
function Glyph({ d, size, color, reduce }: { d: string; size: number; color: string; reduce: boolean }) {
|
|
565
|
-
const pop =
|
|
567
|
+
const [pop] = useState(() => new Animated.Value(1));
|
|
566
568
|
const prev = useRef(d);
|
|
567
569
|
useEffect(() => {
|
|
568
570
|
if (prev.current === d) return;
|
|
@@ -597,7 +599,7 @@ function RollingText({ text, dir, style, reduce }: { text: string; dir: number;
|
|
|
597
599
|
function RollingChar({ char, dir, style, reduce }: { char: string; dir: number; style: TextStyle; reduce: boolean }) {
|
|
598
600
|
const [pair, setPair] = useState<{ cur: string; prev: string | null; dir: number }>({ cur: char, prev: null, dir });
|
|
599
601
|
if (pair.cur !== char) setPair({ cur: char, prev: pair.cur, dir });
|
|
600
|
-
const t =
|
|
602
|
+
const [t] = useState(() => new Animated.Value(1));
|
|
601
603
|
// The digit window follows the text's own (capped) Dynamic Type scale, so a scaled digit isn't cropped.
|
|
602
604
|
const { fontScale } = useWindowDimensions();
|
|
603
605
|
const h = ((style.lineHeight as number) ?? 24) * Math.min(fontScale, FONT_CAP);
|
|
@@ -690,11 +692,11 @@ const styles = StyleSheet.create({
|
|
|
690
692
|
cartRow: { position: 'absolute', top: 0, bottom: 0, right: 0, flexDirection: 'row', alignItems: 'center' },
|
|
691
693
|
ruler: { position: 'absolute', top: 0, left: 0, width: 9999, flexDirection: 'row', alignItems: 'flex-start' },
|
|
692
694
|
add: { flexDirection: 'row', alignItems: 'center', justifyContent: 'center', gap: 5 },
|
|
693
|
-
addText: { fontWeight: '400', letterSpacing: 0.1 },
|
|
695
|
+
addText: { fontWeight: '400', letterSpacing: 0.1, includeFontPadding: false, textAlignVertical: 'center' },
|
|
694
696
|
roll: { flexDirection: 'row', alignItems: 'center' },
|
|
695
697
|
suffix: { fontWeight: '400', marginLeft: 4 },
|
|
696
698
|
charBox: { overflow: 'hidden', justifyContent: 'center' },
|
|
697
|
-
num: { fontWeight: '400', fontVariant: ['tabular-nums'], textAlign: 'center' },
|
|
699
|
+
num: { fontWeight: '400', fontVariant: ['tabular-nums'], textAlign: 'center', includeFontPadding: false, textAlignVertical: 'center' },
|
|
698
700
|
layer: { position: 'absolute', left: 0, right: 0 },
|
|
699
701
|
hidden: { opacity: 0 },
|
|
700
702
|
});
|