@quantaroute/checkout 1.1.1 → 1.2.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.
@@ -0,0 +1,839 @@
1
+ import { StyleSheet, Platform } from 'react-native';
2
+
3
+ // ─── Design tokens (mirrors checkout.css CSS variables) ──────────────────────
4
+
5
+ export const COLORS = {
6
+ primary: '#0ea5e9',
7
+ primaryDark: '#0284c7',
8
+ primaryLight: '#e0f2fe',
9
+ success: '#10b981',
10
+ warning: '#f59e0b',
11
+ error: '#ef4444',
12
+ // Light theme
13
+ text: '#1e293b',
14
+ textMuted: '#64748b',
15
+ textFaint: '#94a3b8',
16
+ bg: '#ffffff',
17
+ bgSubtle: '#f8fafc',
18
+ border: '#e2e8f0',
19
+ // Dark theme
20
+ textDark: '#f1f5f9',
21
+ textMutedDark: '#94a3b8',
22
+ textFaintDark: '#64748b',
23
+ bgDark: '#1e293b',
24
+ bgSubtleDark: '#0f172a',
25
+ borderDark: '#334155',
26
+ } as const;
27
+
28
+ export const FONTS = {
29
+ mono: Platform.OS === 'ios' ? 'Courier New' : 'monospace',
30
+ system: Platform.OS === 'ios' ? 'System' : 'Roboto',
31
+ } as const;
32
+
33
+ // ─── Shared stylesheet ────────────────────────────────────────────────────────
34
+
35
+ export const styles = StyleSheet.create({
36
+
37
+ // ── Root container ──────────────────────────────────────────────────────────
38
+ container: {
39
+ backgroundColor: COLORS.bg,
40
+ borderRadius: 16,
41
+ overflow: 'hidden',
42
+ width: '100%',
43
+ maxWidth: 480,
44
+ alignSelf: 'center',
45
+ shadowColor: '#000',
46
+ shadowOffset: { width: 0, height: 4 },
47
+ shadowOpacity: 0.12,
48
+ shadowRadius: 16,
49
+ elevation: 8,
50
+ },
51
+ containerDark: {
52
+ backgroundColor: COLORS.bgDark,
53
+ },
54
+
55
+ // ── Widget header ───────────────────────────────────────────────────────────
56
+ header: {
57
+ flexDirection: 'row',
58
+ alignItems: 'center',
59
+ justifyContent: 'space-between',
60
+ paddingHorizontal: 16,
61
+ paddingVertical: 14,
62
+ borderBottomWidth: 1,
63
+ borderBottomColor: COLORS.border,
64
+ backgroundColor: COLORS.bg,
65
+ },
66
+ headerDark: {
67
+ backgroundColor: COLORS.bgDark,
68
+ borderBottomColor: COLORS.borderDark,
69
+ },
70
+ headerBrand: {
71
+ flexDirection: 'row',
72
+ alignItems: 'center',
73
+ gap: 8,
74
+ },
75
+ headerIcon: {
76
+ fontSize: 18,
77
+ color: COLORS.primary,
78
+ marginRight: 6,
79
+ },
80
+ headerTitle: {
81
+ fontSize: 15,
82
+ fontWeight: '600',
83
+ color: COLORS.text,
84
+ letterSpacing: -0.2,
85
+ },
86
+ headerTitleDark: {
87
+ color: COLORS.textDark,
88
+ },
89
+
90
+ // ── Progress dots ───────────────────────────────────────────────────────────
91
+ progress: {
92
+ flexDirection: 'row',
93
+ alignItems: 'center',
94
+ gap: 4,
95
+ },
96
+ progressDot: {
97
+ width: 8,
98
+ height: 8,
99
+ borderRadius: 4,
100
+ backgroundColor: COLORS.border,
101
+ },
102
+ progressDotActive: {
103
+ backgroundColor: COLORS.primary,
104
+ },
105
+ progressLine: {
106
+ width: 20,
107
+ height: 2,
108
+ borderRadius: 1,
109
+ backgroundColor: COLORS.border,
110
+ },
111
+ progressLineActive: {
112
+ backgroundColor: COLORS.primary,
113
+ },
114
+
115
+ // ── Step header (shared by Map + Form steps) ────────────────────────────────
116
+ stepHeader: {
117
+ flexDirection: 'row',
118
+ alignItems: 'flex-start',
119
+ gap: 10,
120
+ paddingHorizontal: 16,
121
+ paddingVertical: 14,
122
+ borderBottomWidth: 1,
123
+ borderBottomColor: COLORS.border,
124
+ },
125
+ stepHeaderDark: {
126
+ borderBottomColor: COLORS.borderDark,
127
+ },
128
+ stepBadge: {
129
+ width: 26,
130
+ height: 26,
131
+ borderRadius: 13,
132
+ backgroundColor: COLORS.primary,
133
+ alignItems: 'center',
134
+ justifyContent: 'center',
135
+ marginTop: 1,
136
+ },
137
+ stepBadgeText: {
138
+ color: '#fff',
139
+ fontSize: 12,
140
+ fontWeight: '700',
141
+ },
142
+ stepText: {
143
+ flex: 1,
144
+ gap: 2,
145
+ },
146
+ stepTitle: {
147
+ fontSize: 14,
148
+ fontWeight: '600',
149
+ color: COLORS.text,
150
+ lineHeight: 18,
151
+ },
152
+ stepSub: {
153
+ fontSize: 12,
154
+ color: COLORS.textMuted,
155
+ lineHeight: 17,
156
+ },
157
+
158
+ // ── Back button ─────────────────────────────────────────────────────────────
159
+ backBtn: {
160
+ width: 34,
161
+ height: 34,
162
+ borderRadius: 8,
163
+ borderWidth: 1,
164
+ borderColor: COLORS.border,
165
+ backgroundColor: 'transparent',
166
+ alignItems: 'center',
167
+ justifyContent: 'center',
168
+ marginTop: -4,
169
+ },
170
+ backBtnDark: {
171
+ borderColor: COLORS.borderDark,
172
+ },
173
+ backBtnText: {
174
+ fontSize: 18,
175
+ color: COLORS.text,
176
+ lineHeight: 22,
177
+ },
178
+ backBtnTextDark: {
179
+ color: COLORS.textDark,
180
+ },
181
+
182
+ // ── Map wrapper ─────────────────────────────────────────────────────────────
183
+ mapWrapper: {
184
+ flex: 1,
185
+ },
186
+
187
+ // ── DigiPin badge overlay ───────────────────────────────────────────────────
188
+ digipinBadge: {
189
+ position: 'absolute',
190
+ top: 10,
191
+ left: 10,
192
+ zIndex: 10,
193
+ flexDirection: 'row',
194
+ alignItems: 'center',
195
+ gap: 6,
196
+ backgroundColor: COLORS.bg,
197
+ borderWidth: 1.5,
198
+ borderColor: COLORS.primaryLight,
199
+ borderRadius: 100,
200
+ paddingVertical: 5,
201
+ paddingLeft: 8,
202
+ paddingRight: 12,
203
+ shadowColor: '#000',
204
+ shadowOffset: { width: 0, height: 2 },
205
+ shadowOpacity: 0.12,
206
+ shadowRadius: 4,
207
+ elevation: 4,
208
+ },
209
+ digipinBadgeDark: {
210
+ backgroundColor: COLORS.bgDark,
211
+ borderColor: 'rgba(14,165,233,0.35)',
212
+ },
213
+ digipinLabel: {
214
+ fontSize: 10,
215
+ fontWeight: '700',
216
+ textTransform: 'uppercase',
217
+ letterSpacing: 1,
218
+ color: COLORS.textMuted,
219
+ },
220
+ digipinLabelDark: {
221
+ color: COLORS.textMutedDark,
222
+ },
223
+ digipinCode: {
224
+ fontSize: 13,
225
+ fontWeight: '700',
226
+ color: COLORS.primary,
227
+ letterSpacing: 0.5,
228
+ fontFamily: FONTS.mono,
229
+ },
230
+
231
+ // ── Out-of-India notice ─────────────────────────────────────────────────────
232
+ mapNotice: {
233
+ position: 'absolute',
234
+ bottom: 12,
235
+ alignSelf: 'center',
236
+ backgroundColor: 'rgba(30,41,59,0.85)',
237
+ borderRadius: 100,
238
+ paddingVertical: 6,
239
+ paddingHorizontal: 14,
240
+ },
241
+ mapNoticeText: {
242
+ color: '#fff',
243
+ fontSize: 12,
244
+ fontWeight: '500',
245
+ },
246
+
247
+ // ── Locate-me button ────────────────────────────────────────────────────────
248
+ locateBtn: {
249
+ position: 'absolute',
250
+ top: 10,
251
+ right: 10,
252
+ zIndex: 10,
253
+ width: 40,
254
+ height: 40,
255
+ borderRadius: 8,
256
+ backgroundColor: COLORS.bg,
257
+ borderWidth: 1,
258
+ borderColor: COLORS.border,
259
+ alignItems: 'center',
260
+ justifyContent: 'center',
261
+ shadowColor: '#000',
262
+ shadowOffset: { width: 0, height: 1 },
263
+ shadowOpacity: 0.1,
264
+ shadowRadius: 2,
265
+ elevation: 3,
266
+ },
267
+ locateBtnDark: {
268
+ backgroundColor: COLORS.bgDark,
269
+ borderColor: COLORS.borderDark,
270
+ },
271
+
272
+ // ── Geo error toast ─────────────────────────────────────────────────────────
273
+ geoError: {
274
+ position: 'absolute',
275
+ top: 60,
276
+ left: 10,
277
+ right: 10,
278
+ zIndex: 20,
279
+ flexDirection: 'row',
280
+ alignItems: 'flex-start',
281
+ gap: 8,
282
+ backgroundColor: '#fff',
283
+ borderWidth: 1.5,
284
+ borderColor: COLORS.error,
285
+ borderRadius: 8,
286
+ padding: 10,
287
+ shadowColor: '#000',
288
+ shadowOffset: { width: 0, height: 4 },
289
+ shadowOpacity: 0.1,
290
+ shadowRadius: 8,
291
+ elevation: 6,
292
+ },
293
+ geoErrorText: {
294
+ flex: 1,
295
+ fontSize: 12,
296
+ color: COLORS.error,
297
+ lineHeight: 16,
298
+ },
299
+ geoErrorDismiss: {
300
+ paddingHorizontal: 4,
301
+ },
302
+ geoErrorDismissText: {
303
+ fontSize: 16,
304
+ color: COLORS.error,
305
+ lineHeight: 18,
306
+ opacity: 0.8,
307
+ },
308
+
309
+ // ── Coordinates strip ───────────────────────────────────────────────────────
310
+ coordsStrip: {
311
+ flexDirection: 'row',
312
+ alignItems: 'center',
313
+ paddingHorizontal: 16,
314
+ paddingVertical: 6,
315
+ backgroundColor: COLORS.bgSubtle,
316
+ borderBottomWidth: 1,
317
+ borderBottomColor: COLORS.border,
318
+ },
319
+ coordsStripDark: {
320
+ backgroundColor: COLORS.bgSubtleDark,
321
+ borderBottomColor: COLORS.borderDark,
322
+ },
323
+ coordsText: {
324
+ fontSize: 11,
325
+ color: COLORS.textFaint,
326
+ fontFamily: FONTS.mono,
327
+ },
328
+ coordsTextDark: {
329
+ color: COLORS.textFaintDark,
330
+ },
331
+
332
+ // ── Map actions bar ─────────────────────────────────────────────────────────
333
+ mapActions: {
334
+ padding: 12,
335
+ paddingHorizontal: 16,
336
+ gap: 6,
337
+ backgroundColor: COLORS.bg,
338
+ },
339
+ mapActionsDark: {
340
+ backgroundColor: COLORS.bgDark,
341
+ },
342
+ mapHint: {
343
+ textAlign: 'center',
344
+ fontSize: 11,
345
+ color: COLORS.textMuted,
346
+ },
347
+ mapHintDark: {
348
+ color: COLORS.textMutedDark,
349
+ },
350
+
351
+ // ── Buttons ─────────────────────────────────────────────────────────────────
352
+ btnPrimary: {
353
+ flexDirection: 'row',
354
+ alignItems: 'center',
355
+ justifyContent: 'center',
356
+ gap: 6,
357
+ paddingVertical: 14,
358
+ paddingHorizontal: 18,
359
+ backgroundColor: COLORS.primary,
360
+ borderRadius: 8,
361
+ minHeight: 48,
362
+ shadowColor: COLORS.primary,
363
+ shadowOffset: { width: 0, height: 2 },
364
+ shadowOpacity: 0.3,
365
+ shadowRadius: 4,
366
+ elevation: 3,
367
+ },
368
+ btnPrimaryText: {
369
+ color: '#fff',
370
+ fontSize: 15,
371
+ fontWeight: '600',
372
+ letterSpacing: -0.1,
373
+ },
374
+ btnGhost: {
375
+ flexDirection: 'row',
376
+ alignItems: 'center',
377
+ justifyContent: 'center',
378
+ gap: 6,
379
+ paddingVertical: 10,
380
+ paddingHorizontal: 16,
381
+ borderRadius: 8,
382
+ borderWidth: 1.5,
383
+ borderColor: COLORS.border,
384
+ minHeight: 44,
385
+ },
386
+ btnGhostDark: {
387
+ borderColor: COLORS.borderDark,
388
+ },
389
+ btnGhostText: {
390
+ color: COLORS.textMuted,
391
+ fontSize: 14,
392
+ fontWeight: '600',
393
+ },
394
+ btnGhostTextDark: {
395
+ color: COLORS.textMutedDark,
396
+ },
397
+ btnSecondary: {
398
+ flexDirection: 'row',
399
+ alignItems: 'center',
400
+ justifyContent: 'center',
401
+ gap: 6,
402
+ paddingVertical: 8,
403
+ paddingHorizontal: 14,
404
+ borderRadius: 8,
405
+ backgroundColor: COLORS.bgSubtle,
406
+ borderWidth: 1.5,
407
+ borderColor: COLORS.border,
408
+ minHeight: 36,
409
+ },
410
+ btnSecondaryText: {
411
+ color: COLORS.text,
412
+ fontSize: 12,
413
+ fontWeight: '600',
414
+ },
415
+ btnDisabled: {
416
+ opacity: 0.45,
417
+ },
418
+
419
+ // ── DigiPin reference strip (form step) ────────────────────────────────────
420
+ formDigipinStrip: {
421
+ flexDirection: 'row',
422
+ alignItems: 'center',
423
+ gap: 8,
424
+ paddingHorizontal: 16,
425
+ paddingVertical: 10,
426
+ backgroundColor: COLORS.primaryLight,
427
+ borderBottomWidth: 1,
428
+ borderBottomColor: 'rgba(14,165,233,0.2)',
429
+ },
430
+ formDigipinStripDark: {
431
+ backgroundColor: 'rgba(14,165,233,0.12)',
432
+ borderBottomColor: 'rgba(14,165,233,0.2)',
433
+ },
434
+ formDigipinStripIcon: {
435
+ fontSize: 14,
436
+ color: COLORS.primary,
437
+ },
438
+ formDigipinStripLabel: {
439
+ fontSize: 10,
440
+ fontWeight: '700',
441
+ textTransform: 'uppercase',
442
+ letterSpacing: 1,
443
+ color: COLORS.textMuted,
444
+ },
445
+ formDigipinStripCode: {
446
+ fontSize: 13,
447
+ fontWeight: '700',
448
+ color: COLORS.primary,
449
+ letterSpacing: 0.6,
450
+ fontFamily: FONTS.mono,
451
+ },
452
+
453
+ // ── Loading state ───────────────────────────────────────────────────────────
454
+ loadingState: {
455
+ alignItems: 'center',
456
+ justifyContent: 'center',
457
+ gap: 12,
458
+ paddingVertical: 48,
459
+ paddingHorizontal: 16,
460
+ },
461
+ loadingText: {
462
+ fontSize: 13,
463
+ color: COLORS.textMuted,
464
+ textAlign: 'center',
465
+ },
466
+ loadingTextDark: {
467
+ color: COLORS.textMutedDark,
468
+ },
469
+
470
+ // ── Error state ─────────────────────────────────────────────────────────────
471
+ errorState: {
472
+ alignItems: 'center',
473
+ gap: 8,
474
+ paddingVertical: 32,
475
+ paddingHorizontal: 16,
476
+ },
477
+ errorIcon: {
478
+ fontSize: 28,
479
+ color: COLORS.warning,
480
+ },
481
+ errorMsg: {
482
+ fontSize: 13,
483
+ color: COLORS.textMuted,
484
+ textAlign: 'center',
485
+ maxWidth: 280,
486
+ lineHeight: 18,
487
+ },
488
+ errorMsgDark: {
489
+ color: COLORS.textMutedDark,
490
+ },
491
+
492
+ // ── Form sections ───────────────────────────────────────────────────────────
493
+ sectionHeader: {
494
+ flexDirection: 'row',
495
+ alignItems: 'center',
496
+ gap: 8,
497
+ paddingHorizontal: 16,
498
+ paddingTop: 12,
499
+ paddingBottom: 10,
500
+ },
501
+ sectionHeaderIcon: {
502
+ fontSize: 14,
503
+ },
504
+ sectionHeaderText: {
505
+ fontSize: 12,
506
+ fontWeight: '600',
507
+ color: COLORS.textMuted,
508
+ textTransform: 'uppercase',
509
+ letterSpacing: 0.8,
510
+ },
511
+ sectionHeaderTextDark: {
512
+ color: COLORS.textMutedDark,
513
+ },
514
+ sectionDivider: {
515
+ height: 1,
516
+ backgroundColor: COLORS.border,
517
+ marginBottom: 0,
518
+ },
519
+ sectionDividerDark: {
520
+ backgroundColor: COLORS.borderDark,
521
+ },
522
+
523
+ // ── Auto-filled rows ────────────────────────────────────────────────────────
524
+ autoGrid: {
525
+ paddingHorizontal: 8,
526
+ paddingBottom: 12,
527
+ },
528
+ autoRow: {
529
+ paddingHorizontal: 8,
530
+ paddingVertical: 8,
531
+ borderRadius: 8,
532
+ },
533
+ autoRowLabel: {
534
+ fontSize: 10,
535
+ fontWeight: '600',
536
+ textTransform: 'uppercase',
537
+ letterSpacing: 0.8,
538
+ color: COLORS.textFaint,
539
+ marginBottom: 2,
540
+ },
541
+ autoRowLabelDark: {
542
+ color: COLORS.textFaintDark,
543
+ },
544
+ autoRowValue: {
545
+ fontSize: 13,
546
+ fontWeight: '500',
547
+ color: COLORS.text,
548
+ },
549
+ autoRowValueDark: {
550
+ color: COLORS.textDark,
551
+ },
552
+ autoRowValuePincode: {
553
+ fontSize: 14,
554
+ fontWeight: '700',
555
+ color: COLORS.primary,
556
+ fontFamily: FONTS.mono,
557
+ },
558
+ autoRowsRow: {
559
+ flexDirection: 'row',
560
+ gap: 0,
561
+ },
562
+ autoRowHalf: {
563
+ flex: 1,
564
+ },
565
+
566
+ // ── Locality selector ───────────────────────────────────────────────────────
567
+ localitySelector: {
568
+ flexDirection: 'row',
569
+ alignItems: 'center',
570
+ justifyContent: 'space-between',
571
+ paddingVertical: 6,
572
+ paddingHorizontal: 10,
573
+ borderWidth: 1.5,
574
+ borderColor: COLORS.border,
575
+ borderRadius: 8,
576
+ backgroundColor: COLORS.bg,
577
+ marginTop: 2,
578
+ },
579
+ localitySelectorDark: {
580
+ borderColor: COLORS.borderDark,
581
+ backgroundColor: COLORS.bgDark,
582
+ },
583
+ localitySelectorText: {
584
+ fontSize: 13,
585
+ fontWeight: '500',
586
+ color: COLORS.text,
587
+ flex: 1,
588
+ },
589
+ localitySelectorTextDark: {
590
+ color: COLORS.textDark,
591
+ },
592
+ localitySelectorArrow: {
593
+ fontSize: 12,
594
+ color: COLORS.textMuted,
595
+ marginLeft: 4,
596
+ },
597
+
598
+ // ── Locality picker modal ───────────────────────────────────────────────────
599
+ modalOverlay: {
600
+ flex: 1,
601
+ backgroundColor: 'rgba(0,0,0,0.5)',
602
+ justifyContent: 'flex-end',
603
+ },
604
+ modalSheet: {
605
+ backgroundColor: COLORS.bg,
606
+ borderTopLeftRadius: 20,
607
+ borderTopRightRadius: 20,
608
+ paddingTop: 8,
609
+ paddingBottom: 32,
610
+ maxHeight: '60%',
611
+ },
612
+ modalSheetDark: {
613
+ backgroundColor: COLORS.bgDark,
614
+ },
615
+ modalHandle: {
616
+ width: 40,
617
+ height: 4,
618
+ borderRadius: 2,
619
+ backgroundColor: COLORS.border,
620
+ alignSelf: 'center',
621
+ marginBottom: 12,
622
+ },
623
+ modalTitle: {
624
+ fontSize: 15,
625
+ fontWeight: '600',
626
+ color: COLORS.text,
627
+ paddingHorizontal: 20,
628
+ paddingBottom: 10,
629
+ borderBottomWidth: 1,
630
+ borderBottomColor: COLORS.border,
631
+ },
632
+ modalTitleDark: {
633
+ color: COLORS.textDark,
634
+ borderBottomColor: COLORS.borderDark,
635
+ },
636
+ modalOption: {
637
+ flexDirection: 'row',
638
+ alignItems: 'center',
639
+ justifyContent: 'space-between',
640
+ paddingHorizontal: 20,
641
+ paddingVertical: 14,
642
+ borderBottomWidth: StyleSheet.hairlineWidth,
643
+ borderBottomColor: COLORS.border,
644
+ },
645
+ modalOptionDark: {
646
+ borderBottomColor: COLORS.borderDark,
647
+ },
648
+ modalOptionSelected: {
649
+ backgroundColor: COLORS.primaryLight,
650
+ },
651
+ modalOptionText: {
652
+ fontSize: 14,
653
+ color: COLORS.text,
654
+ },
655
+ modalOptionTextDark: {
656
+ color: COLORS.textDark,
657
+ },
658
+ modalOptionTextSelected: {
659
+ color: COLORS.primary,
660
+ fontWeight: '600',
661
+ },
662
+ modalOptionCheckmark: {
663
+ fontSize: 14,
664
+ color: COLORS.primary,
665
+ fontWeight: '700',
666
+ },
667
+
668
+ // ── Manual fields ───────────────────────────────────────────────────────────
669
+ fieldsGrid: {
670
+ paddingHorizontal: 16,
671
+ paddingTop: 8,
672
+ paddingBottom: 16,
673
+ gap: 12,
674
+ },
675
+ fieldRow: {
676
+ flexDirection: 'row',
677
+ gap: 12,
678
+ },
679
+ field: {
680
+ flex: 1,
681
+ gap: 4,
682
+ },
683
+ fieldFull: {
684
+ gap: 4,
685
+ },
686
+ fieldLabel: {
687
+ flexDirection: 'row',
688
+ alignItems: 'center',
689
+ gap: 4,
690
+ },
691
+ fieldLabelText: {
692
+ fontSize: 12,
693
+ fontWeight: '600',
694
+ color: COLORS.textMuted,
695
+ },
696
+ fieldLabelTextDark: {
697
+ color: COLORS.textMutedDark,
698
+ },
699
+ fieldRequired: {
700
+ fontSize: 14,
701
+ color: COLORS.error,
702
+ lineHeight: 16,
703
+ },
704
+ fieldOptional: {
705
+ fontSize: 10,
706
+ fontWeight: '400',
707
+ color: COLORS.textFaint,
708
+ },
709
+ fieldOptionalDark: {
710
+ color: COLORS.textFaintDark,
711
+ },
712
+ fieldInput: {
713
+ paddingVertical: 9,
714
+ paddingHorizontal: 11,
715
+ fontSize: 14,
716
+ color: COLORS.text,
717
+ backgroundColor: COLORS.bg,
718
+ borderWidth: 1.5,
719
+ borderColor: COLORS.border,
720
+ borderRadius: 8,
721
+ minHeight: 42,
722
+ },
723
+ fieldInputDark: {
724
+ color: COLORS.textDark,
725
+ backgroundColor: COLORS.bgDark,
726
+ borderColor: COLORS.borderDark,
727
+ },
728
+ fieldInputFocused: {
729
+ borderColor: COLORS.primary,
730
+ },
731
+
732
+ // ── Form actions ────────────────────────────────────────────────────────────
733
+ formActions: {
734
+ flexDirection: 'row',
735
+ gap: 8,
736
+ padding: 12,
737
+ paddingHorizontal: 16,
738
+ borderTopWidth: 1,
739
+ borderTopColor: COLORS.border,
740
+ backgroundColor: COLORS.bg,
741
+ },
742
+ formActionsDark: {
743
+ backgroundColor: COLORS.bgDark,
744
+ borderTopColor: COLORS.borderDark,
745
+ },
746
+
747
+ // ── Success screen ──────────────────────────────────────────────────────────
748
+ successScreen: {
749
+ alignItems: 'center',
750
+ gap: 12,
751
+ paddingVertical: 32,
752
+ paddingHorizontal: 20,
753
+ },
754
+ successIcon: {
755
+ fontSize: 48,
756
+ },
757
+ successTitle: {
758
+ fontSize: 18,
759
+ fontWeight: '700',
760
+ color: COLORS.text,
761
+ letterSpacing: -0.2,
762
+ textAlign: 'center',
763
+ },
764
+ successTitleDark: {
765
+ color: COLORS.textDark,
766
+ },
767
+ successAddress: {
768
+ fontSize: 13,
769
+ color: COLORS.textMuted,
770
+ textAlign: 'center',
771
+ maxWidth: 300,
772
+ lineHeight: 19,
773
+ },
774
+ successAddressDark: {
775
+ color: COLORS.textMutedDark,
776
+ },
777
+ successDigipinBadge: {
778
+ flexDirection: 'row',
779
+ alignItems: 'center',
780
+ gap: 6,
781
+ paddingVertical: 5,
782
+ paddingLeft: 8,
783
+ paddingRight: 12,
784
+ borderRadius: 100,
785
+ borderWidth: 1.5,
786
+ borderColor: COLORS.primaryLight,
787
+ backgroundColor: COLORS.bg,
788
+ },
789
+ successDigipinBadgeDark: {
790
+ borderColor: 'rgba(14,165,233,0.35)',
791
+ backgroundColor: COLORS.bgDark,
792
+ },
793
+
794
+ // ── Footer ──────────────────────────────────────────────────────────────────
795
+ footer: {
796
+ flexDirection: 'row',
797
+ alignItems: 'center',
798
+ justifyContent: 'center',
799
+ gap: 4,
800
+ paddingVertical: 8,
801
+ paddingHorizontal: 16,
802
+ borderTopWidth: 1,
803
+ borderTopColor: COLORS.border,
804
+ backgroundColor: COLORS.bgSubtle,
805
+ },
806
+ footerDark: {
807
+ backgroundColor: COLORS.bgSubtleDark,
808
+ borderTopColor: COLORS.borderDark,
809
+ },
810
+ footerText: {
811
+ fontSize: 11,
812
+ color: COLORS.textFaint,
813
+ },
814
+ footerTextDark: {
815
+ color: COLORS.textFaintDark,
816
+ },
817
+ footerLink: {
818
+ fontSize: 11,
819
+ color: COLORS.primary,
820
+ fontWeight: '500',
821
+ },
822
+
823
+ // ── Generic text helpers ────────────────────────────────────────────────────
824
+ textLight: {
825
+ color: COLORS.textDark,
826
+ },
827
+ textMutedStyle: {
828
+ color: COLORS.textMuted,
829
+ },
830
+ textMutedDarkStyle: {
831
+ color: COLORS.textMutedDark,
832
+ },
833
+ textFaintStyle: {
834
+ color: COLORS.textFaint,
835
+ },
836
+ textFaintDarkStyle: {
837
+ color: COLORS.textFaintDark,
838
+ },
839
+ });