shadcn-data-views 1.0.4 → 1.0.5
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/README.md +77 -1
- package/dist/index.d.mts +848 -2
- package/dist/index.d.ts +848 -2
- package/dist/index.js +2513 -696
- package/dist/index.mjs +2464 -652
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -950,9 +950,21 @@ body {
|
|
|
950
950
|
.w-\\[100px\\] {
|
|
951
951
|
width: 100px;
|
|
952
952
|
}
|
|
953
|
+
.w-\\[120px\\] {
|
|
954
|
+
width: 120px;
|
|
955
|
+
}
|
|
956
|
+
.w-\\[150px\\] {
|
|
957
|
+
width: 150px;
|
|
958
|
+
}
|
|
959
|
+
.w-\\[180px\\] {
|
|
960
|
+
width: 180px;
|
|
961
|
+
}
|
|
953
962
|
.w-\\[1px\\] {
|
|
954
963
|
width: 1px;
|
|
955
964
|
}
|
|
965
|
+
.w-\\[200px\\] {
|
|
966
|
+
width: 200px;
|
|
967
|
+
}
|
|
956
968
|
.w-\\[264px\\] {
|
|
957
969
|
width: 264px;
|
|
958
970
|
}
|
|
@@ -1229,6 +1241,11 @@ body {
|
|
|
1229
1241
|
margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
|
|
1230
1242
|
margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
|
|
1231
1243
|
}
|
|
1244
|
+
.space-y-3 > :not([hidden]) ~ :not([hidden]) {
|
|
1245
|
+
--tw-space-y-reverse: 0;
|
|
1246
|
+
margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
|
|
1247
|
+
margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
|
|
1248
|
+
}
|
|
1232
1249
|
.space-y-5 > :not([hidden]) ~ :not([hidden]) {
|
|
1233
1250
|
--tw-space-y-reverse: 0;
|
|
1234
1251
|
margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));
|
|
@@ -1407,15 +1424,27 @@ body {
|
|
|
1407
1424
|
--tw-bg-opacity: 1;
|
|
1408
1425
|
background-color: rgb(254 243 199 / var(--tw-bg-opacity, 1));
|
|
1409
1426
|
}
|
|
1427
|
+
.bg-amber-200 {
|
|
1428
|
+
--tw-bg-opacity: 1;
|
|
1429
|
+
background-color: rgb(253 230 138 / var(--tw-bg-opacity, 1));
|
|
1430
|
+
}
|
|
1431
|
+
.bg-amber-50 {
|
|
1432
|
+
--tw-bg-opacity: 1;
|
|
1433
|
+
background-color: rgb(255 251 235 / var(--tw-bg-opacity, 1));
|
|
1434
|
+
}
|
|
1410
1435
|
.bg-amber-500 {
|
|
1411
1436
|
--tw-bg-opacity: 1;
|
|
1412
1437
|
background-color: rgb(245 158 11 / var(--tw-bg-opacity, 1));
|
|
1413
1438
|
}
|
|
1439
|
+
.bg-amber-700 {
|
|
1440
|
+
--tw-bg-opacity: 1;
|
|
1441
|
+
background-color: rgb(180 83 9 / var(--tw-bg-opacity, 1));
|
|
1442
|
+
}
|
|
1414
1443
|
.bg-background {
|
|
1415
1444
|
background-color: hsl(var(--background));
|
|
1416
1445
|
}
|
|
1417
|
-
.bg-background\\/
|
|
1418
|
-
background-color: hsl(var(--background) / 0.
|
|
1446
|
+
.bg-background\\/90 {
|
|
1447
|
+
background-color: hsl(var(--background) / 0.9);
|
|
1419
1448
|
}
|
|
1420
1449
|
.bg-black\\/80 {
|
|
1421
1450
|
background-color: rgb(0 0 0 / 0.8);
|
|
@@ -1428,22 +1457,82 @@ body {
|
|
|
1428
1457
|
--tw-bg-opacity: 1;
|
|
1429
1458
|
background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));
|
|
1430
1459
|
}
|
|
1460
|
+
.bg-blue-900 {
|
|
1461
|
+
--tw-bg-opacity: 1;
|
|
1462
|
+
background-color: rgb(30 58 138 / var(--tw-bg-opacity, 1));
|
|
1463
|
+
}
|
|
1431
1464
|
.bg-border {
|
|
1432
1465
|
background-color: hsl(var(--border));
|
|
1433
1466
|
}
|
|
1434
1467
|
.bg-card {
|
|
1435
1468
|
background-color: hsl(var(--card));
|
|
1436
1469
|
}
|
|
1470
|
+
.bg-cyan-100 {
|
|
1471
|
+
--tw-bg-opacity: 1;
|
|
1472
|
+
background-color: rgb(207 250 254 / var(--tw-bg-opacity, 1));
|
|
1473
|
+
}
|
|
1474
|
+
.bg-cyan-400 {
|
|
1475
|
+
--tw-bg-opacity: 1;
|
|
1476
|
+
background-color: rgb(34 211 238 / var(--tw-bg-opacity, 1));
|
|
1477
|
+
}
|
|
1478
|
+
.bg-cyan-500 {
|
|
1479
|
+
--tw-bg-opacity: 1;
|
|
1480
|
+
background-color: rgb(6 182 212 / var(--tw-bg-opacity, 1));
|
|
1481
|
+
}
|
|
1437
1482
|
.bg-destructive {
|
|
1438
1483
|
background-color: hsl(var(--destructive));
|
|
1439
1484
|
}
|
|
1485
|
+
.bg-emerald-100 {
|
|
1486
|
+
--tw-bg-opacity: 1;
|
|
1487
|
+
background-color: rgb(209 250 229 / var(--tw-bg-opacity, 1));
|
|
1488
|
+
}
|
|
1489
|
+
.bg-emerald-400 {
|
|
1490
|
+
--tw-bg-opacity: 1;
|
|
1491
|
+
background-color: rgb(52 211 153 / var(--tw-bg-opacity, 1));
|
|
1492
|
+
}
|
|
1493
|
+
.bg-emerald-500 {
|
|
1494
|
+
--tw-bg-opacity: 1;
|
|
1495
|
+
background-color: rgb(16 185 129 / var(--tw-bg-opacity, 1));
|
|
1496
|
+
}
|
|
1440
1497
|
.bg-foreground {
|
|
1441
1498
|
background-color: hsl(var(--foreground));
|
|
1442
1499
|
}
|
|
1500
|
+
.bg-fuchsia-100 {
|
|
1501
|
+
--tw-bg-opacity: 1;
|
|
1502
|
+
background-color: rgb(250 232 255 / var(--tw-bg-opacity, 1));
|
|
1503
|
+
}
|
|
1504
|
+
.bg-fuchsia-400 {
|
|
1505
|
+
--tw-bg-opacity: 1;
|
|
1506
|
+
background-color: rgb(232 121 249 / var(--tw-bg-opacity, 1));
|
|
1507
|
+
}
|
|
1508
|
+
.bg-fuchsia-500 {
|
|
1509
|
+
--tw-bg-opacity: 1;
|
|
1510
|
+
background-color: rgb(217 70 239 / var(--tw-bg-opacity, 1));
|
|
1511
|
+
}
|
|
1512
|
+
.bg-fuchsia-600 {
|
|
1513
|
+
--tw-bg-opacity: 1;
|
|
1514
|
+
background-color: rgb(192 38 211 / var(--tw-bg-opacity, 1));
|
|
1515
|
+
}
|
|
1516
|
+
.bg-gray-100 {
|
|
1517
|
+
--tw-bg-opacity: 1;
|
|
1518
|
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
|
|
1519
|
+
}
|
|
1443
1520
|
.bg-gray-400 {
|
|
1444
1521
|
--tw-bg-opacity: 1;
|
|
1445
1522
|
background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1));
|
|
1446
1523
|
}
|
|
1524
|
+
.bg-gray-50 {
|
|
1525
|
+
--tw-bg-opacity: 1;
|
|
1526
|
+
background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
|
|
1527
|
+
}
|
|
1528
|
+
.bg-gray-800 {
|
|
1529
|
+
--tw-bg-opacity: 1;
|
|
1530
|
+
background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));
|
|
1531
|
+
}
|
|
1532
|
+
.bg-gray-900 {
|
|
1533
|
+
--tw-bg-opacity: 1;
|
|
1534
|
+
background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1));
|
|
1535
|
+
}
|
|
1447
1536
|
.bg-green-100 {
|
|
1448
1537
|
--tw-bg-opacity: 1;
|
|
1449
1538
|
background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1));
|
|
@@ -1456,15 +1545,78 @@ body {
|
|
|
1456
1545
|
--tw-bg-opacity: 1;
|
|
1457
1546
|
background-color: rgb(34 197 94 / var(--tw-bg-opacity, 1));
|
|
1458
1547
|
}
|
|
1548
|
+
.bg-indigo-100 {
|
|
1549
|
+
--tw-bg-opacity: 1;
|
|
1550
|
+
background-color: rgb(224 231 255 / var(--tw-bg-opacity, 1));
|
|
1551
|
+
}
|
|
1552
|
+
.bg-indigo-500 {
|
|
1553
|
+
--tw-bg-opacity: 1;
|
|
1554
|
+
background-color: rgb(99 102 241 / var(--tw-bg-opacity, 1));
|
|
1555
|
+
}
|
|
1556
|
+
.bg-lime-100 {
|
|
1557
|
+
--tw-bg-opacity: 1;
|
|
1558
|
+
background-color: rgb(236 252 203 / var(--tw-bg-opacity, 1));
|
|
1559
|
+
}
|
|
1560
|
+
.bg-lime-500 {
|
|
1561
|
+
--tw-bg-opacity: 1;
|
|
1562
|
+
background-color: rgb(132 204 22 / var(--tw-bg-opacity, 1));
|
|
1563
|
+
}
|
|
1564
|
+
.bg-lime-700 {
|
|
1565
|
+
--tw-bg-opacity: 1;
|
|
1566
|
+
background-color: rgb(77 124 15 / var(--tw-bg-opacity, 1));
|
|
1567
|
+
}
|
|
1459
1568
|
.bg-muted {
|
|
1460
1569
|
background-color: hsl(var(--muted));
|
|
1461
1570
|
}
|
|
1571
|
+
.bg-muted\\/20 {
|
|
1572
|
+
background-color: hsl(var(--muted) / 0.2);
|
|
1573
|
+
}
|
|
1462
1574
|
.bg-muted\\/30 {
|
|
1463
1575
|
background-color: hsl(var(--muted) / 0.3);
|
|
1464
1576
|
}
|
|
1465
1577
|
.bg-muted\\/50 {
|
|
1466
1578
|
background-color: hsl(var(--muted) / 0.5);
|
|
1467
1579
|
}
|
|
1580
|
+
.bg-neutral-100 {
|
|
1581
|
+
--tw-bg-opacity: 1;
|
|
1582
|
+
background-color: rgb(245 245 245 / var(--tw-bg-opacity, 1));
|
|
1583
|
+
}
|
|
1584
|
+
.bg-neutral-400 {
|
|
1585
|
+
--tw-bg-opacity: 1;
|
|
1586
|
+
background-color: rgb(163 163 163 / var(--tw-bg-opacity, 1));
|
|
1587
|
+
}
|
|
1588
|
+
.bg-orange-100 {
|
|
1589
|
+
--tw-bg-opacity: 1;
|
|
1590
|
+
background-color: rgb(255 237 213 / var(--tw-bg-opacity, 1));
|
|
1591
|
+
}
|
|
1592
|
+
.bg-orange-300 {
|
|
1593
|
+
--tw-bg-opacity: 1;
|
|
1594
|
+
background-color: rgb(253 186 116 / var(--tw-bg-opacity, 1));
|
|
1595
|
+
}
|
|
1596
|
+
.bg-orange-400 {
|
|
1597
|
+
--tw-bg-opacity: 1;
|
|
1598
|
+
background-color: rgb(251 146 60 / var(--tw-bg-opacity, 1));
|
|
1599
|
+
}
|
|
1600
|
+
.bg-orange-500 {
|
|
1601
|
+
--tw-bg-opacity: 1;
|
|
1602
|
+
background-color: rgb(249 115 22 / var(--tw-bg-opacity, 1));
|
|
1603
|
+
}
|
|
1604
|
+
.bg-orange-700 {
|
|
1605
|
+
--tw-bg-opacity: 1;
|
|
1606
|
+
background-color: rgb(194 65 12 / var(--tw-bg-opacity, 1));
|
|
1607
|
+
}
|
|
1608
|
+
.bg-pink-100 {
|
|
1609
|
+
--tw-bg-opacity: 1;
|
|
1610
|
+
background-color: rgb(252 231 243 / var(--tw-bg-opacity, 1));
|
|
1611
|
+
}
|
|
1612
|
+
.bg-pink-400 {
|
|
1613
|
+
--tw-bg-opacity: 1;
|
|
1614
|
+
background-color: rgb(244 114 182 / var(--tw-bg-opacity, 1));
|
|
1615
|
+
}
|
|
1616
|
+
.bg-pink-500 {
|
|
1617
|
+
--tw-bg-opacity: 1;
|
|
1618
|
+
background-color: rgb(236 72 153 / var(--tw-bg-opacity, 1));
|
|
1619
|
+
}
|
|
1468
1620
|
.bg-popover {
|
|
1469
1621
|
background-color: hsl(var(--popover));
|
|
1470
1622
|
}
|
|
@@ -1481,10 +1633,18 @@ body {
|
|
|
1481
1633
|
--tw-bg-opacity: 1;
|
|
1482
1634
|
background-color: rgb(243 232 255 / var(--tw-bg-opacity, 1));
|
|
1483
1635
|
}
|
|
1636
|
+
.bg-purple-400 {
|
|
1637
|
+
--tw-bg-opacity: 1;
|
|
1638
|
+
background-color: rgb(192 132 252 / var(--tw-bg-opacity, 1));
|
|
1639
|
+
}
|
|
1484
1640
|
.bg-purple-500 {
|
|
1485
1641
|
--tw-bg-opacity: 1;
|
|
1486
1642
|
background-color: rgb(168 85 247 / var(--tw-bg-opacity, 1));
|
|
1487
1643
|
}
|
|
1644
|
+
.bg-purple-600 {
|
|
1645
|
+
--tw-bg-opacity: 1;
|
|
1646
|
+
background-color: rgb(147 51 234 / var(--tw-bg-opacity, 1));
|
|
1647
|
+
}
|
|
1488
1648
|
.bg-red-100 {
|
|
1489
1649
|
--tw-bg-opacity: 1;
|
|
1490
1650
|
background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1));
|
|
@@ -1493,6 +1653,22 @@ body {
|
|
|
1493
1653
|
--tw-bg-opacity: 1;
|
|
1494
1654
|
background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1));
|
|
1495
1655
|
}
|
|
1656
|
+
.bg-red-700 {
|
|
1657
|
+
--tw-bg-opacity: 1;
|
|
1658
|
+
background-color: rgb(185 28 28 / var(--tw-bg-opacity, 1));
|
|
1659
|
+
}
|
|
1660
|
+
.bg-red-900 {
|
|
1661
|
+
--tw-bg-opacity: 1;
|
|
1662
|
+
background-color: rgb(127 29 29 / var(--tw-bg-opacity, 1));
|
|
1663
|
+
}
|
|
1664
|
+
.bg-rose-100 {
|
|
1665
|
+
--tw-bg-opacity: 1;
|
|
1666
|
+
background-color: rgb(255 228 230 / var(--tw-bg-opacity, 1));
|
|
1667
|
+
}
|
|
1668
|
+
.bg-rose-500 {
|
|
1669
|
+
--tw-bg-opacity: 1;
|
|
1670
|
+
background-color: rgb(244 63 94 / var(--tw-bg-opacity, 1));
|
|
1671
|
+
}
|
|
1496
1672
|
.bg-secondary {
|
|
1497
1673
|
background-color: hsl(var(--secondary));
|
|
1498
1674
|
}
|
|
@@ -1502,17 +1678,93 @@ body {
|
|
|
1502
1678
|
.bg-sidebar-border {
|
|
1503
1679
|
background-color: hsl(var(--sidebar-border));
|
|
1504
1680
|
}
|
|
1681
|
+
.bg-sky-100 {
|
|
1682
|
+
--tw-bg-opacity: 1;
|
|
1683
|
+
background-color: rgb(224 242 254 / var(--tw-bg-opacity, 1));
|
|
1684
|
+
}
|
|
1685
|
+
.bg-sky-500 {
|
|
1686
|
+
--tw-bg-opacity: 1;
|
|
1687
|
+
background-color: rgb(14 165 233 / var(--tw-bg-opacity, 1));
|
|
1688
|
+
}
|
|
1689
|
+
.bg-slate-100 {
|
|
1690
|
+
--tw-bg-opacity: 1;
|
|
1691
|
+
background-color: rgb(241 245 249 / var(--tw-bg-opacity, 1));
|
|
1692
|
+
}
|
|
1693
|
+
.bg-slate-400 {
|
|
1694
|
+
--tw-bg-opacity: 1;
|
|
1695
|
+
background-color: rgb(148 163 184 / var(--tw-bg-opacity, 1));
|
|
1696
|
+
}
|
|
1505
1697
|
.bg-slate-50 {
|
|
1506
1698
|
--tw-bg-opacity: 1;
|
|
1507
1699
|
background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1));
|
|
1508
1700
|
}
|
|
1701
|
+
.bg-stone-100 {
|
|
1702
|
+
--tw-bg-opacity: 1;
|
|
1703
|
+
background-color: rgb(245 245 244 / var(--tw-bg-opacity, 1));
|
|
1704
|
+
}
|
|
1705
|
+
.bg-stone-400 {
|
|
1706
|
+
--tw-bg-opacity: 1;
|
|
1707
|
+
background-color: rgb(168 162 158 / var(--tw-bg-opacity, 1));
|
|
1708
|
+
}
|
|
1709
|
+
.bg-teal-100 {
|
|
1710
|
+
--tw-bg-opacity: 1;
|
|
1711
|
+
background-color: rgb(204 251 241 / var(--tw-bg-opacity, 1));
|
|
1712
|
+
}
|
|
1713
|
+
.bg-teal-400 {
|
|
1714
|
+
--tw-bg-opacity: 1;
|
|
1715
|
+
background-color: rgb(45 212 191 / var(--tw-bg-opacity, 1));
|
|
1716
|
+
}
|
|
1717
|
+
.bg-teal-500 {
|
|
1718
|
+
--tw-bg-opacity: 1;
|
|
1719
|
+
background-color: rgb(20 184 166 / var(--tw-bg-opacity, 1));
|
|
1720
|
+
}
|
|
1509
1721
|
.bg-transparent {
|
|
1510
1722
|
background-color: transparent;
|
|
1511
1723
|
}
|
|
1724
|
+
.bg-violet-100 {
|
|
1725
|
+
--tw-bg-opacity: 1;
|
|
1726
|
+
background-color: rgb(237 233 254 / var(--tw-bg-opacity, 1));
|
|
1727
|
+
}
|
|
1512
1728
|
.bg-violet-200 {
|
|
1513
1729
|
--tw-bg-opacity: 1;
|
|
1514
1730
|
background-color: rgb(221 214 254 / var(--tw-bg-opacity, 1));
|
|
1515
1731
|
}
|
|
1732
|
+
.bg-violet-500 {
|
|
1733
|
+
--tw-bg-opacity: 1;
|
|
1734
|
+
background-color: rgb(139 92 246 / var(--tw-bg-opacity, 1));
|
|
1735
|
+
}
|
|
1736
|
+
.bg-yellow-100 {
|
|
1737
|
+
--tw-bg-opacity: 1;
|
|
1738
|
+
background-color: rgb(254 249 195 / var(--tw-bg-opacity, 1));
|
|
1739
|
+
}
|
|
1740
|
+
.bg-yellow-400 {
|
|
1741
|
+
--tw-bg-opacity: 1;
|
|
1742
|
+
background-color: rgb(250 204 21 / var(--tw-bg-opacity, 1));
|
|
1743
|
+
}
|
|
1744
|
+
.bg-yellow-50 {
|
|
1745
|
+
--tw-bg-opacity: 1;
|
|
1746
|
+
background-color: rgb(254 252 232 / var(--tw-bg-opacity, 1));
|
|
1747
|
+
}
|
|
1748
|
+
.bg-yellow-500 {
|
|
1749
|
+
--tw-bg-opacity: 1;
|
|
1750
|
+
background-color: rgb(234 179 8 / var(--tw-bg-opacity, 1));
|
|
1751
|
+
}
|
|
1752
|
+
.bg-yellow-600 {
|
|
1753
|
+
--tw-bg-opacity: 1;
|
|
1754
|
+
background-color: rgb(202 138 4 / var(--tw-bg-opacity, 1));
|
|
1755
|
+
}
|
|
1756
|
+
.bg-yellow-700 {
|
|
1757
|
+
--tw-bg-opacity: 1;
|
|
1758
|
+
background-color: rgb(161 98 7 / var(--tw-bg-opacity, 1));
|
|
1759
|
+
}
|
|
1760
|
+
.bg-zinc-100 {
|
|
1761
|
+
--tw-bg-opacity: 1;
|
|
1762
|
+
background-color: rgb(244 244 245 / var(--tw-bg-opacity, 1));
|
|
1763
|
+
}
|
|
1764
|
+
.bg-zinc-400 {
|
|
1765
|
+
--tw-bg-opacity: 1;
|
|
1766
|
+
background-color: rgb(161 161 170 / var(--tw-bg-opacity, 1));
|
|
1767
|
+
}
|
|
1516
1768
|
.fill-current {
|
|
1517
1769
|
fill: currentColor;
|
|
1518
1770
|
}
|
|
@@ -1549,6 +1801,10 @@ body {
|
|
|
1549
1801
|
.p-\\[2px\\] {
|
|
1550
1802
|
padding: 2px;
|
|
1551
1803
|
}
|
|
1804
|
+
.px-0\\.5 {
|
|
1805
|
+
padding-left: 0.125rem;
|
|
1806
|
+
padding-right: 0.125rem;
|
|
1807
|
+
}
|
|
1552
1808
|
.px-1 {
|
|
1553
1809
|
padding-left: 0.25rem;
|
|
1554
1810
|
padding-right: 0.25rem;
|
|
@@ -1670,6 +1926,9 @@ body {
|
|
|
1670
1926
|
.text-right {
|
|
1671
1927
|
text-align: right;
|
|
1672
1928
|
}
|
|
1929
|
+
.text-start {
|
|
1930
|
+
text-align: start;
|
|
1931
|
+
}
|
|
1673
1932
|
.align-middle {
|
|
1674
1933
|
vertical-align: middle;
|
|
1675
1934
|
}
|
|
@@ -1713,6 +1972,9 @@ body {
|
|
|
1713
1972
|
.text-\\[0\\.8rem\\] {
|
|
1714
1973
|
font-size: 0.8rem;
|
|
1715
1974
|
}
|
|
1975
|
+
.text-\\[11px\\] {
|
|
1976
|
+
font-size: 11px;
|
|
1977
|
+
}
|
|
1716
1978
|
.text-\\[13px\\] {
|
|
1717
1979
|
font-size: 13px;
|
|
1718
1980
|
}
|
|
@@ -1745,6 +2007,9 @@ body {
|
|
|
1745
2007
|
.font-semibold {
|
|
1746
2008
|
font-weight: 600;
|
|
1747
2009
|
}
|
|
2010
|
+
.uppercase {
|
|
2011
|
+
text-transform: uppercase;
|
|
2012
|
+
}
|
|
1748
2013
|
.tabular-nums {
|
|
1749
2014
|
--tw-numeric-spacing: tabular-nums;
|
|
1750
2015
|
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
|
@@ -1758,6 +2023,9 @@ body {
|
|
|
1758
2023
|
.tracking-tight {
|
|
1759
2024
|
letter-spacing: -0.025em;
|
|
1760
2025
|
}
|
|
2026
|
+
.tracking-wider {
|
|
2027
|
+
letter-spacing: 0.05em;
|
|
2028
|
+
}
|
|
1761
2029
|
.tracking-widest {
|
|
1762
2030
|
letter-spacing: 0.1em;
|
|
1763
2031
|
}
|
|
@@ -1768,28 +2036,72 @@ body {
|
|
|
1768
2036
|
--tw-text-opacity: 1;
|
|
1769
2037
|
color: rgb(180 83 9 / var(--tw-text-opacity, 1));
|
|
1770
2038
|
}
|
|
2039
|
+
.text-amber-800 {
|
|
2040
|
+
--tw-text-opacity: 1;
|
|
2041
|
+
color: rgb(146 64 14 / var(--tw-text-opacity, 1));
|
|
2042
|
+
}
|
|
1771
2043
|
.text-blue-700 {
|
|
1772
2044
|
--tw-text-opacity: 1;
|
|
1773
2045
|
color: rgb(29 78 216 / var(--tw-text-opacity, 1));
|
|
1774
2046
|
}
|
|
2047
|
+
.text-blue-900 {
|
|
2048
|
+
--tw-text-opacity: 1;
|
|
2049
|
+
color: rgb(30 58 138 / var(--tw-text-opacity, 1));
|
|
2050
|
+
}
|
|
1775
2051
|
.text-card-foreground {
|
|
1776
2052
|
color: hsl(var(--card-foreground));
|
|
1777
2053
|
}
|
|
1778
2054
|
.text-current {
|
|
1779
2055
|
color: currentColor;
|
|
1780
2056
|
}
|
|
2057
|
+
.text-cyan-600 {
|
|
2058
|
+
--tw-text-opacity: 1;
|
|
2059
|
+
color: rgb(8 145 178 / var(--tw-text-opacity, 1));
|
|
2060
|
+
}
|
|
2061
|
+
.text-cyan-700 {
|
|
2062
|
+
--tw-text-opacity: 1;
|
|
2063
|
+
color: rgb(14 116 144 / var(--tw-text-opacity, 1));
|
|
2064
|
+
}
|
|
1781
2065
|
.text-destructive {
|
|
1782
2066
|
color: hsl(var(--destructive));
|
|
1783
2067
|
}
|
|
1784
2068
|
.text-destructive-foreground {
|
|
1785
2069
|
color: hsl(var(--destructive-foreground));
|
|
1786
2070
|
}
|
|
2071
|
+
.text-emerald-600 {
|
|
2072
|
+
--tw-text-opacity: 1;
|
|
2073
|
+
color: rgb(5 150 105 / var(--tw-text-opacity, 1));
|
|
2074
|
+
}
|
|
2075
|
+
.text-emerald-700 {
|
|
2076
|
+
--tw-text-opacity: 1;
|
|
2077
|
+
color: rgb(4 120 87 / var(--tw-text-opacity, 1));
|
|
2078
|
+
}
|
|
1787
2079
|
.text-foreground {
|
|
1788
2080
|
color: hsl(var(--foreground));
|
|
1789
2081
|
}
|
|
1790
2082
|
.text-foreground\\/50 {
|
|
1791
2083
|
color: hsl(var(--foreground) / 0.5);
|
|
1792
2084
|
}
|
|
2085
|
+
.text-fuchsia-700 {
|
|
2086
|
+
--tw-text-opacity: 1;
|
|
2087
|
+
color: rgb(162 28 175 / var(--tw-text-opacity, 1));
|
|
2088
|
+
}
|
|
2089
|
+
.text-gray-100 {
|
|
2090
|
+
--tw-text-opacity: 1;
|
|
2091
|
+
color: rgb(243 244 246 / var(--tw-text-opacity, 1));
|
|
2092
|
+
}
|
|
2093
|
+
.text-gray-600 {
|
|
2094
|
+
--tw-text-opacity: 1;
|
|
2095
|
+
color: rgb(75 85 99 / var(--tw-text-opacity, 1));
|
|
2096
|
+
}
|
|
2097
|
+
.text-gray-700 {
|
|
2098
|
+
--tw-text-opacity: 1;
|
|
2099
|
+
color: rgb(55 65 81 / var(--tw-text-opacity, 1));
|
|
2100
|
+
}
|
|
2101
|
+
.text-gray-900 {
|
|
2102
|
+
--tw-text-opacity: 1;
|
|
2103
|
+
color: rgb(17 24 39 / var(--tw-text-opacity, 1));
|
|
2104
|
+
}
|
|
1793
2105
|
.text-green-700 {
|
|
1794
2106
|
--tw-text-opacity: 1;
|
|
1795
2107
|
color: rgb(21 128 61 / var(--tw-text-opacity, 1));
|
|
@@ -1798,14 +2110,54 @@ body {
|
|
|
1798
2110
|
--tw-text-opacity: 1;
|
|
1799
2111
|
color: rgb(22 101 52 / var(--tw-text-opacity, 1));
|
|
1800
2112
|
}
|
|
2113
|
+
.text-indigo-700 {
|
|
2114
|
+
--tw-text-opacity: 1;
|
|
2115
|
+
color: rgb(67 56 202 / var(--tw-text-opacity, 1));
|
|
2116
|
+
}
|
|
2117
|
+
.text-lime-700 {
|
|
2118
|
+
--tw-text-opacity: 1;
|
|
2119
|
+
color: rgb(77 124 15 / var(--tw-text-opacity, 1));
|
|
2120
|
+
}
|
|
2121
|
+
.text-lime-800 {
|
|
2122
|
+
--tw-text-opacity: 1;
|
|
2123
|
+
color: rgb(63 98 18 / var(--tw-text-opacity, 1));
|
|
2124
|
+
}
|
|
1801
2125
|
.text-muted-foreground {
|
|
1802
2126
|
color: hsl(var(--muted-foreground));
|
|
1803
2127
|
}
|
|
1804
2128
|
.text-muted-foreground\\/20 {
|
|
1805
2129
|
color: hsl(var(--muted-foreground) / 0.2);
|
|
1806
2130
|
}
|
|
1807
|
-
.text-muted-foreground\\/
|
|
1808
|
-
color: hsl(var(--muted-foreground) / 0.
|
|
2131
|
+
.text-muted-foreground\\/40 {
|
|
2132
|
+
color: hsl(var(--muted-foreground) / 0.4);
|
|
2133
|
+
}
|
|
2134
|
+
.text-neutral-700 {
|
|
2135
|
+
--tw-text-opacity: 1;
|
|
2136
|
+
color: rgb(64 64 64 / var(--tw-text-opacity, 1));
|
|
2137
|
+
}
|
|
2138
|
+
.text-orange-500 {
|
|
2139
|
+
--tw-text-opacity: 1;
|
|
2140
|
+
color: rgb(249 115 22 / var(--tw-text-opacity, 1));
|
|
2141
|
+
}
|
|
2142
|
+
.text-orange-600 {
|
|
2143
|
+
--tw-text-opacity: 1;
|
|
2144
|
+
color: rgb(234 88 12 / var(--tw-text-opacity, 1));
|
|
2145
|
+
}
|
|
2146
|
+
.text-orange-700 {
|
|
2147
|
+
--tw-text-opacity: 1;
|
|
2148
|
+
color: rgb(194 65 12 / var(--tw-text-opacity, 1));
|
|
2149
|
+
}
|
|
2150
|
+
.text-orange-800 {
|
|
2151
|
+
--tw-text-opacity: 1;
|
|
2152
|
+
color: rgb(154 52 18 / var(--tw-text-opacity, 1));
|
|
2153
|
+
}
|
|
2154
|
+
.text-pink-600 {
|
|
2155
|
+
--tw-text-opacity: 1;
|
|
2156
|
+
color: rgb(219 39 119 / var(--tw-text-opacity, 1));
|
|
2157
|
+
}
|
|
2158
|
+
.text-pink-700 {
|
|
2159
|
+
--tw-text-opacity: 1;
|
|
2160
|
+
color: rgb(190 24 93 / var(--tw-text-opacity, 1));
|
|
1809
2161
|
}
|
|
1810
2162
|
.text-popover-foreground {
|
|
1811
2163
|
color: hsl(var(--popover-foreground));
|
|
@@ -1816,6 +2168,10 @@ body {
|
|
|
1816
2168
|
.text-primary-foreground {
|
|
1817
2169
|
color: hsl(var(--primary-foreground));
|
|
1818
2170
|
}
|
|
2171
|
+
.text-purple-600 {
|
|
2172
|
+
--tw-text-opacity: 1;
|
|
2173
|
+
color: rgb(147 51 234 / var(--tw-text-opacity, 1));
|
|
2174
|
+
}
|
|
1819
2175
|
.text-purple-700 {
|
|
1820
2176
|
--tw-text-opacity: 1;
|
|
1821
2177
|
color: rgb(126 34 206 / var(--tw-text-opacity, 1));
|
|
@@ -1824,6 +2180,18 @@ body {
|
|
|
1824
2180
|
--tw-text-opacity: 1;
|
|
1825
2181
|
color: rgb(185 28 28 / var(--tw-text-opacity, 1));
|
|
1826
2182
|
}
|
|
2183
|
+
.text-red-800 {
|
|
2184
|
+
--tw-text-opacity: 1;
|
|
2185
|
+
color: rgb(153 27 27 / var(--tw-text-opacity, 1));
|
|
2186
|
+
}
|
|
2187
|
+
.text-red-900 {
|
|
2188
|
+
--tw-text-opacity: 1;
|
|
2189
|
+
color: rgb(127 29 29 / var(--tw-text-opacity, 1));
|
|
2190
|
+
}
|
|
2191
|
+
.text-rose-700 {
|
|
2192
|
+
--tw-text-opacity: 1;
|
|
2193
|
+
color: rgb(190 18 60 / var(--tw-text-opacity, 1));
|
|
2194
|
+
}
|
|
1827
2195
|
.text-secondary-foreground {
|
|
1828
2196
|
color: hsl(var(--secondary-foreground));
|
|
1829
2197
|
}
|
|
@@ -1833,6 +2201,42 @@ body {
|
|
|
1833
2201
|
.text-sidebar-foreground\\/70 {
|
|
1834
2202
|
color: hsl(var(--sidebar-foreground) / 0.7);
|
|
1835
2203
|
}
|
|
2204
|
+
.text-sky-700 {
|
|
2205
|
+
--tw-text-opacity: 1;
|
|
2206
|
+
color: rgb(3 105 161 / var(--tw-text-opacity, 1));
|
|
2207
|
+
}
|
|
2208
|
+
.text-slate-700 {
|
|
2209
|
+
--tw-text-opacity: 1;
|
|
2210
|
+
color: rgb(51 65 85 / var(--tw-text-opacity, 1));
|
|
2211
|
+
}
|
|
2212
|
+
.text-stone-700 {
|
|
2213
|
+
--tw-text-opacity: 1;
|
|
2214
|
+
color: rgb(68 64 60 / var(--tw-text-opacity, 1));
|
|
2215
|
+
}
|
|
2216
|
+
.text-teal-600 {
|
|
2217
|
+
--tw-text-opacity: 1;
|
|
2218
|
+
color: rgb(13 148 136 / var(--tw-text-opacity, 1));
|
|
2219
|
+
}
|
|
2220
|
+
.text-teal-700 {
|
|
2221
|
+
--tw-text-opacity: 1;
|
|
2222
|
+
color: rgb(15 118 110 / var(--tw-text-opacity, 1));
|
|
2223
|
+
}
|
|
2224
|
+
.text-violet-700 {
|
|
2225
|
+
--tw-text-opacity: 1;
|
|
2226
|
+
color: rgb(109 40 217 / var(--tw-text-opacity, 1));
|
|
2227
|
+
}
|
|
2228
|
+
.text-yellow-700 {
|
|
2229
|
+
--tw-text-opacity: 1;
|
|
2230
|
+
color: rgb(161 98 7 / var(--tw-text-opacity, 1));
|
|
2231
|
+
}
|
|
2232
|
+
.text-yellow-800 {
|
|
2233
|
+
--tw-text-opacity: 1;
|
|
2234
|
+
color: rgb(133 77 14 / var(--tw-text-opacity, 1));
|
|
2235
|
+
}
|
|
2236
|
+
.text-zinc-700 {
|
|
2237
|
+
--tw-text-opacity: 1;
|
|
2238
|
+
color: rgb(63 63 70 / var(--tw-text-opacity, 1));
|
|
2239
|
+
}
|
|
1836
2240
|
.underline-offset-4 {
|
|
1837
2241
|
text-underline-offset: 4px;
|
|
1838
2242
|
}
|
|
@@ -2157,6 +2561,11 @@ svg.icon {
|
|
|
2157
2561
|
border-top-right-radius: calc(var(--radius) - 2px);
|
|
2158
2562
|
border-bottom-right-radius: calc(var(--radius) - 2px);
|
|
2159
2563
|
}
|
|
2564
|
+
.hover\\:scale-\\[1\\.02\\]:hover {
|
|
2565
|
+
--tw-scale-x: 1.02;
|
|
2566
|
+
--tw-scale-y: 1.02;
|
|
2567
|
+
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
|
2568
|
+
}
|
|
2160
2569
|
.hover\\:border-primary:hover {
|
|
2161
2570
|
border-color: hsl(var(--primary));
|
|
2162
2571
|
}
|
|
@@ -2169,32 +2578,62 @@ svg.icon {
|
|
|
2169
2578
|
.hover\\:bg-amber-100\\/80:hover {
|
|
2170
2579
|
background-color: rgb(254 243 199 / 0.8);
|
|
2171
2580
|
}
|
|
2581
|
+
.hover\\:bg-amber-50\\/80:hover {
|
|
2582
|
+
background-color: rgb(255 251 235 / 0.8);
|
|
2583
|
+
}
|
|
2172
2584
|
.hover\\:bg-blue-100\\/80:hover {
|
|
2173
2585
|
background-color: rgb(219 234 254 / 0.8);
|
|
2174
2586
|
}
|
|
2587
|
+
.hover\\:bg-cyan-100\\/80:hover {
|
|
2588
|
+
background-color: rgb(207 250 254 / 0.8);
|
|
2589
|
+
}
|
|
2175
2590
|
.hover\\:bg-destructive\\/80:hover {
|
|
2176
2591
|
background-color: hsl(var(--destructive) / 0.8);
|
|
2177
2592
|
}
|
|
2178
2593
|
.hover\\:bg-destructive\\/90:hover {
|
|
2179
2594
|
background-color: hsl(var(--destructive) / 0.9);
|
|
2180
2595
|
}
|
|
2596
|
+
.hover\\:bg-emerald-100\\/80:hover {
|
|
2597
|
+
background-color: rgb(209 250 229 / 0.8);
|
|
2598
|
+
}
|
|
2599
|
+
.hover\\:bg-fuchsia-100\\/80:hover {
|
|
2600
|
+
background-color: rgb(250 232 255 / 0.8);
|
|
2601
|
+
}
|
|
2602
|
+
.hover\\:bg-gray-100\\/80:hover {
|
|
2603
|
+
background-color: rgb(243 244 246 / 0.8);
|
|
2604
|
+
}
|
|
2605
|
+
.hover\\:bg-gray-50\\/80:hover {
|
|
2606
|
+
background-color: rgb(249 250 251 / 0.8);
|
|
2607
|
+
}
|
|
2608
|
+
.hover\\:bg-gray-900\\/80:hover {
|
|
2609
|
+
background-color: rgb(17 24 39 / 0.8);
|
|
2610
|
+
}
|
|
2181
2611
|
.hover\\:bg-green-100\\/80:hover {
|
|
2182
2612
|
background-color: rgb(220 252 231 / 0.8);
|
|
2183
2613
|
}
|
|
2614
|
+
.hover\\:bg-indigo-100\\/80:hover {
|
|
2615
|
+
background-color: rgb(224 231 255 / 0.8);
|
|
2616
|
+
}
|
|
2617
|
+
.hover\\:bg-lime-100\\/80:hover {
|
|
2618
|
+
background-color: rgb(236 252 203 / 0.8);
|
|
2619
|
+
}
|
|
2184
2620
|
.hover\\:bg-muted:hover {
|
|
2185
2621
|
background-color: hsl(var(--muted));
|
|
2186
2622
|
}
|
|
2187
|
-
.hover\\:bg-muted\\/
|
|
2188
|
-
background-color: hsl(var(--muted) / 0.
|
|
2623
|
+
.hover\\:bg-muted\\/5:hover {
|
|
2624
|
+
background-color: hsl(var(--muted) / 0.05);
|
|
2189
2625
|
}
|
|
2190
2626
|
.hover\\:bg-muted\\/50:hover {
|
|
2191
2627
|
background-color: hsl(var(--muted) / 0.5);
|
|
2192
2628
|
}
|
|
2193
|
-
.hover\\:bg-
|
|
2194
|
-
background-color:
|
|
2629
|
+
.hover\\:bg-neutral-100\\/80:hover {
|
|
2630
|
+
background-color: rgb(245 245 245 / 0.8);
|
|
2195
2631
|
}
|
|
2196
|
-
.hover\\:bg-
|
|
2197
|
-
background-color:
|
|
2632
|
+
.hover\\:bg-orange-100\\/80:hover {
|
|
2633
|
+
background-color: rgb(255 237 213 / 0.8);
|
|
2634
|
+
}
|
|
2635
|
+
.hover\\:bg-pink-100\\/80:hover {
|
|
2636
|
+
background-color: rgb(252 231 243 / 0.8);
|
|
2198
2637
|
}
|
|
2199
2638
|
.hover\\:bg-primary\\/80:hover {
|
|
2200
2639
|
background-color: hsl(var(--primary) / 0.8);
|
|
@@ -2208,6 +2647,9 @@ svg.icon {
|
|
|
2208
2647
|
.hover\\:bg-red-100\\/80:hover {
|
|
2209
2648
|
background-color: rgb(254 226 226 / 0.8);
|
|
2210
2649
|
}
|
|
2650
|
+
.hover\\:bg-rose-100\\/80:hover {
|
|
2651
|
+
background-color: rgb(255 228 230 / 0.8);
|
|
2652
|
+
}
|
|
2211
2653
|
.hover\\:bg-secondary:hover {
|
|
2212
2654
|
background-color: hsl(var(--secondary));
|
|
2213
2655
|
}
|
|
@@ -2217,14 +2659,38 @@ svg.icon {
|
|
|
2217
2659
|
.hover\\:bg-sidebar-accent:hover {
|
|
2218
2660
|
background-color: hsl(var(--sidebar-accent));
|
|
2219
2661
|
}
|
|
2662
|
+
.hover\\:bg-sky-100\\/80:hover {
|
|
2663
|
+
background-color: rgb(224 242 254 / 0.8);
|
|
2664
|
+
}
|
|
2665
|
+
.hover\\:bg-slate-100\\/80:hover {
|
|
2666
|
+
background-color: rgb(241 245 249 / 0.8);
|
|
2667
|
+
}
|
|
2668
|
+
.hover\\:bg-stone-100\\/80:hover {
|
|
2669
|
+
background-color: rgb(245 245 244 / 0.8);
|
|
2670
|
+
}
|
|
2671
|
+
.hover\\:bg-teal-100\\/80:hover {
|
|
2672
|
+
background-color: rgb(204 251 241 / 0.8);
|
|
2673
|
+
}
|
|
2674
|
+
.hover\\:bg-violet-100\\/80:hover {
|
|
2675
|
+
background-color: rgb(237 233 254 / 0.8);
|
|
2676
|
+
}
|
|
2220
2677
|
.hover\\:bg-violet-300:hover {
|
|
2221
2678
|
--tw-bg-opacity: 1;
|
|
2222
2679
|
background-color: rgb(196 181 253 / var(--tw-bg-opacity, 1));
|
|
2223
2680
|
}
|
|
2681
|
+
.hover\\:bg-yellow-100\\/80:hover {
|
|
2682
|
+
background-color: rgb(254 249 195 / 0.8);
|
|
2683
|
+
}
|
|
2684
|
+
.hover\\:bg-yellow-50\\/80:hover {
|
|
2685
|
+
background-color: rgb(254 252 232 / 0.8);
|
|
2686
|
+
}
|
|
2224
2687
|
.hover\\:bg-zinc-100:hover {
|
|
2225
2688
|
--tw-bg-opacity: 1;
|
|
2226
2689
|
background-color: rgb(244 244 245 / var(--tw-bg-opacity, 1));
|
|
2227
2690
|
}
|
|
2691
|
+
.hover\\:bg-zinc-100\\/80:hover {
|
|
2692
|
+
background-color: rgb(244 244 245 / 0.8);
|
|
2693
|
+
}
|
|
2228
2694
|
.hover\\:text-accent-foreground:hover {
|
|
2229
2695
|
color: hsl(var(--accent-foreground));
|
|
2230
2696
|
}
|
|
@@ -2360,6 +2826,9 @@ svg.icon {
|
|
|
2360
2826
|
.group\\/menu-item:focus-within .group-focus-within\\/menu-item\\:opacity-100 {
|
|
2361
2827
|
opacity: 1;
|
|
2362
2828
|
}
|
|
2829
|
+
.group:hover .group-hover\\:text-foreground {
|
|
2830
|
+
color: hsl(var(--foreground));
|
|
2831
|
+
}
|
|
2363
2832
|
.group\\/item:hover .group-hover\\/item\\:opacity-100 {
|
|
2364
2833
|
opacity: 1;
|
|
2365
2834
|
}
|
|
@@ -2991,12 +3460,34 @@ svg.icon {
|
|
|
2991
3460
|
--tw-border-opacity: 1;
|
|
2992
3461
|
border-color: rgb(22 101 52 / var(--tw-border-opacity, 1));
|
|
2993
3462
|
}
|
|
3463
|
+
.dark\\:bg-amber-900\\/30:is(.dark *) {
|
|
3464
|
+
background-color: rgb(120 53 15 / 0.3);
|
|
3465
|
+
}
|
|
2994
3466
|
.dark\\:bg-amber-900\\/50:is(.dark *) {
|
|
2995
3467
|
background-color: rgb(120 53 15 / 0.5);
|
|
2996
3468
|
}
|
|
2997
3469
|
.dark\\:bg-blue-900\\/50:is(.dark *) {
|
|
2998
3470
|
background-color: rgb(30 58 138 / 0.5);
|
|
2999
3471
|
}
|
|
3472
|
+
.dark\\:bg-cyan-900\\/50:is(.dark *) {
|
|
3473
|
+
background-color: rgb(22 78 99 / 0.5);
|
|
3474
|
+
}
|
|
3475
|
+
.dark\\:bg-emerald-900\\/50:is(.dark *) {
|
|
3476
|
+
background-color: rgb(6 78 59 / 0.5);
|
|
3477
|
+
}
|
|
3478
|
+
.dark\\:bg-fuchsia-900\\/50:is(.dark *) {
|
|
3479
|
+
background-color: rgb(112 26 117 / 0.5);
|
|
3480
|
+
}
|
|
3481
|
+
.dark\\:bg-gray-100:is(.dark *) {
|
|
3482
|
+
--tw-bg-opacity: 1;
|
|
3483
|
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
|
|
3484
|
+
}
|
|
3485
|
+
.dark\\:bg-gray-900\\/30:is(.dark *) {
|
|
3486
|
+
background-color: rgb(17 24 39 / 0.3);
|
|
3487
|
+
}
|
|
3488
|
+
.dark\\:bg-gray-900\\/50:is(.dark *) {
|
|
3489
|
+
background-color: rgb(17 24 39 / 0.5);
|
|
3490
|
+
}
|
|
3000
3491
|
.dark\\:bg-green-900\\/50:is(.dark *) {
|
|
3001
3492
|
background-color: rgb(20 83 45 / 0.5);
|
|
3002
3493
|
}
|
|
@@ -3004,47 +3495,193 @@ svg.icon {
|
|
|
3004
3495
|
--tw-bg-opacity: 1;
|
|
3005
3496
|
background-color: rgb(5 46 22 / var(--tw-bg-opacity, 1));
|
|
3006
3497
|
}
|
|
3498
|
+
.dark\\:bg-indigo-900\\/50:is(.dark *) {
|
|
3499
|
+
background-color: rgb(49 46 129 / 0.5);
|
|
3500
|
+
}
|
|
3501
|
+
.dark\\:bg-lime-900\\/50:is(.dark *) {
|
|
3502
|
+
background-color: rgb(54 83 20 / 0.5);
|
|
3503
|
+
}
|
|
3007
3504
|
.dark\\:bg-muted:is(.dark *) {
|
|
3008
3505
|
background-color: hsl(var(--muted));
|
|
3009
3506
|
}
|
|
3507
|
+
.dark\\:bg-neutral-900\\/50:is(.dark *) {
|
|
3508
|
+
background-color: rgb(23 23 23 / 0.5);
|
|
3509
|
+
}
|
|
3510
|
+
.dark\\:bg-orange-900\\/50:is(.dark *) {
|
|
3511
|
+
background-color: rgb(124 45 18 / 0.5);
|
|
3512
|
+
}
|
|
3513
|
+
.dark\\:bg-pink-900\\/50:is(.dark *) {
|
|
3514
|
+
background-color: rgb(131 24 67 / 0.5);
|
|
3515
|
+
}
|
|
3010
3516
|
.dark\\:bg-purple-900\\/50:is(.dark *) {
|
|
3011
3517
|
background-color: rgb(88 28 135 / 0.5);
|
|
3012
3518
|
}
|
|
3013
3519
|
.dark\\:bg-red-900\\/50:is(.dark *) {
|
|
3014
3520
|
background-color: rgb(127 29 29 / 0.5);
|
|
3015
3521
|
}
|
|
3522
|
+
.dark\\:bg-rose-900\\/50:is(.dark *) {
|
|
3523
|
+
background-color: rgb(136 19 55 / 0.5);
|
|
3524
|
+
}
|
|
3525
|
+
.dark\\:bg-sky-900\\/50:is(.dark *) {
|
|
3526
|
+
background-color: rgb(12 74 110 / 0.5);
|
|
3527
|
+
}
|
|
3528
|
+
.dark\\:bg-slate-900\\/50:is(.dark *) {
|
|
3529
|
+
background-color: rgb(15 23 42 / 0.5);
|
|
3530
|
+
}
|
|
3531
|
+
.dark\\:bg-stone-900\\/50:is(.dark *) {
|
|
3532
|
+
background-color: rgb(28 25 23 / 0.5);
|
|
3533
|
+
}
|
|
3534
|
+
.dark\\:bg-teal-900\\/50:is(.dark *) {
|
|
3535
|
+
background-color: rgb(19 78 74 / 0.5);
|
|
3536
|
+
}
|
|
3537
|
+
.dark\\:bg-violet-900\\/50:is(.dark *) {
|
|
3538
|
+
background-color: rgb(76 29 149 / 0.5);
|
|
3539
|
+
}
|
|
3016
3540
|
.dark\\:bg-white\\/5:is(.dark *) {
|
|
3017
3541
|
background-color: rgb(255 255 255 / 0.05);
|
|
3018
3542
|
}
|
|
3543
|
+
.dark\\:bg-yellow-900\\/30:is(.dark *) {
|
|
3544
|
+
background-color: rgb(113 63 18 / 0.3);
|
|
3545
|
+
}
|
|
3546
|
+
.dark\\:bg-yellow-900\\/50:is(.dark *) {
|
|
3547
|
+
background-color: rgb(113 63 18 / 0.5);
|
|
3548
|
+
}
|
|
3019
3549
|
.dark\\:bg-zinc-600:is(.dark *) {
|
|
3020
3550
|
--tw-bg-opacity: 1;
|
|
3021
3551
|
background-color: rgb(82 82 91 / var(--tw-bg-opacity, 1));
|
|
3022
3552
|
}
|
|
3553
|
+
.dark\\:bg-zinc-900\\/50:is(.dark *) {
|
|
3554
|
+
background-color: rgb(24 24 27 / 0.5);
|
|
3555
|
+
}
|
|
3556
|
+
.dark\\:text-amber-200:is(.dark *) {
|
|
3557
|
+
--tw-text-opacity: 1;
|
|
3558
|
+
color: rgb(253 230 138 / var(--tw-text-opacity, 1));
|
|
3559
|
+
}
|
|
3023
3560
|
.dark\\:text-amber-300:is(.dark *) {
|
|
3024
3561
|
--tw-text-opacity: 1;
|
|
3025
3562
|
color: rgb(252 211 77 / var(--tw-text-opacity, 1));
|
|
3026
3563
|
}
|
|
3564
|
+
.dark\\:text-blue-200:is(.dark *) {
|
|
3565
|
+
--tw-text-opacity: 1;
|
|
3566
|
+
color: rgb(191 219 254 / var(--tw-text-opacity, 1));
|
|
3567
|
+
}
|
|
3027
3568
|
.dark\\:text-blue-300:is(.dark *) {
|
|
3028
3569
|
--tw-text-opacity: 1;
|
|
3029
3570
|
color: rgb(147 197 253 / var(--tw-text-opacity, 1));
|
|
3030
3571
|
}
|
|
3031
|
-
.dark\\:text-
|
|
3572
|
+
.dark\\:text-cyan-300:is(.dark *) {
|
|
3032
3573
|
--tw-text-opacity: 1;
|
|
3033
|
-
color: rgb(
|
|
3574
|
+
color: rgb(103 232 249 / var(--tw-text-opacity, 1));
|
|
3034
3575
|
}
|
|
3035
|
-
.dark\\:text-
|
|
3576
|
+
.dark\\:text-emerald-300:is(.dark *) {
|
|
3036
3577
|
--tw-text-opacity: 1;
|
|
3037
|
-
color: rgb(
|
|
3578
|
+
color: rgb(110 231 183 / var(--tw-text-opacity, 1));
|
|
3038
3579
|
}
|
|
3039
|
-
.dark\\:text-
|
|
3580
|
+
.dark\\:text-fuchsia-300:is(.dark *) {
|
|
3040
3581
|
--tw-text-opacity: 1;
|
|
3041
|
-
color: rgb(
|
|
3582
|
+
color: rgb(240 171 252 / var(--tw-text-opacity, 1));
|
|
3042
3583
|
}
|
|
3043
|
-
.dark\\:text-
|
|
3584
|
+
.dark\\:text-gray-100:is(.dark *) {
|
|
3044
3585
|
--tw-text-opacity: 1;
|
|
3045
|
-
color: rgb(
|
|
3586
|
+
color: rgb(243 244 246 / var(--tw-text-opacity, 1));
|
|
3046
3587
|
}
|
|
3047
|
-
.dark\\:
|
|
3588
|
+
.dark\\:text-gray-200:is(.dark *) {
|
|
3589
|
+
--tw-text-opacity: 1;
|
|
3590
|
+
color: rgb(229 231 235 / var(--tw-text-opacity, 1));
|
|
3591
|
+
}
|
|
3592
|
+
.dark\\:text-gray-300:is(.dark *) {
|
|
3593
|
+
--tw-text-opacity: 1;
|
|
3594
|
+
color: rgb(209 213 219 / var(--tw-text-opacity, 1));
|
|
3595
|
+
}
|
|
3596
|
+
.dark\\:text-gray-900:is(.dark *) {
|
|
3597
|
+
--tw-text-opacity: 1;
|
|
3598
|
+
color: rgb(17 24 39 / var(--tw-text-opacity, 1));
|
|
3599
|
+
}
|
|
3600
|
+
.dark\\:text-green-200:is(.dark *) {
|
|
3601
|
+
--tw-text-opacity: 1;
|
|
3602
|
+
color: rgb(187 247 208 / var(--tw-text-opacity, 1));
|
|
3603
|
+
}
|
|
3604
|
+
.dark\\:text-green-300:is(.dark *) {
|
|
3605
|
+
--tw-text-opacity: 1;
|
|
3606
|
+
color: rgb(134 239 172 / var(--tw-text-opacity, 1));
|
|
3607
|
+
}
|
|
3608
|
+
.dark\\:text-indigo-300:is(.dark *) {
|
|
3609
|
+
--tw-text-opacity: 1;
|
|
3610
|
+
color: rgb(165 180 252 / var(--tw-text-opacity, 1));
|
|
3611
|
+
}
|
|
3612
|
+
.dark\\:text-lime-200:is(.dark *) {
|
|
3613
|
+
--tw-text-opacity: 1;
|
|
3614
|
+
color: rgb(217 249 157 / var(--tw-text-opacity, 1));
|
|
3615
|
+
}
|
|
3616
|
+
.dark\\:text-lime-300:is(.dark *) {
|
|
3617
|
+
--tw-text-opacity: 1;
|
|
3618
|
+
color: rgb(190 242 100 / var(--tw-text-opacity, 1));
|
|
3619
|
+
}
|
|
3620
|
+
.dark\\:text-neutral-300:is(.dark *) {
|
|
3621
|
+
--tw-text-opacity: 1;
|
|
3622
|
+
color: rgb(212 212 212 / var(--tw-text-opacity, 1));
|
|
3623
|
+
}
|
|
3624
|
+
.dark\\:text-orange-200:is(.dark *) {
|
|
3625
|
+
--tw-text-opacity: 1;
|
|
3626
|
+
color: rgb(254 215 170 / var(--tw-text-opacity, 1));
|
|
3627
|
+
}
|
|
3628
|
+
.dark\\:text-orange-300:is(.dark *) {
|
|
3629
|
+
--tw-text-opacity: 1;
|
|
3630
|
+
color: rgb(253 186 116 / var(--tw-text-opacity, 1));
|
|
3631
|
+
}
|
|
3632
|
+
.dark\\:text-pink-300:is(.dark *) {
|
|
3633
|
+
--tw-text-opacity: 1;
|
|
3634
|
+
color: rgb(249 168 212 / var(--tw-text-opacity, 1));
|
|
3635
|
+
}
|
|
3636
|
+
.dark\\:text-purple-300:is(.dark *) {
|
|
3637
|
+
--tw-text-opacity: 1;
|
|
3638
|
+
color: rgb(216 180 254 / var(--tw-text-opacity, 1));
|
|
3639
|
+
}
|
|
3640
|
+
.dark\\:text-red-200:is(.dark *) {
|
|
3641
|
+
--tw-text-opacity: 1;
|
|
3642
|
+
color: rgb(254 202 202 / var(--tw-text-opacity, 1));
|
|
3643
|
+
}
|
|
3644
|
+
.dark\\:text-red-300:is(.dark *) {
|
|
3645
|
+
--tw-text-opacity: 1;
|
|
3646
|
+
color: rgb(252 165 165 / var(--tw-text-opacity, 1));
|
|
3647
|
+
}
|
|
3648
|
+
.dark\\:text-rose-300:is(.dark *) {
|
|
3649
|
+
--tw-text-opacity: 1;
|
|
3650
|
+
color: rgb(253 164 175 / var(--tw-text-opacity, 1));
|
|
3651
|
+
}
|
|
3652
|
+
.dark\\:text-sky-300:is(.dark *) {
|
|
3653
|
+
--tw-text-opacity: 1;
|
|
3654
|
+
color: rgb(125 211 252 / var(--tw-text-opacity, 1));
|
|
3655
|
+
}
|
|
3656
|
+
.dark\\:text-slate-300:is(.dark *) {
|
|
3657
|
+
--tw-text-opacity: 1;
|
|
3658
|
+
color: rgb(203 213 225 / var(--tw-text-opacity, 1));
|
|
3659
|
+
}
|
|
3660
|
+
.dark\\:text-stone-300:is(.dark *) {
|
|
3661
|
+
--tw-text-opacity: 1;
|
|
3662
|
+
color: rgb(214 211 209 / var(--tw-text-opacity, 1));
|
|
3663
|
+
}
|
|
3664
|
+
.dark\\:text-teal-300:is(.dark *) {
|
|
3665
|
+
--tw-text-opacity: 1;
|
|
3666
|
+
color: rgb(94 234 212 / var(--tw-text-opacity, 1));
|
|
3667
|
+
}
|
|
3668
|
+
.dark\\:text-violet-300:is(.dark *) {
|
|
3669
|
+
--tw-text-opacity: 1;
|
|
3670
|
+
color: rgb(196 181 253 / var(--tw-text-opacity, 1));
|
|
3671
|
+
}
|
|
3672
|
+
.dark\\:text-yellow-200:is(.dark *) {
|
|
3673
|
+
--tw-text-opacity: 1;
|
|
3674
|
+
color: rgb(254 240 138 / var(--tw-text-opacity, 1));
|
|
3675
|
+
}
|
|
3676
|
+
.dark\\:text-yellow-300:is(.dark *) {
|
|
3677
|
+
--tw-text-opacity: 1;
|
|
3678
|
+
color: rgb(253 224 71 / var(--tw-text-opacity, 1));
|
|
3679
|
+
}
|
|
3680
|
+
.dark\\:text-zinc-300:is(.dark *) {
|
|
3681
|
+
--tw-text-opacity: 1;
|
|
3682
|
+
color: rgb(212 212 216 / var(--tw-text-opacity, 1));
|
|
3683
|
+
}
|
|
3684
|
+
.dark\\:hover\\:bg-white\\/10:hover:is(.dark *) {
|
|
3048
3685
|
background-color: rgb(255 255 255 / 0.1);
|
|
3049
3686
|
}
|
|
3050
3687
|
.dark\\:hover\\:bg-zinc-500:hover:is(.dark *) {
|
|
@@ -3415,7 +4052,172 @@ svg.icon {
|
|
|
3415
4052
|
`);
|
|
3416
4053
|
|
|
3417
4054
|
// src/components/DataViews.tsx
|
|
3418
|
-
import { useState as
|
|
4055
|
+
import { useState as useState6, useEffect as useEffect2 } from "react";
|
|
4056
|
+
|
|
4057
|
+
// src/lib/colors.ts
|
|
4058
|
+
var PRESET_COLORS = [
|
|
4059
|
+
{ name: "Red", value: "red" },
|
|
4060
|
+
{ name: "Blue", value: "blue" },
|
|
4061
|
+
{ name: "Green", value: "green" },
|
|
4062
|
+
{ name: "Yellow", value: "yellow" },
|
|
4063
|
+
{ name: "Orange", value: "orange" },
|
|
4064
|
+
{ name: "Purple", value: "purple" },
|
|
4065
|
+
{ name: "Pink", value: "pink" },
|
|
4066
|
+
{ name: "Brown", value: "brown" },
|
|
4067
|
+
{ name: "Gray", value: "gray" },
|
|
4068
|
+
{ name: "Black", value: "black" },
|
|
4069
|
+
{ name: "White", value: "white" },
|
|
4070
|
+
{ name: "Cyan", value: "cyan" },
|
|
4071
|
+
{ name: "Magenta", value: "magenta" },
|
|
4072
|
+
{ name: "Lime", value: "lime" },
|
|
4073
|
+
{ name: "Indigo", value: "indigo" },
|
|
4074
|
+
{ name: "Teal", value: "teal" },
|
|
4075
|
+
{ name: "Violet", value: "violet" },
|
|
4076
|
+
{ name: "Rose", value: "rose" },
|
|
4077
|
+
{ name: "Fuchsia", value: "fuchsia" },
|
|
4078
|
+
{ name: "Sky", value: "sky" },
|
|
4079
|
+
{ name: "Emerald", value: "emerald" },
|
|
4080
|
+
{ name: "Amber", value: "amber" },
|
|
4081
|
+
{ name: "Slate", value: "slate" },
|
|
4082
|
+
{ name: "Zinc", value: "zinc" },
|
|
4083
|
+
{ name: "Stone", value: "stone" },
|
|
4084
|
+
{ name: "Neutral", value: "neutral" },
|
|
4085
|
+
{ name: "Crimson", value: "crimson" },
|
|
4086
|
+
{ name: "Navy", value: "navy" },
|
|
4087
|
+
{ name: "Maroon", value: "maroon" },
|
|
4088
|
+
{ name: "Olive", value: "olive" },
|
|
4089
|
+
{ name: "Coral", value: "coral" },
|
|
4090
|
+
{ name: "Salmon", value: "salmon" },
|
|
4091
|
+
{ name: "Gold", value: "gold" },
|
|
4092
|
+
{ name: "Silver", value: "silver" },
|
|
4093
|
+
{ name: "Turquoise", value: "turquoise" },
|
|
4094
|
+
{ name: "Aqua", value: "aqua" },
|
|
4095
|
+
{ name: "Mint", value: "mint" },
|
|
4096
|
+
{ name: "Lavender", value: "lavender" },
|
|
4097
|
+
{ name: "Peach", value: "peach" },
|
|
4098
|
+
{ name: "Beige", value: "beige" },
|
|
4099
|
+
{ name: "Ivory", value: "ivory" },
|
|
4100
|
+
{ name: "Khaki", value: "khaki" },
|
|
4101
|
+
{ name: "Plum", value: "plum" },
|
|
4102
|
+
{ name: "Orchid", value: "orchid" },
|
|
4103
|
+
{ name: "Tan", value: "tan" },
|
|
4104
|
+
{ name: "Chocolate", value: "chocolate" },
|
|
4105
|
+
{ name: "Sienna", value: "sienna" },
|
|
4106
|
+
{ name: "Burgundy", value: "burgundy" },
|
|
4107
|
+
{ name: "Mustard", value: "mustard" },
|
|
4108
|
+
{ name: "Charcoal", value: "charcoal" }
|
|
4109
|
+
];
|
|
4110
|
+
var BADGE_COLOR_MAP = {
|
|
4111
|
+
gray: "bg-gray-100 text-gray-700 dark:bg-gray-900/50 dark:text-gray-300 hover:bg-gray-100/80",
|
|
4112
|
+
slate: "bg-slate-100 text-slate-700 dark:bg-slate-900/50 dark:text-slate-300 hover:bg-slate-100/80",
|
|
4113
|
+
zinc: "bg-zinc-100 text-zinc-700 dark:bg-zinc-900/50 dark:text-zinc-300 hover:bg-zinc-100/80",
|
|
4114
|
+
neutral: "bg-neutral-100 text-neutral-700 dark:bg-neutral-900/50 dark:text-neutral-300 hover:bg-neutral-100/80",
|
|
4115
|
+
stone: "bg-stone-100 text-stone-700 dark:bg-stone-900/50 dark:text-stone-300 hover:bg-stone-100/80",
|
|
4116
|
+
red: "bg-red-100 text-red-700 dark:bg-red-900/50 dark:text-red-300 hover:bg-red-100/80",
|
|
4117
|
+
orange: "bg-orange-100 text-orange-700 dark:bg-orange-900/50 dark:text-orange-300 hover:bg-orange-100/80",
|
|
4118
|
+
amber: "bg-amber-100 text-amber-700 dark:bg-amber-900/50 dark:text-amber-300 hover:bg-amber-100/80",
|
|
4119
|
+
yellow: "bg-yellow-100 text-yellow-700 dark:bg-yellow-900/50 dark:text-yellow-300 hover:bg-yellow-100/80",
|
|
4120
|
+
lime: "bg-lime-100 text-lime-700 dark:bg-lime-900/50 dark:text-lime-300 hover:bg-lime-100/80",
|
|
4121
|
+
green: "bg-green-100 text-green-700 dark:bg-green-900/50 dark:text-green-300 hover:bg-green-100/80",
|
|
4122
|
+
emerald: "bg-emerald-100 text-emerald-700 dark:bg-emerald-900/50 dark:text-emerald-300 hover:bg-emerald-100/80",
|
|
4123
|
+
teal: "bg-teal-100 text-teal-700 dark:bg-teal-900/50 dark:text-teal-300 hover:bg-teal-100/80",
|
|
4124
|
+
cyan: "bg-cyan-100 text-cyan-700 dark:bg-cyan-900/50 dark:text-cyan-300 hover:bg-cyan-100/80",
|
|
4125
|
+
sky: "bg-sky-100 text-sky-700 dark:bg-sky-900/50 dark:text-sky-300 hover:bg-sky-100/80",
|
|
4126
|
+
blue: "bg-blue-100 text-blue-700 dark:bg-blue-900/50 dark:text-blue-300 hover:bg-blue-100/80",
|
|
4127
|
+
indigo: "bg-indigo-100 text-indigo-700 dark:bg-indigo-900/50 dark:text-indigo-300 hover:bg-indigo-100/80",
|
|
4128
|
+
violet: "bg-violet-100 text-violet-700 dark:bg-violet-900/50 dark:text-violet-300 hover:bg-violet-100/80",
|
|
4129
|
+
purple: "bg-purple-100 text-purple-700 dark:bg-purple-900/50 dark:text-purple-300 hover:bg-purple-100/80",
|
|
4130
|
+
fuchsia: "bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-900/50 dark:text-fuchsia-300 hover:bg-fuchsia-100/80",
|
|
4131
|
+
pink: "bg-pink-100 text-pink-700 dark:bg-pink-900/50 dark:text-pink-300 hover:bg-pink-100/80",
|
|
4132
|
+
rose: "bg-rose-100 text-rose-700 dark:bg-rose-900/50 dark:text-rose-300 hover:bg-rose-100/80",
|
|
4133
|
+
brown: "bg-amber-100 text-amber-800 dark:bg-amber-900/50 dark:text-amber-200 hover:bg-amber-100/80",
|
|
4134
|
+
// Additional colors
|
|
4135
|
+
crimson: "bg-red-100 text-red-800 dark:bg-red-900/50 dark:text-red-200 hover:bg-red-100/80",
|
|
4136
|
+
navy: "bg-blue-100 text-blue-900 dark:bg-blue-900/50 dark:text-blue-200 hover:bg-blue-100/80",
|
|
4137
|
+
maroon: "bg-red-100 text-red-900 dark:bg-red-900/50 dark:text-red-200 hover:bg-red-100/80",
|
|
4138
|
+
olive: "bg-lime-100 text-lime-800 dark:bg-lime-900/50 dark:text-lime-200 hover:bg-lime-100/80",
|
|
4139
|
+
coral: "bg-orange-100 text-orange-600 dark:bg-orange-900/50 dark:text-orange-300 hover:bg-orange-100/80",
|
|
4140
|
+
salmon: "bg-pink-100 text-pink-600 dark:bg-pink-900/50 dark:text-pink-300 hover:bg-pink-100/80",
|
|
4141
|
+
gold: "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/50 dark:text-yellow-200 hover:bg-yellow-100/80",
|
|
4142
|
+
silver: "bg-gray-100 text-gray-600 dark:bg-gray-900/50 dark:text-gray-300 hover:bg-gray-100/80",
|
|
4143
|
+
turquoise: "bg-teal-100 text-teal-600 dark:bg-teal-900/50 dark:text-teal-300 hover:bg-teal-100/80",
|
|
4144
|
+
aqua: "bg-cyan-100 text-cyan-600 dark:bg-cyan-900/50 dark:text-cyan-300 hover:bg-cyan-100/80",
|
|
4145
|
+
mint: "bg-emerald-100 text-emerald-600 dark:bg-emerald-900/50 dark:text-emerald-300 hover:bg-emerald-100/80",
|
|
4146
|
+
lavender: "bg-purple-100 text-purple-600 dark:bg-purple-900/50 dark:text-purple-300 hover:bg-purple-100/80",
|
|
4147
|
+
peach: "bg-orange-100 text-orange-500 dark:bg-orange-900/50 dark:text-orange-300 hover:bg-orange-100/80",
|
|
4148
|
+
beige: "bg-amber-50 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300 hover:bg-amber-50/80",
|
|
4149
|
+
ivory: "bg-yellow-50 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-300 hover:bg-yellow-50/80",
|
|
4150
|
+
khaki: "bg-yellow-100 text-yellow-700 dark:bg-yellow-900/50 dark:text-yellow-300 hover:bg-yellow-100/80",
|
|
4151
|
+
plum: "bg-purple-100 text-purple-700 dark:bg-purple-900/50 dark:text-purple-300 hover:bg-purple-100/80",
|
|
4152
|
+
orchid: "bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-900/50 dark:text-fuchsia-300 hover:bg-fuchsia-100/80",
|
|
4153
|
+
tan: "bg-orange-100 text-orange-700 dark:bg-orange-900/50 dark:text-orange-300 hover:bg-orange-100/80",
|
|
4154
|
+
chocolate: "bg-amber-100 text-amber-800 dark:bg-amber-900/50 dark:text-amber-200 hover:bg-amber-100/80",
|
|
4155
|
+
sienna: "bg-orange-100 text-orange-800 dark:bg-orange-900/50 dark:text-orange-200 hover:bg-orange-100/80",
|
|
4156
|
+
burgundy: "bg-red-100 text-red-900 dark:bg-red-900/50 dark:text-red-200 hover:bg-red-100/80",
|
|
4157
|
+
mustard: "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/50 dark:text-yellow-200 hover:bg-yellow-100/80",
|
|
4158
|
+
charcoal: "bg-gray-100 text-gray-900 dark:bg-gray-900/50 dark:text-gray-200 hover:bg-gray-100/80",
|
|
4159
|
+
black: "bg-gray-900 text-gray-100 dark:bg-gray-100 dark:text-gray-900 hover:bg-gray-900/80",
|
|
4160
|
+
white: "bg-gray-50 text-gray-900 dark:bg-gray-900/30 dark:text-gray-100 hover:bg-gray-50/80",
|
|
4161
|
+
magenta: "bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-900/50 dark:text-fuchsia-300 hover:bg-fuchsia-100/80"
|
|
4162
|
+
};
|
|
4163
|
+
var DOT_COLOR_MAP = {
|
|
4164
|
+
gray: "bg-gray-400",
|
|
4165
|
+
slate: "bg-slate-400",
|
|
4166
|
+
zinc: "bg-zinc-400",
|
|
4167
|
+
neutral: "bg-neutral-400",
|
|
4168
|
+
stone: "bg-stone-400",
|
|
4169
|
+
red: "bg-red-500",
|
|
4170
|
+
orange: "bg-orange-500",
|
|
4171
|
+
amber: "bg-amber-500",
|
|
4172
|
+
yellow: "bg-yellow-500",
|
|
4173
|
+
lime: "bg-lime-500",
|
|
4174
|
+
green: "bg-green-500",
|
|
4175
|
+
emerald: "bg-emerald-500",
|
|
4176
|
+
teal: "bg-teal-500",
|
|
4177
|
+
cyan: "bg-cyan-500",
|
|
4178
|
+
sky: "bg-sky-500",
|
|
4179
|
+
blue: "bg-blue-500",
|
|
4180
|
+
indigo: "bg-indigo-500",
|
|
4181
|
+
violet: "bg-violet-500",
|
|
4182
|
+
purple: "bg-purple-500",
|
|
4183
|
+
fuchsia: "bg-fuchsia-500",
|
|
4184
|
+
pink: "bg-pink-500",
|
|
4185
|
+
rose: "bg-rose-500",
|
|
4186
|
+
brown: "bg-amber-700",
|
|
4187
|
+
crimson: "bg-red-700",
|
|
4188
|
+
navy: "bg-blue-900",
|
|
4189
|
+
maroon: "bg-red-900",
|
|
4190
|
+
olive: "bg-lime-700",
|
|
4191
|
+
coral: "bg-orange-400",
|
|
4192
|
+
salmon: "bg-pink-400",
|
|
4193
|
+
gold: "bg-yellow-600",
|
|
4194
|
+
silver: "bg-gray-400",
|
|
4195
|
+
turquoise: "bg-teal-400",
|
|
4196
|
+
aqua: "bg-cyan-400",
|
|
4197
|
+
mint: "bg-emerald-400",
|
|
4198
|
+
lavender: "bg-purple-400",
|
|
4199
|
+
peach: "bg-orange-300",
|
|
4200
|
+
beige: "bg-amber-200",
|
|
4201
|
+
ivory: "bg-yellow-100",
|
|
4202
|
+
khaki: "bg-yellow-400",
|
|
4203
|
+
plum: "bg-purple-600",
|
|
4204
|
+
orchid: "bg-fuchsia-400",
|
|
4205
|
+
tan: "bg-orange-400",
|
|
4206
|
+
chocolate: "bg-amber-700",
|
|
4207
|
+
sienna: "bg-orange-700",
|
|
4208
|
+
burgundy: "bg-red-900",
|
|
4209
|
+
mustard: "bg-yellow-700",
|
|
4210
|
+
charcoal: "bg-gray-800",
|
|
4211
|
+
black: "bg-gray-900",
|
|
4212
|
+
white: "bg-gray-100",
|
|
4213
|
+
magenta: "bg-fuchsia-600"
|
|
4214
|
+
};
|
|
4215
|
+
function getBadgeColor(color) {
|
|
4216
|
+
return BADGE_COLOR_MAP[color || "gray"] || BADGE_COLOR_MAP.gray;
|
|
4217
|
+
}
|
|
4218
|
+
function getDotColor(color) {
|
|
4219
|
+
return DOT_COLOR_MAP[color || "gray"] || DOT_COLOR_MAP.gray;
|
|
4220
|
+
}
|
|
3419
4221
|
|
|
3420
4222
|
// src/lib/schema.ts
|
|
3421
4223
|
var tableSchema = {
|
|
@@ -3521,7 +4323,8 @@ TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
|
3521
4323
|
import { LayoutGrid, Columns, Calendar as CalendarIcon, Image, FileText } from "lucide-react";
|
|
3522
4324
|
|
|
3523
4325
|
// src/components/views/GridView.tsx
|
|
3524
|
-
import {
|
|
4326
|
+
import { useState, useMemo } from "react";
|
|
4327
|
+
import { Plus, Trash2, Eye, Pencil, ArrowUpDown, Filter, X } from "lucide-react";
|
|
3525
4328
|
|
|
3526
4329
|
// src/components/ui/button.tsx
|
|
3527
4330
|
import * as React2 from "react";
|
|
@@ -3718,23 +4521,952 @@ function Badge(_a) {
|
|
|
3718
4521
|
return /* @__PURE__ */ jsx5("div", __spreadValues({ className: cn(badgeVariants({ variant }), className) }, props));
|
|
3719
4522
|
}
|
|
3720
4523
|
|
|
3721
|
-
// src/components/
|
|
4524
|
+
// src/components/ui/select.tsx
|
|
4525
|
+
import * as React5 from "react";
|
|
4526
|
+
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
4527
|
+
import { Check as Check2, ChevronDown, ChevronUp } from "lucide-react";
|
|
3722
4528
|
import { jsx as jsx6, jsxs } from "react/jsx-runtime";
|
|
3723
|
-
var
|
|
3724
|
-
|
|
3725
|
-
|
|
3726
|
-
|
|
3727
|
-
|
|
3728
|
-
|
|
3729
|
-
|
|
4529
|
+
var Select = SelectPrimitive.Root;
|
|
4530
|
+
var SelectValue = SelectPrimitive.Value;
|
|
4531
|
+
var SelectTrigger = React5.forwardRef((_a, ref) => {
|
|
4532
|
+
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
4533
|
+
return /* @__PURE__ */ jsxs(
|
|
4534
|
+
SelectPrimitive.Trigger,
|
|
4535
|
+
__spreadProps(__spreadValues({
|
|
4536
|
+
ref,
|
|
4537
|
+
className: cn(
|
|
4538
|
+
"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
|
|
4539
|
+
className
|
|
4540
|
+
)
|
|
4541
|
+
}, props), {
|
|
4542
|
+
children: [
|
|
4543
|
+
children,
|
|
4544
|
+
/* @__PURE__ */ jsx6(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx6(ChevronDown, { className: "h-4 w-4 opacity-50" }) })
|
|
4545
|
+
]
|
|
4546
|
+
})
|
|
4547
|
+
);
|
|
4548
|
+
});
|
|
4549
|
+
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
4550
|
+
var SelectScrollUpButton = React5.forwardRef((_a, ref) => {
|
|
4551
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4552
|
+
return /* @__PURE__ */ jsx6(
|
|
4553
|
+
SelectPrimitive.ScrollUpButton,
|
|
4554
|
+
__spreadProps(__spreadValues({
|
|
4555
|
+
ref,
|
|
4556
|
+
className: cn(
|
|
4557
|
+
"flex cursor-default items-center justify-center py-1",
|
|
4558
|
+
className
|
|
4559
|
+
)
|
|
4560
|
+
}, props), {
|
|
4561
|
+
children: /* @__PURE__ */ jsx6(ChevronUp, { className: "h-4 w-4" })
|
|
4562
|
+
})
|
|
4563
|
+
);
|
|
4564
|
+
});
|
|
4565
|
+
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
4566
|
+
var SelectScrollDownButton = React5.forwardRef((_a, ref) => {
|
|
4567
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4568
|
+
return /* @__PURE__ */ jsx6(
|
|
4569
|
+
SelectPrimitive.ScrollDownButton,
|
|
4570
|
+
__spreadProps(__spreadValues({
|
|
4571
|
+
ref,
|
|
4572
|
+
className: cn(
|
|
4573
|
+
"flex cursor-default items-center justify-center py-1",
|
|
4574
|
+
className
|
|
4575
|
+
)
|
|
4576
|
+
}, props), {
|
|
4577
|
+
children: /* @__PURE__ */ jsx6(ChevronDown, { className: "h-4 w-4" })
|
|
4578
|
+
})
|
|
4579
|
+
);
|
|
4580
|
+
});
|
|
4581
|
+
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
4582
|
+
var SelectContent = React5.forwardRef((_a, ref) => {
|
|
4583
|
+
var _b = _a, { className, children, position = "popper" } = _b, props = __objRest(_b, ["className", "children", "position"]);
|
|
4584
|
+
return /* @__PURE__ */ jsx6(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
|
|
4585
|
+
SelectPrimitive.Content,
|
|
4586
|
+
__spreadProps(__spreadValues({
|
|
4587
|
+
ref,
|
|
4588
|
+
className: cn(
|
|
4589
|
+
"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",
|
|
4590
|
+
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
4591
|
+
className
|
|
4592
|
+
),
|
|
4593
|
+
position
|
|
4594
|
+
}, props), {
|
|
4595
|
+
children: [
|
|
4596
|
+
/* @__PURE__ */ jsx6(SelectScrollUpButton, {}),
|
|
4597
|
+
/* @__PURE__ */ jsx6(
|
|
4598
|
+
SelectPrimitive.Viewport,
|
|
4599
|
+
{
|
|
4600
|
+
className: cn(
|
|
4601
|
+
"p-1",
|
|
4602
|
+
position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
|
|
4603
|
+
),
|
|
4604
|
+
children
|
|
4605
|
+
}
|
|
4606
|
+
),
|
|
4607
|
+
/* @__PURE__ */ jsx6(SelectScrollDownButton, {})
|
|
4608
|
+
]
|
|
4609
|
+
})
|
|
4610
|
+
) });
|
|
4611
|
+
});
|
|
4612
|
+
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
4613
|
+
var SelectLabel = React5.forwardRef((_a, ref) => {
|
|
4614
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4615
|
+
return /* @__PURE__ */ jsx6(
|
|
4616
|
+
SelectPrimitive.Label,
|
|
4617
|
+
__spreadValues({
|
|
4618
|
+
ref,
|
|
4619
|
+
className: cn("px-2 py-1.5 text-sm font-semibold", className)
|
|
4620
|
+
}, props)
|
|
4621
|
+
);
|
|
4622
|
+
});
|
|
4623
|
+
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
4624
|
+
var SelectItem = React5.forwardRef((_a, ref) => {
|
|
4625
|
+
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
4626
|
+
return /* @__PURE__ */ jsxs(
|
|
4627
|
+
SelectPrimitive.Item,
|
|
4628
|
+
__spreadProps(__spreadValues({
|
|
4629
|
+
ref,
|
|
4630
|
+
className: cn(
|
|
4631
|
+
"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
4632
|
+
className
|
|
4633
|
+
)
|
|
4634
|
+
}, props), {
|
|
4635
|
+
children: [
|
|
4636
|
+
/* @__PURE__ */ jsx6("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx6(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx6(Check2, { className: "h-4 w-4" }) }) }),
|
|
4637
|
+
/* @__PURE__ */ jsx6(SelectPrimitive.ItemText, { children })
|
|
4638
|
+
]
|
|
4639
|
+
})
|
|
4640
|
+
);
|
|
4641
|
+
});
|
|
4642
|
+
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
4643
|
+
var SelectSeparator = React5.forwardRef((_a, ref) => {
|
|
4644
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4645
|
+
return /* @__PURE__ */ jsx6(
|
|
4646
|
+
SelectPrimitive.Separator,
|
|
4647
|
+
__spreadValues({
|
|
4648
|
+
ref,
|
|
4649
|
+
className: cn("-mx-1 my-1 h-px bg-muted", className)
|
|
4650
|
+
}, props)
|
|
4651
|
+
);
|
|
4652
|
+
});
|
|
4653
|
+
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
4654
|
+
|
|
4655
|
+
// src/components/ui/input.tsx
|
|
4656
|
+
import * as React6 from "react";
|
|
4657
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
4658
|
+
var Input = React6.forwardRef(
|
|
4659
|
+
(_a, ref) => {
|
|
4660
|
+
var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
|
|
4661
|
+
return /* @__PURE__ */ jsx7(
|
|
4662
|
+
"input",
|
|
4663
|
+
__spreadValues({
|
|
4664
|
+
type,
|
|
4665
|
+
className: cn(
|
|
4666
|
+
"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
|
4667
|
+
className
|
|
4668
|
+
),
|
|
4669
|
+
ref
|
|
4670
|
+
}, props)
|
|
4671
|
+
);
|
|
4672
|
+
}
|
|
4673
|
+
);
|
|
4674
|
+
Input.displayName = "Input";
|
|
4675
|
+
|
|
4676
|
+
// src/components/I18nProvider.tsx
|
|
4677
|
+
import { createContext, useContext } from "react";
|
|
4678
|
+
|
|
4679
|
+
// src/lib/i18n.ts
|
|
4680
|
+
var LANGUAGES = {
|
|
4681
|
+
en: { name: "English", dir: "ltr" },
|
|
4682
|
+
es: { name: "Espa\xF1ol", dir: "ltr" },
|
|
4683
|
+
zh: { name: "\u4E2D\u6587", dir: "ltr" },
|
|
4684
|
+
ar: { name: "\u0627\u0644\u0639\u0631\u0628\u064A\u0629", dir: "rtl" },
|
|
4685
|
+
hi: { name: "\u0939\u093F\u0928\u094D\u0926\u0940", dir: "ltr" },
|
|
4686
|
+
fr: { name: "Fran\xE7ais", dir: "ltr" },
|
|
4687
|
+
pt: { name: "Portugu\xEAs", dir: "ltr" },
|
|
4688
|
+
ru: { name: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439", dir: "ltr" },
|
|
4689
|
+
de: { name: "Deutsch", dir: "ltr" },
|
|
4690
|
+
ja: { name: "\u65E5\u672C\u8A9E", dir: "ltr" }
|
|
3730
4691
|
};
|
|
4692
|
+
var translations = {
|
|
4693
|
+
en: {
|
|
4694
|
+
// Common
|
|
4695
|
+
add: "Add",
|
|
4696
|
+
edit: "Edit",
|
|
4697
|
+
delete: "Delete",
|
|
4698
|
+
view: "View",
|
|
4699
|
+
save: "Save",
|
|
4700
|
+
cancel: "Cancel",
|
|
4701
|
+
close: "Close",
|
|
4702
|
+
search: "Search",
|
|
4703
|
+
filter: "Filter",
|
|
4704
|
+
sort: "Sort",
|
|
4705
|
+
// Records
|
|
4706
|
+
addRecord: "Add Record",
|
|
4707
|
+
createRecord: "Create Record",
|
|
4708
|
+
editRecord: "Edit Record",
|
|
4709
|
+
deleteRecord: "Delete Record",
|
|
4710
|
+
viewRecord: "View Record",
|
|
4711
|
+
recordDetails: "Record Details",
|
|
4712
|
+
records: "records",
|
|
4713
|
+
of: "of",
|
|
4714
|
+
// Views
|
|
4715
|
+
gridView: "Grid",
|
|
4716
|
+
kanbanView: "Kanban",
|
|
4717
|
+
galleryView: "Gallery",
|
|
4718
|
+
calendarView: "Calendar",
|
|
4719
|
+
formView: "Form",
|
|
4720
|
+
// Fields
|
|
4721
|
+
title: "Title",
|
|
4722
|
+
description: "Description",
|
|
4723
|
+
status: "Status",
|
|
4724
|
+
priority: "Priority",
|
|
4725
|
+
dueDate: "Due Date",
|
|
4726
|
+
completed: "Completed",
|
|
4727
|
+
primary: "Primary",
|
|
4728
|
+
// Actions
|
|
4729
|
+
createNewRecord: "Create New Record",
|
|
4730
|
+
enterDetails: "Enter the details for the new record.",
|
|
4731
|
+
modifyValues: "Modify the values for this record.",
|
|
4732
|
+
viewData: "View the data for this record.",
|
|
4733
|
+
addNewRecord: "Add new record",
|
|
4734
|
+
// Sorting
|
|
4735
|
+
sortBy: "Sort by...",
|
|
4736
|
+
noSorting: "No sorting",
|
|
4737
|
+
ascending: "\u2191 A-Z",
|
|
4738
|
+
descending: "\u2193 Z-A",
|
|
4739
|
+
// Filtering
|
|
4740
|
+
filterBy: "Filter by...",
|
|
4741
|
+
noFilter: "No filter",
|
|
4742
|
+
filterValue: "Filter value...",
|
|
4743
|
+
selectValue: "Select value...",
|
|
4744
|
+
// Operators
|
|
4745
|
+
equals: "=",
|
|
4746
|
+
greater: ">",
|
|
4747
|
+
less: "<",
|
|
4748
|
+
greaterEqual: "\u2265",
|
|
4749
|
+
lessEqual: "\u2264",
|
|
4750
|
+
on: "On",
|
|
4751
|
+
before: "Before",
|
|
4752
|
+
after: "After",
|
|
4753
|
+
yes: "Yes",
|
|
4754
|
+
no: "No",
|
|
4755
|
+
// Messages
|
|
4756
|
+
noDateField: "No date field found in schema. Add a date field to enable Calendar view.",
|
|
4757
|
+
noSelectField: "No select field found in schema. Add a select field to enable Kanban view.",
|
|
4758
|
+
uncategorized: "Uncategorized",
|
|
4759
|
+
untitled: "Untitled",
|
|
4760
|
+
event: "Event",
|
|
4761
|
+
none: "None",
|
|
4762
|
+
today: "Today",
|
|
4763
|
+
weekDays: "Sun,Mon,Tue,Wed,Thu,Fri,Sat",
|
|
4764
|
+
monthNames: "January,February,March,April,May,June,July,August,September,October,November,December"
|
|
4765
|
+
},
|
|
4766
|
+
es: {
|
|
4767
|
+
add: "Agregar",
|
|
4768
|
+
edit: "Editar",
|
|
4769
|
+
delete: "Eliminar",
|
|
4770
|
+
view: "Ver",
|
|
4771
|
+
save: "Guardar",
|
|
4772
|
+
cancel: "Cancelar",
|
|
4773
|
+
close: "Cerrar",
|
|
4774
|
+
search: "Buscar",
|
|
4775
|
+
filter: "Filtrar",
|
|
4776
|
+
sort: "Ordenar",
|
|
4777
|
+
addRecord: "Agregar Registro",
|
|
4778
|
+
createRecord: "Crear Registro",
|
|
4779
|
+
editRecord: "Editar Registro",
|
|
4780
|
+
deleteRecord: "Eliminar Registro",
|
|
4781
|
+
viewRecord: "Ver Registro",
|
|
4782
|
+
recordDetails: "Detalles del Registro",
|
|
4783
|
+
records: "registros",
|
|
4784
|
+
of: "de",
|
|
4785
|
+
gridView: "Cuadr\xEDcula",
|
|
4786
|
+
kanbanView: "Kanban",
|
|
4787
|
+
galleryView: "Galer\xEDa",
|
|
4788
|
+
calendarView: "Calendario",
|
|
4789
|
+
formView: "Formulario",
|
|
4790
|
+
title: "T\xEDtulo",
|
|
4791
|
+
description: "Descripci\xF3n",
|
|
4792
|
+
status: "Estado",
|
|
4793
|
+
priority: "Prioridad",
|
|
4794
|
+
dueDate: "Fecha de Vencimiento",
|
|
4795
|
+
completed: "Completado",
|
|
4796
|
+
primary: "Principal",
|
|
4797
|
+
createNewRecord: "Crear Nuevo Registro",
|
|
4798
|
+
enterDetails: "Ingrese los detalles del nuevo registro.",
|
|
4799
|
+
modifyValues: "Modifique los valores de este registro.",
|
|
4800
|
+
viewData: "Ver los datos de este registro.",
|
|
4801
|
+
addNewRecord: "Agregar nuevo registro",
|
|
4802
|
+
sortBy: "Ordenar por...",
|
|
4803
|
+
noSorting: "Sin ordenar",
|
|
4804
|
+
ascending: "\u2191 A-Z",
|
|
4805
|
+
descending: "\u2193 Z-A",
|
|
4806
|
+
filterBy: "Filtrar por...",
|
|
4807
|
+
noFilter: "Sin filtro",
|
|
4808
|
+
filterValue: "Valor del filtro...",
|
|
4809
|
+
selectValue: "Seleccionar valor...",
|
|
4810
|
+
equals: "=",
|
|
4811
|
+
greater: ">",
|
|
4812
|
+
less: "<",
|
|
4813
|
+
greaterEqual: "\u2265",
|
|
4814
|
+
lessEqual: "\u2264",
|
|
4815
|
+
on: "En",
|
|
4816
|
+
before: "Antes",
|
|
4817
|
+
after: "Despu\xE9s",
|
|
4818
|
+
yes: "S\xED",
|
|
4819
|
+
no: "No",
|
|
4820
|
+
noDateField: "No se encontr\xF3 campo de fecha en el esquema. Agregue un campo de fecha para habilitar la vista de Calendario.",
|
|
4821
|
+
noSelectField: "No se encontr\xF3 campo de selecci\xF3n en el esquema. Agregue un campo de selecci\xF3n para habilitar la vista Kanban.",
|
|
4822
|
+
uncategorized: "Sin categor\xEDa",
|
|
4823
|
+
untitled: "Sin t\xEDtulo",
|
|
4824
|
+
event: "Evento",
|
|
4825
|
+
none: "Ninguno",
|
|
4826
|
+
today: "Hoy",
|
|
4827
|
+
weekDays: "Dom,Lun,Mar,Mi\xE9,Jue,Vie,S\xE1b",
|
|
4828
|
+
monthNames: "Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre"
|
|
4829
|
+
},
|
|
4830
|
+
zh: {
|
|
4831
|
+
add: "\u6DFB\u52A0",
|
|
4832
|
+
edit: "\u7F16\u8F91",
|
|
4833
|
+
delete: "\u5220\u9664",
|
|
4834
|
+
view: "\u67E5\u770B",
|
|
4835
|
+
save: "\u4FDD\u5B58",
|
|
4836
|
+
cancel: "\u53D6\u6D88",
|
|
4837
|
+
close: "\u5173\u95ED",
|
|
4838
|
+
search: "\u641C\u7D22",
|
|
4839
|
+
filter: "\u7B5B\u9009",
|
|
4840
|
+
sort: "\u6392\u5E8F",
|
|
4841
|
+
addRecord: "\u6DFB\u52A0\u8BB0\u5F55",
|
|
4842
|
+
createRecord: "\u521B\u5EFA\u8BB0\u5F55",
|
|
4843
|
+
editRecord: "\u7F16\u8F91\u8BB0\u5F55",
|
|
4844
|
+
deleteRecord: "\u5220\u9664\u8BB0\u5F55",
|
|
4845
|
+
viewRecord: "\u67E5\u770B\u8BB0\u5F55",
|
|
4846
|
+
recordDetails: "\u8BB0\u5F55\u8BE6\u60C5",
|
|
4847
|
+
records: "\u6761\u8BB0\u5F55",
|
|
4848
|
+
of: "\u5171",
|
|
4849
|
+
gridView: "\u8868\u683C",
|
|
4850
|
+
kanbanView: "\u770B\u677F",
|
|
4851
|
+
galleryView: "\u753B\u5ECA",
|
|
4852
|
+
calendarView: "\u65E5\u5386",
|
|
4853
|
+
formView: "\u8868\u5355",
|
|
4854
|
+
title: "\u6807\u9898",
|
|
4855
|
+
description: "\u63CF\u8FF0",
|
|
4856
|
+
status: "\u72B6\u6001",
|
|
4857
|
+
priority: "\u4F18\u5148\u7EA7",
|
|
4858
|
+
dueDate: "\u622A\u6B62\u65E5\u671F",
|
|
4859
|
+
completed: "\u5DF2\u5B8C\u6210",
|
|
4860
|
+
primary: "\u4E3B\u8981",
|
|
4861
|
+
createNewRecord: "\u521B\u5EFA\u65B0\u8BB0\u5F55",
|
|
4862
|
+
enterDetails: "\u8F93\u5165\u65B0\u8BB0\u5F55\u7684\u8BE6\u7EC6\u4FE1\u606F\u3002",
|
|
4863
|
+
modifyValues: "\u4FEE\u6539\u6B64\u8BB0\u5F55\u7684\u503C\u3002",
|
|
4864
|
+
viewData: "\u67E5\u770B\u6B64\u8BB0\u5F55\u7684\u6570\u636E\u3002",
|
|
4865
|
+
addNewRecord: "\u6DFB\u52A0\u65B0\u8BB0\u5F55",
|
|
4866
|
+
sortBy: "\u6392\u5E8F\u65B9\u5F0F...",
|
|
4867
|
+
noSorting: "\u4E0D\u6392\u5E8F",
|
|
4868
|
+
ascending: "\u2191 A-Z",
|
|
4869
|
+
descending: "\u2193 Z-A",
|
|
4870
|
+
filterBy: "\u7B5B\u9009\u6761\u4EF6...",
|
|
4871
|
+
noFilter: "\u65E0\u7B5B\u9009",
|
|
4872
|
+
filterValue: "\u7B5B\u9009\u503C...",
|
|
4873
|
+
selectValue: "\u9009\u62E9\u503C...",
|
|
4874
|
+
equals: "=",
|
|
4875
|
+
greater: ">",
|
|
4876
|
+
less: "<",
|
|
4877
|
+
greaterEqual: "\u2265",
|
|
4878
|
+
lessEqual: "\u2264",
|
|
4879
|
+
on: "\u5728",
|
|
4880
|
+
before: "\u4E4B\u524D",
|
|
4881
|
+
after: "\u4E4B\u540E",
|
|
4882
|
+
yes: "\u662F",
|
|
4883
|
+
no: "\u5426",
|
|
4884
|
+
noDateField: "\u67B6\u6784\u4E2D\u672A\u627E\u5230\u65E5\u671F\u5B57\u6BB5\u3002\u6DFB\u52A0\u65E5\u671F\u5B57\u6BB5\u4EE5\u542F\u7528\u65E5\u5386\u89C6\u56FE\u3002",
|
|
4885
|
+
noSelectField: "\u67B6\u6784\u4E2D\u672A\u627E\u5230\u9009\u62E9\u5B57\u6BB5\u3002\u6DFB\u52A0\u9009\u62E9\u5B57\u6BB5\u4EE5\u542F\u7528\u770B\u677F\u89C6\u56FE\u3002",
|
|
4886
|
+
uncategorized: "\u672A\u5206\u7C7B",
|
|
4887
|
+
untitled: "\u65E0\u6807\u9898",
|
|
4888
|
+
event: "\u4E8B\u4EF6",
|
|
4889
|
+
none: "\u65E0",
|
|
4890
|
+
today: "\u4ECA\u5929",
|
|
4891
|
+
weekDays: "\u65E5,\u4E00,\u4E8C,\u4E09,\u56DB,\u4E94,\u516D",
|
|
4892
|
+
monthNames: "\u4E00\u6708,\u4E8C\u6708,\u4E09\u6708,\u56DB\u6708,\u4E94\u6708,\u516D\u6708,\u4E03\u6708,\u516B\u6708,\u4E5D\u6708,\u5341\u6708,\u5341\u4E00\u6708,\u5341\u4E8C\u6708"
|
|
4893
|
+
},
|
|
4894
|
+
ar: {
|
|
4895
|
+
add: "\u0625\u0636\u0627\u0641\u0629",
|
|
4896
|
+
edit: "\u062A\u0639\u062F\u064A\u0644",
|
|
4897
|
+
delete: "\u062D\u0630\u0641",
|
|
4898
|
+
view: "\u0639\u0631\u0636",
|
|
4899
|
+
save: "\u062D\u0641\u0638",
|
|
4900
|
+
cancel: "\u0625\u0644\u063A\u0627\u0621",
|
|
4901
|
+
close: "\u0625\u063A\u0644\u0627\u0642",
|
|
4902
|
+
search: "\u0628\u062D\u062B",
|
|
4903
|
+
filter: "\u062A\u0635\u0641\u064A\u0629",
|
|
4904
|
+
sort: "\u062A\u0631\u062A\u064A\u0628",
|
|
4905
|
+
addRecord: "\u0625\u0636\u0627\u0641\u0629 \u0633\u062C\u0644",
|
|
4906
|
+
createRecord: "\u0625\u0646\u0634\u0627\u0621 \u0633\u062C\u0644",
|
|
4907
|
+
editRecord: "\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0633\u062C\u0644",
|
|
4908
|
+
deleteRecord: "\u062D\u0630\u0641 \u0627\u0644\u0633\u062C\u0644",
|
|
4909
|
+
viewRecord: "\u0639\u0631\u0636 \u0627\u0644\u0633\u062C\u0644",
|
|
4910
|
+
recordDetails: "\u062A\u0641\u0627\u0635\u064A\u0644 \u0627\u0644\u0633\u062C\u0644",
|
|
4911
|
+
records: "\u0633\u062C\u0644\u0627\u062A",
|
|
4912
|
+
of: "\u0645\u0646",
|
|
4913
|
+
gridView: "\u0634\u0628\u0643\u0629",
|
|
4914
|
+
kanbanView: "\u0643\u0627\u0646\u0628\u0627\u0646",
|
|
4915
|
+
galleryView: "\u0645\u0639\u0631\u0636",
|
|
4916
|
+
calendarView: "\u062A\u0642\u0648\u064A\u0645",
|
|
4917
|
+
formView: "\u0646\u0645\u0648\u0630\u062C",
|
|
4918
|
+
title: "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
|
|
4919
|
+
description: "\u0627\u0644\u0648\u0635\u0641",
|
|
4920
|
+
status: "\u0627\u0644\u062D\u0627\u0644\u0629",
|
|
4921
|
+
priority: "\u0627\u0644\u0623\u0648\u0644\u0648\u064A\u0629",
|
|
4922
|
+
dueDate: "\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u0627\u0633\u062A\u062D\u0642\u0627\u0642",
|
|
4923
|
+
completed: "\u0645\u0643\u062A\u0645\u0644",
|
|
4924
|
+
primary: "\u0623\u0633\u0627\u0633\u064A",
|
|
4925
|
+
createNewRecord: "\u0625\u0646\u0634\u0627\u0621 \u0633\u062C\u0644 \u062C\u062F\u064A\u062F",
|
|
4926
|
+
enterDetails: "\u0623\u062F\u062E\u0644 \u062A\u0641\u0627\u0635\u064A\u0644 \u0627\u0644\u0633\u062C\u0644 \u0627\u0644\u062C\u062F\u064A\u062F.",
|
|
4927
|
+
modifyValues: "\u062A\u0639\u062F\u064A\u0644 \u0642\u064A\u0645 \u0647\u0630\u0627 \u0627\u0644\u0633\u062C\u0644.",
|
|
4928
|
+
viewData: "\u0639\u0631\u0636 \u0628\u064A\u0627\u0646\u0627\u062A \u0647\u0630\u0627 \u0627\u0644\u0633\u062C\u0644.",
|
|
4929
|
+
addNewRecord: "\u0625\u0636\u0627\u0641\u0629 \u0633\u062C\u0644 \u062C\u062F\u064A\u062F",
|
|
4930
|
+
sortBy: "\u062A\u0631\u062A\u064A\u0628 \u062D\u0633\u0628...",
|
|
4931
|
+
noSorting: "\u0628\u062F\u0648\u0646 \u062A\u0631\u062A\u064A\u0628",
|
|
4932
|
+
ascending: "\u2191 \u0623-\u064A",
|
|
4933
|
+
descending: "\u2193 \u064A-\u0623",
|
|
4934
|
+
filterBy: "\u062A\u0635\u0641\u064A\u0629 \u062D\u0633\u0628...",
|
|
4935
|
+
noFilter: "\u0628\u062F\u0648\u0646 \u062A\u0635\u0641\u064A\u0629",
|
|
4936
|
+
filterValue: "\u0642\u064A\u0645\u0629 \u0627\u0644\u062A\u0635\u0641\u064A\u0629...",
|
|
4937
|
+
selectValue: "\u0627\u062E\u062A\u0631 \u0642\u064A\u0645\u0629...",
|
|
4938
|
+
equals: "=",
|
|
4939
|
+
greater: ">",
|
|
4940
|
+
less: "<",
|
|
4941
|
+
greaterEqual: "\u2265",
|
|
4942
|
+
lessEqual: "\u2264",
|
|
4943
|
+
on: "\u0641\u064A",
|
|
4944
|
+
before: "\u0642\u0628\u0644",
|
|
4945
|
+
after: "\u0628\u0639\u062F",
|
|
4946
|
+
yes: "\u0646\u0639\u0645",
|
|
4947
|
+
no: "\u0644\u0627",
|
|
4948
|
+
noDateField: "\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u062D\u0642\u0644 \u062A\u0627\u0631\u064A\u062E \u0641\u064A \u0627\u0644\u0645\u062E\u0637\u0637. \u0623\u0636\u0641 \u062D\u0642\u0644 \u062A\u0627\u0631\u064A\u062E \u0644\u062A\u0645\u0643\u064A\u0646 \u0639\u0631\u0636 \u0627\u0644\u062A\u0642\u0648\u064A\u0645.",
|
|
4949
|
+
noSelectField: "\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u062D\u0642\u0644 \u0627\u062E\u062A\u064A\u0627\u0631 \u0641\u064A \u0627\u0644\u0645\u062E\u0637\u0637. \u0623\u0636\u0641 \u062D\u0642\u0644 \u0627\u062E\u062A\u064A\u0627\u0631 \u0644\u062A\u0645\u0643\u064A\u0646 \u0639\u0631\u0636 \u0643\u0627\u0646\u0628\u0627\u0646.",
|
|
4950
|
+
uncategorized: "\u063A\u064A\u0631 \u0645\u0635\u0646\u0641",
|
|
4951
|
+
untitled: "\u0628\u062F\u0648\u0646 \u0639\u0646\u0648\u0627\u0646",
|
|
4952
|
+
event: "\u062D\u062F\u062B",
|
|
4953
|
+
none: "\u0644\u0627 \u0634\u064A\u0621",
|
|
4954
|
+
today: "\u0627\u0644\u064A\u0648\u0645",
|
|
4955
|
+
weekDays: "\u0623\u062D\u062F,\u0625\u062B\u0646\u064A\u0646,\u062B\u0644\u0627\u062B\u0627\u0621,\u0623\u0631\u0628\u0639\u0627\u0621,\u062E\u0645\u064A\u0633,\u062C\u0645\u0639\u0629,\u0633\u0628\u062A",
|
|
4956
|
+
monthNames: "\u064A\u0646\u0627\u064A\u0631,\u0641\u0628\u0631\u0627\u064A\u0631,\u0645\u0627\u0631\u0633,\u0623\u0628\u0631\u064A\u0644,\u0645\u0627\u064A\u0648,\u064A\u0648\u0646\u064A\u0648,\u064A\u0648\u0644\u064A\u0648,\u0623\u063A\u0633\u0637\u0633,\u0633\u0628\u062A\u0645\u0628\u0631,\u0623\u0643\u062A\u0648\u0628\u0631,\u0646\u0648\u0641\u0645\u0628\u0631,\u062F\u064A\u0633\u0645\u0628\u0631"
|
|
4957
|
+
},
|
|
4958
|
+
hi: {
|
|
4959
|
+
add: "\u091C\u094B\u0921\u093C\u0947\u0902",
|
|
4960
|
+
edit: "\u0938\u0902\u092A\u093E\u0926\u093F\u0924 \u0915\u0930\u0947\u0902",
|
|
4961
|
+
delete: "\u0939\u091F\u093E\u090F\u0902",
|
|
4962
|
+
view: "\u0926\u0947\u0916\u0947\u0902",
|
|
4963
|
+
save: "\u0938\u0939\u0947\u091C\u0947\u0902",
|
|
4964
|
+
cancel: "\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902",
|
|
4965
|
+
close: "\u092C\u0902\u0926 \u0915\u0930\u0947\u0902",
|
|
4966
|
+
search: "\u0916\u094B\u091C\u0947\u0902",
|
|
4967
|
+
filter: "\u092B\u093C\u093F\u0932\u094D\u091F\u0930",
|
|
4968
|
+
sort: "\u0915\u094D\u0930\u092E\u092C\u0926\u094D\u0927 \u0915\u0930\u0947\u0902",
|
|
4969
|
+
addRecord: "\u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u091C\u094B\u0921\u093C\u0947\u0902",
|
|
4970
|
+
createRecord: "\u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u092C\u0928\u093E\u090F\u0902",
|
|
4971
|
+
editRecord: "\u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u0938\u0902\u092A\u093E\u0926\u093F\u0924 \u0915\u0930\u0947\u0902",
|
|
4972
|
+
deleteRecord: "\u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u0939\u091F\u093E\u090F\u0902",
|
|
4973
|
+
viewRecord: "\u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u0926\u0947\u0916\u0947\u0902",
|
|
4974
|
+
recordDetails: "\u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u0935\u093F\u0935\u0930\u0923",
|
|
4975
|
+
records: "\u0930\u093F\u0915\u0949\u0930\u094D\u0921",
|
|
4976
|
+
of: "\u092E\u0947\u0902 \u0938\u0947",
|
|
4977
|
+
gridView: "\u0917\u094D\u0930\u093F\u0921",
|
|
4978
|
+
kanbanView: "\u0915\u093E\u0928\u092C\u093E\u0928",
|
|
4979
|
+
galleryView: "\u0917\u0948\u0932\u0930\u0940",
|
|
4980
|
+
calendarView: "\u0915\u0948\u0932\u0947\u0902\u0921\u0930",
|
|
4981
|
+
formView: "\u092B\u0949\u0930\u094D\u092E",
|
|
4982
|
+
title: "\u0936\u0940\u0930\u094D\u0937\u0915",
|
|
4983
|
+
description: "\u0935\u093F\u0935\u0930\u0923",
|
|
4984
|
+
status: "\u0938\u094D\u0925\u093F\u0924\u093F",
|
|
4985
|
+
priority: "\u092A\u094D\u0930\u093E\u0925\u092E\u093F\u0915\u0924\u093E",
|
|
4986
|
+
dueDate: "\u0928\u093F\u092F\u0924 \u0924\u093E\u0930\u0940\u0916",
|
|
4987
|
+
completed: "\u092A\u0942\u0930\u094D\u0923",
|
|
4988
|
+
primary: "\u092A\u094D\u0930\u093E\u0925\u092E\u093F\u0915",
|
|
4989
|
+
createNewRecord: "\u0928\u092F\u093E \u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u092C\u0928\u093E\u090F\u0902",
|
|
4990
|
+
enterDetails: "\u0928\u090F \u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u0915\u0947 \u0932\u093F\u090F \u0935\u093F\u0935\u0930\u0923 \u0926\u0930\u094D\u091C \u0915\u0930\u0947\u0902\u0964",
|
|
4991
|
+
modifyValues: "\u0907\u0938 \u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u0915\u0947 \u092E\u093E\u0928 \u0938\u0902\u0936\u094B\u0927\u093F\u0924 \u0915\u0930\u0947\u0902\u0964",
|
|
4992
|
+
viewData: "\u0907\u0938 \u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u0915\u093E \u0921\u0947\u091F\u093E \u0926\u0947\u0916\u0947\u0902\u0964",
|
|
4993
|
+
addNewRecord: "\u0928\u092F\u093E \u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u091C\u094B\u0921\u093C\u0947\u0902",
|
|
4994
|
+
sortBy: "\u0907\u0938\u0915\u0947 \u0905\u0928\u0941\u0938\u093E\u0930 \u0915\u094D\u0930\u092E\u092C\u0926\u094D\u0927 \u0915\u0930\u0947\u0902...",
|
|
4995
|
+
noSorting: "\u0915\u094B\u0908 \u0915\u094D\u0930\u092E\u092C\u0926\u094D\u0927\u0924\u093E \u0928\u0939\u0940\u0902",
|
|
4996
|
+
ascending: "\u2191 \u0905-\u0939",
|
|
4997
|
+
descending: "\u2193 \u0939-\u0905",
|
|
4998
|
+
filterBy: "\u0907\u0938\u0915\u0947 \u0905\u0928\u0941\u0938\u093E\u0930 \u092B\u093C\u093F\u0932\u094D\u091F\u0930 \u0915\u0930\u0947\u0902...",
|
|
4999
|
+
noFilter: "\u0915\u094B\u0908 \u092B\u093C\u093F\u0932\u094D\u091F\u0930 \u0928\u0939\u0940\u0902",
|
|
5000
|
+
filterValue: "\u092B\u093C\u093F\u0932\u094D\u091F\u0930 \u092E\u093E\u0928...",
|
|
5001
|
+
selectValue: "\u092E\u093E\u0928 \u091A\u0941\u0928\u0947\u0902...",
|
|
5002
|
+
equals: "=",
|
|
5003
|
+
greater: ">",
|
|
5004
|
+
less: "<",
|
|
5005
|
+
greaterEqual: "\u2265",
|
|
5006
|
+
lessEqual: "\u2264",
|
|
5007
|
+
on: "\u092A\u0930",
|
|
5008
|
+
before: "\u092A\u0939\u0932\u0947",
|
|
5009
|
+
after: "\u092C\u093E\u0926 \u092E\u0947\u0902",
|
|
5010
|
+
yes: "\u0939\u093E\u0902",
|
|
5011
|
+
no: "\u0928\u0939\u0940\u0902",
|
|
5012
|
+
noDateField: "\u0938\u094D\u0915\u0940\u092E\u093E \u092E\u0947\u0902 \u0915\u094B\u0908 \u0926\u093F\u0928\u093E\u0902\u0915 \u092B\u093C\u0940\u0932\u094D\u0921 \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u0940\u0964 \u0915\u0948\u0932\u0947\u0902\u0921\u0930 \u0926\u0943\u0936\u094D\u092F \u0938\u0915\u094D\u0937\u092E \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0926\u093F\u0928\u093E\u0902\u0915 \u092B\u093C\u0940\u0932\u094D\u0921 \u091C\u094B\u0921\u093C\u0947\u0902\u0964",
|
|
5013
|
+
noSelectField: "\u0938\u094D\u0915\u0940\u092E\u093E \u092E\u0947\u0902 \u0915\u094B\u0908 \u091A\u092F\u0928 \u092B\u093C\u0940\u0932\u094D\u0921 \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u0940\u0964 \u0915\u093E\u0928\u092C\u093E\u0928 \u0926\u0943\u0936\u094D\u092F \u0938\u0915\u094D\u0937\u092E \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u091A\u092F\u0928 \u092B\u093C\u0940\u0932\u094D\u0921 \u091C\u094B\u0921\u093C\u0947\u0902\u0964",
|
|
5014
|
+
uncategorized: "\u0905\u0935\u0930\u094D\u0917\u0940\u0915\u0943\u0924",
|
|
5015
|
+
untitled: "\u0936\u0940\u0930\u094D\u0937\u0915\u0939\u0940\u0928",
|
|
5016
|
+
event: "\u0918\u091F\u0928\u093E",
|
|
5017
|
+
none: "\u0915\u094B\u0908 \u0928\u0939\u0940\u0902",
|
|
5018
|
+
today: "\u0906\u091C",
|
|
5019
|
+
weekDays: "\u0930\u0935\u093F,\u0938\u094B\u092E,\u092E\u0902\u0917\u0932,\u092C\u0941\u0927,\u0917\u0941\u0930\u0941,\u0936\u0941\u0915\u094D\u0930,\u0936\u0928\u093F",
|
|
5020
|
+
monthNames: "\u091C\u0928\u0935\u0930\u0940,\u092B\u0930\u0935\u0930\u0940,\u092E\u093E\u0930\u094D\u091A,\u0905\u092A\u094D\u0930\u0948\u0932,\u092E\u0908,\u091C\u0942\u0928,\u091C\u0941\u0932\u093E\u0908,\u0905\u0917\u0938\u094D\u0924,\u0938\u093F\u0924\u0902\u092C\u0930,\u0905\u0915\u094D\u091F\u0942\u092C\u0930,\u0928\u0935\u0902\u092C\u0930,\u0926\u093F\u0938\u0902\u092C\u0930"
|
|
5021
|
+
},
|
|
5022
|
+
fr: {
|
|
5023
|
+
add: "Ajouter",
|
|
5024
|
+
edit: "Modifier",
|
|
5025
|
+
delete: "Supprimer",
|
|
5026
|
+
view: "Voir",
|
|
5027
|
+
save: "Enregistrer",
|
|
5028
|
+
cancel: "Annuler",
|
|
5029
|
+
close: "Fermer",
|
|
5030
|
+
search: "Rechercher",
|
|
5031
|
+
filter: "Filtrer",
|
|
5032
|
+
sort: "Trier",
|
|
5033
|
+
addRecord: "Ajouter un Enregistrement",
|
|
5034
|
+
createRecord: "Cr\xE9er un Enregistrement",
|
|
5035
|
+
editRecord: "Modifier l'Enregistrement",
|
|
5036
|
+
deleteRecord: "Supprimer l'Enregistrement",
|
|
5037
|
+
viewRecord: "Voir l'Enregistrement",
|
|
5038
|
+
recordDetails: "D\xE9tails de l'Enregistrement",
|
|
5039
|
+
records: "enregistrements",
|
|
5040
|
+
of: "sur",
|
|
5041
|
+
gridView: "Grille",
|
|
5042
|
+
kanbanView: "Kanban",
|
|
5043
|
+
galleryView: "Galerie",
|
|
5044
|
+
calendarView: "Calendrier",
|
|
5045
|
+
formView: "Formulaire",
|
|
5046
|
+
title: "Titre",
|
|
5047
|
+
description: "Description",
|
|
5048
|
+
status: "Statut",
|
|
5049
|
+
priority: "Priorit\xE9",
|
|
5050
|
+
dueDate: "Date d'\xC9ch\xE9ance",
|
|
5051
|
+
completed: "Termin\xE9",
|
|
5052
|
+
primary: "Principal",
|
|
5053
|
+
createNewRecord: "Cr\xE9er un Nouvel Enregistrement",
|
|
5054
|
+
enterDetails: "Entrez les d\xE9tails du nouvel enregistrement.",
|
|
5055
|
+
modifyValues: "Modifiez les valeurs de cet enregistrement.",
|
|
5056
|
+
viewData: "Voir les donn\xE9es de cet enregistrement.",
|
|
5057
|
+
addNewRecord: "Ajouter un nouvel enregistrement",
|
|
5058
|
+
sortBy: "Trier par...",
|
|
5059
|
+
noSorting: "Aucun tri",
|
|
5060
|
+
ascending: "\u2191 A-Z",
|
|
5061
|
+
descending: "\u2193 Z-A",
|
|
5062
|
+
filterBy: "Filtrer par...",
|
|
5063
|
+
noFilter: "Aucun filtre",
|
|
5064
|
+
filterValue: "Valeur du filtre...",
|
|
5065
|
+
selectValue: "S\xE9lectionner une valeur...",
|
|
5066
|
+
equals: "=",
|
|
5067
|
+
greater: ">",
|
|
5068
|
+
less: "<",
|
|
5069
|
+
greaterEqual: "\u2265",
|
|
5070
|
+
lessEqual: "\u2264",
|
|
5071
|
+
on: "Le",
|
|
5072
|
+
before: "Avant",
|
|
5073
|
+
after: "Apr\xE8s",
|
|
5074
|
+
yes: "Oui",
|
|
5075
|
+
no: "Non",
|
|
5076
|
+
noDateField: "Aucun champ de date trouv\xE9 dans le sch\xE9ma. Ajoutez un champ de date pour activer la vue Calendrier.",
|
|
5077
|
+
noSelectField: "Aucun champ de s\xE9lection trouv\xE9 dans le sch\xE9ma. Ajoutez un champ de s\xE9lection pour activer la vue Kanban.",
|
|
5078
|
+
uncategorized: "Non cat\xE9goris\xE9",
|
|
5079
|
+
untitled: "Sans titre",
|
|
5080
|
+
event: "\xC9v\xE9nement",
|
|
5081
|
+
none: "Aucun",
|
|
5082
|
+
today: "Aujourd'hui",
|
|
5083
|
+
weekDays: "Dim,Lun,Mar,Mer,Jeu,Ven,Sam",
|
|
5084
|
+
monthNames: "Janvier,F\xE9vrier,Mars,Avril,Mai,Juin,Juillet,Ao\xFBt,Septembre,Octobre,Novembre,D\xE9cembre"
|
|
5085
|
+
},
|
|
5086
|
+
pt: {
|
|
5087
|
+
add: "Adicionar",
|
|
5088
|
+
edit: "Editar",
|
|
5089
|
+
delete: "Excluir",
|
|
5090
|
+
view: "Visualizar",
|
|
5091
|
+
save: "Salvar",
|
|
5092
|
+
cancel: "Cancelar",
|
|
5093
|
+
close: "Fechar",
|
|
5094
|
+
search: "Pesquisar",
|
|
5095
|
+
filter: "Filtrar",
|
|
5096
|
+
sort: "Ordenar",
|
|
5097
|
+
addRecord: "Adicionar Registro",
|
|
5098
|
+
createRecord: "Criar Registro",
|
|
5099
|
+
editRecord: "Editar Registro",
|
|
5100
|
+
deleteRecord: "Excluir Registro",
|
|
5101
|
+
viewRecord: "Visualizar Registro",
|
|
5102
|
+
recordDetails: "Detalhes do Registro",
|
|
5103
|
+
records: "registros",
|
|
5104
|
+
of: "de",
|
|
5105
|
+
gridView: "Grade",
|
|
5106
|
+
kanbanView: "Kanban",
|
|
5107
|
+
galleryView: "Galeria",
|
|
5108
|
+
calendarView: "Calend\xE1rio",
|
|
5109
|
+
formView: "Formul\xE1rio",
|
|
5110
|
+
title: "T\xEDtulo",
|
|
5111
|
+
description: "Descri\xE7\xE3o",
|
|
5112
|
+
status: "Status",
|
|
5113
|
+
priority: "Prioridade",
|
|
5114
|
+
dueDate: "Data de Vencimento",
|
|
5115
|
+
completed: "Conclu\xEDdo",
|
|
5116
|
+
primary: "Principal",
|
|
5117
|
+
createNewRecord: "Criar Novo Registro",
|
|
5118
|
+
enterDetails: "Insira os detalhes do novo registro.",
|
|
5119
|
+
modifyValues: "Modifique os valores deste registro.",
|
|
5120
|
+
viewData: "Visualize os dados deste registro.",
|
|
5121
|
+
addNewRecord: "Adicionar novo registro",
|
|
5122
|
+
sortBy: "Ordenar por...",
|
|
5123
|
+
noSorting: "Sem ordena\xE7\xE3o",
|
|
5124
|
+
ascending: "\u2191 A-Z",
|
|
5125
|
+
descending: "\u2193 Z-A",
|
|
5126
|
+
filterBy: "Filtrar por...",
|
|
5127
|
+
noFilter: "Sem filtro",
|
|
5128
|
+
filterValue: "Valor do filtro...",
|
|
5129
|
+
selectValue: "Selecionar valor...",
|
|
5130
|
+
equals: "=",
|
|
5131
|
+
greater: ">",
|
|
5132
|
+
less: "<",
|
|
5133
|
+
greaterEqual: "\u2265",
|
|
5134
|
+
lessEqual: "\u2264",
|
|
5135
|
+
on: "Em",
|
|
5136
|
+
before: "Antes",
|
|
5137
|
+
after: "Depois",
|
|
5138
|
+
yes: "Sim",
|
|
5139
|
+
no: "N\xE3o",
|
|
5140
|
+
noDateField: "Nenhum campo de data encontrado no esquema. Adicione um campo de data para ativar a visualiza\xE7\xE3o de Calend\xE1rio.",
|
|
5141
|
+
noSelectField: "Nenhum campo de sele\xE7\xE3o encontrado no esquema. Adicione um campo de sele\xE7\xE3o para ativar a visualiza\xE7\xE3o Kanban.",
|
|
5142
|
+
uncategorized: "Sem categoria",
|
|
5143
|
+
untitled: "Sem t\xEDtulo",
|
|
5144
|
+
event: "Evento",
|
|
5145
|
+
none: "Nenhum",
|
|
5146
|
+
today: "Hoje",
|
|
5147
|
+
weekDays: "Dom,Seg,Ter,Qua,Qui,Sex,S\xE1b",
|
|
5148
|
+
monthNames: "Janeiro,Fevereiro,Mar\xE7o,Abril,Maio,Junho,Julho,Agosto,Setembro,Outubro,Novembro,Dezembro"
|
|
5149
|
+
},
|
|
5150
|
+
ru: {
|
|
5151
|
+
add: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C",
|
|
5152
|
+
edit: "\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C",
|
|
5153
|
+
delete: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C",
|
|
5154
|
+
view: "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440",
|
|
5155
|
+
save: "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C",
|
|
5156
|
+
cancel: "\u041E\u0442\u043C\u0435\u043D\u0430",
|
|
5157
|
+
close: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C",
|
|
5158
|
+
search: "\u041F\u043E\u0438\u0441\u043A",
|
|
5159
|
+
filter: "\u0424\u0438\u043B\u044C\u0442\u0440",
|
|
5160
|
+
sort: "\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430",
|
|
5161
|
+
addRecord: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0417\u0430\u043F\u0438\u0441\u044C",
|
|
5162
|
+
createRecord: "\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0417\u0430\u043F\u0438\u0441\u044C",
|
|
5163
|
+
editRecord: "\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0417\u0430\u043F\u0438\u0441\u044C",
|
|
5164
|
+
deleteRecord: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0417\u0430\u043F\u0438\u0441\u044C",
|
|
5165
|
+
viewRecord: "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0417\u0430\u043F\u0438\u0441\u0438",
|
|
5166
|
+
recordDetails: "\u0414\u0435\u0442\u0430\u043B\u0438 \u0417\u0430\u043F\u0438\u0441\u0438",
|
|
5167
|
+
records: "\u0437\u0430\u043F\u0438\u0441\u0435\u0439",
|
|
5168
|
+
of: "\u0438\u0437",
|
|
5169
|
+
gridView: "\u0421\u0435\u0442\u043A\u0430",
|
|
5170
|
+
kanbanView: "\u041A\u0430\u043D\u0431\u0430\u043D",
|
|
5171
|
+
galleryView: "\u0413\u0430\u043B\u0435\u0440\u0435\u044F",
|
|
5172
|
+
calendarView: "\u041A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044C",
|
|
5173
|
+
formView: "\u0424\u043E\u0440\u043C\u0430",
|
|
5174
|
+
title: "\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A",
|
|
5175
|
+
description: "\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435",
|
|
5176
|
+
status: "\u0421\u0442\u0430\u0442\u0443\u0441",
|
|
5177
|
+
priority: "\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442",
|
|
5178
|
+
dueDate: "\u0421\u0440\u043E\u043A",
|
|
5179
|
+
completed: "\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E",
|
|
5180
|
+
primary: "\u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439",
|
|
5181
|
+
createNewRecord: "\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u041D\u043E\u0432\u0443\u044E \u0417\u0430\u043F\u0438\u0441\u044C",
|
|
5182
|
+
enterDetails: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0434\u0435\u0442\u0430\u043B\u0438 \u043D\u043E\u0432\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438.",
|
|
5183
|
+
modifyValues: "\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u044D\u0442\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438.",
|
|
5184
|
+
viewData: "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0438\u0442\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u044D\u0442\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438.",
|
|
5185
|
+
addNewRecord: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u0437\u0430\u043F\u0438\u0441\u044C",
|
|
5186
|
+
sortBy: "\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E...",
|
|
5187
|
+
noSorting: "\u0411\u0435\u0437 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0438",
|
|
5188
|
+
ascending: "\u2191 \u0410-\u042F",
|
|
5189
|
+
descending: "\u2193 \u042F-\u0410",
|
|
5190
|
+
filterBy: "\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E...",
|
|
5191
|
+
noFilter: "\u0411\u0435\u0437 \u0444\u0438\u043B\u044C\u0442\u0440\u0430",
|
|
5192
|
+
filterValue: "\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u0430...",
|
|
5193
|
+
selectValue: "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435...",
|
|
5194
|
+
equals: "=",
|
|
5195
|
+
greater: ">",
|
|
5196
|
+
less: "<",
|
|
5197
|
+
greaterEqual: "\u2265",
|
|
5198
|
+
lessEqual: "\u2264",
|
|
5199
|
+
on: "\u0412",
|
|
5200
|
+
before: "\u0414\u043E",
|
|
5201
|
+
after: "\u041F\u043E\u0441\u043B\u0435",
|
|
5202
|
+
yes: "\u0414\u0430",
|
|
5203
|
+
no: "\u041D\u0435\u0442",
|
|
5204
|
+
noDateField: "\u041F\u043E\u043B\u0435 \u0434\u0430\u0442\u044B \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u0432 \u0441\u0445\u0435\u043C\u0435. \u0414\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u043F\u043E\u043B\u0435 \u0434\u0430\u0442\u044B \u0434\u043B\u044F \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u041A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044C.",
|
|
5205
|
+
noSelectField: "\u041F\u043E\u043B\u0435 \u0432\u044B\u0431\u043E\u0440\u0430 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u0432 \u0441\u0445\u0435\u043C\u0435. \u0414\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u043F\u043E\u043B\u0435 \u0432\u044B\u0431\u043E\u0440\u0430 \u0434\u043B\u044F \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u041A\u0430\u043D\u0431\u0430\u043D.",
|
|
5206
|
+
uncategorized: "\u0411\u0435\u0437 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438",
|
|
5207
|
+
untitled: "\u0411\u0435\u0437 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u044F",
|
|
5208
|
+
event: "\u0421\u043E\u0431\u044B\u0442\u0438\u0435",
|
|
5209
|
+
none: "\u041D\u0435\u0442",
|
|
5210
|
+
today: "\u0421\u0435\u0433\u043E\u0434\u043D\u044F",
|
|
5211
|
+
weekDays: "\u0412\u0441,\u041F\u043D,\u0412\u0442,\u0421\u0440,\u0427\u0442,\u041F\u0442,\u0421\u0431",
|
|
5212
|
+
monthNames: "\u042F\u043D\u0432\u0430\u0440\u044C,\u0424\u0435\u0432\u0440\u0430\u043B\u044C,\u041C\u0430\u0440\u0442,\u0410\u043F\u0440\u0435\u043B\u044C,\u041C\u0430\u0439,\u0418\u044E\u043D\u044C,\u0418\u044E\u043B\u044C,\u0410\u0432\u0433\u0443\u0441\u0442,\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C,\u041E\u043A\u0442\u044F\u0431\u0440\u044C,\u041D\u043E\u044F\u0431\u0440\u044C,\u0414\u0435\u043A\u0430\u0431\u0440\u044C"
|
|
5213
|
+
},
|
|
5214
|
+
de: {
|
|
5215
|
+
add: "Hinzuf\xFCgen",
|
|
5216
|
+
edit: "Bearbeiten",
|
|
5217
|
+
delete: "L\xF6schen",
|
|
5218
|
+
view: "Ansehen",
|
|
5219
|
+
save: "Speichern",
|
|
5220
|
+
cancel: "Abbrechen",
|
|
5221
|
+
close: "Schlie\xDFen",
|
|
5222
|
+
search: "Suchen",
|
|
5223
|
+
filter: "Filtern",
|
|
5224
|
+
sort: "Sortieren",
|
|
5225
|
+
addRecord: "Datensatz Hinzuf\xFCgen",
|
|
5226
|
+
createRecord: "Datensatz Erstellen",
|
|
5227
|
+
editRecord: "Datensatz Bearbeiten",
|
|
5228
|
+
deleteRecord: "Datensatz L\xF6schen",
|
|
5229
|
+
viewRecord: "Datensatz Ansehen",
|
|
5230
|
+
recordDetails: "Datensatz-Details",
|
|
5231
|
+
records: "Datens\xE4tze",
|
|
5232
|
+
of: "von",
|
|
5233
|
+
gridView: "Raster",
|
|
5234
|
+
kanbanView: "Kanban",
|
|
5235
|
+
galleryView: "Galerie",
|
|
5236
|
+
calendarView: "Kalender",
|
|
5237
|
+
formView: "Formular",
|
|
5238
|
+
title: "Titel",
|
|
5239
|
+
description: "Beschreibung",
|
|
5240
|
+
status: "Status",
|
|
5241
|
+
priority: "Priorit\xE4t",
|
|
5242
|
+
dueDate: "F\xE4lligkeitsdatum",
|
|
5243
|
+
completed: "Abgeschlossen",
|
|
5244
|
+
primary: "Prim\xE4r",
|
|
5245
|
+
createNewRecord: "Neuen Datensatz Erstellen",
|
|
5246
|
+
enterDetails: "Geben Sie die Details f\xFCr den neuen Datensatz ein.",
|
|
5247
|
+
modifyValues: "\xC4ndern Sie die Werte f\xFCr diesen Datensatz.",
|
|
5248
|
+
viewData: "Sehen Sie sich die Daten f\xFCr diesen Datensatz an.",
|
|
5249
|
+
addNewRecord: "Neuen Datensatz hinzuf\xFCgen",
|
|
5250
|
+
sortBy: "Sortieren nach...",
|
|
5251
|
+
noSorting: "Keine Sortierung",
|
|
5252
|
+
ascending: "\u2191 A-Z",
|
|
5253
|
+
descending: "\u2193 Z-A",
|
|
5254
|
+
filterBy: "Filtern nach...",
|
|
5255
|
+
noFilter: "Kein Filter",
|
|
5256
|
+
filterValue: "Filterwert...",
|
|
5257
|
+
selectValue: "Wert ausw\xE4hlen...",
|
|
5258
|
+
equals: "=",
|
|
5259
|
+
greater: ">",
|
|
5260
|
+
less: "<",
|
|
5261
|
+
greaterEqual: "\u2265",
|
|
5262
|
+
lessEqual: "\u2264",
|
|
5263
|
+
on: "Am",
|
|
5264
|
+
before: "Vor",
|
|
5265
|
+
after: "Nach",
|
|
5266
|
+
yes: "Ja",
|
|
5267
|
+
no: "Nein",
|
|
5268
|
+
noDateField: "Kein Datumsfeld im Schema gefunden. F\xFCgen Sie ein Datumsfeld hinzu, um die Kalenderansicht zu aktivieren.",
|
|
5269
|
+
noSelectField: "Kein Auswahlfeld im Schema gefunden. F\xFCgen Sie ein Auswahlfeld hinzu, um die Kanban-Ansicht zu aktivieren.",
|
|
5270
|
+
uncategorized: "Unkategorisiert",
|
|
5271
|
+
untitled: "Ohne Titel",
|
|
5272
|
+
event: "Ereignis",
|
|
5273
|
+
none: "Keine",
|
|
5274
|
+
today: "Heute",
|
|
5275
|
+
weekDays: "So,Mo,Di,Mi,Do,Fr,Sa",
|
|
5276
|
+
monthNames: "Januar,Februar,M\xE4rz,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember"
|
|
5277
|
+
},
|
|
5278
|
+
ja: {
|
|
5279
|
+
add: "\u8FFD\u52A0",
|
|
5280
|
+
edit: "\u7DE8\u96C6",
|
|
5281
|
+
delete: "\u524A\u9664",
|
|
5282
|
+
view: "\u8868\u793A",
|
|
5283
|
+
save: "\u4FDD\u5B58",
|
|
5284
|
+
cancel: "\u30AD\u30E3\u30F3\u30BB\u30EB",
|
|
5285
|
+
close: "\u9589\u3058\u308B",
|
|
5286
|
+
search: "\u691C\u7D22",
|
|
5287
|
+
filter: "\u30D5\u30A3\u30EB\u30BF\u30FC",
|
|
5288
|
+
sort: "\u4E26\u3079\u66FF\u3048",
|
|
5289
|
+
addRecord: "\u30EC\u30B3\u30FC\u30C9\u3092\u8FFD\u52A0",
|
|
5290
|
+
createRecord: "\u30EC\u30B3\u30FC\u30C9\u3092\u4F5C\u6210",
|
|
5291
|
+
editRecord: "\u30EC\u30B3\u30FC\u30C9\u3092\u7DE8\u96C6",
|
|
5292
|
+
deleteRecord: "\u30EC\u30B3\u30FC\u30C9\u3092\u524A\u9664",
|
|
5293
|
+
viewRecord: "\u30EC\u30B3\u30FC\u30C9\u3092\u8868\u793A",
|
|
5294
|
+
recordDetails: "\u30EC\u30B3\u30FC\u30C9\u306E\u8A73\u7D30",
|
|
5295
|
+
records: "\u4EF6\u306E\u30EC\u30B3\u30FC\u30C9",
|
|
5296
|
+
of: "/",
|
|
5297
|
+
gridView: "\u30B0\u30EA\u30C3\u30C9",
|
|
5298
|
+
kanbanView: "\u30AB\u30F3\u30D0\u30F3",
|
|
5299
|
+
galleryView: "\u30AE\u30E3\u30E9\u30EA\u30FC",
|
|
5300
|
+
calendarView: "\u30AB\u30EC\u30F3\u30C0\u30FC",
|
|
5301
|
+
formView: "\u30D5\u30A9\u30FC\u30E0",
|
|
5302
|
+
title: "\u30BF\u30A4\u30C8\u30EB",
|
|
5303
|
+
description: "\u8AAC\u660E",
|
|
5304
|
+
status: "\u30B9\u30C6\u30FC\u30BF\u30B9",
|
|
5305
|
+
priority: "\u512A\u5148\u5EA6",
|
|
5306
|
+
dueDate: "\u671F\u9650",
|
|
5307
|
+
completed: "\u5B8C\u4E86",
|
|
5308
|
+
primary: "\u30D7\u30E9\u30A4\u30DE\u30EA",
|
|
5309
|
+
createNewRecord: "\u65B0\u3057\u3044\u30EC\u30B3\u30FC\u30C9\u3092\u4F5C\u6210",
|
|
5310
|
+
enterDetails: "\u65B0\u3057\u3044\u30EC\u30B3\u30FC\u30C9\u306E\u8A73\u7D30\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
5311
|
+
modifyValues: "\u3053\u306E\u30EC\u30B3\u30FC\u30C9\u306E\u5024\u3092\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
5312
|
+
viewData: "\u3053\u306E\u30EC\u30B3\u30FC\u30C9\u306E\u30C7\u30FC\u30BF\u3092\u8868\u793A\u3057\u307E\u3059\u3002",
|
|
5313
|
+
addNewRecord: "\u65B0\u3057\u3044\u30EC\u30B3\u30FC\u30C9\u3092\u8FFD\u52A0",
|
|
5314
|
+
sortBy: "\u4E26\u3079\u66FF\u3048...",
|
|
5315
|
+
noSorting: "\u4E26\u3079\u66FF\u3048\u306A\u3057",
|
|
5316
|
+
ascending: "\u2191 \u3042-\u3093",
|
|
5317
|
+
descending: "\u2193 \u3093-\u3042",
|
|
5318
|
+
filterBy: "\u30D5\u30A3\u30EB\u30BF\u30FC...",
|
|
5319
|
+
noFilter: "\u30D5\u30A3\u30EB\u30BF\u30FC\u306A\u3057",
|
|
5320
|
+
filterValue: "\u30D5\u30A3\u30EB\u30BF\u30FC\u5024...",
|
|
5321
|
+
selectValue: "\u5024\u3092\u9078\u629E...",
|
|
5322
|
+
equals: "=",
|
|
5323
|
+
greater: ">",
|
|
5324
|
+
less: "<",
|
|
5325
|
+
greaterEqual: "\u2265",
|
|
5326
|
+
lessEqual: "\u2264",
|
|
5327
|
+
on: "\u65E5\u4ED8",
|
|
5328
|
+
before: "\u4EE5\u524D",
|
|
5329
|
+
after: "\u4EE5\u964D",
|
|
5330
|
+
yes: "\u306F\u3044",
|
|
5331
|
+
no: "\u3044\u3044\u3048",
|
|
5332
|
+
noDateField: "\u30B9\u30AD\u30FC\u30DE\u306B\u65E5\u4ED8\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u30AB\u30EC\u30F3\u30C0\u30FC\u30D3\u30E5\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3001\u65E5\u4ED8\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
5333
|
+
noSelectField: "\u30B9\u30AD\u30FC\u30DE\u306B\u9078\u629E\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u30AB\u30F3\u30D0\u30F3\u30D3\u30E5\u30FC\u3092\u6709\u52B9\u306B\u3059\u308B\u306B\u306F\u3001\u9078\u629E\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
5334
|
+
uncategorized: "\u672A\u5206\u985E",
|
|
5335
|
+
untitled: "\u7121\u984C",
|
|
5336
|
+
event: "\u30A4\u30D9\u30F3\u30C8",
|
|
5337
|
+
none: "\u306A\u3057",
|
|
5338
|
+
today: "\u4ECA\u65E5",
|
|
5339
|
+
weekDays: "\u65E5,\u6708,\u706B,\u6C34,\u6728,\u91D1,\u571F",
|
|
5340
|
+
monthNames: "1\u6708,2\u6708,3\u6708,4\u6708,5\u6708,6\u6708,7\u6708,8\u6708,9\u6708,10\u6708,11\u6708,12\u6708"
|
|
5341
|
+
}
|
|
5342
|
+
};
|
|
5343
|
+
function getTranslation(lang, key) {
|
|
5344
|
+
var _a;
|
|
5345
|
+
return ((_a = translations[lang]) == null ? void 0 : _a[key]) || translations.en[key] || key;
|
|
5346
|
+
}
|
|
5347
|
+
function getDirection(lang) {
|
|
5348
|
+
var _a;
|
|
5349
|
+
return ((_a = LANGUAGES[lang]) == null ? void 0 : _a.dir) || "ltr";
|
|
5350
|
+
}
|
|
5351
|
+
|
|
5352
|
+
// src/components/I18nProvider.tsx
|
|
5353
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
5354
|
+
var I18nContext = createContext(void 0);
|
|
5355
|
+
function I18nProvider({
|
|
5356
|
+
lang = "en",
|
|
5357
|
+
children
|
|
5358
|
+
}) {
|
|
5359
|
+
const t = (key) => getTranslation(lang, key);
|
|
5360
|
+
const dir = getDirection(lang);
|
|
5361
|
+
return /* @__PURE__ */ jsx8(I18nContext.Provider, { value: { lang, t, dir }, children: /* @__PURE__ */ jsx8("div", { dir, className: "w-full h-full", children }) });
|
|
5362
|
+
}
|
|
5363
|
+
function useI18n() {
|
|
5364
|
+
const context = useContext(I18nContext);
|
|
5365
|
+
if (!context) {
|
|
5366
|
+
return {
|
|
5367
|
+
lang: "en",
|
|
5368
|
+
t: (key) => getTranslation("en", key),
|
|
5369
|
+
dir: "ltr"
|
|
5370
|
+
};
|
|
5371
|
+
}
|
|
5372
|
+
return context;
|
|
5373
|
+
}
|
|
5374
|
+
|
|
5375
|
+
// src/components/views/GridView.tsx
|
|
5376
|
+
import { Fragment, jsx as jsx9, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
3731
5377
|
function GridView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenModal }) {
|
|
5378
|
+
var _a;
|
|
5379
|
+
const { t } = useI18n();
|
|
5380
|
+
const [sortField, setSortField] = useState("");
|
|
5381
|
+
const [sortDirection, setSortDirection] = useState("asc");
|
|
5382
|
+
const [filterField, setFilterField] = useState("");
|
|
5383
|
+
const [filterValue, setFilterValue] = useState("");
|
|
5384
|
+
const [filterOperator, setFilterOperator] = useState("contains");
|
|
5385
|
+
const selectedFilterField = useMemo(() => {
|
|
5386
|
+
return schema.fields.find((f) => f.id === filterField);
|
|
5387
|
+
}, [filterField, schema.fields]);
|
|
5388
|
+
const processedRecords = useMemo(() => {
|
|
5389
|
+
let filtered = [...records];
|
|
5390
|
+
if (filterField && filterValue) {
|
|
5391
|
+
filtered = filtered.filter((record) => {
|
|
5392
|
+
const value = record.fields[filterField];
|
|
5393
|
+
const field = schema.fields.find((f) => f.id === filterField);
|
|
5394
|
+
if (!field) return false;
|
|
5395
|
+
switch (field.type) {
|
|
5396
|
+
case "text":
|
|
5397
|
+
if (value == null) return false;
|
|
5398
|
+
return String(value).toLowerCase().includes(filterValue.toLowerCase());
|
|
5399
|
+
case "number":
|
|
5400
|
+
if (value == null) return false;
|
|
5401
|
+
const numValue = Number(value);
|
|
5402
|
+
const filterNum = Number(filterValue);
|
|
5403
|
+
switch (filterOperator) {
|
|
5404
|
+
case "equals":
|
|
5405
|
+
return numValue === filterNum;
|
|
5406
|
+
case "greater":
|
|
5407
|
+
return numValue > filterNum;
|
|
5408
|
+
case "less":
|
|
5409
|
+
return numValue < filterNum;
|
|
5410
|
+
case "greaterEqual":
|
|
5411
|
+
return numValue >= filterNum;
|
|
5412
|
+
case "lessEqual":
|
|
5413
|
+
return numValue <= filterNum;
|
|
5414
|
+
default:
|
|
5415
|
+
return false;
|
|
5416
|
+
}
|
|
5417
|
+
case "select":
|
|
5418
|
+
case "multiSelect":
|
|
5419
|
+
if (value == null) return false;
|
|
5420
|
+
if (Array.isArray(value)) {
|
|
5421
|
+
return value.includes(filterValue);
|
|
5422
|
+
}
|
|
5423
|
+
return value === filterValue;
|
|
5424
|
+
case "checkbox":
|
|
5425
|
+
return filterValue === "true" ? !!value : !value;
|
|
5426
|
+
case "date":
|
|
5427
|
+
if (value == null) return false;
|
|
5428
|
+
const recordDate = new Date(value);
|
|
5429
|
+
const filterDate = new Date(filterValue);
|
|
5430
|
+
switch (filterOperator) {
|
|
5431
|
+
case "before":
|
|
5432
|
+
return recordDate < filterDate;
|
|
5433
|
+
case "after":
|
|
5434
|
+
return recordDate > filterDate;
|
|
5435
|
+
case "equals":
|
|
5436
|
+
return recordDate.toDateString() === filterDate.toDateString();
|
|
5437
|
+
default:
|
|
5438
|
+
return false;
|
|
5439
|
+
}
|
|
5440
|
+
default:
|
|
5441
|
+
if (value == null) return false;
|
|
5442
|
+
return String(value).toLowerCase().includes(filterValue.toLowerCase());
|
|
5443
|
+
}
|
|
5444
|
+
});
|
|
5445
|
+
}
|
|
5446
|
+
if (sortField) {
|
|
5447
|
+
filtered.sort((a, b) => {
|
|
5448
|
+
const aVal = a.fields[sortField];
|
|
5449
|
+
const bVal = b.fields[sortField];
|
|
5450
|
+
if (aVal == null && bVal == null) return 0;
|
|
5451
|
+
if (aVal == null) return 1;
|
|
5452
|
+
if (bVal == null) return -1;
|
|
5453
|
+
let comparison = 0;
|
|
5454
|
+
if (typeof aVal === "number" && typeof bVal === "number") {
|
|
5455
|
+
comparison = aVal - bVal;
|
|
5456
|
+
} else {
|
|
5457
|
+
comparison = String(aVal).localeCompare(String(bVal));
|
|
5458
|
+
}
|
|
5459
|
+
return sortDirection === "asc" ? comparison : -comparison;
|
|
5460
|
+
});
|
|
5461
|
+
}
|
|
5462
|
+
return filtered;
|
|
5463
|
+
}, [records, sortField, sortDirection, filterField, filterValue, filterOperator, schema.fields]);
|
|
3732
5464
|
const renderCellValue = (record, field) => {
|
|
3733
|
-
var
|
|
5465
|
+
var _a2;
|
|
3734
5466
|
const value = record.fields[field.id];
|
|
3735
5467
|
switch (field.type) {
|
|
3736
5468
|
case "checkbox":
|
|
3737
|
-
return /* @__PURE__ */
|
|
5469
|
+
return /* @__PURE__ */ jsx9(
|
|
3738
5470
|
Checkbox,
|
|
3739
5471
|
{
|
|
3740
5472
|
checked: !!value,
|
|
@@ -3743,14 +5475,14 @@ function GridView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenModal
|
|
|
3743
5475
|
}
|
|
3744
5476
|
);
|
|
3745
5477
|
case "select":
|
|
3746
|
-
const option = (
|
|
3747
|
-
return value ? /* @__PURE__ */
|
|
5478
|
+
const option = (_a2 = field.options) == null ? void 0 : _a2.find((o) => o.name === value);
|
|
5479
|
+
return value ? /* @__PURE__ */ jsx9(Badge, { variant: "secondary", className: cn("font-normal", getBadgeColor(option == null ? void 0 : option.color)), children: value }) : null;
|
|
3748
5480
|
case "multiSelect":
|
|
3749
5481
|
const values = Array.isArray(value) ? value : [];
|
|
3750
|
-
return /* @__PURE__ */
|
|
3751
|
-
var
|
|
3752
|
-
const opt = (
|
|
3753
|
-
return /* @__PURE__ */
|
|
5482
|
+
return /* @__PURE__ */ jsx9("div", { className: "flex flex-wrap gap-1", children: values.map((v) => {
|
|
5483
|
+
var _a3;
|
|
5484
|
+
const opt = (_a3 = field.options) == null ? void 0 : _a3.find((o) => o.name === v);
|
|
5485
|
+
return /* @__PURE__ */ jsx9(Badge, { variant: "secondary", className: cn("font-normal", getBadgeColor(opt == null ? void 0 : opt.color)), children: v }, v);
|
|
3754
5486
|
}) });
|
|
3755
5487
|
case "date":
|
|
3756
5488
|
return value ? new Date(value).toLocaleDateString() : null;
|
|
@@ -3760,93 +5492,225 @@ function GridView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenModal
|
|
|
3760
5492
|
return value;
|
|
3761
5493
|
}
|
|
3762
5494
|
};
|
|
3763
|
-
return /* @__PURE__ */
|
|
3764
|
-
/* @__PURE__ */
|
|
3765
|
-
/* @__PURE__ */
|
|
3766
|
-
/* @__PURE__ */
|
|
3767
|
-
|
|
3768
|
-
|
|
3769
|
-
|
|
3770
|
-
|
|
3771
|
-
/* @__PURE__ */
|
|
3772
|
-
|
|
3773
|
-
|
|
3774
|
-
|
|
3775
|
-
|
|
3776
|
-
|
|
3777
|
-
|
|
3778
|
-
|
|
3779
|
-
|
|
3780
|
-
|
|
3781
|
-
|
|
3782
|
-
|
|
3783
|
-
|
|
3784
|
-
|
|
3785
|
-
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
|
|
3790
|
-
|
|
3791
|
-
|
|
3792
|
-
|
|
3793
|
-
|
|
3794
|
-
|
|
3795
|
-
|
|
3796
|
-
|
|
3797
|
-
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
|
|
3801
|
-
|
|
3802
|
-
|
|
3803
|
-
|
|
3804
|
-
|
|
3805
|
-
|
|
3806
|
-
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
|
|
3812
|
-
|
|
3813
|
-
|
|
3814
|
-
|
|
3815
|
-
|
|
3816
|
-
|
|
3817
|
-
|
|
3818
|
-
|
|
3819
|
-
|
|
3820
|
-
|
|
3821
|
-
|
|
3822
|
-
|
|
3823
|
-
|
|
3824
|
-
|
|
3825
|
-
|
|
3826
|
-
|
|
3827
|
-
|
|
3828
|
-
|
|
3829
|
-
|
|
3830
|
-
|
|
3831
|
-
|
|
3832
|
-
|
|
3833
|
-
|
|
5495
|
+
return /* @__PURE__ */ jsxs2("div", { className: "w-full grow overflow-hidden sm:pl-2 relative group flex flex-col h-full", children: [
|
|
5496
|
+
/* @__PURE__ */ jsxs2("div", { className: "relative w-full h-full flex flex-col", children: [
|
|
5497
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-3 p-3 border-b bg-muted/30", children: [
|
|
5498
|
+
/* @__PURE__ */ jsxs2(Button, { onClick: () => onOpenModal("add"), className: "h-9", children: [
|
|
5499
|
+
/* @__PURE__ */ jsx9(Plus, { className: "h-4 w-4 mr-2" }),
|
|
5500
|
+
t("addRecord")
|
|
5501
|
+
] }),
|
|
5502
|
+
/* @__PURE__ */ jsx9("div", { className: "h-6 w-px bg-border" }),
|
|
5503
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2", children: [
|
|
5504
|
+
/* @__PURE__ */ jsx9(ArrowUpDown, { className: "h-4 w-4 text-muted-foreground" }),
|
|
5505
|
+
/* @__PURE__ */ jsxs2(Select, { value: sortField || "none", onValueChange: (v) => setSortField(v === "none" ? "" : v), children: [
|
|
5506
|
+
/* @__PURE__ */ jsx9(SelectTrigger, { className: "w-[180px] h-9", children: /* @__PURE__ */ jsx9(SelectValue, { placeholder: t("sortBy") }) }),
|
|
5507
|
+
/* @__PURE__ */ jsxs2(SelectContent, { children: [
|
|
5508
|
+
/* @__PURE__ */ jsx9(SelectItem, { value: "none", children: t("noSorting") }),
|
|
5509
|
+
schema.fields.map((field) => /* @__PURE__ */ jsx9(SelectItem, { value: field.id, children: field.name }, field.id))
|
|
5510
|
+
] })
|
|
5511
|
+
] }),
|
|
5512
|
+
sortField && /* @__PURE__ */ jsx9(
|
|
5513
|
+
Button,
|
|
5514
|
+
{
|
|
5515
|
+
variant: "outline",
|
|
5516
|
+
size: "sm",
|
|
5517
|
+
className: "h-9",
|
|
5518
|
+
onClick: () => setSortDirection(sortDirection === "asc" ? "desc" : "asc"),
|
|
5519
|
+
children: sortDirection === "asc" ? t("ascending") : t("descending")
|
|
5520
|
+
}
|
|
5521
|
+
)
|
|
5522
|
+
] }),
|
|
5523
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2 flex-1", children: [
|
|
5524
|
+
/* @__PURE__ */ jsx9(Filter, { className: "h-4 w-4 text-muted-foreground" }),
|
|
5525
|
+
/* @__PURE__ */ jsxs2(Select, { value: filterField || "none", onValueChange: (v) => {
|
|
5526
|
+
const newField = v === "none" ? "" : v;
|
|
5527
|
+
setFilterField(newField);
|
|
5528
|
+
setFilterValue("");
|
|
5529
|
+
if (newField) {
|
|
5530
|
+
const field = schema.fields.find((f) => f.id === newField);
|
|
5531
|
+
if ((field == null ? void 0 : field.type) === "number") setFilterOperator("equals");
|
|
5532
|
+
else if ((field == null ? void 0 : field.type) === "date") setFilterOperator("equals");
|
|
5533
|
+
else setFilterOperator("contains");
|
|
5534
|
+
}
|
|
5535
|
+
}, children: [
|
|
5536
|
+
/* @__PURE__ */ jsx9(SelectTrigger, { className: "w-[180px] h-9", children: /* @__PURE__ */ jsx9(SelectValue, { placeholder: t("filterBy") }) }),
|
|
5537
|
+
/* @__PURE__ */ jsxs2(SelectContent, { children: [
|
|
5538
|
+
/* @__PURE__ */ jsx9(SelectItem, { value: "none", children: t("noFilter") }),
|
|
5539
|
+
schema.fields.map((field) => /* @__PURE__ */ jsx9(SelectItem, { value: field.id, children: field.name }, field.id))
|
|
5540
|
+
] })
|
|
5541
|
+
] }),
|
|
5542
|
+
filterField && selectedFilterField && /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
5543
|
+
selectedFilterField.type === "number" && /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
5544
|
+
/* @__PURE__ */ jsxs2(Select, { value: filterOperator, onValueChange: setFilterOperator, children: [
|
|
5545
|
+
/* @__PURE__ */ jsx9(SelectTrigger, { className: "w-[120px] h-9", children: /* @__PURE__ */ jsx9(SelectValue, {}) }),
|
|
5546
|
+
/* @__PURE__ */ jsxs2(SelectContent, { children: [
|
|
5547
|
+
/* @__PURE__ */ jsx9(SelectItem, { value: "equals", children: t("equals") }),
|
|
5548
|
+
/* @__PURE__ */ jsx9(SelectItem, { value: "greater", children: t("greater") }),
|
|
5549
|
+
/* @__PURE__ */ jsx9(SelectItem, { value: "less", children: t("less") }),
|
|
5550
|
+
/* @__PURE__ */ jsx9(SelectItem, { value: "greaterEqual", children: t("greaterEqual") }),
|
|
5551
|
+
/* @__PURE__ */ jsx9(SelectItem, { value: "lessEqual", children: t("lessEqual") })
|
|
5552
|
+
] })
|
|
5553
|
+
] }),
|
|
5554
|
+
/* @__PURE__ */ jsx9(
|
|
5555
|
+
Input,
|
|
5556
|
+
{
|
|
5557
|
+
type: "number",
|
|
5558
|
+
placeholder: t("filterValue"),
|
|
5559
|
+
value: filterValue,
|
|
5560
|
+
onChange: (e) => setFilterValue(e.target.value),
|
|
5561
|
+
className: "w-[150px] h-9"
|
|
5562
|
+
}
|
|
5563
|
+
)
|
|
5564
|
+
] }),
|
|
5565
|
+
selectedFilterField.type === "date" && /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
5566
|
+
/* @__PURE__ */ jsxs2(Select, { value: filterOperator, onValueChange: setFilterOperator, children: [
|
|
5567
|
+
/* @__PURE__ */ jsx9(SelectTrigger, { className: "w-[120px] h-9", children: /* @__PURE__ */ jsx9(SelectValue, {}) }),
|
|
5568
|
+
/* @__PURE__ */ jsxs2(SelectContent, { children: [
|
|
5569
|
+
/* @__PURE__ */ jsx9(SelectItem, { value: "equals", children: t("on") }),
|
|
5570
|
+
/* @__PURE__ */ jsx9(SelectItem, { value: "before", children: t("before") }),
|
|
5571
|
+
/* @__PURE__ */ jsx9(SelectItem, { value: "after", children: t("after") })
|
|
5572
|
+
] })
|
|
5573
|
+
] }),
|
|
5574
|
+
/* @__PURE__ */ jsx9(
|
|
5575
|
+
Input,
|
|
5576
|
+
{
|
|
5577
|
+
type: "date",
|
|
5578
|
+
value: filterValue,
|
|
5579
|
+
onChange: (e) => setFilterValue(e.target.value),
|
|
5580
|
+
className: "w-[180px] h-9"
|
|
5581
|
+
}
|
|
5582
|
+
)
|
|
5583
|
+
] }),
|
|
5584
|
+
(selectedFilterField.type === "select" || selectedFilterField.type === "multiSelect") && /* @__PURE__ */ jsxs2(Select, { value: filterValue, onValueChange: setFilterValue, children: [
|
|
5585
|
+
/* @__PURE__ */ jsx9(SelectTrigger, { className: "w-[200px] h-9", children: /* @__PURE__ */ jsx9(SelectValue, { placeholder: t("selectValue") }) }),
|
|
5586
|
+
/* @__PURE__ */ jsx9(SelectContent, { children: (_a = selectedFilterField.options) == null ? void 0 : _a.map((option) => /* @__PURE__ */ jsx9(SelectItem, { value: option.name, children: option.name }, option.id)) })
|
|
5587
|
+
] }),
|
|
5588
|
+
selectedFilterField.type === "checkbox" && /* @__PURE__ */ jsxs2(Select, { value: filterValue, onValueChange: setFilterValue, children: [
|
|
5589
|
+
/* @__PURE__ */ jsx9(SelectTrigger, { className: "w-[150px] h-9", children: /* @__PURE__ */ jsx9(SelectValue, { placeholder: t("selectValue") }) }),
|
|
5590
|
+
/* @__PURE__ */ jsxs2(SelectContent, { children: [
|
|
5591
|
+
/* @__PURE__ */ jsx9(SelectItem, { value: "true", children: t("yes") }),
|
|
5592
|
+
/* @__PURE__ */ jsx9(SelectItem, { value: "false", children: t("no") })
|
|
5593
|
+
] })
|
|
5594
|
+
] }),
|
|
5595
|
+
selectedFilterField.type === "text" && /* @__PURE__ */ jsx9(
|
|
5596
|
+
Input,
|
|
5597
|
+
{
|
|
5598
|
+
placeholder: t("filterValue"),
|
|
5599
|
+
value: filterValue,
|
|
5600
|
+
onChange: (e) => setFilterValue(e.target.value),
|
|
5601
|
+
className: "w-[200px] h-9"
|
|
5602
|
+
}
|
|
5603
|
+
),
|
|
5604
|
+
/* @__PURE__ */ jsx9(
|
|
5605
|
+
Button,
|
|
5606
|
+
{
|
|
5607
|
+
variant: "ghost",
|
|
5608
|
+
size: "sm",
|
|
5609
|
+
className: "h-9 w-9 p-0",
|
|
5610
|
+
onClick: () => {
|
|
5611
|
+
setFilterField("");
|
|
5612
|
+
setFilterValue("");
|
|
5613
|
+
setFilterOperator("contains");
|
|
5614
|
+
},
|
|
5615
|
+
children: /* @__PURE__ */ jsx9(X, { className: "h-4 w-4" })
|
|
5616
|
+
}
|
|
5617
|
+
)
|
|
5618
|
+
] })
|
|
5619
|
+
] }),
|
|
5620
|
+
/* @__PURE__ */ jsxs2("div", { className: "text-sm text-muted-foreground", children: [
|
|
5621
|
+
processedRecords.length,
|
|
5622
|
+
" of ",
|
|
5623
|
+
records.length,
|
|
5624
|
+
" records"
|
|
5625
|
+
] })
|
|
5626
|
+
] }),
|
|
5627
|
+
/* @__PURE__ */ jsx9("div", { className: "w-full flex-1", style: { pointerEvents: "auto" }, children: /* @__PURE__ */ jsx9("div", { "data-t-grid-container": "true", tabIndex: 0, className: "relative outline-none w-full h-full", children: /* @__PURE__ */ jsx9("div", { className: "w-full h-full overflow-auto pb-10", children: /* @__PURE__ */ jsxs2(Table, { children: [
|
|
5628
|
+
/* @__PURE__ */ jsx9(TableHeader, { className: "bg-muted/50 sticky top-0 z-10", children: /* @__PURE__ */ jsxs2(TableRow, { children: [
|
|
5629
|
+
/* @__PURE__ */ jsx9(TableHead, { className: "w-12 text-muted-foreground", children: "#" }),
|
|
5630
|
+
schema.fields.map((field) => /* @__PURE__ */ jsxs2(TableHead, { className: "min-w-[150px]", children: [
|
|
5631
|
+
/* @__PURE__ */ jsx9("span", { className: "font-medium", children: field.name }),
|
|
5632
|
+
field.isPrimary && /* @__PURE__ */ jsx9(Badge, { variant: "outline", className: "ml-2 text-xs", children: "Primary" })
|
|
5633
|
+
] }, field.id)),
|
|
5634
|
+
/* @__PURE__ */ jsx9(TableHead, { className: "w-[100px] text-right", children: "Actions" })
|
|
5635
|
+
] }) }),
|
|
5636
|
+
/* @__PURE__ */ jsxs2(TableBody, { children: [
|
|
5637
|
+
processedRecords.map((record, index) => /* @__PURE__ */ jsxs2(
|
|
5638
|
+
TableRow,
|
|
5639
|
+
{
|
|
5640
|
+
className: "group cursor-pointer hover:bg-muted/50",
|
|
5641
|
+
onClick: () => onOpenModal("view", record),
|
|
5642
|
+
children: [
|
|
5643
|
+
/* @__PURE__ */ jsx9(TableCell, { className: "text-muted-foreground tabular-nums", children: index + 1 }),
|
|
5644
|
+
schema.fields.map((field) => /* @__PURE__ */ jsx9(TableCell, { children: /* @__PURE__ */ jsx9("div", { className: "min-h-[24px] flex items-center", children: renderCellValue(record, field) }) }, field.id)),
|
|
5645
|
+
/* @__PURE__ */ jsx9(TableCell, { className: "text-right", onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsxs2("div", { className: "flex justify-end gap-1 opacity-0 group-hover:opacity-100 transition-opacity", children: [
|
|
5646
|
+
/* @__PURE__ */ jsx9(
|
|
5647
|
+
Button,
|
|
5648
|
+
{
|
|
5649
|
+
variant: "ghost",
|
|
5650
|
+
size: "icon",
|
|
5651
|
+
className: "h-8 w-8",
|
|
5652
|
+
onClick: () => onOpenModal("view", record),
|
|
5653
|
+
children: /* @__PURE__ */ jsx9(Eye, { className: "h-4 w-4" })
|
|
5654
|
+
}
|
|
5655
|
+
),
|
|
5656
|
+
/* @__PURE__ */ jsx9(
|
|
5657
|
+
Button,
|
|
5658
|
+
{
|
|
5659
|
+
variant: "ghost",
|
|
5660
|
+
size: "icon",
|
|
5661
|
+
className: "h-8 w-8",
|
|
5662
|
+
onClick: () => onOpenModal("edit", record),
|
|
5663
|
+
children: /* @__PURE__ */ jsx9(Pencil, { className: "h-4 w-4" })
|
|
5664
|
+
}
|
|
5665
|
+
),
|
|
5666
|
+
/* @__PURE__ */ jsx9(
|
|
5667
|
+
Button,
|
|
5668
|
+
{
|
|
5669
|
+
variant: "ghost",
|
|
5670
|
+
size: "icon",
|
|
5671
|
+
className: "h-8 w-8 text-muted-foreground hover:text-destructive",
|
|
5672
|
+
onClick: () => onDeleteRecord(record.id),
|
|
5673
|
+
children: /* @__PURE__ */ jsx9(Trash2, { className: "h-4 w-4" })
|
|
5674
|
+
}
|
|
5675
|
+
)
|
|
5676
|
+
] }) })
|
|
5677
|
+
]
|
|
5678
|
+
},
|
|
5679
|
+
record.id
|
|
5680
|
+
)),
|
|
5681
|
+
/* @__PURE__ */ jsx9(TableRow, { children: /* @__PURE__ */ jsx9(TableCell, { colSpan: schema.fields.length + 2, className: "p-0", children: /* @__PURE__ */ jsxs2(
|
|
5682
|
+
Button,
|
|
5683
|
+
{
|
|
5684
|
+
variant: "ghost",
|
|
5685
|
+
size: "sm",
|
|
5686
|
+
onClick: () => onOpenModal("add"),
|
|
5687
|
+
className: "w-full justify-start px-4 h-10 text-muted-foreground hover:text-foreground rounded-none",
|
|
5688
|
+
children: [
|
|
5689
|
+
/* @__PURE__ */ jsx9(Plus, { className: "h-4 w-4 mr-2" }),
|
|
5690
|
+
"Add new record"
|
|
5691
|
+
]
|
|
5692
|
+
}
|
|
5693
|
+
) }) })
|
|
5694
|
+
] })
|
|
5695
|
+
] }) }) }) })
|
|
5696
|
+
] }),
|
|
5697
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex items-center h-6 pl-2 ml-1 text-xs bg-violet-200 dark:bg-zinc-600 rounded absolute bottom-3 left-0 shadow-sm z-20", children: [
|
|
3834
5698
|
records.length,
|
|
3835
5699
|
" records",
|
|
3836
|
-
/* @__PURE__ */
|
|
5700
|
+
/* @__PURE__ */ jsx9("button", { className: "inline-flex items-center justify-center whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 gap-2 hover:text-accent-foreground rounded-md text-xs ml-[2px] h-full rounded-l-none p-[2px] hover:bg-violet-300 dark:hover:bg-zinc-500", children: /* @__PURE__ */ jsx9("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "none", viewBox: "0 0 24 24", className: "w-3 h-3", children: /* @__PURE__ */ jsx9("path", { stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "m15 18-6-6 6-6" }) }) })
|
|
3837
5701
|
] })
|
|
3838
5702
|
] });
|
|
3839
5703
|
}
|
|
3840
5704
|
|
|
3841
5705
|
// src/components/views/FormView.tsx
|
|
3842
|
-
import { useState as
|
|
5706
|
+
import { useState as useState3 } from "react";
|
|
3843
5707
|
|
|
3844
5708
|
// src/components/ui/card.tsx
|
|
3845
|
-
import * as
|
|
3846
|
-
import { jsx as
|
|
3847
|
-
var Card =
|
|
5709
|
+
import * as React8 from "react";
|
|
5710
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
5711
|
+
var Card = React8.forwardRef((_a, ref) => {
|
|
3848
5712
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3849
|
-
return /* @__PURE__ */
|
|
5713
|
+
return /* @__PURE__ */ jsx10(
|
|
3850
5714
|
"div",
|
|
3851
5715
|
__spreadValues({
|
|
3852
5716
|
ref,
|
|
@@ -3858,9 +5722,9 @@ var Card = React5.forwardRef((_a, ref) => {
|
|
|
3858
5722
|
);
|
|
3859
5723
|
});
|
|
3860
5724
|
Card.displayName = "Card";
|
|
3861
|
-
var CardHeader =
|
|
5725
|
+
var CardHeader = React8.forwardRef((_a, ref) => {
|
|
3862
5726
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3863
|
-
return /* @__PURE__ */
|
|
5727
|
+
return /* @__PURE__ */ jsx10(
|
|
3864
5728
|
"div",
|
|
3865
5729
|
__spreadValues({
|
|
3866
5730
|
ref,
|
|
@@ -3869,9 +5733,9 @@ var CardHeader = React5.forwardRef((_a, ref) => {
|
|
|
3869
5733
|
);
|
|
3870
5734
|
});
|
|
3871
5735
|
CardHeader.displayName = "CardHeader";
|
|
3872
|
-
var CardTitle =
|
|
5736
|
+
var CardTitle = React8.forwardRef((_a, ref) => {
|
|
3873
5737
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3874
|
-
return /* @__PURE__ */
|
|
5738
|
+
return /* @__PURE__ */ jsx10(
|
|
3875
5739
|
"div",
|
|
3876
5740
|
__spreadValues({
|
|
3877
5741
|
ref,
|
|
@@ -3880,9 +5744,9 @@ var CardTitle = React5.forwardRef((_a, ref) => {
|
|
|
3880
5744
|
);
|
|
3881
5745
|
});
|
|
3882
5746
|
CardTitle.displayName = "CardTitle";
|
|
3883
|
-
var CardDescription =
|
|
5747
|
+
var CardDescription = React8.forwardRef((_a, ref) => {
|
|
3884
5748
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3885
|
-
return /* @__PURE__ */
|
|
5749
|
+
return /* @__PURE__ */ jsx10(
|
|
3886
5750
|
"div",
|
|
3887
5751
|
__spreadValues({
|
|
3888
5752
|
ref,
|
|
@@ -3891,14 +5755,14 @@ var CardDescription = React5.forwardRef((_a, ref) => {
|
|
|
3891
5755
|
);
|
|
3892
5756
|
});
|
|
3893
5757
|
CardDescription.displayName = "CardDescription";
|
|
3894
|
-
var CardContent =
|
|
5758
|
+
var CardContent = React8.forwardRef((_a, ref) => {
|
|
3895
5759
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3896
|
-
return /* @__PURE__ */
|
|
5760
|
+
return /* @__PURE__ */ jsx10("div", __spreadValues({ ref, className: cn("p-6 pt-0", className) }, props));
|
|
3897
5761
|
});
|
|
3898
5762
|
CardContent.displayName = "CardContent";
|
|
3899
|
-
var CardFooter =
|
|
5763
|
+
var CardFooter = React8.forwardRef((_a, ref) => {
|
|
3900
5764
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3901
|
-
return /* @__PURE__ */
|
|
5765
|
+
return /* @__PURE__ */ jsx10(
|
|
3902
5766
|
"div",
|
|
3903
5767
|
__spreadValues({
|
|
3904
5768
|
ref,
|
|
@@ -3909,9 +5773,9 @@ var CardFooter = React5.forwardRef((_a, ref) => {
|
|
|
3909
5773
|
CardFooter.displayName = "CardFooter";
|
|
3910
5774
|
|
|
3911
5775
|
// src/components/ui/alert.tsx
|
|
3912
|
-
import * as
|
|
5776
|
+
import * as React9 from "react";
|
|
3913
5777
|
import { cva as cva3 } from "class-variance-authority";
|
|
3914
|
-
import { jsx as
|
|
5778
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
3915
5779
|
var alertVariants = cva3(
|
|
3916
5780
|
"relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",
|
|
3917
5781
|
{
|
|
@@ -3926,9 +5790,9 @@ var alertVariants = cva3(
|
|
|
3926
5790
|
}
|
|
3927
5791
|
}
|
|
3928
5792
|
);
|
|
3929
|
-
var Alert =
|
|
5793
|
+
var Alert = React9.forwardRef((_a, ref) => {
|
|
3930
5794
|
var _b = _a, { className, variant } = _b, props = __objRest(_b, ["className", "variant"]);
|
|
3931
|
-
return /* @__PURE__ */
|
|
5795
|
+
return /* @__PURE__ */ jsx11(
|
|
3932
5796
|
"div",
|
|
3933
5797
|
__spreadValues({
|
|
3934
5798
|
ref,
|
|
@@ -3938,213 +5802,61 @@ var Alert = React6.forwardRef((_a, ref) => {
|
|
|
3938
5802
|
);
|
|
3939
5803
|
});
|
|
3940
5804
|
Alert.displayName = "Alert";
|
|
3941
|
-
var AlertTitle =
|
|
3942
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3943
|
-
return /* @__PURE__ */ jsx8(
|
|
3944
|
-
"h5",
|
|
3945
|
-
__spreadValues({
|
|
3946
|
-
ref,
|
|
3947
|
-
className: cn("mb-1 font-medium leading-none tracking-tight", className)
|
|
3948
|
-
}, props)
|
|
3949
|
-
);
|
|
3950
|
-
});
|
|
3951
|
-
AlertTitle.displayName = "AlertTitle";
|
|
3952
|
-
var AlertDescription = React6.forwardRef((_a, ref) => {
|
|
3953
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3954
|
-
return /* @__PURE__ */ jsx8(
|
|
3955
|
-
"div",
|
|
3956
|
-
__spreadValues({
|
|
3957
|
-
ref,
|
|
3958
|
-
className: cn("text-sm [&_p]:leading-relaxed", className)
|
|
3959
|
-
}, props)
|
|
3960
|
-
);
|
|
3961
|
-
});
|
|
3962
|
-
AlertDescription.displayName = "AlertDescription";
|
|
3963
|
-
|
|
3964
|
-
// src/components/views/FormView.tsx
|
|
3965
|
-
import { CheckCircle2 } from "lucide-react";
|
|
3966
|
-
|
|
3967
|
-
// src/components/RecordForm.tsx
|
|
3968
|
-
import { useState, useEffect } from "react";
|
|
3969
|
-
|
|
3970
|
-
// src/components/ui/input.tsx
|
|
3971
|
-
import * as React7 from "react";
|
|
3972
|
-
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
3973
|
-
var Input = React7.forwardRef(
|
|
3974
|
-
(_a, ref) => {
|
|
3975
|
-
var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
|
|
3976
|
-
return /* @__PURE__ */ jsx9(
|
|
3977
|
-
"input",
|
|
3978
|
-
__spreadValues({
|
|
3979
|
-
type,
|
|
3980
|
-
className: cn(
|
|
3981
|
-
"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
|
3982
|
-
className
|
|
3983
|
-
),
|
|
3984
|
-
ref
|
|
3985
|
-
}, props)
|
|
3986
|
-
);
|
|
3987
|
-
}
|
|
3988
|
-
);
|
|
3989
|
-
Input.displayName = "Input";
|
|
3990
|
-
|
|
3991
|
-
// src/components/ui/label.tsx
|
|
3992
|
-
import * as React8 from "react";
|
|
3993
|
-
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
3994
|
-
import { cva as cva4 } from "class-variance-authority";
|
|
3995
|
-
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
3996
|
-
var labelVariants = cva4(
|
|
3997
|
-
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
3998
|
-
);
|
|
3999
|
-
var Label = React8.forwardRef((_a, ref) => {
|
|
4000
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4001
|
-
return /* @__PURE__ */ jsx10(
|
|
4002
|
-
LabelPrimitive.Root,
|
|
4003
|
-
__spreadValues({
|
|
4004
|
-
ref,
|
|
4005
|
-
className: cn(labelVariants(), className)
|
|
4006
|
-
}, props)
|
|
4007
|
-
);
|
|
4008
|
-
});
|
|
4009
|
-
Label.displayName = LabelPrimitive.Root.displayName;
|
|
4010
|
-
|
|
4011
|
-
// src/components/ui/select.tsx
|
|
4012
|
-
import * as React9 from "react";
|
|
4013
|
-
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
4014
|
-
import { Check as Check2, ChevronDown, ChevronUp } from "lucide-react";
|
|
4015
|
-
import { jsx as jsx11, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
4016
|
-
var Select = SelectPrimitive.Root;
|
|
4017
|
-
var SelectValue = SelectPrimitive.Value;
|
|
4018
|
-
var SelectTrigger = React9.forwardRef((_a, ref) => {
|
|
4019
|
-
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
4020
|
-
return /* @__PURE__ */ jsxs2(
|
|
4021
|
-
SelectPrimitive.Trigger,
|
|
4022
|
-
__spreadProps(__spreadValues({
|
|
4023
|
-
ref,
|
|
4024
|
-
className: cn(
|
|
4025
|
-
"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
|
|
4026
|
-
className
|
|
4027
|
-
)
|
|
4028
|
-
}, props), {
|
|
4029
|
-
children: [
|
|
4030
|
-
children,
|
|
4031
|
-
/* @__PURE__ */ jsx11(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx11(ChevronDown, { className: "h-4 w-4 opacity-50" }) })
|
|
4032
|
-
]
|
|
4033
|
-
})
|
|
4034
|
-
);
|
|
4035
|
-
});
|
|
4036
|
-
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
4037
|
-
var SelectScrollUpButton = React9.forwardRef((_a, ref) => {
|
|
4038
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4039
|
-
return /* @__PURE__ */ jsx11(
|
|
4040
|
-
SelectPrimitive.ScrollUpButton,
|
|
4041
|
-
__spreadProps(__spreadValues({
|
|
4042
|
-
ref,
|
|
4043
|
-
className: cn(
|
|
4044
|
-
"flex cursor-default items-center justify-center py-1",
|
|
4045
|
-
className
|
|
4046
|
-
)
|
|
4047
|
-
}, props), {
|
|
4048
|
-
children: /* @__PURE__ */ jsx11(ChevronUp, { className: "h-4 w-4" })
|
|
4049
|
-
})
|
|
4050
|
-
);
|
|
4051
|
-
});
|
|
4052
|
-
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
4053
|
-
var SelectScrollDownButton = React9.forwardRef((_a, ref) => {
|
|
4054
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4055
|
-
return /* @__PURE__ */ jsx11(
|
|
4056
|
-
SelectPrimitive.ScrollDownButton,
|
|
4057
|
-
__spreadProps(__spreadValues({
|
|
4058
|
-
ref,
|
|
4059
|
-
className: cn(
|
|
4060
|
-
"flex cursor-default items-center justify-center py-1",
|
|
4061
|
-
className
|
|
4062
|
-
)
|
|
4063
|
-
}, props), {
|
|
4064
|
-
children: /* @__PURE__ */ jsx11(ChevronDown, { className: "h-4 w-4" })
|
|
4065
|
-
})
|
|
4066
|
-
);
|
|
4067
|
-
});
|
|
4068
|
-
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
4069
|
-
var SelectContent = React9.forwardRef((_a, ref) => {
|
|
4070
|
-
var _b = _a, { className, children, position = "popper" } = _b, props = __objRest(_b, ["className", "children", "position"]);
|
|
4071
|
-
return /* @__PURE__ */ jsx11(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs2(
|
|
4072
|
-
SelectPrimitive.Content,
|
|
4073
|
-
__spreadProps(__spreadValues({
|
|
4074
|
-
ref,
|
|
4075
|
-
className: cn(
|
|
4076
|
-
"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",
|
|
4077
|
-
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
4078
|
-
className
|
|
4079
|
-
),
|
|
4080
|
-
position
|
|
4081
|
-
}, props), {
|
|
4082
|
-
children: [
|
|
4083
|
-
/* @__PURE__ */ jsx11(SelectScrollUpButton, {}),
|
|
4084
|
-
/* @__PURE__ */ jsx11(
|
|
4085
|
-
SelectPrimitive.Viewport,
|
|
4086
|
-
{
|
|
4087
|
-
className: cn(
|
|
4088
|
-
"p-1",
|
|
4089
|
-
position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
|
|
4090
|
-
),
|
|
4091
|
-
children
|
|
4092
|
-
}
|
|
4093
|
-
),
|
|
4094
|
-
/* @__PURE__ */ jsx11(SelectScrollDownButton, {})
|
|
4095
|
-
]
|
|
4096
|
-
})
|
|
4097
|
-
) });
|
|
4098
|
-
});
|
|
4099
|
-
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
4100
|
-
var SelectLabel = React9.forwardRef((_a, ref) => {
|
|
5805
|
+
var AlertTitle = React9.forwardRef((_a, ref) => {
|
|
4101
5806
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4102
5807
|
return /* @__PURE__ */ jsx11(
|
|
4103
|
-
|
|
5808
|
+
"h5",
|
|
4104
5809
|
__spreadValues({
|
|
4105
5810
|
ref,
|
|
4106
|
-
className: cn("
|
|
4107
|
-
}, props)
|
|
4108
|
-
);
|
|
4109
|
-
});
|
|
4110
|
-
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
4111
|
-
var SelectItem = React9.forwardRef((_a, ref) => {
|
|
4112
|
-
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
4113
|
-
return /* @__PURE__ */ jsxs2(
|
|
4114
|
-
SelectPrimitive.Item,
|
|
4115
|
-
__spreadProps(__spreadValues({
|
|
4116
|
-
ref,
|
|
4117
|
-
className: cn(
|
|
4118
|
-
"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
4119
|
-
className
|
|
4120
|
-
)
|
|
4121
|
-
}, props), {
|
|
4122
|
-
children: [
|
|
4123
|
-
/* @__PURE__ */ jsx11("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx11(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx11(Check2, { className: "h-4 w-4" }) }) }),
|
|
4124
|
-
/* @__PURE__ */ jsx11(SelectPrimitive.ItemText, { children })
|
|
4125
|
-
]
|
|
4126
|
-
})
|
|
5811
|
+
className: cn("mb-1 font-medium leading-none tracking-tight", className)
|
|
5812
|
+
}, props)
|
|
4127
5813
|
);
|
|
4128
5814
|
});
|
|
4129
|
-
|
|
4130
|
-
var
|
|
5815
|
+
AlertTitle.displayName = "AlertTitle";
|
|
5816
|
+
var AlertDescription = React9.forwardRef((_a, ref) => {
|
|
4131
5817
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4132
5818
|
return /* @__PURE__ */ jsx11(
|
|
4133
|
-
|
|
5819
|
+
"div",
|
|
4134
5820
|
__spreadValues({
|
|
4135
5821
|
ref,
|
|
4136
|
-
className: cn("-
|
|
5822
|
+
className: cn("text-sm [&_p]:leading-relaxed", className)
|
|
4137
5823
|
}, props)
|
|
4138
5824
|
);
|
|
4139
5825
|
});
|
|
4140
|
-
|
|
5826
|
+
AlertDescription.displayName = "AlertDescription";
|
|
4141
5827
|
|
|
4142
|
-
// src/components/
|
|
5828
|
+
// src/components/views/FormView.tsx
|
|
5829
|
+
import { CheckCircle2 } from "lucide-react";
|
|
5830
|
+
|
|
5831
|
+
// src/components/RecordForm.tsx
|
|
5832
|
+
import { useState as useState2, useEffect } from "react";
|
|
5833
|
+
|
|
5834
|
+
// src/components/ui/label.tsx
|
|
4143
5835
|
import * as React10 from "react";
|
|
5836
|
+
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
5837
|
+
import { cva as cva4 } from "class-variance-authority";
|
|
4144
5838
|
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
4145
|
-
var
|
|
5839
|
+
var labelVariants = cva4(
|
|
5840
|
+
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
5841
|
+
);
|
|
5842
|
+
var Label2 = React10.forwardRef((_a, ref) => {
|
|
4146
5843
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4147
5844
|
return /* @__PURE__ */ jsx12(
|
|
5845
|
+
LabelPrimitive.Root,
|
|
5846
|
+
__spreadValues({
|
|
5847
|
+
ref,
|
|
5848
|
+
className: cn(labelVariants(), className)
|
|
5849
|
+
}, props)
|
|
5850
|
+
);
|
|
5851
|
+
});
|
|
5852
|
+
Label2.displayName = LabelPrimitive.Root.displayName;
|
|
5853
|
+
|
|
5854
|
+
// src/components/ui/textarea.tsx
|
|
5855
|
+
import * as React11 from "react";
|
|
5856
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
5857
|
+
var Textarea = React11.forwardRef((_a, ref) => {
|
|
5858
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5859
|
+
return /* @__PURE__ */ jsx13(
|
|
4148
5860
|
"textarea",
|
|
4149
5861
|
__spreadValues({
|
|
4150
5862
|
className: cn(
|
|
@@ -4158,18 +5870,11 @@ var Textarea = React10.forwardRef((_a, ref) => {
|
|
|
4158
5870
|
Textarea.displayName = "Textarea";
|
|
4159
5871
|
|
|
4160
5872
|
// src/components/RecordForm.tsx
|
|
4161
|
-
import { jsx as
|
|
4162
|
-
var COLOR_MAP = {
|
|
4163
|
-
gray: "bg-muted",
|
|
4164
|
-
blue: "bg-blue-500",
|
|
4165
|
-
green: "bg-green-500",
|
|
4166
|
-
yellow: "bg-amber-500",
|
|
4167
|
-
red: "bg-red-500",
|
|
4168
|
-
purple: "bg-purple-500"
|
|
4169
|
-
};
|
|
5873
|
+
import { jsx as jsx14, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
4170
5874
|
var DEFAULT_INITIAL_VALUES = {};
|
|
4171
5875
|
function RecordForm({ schema, initialValues = DEFAULT_INITIAL_VALUES, onSubmit, mode }) {
|
|
4172
|
-
const
|
|
5876
|
+
const { t } = useI18n();
|
|
5877
|
+
const [formData, setFormData] = useState2(initialValues);
|
|
4173
5878
|
useEffect(() => {
|
|
4174
5879
|
setFormData(initialValues);
|
|
4175
5880
|
}, [initialValues]);
|
|
@@ -4183,44 +5888,44 @@ function RecordForm({ schema, initialValues = DEFAULT_INITIAL_VALUES, onSubmit,
|
|
|
4183
5888
|
};
|
|
4184
5889
|
const isReadOnly = mode === "view";
|
|
4185
5890
|
const renderField = (field) => {
|
|
4186
|
-
var _a, _b, _c;
|
|
5891
|
+
var _a, _b, _c, _d;
|
|
4187
5892
|
const value = (_a = formData[field.id]) != null ? _a : "";
|
|
4188
5893
|
if (field.id === "description" || field.type === "text" && field.name.toLowerCase().includes("description")) {
|
|
4189
|
-
return /* @__PURE__ */
|
|
5894
|
+
return /* @__PURE__ */ jsx14(
|
|
4190
5895
|
Textarea,
|
|
4191
5896
|
{
|
|
4192
5897
|
value,
|
|
4193
5898
|
disabled: isReadOnly,
|
|
4194
5899
|
onChange: (e) => handleChange(field.id, e.target.value),
|
|
4195
|
-
placeholder: isReadOnly ? "" :
|
|
5900
|
+
placeholder: isReadOnly ? "" : `${t("enterDetails")}...`,
|
|
4196
5901
|
className: "min-h-[100px] resize-none"
|
|
4197
5902
|
}
|
|
4198
5903
|
);
|
|
4199
5904
|
}
|
|
4200
5905
|
switch (field.type) {
|
|
4201
5906
|
case "text":
|
|
4202
|
-
return /* @__PURE__ */
|
|
5907
|
+
return /* @__PURE__ */ jsx14(
|
|
4203
5908
|
Input,
|
|
4204
5909
|
{
|
|
4205
5910
|
value,
|
|
4206
5911
|
disabled: isReadOnly,
|
|
4207
5912
|
onChange: (e) => handleChange(field.id, e.target.value),
|
|
4208
|
-
placeholder: isReadOnly ? "" :
|
|
5913
|
+
placeholder: isReadOnly ? "" : `${t("add")} ${field.name}...`
|
|
4209
5914
|
}
|
|
4210
5915
|
);
|
|
4211
5916
|
case "number":
|
|
4212
|
-
return /* @__PURE__ */
|
|
5917
|
+
return /* @__PURE__ */ jsx14(
|
|
4213
5918
|
Input,
|
|
4214
5919
|
{
|
|
4215
5920
|
type: "number",
|
|
4216
5921
|
value,
|
|
4217
5922
|
disabled: isReadOnly,
|
|
4218
5923
|
onChange: (e) => handleChange(field.id, e.target.value),
|
|
4219
|
-
placeholder: isReadOnly ? "" :
|
|
5924
|
+
placeholder: isReadOnly ? "" : `${t("add")} ${field.name}...`
|
|
4220
5925
|
}
|
|
4221
5926
|
);
|
|
4222
5927
|
case "date":
|
|
4223
|
-
return /* @__PURE__ */
|
|
5928
|
+
return /* @__PURE__ */ jsx14(
|
|
4224
5929
|
Input,
|
|
4225
5930
|
{
|
|
4226
5931
|
type: "date",
|
|
@@ -4231,7 +5936,7 @@ function RecordForm({ schema, initialValues = DEFAULT_INITIAL_VALUES, onSubmit,
|
|
|
4231
5936
|
);
|
|
4232
5937
|
case "checkbox":
|
|
4233
5938
|
return /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2", children: [
|
|
4234
|
-
/* @__PURE__ */
|
|
5939
|
+
/* @__PURE__ */ jsx14(
|
|
4235
5940
|
Checkbox,
|
|
4236
5941
|
{
|
|
4237
5942
|
id: field.id,
|
|
@@ -4240,16 +5945,21 @@ function RecordForm({ schema, initialValues = DEFAULT_INITIAL_VALUES, onSubmit,
|
|
|
4240
5945
|
onCheckedChange: (checked) => handleChange(field.id, checked)
|
|
4241
5946
|
}
|
|
4242
5947
|
),
|
|
4243
|
-
/* @__PURE__ */
|
|
5948
|
+
/* @__PURE__ */ jsx14(Label2, { htmlFor: field.id, className: "cursor-pointer text-sm", children: value ? t("yes") : t("no") })
|
|
4244
5949
|
] });
|
|
4245
5950
|
case "select":
|
|
4246
5951
|
if (isReadOnly) {
|
|
4247
|
-
|
|
5952
|
+
if (!value) return /* @__PURE__ */ jsx14("span", { className: "text-muted-foreground text-sm", children: t("none") });
|
|
5953
|
+
const option = (_b = field.options) == null ? void 0 : _b.find((o) => o.name === value);
|
|
5954
|
+
return /* @__PURE__ */ jsxs3("div", { className: cn("inline-flex items-center gap-2 px-2 py-1 rounded-md text-sm mt-2", getBadgeColor(option == null ? void 0 : option.color)), children: [
|
|
5955
|
+
/* @__PURE__ */ jsx14("div", { className: cn("w-2 h-2 rounded-full", getDotColor(option == null ? void 0 : option.color)) }),
|
|
5956
|
+
value
|
|
5957
|
+
] });
|
|
4248
5958
|
}
|
|
4249
5959
|
return /* @__PURE__ */ jsxs3(Select, { value, onValueChange: (v) => handleChange(field.id, v), children: [
|
|
4250
|
-
/* @__PURE__ */
|
|
4251
|
-
/* @__PURE__ */
|
|
4252
|
-
/* @__PURE__ */
|
|
5960
|
+
/* @__PURE__ */ jsx14(SelectTrigger, { children: /* @__PURE__ */ jsx14(SelectValue, { placeholder: t("selectValue") }) }),
|
|
5961
|
+
/* @__PURE__ */ jsx14(SelectContent, { children: (_c = field.options) == null ? void 0 : _c.map((opt) => /* @__PURE__ */ jsx14(SelectItem, { value: opt.name, children: /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2", children: [
|
|
5962
|
+
/* @__PURE__ */ jsx14("div", { className: cn("w-2 h-2 rounded-full", getDotColor(opt.color)) }),
|
|
4253
5963
|
opt.name
|
|
4254
5964
|
] }) }, opt.id)) })
|
|
4255
5965
|
] });
|
|
@@ -4257,11 +5967,11 @@ function RecordForm({ schema, initialValues = DEFAULT_INITIAL_VALUES, onSubmit,
|
|
|
4257
5967
|
const selectedValues = Array.isArray(value) ? value : [];
|
|
4258
5968
|
if (isReadOnly) {
|
|
4259
5969
|
return /* @__PURE__ */ jsxs3("div", { className: "flex flex-wrap gap-1", children: [
|
|
4260
|
-
selectedValues.map((v) => /* @__PURE__ */
|
|
4261
|
-
selectedValues.length === 0 && /* @__PURE__ */
|
|
5970
|
+
selectedValues.map((v) => /* @__PURE__ */ jsx14(Badge, { variant: "secondary", children: v }, v)),
|
|
5971
|
+
selectedValues.length === 0 && /* @__PURE__ */ jsx14("span", { className: "text-muted-foreground text-sm", children: t("none") })
|
|
4262
5972
|
] });
|
|
4263
5973
|
}
|
|
4264
|
-
return /* @__PURE__ */
|
|
5974
|
+
return /* @__PURE__ */ jsx14("div", { className: "flex flex-wrap gap-2", children: (_d = field.options) == null ? void 0 : _d.map((opt) => /* @__PURE__ */ jsx14(
|
|
4265
5975
|
Badge,
|
|
4266
5976
|
{
|
|
4267
5977
|
variant: selectedValues.includes(opt.name) ? "default" : "outline",
|
|
@@ -4275,49 +5985,49 @@ function RecordForm({ schema, initialValues = DEFAULT_INITIAL_VALUES, onSubmit,
|
|
|
4275
5985
|
opt.id
|
|
4276
5986
|
)) });
|
|
4277
5987
|
default:
|
|
4278
|
-
return /* @__PURE__ */
|
|
5988
|
+
return /* @__PURE__ */ jsx14(
|
|
4279
5989
|
Input,
|
|
4280
5990
|
{
|
|
4281
5991
|
value,
|
|
4282
5992
|
disabled: isReadOnly,
|
|
4283
5993
|
onChange: (e) => handleChange(field.id, e.target.value),
|
|
4284
|
-
placeholder: isReadOnly ? "" :
|
|
5994
|
+
placeholder: isReadOnly ? "" : `${t("add")} ${field.name}...`
|
|
4285
5995
|
}
|
|
4286
5996
|
);
|
|
4287
5997
|
}
|
|
4288
5998
|
};
|
|
4289
5999
|
return /* @__PURE__ */ jsxs3("form", { id: "record-form", onSubmit: handleSubmit, className: "space-y-5", children: [
|
|
4290
|
-
schema.fields.map((field) => /* @__PURE__ */ jsxs3("div", { className: "space-y-
|
|
4291
|
-
/* @__PURE__ */ jsxs3(
|
|
6000
|
+
schema.fields.map((field) => /* @__PURE__ */ jsxs3("div", { className: "space-y-3", children: [
|
|
6001
|
+
/* @__PURE__ */ jsxs3(Label2, { className: "text-sm font-medium mb-2 block", children: [
|
|
4292
6002
|
field.name,
|
|
4293
|
-
field.isPrimary && /* @__PURE__ */
|
|
6003
|
+
field.isPrimary && /* @__PURE__ */ jsx14(Badge, { variant: "outline", className: "ml-2 text-xs", children: t("primary") })
|
|
4294
6004
|
] }),
|
|
4295
6005
|
renderField(field)
|
|
4296
6006
|
] }, field.id)),
|
|
4297
|
-
mode !== "view" && /* @__PURE__ */
|
|
6007
|
+
mode !== "view" && /* @__PURE__ */ jsx14("div", { className: "flex justify-end pt-4 border-t", children: /* @__PURE__ */ jsx14(Button, { type: "submit", children: mode === "add" ? t("createRecord") : t("save") }) })
|
|
4298
6008
|
] });
|
|
4299
6009
|
}
|
|
4300
6010
|
|
|
4301
6011
|
// src/components/views/FormView.tsx
|
|
4302
|
-
import { jsx as
|
|
6012
|
+
import { jsx as jsx15, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
4303
6013
|
function FormView({ schema, onCreateRecord }) {
|
|
4304
|
-
const [success, setSuccess] =
|
|
6014
|
+
const [success, setSuccess] = useState3(false);
|
|
4305
6015
|
const handleSubmit = (formData) => {
|
|
4306
6016
|
onCreateRecord(formData);
|
|
4307
6017
|
setSuccess(true);
|
|
4308
6018
|
setTimeout(() => setSuccess(false), 3e3);
|
|
4309
6019
|
};
|
|
4310
|
-
return /* @__PURE__ */
|
|
6020
|
+
return /* @__PURE__ */ jsx15("div", { className: "h-full overflow-auto p-8 bg-muted/30", children: /* @__PURE__ */ jsx15("div", { className: "max-w-xl mx-auto", children: /* @__PURE__ */ jsxs4(Card, { children: [
|
|
4311
6021
|
/* @__PURE__ */ jsxs4(CardHeader, { children: [
|
|
4312
|
-
/* @__PURE__ */
|
|
4313
|
-
/* @__PURE__ */
|
|
6022
|
+
/* @__PURE__ */ jsx15(CardTitle, { children: "Add New Record" }),
|
|
6023
|
+
/* @__PURE__ */ jsx15(CardDescription, { children: "Fill out the form below to add a new entry to the database." })
|
|
4314
6024
|
] }),
|
|
4315
6025
|
/* @__PURE__ */ jsxs4(CardContent, { children: [
|
|
4316
6026
|
success && /* @__PURE__ */ jsxs4(Alert, { className: "mb-6 border-green-200 bg-green-50 text-green-800 dark:border-green-800 dark:bg-green-950 dark:text-green-200", children: [
|
|
4317
|
-
/* @__PURE__ */
|
|
4318
|
-
/* @__PURE__ */
|
|
6027
|
+
/* @__PURE__ */ jsx15(CheckCircle2, { className: "h-4 w-4" }),
|
|
6028
|
+
/* @__PURE__ */ jsx15(AlertDescription, { children: "Record created successfully!" })
|
|
4319
6029
|
] }),
|
|
4320
|
-
/* @__PURE__ */
|
|
6030
|
+
/* @__PURE__ */ jsx15(
|
|
4321
6031
|
RecordForm,
|
|
4322
6032
|
{
|
|
4323
6033
|
schema,
|
|
@@ -4330,9 +6040,13 @@ function FormView({ schema, onCreateRecord }) {
|
|
|
4330
6040
|
}
|
|
4331
6041
|
|
|
4332
6042
|
// src/components/views/KanbanView.tsx
|
|
4333
|
-
import { useState as
|
|
6043
|
+
import { useState as useState4, useMemo as useMemo2 } from "react";
|
|
4334
6044
|
import {
|
|
4335
6045
|
Plus as Plus2,
|
|
6046
|
+
MoreHorizontal,
|
|
6047
|
+
Trash2 as Trash22,
|
|
6048
|
+
Eye as Eye2,
|
|
6049
|
+
Pencil as Pencil2,
|
|
4336
6050
|
Calendar,
|
|
4337
6051
|
AlignLeft,
|
|
4338
6052
|
CheckSquare,
|
|
@@ -4341,156 +6055,17 @@ import {
|
|
|
4341
6055
|
Tags,
|
|
4342
6056
|
User as UserIcon
|
|
4343
6057
|
} from "lucide-react";
|
|
4344
|
-
import { jsx as jsx15, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
4345
|
-
var BADGE_COLOR_MAP2 = {
|
|
4346
|
-
gray: "bg-muted text-muted-foreground hover:bg-muted/80",
|
|
4347
|
-
blue: "bg-blue-100 text-blue-700 dark:bg-blue-900/50 dark:text-blue-300 hover:bg-blue-100/80",
|
|
4348
|
-
green: "bg-green-100 text-green-700 dark:bg-green-900/50 dark:text-green-300 hover:bg-green-100/80",
|
|
4349
|
-
yellow: "bg-amber-100 text-amber-700 dark:bg-amber-900/50 dark:text-amber-300 hover:bg-amber-100/80",
|
|
4350
|
-
red: "bg-red-100 text-red-700 dark:bg-red-900/50 dark:text-red-300 hover:bg-red-100/80",
|
|
4351
|
-
purple: "bg-purple-100 text-purple-700 dark:bg-purple-900/50 dark:text-purple-300 hover:bg-purple-100/80"
|
|
4352
|
-
};
|
|
4353
|
-
var COLUMN_DOT_COLOR_MAP = {
|
|
4354
|
-
gray: "bg-gray-400",
|
|
4355
|
-
blue: "bg-blue-500",
|
|
4356
|
-
green: "bg-green-500",
|
|
4357
|
-
yellow: "bg-amber-500",
|
|
4358
|
-
red: "bg-red-500",
|
|
4359
|
-
purple: "bg-purple-500"
|
|
4360
|
-
};
|
|
4361
|
-
var FIELD_ICON_MAP = {
|
|
4362
|
-
text: AlignLeft,
|
|
4363
|
-
number: Hash,
|
|
4364
|
-
select: Tag,
|
|
4365
|
-
multiSelect: Tags,
|
|
4366
|
-
date: Calendar,
|
|
4367
|
-
checkbox: CheckSquare,
|
|
4368
|
-
user: UserIcon
|
|
4369
|
-
};
|
|
4370
|
-
function KanbanView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenModal }) {
|
|
4371
|
-
const [draggedRecord, setDraggedRecord] = useState3(null);
|
|
4372
|
-
const selectField = getSelectField(schema);
|
|
4373
|
-
const primaryField = getPrimaryField(schema);
|
|
4374
|
-
const columns = useMemo(() => {
|
|
4375
|
-
if (!(selectField == null ? void 0 : selectField.options)) return [];
|
|
4376
|
-
return [
|
|
4377
|
-
{ id: "__empty__", name: "Uncategorized", color: "gray" },
|
|
4378
|
-
...selectField.options
|
|
4379
|
-
];
|
|
4380
|
-
}, [selectField]);
|
|
4381
|
-
const recordsByColumn = useMemo(() => {
|
|
4382
|
-
const grouped = {};
|
|
4383
|
-
columns.forEach((col) => {
|
|
4384
|
-
grouped[col.id] = [];
|
|
4385
|
-
});
|
|
4386
|
-
records.forEach((record) => {
|
|
4387
|
-
var _a, _b;
|
|
4388
|
-
if (!selectField) return;
|
|
4389
|
-
const value = record.fields[selectField.id];
|
|
4390
|
-
const option = (_a = selectField.options) == null ? void 0 : _a.find((o) => o.name === value);
|
|
4391
|
-
const colId = (option == null ? void 0 : option.id) || "__empty__";
|
|
4392
|
-
(_b = grouped[colId]) == null ? void 0 : _b.push(record);
|
|
4393
|
-
});
|
|
4394
|
-
return grouped;
|
|
4395
|
-
}, [records, columns, selectField]);
|
|
4396
|
-
const handleDragOver = (e) => {
|
|
4397
|
-
e.preventDefault();
|
|
4398
|
-
};
|
|
4399
|
-
const handleDrop = (columnId) => {
|
|
4400
|
-
if (!draggedRecord || !selectField) return;
|
|
4401
|
-
const column = columns.find((c) => c.id === columnId);
|
|
4402
|
-
const value = columnId === "__empty__" ? "" : (column == null ? void 0 : column.name) || "";
|
|
4403
|
-
onUpdateRecord(draggedRecord, { [selectField.id]: value });
|
|
4404
|
-
setDraggedRecord(null);
|
|
4405
|
-
};
|
|
4406
|
-
if (!selectField) {
|
|
4407
|
-
return /* @__PURE__ */ jsx15("div", { className: "h-full flex items-center justify-center text-muted-foreground", children: "No select field found in schema. Add a select field to enable Kanban view." });
|
|
4408
|
-
}
|
|
4409
|
-
return /* @__PURE__ */ jsx15("div", { className: "w-full grow overflow-hidden bg-background", children: /* @__PURE__ */ jsx15("div", { className: "relative w-full h-full overflow-x-auto overflow-y-hidden p-2", children: /* @__PURE__ */ jsx15("div", { className: "flex h-full", children: columns.map((column) => {
|
|
4410
|
-
var _a, _b;
|
|
4411
|
-
return /* @__PURE__ */ jsx15("div", { className: "h-full pr-4", children: /* @__PURE__ */ jsxs5("div", { className: "w-[264px] h-full border bg-muted rounded-md shrink-0 flex flex-col overflow-hidden", children: [
|
|
4412
|
-
/* @__PURE__ */ jsx15("div", { className: "w-full", children: /* @__PURE__ */ jsx15("div", { className: "flex h-12 w-full shrink-0 items-center justify-between border-b bg-card px-4", children: /* @__PURE__ */ jsxs5("div", { className: "flex items-center space-x-2 overflow-hidden text-muted-foreground", children: [
|
|
4413
|
-
/* @__PURE__ */ jsx15("div", { className: cn("w-2 h-2 rounded-full shrink-0", COLUMN_DOT_COLOR_MAP[column.color || "gray"]) }),
|
|
4414
|
-
/* @__PURE__ */ jsx15("span", { className: "text-sm font-semibold truncate", children: column.name }),
|
|
4415
|
-
/* @__PURE__ */ jsx15("span", { className: "rounded-xl border px-2 text-xs", children: ((_a = recordsByColumn[column.id]) == null ? void 0 : _a.length) || 0 })
|
|
4416
|
-
] }) }) }),
|
|
4417
|
-
/* @__PURE__ */ jsx15(
|
|
4418
|
-
"div",
|
|
4419
|
-
{
|
|
4420
|
-
className: "flex-1 w-full overflow-y-auto min-h-0",
|
|
4421
|
-
onDragOver: handleDragOver,
|
|
4422
|
-
onDrop: () => handleDrop(column.id),
|
|
4423
|
-
children: /* @__PURE__ */ jsx15("div", { className: "flex flex-col pt-3 pb-3", children: (_b = recordsByColumn[column.id]) == null ? void 0 : _b.map((record) => /* @__PURE__ */ jsx15("div", { className: "w-full px-3 mb-2", children: /* @__PURE__ */ jsxs5(
|
|
4424
|
-
"div",
|
|
4425
|
-
{
|
|
4426
|
-
draggable: true,
|
|
4427
|
-
onDragStart: () => setDraggedRecord(record.id),
|
|
4428
|
-
onClick: () => onOpenModal("view", record),
|
|
4429
|
-
className: cn(
|
|
4430
|
-
"relative flex w-full grow flex-col space-y-2 gap-1 overflow-hidden rounded-md border border-border bg-card hover:border-primary/15 p-3 cursor-pointer transition-all",
|
|
4431
|
-
draggedRecord === record.id && "opacity-50 ring-2 ring-primary"
|
|
4432
|
-
),
|
|
4433
|
-
children: [
|
|
4434
|
-
/* @__PURE__ */ jsx15("div", { className: "text-base font-semibold", children: primaryField ? record.fields[primaryField.id] || "Untitled" : "Untitled" }),
|
|
4435
|
-
schema.fields.filter((f) => !f.isPrimary && f.id !== selectField.id).map((field) => {
|
|
4436
|
-
const value = record.fields[field.id];
|
|
4437
|
-
if (value === void 0 || value === null || value === "" || value === false) return null;
|
|
4438
|
-
const Icon2 = FIELD_ICON_MAP[field.type] || AlignLeft;
|
|
4439
|
-
return /* @__PURE__ */ jsxs5("div", { children: [
|
|
4440
|
-
/* @__PURE__ */ jsxs5("div", { className: "mb-1 flex items-center space-x-1 text-muted-foreground", children: [
|
|
4441
|
-
/* @__PURE__ */ jsx15(Icon2, { className: "w-4 h-4 text-sm" }),
|
|
4442
|
-
/* @__PURE__ */ jsx15("span", { className: "text-xs", children: field.name })
|
|
4443
|
-
] }),
|
|
4444
|
-
/* @__PURE__ */ jsx15("div", { className: "w-full text-[13px] leading-5 breaking-all line-clamp-6", children: field.type === "select" ? /* @__PURE__ */ jsx15("div", { className: "flex gap-1 flex-wrap", children: (() => {
|
|
4445
|
-
var _a2;
|
|
4446
|
-
const option = (_a2 = field.options) == null ? void 0 : _a2.find((o) => o.name === value);
|
|
4447
|
-
return /* @__PURE__ */ jsx15(
|
|
4448
|
-
"div",
|
|
4449
|
-
{
|
|
4450
|
-
className: cn(
|
|
4451
|
-
"text-xs px-2 h-5 rounded-md flex items-center gap-1 min-w-0 truncate",
|
|
4452
|
-
BADGE_COLOR_MAP2[(option == null ? void 0 : option.color) || "gray"]
|
|
4453
|
-
),
|
|
4454
|
-
title: String(value),
|
|
4455
|
-
children: /* @__PURE__ */ jsx15("span", { className: "min-w-0 truncate", children: String(value) })
|
|
4456
|
-
}
|
|
4457
|
-
);
|
|
4458
|
-
})() }) : field.type === "checkbox" ? /* @__PURE__ */ jsx15("div", { className: "flex gap-1 flex-wrap", children: /* @__PURE__ */ jsx15("div", { className: cn(
|
|
4459
|
-
"flex items-center justify-center w-5 h-5 rounded-sm border border-primary shadow bg-primary text-primary-foreground"
|
|
4460
|
-
), children: /* @__PURE__ */ jsx15(CheckSquare, { className: "h-4 w-4" }) }) }) : /* @__PURE__ */ jsx15("span", { title: String(value), className: "whitespace-pre-wrap break-all", children: String(value) }) })
|
|
4461
|
-
] }, field.id);
|
|
4462
|
-
})
|
|
4463
|
-
]
|
|
4464
|
-
}
|
|
4465
|
-
) }, record.id)) })
|
|
4466
|
-
}
|
|
4467
|
-
),
|
|
4468
|
-
/* @__PURE__ */ jsx15("div", { className: "flex items-center justify-center rounded-b-md bg-slate-50 px-3 py-2 dark:bg-muted", children: /* @__PURE__ */ jsx15(
|
|
4469
|
-
Button,
|
|
4470
|
-
{
|
|
4471
|
-
variant: "outline",
|
|
4472
|
-
className: "w-full h-9 gap-2 bg-background dark:bg-white/5 dark:hover:bg-white/10 shadow-none hover:bg-zinc-100 dark:hover:bg-zinc-800",
|
|
4473
|
-
onClick: () => onOpenModal("add"),
|
|
4474
|
-
children: /* @__PURE__ */ jsx15(Plus2, { className: "w-5 h-5" })
|
|
4475
|
-
}
|
|
4476
|
-
) })
|
|
4477
|
-
] }) }, column.id);
|
|
4478
|
-
}) }) }) });
|
|
4479
|
-
}
|
|
4480
|
-
|
|
4481
|
-
// src/components/views/GalleryView.tsx
|
|
4482
|
-
import { Plus as Plus3, Trash2 as Trash23, MoreHorizontal as MoreHorizontal2, Eye as Eye3, Pencil as Pencil3 } from "lucide-react";
|
|
4483
6058
|
|
|
4484
6059
|
// src/components/ui/dropdown-menu.tsx
|
|
4485
|
-
import * as
|
|
6060
|
+
import * as React12 from "react";
|
|
4486
6061
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
4487
6062
|
import { Check as Check3, ChevronRight, Circle } from "lucide-react";
|
|
4488
|
-
import { jsx as jsx16, jsxs as
|
|
6063
|
+
import { jsx as jsx16, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
4489
6064
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
4490
6065
|
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
4491
|
-
var DropdownMenuSubTrigger =
|
|
6066
|
+
var DropdownMenuSubTrigger = React12.forwardRef((_a, ref) => {
|
|
4492
6067
|
var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
|
|
4493
|
-
return /* @__PURE__ */
|
|
6068
|
+
return /* @__PURE__ */ jsxs5(
|
|
4494
6069
|
DropdownMenuPrimitive.SubTrigger,
|
|
4495
6070
|
__spreadProps(__spreadValues({
|
|
4496
6071
|
ref,
|
|
@@ -4508,7 +6083,7 @@ var DropdownMenuSubTrigger = React11.forwardRef((_a, ref) => {
|
|
|
4508
6083
|
);
|
|
4509
6084
|
});
|
|
4510
6085
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
4511
|
-
var DropdownMenuSubContent =
|
|
6086
|
+
var DropdownMenuSubContent = React12.forwardRef((_a, ref) => {
|
|
4512
6087
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4513
6088
|
return /* @__PURE__ */ jsx16(
|
|
4514
6089
|
DropdownMenuPrimitive.SubContent,
|
|
@@ -4522,7 +6097,7 @@ var DropdownMenuSubContent = React11.forwardRef((_a, ref) => {
|
|
|
4522
6097
|
);
|
|
4523
6098
|
});
|
|
4524
6099
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
4525
|
-
var DropdownMenuContent =
|
|
6100
|
+
var DropdownMenuContent = React12.forwardRef((_a, ref) => {
|
|
4526
6101
|
var _b = _a, { className, sideOffset = 4 } = _b, props = __objRest(_b, ["className", "sideOffset"]);
|
|
4527
6102
|
return /* @__PURE__ */ jsx16(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx16(
|
|
4528
6103
|
DropdownMenuPrimitive.Content,
|
|
@@ -4538,7 +6113,7 @@ var DropdownMenuContent = React11.forwardRef((_a, ref) => {
|
|
|
4538
6113
|
) });
|
|
4539
6114
|
});
|
|
4540
6115
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
4541
|
-
var DropdownMenuItem =
|
|
6116
|
+
var DropdownMenuItem = React12.forwardRef((_a, ref) => {
|
|
4542
6117
|
var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
|
|
4543
6118
|
return /* @__PURE__ */ jsx16(
|
|
4544
6119
|
DropdownMenuPrimitive.Item,
|
|
@@ -4553,9 +6128,9 @@ var DropdownMenuItem = React11.forwardRef((_a, ref) => {
|
|
|
4553
6128
|
);
|
|
4554
6129
|
});
|
|
4555
6130
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
4556
|
-
var DropdownMenuCheckboxItem =
|
|
6131
|
+
var DropdownMenuCheckboxItem = React12.forwardRef((_a, ref) => {
|
|
4557
6132
|
var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
|
|
4558
|
-
return /* @__PURE__ */
|
|
6133
|
+
return /* @__PURE__ */ jsxs5(
|
|
4559
6134
|
DropdownMenuPrimitive.CheckboxItem,
|
|
4560
6135
|
__spreadProps(__spreadValues({
|
|
4561
6136
|
ref,
|
|
@@ -4573,9 +6148,9 @@ var DropdownMenuCheckboxItem = React11.forwardRef((_a, ref) => {
|
|
|
4573
6148
|
);
|
|
4574
6149
|
});
|
|
4575
6150
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
4576
|
-
var DropdownMenuRadioItem =
|
|
6151
|
+
var DropdownMenuRadioItem = React12.forwardRef((_a, ref) => {
|
|
4577
6152
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
4578
|
-
return /* @__PURE__ */
|
|
6153
|
+
return /* @__PURE__ */ jsxs5(
|
|
4579
6154
|
DropdownMenuPrimitive.RadioItem,
|
|
4580
6155
|
__spreadProps(__spreadValues({
|
|
4581
6156
|
ref,
|
|
@@ -4592,7 +6167,7 @@ var DropdownMenuRadioItem = React11.forwardRef((_a, ref) => {
|
|
|
4592
6167
|
);
|
|
4593
6168
|
});
|
|
4594
6169
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
4595
|
-
var DropdownMenuLabel =
|
|
6170
|
+
var DropdownMenuLabel = React12.forwardRef((_a, ref) => {
|
|
4596
6171
|
var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
|
|
4597
6172
|
return /* @__PURE__ */ jsx16(
|
|
4598
6173
|
DropdownMenuPrimitive.Label,
|
|
@@ -4607,7 +6182,7 @@ var DropdownMenuLabel = React11.forwardRef((_a, ref) => {
|
|
|
4607
6182
|
);
|
|
4608
6183
|
});
|
|
4609
6184
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
4610
|
-
var DropdownMenuSeparator =
|
|
6185
|
+
var DropdownMenuSeparator = React12.forwardRef((_a, ref) => {
|
|
4611
6186
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4612
6187
|
return /* @__PURE__ */ jsx16(
|
|
4613
6188
|
DropdownMenuPrimitive.Separator,
|
|
@@ -4633,32 +6208,223 @@ var DropdownMenuShortcut = (_a) => {
|
|
|
4633
6208
|
};
|
|
4634
6209
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
4635
6210
|
|
|
6211
|
+
// src/components/views/KanbanView.tsx
|
|
6212
|
+
import { jsx as jsx17, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
6213
|
+
var FIELD_ICON_MAP = {
|
|
6214
|
+
text: AlignLeft,
|
|
6215
|
+
number: Hash,
|
|
6216
|
+
select: Tag,
|
|
6217
|
+
multiSelect: Tags,
|
|
6218
|
+
date: Calendar,
|
|
6219
|
+
checkbox: CheckSquare,
|
|
6220
|
+
user: UserIcon
|
|
6221
|
+
};
|
|
6222
|
+
function KanbanView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenModal }) {
|
|
6223
|
+
const [draggedRecord, setDraggedRecord] = useState4(null);
|
|
6224
|
+
const { t } = useI18n();
|
|
6225
|
+
const selectField = getSelectField(schema);
|
|
6226
|
+
const primaryField = getPrimaryField(schema);
|
|
6227
|
+
const columns = useMemo2(() => {
|
|
6228
|
+
var _a, _b;
|
|
6229
|
+
if (!selectField) return [];
|
|
6230
|
+
const groups = {
|
|
6231
|
+
"uncategorized": []
|
|
6232
|
+
};
|
|
6233
|
+
(_a = selectField.options) == null ? void 0 : _a.forEach((opt) => {
|
|
6234
|
+
groups[opt.name] = [];
|
|
6235
|
+
});
|
|
6236
|
+
records.forEach((record) => {
|
|
6237
|
+
const value = record.fields[selectField.id];
|
|
6238
|
+
if (value && groups[value]) {
|
|
6239
|
+
groups[value].push(record);
|
|
6240
|
+
} else {
|
|
6241
|
+
groups["uncategorized"].push(record);
|
|
6242
|
+
}
|
|
6243
|
+
});
|
|
6244
|
+
return [
|
|
6245
|
+
...((_b = selectField.options) == null ? void 0 : _b.map((opt) => ({
|
|
6246
|
+
id: opt.name,
|
|
6247
|
+
name: opt.name,
|
|
6248
|
+
color: opt.color,
|
|
6249
|
+
records: groups[opt.name] || []
|
|
6250
|
+
}))) || [],
|
|
6251
|
+
{
|
|
6252
|
+
id: "uncategorized",
|
|
6253
|
+
name: t("uncategorized"),
|
|
6254
|
+
color: "gray",
|
|
6255
|
+
records: groups["uncategorized"]
|
|
6256
|
+
}
|
|
6257
|
+
];
|
|
6258
|
+
}, [selectField, records, t]);
|
|
6259
|
+
const recordsByColumn = useMemo2(() => {
|
|
6260
|
+
const grouped = {};
|
|
6261
|
+
columns.forEach((col) => {
|
|
6262
|
+
grouped[col.id] = col.records;
|
|
6263
|
+
});
|
|
6264
|
+
return grouped;
|
|
6265
|
+
}, [columns]);
|
|
6266
|
+
const handleDragOver = (e) => {
|
|
6267
|
+
e.preventDefault();
|
|
6268
|
+
};
|
|
6269
|
+
const handleDrop = (columnId) => {
|
|
6270
|
+
if (!draggedRecord || !selectField) return;
|
|
6271
|
+
const column = columns.find((c) => c.id === columnId);
|
|
6272
|
+
const value = columnId === "__empty__" ? "" : (column == null ? void 0 : column.name) || "";
|
|
6273
|
+
onUpdateRecord(draggedRecord, { [selectField.id]: value });
|
|
6274
|
+
setDraggedRecord(null);
|
|
6275
|
+
};
|
|
6276
|
+
if (!selectField) {
|
|
6277
|
+
return /* @__PURE__ */ jsx17("div", { className: "h-full flex items-center justify-center text-muted-foreground", children: "No select field found in schema. Add a select field to enable Kanban view." });
|
|
6278
|
+
}
|
|
6279
|
+
return /* @__PURE__ */ jsx17("div", { className: "w-full grow overflow-hidden bg-background", children: /* @__PURE__ */ jsx17("div", { className: "relative w-full h-full overflow-x-auto overflow-y-hidden p-2", children: /* @__PURE__ */ jsx17("div", { className: "flex h-full", children: columns.map((column) => {
|
|
6280
|
+
var _a, _b;
|
|
6281
|
+
return /* @__PURE__ */ jsx17("div", { className: "h-full pr-4", children: /* @__PURE__ */ jsxs6("div", { className: "w-[264px] h-full border bg-muted rounded-md shrink-0 flex flex-col overflow-hidden", children: [
|
|
6282
|
+
/* @__PURE__ */ jsx17("div", { className: "w-full", children: /* @__PURE__ */ jsx17("div", { className: "flex h-12 w-full shrink-0 items-center justify-between border-b bg-card px-4", children: /* @__PURE__ */ jsxs6("div", { className: "flex items-center space-x-2 overflow-hidden text-muted-foreground", children: [
|
|
6283
|
+
/* @__PURE__ */ jsx17("div", { className: cn("w-2 h-2 rounded-full shrink-0", getDotColor(column.color)) }),
|
|
6284
|
+
/* @__PURE__ */ jsx17("span", { className: "text-sm font-semibold truncate", children: column.name }),
|
|
6285
|
+
/* @__PURE__ */ jsx17("span", { className: "rounded-xl border px-2 text-xs", children: ((_a = recordsByColumn[column.id]) == null ? void 0 : _a.length) || 0 })
|
|
6286
|
+
] }) }) }),
|
|
6287
|
+
/* @__PURE__ */ jsx17(
|
|
6288
|
+
"div",
|
|
6289
|
+
{
|
|
6290
|
+
className: "flex-1 w-full overflow-y-auto min-h-0",
|
|
6291
|
+
onDragOver: handleDragOver,
|
|
6292
|
+
onDrop: () => handleDrop(column.id),
|
|
6293
|
+
children: /* @__PURE__ */ jsx17("div", { className: "flex flex-col pt-3 pb-3", children: (_b = recordsByColumn[column.id]) == null ? void 0 : _b.map((record) => /* @__PURE__ */ jsx17("div", { className: "w-full px-3 mb-2", children: /* @__PURE__ */ jsxs6(
|
|
6294
|
+
"div",
|
|
6295
|
+
{
|
|
6296
|
+
draggable: true,
|
|
6297
|
+
onDragStart: () => setDraggedRecord(record.id),
|
|
6298
|
+
className: cn(
|
|
6299
|
+
"relative flex w-full grow flex-col space-y-2 gap-1 overflow-hidden rounded-md border border-border bg-card hover:border-primary/15 p-3 cursor-pointer transition-all group",
|
|
6300
|
+
draggedRecord === record.id && "opacity-50 ring-2 ring-primary"
|
|
6301
|
+
),
|
|
6302
|
+
children: [
|
|
6303
|
+
/* @__PURE__ */ jsxs6("div", { className: "flex items-start justify-between gap-2", children: [
|
|
6304
|
+
/* @__PURE__ */ jsx17(
|
|
6305
|
+
"div",
|
|
6306
|
+
{
|
|
6307
|
+
className: "text-base font-semibold flex-1 min-w-0",
|
|
6308
|
+
onClick: () => onOpenModal("view", record),
|
|
6309
|
+
children: primaryField ? record.fields[primaryField.id] || t("untitled") : t("untitled")
|
|
6310
|
+
}
|
|
6311
|
+
),
|
|
6312
|
+
/* @__PURE__ */ jsxs6(DropdownMenu, { children: [
|
|
6313
|
+
/* @__PURE__ */ jsx17(DropdownMenuTrigger, { asChild: true, onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsx17(
|
|
6314
|
+
Button,
|
|
6315
|
+
{
|
|
6316
|
+
variant: "ghost",
|
|
6317
|
+
size: "icon",
|
|
6318
|
+
className: "h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity shrink-0",
|
|
6319
|
+
children: /* @__PURE__ */ jsx17(MoreHorizontal, { className: "h-4 w-4" })
|
|
6320
|
+
}
|
|
6321
|
+
) }),
|
|
6322
|
+
/* @__PURE__ */ jsxs6(DropdownMenuContent, { align: "end", onClick: (e) => e.stopPropagation(), children: [
|
|
6323
|
+
/* @__PURE__ */ jsxs6(DropdownMenuItem, { onClick: (e) => {
|
|
6324
|
+
e.stopPropagation();
|
|
6325
|
+
onOpenModal("view", record);
|
|
6326
|
+
}, children: [
|
|
6327
|
+
/* @__PURE__ */ jsx17(Eye2, { className: "h-4 w-4 mr-2" }),
|
|
6328
|
+
t("view")
|
|
6329
|
+
] }),
|
|
6330
|
+
/* @__PURE__ */ jsxs6(DropdownMenuItem, { onClick: (e) => {
|
|
6331
|
+
e.stopPropagation();
|
|
6332
|
+
onOpenModal("edit", record);
|
|
6333
|
+
}, children: [
|
|
6334
|
+
/* @__PURE__ */ jsx17(Pencil2, { className: "h-4 w-4 mr-2" }),
|
|
6335
|
+
t("edit")
|
|
6336
|
+
] }),
|
|
6337
|
+
/* @__PURE__ */ jsxs6(
|
|
6338
|
+
DropdownMenuItem,
|
|
6339
|
+
{
|
|
6340
|
+
className: "text-destructive focus:text-destructive",
|
|
6341
|
+
onClick: (e) => {
|
|
6342
|
+
e.stopPropagation();
|
|
6343
|
+
onDeleteRecord(record.id);
|
|
6344
|
+
},
|
|
6345
|
+
children: [
|
|
6346
|
+
/* @__PURE__ */ jsx17(Trash22, { className: "h-4 w-4 mr-2" }),
|
|
6347
|
+
t("delete")
|
|
6348
|
+
]
|
|
6349
|
+
}
|
|
6350
|
+
)
|
|
6351
|
+
] })
|
|
6352
|
+
] })
|
|
6353
|
+
] }),
|
|
6354
|
+
schema.fields.filter((f) => !f.isPrimary && f.id !== selectField.id).map((field) => {
|
|
6355
|
+
const value = record.fields[field.id];
|
|
6356
|
+
if (value === void 0 || value === null || value === "" || value === false) return null;
|
|
6357
|
+
const Icon2 = FIELD_ICON_MAP[field.type] || AlignLeft;
|
|
6358
|
+
return /* @__PURE__ */ jsxs6("div", { children: [
|
|
6359
|
+
/* @__PURE__ */ jsxs6("div", { className: "mb-1 flex items-center space-x-1 text-muted-foreground", children: [
|
|
6360
|
+
/* @__PURE__ */ jsx17(Icon2, { className: "w-4 h-4 text-sm" }),
|
|
6361
|
+
/* @__PURE__ */ jsx17("span", { className: "text-xs", children: field.name })
|
|
6362
|
+
] }),
|
|
6363
|
+
/* @__PURE__ */ jsx17("div", { className: "w-full text-[13px] leading-5 breaking-all line-clamp-6", children: field.type === "select" ? /* @__PURE__ */ jsx17("div", { className: "flex gap-1 flex-wrap", children: (() => {
|
|
6364
|
+
var _a2;
|
|
6365
|
+
const option = (_a2 = field.options) == null ? void 0 : _a2.find((o) => o.name === value);
|
|
6366
|
+
return /* @__PURE__ */ jsx17(
|
|
6367
|
+
"div",
|
|
6368
|
+
{
|
|
6369
|
+
className: cn(
|
|
6370
|
+
"text-xs px-2 h-5 rounded-md flex items-center gap-1 min-w-0 truncate",
|
|
6371
|
+
getBadgeColor(option == null ? void 0 : option.color)
|
|
6372
|
+
),
|
|
6373
|
+
title: String(value),
|
|
6374
|
+
children: /* @__PURE__ */ jsx17("span", { className: "min-w-0 truncate", children: String(value) })
|
|
6375
|
+
}
|
|
6376
|
+
);
|
|
6377
|
+
})() }) : field.type === "checkbox" ? /* @__PURE__ */ jsx17("div", { className: "flex gap-1 flex-wrap", children: /* @__PURE__ */ jsx17("div", { className: cn(
|
|
6378
|
+
"flex items-center justify-center w-5 h-5 rounded-sm border border-primary shadow bg-primary text-primary-foreground"
|
|
6379
|
+
), children: /* @__PURE__ */ jsx17(CheckSquare, { className: "h-4 w-4" }) }) }) : /* @__PURE__ */ jsx17("span", { title: String(value), className: "whitespace-pre-wrap break-all", children: String(value) }) })
|
|
6380
|
+
] }, field.id);
|
|
6381
|
+
})
|
|
6382
|
+
]
|
|
6383
|
+
}
|
|
6384
|
+
) }, record.id)) })
|
|
6385
|
+
}
|
|
6386
|
+
),
|
|
6387
|
+
/* @__PURE__ */ jsx17("div", { className: "flex items-center justify-center rounded-b-md bg-slate-50 px-3 py-2 dark:bg-muted", children: /* @__PURE__ */ jsx17(
|
|
6388
|
+
Button,
|
|
6389
|
+
{
|
|
6390
|
+
variant: "outline",
|
|
6391
|
+
className: "w-full h-9 gap-2 bg-background dark:bg-white/5 dark:hover:bg-white/10 shadow-none hover:bg-zinc-100 dark:hover:bg-zinc-800",
|
|
6392
|
+
onClick: () => onOpenModal("add"),
|
|
6393
|
+
children: /* @__PURE__ */ jsx17(Plus2, { className: "w-5 h-5" })
|
|
6394
|
+
}
|
|
6395
|
+
) })
|
|
6396
|
+
] }) }, column.id);
|
|
6397
|
+
}) }) }) });
|
|
6398
|
+
}
|
|
6399
|
+
|
|
4636
6400
|
// src/components/views/GalleryView.tsx
|
|
4637
|
-
import {
|
|
6401
|
+
import { Plus as Plus3, Trash2 as Trash23, MoreHorizontal as MoreHorizontal2, Eye as Eye3, Pencil as Pencil3 } from "lucide-react";
|
|
6402
|
+
import { jsx as jsx18, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
4638
6403
|
function GalleryView({ schema, records, onDeleteRecord, onOpenModal }) {
|
|
6404
|
+
const { t } = useI18n();
|
|
4639
6405
|
const primaryField = getPrimaryField(schema);
|
|
4640
6406
|
const displayFields = schema.fields.filter((f) => f.id !== (primaryField == null ? void 0 : primaryField.id)).slice(0, 3);
|
|
4641
|
-
return /* @__PURE__ */
|
|
6407
|
+
return /* @__PURE__ */ jsx18("div", { className: "h-full overflow-auto p-6 bg-muted/30", children: /* @__PURE__ */ jsxs7("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4", children: [
|
|
4642
6408
|
records.map((record) => {
|
|
4643
|
-
const title = primaryField ? record.fields[primaryField.id] : "
|
|
6409
|
+
const title = primaryField ? record.fields[primaryField.id] : t("untitled");
|
|
4644
6410
|
return /* @__PURE__ */ jsxs7(
|
|
4645
6411
|
Card,
|
|
4646
6412
|
{
|
|
4647
|
-
className: "group hover:shadow-md transition-all cursor-pointer overflow-hidden",
|
|
6413
|
+
className: "group hover:shadow-md transition-all cursor-pointer overflow-hidden text-start",
|
|
4648
6414
|
onClick: () => onOpenModal("view", record),
|
|
4649
6415
|
children: [
|
|
4650
6416
|
/* @__PURE__ */ jsxs7("div", { className: "aspect-[16/10] bg-muted flex items-center justify-center relative", children: [
|
|
4651
|
-
/* @__PURE__ */
|
|
4652
|
-
/* @__PURE__ */
|
|
4653
|
-
/* @__PURE__ */
|
|
6417
|
+
/* @__PURE__ */ jsx18("span", { className: "text-4xl font-semibold text-muted-foreground/20 select-none", children: String(title || t("untitled")).charAt(0).toUpperCase() }),
|
|
6418
|
+
/* @__PURE__ */ jsx18("div", { className: "absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity", children: /* @__PURE__ */ jsxs7(DropdownMenu, { children: [
|
|
6419
|
+
/* @__PURE__ */ jsx18(DropdownMenuTrigger, { asChild: true, onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsx18(Button, { variant: "secondary", size: "icon", className: "h-8 w-8", children: /* @__PURE__ */ jsx18(MoreHorizontal2, { className: "h-4 w-4" }) }) }),
|
|
4654
6420
|
/* @__PURE__ */ jsxs7(DropdownMenuContent, { align: "end", children: [
|
|
4655
6421
|
/* @__PURE__ */ jsxs7(DropdownMenuItem, { onClick: () => onOpenModal("view", record), children: [
|
|
4656
|
-
/* @__PURE__ */
|
|
4657
|
-
"
|
|
6422
|
+
/* @__PURE__ */ jsx18(Eye3, { className: "h-4 w-4 mr-2" }),
|
|
6423
|
+
t("view")
|
|
4658
6424
|
] }),
|
|
4659
6425
|
/* @__PURE__ */ jsxs7(DropdownMenuItem, { onClick: () => onOpenModal("edit", record), children: [
|
|
4660
|
-
/* @__PURE__ */
|
|
4661
|
-
"
|
|
6426
|
+
/* @__PURE__ */ jsx18(Pencil3, { className: "h-4 w-4 mr-2" }),
|
|
6427
|
+
t("edit")
|
|
4662
6428
|
] }),
|
|
4663
6429
|
/* @__PURE__ */ jsxs7(
|
|
4664
6430
|
DropdownMenuItem,
|
|
@@ -4666,8 +6432,8 @@ function GalleryView({ schema, records, onDeleteRecord, onOpenModal }) {
|
|
|
4666
6432
|
className: "text-destructive focus:text-destructive",
|
|
4667
6433
|
onClick: () => onDeleteRecord(record.id),
|
|
4668
6434
|
children: [
|
|
4669
|
-
/* @__PURE__ */
|
|
4670
|
-
"
|
|
6435
|
+
/* @__PURE__ */ jsx18(Trash23, { className: "h-4 w-4 mr-2" }),
|
|
6436
|
+
t("delete")
|
|
4671
6437
|
]
|
|
4672
6438
|
}
|
|
4673
6439
|
)
|
|
@@ -4675,20 +6441,40 @@ function GalleryView({ schema, records, onDeleteRecord, onOpenModal }) {
|
|
|
4675
6441
|
] }) })
|
|
4676
6442
|
] }),
|
|
4677
6443
|
/* @__PURE__ */ jsxs7(CardContent, { className: "p-4", children: [
|
|
4678
|
-
/* @__PURE__ */
|
|
4679
|
-
/* @__PURE__ */
|
|
6444
|
+
/* @__PURE__ */ jsx18("h3", { className: "font-medium text-sm truncate mb-2", children: title || t("untitled") }),
|
|
6445
|
+
/* @__PURE__ */ jsx18("div", { className: "space-y-1.5", children: displayFields.map((field) => {
|
|
6446
|
+
var _a;
|
|
4680
6447
|
const value = record.fields[field.id];
|
|
4681
6448
|
if (value === void 0 || value === null || value === "" || value === false) return null;
|
|
4682
6449
|
let displayValue = value;
|
|
6450
|
+
if (field.type === "select") {
|
|
6451
|
+
const option = (_a = field.options) == null ? void 0 : _a.find((o) => o.name === value);
|
|
6452
|
+
return /* @__PURE__ */ jsxs7("div", { className: "flex items-baseline gap-2 text-xs", children: [
|
|
6453
|
+
/* @__PURE__ */ jsxs7("span", { className: "text-muted-foreground flex-shrink-0", children: [
|
|
6454
|
+
field.name,
|
|
6455
|
+
":"
|
|
6456
|
+
] }),
|
|
6457
|
+
/* @__PURE__ */ jsx18(
|
|
6458
|
+
"div",
|
|
6459
|
+
{
|
|
6460
|
+
className: cn(
|
|
6461
|
+
"text-xs px-2 py-0.5 rounded-md inline-flex items-center gap-1",
|
|
6462
|
+
getBadgeColor(option == null ? void 0 : option.color)
|
|
6463
|
+
),
|
|
6464
|
+
children: value
|
|
6465
|
+
}
|
|
6466
|
+
)
|
|
6467
|
+
] }, field.id);
|
|
6468
|
+
}
|
|
4683
6469
|
if (Array.isArray(value)) displayValue = value.join(", ");
|
|
4684
|
-
else if (typeof value === "boolean") displayValue = value ? "
|
|
6470
|
+
else if (typeof value === "boolean") displayValue = value ? t("yes") : t("no");
|
|
4685
6471
|
else if (field.type === "date") displayValue = new Date(value).toLocaleDateString();
|
|
4686
6472
|
return /* @__PURE__ */ jsxs7("div", { className: "flex items-baseline gap-2 text-xs", children: [
|
|
4687
6473
|
/* @__PURE__ */ jsxs7("span", { className: "text-muted-foreground flex-shrink-0", children: [
|
|
4688
6474
|
field.name,
|
|
4689
6475
|
":"
|
|
4690
6476
|
] }),
|
|
4691
|
-
/* @__PURE__ */
|
|
6477
|
+
/* @__PURE__ */ jsx18("span", { className: "text-foreground truncate", children: String(displayValue) })
|
|
4692
6478
|
] }, field.id);
|
|
4693
6479
|
}) })
|
|
4694
6480
|
] })
|
|
@@ -4703,8 +6489,8 @@ function GalleryView({ schema, records, onDeleteRecord, onOpenModal }) {
|
|
|
4703
6489
|
className: "flex flex-col items-center justify-center cursor-pointer border-2 border-dashed border-muted-foreground/20 rounded-lg transition-all hover:border-primary hover:bg-muted/50 min-h-[200px]",
|
|
4704
6490
|
onClick: () => onOpenModal("add"),
|
|
4705
6491
|
children: [
|
|
4706
|
-
/* @__PURE__ */
|
|
4707
|
-
/* @__PURE__ */
|
|
6492
|
+
/* @__PURE__ */ jsx18("div", { className: "h-10 w-10 rounded-full bg-muted flex items-center justify-center mb-3", children: /* @__PURE__ */ jsx18(Plus3, { className: "h-5 w-5 text-muted-foreground" }) }),
|
|
6493
|
+
/* @__PURE__ */ jsx18("span", { className: "text-sm font-medium text-muted-foreground", children: t("addRecord") })
|
|
4708
6494
|
]
|
|
4709
6495
|
}
|
|
4710
6496
|
)
|
|
@@ -4712,16 +6498,38 @@ function GalleryView({ schema, records, onDeleteRecord, onOpenModal }) {
|
|
|
4712
6498
|
}
|
|
4713
6499
|
|
|
4714
6500
|
// src/components/views/CalendarView.tsx
|
|
4715
|
-
import { useMemo as
|
|
6501
|
+
import { useMemo as useMemo3, useState as useState5 } from "react";
|
|
4716
6502
|
import { ChevronLeft, ChevronRight as ChevronRight2, Plus as Plus4, Eye as Eye4, Pencil as Pencil4, Trash2 as Trash24, MoreHorizontal as MoreHorizontal3 } from "lucide-react";
|
|
4717
|
-
import { jsx as
|
|
6503
|
+
import { jsx as jsx19, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
6504
|
+
var CALENDAR_COLORS = [
|
|
6505
|
+
"blue",
|
|
6506
|
+
"green",
|
|
6507
|
+
"purple",
|
|
6508
|
+
"orange",
|
|
6509
|
+
"pink",
|
|
6510
|
+
"cyan",
|
|
6511
|
+
"indigo",
|
|
6512
|
+
"teal",
|
|
6513
|
+
"rose",
|
|
6514
|
+
"amber",
|
|
6515
|
+
"emerald",
|
|
6516
|
+
"violet"
|
|
6517
|
+
];
|
|
6518
|
+
function getRecordColor(recordId) {
|
|
6519
|
+
const hash = recordId.split("").reduce((acc, char) => {
|
|
6520
|
+
return char.charCodeAt(0) + ((acc << 5) - acc);
|
|
6521
|
+
}, 0);
|
|
6522
|
+
const index = Math.abs(hash) % CALENDAR_COLORS.length;
|
|
6523
|
+
return CALENDAR_COLORS[index];
|
|
6524
|
+
}
|
|
4718
6525
|
function CalendarView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenModal }) {
|
|
4719
|
-
const
|
|
6526
|
+
const { t, lang } = useI18n();
|
|
6527
|
+
const [currentDate, setCurrentDate] = useState5(/* @__PURE__ */ new Date());
|
|
4720
6528
|
const dateField = getDateField(schema);
|
|
4721
6529
|
const primaryField = getPrimaryField(schema);
|
|
4722
6530
|
const monthStart = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1);
|
|
4723
6531
|
const monthEnd = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0);
|
|
4724
|
-
const calendarDays =
|
|
6532
|
+
const calendarDays = useMemo3(() => {
|
|
4725
6533
|
const days = [];
|
|
4726
6534
|
const firstDayOfWeek = monthStart.getDay();
|
|
4727
6535
|
for (let i = firstDayOfWeek - 1; i >= 0; i--) {
|
|
@@ -4740,7 +6548,7 @@ function CalendarView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenM
|
|
|
4740
6548
|
}
|
|
4741
6549
|
return days;
|
|
4742
6550
|
}, [currentDate, monthStart, monthEnd]);
|
|
4743
|
-
const recordsByDate =
|
|
6551
|
+
const recordsByDate = useMemo3(() => {
|
|
4744
6552
|
const map = {};
|
|
4745
6553
|
if (!dateField) return map;
|
|
4746
6554
|
records.forEach((record) => {
|
|
@@ -4764,23 +6572,10 @@ function CalendarView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenM
|
|
|
4764
6572
|
if (!dateField) return;
|
|
4765
6573
|
onUpdateRecord(recordId, { [dateField.id]: newDate.toISOString().split("T")[0] });
|
|
4766
6574
|
};
|
|
4767
|
-
const weekDays =
|
|
4768
|
-
const monthNames =
|
|
4769
|
-
"January",
|
|
4770
|
-
"February",
|
|
4771
|
-
"March",
|
|
4772
|
-
"April",
|
|
4773
|
-
"May",
|
|
4774
|
-
"June",
|
|
4775
|
-
"July",
|
|
4776
|
-
"August",
|
|
4777
|
-
"September",
|
|
4778
|
-
"October",
|
|
4779
|
-
"November",
|
|
4780
|
-
"December"
|
|
4781
|
-
];
|
|
6575
|
+
const weekDays = t("weekDays").split(",");
|
|
6576
|
+
const monthNames = t("monthNames").split(",");
|
|
4782
6577
|
if (!dateField) {
|
|
4783
|
-
return /* @__PURE__ */
|
|
6578
|
+
return /* @__PURE__ */ jsx19("div", { className: "h-full flex items-center justify-center text-muted-foreground", children: t("noDateField") });
|
|
4784
6579
|
}
|
|
4785
6580
|
return /* @__PURE__ */ jsxs8("div", { className: "h-full flex flex-col p-6 bg-muted/30", children: [
|
|
4786
6581
|
/* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-between mb-4", children: [
|
|
@@ -4790,42 +6585,42 @@ function CalendarView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenM
|
|
|
4790
6585
|
" ",
|
|
4791
6586
|
currentDate.getFullYear()
|
|
4792
6587
|
] }),
|
|
4793
|
-
/* @__PURE__ */
|
|
6588
|
+
/* @__PURE__ */ jsx19(
|
|
4794
6589
|
Button,
|
|
4795
6590
|
{
|
|
4796
6591
|
variant: "outline",
|
|
4797
6592
|
size: "sm",
|
|
4798
6593
|
onClick: () => setCurrentDate(/* @__PURE__ */ new Date()),
|
|
4799
|
-
children: "
|
|
6594
|
+
children: t("today")
|
|
4800
6595
|
}
|
|
4801
6596
|
)
|
|
4802
6597
|
] }),
|
|
4803
6598
|
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-1", children: [
|
|
4804
|
-
/* @__PURE__ */
|
|
6599
|
+
/* @__PURE__ */ jsx19(
|
|
4805
6600
|
Button,
|
|
4806
6601
|
{
|
|
4807
6602
|
variant: "outline",
|
|
4808
6603
|
size: "icon",
|
|
4809
6604
|
className: "h-8 w-8",
|
|
4810
6605
|
onClick: () => setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() - 1, 1)),
|
|
4811
|
-
children: /* @__PURE__ */
|
|
6606
|
+
children: /* @__PURE__ */ jsx19(ChevronLeft, { className: "h-4 w-4" })
|
|
4812
6607
|
}
|
|
4813
6608
|
),
|
|
4814
|
-
/* @__PURE__ */
|
|
6609
|
+
/* @__PURE__ */ jsx19(
|
|
4815
6610
|
Button,
|
|
4816
6611
|
{
|
|
4817
6612
|
variant: "outline",
|
|
4818
6613
|
size: "icon",
|
|
4819
6614
|
className: "h-8 w-8",
|
|
4820
6615
|
onClick: () => setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1)),
|
|
4821
|
-
children: /* @__PURE__ */
|
|
6616
|
+
children: /* @__PURE__ */ jsx19(ChevronRight2, { className: "h-4 w-4" })
|
|
4822
6617
|
}
|
|
4823
6618
|
)
|
|
4824
6619
|
] })
|
|
4825
6620
|
] }),
|
|
4826
|
-
/* @__PURE__ */ jsxs8("div", { className: "flex-1 border rounded-lg overflow-hidden bg-background flex flex-col", children: [
|
|
4827
|
-
/* @__PURE__ */
|
|
4828
|
-
/* @__PURE__ */
|
|
6621
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex-1 border rounded-lg overflow-hidden bg-background flex flex-col shadow-sm", children: [
|
|
6622
|
+
/* @__PURE__ */ jsx19("div", { className: "grid grid-cols-7 bg-muted/50 border-b", children: weekDays.map((day) => /* @__PURE__ */ jsx19("div", { className: "px-2 py-2 text-center text-xs font-medium text-muted-foreground uppercase tracking-wider", children: day }, day)) }),
|
|
6623
|
+
/* @__PURE__ */ jsx19("div", { className: "grid grid-cols-7 flex-1", children: calendarDays.map((date, index) => {
|
|
4829
6624
|
const dateKey = date.toISOString().split("T")[0];
|
|
4830
6625
|
const dayRecords = recordsByDate[dateKey] || [];
|
|
4831
6626
|
return /* @__PURE__ */ jsxs8(
|
|
@@ -4833,8 +6628,8 @@ function CalendarView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenM
|
|
|
4833
6628
|
{
|
|
4834
6629
|
className: cn(
|
|
4835
6630
|
"min-h-[100px] p-1.5 border-b border-r transition-all group relative flex flex-col",
|
|
4836
|
-
!isCurrentMonth(date) && "bg-muted/
|
|
4837
|
-
isCurrentMonth(date) && "hover:bg-muted/
|
|
6631
|
+
!isCurrentMonth(date) && "bg-muted/20 text-muted-foreground/40",
|
|
6632
|
+
isCurrentMonth(date) && "hover:bg-muted/5",
|
|
4838
6633
|
index % 7 === 6 && "border-r-0"
|
|
4839
6634
|
),
|
|
4840
6635
|
onDragOver: (e) => e.preventDefault(),
|
|
@@ -4844,22 +6639,22 @@ function CalendarView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenM
|
|
|
4844
6639
|
},
|
|
4845
6640
|
children: [
|
|
4846
6641
|
/* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-between mb-1", children: [
|
|
4847
|
-
/* @__PURE__ */
|
|
4848
|
-
"text-xs w-6 h-6 flex items-center justify-center rounded-full",
|
|
4849
|
-
isToday(date) ? "bg-primary text-primary-foreground font-
|
|
6642
|
+
/* @__PURE__ */ jsx19("span", { className: cn(
|
|
6643
|
+
"text-xs w-6 h-6 flex items-center justify-center rounded-full transition-colors",
|
|
6644
|
+
isToday(date) ? "bg-primary text-primary-foreground font-semibold shadow-sm" : "text-muted-foreground group-hover:text-foreground"
|
|
4850
6645
|
), children: date.getDate() }),
|
|
4851
|
-
/* @__PURE__ */
|
|
6646
|
+
/* @__PURE__ */ jsx19(
|
|
4852
6647
|
Button,
|
|
4853
6648
|
{
|
|
4854
6649
|
variant: "ghost",
|
|
4855
6650
|
size: "icon",
|
|
4856
6651
|
className: "h-5 w-5 opacity-0 group-hover:opacity-100 transition-opacity",
|
|
4857
6652
|
onClick: () => handleDayClick(date),
|
|
4858
|
-
children: /* @__PURE__ */
|
|
6653
|
+
children: /* @__PURE__ */ jsx19(Plus4, { className: "h-3 w-3" })
|
|
4859
6654
|
}
|
|
4860
6655
|
)
|
|
4861
6656
|
] }),
|
|
4862
|
-
/* @__PURE__ */
|
|
6657
|
+
/* @__PURE__ */ jsx19("div", { className: "flex-1 space-y-0.5 overflow-y-auto", children: dayRecords.map((record) => /* @__PURE__ */ jsxs8(
|
|
4863
6658
|
"div",
|
|
4864
6659
|
{
|
|
4865
6660
|
draggable: true,
|
|
@@ -4873,28 +6668,30 @@ function CalendarView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenM
|
|
|
4873
6668
|
},
|
|
4874
6669
|
className: "group/item relative",
|
|
4875
6670
|
children: [
|
|
4876
|
-
/* @__PURE__ */
|
|
4877
|
-
|
|
6671
|
+
/* @__PURE__ */ jsx19(
|
|
6672
|
+
"div",
|
|
4878
6673
|
{
|
|
4879
|
-
|
|
4880
|
-
|
|
4881
|
-
|
|
6674
|
+
className: cn(
|
|
6675
|
+
"w-full justify-start truncate text-[11px] py-0.5 px-2 rounded-md cursor-grab active:cursor-grabbing transition-all hover:scale-[1.02] shadow-sm",
|
|
6676
|
+
getBadgeColor(getRecordColor(record.id))
|
|
6677
|
+
),
|
|
6678
|
+
children: primaryField ? record.fields[primaryField.id] || t("untitled") : t("untitled")
|
|
4882
6679
|
}
|
|
4883
6680
|
),
|
|
4884
|
-
/* @__PURE__ */
|
|
4885
|
-
/* @__PURE__ */
|
|
6681
|
+
/* @__PURE__ */ jsx19("div", { className: "absolute right-0 top-0 h-full flex items-center opacity-0 group-hover/item:opacity-100 bg-background/90 px-0.5 rounded-r border-l", children: /* @__PURE__ */ jsxs8(DropdownMenu, { children: [
|
|
6682
|
+
/* @__PURE__ */ jsx19(DropdownMenuTrigger, { asChild: true, onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsx19(MoreHorizontal3, { className: "h-3 w-3 text-muted-foreground cursor-pointer hover:text-foreground" }) }),
|
|
4886
6683
|
/* @__PURE__ */ jsxs8(DropdownMenuContent, { align: "end", children: [
|
|
4887
6684
|
/* @__PURE__ */ jsxs8(DropdownMenuItem, { onClick: () => onOpenModal("view", record), children: [
|
|
4888
|
-
/* @__PURE__ */
|
|
4889
|
-
"
|
|
6685
|
+
/* @__PURE__ */ jsx19(Eye4, { className: "h-4 w-4 mr-2" }),
|
|
6686
|
+
t("view")
|
|
4890
6687
|
] }),
|
|
4891
6688
|
/* @__PURE__ */ jsxs8(DropdownMenuItem, { onClick: () => onOpenModal("edit", record), children: [
|
|
4892
|
-
/* @__PURE__ */
|
|
4893
|
-
"
|
|
6689
|
+
/* @__PURE__ */ jsx19(Pencil4, { className: "h-4 w-4 mr-2" }),
|
|
6690
|
+
t("edit")
|
|
4894
6691
|
] }),
|
|
4895
6692
|
/* @__PURE__ */ jsxs8(DropdownMenuItem, { className: "text-destructive focus:text-destructive", onClick: () => onDeleteRecord(record.id), children: [
|
|
4896
|
-
/* @__PURE__ */
|
|
4897
|
-
"
|
|
6693
|
+
/* @__PURE__ */ jsx19(Trash24, { className: "h-4 w-4 mr-2" }),
|
|
6694
|
+
t("delete")
|
|
4898
6695
|
] })
|
|
4899
6696
|
] })
|
|
4900
6697
|
] }) })
|
|
@@ -4912,15 +6709,15 @@ function CalendarView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenM
|
|
|
4912
6709
|
}
|
|
4913
6710
|
|
|
4914
6711
|
// src/components/ui/dialog.tsx
|
|
4915
|
-
import * as
|
|
6712
|
+
import * as React13 from "react";
|
|
4916
6713
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
4917
|
-
import { X } from "lucide-react";
|
|
4918
|
-
import { jsx as
|
|
6714
|
+
import { X as X2 } from "lucide-react";
|
|
6715
|
+
import { jsx as jsx20, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
4919
6716
|
var Dialog = DialogPrimitive.Root;
|
|
4920
6717
|
var DialogPortal = DialogPrimitive.Portal;
|
|
4921
|
-
var DialogOverlay =
|
|
6718
|
+
var DialogOverlay = React13.forwardRef((_a, ref) => {
|
|
4922
6719
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4923
|
-
return /* @__PURE__ */
|
|
6720
|
+
return /* @__PURE__ */ jsx20(
|
|
4924
6721
|
DialogPrimitive.Overlay,
|
|
4925
6722
|
__spreadValues({
|
|
4926
6723
|
ref,
|
|
@@ -4932,10 +6729,10 @@ var DialogOverlay = React12.forwardRef((_a, ref) => {
|
|
|
4932
6729
|
);
|
|
4933
6730
|
});
|
|
4934
6731
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
4935
|
-
var DialogContent =
|
|
6732
|
+
var DialogContent = React13.forwardRef((_a, ref) => {
|
|
4936
6733
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
4937
6734
|
return /* @__PURE__ */ jsxs9(DialogPortal, { children: [
|
|
4938
|
-
/* @__PURE__ */
|
|
6735
|
+
/* @__PURE__ */ jsx20(DialogOverlay, {}),
|
|
4939
6736
|
/* @__PURE__ */ jsxs9(
|
|
4940
6737
|
DialogPrimitive.Content,
|
|
4941
6738
|
__spreadProps(__spreadValues({
|
|
@@ -4948,8 +6745,8 @@ var DialogContent = React12.forwardRef((_a, ref) => {
|
|
|
4948
6745
|
children: [
|
|
4949
6746
|
children,
|
|
4950
6747
|
/* @__PURE__ */ jsxs9(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
|
|
4951
|
-
/* @__PURE__ */
|
|
4952
|
-
/* @__PURE__ */
|
|
6748
|
+
/* @__PURE__ */ jsx20(X2, { className: "h-4 w-4" }),
|
|
6749
|
+
/* @__PURE__ */ jsx20("span", { className: "sr-only", children: "Close" })
|
|
4953
6750
|
] })
|
|
4954
6751
|
]
|
|
4955
6752
|
})
|
|
@@ -4963,7 +6760,7 @@ var DialogHeader = (_a) => {
|
|
|
4963
6760
|
} = _b, props = __objRest(_b, [
|
|
4964
6761
|
"className"
|
|
4965
6762
|
]);
|
|
4966
|
-
return /* @__PURE__ */
|
|
6763
|
+
return /* @__PURE__ */ jsx20(
|
|
4967
6764
|
"div",
|
|
4968
6765
|
__spreadValues({
|
|
4969
6766
|
className: cn(
|
|
@@ -4980,7 +6777,7 @@ var DialogFooter = (_a) => {
|
|
|
4980
6777
|
} = _b, props = __objRest(_b, [
|
|
4981
6778
|
"className"
|
|
4982
6779
|
]);
|
|
4983
|
-
return /* @__PURE__ */
|
|
6780
|
+
return /* @__PURE__ */ jsx20(
|
|
4984
6781
|
"div",
|
|
4985
6782
|
__spreadValues({
|
|
4986
6783
|
className: cn(
|
|
@@ -4991,9 +6788,9 @@ var DialogFooter = (_a) => {
|
|
|
4991
6788
|
);
|
|
4992
6789
|
};
|
|
4993
6790
|
DialogFooter.displayName = "DialogFooter";
|
|
4994
|
-
var DialogTitle =
|
|
6791
|
+
var DialogTitle = React13.forwardRef((_a, ref) => {
|
|
4995
6792
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4996
|
-
return /* @__PURE__ */
|
|
6793
|
+
return /* @__PURE__ */ jsx20(
|
|
4997
6794
|
DialogPrimitive.Title,
|
|
4998
6795
|
__spreadValues({
|
|
4999
6796
|
ref,
|
|
@@ -5005,9 +6802,9 @@ var DialogTitle = React12.forwardRef((_a, ref) => {
|
|
|
5005
6802
|
);
|
|
5006
6803
|
});
|
|
5007
6804
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
5008
|
-
var DialogDescription =
|
|
6805
|
+
var DialogDescription = React13.forwardRef((_a, ref) => {
|
|
5009
6806
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5010
|
-
return /* @__PURE__ */
|
|
6807
|
+
return /* @__PURE__ */ jsx20(
|
|
5011
6808
|
DialogPrimitive.Description,
|
|
5012
6809
|
__spreadValues({
|
|
5013
6810
|
ref,
|
|
@@ -5018,10 +6815,10 @@ var DialogDescription = React12.forwardRef((_a, ref) => {
|
|
|
5018
6815
|
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
5019
6816
|
|
|
5020
6817
|
// src/components/ui/scroll-area.tsx
|
|
5021
|
-
import * as
|
|
6818
|
+
import * as React14 from "react";
|
|
5022
6819
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
5023
|
-
import { jsx as
|
|
5024
|
-
var ScrollArea =
|
|
6820
|
+
import { jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
6821
|
+
var ScrollArea = React14.forwardRef((_a, ref) => {
|
|
5025
6822
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
5026
6823
|
return /* @__PURE__ */ jsxs10(
|
|
5027
6824
|
ScrollAreaPrimitive.Root,
|
|
@@ -5030,17 +6827,17 @@ var ScrollArea = React13.forwardRef((_a, ref) => {
|
|
|
5030
6827
|
className: cn("relative overflow-hidden", className)
|
|
5031
6828
|
}, props), {
|
|
5032
6829
|
children: [
|
|
5033
|
-
/* @__PURE__ */
|
|
5034
|
-
/* @__PURE__ */
|
|
5035
|
-
/* @__PURE__ */
|
|
6830
|
+
/* @__PURE__ */ jsx21(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
|
|
6831
|
+
/* @__PURE__ */ jsx21(ScrollBar, {}),
|
|
6832
|
+
/* @__PURE__ */ jsx21(ScrollAreaPrimitive.Corner, {})
|
|
5036
6833
|
]
|
|
5037
6834
|
})
|
|
5038
6835
|
);
|
|
5039
6836
|
});
|
|
5040
6837
|
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
5041
|
-
var ScrollBar =
|
|
6838
|
+
var ScrollBar = React14.forwardRef((_a, ref) => {
|
|
5042
6839
|
var _b = _a, { className, orientation = "vertical" } = _b, props = __objRest(_b, ["className", "orientation"]);
|
|
5043
|
-
return /* @__PURE__ */
|
|
6840
|
+
return /* @__PURE__ */ jsx21(
|
|
5044
6841
|
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
5045
6842
|
__spreadProps(__spreadValues({
|
|
5046
6843
|
ref,
|
|
@@ -5052,14 +6849,14 @@ var ScrollBar = React13.forwardRef((_a, ref) => {
|
|
|
5052
6849
|
className
|
|
5053
6850
|
)
|
|
5054
6851
|
}, props), {
|
|
5055
|
-
children: /* @__PURE__ */
|
|
6852
|
+
children: /* @__PURE__ */ jsx21(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
|
|
5056
6853
|
})
|
|
5057
6854
|
);
|
|
5058
6855
|
});
|
|
5059
6856
|
ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
|
|
5060
6857
|
|
|
5061
6858
|
// src/components/RecordModal.tsx
|
|
5062
|
-
import { jsx as
|
|
6859
|
+
import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
5063
6860
|
function RecordModal({
|
|
5064
6861
|
isOpen,
|
|
5065
6862
|
onClose,
|
|
@@ -5069,27 +6866,28 @@ function RecordModal({
|
|
|
5069
6866
|
initialValues,
|
|
5070
6867
|
onSubmit
|
|
5071
6868
|
}) {
|
|
6869
|
+
const { t } = useI18n();
|
|
5072
6870
|
const titles = {
|
|
5073
|
-
add: "
|
|
5074
|
-
edit: "
|
|
5075
|
-
view: "
|
|
6871
|
+
add: t("createNewRecord"),
|
|
6872
|
+
edit: t("editRecord"),
|
|
6873
|
+
view: t("recordDetails")
|
|
5076
6874
|
};
|
|
5077
6875
|
const descriptions = {
|
|
5078
|
-
add: "
|
|
5079
|
-
edit: "
|
|
5080
|
-
view: "
|
|
6876
|
+
add: t("enterDetails"),
|
|
6877
|
+
edit: t("modifyValues"),
|
|
6878
|
+
view: t("viewData")
|
|
5081
6879
|
};
|
|
5082
6880
|
const handleSubmit = (values) => {
|
|
5083
6881
|
onSubmit(values);
|
|
5084
6882
|
onClose();
|
|
5085
6883
|
};
|
|
5086
6884
|
const formValues = mode === "add" ? initialValues : record == null ? void 0 : record.fields;
|
|
5087
|
-
return /* @__PURE__ */
|
|
5088
|
-
/* @__PURE__ */ jsxs11(DialogHeader, { children: [
|
|
5089
|
-
/* @__PURE__ */
|
|
5090
|
-
/* @__PURE__ */
|
|
6885
|
+
return /* @__PURE__ */ jsx22(Dialog, { open: isOpen, onOpenChange: (open) => !open && onClose(), children: /* @__PURE__ */ jsxs11(DialogContent, { className: "sm:max-w-[500px] max-h-[85vh] flex flex-col", children: [
|
|
6886
|
+
/* @__PURE__ */ jsxs11(DialogHeader, { className: "space-y-1.5", children: [
|
|
6887
|
+
/* @__PURE__ */ jsx22(DialogTitle, { children: titles[mode] }),
|
|
6888
|
+
/* @__PURE__ */ jsx22(DialogDescription, { children: descriptions[mode] })
|
|
5091
6889
|
] }),
|
|
5092
|
-
/* @__PURE__ */
|
|
6890
|
+
/* @__PURE__ */ jsx22(ScrollArea, { className: "flex-1 -mx-6 px-6 mt-4", children: /* @__PURE__ */ jsx22(
|
|
5093
6891
|
RecordForm,
|
|
5094
6892
|
{
|
|
5095
6893
|
schema,
|
|
@@ -5104,33 +6902,34 @@ function RecordModal({
|
|
|
5104
6902
|
// src/components/ThemeToggle.tsx
|
|
5105
6903
|
import { useTheme } from "next-themes";
|
|
5106
6904
|
import { Moon, Sun } from "lucide-react";
|
|
5107
|
-
import { jsx as
|
|
6905
|
+
import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
5108
6906
|
function ThemeToggle() {
|
|
5109
6907
|
const { setTheme, theme } = useTheme();
|
|
5110
6908
|
return /* @__PURE__ */ jsxs12(DropdownMenu, { children: [
|
|
5111
|
-
/* @__PURE__ */
|
|
5112
|
-
/* @__PURE__ */
|
|
5113
|
-
/* @__PURE__ */
|
|
5114
|
-
/* @__PURE__ */
|
|
6909
|
+
/* @__PURE__ */ jsx23(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs12(Button, { variant: "ghost", size: "icon", className: "h-9 w-9", children: [
|
|
6910
|
+
/* @__PURE__ */ jsx23(Sun, { className: "h-4 w-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
|
|
6911
|
+
/* @__PURE__ */ jsx23(Moon, { className: "absolute h-4 w-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" }),
|
|
6912
|
+
/* @__PURE__ */ jsx23("span", { className: "sr-only", children: "Toggle theme" })
|
|
5115
6913
|
] }) }),
|
|
5116
6914
|
/* @__PURE__ */ jsxs12(DropdownMenuContent, { align: "end", children: [
|
|
5117
|
-
/* @__PURE__ */
|
|
5118
|
-
/* @__PURE__ */
|
|
5119
|
-
/* @__PURE__ */
|
|
6915
|
+
/* @__PURE__ */ jsx23(DropdownMenuItem, { onClick: () => setTheme("light"), children: "Light" }),
|
|
6916
|
+
/* @__PURE__ */ jsx23(DropdownMenuItem, { onClick: () => setTheme("dark"), children: "Dark" }),
|
|
6917
|
+
/* @__PURE__ */ jsx23(DropdownMenuItem, { onClick: () => setTheme("system"), children: "System" })
|
|
5120
6918
|
] })
|
|
5121
6919
|
] });
|
|
5122
6920
|
}
|
|
5123
6921
|
|
|
5124
6922
|
// src/components/DataViews.tsx
|
|
5125
|
-
import { jsx as
|
|
5126
|
-
function
|
|
5127
|
-
const
|
|
5128
|
-
const [
|
|
5129
|
-
const [
|
|
6923
|
+
import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
6924
|
+
function DataViewsInner({ schema, dbClient, config }) {
|
|
6925
|
+
const { t } = useI18n();
|
|
6926
|
+
const [records, setRecords] = useState6([]);
|
|
6927
|
+
const [activeView, setActiveView] = useState6((config == null ? void 0 : config.defaultView) || "grid");
|
|
6928
|
+
const [modalState, setModalState] = useState6({
|
|
5130
6929
|
isOpen: false,
|
|
5131
6930
|
mode: "add"
|
|
5132
6931
|
});
|
|
5133
|
-
const [mounted, setMounted] =
|
|
6932
|
+
const [mounted, setMounted] = useState6(false);
|
|
5134
6933
|
const hasSelectField = !!getSelectField(schema);
|
|
5135
6934
|
const hasDateField = !!getDateField(schema);
|
|
5136
6935
|
const fetchRecords = async () => {
|
|
@@ -5187,43 +6986,43 @@ function DataViews({ schema, dbClient, config }) {
|
|
|
5187
6986
|
return /* @__PURE__ */ jsxs13("div", { className: "h-full w-full flex flex-col bg-background", children: [
|
|
5188
6987
|
/* @__PURE__ */ jsxs13("header", { className: "border-b px-6 py-3 flex items-center justify-between shrink-0", children: [
|
|
5189
6988
|
/* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-3", children: [
|
|
5190
|
-
/* @__PURE__ */
|
|
5191
|
-
/* @__PURE__ */
|
|
6989
|
+
/* @__PURE__ */ jsx24("span", { className: "text-2xl", children: schema.icon }),
|
|
6990
|
+
/* @__PURE__ */ jsx24("h1", { className: "text-lg font-semibold", children: schema.name })
|
|
5192
6991
|
] }),
|
|
5193
|
-
/* @__PURE__ */
|
|
6992
|
+
/* @__PURE__ */ jsx24(ThemeToggle, {})
|
|
5194
6993
|
] }),
|
|
5195
6994
|
/* @__PURE__ */ jsxs13(Tabs, { value: activeView, onValueChange: (v) => setActiveView(v), className: "flex-1 flex flex-col overflow-hidden", children: [
|
|
5196
|
-
/* @__PURE__ */
|
|
6995
|
+
/* @__PURE__ */ jsx24("div", { className: "border-b px-4 shrink-0", children: /* @__PURE__ */ jsxs13(TabsList, { className: "h-10", children: [
|
|
5197
6996
|
/* @__PURE__ */ jsxs13(TabsTrigger, { value: "grid", className: "gap-2", children: [
|
|
5198
|
-
mounted && /* @__PURE__ */
|
|
5199
|
-
"
|
|
6997
|
+
mounted && /* @__PURE__ */ jsx24(LayoutGrid, { className: "h-4 w-4" }),
|
|
6998
|
+
t("gridView")
|
|
5200
6999
|
] }),
|
|
5201
7000
|
/* @__PURE__ */ jsxs13(TabsTrigger, { value: "form", className: "gap-2", children: [
|
|
5202
|
-
mounted && /* @__PURE__ */
|
|
5203
|
-
"
|
|
7001
|
+
mounted && /* @__PURE__ */ jsx24(FileText, { className: "h-4 w-4" }),
|
|
7002
|
+
t("formView")
|
|
5204
7003
|
] }),
|
|
5205
7004
|
hasSelectField && /* @__PURE__ */ jsxs13(TabsTrigger, { value: "kanban", className: "gap-2", children: [
|
|
5206
|
-
mounted && /* @__PURE__ */
|
|
5207
|
-
"
|
|
7005
|
+
mounted && /* @__PURE__ */ jsx24(Columns, { className: "h-4 w-4" }),
|
|
7006
|
+
t("kanbanView")
|
|
5208
7007
|
] }),
|
|
5209
7008
|
/* @__PURE__ */ jsxs13(TabsTrigger, { value: "gallery", className: "gap-2", children: [
|
|
5210
|
-
mounted && /* @__PURE__ */
|
|
5211
|
-
"
|
|
7009
|
+
mounted && /* @__PURE__ */ jsx24(Image, { className: "h-4 w-4" }),
|
|
7010
|
+
t("galleryView")
|
|
5212
7011
|
] }),
|
|
5213
7012
|
hasDateField && /* @__PURE__ */ jsxs13(TabsTrigger, { value: "calendar", className: "gap-2", children: [
|
|
5214
|
-
mounted && /* @__PURE__ */
|
|
5215
|
-
"
|
|
7013
|
+
mounted && /* @__PURE__ */ jsx24(CalendarIcon, { className: "h-4 w-4" }),
|
|
7014
|
+
t("calendarView")
|
|
5216
7015
|
] })
|
|
5217
7016
|
] }) }),
|
|
5218
7017
|
/* @__PURE__ */ jsxs13("div", { className: "flex-1 overflow-auto relative", children: [
|
|
5219
|
-
/* @__PURE__ */
|
|
5220
|
-
/* @__PURE__ */
|
|
5221
|
-
hasSelectField && /* @__PURE__ */
|
|
5222
|
-
/* @__PURE__ */
|
|
5223
|
-
hasDateField && /* @__PURE__ */
|
|
7018
|
+
/* @__PURE__ */ jsx24(TabsContent, { value: "grid", className: "h-full m-0", children: /* @__PURE__ */ jsx24(GridView, __spreadValues({}, commonProps)) }),
|
|
7019
|
+
/* @__PURE__ */ jsx24(TabsContent, { value: "form", className: "h-full m-0", children: /* @__PURE__ */ jsx24(FormView, __spreadValues({}, commonProps)) }),
|
|
7020
|
+
hasSelectField && /* @__PURE__ */ jsx24(TabsContent, { value: "kanban", className: "h-full m-0", children: /* @__PURE__ */ jsx24(KanbanView, __spreadValues({}, commonProps)) }),
|
|
7021
|
+
/* @__PURE__ */ jsx24(TabsContent, { value: "gallery", className: "h-full m-0", children: /* @__PURE__ */ jsx24(GalleryView, __spreadValues({}, commonProps)) }),
|
|
7022
|
+
hasDateField && /* @__PURE__ */ jsx24(TabsContent, { value: "calendar", className: "h-full m-0", children: /* @__PURE__ */ jsx24(CalendarView, __spreadValues({}, commonProps)) })
|
|
5224
7023
|
] })
|
|
5225
7024
|
] }),
|
|
5226
|
-
/* @__PURE__ */
|
|
7025
|
+
/* @__PURE__ */ jsx24(
|
|
5227
7026
|
RecordModal,
|
|
5228
7027
|
{
|
|
5229
7028
|
isOpen: modalState.isOpen,
|
|
@@ -5243,10 +7042,23 @@ function DataViews({ schema, dbClient, config }) {
|
|
|
5243
7042
|
)
|
|
5244
7043
|
] });
|
|
5245
7044
|
}
|
|
7045
|
+
function DataViews(props) {
|
|
7046
|
+
var _a;
|
|
7047
|
+
return /* @__PURE__ */ jsx24(I18nProvider, { lang: (_a = props.config) == null ? void 0 : _a.language, children: /* @__PURE__ */ jsx24(DataViewsInner, __spreadValues({}, props)) });
|
|
7048
|
+
}
|
|
5246
7049
|
export {
|
|
7050
|
+
BADGE_COLOR_MAP,
|
|
7051
|
+
DOT_COLOR_MAP,
|
|
5247
7052
|
DataViews,
|
|
7053
|
+
LANGUAGES,
|
|
7054
|
+
PRESET_COLORS,
|
|
7055
|
+
getBadgeColor,
|
|
5248
7056
|
getDateField,
|
|
7057
|
+
getDirection,
|
|
7058
|
+
getDotColor,
|
|
5249
7059
|
getPrimaryField,
|
|
5250
7060
|
getSelectField,
|
|
5251
|
-
|
|
7061
|
+
getTranslation,
|
|
7062
|
+
tableSchema,
|
|
7063
|
+
translations
|
|
5252
7064
|
};
|