@controleonline/ui-default 1.0.270 → 1.0.272

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.
Files changed (89) hide show
  1. package/.github/workflows/integration-source-gate.yml +68 -0
  2. package/.github/workflows/manager-worker.yml +19 -0
  3. package/AGENTS.md +46 -50
  4. package/docs/technical/Contrato-de-colunas.md +67 -0
  5. package/docs/technical/Default-Components.md +76 -0
  6. package/docs/technical/DefaultForm.md +80 -0
  7. package/docs/technical/DefaultInput-e-DefaultSelect.md +73 -0
  8. package/docs/technical/DefaultTable.md +203 -0
  9. package/docs/wiki.md +1 -0
  10. package/package.json +22 -21
  11. package/scripts/validate-wiki-pointer.cjs +13 -0
  12. package/src/react/components/address/DefaultAddress.js +435 -0
  13. package/src/react/components/address/DefaultAddress.styles.js +133 -0
  14. package/src/react/components/address/DefaultAddressMapPane.js +55 -0
  15. package/src/react/components/address/LatLonReadonlyFields.js +51 -0
  16. package/src/react/components/address/defaultAddressHelpers.js +163 -0
  17. package/src/react/components/address/defaultAddressStyles.js +136 -0
  18. package/src/react/components/address/defaultAddressUtils.js +129 -0
  19. package/src/react/components/extra-data/DefaultExtraData.js +152 -0
  20. package/src/react/components/extra-data/DefaultExtraData.styles.js +61 -0
  21. package/src/react/components/files/DefaultFile.js +231 -46
  22. package/src/react/components/files/DefaultFileColumn.js +123 -0
  23. package/src/react/components/files/DefaultFileColumn.styles.js +52 -0
  24. package/src/react/components/files/DefaultFileColumn.utils.js +104 -0
  25. package/src/react/components/filters/CompactFilterSelector.js +51 -35
  26. package/src/react/components/filters/DefaultColumnFilter.js +58 -41
  27. package/src/react/components/filters/DefaultExternalFilters.js +331 -265
  28. package/src/react/components/form/DefaultForm.js +99 -79
  29. package/src/react/components/help/DefaultTooltip.js +59 -33
  30. package/src/react/components/help/DefaultTooltip.styles.js +23 -3
  31. package/src/react/components/inputs/DefaultColorInput.js +153 -0
  32. package/src/react/components/inputs/DefaultFeatherIconPicker.js +146 -0
  33. package/src/react/components/inputs/DefaultFeatherIconPicker.styles.js +113 -0
  34. package/src/react/components/inputs/DefaultInput.js +69 -5
  35. package/src/react/components/inputs/DefaultInput.styles.js +26 -0
  36. package/src/react/components/inputs/DefaultSelect.js +134 -123
  37. package/src/react/components/inputs/defaultInputUtils.js +69 -43
  38. package/src/react/components/map/DefaultMap.native.js +73 -73
  39. package/src/react/components/map/DefaultMap.shared.js +911 -762
  40. package/src/react/components/map/DefaultMap.web.js +124 -68
  41. package/src/react/components/table/DefaultColumnMenu.js +109 -108
  42. package/src/react/components/table/DefaultDebug.js +44 -37
  43. package/src/react/components/table/DefaultSearchModal.js +9 -1
  44. package/src/react/components/table/DefaultTable.grouping.js +98 -0
  45. package/src/react/components/table/DefaultTable.js +213 -107
  46. package/src/react/components/table/DefaultTable.styles.js +367 -314
  47. package/src/react/components/table/DefaultTableBody.js +13 -8
  48. package/src/react/components/table/DefaultTableCards.js +20 -1
  49. package/src/react/components/table/DefaultTableControls.js +180 -205
  50. package/src/react/components/table/DefaultTableImportModal.js +108 -0
  51. package/src/react/components/table/DefaultTableInput.js +1 -0
  52. package/src/react/components/table/DefaultTableRowActions.js +1 -1
  53. package/src/react/components/table/DefaultTableRows.js +224 -363
  54. package/src/react/components/table/DefaultTableSearch.js +28 -5
  55. package/src/react/components/table/DefaultTableToolbar.js +92 -3
  56. package/src/react/components/table/useDefaultTablePagination.js +56 -7
  57. package/src/react/components/table/useDefaultTableStoreSync.js +164 -0
  58. package/src/react/components/upload/DefaultUpload.js +436 -0
  59. package/src/react/components/upload/DefaultUpload.styles.js +153 -0
  60. package/src/react/components/upload/DefaultUploadAttachmentsList.js +138 -0
  61. package/src/react/components/upload/DefaultUploadManagerModal.js +247 -0
  62. package/src/react/components/upload/defaultUploadHelpers.js +108 -0
  63. package/src/react/components/upload/defaultUploadLibrary.js +248 -0
  64. package/src/react/components/upload/fileUpload.js +93 -0
  65. package/src/react/hooks/usePostalCodeLookup.js +145 -0
  66. package/src/react/index.js +6 -0
  67. package/src/react/services/addressFormUtils.js +196 -0
  68. package/src/react/services/addressGeo.js +227 -0
  69. package/src/react/utils/tableVisibleColumnsPreferences.js +29 -12
  70. package/src/tests/react/components/address/defaultAddressHelpers.test.js +104 -0
  71. package/src/tests/react/components/files/DefaultFile.test.js +6 -6
  72. package/src/tests/react/components/form/DefaultForm.test.js +123 -0
  73. package/src/tests/react/components/inputs/DefaultSelect.test.js +108 -79
  74. package/src/tests/react/components/table/DefaultTable.grouping.test.js +49 -0
  75. package/src/tests/react/components/table/DefaultTable.test.js +53 -2
  76. package/src/tests/react/components/table/DefaultTableControls.filters.test.mjs +21 -0
  77. package/src/tests/react/components/table/resolveRowBackgroundColor.test.mjs +45 -0
  78. package/src/tests/react/components/table/useDefaultTableStoreSync.test.js +161 -0
  79. package/src/tests/react/components/upload/DefaultUpload.test.js +353 -0
  80. package/src/tests/react/components/upload/defaultUploadLibrary.test.js +82 -0
  81. package/src/tests/react/components/upload/peopleMediaLibraryPreview.test.mjs +57 -0
  82. package/src/tests/react/hooks/usePostalCodeLookup.test.js +40 -0
  83. package/src/tests/react/services/SMOKE-637-cep-hydrate.md +45 -0
  84. package/src/tests/react/services/addressFormUtils.test.js +176 -0
  85. package/src/tests/react/services/addressGeoLookup.async.test.js +104 -0
  86. package/src/tests/react/services/addressGeoLookup.test.js +105 -0
  87. package/src/tests/react/services/smoke-637/form-cep-12941040.png +0 -0
  88. package/src/tests/react/services/smoke-637/index.html +132 -0
  89. package/src/tests/react/utils/tableVisibleColumnsPreferences.test.js +84 -48
@@ -1,17 +1,17 @@
1
- import { Platform, StyleSheet } from 'react-native';
2
-
3
- const shadow = Platform.select({
4
- ios: {
5
- shadowColor: '#0F172A',
6
- shadowOffset: { width: 0, height: 8 },
7
- shadowOpacity: 0.14,
8
- shadowRadius: 20,
9
- },
10
- android: { elevation: 6 },
11
- web: { boxShadow: '0 14px 36px rgba(15,23,42,0.16)' },
12
- });
13
-
14
- const styles = StyleSheet.create({
1
+ import { Platform, StyleSheet } from 'react-native';
2
+
3
+ const shadow = Platform.select({
4
+ ios: {
5
+ shadowColor: '#0F172A',
6
+ shadowOffset: { width: 0, height: 8 },
7
+ shadowOpacity: 0.14,
8
+ shadowRadius: 20,
9
+ },
10
+ android: { elevation: 6 },
11
+ web: { boxShadow: '0 14px 36px rgba(15,23,42,0.16)' },
12
+ });
13
+
14
+ const styles = StyleSheet.create({
15
15
  wrap: {
16
16
  flex: 1,
17
17
  width: '100%',
@@ -104,11 +104,11 @@ const styles = StyleSheet.create({
104
104
  alignItems: 'center',
105
105
  justifyContent: 'center',
106
106
  flexShrink: 1,
107
- },
108
- toolbarCountText: {
109
- fontSize: 9,
110
- fontWeight: '900',
111
- },
107
+ },
108
+ toolbarCountText: {
109
+ fontSize: 9,
110
+ fontWeight: '900',
111
+ },
112
112
  toolbarButton: {
113
113
  minWidth: 36,
114
114
  height: 36,
@@ -119,7 +119,7 @@ const styles = StyleSheet.create({
119
119
  alignItems: 'center',
120
120
  justifyContent: 'center',
121
121
  gap: 4,
122
- },
122
+ },
123
123
  toolbarButtonActive: {
124
124
  },
125
125
  toolbarAddButton: {
@@ -139,6 +139,35 @@ const styles = StyleSheet.create({
139
139
  zIndex: 30,
140
140
  ...shadow,
141
141
  },
142
+ bottomAddBar: {
143
+ paddingHorizontal: 12,
144
+ paddingVertical: 10,
145
+ borderTopWidth: 1,
146
+ borderTopColor: '#E2E8F0',
147
+ backgroundColor: '#FFFFFF',
148
+ zIndex: 14,
149
+ ...shadow,
150
+ ...Platform.select({
151
+ web: {
152
+ position: 'sticky',
153
+ bottom: 0,
154
+ },
155
+ default: {},
156
+ }),
157
+ },
158
+ bottomAddButton: {
159
+ minHeight: 46,
160
+ borderRadius: 8,
161
+ paddingHorizontal: 16,
162
+ flexDirection: 'row',
163
+ alignItems: 'center',
164
+ justifyContent: 'center',
165
+ gap: 8,
166
+ },
167
+ bottomAddText: {
168
+ fontSize: 14,
169
+ fontWeight: '900',
170
+ },
142
171
  toolbarBadgeText: {
143
172
  fontSize: 10,
144
173
  fontWeight: '900',
@@ -164,12 +193,12 @@ const styles = StyleSheet.create({
164
193
  ...shadow,
165
194
  },
166
195
  columnMenuItem: {
167
- minHeight: 32,
168
- paddingHorizontal: 10,
169
- flexDirection: 'row',
170
- alignItems: 'center',
171
- gap: 8,
172
- },
196
+ minHeight: 32,
197
+ paddingHorizontal: 10,
198
+ flexDirection: 'row',
199
+ alignItems: 'center',
200
+ gap: 8,
201
+ },
173
202
  columnMenuText: {
174
203
  flex: 1,
175
204
  color: '#0F172A',
@@ -272,6 +301,12 @@ const styles = StyleSheet.create({
272
301
  width: '100%',
273
302
  minHeight: 0,
274
303
  },
304
+ body: {
305
+ flex: 1,
306
+ width: '100%',
307
+ minHeight: 0,
308
+ overflow: 'hidden',
309
+ },
275
310
  horizontalScrollContent: {
276
311
  flexGrow: 1,
277
312
  minWidth: '100%',
@@ -279,40 +314,40 @@ const styles = StyleSheet.create({
279
314
  content: {
280
315
  flex: 1,
281
316
  width: '100%',
282
- minWidth: '100%',
283
- minHeight: 0,
284
- },
317
+ minWidth: '100%',
318
+ minHeight: 0,
319
+ },
285
320
  headerRow: {
286
321
  minHeight: 40,
287
- width: '100%',
288
- flexDirection: 'row',
289
- alignItems: 'center',
290
- backgroundColor: '#F8FAFC',
291
- borderBottomWidth: 1,
292
- borderBottomColor: '#E2E8F0',
293
- },
322
+ width: '100%',
323
+ flexDirection: 'row',
324
+ alignItems: 'center',
325
+ backgroundColor: '#F8FAFC',
326
+ borderBottomWidth: 1,
327
+ borderBottomColor: '#E2E8F0',
328
+ },
294
329
  filterRow: {
295
330
  minHeight: 46,
296
- width: '100%',
297
- flexDirection: 'row',
298
- alignItems: 'stretch',
299
- backgroundColor: '#FFFFFF',
300
- borderBottomWidth: 1,
301
- borderBottomColor: '#E2E8F0',
302
- },
331
+ width: '100%',
332
+ flexDirection: 'row',
333
+ alignItems: 'stretch',
334
+ backgroundColor: '#FFFFFF',
335
+ borderBottomWidth: 1,
336
+ borderBottomColor: '#E2E8F0',
337
+ },
303
338
  row: {
304
339
  minHeight: 48,
305
- width: '100%',
306
- flexDirection: 'row',
307
- alignItems: 'stretch',
308
- borderBottomWidth: 1,
309
- borderBottomColor: '#EEF2F7',
310
- },
340
+ width: '100%',
341
+ flexDirection: 'row',
342
+ alignItems: 'stretch',
343
+ borderBottomWidth: 1,
344
+ borderBottomColor: '#EEF2F7',
345
+ },
311
346
  cell: {
312
347
  minWidth: 118,
313
348
  flexBasis: 118,
314
- flexGrow: 1,
315
- flexShrink: 0,
349
+ flexGrow: 1,
350
+ flexShrink: 0,
316
351
  paddingHorizontal: 14,
317
352
  paddingVertical: 10,
318
353
  justifyContent: 'center',
@@ -373,75 +408,73 @@ const styles = StyleSheet.create({
373
408
  moneyCell: {
374
409
  minWidth: 132,
375
410
  flexBasis: 132,
376
- flexGrow: 0.9,
377
- },
411
+ flexGrow: 0.9,
412
+ },
378
413
  headerText: {
379
414
  fontSize: 11,
380
415
  fontWeight: '800',
381
416
  letterSpacing: 0,
382
417
  textTransform: 'uppercase',
383
418
  },
384
- sortableHeader: {
385
- flexDirection: 'row',
386
- alignItems: 'center',
387
- gap: 4,
388
- },
389
- filterCell: {
390
- paddingVertical: 4,
391
- backgroundColor: '#FFFFFF',
392
- },
393
- filterInput: {
394
- height: 30,
395
- borderWidth: 1,
396
- borderColor: '#CBD5E1',
397
- borderRadius: 8,
398
- paddingHorizontal: 8,
399
- color: '#0F172A',
400
- backgroundColor: '#FFFFFF',
401
- fontSize: 11,
402
- fontWeight: '700',
403
- },
419
+ sortableHeader: {
420
+ flexDirection: 'row',
421
+ alignItems: 'center',
422
+ gap: 4,
423
+ },
424
+ filterCell: {
425
+ paddingVertical: 4,
426
+ backgroundColor: '#FFFFFF',
427
+ },
428
+ filterInput: {
429
+ height: 30,
430
+ borderWidth: 1,
431
+ borderColor: '#CBD5E1',
432
+ borderRadius: 8,
433
+ paddingHorizontal: 8,
434
+ color: '#0F172A',
435
+ backgroundColor: '#FFFFFF',
436
+ fontSize: 11,
437
+ fontWeight: '700',
438
+ },
404
439
  cellText: {
405
440
  fontSize: 13,
406
441
  fontWeight: '600',
407
442
  },
408
- mutedCellText: {
409
- color: '#94A3B8',
410
- },
411
- editableCell: {
412
- backgroundColor: '#FFFFFF',
413
- },
443
+ mutedCellText: {
444
+ color: '#94A3B8',
445
+ },
446
+ editableCell: {
447
+ backgroundColor: '#FFFFFF',
448
+ },
414
449
  editingCell: {
415
450
  paddingVertical: 4,
416
451
  backgroundColor: '#EFF6FF',
417
452
  },
418
453
  input: {
419
- flex: 1,
420
- height: 32,
421
- borderWidth: 1,
422
- borderColor: '#93C5FD',
423
- borderRadius: 8,
424
- paddingHorizontal: 8,
425
- color: '#0F172A',
426
- fontSize: 12,
427
- fontWeight: '700',
428
- backgroundColor: '#FFFFFF',
429
- },
430
- savingText: {
431
- marginTop: 2,
432
- color: '#64748B',
433
- fontSize: 9,
434
- fontWeight: '800',
435
- textTransform: 'uppercase',
436
- },
454
+ flex: 1,
455
+ height: 32,
456
+ borderWidth: 1,
457
+ borderColor: '#93C5FD',
458
+ borderRadius: 8,
459
+ paddingHorizontal: 8,
460
+ color: '#0F172A',
461
+ fontSize: 12,
462
+ fontWeight: '700',
463
+ backgroundColor: '#FFFFFF',
464
+ },
465
+ savingText: {
466
+ marginTop: 2,
467
+ color: '#64748B',
468
+ fontSize: 9,
469
+ fontWeight: '800',
470
+ textTransform: 'uppercase',
471
+ },
437
472
  actionsCell: {
438
- minWidth: 60,
439
- width: 60,
440
- flexBasis: 60,
473
+ minWidth: 96,
441
474
  flexGrow: 0,
442
475
  flexShrink: 0,
443
- maxWidth: 72,
444
476
  alignItems: 'center',
477
+ paddingHorizontal: 8,
445
478
  },
446
479
  rowActionsGroup: {
447
480
  flexDirection: 'row',
@@ -456,41 +489,59 @@ const styles = StyleSheet.create({
456
489
  height: 28,
457
490
  borderRadius: 14,
458
491
  alignItems: 'center',
459
- justifyContent: 'center',
460
- borderWidth: 1,
461
- borderColor: '#E2E8F0',
462
- backgroundColor: '#F8FAFC',
463
- },
464
- cancelButton: {
465
- width: 28,
466
- height: 28,
467
- borderRadius: 14,
468
- alignItems: 'center',
469
- justifyContent: 'center',
470
- backgroundColor: '#FFFFFF',
471
- borderWidth: 1,
472
- borderColor: '#CBD5E1',
473
- },
474
- cardsScroll: {
475
- flex: 1,
476
- minHeight: 0,
477
- },
478
- cardsGrid: {
479
- padding: 10,
480
- gap: 10,
481
- flexGrow: 1,
482
- },
483
- tableList: {
484
- flex: 1,
485
- width: '100%',
486
- minHeight: 0,
487
- },
488
- tableListContent: {
489
- flexGrow: 1,
490
- width: '100%',
491
- },
492
+ justifyContent: 'center',
493
+ borderWidth: 1,
494
+ borderColor: '#E2E8F0',
495
+ backgroundColor: '#F8FAFC',
496
+ },
497
+ cancelButton: {
498
+ width: 28,
499
+ height: 28,
500
+ borderRadius: 14,
501
+ alignItems: 'center',
502
+ justifyContent: 'center',
503
+ backgroundColor: '#FFFFFF',
504
+ borderWidth: 1,
505
+ borderColor: '#CBD5E1',
506
+ },
507
+ cardsScroll: {
508
+ flex: 1,
509
+ width: '100%',
510
+ minHeight: 0,
511
+ ...Platform.select({
512
+ web: {
513
+ overflowY: 'auto',
514
+ },
515
+ default: {},
516
+ }),
517
+ },
518
+ cardsGrid: {
519
+ paddingVertical: 10,
520
+ paddingHorizontal: 8,
521
+ gap: 10,
522
+ flexGrow: 1,
523
+ width: '100%',
524
+ },
525
+ cardsGridWithBottomAdd: {
526
+ paddingBottom: 86,
527
+ },
528
+ tableList: {
529
+ flex: 1,
530
+ width: '100%',
531
+ minHeight: 0,
532
+ },
533
+ tableListContent: {
534
+ flexGrow: 1,
535
+ width: '100%',
536
+ },
537
+ // FlatList multi-column cells must stretch so cards fill the row
538
+ // (app-community#710 — products card grid floating on desktop).
492
539
  cardItem: {
493
540
  position: 'relative',
541
+ flex: 1,
542
+ minWidth: 0,
543
+ width: '100%',
544
+ alignSelf: 'stretch',
494
545
  },
495
546
  cardItemWithActions: {
496
547
  flexDirection: 'row',
@@ -500,6 +551,7 @@ const styles = StyleSheet.create({
500
551
  cardContent: {
501
552
  flex: 1,
502
553
  minWidth: 0,
554
+ width: '100%',
503
555
  },
504
556
  cardActions: {
505
557
  flexDirection: 'row',
@@ -519,47 +571,48 @@ const styles = StyleSheet.create({
519
571
  borderWidth: 1,
520
572
  borderColor: '#E2E8F0',
521
573
  borderRadius: 10,
522
- backgroundColor: '#FFFFFF',
523
- padding: 12,
524
- gap: 8,
525
- },
526
- defaultCardLine: {
527
- flexDirection: 'row',
528
- alignItems: 'center',
529
- gap: 12,
530
- },
531
- defaultCardLabel: {
532
- width: 130,
533
- color: '#64748B',
534
- fontSize: 10,
535
- fontWeight: '900',
536
- textTransform: 'uppercase',
537
- },
538
- defaultCardValue: {
539
- flex: 1,
540
- color: '#0F172A',
541
- fontSize: 12,
542
- fontWeight: '700',
543
- },
544
- cardEditButton: {
545
- position: 'absolute',
546
- top: 8,
547
- right: 8,
548
- width: 28,
549
- height: 28,
550
- borderRadius: 14,
551
- alignItems: 'center',
552
- justifyContent: 'center',
553
- borderWidth: 1,
554
- borderColor: '#E2E8F0',
555
- backgroundColor: '#F8FAFC',
556
- },
557
- emptyBox: {
558
- padding: 20,
559
- alignItems: 'center',
560
- justifyContent: 'center',
561
- gap: 8,
562
- },
574
+ backgroundColor: '#FFFFFF',
575
+ padding: 12,
576
+ gap: 8,
577
+ width: '100%',
578
+ },
579
+ defaultCardLine: {
580
+ flexDirection: 'row',
581
+ alignItems: 'center',
582
+ gap: 12,
583
+ },
584
+ defaultCardLabel: {
585
+ width: 130,
586
+ color: '#64748B',
587
+ fontSize: 10,
588
+ fontWeight: '900',
589
+ textTransform: 'uppercase',
590
+ },
591
+ defaultCardValue: {
592
+ flex: 1,
593
+ color: '#0F172A',
594
+ fontSize: 12,
595
+ fontWeight: '700',
596
+ },
597
+ cardEditButton: {
598
+ position: 'absolute',
599
+ top: 8,
600
+ right: 8,
601
+ width: 28,
602
+ height: 28,
603
+ borderRadius: 14,
604
+ alignItems: 'center',
605
+ justifyContent: 'center',
606
+ borderWidth: 1,
607
+ borderColor: '#E2E8F0',
608
+ backgroundColor: '#F8FAFC',
609
+ },
610
+ emptyBox: {
611
+ padding: 20,
612
+ alignItems: 'center',
613
+ justifyContent: 'center',
614
+ gap: 8,
615
+ },
563
616
  footerBar: {
564
617
  minHeight: 40,
565
618
  paddingHorizontal: 8,
@@ -571,22 +624,22 @@ const styles = StyleSheet.create({
571
624
  alignItems: 'center',
572
625
  justifyContent: 'space-between',
573
626
  gap: 6,
574
- zIndex: 12,
575
- ...Platform.select({
576
- web: {
577
- position: 'sticky',
578
- bottom: 0,
579
- },
580
- default: {},
581
- }),
582
- },
583
- footerSummaryList: {
584
- flex: 1,
585
- minWidth: 0,
586
- flexDirection: 'row',
587
- alignItems: 'center',
588
- gap: 4,
589
- },
627
+ zIndex: 12,
628
+ ...Platform.select({
629
+ web: {
630
+ position: 'sticky',
631
+ bottom: 0,
632
+ },
633
+ default: {},
634
+ }),
635
+ },
636
+ footerSummaryList: {
637
+ flex: 1,
638
+ minWidth: 0,
639
+ flexDirection: 'row',
640
+ alignItems: 'center',
641
+ gap: 4,
642
+ },
590
643
  footerSummaryItem: {
591
644
  flex: 1,
592
645
  minWidth: 0,
@@ -613,126 +666,126 @@ const styles = StyleSheet.create({
613
666
  paddingHorizontal: 10,
614
667
  paddingVertical: 5,
615
668
  },
616
- footerCountText: {
617
- fontSize: 11,
618
- fontWeight: '900',
619
- },
620
- emptyText: {
621
- color: '#64748B',
622
- fontSize: 12,
623
- fontWeight: '700',
624
- },
625
- modalOverlay: {
626
- flex: 1,
627
- alignItems: 'center',
628
- justifyContent: 'center',
629
- padding: 16,
630
- backgroundColor: 'rgba(15,23,42,0.42)',
631
- },
632
- modalCard: {
633
- width: '100%',
634
- maxWidth: 860,
635
- maxHeight: '86%',
636
- borderRadius: 12,
637
- backgroundColor: '#FFFFFF',
638
- overflow: 'hidden',
639
- ...shadow,
640
- },
641
- modalHeader: {
642
- minHeight: 48,
643
- paddingHorizontal: 14,
644
- borderBottomWidth: 1,
645
- borderBottomColor: '#E2E8F0',
646
- flexDirection: 'row',
647
- alignItems: 'center',
648
- justifyContent: 'space-between',
649
- },
650
- modalTitle: {
651
- color: '#0F172A',
652
- fontSize: 16,
653
- fontWeight: '900',
654
- },
655
- modalCloseButton: {
656
- width: 32,
657
- height: 32,
658
- borderRadius: 16,
659
- alignItems: 'center',
660
- justifyContent: 'center',
661
- borderWidth: 1,
662
- borderColor: '#E2E8F0',
663
- backgroundColor: '#F8FAFC',
664
- },
665
- modalBody: {
666
- maxHeight: 520,
667
- },
668
- formGrid: {
669
- padding: 14,
670
- flexDirection: 'row',
671
- flexWrap: 'wrap',
672
- gap: 10,
673
- },
674
- formField: {
675
- flexGrow: 1,
676
- flexBasis: 220,
677
- minWidth: 220,
678
- },
679
- formLabel: {
680
- marginBottom: 4,
681
- color: '#64748B',
682
- fontSize: 10,
683
- fontWeight: '900',
684
- letterSpacing: 0.3,
685
- textTransform: 'uppercase',
686
- },
687
- formInput: {
688
- height: 34,
689
- borderWidth: 1,
690
- borderColor: '#CBD5E1',
691
- borderRadius: 8,
692
- paddingHorizontal: 10,
693
- color: '#0F172A',
694
- backgroundColor: '#FFFFFF',
695
- fontSize: 12,
696
- fontWeight: '700',
697
- },
698
- modalActions: {
699
- minHeight: 52,
700
- paddingHorizontal: 14,
701
- borderTopWidth: 1,
702
- borderTopColor: '#E2E8F0',
703
- flexDirection: 'row',
704
- alignItems: 'center',
705
- justifyContent: 'flex-end',
706
- gap: 8,
707
- },
708
- secondaryButton: {
709
- height: 34,
710
- borderRadius: 8,
711
- borderWidth: 1,
712
- borderColor: '#CBD5E1',
713
- paddingHorizontal: 14,
714
- alignItems: 'center',
715
- justifyContent: 'center',
716
- backgroundColor: '#FFFFFF',
717
- },
718
- secondaryButtonText: {
719
- color: '#334155',
720
- fontSize: 12,
721
- fontWeight: '800',
722
- },
723
- primaryButton: {
724
- height: 34,
725
- borderRadius: 8,
726
- paddingHorizontal: 16,
727
- alignItems: 'center',
728
- justifyContent: 'center',
729
- backgroundColor: '#0EA5E9',
730
- },
731
- primaryButtonText: {
732
- color: '#FFFFFF',
733
- fontSize: 12,
734
- fontWeight: '900',
735
- },
736
- });
737
-
738
- export default styles;
669
+ footerCountText: {
670
+ fontSize: 11,
671
+ fontWeight: '900',
672
+ },
673
+ emptyText: {
674
+ color: '#64748B',
675
+ fontSize: 12,
676
+ fontWeight: '700',
677
+ },
678
+ modalOverlay: {
679
+ flex: 1,
680
+ alignItems: 'center',
681
+ justifyContent: 'center',
682
+ padding: 16,
683
+ backgroundColor: 'rgba(15,23,42,0.42)',
684
+ },
685
+ modalCard: {
686
+ width: '100%',
687
+ maxWidth: 860,
688
+ maxHeight: '86%',
689
+ borderRadius: 12,
690
+ backgroundColor: '#FFFFFF',
691
+ overflow: 'hidden',
692
+ ...shadow,
693
+ },
694
+ modalHeader: {
695
+ minHeight: 48,
696
+ paddingHorizontal: 14,
697
+ borderBottomWidth: 1,
698
+ borderBottomColor: '#E2E8F0',
699
+ flexDirection: 'row',
700
+ alignItems: 'center',
701
+ justifyContent: 'space-between',
702
+ },
703
+ modalTitle: {
704
+ color: '#0F172A',
705
+ fontSize: 16,
706
+ fontWeight: '900',
707
+ },
708
+ modalCloseButton: {
709
+ width: 32,
710
+ height: 32,
711
+ borderRadius: 16,
712
+ alignItems: 'center',
713
+ justifyContent: 'center',
714
+ borderWidth: 1,
715
+ borderColor: '#E2E8F0',
716
+ backgroundColor: '#F8FAFC',
717
+ },
718
+ modalBody: {
719
+ maxHeight: 520,
720
+ },
721
+ formGrid: {
722
+ padding: 14,
723
+ flexDirection: 'row',
724
+ flexWrap: 'wrap',
725
+ gap: 10,
726
+ },
727
+ formField: {
728
+ flexGrow: 1,
729
+ flexBasis: 220,
730
+ minWidth: 220,
731
+ },
732
+ formLabel: {
733
+ marginBottom: 4,
734
+ color: '#64748B',
735
+ fontSize: 10,
736
+ fontWeight: '900',
737
+ letterSpacing: 0.3,
738
+ textTransform: 'uppercase',
739
+ },
740
+ formInput: {
741
+ height: 34,
742
+ borderWidth: 1,
743
+ borderColor: '#CBD5E1',
744
+ borderRadius: 8,
745
+ paddingHorizontal: 10,
746
+ color: '#0F172A',
747
+ backgroundColor: '#FFFFFF',
748
+ fontSize: 12,
749
+ fontWeight: '700',
750
+ },
751
+ modalActions: {
752
+ minHeight: 52,
753
+ paddingHorizontal: 14,
754
+ borderTopWidth: 1,
755
+ borderTopColor: '#E2E8F0',
756
+ flexDirection: 'row',
757
+ alignItems: 'center',
758
+ justifyContent: 'flex-end',
759
+ gap: 8,
760
+ },
761
+ secondaryButton: {
762
+ height: 34,
763
+ borderRadius: 8,
764
+ borderWidth: 1,
765
+ borderColor: '#CBD5E1',
766
+ paddingHorizontal: 14,
767
+ alignItems: 'center',
768
+ justifyContent: 'center',
769
+ backgroundColor: '#FFFFFF',
770
+ },
771
+ secondaryButtonText: {
772
+ color: '#334155',
773
+ fontSize: 12,
774
+ fontWeight: '800',
775
+ },
776
+ primaryButton: {
777
+ height: 34,
778
+ borderRadius: 8,
779
+ paddingHorizontal: 16,
780
+ alignItems: 'center',
781
+ justifyContent: 'center',
782
+ backgroundColor: '#0EA5E9',
783
+ },
784
+ primaryButtonText: {
785
+ color: '#FFFFFF',
786
+ fontSize: 12,
787
+ fontWeight: '900',
788
+ },
789
+ });
790
+
791
+ export default styles;