@visns-studio/visns-components 5.14.20 → 5.14.21

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/package.json CHANGED
@@ -89,7 +89,7 @@
89
89
  "react-dom": "^17.0.0 || ^18.0.0"
90
90
  },
91
91
  "name": "@visns-studio/visns-components",
92
- "version": "5.14.20",
92
+ "version": "5.14.21",
93
93
  "description": "Various packages to assist in the development of our Custom Applications.",
94
94
  "main": "src/index.js",
95
95
  "files": [
@@ -1706,11 +1706,8 @@ function Field({
1706
1706
  </div>
1707
1707
  )}
1708
1708
 
1709
- <div className={styles.jsonTableWrapper} style={{
1710
- overflowX: 'auto',
1711
- marginBottom: '1rem'
1712
- }}>
1713
- <table className={`${styles.contentTable} ${styles.jsonTable}`}>
1709
+ <div className={styles.jsonTableWrapper}>
1710
+ <table className={styles.jsonTable}>
1714
1711
  <thead>
1715
1712
  <tr>
1716
1713
  {settings.columns?.map((column, index) => (
@@ -1730,7 +1727,7 @@ function Field({
1730
1727
  </th>
1731
1728
  ))}
1732
1729
  {settings.deleteRowButton?.enabled !== false && (
1733
- <th style={{ width: '60px', textAlign: 'center' }}>
1730
+ <th className={styles.jsonTableActionsHeader}>
1734
1731
  Actions
1735
1732
  </th>
1736
1733
  )}
@@ -1740,10 +1737,7 @@ function Field({
1740
1737
  {jsonTableData.map((row, rowIndex) => (
1741
1738
  <tr key={rowIndex}>
1742
1739
  {settings.columns?.map((column, columnIndex) => (
1743
- <td key={columnIndex} style={{
1744
- verticalAlign: 'top',
1745
- padding: '8px 12px'
1746
- }}>
1740
+ <td key={columnIndex}>
1747
1741
  {renderJsonTableField(
1748
1742
  column,
1749
1743
  row[column.id],
@@ -1753,10 +1747,7 @@ function Field({
1753
1747
  </td>
1754
1748
  ))}
1755
1749
  {settings.deleteRowButton?.enabled !== false && (
1756
- <td style={{
1757
- textAlign: 'center',
1758
- verticalAlign: 'middle'
1759
- }}>
1750
+ <td className={styles.jsonTableActionsCell}>
1760
1751
  <button
1761
1752
  type="button"
1762
1753
  onClick={() =>
@@ -1387,9 +1387,9 @@ input[type='file']:hover {
1387
1387
 
1388
1388
  /* JSON Table Field Styles */
1389
1389
  .jsonTableLabel {
1390
- margin-bottom: 0.75rem;
1390
+ margin-bottom: 0.5rem;
1391
1391
  font-weight: 500;
1392
- font-size: 0.9rem;
1392
+ font-size: 0.875rem;
1393
1393
  color: var(--paragraph-color);
1394
1394
  display: flex;
1395
1395
  align-items: center;
@@ -1398,76 +1398,113 @@ input[type='file']:hover {
1398
1398
 
1399
1399
  .jsonTableContainer {
1400
1400
  width: 100%;
1401
- border: 1px solid var(--border-color, #e9ecef);
1402
- border-radius: var(--br, 6px);
1401
+ border: 1px solid var(--border-color, #dee2e6);
1402
+ border-radius: var(--br, 4px);
1403
1403
  background: var(--item-color, #fff);
1404
1404
  overflow: hidden;
1405
+ margin-bottom: 0.75rem;
1406
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
1407
+ }
1408
+
1409
+ .jsonTableWrapper {
1410
+ overflow-x: auto;
1405
1411
  }
1406
1412
 
1407
1413
  .jsonTable {
1408
1414
  width: 100%;
1409
1415
  border-collapse: collapse;
1410
- font-size: 0.85rem;
1416
+ font-size: 0.8rem;
1417
+ background: var(--item-color, #fff);
1418
+ margin: 0 auto;
1419
+ border: none;
1420
+ border-spacing: 0;
1421
+ box-sizing: border-box;
1422
+ }
1423
+
1424
+ .jsonTable thead {
1425
+ display: table-row-group;
1411
1426
  }
1412
1427
 
1413
1428
  .jsonTable th {
1414
- background: var(--primary-color, #007bff);
1415
- color: var(--secondary-color, #fff);
1429
+ background: var(--tertiary-color, #f8f9fa);
1430
+ color: var(--paragraph-color, #495057);
1416
1431
  font-weight: 600;
1417
- padding: 0.75rem 0.5rem;
1432
+ padding: 0.5rem 0.75rem;
1418
1433
  text-align: left;
1419
- border-bottom: 2px solid rgba(var(--primary-color-rgb, 0, 123, 255), 0.8);
1420
- font-size: 0.8rem;
1434
+ border-bottom: 1px solid var(--border-color, #dee2e6);
1435
+ border-right: 1px solid var(--border-color, #dee2e6);
1436
+ font-size: 0.75rem;
1421
1437
  line-height: 1.2;
1422
- letter-spacing: 0.02em;
1438
+ letter-spacing: 0.01em;
1439
+ text-transform: uppercase;
1440
+ border-spacing: 0;
1441
+ border-collapse: collapse;
1442
+ }
1443
+
1444
+ .jsonTable th:last-child {
1445
+ border-right: none;
1423
1446
  }
1424
1447
 
1425
1448
  .jsonTable td {
1426
- padding: 0.5rem;
1449
+ padding: 0.4rem 0.75rem;
1427
1450
  border-bottom: 1px solid var(--table-border, #dee2e6);
1451
+ border-right: 1px solid var(--table-border, #dee2e6);
1428
1452
  vertical-align: middle;
1453
+ background: var(--item-color, #fff);
1454
+ line-height: 1;
1455
+ border-spacing: 0;
1456
+ border-collapse: collapse;
1429
1457
  }
1430
1458
 
1431
- .jsonTable tbody tr:hover {
1459
+ .jsonTable td:last-child {
1460
+ border-right: none;
1461
+ }
1462
+
1463
+ .jsonTable tbody tr:nth-child(even) td {
1464
+ background: rgba(var(--border-color-rgb, 222, 226, 230), 0.3);
1465
+ }
1466
+
1467
+ .jsonTable tbody tr:hover td {
1432
1468
  background: rgba(var(--primary-color-rgb, 0, 123, 255), 0.03);
1433
1469
  }
1434
1470
 
1435
1471
  .jsonTableInput {
1436
1472
  width: 100%;
1437
- padding: 0.4rem 0.6rem;
1438
- border: 1px solid rgba(var(--border-color-rgb, 233, 236, 239), 0.6);
1473
+ padding: 0.375rem 0.5rem;
1474
+ border: 1px solid var(--border-color, #dee2e6);
1439
1475
  border-radius: calc(var(--br, 4px) - 1px);
1440
- background: var(--tertiary-color, #fff);
1476
+ background: var(--item-color, #fff);
1441
1477
  color: var(--paragraph-color);
1442
1478
  font-size: 0.8rem;
1443
1479
  line-height: 1.3;
1444
- transition: all 0.15s ease;
1480
+ transition: border-color 0.15s ease;
1445
1481
  box-sizing: border-box;
1482
+ min-height: 1.8rem;
1446
1483
  }
1447
1484
 
1448
1485
  .jsonTableInput:focus {
1449
1486
  outline: none;
1450
1487
  border-color: var(--primary-color, #007bff);
1451
1488
  background: var(--item-color, #fff);
1452
- box-shadow: 0 0 0 2px rgba(var(--primary-color-rgb, 0, 123, 255), 0.1);
1489
+ box-shadow: 0 0 0 1px rgba(var(--primary-color-rgb, 0, 123, 255), 0.25);
1453
1490
  }
1454
1491
 
1455
- .jsonTableInput:hover {
1456
- border-color: rgba(var(--paragraph-color-rgb, 73, 80, 87), 0.5);
1492
+ .jsonTableInput:hover:not(:focus) {
1493
+ border-color: var(--border-color, #ced4da);
1457
1494
  }
1458
1495
 
1459
1496
  .jsonTableTextarea {
1460
1497
  width: 100%;
1461
- padding: 0.4rem 0.6rem;
1462
- border: 1px solid rgba(var(--border-color-rgb, 233, 236, 239), 0.6);
1498
+ padding: 0.375rem 0.5rem;
1499
+ border: 1px solid var(--border-color, #dee2e6);
1463
1500
  border-radius: calc(var(--br, 4px) - 1px);
1464
- background: var(--tertiary-color, #fff);
1501
+ background: var(--item-color, #fff);
1465
1502
  color: var(--paragraph-color);
1466
1503
  font-size: 0.8rem;
1467
1504
  line-height: 1.4;
1468
- transition: all 0.15s ease;
1505
+ transition: border-color 0.15s ease;
1469
1506
  resize: vertical;
1470
- min-height: 2.2rem;
1507
+ min-height: 2rem;
1471
1508
  font-family: inherit;
1472
1509
  box-sizing: border-box;
1473
1510
  }
@@ -1476,25 +1513,25 @@ input[type='file']:hover {
1476
1513
  outline: none;
1477
1514
  border-color: var(--primary-color, #007bff);
1478
1515
  background: var(--item-color, #fff);
1479
- box-shadow: 0 0 0 2px rgba(var(--primary-color-rgb, 0, 123, 255), 0.1);
1516
+ box-shadow: 0 0 0 1px rgba(var(--primary-color-rgb, 0, 123, 255), 0.25);
1480
1517
  }
1481
1518
 
1482
- .jsonTableTextarea:hover {
1483
- border-color: rgba(var(--paragraph-color-rgb, 73, 80, 87), 0.5);
1519
+ .jsonTableTextarea:hover:not(:focus) {
1520
+ border-color: var(--border-color, #ced4da);
1484
1521
  }
1485
1522
 
1486
1523
  .jsonTableDisplay {
1487
- padding: 0.85rem 0.3rem;
1524
+ padding: 0.5rem 0.375rem;
1488
1525
  color: var(--paragraph-color);
1489
1526
  font-size: 0.8rem;
1490
1527
  font-weight: 500;
1491
1528
  text-align: center;
1492
- background: rgba(var(--primary-color-rgb, 0, 123, 255), 0.05);
1529
+ background: var(--tertiary-color, #f8f9fa);
1493
1530
  border-radius: calc(var(--br, 4px) - 1px);
1494
- border: 1px solid rgba(var(--primary-color-rgb, 0, 123, 255), 0.15);
1531
+ border: 1px solid var(--border-color, #ced4da);
1495
1532
  line-height: 1.3;
1496
1533
  user-select: none;
1497
- height: auto;
1534
+ min-height: 1.8rem;
1498
1535
  display: flex;
1499
1536
  align-items: center;
1500
1537
  justify-content: center;
@@ -1532,16 +1569,17 @@ input[type='file']:hover {
1532
1569
  justify-content: center;
1533
1570
  align-items: center;
1534
1571
  gap: 0.5rem;
1535
- min-width: 4rem;
1536
- padding: 0.25rem;
1572
+ padding: 0.75rem;
1573
+ border-top: 1px solid var(--border-color, #dee2e6);
1574
+ background: var(--item-color, #fff);
1537
1575
  }
1538
1576
 
1539
1577
  .jsonTableDeleteBtn {
1540
1578
  display: flex;
1541
1579
  align-items: center;
1542
1580
  justify-content: center;
1543
- width: 1.8rem;
1544
- height: 1.8rem;
1581
+ width: 1.5rem;
1582
+ height: 1.5rem;
1545
1583
  padding: 0;
1546
1584
  background: rgba(var(--danger-color-rgb, 220, 53, 69), 0.08);
1547
1585
  border: 1px solid rgba(var(--danger-color-rgb, 220, 53, 69), 0.2);
@@ -1557,8 +1595,6 @@ input[type='file']:hover {
1557
1595
  background: var(--danger-color, #dc3545);
1558
1596
  color: var(--secondary-color, #fff);
1559
1597
  border-color: var(--danger-color, #dc3545);
1560
- transform: translateY(-1px);
1561
- box-shadow: 0 2px 4px rgba(var(--danger-color-rgb, 220, 53, 69), 0.3);
1562
1598
  }
1563
1599
 
1564
1600
  .jsonTableDeleteBtn:focus {
@@ -1569,27 +1605,23 @@ input[type='file']:hover {
1569
1605
  .jsonTableAddBtn {
1570
1606
  display: inline-flex;
1571
1607
  align-items: center;
1572
- gap: 0.4rem;
1573
- padding: 0.5rem 0.85rem;
1574
- margin-top: 0.75rem;
1575
- background: rgba(var(--primary-color-rgb, 0, 123, 255), 0.08);
1576
- border: 1px solid rgba(var(--primary-color-rgb, 0, 123, 255), 0.25);
1608
+ gap: 0.375rem;
1609
+ padding: 0.375rem 0.75rem;
1610
+ background: var(--primary-color, #007bff);
1611
+ border: 1px solid var(--primary-color, #007bff);
1577
1612
  border-radius: var(--br, 4px);
1578
- color: var(--primary-color, #007bff);
1613
+ color: var(--secondary-color, #fff);
1579
1614
  cursor: pointer;
1580
1615
  transition: all 0.15s ease;
1581
- font-size: 0.8rem;
1616
+ font-size: 0.75rem;
1582
1617
  font-weight: 500;
1583
1618
  text-decoration: none;
1584
1619
  outline: none;
1585
1620
  }
1586
1621
 
1587
1622
  .jsonTableAddBtn:hover {
1588
- background: var(--primary-color, #007bff);
1589
- color: var(--secondary-color, #fff);
1590
- border-color: var(--primary-color, #007bff);
1591
- transform: translateY(-1px);
1592
- box-shadow: 0 2px 6px rgba(var(--primary-color-rgb, 0, 123, 255), 0.25);
1623
+ background: rgba(var(--primary-color-rgb, 0, 123, 255), 0.9);
1624
+ border-color: rgba(var(--primary-color-rgb, 0, 123, 255), 0.9);
1593
1625
  }
1594
1626
 
1595
1627
  .jsonTableAddBtn:focus {
@@ -1598,8 +1630,21 @@ input[type='file']:hover {
1598
1630
  }
1599
1631
 
1600
1632
  .jsonTableAddBtn svg {
1601
- width: 0.9rem;
1602
- height: 0.9rem;
1633
+ width: 0.875rem;
1634
+ height: 0.875rem;
1635
+ }
1636
+
1637
+ .jsonTableActionsHeader {
1638
+ width: 60px;
1639
+ text-align: center;
1640
+ white-space: nowrap;
1641
+ }
1642
+
1643
+ .jsonTableActionsCell {
1644
+ text-align: center;
1645
+ vertical-align: middle;
1646
+ width: 60px;
1647
+ padding: 0.25rem !important;
1603
1648
  }
1604
1649
 
1605
1650
  /* Dark mode support */
@@ -1628,14 +1673,29 @@ input[type='file']:hover {
1628
1673
  border-color: var(--dark-border-color, #4a5568);
1629
1674
  }
1630
1675
 
1676
+ .jsonTable {
1677
+ background: var(--dark-item-color, #2d3748);
1678
+ }
1679
+
1631
1680
  .jsonTable th {
1632
- background: var(--dark-primary-color, #1e40af);
1633
- color: var(--dark-secondary-color, #f9fafb);
1634
- border-bottom-color: rgba(var(--dark-primary-color-rgb, 30, 64, 175), 0.8);
1681
+ background: var(--dark-tertiary-color, #374151);
1682
+ color: var(--dark-text-color, #f9fafb);
1683
+ border-bottom-color: var(--dark-table-border, #4a5568);
1684
+ border-right-color: var(--dark-table-border, #4a5568);
1635
1685
  }
1636
1686
 
1637
1687
  .jsonTable td {
1638
- border-bottom-color: var(--dark-table-border, #6b7280);
1688
+ border-bottom-color: var(--dark-table-border, #4a5568);
1689
+ border-right-color: var(--dark-table-border, #4a5568);
1690
+ background: var(--dark-item-color, #2d3748);
1691
+ }
1692
+
1693
+ .jsonTable tbody tr:nth-child(even) td {
1694
+ background: var(--dark-tertiary-color, #374151);
1695
+ }
1696
+
1697
+ .jsonTable tbody tr:hover td {
1698
+ background: rgba(var(--dark-table-color-rgb, 74, 85, 104), 0.15);
1639
1699
  }
1640
1700
 
1641
1701
  .jsonTableInput,
@@ -1645,14 +1705,30 @@ input[type='file']:hover {
1645
1705
  color: var(--dark-text-color, #f9fafb);
1646
1706
  }
1647
1707
 
1708
+ .jsonTableInput:focus,
1709
+ .jsonTableTextarea:focus {
1710
+ border-color: var(--dark-primary-color, #3182ce);
1711
+ box-shadow: 0 0 0 2px rgba(var(--dark-primary-color-rgb, 49, 130, 206), 0.15);
1712
+ }
1713
+
1714
+ .jsonTableInput:hover:not(:focus),
1715
+ .jsonTableTextarea:hover:not(:focus) {
1716
+ border-color: var(--dark-text-color, #e2e8f0);
1717
+ }
1718
+
1648
1719
  .jsonTableDisplay {
1649
- background: rgba(var(--dark-primary-color-rgb, 30, 64, 175), 0.15);
1650
- border-color: rgba(var(--dark-primary-color-rgb, 30, 64, 175), 0.3);
1720
+ background: var(--dark-tertiary-color, #374151);
1721
+ border-color: var(--dark-border-color, #6b7280);
1651
1722
  color: var(--dark-text-color, #f9fafb);
1652
1723
  }
1653
1724
 
1725
+ .jsonTableActions {
1726
+ background: var(--dark-tertiary-color, #374151);
1727
+ border-top-color: var(--dark-table-border, #4a5568);
1728
+ }
1729
+
1654
1730
  .validationErrors {
1655
- background: rgba(var(--danger-color-rgb, 220, 53, 69), 0.1);
1731
+ background: rgba(var(--danger-color-rgb, 220, 53, 69), 0.15);
1656
1732
  border-color: var(--danger-color, #dc3545);
1657
1733
  }
1658
1734