@universe-platform/ui 0.1.0-beta.25 → 0.1.0-beta.27

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/dist/globals.css CHANGED
@@ -44,9 +44,12 @@
44
44
  --color-emerald-900: oklch(37.8% 0.077 168.94);
45
45
  --color-emerald-950: oklch(26.2% 0.051 172.552);
46
46
  --color-teal-50: oklch(98.4% 0.014 180.72);
47
+ --color-teal-100: oklch(95.3% 0.051 180.801);
47
48
  --color-teal-200: oklch(91% 0.096 180.426);
48
49
  --color-teal-500: oklch(70.4% 0.14 182.503);
49
50
  --color-teal-700: oklch(51.1% 0.096 186.391);
51
+ --color-teal-800: oklch(43.7% 0.078 188.216);
52
+ --color-teal-900: oklch(38.6% 0.063 188.416);
50
53
  --color-cyan-50: oklch(98.4% 0.019 200.873);
51
54
  --color-cyan-200: oklch(91.7% 0.08 205.041);
52
55
  --color-cyan-700: oklch(52% 0.105 223.128);
@@ -71,6 +74,7 @@
71
74
  --color-indigo-200: oklch(87% 0.065 274.039);
72
75
  --color-indigo-600: oklch(51.1% 0.262 276.966);
73
76
  --color-indigo-700: oklch(45.7% 0.24 277.023);
77
+ --color-indigo-900: oklch(35.9% 0.144 278.697);
74
78
  --color-violet-50: oklch(96.9% 0.016 293.756);
75
79
  --color-violet-100: oklch(94.3% 0.029 294.588);
76
80
  --color-violet-200: oklch(89.4% 0.057 293.283);
@@ -105,6 +109,7 @@
105
109
  --color-slate-700: oklch(37.2% 0.044 257.287);
106
110
  --color-slate-800: oklch(27.9% 0.041 260.031);
107
111
  --color-slate-900: oklch(20.8% 0.042 265.755);
112
+ --color-gray-50: oklch(98.5% 0.002 247.839);
108
113
  --color-black: #000;
109
114
  --color-white: #fff;
110
115
  --spacing: 0.25rem;
@@ -114,12 +119,15 @@
114
119
  --container-lg: 32rem;
115
120
  --container-xl: 36rem;
116
121
  --container-2xl: 42rem;
122
+ --container-4xl: 56rem;
117
123
  --text-xs: 0.75rem;
118
124
  --text-xs--line-height: calc(1 / 0.75);
119
125
  --text-sm: 0.875rem;
120
126
  --text-sm--line-height: calc(1.25 / 0.875);
121
127
  --text-base: 1rem;
122
128
  --text-base--line-height: calc(1.5 / 1);
129
+ --text-lg: 1.125rem;
130
+ --text-lg--line-height: calc(1.75 / 1.125);
123
131
  --text-xl: 1.25rem;
124
132
  --text-xl--line-height: calc(1.75 / 1.25);
125
133
  --text-2xl: 1.5rem;
@@ -360,6 +368,9 @@
360
368
  .right-2\.5 {
361
369
  right: calc(var(--spacing) * 2.5);
362
370
  }
371
+ .right-3 {
372
+ right: calc(var(--spacing) * 3);
373
+ }
363
374
  .right-4 {
364
375
  right: calc(var(--spacing) * 4);
365
376
  }
@@ -447,6 +458,9 @@
447
458
  .mt-2 {
448
459
  margin-top: calc(var(--spacing) * 2);
449
460
  }
461
+ .mt-3 {
462
+ margin-top: calc(var(--spacing) * 3);
463
+ }
450
464
  .mt-6 {
451
465
  margin-top: calc(var(--spacing) * 6);
452
466
  }
@@ -459,6 +473,9 @@
459
473
  .mr-1 {
460
474
  margin-right: var(--spacing);
461
475
  }
476
+ .mr-2 {
477
+ margin-right: calc(var(--spacing) * 2);
478
+ }
462
479
  .mb-0\.5 {
463
480
  margin-bottom: calc(var(--spacing) * 0.5);
464
481
  }
@@ -486,6 +503,9 @@
486
503
  .mb-6 {
487
504
  margin-bottom: calc(var(--spacing) * 6);
488
505
  }
506
+ .-ml-1 {
507
+ margin-left: calc(var(--spacing) * -1);
508
+ }
489
509
  .ml-0\.5 {
490
510
  margin-left: calc(var(--spacing) * 0.5);
491
511
  }
@@ -495,6 +515,12 @@
495
515
  .ml-2 {
496
516
  margin-left: calc(var(--spacing) * 2);
497
517
  }
518
+ .line-clamp-2 {
519
+ overflow: hidden;
520
+ display: -webkit-box;
521
+ -webkit-box-orient: vertical;
522
+ -webkit-line-clamp: 2;
523
+ }
498
524
  .block {
499
525
  display: block;
500
526
  }
@@ -564,6 +590,9 @@
564
590
  .h-10 {
565
591
  height: calc(var(--spacing) * 10);
566
592
  }
593
+ .h-11 {
594
+ height: calc(var(--spacing) * 11);
595
+ }
567
596
  .h-12 {
568
597
  height: calc(var(--spacing) * 12);
569
598
  }
@@ -576,12 +605,21 @@
576
605
  .h-\[18px\] {
577
606
  height: 18px;
578
607
  }
608
+ .h-\[550px\] {
609
+ height: 550px;
610
+ }
611
+ .h-\[calc\(100vh-140px\)\] {
612
+ height: calc(100vh - 140px);
613
+ }
579
614
  .h-\[calc\(100vh-420px\)\] {
580
615
  height: calc(100vh - 420px);
581
616
  }
582
617
  .h-full {
583
618
  height: 100%;
584
619
  }
620
+ .max-h-32 {
621
+ max-height: calc(var(--spacing) * 32);
622
+ }
585
623
  .max-h-48 {
586
624
  max-height: calc(var(--spacing) * 48);
587
625
  }
@@ -615,6 +653,9 @@
615
653
  .min-h-\[40px\] {
616
654
  min-height: 40px;
617
655
  }
656
+ .min-h-\[44px\] {
657
+ min-height: 44px;
658
+ }
618
659
  .min-h-\[48px\] {
619
660
  min-height: 48px;
620
661
  }
@@ -624,6 +665,12 @@
624
665
  .min-h-\[320px\] {
625
666
  min-height: 320px;
626
667
  }
668
+ .min-h-\[600px\] {
669
+ min-height: 600px;
670
+ }
671
+ .min-h-\[850px\] {
672
+ min-height: 850px;
673
+ }
627
674
  .min-h-\[inherit\] {
628
675
  min-height: inherit;
629
676
  }
@@ -648,6 +695,9 @@
648
695
  .w-4\.5 {
649
696
  width: calc(var(--spacing) * 4.5);
650
697
  }
698
+ .w-4\/5 {
699
+ width: calc(4 / 5 * 100%);
700
+ }
651
701
  .w-5 {
652
702
  width: calc(var(--spacing) * 5);
653
703
  }
@@ -666,6 +716,9 @@
666
716
  .w-10 {
667
717
  width: calc(var(--spacing) * 10);
668
718
  }
719
+ .w-11 {
720
+ width: calc(var(--spacing) * 11);
721
+ }
669
722
  .w-14 {
670
723
  width: calc(var(--spacing) * 14);
671
724
  }
@@ -681,6 +734,9 @@
681
734
  .w-72 {
682
735
  width: calc(var(--spacing) * 72);
683
736
  }
737
+ .w-80 {
738
+ width: calc(var(--spacing) * 80);
739
+ }
684
740
  .w-\[260px\] {
685
741
  width: 260px;
686
742
  }
@@ -696,6 +752,12 @@
696
752
  .max-w-2xl {
697
753
  max-width: var(--container-2xl);
698
754
  }
755
+ .max-w-4xl {
756
+ max-width: var(--container-4xl);
757
+ }
758
+ .max-w-\[70\%\] {
759
+ max-width: 70%;
760
+ }
699
761
  .max-w-\[130px\] {
700
762
  max-width: 130px;
701
763
  }
@@ -732,6 +794,9 @@
732
794
  .min-w-\[18px\] {
733
795
  min-width: 18px;
734
796
  }
797
+ .min-w-\[20px\] {
798
+ min-width: 20px;
799
+ }
735
800
  .min-w-\[50px\] {
736
801
  min-width: 50px;
737
802
  }
@@ -747,6 +812,9 @@
747
812
  .shrink-0 {
748
813
  flex-shrink: 0;
749
814
  }
815
+ .basis-0 {
816
+ flex-basis: 0;
817
+ }
750
818
  .table-auto {
751
819
  table-layout: auto;
752
820
  }
@@ -805,6 +873,9 @@
805
873
  .resize {
806
874
  resize: both;
807
875
  }
876
+ .resize-none {
877
+ resize: none;
878
+ }
808
879
  .resize-y {
809
880
  resize: vertical;
810
881
  }
@@ -823,6 +894,9 @@
823
894
  .grid-cols-2 {
824
895
  grid-template-columns: repeat(2, minmax(0, 1fr));
825
896
  }
897
+ .grid-cols-3 {
898
+ grid-template-columns: repeat(3, minmax(0, 1fr));
899
+ }
826
900
  .grid-cols-7 {
827
901
  grid-template-columns: repeat(7, minmax(0, 1fr));
828
902
  }
@@ -838,6 +912,9 @@
838
912
  .items-center {
839
913
  align-items: center;
840
914
  }
915
+ .items-end {
916
+ align-items: flex-end;
917
+ }
841
918
  .items-start {
842
919
  align-items: flex-start;
843
920
  }
@@ -943,6 +1020,19 @@
943
1020
  margin-block-end: calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)));
944
1021
  }
945
1022
  }
1023
+ .space-y-6 {
1024
+ :where(& > :not(:last-child)) {
1025
+ --tw-space-y-reverse: 0;
1026
+ margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));
1027
+ margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
1028
+ }
1029
+ }
1030
+ .gap-x-6 {
1031
+ column-gap: calc(var(--spacing) * 6);
1032
+ }
1033
+ .gap-y-1\.5 {
1034
+ row-gap: calc(var(--spacing) * 1.5);
1035
+ }
946
1036
  .divide-y {
947
1037
  :where(& > :not(:last-child)) {
948
1038
  --tw-divide-y-reverse: 0;
@@ -1000,6 +1090,12 @@
1000
1090
  border-top-left-radius: var(--radius-xl);
1001
1091
  border-top-right-radius: var(--radius-xl);
1002
1092
  }
1093
+ .rounded-tl-none {
1094
+ border-top-left-radius: 0;
1095
+ }
1096
+ .rounded-tr-none {
1097
+ border-top-right-radius: 0;
1098
+ }
1003
1099
  .rounded-b-xl {
1004
1100
  border-bottom-right-radius: var(--radius-xl);
1005
1101
  border-bottom-left-radius: var(--radius-xl);
@@ -1032,6 +1128,10 @@
1032
1128
  border-bottom-style: var(--tw-border-style);
1033
1129
  border-bottom-width: 1px;
1034
1130
  }
1131
+ .border-b-2 {
1132
+ border-bottom-style: var(--tw-border-style);
1133
+ border-bottom-width: 2px;
1134
+ }
1035
1135
  .border-l {
1036
1136
  border-left-style: var(--tw-border-style);
1037
1137
  border-left-width: 1px;
@@ -1055,6 +1155,9 @@
1055
1155
  .border-amber-400 {
1056
1156
  border-color: var(--color-amber-400);
1057
1157
  }
1158
+ .border-blue-100 {
1159
+ border-color: var(--color-blue-100);
1160
+ }
1058
1161
  .border-blue-200 {
1059
1162
  border-color: var(--color-blue-200);
1060
1163
  }
@@ -1181,9 +1284,18 @@
1181
1284
  border-color: color-mix(in oklab, var(--color-slate-700) 60%, transparent);
1182
1285
  }
1183
1286
  }
1287
+ .border-teal-100 {
1288
+ border-color: var(--color-teal-100);
1289
+ }
1184
1290
  .border-teal-200 {
1185
1291
  border-color: var(--color-teal-200);
1186
1292
  }
1293
+ .border-teal-200\/60 {
1294
+ border-color: color-mix(in srgb, oklch(91% 0.096 180.426) 60%, transparent);
1295
+ @supports (color: color-mix(in lab, red, red)) {
1296
+ border-color: color-mix(in oklab, var(--color-teal-200) 60%, transparent);
1297
+ }
1298
+ }
1187
1299
  .border-transparent {
1188
1300
  border-color: transparent;
1189
1301
  }
@@ -1196,9 +1308,21 @@
1196
1308
  .border-t-transparent {
1197
1309
  border-top-color: transparent;
1198
1310
  }
1311
+ .border-r-emerald-500 {
1312
+ border-right-color: var(--color-emerald-500);
1313
+ }
1314
+ .border-r-transparent {
1315
+ border-right-color: transparent;
1316
+ }
1199
1317
  .border-b-transparent {
1200
1318
  border-bottom-color: transparent;
1201
1319
  }
1320
+ .bg-\[\#d9fdd3\] {
1321
+ background-color: #d9fdd3;
1322
+ }
1323
+ .bg-\[\#efeae2\] {
1324
+ background-color: #efeae2;
1325
+ }
1202
1326
  .bg-amber-50 {
1203
1327
  background-color: var(--color-amber-50);
1204
1328
  }
@@ -1211,6 +1335,9 @@
1211
1335
  .bg-amber-100 {
1212
1336
  background-color: var(--color-amber-100);
1213
1337
  }
1338
+ .bg-amber-400 {
1339
+ background-color: var(--color-amber-400);
1340
+ }
1214
1341
  .bg-blue-50 {
1215
1342
  background-color: var(--color-blue-50);
1216
1343
  }
@@ -1220,6 +1347,12 @@
1220
1347
  background-color: color-mix(in oklab, var(--color-blue-50) 40%, transparent);
1221
1348
  }
1222
1349
  }
1350
+ .bg-blue-50\/80 {
1351
+ background-color: color-mix(in srgb, oklch(97% 0.014 254.604) 80%, transparent);
1352
+ @supports (color: color-mix(in lab, red, red)) {
1353
+ background-color: color-mix(in oklab, var(--color-blue-50) 80%, transparent);
1354
+ }
1355
+ }
1223
1356
  .bg-blue-100 {
1224
1357
  background-color: var(--color-blue-100);
1225
1358
  }
@@ -1289,12 +1422,21 @@
1289
1422
  .bg-fuchsia-50 {
1290
1423
  background-color: var(--color-fuchsia-50);
1291
1424
  }
1425
+ .bg-gray-50 {
1426
+ background-color: var(--color-gray-50);
1427
+ }
1292
1428
  .bg-green-50 {
1293
1429
  background-color: var(--color-green-50);
1294
1430
  }
1295
1431
  .bg-indigo-50 {
1296
1432
  background-color: var(--color-indigo-50);
1297
1433
  }
1434
+ .bg-indigo-50\/60 {
1435
+ background-color: color-mix(in srgb, oklch(96.2% 0.018 272.314) 60%, transparent);
1436
+ @supports (color: color-mix(in lab, red, red)) {
1437
+ background-color: color-mix(in oklab, var(--color-indigo-50) 60%, transparent);
1438
+ }
1439
+ }
1298
1440
  .bg-lime-50 {
1299
1441
  background-color: var(--color-lime-50);
1300
1442
  }
@@ -1409,6 +1551,12 @@
1409
1551
  .bg-teal-50 {
1410
1552
  background-color: var(--color-teal-50);
1411
1553
  }
1554
+ .bg-teal-50\/40 {
1555
+ background-color: color-mix(in srgb, oklch(98.4% 0.014 180.72) 40%, transparent);
1556
+ @supports (color: color-mix(in lab, red, red)) {
1557
+ background-color: color-mix(in oklab, var(--color-teal-50) 40%, transparent);
1558
+ }
1559
+ }
1412
1560
  .bg-transparent {
1413
1561
  background-color: transparent;
1414
1562
  }
@@ -1538,6 +1686,9 @@
1538
1686
  .py-6 {
1539
1687
  padding-block: calc(var(--spacing) * 6);
1540
1688
  }
1689
+ .py-10 {
1690
+ padding-block: calc(var(--spacing) * 10);
1691
+ }
1541
1692
  .py-12 {
1542
1693
  padding-block: calc(var(--spacing) * 12);
1543
1694
  }
@@ -1556,12 +1707,18 @@
1556
1707
  .pt-2\.5 {
1557
1708
  padding-top: calc(var(--spacing) * 2.5);
1558
1709
  }
1710
+ .pt-3 {
1711
+ padding-top: calc(var(--spacing) * 3);
1712
+ }
1559
1713
  .pt-4 {
1560
1714
  padding-top: calc(var(--spacing) * 4);
1561
1715
  }
1562
1716
  .pr-0\.5 {
1563
1717
  padding-right: calc(var(--spacing) * 0.5);
1564
1718
  }
1719
+ .pr-1 {
1720
+ padding-right: var(--spacing);
1721
+ }
1565
1722
  .pr-2 {
1566
1723
  padding-right: calc(var(--spacing) * 2);
1567
1724
  }
@@ -1595,6 +1752,9 @@
1595
1752
  .pb-2\.5 {
1596
1753
  padding-bottom: calc(var(--spacing) * 2.5);
1597
1754
  }
1755
+ .pb-3 {
1756
+ padding-bottom: calc(var(--spacing) * 3);
1757
+ }
1598
1758
  .pl-1 {
1599
1759
  padding-left: var(--spacing);
1600
1760
  }
@@ -1642,6 +1802,10 @@
1642
1802
  font-size: var(--text-base);
1643
1803
  line-height: var(--tw-leading, var(--text-base--line-height));
1644
1804
  }
1805
+ .text-lg {
1806
+ font-size: var(--text-lg);
1807
+ line-height: var(--tw-leading, var(--text-lg--line-height));
1808
+ }
1645
1809
  .text-sm {
1646
1810
  font-size: var(--text-sm);
1647
1811
  line-height: var(--tw-leading, var(--text-sm--line-height));
@@ -1779,6 +1943,9 @@
1779
1943
  .text-indigo-700 {
1780
1944
  color: var(--color-indigo-700);
1781
1945
  }
1946
+ .text-indigo-900 {
1947
+ color: var(--color-indigo-900);
1948
+ }
1782
1949
  .text-lime-700 {
1783
1950
  color: var(--color-lime-700);
1784
1951
  }
@@ -1842,6 +2009,12 @@
1842
2009
  .text-teal-700 {
1843
2010
  color: var(--color-teal-700);
1844
2011
  }
2012
+ .text-teal-800 {
2013
+ color: var(--color-teal-800);
2014
+ }
2015
+ .text-teal-900 {
2016
+ color: var(--color-teal-900);
2017
+ }
1845
2018
  .text-violet-600 {
1846
2019
  color: var(--color-violet-600);
1847
2020
  }
@@ -1877,6 +2050,9 @@
1877
2050
  .accent-\[\#0d9488\] {
1878
2051
  accent-color: #0d9488;
1879
2052
  }
2053
+ .accent-blue-600 {
2054
+ accent-color: var(--color-blue-600);
2055
+ }
1880
2056
  .opacity-0 {
1881
2057
  opacity: 0%;
1882
2058
  }
@@ -1947,6 +2123,9 @@
1947
2123
  --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-teal-500) 20%, transparent) var(--tw-shadow-alpha), transparent);
1948
2124
  }
1949
2125
  }
2126
+ .ring-blue-100 {
2127
+ --tw-ring-color: var(--color-blue-100);
2128
+ }
1950
2129
  .ring-emerald-500\/20 {
1951
2130
  --tw-ring-color: color-mix(in srgb, oklch(69.6% 0.17 162.48) 20%, transparent);
1952
2131
  @supports (color: color-mix(in lab, red, red)) {
@@ -2035,6 +2214,10 @@
2035
2214
  --tw-ease: var(--ease-out);
2036
2215
  transition-timing-function: var(--ease-out);
2037
2216
  }
2217
+ .outline-none {
2218
+ --tw-outline-style: none;
2219
+ outline-style: none;
2220
+ }
2038
2221
  .select-all {
2039
2222
  -webkit-user-select: all;
2040
2223
  user-select: all;
@@ -2143,6 +2326,16 @@
2143
2326
  }
2144
2327
  }
2145
2328
  }
2329
+ .hover\:scale-110 {
2330
+ &:hover {
2331
+ @media (hover: hover) {
2332
+ --tw-scale-x: 110%;
2333
+ --tw-scale-y: 110%;
2334
+ --tw-scale-z: 110%;
2335
+ scale: var(--tw-scale-x) var(--tw-scale-y);
2336
+ }
2337
+ }
2338
+ }
2146
2339
  .hover\:border-amber-400 {
2147
2340
  &:hover {
2148
2341
  @media (hover: hover) {
@@ -2195,6 +2388,13 @@
2195
2388
  }
2196
2389
  }
2197
2390
  }
2391
+ .hover\:bg-amber-500 {
2392
+ &:hover {
2393
+ @media (hover: hover) {
2394
+ background-color: var(--color-amber-500);
2395
+ }
2396
+ }
2397
+ }
2198
2398
  .hover\:bg-black\/10 {
2199
2399
  &:hover {
2200
2400
  @media (hover: hover) {
@@ -2648,6 +2848,11 @@
2648
2848
  cursor: not-allowed;
2649
2849
  }
2650
2850
  }
2851
+ .disabled\:opacity-30 {
2852
+ &:disabled {
2853
+ opacity: 30%;
2854
+ }
2855
+ }
2651
2856
  .disabled\:opacity-40 {
2652
2857
  &:disabled {
2653
2858
  opacity: 40%;
@@ -2704,6 +2909,11 @@
2704
2909
  line-height: var(--tw-leading, var(--text-base--line-height));
2705
2910
  }
2706
2911
  }
2912
+ .md\:grid-cols-2 {
2913
+ @media (width >= 48rem) {
2914
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2915
+ }
2916
+ }
2707
2917
  .lg\:col-span-3 {
2708
2918
  @media (width >= 64rem) {
2709
2919
  grid-column: span 3 / span 3;
@@ -2719,6 +2929,21 @@
2719
2929
  grid-column: span 5 / span 5;
2720
2930
  }
2721
2931
  }
2932
+ .lg\:w-1\/2 {
2933
+ @media (width >= 64rem) {
2934
+ width: calc(1 / 2 * 100%);
2935
+ }
2936
+ }
2937
+ .lg\:w-1\/3 {
2938
+ @media (width >= 64rem) {
2939
+ width: calc(1 / 3 * 100%);
2940
+ }
2941
+ }
2942
+ .lg\:w-2\/3 {
2943
+ @media (width >= 64rem) {
2944
+ width: calc(2 / 3 * 100%);
2945
+ }
2946
+ }
2722
2947
  .lg\:grid-cols-1 {
2723
2948
  @media (width >= 64rem) {
2724
2949
  grid-template-columns: repeat(1, minmax(0, 1fr));
@@ -2729,6 +2954,11 @@
2729
2954
  grid-template-columns: repeat(12, minmax(0, 1fr));
2730
2955
  }
2731
2956
  }
2957
+ .lg\:flex-row {
2958
+ @media (width >= 64rem) {
2959
+ flex-direction: row;
2960
+ }
2961
+ }
2732
2962
  }
2733
2963
  @property --tw-translate-x {
2734
2964
  syntax: "*";
package/dist/index.d.mts CHANGED
@@ -370,6 +370,118 @@ interface SmartTextCellProps {
370
370
  */
371
371
  declare const SmartTextCell: react__default.FC<SmartTextCellProps>;
372
372
 
373
+ interface PlacementConfig {
374
+ sourceTableId: string;
375
+ sourceDisplayFieldId: string;
376
+ targetTableId: string;
377
+ targetFilterField1Id: string;
378
+ targetFilterField2Id: string;
379
+ targetSelectorFieldId: string;
380
+ targetAssignmentFieldId: string;
381
+ title?: string;
382
+ statusColors?: PlacementStatusSetting[];
383
+ defaultReturnStatusId?: string;
384
+ }
385
+ interface PlacementStatusSetting {
386
+ id: string;
387
+ hex: string;
388
+ label: string;
389
+ }
390
+ declare const DEFAULT_PLACEMENT_STATUS_COLORS: PlacementStatusSetting[];
391
+ /** מחזיר את מזהה הסטטוס ההתחלתי התקף: זה שהוגדר, אחרת "3" אם קיים (תאימות לאחור), אחרת הראשון */
392
+ declare function resolveDefaultStatusId(list: PlacementStatusSetting[], wanted?: string): string;
393
+ interface PlacementSettingsProps {
394
+ config: PlacementConfig;
395
+ onChange: (newConfig: PlacementConfig) => void;
396
+ tables: Array<{
397
+ id: string;
398
+ name: string;
399
+ isGlobal?: boolean;
400
+ fields?: any[];
401
+ columns?: any[];
402
+ }>;
403
+ }
404
+ declare const PlacementStatusEditor: react__default.FC<{
405
+ config: PlacementConfig;
406
+ onChange: (newConfig: PlacementConfig) => void;
407
+ }>;
408
+ declare const PlacementSettings: react__default.FC<PlacementSettingsProps>;
409
+
410
+ interface PlacementStatusColor {
411
+ id: string;
412
+ hex: string;
413
+ label: string;
414
+ }
415
+ type ExecuteAction = (actionType: string, payload: Record<string, any>) => Promise<any>;
416
+ interface PlacementBlockProps {
417
+ settings?: any;
418
+ executeAction?: ExecuteAction;
419
+ componentId?: string;
420
+ className?: string;
421
+ config?: PlacementConfig;
422
+ fetchSourceData?: (tableId: string) => Promise<any[]>;
423
+ fetchTargetData?: (tableId: string) => Promise<any[]>;
424
+ updateAssignment?: (targetRecordId: string, sourceRecordId: string) => Promise<void>;
425
+ }
426
+ declare const PlacementBlock: react__default.FC<PlacementBlockProps>;
427
+
428
+ declare const RELATION_SEP = "::";
429
+ declare const RELATION_LABEL_KEY = "__label";
430
+ declare const NON_TEXT_TYPES: string[];
431
+ interface PlacementColumnOption {
432
+ /** הערך שנשמר ב-config (שם עמודה, או "קשר::עמודה") */
433
+ id: string;
434
+ /** מה שמוצג למשתמש */
435
+ name: string;
436
+ type?: string;
437
+ /** תיאור משני (סוג שדה / מאיזו טבלה) */
438
+ description?: string;
439
+ /** שם עמודת הקשר, אם העמודה באה מטבלה קשורה */
440
+ viaRelation?: string;
441
+ /** שם הטבלה הקשורה, אם העמודה באה מטבלה קשורה */
442
+ fromTableName?: string;
443
+ fromGlobalTable?: boolean;
444
+ }
445
+ type AnyTable = {
446
+ id: string;
447
+ name: string;
448
+ isGlobal?: boolean;
449
+ fields?: any[];
450
+ columns?: any[];
451
+ };
452
+ declare const tableColumns: (table?: {
453
+ fields?: any[];
454
+ columns?: any[];
455
+ } | null) => any[];
456
+ declare const isUserColumn: (c: any) => boolean;
457
+ declare const buildRelationRef: (relationColumn: string, field: string) => string;
458
+ declare function parseColumnRef(ref: string): {
459
+ relationColumn?: string;
460
+ field: string;
461
+ };
462
+ /** שם ידידותי להצגה: "עיר מגורים › שם העיר" */
463
+ declare const columnRefLabel: (ref: string) => string;
464
+ /**
465
+ * בונה את רשימת העמודות לבחירה בטבלה: עמודות הטבלה עצמה,
466
+ * ואחריהן (כשהן מותרות) עמודות מכל טבלה שמקושרת אליה ב-RELATION - כולל טבלאות מערכת.
467
+ * עמודות קשר מוצגות רק ברמה אחת (לא קשר בתוך קשר).
468
+ */
469
+ declare function buildColumnOptions(table: AnyTable | undefined | null, allTables: AnyTable[] | undefined, opts?: {
470
+ textOnly?: boolean;
471
+ includeRelated?: boolean;
472
+ }): PlacementColumnOption[];
473
+ /**
474
+ * מעשיר רשומות בעמודות וירטואליות מהטבלאות הקשורות, לפי relationOptions שחזר מהשרת:
475
+ * data["<קשר>::<עמודה>"] = ערך העמודה ברשומה/ות הקשורות
476
+ * data["<קשר>::__label"] = התווית (displayField) של הרשומה/ות הקשורות
477
+ * הערך המקורי של עמודת הקשר (ה-IDs) נשאר כמות שהוא, כי הוא משמש לשמירה.
478
+ */
479
+ declare function enrichRowsWithRelations<T extends {
480
+ data: Record<string, any>;
481
+ }>(rows: T[], columns: any[], relationOptions: Record<string, any[]> | undefined): T[];
482
+ /** קורא ערך עמודה (רגילה או מטבלה קשורה); עמודת קשר "חשופה" מוצגת לפי התווית שלה ולא לפי ה-ID */
483
+ declare function readColumnValue(data: Record<string, any> | undefined, ref: string): any;
484
+
373
485
  interface MetaTemplateComponent {
374
486
  type: "HEADER" | "BODY" | "FOOTER" | "BUTTONS" | string;
375
487
  format?: "TEXT" | "IMAGE" | "DOCUMENT" | "VIDEO" | string;
@@ -684,6 +796,7 @@ declare const UNIVERSE_COMPONENTS: {
684
796
  readonly TABLE: typeof TableBlock;
685
797
  readonly WHATSAPP: typeof WhatsAppComponent;
686
798
  readonly FORM: typeof FormBlock;
799
+ readonly PLACEMENT: react.FC<PlacementBlockProps>;
687
800
  };
688
801
  type ComponentRegistry = typeof UNIVERSE_COMPONENTS;
689
802
  type UniverseComponentType = keyof ComponentRegistry;
@@ -708,4 +821,4 @@ declare function ToastProvider({ children }: {
708
821
 
709
822
  declare function useToast(): ToastContextType;
710
823
 
711
- export { type BaseComponentProps, ColumnHeaderTitle, type ColumnHeaderTitleProps, type ComponentCommunication, type ComponentConfig, type ComponentData, type ComponentPermissions, type ComponentRegistry, type ComponentState, type CreateRecordPayload, CreateTemplateModal, type CreateTemplateModalProps, DatePickerCell, type DeleteRecordPayload, DynamicFiltersBlock, type DynamicFiltersBlockProps, LinkPickerCell, type MetaTemplateComponent, type MetaWhatsAppTemplate, type OrgRole, PASTEL_PALETTES, type PastelPalette, type RelationFilterOption, type RelationFilterPayload, RelationFilterPopover, type RelationFilterPopoverProps, RelationPickerCell, type RolePermissions, type RowStatusType, SettingsAndActionsBlock, type SettingsAndActionsBlockProps, SmartTextCell, type SplitTitleResult, TableBlock, TableBlockClient, type TableBlockProps, type TableConfig, type TableData, TimePickerCell, ToastContext, type ToastContextType, type ToastItem, ToastProvider, TruncatedTooltip, UNIVERSE_COMPONENTS, type UniverseComponentType, type UpdateRecordPayload, type UseColumnReorderOptions, type UseColumnResizeOptions, WhatsAppComponent, type WhatsAppComponentProps, type WhatsAppData, calculateMinColumnWidth, checkElementTruncation, cn, formatConflictCellValue, formatPhoneDisplay, formatTimeInput, formatTimeIso, generateWhatsAppLink, getDeterministicPastelBadge, getRolePermissions, isValidPhoneNumber, measureTextWidth, normalizePhoneForWhatsApp, normalizeRelationValue, openWhatsAppChat, parseLinkValue, parseTimeParts, resolveProtocol, sanitizePhoneNumber, splitHeaderTitle, useColumnReorder, useColumnResize, useSmartTooltip, useToast, useWhatsAppState };
824
+ export { type BaseComponentProps, ColumnHeaderTitle, type ColumnHeaderTitleProps, type ComponentCommunication, type ComponentConfig, type ComponentData, type ComponentPermissions, type ComponentRegistry, type ComponentState, type CreateRecordPayload, CreateTemplateModal, type CreateTemplateModalProps, DEFAULT_PLACEMENT_STATUS_COLORS, DatePickerCell, type DeleteRecordPayload, DynamicFiltersBlock, type DynamicFiltersBlockProps, LinkPickerCell, type MetaTemplateComponent, type MetaWhatsAppTemplate, NON_TEXT_TYPES, type OrgRole, PASTEL_PALETTES, type PastelPalette, PlacementBlock, type PlacementBlockProps, type PlacementColumnOption, type PlacementConfig, PlacementSettings, type PlacementStatusColor, PlacementStatusEditor, type PlacementStatusSetting, RELATION_LABEL_KEY, RELATION_SEP, type RelationFilterOption, type RelationFilterPayload, RelationFilterPopover, type RelationFilterPopoverProps, RelationPickerCell, type RolePermissions, type RowStatusType, SettingsAndActionsBlock, type SettingsAndActionsBlockProps, SmartTextCell, type SplitTitleResult, TableBlock, TableBlockClient, type TableBlockProps, type TableConfig, type TableData, TimePickerCell, ToastContext, type ToastContextType, type ToastItem, ToastProvider, TruncatedTooltip, UNIVERSE_COMPONENTS, type UniverseComponentType, type UpdateRecordPayload, type UseColumnReorderOptions, type UseColumnResizeOptions, WhatsAppComponent, type WhatsAppComponentProps, type WhatsAppData, buildColumnOptions, buildRelationRef, calculateMinColumnWidth, checkElementTruncation, cn, columnRefLabel, enrichRowsWithRelations, formatConflictCellValue, formatPhoneDisplay, formatTimeInput, formatTimeIso, generateWhatsAppLink, getDeterministicPastelBadge, getRolePermissions, isUserColumn, isValidPhoneNumber, measureTextWidth, normalizePhoneForWhatsApp, normalizeRelationValue, openWhatsAppChat, parseColumnRef, parseLinkValue, parseTimeParts, readColumnValue, resolveDefaultStatusId, resolveProtocol, sanitizePhoneNumber, splitHeaderTitle, tableColumns, useColumnReorder, useColumnResize, useSmartTooltip, useToast, useWhatsAppState };