shadcn-data-views 1.0.3 → 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 +4 -3
package/dist/index.js
CHANGED
|
@@ -59,11 +59,20 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
59
59
|
// src/index.ts
|
|
60
60
|
var index_exports = {};
|
|
61
61
|
__export(index_exports, {
|
|
62
|
+
BADGE_COLOR_MAP: () => BADGE_COLOR_MAP,
|
|
63
|
+
DOT_COLOR_MAP: () => DOT_COLOR_MAP,
|
|
62
64
|
DataViews: () => DataViews,
|
|
65
|
+
LANGUAGES: () => LANGUAGES,
|
|
66
|
+
PRESET_COLORS: () => PRESET_COLORS,
|
|
67
|
+
getBadgeColor: () => getBadgeColor,
|
|
63
68
|
getDateField: () => getDateField,
|
|
69
|
+
getDirection: () => getDirection,
|
|
70
|
+
getDotColor: () => getDotColor,
|
|
64
71
|
getPrimaryField: () => getPrimaryField,
|
|
65
72
|
getSelectField: () => getSelectField,
|
|
66
|
-
|
|
73
|
+
getTranslation: () => getTranslation,
|
|
74
|
+
tableSchema: () => tableSchema,
|
|
75
|
+
translations: () => translations
|
|
67
76
|
});
|
|
68
77
|
module.exports = __toCommonJS(index_exports);
|
|
69
78
|
|
|
@@ -987,9 +996,21 @@ body {
|
|
|
987
996
|
.w-\\[100px\\] {
|
|
988
997
|
width: 100px;
|
|
989
998
|
}
|
|
999
|
+
.w-\\[120px\\] {
|
|
1000
|
+
width: 120px;
|
|
1001
|
+
}
|
|
1002
|
+
.w-\\[150px\\] {
|
|
1003
|
+
width: 150px;
|
|
1004
|
+
}
|
|
1005
|
+
.w-\\[180px\\] {
|
|
1006
|
+
width: 180px;
|
|
1007
|
+
}
|
|
990
1008
|
.w-\\[1px\\] {
|
|
991
1009
|
width: 1px;
|
|
992
1010
|
}
|
|
1011
|
+
.w-\\[200px\\] {
|
|
1012
|
+
width: 200px;
|
|
1013
|
+
}
|
|
993
1014
|
.w-\\[264px\\] {
|
|
994
1015
|
width: 264px;
|
|
995
1016
|
}
|
|
@@ -1266,6 +1287,11 @@ body {
|
|
|
1266
1287
|
margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
|
|
1267
1288
|
margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
|
|
1268
1289
|
}
|
|
1290
|
+
.space-y-3 > :not([hidden]) ~ :not([hidden]) {
|
|
1291
|
+
--tw-space-y-reverse: 0;
|
|
1292
|
+
margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
|
|
1293
|
+
margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
|
|
1294
|
+
}
|
|
1269
1295
|
.space-y-5 > :not([hidden]) ~ :not([hidden]) {
|
|
1270
1296
|
--tw-space-y-reverse: 0;
|
|
1271
1297
|
margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));
|
|
@@ -1444,15 +1470,27 @@ body {
|
|
|
1444
1470
|
--tw-bg-opacity: 1;
|
|
1445
1471
|
background-color: rgb(254 243 199 / var(--tw-bg-opacity, 1));
|
|
1446
1472
|
}
|
|
1473
|
+
.bg-amber-200 {
|
|
1474
|
+
--tw-bg-opacity: 1;
|
|
1475
|
+
background-color: rgb(253 230 138 / var(--tw-bg-opacity, 1));
|
|
1476
|
+
}
|
|
1477
|
+
.bg-amber-50 {
|
|
1478
|
+
--tw-bg-opacity: 1;
|
|
1479
|
+
background-color: rgb(255 251 235 / var(--tw-bg-opacity, 1));
|
|
1480
|
+
}
|
|
1447
1481
|
.bg-amber-500 {
|
|
1448
1482
|
--tw-bg-opacity: 1;
|
|
1449
1483
|
background-color: rgb(245 158 11 / var(--tw-bg-opacity, 1));
|
|
1450
1484
|
}
|
|
1485
|
+
.bg-amber-700 {
|
|
1486
|
+
--tw-bg-opacity: 1;
|
|
1487
|
+
background-color: rgb(180 83 9 / var(--tw-bg-opacity, 1));
|
|
1488
|
+
}
|
|
1451
1489
|
.bg-background {
|
|
1452
1490
|
background-color: hsl(var(--background));
|
|
1453
1491
|
}
|
|
1454
|
-
.bg-background\\/
|
|
1455
|
-
background-color: hsl(var(--background) / 0.
|
|
1492
|
+
.bg-background\\/90 {
|
|
1493
|
+
background-color: hsl(var(--background) / 0.9);
|
|
1456
1494
|
}
|
|
1457
1495
|
.bg-black\\/80 {
|
|
1458
1496
|
background-color: rgb(0 0 0 / 0.8);
|
|
@@ -1465,22 +1503,82 @@ body {
|
|
|
1465
1503
|
--tw-bg-opacity: 1;
|
|
1466
1504
|
background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));
|
|
1467
1505
|
}
|
|
1506
|
+
.bg-blue-900 {
|
|
1507
|
+
--tw-bg-opacity: 1;
|
|
1508
|
+
background-color: rgb(30 58 138 / var(--tw-bg-opacity, 1));
|
|
1509
|
+
}
|
|
1468
1510
|
.bg-border {
|
|
1469
1511
|
background-color: hsl(var(--border));
|
|
1470
1512
|
}
|
|
1471
1513
|
.bg-card {
|
|
1472
1514
|
background-color: hsl(var(--card));
|
|
1473
1515
|
}
|
|
1516
|
+
.bg-cyan-100 {
|
|
1517
|
+
--tw-bg-opacity: 1;
|
|
1518
|
+
background-color: rgb(207 250 254 / var(--tw-bg-opacity, 1));
|
|
1519
|
+
}
|
|
1520
|
+
.bg-cyan-400 {
|
|
1521
|
+
--tw-bg-opacity: 1;
|
|
1522
|
+
background-color: rgb(34 211 238 / var(--tw-bg-opacity, 1));
|
|
1523
|
+
}
|
|
1524
|
+
.bg-cyan-500 {
|
|
1525
|
+
--tw-bg-opacity: 1;
|
|
1526
|
+
background-color: rgb(6 182 212 / var(--tw-bg-opacity, 1));
|
|
1527
|
+
}
|
|
1474
1528
|
.bg-destructive {
|
|
1475
1529
|
background-color: hsl(var(--destructive));
|
|
1476
1530
|
}
|
|
1531
|
+
.bg-emerald-100 {
|
|
1532
|
+
--tw-bg-opacity: 1;
|
|
1533
|
+
background-color: rgb(209 250 229 / var(--tw-bg-opacity, 1));
|
|
1534
|
+
}
|
|
1535
|
+
.bg-emerald-400 {
|
|
1536
|
+
--tw-bg-opacity: 1;
|
|
1537
|
+
background-color: rgb(52 211 153 / var(--tw-bg-opacity, 1));
|
|
1538
|
+
}
|
|
1539
|
+
.bg-emerald-500 {
|
|
1540
|
+
--tw-bg-opacity: 1;
|
|
1541
|
+
background-color: rgb(16 185 129 / var(--tw-bg-opacity, 1));
|
|
1542
|
+
}
|
|
1477
1543
|
.bg-foreground {
|
|
1478
1544
|
background-color: hsl(var(--foreground));
|
|
1479
1545
|
}
|
|
1546
|
+
.bg-fuchsia-100 {
|
|
1547
|
+
--tw-bg-opacity: 1;
|
|
1548
|
+
background-color: rgb(250 232 255 / var(--tw-bg-opacity, 1));
|
|
1549
|
+
}
|
|
1550
|
+
.bg-fuchsia-400 {
|
|
1551
|
+
--tw-bg-opacity: 1;
|
|
1552
|
+
background-color: rgb(232 121 249 / var(--tw-bg-opacity, 1));
|
|
1553
|
+
}
|
|
1554
|
+
.bg-fuchsia-500 {
|
|
1555
|
+
--tw-bg-opacity: 1;
|
|
1556
|
+
background-color: rgb(217 70 239 / var(--tw-bg-opacity, 1));
|
|
1557
|
+
}
|
|
1558
|
+
.bg-fuchsia-600 {
|
|
1559
|
+
--tw-bg-opacity: 1;
|
|
1560
|
+
background-color: rgb(192 38 211 / var(--tw-bg-opacity, 1));
|
|
1561
|
+
}
|
|
1562
|
+
.bg-gray-100 {
|
|
1563
|
+
--tw-bg-opacity: 1;
|
|
1564
|
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
|
|
1565
|
+
}
|
|
1480
1566
|
.bg-gray-400 {
|
|
1481
1567
|
--tw-bg-opacity: 1;
|
|
1482
1568
|
background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1));
|
|
1483
1569
|
}
|
|
1570
|
+
.bg-gray-50 {
|
|
1571
|
+
--tw-bg-opacity: 1;
|
|
1572
|
+
background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
|
|
1573
|
+
}
|
|
1574
|
+
.bg-gray-800 {
|
|
1575
|
+
--tw-bg-opacity: 1;
|
|
1576
|
+
background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));
|
|
1577
|
+
}
|
|
1578
|
+
.bg-gray-900 {
|
|
1579
|
+
--tw-bg-opacity: 1;
|
|
1580
|
+
background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1));
|
|
1581
|
+
}
|
|
1484
1582
|
.bg-green-100 {
|
|
1485
1583
|
--tw-bg-opacity: 1;
|
|
1486
1584
|
background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1));
|
|
@@ -1493,15 +1591,78 @@ body {
|
|
|
1493
1591
|
--tw-bg-opacity: 1;
|
|
1494
1592
|
background-color: rgb(34 197 94 / var(--tw-bg-opacity, 1));
|
|
1495
1593
|
}
|
|
1594
|
+
.bg-indigo-100 {
|
|
1595
|
+
--tw-bg-opacity: 1;
|
|
1596
|
+
background-color: rgb(224 231 255 / var(--tw-bg-opacity, 1));
|
|
1597
|
+
}
|
|
1598
|
+
.bg-indigo-500 {
|
|
1599
|
+
--tw-bg-opacity: 1;
|
|
1600
|
+
background-color: rgb(99 102 241 / var(--tw-bg-opacity, 1));
|
|
1601
|
+
}
|
|
1602
|
+
.bg-lime-100 {
|
|
1603
|
+
--tw-bg-opacity: 1;
|
|
1604
|
+
background-color: rgb(236 252 203 / var(--tw-bg-opacity, 1));
|
|
1605
|
+
}
|
|
1606
|
+
.bg-lime-500 {
|
|
1607
|
+
--tw-bg-opacity: 1;
|
|
1608
|
+
background-color: rgb(132 204 22 / var(--tw-bg-opacity, 1));
|
|
1609
|
+
}
|
|
1610
|
+
.bg-lime-700 {
|
|
1611
|
+
--tw-bg-opacity: 1;
|
|
1612
|
+
background-color: rgb(77 124 15 / var(--tw-bg-opacity, 1));
|
|
1613
|
+
}
|
|
1496
1614
|
.bg-muted {
|
|
1497
1615
|
background-color: hsl(var(--muted));
|
|
1498
1616
|
}
|
|
1617
|
+
.bg-muted\\/20 {
|
|
1618
|
+
background-color: hsl(var(--muted) / 0.2);
|
|
1619
|
+
}
|
|
1499
1620
|
.bg-muted\\/30 {
|
|
1500
1621
|
background-color: hsl(var(--muted) / 0.3);
|
|
1501
1622
|
}
|
|
1502
1623
|
.bg-muted\\/50 {
|
|
1503
1624
|
background-color: hsl(var(--muted) / 0.5);
|
|
1504
1625
|
}
|
|
1626
|
+
.bg-neutral-100 {
|
|
1627
|
+
--tw-bg-opacity: 1;
|
|
1628
|
+
background-color: rgb(245 245 245 / var(--tw-bg-opacity, 1));
|
|
1629
|
+
}
|
|
1630
|
+
.bg-neutral-400 {
|
|
1631
|
+
--tw-bg-opacity: 1;
|
|
1632
|
+
background-color: rgb(163 163 163 / var(--tw-bg-opacity, 1));
|
|
1633
|
+
}
|
|
1634
|
+
.bg-orange-100 {
|
|
1635
|
+
--tw-bg-opacity: 1;
|
|
1636
|
+
background-color: rgb(255 237 213 / var(--tw-bg-opacity, 1));
|
|
1637
|
+
}
|
|
1638
|
+
.bg-orange-300 {
|
|
1639
|
+
--tw-bg-opacity: 1;
|
|
1640
|
+
background-color: rgb(253 186 116 / var(--tw-bg-opacity, 1));
|
|
1641
|
+
}
|
|
1642
|
+
.bg-orange-400 {
|
|
1643
|
+
--tw-bg-opacity: 1;
|
|
1644
|
+
background-color: rgb(251 146 60 / var(--tw-bg-opacity, 1));
|
|
1645
|
+
}
|
|
1646
|
+
.bg-orange-500 {
|
|
1647
|
+
--tw-bg-opacity: 1;
|
|
1648
|
+
background-color: rgb(249 115 22 / var(--tw-bg-opacity, 1));
|
|
1649
|
+
}
|
|
1650
|
+
.bg-orange-700 {
|
|
1651
|
+
--tw-bg-opacity: 1;
|
|
1652
|
+
background-color: rgb(194 65 12 / var(--tw-bg-opacity, 1));
|
|
1653
|
+
}
|
|
1654
|
+
.bg-pink-100 {
|
|
1655
|
+
--tw-bg-opacity: 1;
|
|
1656
|
+
background-color: rgb(252 231 243 / var(--tw-bg-opacity, 1));
|
|
1657
|
+
}
|
|
1658
|
+
.bg-pink-400 {
|
|
1659
|
+
--tw-bg-opacity: 1;
|
|
1660
|
+
background-color: rgb(244 114 182 / var(--tw-bg-opacity, 1));
|
|
1661
|
+
}
|
|
1662
|
+
.bg-pink-500 {
|
|
1663
|
+
--tw-bg-opacity: 1;
|
|
1664
|
+
background-color: rgb(236 72 153 / var(--tw-bg-opacity, 1));
|
|
1665
|
+
}
|
|
1505
1666
|
.bg-popover {
|
|
1506
1667
|
background-color: hsl(var(--popover));
|
|
1507
1668
|
}
|
|
@@ -1518,10 +1679,18 @@ body {
|
|
|
1518
1679
|
--tw-bg-opacity: 1;
|
|
1519
1680
|
background-color: rgb(243 232 255 / var(--tw-bg-opacity, 1));
|
|
1520
1681
|
}
|
|
1682
|
+
.bg-purple-400 {
|
|
1683
|
+
--tw-bg-opacity: 1;
|
|
1684
|
+
background-color: rgb(192 132 252 / var(--tw-bg-opacity, 1));
|
|
1685
|
+
}
|
|
1521
1686
|
.bg-purple-500 {
|
|
1522
1687
|
--tw-bg-opacity: 1;
|
|
1523
1688
|
background-color: rgb(168 85 247 / var(--tw-bg-opacity, 1));
|
|
1524
1689
|
}
|
|
1690
|
+
.bg-purple-600 {
|
|
1691
|
+
--tw-bg-opacity: 1;
|
|
1692
|
+
background-color: rgb(147 51 234 / var(--tw-bg-opacity, 1));
|
|
1693
|
+
}
|
|
1525
1694
|
.bg-red-100 {
|
|
1526
1695
|
--tw-bg-opacity: 1;
|
|
1527
1696
|
background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1));
|
|
@@ -1530,6 +1699,22 @@ body {
|
|
|
1530
1699
|
--tw-bg-opacity: 1;
|
|
1531
1700
|
background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1));
|
|
1532
1701
|
}
|
|
1702
|
+
.bg-red-700 {
|
|
1703
|
+
--tw-bg-opacity: 1;
|
|
1704
|
+
background-color: rgb(185 28 28 / var(--tw-bg-opacity, 1));
|
|
1705
|
+
}
|
|
1706
|
+
.bg-red-900 {
|
|
1707
|
+
--tw-bg-opacity: 1;
|
|
1708
|
+
background-color: rgb(127 29 29 / var(--tw-bg-opacity, 1));
|
|
1709
|
+
}
|
|
1710
|
+
.bg-rose-100 {
|
|
1711
|
+
--tw-bg-opacity: 1;
|
|
1712
|
+
background-color: rgb(255 228 230 / var(--tw-bg-opacity, 1));
|
|
1713
|
+
}
|
|
1714
|
+
.bg-rose-500 {
|
|
1715
|
+
--tw-bg-opacity: 1;
|
|
1716
|
+
background-color: rgb(244 63 94 / var(--tw-bg-opacity, 1));
|
|
1717
|
+
}
|
|
1533
1718
|
.bg-secondary {
|
|
1534
1719
|
background-color: hsl(var(--secondary));
|
|
1535
1720
|
}
|
|
@@ -1539,17 +1724,93 @@ body {
|
|
|
1539
1724
|
.bg-sidebar-border {
|
|
1540
1725
|
background-color: hsl(var(--sidebar-border));
|
|
1541
1726
|
}
|
|
1727
|
+
.bg-sky-100 {
|
|
1728
|
+
--tw-bg-opacity: 1;
|
|
1729
|
+
background-color: rgb(224 242 254 / var(--tw-bg-opacity, 1));
|
|
1730
|
+
}
|
|
1731
|
+
.bg-sky-500 {
|
|
1732
|
+
--tw-bg-opacity: 1;
|
|
1733
|
+
background-color: rgb(14 165 233 / var(--tw-bg-opacity, 1));
|
|
1734
|
+
}
|
|
1735
|
+
.bg-slate-100 {
|
|
1736
|
+
--tw-bg-opacity: 1;
|
|
1737
|
+
background-color: rgb(241 245 249 / var(--tw-bg-opacity, 1));
|
|
1738
|
+
}
|
|
1739
|
+
.bg-slate-400 {
|
|
1740
|
+
--tw-bg-opacity: 1;
|
|
1741
|
+
background-color: rgb(148 163 184 / var(--tw-bg-opacity, 1));
|
|
1742
|
+
}
|
|
1542
1743
|
.bg-slate-50 {
|
|
1543
1744
|
--tw-bg-opacity: 1;
|
|
1544
1745
|
background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1));
|
|
1545
1746
|
}
|
|
1747
|
+
.bg-stone-100 {
|
|
1748
|
+
--tw-bg-opacity: 1;
|
|
1749
|
+
background-color: rgb(245 245 244 / var(--tw-bg-opacity, 1));
|
|
1750
|
+
}
|
|
1751
|
+
.bg-stone-400 {
|
|
1752
|
+
--tw-bg-opacity: 1;
|
|
1753
|
+
background-color: rgb(168 162 158 / var(--tw-bg-opacity, 1));
|
|
1754
|
+
}
|
|
1755
|
+
.bg-teal-100 {
|
|
1756
|
+
--tw-bg-opacity: 1;
|
|
1757
|
+
background-color: rgb(204 251 241 / var(--tw-bg-opacity, 1));
|
|
1758
|
+
}
|
|
1759
|
+
.bg-teal-400 {
|
|
1760
|
+
--tw-bg-opacity: 1;
|
|
1761
|
+
background-color: rgb(45 212 191 / var(--tw-bg-opacity, 1));
|
|
1762
|
+
}
|
|
1763
|
+
.bg-teal-500 {
|
|
1764
|
+
--tw-bg-opacity: 1;
|
|
1765
|
+
background-color: rgb(20 184 166 / var(--tw-bg-opacity, 1));
|
|
1766
|
+
}
|
|
1546
1767
|
.bg-transparent {
|
|
1547
1768
|
background-color: transparent;
|
|
1548
1769
|
}
|
|
1770
|
+
.bg-violet-100 {
|
|
1771
|
+
--tw-bg-opacity: 1;
|
|
1772
|
+
background-color: rgb(237 233 254 / var(--tw-bg-opacity, 1));
|
|
1773
|
+
}
|
|
1549
1774
|
.bg-violet-200 {
|
|
1550
1775
|
--tw-bg-opacity: 1;
|
|
1551
1776
|
background-color: rgb(221 214 254 / var(--tw-bg-opacity, 1));
|
|
1552
1777
|
}
|
|
1778
|
+
.bg-violet-500 {
|
|
1779
|
+
--tw-bg-opacity: 1;
|
|
1780
|
+
background-color: rgb(139 92 246 / var(--tw-bg-opacity, 1));
|
|
1781
|
+
}
|
|
1782
|
+
.bg-yellow-100 {
|
|
1783
|
+
--tw-bg-opacity: 1;
|
|
1784
|
+
background-color: rgb(254 249 195 / var(--tw-bg-opacity, 1));
|
|
1785
|
+
}
|
|
1786
|
+
.bg-yellow-400 {
|
|
1787
|
+
--tw-bg-opacity: 1;
|
|
1788
|
+
background-color: rgb(250 204 21 / var(--tw-bg-opacity, 1));
|
|
1789
|
+
}
|
|
1790
|
+
.bg-yellow-50 {
|
|
1791
|
+
--tw-bg-opacity: 1;
|
|
1792
|
+
background-color: rgb(254 252 232 / var(--tw-bg-opacity, 1));
|
|
1793
|
+
}
|
|
1794
|
+
.bg-yellow-500 {
|
|
1795
|
+
--tw-bg-opacity: 1;
|
|
1796
|
+
background-color: rgb(234 179 8 / var(--tw-bg-opacity, 1));
|
|
1797
|
+
}
|
|
1798
|
+
.bg-yellow-600 {
|
|
1799
|
+
--tw-bg-opacity: 1;
|
|
1800
|
+
background-color: rgb(202 138 4 / var(--tw-bg-opacity, 1));
|
|
1801
|
+
}
|
|
1802
|
+
.bg-yellow-700 {
|
|
1803
|
+
--tw-bg-opacity: 1;
|
|
1804
|
+
background-color: rgb(161 98 7 / var(--tw-bg-opacity, 1));
|
|
1805
|
+
}
|
|
1806
|
+
.bg-zinc-100 {
|
|
1807
|
+
--tw-bg-opacity: 1;
|
|
1808
|
+
background-color: rgb(244 244 245 / var(--tw-bg-opacity, 1));
|
|
1809
|
+
}
|
|
1810
|
+
.bg-zinc-400 {
|
|
1811
|
+
--tw-bg-opacity: 1;
|
|
1812
|
+
background-color: rgb(161 161 170 / var(--tw-bg-opacity, 1));
|
|
1813
|
+
}
|
|
1553
1814
|
.fill-current {
|
|
1554
1815
|
fill: currentColor;
|
|
1555
1816
|
}
|
|
@@ -1586,6 +1847,10 @@ body {
|
|
|
1586
1847
|
.p-\\[2px\\] {
|
|
1587
1848
|
padding: 2px;
|
|
1588
1849
|
}
|
|
1850
|
+
.px-0\\.5 {
|
|
1851
|
+
padding-left: 0.125rem;
|
|
1852
|
+
padding-right: 0.125rem;
|
|
1853
|
+
}
|
|
1589
1854
|
.px-1 {
|
|
1590
1855
|
padding-left: 0.25rem;
|
|
1591
1856
|
padding-right: 0.25rem;
|
|
@@ -1707,6 +1972,9 @@ body {
|
|
|
1707
1972
|
.text-right {
|
|
1708
1973
|
text-align: right;
|
|
1709
1974
|
}
|
|
1975
|
+
.text-start {
|
|
1976
|
+
text-align: start;
|
|
1977
|
+
}
|
|
1710
1978
|
.align-middle {
|
|
1711
1979
|
vertical-align: middle;
|
|
1712
1980
|
}
|
|
@@ -1750,6 +2018,9 @@ body {
|
|
|
1750
2018
|
.text-\\[0\\.8rem\\] {
|
|
1751
2019
|
font-size: 0.8rem;
|
|
1752
2020
|
}
|
|
2021
|
+
.text-\\[11px\\] {
|
|
2022
|
+
font-size: 11px;
|
|
2023
|
+
}
|
|
1753
2024
|
.text-\\[13px\\] {
|
|
1754
2025
|
font-size: 13px;
|
|
1755
2026
|
}
|
|
@@ -1782,6 +2053,9 @@ body {
|
|
|
1782
2053
|
.font-semibold {
|
|
1783
2054
|
font-weight: 600;
|
|
1784
2055
|
}
|
|
2056
|
+
.uppercase {
|
|
2057
|
+
text-transform: uppercase;
|
|
2058
|
+
}
|
|
1785
2059
|
.tabular-nums {
|
|
1786
2060
|
--tw-numeric-spacing: tabular-nums;
|
|
1787
2061
|
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
|
@@ -1795,6 +2069,9 @@ body {
|
|
|
1795
2069
|
.tracking-tight {
|
|
1796
2070
|
letter-spacing: -0.025em;
|
|
1797
2071
|
}
|
|
2072
|
+
.tracking-wider {
|
|
2073
|
+
letter-spacing: 0.05em;
|
|
2074
|
+
}
|
|
1798
2075
|
.tracking-widest {
|
|
1799
2076
|
letter-spacing: 0.1em;
|
|
1800
2077
|
}
|
|
@@ -1805,28 +2082,72 @@ body {
|
|
|
1805
2082
|
--tw-text-opacity: 1;
|
|
1806
2083
|
color: rgb(180 83 9 / var(--tw-text-opacity, 1));
|
|
1807
2084
|
}
|
|
2085
|
+
.text-amber-800 {
|
|
2086
|
+
--tw-text-opacity: 1;
|
|
2087
|
+
color: rgb(146 64 14 / var(--tw-text-opacity, 1));
|
|
2088
|
+
}
|
|
1808
2089
|
.text-blue-700 {
|
|
1809
2090
|
--tw-text-opacity: 1;
|
|
1810
2091
|
color: rgb(29 78 216 / var(--tw-text-opacity, 1));
|
|
1811
2092
|
}
|
|
2093
|
+
.text-blue-900 {
|
|
2094
|
+
--tw-text-opacity: 1;
|
|
2095
|
+
color: rgb(30 58 138 / var(--tw-text-opacity, 1));
|
|
2096
|
+
}
|
|
1812
2097
|
.text-card-foreground {
|
|
1813
2098
|
color: hsl(var(--card-foreground));
|
|
1814
2099
|
}
|
|
1815
2100
|
.text-current {
|
|
1816
2101
|
color: currentColor;
|
|
1817
2102
|
}
|
|
2103
|
+
.text-cyan-600 {
|
|
2104
|
+
--tw-text-opacity: 1;
|
|
2105
|
+
color: rgb(8 145 178 / var(--tw-text-opacity, 1));
|
|
2106
|
+
}
|
|
2107
|
+
.text-cyan-700 {
|
|
2108
|
+
--tw-text-opacity: 1;
|
|
2109
|
+
color: rgb(14 116 144 / var(--tw-text-opacity, 1));
|
|
2110
|
+
}
|
|
1818
2111
|
.text-destructive {
|
|
1819
2112
|
color: hsl(var(--destructive));
|
|
1820
2113
|
}
|
|
1821
2114
|
.text-destructive-foreground {
|
|
1822
2115
|
color: hsl(var(--destructive-foreground));
|
|
1823
2116
|
}
|
|
2117
|
+
.text-emerald-600 {
|
|
2118
|
+
--tw-text-opacity: 1;
|
|
2119
|
+
color: rgb(5 150 105 / var(--tw-text-opacity, 1));
|
|
2120
|
+
}
|
|
2121
|
+
.text-emerald-700 {
|
|
2122
|
+
--tw-text-opacity: 1;
|
|
2123
|
+
color: rgb(4 120 87 / var(--tw-text-opacity, 1));
|
|
2124
|
+
}
|
|
1824
2125
|
.text-foreground {
|
|
1825
2126
|
color: hsl(var(--foreground));
|
|
1826
2127
|
}
|
|
1827
2128
|
.text-foreground\\/50 {
|
|
1828
2129
|
color: hsl(var(--foreground) / 0.5);
|
|
1829
2130
|
}
|
|
2131
|
+
.text-fuchsia-700 {
|
|
2132
|
+
--tw-text-opacity: 1;
|
|
2133
|
+
color: rgb(162 28 175 / var(--tw-text-opacity, 1));
|
|
2134
|
+
}
|
|
2135
|
+
.text-gray-100 {
|
|
2136
|
+
--tw-text-opacity: 1;
|
|
2137
|
+
color: rgb(243 244 246 / var(--tw-text-opacity, 1));
|
|
2138
|
+
}
|
|
2139
|
+
.text-gray-600 {
|
|
2140
|
+
--tw-text-opacity: 1;
|
|
2141
|
+
color: rgb(75 85 99 / var(--tw-text-opacity, 1));
|
|
2142
|
+
}
|
|
2143
|
+
.text-gray-700 {
|
|
2144
|
+
--tw-text-opacity: 1;
|
|
2145
|
+
color: rgb(55 65 81 / var(--tw-text-opacity, 1));
|
|
2146
|
+
}
|
|
2147
|
+
.text-gray-900 {
|
|
2148
|
+
--tw-text-opacity: 1;
|
|
2149
|
+
color: rgb(17 24 39 / var(--tw-text-opacity, 1));
|
|
2150
|
+
}
|
|
1830
2151
|
.text-green-700 {
|
|
1831
2152
|
--tw-text-opacity: 1;
|
|
1832
2153
|
color: rgb(21 128 61 / var(--tw-text-opacity, 1));
|
|
@@ -1835,14 +2156,54 @@ body {
|
|
|
1835
2156
|
--tw-text-opacity: 1;
|
|
1836
2157
|
color: rgb(22 101 52 / var(--tw-text-opacity, 1));
|
|
1837
2158
|
}
|
|
2159
|
+
.text-indigo-700 {
|
|
2160
|
+
--tw-text-opacity: 1;
|
|
2161
|
+
color: rgb(67 56 202 / var(--tw-text-opacity, 1));
|
|
2162
|
+
}
|
|
2163
|
+
.text-lime-700 {
|
|
2164
|
+
--tw-text-opacity: 1;
|
|
2165
|
+
color: rgb(77 124 15 / var(--tw-text-opacity, 1));
|
|
2166
|
+
}
|
|
2167
|
+
.text-lime-800 {
|
|
2168
|
+
--tw-text-opacity: 1;
|
|
2169
|
+
color: rgb(63 98 18 / var(--tw-text-opacity, 1));
|
|
2170
|
+
}
|
|
1838
2171
|
.text-muted-foreground {
|
|
1839
2172
|
color: hsl(var(--muted-foreground));
|
|
1840
2173
|
}
|
|
1841
2174
|
.text-muted-foreground\\/20 {
|
|
1842
2175
|
color: hsl(var(--muted-foreground) / 0.2);
|
|
1843
2176
|
}
|
|
1844
|
-
.text-muted-foreground\\/
|
|
1845
|
-
color: hsl(var(--muted-foreground) / 0.
|
|
2177
|
+
.text-muted-foreground\\/40 {
|
|
2178
|
+
color: hsl(var(--muted-foreground) / 0.4);
|
|
2179
|
+
}
|
|
2180
|
+
.text-neutral-700 {
|
|
2181
|
+
--tw-text-opacity: 1;
|
|
2182
|
+
color: rgb(64 64 64 / var(--tw-text-opacity, 1));
|
|
2183
|
+
}
|
|
2184
|
+
.text-orange-500 {
|
|
2185
|
+
--tw-text-opacity: 1;
|
|
2186
|
+
color: rgb(249 115 22 / var(--tw-text-opacity, 1));
|
|
2187
|
+
}
|
|
2188
|
+
.text-orange-600 {
|
|
2189
|
+
--tw-text-opacity: 1;
|
|
2190
|
+
color: rgb(234 88 12 / var(--tw-text-opacity, 1));
|
|
2191
|
+
}
|
|
2192
|
+
.text-orange-700 {
|
|
2193
|
+
--tw-text-opacity: 1;
|
|
2194
|
+
color: rgb(194 65 12 / var(--tw-text-opacity, 1));
|
|
2195
|
+
}
|
|
2196
|
+
.text-orange-800 {
|
|
2197
|
+
--tw-text-opacity: 1;
|
|
2198
|
+
color: rgb(154 52 18 / var(--tw-text-opacity, 1));
|
|
2199
|
+
}
|
|
2200
|
+
.text-pink-600 {
|
|
2201
|
+
--tw-text-opacity: 1;
|
|
2202
|
+
color: rgb(219 39 119 / var(--tw-text-opacity, 1));
|
|
2203
|
+
}
|
|
2204
|
+
.text-pink-700 {
|
|
2205
|
+
--tw-text-opacity: 1;
|
|
2206
|
+
color: rgb(190 24 93 / var(--tw-text-opacity, 1));
|
|
1846
2207
|
}
|
|
1847
2208
|
.text-popover-foreground {
|
|
1848
2209
|
color: hsl(var(--popover-foreground));
|
|
@@ -1853,6 +2214,10 @@ body {
|
|
|
1853
2214
|
.text-primary-foreground {
|
|
1854
2215
|
color: hsl(var(--primary-foreground));
|
|
1855
2216
|
}
|
|
2217
|
+
.text-purple-600 {
|
|
2218
|
+
--tw-text-opacity: 1;
|
|
2219
|
+
color: rgb(147 51 234 / var(--tw-text-opacity, 1));
|
|
2220
|
+
}
|
|
1856
2221
|
.text-purple-700 {
|
|
1857
2222
|
--tw-text-opacity: 1;
|
|
1858
2223
|
color: rgb(126 34 206 / var(--tw-text-opacity, 1));
|
|
@@ -1861,6 +2226,18 @@ body {
|
|
|
1861
2226
|
--tw-text-opacity: 1;
|
|
1862
2227
|
color: rgb(185 28 28 / var(--tw-text-opacity, 1));
|
|
1863
2228
|
}
|
|
2229
|
+
.text-red-800 {
|
|
2230
|
+
--tw-text-opacity: 1;
|
|
2231
|
+
color: rgb(153 27 27 / var(--tw-text-opacity, 1));
|
|
2232
|
+
}
|
|
2233
|
+
.text-red-900 {
|
|
2234
|
+
--tw-text-opacity: 1;
|
|
2235
|
+
color: rgb(127 29 29 / var(--tw-text-opacity, 1));
|
|
2236
|
+
}
|
|
2237
|
+
.text-rose-700 {
|
|
2238
|
+
--tw-text-opacity: 1;
|
|
2239
|
+
color: rgb(190 18 60 / var(--tw-text-opacity, 1));
|
|
2240
|
+
}
|
|
1864
2241
|
.text-secondary-foreground {
|
|
1865
2242
|
color: hsl(var(--secondary-foreground));
|
|
1866
2243
|
}
|
|
@@ -1870,6 +2247,42 @@ body {
|
|
|
1870
2247
|
.text-sidebar-foreground\\/70 {
|
|
1871
2248
|
color: hsl(var(--sidebar-foreground) / 0.7);
|
|
1872
2249
|
}
|
|
2250
|
+
.text-sky-700 {
|
|
2251
|
+
--tw-text-opacity: 1;
|
|
2252
|
+
color: rgb(3 105 161 / var(--tw-text-opacity, 1));
|
|
2253
|
+
}
|
|
2254
|
+
.text-slate-700 {
|
|
2255
|
+
--tw-text-opacity: 1;
|
|
2256
|
+
color: rgb(51 65 85 / var(--tw-text-opacity, 1));
|
|
2257
|
+
}
|
|
2258
|
+
.text-stone-700 {
|
|
2259
|
+
--tw-text-opacity: 1;
|
|
2260
|
+
color: rgb(68 64 60 / var(--tw-text-opacity, 1));
|
|
2261
|
+
}
|
|
2262
|
+
.text-teal-600 {
|
|
2263
|
+
--tw-text-opacity: 1;
|
|
2264
|
+
color: rgb(13 148 136 / var(--tw-text-opacity, 1));
|
|
2265
|
+
}
|
|
2266
|
+
.text-teal-700 {
|
|
2267
|
+
--tw-text-opacity: 1;
|
|
2268
|
+
color: rgb(15 118 110 / var(--tw-text-opacity, 1));
|
|
2269
|
+
}
|
|
2270
|
+
.text-violet-700 {
|
|
2271
|
+
--tw-text-opacity: 1;
|
|
2272
|
+
color: rgb(109 40 217 / var(--tw-text-opacity, 1));
|
|
2273
|
+
}
|
|
2274
|
+
.text-yellow-700 {
|
|
2275
|
+
--tw-text-opacity: 1;
|
|
2276
|
+
color: rgb(161 98 7 / var(--tw-text-opacity, 1));
|
|
2277
|
+
}
|
|
2278
|
+
.text-yellow-800 {
|
|
2279
|
+
--tw-text-opacity: 1;
|
|
2280
|
+
color: rgb(133 77 14 / var(--tw-text-opacity, 1));
|
|
2281
|
+
}
|
|
2282
|
+
.text-zinc-700 {
|
|
2283
|
+
--tw-text-opacity: 1;
|
|
2284
|
+
color: rgb(63 63 70 / var(--tw-text-opacity, 1));
|
|
2285
|
+
}
|
|
1873
2286
|
.underline-offset-4 {
|
|
1874
2287
|
text-underline-offset: 4px;
|
|
1875
2288
|
}
|
|
@@ -2194,6 +2607,11 @@ svg.icon {
|
|
|
2194
2607
|
border-top-right-radius: calc(var(--radius) - 2px);
|
|
2195
2608
|
border-bottom-right-radius: calc(var(--radius) - 2px);
|
|
2196
2609
|
}
|
|
2610
|
+
.hover\\:scale-\\[1\\.02\\]:hover {
|
|
2611
|
+
--tw-scale-x: 1.02;
|
|
2612
|
+
--tw-scale-y: 1.02;
|
|
2613
|
+
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));
|
|
2614
|
+
}
|
|
2197
2615
|
.hover\\:border-primary:hover {
|
|
2198
2616
|
border-color: hsl(var(--primary));
|
|
2199
2617
|
}
|
|
@@ -2206,32 +2624,62 @@ svg.icon {
|
|
|
2206
2624
|
.hover\\:bg-amber-100\\/80:hover {
|
|
2207
2625
|
background-color: rgb(254 243 199 / 0.8);
|
|
2208
2626
|
}
|
|
2627
|
+
.hover\\:bg-amber-50\\/80:hover {
|
|
2628
|
+
background-color: rgb(255 251 235 / 0.8);
|
|
2629
|
+
}
|
|
2209
2630
|
.hover\\:bg-blue-100\\/80:hover {
|
|
2210
2631
|
background-color: rgb(219 234 254 / 0.8);
|
|
2211
2632
|
}
|
|
2633
|
+
.hover\\:bg-cyan-100\\/80:hover {
|
|
2634
|
+
background-color: rgb(207 250 254 / 0.8);
|
|
2635
|
+
}
|
|
2212
2636
|
.hover\\:bg-destructive\\/80:hover {
|
|
2213
2637
|
background-color: hsl(var(--destructive) / 0.8);
|
|
2214
2638
|
}
|
|
2215
2639
|
.hover\\:bg-destructive\\/90:hover {
|
|
2216
2640
|
background-color: hsl(var(--destructive) / 0.9);
|
|
2217
2641
|
}
|
|
2642
|
+
.hover\\:bg-emerald-100\\/80:hover {
|
|
2643
|
+
background-color: rgb(209 250 229 / 0.8);
|
|
2644
|
+
}
|
|
2645
|
+
.hover\\:bg-fuchsia-100\\/80:hover {
|
|
2646
|
+
background-color: rgb(250 232 255 / 0.8);
|
|
2647
|
+
}
|
|
2648
|
+
.hover\\:bg-gray-100\\/80:hover {
|
|
2649
|
+
background-color: rgb(243 244 246 / 0.8);
|
|
2650
|
+
}
|
|
2651
|
+
.hover\\:bg-gray-50\\/80:hover {
|
|
2652
|
+
background-color: rgb(249 250 251 / 0.8);
|
|
2653
|
+
}
|
|
2654
|
+
.hover\\:bg-gray-900\\/80:hover {
|
|
2655
|
+
background-color: rgb(17 24 39 / 0.8);
|
|
2656
|
+
}
|
|
2218
2657
|
.hover\\:bg-green-100\\/80:hover {
|
|
2219
2658
|
background-color: rgb(220 252 231 / 0.8);
|
|
2220
2659
|
}
|
|
2660
|
+
.hover\\:bg-indigo-100\\/80:hover {
|
|
2661
|
+
background-color: rgb(224 231 255 / 0.8);
|
|
2662
|
+
}
|
|
2663
|
+
.hover\\:bg-lime-100\\/80:hover {
|
|
2664
|
+
background-color: rgb(236 252 203 / 0.8);
|
|
2665
|
+
}
|
|
2221
2666
|
.hover\\:bg-muted:hover {
|
|
2222
2667
|
background-color: hsl(var(--muted));
|
|
2223
2668
|
}
|
|
2224
|
-
.hover\\:bg-muted\\/
|
|
2225
|
-
background-color: hsl(var(--muted) / 0.
|
|
2669
|
+
.hover\\:bg-muted\\/5:hover {
|
|
2670
|
+
background-color: hsl(var(--muted) / 0.05);
|
|
2226
2671
|
}
|
|
2227
2672
|
.hover\\:bg-muted\\/50:hover {
|
|
2228
2673
|
background-color: hsl(var(--muted) / 0.5);
|
|
2229
2674
|
}
|
|
2230
|
-
.hover\\:bg-
|
|
2231
|
-
background-color:
|
|
2675
|
+
.hover\\:bg-neutral-100\\/80:hover {
|
|
2676
|
+
background-color: rgb(245 245 245 / 0.8);
|
|
2232
2677
|
}
|
|
2233
|
-
.hover\\:bg-
|
|
2234
|
-
background-color:
|
|
2678
|
+
.hover\\:bg-orange-100\\/80:hover {
|
|
2679
|
+
background-color: rgb(255 237 213 / 0.8);
|
|
2680
|
+
}
|
|
2681
|
+
.hover\\:bg-pink-100\\/80:hover {
|
|
2682
|
+
background-color: rgb(252 231 243 / 0.8);
|
|
2235
2683
|
}
|
|
2236
2684
|
.hover\\:bg-primary\\/80:hover {
|
|
2237
2685
|
background-color: hsl(var(--primary) / 0.8);
|
|
@@ -2245,6 +2693,9 @@ svg.icon {
|
|
|
2245
2693
|
.hover\\:bg-red-100\\/80:hover {
|
|
2246
2694
|
background-color: rgb(254 226 226 / 0.8);
|
|
2247
2695
|
}
|
|
2696
|
+
.hover\\:bg-rose-100\\/80:hover {
|
|
2697
|
+
background-color: rgb(255 228 230 / 0.8);
|
|
2698
|
+
}
|
|
2248
2699
|
.hover\\:bg-secondary:hover {
|
|
2249
2700
|
background-color: hsl(var(--secondary));
|
|
2250
2701
|
}
|
|
@@ -2254,14 +2705,38 @@ svg.icon {
|
|
|
2254
2705
|
.hover\\:bg-sidebar-accent:hover {
|
|
2255
2706
|
background-color: hsl(var(--sidebar-accent));
|
|
2256
2707
|
}
|
|
2708
|
+
.hover\\:bg-sky-100\\/80:hover {
|
|
2709
|
+
background-color: rgb(224 242 254 / 0.8);
|
|
2710
|
+
}
|
|
2711
|
+
.hover\\:bg-slate-100\\/80:hover {
|
|
2712
|
+
background-color: rgb(241 245 249 / 0.8);
|
|
2713
|
+
}
|
|
2714
|
+
.hover\\:bg-stone-100\\/80:hover {
|
|
2715
|
+
background-color: rgb(245 245 244 / 0.8);
|
|
2716
|
+
}
|
|
2717
|
+
.hover\\:bg-teal-100\\/80:hover {
|
|
2718
|
+
background-color: rgb(204 251 241 / 0.8);
|
|
2719
|
+
}
|
|
2720
|
+
.hover\\:bg-violet-100\\/80:hover {
|
|
2721
|
+
background-color: rgb(237 233 254 / 0.8);
|
|
2722
|
+
}
|
|
2257
2723
|
.hover\\:bg-violet-300:hover {
|
|
2258
2724
|
--tw-bg-opacity: 1;
|
|
2259
2725
|
background-color: rgb(196 181 253 / var(--tw-bg-opacity, 1));
|
|
2260
2726
|
}
|
|
2727
|
+
.hover\\:bg-yellow-100\\/80:hover {
|
|
2728
|
+
background-color: rgb(254 249 195 / 0.8);
|
|
2729
|
+
}
|
|
2730
|
+
.hover\\:bg-yellow-50\\/80:hover {
|
|
2731
|
+
background-color: rgb(254 252 232 / 0.8);
|
|
2732
|
+
}
|
|
2261
2733
|
.hover\\:bg-zinc-100:hover {
|
|
2262
2734
|
--tw-bg-opacity: 1;
|
|
2263
2735
|
background-color: rgb(244 244 245 / var(--tw-bg-opacity, 1));
|
|
2264
2736
|
}
|
|
2737
|
+
.hover\\:bg-zinc-100\\/80:hover {
|
|
2738
|
+
background-color: rgb(244 244 245 / 0.8);
|
|
2739
|
+
}
|
|
2265
2740
|
.hover\\:text-accent-foreground:hover {
|
|
2266
2741
|
color: hsl(var(--accent-foreground));
|
|
2267
2742
|
}
|
|
@@ -2397,6 +2872,9 @@ svg.icon {
|
|
|
2397
2872
|
.group\\/menu-item:focus-within .group-focus-within\\/menu-item\\:opacity-100 {
|
|
2398
2873
|
opacity: 1;
|
|
2399
2874
|
}
|
|
2875
|
+
.group:hover .group-hover\\:text-foreground {
|
|
2876
|
+
color: hsl(var(--foreground));
|
|
2877
|
+
}
|
|
2400
2878
|
.group\\/item:hover .group-hover\\/item\\:opacity-100 {
|
|
2401
2879
|
opacity: 1;
|
|
2402
2880
|
}
|
|
@@ -3028,12 +3506,34 @@ svg.icon {
|
|
|
3028
3506
|
--tw-border-opacity: 1;
|
|
3029
3507
|
border-color: rgb(22 101 52 / var(--tw-border-opacity, 1));
|
|
3030
3508
|
}
|
|
3509
|
+
.dark\\:bg-amber-900\\/30:is(.dark *) {
|
|
3510
|
+
background-color: rgb(120 53 15 / 0.3);
|
|
3511
|
+
}
|
|
3031
3512
|
.dark\\:bg-amber-900\\/50:is(.dark *) {
|
|
3032
3513
|
background-color: rgb(120 53 15 / 0.5);
|
|
3033
3514
|
}
|
|
3034
3515
|
.dark\\:bg-blue-900\\/50:is(.dark *) {
|
|
3035
3516
|
background-color: rgb(30 58 138 / 0.5);
|
|
3036
3517
|
}
|
|
3518
|
+
.dark\\:bg-cyan-900\\/50:is(.dark *) {
|
|
3519
|
+
background-color: rgb(22 78 99 / 0.5);
|
|
3520
|
+
}
|
|
3521
|
+
.dark\\:bg-emerald-900\\/50:is(.dark *) {
|
|
3522
|
+
background-color: rgb(6 78 59 / 0.5);
|
|
3523
|
+
}
|
|
3524
|
+
.dark\\:bg-fuchsia-900\\/50:is(.dark *) {
|
|
3525
|
+
background-color: rgb(112 26 117 / 0.5);
|
|
3526
|
+
}
|
|
3527
|
+
.dark\\:bg-gray-100:is(.dark *) {
|
|
3528
|
+
--tw-bg-opacity: 1;
|
|
3529
|
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
|
|
3530
|
+
}
|
|
3531
|
+
.dark\\:bg-gray-900\\/30:is(.dark *) {
|
|
3532
|
+
background-color: rgb(17 24 39 / 0.3);
|
|
3533
|
+
}
|
|
3534
|
+
.dark\\:bg-gray-900\\/50:is(.dark *) {
|
|
3535
|
+
background-color: rgb(17 24 39 / 0.5);
|
|
3536
|
+
}
|
|
3037
3537
|
.dark\\:bg-green-900\\/50:is(.dark *) {
|
|
3038
3538
|
background-color: rgb(20 83 45 / 0.5);
|
|
3039
3539
|
}
|
|
@@ -3041,47 +3541,193 @@ svg.icon {
|
|
|
3041
3541
|
--tw-bg-opacity: 1;
|
|
3042
3542
|
background-color: rgb(5 46 22 / var(--tw-bg-opacity, 1));
|
|
3043
3543
|
}
|
|
3544
|
+
.dark\\:bg-indigo-900\\/50:is(.dark *) {
|
|
3545
|
+
background-color: rgb(49 46 129 / 0.5);
|
|
3546
|
+
}
|
|
3547
|
+
.dark\\:bg-lime-900\\/50:is(.dark *) {
|
|
3548
|
+
background-color: rgb(54 83 20 / 0.5);
|
|
3549
|
+
}
|
|
3044
3550
|
.dark\\:bg-muted:is(.dark *) {
|
|
3045
3551
|
background-color: hsl(var(--muted));
|
|
3046
3552
|
}
|
|
3553
|
+
.dark\\:bg-neutral-900\\/50:is(.dark *) {
|
|
3554
|
+
background-color: rgb(23 23 23 / 0.5);
|
|
3555
|
+
}
|
|
3556
|
+
.dark\\:bg-orange-900\\/50:is(.dark *) {
|
|
3557
|
+
background-color: rgb(124 45 18 / 0.5);
|
|
3558
|
+
}
|
|
3559
|
+
.dark\\:bg-pink-900\\/50:is(.dark *) {
|
|
3560
|
+
background-color: rgb(131 24 67 / 0.5);
|
|
3561
|
+
}
|
|
3047
3562
|
.dark\\:bg-purple-900\\/50:is(.dark *) {
|
|
3048
3563
|
background-color: rgb(88 28 135 / 0.5);
|
|
3049
3564
|
}
|
|
3050
3565
|
.dark\\:bg-red-900\\/50:is(.dark *) {
|
|
3051
3566
|
background-color: rgb(127 29 29 / 0.5);
|
|
3052
3567
|
}
|
|
3568
|
+
.dark\\:bg-rose-900\\/50:is(.dark *) {
|
|
3569
|
+
background-color: rgb(136 19 55 / 0.5);
|
|
3570
|
+
}
|
|
3571
|
+
.dark\\:bg-sky-900\\/50:is(.dark *) {
|
|
3572
|
+
background-color: rgb(12 74 110 / 0.5);
|
|
3573
|
+
}
|
|
3574
|
+
.dark\\:bg-slate-900\\/50:is(.dark *) {
|
|
3575
|
+
background-color: rgb(15 23 42 / 0.5);
|
|
3576
|
+
}
|
|
3577
|
+
.dark\\:bg-stone-900\\/50:is(.dark *) {
|
|
3578
|
+
background-color: rgb(28 25 23 / 0.5);
|
|
3579
|
+
}
|
|
3580
|
+
.dark\\:bg-teal-900\\/50:is(.dark *) {
|
|
3581
|
+
background-color: rgb(19 78 74 / 0.5);
|
|
3582
|
+
}
|
|
3583
|
+
.dark\\:bg-violet-900\\/50:is(.dark *) {
|
|
3584
|
+
background-color: rgb(76 29 149 / 0.5);
|
|
3585
|
+
}
|
|
3053
3586
|
.dark\\:bg-white\\/5:is(.dark *) {
|
|
3054
3587
|
background-color: rgb(255 255 255 / 0.05);
|
|
3055
3588
|
}
|
|
3589
|
+
.dark\\:bg-yellow-900\\/30:is(.dark *) {
|
|
3590
|
+
background-color: rgb(113 63 18 / 0.3);
|
|
3591
|
+
}
|
|
3592
|
+
.dark\\:bg-yellow-900\\/50:is(.dark *) {
|
|
3593
|
+
background-color: rgb(113 63 18 / 0.5);
|
|
3594
|
+
}
|
|
3056
3595
|
.dark\\:bg-zinc-600:is(.dark *) {
|
|
3057
3596
|
--tw-bg-opacity: 1;
|
|
3058
3597
|
background-color: rgb(82 82 91 / var(--tw-bg-opacity, 1));
|
|
3059
3598
|
}
|
|
3599
|
+
.dark\\:bg-zinc-900\\/50:is(.dark *) {
|
|
3600
|
+
background-color: rgb(24 24 27 / 0.5);
|
|
3601
|
+
}
|
|
3602
|
+
.dark\\:text-amber-200:is(.dark *) {
|
|
3603
|
+
--tw-text-opacity: 1;
|
|
3604
|
+
color: rgb(253 230 138 / var(--tw-text-opacity, 1));
|
|
3605
|
+
}
|
|
3060
3606
|
.dark\\:text-amber-300:is(.dark *) {
|
|
3061
3607
|
--tw-text-opacity: 1;
|
|
3062
3608
|
color: rgb(252 211 77 / var(--tw-text-opacity, 1));
|
|
3063
3609
|
}
|
|
3610
|
+
.dark\\:text-blue-200:is(.dark *) {
|
|
3611
|
+
--tw-text-opacity: 1;
|
|
3612
|
+
color: rgb(191 219 254 / var(--tw-text-opacity, 1));
|
|
3613
|
+
}
|
|
3064
3614
|
.dark\\:text-blue-300:is(.dark *) {
|
|
3065
3615
|
--tw-text-opacity: 1;
|
|
3066
3616
|
color: rgb(147 197 253 / var(--tw-text-opacity, 1));
|
|
3067
3617
|
}
|
|
3068
|
-
.dark\\:text-
|
|
3618
|
+
.dark\\:text-cyan-300:is(.dark *) {
|
|
3069
3619
|
--tw-text-opacity: 1;
|
|
3070
|
-
color: rgb(
|
|
3620
|
+
color: rgb(103 232 249 / var(--tw-text-opacity, 1));
|
|
3071
3621
|
}
|
|
3072
|
-
.dark\\:text-
|
|
3622
|
+
.dark\\:text-emerald-300:is(.dark *) {
|
|
3073
3623
|
--tw-text-opacity: 1;
|
|
3074
|
-
color: rgb(
|
|
3624
|
+
color: rgb(110 231 183 / var(--tw-text-opacity, 1));
|
|
3075
3625
|
}
|
|
3076
|
-
.dark\\:text-
|
|
3626
|
+
.dark\\:text-fuchsia-300:is(.dark *) {
|
|
3077
3627
|
--tw-text-opacity: 1;
|
|
3078
|
-
color: rgb(
|
|
3628
|
+
color: rgb(240 171 252 / var(--tw-text-opacity, 1));
|
|
3079
3629
|
}
|
|
3080
|
-
.dark\\:text-
|
|
3630
|
+
.dark\\:text-gray-100:is(.dark *) {
|
|
3081
3631
|
--tw-text-opacity: 1;
|
|
3082
|
-
color: rgb(
|
|
3632
|
+
color: rgb(243 244 246 / var(--tw-text-opacity, 1));
|
|
3083
3633
|
}
|
|
3084
|
-
.dark\\:
|
|
3634
|
+
.dark\\:text-gray-200:is(.dark *) {
|
|
3635
|
+
--tw-text-opacity: 1;
|
|
3636
|
+
color: rgb(229 231 235 / var(--tw-text-opacity, 1));
|
|
3637
|
+
}
|
|
3638
|
+
.dark\\:text-gray-300:is(.dark *) {
|
|
3639
|
+
--tw-text-opacity: 1;
|
|
3640
|
+
color: rgb(209 213 219 / var(--tw-text-opacity, 1));
|
|
3641
|
+
}
|
|
3642
|
+
.dark\\:text-gray-900:is(.dark *) {
|
|
3643
|
+
--tw-text-opacity: 1;
|
|
3644
|
+
color: rgb(17 24 39 / var(--tw-text-opacity, 1));
|
|
3645
|
+
}
|
|
3646
|
+
.dark\\:text-green-200:is(.dark *) {
|
|
3647
|
+
--tw-text-opacity: 1;
|
|
3648
|
+
color: rgb(187 247 208 / var(--tw-text-opacity, 1));
|
|
3649
|
+
}
|
|
3650
|
+
.dark\\:text-green-300:is(.dark *) {
|
|
3651
|
+
--tw-text-opacity: 1;
|
|
3652
|
+
color: rgb(134 239 172 / var(--tw-text-opacity, 1));
|
|
3653
|
+
}
|
|
3654
|
+
.dark\\:text-indigo-300:is(.dark *) {
|
|
3655
|
+
--tw-text-opacity: 1;
|
|
3656
|
+
color: rgb(165 180 252 / var(--tw-text-opacity, 1));
|
|
3657
|
+
}
|
|
3658
|
+
.dark\\:text-lime-200:is(.dark *) {
|
|
3659
|
+
--tw-text-opacity: 1;
|
|
3660
|
+
color: rgb(217 249 157 / var(--tw-text-opacity, 1));
|
|
3661
|
+
}
|
|
3662
|
+
.dark\\:text-lime-300:is(.dark *) {
|
|
3663
|
+
--tw-text-opacity: 1;
|
|
3664
|
+
color: rgb(190 242 100 / var(--tw-text-opacity, 1));
|
|
3665
|
+
}
|
|
3666
|
+
.dark\\:text-neutral-300:is(.dark *) {
|
|
3667
|
+
--tw-text-opacity: 1;
|
|
3668
|
+
color: rgb(212 212 212 / var(--tw-text-opacity, 1));
|
|
3669
|
+
}
|
|
3670
|
+
.dark\\:text-orange-200:is(.dark *) {
|
|
3671
|
+
--tw-text-opacity: 1;
|
|
3672
|
+
color: rgb(254 215 170 / var(--tw-text-opacity, 1));
|
|
3673
|
+
}
|
|
3674
|
+
.dark\\:text-orange-300:is(.dark *) {
|
|
3675
|
+
--tw-text-opacity: 1;
|
|
3676
|
+
color: rgb(253 186 116 / var(--tw-text-opacity, 1));
|
|
3677
|
+
}
|
|
3678
|
+
.dark\\:text-pink-300:is(.dark *) {
|
|
3679
|
+
--tw-text-opacity: 1;
|
|
3680
|
+
color: rgb(249 168 212 / var(--tw-text-opacity, 1));
|
|
3681
|
+
}
|
|
3682
|
+
.dark\\:text-purple-300:is(.dark *) {
|
|
3683
|
+
--tw-text-opacity: 1;
|
|
3684
|
+
color: rgb(216 180 254 / var(--tw-text-opacity, 1));
|
|
3685
|
+
}
|
|
3686
|
+
.dark\\:text-red-200:is(.dark *) {
|
|
3687
|
+
--tw-text-opacity: 1;
|
|
3688
|
+
color: rgb(254 202 202 / var(--tw-text-opacity, 1));
|
|
3689
|
+
}
|
|
3690
|
+
.dark\\:text-red-300:is(.dark *) {
|
|
3691
|
+
--tw-text-opacity: 1;
|
|
3692
|
+
color: rgb(252 165 165 / var(--tw-text-opacity, 1));
|
|
3693
|
+
}
|
|
3694
|
+
.dark\\:text-rose-300:is(.dark *) {
|
|
3695
|
+
--tw-text-opacity: 1;
|
|
3696
|
+
color: rgb(253 164 175 / var(--tw-text-opacity, 1));
|
|
3697
|
+
}
|
|
3698
|
+
.dark\\:text-sky-300:is(.dark *) {
|
|
3699
|
+
--tw-text-opacity: 1;
|
|
3700
|
+
color: rgb(125 211 252 / var(--tw-text-opacity, 1));
|
|
3701
|
+
}
|
|
3702
|
+
.dark\\:text-slate-300:is(.dark *) {
|
|
3703
|
+
--tw-text-opacity: 1;
|
|
3704
|
+
color: rgb(203 213 225 / var(--tw-text-opacity, 1));
|
|
3705
|
+
}
|
|
3706
|
+
.dark\\:text-stone-300:is(.dark *) {
|
|
3707
|
+
--tw-text-opacity: 1;
|
|
3708
|
+
color: rgb(214 211 209 / var(--tw-text-opacity, 1));
|
|
3709
|
+
}
|
|
3710
|
+
.dark\\:text-teal-300:is(.dark *) {
|
|
3711
|
+
--tw-text-opacity: 1;
|
|
3712
|
+
color: rgb(94 234 212 / var(--tw-text-opacity, 1));
|
|
3713
|
+
}
|
|
3714
|
+
.dark\\:text-violet-300:is(.dark *) {
|
|
3715
|
+
--tw-text-opacity: 1;
|
|
3716
|
+
color: rgb(196 181 253 / var(--tw-text-opacity, 1));
|
|
3717
|
+
}
|
|
3718
|
+
.dark\\:text-yellow-200:is(.dark *) {
|
|
3719
|
+
--tw-text-opacity: 1;
|
|
3720
|
+
color: rgb(254 240 138 / var(--tw-text-opacity, 1));
|
|
3721
|
+
}
|
|
3722
|
+
.dark\\:text-yellow-300:is(.dark *) {
|
|
3723
|
+
--tw-text-opacity: 1;
|
|
3724
|
+
color: rgb(253 224 71 / var(--tw-text-opacity, 1));
|
|
3725
|
+
}
|
|
3726
|
+
.dark\\:text-zinc-300:is(.dark *) {
|
|
3727
|
+
--tw-text-opacity: 1;
|
|
3728
|
+
color: rgb(212 212 216 / var(--tw-text-opacity, 1));
|
|
3729
|
+
}
|
|
3730
|
+
.dark\\:hover\\:bg-white\\/10:hover:is(.dark *) {
|
|
3085
3731
|
background-color: rgb(255 255 255 / 0.1);
|
|
3086
3732
|
}
|
|
3087
3733
|
.dark\\:hover\\:bg-zinc-500:hover:is(.dark *) {
|
|
@@ -3452,7 +4098,172 @@ svg.icon {
|
|
|
3452
4098
|
`);
|
|
3453
4099
|
|
|
3454
4100
|
// src/components/DataViews.tsx
|
|
3455
|
-
var
|
|
4101
|
+
var import_react7 = require("react");
|
|
4102
|
+
|
|
4103
|
+
// src/lib/colors.ts
|
|
4104
|
+
var PRESET_COLORS = [
|
|
4105
|
+
{ name: "Red", value: "red" },
|
|
4106
|
+
{ name: "Blue", value: "blue" },
|
|
4107
|
+
{ name: "Green", value: "green" },
|
|
4108
|
+
{ name: "Yellow", value: "yellow" },
|
|
4109
|
+
{ name: "Orange", value: "orange" },
|
|
4110
|
+
{ name: "Purple", value: "purple" },
|
|
4111
|
+
{ name: "Pink", value: "pink" },
|
|
4112
|
+
{ name: "Brown", value: "brown" },
|
|
4113
|
+
{ name: "Gray", value: "gray" },
|
|
4114
|
+
{ name: "Black", value: "black" },
|
|
4115
|
+
{ name: "White", value: "white" },
|
|
4116
|
+
{ name: "Cyan", value: "cyan" },
|
|
4117
|
+
{ name: "Magenta", value: "magenta" },
|
|
4118
|
+
{ name: "Lime", value: "lime" },
|
|
4119
|
+
{ name: "Indigo", value: "indigo" },
|
|
4120
|
+
{ name: "Teal", value: "teal" },
|
|
4121
|
+
{ name: "Violet", value: "violet" },
|
|
4122
|
+
{ name: "Rose", value: "rose" },
|
|
4123
|
+
{ name: "Fuchsia", value: "fuchsia" },
|
|
4124
|
+
{ name: "Sky", value: "sky" },
|
|
4125
|
+
{ name: "Emerald", value: "emerald" },
|
|
4126
|
+
{ name: "Amber", value: "amber" },
|
|
4127
|
+
{ name: "Slate", value: "slate" },
|
|
4128
|
+
{ name: "Zinc", value: "zinc" },
|
|
4129
|
+
{ name: "Stone", value: "stone" },
|
|
4130
|
+
{ name: "Neutral", value: "neutral" },
|
|
4131
|
+
{ name: "Crimson", value: "crimson" },
|
|
4132
|
+
{ name: "Navy", value: "navy" },
|
|
4133
|
+
{ name: "Maroon", value: "maroon" },
|
|
4134
|
+
{ name: "Olive", value: "olive" },
|
|
4135
|
+
{ name: "Coral", value: "coral" },
|
|
4136
|
+
{ name: "Salmon", value: "salmon" },
|
|
4137
|
+
{ name: "Gold", value: "gold" },
|
|
4138
|
+
{ name: "Silver", value: "silver" },
|
|
4139
|
+
{ name: "Turquoise", value: "turquoise" },
|
|
4140
|
+
{ name: "Aqua", value: "aqua" },
|
|
4141
|
+
{ name: "Mint", value: "mint" },
|
|
4142
|
+
{ name: "Lavender", value: "lavender" },
|
|
4143
|
+
{ name: "Peach", value: "peach" },
|
|
4144
|
+
{ name: "Beige", value: "beige" },
|
|
4145
|
+
{ name: "Ivory", value: "ivory" },
|
|
4146
|
+
{ name: "Khaki", value: "khaki" },
|
|
4147
|
+
{ name: "Plum", value: "plum" },
|
|
4148
|
+
{ name: "Orchid", value: "orchid" },
|
|
4149
|
+
{ name: "Tan", value: "tan" },
|
|
4150
|
+
{ name: "Chocolate", value: "chocolate" },
|
|
4151
|
+
{ name: "Sienna", value: "sienna" },
|
|
4152
|
+
{ name: "Burgundy", value: "burgundy" },
|
|
4153
|
+
{ name: "Mustard", value: "mustard" },
|
|
4154
|
+
{ name: "Charcoal", value: "charcoal" }
|
|
4155
|
+
];
|
|
4156
|
+
var BADGE_COLOR_MAP = {
|
|
4157
|
+
gray: "bg-gray-100 text-gray-700 dark:bg-gray-900/50 dark:text-gray-300 hover:bg-gray-100/80",
|
|
4158
|
+
slate: "bg-slate-100 text-slate-700 dark:bg-slate-900/50 dark:text-slate-300 hover:bg-slate-100/80",
|
|
4159
|
+
zinc: "bg-zinc-100 text-zinc-700 dark:bg-zinc-900/50 dark:text-zinc-300 hover:bg-zinc-100/80",
|
|
4160
|
+
neutral: "bg-neutral-100 text-neutral-700 dark:bg-neutral-900/50 dark:text-neutral-300 hover:bg-neutral-100/80",
|
|
4161
|
+
stone: "bg-stone-100 text-stone-700 dark:bg-stone-900/50 dark:text-stone-300 hover:bg-stone-100/80",
|
|
4162
|
+
red: "bg-red-100 text-red-700 dark:bg-red-900/50 dark:text-red-300 hover:bg-red-100/80",
|
|
4163
|
+
orange: "bg-orange-100 text-orange-700 dark:bg-orange-900/50 dark:text-orange-300 hover:bg-orange-100/80",
|
|
4164
|
+
amber: "bg-amber-100 text-amber-700 dark:bg-amber-900/50 dark:text-amber-300 hover:bg-amber-100/80",
|
|
4165
|
+
yellow: "bg-yellow-100 text-yellow-700 dark:bg-yellow-900/50 dark:text-yellow-300 hover:bg-yellow-100/80",
|
|
4166
|
+
lime: "bg-lime-100 text-lime-700 dark:bg-lime-900/50 dark:text-lime-300 hover:bg-lime-100/80",
|
|
4167
|
+
green: "bg-green-100 text-green-700 dark:bg-green-900/50 dark:text-green-300 hover:bg-green-100/80",
|
|
4168
|
+
emerald: "bg-emerald-100 text-emerald-700 dark:bg-emerald-900/50 dark:text-emerald-300 hover:bg-emerald-100/80",
|
|
4169
|
+
teal: "bg-teal-100 text-teal-700 dark:bg-teal-900/50 dark:text-teal-300 hover:bg-teal-100/80",
|
|
4170
|
+
cyan: "bg-cyan-100 text-cyan-700 dark:bg-cyan-900/50 dark:text-cyan-300 hover:bg-cyan-100/80",
|
|
4171
|
+
sky: "bg-sky-100 text-sky-700 dark:bg-sky-900/50 dark:text-sky-300 hover:bg-sky-100/80",
|
|
4172
|
+
blue: "bg-blue-100 text-blue-700 dark:bg-blue-900/50 dark:text-blue-300 hover:bg-blue-100/80",
|
|
4173
|
+
indigo: "bg-indigo-100 text-indigo-700 dark:bg-indigo-900/50 dark:text-indigo-300 hover:bg-indigo-100/80",
|
|
4174
|
+
violet: "bg-violet-100 text-violet-700 dark:bg-violet-900/50 dark:text-violet-300 hover:bg-violet-100/80",
|
|
4175
|
+
purple: "bg-purple-100 text-purple-700 dark:bg-purple-900/50 dark:text-purple-300 hover:bg-purple-100/80",
|
|
4176
|
+
fuchsia: "bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-900/50 dark:text-fuchsia-300 hover:bg-fuchsia-100/80",
|
|
4177
|
+
pink: "bg-pink-100 text-pink-700 dark:bg-pink-900/50 dark:text-pink-300 hover:bg-pink-100/80",
|
|
4178
|
+
rose: "bg-rose-100 text-rose-700 dark:bg-rose-900/50 dark:text-rose-300 hover:bg-rose-100/80",
|
|
4179
|
+
brown: "bg-amber-100 text-amber-800 dark:bg-amber-900/50 dark:text-amber-200 hover:bg-amber-100/80",
|
|
4180
|
+
// Additional colors
|
|
4181
|
+
crimson: "bg-red-100 text-red-800 dark:bg-red-900/50 dark:text-red-200 hover:bg-red-100/80",
|
|
4182
|
+
navy: "bg-blue-100 text-blue-900 dark:bg-blue-900/50 dark:text-blue-200 hover:bg-blue-100/80",
|
|
4183
|
+
maroon: "bg-red-100 text-red-900 dark:bg-red-900/50 dark:text-red-200 hover:bg-red-100/80",
|
|
4184
|
+
olive: "bg-lime-100 text-lime-800 dark:bg-lime-900/50 dark:text-lime-200 hover:bg-lime-100/80",
|
|
4185
|
+
coral: "bg-orange-100 text-orange-600 dark:bg-orange-900/50 dark:text-orange-300 hover:bg-orange-100/80",
|
|
4186
|
+
salmon: "bg-pink-100 text-pink-600 dark:bg-pink-900/50 dark:text-pink-300 hover:bg-pink-100/80",
|
|
4187
|
+
gold: "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/50 dark:text-yellow-200 hover:bg-yellow-100/80",
|
|
4188
|
+
silver: "bg-gray-100 text-gray-600 dark:bg-gray-900/50 dark:text-gray-300 hover:bg-gray-100/80",
|
|
4189
|
+
turquoise: "bg-teal-100 text-teal-600 dark:bg-teal-900/50 dark:text-teal-300 hover:bg-teal-100/80",
|
|
4190
|
+
aqua: "bg-cyan-100 text-cyan-600 dark:bg-cyan-900/50 dark:text-cyan-300 hover:bg-cyan-100/80",
|
|
4191
|
+
mint: "bg-emerald-100 text-emerald-600 dark:bg-emerald-900/50 dark:text-emerald-300 hover:bg-emerald-100/80",
|
|
4192
|
+
lavender: "bg-purple-100 text-purple-600 dark:bg-purple-900/50 dark:text-purple-300 hover:bg-purple-100/80",
|
|
4193
|
+
peach: "bg-orange-100 text-orange-500 dark:bg-orange-900/50 dark:text-orange-300 hover:bg-orange-100/80",
|
|
4194
|
+
beige: "bg-amber-50 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300 hover:bg-amber-50/80",
|
|
4195
|
+
ivory: "bg-yellow-50 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-300 hover:bg-yellow-50/80",
|
|
4196
|
+
khaki: "bg-yellow-100 text-yellow-700 dark:bg-yellow-900/50 dark:text-yellow-300 hover:bg-yellow-100/80",
|
|
4197
|
+
plum: "bg-purple-100 text-purple-700 dark:bg-purple-900/50 dark:text-purple-300 hover:bg-purple-100/80",
|
|
4198
|
+
orchid: "bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-900/50 dark:text-fuchsia-300 hover:bg-fuchsia-100/80",
|
|
4199
|
+
tan: "bg-orange-100 text-orange-700 dark:bg-orange-900/50 dark:text-orange-300 hover:bg-orange-100/80",
|
|
4200
|
+
chocolate: "bg-amber-100 text-amber-800 dark:bg-amber-900/50 dark:text-amber-200 hover:bg-amber-100/80",
|
|
4201
|
+
sienna: "bg-orange-100 text-orange-800 dark:bg-orange-900/50 dark:text-orange-200 hover:bg-orange-100/80",
|
|
4202
|
+
burgundy: "bg-red-100 text-red-900 dark:bg-red-900/50 dark:text-red-200 hover:bg-red-100/80",
|
|
4203
|
+
mustard: "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/50 dark:text-yellow-200 hover:bg-yellow-100/80",
|
|
4204
|
+
charcoal: "bg-gray-100 text-gray-900 dark:bg-gray-900/50 dark:text-gray-200 hover:bg-gray-100/80",
|
|
4205
|
+
black: "bg-gray-900 text-gray-100 dark:bg-gray-100 dark:text-gray-900 hover:bg-gray-900/80",
|
|
4206
|
+
white: "bg-gray-50 text-gray-900 dark:bg-gray-900/30 dark:text-gray-100 hover:bg-gray-50/80",
|
|
4207
|
+
magenta: "bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-900/50 dark:text-fuchsia-300 hover:bg-fuchsia-100/80"
|
|
4208
|
+
};
|
|
4209
|
+
var DOT_COLOR_MAP = {
|
|
4210
|
+
gray: "bg-gray-400",
|
|
4211
|
+
slate: "bg-slate-400",
|
|
4212
|
+
zinc: "bg-zinc-400",
|
|
4213
|
+
neutral: "bg-neutral-400",
|
|
4214
|
+
stone: "bg-stone-400",
|
|
4215
|
+
red: "bg-red-500",
|
|
4216
|
+
orange: "bg-orange-500",
|
|
4217
|
+
amber: "bg-amber-500",
|
|
4218
|
+
yellow: "bg-yellow-500",
|
|
4219
|
+
lime: "bg-lime-500",
|
|
4220
|
+
green: "bg-green-500",
|
|
4221
|
+
emerald: "bg-emerald-500",
|
|
4222
|
+
teal: "bg-teal-500",
|
|
4223
|
+
cyan: "bg-cyan-500",
|
|
4224
|
+
sky: "bg-sky-500",
|
|
4225
|
+
blue: "bg-blue-500",
|
|
4226
|
+
indigo: "bg-indigo-500",
|
|
4227
|
+
violet: "bg-violet-500",
|
|
4228
|
+
purple: "bg-purple-500",
|
|
4229
|
+
fuchsia: "bg-fuchsia-500",
|
|
4230
|
+
pink: "bg-pink-500",
|
|
4231
|
+
rose: "bg-rose-500",
|
|
4232
|
+
brown: "bg-amber-700",
|
|
4233
|
+
crimson: "bg-red-700",
|
|
4234
|
+
navy: "bg-blue-900",
|
|
4235
|
+
maroon: "bg-red-900",
|
|
4236
|
+
olive: "bg-lime-700",
|
|
4237
|
+
coral: "bg-orange-400",
|
|
4238
|
+
salmon: "bg-pink-400",
|
|
4239
|
+
gold: "bg-yellow-600",
|
|
4240
|
+
silver: "bg-gray-400",
|
|
4241
|
+
turquoise: "bg-teal-400",
|
|
4242
|
+
aqua: "bg-cyan-400",
|
|
4243
|
+
mint: "bg-emerald-400",
|
|
4244
|
+
lavender: "bg-purple-400",
|
|
4245
|
+
peach: "bg-orange-300",
|
|
4246
|
+
beige: "bg-amber-200",
|
|
4247
|
+
ivory: "bg-yellow-100",
|
|
4248
|
+
khaki: "bg-yellow-400",
|
|
4249
|
+
plum: "bg-purple-600",
|
|
4250
|
+
orchid: "bg-fuchsia-400",
|
|
4251
|
+
tan: "bg-orange-400",
|
|
4252
|
+
chocolate: "bg-amber-700",
|
|
4253
|
+
sienna: "bg-orange-700",
|
|
4254
|
+
burgundy: "bg-red-900",
|
|
4255
|
+
mustard: "bg-yellow-700",
|
|
4256
|
+
charcoal: "bg-gray-800",
|
|
4257
|
+
black: "bg-gray-900",
|
|
4258
|
+
white: "bg-gray-100",
|
|
4259
|
+
magenta: "bg-fuchsia-600"
|
|
4260
|
+
};
|
|
4261
|
+
function getBadgeColor(color) {
|
|
4262
|
+
return BADGE_COLOR_MAP[color || "gray"] || BADGE_COLOR_MAP.gray;
|
|
4263
|
+
}
|
|
4264
|
+
function getDotColor(color) {
|
|
4265
|
+
return DOT_COLOR_MAP[color || "gray"] || DOT_COLOR_MAP.gray;
|
|
4266
|
+
}
|
|
3456
4267
|
|
|
3457
4268
|
// src/lib/schema.ts
|
|
3458
4269
|
var tableSchema = {
|
|
@@ -3558,7 +4369,8 @@ TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
|
3558
4369
|
var import_lucide_react11 = require("lucide-react");
|
|
3559
4370
|
|
|
3560
4371
|
// src/components/views/GridView.tsx
|
|
3561
|
-
var
|
|
4372
|
+
var import_react2 = require("react");
|
|
4373
|
+
var import_lucide_react3 = require("lucide-react");
|
|
3562
4374
|
|
|
3563
4375
|
// src/components/ui/button.tsx
|
|
3564
4376
|
var React2 = __toESM(require("react"));
|
|
@@ -3755,23 +4567,952 @@ function Badge(_a) {
|
|
|
3755
4567
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", __spreadValues({ className: cn(badgeVariants({ variant }), className) }, props));
|
|
3756
4568
|
}
|
|
3757
4569
|
|
|
3758
|
-
// src/components/
|
|
4570
|
+
// src/components/ui/select.tsx
|
|
4571
|
+
var React5 = __toESM(require("react"));
|
|
4572
|
+
var SelectPrimitive = __toESM(require("@radix-ui/react-select"));
|
|
4573
|
+
var import_lucide_react2 = require("lucide-react");
|
|
3759
4574
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
3760
|
-
var
|
|
3761
|
-
|
|
3762
|
-
|
|
3763
|
-
|
|
3764
|
-
|
|
3765
|
-
|
|
3766
|
-
|
|
4575
|
+
var Select = SelectPrimitive.Root;
|
|
4576
|
+
var SelectValue = SelectPrimitive.Value;
|
|
4577
|
+
var SelectTrigger = React5.forwardRef((_a, ref) => {
|
|
4578
|
+
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
4579
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
4580
|
+
SelectPrimitive.Trigger,
|
|
4581
|
+
__spreadProps(__spreadValues({
|
|
4582
|
+
ref,
|
|
4583
|
+
className: cn(
|
|
4584
|
+
"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",
|
|
4585
|
+
className
|
|
4586
|
+
)
|
|
4587
|
+
}, props), {
|
|
4588
|
+
children: [
|
|
4589
|
+
children,
|
|
4590
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react2.ChevronDown, { className: "h-4 w-4 opacity-50" }) })
|
|
4591
|
+
]
|
|
4592
|
+
})
|
|
4593
|
+
);
|
|
4594
|
+
});
|
|
4595
|
+
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
4596
|
+
var SelectScrollUpButton = React5.forwardRef((_a, ref) => {
|
|
4597
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4598
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
4599
|
+
SelectPrimitive.ScrollUpButton,
|
|
4600
|
+
__spreadProps(__spreadValues({
|
|
4601
|
+
ref,
|
|
4602
|
+
className: cn(
|
|
4603
|
+
"flex cursor-default items-center justify-center py-1",
|
|
4604
|
+
className
|
|
4605
|
+
)
|
|
4606
|
+
}, props), {
|
|
4607
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react2.ChevronUp, { className: "h-4 w-4" })
|
|
4608
|
+
})
|
|
4609
|
+
);
|
|
4610
|
+
});
|
|
4611
|
+
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
4612
|
+
var SelectScrollDownButton = React5.forwardRef((_a, ref) => {
|
|
4613
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4614
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
4615
|
+
SelectPrimitive.ScrollDownButton,
|
|
4616
|
+
__spreadProps(__spreadValues({
|
|
4617
|
+
ref,
|
|
4618
|
+
className: cn(
|
|
4619
|
+
"flex cursor-default items-center justify-center py-1",
|
|
4620
|
+
className
|
|
4621
|
+
)
|
|
4622
|
+
}, props), {
|
|
4623
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react2.ChevronDown, { className: "h-4 w-4" })
|
|
4624
|
+
})
|
|
4625
|
+
);
|
|
4626
|
+
});
|
|
4627
|
+
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
4628
|
+
var SelectContent = React5.forwardRef((_a, ref) => {
|
|
4629
|
+
var _b = _a, { className, children, position = "popper" } = _b, props = __objRest(_b, ["className", "children", "position"]);
|
|
4630
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
4631
|
+
SelectPrimitive.Content,
|
|
4632
|
+
__spreadProps(__spreadValues({
|
|
4633
|
+
ref,
|
|
4634
|
+
className: cn(
|
|
4635
|
+
"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]",
|
|
4636
|
+
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",
|
|
4637
|
+
className
|
|
4638
|
+
),
|
|
4639
|
+
position
|
|
4640
|
+
}, props), {
|
|
4641
|
+
children: [
|
|
4642
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectScrollUpButton, {}),
|
|
4643
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
4644
|
+
SelectPrimitive.Viewport,
|
|
4645
|
+
{
|
|
4646
|
+
className: cn(
|
|
4647
|
+
"p-1",
|
|
4648
|
+
position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
|
|
4649
|
+
),
|
|
4650
|
+
children
|
|
4651
|
+
}
|
|
4652
|
+
),
|
|
4653
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectScrollDownButton, {})
|
|
4654
|
+
]
|
|
4655
|
+
})
|
|
4656
|
+
) });
|
|
4657
|
+
});
|
|
4658
|
+
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
4659
|
+
var SelectLabel = React5.forwardRef((_a, ref) => {
|
|
4660
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4661
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
4662
|
+
SelectPrimitive.Label,
|
|
4663
|
+
__spreadValues({
|
|
4664
|
+
ref,
|
|
4665
|
+
className: cn("px-2 py-1.5 text-sm font-semibold", className)
|
|
4666
|
+
}, props)
|
|
4667
|
+
);
|
|
4668
|
+
});
|
|
4669
|
+
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
4670
|
+
var SelectItem = React5.forwardRef((_a, ref) => {
|
|
4671
|
+
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
4672
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
4673
|
+
SelectPrimitive.Item,
|
|
4674
|
+
__spreadProps(__spreadValues({
|
|
4675
|
+
ref,
|
|
4676
|
+
className: cn(
|
|
4677
|
+
"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",
|
|
4678
|
+
className
|
|
4679
|
+
)
|
|
4680
|
+
}, props), {
|
|
4681
|
+
children: [
|
|
4682
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react2.Check, { className: "h-4 w-4" }) }) }),
|
|
4683
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.ItemText, { children })
|
|
4684
|
+
]
|
|
4685
|
+
})
|
|
4686
|
+
);
|
|
4687
|
+
});
|
|
4688
|
+
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
4689
|
+
var SelectSeparator = React5.forwardRef((_a, ref) => {
|
|
4690
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4691
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
4692
|
+
SelectPrimitive.Separator,
|
|
4693
|
+
__spreadValues({
|
|
4694
|
+
ref,
|
|
4695
|
+
className: cn("-mx-1 my-1 h-px bg-muted", className)
|
|
4696
|
+
}, props)
|
|
4697
|
+
);
|
|
4698
|
+
});
|
|
4699
|
+
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
4700
|
+
|
|
4701
|
+
// src/components/ui/input.tsx
|
|
4702
|
+
var React6 = __toESM(require("react"));
|
|
4703
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
4704
|
+
var Input = React6.forwardRef(
|
|
4705
|
+
(_a, ref) => {
|
|
4706
|
+
var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
|
|
4707
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
4708
|
+
"input",
|
|
4709
|
+
__spreadValues({
|
|
4710
|
+
type,
|
|
4711
|
+
className: cn(
|
|
4712
|
+
"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",
|
|
4713
|
+
className
|
|
4714
|
+
),
|
|
4715
|
+
ref
|
|
4716
|
+
}, props)
|
|
4717
|
+
);
|
|
4718
|
+
}
|
|
4719
|
+
);
|
|
4720
|
+
Input.displayName = "Input";
|
|
4721
|
+
|
|
4722
|
+
// src/components/I18nProvider.tsx
|
|
4723
|
+
var import_react = require("react");
|
|
4724
|
+
|
|
4725
|
+
// src/lib/i18n.ts
|
|
4726
|
+
var LANGUAGES = {
|
|
4727
|
+
en: { name: "English", dir: "ltr" },
|
|
4728
|
+
es: { name: "Espa\xF1ol", dir: "ltr" },
|
|
4729
|
+
zh: { name: "\u4E2D\u6587", dir: "ltr" },
|
|
4730
|
+
ar: { name: "\u0627\u0644\u0639\u0631\u0628\u064A\u0629", dir: "rtl" },
|
|
4731
|
+
hi: { name: "\u0939\u093F\u0928\u094D\u0926\u0940", dir: "ltr" },
|
|
4732
|
+
fr: { name: "Fran\xE7ais", dir: "ltr" },
|
|
4733
|
+
pt: { name: "Portugu\xEAs", dir: "ltr" },
|
|
4734
|
+
ru: { name: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439", dir: "ltr" },
|
|
4735
|
+
de: { name: "Deutsch", dir: "ltr" },
|
|
4736
|
+
ja: { name: "\u65E5\u672C\u8A9E", dir: "ltr" }
|
|
4737
|
+
};
|
|
4738
|
+
var translations = {
|
|
4739
|
+
en: {
|
|
4740
|
+
// Common
|
|
4741
|
+
add: "Add",
|
|
4742
|
+
edit: "Edit",
|
|
4743
|
+
delete: "Delete",
|
|
4744
|
+
view: "View",
|
|
4745
|
+
save: "Save",
|
|
4746
|
+
cancel: "Cancel",
|
|
4747
|
+
close: "Close",
|
|
4748
|
+
search: "Search",
|
|
4749
|
+
filter: "Filter",
|
|
4750
|
+
sort: "Sort",
|
|
4751
|
+
// Records
|
|
4752
|
+
addRecord: "Add Record",
|
|
4753
|
+
createRecord: "Create Record",
|
|
4754
|
+
editRecord: "Edit Record",
|
|
4755
|
+
deleteRecord: "Delete Record",
|
|
4756
|
+
viewRecord: "View Record",
|
|
4757
|
+
recordDetails: "Record Details",
|
|
4758
|
+
records: "records",
|
|
4759
|
+
of: "of",
|
|
4760
|
+
// Views
|
|
4761
|
+
gridView: "Grid",
|
|
4762
|
+
kanbanView: "Kanban",
|
|
4763
|
+
galleryView: "Gallery",
|
|
4764
|
+
calendarView: "Calendar",
|
|
4765
|
+
formView: "Form",
|
|
4766
|
+
// Fields
|
|
4767
|
+
title: "Title",
|
|
4768
|
+
description: "Description",
|
|
4769
|
+
status: "Status",
|
|
4770
|
+
priority: "Priority",
|
|
4771
|
+
dueDate: "Due Date",
|
|
4772
|
+
completed: "Completed",
|
|
4773
|
+
primary: "Primary",
|
|
4774
|
+
// Actions
|
|
4775
|
+
createNewRecord: "Create New Record",
|
|
4776
|
+
enterDetails: "Enter the details for the new record.",
|
|
4777
|
+
modifyValues: "Modify the values for this record.",
|
|
4778
|
+
viewData: "View the data for this record.",
|
|
4779
|
+
addNewRecord: "Add new record",
|
|
4780
|
+
// Sorting
|
|
4781
|
+
sortBy: "Sort by...",
|
|
4782
|
+
noSorting: "No sorting",
|
|
4783
|
+
ascending: "\u2191 A-Z",
|
|
4784
|
+
descending: "\u2193 Z-A",
|
|
4785
|
+
// Filtering
|
|
4786
|
+
filterBy: "Filter by...",
|
|
4787
|
+
noFilter: "No filter",
|
|
4788
|
+
filterValue: "Filter value...",
|
|
4789
|
+
selectValue: "Select value...",
|
|
4790
|
+
// Operators
|
|
4791
|
+
equals: "=",
|
|
4792
|
+
greater: ">",
|
|
4793
|
+
less: "<",
|
|
4794
|
+
greaterEqual: "\u2265",
|
|
4795
|
+
lessEqual: "\u2264",
|
|
4796
|
+
on: "On",
|
|
4797
|
+
before: "Before",
|
|
4798
|
+
after: "After",
|
|
4799
|
+
yes: "Yes",
|
|
4800
|
+
no: "No",
|
|
4801
|
+
// Messages
|
|
4802
|
+
noDateField: "No date field found in schema. Add a date field to enable Calendar view.",
|
|
4803
|
+
noSelectField: "No select field found in schema. Add a select field to enable Kanban view.",
|
|
4804
|
+
uncategorized: "Uncategorized",
|
|
4805
|
+
untitled: "Untitled",
|
|
4806
|
+
event: "Event",
|
|
4807
|
+
none: "None",
|
|
4808
|
+
today: "Today",
|
|
4809
|
+
weekDays: "Sun,Mon,Tue,Wed,Thu,Fri,Sat",
|
|
4810
|
+
monthNames: "January,February,March,April,May,June,July,August,September,October,November,December"
|
|
4811
|
+
},
|
|
4812
|
+
es: {
|
|
4813
|
+
add: "Agregar",
|
|
4814
|
+
edit: "Editar",
|
|
4815
|
+
delete: "Eliminar",
|
|
4816
|
+
view: "Ver",
|
|
4817
|
+
save: "Guardar",
|
|
4818
|
+
cancel: "Cancelar",
|
|
4819
|
+
close: "Cerrar",
|
|
4820
|
+
search: "Buscar",
|
|
4821
|
+
filter: "Filtrar",
|
|
4822
|
+
sort: "Ordenar",
|
|
4823
|
+
addRecord: "Agregar Registro",
|
|
4824
|
+
createRecord: "Crear Registro",
|
|
4825
|
+
editRecord: "Editar Registro",
|
|
4826
|
+
deleteRecord: "Eliminar Registro",
|
|
4827
|
+
viewRecord: "Ver Registro",
|
|
4828
|
+
recordDetails: "Detalles del Registro",
|
|
4829
|
+
records: "registros",
|
|
4830
|
+
of: "de",
|
|
4831
|
+
gridView: "Cuadr\xEDcula",
|
|
4832
|
+
kanbanView: "Kanban",
|
|
4833
|
+
galleryView: "Galer\xEDa",
|
|
4834
|
+
calendarView: "Calendario",
|
|
4835
|
+
formView: "Formulario",
|
|
4836
|
+
title: "T\xEDtulo",
|
|
4837
|
+
description: "Descripci\xF3n",
|
|
4838
|
+
status: "Estado",
|
|
4839
|
+
priority: "Prioridad",
|
|
4840
|
+
dueDate: "Fecha de Vencimiento",
|
|
4841
|
+
completed: "Completado",
|
|
4842
|
+
primary: "Principal",
|
|
4843
|
+
createNewRecord: "Crear Nuevo Registro",
|
|
4844
|
+
enterDetails: "Ingrese los detalles del nuevo registro.",
|
|
4845
|
+
modifyValues: "Modifique los valores de este registro.",
|
|
4846
|
+
viewData: "Ver los datos de este registro.",
|
|
4847
|
+
addNewRecord: "Agregar nuevo registro",
|
|
4848
|
+
sortBy: "Ordenar por...",
|
|
4849
|
+
noSorting: "Sin ordenar",
|
|
4850
|
+
ascending: "\u2191 A-Z",
|
|
4851
|
+
descending: "\u2193 Z-A",
|
|
4852
|
+
filterBy: "Filtrar por...",
|
|
4853
|
+
noFilter: "Sin filtro",
|
|
4854
|
+
filterValue: "Valor del filtro...",
|
|
4855
|
+
selectValue: "Seleccionar valor...",
|
|
4856
|
+
equals: "=",
|
|
4857
|
+
greater: ">",
|
|
4858
|
+
less: "<",
|
|
4859
|
+
greaterEqual: "\u2265",
|
|
4860
|
+
lessEqual: "\u2264",
|
|
4861
|
+
on: "En",
|
|
4862
|
+
before: "Antes",
|
|
4863
|
+
after: "Despu\xE9s",
|
|
4864
|
+
yes: "S\xED",
|
|
4865
|
+
no: "No",
|
|
4866
|
+
noDateField: "No se encontr\xF3 campo de fecha en el esquema. Agregue un campo de fecha para habilitar la vista de Calendario.",
|
|
4867
|
+
noSelectField: "No se encontr\xF3 campo de selecci\xF3n en el esquema. Agregue un campo de selecci\xF3n para habilitar la vista Kanban.",
|
|
4868
|
+
uncategorized: "Sin categor\xEDa",
|
|
4869
|
+
untitled: "Sin t\xEDtulo",
|
|
4870
|
+
event: "Evento",
|
|
4871
|
+
none: "Ninguno",
|
|
4872
|
+
today: "Hoy",
|
|
4873
|
+
weekDays: "Dom,Lun,Mar,Mi\xE9,Jue,Vie,S\xE1b",
|
|
4874
|
+
monthNames: "Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre"
|
|
4875
|
+
},
|
|
4876
|
+
zh: {
|
|
4877
|
+
add: "\u6DFB\u52A0",
|
|
4878
|
+
edit: "\u7F16\u8F91",
|
|
4879
|
+
delete: "\u5220\u9664",
|
|
4880
|
+
view: "\u67E5\u770B",
|
|
4881
|
+
save: "\u4FDD\u5B58",
|
|
4882
|
+
cancel: "\u53D6\u6D88",
|
|
4883
|
+
close: "\u5173\u95ED",
|
|
4884
|
+
search: "\u641C\u7D22",
|
|
4885
|
+
filter: "\u7B5B\u9009",
|
|
4886
|
+
sort: "\u6392\u5E8F",
|
|
4887
|
+
addRecord: "\u6DFB\u52A0\u8BB0\u5F55",
|
|
4888
|
+
createRecord: "\u521B\u5EFA\u8BB0\u5F55",
|
|
4889
|
+
editRecord: "\u7F16\u8F91\u8BB0\u5F55",
|
|
4890
|
+
deleteRecord: "\u5220\u9664\u8BB0\u5F55",
|
|
4891
|
+
viewRecord: "\u67E5\u770B\u8BB0\u5F55",
|
|
4892
|
+
recordDetails: "\u8BB0\u5F55\u8BE6\u60C5",
|
|
4893
|
+
records: "\u6761\u8BB0\u5F55",
|
|
4894
|
+
of: "\u5171",
|
|
4895
|
+
gridView: "\u8868\u683C",
|
|
4896
|
+
kanbanView: "\u770B\u677F",
|
|
4897
|
+
galleryView: "\u753B\u5ECA",
|
|
4898
|
+
calendarView: "\u65E5\u5386",
|
|
4899
|
+
formView: "\u8868\u5355",
|
|
4900
|
+
title: "\u6807\u9898",
|
|
4901
|
+
description: "\u63CF\u8FF0",
|
|
4902
|
+
status: "\u72B6\u6001",
|
|
4903
|
+
priority: "\u4F18\u5148\u7EA7",
|
|
4904
|
+
dueDate: "\u622A\u6B62\u65E5\u671F",
|
|
4905
|
+
completed: "\u5DF2\u5B8C\u6210",
|
|
4906
|
+
primary: "\u4E3B\u8981",
|
|
4907
|
+
createNewRecord: "\u521B\u5EFA\u65B0\u8BB0\u5F55",
|
|
4908
|
+
enterDetails: "\u8F93\u5165\u65B0\u8BB0\u5F55\u7684\u8BE6\u7EC6\u4FE1\u606F\u3002",
|
|
4909
|
+
modifyValues: "\u4FEE\u6539\u6B64\u8BB0\u5F55\u7684\u503C\u3002",
|
|
4910
|
+
viewData: "\u67E5\u770B\u6B64\u8BB0\u5F55\u7684\u6570\u636E\u3002",
|
|
4911
|
+
addNewRecord: "\u6DFB\u52A0\u65B0\u8BB0\u5F55",
|
|
4912
|
+
sortBy: "\u6392\u5E8F\u65B9\u5F0F...",
|
|
4913
|
+
noSorting: "\u4E0D\u6392\u5E8F",
|
|
4914
|
+
ascending: "\u2191 A-Z",
|
|
4915
|
+
descending: "\u2193 Z-A",
|
|
4916
|
+
filterBy: "\u7B5B\u9009\u6761\u4EF6...",
|
|
4917
|
+
noFilter: "\u65E0\u7B5B\u9009",
|
|
4918
|
+
filterValue: "\u7B5B\u9009\u503C...",
|
|
4919
|
+
selectValue: "\u9009\u62E9\u503C...",
|
|
4920
|
+
equals: "=",
|
|
4921
|
+
greater: ">",
|
|
4922
|
+
less: "<",
|
|
4923
|
+
greaterEqual: "\u2265",
|
|
4924
|
+
lessEqual: "\u2264",
|
|
4925
|
+
on: "\u5728",
|
|
4926
|
+
before: "\u4E4B\u524D",
|
|
4927
|
+
after: "\u4E4B\u540E",
|
|
4928
|
+
yes: "\u662F",
|
|
4929
|
+
no: "\u5426",
|
|
4930
|
+
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",
|
|
4931
|
+
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",
|
|
4932
|
+
uncategorized: "\u672A\u5206\u7C7B",
|
|
4933
|
+
untitled: "\u65E0\u6807\u9898",
|
|
4934
|
+
event: "\u4E8B\u4EF6",
|
|
4935
|
+
none: "\u65E0",
|
|
4936
|
+
today: "\u4ECA\u5929",
|
|
4937
|
+
weekDays: "\u65E5,\u4E00,\u4E8C,\u4E09,\u56DB,\u4E94,\u516D",
|
|
4938
|
+
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"
|
|
4939
|
+
},
|
|
4940
|
+
ar: {
|
|
4941
|
+
add: "\u0625\u0636\u0627\u0641\u0629",
|
|
4942
|
+
edit: "\u062A\u0639\u062F\u064A\u0644",
|
|
4943
|
+
delete: "\u062D\u0630\u0641",
|
|
4944
|
+
view: "\u0639\u0631\u0636",
|
|
4945
|
+
save: "\u062D\u0641\u0638",
|
|
4946
|
+
cancel: "\u0625\u0644\u063A\u0627\u0621",
|
|
4947
|
+
close: "\u0625\u063A\u0644\u0627\u0642",
|
|
4948
|
+
search: "\u0628\u062D\u062B",
|
|
4949
|
+
filter: "\u062A\u0635\u0641\u064A\u0629",
|
|
4950
|
+
sort: "\u062A\u0631\u062A\u064A\u0628",
|
|
4951
|
+
addRecord: "\u0625\u0636\u0627\u0641\u0629 \u0633\u062C\u0644",
|
|
4952
|
+
createRecord: "\u0625\u0646\u0634\u0627\u0621 \u0633\u062C\u0644",
|
|
4953
|
+
editRecord: "\u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0633\u062C\u0644",
|
|
4954
|
+
deleteRecord: "\u062D\u0630\u0641 \u0627\u0644\u0633\u062C\u0644",
|
|
4955
|
+
viewRecord: "\u0639\u0631\u0636 \u0627\u0644\u0633\u062C\u0644",
|
|
4956
|
+
recordDetails: "\u062A\u0641\u0627\u0635\u064A\u0644 \u0627\u0644\u0633\u062C\u0644",
|
|
4957
|
+
records: "\u0633\u062C\u0644\u0627\u062A",
|
|
4958
|
+
of: "\u0645\u0646",
|
|
4959
|
+
gridView: "\u0634\u0628\u0643\u0629",
|
|
4960
|
+
kanbanView: "\u0643\u0627\u0646\u0628\u0627\u0646",
|
|
4961
|
+
galleryView: "\u0645\u0639\u0631\u0636",
|
|
4962
|
+
calendarView: "\u062A\u0642\u0648\u064A\u0645",
|
|
4963
|
+
formView: "\u0646\u0645\u0648\u0630\u062C",
|
|
4964
|
+
title: "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
|
|
4965
|
+
description: "\u0627\u0644\u0648\u0635\u0641",
|
|
4966
|
+
status: "\u0627\u0644\u062D\u0627\u0644\u0629",
|
|
4967
|
+
priority: "\u0627\u0644\u0623\u0648\u0644\u0648\u064A\u0629",
|
|
4968
|
+
dueDate: "\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u0627\u0633\u062A\u062D\u0642\u0627\u0642",
|
|
4969
|
+
completed: "\u0645\u0643\u062A\u0645\u0644",
|
|
4970
|
+
primary: "\u0623\u0633\u0627\u0633\u064A",
|
|
4971
|
+
createNewRecord: "\u0625\u0646\u0634\u0627\u0621 \u0633\u062C\u0644 \u062C\u062F\u064A\u062F",
|
|
4972
|
+
enterDetails: "\u0623\u062F\u062E\u0644 \u062A\u0641\u0627\u0635\u064A\u0644 \u0627\u0644\u0633\u062C\u0644 \u0627\u0644\u062C\u062F\u064A\u062F.",
|
|
4973
|
+
modifyValues: "\u062A\u0639\u062F\u064A\u0644 \u0642\u064A\u0645 \u0647\u0630\u0627 \u0627\u0644\u0633\u062C\u0644.",
|
|
4974
|
+
viewData: "\u0639\u0631\u0636 \u0628\u064A\u0627\u0646\u0627\u062A \u0647\u0630\u0627 \u0627\u0644\u0633\u062C\u0644.",
|
|
4975
|
+
addNewRecord: "\u0625\u0636\u0627\u0641\u0629 \u0633\u062C\u0644 \u062C\u062F\u064A\u062F",
|
|
4976
|
+
sortBy: "\u062A\u0631\u062A\u064A\u0628 \u062D\u0633\u0628...",
|
|
4977
|
+
noSorting: "\u0628\u062F\u0648\u0646 \u062A\u0631\u062A\u064A\u0628",
|
|
4978
|
+
ascending: "\u2191 \u0623-\u064A",
|
|
4979
|
+
descending: "\u2193 \u064A-\u0623",
|
|
4980
|
+
filterBy: "\u062A\u0635\u0641\u064A\u0629 \u062D\u0633\u0628...",
|
|
4981
|
+
noFilter: "\u0628\u062F\u0648\u0646 \u062A\u0635\u0641\u064A\u0629",
|
|
4982
|
+
filterValue: "\u0642\u064A\u0645\u0629 \u0627\u0644\u062A\u0635\u0641\u064A\u0629...",
|
|
4983
|
+
selectValue: "\u0627\u062E\u062A\u0631 \u0642\u064A\u0645\u0629...",
|
|
4984
|
+
equals: "=",
|
|
4985
|
+
greater: ">",
|
|
4986
|
+
less: "<",
|
|
4987
|
+
greaterEqual: "\u2265",
|
|
4988
|
+
lessEqual: "\u2264",
|
|
4989
|
+
on: "\u0641\u064A",
|
|
4990
|
+
before: "\u0642\u0628\u0644",
|
|
4991
|
+
after: "\u0628\u0639\u062F",
|
|
4992
|
+
yes: "\u0646\u0639\u0645",
|
|
4993
|
+
no: "\u0644\u0627",
|
|
4994
|
+
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.",
|
|
4995
|
+
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.",
|
|
4996
|
+
uncategorized: "\u063A\u064A\u0631 \u0645\u0635\u0646\u0641",
|
|
4997
|
+
untitled: "\u0628\u062F\u0648\u0646 \u0639\u0646\u0648\u0627\u0646",
|
|
4998
|
+
event: "\u062D\u062F\u062B",
|
|
4999
|
+
none: "\u0644\u0627 \u0634\u064A\u0621",
|
|
5000
|
+
today: "\u0627\u0644\u064A\u0648\u0645",
|
|
5001
|
+
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",
|
|
5002
|
+
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"
|
|
5003
|
+
},
|
|
5004
|
+
hi: {
|
|
5005
|
+
add: "\u091C\u094B\u0921\u093C\u0947\u0902",
|
|
5006
|
+
edit: "\u0938\u0902\u092A\u093E\u0926\u093F\u0924 \u0915\u0930\u0947\u0902",
|
|
5007
|
+
delete: "\u0939\u091F\u093E\u090F\u0902",
|
|
5008
|
+
view: "\u0926\u0947\u0916\u0947\u0902",
|
|
5009
|
+
save: "\u0938\u0939\u0947\u091C\u0947\u0902",
|
|
5010
|
+
cancel: "\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902",
|
|
5011
|
+
close: "\u092C\u0902\u0926 \u0915\u0930\u0947\u0902",
|
|
5012
|
+
search: "\u0916\u094B\u091C\u0947\u0902",
|
|
5013
|
+
filter: "\u092B\u093C\u093F\u0932\u094D\u091F\u0930",
|
|
5014
|
+
sort: "\u0915\u094D\u0930\u092E\u092C\u0926\u094D\u0927 \u0915\u0930\u0947\u0902",
|
|
5015
|
+
addRecord: "\u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u091C\u094B\u0921\u093C\u0947\u0902",
|
|
5016
|
+
createRecord: "\u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u092C\u0928\u093E\u090F\u0902",
|
|
5017
|
+
editRecord: "\u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u0938\u0902\u092A\u093E\u0926\u093F\u0924 \u0915\u0930\u0947\u0902",
|
|
5018
|
+
deleteRecord: "\u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u0939\u091F\u093E\u090F\u0902",
|
|
5019
|
+
viewRecord: "\u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u0926\u0947\u0916\u0947\u0902",
|
|
5020
|
+
recordDetails: "\u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u0935\u093F\u0935\u0930\u0923",
|
|
5021
|
+
records: "\u0930\u093F\u0915\u0949\u0930\u094D\u0921",
|
|
5022
|
+
of: "\u092E\u0947\u0902 \u0938\u0947",
|
|
5023
|
+
gridView: "\u0917\u094D\u0930\u093F\u0921",
|
|
5024
|
+
kanbanView: "\u0915\u093E\u0928\u092C\u093E\u0928",
|
|
5025
|
+
galleryView: "\u0917\u0948\u0932\u0930\u0940",
|
|
5026
|
+
calendarView: "\u0915\u0948\u0932\u0947\u0902\u0921\u0930",
|
|
5027
|
+
formView: "\u092B\u0949\u0930\u094D\u092E",
|
|
5028
|
+
title: "\u0936\u0940\u0930\u094D\u0937\u0915",
|
|
5029
|
+
description: "\u0935\u093F\u0935\u0930\u0923",
|
|
5030
|
+
status: "\u0938\u094D\u0925\u093F\u0924\u093F",
|
|
5031
|
+
priority: "\u092A\u094D\u0930\u093E\u0925\u092E\u093F\u0915\u0924\u093E",
|
|
5032
|
+
dueDate: "\u0928\u093F\u092F\u0924 \u0924\u093E\u0930\u0940\u0916",
|
|
5033
|
+
completed: "\u092A\u0942\u0930\u094D\u0923",
|
|
5034
|
+
primary: "\u092A\u094D\u0930\u093E\u0925\u092E\u093F\u0915",
|
|
5035
|
+
createNewRecord: "\u0928\u092F\u093E \u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u092C\u0928\u093E\u090F\u0902",
|
|
5036
|
+
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",
|
|
5037
|
+
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",
|
|
5038
|
+
viewData: "\u0907\u0938 \u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u0915\u093E \u0921\u0947\u091F\u093E \u0926\u0947\u0916\u0947\u0902\u0964",
|
|
5039
|
+
addNewRecord: "\u0928\u092F\u093E \u0930\u093F\u0915\u0949\u0930\u094D\u0921 \u091C\u094B\u0921\u093C\u0947\u0902",
|
|
5040
|
+
sortBy: "\u0907\u0938\u0915\u0947 \u0905\u0928\u0941\u0938\u093E\u0930 \u0915\u094D\u0930\u092E\u092C\u0926\u094D\u0927 \u0915\u0930\u0947\u0902...",
|
|
5041
|
+
noSorting: "\u0915\u094B\u0908 \u0915\u094D\u0930\u092E\u092C\u0926\u094D\u0927\u0924\u093E \u0928\u0939\u0940\u0902",
|
|
5042
|
+
ascending: "\u2191 \u0905-\u0939",
|
|
5043
|
+
descending: "\u2193 \u0939-\u0905",
|
|
5044
|
+
filterBy: "\u0907\u0938\u0915\u0947 \u0905\u0928\u0941\u0938\u093E\u0930 \u092B\u093C\u093F\u0932\u094D\u091F\u0930 \u0915\u0930\u0947\u0902...",
|
|
5045
|
+
noFilter: "\u0915\u094B\u0908 \u092B\u093C\u093F\u0932\u094D\u091F\u0930 \u0928\u0939\u0940\u0902",
|
|
5046
|
+
filterValue: "\u092B\u093C\u093F\u0932\u094D\u091F\u0930 \u092E\u093E\u0928...",
|
|
5047
|
+
selectValue: "\u092E\u093E\u0928 \u091A\u0941\u0928\u0947\u0902...",
|
|
5048
|
+
equals: "=",
|
|
5049
|
+
greater: ">",
|
|
5050
|
+
less: "<",
|
|
5051
|
+
greaterEqual: "\u2265",
|
|
5052
|
+
lessEqual: "\u2264",
|
|
5053
|
+
on: "\u092A\u0930",
|
|
5054
|
+
before: "\u092A\u0939\u0932\u0947",
|
|
5055
|
+
after: "\u092C\u093E\u0926 \u092E\u0947\u0902",
|
|
5056
|
+
yes: "\u0939\u093E\u0902",
|
|
5057
|
+
no: "\u0928\u0939\u0940\u0902",
|
|
5058
|
+
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",
|
|
5059
|
+
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",
|
|
5060
|
+
uncategorized: "\u0905\u0935\u0930\u094D\u0917\u0940\u0915\u0943\u0924",
|
|
5061
|
+
untitled: "\u0936\u0940\u0930\u094D\u0937\u0915\u0939\u0940\u0928",
|
|
5062
|
+
event: "\u0918\u091F\u0928\u093E",
|
|
5063
|
+
none: "\u0915\u094B\u0908 \u0928\u0939\u0940\u0902",
|
|
5064
|
+
today: "\u0906\u091C",
|
|
5065
|
+
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",
|
|
5066
|
+
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"
|
|
5067
|
+
},
|
|
5068
|
+
fr: {
|
|
5069
|
+
add: "Ajouter",
|
|
5070
|
+
edit: "Modifier",
|
|
5071
|
+
delete: "Supprimer",
|
|
5072
|
+
view: "Voir",
|
|
5073
|
+
save: "Enregistrer",
|
|
5074
|
+
cancel: "Annuler",
|
|
5075
|
+
close: "Fermer",
|
|
5076
|
+
search: "Rechercher",
|
|
5077
|
+
filter: "Filtrer",
|
|
5078
|
+
sort: "Trier",
|
|
5079
|
+
addRecord: "Ajouter un Enregistrement",
|
|
5080
|
+
createRecord: "Cr\xE9er un Enregistrement",
|
|
5081
|
+
editRecord: "Modifier l'Enregistrement",
|
|
5082
|
+
deleteRecord: "Supprimer l'Enregistrement",
|
|
5083
|
+
viewRecord: "Voir l'Enregistrement",
|
|
5084
|
+
recordDetails: "D\xE9tails de l'Enregistrement",
|
|
5085
|
+
records: "enregistrements",
|
|
5086
|
+
of: "sur",
|
|
5087
|
+
gridView: "Grille",
|
|
5088
|
+
kanbanView: "Kanban",
|
|
5089
|
+
galleryView: "Galerie",
|
|
5090
|
+
calendarView: "Calendrier",
|
|
5091
|
+
formView: "Formulaire",
|
|
5092
|
+
title: "Titre",
|
|
5093
|
+
description: "Description",
|
|
5094
|
+
status: "Statut",
|
|
5095
|
+
priority: "Priorit\xE9",
|
|
5096
|
+
dueDate: "Date d'\xC9ch\xE9ance",
|
|
5097
|
+
completed: "Termin\xE9",
|
|
5098
|
+
primary: "Principal",
|
|
5099
|
+
createNewRecord: "Cr\xE9er un Nouvel Enregistrement",
|
|
5100
|
+
enterDetails: "Entrez les d\xE9tails du nouvel enregistrement.",
|
|
5101
|
+
modifyValues: "Modifiez les valeurs de cet enregistrement.",
|
|
5102
|
+
viewData: "Voir les donn\xE9es de cet enregistrement.",
|
|
5103
|
+
addNewRecord: "Ajouter un nouvel enregistrement",
|
|
5104
|
+
sortBy: "Trier par...",
|
|
5105
|
+
noSorting: "Aucun tri",
|
|
5106
|
+
ascending: "\u2191 A-Z",
|
|
5107
|
+
descending: "\u2193 Z-A",
|
|
5108
|
+
filterBy: "Filtrer par...",
|
|
5109
|
+
noFilter: "Aucun filtre",
|
|
5110
|
+
filterValue: "Valeur du filtre...",
|
|
5111
|
+
selectValue: "S\xE9lectionner une valeur...",
|
|
5112
|
+
equals: "=",
|
|
5113
|
+
greater: ">",
|
|
5114
|
+
less: "<",
|
|
5115
|
+
greaterEqual: "\u2265",
|
|
5116
|
+
lessEqual: "\u2264",
|
|
5117
|
+
on: "Le",
|
|
5118
|
+
before: "Avant",
|
|
5119
|
+
after: "Apr\xE8s",
|
|
5120
|
+
yes: "Oui",
|
|
5121
|
+
no: "Non",
|
|
5122
|
+
noDateField: "Aucun champ de date trouv\xE9 dans le sch\xE9ma. Ajoutez un champ de date pour activer la vue Calendrier.",
|
|
5123
|
+
noSelectField: "Aucun champ de s\xE9lection trouv\xE9 dans le sch\xE9ma. Ajoutez un champ de s\xE9lection pour activer la vue Kanban.",
|
|
5124
|
+
uncategorized: "Non cat\xE9goris\xE9",
|
|
5125
|
+
untitled: "Sans titre",
|
|
5126
|
+
event: "\xC9v\xE9nement",
|
|
5127
|
+
none: "Aucun",
|
|
5128
|
+
today: "Aujourd'hui",
|
|
5129
|
+
weekDays: "Dim,Lun,Mar,Mer,Jeu,Ven,Sam",
|
|
5130
|
+
monthNames: "Janvier,F\xE9vrier,Mars,Avril,Mai,Juin,Juillet,Ao\xFBt,Septembre,Octobre,Novembre,D\xE9cembre"
|
|
5131
|
+
},
|
|
5132
|
+
pt: {
|
|
5133
|
+
add: "Adicionar",
|
|
5134
|
+
edit: "Editar",
|
|
5135
|
+
delete: "Excluir",
|
|
5136
|
+
view: "Visualizar",
|
|
5137
|
+
save: "Salvar",
|
|
5138
|
+
cancel: "Cancelar",
|
|
5139
|
+
close: "Fechar",
|
|
5140
|
+
search: "Pesquisar",
|
|
5141
|
+
filter: "Filtrar",
|
|
5142
|
+
sort: "Ordenar",
|
|
5143
|
+
addRecord: "Adicionar Registro",
|
|
5144
|
+
createRecord: "Criar Registro",
|
|
5145
|
+
editRecord: "Editar Registro",
|
|
5146
|
+
deleteRecord: "Excluir Registro",
|
|
5147
|
+
viewRecord: "Visualizar Registro",
|
|
5148
|
+
recordDetails: "Detalhes do Registro",
|
|
5149
|
+
records: "registros",
|
|
5150
|
+
of: "de",
|
|
5151
|
+
gridView: "Grade",
|
|
5152
|
+
kanbanView: "Kanban",
|
|
5153
|
+
galleryView: "Galeria",
|
|
5154
|
+
calendarView: "Calend\xE1rio",
|
|
5155
|
+
formView: "Formul\xE1rio",
|
|
5156
|
+
title: "T\xEDtulo",
|
|
5157
|
+
description: "Descri\xE7\xE3o",
|
|
5158
|
+
status: "Status",
|
|
5159
|
+
priority: "Prioridade",
|
|
5160
|
+
dueDate: "Data de Vencimento",
|
|
5161
|
+
completed: "Conclu\xEDdo",
|
|
5162
|
+
primary: "Principal",
|
|
5163
|
+
createNewRecord: "Criar Novo Registro",
|
|
5164
|
+
enterDetails: "Insira os detalhes do novo registro.",
|
|
5165
|
+
modifyValues: "Modifique os valores deste registro.",
|
|
5166
|
+
viewData: "Visualize os dados deste registro.",
|
|
5167
|
+
addNewRecord: "Adicionar novo registro",
|
|
5168
|
+
sortBy: "Ordenar por...",
|
|
5169
|
+
noSorting: "Sem ordena\xE7\xE3o",
|
|
5170
|
+
ascending: "\u2191 A-Z",
|
|
5171
|
+
descending: "\u2193 Z-A",
|
|
5172
|
+
filterBy: "Filtrar por...",
|
|
5173
|
+
noFilter: "Sem filtro",
|
|
5174
|
+
filterValue: "Valor do filtro...",
|
|
5175
|
+
selectValue: "Selecionar valor...",
|
|
5176
|
+
equals: "=",
|
|
5177
|
+
greater: ">",
|
|
5178
|
+
less: "<",
|
|
5179
|
+
greaterEqual: "\u2265",
|
|
5180
|
+
lessEqual: "\u2264",
|
|
5181
|
+
on: "Em",
|
|
5182
|
+
before: "Antes",
|
|
5183
|
+
after: "Depois",
|
|
5184
|
+
yes: "Sim",
|
|
5185
|
+
no: "N\xE3o",
|
|
5186
|
+
noDateField: "Nenhum campo de data encontrado no esquema. Adicione um campo de data para ativar a visualiza\xE7\xE3o de Calend\xE1rio.",
|
|
5187
|
+
noSelectField: "Nenhum campo de sele\xE7\xE3o encontrado no esquema. Adicione um campo de sele\xE7\xE3o para ativar a visualiza\xE7\xE3o Kanban.",
|
|
5188
|
+
uncategorized: "Sem categoria",
|
|
5189
|
+
untitled: "Sem t\xEDtulo",
|
|
5190
|
+
event: "Evento",
|
|
5191
|
+
none: "Nenhum",
|
|
5192
|
+
today: "Hoje",
|
|
5193
|
+
weekDays: "Dom,Seg,Ter,Qua,Qui,Sex,S\xE1b",
|
|
5194
|
+
monthNames: "Janeiro,Fevereiro,Mar\xE7o,Abril,Maio,Junho,Julho,Agosto,Setembro,Outubro,Novembro,Dezembro"
|
|
5195
|
+
},
|
|
5196
|
+
ru: {
|
|
5197
|
+
add: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C",
|
|
5198
|
+
edit: "\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C",
|
|
5199
|
+
delete: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C",
|
|
5200
|
+
view: "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440",
|
|
5201
|
+
save: "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C",
|
|
5202
|
+
cancel: "\u041E\u0442\u043C\u0435\u043D\u0430",
|
|
5203
|
+
close: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C",
|
|
5204
|
+
search: "\u041F\u043E\u0438\u0441\u043A",
|
|
5205
|
+
filter: "\u0424\u0438\u043B\u044C\u0442\u0440",
|
|
5206
|
+
sort: "\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430",
|
|
5207
|
+
addRecord: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0417\u0430\u043F\u0438\u0441\u044C",
|
|
5208
|
+
createRecord: "\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0417\u0430\u043F\u0438\u0441\u044C",
|
|
5209
|
+
editRecord: "\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0417\u0430\u043F\u0438\u0441\u044C",
|
|
5210
|
+
deleteRecord: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0417\u0430\u043F\u0438\u0441\u044C",
|
|
5211
|
+
viewRecord: "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0417\u0430\u043F\u0438\u0441\u0438",
|
|
5212
|
+
recordDetails: "\u0414\u0435\u0442\u0430\u043B\u0438 \u0417\u0430\u043F\u0438\u0441\u0438",
|
|
5213
|
+
records: "\u0437\u0430\u043F\u0438\u0441\u0435\u0439",
|
|
5214
|
+
of: "\u0438\u0437",
|
|
5215
|
+
gridView: "\u0421\u0435\u0442\u043A\u0430",
|
|
5216
|
+
kanbanView: "\u041A\u0430\u043D\u0431\u0430\u043D",
|
|
5217
|
+
galleryView: "\u0413\u0430\u043B\u0435\u0440\u0435\u044F",
|
|
5218
|
+
calendarView: "\u041A\u0430\u043B\u0435\u043D\u0434\u0430\u0440\u044C",
|
|
5219
|
+
formView: "\u0424\u043E\u0440\u043C\u0430",
|
|
5220
|
+
title: "\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A",
|
|
5221
|
+
description: "\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435",
|
|
5222
|
+
status: "\u0421\u0442\u0430\u0442\u0443\u0441",
|
|
5223
|
+
priority: "\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442",
|
|
5224
|
+
dueDate: "\u0421\u0440\u043E\u043A",
|
|
5225
|
+
completed: "\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E",
|
|
5226
|
+
primary: "\u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439",
|
|
5227
|
+
createNewRecord: "\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u041D\u043E\u0432\u0443\u044E \u0417\u0430\u043F\u0438\u0441\u044C",
|
|
5228
|
+
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.",
|
|
5229
|
+
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.",
|
|
5230
|
+
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.",
|
|
5231
|
+
addNewRecord: "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u0437\u0430\u043F\u0438\u0441\u044C",
|
|
5232
|
+
sortBy: "\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E...",
|
|
5233
|
+
noSorting: "\u0411\u0435\u0437 \u0441\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0438",
|
|
5234
|
+
ascending: "\u2191 \u0410-\u042F",
|
|
5235
|
+
descending: "\u2193 \u042F-\u0410",
|
|
5236
|
+
filterBy: "\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E...",
|
|
5237
|
+
noFilter: "\u0411\u0435\u0437 \u0444\u0438\u043B\u044C\u0442\u0440\u0430",
|
|
5238
|
+
filterValue: "\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0444\u0438\u043B\u044C\u0442\u0440\u0430...",
|
|
5239
|
+
selectValue: "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435...",
|
|
5240
|
+
equals: "=",
|
|
5241
|
+
greater: ">",
|
|
5242
|
+
less: "<",
|
|
5243
|
+
greaterEqual: "\u2265",
|
|
5244
|
+
lessEqual: "\u2264",
|
|
5245
|
+
on: "\u0412",
|
|
5246
|
+
before: "\u0414\u043E",
|
|
5247
|
+
after: "\u041F\u043E\u0441\u043B\u0435",
|
|
5248
|
+
yes: "\u0414\u0430",
|
|
5249
|
+
no: "\u041D\u0435\u0442",
|
|
5250
|
+
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.",
|
|
5251
|
+
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.",
|
|
5252
|
+
uncategorized: "\u0411\u0435\u0437 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438",
|
|
5253
|
+
untitled: "\u0411\u0435\u0437 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u044F",
|
|
5254
|
+
event: "\u0421\u043E\u0431\u044B\u0442\u0438\u0435",
|
|
5255
|
+
none: "\u041D\u0435\u0442",
|
|
5256
|
+
today: "\u0421\u0435\u0433\u043E\u0434\u043D\u044F",
|
|
5257
|
+
weekDays: "\u0412\u0441,\u041F\u043D,\u0412\u0442,\u0421\u0440,\u0427\u0442,\u041F\u0442,\u0421\u0431",
|
|
5258
|
+
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"
|
|
5259
|
+
},
|
|
5260
|
+
de: {
|
|
5261
|
+
add: "Hinzuf\xFCgen",
|
|
5262
|
+
edit: "Bearbeiten",
|
|
5263
|
+
delete: "L\xF6schen",
|
|
5264
|
+
view: "Ansehen",
|
|
5265
|
+
save: "Speichern",
|
|
5266
|
+
cancel: "Abbrechen",
|
|
5267
|
+
close: "Schlie\xDFen",
|
|
5268
|
+
search: "Suchen",
|
|
5269
|
+
filter: "Filtern",
|
|
5270
|
+
sort: "Sortieren",
|
|
5271
|
+
addRecord: "Datensatz Hinzuf\xFCgen",
|
|
5272
|
+
createRecord: "Datensatz Erstellen",
|
|
5273
|
+
editRecord: "Datensatz Bearbeiten",
|
|
5274
|
+
deleteRecord: "Datensatz L\xF6schen",
|
|
5275
|
+
viewRecord: "Datensatz Ansehen",
|
|
5276
|
+
recordDetails: "Datensatz-Details",
|
|
5277
|
+
records: "Datens\xE4tze",
|
|
5278
|
+
of: "von",
|
|
5279
|
+
gridView: "Raster",
|
|
5280
|
+
kanbanView: "Kanban",
|
|
5281
|
+
galleryView: "Galerie",
|
|
5282
|
+
calendarView: "Kalender",
|
|
5283
|
+
formView: "Formular",
|
|
5284
|
+
title: "Titel",
|
|
5285
|
+
description: "Beschreibung",
|
|
5286
|
+
status: "Status",
|
|
5287
|
+
priority: "Priorit\xE4t",
|
|
5288
|
+
dueDate: "F\xE4lligkeitsdatum",
|
|
5289
|
+
completed: "Abgeschlossen",
|
|
5290
|
+
primary: "Prim\xE4r",
|
|
5291
|
+
createNewRecord: "Neuen Datensatz Erstellen",
|
|
5292
|
+
enterDetails: "Geben Sie die Details f\xFCr den neuen Datensatz ein.",
|
|
5293
|
+
modifyValues: "\xC4ndern Sie die Werte f\xFCr diesen Datensatz.",
|
|
5294
|
+
viewData: "Sehen Sie sich die Daten f\xFCr diesen Datensatz an.",
|
|
5295
|
+
addNewRecord: "Neuen Datensatz hinzuf\xFCgen",
|
|
5296
|
+
sortBy: "Sortieren nach...",
|
|
5297
|
+
noSorting: "Keine Sortierung",
|
|
5298
|
+
ascending: "\u2191 A-Z",
|
|
5299
|
+
descending: "\u2193 Z-A",
|
|
5300
|
+
filterBy: "Filtern nach...",
|
|
5301
|
+
noFilter: "Kein Filter",
|
|
5302
|
+
filterValue: "Filterwert...",
|
|
5303
|
+
selectValue: "Wert ausw\xE4hlen...",
|
|
5304
|
+
equals: "=",
|
|
5305
|
+
greater: ">",
|
|
5306
|
+
less: "<",
|
|
5307
|
+
greaterEqual: "\u2265",
|
|
5308
|
+
lessEqual: "\u2264",
|
|
5309
|
+
on: "Am",
|
|
5310
|
+
before: "Vor",
|
|
5311
|
+
after: "Nach",
|
|
5312
|
+
yes: "Ja",
|
|
5313
|
+
no: "Nein",
|
|
5314
|
+
noDateField: "Kein Datumsfeld im Schema gefunden. F\xFCgen Sie ein Datumsfeld hinzu, um die Kalenderansicht zu aktivieren.",
|
|
5315
|
+
noSelectField: "Kein Auswahlfeld im Schema gefunden. F\xFCgen Sie ein Auswahlfeld hinzu, um die Kanban-Ansicht zu aktivieren.",
|
|
5316
|
+
uncategorized: "Unkategorisiert",
|
|
5317
|
+
untitled: "Ohne Titel",
|
|
5318
|
+
event: "Ereignis",
|
|
5319
|
+
none: "Keine",
|
|
5320
|
+
today: "Heute",
|
|
5321
|
+
weekDays: "So,Mo,Di,Mi,Do,Fr,Sa",
|
|
5322
|
+
monthNames: "Januar,Februar,M\xE4rz,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember"
|
|
5323
|
+
},
|
|
5324
|
+
ja: {
|
|
5325
|
+
add: "\u8FFD\u52A0",
|
|
5326
|
+
edit: "\u7DE8\u96C6",
|
|
5327
|
+
delete: "\u524A\u9664",
|
|
5328
|
+
view: "\u8868\u793A",
|
|
5329
|
+
save: "\u4FDD\u5B58",
|
|
5330
|
+
cancel: "\u30AD\u30E3\u30F3\u30BB\u30EB",
|
|
5331
|
+
close: "\u9589\u3058\u308B",
|
|
5332
|
+
search: "\u691C\u7D22",
|
|
5333
|
+
filter: "\u30D5\u30A3\u30EB\u30BF\u30FC",
|
|
5334
|
+
sort: "\u4E26\u3079\u66FF\u3048",
|
|
5335
|
+
addRecord: "\u30EC\u30B3\u30FC\u30C9\u3092\u8FFD\u52A0",
|
|
5336
|
+
createRecord: "\u30EC\u30B3\u30FC\u30C9\u3092\u4F5C\u6210",
|
|
5337
|
+
editRecord: "\u30EC\u30B3\u30FC\u30C9\u3092\u7DE8\u96C6",
|
|
5338
|
+
deleteRecord: "\u30EC\u30B3\u30FC\u30C9\u3092\u524A\u9664",
|
|
5339
|
+
viewRecord: "\u30EC\u30B3\u30FC\u30C9\u3092\u8868\u793A",
|
|
5340
|
+
recordDetails: "\u30EC\u30B3\u30FC\u30C9\u306E\u8A73\u7D30",
|
|
5341
|
+
records: "\u4EF6\u306E\u30EC\u30B3\u30FC\u30C9",
|
|
5342
|
+
of: "/",
|
|
5343
|
+
gridView: "\u30B0\u30EA\u30C3\u30C9",
|
|
5344
|
+
kanbanView: "\u30AB\u30F3\u30D0\u30F3",
|
|
5345
|
+
galleryView: "\u30AE\u30E3\u30E9\u30EA\u30FC",
|
|
5346
|
+
calendarView: "\u30AB\u30EC\u30F3\u30C0\u30FC",
|
|
5347
|
+
formView: "\u30D5\u30A9\u30FC\u30E0",
|
|
5348
|
+
title: "\u30BF\u30A4\u30C8\u30EB",
|
|
5349
|
+
description: "\u8AAC\u660E",
|
|
5350
|
+
status: "\u30B9\u30C6\u30FC\u30BF\u30B9",
|
|
5351
|
+
priority: "\u512A\u5148\u5EA6",
|
|
5352
|
+
dueDate: "\u671F\u9650",
|
|
5353
|
+
completed: "\u5B8C\u4E86",
|
|
5354
|
+
primary: "\u30D7\u30E9\u30A4\u30DE\u30EA",
|
|
5355
|
+
createNewRecord: "\u65B0\u3057\u3044\u30EC\u30B3\u30FC\u30C9\u3092\u4F5C\u6210",
|
|
5356
|
+
enterDetails: "\u65B0\u3057\u3044\u30EC\u30B3\u30FC\u30C9\u306E\u8A73\u7D30\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
5357
|
+
modifyValues: "\u3053\u306E\u30EC\u30B3\u30FC\u30C9\u306E\u5024\u3092\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
5358
|
+
viewData: "\u3053\u306E\u30EC\u30B3\u30FC\u30C9\u306E\u30C7\u30FC\u30BF\u3092\u8868\u793A\u3057\u307E\u3059\u3002",
|
|
5359
|
+
addNewRecord: "\u65B0\u3057\u3044\u30EC\u30B3\u30FC\u30C9\u3092\u8FFD\u52A0",
|
|
5360
|
+
sortBy: "\u4E26\u3079\u66FF\u3048...",
|
|
5361
|
+
noSorting: "\u4E26\u3079\u66FF\u3048\u306A\u3057",
|
|
5362
|
+
ascending: "\u2191 \u3042-\u3093",
|
|
5363
|
+
descending: "\u2193 \u3093-\u3042",
|
|
5364
|
+
filterBy: "\u30D5\u30A3\u30EB\u30BF\u30FC...",
|
|
5365
|
+
noFilter: "\u30D5\u30A3\u30EB\u30BF\u30FC\u306A\u3057",
|
|
5366
|
+
filterValue: "\u30D5\u30A3\u30EB\u30BF\u30FC\u5024...",
|
|
5367
|
+
selectValue: "\u5024\u3092\u9078\u629E...",
|
|
5368
|
+
equals: "=",
|
|
5369
|
+
greater: ">",
|
|
5370
|
+
less: "<",
|
|
5371
|
+
greaterEqual: "\u2265",
|
|
5372
|
+
lessEqual: "\u2264",
|
|
5373
|
+
on: "\u65E5\u4ED8",
|
|
5374
|
+
before: "\u4EE5\u524D",
|
|
5375
|
+
after: "\u4EE5\u964D",
|
|
5376
|
+
yes: "\u306F\u3044",
|
|
5377
|
+
no: "\u3044\u3044\u3048",
|
|
5378
|
+
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",
|
|
5379
|
+
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",
|
|
5380
|
+
uncategorized: "\u672A\u5206\u985E",
|
|
5381
|
+
untitled: "\u7121\u984C",
|
|
5382
|
+
event: "\u30A4\u30D9\u30F3\u30C8",
|
|
5383
|
+
none: "\u306A\u3057",
|
|
5384
|
+
today: "\u4ECA\u65E5",
|
|
5385
|
+
weekDays: "\u65E5,\u6708,\u706B,\u6C34,\u6728,\u91D1,\u571F",
|
|
5386
|
+
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"
|
|
5387
|
+
}
|
|
3767
5388
|
};
|
|
5389
|
+
function getTranslation(lang, key) {
|
|
5390
|
+
var _a;
|
|
5391
|
+
return ((_a = translations[lang]) == null ? void 0 : _a[key]) || translations.en[key] || key;
|
|
5392
|
+
}
|
|
5393
|
+
function getDirection(lang) {
|
|
5394
|
+
var _a;
|
|
5395
|
+
return ((_a = LANGUAGES[lang]) == null ? void 0 : _a.dir) || "ltr";
|
|
5396
|
+
}
|
|
5397
|
+
|
|
5398
|
+
// src/components/I18nProvider.tsx
|
|
5399
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
5400
|
+
var I18nContext = (0, import_react.createContext)(void 0);
|
|
5401
|
+
function I18nProvider({
|
|
5402
|
+
lang = "en",
|
|
5403
|
+
children
|
|
5404
|
+
}) {
|
|
5405
|
+
const t = (key) => getTranslation(lang, key);
|
|
5406
|
+
const dir = getDirection(lang);
|
|
5407
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(I18nContext.Provider, { value: { lang, t, dir }, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { dir, className: "w-full h-full", children }) });
|
|
5408
|
+
}
|
|
5409
|
+
function useI18n() {
|
|
5410
|
+
const context = (0, import_react.useContext)(I18nContext);
|
|
5411
|
+
if (!context) {
|
|
5412
|
+
return {
|
|
5413
|
+
lang: "en",
|
|
5414
|
+
t: (key) => getTranslation("en", key),
|
|
5415
|
+
dir: "ltr"
|
|
5416
|
+
};
|
|
5417
|
+
}
|
|
5418
|
+
return context;
|
|
5419
|
+
}
|
|
5420
|
+
|
|
5421
|
+
// src/components/views/GridView.tsx
|
|
5422
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
3768
5423
|
function GridView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenModal }) {
|
|
5424
|
+
var _a;
|
|
5425
|
+
const { t } = useI18n();
|
|
5426
|
+
const [sortField, setSortField] = (0, import_react2.useState)("");
|
|
5427
|
+
const [sortDirection, setSortDirection] = (0, import_react2.useState)("asc");
|
|
5428
|
+
const [filterField, setFilterField] = (0, import_react2.useState)("");
|
|
5429
|
+
const [filterValue, setFilterValue] = (0, import_react2.useState)("");
|
|
5430
|
+
const [filterOperator, setFilterOperator] = (0, import_react2.useState)("contains");
|
|
5431
|
+
const selectedFilterField = (0, import_react2.useMemo)(() => {
|
|
5432
|
+
return schema.fields.find((f) => f.id === filterField);
|
|
5433
|
+
}, [filterField, schema.fields]);
|
|
5434
|
+
const processedRecords = (0, import_react2.useMemo)(() => {
|
|
5435
|
+
let filtered = [...records];
|
|
5436
|
+
if (filterField && filterValue) {
|
|
5437
|
+
filtered = filtered.filter((record) => {
|
|
5438
|
+
const value = record.fields[filterField];
|
|
5439
|
+
const field = schema.fields.find((f) => f.id === filterField);
|
|
5440
|
+
if (!field) return false;
|
|
5441
|
+
switch (field.type) {
|
|
5442
|
+
case "text":
|
|
5443
|
+
if (value == null) return false;
|
|
5444
|
+
return String(value).toLowerCase().includes(filterValue.toLowerCase());
|
|
5445
|
+
case "number":
|
|
5446
|
+
if (value == null) return false;
|
|
5447
|
+
const numValue = Number(value);
|
|
5448
|
+
const filterNum = Number(filterValue);
|
|
5449
|
+
switch (filterOperator) {
|
|
5450
|
+
case "equals":
|
|
5451
|
+
return numValue === filterNum;
|
|
5452
|
+
case "greater":
|
|
5453
|
+
return numValue > filterNum;
|
|
5454
|
+
case "less":
|
|
5455
|
+
return numValue < filterNum;
|
|
5456
|
+
case "greaterEqual":
|
|
5457
|
+
return numValue >= filterNum;
|
|
5458
|
+
case "lessEqual":
|
|
5459
|
+
return numValue <= filterNum;
|
|
5460
|
+
default:
|
|
5461
|
+
return false;
|
|
5462
|
+
}
|
|
5463
|
+
case "select":
|
|
5464
|
+
case "multiSelect":
|
|
5465
|
+
if (value == null) return false;
|
|
5466
|
+
if (Array.isArray(value)) {
|
|
5467
|
+
return value.includes(filterValue);
|
|
5468
|
+
}
|
|
5469
|
+
return value === filterValue;
|
|
5470
|
+
case "checkbox":
|
|
5471
|
+
return filterValue === "true" ? !!value : !value;
|
|
5472
|
+
case "date":
|
|
5473
|
+
if (value == null) return false;
|
|
5474
|
+
const recordDate = new Date(value);
|
|
5475
|
+
const filterDate = new Date(filterValue);
|
|
5476
|
+
switch (filterOperator) {
|
|
5477
|
+
case "before":
|
|
5478
|
+
return recordDate < filterDate;
|
|
5479
|
+
case "after":
|
|
5480
|
+
return recordDate > filterDate;
|
|
5481
|
+
case "equals":
|
|
5482
|
+
return recordDate.toDateString() === filterDate.toDateString();
|
|
5483
|
+
default:
|
|
5484
|
+
return false;
|
|
5485
|
+
}
|
|
5486
|
+
default:
|
|
5487
|
+
if (value == null) return false;
|
|
5488
|
+
return String(value).toLowerCase().includes(filterValue.toLowerCase());
|
|
5489
|
+
}
|
|
5490
|
+
});
|
|
5491
|
+
}
|
|
5492
|
+
if (sortField) {
|
|
5493
|
+
filtered.sort((a, b) => {
|
|
5494
|
+
const aVal = a.fields[sortField];
|
|
5495
|
+
const bVal = b.fields[sortField];
|
|
5496
|
+
if (aVal == null && bVal == null) return 0;
|
|
5497
|
+
if (aVal == null) return 1;
|
|
5498
|
+
if (bVal == null) return -1;
|
|
5499
|
+
let comparison = 0;
|
|
5500
|
+
if (typeof aVal === "number" && typeof bVal === "number") {
|
|
5501
|
+
comparison = aVal - bVal;
|
|
5502
|
+
} else {
|
|
5503
|
+
comparison = String(aVal).localeCompare(String(bVal));
|
|
5504
|
+
}
|
|
5505
|
+
return sortDirection === "asc" ? comparison : -comparison;
|
|
5506
|
+
});
|
|
5507
|
+
}
|
|
5508
|
+
return filtered;
|
|
5509
|
+
}, [records, sortField, sortDirection, filterField, filterValue, filterOperator, schema.fields]);
|
|
3769
5510
|
const renderCellValue = (record, field) => {
|
|
3770
|
-
var
|
|
5511
|
+
var _a2;
|
|
3771
5512
|
const value = record.fields[field.id];
|
|
3772
5513
|
switch (field.type) {
|
|
3773
5514
|
case "checkbox":
|
|
3774
|
-
return /* @__PURE__ */ (0,
|
|
5515
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
3775
5516
|
Checkbox,
|
|
3776
5517
|
{
|
|
3777
5518
|
checked: !!value,
|
|
@@ -3780,14 +5521,14 @@ function GridView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenModal
|
|
|
3780
5521
|
}
|
|
3781
5522
|
);
|
|
3782
5523
|
case "select":
|
|
3783
|
-
const option = (
|
|
3784
|
-
return value ? /* @__PURE__ */ (0,
|
|
5524
|
+
const option = (_a2 = field.options) == null ? void 0 : _a2.find((o) => o.name === value);
|
|
5525
|
+
return value ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Badge, { variant: "secondary", className: cn("font-normal", getBadgeColor(option == null ? void 0 : option.color)), children: value }) : null;
|
|
3785
5526
|
case "multiSelect":
|
|
3786
5527
|
const values = Array.isArray(value) ? value : [];
|
|
3787
|
-
return /* @__PURE__ */ (0,
|
|
3788
|
-
var
|
|
3789
|
-
const opt = (
|
|
3790
|
-
return /* @__PURE__ */ (0,
|
|
5528
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex flex-wrap gap-1", children: values.map((v) => {
|
|
5529
|
+
var _a3;
|
|
5530
|
+
const opt = (_a3 = field.options) == null ? void 0 : _a3.find((o) => o.name === v);
|
|
5531
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Badge, { variant: "secondary", className: cn("font-normal", getBadgeColor(opt == null ? void 0 : opt.color)), children: v }, v);
|
|
3791
5532
|
}) });
|
|
3792
5533
|
case "date":
|
|
3793
5534
|
return value ? new Date(value).toLocaleDateString() : null;
|
|
@@ -3797,93 +5538,225 @@ function GridView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenModal
|
|
|
3797
5538
|
return value;
|
|
3798
5539
|
}
|
|
3799
5540
|
};
|
|
3800
|
-
return /* @__PURE__ */ (0,
|
|
3801
|
-
/* @__PURE__ */ (0,
|
|
3802
|
-
/* @__PURE__ */ (0,
|
|
3803
|
-
/* @__PURE__ */ (0,
|
|
3804
|
-
|
|
3805
|
-
|
|
3806
|
-
|
|
3807
|
-
|
|
3808
|
-
/* @__PURE__ */ (0,
|
|
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
|
-
|
|
3834
|
-
|
|
3835
|
-
|
|
3836
|
-
|
|
3837
|
-
|
|
3838
|
-
|
|
3839
|
-
|
|
3840
|
-
|
|
3841
|
-
|
|
3842
|
-
|
|
3843
|
-
|
|
3844
|
-
|
|
3845
|
-
|
|
3846
|
-
|
|
3847
|
-
|
|
3848
|
-
|
|
3849
|
-
|
|
3850
|
-
|
|
3851
|
-
|
|
3852
|
-
|
|
3853
|
-
|
|
3854
|
-
|
|
3855
|
-
|
|
3856
|
-
|
|
3857
|
-
|
|
3858
|
-
|
|
3859
|
-
|
|
3860
|
-
|
|
3861
|
-
|
|
3862
|
-
|
|
3863
|
-
|
|
3864
|
-
|
|
3865
|
-
|
|
3866
|
-
|
|
3867
|
-
|
|
3868
|
-
|
|
3869
|
-
|
|
3870
|
-
|
|
5541
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "w-full grow overflow-hidden sm:pl-2 relative group flex flex-col h-full", children: [
|
|
5542
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "relative w-full h-full flex flex-col", children: [
|
|
5543
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex items-center gap-3 p-3 border-b bg-muted/30", children: [
|
|
5544
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Button, { onClick: () => onOpenModal("add"), className: "h-9", children: [
|
|
5545
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.Plus, { className: "h-4 w-4 mr-2" }),
|
|
5546
|
+
t("addRecord")
|
|
5547
|
+
] }),
|
|
5548
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "h-6 w-px bg-border" }),
|
|
5549
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
5550
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.ArrowUpDown, { className: "h-4 w-4 text-muted-foreground" }),
|
|
5551
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Select, { value: sortField || "none", onValueChange: (v) => setSortField(v === "none" ? "" : v), children: [
|
|
5552
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectTrigger, { className: "w-[180px] h-9", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectValue, { placeholder: t("sortBy") }) }),
|
|
5553
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(SelectContent, { children: [
|
|
5554
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: "none", children: t("noSorting") }),
|
|
5555
|
+
schema.fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: field.id, children: field.name }, field.id))
|
|
5556
|
+
] })
|
|
5557
|
+
] }),
|
|
5558
|
+
sortField && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
5559
|
+
Button,
|
|
5560
|
+
{
|
|
5561
|
+
variant: "outline",
|
|
5562
|
+
size: "sm",
|
|
5563
|
+
className: "h-9",
|
|
5564
|
+
onClick: () => setSortDirection(sortDirection === "asc" ? "desc" : "asc"),
|
|
5565
|
+
children: sortDirection === "asc" ? t("ascending") : t("descending")
|
|
5566
|
+
}
|
|
5567
|
+
)
|
|
5568
|
+
] }),
|
|
5569
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex items-center gap-2 flex-1", children: [
|
|
5570
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.Filter, { className: "h-4 w-4 text-muted-foreground" }),
|
|
5571
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Select, { value: filterField || "none", onValueChange: (v) => {
|
|
5572
|
+
const newField = v === "none" ? "" : v;
|
|
5573
|
+
setFilterField(newField);
|
|
5574
|
+
setFilterValue("");
|
|
5575
|
+
if (newField) {
|
|
5576
|
+
const field = schema.fields.find((f) => f.id === newField);
|
|
5577
|
+
if ((field == null ? void 0 : field.type) === "number") setFilterOperator("equals");
|
|
5578
|
+
else if ((field == null ? void 0 : field.type) === "date") setFilterOperator("equals");
|
|
5579
|
+
else setFilterOperator("contains");
|
|
5580
|
+
}
|
|
5581
|
+
}, children: [
|
|
5582
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectTrigger, { className: "w-[180px] h-9", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectValue, { placeholder: t("filterBy") }) }),
|
|
5583
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(SelectContent, { children: [
|
|
5584
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: "none", children: t("noFilter") }),
|
|
5585
|
+
schema.fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: field.id, children: field.name }, field.id))
|
|
5586
|
+
] })
|
|
5587
|
+
] }),
|
|
5588
|
+
filterField && selectedFilterField && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
5589
|
+
selectedFilterField.type === "number" && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
5590
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Select, { value: filterOperator, onValueChange: setFilterOperator, children: [
|
|
5591
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectTrigger, { className: "w-[120px] h-9", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectValue, {}) }),
|
|
5592
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(SelectContent, { children: [
|
|
5593
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: "equals", children: t("equals") }),
|
|
5594
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: "greater", children: t("greater") }),
|
|
5595
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: "less", children: t("less") }),
|
|
5596
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: "greaterEqual", children: t("greaterEqual") }),
|
|
5597
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: "lessEqual", children: t("lessEqual") })
|
|
5598
|
+
] })
|
|
5599
|
+
] }),
|
|
5600
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
5601
|
+
Input,
|
|
5602
|
+
{
|
|
5603
|
+
type: "number",
|
|
5604
|
+
placeholder: t("filterValue"),
|
|
5605
|
+
value: filterValue,
|
|
5606
|
+
onChange: (e) => setFilterValue(e.target.value),
|
|
5607
|
+
className: "w-[150px] h-9"
|
|
5608
|
+
}
|
|
5609
|
+
)
|
|
5610
|
+
] }),
|
|
5611
|
+
selectedFilterField.type === "date" && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
5612
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Select, { value: filterOperator, onValueChange: setFilterOperator, children: [
|
|
5613
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectTrigger, { className: "w-[120px] h-9", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectValue, {}) }),
|
|
5614
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(SelectContent, { children: [
|
|
5615
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: "equals", children: t("on") }),
|
|
5616
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: "before", children: t("before") }),
|
|
5617
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: "after", children: t("after") })
|
|
5618
|
+
] })
|
|
5619
|
+
] }),
|
|
5620
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
5621
|
+
Input,
|
|
5622
|
+
{
|
|
5623
|
+
type: "date",
|
|
5624
|
+
value: filterValue,
|
|
5625
|
+
onChange: (e) => setFilterValue(e.target.value),
|
|
5626
|
+
className: "w-[180px] h-9"
|
|
5627
|
+
}
|
|
5628
|
+
)
|
|
5629
|
+
] }),
|
|
5630
|
+
(selectedFilterField.type === "select" || selectedFilterField.type === "multiSelect") && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Select, { value: filterValue, onValueChange: setFilterValue, children: [
|
|
5631
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectTrigger, { className: "w-[200px] h-9", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectValue, { placeholder: t("selectValue") }) }),
|
|
5632
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectContent, { children: (_a = selectedFilterField.options) == null ? void 0 : _a.map((option) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: option.name, children: option.name }, option.id)) })
|
|
5633
|
+
] }),
|
|
5634
|
+
selectedFilterField.type === "checkbox" && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Select, { value: filterValue, onValueChange: setFilterValue, children: [
|
|
5635
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectTrigger, { className: "w-[150px] h-9", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectValue, { placeholder: t("selectValue") }) }),
|
|
5636
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(SelectContent, { children: [
|
|
5637
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: "true", children: t("yes") }),
|
|
5638
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: "false", children: t("no") })
|
|
5639
|
+
] })
|
|
5640
|
+
] }),
|
|
5641
|
+
selectedFilterField.type === "text" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
5642
|
+
Input,
|
|
5643
|
+
{
|
|
5644
|
+
placeholder: t("filterValue"),
|
|
5645
|
+
value: filterValue,
|
|
5646
|
+
onChange: (e) => setFilterValue(e.target.value),
|
|
5647
|
+
className: "w-[200px] h-9"
|
|
5648
|
+
}
|
|
5649
|
+
),
|
|
5650
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
5651
|
+
Button,
|
|
5652
|
+
{
|
|
5653
|
+
variant: "ghost",
|
|
5654
|
+
size: "sm",
|
|
5655
|
+
className: "h-9 w-9 p-0",
|
|
5656
|
+
onClick: () => {
|
|
5657
|
+
setFilterField("");
|
|
5658
|
+
setFilterValue("");
|
|
5659
|
+
setFilterOperator("contains");
|
|
5660
|
+
},
|
|
5661
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.X, { className: "h-4 w-4" })
|
|
5662
|
+
}
|
|
5663
|
+
)
|
|
5664
|
+
] })
|
|
5665
|
+
] }),
|
|
5666
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "text-sm text-muted-foreground", children: [
|
|
5667
|
+
processedRecords.length,
|
|
5668
|
+
" of ",
|
|
5669
|
+
records.length,
|
|
5670
|
+
" records"
|
|
5671
|
+
] })
|
|
5672
|
+
] }),
|
|
5673
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "w-full flex-1", style: { pointerEvents: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { "data-t-grid-container": "true", tabIndex: 0, className: "relative outline-none w-full h-full", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "w-full h-full overflow-auto pb-10", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Table, { children: [
|
|
5674
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableHeader, { className: "bg-muted/50 sticky top-0 z-10", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(TableRow, { children: [
|
|
5675
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableHead, { className: "w-12 text-muted-foreground", children: "#" }),
|
|
5676
|
+
schema.fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(TableHead, { className: "min-w-[150px]", children: [
|
|
5677
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "font-medium", children: field.name }),
|
|
5678
|
+
field.isPrimary && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Badge, { variant: "outline", className: "ml-2 text-xs", children: "Primary" })
|
|
5679
|
+
] }, field.id)),
|
|
5680
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableHead, { className: "w-[100px] text-right", children: "Actions" })
|
|
5681
|
+
] }) }),
|
|
5682
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(TableBody, { children: [
|
|
5683
|
+
processedRecords.map((record, index) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
5684
|
+
TableRow,
|
|
5685
|
+
{
|
|
5686
|
+
className: "group cursor-pointer hover:bg-muted/50",
|
|
5687
|
+
onClick: () => onOpenModal("view", record),
|
|
5688
|
+
children: [
|
|
5689
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableCell, { className: "text-muted-foreground tabular-nums", children: index + 1 }),
|
|
5690
|
+
schema.fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "min-h-[24px] flex items-center", children: renderCellValue(record, field) }) }, field.id)),
|
|
5691
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableCell, { className: "text-right", onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex justify-end gap-1 opacity-0 group-hover:opacity-100 transition-opacity", children: [
|
|
5692
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
5693
|
+
Button,
|
|
5694
|
+
{
|
|
5695
|
+
variant: "ghost",
|
|
5696
|
+
size: "icon",
|
|
5697
|
+
className: "h-8 w-8",
|
|
5698
|
+
onClick: () => onOpenModal("view", record),
|
|
5699
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.Eye, { className: "h-4 w-4" })
|
|
5700
|
+
}
|
|
5701
|
+
),
|
|
5702
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
5703
|
+
Button,
|
|
5704
|
+
{
|
|
5705
|
+
variant: "ghost",
|
|
5706
|
+
size: "icon",
|
|
5707
|
+
className: "h-8 w-8",
|
|
5708
|
+
onClick: () => onOpenModal("edit", record),
|
|
5709
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.Pencil, { className: "h-4 w-4" })
|
|
5710
|
+
}
|
|
5711
|
+
),
|
|
5712
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
5713
|
+
Button,
|
|
5714
|
+
{
|
|
5715
|
+
variant: "ghost",
|
|
5716
|
+
size: "icon",
|
|
5717
|
+
className: "h-8 w-8 text-muted-foreground hover:text-destructive",
|
|
5718
|
+
onClick: () => onDeleteRecord(record.id),
|
|
5719
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.Trash2, { className: "h-4 w-4" })
|
|
5720
|
+
}
|
|
5721
|
+
)
|
|
5722
|
+
] }) })
|
|
5723
|
+
]
|
|
5724
|
+
},
|
|
5725
|
+
record.id
|
|
5726
|
+
)),
|
|
5727
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableCell, { colSpan: schema.fields.length + 2, className: "p-0", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
5728
|
+
Button,
|
|
5729
|
+
{
|
|
5730
|
+
variant: "ghost",
|
|
5731
|
+
size: "sm",
|
|
5732
|
+
onClick: () => onOpenModal("add"),
|
|
5733
|
+
className: "w-full justify-start px-4 h-10 text-muted-foreground hover:text-foreground rounded-none",
|
|
5734
|
+
children: [
|
|
5735
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.Plus, { className: "h-4 w-4 mr-2" }),
|
|
5736
|
+
"Add new record"
|
|
5737
|
+
]
|
|
5738
|
+
}
|
|
5739
|
+
) }) })
|
|
5740
|
+
] })
|
|
5741
|
+
] }) }) }) })
|
|
5742
|
+
] }),
|
|
5743
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("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: [
|
|
3871
5744
|
records.length,
|
|
3872
5745
|
" records",
|
|
3873
|
-
/* @__PURE__ */ (0,
|
|
5746
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("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__ */ (0, import_jsx_runtime9.jsx)("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__ */ (0, import_jsx_runtime9.jsx)("path", { stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "m15 18-6-6 6-6" }) }) })
|
|
3874
5747
|
] })
|
|
3875
5748
|
] });
|
|
3876
5749
|
}
|
|
3877
5750
|
|
|
3878
5751
|
// src/components/views/FormView.tsx
|
|
3879
|
-
var
|
|
5752
|
+
var import_react4 = require("react");
|
|
3880
5753
|
|
|
3881
5754
|
// src/components/ui/card.tsx
|
|
3882
|
-
var
|
|
3883
|
-
var
|
|
3884
|
-
var Card =
|
|
5755
|
+
var React8 = __toESM(require("react"));
|
|
5756
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
5757
|
+
var Card = React8.forwardRef((_a, ref) => {
|
|
3885
5758
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3886
|
-
return /* @__PURE__ */ (0,
|
|
5759
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
3887
5760
|
"div",
|
|
3888
5761
|
__spreadValues({
|
|
3889
5762
|
ref,
|
|
@@ -3895,9 +5768,9 @@ var Card = React5.forwardRef((_a, ref) => {
|
|
|
3895
5768
|
);
|
|
3896
5769
|
});
|
|
3897
5770
|
Card.displayName = "Card";
|
|
3898
|
-
var CardHeader =
|
|
5771
|
+
var CardHeader = React8.forwardRef((_a, ref) => {
|
|
3899
5772
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3900
|
-
return /* @__PURE__ */ (0,
|
|
5773
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
3901
5774
|
"div",
|
|
3902
5775
|
__spreadValues({
|
|
3903
5776
|
ref,
|
|
@@ -3906,9 +5779,9 @@ var CardHeader = React5.forwardRef((_a, ref) => {
|
|
|
3906
5779
|
);
|
|
3907
5780
|
});
|
|
3908
5781
|
CardHeader.displayName = "CardHeader";
|
|
3909
|
-
var CardTitle =
|
|
5782
|
+
var CardTitle = React8.forwardRef((_a, ref) => {
|
|
3910
5783
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3911
|
-
return /* @__PURE__ */ (0,
|
|
5784
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
3912
5785
|
"div",
|
|
3913
5786
|
__spreadValues({
|
|
3914
5787
|
ref,
|
|
@@ -3917,9 +5790,9 @@ var CardTitle = React5.forwardRef((_a, ref) => {
|
|
|
3917
5790
|
);
|
|
3918
5791
|
});
|
|
3919
5792
|
CardTitle.displayName = "CardTitle";
|
|
3920
|
-
var CardDescription =
|
|
5793
|
+
var CardDescription = React8.forwardRef((_a, ref) => {
|
|
3921
5794
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3922
|
-
return /* @__PURE__ */ (0,
|
|
5795
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
3923
5796
|
"div",
|
|
3924
5797
|
__spreadValues({
|
|
3925
5798
|
ref,
|
|
@@ -3928,14 +5801,14 @@ var CardDescription = React5.forwardRef((_a, ref) => {
|
|
|
3928
5801
|
);
|
|
3929
5802
|
});
|
|
3930
5803
|
CardDescription.displayName = "CardDescription";
|
|
3931
|
-
var CardContent =
|
|
5804
|
+
var CardContent = React8.forwardRef((_a, ref) => {
|
|
3932
5805
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3933
|
-
return /* @__PURE__ */ (0,
|
|
5806
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", __spreadValues({ ref, className: cn("p-6 pt-0", className) }, props));
|
|
3934
5807
|
});
|
|
3935
5808
|
CardContent.displayName = "CardContent";
|
|
3936
|
-
var CardFooter =
|
|
5809
|
+
var CardFooter = React8.forwardRef((_a, ref) => {
|
|
3937
5810
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3938
|
-
return /* @__PURE__ */ (0,
|
|
5811
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
3939
5812
|
"div",
|
|
3940
5813
|
__spreadValues({
|
|
3941
5814
|
ref,
|
|
@@ -3946,9 +5819,9 @@ var CardFooter = React5.forwardRef((_a, ref) => {
|
|
|
3946
5819
|
CardFooter.displayName = "CardFooter";
|
|
3947
5820
|
|
|
3948
5821
|
// src/components/ui/alert.tsx
|
|
3949
|
-
var
|
|
5822
|
+
var React9 = __toESM(require("react"));
|
|
3950
5823
|
var import_class_variance_authority3 = require("class-variance-authority");
|
|
3951
|
-
var
|
|
5824
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
3952
5825
|
var alertVariants = (0, import_class_variance_authority3.cva)(
|
|
3953
5826
|
"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",
|
|
3954
5827
|
{
|
|
@@ -3963,9 +5836,9 @@ var alertVariants = (0, import_class_variance_authority3.cva)(
|
|
|
3963
5836
|
}
|
|
3964
5837
|
}
|
|
3965
5838
|
);
|
|
3966
|
-
var Alert =
|
|
5839
|
+
var Alert = React9.forwardRef((_a, ref) => {
|
|
3967
5840
|
var _b = _a, { className, variant } = _b, props = __objRest(_b, ["className", "variant"]);
|
|
3968
|
-
return /* @__PURE__ */ (0,
|
|
5841
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
3969
5842
|
"div",
|
|
3970
5843
|
__spreadValues({
|
|
3971
5844
|
ref,
|
|
@@ -3975,9 +5848,9 @@ var Alert = React6.forwardRef((_a, ref) => {
|
|
|
3975
5848
|
);
|
|
3976
5849
|
});
|
|
3977
5850
|
Alert.displayName = "Alert";
|
|
3978
|
-
var AlertTitle =
|
|
5851
|
+
var AlertTitle = React9.forwardRef((_a, ref) => {
|
|
3979
5852
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3980
|
-
return /* @__PURE__ */ (0,
|
|
5853
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
3981
5854
|
"h5",
|
|
3982
5855
|
__spreadValues({
|
|
3983
5856
|
ref,
|
|
@@ -3986,202 +5859,50 @@ var AlertTitle = React6.forwardRef((_a, ref) => {
|
|
|
3986
5859
|
);
|
|
3987
5860
|
});
|
|
3988
5861
|
AlertTitle.displayName = "AlertTitle";
|
|
3989
|
-
var AlertDescription =
|
|
3990
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3991
|
-
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
3992
|
-
"div",
|
|
3993
|
-
__spreadValues({
|
|
3994
|
-
ref,
|
|
3995
|
-
className: cn("text-sm [&_p]:leading-relaxed", className)
|
|
3996
|
-
}, props)
|
|
3997
|
-
);
|
|
3998
|
-
});
|
|
3999
|
-
AlertDescription.displayName = "AlertDescription";
|
|
4000
|
-
|
|
4001
|
-
// src/components/views/FormView.tsx
|
|
4002
|
-
var import_lucide_react4 = require("lucide-react");
|
|
4003
|
-
|
|
4004
|
-
// src/components/RecordForm.tsx
|
|
4005
|
-
var import_react = require("react");
|
|
4006
|
-
|
|
4007
|
-
// src/components/ui/input.tsx
|
|
4008
|
-
var React7 = __toESM(require("react"));
|
|
4009
|
-
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
4010
|
-
var Input = React7.forwardRef(
|
|
4011
|
-
(_a, ref) => {
|
|
4012
|
-
var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
|
|
4013
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
4014
|
-
"input",
|
|
4015
|
-
__spreadValues({
|
|
4016
|
-
type,
|
|
4017
|
-
className: cn(
|
|
4018
|
-
"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",
|
|
4019
|
-
className
|
|
4020
|
-
),
|
|
4021
|
-
ref
|
|
4022
|
-
}, props)
|
|
4023
|
-
);
|
|
4024
|
-
}
|
|
4025
|
-
);
|
|
4026
|
-
Input.displayName = "Input";
|
|
4027
|
-
|
|
4028
|
-
// src/components/ui/label.tsx
|
|
4029
|
-
var React8 = __toESM(require("react"));
|
|
4030
|
-
var LabelPrimitive = __toESM(require("@radix-ui/react-label"));
|
|
4031
|
-
var import_class_variance_authority4 = require("class-variance-authority");
|
|
4032
|
-
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
4033
|
-
var labelVariants = (0, import_class_variance_authority4.cva)(
|
|
4034
|
-
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
4035
|
-
);
|
|
4036
|
-
var Label = React8.forwardRef((_a, ref) => {
|
|
4037
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4038
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4039
|
-
LabelPrimitive.Root,
|
|
4040
|
-
__spreadValues({
|
|
4041
|
-
ref,
|
|
4042
|
-
className: cn(labelVariants(), className)
|
|
4043
|
-
}, props)
|
|
4044
|
-
);
|
|
4045
|
-
});
|
|
4046
|
-
Label.displayName = LabelPrimitive.Root.displayName;
|
|
4047
|
-
|
|
4048
|
-
// src/components/ui/select.tsx
|
|
4049
|
-
var React9 = __toESM(require("react"));
|
|
4050
|
-
var SelectPrimitive = __toESM(require("@radix-ui/react-select"));
|
|
4051
|
-
var import_lucide_react3 = require("lucide-react");
|
|
4052
|
-
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
4053
|
-
var Select = SelectPrimitive.Root;
|
|
4054
|
-
var SelectValue = SelectPrimitive.Value;
|
|
4055
|
-
var SelectTrigger = React9.forwardRef((_a, ref) => {
|
|
4056
|
-
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
4057
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
4058
|
-
SelectPrimitive.Trigger,
|
|
4059
|
-
__spreadProps(__spreadValues({
|
|
4060
|
-
ref,
|
|
4061
|
-
className: cn(
|
|
4062
|
-
"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",
|
|
4063
|
-
className
|
|
4064
|
-
)
|
|
4065
|
-
}, props), {
|
|
4066
|
-
children: [
|
|
4067
|
-
children,
|
|
4068
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react3.ChevronDown, { className: "h-4 w-4 opacity-50" }) })
|
|
4069
|
-
]
|
|
4070
|
-
})
|
|
4071
|
-
);
|
|
4072
|
-
});
|
|
4073
|
-
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
4074
|
-
var SelectScrollUpButton = React9.forwardRef((_a, ref) => {
|
|
4075
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4076
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
4077
|
-
SelectPrimitive.ScrollUpButton,
|
|
4078
|
-
__spreadProps(__spreadValues({
|
|
4079
|
-
ref,
|
|
4080
|
-
className: cn(
|
|
4081
|
-
"flex cursor-default items-center justify-center py-1",
|
|
4082
|
-
className
|
|
4083
|
-
)
|
|
4084
|
-
}, props), {
|
|
4085
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react3.ChevronUp, { className: "h-4 w-4" })
|
|
4086
|
-
})
|
|
4087
|
-
);
|
|
4088
|
-
});
|
|
4089
|
-
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
4090
|
-
var SelectScrollDownButton = React9.forwardRef((_a, ref) => {
|
|
4091
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4092
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
4093
|
-
SelectPrimitive.ScrollDownButton,
|
|
4094
|
-
__spreadProps(__spreadValues({
|
|
4095
|
-
ref,
|
|
4096
|
-
className: cn(
|
|
4097
|
-
"flex cursor-default items-center justify-center py-1",
|
|
4098
|
-
className
|
|
4099
|
-
)
|
|
4100
|
-
}, props), {
|
|
4101
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react3.ChevronDown, { className: "h-4 w-4" })
|
|
4102
|
-
})
|
|
4103
|
-
);
|
|
4104
|
-
});
|
|
4105
|
-
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
4106
|
-
var SelectContent = React9.forwardRef((_a, ref) => {
|
|
4107
|
-
var _b = _a, { className, children, position = "popper" } = _b, props = __objRest(_b, ["className", "children", "position"]);
|
|
4108
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
4109
|
-
SelectPrimitive.Content,
|
|
4110
|
-
__spreadProps(__spreadValues({
|
|
4111
|
-
ref,
|
|
4112
|
-
className: cn(
|
|
4113
|
-
"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]",
|
|
4114
|
-
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",
|
|
4115
|
-
className
|
|
4116
|
-
),
|
|
4117
|
-
position
|
|
4118
|
-
}, props), {
|
|
4119
|
-
children: [
|
|
4120
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SelectScrollUpButton, {}),
|
|
4121
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
4122
|
-
SelectPrimitive.Viewport,
|
|
4123
|
-
{
|
|
4124
|
-
className: cn(
|
|
4125
|
-
"p-1",
|
|
4126
|
-
position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
|
|
4127
|
-
),
|
|
4128
|
-
children
|
|
4129
|
-
}
|
|
4130
|
-
),
|
|
4131
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SelectScrollDownButton, {})
|
|
4132
|
-
]
|
|
4133
|
-
})
|
|
4134
|
-
) });
|
|
4135
|
-
});
|
|
4136
|
-
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
4137
|
-
var SelectLabel = React9.forwardRef((_a, ref) => {
|
|
4138
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4139
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
4140
|
-
SelectPrimitive.Label,
|
|
4141
|
-
__spreadValues({
|
|
4142
|
-
ref,
|
|
4143
|
-
className: cn("px-2 py-1.5 text-sm font-semibold", className)
|
|
4144
|
-
}, props)
|
|
4145
|
-
);
|
|
4146
|
-
});
|
|
4147
|
-
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
4148
|
-
var SelectItem = React9.forwardRef((_a, ref) => {
|
|
4149
|
-
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
4150
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
4151
|
-
SelectPrimitive.Item,
|
|
4152
|
-
__spreadProps(__spreadValues({
|
|
4153
|
-
ref,
|
|
4154
|
-
className: cn(
|
|
4155
|
-
"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",
|
|
4156
|
-
className
|
|
4157
|
-
)
|
|
4158
|
-
}, props), {
|
|
4159
|
-
children: [
|
|
4160
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react3.Check, { className: "h-4 w-4" }) }) }),
|
|
4161
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SelectPrimitive.ItemText, { children })
|
|
4162
|
-
]
|
|
4163
|
-
})
|
|
4164
|
-
);
|
|
4165
|
-
});
|
|
4166
|
-
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
4167
|
-
var SelectSeparator = React9.forwardRef((_a, ref) => {
|
|
5862
|
+
var AlertDescription = React9.forwardRef((_a, ref) => {
|
|
4168
5863
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4169
5864
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
4170
|
-
|
|
5865
|
+
"div",
|
|
4171
5866
|
__spreadValues({
|
|
4172
5867
|
ref,
|
|
4173
|
-
className: cn("-
|
|
5868
|
+
className: cn("text-sm [&_p]:leading-relaxed", className)
|
|
4174
5869
|
}, props)
|
|
4175
5870
|
);
|
|
4176
5871
|
});
|
|
4177
|
-
|
|
5872
|
+
AlertDescription.displayName = "AlertDescription";
|
|
4178
5873
|
|
|
4179
|
-
// src/components/
|
|
5874
|
+
// src/components/views/FormView.tsx
|
|
5875
|
+
var import_lucide_react4 = require("lucide-react");
|
|
5876
|
+
|
|
5877
|
+
// src/components/RecordForm.tsx
|
|
5878
|
+
var import_react3 = require("react");
|
|
5879
|
+
|
|
5880
|
+
// src/components/ui/label.tsx
|
|
4180
5881
|
var React10 = __toESM(require("react"));
|
|
5882
|
+
var LabelPrimitive = __toESM(require("@radix-ui/react-label"));
|
|
5883
|
+
var import_class_variance_authority4 = require("class-variance-authority");
|
|
4181
5884
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
4182
|
-
var
|
|
5885
|
+
var labelVariants = (0, import_class_variance_authority4.cva)(
|
|
5886
|
+
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
5887
|
+
);
|
|
5888
|
+
var Label2 = React10.forwardRef((_a, ref) => {
|
|
4183
5889
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4184
5890
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
5891
|
+
LabelPrimitive.Root,
|
|
5892
|
+
__spreadValues({
|
|
5893
|
+
ref,
|
|
5894
|
+
className: cn(labelVariants(), className)
|
|
5895
|
+
}, props)
|
|
5896
|
+
);
|
|
5897
|
+
});
|
|
5898
|
+
Label2.displayName = LabelPrimitive.Root.displayName;
|
|
5899
|
+
|
|
5900
|
+
// src/components/ui/textarea.tsx
|
|
5901
|
+
var React11 = __toESM(require("react"));
|
|
5902
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
5903
|
+
var Textarea = React11.forwardRef((_a, ref) => {
|
|
5904
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5905
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
4185
5906
|
"textarea",
|
|
4186
5907
|
__spreadValues({
|
|
4187
5908
|
className: cn(
|
|
@@ -4195,19 +5916,12 @@ var Textarea = React10.forwardRef((_a, ref) => {
|
|
|
4195
5916
|
Textarea.displayName = "Textarea";
|
|
4196
5917
|
|
|
4197
5918
|
// src/components/RecordForm.tsx
|
|
4198
|
-
var
|
|
4199
|
-
var COLOR_MAP = {
|
|
4200
|
-
gray: "bg-muted",
|
|
4201
|
-
blue: "bg-blue-500",
|
|
4202
|
-
green: "bg-green-500",
|
|
4203
|
-
yellow: "bg-amber-500",
|
|
4204
|
-
red: "bg-red-500",
|
|
4205
|
-
purple: "bg-purple-500"
|
|
4206
|
-
};
|
|
5919
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
4207
5920
|
var DEFAULT_INITIAL_VALUES = {};
|
|
4208
5921
|
function RecordForm({ schema, initialValues = DEFAULT_INITIAL_VALUES, onSubmit, mode }) {
|
|
4209
|
-
const
|
|
4210
|
-
(0,
|
|
5922
|
+
const { t } = useI18n();
|
|
5923
|
+
const [formData, setFormData] = (0, import_react3.useState)(initialValues);
|
|
5924
|
+
(0, import_react3.useEffect)(() => {
|
|
4211
5925
|
setFormData(initialValues);
|
|
4212
5926
|
}, [initialValues]);
|
|
4213
5927
|
const handleChange = (fieldId, value) => {
|
|
@@ -4220,44 +5934,44 @@ function RecordForm({ schema, initialValues = DEFAULT_INITIAL_VALUES, onSubmit,
|
|
|
4220
5934
|
};
|
|
4221
5935
|
const isReadOnly = mode === "view";
|
|
4222
5936
|
const renderField = (field) => {
|
|
4223
|
-
var _a, _b, _c;
|
|
5937
|
+
var _a, _b, _c, _d;
|
|
4224
5938
|
const value = (_a = formData[field.id]) != null ? _a : "";
|
|
4225
5939
|
if (field.id === "description" || field.type === "text" && field.name.toLowerCase().includes("description")) {
|
|
4226
|
-
return /* @__PURE__ */ (0,
|
|
5940
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
4227
5941
|
Textarea,
|
|
4228
5942
|
{
|
|
4229
5943
|
value,
|
|
4230
5944
|
disabled: isReadOnly,
|
|
4231
5945
|
onChange: (e) => handleChange(field.id, e.target.value),
|
|
4232
|
-
placeholder: isReadOnly ? "" :
|
|
5946
|
+
placeholder: isReadOnly ? "" : `${t("enterDetails")}...`,
|
|
4233
5947
|
className: "min-h-[100px] resize-none"
|
|
4234
5948
|
}
|
|
4235
5949
|
);
|
|
4236
5950
|
}
|
|
4237
5951
|
switch (field.type) {
|
|
4238
5952
|
case "text":
|
|
4239
|
-
return /* @__PURE__ */ (0,
|
|
5953
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
4240
5954
|
Input,
|
|
4241
5955
|
{
|
|
4242
5956
|
value,
|
|
4243
5957
|
disabled: isReadOnly,
|
|
4244
5958
|
onChange: (e) => handleChange(field.id, e.target.value),
|
|
4245
|
-
placeholder: isReadOnly ? "" :
|
|
5959
|
+
placeholder: isReadOnly ? "" : `${t("add")} ${field.name}...`
|
|
4246
5960
|
}
|
|
4247
5961
|
);
|
|
4248
5962
|
case "number":
|
|
4249
|
-
return /* @__PURE__ */ (0,
|
|
5963
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
4250
5964
|
Input,
|
|
4251
5965
|
{
|
|
4252
5966
|
type: "number",
|
|
4253
5967
|
value,
|
|
4254
5968
|
disabled: isReadOnly,
|
|
4255
5969
|
onChange: (e) => handleChange(field.id, e.target.value),
|
|
4256
|
-
placeholder: isReadOnly ? "" :
|
|
5970
|
+
placeholder: isReadOnly ? "" : `${t("add")} ${field.name}...`
|
|
4257
5971
|
}
|
|
4258
5972
|
);
|
|
4259
5973
|
case "date":
|
|
4260
|
-
return /* @__PURE__ */ (0,
|
|
5974
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
4261
5975
|
Input,
|
|
4262
5976
|
{
|
|
4263
5977
|
type: "date",
|
|
@@ -4267,8 +5981,8 @@ function RecordForm({ schema, initialValues = DEFAULT_INITIAL_VALUES, onSubmit,
|
|
|
4267
5981
|
}
|
|
4268
5982
|
);
|
|
4269
5983
|
case "checkbox":
|
|
4270
|
-
return /* @__PURE__ */ (0,
|
|
4271
|
-
/* @__PURE__ */ (0,
|
|
5984
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
5985
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
4272
5986
|
Checkbox,
|
|
4273
5987
|
{
|
|
4274
5988
|
id: field.id,
|
|
@@ -4277,28 +5991,33 @@ function RecordForm({ schema, initialValues = DEFAULT_INITIAL_VALUES, onSubmit,
|
|
|
4277
5991
|
onCheckedChange: (checked) => handleChange(field.id, checked)
|
|
4278
5992
|
}
|
|
4279
5993
|
),
|
|
4280
|
-
/* @__PURE__ */ (0,
|
|
5994
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Label2, { htmlFor: field.id, className: "cursor-pointer text-sm", children: value ? t("yes") : t("no") })
|
|
4281
5995
|
] });
|
|
4282
5996
|
case "select":
|
|
4283
5997
|
if (isReadOnly) {
|
|
4284
|
-
|
|
5998
|
+
if (!value) return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "text-muted-foreground text-sm", children: t("none") });
|
|
5999
|
+
const option = (_b = field.options) == null ? void 0 : _b.find((o) => o.name === value);
|
|
6000
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("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: [
|
|
6001
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: cn("w-2 h-2 rounded-full", getDotColor(option == null ? void 0 : option.color)) }),
|
|
6002
|
+
value
|
|
6003
|
+
] });
|
|
4285
6004
|
}
|
|
4286
|
-
return /* @__PURE__ */ (0,
|
|
4287
|
-
/* @__PURE__ */ (0,
|
|
4288
|
-
/* @__PURE__ */ (0,
|
|
4289
|
-
/* @__PURE__ */ (0,
|
|
6005
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Select, { value, onValueChange: (v) => handleChange(field.id, v), children: [
|
|
6006
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SelectTrigger, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SelectValue, { placeholder: t("selectValue") }) }),
|
|
6007
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SelectContent, { children: (_c = field.options) == null ? void 0 : _c.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SelectItem, { value: opt.name, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
6008
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: cn("w-2 h-2 rounded-full", getDotColor(opt.color)) }),
|
|
4290
6009
|
opt.name
|
|
4291
6010
|
] }) }, opt.id)) })
|
|
4292
6011
|
] });
|
|
4293
6012
|
case "multiSelect":
|
|
4294
6013
|
const selectedValues = Array.isArray(value) ? value : [];
|
|
4295
6014
|
if (isReadOnly) {
|
|
4296
|
-
return /* @__PURE__ */ (0,
|
|
4297
|
-
selectedValues.map((v) => /* @__PURE__ */ (0,
|
|
4298
|
-
selectedValues.length === 0 && /* @__PURE__ */ (0,
|
|
6015
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex flex-wrap gap-1", children: [
|
|
6016
|
+
selectedValues.map((v) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Badge, { variant: "secondary", children: v }, v)),
|
|
6017
|
+
selectedValues.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "text-muted-foreground text-sm", children: t("none") })
|
|
4299
6018
|
] });
|
|
4300
6019
|
}
|
|
4301
|
-
return /* @__PURE__ */ (0,
|
|
6020
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "flex flex-wrap gap-2", children: (_d = field.options) == null ? void 0 : _d.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
4302
6021
|
Badge,
|
|
4303
6022
|
{
|
|
4304
6023
|
variant: selectedValues.includes(opt.name) ? "default" : "outline",
|
|
@@ -4312,49 +6031,49 @@ function RecordForm({ schema, initialValues = DEFAULT_INITIAL_VALUES, onSubmit,
|
|
|
4312
6031
|
opt.id
|
|
4313
6032
|
)) });
|
|
4314
6033
|
default:
|
|
4315
|
-
return /* @__PURE__ */ (0,
|
|
6034
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
4316
6035
|
Input,
|
|
4317
6036
|
{
|
|
4318
6037
|
value,
|
|
4319
6038
|
disabled: isReadOnly,
|
|
4320
6039
|
onChange: (e) => handleChange(field.id, e.target.value),
|
|
4321
|
-
placeholder: isReadOnly ? "" :
|
|
6040
|
+
placeholder: isReadOnly ? "" : `${t("add")} ${field.name}...`
|
|
4322
6041
|
}
|
|
4323
6042
|
);
|
|
4324
6043
|
}
|
|
4325
6044
|
};
|
|
4326
|
-
return /* @__PURE__ */ (0,
|
|
4327
|
-
schema.fields.map((field) => /* @__PURE__ */ (0,
|
|
4328
|
-
/* @__PURE__ */ (0,
|
|
6045
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("form", { id: "record-form", onSubmit: handleSubmit, className: "space-y-5", children: [
|
|
6046
|
+
schema.fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "space-y-3", children: [
|
|
6047
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Label2, { className: "text-sm font-medium mb-2 block", children: [
|
|
4329
6048
|
field.name,
|
|
4330
|
-
field.isPrimary && /* @__PURE__ */ (0,
|
|
6049
|
+
field.isPrimary && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Badge, { variant: "outline", className: "ml-2 text-xs", children: t("primary") })
|
|
4331
6050
|
] }),
|
|
4332
6051
|
renderField(field)
|
|
4333
6052
|
] }, field.id)),
|
|
4334
|
-
mode !== "view" && /* @__PURE__ */ (0,
|
|
6053
|
+
mode !== "view" && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "flex justify-end pt-4 border-t", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Button, { type: "submit", children: mode === "add" ? t("createRecord") : t("save") }) })
|
|
4335
6054
|
] });
|
|
4336
6055
|
}
|
|
4337
6056
|
|
|
4338
6057
|
// src/components/views/FormView.tsx
|
|
4339
|
-
var
|
|
6058
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
4340
6059
|
function FormView({ schema, onCreateRecord }) {
|
|
4341
|
-
const [success, setSuccess] = (0,
|
|
6060
|
+
const [success, setSuccess] = (0, import_react4.useState)(false);
|
|
4342
6061
|
const handleSubmit = (formData) => {
|
|
4343
6062
|
onCreateRecord(formData);
|
|
4344
6063
|
setSuccess(true);
|
|
4345
6064
|
setTimeout(() => setSuccess(false), 3e3);
|
|
4346
6065
|
};
|
|
4347
|
-
return /* @__PURE__ */ (0,
|
|
4348
|
-
/* @__PURE__ */ (0,
|
|
4349
|
-
/* @__PURE__ */ (0,
|
|
4350
|
-
/* @__PURE__ */ (0,
|
|
6066
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "h-full overflow-auto p-8 bg-muted/30", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "max-w-xl mx-auto", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Card, { children: [
|
|
6067
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(CardHeader, { children: [
|
|
6068
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(CardTitle, { children: "Add New Record" }),
|
|
6069
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(CardDescription, { children: "Fill out the form below to add a new entry to the database." })
|
|
4351
6070
|
] }),
|
|
4352
|
-
/* @__PURE__ */ (0,
|
|
4353
|
-
success && /* @__PURE__ */ (0,
|
|
4354
|
-
/* @__PURE__ */ (0,
|
|
4355
|
-
/* @__PURE__ */ (0,
|
|
6071
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(CardContent, { children: [
|
|
6072
|
+
success && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(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: [
|
|
6073
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react4.CheckCircle2, { className: "h-4 w-4" }),
|
|
6074
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(AlertDescription, { children: "Record created successfully!" })
|
|
4356
6075
|
] }),
|
|
4357
|
-
/* @__PURE__ */ (0,
|
|
6076
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
4358
6077
|
RecordForm,
|
|
4359
6078
|
{
|
|
4360
6079
|
schema,
|
|
@@ -4367,156 +6086,17 @@ function FormView({ schema, onCreateRecord }) {
|
|
|
4367
6086
|
}
|
|
4368
6087
|
|
|
4369
6088
|
// src/components/views/KanbanView.tsx
|
|
4370
|
-
var
|
|
4371
|
-
var
|
|
4372
|
-
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
4373
|
-
var BADGE_COLOR_MAP2 = {
|
|
4374
|
-
gray: "bg-muted text-muted-foreground hover:bg-muted/80",
|
|
4375
|
-
blue: "bg-blue-100 text-blue-700 dark:bg-blue-900/50 dark:text-blue-300 hover:bg-blue-100/80",
|
|
4376
|
-
green: "bg-green-100 text-green-700 dark:bg-green-900/50 dark:text-green-300 hover:bg-green-100/80",
|
|
4377
|
-
yellow: "bg-amber-100 text-amber-700 dark:bg-amber-900/50 dark:text-amber-300 hover:bg-amber-100/80",
|
|
4378
|
-
red: "bg-red-100 text-red-700 dark:bg-red-900/50 dark:text-red-300 hover:bg-red-100/80",
|
|
4379
|
-
purple: "bg-purple-100 text-purple-700 dark:bg-purple-900/50 dark:text-purple-300 hover:bg-purple-100/80"
|
|
4380
|
-
};
|
|
4381
|
-
var COLUMN_DOT_COLOR_MAP = {
|
|
4382
|
-
gray: "bg-gray-400",
|
|
4383
|
-
blue: "bg-blue-500",
|
|
4384
|
-
green: "bg-green-500",
|
|
4385
|
-
yellow: "bg-amber-500",
|
|
4386
|
-
red: "bg-red-500",
|
|
4387
|
-
purple: "bg-purple-500"
|
|
4388
|
-
};
|
|
4389
|
-
var FIELD_ICON_MAP = {
|
|
4390
|
-
text: import_lucide_react5.AlignLeft,
|
|
4391
|
-
number: import_lucide_react5.Hash,
|
|
4392
|
-
select: import_lucide_react5.Tag,
|
|
4393
|
-
multiSelect: import_lucide_react5.Tags,
|
|
4394
|
-
date: import_lucide_react5.Calendar,
|
|
4395
|
-
checkbox: import_lucide_react5.CheckSquare,
|
|
4396
|
-
user: import_lucide_react5.User
|
|
4397
|
-
};
|
|
4398
|
-
function KanbanView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenModal }) {
|
|
4399
|
-
const [draggedRecord, setDraggedRecord] = (0, import_react3.useState)(null);
|
|
4400
|
-
const selectField = getSelectField(schema);
|
|
4401
|
-
const primaryField = getPrimaryField(schema);
|
|
4402
|
-
const columns = (0, import_react3.useMemo)(() => {
|
|
4403
|
-
if (!(selectField == null ? void 0 : selectField.options)) return [];
|
|
4404
|
-
return [
|
|
4405
|
-
{ id: "__empty__", name: "Uncategorized", color: "gray" },
|
|
4406
|
-
...selectField.options
|
|
4407
|
-
];
|
|
4408
|
-
}, [selectField]);
|
|
4409
|
-
const recordsByColumn = (0, import_react3.useMemo)(() => {
|
|
4410
|
-
const grouped = {};
|
|
4411
|
-
columns.forEach((col) => {
|
|
4412
|
-
grouped[col.id] = [];
|
|
4413
|
-
});
|
|
4414
|
-
records.forEach((record) => {
|
|
4415
|
-
var _a, _b;
|
|
4416
|
-
if (!selectField) return;
|
|
4417
|
-
const value = record.fields[selectField.id];
|
|
4418
|
-
const option = (_a = selectField.options) == null ? void 0 : _a.find((o) => o.name === value);
|
|
4419
|
-
const colId = (option == null ? void 0 : option.id) || "__empty__";
|
|
4420
|
-
(_b = grouped[colId]) == null ? void 0 : _b.push(record);
|
|
4421
|
-
});
|
|
4422
|
-
return grouped;
|
|
4423
|
-
}, [records, columns, selectField]);
|
|
4424
|
-
const handleDragOver = (e) => {
|
|
4425
|
-
e.preventDefault();
|
|
4426
|
-
};
|
|
4427
|
-
const handleDrop = (columnId) => {
|
|
4428
|
-
if (!draggedRecord || !selectField) return;
|
|
4429
|
-
const column = columns.find((c) => c.id === columnId);
|
|
4430
|
-
const value = columnId === "__empty__" ? "" : (column == null ? void 0 : column.name) || "";
|
|
4431
|
-
onUpdateRecord(draggedRecord, { [selectField.id]: value });
|
|
4432
|
-
setDraggedRecord(null);
|
|
4433
|
-
};
|
|
4434
|
-
if (!selectField) {
|
|
4435
|
-
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("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." });
|
|
4436
|
-
}
|
|
4437
|
-
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "w-full grow overflow-hidden bg-background", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "relative w-full h-full overflow-x-auto overflow-y-hidden p-2", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex h-full", children: columns.map((column) => {
|
|
4438
|
-
var _a, _b;
|
|
4439
|
-
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "h-full pr-4", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "w-[264px] h-full border bg-muted rounded-md shrink-0 flex flex-col overflow-hidden", children: [
|
|
4440
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex h-12 w-full shrink-0 items-center justify-between border-b bg-card px-4", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center space-x-2 overflow-hidden text-muted-foreground", children: [
|
|
4441
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: cn("w-2 h-2 rounded-full shrink-0", COLUMN_DOT_COLOR_MAP[column.color || "gray"]) }),
|
|
4442
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-sm font-semibold truncate", children: column.name }),
|
|
4443
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "rounded-xl border px-2 text-xs", children: ((_a = recordsByColumn[column.id]) == null ? void 0 : _a.length) || 0 })
|
|
4444
|
-
] }) }) }),
|
|
4445
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
4446
|
-
"div",
|
|
4447
|
-
{
|
|
4448
|
-
className: "flex-1 w-full overflow-y-auto min-h-0",
|
|
4449
|
-
onDragOver: handleDragOver,
|
|
4450
|
-
onDrop: () => handleDrop(column.id),
|
|
4451
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex flex-col pt-3 pb-3", children: (_b = recordsByColumn[column.id]) == null ? void 0 : _b.map((record) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "w-full px-3 mb-2", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
4452
|
-
"div",
|
|
4453
|
-
{
|
|
4454
|
-
draggable: true,
|
|
4455
|
-
onDragStart: () => setDraggedRecord(record.id),
|
|
4456
|
-
onClick: () => onOpenModal("view", record),
|
|
4457
|
-
className: cn(
|
|
4458
|
-
"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",
|
|
4459
|
-
draggedRecord === record.id && "opacity-50 ring-2 ring-primary"
|
|
4460
|
-
),
|
|
4461
|
-
children: [
|
|
4462
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "text-base font-semibold", children: primaryField ? record.fields[primaryField.id] || "Untitled" : "Untitled" }),
|
|
4463
|
-
schema.fields.filter((f) => !f.isPrimary && f.id !== selectField.id).map((field) => {
|
|
4464
|
-
const value = record.fields[field.id];
|
|
4465
|
-
if (value === void 0 || value === null || value === "" || value === false) return null;
|
|
4466
|
-
const Icon2 = FIELD_ICON_MAP[field.type] || import_lucide_react5.AlignLeft;
|
|
4467
|
-
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { children: [
|
|
4468
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "mb-1 flex items-center space-x-1 text-muted-foreground", children: [
|
|
4469
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Icon2, { className: "w-4 h-4 text-sm" }),
|
|
4470
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-xs", children: field.name })
|
|
4471
|
-
] }),
|
|
4472
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "w-full text-[13px] leading-5 breaking-all line-clamp-6", children: field.type === "select" ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex gap-1 flex-wrap", children: (() => {
|
|
4473
|
-
var _a2;
|
|
4474
|
-
const option = (_a2 = field.options) == null ? void 0 : _a2.find((o) => o.name === value);
|
|
4475
|
-
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
4476
|
-
"div",
|
|
4477
|
-
{
|
|
4478
|
-
className: cn(
|
|
4479
|
-
"text-xs px-2 h-5 rounded-md flex items-center gap-1 min-w-0 truncate",
|
|
4480
|
-
BADGE_COLOR_MAP2[(option == null ? void 0 : option.color) || "gray"]
|
|
4481
|
-
),
|
|
4482
|
-
title: String(value),
|
|
4483
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "min-w-0 truncate", children: String(value) })
|
|
4484
|
-
}
|
|
4485
|
-
);
|
|
4486
|
-
})() }) : field.type === "checkbox" ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex gap-1 flex-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: cn(
|
|
4487
|
-
"flex items-center justify-center w-5 h-5 rounded-sm border border-primary shadow bg-primary text-primary-foreground"
|
|
4488
|
-
), children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react5.CheckSquare, { className: "h-4 w-4" }) }) }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { title: String(value), className: "whitespace-pre-wrap break-all", children: String(value) }) })
|
|
4489
|
-
] }, field.id);
|
|
4490
|
-
})
|
|
4491
|
-
]
|
|
4492
|
-
}
|
|
4493
|
-
) }, record.id)) })
|
|
4494
|
-
}
|
|
4495
|
-
),
|
|
4496
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex items-center justify-center rounded-b-md bg-slate-50 px-3 py-2 dark:bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
4497
|
-
Button,
|
|
4498
|
-
{
|
|
4499
|
-
variant: "outline",
|
|
4500
|
-
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",
|
|
4501
|
-
onClick: () => onOpenModal("add"),
|
|
4502
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react5.Plus, { className: "w-5 h-5" })
|
|
4503
|
-
}
|
|
4504
|
-
) })
|
|
4505
|
-
] }) }, column.id);
|
|
4506
|
-
}) }) }) });
|
|
4507
|
-
}
|
|
4508
|
-
|
|
4509
|
-
// src/components/views/GalleryView.tsx
|
|
4510
|
-
var import_lucide_react7 = require("lucide-react");
|
|
6089
|
+
var import_react5 = require("react");
|
|
6090
|
+
var import_lucide_react6 = require("lucide-react");
|
|
4511
6091
|
|
|
4512
6092
|
// src/components/ui/dropdown-menu.tsx
|
|
4513
|
-
var
|
|
6093
|
+
var React12 = __toESM(require("react"));
|
|
4514
6094
|
var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"));
|
|
4515
|
-
var
|
|
6095
|
+
var import_lucide_react5 = require("lucide-react");
|
|
4516
6096
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
4517
6097
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
4518
6098
|
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
4519
|
-
var DropdownMenuSubTrigger =
|
|
6099
|
+
var DropdownMenuSubTrigger = React12.forwardRef((_a, ref) => {
|
|
4520
6100
|
var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
|
|
4521
6101
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
4522
6102
|
DropdownMenuPrimitive.SubTrigger,
|
|
@@ -4530,13 +6110,13 @@ var DropdownMenuSubTrigger = React11.forwardRef((_a, ref) => {
|
|
|
4530
6110
|
}, props), {
|
|
4531
6111
|
children: [
|
|
4532
6112
|
children,
|
|
4533
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
6113
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react5.ChevronRight, { className: "ml-auto" })
|
|
4534
6114
|
]
|
|
4535
6115
|
})
|
|
4536
6116
|
);
|
|
4537
6117
|
});
|
|
4538
6118
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
4539
|
-
var DropdownMenuSubContent =
|
|
6119
|
+
var DropdownMenuSubContent = React12.forwardRef((_a, ref) => {
|
|
4540
6120
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4541
6121
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
4542
6122
|
DropdownMenuPrimitive.SubContent,
|
|
@@ -4550,7 +6130,7 @@ var DropdownMenuSubContent = React11.forwardRef((_a, ref) => {
|
|
|
4550
6130
|
);
|
|
4551
6131
|
});
|
|
4552
6132
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
4553
|
-
var DropdownMenuContent =
|
|
6133
|
+
var DropdownMenuContent = React12.forwardRef((_a, ref) => {
|
|
4554
6134
|
var _b = _a, { className, sideOffset = 4 } = _b, props = __objRest(_b, ["className", "sideOffset"]);
|
|
4555
6135
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
4556
6136
|
DropdownMenuPrimitive.Content,
|
|
@@ -4566,7 +6146,7 @@ var DropdownMenuContent = React11.forwardRef((_a, ref) => {
|
|
|
4566
6146
|
) });
|
|
4567
6147
|
});
|
|
4568
6148
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
4569
|
-
var DropdownMenuItem =
|
|
6149
|
+
var DropdownMenuItem = React12.forwardRef((_a, ref) => {
|
|
4570
6150
|
var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
|
|
4571
6151
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
4572
6152
|
DropdownMenuPrimitive.Item,
|
|
@@ -4581,7 +6161,7 @@ var DropdownMenuItem = React11.forwardRef((_a, ref) => {
|
|
|
4581
6161
|
);
|
|
4582
6162
|
});
|
|
4583
6163
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
4584
|
-
var DropdownMenuCheckboxItem =
|
|
6164
|
+
var DropdownMenuCheckboxItem = React12.forwardRef((_a, ref) => {
|
|
4585
6165
|
var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
|
|
4586
6166
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
4587
6167
|
DropdownMenuPrimitive.CheckboxItem,
|
|
@@ -4594,14 +6174,14 @@ var DropdownMenuCheckboxItem = React11.forwardRef((_a, ref) => {
|
|
|
4594
6174
|
checked
|
|
4595
6175
|
}, props), {
|
|
4596
6176
|
children: [
|
|
4597
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
6177
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react5.Check, { className: "h-4 w-4" }) }) }),
|
|
4598
6178
|
children
|
|
4599
6179
|
]
|
|
4600
6180
|
})
|
|
4601
6181
|
);
|
|
4602
6182
|
});
|
|
4603
6183
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
4604
|
-
var DropdownMenuRadioItem =
|
|
6184
|
+
var DropdownMenuRadioItem = React12.forwardRef((_a, ref) => {
|
|
4605
6185
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
4606
6186
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
4607
6187
|
DropdownMenuPrimitive.RadioItem,
|
|
@@ -4613,14 +6193,14 @@ var DropdownMenuRadioItem = React11.forwardRef((_a, ref) => {
|
|
|
4613
6193
|
)
|
|
4614
6194
|
}, props), {
|
|
4615
6195
|
children: [
|
|
4616
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
6196
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react5.Circle, { className: "h-2 w-2 fill-current" }) }) }),
|
|
4617
6197
|
children
|
|
4618
6198
|
]
|
|
4619
6199
|
})
|
|
4620
6200
|
);
|
|
4621
6201
|
});
|
|
4622
6202
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
4623
|
-
var DropdownMenuLabel =
|
|
6203
|
+
var DropdownMenuLabel = React12.forwardRef((_a, ref) => {
|
|
4624
6204
|
var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
|
|
4625
6205
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
4626
6206
|
DropdownMenuPrimitive.Label,
|
|
@@ -4635,7 +6215,7 @@ var DropdownMenuLabel = React11.forwardRef((_a, ref) => {
|
|
|
4635
6215
|
);
|
|
4636
6216
|
});
|
|
4637
6217
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
4638
|
-
var DropdownMenuSeparator =
|
|
6218
|
+
var DropdownMenuSeparator = React12.forwardRef((_a, ref) => {
|
|
4639
6219
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4640
6220
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
4641
6221
|
DropdownMenuPrimitive.Separator,
|
|
@@ -4661,62 +6241,273 @@ var DropdownMenuShortcut = (_a) => {
|
|
|
4661
6241
|
};
|
|
4662
6242
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
4663
6243
|
|
|
4664
|
-
// src/components/views/
|
|
6244
|
+
// src/components/views/KanbanView.tsx
|
|
4665
6245
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
6246
|
+
var FIELD_ICON_MAP = {
|
|
6247
|
+
text: import_lucide_react6.AlignLeft,
|
|
6248
|
+
number: import_lucide_react6.Hash,
|
|
6249
|
+
select: import_lucide_react6.Tag,
|
|
6250
|
+
multiSelect: import_lucide_react6.Tags,
|
|
6251
|
+
date: import_lucide_react6.Calendar,
|
|
6252
|
+
checkbox: import_lucide_react6.CheckSquare,
|
|
6253
|
+
user: import_lucide_react6.User
|
|
6254
|
+
};
|
|
6255
|
+
function KanbanView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenModal }) {
|
|
6256
|
+
const [draggedRecord, setDraggedRecord] = (0, import_react5.useState)(null);
|
|
6257
|
+
const { t } = useI18n();
|
|
6258
|
+
const selectField = getSelectField(schema);
|
|
6259
|
+
const primaryField = getPrimaryField(schema);
|
|
6260
|
+
const columns = (0, import_react5.useMemo)(() => {
|
|
6261
|
+
var _a, _b;
|
|
6262
|
+
if (!selectField) return [];
|
|
6263
|
+
const groups = {
|
|
6264
|
+
"uncategorized": []
|
|
6265
|
+
};
|
|
6266
|
+
(_a = selectField.options) == null ? void 0 : _a.forEach((opt) => {
|
|
6267
|
+
groups[opt.name] = [];
|
|
6268
|
+
});
|
|
6269
|
+
records.forEach((record) => {
|
|
6270
|
+
const value = record.fields[selectField.id];
|
|
6271
|
+
if (value && groups[value]) {
|
|
6272
|
+
groups[value].push(record);
|
|
6273
|
+
} else {
|
|
6274
|
+
groups["uncategorized"].push(record);
|
|
6275
|
+
}
|
|
6276
|
+
});
|
|
6277
|
+
return [
|
|
6278
|
+
...((_b = selectField.options) == null ? void 0 : _b.map((opt) => ({
|
|
6279
|
+
id: opt.name,
|
|
6280
|
+
name: opt.name,
|
|
6281
|
+
color: opt.color,
|
|
6282
|
+
records: groups[opt.name] || []
|
|
6283
|
+
}))) || [],
|
|
6284
|
+
{
|
|
6285
|
+
id: "uncategorized",
|
|
6286
|
+
name: t("uncategorized"),
|
|
6287
|
+
color: "gray",
|
|
6288
|
+
records: groups["uncategorized"]
|
|
6289
|
+
}
|
|
6290
|
+
];
|
|
6291
|
+
}, [selectField, records, t]);
|
|
6292
|
+
const recordsByColumn = (0, import_react5.useMemo)(() => {
|
|
6293
|
+
const grouped = {};
|
|
6294
|
+
columns.forEach((col) => {
|
|
6295
|
+
grouped[col.id] = col.records;
|
|
6296
|
+
});
|
|
6297
|
+
return grouped;
|
|
6298
|
+
}, [columns]);
|
|
6299
|
+
const handleDragOver = (e) => {
|
|
6300
|
+
e.preventDefault();
|
|
6301
|
+
};
|
|
6302
|
+
const handleDrop = (columnId) => {
|
|
6303
|
+
if (!draggedRecord || !selectField) return;
|
|
6304
|
+
const column = columns.find((c) => c.id === columnId);
|
|
6305
|
+
const value = columnId === "__empty__" ? "" : (column == null ? void 0 : column.name) || "";
|
|
6306
|
+
onUpdateRecord(draggedRecord, { [selectField.id]: value });
|
|
6307
|
+
setDraggedRecord(null);
|
|
6308
|
+
};
|
|
6309
|
+
if (!selectField) {
|
|
6310
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("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." });
|
|
6311
|
+
}
|
|
6312
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "w-full grow overflow-hidden bg-background", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "relative w-full h-full overflow-x-auto overflow-y-hidden p-2", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex h-full", children: columns.map((column) => {
|
|
6313
|
+
var _a, _b;
|
|
6314
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "h-full pr-4", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "w-[264px] h-full border bg-muted rounded-md shrink-0 flex flex-col overflow-hidden", children: [
|
|
6315
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex h-12 w-full shrink-0 items-center justify-between border-b bg-card px-4", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex items-center space-x-2 overflow-hidden text-muted-foreground", children: [
|
|
6316
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: cn("w-2 h-2 rounded-full shrink-0", getDotColor(column.color)) }),
|
|
6317
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "text-sm font-semibold truncate", children: column.name }),
|
|
6318
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "rounded-xl border px-2 text-xs", children: ((_a = recordsByColumn[column.id]) == null ? void 0 : _a.length) || 0 })
|
|
6319
|
+
] }) }) }),
|
|
6320
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
6321
|
+
"div",
|
|
6322
|
+
{
|
|
6323
|
+
className: "flex-1 w-full overflow-y-auto min-h-0",
|
|
6324
|
+
onDragOver: handleDragOver,
|
|
6325
|
+
onDrop: () => handleDrop(column.id),
|
|
6326
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex flex-col pt-3 pb-3", children: (_b = recordsByColumn[column.id]) == null ? void 0 : _b.map((record) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "w-full px-3 mb-2", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
6327
|
+
"div",
|
|
6328
|
+
{
|
|
6329
|
+
draggable: true,
|
|
6330
|
+
onDragStart: () => setDraggedRecord(record.id),
|
|
6331
|
+
className: cn(
|
|
6332
|
+
"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",
|
|
6333
|
+
draggedRecord === record.id && "opacity-50 ring-2 ring-primary"
|
|
6334
|
+
),
|
|
6335
|
+
children: [
|
|
6336
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
|
|
6337
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
6338
|
+
"div",
|
|
6339
|
+
{
|
|
6340
|
+
className: "text-base font-semibold flex-1 min-w-0",
|
|
6341
|
+
onClick: () => onOpenModal("view", record),
|
|
6342
|
+
children: primaryField ? record.fields[primaryField.id] || t("untitled") : t("untitled")
|
|
6343
|
+
}
|
|
6344
|
+
),
|
|
6345
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(DropdownMenu, { children: [
|
|
6346
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(DropdownMenuTrigger, { asChild: true, onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
6347
|
+
Button,
|
|
6348
|
+
{
|
|
6349
|
+
variant: "ghost",
|
|
6350
|
+
size: "icon",
|
|
6351
|
+
className: "h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity shrink-0",
|
|
6352
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react6.MoreHorizontal, { className: "h-4 w-4" })
|
|
6353
|
+
}
|
|
6354
|
+
) }),
|
|
6355
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(DropdownMenuContent, { align: "end", onClick: (e) => e.stopPropagation(), children: [
|
|
6356
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(DropdownMenuItem, { onClick: (e) => {
|
|
6357
|
+
e.stopPropagation();
|
|
6358
|
+
onOpenModal("view", record);
|
|
6359
|
+
}, children: [
|
|
6360
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react6.Eye, { className: "h-4 w-4 mr-2" }),
|
|
6361
|
+
t("view")
|
|
6362
|
+
] }),
|
|
6363
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(DropdownMenuItem, { onClick: (e) => {
|
|
6364
|
+
e.stopPropagation();
|
|
6365
|
+
onOpenModal("edit", record);
|
|
6366
|
+
}, children: [
|
|
6367
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react6.Pencil, { className: "h-4 w-4 mr-2" }),
|
|
6368
|
+
t("edit")
|
|
6369
|
+
] }),
|
|
6370
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
6371
|
+
DropdownMenuItem,
|
|
6372
|
+
{
|
|
6373
|
+
className: "text-destructive focus:text-destructive",
|
|
6374
|
+
onClick: (e) => {
|
|
6375
|
+
e.stopPropagation();
|
|
6376
|
+
onDeleteRecord(record.id);
|
|
6377
|
+
},
|
|
6378
|
+
children: [
|
|
6379
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react6.Trash2, { className: "h-4 w-4 mr-2" }),
|
|
6380
|
+
t("delete")
|
|
6381
|
+
]
|
|
6382
|
+
}
|
|
6383
|
+
)
|
|
6384
|
+
] })
|
|
6385
|
+
] })
|
|
6386
|
+
] }),
|
|
6387
|
+
schema.fields.filter((f) => !f.isPrimary && f.id !== selectField.id).map((field) => {
|
|
6388
|
+
const value = record.fields[field.id];
|
|
6389
|
+
if (value === void 0 || value === null || value === "" || value === false) return null;
|
|
6390
|
+
const Icon2 = FIELD_ICON_MAP[field.type] || import_lucide_react6.AlignLeft;
|
|
6391
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { children: [
|
|
6392
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "mb-1 flex items-center space-x-1 text-muted-foreground", children: [
|
|
6393
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Icon2, { className: "w-4 h-4 text-sm" }),
|
|
6394
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "text-xs", children: field.name })
|
|
6395
|
+
] }),
|
|
6396
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "w-full text-[13px] leading-5 breaking-all line-clamp-6", children: field.type === "select" ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex gap-1 flex-wrap", children: (() => {
|
|
6397
|
+
var _a2;
|
|
6398
|
+
const option = (_a2 = field.options) == null ? void 0 : _a2.find((o) => o.name === value);
|
|
6399
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
6400
|
+
"div",
|
|
6401
|
+
{
|
|
6402
|
+
className: cn(
|
|
6403
|
+
"text-xs px-2 h-5 rounded-md flex items-center gap-1 min-w-0 truncate",
|
|
6404
|
+
getBadgeColor(option == null ? void 0 : option.color)
|
|
6405
|
+
),
|
|
6406
|
+
title: String(value),
|
|
6407
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "min-w-0 truncate", children: String(value) })
|
|
6408
|
+
}
|
|
6409
|
+
);
|
|
6410
|
+
})() }) : field.type === "checkbox" ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex gap-1 flex-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: cn(
|
|
6411
|
+
"flex items-center justify-center w-5 h-5 rounded-sm border border-primary shadow bg-primary text-primary-foreground"
|
|
6412
|
+
), children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react6.CheckSquare, { className: "h-4 w-4" }) }) }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { title: String(value), className: "whitespace-pre-wrap break-all", children: String(value) }) })
|
|
6413
|
+
] }, field.id);
|
|
6414
|
+
})
|
|
6415
|
+
]
|
|
6416
|
+
}
|
|
6417
|
+
) }, record.id)) })
|
|
6418
|
+
}
|
|
6419
|
+
),
|
|
6420
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex items-center justify-center rounded-b-md bg-slate-50 px-3 py-2 dark:bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
6421
|
+
Button,
|
|
6422
|
+
{
|
|
6423
|
+
variant: "outline",
|
|
6424
|
+
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",
|
|
6425
|
+
onClick: () => onOpenModal("add"),
|
|
6426
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react6.Plus, { className: "w-5 h-5" })
|
|
6427
|
+
}
|
|
6428
|
+
) })
|
|
6429
|
+
] }) }, column.id);
|
|
6430
|
+
}) }) }) });
|
|
6431
|
+
}
|
|
6432
|
+
|
|
6433
|
+
// src/components/views/GalleryView.tsx
|
|
6434
|
+
var import_lucide_react7 = require("lucide-react");
|
|
6435
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
4666
6436
|
function GalleryView({ schema, records, onDeleteRecord, onOpenModal }) {
|
|
6437
|
+
const { t } = useI18n();
|
|
4667
6438
|
const primaryField = getPrimaryField(schema);
|
|
4668
6439
|
const displayFields = schema.fields.filter((f) => f.id !== (primaryField == null ? void 0 : primaryField.id)).slice(0, 3);
|
|
4669
|
-
return /* @__PURE__ */ (0,
|
|
6440
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "h-full overflow-auto p-6 bg-muted/30", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4", children: [
|
|
4670
6441
|
records.map((record) => {
|
|
4671
|
-
const title = primaryField ? record.fields[primaryField.id] : "
|
|
4672
|
-
return /* @__PURE__ */ (0,
|
|
6442
|
+
const title = primaryField ? record.fields[primaryField.id] : t("untitled");
|
|
6443
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
4673
6444
|
Card,
|
|
4674
6445
|
{
|
|
4675
|
-
className: "group hover:shadow-md transition-all cursor-pointer overflow-hidden",
|
|
6446
|
+
className: "group hover:shadow-md transition-all cursor-pointer overflow-hidden text-start",
|
|
4676
6447
|
onClick: () => onOpenModal("view", record),
|
|
4677
6448
|
children: [
|
|
4678
|
-
/* @__PURE__ */ (0,
|
|
4679
|
-
/* @__PURE__ */ (0,
|
|
4680
|
-
/* @__PURE__ */ (0,
|
|
4681
|
-
/* @__PURE__ */ (0,
|
|
4682
|
-
/* @__PURE__ */ (0,
|
|
4683
|
-
/* @__PURE__ */ (0,
|
|
4684
|
-
/* @__PURE__ */ (0,
|
|
4685
|
-
"
|
|
6449
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "aspect-[16/10] bg-muted flex items-center justify-center relative", children: [
|
|
6450
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-4xl font-semibold text-muted-foreground/20 select-none", children: String(title || t("untitled")).charAt(0).toUpperCase() }),
|
|
6451
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(DropdownMenu, { children: [
|
|
6452
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DropdownMenuTrigger, { asChild: true, onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Button, { variant: "secondary", size: "icon", className: "h-8 w-8", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.MoreHorizontal, { className: "h-4 w-4" }) }) }),
|
|
6453
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(DropdownMenuContent, { align: "end", children: [
|
|
6454
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(DropdownMenuItem, { onClick: () => onOpenModal("view", record), children: [
|
|
6455
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Eye, { className: "h-4 w-4 mr-2" }),
|
|
6456
|
+
t("view")
|
|
4686
6457
|
] }),
|
|
4687
|
-
/* @__PURE__ */ (0,
|
|
4688
|
-
/* @__PURE__ */ (0,
|
|
4689
|
-
"
|
|
6458
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(DropdownMenuItem, { onClick: () => onOpenModal("edit", record), children: [
|
|
6459
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Pencil, { className: "h-4 w-4 mr-2" }),
|
|
6460
|
+
t("edit")
|
|
4690
6461
|
] }),
|
|
4691
|
-
/* @__PURE__ */ (0,
|
|
6462
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
4692
6463
|
DropdownMenuItem,
|
|
4693
6464
|
{
|
|
4694
6465
|
className: "text-destructive focus:text-destructive",
|
|
4695
6466
|
onClick: () => onDeleteRecord(record.id),
|
|
4696
6467
|
children: [
|
|
4697
|
-
/* @__PURE__ */ (0,
|
|
4698
|
-
"
|
|
6468
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Trash2, { className: "h-4 w-4 mr-2" }),
|
|
6469
|
+
t("delete")
|
|
4699
6470
|
]
|
|
4700
6471
|
}
|
|
4701
6472
|
)
|
|
4702
6473
|
] })
|
|
4703
6474
|
] }) })
|
|
4704
6475
|
] }),
|
|
4705
|
-
/* @__PURE__ */ (0,
|
|
4706
|
-
/* @__PURE__ */ (0,
|
|
4707
|
-
/* @__PURE__ */ (0,
|
|
6476
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(CardContent, { className: "p-4", children: [
|
|
6477
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h3", { className: "font-medium text-sm truncate mb-2", children: title || t("untitled") }),
|
|
6478
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "space-y-1.5", children: displayFields.map((field) => {
|
|
6479
|
+
var _a;
|
|
4708
6480
|
const value = record.fields[field.id];
|
|
4709
6481
|
if (value === void 0 || value === null || value === "" || value === false) return null;
|
|
4710
6482
|
let displayValue = value;
|
|
6483
|
+
if (field.type === "select") {
|
|
6484
|
+
const option = (_a = field.options) == null ? void 0 : _a.find((o) => o.name === value);
|
|
6485
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex items-baseline gap-2 text-xs", children: [
|
|
6486
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "text-muted-foreground flex-shrink-0", children: [
|
|
6487
|
+
field.name,
|
|
6488
|
+
":"
|
|
6489
|
+
] }),
|
|
6490
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
6491
|
+
"div",
|
|
6492
|
+
{
|
|
6493
|
+
className: cn(
|
|
6494
|
+
"text-xs px-2 py-0.5 rounded-md inline-flex items-center gap-1",
|
|
6495
|
+
getBadgeColor(option == null ? void 0 : option.color)
|
|
6496
|
+
),
|
|
6497
|
+
children: value
|
|
6498
|
+
}
|
|
6499
|
+
)
|
|
6500
|
+
] }, field.id);
|
|
6501
|
+
}
|
|
4711
6502
|
if (Array.isArray(value)) displayValue = value.join(", ");
|
|
4712
|
-
else if (typeof value === "boolean") displayValue = value ? "
|
|
6503
|
+
else if (typeof value === "boolean") displayValue = value ? t("yes") : t("no");
|
|
4713
6504
|
else if (field.type === "date") displayValue = new Date(value).toLocaleDateString();
|
|
4714
|
-
return /* @__PURE__ */ (0,
|
|
4715
|
-
/* @__PURE__ */ (0,
|
|
6505
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex items-baseline gap-2 text-xs", children: [
|
|
6506
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "text-muted-foreground flex-shrink-0", children: [
|
|
4716
6507
|
field.name,
|
|
4717
6508
|
":"
|
|
4718
6509
|
] }),
|
|
4719
|
-
/* @__PURE__ */ (0,
|
|
6510
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-foreground truncate", children: String(displayValue) })
|
|
4720
6511
|
] }, field.id);
|
|
4721
6512
|
}) })
|
|
4722
6513
|
] })
|
|
@@ -4725,14 +6516,14 @@ function GalleryView({ schema, records, onDeleteRecord, onOpenModal }) {
|
|
|
4725
6516
|
record.id
|
|
4726
6517
|
);
|
|
4727
6518
|
}),
|
|
4728
|
-
/* @__PURE__ */ (0,
|
|
6519
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
4729
6520
|
"div",
|
|
4730
6521
|
{
|
|
4731
6522
|
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]",
|
|
4732
6523
|
onClick: () => onOpenModal("add"),
|
|
4733
6524
|
children: [
|
|
4734
|
-
/* @__PURE__ */ (0,
|
|
4735
|
-
/* @__PURE__ */ (0,
|
|
6525
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "h-10 w-10 rounded-full bg-muted flex items-center justify-center mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Plus, { className: "h-5 w-5 text-muted-foreground" }) }),
|
|
6526
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-sm font-medium text-muted-foreground", children: t("addRecord") })
|
|
4736
6527
|
]
|
|
4737
6528
|
}
|
|
4738
6529
|
)
|
|
@@ -4740,16 +6531,38 @@ function GalleryView({ schema, records, onDeleteRecord, onOpenModal }) {
|
|
|
4740
6531
|
}
|
|
4741
6532
|
|
|
4742
6533
|
// src/components/views/CalendarView.tsx
|
|
4743
|
-
var
|
|
6534
|
+
var import_react6 = require("react");
|
|
4744
6535
|
var import_lucide_react8 = require("lucide-react");
|
|
4745
|
-
var
|
|
6536
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
6537
|
+
var CALENDAR_COLORS = [
|
|
6538
|
+
"blue",
|
|
6539
|
+
"green",
|
|
6540
|
+
"purple",
|
|
6541
|
+
"orange",
|
|
6542
|
+
"pink",
|
|
6543
|
+
"cyan",
|
|
6544
|
+
"indigo",
|
|
6545
|
+
"teal",
|
|
6546
|
+
"rose",
|
|
6547
|
+
"amber",
|
|
6548
|
+
"emerald",
|
|
6549
|
+
"violet"
|
|
6550
|
+
];
|
|
6551
|
+
function getRecordColor(recordId) {
|
|
6552
|
+
const hash = recordId.split("").reduce((acc, char) => {
|
|
6553
|
+
return char.charCodeAt(0) + ((acc << 5) - acc);
|
|
6554
|
+
}, 0);
|
|
6555
|
+
const index = Math.abs(hash) % CALENDAR_COLORS.length;
|
|
6556
|
+
return CALENDAR_COLORS[index];
|
|
6557
|
+
}
|
|
4746
6558
|
function CalendarView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenModal }) {
|
|
4747
|
-
const
|
|
6559
|
+
const { t, lang } = useI18n();
|
|
6560
|
+
const [currentDate, setCurrentDate] = (0, import_react6.useState)(/* @__PURE__ */ new Date());
|
|
4748
6561
|
const dateField = getDateField(schema);
|
|
4749
6562
|
const primaryField = getPrimaryField(schema);
|
|
4750
6563
|
const monthStart = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1);
|
|
4751
6564
|
const monthEnd = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0);
|
|
4752
|
-
const calendarDays = (0,
|
|
6565
|
+
const calendarDays = (0, import_react6.useMemo)(() => {
|
|
4753
6566
|
const days = [];
|
|
4754
6567
|
const firstDayOfWeek = monthStart.getDay();
|
|
4755
6568
|
for (let i = firstDayOfWeek - 1; i >= 0; i--) {
|
|
@@ -4768,7 +6581,7 @@ function CalendarView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenM
|
|
|
4768
6581
|
}
|
|
4769
6582
|
return days;
|
|
4770
6583
|
}, [currentDate, monthStart, monthEnd]);
|
|
4771
|
-
const recordsByDate = (0,
|
|
6584
|
+
const recordsByDate = (0, import_react6.useMemo)(() => {
|
|
4772
6585
|
const map = {};
|
|
4773
6586
|
if (!dateField) return map;
|
|
4774
6587
|
records.forEach((record) => {
|
|
@@ -4792,77 +6605,64 @@ function CalendarView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenM
|
|
|
4792
6605
|
if (!dateField) return;
|
|
4793
6606
|
onUpdateRecord(recordId, { [dateField.id]: newDate.toISOString().split("T")[0] });
|
|
4794
6607
|
};
|
|
4795
|
-
const weekDays =
|
|
4796
|
-
const monthNames =
|
|
4797
|
-
"January",
|
|
4798
|
-
"February",
|
|
4799
|
-
"March",
|
|
4800
|
-
"April",
|
|
4801
|
-
"May",
|
|
4802
|
-
"June",
|
|
4803
|
-
"July",
|
|
4804
|
-
"August",
|
|
4805
|
-
"September",
|
|
4806
|
-
"October",
|
|
4807
|
-
"November",
|
|
4808
|
-
"December"
|
|
4809
|
-
];
|
|
6608
|
+
const weekDays = t("weekDays").split(",");
|
|
6609
|
+
const monthNames = t("monthNames").split(",");
|
|
4810
6610
|
if (!dateField) {
|
|
4811
|
-
return /* @__PURE__ */ (0,
|
|
6611
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "h-full flex items-center justify-center text-muted-foreground", children: t("noDateField") });
|
|
4812
6612
|
}
|
|
4813
|
-
return /* @__PURE__ */ (0,
|
|
4814
|
-
/* @__PURE__ */ (0,
|
|
4815
|
-
/* @__PURE__ */ (0,
|
|
4816
|
-
/* @__PURE__ */ (0,
|
|
6613
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "h-full flex flex-col p-6 bg-muted/30", children: [
|
|
6614
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center justify-between mb-4", children: [
|
|
6615
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-4", children: [
|
|
6616
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("h2", { className: "text-xl font-semibold", children: [
|
|
4817
6617
|
monthNames[currentDate.getMonth()],
|
|
4818
6618
|
" ",
|
|
4819
6619
|
currentDate.getFullYear()
|
|
4820
6620
|
] }),
|
|
4821
|
-
/* @__PURE__ */ (0,
|
|
6621
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4822
6622
|
Button,
|
|
4823
6623
|
{
|
|
4824
6624
|
variant: "outline",
|
|
4825
6625
|
size: "sm",
|
|
4826
6626
|
onClick: () => setCurrentDate(/* @__PURE__ */ new Date()),
|
|
4827
|
-
children: "
|
|
6627
|
+
children: t("today")
|
|
4828
6628
|
}
|
|
4829
6629
|
)
|
|
4830
6630
|
] }),
|
|
4831
|
-
/* @__PURE__ */ (0,
|
|
4832
|
-
/* @__PURE__ */ (0,
|
|
6631
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
6632
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4833
6633
|
Button,
|
|
4834
6634
|
{
|
|
4835
6635
|
variant: "outline",
|
|
4836
6636
|
size: "icon",
|
|
4837
6637
|
className: "h-8 w-8",
|
|
4838
6638
|
onClick: () => setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() - 1, 1)),
|
|
4839
|
-
children: /* @__PURE__ */ (0,
|
|
6639
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react8.ChevronLeft, { className: "h-4 w-4" })
|
|
4840
6640
|
}
|
|
4841
6641
|
),
|
|
4842
|
-
/* @__PURE__ */ (0,
|
|
6642
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4843
6643
|
Button,
|
|
4844
6644
|
{
|
|
4845
6645
|
variant: "outline",
|
|
4846
6646
|
size: "icon",
|
|
4847
6647
|
className: "h-8 w-8",
|
|
4848
6648
|
onClick: () => setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1)),
|
|
4849
|
-
children: /* @__PURE__ */ (0,
|
|
6649
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react8.ChevronRight, { className: "h-4 w-4" })
|
|
4850
6650
|
}
|
|
4851
6651
|
)
|
|
4852
6652
|
] })
|
|
4853
6653
|
] }),
|
|
4854
|
-
/* @__PURE__ */ (0,
|
|
4855
|
-
/* @__PURE__ */ (0,
|
|
4856
|
-
/* @__PURE__ */ (0,
|
|
6654
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex-1 border rounded-lg overflow-hidden bg-background flex flex-col shadow-sm", children: [
|
|
6655
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "grid grid-cols-7 bg-muted/50 border-b", children: weekDays.map((day) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "px-2 py-2 text-center text-xs font-medium text-muted-foreground uppercase tracking-wider", children: day }, day)) }),
|
|
6656
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "grid grid-cols-7 flex-1", children: calendarDays.map((date, index) => {
|
|
4857
6657
|
const dateKey = date.toISOString().split("T")[0];
|
|
4858
6658
|
const dayRecords = recordsByDate[dateKey] || [];
|
|
4859
|
-
return /* @__PURE__ */ (0,
|
|
6659
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4860
6660
|
"div",
|
|
4861
6661
|
{
|
|
4862
6662
|
className: cn(
|
|
4863
6663
|
"min-h-[100px] p-1.5 border-b border-r transition-all group relative flex flex-col",
|
|
4864
|
-
!isCurrentMonth(date) && "bg-muted/
|
|
4865
|
-
isCurrentMonth(date) && "hover:bg-muted/
|
|
6664
|
+
!isCurrentMonth(date) && "bg-muted/20 text-muted-foreground/40",
|
|
6665
|
+
isCurrentMonth(date) && "hover:bg-muted/5",
|
|
4866
6666
|
index % 7 === 6 && "border-r-0"
|
|
4867
6667
|
),
|
|
4868
6668
|
onDragOver: (e) => e.preventDefault(),
|
|
@@ -4871,23 +6671,23 @@ function CalendarView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenM
|
|
|
4871
6671
|
if (recordId) handleDrop(recordId, date);
|
|
4872
6672
|
},
|
|
4873
6673
|
children: [
|
|
4874
|
-
/* @__PURE__ */ (0,
|
|
4875
|
-
/* @__PURE__ */ (0,
|
|
4876
|
-
"text-xs w-6 h-6 flex items-center justify-center rounded-full",
|
|
4877
|
-
isToday(date) ? "bg-primary text-primary-foreground font-
|
|
6674
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center justify-between mb-1", children: [
|
|
6675
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: cn(
|
|
6676
|
+
"text-xs w-6 h-6 flex items-center justify-center rounded-full transition-colors",
|
|
6677
|
+
isToday(date) ? "bg-primary text-primary-foreground font-semibold shadow-sm" : "text-muted-foreground group-hover:text-foreground"
|
|
4878
6678
|
), children: date.getDate() }),
|
|
4879
|
-
/* @__PURE__ */ (0,
|
|
6679
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4880
6680
|
Button,
|
|
4881
6681
|
{
|
|
4882
6682
|
variant: "ghost",
|
|
4883
6683
|
size: "icon",
|
|
4884
6684
|
className: "h-5 w-5 opacity-0 group-hover:opacity-100 transition-opacity",
|
|
4885
6685
|
onClick: () => handleDayClick(date),
|
|
4886
|
-
children: /* @__PURE__ */ (0,
|
|
6686
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react8.Plus, { className: "h-3 w-3" })
|
|
4887
6687
|
}
|
|
4888
6688
|
)
|
|
4889
6689
|
] }),
|
|
4890
|
-
/* @__PURE__ */ (0,
|
|
6690
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex-1 space-y-0.5 overflow-y-auto", children: dayRecords.map((record) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4891
6691
|
"div",
|
|
4892
6692
|
{
|
|
4893
6693
|
draggable: true,
|
|
@@ -4901,28 +6701,30 @@ function CalendarView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenM
|
|
|
4901
6701
|
},
|
|
4902
6702
|
className: "group/item relative",
|
|
4903
6703
|
children: [
|
|
4904
|
-
/* @__PURE__ */ (0,
|
|
4905
|
-
|
|
6704
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
6705
|
+
"div",
|
|
4906
6706
|
{
|
|
4907
|
-
|
|
4908
|
-
|
|
4909
|
-
|
|
6707
|
+
className: cn(
|
|
6708
|
+
"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",
|
|
6709
|
+
getBadgeColor(getRecordColor(record.id))
|
|
6710
|
+
),
|
|
6711
|
+
children: primaryField ? record.fields[primaryField.id] || t("untitled") : t("untitled")
|
|
4910
6712
|
}
|
|
4911
6713
|
),
|
|
4912
|
-
/* @__PURE__ */ (0,
|
|
4913
|
-
/* @__PURE__ */ (0,
|
|
4914
|
-
/* @__PURE__ */ (0,
|
|
4915
|
-
/* @__PURE__ */ (0,
|
|
4916
|
-
/* @__PURE__ */ (0,
|
|
4917
|
-
"
|
|
6714
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("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__ */ (0, import_jsx_runtime19.jsxs)(DropdownMenu, { children: [
|
|
6715
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(DropdownMenuTrigger, { asChild: true, onClick: (e) => e.stopPropagation(), children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react8.MoreHorizontal, { className: "h-3 w-3 text-muted-foreground cursor-pointer hover:text-foreground" }) }),
|
|
6716
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(DropdownMenuContent, { align: "end", children: [
|
|
6717
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(DropdownMenuItem, { onClick: () => onOpenModal("view", record), children: [
|
|
6718
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react8.Eye, { className: "h-4 w-4 mr-2" }),
|
|
6719
|
+
t("view")
|
|
4918
6720
|
] }),
|
|
4919
|
-
/* @__PURE__ */ (0,
|
|
4920
|
-
/* @__PURE__ */ (0,
|
|
4921
|
-
"
|
|
6721
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(DropdownMenuItem, { onClick: () => onOpenModal("edit", record), children: [
|
|
6722
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react8.Pencil, { className: "h-4 w-4 mr-2" }),
|
|
6723
|
+
t("edit")
|
|
4922
6724
|
] }),
|
|
4923
|
-
/* @__PURE__ */ (0,
|
|
4924
|
-
/* @__PURE__ */ (0,
|
|
4925
|
-
"
|
|
6725
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(DropdownMenuItem, { className: "text-destructive focus:text-destructive", onClick: () => onDeleteRecord(record.id), children: [
|
|
6726
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react8.Trash2, { className: "h-4 w-4 mr-2" }),
|
|
6727
|
+
t("delete")
|
|
4926
6728
|
] })
|
|
4927
6729
|
] })
|
|
4928
6730
|
] }) })
|
|
@@ -4940,15 +6742,15 @@ function CalendarView({ schema, records, onUpdateRecord, onDeleteRecord, onOpenM
|
|
|
4940
6742
|
}
|
|
4941
6743
|
|
|
4942
6744
|
// src/components/ui/dialog.tsx
|
|
4943
|
-
var
|
|
6745
|
+
var React13 = __toESM(require("react"));
|
|
4944
6746
|
var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"));
|
|
4945
6747
|
var import_lucide_react9 = require("lucide-react");
|
|
4946
|
-
var
|
|
6748
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
4947
6749
|
var Dialog = DialogPrimitive.Root;
|
|
4948
6750
|
var DialogPortal = DialogPrimitive.Portal;
|
|
4949
|
-
var DialogOverlay =
|
|
6751
|
+
var DialogOverlay = React13.forwardRef((_a, ref) => {
|
|
4950
6752
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4951
|
-
return /* @__PURE__ */ (0,
|
|
6753
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
4952
6754
|
DialogPrimitive.Overlay,
|
|
4953
6755
|
__spreadValues({
|
|
4954
6756
|
ref,
|
|
@@ -4960,11 +6762,11 @@ var DialogOverlay = React12.forwardRef((_a, ref) => {
|
|
|
4960
6762
|
);
|
|
4961
6763
|
});
|
|
4962
6764
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
4963
|
-
var DialogContent =
|
|
6765
|
+
var DialogContent = React13.forwardRef((_a, ref) => {
|
|
4964
6766
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
4965
|
-
return /* @__PURE__ */ (0,
|
|
4966
|
-
/* @__PURE__ */ (0,
|
|
4967
|
-
/* @__PURE__ */ (0,
|
|
6767
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(DialogPortal, { children: [
|
|
6768
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogOverlay, {}),
|
|
6769
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
4968
6770
|
DialogPrimitive.Content,
|
|
4969
6771
|
__spreadProps(__spreadValues({
|
|
4970
6772
|
ref,
|
|
@@ -4975,9 +6777,9 @@ var DialogContent = React12.forwardRef((_a, ref) => {
|
|
|
4975
6777
|
}, props), {
|
|
4976
6778
|
children: [
|
|
4977
6779
|
children,
|
|
4978
|
-
/* @__PURE__ */ (0,
|
|
4979
|
-
/* @__PURE__ */ (0,
|
|
4980
|
-
/* @__PURE__ */ (0,
|
|
6780
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(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: [
|
|
6781
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react9.X, { className: "h-4 w-4" }),
|
|
6782
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "sr-only", children: "Close" })
|
|
4981
6783
|
] })
|
|
4982
6784
|
]
|
|
4983
6785
|
})
|
|
@@ -4991,7 +6793,7 @@ var DialogHeader = (_a) => {
|
|
|
4991
6793
|
} = _b, props = __objRest(_b, [
|
|
4992
6794
|
"className"
|
|
4993
6795
|
]);
|
|
4994
|
-
return /* @__PURE__ */ (0,
|
|
6796
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
4995
6797
|
"div",
|
|
4996
6798
|
__spreadValues({
|
|
4997
6799
|
className: cn(
|
|
@@ -5008,7 +6810,7 @@ var DialogFooter = (_a) => {
|
|
|
5008
6810
|
} = _b, props = __objRest(_b, [
|
|
5009
6811
|
"className"
|
|
5010
6812
|
]);
|
|
5011
|
-
return /* @__PURE__ */ (0,
|
|
6813
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
5012
6814
|
"div",
|
|
5013
6815
|
__spreadValues({
|
|
5014
6816
|
className: cn(
|
|
@@ -5019,9 +6821,9 @@ var DialogFooter = (_a) => {
|
|
|
5019
6821
|
);
|
|
5020
6822
|
};
|
|
5021
6823
|
DialogFooter.displayName = "DialogFooter";
|
|
5022
|
-
var DialogTitle =
|
|
6824
|
+
var DialogTitle = React13.forwardRef((_a, ref) => {
|
|
5023
6825
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5024
|
-
return /* @__PURE__ */ (0,
|
|
6826
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
5025
6827
|
DialogPrimitive.Title,
|
|
5026
6828
|
__spreadValues({
|
|
5027
6829
|
ref,
|
|
@@ -5033,9 +6835,9 @@ var DialogTitle = React12.forwardRef((_a, ref) => {
|
|
|
5033
6835
|
);
|
|
5034
6836
|
});
|
|
5035
6837
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
5036
|
-
var DialogDescription =
|
|
6838
|
+
var DialogDescription = React13.forwardRef((_a, ref) => {
|
|
5037
6839
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5038
|
-
return /* @__PURE__ */ (0,
|
|
6840
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
5039
6841
|
DialogPrimitive.Description,
|
|
5040
6842
|
__spreadValues({
|
|
5041
6843
|
ref,
|
|
@@ -5046,29 +6848,29 @@ var DialogDescription = React12.forwardRef((_a, ref) => {
|
|
|
5046
6848
|
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
5047
6849
|
|
|
5048
6850
|
// src/components/ui/scroll-area.tsx
|
|
5049
|
-
var
|
|
6851
|
+
var React14 = __toESM(require("react"));
|
|
5050
6852
|
var ScrollAreaPrimitive = __toESM(require("@radix-ui/react-scroll-area"));
|
|
5051
|
-
var
|
|
5052
|
-
var ScrollArea =
|
|
6853
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
6854
|
+
var ScrollArea = React14.forwardRef((_a, ref) => {
|
|
5053
6855
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
5054
|
-
return /* @__PURE__ */ (0,
|
|
6856
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
5055
6857
|
ScrollAreaPrimitive.Root,
|
|
5056
6858
|
__spreadProps(__spreadValues({
|
|
5057
6859
|
ref,
|
|
5058
6860
|
className: cn("relative overflow-hidden", className)
|
|
5059
6861
|
}, props), {
|
|
5060
6862
|
children: [
|
|
5061
|
-
/* @__PURE__ */ (0,
|
|
5062
|
-
/* @__PURE__ */ (0,
|
|
5063
|
-
/* @__PURE__ */ (0,
|
|
6863
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
|
|
6864
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ScrollBar, {}),
|
|
6865
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ScrollAreaPrimitive.Corner, {})
|
|
5064
6866
|
]
|
|
5065
6867
|
})
|
|
5066
6868
|
);
|
|
5067
6869
|
});
|
|
5068
6870
|
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
5069
|
-
var ScrollBar =
|
|
6871
|
+
var ScrollBar = React14.forwardRef((_a, ref) => {
|
|
5070
6872
|
var _b = _a, { className, orientation = "vertical" } = _b, props = __objRest(_b, ["className", "orientation"]);
|
|
5071
|
-
return /* @__PURE__ */ (0,
|
|
6873
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
5072
6874
|
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
5073
6875
|
__spreadProps(__spreadValues({
|
|
5074
6876
|
ref,
|
|
@@ -5080,14 +6882,14 @@ var ScrollBar = React13.forwardRef((_a, ref) => {
|
|
|
5080
6882
|
className
|
|
5081
6883
|
)
|
|
5082
6884
|
}, props), {
|
|
5083
|
-
children: /* @__PURE__ */ (0,
|
|
6885
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
|
|
5084
6886
|
})
|
|
5085
6887
|
);
|
|
5086
6888
|
});
|
|
5087
6889
|
ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
|
|
5088
6890
|
|
|
5089
6891
|
// src/components/RecordModal.tsx
|
|
5090
|
-
var
|
|
6892
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
5091
6893
|
function RecordModal({
|
|
5092
6894
|
isOpen,
|
|
5093
6895
|
onClose,
|
|
@@ -5097,27 +6899,28 @@ function RecordModal({
|
|
|
5097
6899
|
initialValues,
|
|
5098
6900
|
onSubmit
|
|
5099
6901
|
}) {
|
|
6902
|
+
const { t } = useI18n();
|
|
5100
6903
|
const titles = {
|
|
5101
|
-
add: "
|
|
5102
|
-
edit: "
|
|
5103
|
-
view: "
|
|
6904
|
+
add: t("createNewRecord"),
|
|
6905
|
+
edit: t("editRecord"),
|
|
6906
|
+
view: t("recordDetails")
|
|
5104
6907
|
};
|
|
5105
6908
|
const descriptions = {
|
|
5106
|
-
add: "
|
|
5107
|
-
edit: "
|
|
5108
|
-
view: "
|
|
6909
|
+
add: t("enterDetails"),
|
|
6910
|
+
edit: t("modifyValues"),
|
|
6911
|
+
view: t("viewData")
|
|
5109
6912
|
};
|
|
5110
6913
|
const handleSubmit = (values) => {
|
|
5111
6914
|
onSubmit(values);
|
|
5112
6915
|
onClose();
|
|
5113
6916
|
};
|
|
5114
6917
|
const formValues = mode === "add" ? initialValues : record == null ? void 0 : record.fields;
|
|
5115
|
-
return /* @__PURE__ */ (0,
|
|
5116
|
-
/* @__PURE__ */ (0,
|
|
5117
|
-
/* @__PURE__ */ (0,
|
|
5118
|
-
/* @__PURE__ */ (0,
|
|
6918
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Dialog, { open: isOpen, onOpenChange: (open) => !open && onClose(), children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(DialogContent, { className: "sm:max-w-[500px] max-h-[85vh] flex flex-col", children: [
|
|
6919
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(DialogHeader, { className: "space-y-1.5", children: [
|
|
6920
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DialogTitle, { children: titles[mode] }),
|
|
6921
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DialogDescription, { children: descriptions[mode] })
|
|
5119
6922
|
] }),
|
|
5120
|
-
/* @__PURE__ */ (0,
|
|
6923
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ScrollArea, { className: "flex-1 -mx-6 px-6 mt-4", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
5121
6924
|
RecordForm,
|
|
5122
6925
|
{
|
|
5123
6926
|
schema,
|
|
@@ -5132,33 +6935,34 @@ function RecordModal({
|
|
|
5132
6935
|
// src/components/ThemeToggle.tsx
|
|
5133
6936
|
var import_next_themes = require("next-themes");
|
|
5134
6937
|
var import_lucide_react10 = require("lucide-react");
|
|
5135
|
-
var
|
|
6938
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
5136
6939
|
function ThemeToggle() {
|
|
5137
6940
|
const { setTheme, theme } = (0, import_next_themes.useTheme)();
|
|
5138
|
-
return /* @__PURE__ */ (0,
|
|
5139
|
-
/* @__PURE__ */ (0,
|
|
5140
|
-
/* @__PURE__ */ (0,
|
|
5141
|
-
/* @__PURE__ */ (0,
|
|
5142
|
-
/* @__PURE__ */ (0,
|
|
6941
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(DropdownMenu, { children: [
|
|
6942
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Button, { variant: "ghost", size: "icon", className: "h-9 w-9", children: [
|
|
6943
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react10.Sun, { className: "h-4 w-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
|
|
6944
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react10.Moon, { className: "absolute h-4 w-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" }),
|
|
6945
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "sr-only", children: "Toggle theme" })
|
|
5143
6946
|
] }) }),
|
|
5144
|
-
/* @__PURE__ */ (0,
|
|
5145
|
-
/* @__PURE__ */ (0,
|
|
5146
|
-
/* @__PURE__ */ (0,
|
|
5147
|
-
/* @__PURE__ */ (0,
|
|
6947
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(DropdownMenuContent, { align: "end", children: [
|
|
6948
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(DropdownMenuItem, { onClick: () => setTheme("light"), children: "Light" }),
|
|
6949
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(DropdownMenuItem, { onClick: () => setTheme("dark"), children: "Dark" }),
|
|
6950
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(DropdownMenuItem, { onClick: () => setTheme("system"), children: "System" })
|
|
5148
6951
|
] })
|
|
5149
6952
|
] });
|
|
5150
6953
|
}
|
|
5151
6954
|
|
|
5152
6955
|
// src/components/DataViews.tsx
|
|
5153
|
-
var
|
|
5154
|
-
function
|
|
5155
|
-
const
|
|
5156
|
-
const [
|
|
5157
|
-
const [
|
|
6956
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
6957
|
+
function DataViewsInner({ schema, dbClient, config }) {
|
|
6958
|
+
const { t } = useI18n();
|
|
6959
|
+
const [records, setRecords] = (0, import_react7.useState)([]);
|
|
6960
|
+
const [activeView, setActiveView] = (0, import_react7.useState)((config == null ? void 0 : config.defaultView) || "grid");
|
|
6961
|
+
const [modalState, setModalState] = (0, import_react7.useState)({
|
|
5158
6962
|
isOpen: false,
|
|
5159
6963
|
mode: "add"
|
|
5160
6964
|
});
|
|
5161
|
-
const [mounted, setMounted] = (0,
|
|
6965
|
+
const [mounted, setMounted] = (0, import_react7.useState)(false);
|
|
5162
6966
|
const hasSelectField = !!getSelectField(schema);
|
|
5163
6967
|
const hasDateField = !!getDateField(schema);
|
|
5164
6968
|
const fetchRecords = async () => {
|
|
@@ -5169,7 +6973,7 @@ function DataViews({ schema, dbClient, config }) {
|
|
|
5169
6973
|
console.error("Failed to fetch records:", error);
|
|
5170
6974
|
}
|
|
5171
6975
|
};
|
|
5172
|
-
(0,
|
|
6976
|
+
(0, import_react7.useEffect)(() => {
|
|
5173
6977
|
setMounted(true);
|
|
5174
6978
|
fetchRecords();
|
|
5175
6979
|
}, [dbClient]);
|
|
@@ -5212,46 +7016,46 @@ function DataViews({ schema, dbClient, config }) {
|
|
|
5212
7016
|
onDeleteRecord: handleDeleteRecord,
|
|
5213
7017
|
onOpenModal: openModal
|
|
5214
7018
|
};
|
|
5215
|
-
return /* @__PURE__ */ (0,
|
|
5216
|
-
/* @__PURE__ */ (0,
|
|
5217
|
-
/* @__PURE__ */ (0,
|
|
5218
|
-
/* @__PURE__ */ (0,
|
|
5219
|
-
/* @__PURE__ */ (0,
|
|
7019
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "h-full w-full flex flex-col bg-background", children: [
|
|
7020
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("header", { className: "border-b px-6 py-3 flex items-center justify-between shrink-0", children: [
|
|
7021
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
7022
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "text-2xl", children: schema.icon }),
|
|
7023
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("h1", { className: "text-lg font-semibold", children: schema.name })
|
|
5220
7024
|
] }),
|
|
5221
|
-
/* @__PURE__ */ (0,
|
|
7025
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(ThemeToggle, {})
|
|
5222
7026
|
] }),
|
|
5223
|
-
/* @__PURE__ */ (0,
|
|
5224
|
-
/* @__PURE__ */ (0,
|
|
5225
|
-
/* @__PURE__ */ (0,
|
|
5226
|
-
mounted && /* @__PURE__ */ (0,
|
|
5227
|
-
"
|
|
7027
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Tabs, { value: activeView, onValueChange: (v) => setActiveView(v), className: "flex-1 flex flex-col overflow-hidden", children: [
|
|
7028
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "border-b px-4 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(TabsList, { className: "h-10", children: [
|
|
7029
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(TabsTrigger, { value: "grid", className: "gap-2", children: [
|
|
7030
|
+
mounted && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.LayoutGrid, { className: "h-4 w-4" }),
|
|
7031
|
+
t("gridView")
|
|
5228
7032
|
] }),
|
|
5229
|
-
/* @__PURE__ */ (0,
|
|
5230
|
-
mounted && /* @__PURE__ */ (0,
|
|
5231
|
-
"
|
|
7033
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(TabsTrigger, { value: "form", className: "gap-2", children: [
|
|
7034
|
+
mounted && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.FileText, { className: "h-4 w-4" }),
|
|
7035
|
+
t("formView")
|
|
5232
7036
|
] }),
|
|
5233
|
-
hasSelectField && /* @__PURE__ */ (0,
|
|
5234
|
-
mounted && /* @__PURE__ */ (0,
|
|
5235
|
-
"
|
|
7037
|
+
hasSelectField && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(TabsTrigger, { value: "kanban", className: "gap-2", children: [
|
|
7038
|
+
mounted && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.Columns, { className: "h-4 w-4" }),
|
|
7039
|
+
t("kanbanView")
|
|
5236
7040
|
] }),
|
|
5237
|
-
/* @__PURE__ */ (0,
|
|
5238
|
-
mounted && /* @__PURE__ */ (0,
|
|
5239
|
-
"
|
|
7041
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(TabsTrigger, { value: "gallery", className: "gap-2", children: [
|
|
7042
|
+
mounted && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.Image, { className: "h-4 w-4" }),
|
|
7043
|
+
t("galleryView")
|
|
5240
7044
|
] }),
|
|
5241
|
-
hasDateField && /* @__PURE__ */ (0,
|
|
5242
|
-
mounted && /* @__PURE__ */ (0,
|
|
5243
|
-
"
|
|
7045
|
+
hasDateField && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(TabsTrigger, { value: "calendar", className: "gap-2", children: [
|
|
7046
|
+
mounted && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react11.Calendar, { className: "h-4 w-4" }),
|
|
7047
|
+
t("calendarView")
|
|
5244
7048
|
] })
|
|
5245
7049
|
] }) }),
|
|
5246
|
-
/* @__PURE__ */ (0,
|
|
5247
|
-
/* @__PURE__ */ (0,
|
|
5248
|
-
/* @__PURE__ */ (0,
|
|
5249
|
-
hasSelectField && /* @__PURE__ */ (0,
|
|
5250
|
-
/* @__PURE__ */ (0,
|
|
5251
|
-
hasDateField && /* @__PURE__ */ (0,
|
|
7050
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex-1 overflow-auto relative", children: [
|
|
7051
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(TabsContent, { value: "grid", className: "h-full m-0", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GridView, __spreadValues({}, commonProps)) }),
|
|
7052
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(TabsContent, { value: "form", className: "h-full m-0", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(FormView, __spreadValues({}, commonProps)) }),
|
|
7053
|
+
hasSelectField && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(TabsContent, { value: "kanban", className: "h-full m-0", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(KanbanView, __spreadValues({}, commonProps)) }),
|
|
7054
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(TabsContent, { value: "gallery", className: "h-full m-0", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GalleryView, __spreadValues({}, commonProps)) }),
|
|
7055
|
+
hasDateField && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(TabsContent, { value: "calendar", className: "h-full m-0", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CalendarView, __spreadValues({}, commonProps)) })
|
|
5252
7056
|
] })
|
|
5253
7057
|
] }),
|
|
5254
|
-
/* @__PURE__ */ (0,
|
|
7058
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
5255
7059
|
RecordModal,
|
|
5256
7060
|
{
|
|
5257
7061
|
isOpen: modalState.isOpen,
|
|
@@ -5271,11 +7075,24 @@ function DataViews({ schema, dbClient, config }) {
|
|
|
5271
7075
|
)
|
|
5272
7076
|
] });
|
|
5273
7077
|
}
|
|
7078
|
+
function DataViews(props) {
|
|
7079
|
+
var _a;
|
|
7080
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(I18nProvider, { lang: (_a = props.config) == null ? void 0 : _a.language, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(DataViewsInner, __spreadValues({}, props)) });
|
|
7081
|
+
}
|
|
5274
7082
|
// Annotate the CommonJS export names for ESM import in node:
|
|
5275
7083
|
0 && (module.exports = {
|
|
7084
|
+
BADGE_COLOR_MAP,
|
|
7085
|
+
DOT_COLOR_MAP,
|
|
5276
7086
|
DataViews,
|
|
7087
|
+
LANGUAGES,
|
|
7088
|
+
PRESET_COLORS,
|
|
7089
|
+
getBadgeColor,
|
|
5277
7090
|
getDateField,
|
|
7091
|
+
getDirection,
|
|
7092
|
+
getDotColor,
|
|
5278
7093
|
getPrimaryField,
|
|
5279
7094
|
getSelectField,
|
|
5280
|
-
|
|
7095
|
+
getTranslation,
|
|
7096
|
+
tableSchema,
|
|
7097
|
+
translations
|
|
5281
7098
|
});
|