@burdenoff/microfe-assethandler 2026.510.104
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 +12 -0
- package/dist/assethandler/AssetHandlerRoot.d.ts +5 -0
- package/dist/assethandler/AssetHandlerRoot.d.ts.map +1 -0
- package/dist/assethandler/AssetHandlerRoot.js +159 -0
- package/dist/assethandler/AssetHandlerRoot.js.map +1 -0
- package/dist/assethandler/AssetHandlerRoutes.d.ts +2 -0
- package/dist/assethandler/AssetHandlerRoutes.d.ts.map +1 -0
- package/dist/assethandler/AssetHandlerRoutes.js +255 -0
- package/dist/assethandler/AssetHandlerRoutes.js.map +1 -0
- package/dist/assethandler/index.d.ts +5 -0
- package/dist/assethandler/index.d.ts.map +1 -0
- package/dist/assethandler/index.js +3 -0
- package/dist/assethandler/pages/AiPredictionsPage.d.ts +2 -0
- package/dist/assethandler/pages/AiPredictionsPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AiPredictionsPage.js +133 -0
- package/dist/assethandler/pages/AiPredictionsPage.js.map +1 -0
- package/dist/assethandler/pages/AnalyticsPage.d.ts +2 -0
- package/dist/assethandler/pages/AnalyticsPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AnalyticsPage.js +576 -0
- package/dist/assethandler/pages/AnalyticsPage.js.map +1 -0
- package/dist/assethandler/pages/AssetsAssetCategoriesPage.d.ts +2 -0
- package/dist/assethandler/pages/AssetsAssetCategoriesPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AssetsAssetCategoriesPage.js +162 -0
- package/dist/assethandler/pages/AssetsAssetCategoriesPage.js.map +1 -0
- package/dist/assethandler/pages/AssetsAssetCheckInOutPage.d.ts +2 -0
- package/dist/assethandler/pages/AssetsAssetCheckInOutPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js +249 -0
- package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js.map +1 -0
- package/dist/assethandler/pages/AssetsAssetCreatePage.d.ts +2 -0
- package/dist/assethandler/pages/AssetsAssetCreatePage.d.ts.map +1 -0
- package/dist/assethandler/pages/AssetsAssetCreatePage.js +323 -0
- package/dist/assethandler/pages/AssetsAssetCreatePage.js.map +1 -0
- package/dist/assethandler/pages/AssetsAssetDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/AssetsAssetDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AssetsAssetDetailPage.js +392 -0
- package/dist/assethandler/pages/AssetsAssetDetailPage.js.map +1 -0
- package/dist/assethandler/pages/AssetsAssetEditPage.d.ts +2 -0
- package/dist/assethandler/pages/AssetsAssetEditPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AssetsAssetEditPage.js +341 -0
- package/dist/assethandler/pages/AssetsAssetEditPage.js.map +1 -0
- package/dist/assethandler/pages/AssetsAssetListPage.d.ts +2 -0
- package/dist/assethandler/pages/AssetsAssetListPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AssetsAssetListPage.js +459 -0
- package/dist/assethandler/pages/AssetsAssetListPage.js.map +1 -0
- package/dist/assethandler/pages/AssetsAssetTrackingPage.d.ts +2 -0
- package/dist/assethandler/pages/AssetsAssetTrackingPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AssetsAssetTrackingPage.js +166 -0
- package/dist/assethandler/pages/AssetsAssetTrackingPage.js.map +1 -0
- package/dist/assethandler/pages/AuditTrailPage.d.ts +2 -0
- package/dist/assethandler/pages/AuditTrailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AuditTrailPage.js +197 -0
- package/dist/assethandler/pages/AuditTrailPage.js.map +1 -0
- package/dist/assethandler/pages/CmdbBrowserPage.d.ts +2 -0
- package/dist/assethandler/pages/CmdbBrowserPage.d.ts.map +1 -0
- package/dist/assethandler/pages/CmdbBrowserPage.js +75 -0
- package/dist/assethandler/pages/CmdbBrowserPage.js.map +1 -0
- package/dist/assethandler/pages/DashboardPage.d.ts +2 -0
- package/dist/assethandler/pages/DashboardPage.d.ts.map +1 -0
- package/dist/assethandler/pages/DashboardPage.js +336 -0
- package/dist/assethandler/pages/DashboardPage.js.map +1 -0
- package/dist/assethandler/pages/DigitalTwinPage.d.ts +2 -0
- package/dist/assethandler/pages/DigitalTwinPage.d.ts.map +1 -0
- package/dist/assethandler/pages/DigitalTwinPage.js +71 -0
- package/dist/assethandler/pages/DigitalTwinPage.js.map +1 -0
- package/dist/assethandler/pages/DiscoveryJobsPage.d.ts +2 -0
- package/dist/assethandler/pages/DiscoveryJobsPage.d.ts.map +1 -0
- package/dist/assethandler/pages/DiscoveryJobsPage.js +115 -0
- package/dist/assethandler/pages/DiscoveryJobsPage.js.map +1 -0
- package/dist/assethandler/pages/EsgDashboardPage.d.ts +2 -0
- package/dist/assethandler/pages/EsgDashboardPage.d.ts.map +1 -0
- package/dist/assethandler/pages/EsgDashboardPage.js +130 -0
- package/dist/assethandler/pages/EsgDashboardPage.js.map +1 -0
- package/dist/assethandler/pages/FinanceBudgetDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/FinanceBudgetDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/FinanceBudgetDetailPage.js +182 -0
- package/dist/assethandler/pages/FinanceBudgetDetailPage.js.map +1 -0
- package/dist/assethandler/pages/FinanceFinanceHubPage.d.ts +2 -0
- package/dist/assethandler/pages/FinanceFinanceHubPage.d.ts.map +1 -0
- package/dist/assethandler/pages/FinanceFinanceHubPage.js +324 -0
- package/dist/assethandler/pages/FinanceFinanceHubPage.js.map +1 -0
- package/dist/assethandler/pages/FinanceInvoiceDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/FinanceInvoiceDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/FinanceInvoiceDetailPage.js +172 -0
- package/dist/assethandler/pages/FinanceInvoiceDetailPage.js.map +1 -0
- package/dist/assethandler/pages/IotDevicesPage.d.ts +2 -0
- package/dist/assethandler/pages/IotDevicesPage.d.ts.map +1 -0
- package/dist/assethandler/pages/IotDevicesPage.js +80 -0
- package/dist/assethandler/pages/IotDevicesPage.js.map +1 -0
- package/dist/assethandler/pages/ItilChangeDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/ItilChangeDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ItilChangeDetailPage.js +221 -0
- package/dist/assethandler/pages/ItilChangeDetailPage.js.map +1 -0
- package/dist/assethandler/pages/ItilChangeManagementPage.d.ts +2 -0
- package/dist/assethandler/pages/ItilChangeManagementPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ItilChangeManagementPage.js +179 -0
- package/dist/assethandler/pages/ItilChangeManagementPage.js.map +1 -0
- package/dist/assethandler/pages/ItilIncidentDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/ItilIncidentDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ItilIncidentDetailPage.js +222 -0
- package/dist/assethandler/pages/ItilIncidentDetailPage.js.map +1 -0
- package/dist/assethandler/pages/ItilIncidentManagementPage.d.ts +2 -0
- package/dist/assethandler/pages/ItilIncidentManagementPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ItilIncidentManagementPage.js +265 -0
- package/dist/assethandler/pages/ItilIncidentManagementPage.js.map +1 -0
- package/dist/assethandler/pages/ItilItilhubPage.d.ts +2 -0
- package/dist/assethandler/pages/ItilItilhubPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ItilItilhubPage.js +374 -0
- package/dist/assethandler/pages/ItilItilhubPage.js.map +1 -0
- package/dist/assethandler/pages/ItilProblemDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/ItilProblemDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ItilProblemDetailPage.js +177 -0
- package/dist/assethandler/pages/ItilProblemDetailPage.js.map +1 -0
- package/dist/assethandler/pages/ItilProblemManagementPage.d.ts +2 -0
- package/dist/assethandler/pages/ItilProblemManagementPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ItilProblemManagementPage.js +167 -0
- package/dist/assethandler/pages/ItilProblemManagementPage.js.map +1 -0
- package/dist/assethandler/pages/KnowledgeBasePage.d.ts +2 -0
- package/dist/assethandler/pages/KnowledgeBasePage.d.ts.map +1 -0
- package/dist/assethandler/pages/KnowledgeBasePage.js +116 -0
- package/dist/assethandler/pages/KnowledgeBasePage.js.map +1 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.d.ts +2 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.d.ts.map +1 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js +185 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js.map +1 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.d.ts +2 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.d.ts.map +1 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js +133 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.js +166 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.js.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceListPage.d.ts +2 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceListPage.d.ts.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceListPage.js +155 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceListPage.js.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.d.ts +2 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.d.ts.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.js +126 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.js.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.d.ts +2 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.d.ts.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.js +157 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.js.map +1 -0
- package/dist/assethandler/pages/OperationsMaintenanceDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/OperationsMaintenanceDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js +179 -0
- package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js.map +1 -0
- package/dist/assethandler/pages/OperationsOperationsHubPage.d.ts +2 -0
- package/dist/assethandler/pages/OperationsOperationsHubPage.d.ts.map +1 -0
- package/dist/assethandler/pages/OperationsOperationsHubPage.js +291 -0
- package/dist/assethandler/pages/OperationsOperationsHubPage.js.map +1 -0
- package/dist/assethandler/pages/OperationsWorkOrderDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/OperationsWorkOrderDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js +172 -0
- package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js.map +1 -0
- package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.d.ts +2 -0
- package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.d.ts.map +1 -0
- package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js +203 -0
- package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js.map +1 -0
- package/dist/assethandler/pages/ProvenancePage.d.ts +2 -0
- package/dist/assethandler/pages/ProvenancePage.d.ts.map +1 -0
- package/dist/assethandler/pages/ProvenancePage.js +118 -0
- package/dist/assethandler/pages/ProvenancePage.js.map +1 -0
- package/dist/assethandler/pages/ReportsReportBuilderPage.d.ts +2 -0
- package/dist/assethandler/pages/ReportsReportBuilderPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ReportsReportBuilderPage.js +201 -0
- package/dist/assethandler/pages/ReportsReportBuilderPage.js.map +1 -0
- package/dist/assethandler/pages/ReportsReportsDashboardPage.d.ts +2 -0
- package/dist/assethandler/pages/ReportsReportsDashboardPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ReportsReportsDashboardPage.js +201 -0
- package/dist/assethandler/pages/ReportsReportsDashboardPage.js.map +1 -0
- package/dist/assethandler/pages/ReportsReportsListPage.d.ts +2 -0
- package/dist/assethandler/pages/ReportsReportsListPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ReportsReportsListPage.js +128 -0
- package/dist/assethandler/pages/ReportsReportsListPage.js.map +1 -0
- package/dist/assethandler/pages/SamLicensesPage.d.ts +2 -0
- package/dist/assethandler/pages/SamLicensesPage.d.ts.map +1 -0
- package/dist/assethandler/pages/SamLicensesPage.js +79 -0
- package/dist/assethandler/pages/SamLicensesPage.js.map +1 -0
- package/dist/assethandler/pages/SecurityComplianceDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/SecurityComplianceDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/SecurityComplianceDetailPage.js +109 -0
- package/dist/assethandler/pages/SecurityComplianceDetailPage.js.map +1 -0
- package/dist/assethandler/pages/SecurityPolicyDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/SecurityPolicyDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/SecurityPolicyDetailPage.js +133 -0
- package/dist/assethandler/pages/SecurityPolicyDetailPage.js.map +1 -0
- package/dist/assethandler/pages/SecurityScheduleBackupPage.d.ts +2 -0
- package/dist/assethandler/pages/SecurityScheduleBackupPage.d.ts.map +1 -0
- package/dist/assethandler/pages/SecurityScheduleBackupPage.js +143 -0
- package/dist/assethandler/pages/SecurityScheduleBackupPage.js.map +1 -0
- package/dist/assethandler/pages/SecuritySecurityEventDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/SecuritySecurityEventDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js +135 -0
- package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js.map +1 -0
- package/dist/assethandler/pages/SecuritySecurityHubPage.d.ts +2 -0
- package/dist/assethandler/pages/SecuritySecurityHubPage.d.ts.map +1 -0
- package/dist/assethandler/pages/SecuritySecurityHubPage.js +355 -0
- package/dist/assethandler/pages/SecuritySecurityHubPage.js.map +1 -0
- package/dist/assethandler/pages/TransactionsTransactionDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/TransactionsTransactionDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/TransactionsTransactionDetailPage.js +281 -0
- package/dist/assethandler/pages/TransactionsTransactionDetailPage.js.map +1 -0
- package/dist/assethandler/pages/TransactionsTransactionListPage.d.ts +2 -0
- package/dist/assethandler/pages/TransactionsTransactionListPage.d.ts.map +1 -0
- package/dist/assethandler/pages/TransactionsTransactionListPage.js +220 -0
- package/dist/assethandler/pages/TransactionsTransactionListPage.js.map +1 -0
- package/dist/assethandler/pages/UsersPage.d.ts +2 -0
- package/dist/assethandler/pages/UsersPage.d.ts.map +1 -0
- package/dist/assethandler/pages/UsersPage.js +183 -0
- package/dist/assethandler/pages/UsersPage.js.map +1 -0
- package/dist/assethandler/pages/UsersUserCreatePage.d.ts +2 -0
- package/dist/assethandler/pages/UsersUserCreatePage.d.ts.map +1 -0
- package/dist/assethandler/pages/UsersUserCreatePage.js +213 -0
- package/dist/assethandler/pages/UsersUserCreatePage.js.map +1 -0
- package/dist/assethandler/pages/UsersUserManagementHubPage.d.ts +2 -0
- package/dist/assethandler/pages/UsersUserManagementHubPage.d.ts.map +1 -0
- package/dist/assethandler/pages/UsersUserManagementHubPage.js +325 -0
- package/dist/assethandler/pages/UsersUserManagementHubPage.js.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.d.ts +2 -0
- package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.d.ts.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.js +246 -0
- package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.js.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.d.ts +2 -0
- package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.d.ts.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js +188 -0
- package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowListPage.d.ts +2 -0
- package/dist/assethandler/pages/WorkflowsWorkflowListPage.d.ts.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowListPage.js +163 -0
- package/dist/assethandler/pages/WorkflowsWorkflowListPage.js.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.d.ts +2 -0
- package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.d.ts.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js +158 -0
- package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js.map +1 -0
- package/dist/assethandler/providers/AssetHandlerProvider.d.ts +6 -0
- package/dist/assethandler/providers/AssetHandlerProvider.d.ts.map +1 -0
- package/dist/assethandler/providers/AssetHandlerProvider.js +214 -0
- package/dist/assethandler/providers/AssetHandlerProvider.js.map +1 -0
- package/dist/assethandler/store/assethandlerStore.d.ts +635 -0
- package/dist/assethandler/store/assethandlerStore.d.ts.map +1 -0
- package/dist/assethandler/store/assethandlerStore.js +2337 -0
- package/dist/assethandler/store/assethandlerStore.js.map +1 -0
- package/dist/assethandler/types/index.d.ts +56 -0
- package/dist/assethandler/types/index.d.ts.map +1 -0
- package/dist/assethandler/utils/cn.d.ts +4 -0
- package/dist/assethandler/utils/cn.d.ts.map +1 -0
- package/dist/assethandler/utils/i18n.d.ts +6 -0
- package/dist/assethandler/utils/i18n.d.ts.map +1 -0
- package/dist/assethandler/utils/i18n.js +9 -0
- package/dist/assethandler/utils/i18n.js.map +1 -0
- package/dist/assethandler/utils/navigation.d.ts +2 -0
- package/dist/assethandler/utils/navigation.d.ts.map +1 -0
- package/dist/assethandler/utils/navigation.js +8 -0
- package/dist/assethandler/utils/navigation.js.map +1 -0
- package/dist/dev/main.d.ts +2 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +20716 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +210 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +53363 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/package.json +108 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
|
|
2
|
+
import { BarChart3 as t, DollarSign as n, Package as r, TrendingDown as i } from "lucide-react";
|
|
3
|
+
import { Badge as a, Card as o, CardContent as s, CardHeader as c, CardTitle as l, Table as u, TableBody as d, TableCell as f, TableHead as p, TableHeader as m, TableRow as h } from "@burdenoff/fe-libs/ui";
|
|
4
|
+
import { jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
5
|
+
//#region src/assethandler/pages/PortfolioPortfolioOverviewPage.tsx
|
|
6
|
+
function v() {
|
|
7
|
+
let { portfolio: v } = e(), y = v.totalValue > 0 ? Math.round((v.totalValue - v.depreciatedValue) / v.totalValue * 100) : 0, b = (e) => e >= 1e6 ? `$${(e / 1e6).toFixed(2)}M` : `$${e.toLocaleString()}`, x = Math.max(...v.byCategory.map((e) => e.value), 1), S = Math.max(...v.depreciationTrend.map((e) => e.value), 1), C = Math.max(...v.acquisitionTrend.map((e) => e.value), 1);
|
|
8
|
+
return /* @__PURE__ */ _("div", {
|
|
9
|
+
className: "space-y-6 p-6",
|
|
10
|
+
children: [
|
|
11
|
+
/* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("h1", {
|
|
12
|
+
className: "text-2xl font-semibold",
|
|
13
|
+
children: "Portfolio Overview"
|
|
14
|
+
}), /* @__PURE__ */ g("p", {
|
|
15
|
+
className: "text-sm text-muted-foreground",
|
|
16
|
+
children: "Comprehensive view of your asset portfolio, valuations, and trends."
|
|
17
|
+
})] }),
|
|
18
|
+
/* @__PURE__ */ _("div", {
|
|
19
|
+
className: "grid gap-4 md:grid-cols-4",
|
|
20
|
+
children: [
|
|
21
|
+
/* @__PURE__ */ _(o, { children: [/* @__PURE__ */ _(c, {
|
|
22
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
23
|
+
children: [/* @__PURE__ */ g(l, {
|
|
24
|
+
className: "text-sm font-medium",
|
|
25
|
+
children: "Total Assets"
|
|
26
|
+
}), /* @__PURE__ */ g(r, { className: "h-4 w-4 text-muted-foreground" })]
|
|
27
|
+
}), /* @__PURE__ */ _(s, { children: [/* @__PURE__ */ g("div", {
|
|
28
|
+
className: "text-2xl font-bold",
|
|
29
|
+
children: v.totalAssets.toLocaleString()
|
|
30
|
+
}), /* @__PURE__ */ g("p", {
|
|
31
|
+
className: "text-xs text-muted-foreground",
|
|
32
|
+
children: "Across all categories"
|
|
33
|
+
})] })] }),
|
|
34
|
+
/* @__PURE__ */ _(o, { children: [/* @__PURE__ */ _(c, {
|
|
35
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
36
|
+
children: [/* @__PURE__ */ g(l, {
|
|
37
|
+
className: "text-sm font-medium",
|
|
38
|
+
children: "Total Value"
|
|
39
|
+
}), /* @__PURE__ */ g(n, { className: "h-4 w-4 text-green-500" })]
|
|
40
|
+
}), /* @__PURE__ */ _(s, { children: [/* @__PURE__ */ g("div", {
|
|
41
|
+
className: "text-2xl font-bold",
|
|
42
|
+
children: b(v.totalValue)
|
|
43
|
+
}), /* @__PURE__ */ g("p", {
|
|
44
|
+
className: "text-xs text-muted-foreground",
|
|
45
|
+
children: "Original purchase value"
|
|
46
|
+
})] })] }),
|
|
47
|
+
/* @__PURE__ */ _(o, { children: [/* @__PURE__ */ _(c, {
|
|
48
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
49
|
+
children: [/* @__PURE__ */ g(l, {
|
|
50
|
+
className: "text-sm font-medium",
|
|
51
|
+
children: "Current Value"
|
|
52
|
+
}), /* @__PURE__ */ g(i, { className: "h-4 w-4 text-yellow-500" })]
|
|
53
|
+
}), /* @__PURE__ */ _(s, { children: [/* @__PURE__ */ g("div", {
|
|
54
|
+
className: "text-2xl font-bold",
|
|
55
|
+
children: b(v.depreciatedValue)
|
|
56
|
+
}), /* @__PURE__ */ g("p", {
|
|
57
|
+
className: "text-xs text-muted-foreground",
|
|
58
|
+
children: "After depreciation"
|
|
59
|
+
})] })] }),
|
|
60
|
+
/* @__PURE__ */ _(o, { children: [/* @__PURE__ */ _(c, {
|
|
61
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
62
|
+
children: [/* @__PURE__ */ g(l, {
|
|
63
|
+
className: "text-sm font-medium",
|
|
64
|
+
children: "Depreciation"
|
|
65
|
+
}), /* @__PURE__ */ g(t, { className: "h-4 w-4 text-muted-foreground" })]
|
|
66
|
+
}), /* @__PURE__ */ _(s, { children: [/* @__PURE__ */ _("div", {
|
|
67
|
+
className: "text-2xl font-bold",
|
|
68
|
+
children: [y, "%"]
|
|
69
|
+
}), /* @__PURE__ */ _("p", {
|
|
70
|
+
className: "text-xs text-muted-foreground",
|
|
71
|
+
children: [b(v.totalValue - v.depreciatedValue), " total loss"]
|
|
72
|
+
})] })] })
|
|
73
|
+
]
|
|
74
|
+
}),
|
|
75
|
+
/* @__PURE__ */ _("div", {
|
|
76
|
+
className: "grid gap-6 md:grid-cols-2",
|
|
77
|
+
children: [
|
|
78
|
+
/* @__PURE__ */ _(o, { children: [/* @__PURE__ */ g(c, { children: /* @__PURE__ */ g(l, { children: "Assets by Category" }) }), /* @__PURE__ */ g(s, {
|
|
79
|
+
className: "space-y-3",
|
|
80
|
+
children: v.byCategory.map((e) => /* @__PURE__ */ _("div", {
|
|
81
|
+
className: "space-y-1",
|
|
82
|
+
children: [/* @__PURE__ */ _("div", {
|
|
83
|
+
className: "flex items-center justify-between text-sm",
|
|
84
|
+
children: [/* @__PURE__ */ g("span", {
|
|
85
|
+
className: "font-medium capitalize",
|
|
86
|
+
children: e.category.replace(/_/g, " ")
|
|
87
|
+
}), /* @__PURE__ */ _("span", {
|
|
88
|
+
className: "text-muted-foreground",
|
|
89
|
+
children: [
|
|
90
|
+
e.count,
|
|
91
|
+
" assets - ",
|
|
92
|
+
b(e.value)
|
|
93
|
+
]
|
|
94
|
+
})]
|
|
95
|
+
}), /* @__PURE__ */ g("div", {
|
|
96
|
+
className: "h-3 bg-muted rounded overflow-hidden",
|
|
97
|
+
children: /* @__PURE__ */ g("div", {
|
|
98
|
+
className: "h-3 bg-primary rounded",
|
|
99
|
+
style: { width: `${Math.round(e.value / x * 100)}%` }
|
|
100
|
+
})
|
|
101
|
+
})]
|
|
102
|
+
}, e.category))
|
|
103
|
+
})] }),
|
|
104
|
+
/* @__PURE__ */ _(o, { children: [/* @__PURE__ */ g(c, { children: /* @__PURE__ */ g(l, { children: "Assets by Department" }) }), /* @__PURE__ */ g(s, { children: /* @__PURE__ */ _(u, { children: [/* @__PURE__ */ g(m, { children: /* @__PURE__ */ _(h, { children: [
|
|
105
|
+
/* @__PURE__ */ g(p, { children: "Department" }),
|
|
106
|
+
/* @__PURE__ */ g(p, {
|
|
107
|
+
className: "text-right",
|
|
108
|
+
children: "Count"
|
|
109
|
+
}),
|
|
110
|
+
/* @__PURE__ */ g(p, {
|
|
111
|
+
className: "text-right",
|
|
112
|
+
children: "Value"
|
|
113
|
+
})
|
|
114
|
+
] }) }), /* @__PURE__ */ g(d, { children: v.byDepartment.map((e) => /* @__PURE__ */ _(h, { children: [
|
|
115
|
+
/* @__PURE__ */ g(f, {
|
|
116
|
+
className: "font-medium",
|
|
117
|
+
children: e.department
|
|
118
|
+
}),
|
|
119
|
+
/* @__PURE__ */ g(f, {
|
|
120
|
+
className: "text-right",
|
|
121
|
+
children: e.count
|
|
122
|
+
}),
|
|
123
|
+
/* @__PURE__ */ g(f, {
|
|
124
|
+
className: "text-right",
|
|
125
|
+
children: b(e.value)
|
|
126
|
+
})
|
|
127
|
+
] }, e.department)) })] }) })] }),
|
|
128
|
+
/* @__PURE__ */ _(o, { children: [/* @__PURE__ */ g(c, { children: /* @__PURE__ */ g(l, { children: "Assets by Status" }) }), /* @__PURE__ */ g(s, { children: /* @__PURE__ */ g("div", {
|
|
129
|
+
className: "flex flex-wrap gap-3",
|
|
130
|
+
children: v.byStatus.map((e) => /* @__PURE__ */ _("div", {
|
|
131
|
+
className: "flex items-center gap-2 rounded-lg border p-3",
|
|
132
|
+
children: [/* @__PURE__ */ g(a, {
|
|
133
|
+
variant: e.status === "active" ? "default" : e.status === "disposed" ? "destructive" : "secondary",
|
|
134
|
+
className: "capitalize",
|
|
135
|
+
children: e.status.replace(/_/g, " ")
|
|
136
|
+
}), /* @__PURE__ */ g("span", {
|
|
137
|
+
className: "text-lg font-bold",
|
|
138
|
+
children: e.count
|
|
139
|
+
})]
|
|
140
|
+
}, e.status))
|
|
141
|
+
}) })] }),
|
|
142
|
+
/* @__PURE__ */ _(o, { children: [/* @__PURE__ */ g(c, { children: /* @__PURE__ */ g(l, { children: "Depreciation Trend" }) }), /* @__PURE__ */ g(s, {
|
|
143
|
+
className: "space-y-2",
|
|
144
|
+
children: v.depreciationTrend.map((e) => /* @__PURE__ */ _("div", {
|
|
145
|
+
className: "flex items-center gap-3",
|
|
146
|
+
children: [
|
|
147
|
+
/* @__PURE__ */ g("span", {
|
|
148
|
+
className: "w-10 text-xs text-muted-foreground",
|
|
149
|
+
children: e.month
|
|
150
|
+
}),
|
|
151
|
+
/* @__PURE__ */ g("div", {
|
|
152
|
+
className: "flex-1 h-4 bg-muted rounded overflow-hidden",
|
|
153
|
+
children: /* @__PURE__ */ g("div", {
|
|
154
|
+
className: "h-4 bg-yellow-500 rounded",
|
|
155
|
+
style: { width: `${Math.round(e.value / S * 100)}%` }
|
|
156
|
+
})
|
|
157
|
+
}),
|
|
158
|
+
/* @__PURE__ */ g("span", {
|
|
159
|
+
className: "text-xs font-medium w-16 text-right",
|
|
160
|
+
children: b(e.value)
|
|
161
|
+
})
|
|
162
|
+
]
|
|
163
|
+
}, e.month))
|
|
164
|
+
})] }),
|
|
165
|
+
/* @__PURE__ */ _(o, {
|
|
166
|
+
className: "md:col-span-2",
|
|
167
|
+
children: [/* @__PURE__ */ g(c, { children: /* @__PURE__ */ g(l, { children: "Acquisition Trend" }) }), /* @__PURE__ */ g(s, {
|
|
168
|
+
className: "space-y-2",
|
|
169
|
+
children: v.acquisitionTrend.map((e) => /* @__PURE__ */ _("div", {
|
|
170
|
+
className: "flex items-center gap-3",
|
|
171
|
+
children: [
|
|
172
|
+
/* @__PURE__ */ g("span", {
|
|
173
|
+
className: "w-10 text-xs text-muted-foreground",
|
|
174
|
+
children: e.month
|
|
175
|
+
}),
|
|
176
|
+
/* @__PURE__ */ g("div", {
|
|
177
|
+
className: "flex-1 h-4 bg-muted rounded overflow-hidden",
|
|
178
|
+
children: /* @__PURE__ */ g("div", {
|
|
179
|
+
className: "h-4 bg-green-500 rounded",
|
|
180
|
+
style: { width: `${Math.round(e.value / C * 100)}%` }
|
|
181
|
+
})
|
|
182
|
+
}),
|
|
183
|
+
/* @__PURE__ */ _("span", {
|
|
184
|
+
className: "text-xs w-12 text-right",
|
|
185
|
+
children: [e.count, " units"]
|
|
186
|
+
}),
|
|
187
|
+
/* @__PURE__ */ g("span", {
|
|
188
|
+
className: "text-xs font-medium w-16 text-right",
|
|
189
|
+
children: b(e.value)
|
|
190
|
+
})
|
|
191
|
+
]
|
|
192
|
+
}, e.month))
|
|
193
|
+
})]
|
|
194
|
+
})
|
|
195
|
+
]
|
|
196
|
+
})
|
|
197
|
+
]
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
//#endregion
|
|
201
|
+
export { v as PortfolioPortfolioOverviewPage };
|
|
202
|
+
|
|
203
|
+
//# sourceMappingURL=PortfolioPortfolioOverviewPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PortfolioPortfolioOverviewPage.js","names":[],"sources":["../../../src/assethandler/pages/PortfolioPortfolioOverviewPage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@burdenoff/fe-libs/ui';\nimport { Package, DollarSign, TrendingDown, BarChart3 } from 'lucide-react';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nexport function PortfolioPortfolioOverviewPage() {\n const { portfolio } = useAssetHandlerStore();\n\n const depreciationPct =\n portfolio.totalValue > 0\n ? Math.round(\n ((portfolio.totalValue - portfolio.depreciatedValue) / portfolio.totalValue) * 100\n )\n : 0;\n\n const formatCurrency = (val: number) =>\n val >= 1000000 ? `$${(val / 1000000).toFixed(2)}M` : `$${val.toLocaleString()}`;\n\n const maxCategoryValue = Math.max(...portfolio.byCategory.map((c) => c.value), 1);\n const maxDepreciation = Math.max(...portfolio.depreciationTrend.map((d) => d.value), 1);\n const maxAcquisitionValue = Math.max(...portfolio.acquisitionTrend.map((a) => a.value), 1);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Portfolio Overview</h1>\n <p className=\"text-sm text-muted-foreground\">\n Comprehensive view of your asset portfolio, valuations, and trends.\n </p>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Total Assets</CardTitle>\n <Package className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{portfolio.totalAssets.toLocaleString()}</div>\n <p className=\"text-xs text-muted-foreground\">Across all categories</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Total Value</CardTitle>\n <DollarSign className=\"h-4 w-4 text-green-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{formatCurrency(portfolio.totalValue)}</div>\n <p className=\"text-xs text-muted-foreground\">Original purchase value</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Current Value</CardTitle>\n <TrendingDown className=\"h-4 w-4 text-yellow-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{formatCurrency(portfolio.depreciatedValue)}</div>\n <p className=\"text-xs text-muted-foreground\">After depreciation</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Depreciation</CardTitle>\n <BarChart3 className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{depreciationPct}%</div>\n <p className=\"text-xs text-muted-foreground\">\n {formatCurrency(portfolio.totalValue - portfolio.depreciatedValue)} total loss\n </p>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"grid gap-6 md:grid-cols-2\">\n <Card>\n <CardHeader>\n <CardTitle>Assets by Category</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {portfolio.byCategory.map((cat) => (\n <div key={cat.category} className=\"space-y-1\">\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"font-medium capitalize\">{cat.category.replace(/_/g, ' ')}</span>\n <span className=\"text-muted-foreground\">\n {cat.count} assets - {formatCurrency(cat.value)}\n </span>\n </div>\n <div className=\"h-3 bg-muted rounded overflow-hidden\">\n <div\n className=\"h-3 bg-primary rounded\"\n style={{ width: `${Math.round((cat.value / maxCategoryValue) * 100)}%` }}\n />\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Assets by Department</CardTitle>\n </CardHeader>\n <CardContent>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Department</TableHead>\n <TableHead className=\"text-right\">Count</TableHead>\n <TableHead className=\"text-right\">Value</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {portfolio.byDepartment.map((dept) => (\n <TableRow key={dept.department}>\n <TableCell className=\"font-medium\">{dept.department}</TableCell>\n <TableCell className=\"text-right\">{dept.count}</TableCell>\n <TableCell className=\"text-right\">{formatCurrency(dept.value)}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Assets by Status</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-wrap gap-3\">\n {portfolio.byStatus.map((s) => (\n <div key={s.status} className=\"flex items-center gap-2 rounded-lg border p-3\">\n <Badge\n variant={\n s.status === 'active'\n ? 'default'\n : s.status === 'disposed'\n ? 'destructive'\n : 'secondary'\n }\n className=\"capitalize\"\n >\n {s.status.replace(/_/g, ' ')}\n </Badge>\n <span className=\"text-lg font-bold\">{s.count}</span>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Depreciation Trend</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n {portfolio.depreciationTrend.map((d) => (\n <div key={d.month} className=\"flex items-center gap-3\">\n <span className=\"w-10 text-xs text-muted-foreground\">{d.month}</span>\n <div className=\"flex-1 h-4 bg-muted rounded overflow-hidden\">\n <div\n className=\"h-4 bg-yellow-500 rounded\"\n style={{ width: `${Math.round((d.value / maxDepreciation) * 100)}%` }}\n />\n </div>\n <span className=\"text-xs font-medium w-16 text-right\">\n {formatCurrency(d.value)}\n </span>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card className=\"md:col-span-2\">\n <CardHeader>\n <CardTitle>Acquisition Trend</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n {portfolio.acquisitionTrend.map((a) => (\n <div key={a.month} className=\"flex items-center gap-3\">\n <span className=\"w-10 text-xs text-muted-foreground\">{a.month}</span>\n <div className=\"flex-1 h-4 bg-muted rounded overflow-hidden\">\n <div\n className=\"h-4 bg-green-500 rounded\"\n style={{ width: `${Math.round((a.value / maxAcquisitionValue) * 100)}%` }}\n />\n </div>\n <span className=\"text-xs w-12 text-right\">{a.count} units</span>\n <span className=\"text-xs font-medium w-16 text-right\">\n {formatCurrency(a.value)}\n </span>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProvenancePage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/ProvenancePage.tsx"],"names":[],"mappings":"AA2BA,wBAAgB,cAAc,4CA+F7B"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { useState as e } from "react";
|
|
2
|
+
import { ShieldCheck as t } from "lucide-react";
|
|
3
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
|
+
import { gql as i } from "@apollo/client";
|
|
5
|
+
import { useMutation as a, useQuery as o } from "@apollo/client/react";
|
|
6
|
+
//#region src/assethandler/pages/ProvenancePage.tsx
|
|
7
|
+
var s = i`
|
|
8
|
+
query AssetHandlerProvenanceRecords {
|
|
9
|
+
provenanceRecords {
|
|
10
|
+
id
|
|
11
|
+
assetId
|
|
12
|
+
hash
|
|
13
|
+
chainNetwork
|
|
14
|
+
txHash
|
|
15
|
+
attestedAt
|
|
16
|
+
attestedBy
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
`, c = i`
|
|
20
|
+
mutation AssetHandlerRecordProvenance($input: RecordProvenanceInput!) {
|
|
21
|
+
recordProvenance(input: $input) {
|
|
22
|
+
id
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
`;
|
|
26
|
+
function l() {
|
|
27
|
+
let [i, l] = e("AST-001"), [u, d] = e("polygon-amoy"), { data: f, loading: p, refetch: m } = o(s, { fetchPolicy: "cache-and-network" }), [h, { loading: g }] = a(c, { onCompleted: () => {
|
|
28
|
+
m();
|
|
29
|
+
} }), _ = f?.provenanceRecords ?? [];
|
|
30
|
+
return /* @__PURE__ */ r("div", {
|
|
31
|
+
className: "space-y-4 p-4",
|
|
32
|
+
children: [
|
|
33
|
+
/* @__PURE__ */ r("h1", {
|
|
34
|
+
className: "flex items-center gap-2 text-2xl font-semibold",
|
|
35
|
+
children: [/* @__PURE__ */ n(t, { className: "h-6 w-6" }), " Provenance"]
|
|
36
|
+
}),
|
|
37
|
+
/* @__PURE__ */ n("p", {
|
|
38
|
+
className: "text-muted-foreground",
|
|
39
|
+
children: "Verify immutable asset provenance and lifecycle attestations."
|
|
40
|
+
}),
|
|
41
|
+
/* @__PURE__ */ r("form", {
|
|
42
|
+
className: "grid gap-3 rounded-lg border p-4 md:grid-cols-3",
|
|
43
|
+
onSubmit: (e) => {
|
|
44
|
+
e.preventDefault(), h({ variables: { input: {
|
|
45
|
+
assetId: i,
|
|
46
|
+
hash: `${i}-${Date.now()}`,
|
|
47
|
+
chainNetwork: u,
|
|
48
|
+
metadata: { source: "assethandler-ui" }
|
|
49
|
+
} } });
|
|
50
|
+
},
|
|
51
|
+
children: [
|
|
52
|
+
/* @__PURE__ */ n("input", {
|
|
53
|
+
className: "rounded-md border px-3 py-2",
|
|
54
|
+
value: i,
|
|
55
|
+
onChange: (e) => l(e.target.value)
|
|
56
|
+
}),
|
|
57
|
+
/* @__PURE__ */ n("input", {
|
|
58
|
+
className: "rounded-md border px-3 py-2",
|
|
59
|
+
value: u,
|
|
60
|
+
onChange: (e) => d(e.target.value)
|
|
61
|
+
}),
|
|
62
|
+
/* @__PURE__ */ n("button", {
|
|
63
|
+
className: "rounded-md bg-primary px-3 py-2 text-primary-foreground",
|
|
64
|
+
disabled: g,
|
|
65
|
+
type: "submit",
|
|
66
|
+
children: g ? "Recording..." : "Record Attestation"
|
|
67
|
+
})
|
|
68
|
+
]
|
|
69
|
+
}),
|
|
70
|
+
/* @__PURE__ */ r("div", {
|
|
71
|
+
className: "rounded-lg border",
|
|
72
|
+
children: [
|
|
73
|
+
/* @__PURE__ */ r("div", {
|
|
74
|
+
className: "grid grid-cols-5 gap-3 border-b px-4 py-3 text-xs font-semibold uppercase tracking-wide text-muted-foreground",
|
|
75
|
+
children: [
|
|
76
|
+
/* @__PURE__ */ n("span", { children: "Asset" }),
|
|
77
|
+
/* @__PURE__ */ n("span", { children: "Network" }),
|
|
78
|
+
/* @__PURE__ */ n("span", { children: "Hash" }),
|
|
79
|
+
/* @__PURE__ */ n("span", { children: "Tx" }),
|
|
80
|
+
/* @__PURE__ */ n("span", { children: "Attested At" })
|
|
81
|
+
]
|
|
82
|
+
}),
|
|
83
|
+
p && _.length === 0 ? /* @__PURE__ */ n("div", {
|
|
84
|
+
className: "px-4 py-4 text-sm text-muted-foreground",
|
|
85
|
+
children: "Loading records..."
|
|
86
|
+
}) : null,
|
|
87
|
+
!p && _.length === 0 ? /* @__PURE__ */ n("div", {
|
|
88
|
+
className: "px-4 py-4 text-sm text-muted-foreground",
|
|
89
|
+
children: "No provenance records found."
|
|
90
|
+
}) : null,
|
|
91
|
+
_.map((e) => /* @__PURE__ */ r("div", {
|
|
92
|
+
className: "grid grid-cols-5 gap-3 border-b px-4 py-3 text-sm last:border-b-0",
|
|
93
|
+
children: [
|
|
94
|
+
/* @__PURE__ */ n("span", { children: e.assetId }),
|
|
95
|
+
/* @__PURE__ */ n("span", { children: e.chainNetwork }),
|
|
96
|
+
/* @__PURE__ */ n("span", {
|
|
97
|
+
className: "truncate",
|
|
98
|
+
children: e.hash
|
|
99
|
+
}),
|
|
100
|
+
/* @__PURE__ */ n("span", {
|
|
101
|
+
className: "truncate text-muted-foreground",
|
|
102
|
+
children: e.txHash ?? "pending"
|
|
103
|
+
}),
|
|
104
|
+
/* @__PURE__ */ n("span", {
|
|
105
|
+
className: "text-muted-foreground",
|
|
106
|
+
children: new Date(e.attestedAt).toLocaleString()
|
|
107
|
+
})
|
|
108
|
+
]
|
|
109
|
+
}, e.id))
|
|
110
|
+
]
|
|
111
|
+
})
|
|
112
|
+
]
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
//#endregion
|
|
116
|
+
export { l as ProvenancePage };
|
|
117
|
+
|
|
118
|
+
//# sourceMappingURL=ProvenancePage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProvenancePage.js","names":[],"sources":["../../../src/assethandler/pages/ProvenancePage.tsx"],"sourcesContent":["import { ShieldCheck } from 'lucide-react';\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\n\nconst PROVENANCE_RECORDS_QUERY = gql`\n query AssetHandlerProvenanceRecords {\n provenanceRecords {\n id\n assetId\n hash\n chainNetwork\n txHash\n attestedAt\n attestedBy\n }\n }\n`;\n\nconst RECORD_PROVENANCE_MUTATION = gql`\n mutation AssetHandlerRecordProvenance($input: RecordProvenanceInput!) {\n recordProvenance(input: $input) {\n id\n }\n }\n`;\n\nexport function ProvenancePage() {\n const [assetId, setAssetId] = useState('AST-001');\n const [chainNetwork, setChainNetwork] = useState('polygon-amoy');\n\n const { data, loading, refetch } = useQuery<{\n provenanceRecords: Array<{\n id: string;\n assetId: string;\n hash: string;\n chainNetwork: string;\n txHash: string | null;\n attestedAt: string;\n attestedBy: string;\n }>;\n }>(PROVENANCE_RECORDS_QUERY, { fetchPolicy: 'cache-and-network' });\n\n const [recordProvenance, { loading: recording }] = useMutation(RECORD_PROVENANCE_MUTATION, {\n onCompleted: () => {\n void refetch();\n },\n });\n\n const records = data?.provenanceRecords ?? [];\n\n return (\n <div className=\"space-y-4 p-4\">\n <h1 className=\"flex items-center gap-2 text-2xl font-semibold\">\n <ShieldCheck className=\"h-6 w-6\" /> Provenance\n </h1>\n <p className=\"text-muted-foreground\">\n Verify immutable asset provenance and lifecycle attestations.\n </p>\n <form\n className=\"grid gap-3 rounded-lg border p-4 md:grid-cols-3\"\n onSubmit={(event) => {\n event.preventDefault();\n const hash = `${assetId}-${Date.now()}`;\n void recordProvenance({\n variables: {\n input: { assetId, hash, chainNetwork, metadata: { source: 'assethandler-ui' } },\n },\n });\n }}\n >\n <input\n className=\"rounded-md border px-3 py-2\"\n value={assetId}\n onChange={(event) => setAssetId(event.target.value)}\n />\n <input\n className=\"rounded-md border px-3 py-2\"\n value={chainNetwork}\n onChange={(event) => setChainNetwork(event.target.value)}\n />\n <button\n className=\"rounded-md bg-primary px-3 py-2 text-primary-foreground\"\n disabled={recording}\n type=\"submit\"\n >\n {recording ? 'Recording...' : 'Record Attestation'}\n </button>\n </form>\n <div className=\"rounded-lg border\">\n <div className=\"grid grid-cols-5 gap-3 border-b px-4 py-3 text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n <span>Asset</span>\n <span>Network</span>\n <span>Hash</span>\n <span>Tx</span>\n <span>Attested At</span>\n </div>\n {loading && records.length === 0 ? (\n <div className=\"px-4 py-4 text-sm text-muted-foreground\">Loading records...</div>\n ) : null}\n {!loading && records.length === 0 ? (\n <div className=\"px-4 py-4 text-sm text-muted-foreground\">\n No provenance records found.\n </div>\n ) : null}\n {records.map((record) => (\n <div\n key={record.id}\n className=\"grid grid-cols-5 gap-3 border-b px-4 py-3 text-sm last:border-b-0\"\n >\n <span>{record.assetId}</span>\n <span>{record.chainNetwork}</span>\n <span className=\"truncate\">{record.hash}</span>\n <span className=\"truncate text-muted-foreground\">{record.txHash ?? 'pending'}</span>\n <span className=\"text-muted-foreground\">\n {new Date(record.attestedAt).toLocaleString()}\n </span>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAKA,IAAM,IAA2B,CAAG;;;;;;;;;;;;GAc9B,IAA6B,CAAG;;;;;;;AAQtC,SAAgB,IAAiB;CAC/B,IAAM,CAAC,GAAS,KAAc,EAAS,UAAU,EAC3C,CAAC,GAAc,KAAmB,EAAS,eAAe,EAE1D,EAAE,SAAM,YAAS,eAAY,EAUhC,GAA0B,EAAE,aAAa,qBAAqB,CAAC,EAE5D,CAAC,GAAkB,EAAE,SAAS,OAAe,EAAY,GAA4B,EACzF,mBAAmB;AACZ,KAAS;IAEjB,CAAC,EAEI,IAAU,GAAM,qBAAqB,EAAE;AAE7C,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,MAAD;IAAI,WAAU;cAAd,CACE,kBAAC,GAAD,EAAa,WAAU,WAAY,CAAA,EAAA,cAChC;;GACL,kBAAC,KAAD;IAAG,WAAU;cAAwB;IAEjC,CAAA;GACJ,kBAAC,QAAD;IACE,WAAU;IACV,WAAW,MAAU;AAGd,KAFL,EAAM,gBAAgB,EAEjB,EAAiB,EACpB,WAAW,EACT,OAAO;MAAE;MAAS,MAHT,GAAG,EAAQ,GAAG,KAAK,KAAK;MAGT;MAAc,UAAU,EAAE,QAAQ,mBAAmB;MAAE,EAChF,EACF,CAAC;;cATN;KAYE,kBAAC,SAAD;MACE,WAAU;MACV,OAAO;MACP,WAAW,MAAU,EAAW,EAAM,OAAO,MAAM;MACnD,CAAA;KACF,kBAAC,SAAD;MACE,WAAU;MACV,OAAO;MACP,WAAW,MAAU,EAAgB,EAAM,OAAO,MAAM;MACxD,CAAA;KACF,kBAAC,UAAD;MACE,WAAU;MACV,UAAU;MACV,MAAK;gBAEJ,IAAY,iBAAiB;MACvB,CAAA;KACJ;;GACP,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,QAAD,EAAA,UAAM,SAAY,CAAA;OAClB,kBAAC,QAAD,EAAA,UAAM,WAAc,CAAA;OACpB,kBAAC,QAAD,EAAA,UAAM,QAAW,CAAA;OACjB,kBAAC,QAAD,EAAA,UAAM,MAAS,CAAA;OACf,kBAAC,QAAD,EAAA,UAAM,eAAkB,CAAA;OACpB;;KACL,KAAW,EAAQ,WAAW,IAC7B,kBAAC,OAAD;MAAK,WAAU;gBAA0C;MAAwB,CAAA,GAC/E;KACH,CAAC,KAAW,EAAQ,WAAW,IAC9B,kBAAC,OAAD;MAAK,WAAU;gBAA0C;MAEnD,CAAA,GACJ;KACH,EAAQ,KAAK,MACZ,kBAAC,OAAD;MAEE,WAAU;gBAFZ;OAIE,kBAAC,QAAD,EAAA,UAAO,EAAO,SAAe,CAAA;OAC7B,kBAAC,QAAD,EAAA,UAAO,EAAO,cAAoB,CAAA;OAClC,kBAAC,QAAD;QAAM,WAAU;kBAAY,EAAO;QAAY,CAAA;OAC/C,kBAAC,QAAD;QAAM,WAAU;kBAAkC,EAAO,UAAU;QAAiB,CAAA;OACpF,kBAAC,QAAD;QAAM,WAAU;kBACb,IAAI,KAAK,EAAO,WAAW,CAAC,gBAAgB;QACxC,CAAA;OACH;QAVC,EAAO,GAUR,CACN;KACE;;GACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportsReportBuilderPage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/ReportsReportBuilderPage.tsx"],"names":[],"mappings":"AAmBA,wBAAgB,wBAAwB,4CAkJvC"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { useState as e } from "react";
|
|
2
|
+
import { ArrowLeft as t, Play as n, Save as r } from "lucide-react";
|
|
3
|
+
import { Button as i, Card as a, CardContent as o, CardDescription as s, CardHeader as c, CardTitle as l, Input as u, Label as d, Select as f, SelectContent as p, SelectItem as m, SelectTrigger as h, SelectValue as g, Textarea as _ } from "@burdenoff/fe-libs/ui";
|
|
4
|
+
import { jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
5
|
+
//#region src/assethandler/pages/ReportsReportBuilderPage.tsx
|
|
6
|
+
function b() {
|
|
7
|
+
let [b, x] = e({
|
|
8
|
+
name: "",
|
|
9
|
+
description: "",
|
|
10
|
+
category: "Operational",
|
|
11
|
+
type: "chart",
|
|
12
|
+
schedule: "",
|
|
13
|
+
dataSource: "assets"
|
|
14
|
+
}), S = (e, t) => x((n) => ({
|
|
15
|
+
...n,
|
|
16
|
+
[e]: t
|
|
17
|
+
}));
|
|
18
|
+
return /* @__PURE__ */ y("div", {
|
|
19
|
+
className: "space-y-6 p-6 max-w-4xl",
|
|
20
|
+
children: [
|
|
21
|
+
/* @__PURE__ */ y("div", {
|
|
22
|
+
className: "flex items-center justify-between",
|
|
23
|
+
children: [/* @__PURE__ */ y("div", {
|
|
24
|
+
className: "flex items-center gap-4",
|
|
25
|
+
children: [/* @__PURE__ */ v(i, {
|
|
26
|
+
variant: "ghost",
|
|
27
|
+
size: "icon",
|
|
28
|
+
children: /* @__PURE__ */ v(t, { className: "h-4 w-4" })
|
|
29
|
+
}), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("h1", {
|
|
30
|
+
className: "text-2xl font-bold",
|
|
31
|
+
children: "Report Builder"
|
|
32
|
+
}), /* @__PURE__ */ v("p", {
|
|
33
|
+
className: "text-sm text-muted-foreground",
|
|
34
|
+
children: "Create custom reports and dashboards"
|
|
35
|
+
})] })]
|
|
36
|
+
}), /* @__PURE__ */ y("div", {
|
|
37
|
+
className: "flex gap-2",
|
|
38
|
+
children: [/* @__PURE__ */ y(i, {
|
|
39
|
+
variant: "outline",
|
|
40
|
+
size: "sm",
|
|
41
|
+
children: [/* @__PURE__ */ v(n, { className: "mr-2 h-4 w-4" }), "Preview"]
|
|
42
|
+
}), /* @__PURE__ */ y(i, {
|
|
43
|
+
size: "sm",
|
|
44
|
+
children: [/* @__PURE__ */ v(r, { className: "mr-2 h-4 w-4" }), "Save Report"]
|
|
45
|
+
})]
|
|
46
|
+
})]
|
|
47
|
+
}),
|
|
48
|
+
/* @__PURE__ */ y(a, { children: [/* @__PURE__ */ v(c, { children: /* @__PURE__ */ v(l, { children: "Report Configuration" }) }), /* @__PURE__ */ y(o, {
|
|
49
|
+
className: "space-y-4",
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ y("div", {
|
|
52
|
+
className: "grid gap-4 md:grid-cols-2",
|
|
53
|
+
children: [/* @__PURE__ */ y("div", {
|
|
54
|
+
className: "space-y-2",
|
|
55
|
+
children: [/* @__PURE__ */ v(d, { children: "Report Name *" }), /* @__PURE__ */ v(u, {
|
|
56
|
+
placeholder: "e.g., Monthly Asset Utilization",
|
|
57
|
+
value: b.name,
|
|
58
|
+
onChange: (e) => S("name", e.target.value)
|
|
59
|
+
})]
|
|
60
|
+
}), /* @__PURE__ */ y("div", {
|
|
61
|
+
className: "space-y-2",
|
|
62
|
+
children: [/* @__PURE__ */ v(d, { children: "Category" }), /* @__PURE__ */ y(f, {
|
|
63
|
+
value: b.category,
|
|
64
|
+
onValueChange: (e) => S("category", e),
|
|
65
|
+
children: [/* @__PURE__ */ v(h, { children: /* @__PURE__ */ v(g, {}) }), /* @__PURE__ */ y(p, { children: [
|
|
66
|
+
/* @__PURE__ */ v(m, {
|
|
67
|
+
value: "Operational",
|
|
68
|
+
children: "Operational"
|
|
69
|
+
}),
|
|
70
|
+
/* @__PURE__ */ v(m, {
|
|
71
|
+
value: "Financial",
|
|
72
|
+
children: "Financial"
|
|
73
|
+
}),
|
|
74
|
+
/* @__PURE__ */ v(m, {
|
|
75
|
+
value: "Compliance",
|
|
76
|
+
children: "Compliance"
|
|
77
|
+
}),
|
|
78
|
+
/* @__PURE__ */ v(m, {
|
|
79
|
+
value: "Performance",
|
|
80
|
+
children: "Performance"
|
|
81
|
+
}),
|
|
82
|
+
/* @__PURE__ */ v(m, {
|
|
83
|
+
value: "Inventory",
|
|
84
|
+
children: "Inventory"
|
|
85
|
+
})
|
|
86
|
+
] })]
|
|
87
|
+
})]
|
|
88
|
+
})]
|
|
89
|
+
}),
|
|
90
|
+
/* @__PURE__ */ y("div", {
|
|
91
|
+
className: "space-y-2",
|
|
92
|
+
children: [/* @__PURE__ */ v(d, { children: "Description" }), /* @__PURE__ */ v(_, {
|
|
93
|
+
placeholder: "What does this report show?",
|
|
94
|
+
value: b.description,
|
|
95
|
+
onChange: (e) => S("description", e.target.value),
|
|
96
|
+
rows: 3
|
|
97
|
+
})]
|
|
98
|
+
}),
|
|
99
|
+
/* @__PURE__ */ y("div", {
|
|
100
|
+
className: "grid gap-4 md:grid-cols-3",
|
|
101
|
+
children: [
|
|
102
|
+
/* @__PURE__ */ y("div", {
|
|
103
|
+
className: "space-y-2",
|
|
104
|
+
children: [/* @__PURE__ */ v(d, { children: "Report Type" }), /* @__PURE__ */ y(f, {
|
|
105
|
+
value: b.type,
|
|
106
|
+
onValueChange: (e) => S("type", e),
|
|
107
|
+
children: [/* @__PURE__ */ v(h, { children: /* @__PURE__ */ v(g, {}) }), /* @__PURE__ */ y(p, { children: [
|
|
108
|
+
/* @__PURE__ */ v(m, {
|
|
109
|
+
value: "chart",
|
|
110
|
+
children: "Chart"
|
|
111
|
+
}),
|
|
112
|
+
/* @__PURE__ */ v(m, {
|
|
113
|
+
value: "tabular",
|
|
114
|
+
children: "Tabular"
|
|
115
|
+
}),
|
|
116
|
+
/* @__PURE__ */ v(m, {
|
|
117
|
+
value: "dashboard",
|
|
118
|
+
children: "Dashboard"
|
|
119
|
+
}),
|
|
120
|
+
/* @__PURE__ */ v(m, {
|
|
121
|
+
value: "document",
|
|
122
|
+
children: "Document"
|
|
123
|
+
})
|
|
124
|
+
] })]
|
|
125
|
+
})]
|
|
126
|
+
}),
|
|
127
|
+
/* @__PURE__ */ y("div", {
|
|
128
|
+
className: "space-y-2",
|
|
129
|
+
children: [/* @__PURE__ */ v(d, { children: "Data Source" }), /* @__PURE__ */ y(f, {
|
|
130
|
+
value: b.dataSource,
|
|
131
|
+
onValueChange: (e) => S("dataSource", e),
|
|
132
|
+
children: [/* @__PURE__ */ v(h, { children: /* @__PURE__ */ v(g, {}) }), /* @__PURE__ */ y(p, { children: [
|
|
133
|
+
/* @__PURE__ */ v(m, {
|
|
134
|
+
value: "assets",
|
|
135
|
+
children: "Assets"
|
|
136
|
+
}),
|
|
137
|
+
/* @__PURE__ */ v(m, {
|
|
138
|
+
value: "transactions",
|
|
139
|
+
children: "Transactions"
|
|
140
|
+
}),
|
|
141
|
+
/* @__PURE__ */ v(m, {
|
|
142
|
+
value: "incidents",
|
|
143
|
+
children: "Incidents"
|
|
144
|
+
}),
|
|
145
|
+
/* @__PURE__ */ v(m, {
|
|
146
|
+
value: "maintenance",
|
|
147
|
+
children: "Maintenance"
|
|
148
|
+
})
|
|
149
|
+
] })]
|
|
150
|
+
})]
|
|
151
|
+
}),
|
|
152
|
+
/* @__PURE__ */ y("div", {
|
|
153
|
+
className: "space-y-2",
|
|
154
|
+
children: [/* @__PURE__ */ v(d, { children: "Schedule" }), /* @__PURE__ */ y(f, {
|
|
155
|
+
value: b.schedule,
|
|
156
|
+
onValueChange: (e) => S("schedule", e),
|
|
157
|
+
children: [/* @__PURE__ */ v(h, { children: /* @__PURE__ */ v(g, { placeholder: "Manual" }) }), /* @__PURE__ */ y(p, { children: [
|
|
158
|
+
/* @__PURE__ */ v(m, {
|
|
159
|
+
value: "",
|
|
160
|
+
children: "Manual"
|
|
161
|
+
}),
|
|
162
|
+
/* @__PURE__ */ v(m, {
|
|
163
|
+
value: "Daily",
|
|
164
|
+
children: "Daily"
|
|
165
|
+
}),
|
|
166
|
+
/* @__PURE__ */ v(m, {
|
|
167
|
+
value: "Weekly",
|
|
168
|
+
children: "Weekly"
|
|
169
|
+
}),
|
|
170
|
+
/* @__PURE__ */ v(m, {
|
|
171
|
+
value: "Monthly",
|
|
172
|
+
children: "Monthly"
|
|
173
|
+
})
|
|
174
|
+
] })]
|
|
175
|
+
})]
|
|
176
|
+
})
|
|
177
|
+
]
|
|
178
|
+
})
|
|
179
|
+
]
|
|
180
|
+
})] }),
|
|
181
|
+
/* @__PURE__ */ y(a, { children: [/* @__PURE__ */ y(c, { children: [/* @__PURE__ */ v(l, { children: "Preview" }), /* @__PURE__ */ v(s, { children: "Report preview will appear here" })] }), /* @__PURE__ */ v(o, { children: /* @__PURE__ */ v("div", {
|
|
182
|
+
className: "bg-muted rounded-lg h-64 flex items-center justify-center border-2 border-dashed",
|
|
183
|
+
children: /* @__PURE__ */ v("p", {
|
|
184
|
+
className: "text-muted-foreground",
|
|
185
|
+
children: "Configure and preview your report"
|
|
186
|
+
})
|
|
187
|
+
}) })] }),
|
|
188
|
+
/* @__PURE__ */ y("div", {
|
|
189
|
+
className: "flex justify-end gap-2",
|
|
190
|
+
children: [/* @__PURE__ */ v(i, {
|
|
191
|
+
variant: "outline",
|
|
192
|
+
children: "Cancel"
|
|
193
|
+
}), /* @__PURE__ */ y(i, { children: [/* @__PURE__ */ v(r, { className: "mr-2 h-4 w-4" }), "Save Report"] })]
|
|
194
|
+
})
|
|
195
|
+
]
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
//#endregion
|
|
199
|
+
export { b as ReportsReportBuilderPage };
|
|
200
|
+
|
|
201
|
+
//# sourceMappingURL=ReportsReportBuilderPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportsReportBuilderPage.js","names":[],"sources":["../../../src/assethandler/pages/ReportsReportBuilderPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Input,\n Label,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Textarea,\n} from '@burdenoff/fe-libs/ui';\nimport { ArrowLeft, Play, Save } from 'lucide-react';\n\nexport function ReportsReportBuilderPage() {\n const [config, setConfig] = useState({\n name: '',\n description: '',\n category: 'Operational',\n type: 'chart',\n schedule: '',\n dataSource: 'assets',\n });\n const handleChange = (field: string, value: string) =>\n setConfig((prev) => ({ ...prev, [field]: value }));\n\n return (\n <div className=\"space-y-6 p-6 max-w-4xl\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-4\">\n <Button variant=\"ghost\" size=\"icon\">\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <div>\n <h1 className=\"text-2xl font-bold\">Report Builder</h1>\n <p className=\"text-sm text-muted-foreground\">Create custom reports and dashboards</p>\n </div>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\">\n <Play className=\"mr-2 h-4 w-4\" />\n Preview\n </Button>\n <Button size=\"sm\">\n <Save className=\"mr-2 h-4 w-4\" />\n Save Report\n </Button>\n </div>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>Report Configuration</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"grid gap-4 md:grid-cols-2\">\n <div className=\"space-y-2\">\n <Label>Report Name *</Label>\n <Input\n placeholder=\"e.g., Monthly Asset Utilization\"\n value={config.name}\n onChange={(e) => handleChange('name', e.target.value)}\n />\n </div>\n <div className=\"space-y-2\">\n <Label>Category</Label>\n <Select value={config.category} onValueChange={(v) => handleChange('category', v)}>\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"Operational\">Operational</SelectItem>\n <SelectItem value=\"Financial\">Financial</SelectItem>\n <SelectItem value=\"Compliance\">Compliance</SelectItem>\n <SelectItem value=\"Performance\">Performance</SelectItem>\n <SelectItem value=\"Inventory\">Inventory</SelectItem>\n </SelectContent>\n </Select>\n </div>\n </div>\n <div className=\"space-y-2\">\n <Label>Description</Label>\n <Textarea\n placeholder=\"What does this report show?\"\n value={config.description}\n onChange={(e) => handleChange('description', e.target.value)}\n rows={3}\n />\n </div>\n <div className=\"grid gap-4 md:grid-cols-3\">\n <div className=\"space-y-2\">\n <Label>Report Type</Label>\n <Select value={config.type} onValueChange={(v) => handleChange('type', v)}>\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"chart\">Chart</SelectItem>\n <SelectItem value=\"tabular\">Tabular</SelectItem>\n <SelectItem value=\"dashboard\">Dashboard</SelectItem>\n <SelectItem value=\"document\">Document</SelectItem>\n </SelectContent>\n </Select>\n </div>\n <div className=\"space-y-2\">\n <Label>Data Source</Label>\n <Select\n value={config.dataSource}\n onValueChange={(v) => handleChange('dataSource', v)}\n >\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"assets\">Assets</SelectItem>\n <SelectItem value=\"transactions\">Transactions</SelectItem>\n <SelectItem value=\"incidents\">Incidents</SelectItem>\n <SelectItem value=\"maintenance\">Maintenance</SelectItem>\n </SelectContent>\n </Select>\n </div>\n <div className=\"space-y-2\">\n <Label>Schedule</Label>\n <Select value={config.schedule} onValueChange={(v) => handleChange('schedule', v)}>\n <SelectTrigger>\n <SelectValue placeholder=\"Manual\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"\">Manual</SelectItem>\n <SelectItem value=\"Daily\">Daily</SelectItem>\n <SelectItem value=\"Weekly\">Weekly</SelectItem>\n <SelectItem value=\"Monthly\">Monthly</SelectItem>\n </SelectContent>\n </Select>\n </div>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Preview</CardTitle>\n <CardDescription>Report preview will appear here</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"bg-muted rounded-lg h-64 flex items-center justify-center border-2 border-dashed\">\n <p className=\"text-muted-foreground\">Configure and preview your report</p>\n </div>\n </CardContent>\n </Card>\n\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"outline\">Cancel</Button>\n <Button>\n <Save className=\"mr-2 h-4 w-4\" />\n Save Report\n </Button>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportsReportsDashboardPage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/ReportsReportsDashboardPage.tsx"],"names":[],"mappings":"AAqBA,wBAAgB,2BAA2B,4CA8J1C"}
|