@visns-studio/visns-components 5.8.4 → 5.8.6

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.
@@ -913,9 +913,9 @@
913
913
 
914
914
  .suggestedJoinsList {
915
915
  display: grid;
916
- grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
916
+ grid-template-columns: repeat(auto-fill, minmax(450px, 1fr));
917
917
  gap: 0.5rem;
918
- max-height: 200px;
918
+ max-height: 300px;
919
919
  overflow-y: auto;
920
920
  padding: 0 12px 12px;
921
921
 
@@ -923,12 +923,13 @@
923
923
  display: flex;
924
924
  justify-content: space-between;
925
925
  align-items: center;
926
- padding: 0.5rem;
926
+ padding: 0.75rem;
927
927
  border: 1px solid #e5e7eb;
928
928
  border-radius: 0.25rem;
929
929
  background-color: white;
930
930
  transition: all 0.2s ease;
931
931
  font-size: 0.8rem;
932
+ min-height: 60px;
932
933
 
933
934
  &:hover {
934
935
  border-color: var(--primary-color, #2563eb);
@@ -945,12 +946,29 @@
945
946
 
946
947
  .suggestedJoinDescription {
947
948
  font-size: 0.8rem;
948
- white-space: nowrap;
949
949
  overflow: hidden;
950
- text-overflow: ellipsis;
951
950
  min-width: 0; // This is important for text-overflow to work in flex items
952
951
  }
953
952
 
953
+ .relationshipWithDescription {
954
+ display: flex;
955
+ flex-direction: column;
956
+ gap: 0.25rem;
957
+ overflow: hidden;
958
+
959
+ div:first-child {
960
+ font-weight: 500;
961
+ color: var(--heading-color, #1f2937);
962
+ }
963
+
964
+ .relationshipDescription {
965
+ font-size: 0.7rem;
966
+ color: var(--muted-color, #6b7280);
967
+ font-style: italic;
968
+ line-height: 1.2;
969
+ }
970
+ }
971
+
954
972
  .confidenceBadge {
955
973
  font-size: 0.7rem;
956
974
  color: #f59e0b;
@@ -1503,30 +1521,32 @@
1503
1521
  right: 0;
1504
1522
  top: 0;
1505
1523
  height: 100%;
1506
- background: none;
1524
+ background-color: #f3f4f6;
1507
1525
  border: none;
1508
1526
  border-left: 1px solid var(--border-color, #d1d5db);
1509
1527
  padding: 0 10px;
1510
- color: var(--paragraph-color, #4b5563);
1528
+ color: var(--primary-color, #2563eb);
1511
1529
  cursor: pointer;
1512
- font-size: 0.8em;
1530
+ font-size: 0.9em;
1513
1531
  transition: all 0.2s ease;
1532
+ font-weight: 600;
1533
+ min-width: 36px;
1514
1534
 
1515
1535
  &:hover {
1516
- background-color: #f3f4f6;
1536
+ background-color: rgba(var(--primary-rgb, 37, 99, 235), 0.1);
1517
1537
  color: var(--primary-color, #2563eb);
1518
1538
  }
1519
1539
  }
1520
1540
 
1521
1541
  input {
1522
- padding-right: 30px;
1542
+ padding-right: 36px;
1523
1543
  }
1524
1544
  }
1525
1545
 
1526
1546
  .jsonKeyDropdown {
1527
1547
  position: relative;
1528
1548
  width: 100%;
1529
- max-height: 200px;
1549
+ max-height: 300px;
1530
1550
  overflow-y: auto;
1531
1551
  background-color: white;
1532
1552
  border: 1px solid var(--border-color, #d1d5db);
@@ -1538,8 +1558,85 @@
1538
1558
  z-index: 100;
1539
1559
  }
1540
1560
 
1561
+ .jsonKeyDropdownHeader {
1562
+ display: flex;
1563
+ justify-content: space-between;
1564
+ align-items: center;
1565
+ padding: 10px 12px;
1566
+ background-color: #f3f4f6;
1567
+ border-bottom: 1px solid var(--border-color, #e5e7eb);
1568
+ position: sticky;
1569
+ top: 0;
1570
+ z-index: 2;
1571
+
1572
+ span {
1573
+ font-weight: 600;
1574
+ font-size: 0.9em;
1575
+ color: var(--heading-color, #1f2937);
1576
+ }
1577
+ }
1578
+
1579
+ .jsonKeyCloseButton {
1580
+ background: none;
1581
+ border: none;
1582
+ color: var(--paragraph-color, #4b5563);
1583
+ font-size: 1.2em;
1584
+ cursor: pointer;
1585
+ width: 24px;
1586
+ height: 24px;
1587
+ display: flex;
1588
+ align-items: center;
1589
+ justify-content: center;
1590
+ border-radius: 4px;
1591
+ transition: all 0.2s ease;
1592
+
1593
+ &:hover {
1594
+ background-color: rgba(0, 0, 0, 0.05);
1595
+ color: var(--danger-color, #ef4444);
1596
+ }
1597
+ }
1598
+
1599
+ .jsonKeyDropdownFooter {
1600
+ padding: 8px 12px;
1601
+ background-color: #f9fafb;
1602
+ border-top: 1px solid var(--border-color, #e5e7eb);
1603
+ text-align: center;
1604
+ position: sticky;
1605
+ bottom: 0;
1606
+
1607
+ small {
1608
+ font-size: 0.8em;
1609
+ color: var(--muted-color, #6b7280);
1610
+ font-style: italic;
1611
+ }
1612
+ }
1613
+
1541
1614
  .jsonKeyList {
1542
- padding: 4px 0;
1615
+ padding: 0;
1616
+ }
1617
+
1618
+ .jsonKeyListHeader {
1619
+ display: flex;
1620
+ justify-content: space-between;
1621
+ align-items: center;
1622
+ padding: 8px 12px;
1623
+ background-color: #f9fafb;
1624
+ border-bottom: 1px solid var(--border-color, #e5e7eb);
1625
+ font-size: 0.8em;
1626
+ font-weight: 600;
1627
+ color: var(--muted-color, #6b7280);
1628
+ position: sticky;
1629
+ top: 40px;
1630
+ z-index: 1;
1631
+ }
1632
+
1633
+ .jsonKeyNameHeader {
1634
+ flex: 1;
1635
+ }
1636
+
1637
+ .jsonKeyFrequencyHeader {
1638
+ text-align: right;
1639
+ padding-right: 8px;
1543
1640
  }
1544
1641
 
1545
1642
  .jsonKeyItem {
@@ -1550,9 +1647,14 @@
1550
1647
  cursor: pointer;
1551
1648
  transition: all 0.2s ease;
1552
1649
  font-size: 0.85em;
1650
+ border-bottom: 1px solid rgba(0, 0, 0, 0.03);
1553
1651
 
1554
1652
  &:hover {
1555
- background-color: #f3f4f6;
1653
+ background-color: rgba(var(--primary-rgb, 37, 99, 235), 0.05);
1654
+ }
1655
+
1656
+ &:active {
1657
+ background-color: rgba(var(--primary-rgb, 37, 99, 235), 0.1);
1556
1658
  }
1557
1659
 
1558
1660
  .jsonKeyName {
@@ -1568,12 +1670,14 @@
1568
1670
  color: var(--muted-color, #6b7280);
1569
1671
  font-size: 0.85em;
1570
1672
  margin-left: 8px;
1673
+ min-width: 40px;
1674
+ text-align: right;
1571
1675
  }
1572
1676
  }
1573
1677
 
1574
1678
  .jsonKeyLoading,
1575
1679
  .jsonKeyEmpty {
1576
- padding: 12px;
1680
+ padding: 20px 12px;
1577
1681
  text-align: center;
1578
1682
  color: var(--muted-color, #6b7280);
1579
1683
  font-size: 0.85em;
@@ -1643,3 +1747,235 @@
1643
1747
  margin-top: 4px;
1644
1748
  }
1645
1749
  }
1750
+
1751
+ // Smart formatted values styling
1752
+ :global {
1753
+ .status-active {
1754
+ color: #16a34a; // Green
1755
+ font-weight: 500;
1756
+ }
1757
+
1758
+ .status-inactive {
1759
+ color: #dc2626; // Red
1760
+ font-weight: 500;
1761
+ }
1762
+
1763
+ .boolean-yes {
1764
+ color: #16a34a; // Green
1765
+ font-weight: 500;
1766
+ }
1767
+
1768
+ .boolean-no {
1769
+ color: #dc2626; // Red
1770
+ font-weight: 500;
1771
+ }
1772
+
1773
+ .status-enabled {
1774
+ color: #16a34a; // Green
1775
+ font-weight: 500;
1776
+ }
1777
+
1778
+ .status-disabled {
1779
+ color: #dc2626; // Red
1780
+ font-weight: 500;
1781
+ }
1782
+
1783
+ .status-approved {
1784
+ color: #16a34a; // Green
1785
+ font-weight: 500;
1786
+ }
1787
+
1788
+ .status-rejected {
1789
+ color: #dc2626; // Red
1790
+ font-weight: 500;
1791
+ }
1792
+
1793
+ .status-verified {
1794
+ color: #16a34a; // Green
1795
+ font-weight: 500;
1796
+ }
1797
+
1798
+ .status-not-verified {
1799
+ color: #dc2626; // Red
1800
+ font-weight: 500;
1801
+ }
1802
+
1803
+ // JSON link styling
1804
+ .json-link {
1805
+ color: #2563eb; // Blue
1806
+ text-decoration: underline;
1807
+
1808
+ &:hover {
1809
+ text-decoration: none;
1810
+ }
1811
+ }
1812
+ }
1813
+
1814
+ // Human-friendly JSON styling
1815
+ .humanJsonContainer {
1816
+ display: flex;
1817
+ flex-direction: column;
1818
+ gap: 3px;
1819
+ padding: 10px 12px;
1820
+ background-color: #f9fafb;
1821
+ border-radius: 6px;
1822
+ border: 1px solid #e5e7eb;
1823
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
1824
+ font-size: 0.9rem;
1825
+ margin: 2px 0;
1826
+ }
1827
+
1828
+ .humanJsonRow {
1829
+ display: flex;
1830
+ align-items: center;
1831
+ padding: 5px 2px;
1832
+ line-height: 1.4;
1833
+ border-radius: 4px;
1834
+
1835
+ &:not(:last-child) {
1836
+ border-bottom: 1px dotted rgba(0, 0, 0, 0.08);
1837
+ padding-bottom: 6px;
1838
+ margin-bottom: 5px;
1839
+ }
1840
+
1841
+ &:hover {
1842
+ background-color: rgba(0, 0, 0, 0.03);
1843
+ }
1844
+ }
1845
+
1846
+ .humanJsonKey {
1847
+ font-weight: 600;
1848
+ color: #2563eb; // Blue
1849
+ margin-right: 12px;
1850
+ min-width: 120px;
1851
+ flex: 0 0 auto;
1852
+ padding-left: 3px;
1853
+ }
1854
+
1855
+ .humanJsonValue {
1856
+ flex: 1;
1857
+ word-break: break-word;
1858
+ padding-right: 5px;
1859
+ color: #1f2937;
1860
+ font-weight: 500;
1861
+ }
1862
+
1863
+ /* Suggested Filters Styles */
1864
+ .suggestedFiltersContainer {
1865
+ margin: 12px 0 20px;
1866
+ background-color: #f3f4f6;
1867
+ border: 1px solid var(--border-color, #e5e7eb);
1868
+ border-radius: 6px;
1869
+ padding: 12px;
1870
+ }
1871
+
1872
+ .suggestedFiltersHeader {
1873
+ display: flex;
1874
+ justify-content: space-between;
1875
+ align-items: center;
1876
+ margin-bottom: 10px;
1877
+ padding: 6px 0;
1878
+
1879
+ &:hover {
1880
+ background-color: rgba(0, 0, 0, 0.02);
1881
+ }
1882
+ }
1883
+
1884
+ .suggestedFiltersHeaderTitle {
1885
+ display: flex;
1886
+ flex-direction: column;
1887
+
1888
+ h4 {
1889
+ margin: 0;
1890
+ font-size: 0.95em;
1891
+ color: var(--heading-color, #1f2937);
1892
+ font-weight: 600;
1893
+ display: flex;
1894
+ align-items: center;
1895
+ gap: 6px;
1896
+ }
1897
+
1898
+ .suggestedFiltersCount {
1899
+ font-size: 0.85em;
1900
+ color: var(--muted-color, #6b7280);
1901
+ font-weight: normal;
1902
+ }
1903
+
1904
+ small {
1905
+ font-size: 0.8em;
1906
+ color: var(--muted-color, #6b7280);
1907
+ font-style: italic;
1908
+ }
1909
+ }
1910
+
1911
+ .suggestedFiltersCategory {
1912
+ margin-bottom: 12px;
1913
+
1914
+ &:last-child {
1915
+ margin-bottom: 0;
1916
+ }
1917
+ }
1918
+
1919
+ .suggestedFiltersCategoryHeader {
1920
+ font-size: 0.85em;
1921
+ font-weight: 600;
1922
+ color: var(--heading-color, #1f2937);
1923
+ margin-bottom: 6px;
1924
+ padding-bottom: 4px;
1925
+ border-bottom: 1px solid var(--border-color, #e5e7eb);
1926
+ }
1927
+
1928
+ .suggestedFiltersList {
1929
+ display: grid;
1930
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
1931
+ gap: 8px;
1932
+ }
1933
+
1934
+ .suggestedFilterItem {
1935
+ display: flex;
1936
+ justify-content: space-between;
1937
+ align-items: center;
1938
+ padding: 8px 12px;
1939
+ background-color: white;
1940
+ border: 1px solid var(--border-color, #e5e7eb);
1941
+ border-radius: 4px;
1942
+ cursor: pointer;
1943
+ transition: all 0.2s ease;
1944
+
1945
+ &:hover {
1946
+ background-color: rgba(var(--primary-rgb, 37, 99, 235), 0.05);
1947
+ border-color: var(--primary-color, #2563eb);
1948
+ }
1949
+ }
1950
+
1951
+ .suggestedFilterName {
1952
+ font-size: 0.85em;
1953
+ color: var(--paragraph-color, #4b5563);
1954
+ flex: 1;
1955
+ overflow: hidden;
1956
+ text-overflow: ellipsis;
1957
+ white-space: nowrap;
1958
+ }
1959
+
1960
+ .addSuggestedFilterBtn {
1961
+ background-color: var(--primary-color, #2563eb);
1962
+ color: white;
1963
+ border: none;
1964
+ border-radius: 50%;
1965
+ width: 20px;
1966
+ height: 20px;
1967
+ display: flex;
1968
+ align-items: center;
1969
+ justify-content: center;
1970
+ font-size: 1em;
1971
+ font-weight: bold;
1972
+ cursor: pointer;
1973
+ transition: all 0.2s ease;
1974
+ margin-left: 8px;
1975
+ flex-shrink: 0;
1976
+
1977
+ &:hover {
1978
+ background-color: var(--primary-hover-color, #1d4ed8);
1979
+ transform: scale(1.1);
1980
+ }
1981
+ }
@@ -44,124 +44,7 @@
44
44
  }
45
45
  }
46
46
 
47
- /* Toggle button styles */
48
- :global {
49
- .react-toggle {
50
- touch-action: pan-x;
51
- display: inline-block;
52
- position: relative;
53
- cursor: pointer;
54
- background-color: transparent;
55
- border: 0;
56
- padding: 0;
57
- -webkit-touch-callout: none;
58
- -webkit-user-select: none;
59
- -khtml-user-select: none;
60
- -moz-user-select: none;
61
- -ms-user-select: none;
62
- user-select: none;
63
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
64
- -webkit-tap-highlight-color: transparent;
65
- }
66
-
67
- .react-toggle-screenreader-only {
68
- border: 0;
69
- clip: rect(0 0 0 0);
70
- height: 1px;
71
- margin: -1px;
72
- overflow: hidden;
73
- padding: 0;
74
- position: absolute;
75
- width: 1px;
76
- }
77
-
78
- .react-toggle-track {
79
- width: 50px;
80
- height: 24px;
81
- padding: 0;
82
- border-radius: 30px;
83
- background-color: #4d4d4d;
84
- transition: all 0.2s ease;
85
- }
86
-
87
- .react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track {
88
- background-color: #000000;
89
- }
90
-
91
- .react-toggle--checked .react-toggle-track {
92
- background-color: var(--primary-color, #3b82f6);
93
- }
94
-
95
- .react-toggle--checked:hover:not(.react-toggle--disabled)
96
- .react-toggle-track {
97
- background-color: var(--primary-color, #3b82f6);
98
- opacity: 0.8;
99
- }
100
-
101
- .react-toggle-track-check {
102
- position: absolute;
103
- width: 14px;
104
- height: 10px;
105
- top: 0px;
106
- bottom: 0px;
107
- margin-top: auto;
108
- margin-bottom: auto;
109
- line-height: 0;
110
- left: 8px;
111
- opacity: 0;
112
- transition: opacity 0.25s ease;
113
- }
114
-
115
- .react-toggle--checked .react-toggle-track-check {
116
- opacity: 1;
117
- transition: opacity 0.25s ease;
118
- }
119
-
120
- .react-toggle-track-x {
121
- position: absolute;
122
- width: 10px;
123
- height: 10px;
124
- top: 0px;
125
- bottom: 0px;
126
- margin-top: auto;
127
- margin-bottom: auto;
128
- line-height: 0;
129
- right: 10px;
130
- opacity: 1;
131
- transition: opacity 0.25s ease;
132
- }
133
-
134
- .react-toggle--checked .react-toggle-track-x {
135
- opacity: 0;
136
- }
137
-
138
- .react-toggle-thumb {
139
- transition: all 0.5s cubic-bezier(0.23, 1, 0.32, 1) 0ms;
140
- position: absolute;
141
- top: 1px;
142
- left: 1px;
143
- width: 22px;
144
- height: 22px;
145
- border: 1px solid #4d4d4d;
146
- border-radius: 50%;
147
- background-color: #fafafa;
148
- box-sizing: border-box;
149
- transition: all 0.25s ease;
150
- }
151
-
152
- .react-toggle--checked .react-toggle-thumb {
153
- left: 27px;
154
- border-color: var(--primary-color, #3b82f6);
155
- }
156
-
157
- .react-toggle--focus .react-toggle-thumb {
158
- box-shadow: 0px 0px 3px 2px var(--primary-color, #3b82f6);
159
- }
160
-
161
- .react-toggle:active:not(.react-toggle--disabled) .react-toggle-thumb {
162
- box-shadow: 0px 0px 5px 5px var(--primary-color, #3b82f6);
163
- }
164
- }
47
+ /* Toggle button styles are now in global.css */
165
48
 
166
49
  .vs-datagrid--row:hover {
167
50
  .InovuaReactDataGrid__row-cell-wrap {
@@ -383,23 +383,8 @@ input[type]:not([type='search']):not([type='url']):not([type='hidden']):not(
383
383
  z-index: -1 !important;
384
384
  }
385
385
 
386
- /* React Toggle Styling */
386
+ /* React Toggle Custom Styling - Overrides for react-toggle/style.css */
387
387
  .react-toggle {
388
- touch-action: pan-x;
389
- display: inline-block;
390
- position: relative;
391
- cursor: pointer;
392
- background-color: transparent;
393
- border: 0;
394
- padding: 0;
395
- -webkit-touch-callout: none;
396
- -webkit-user-select: none;
397
- -khtml-user-select: none;
398
- -moz-user-select: none;
399
- -ms-user-select: none;
400
- user-select: none;
401
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
402
- -webkit-tap-highlight-color: transparent;
403
388
  z-index: 2; /* Ensure toggle is above checkbox */
404
389
  }
405
390
 
@@ -424,103 +409,6 @@ form div:has(.react-toggle) input[type='checkbox'] {
424
409
  height: 0 !important;
425
410
  }
426
411
 
427
- .react-toggle-screenreader-only {
428
- border: 0;
429
- clip: rect(0 0 0 0);
430
- height: 1px;
431
- margin: -1px;
432
- overflow: hidden;
433
- padding: 0;
434
- position: absolute;
435
- width: 1px;
436
- }
437
-
438
- .react-toggle-track {
439
- width: 50px;
440
- height: 24px;
441
- padding: 0;
442
- border-radius: 30px;
443
- background-color: #4d4d4d;
444
- transition: all 0.2s ease;
445
- }
446
-
447
- .react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track {
448
- background-color: #000000;
449
- }
450
-
451
- .react-toggle--checked .react-toggle-track {
452
- background-color: var(--primary-color, #3b82f6);
453
- }
454
-
455
- .react-toggle--checked:hover:not(.react-toggle--disabled) .react-toggle-track {
456
- background-color: var(--primary-color, #3b82f6);
457
- opacity: 0.8;
458
- }
459
-
460
- .react-toggle-track-check {
461
- position: absolute;
462
- width: 14px;
463
- height: 10px;
464
- top: 0px;
465
- bottom: 0px;
466
- margin-top: auto;
467
- margin-bottom: auto;
468
- line-height: 0;
469
- left: 8px;
470
- opacity: 0;
471
- transition: opacity 0.25s ease;
472
- }
473
-
474
- .react-toggle--checked .react-toggle-track-check {
475
- opacity: 1;
476
- transition: opacity 0.25s ease;
477
- }
478
-
479
- .react-toggle-track-x {
480
- position: absolute;
481
- width: 10px;
482
- height: 10px;
483
- top: 0px;
484
- bottom: 0px;
485
- margin-top: auto;
486
- margin-bottom: auto;
487
- line-height: 0;
488
- right: 10px;
489
- opacity: 1;
490
- transition: opacity 0.25s ease;
491
- }
492
-
493
- .react-toggle--checked .react-toggle-track-x {
494
- opacity: 0;
495
- }
496
-
497
- .react-toggle-thumb {
498
- transition: all 0.5s cubic-bezier(0.23, 1, 0.32, 1) 0ms;
499
- position: absolute;
500
- top: 1px;
501
- left: 1px;
502
- width: 22px;
503
- height: 22px;
504
- border: 1px solid #4d4d4d;
505
- border-radius: 50%;
506
- background-color: #fafafa;
507
- box-sizing: border-box;
508
- transition: all 0.25s ease;
509
- }
510
-
511
- .react-toggle--checked .react-toggle-thumb {
512
- left: 27px;
513
- border-color: var(--primary-color, #3b82f6);
514
- }
515
-
516
- .react-toggle--focus .react-toggle-thumb {
517
- box-shadow: 0px 0px 3px 2px var(--primary-color, #3b82f6);
518
- }
519
-
520
- .react-toggle:active:not(.react-toggle--disabled) .react-toggle-thumb {
521
- box-shadow: 0px 0px 5px 5px var(--primary-color, #3b82f6);
522
- }
523
-
524
412
  /* Safari-specific fixes for form elements */
525
413
  @supports (-webkit-touch-callout: none) {
526
414
  /* Safari-specific styles */