@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,130 @@
|
|
|
1
|
+
import { useState as e } from "react";
|
|
2
|
+
import { Leaf 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/EsgDashboardPage.tsx
|
|
7
|
+
var s = i`
|
|
8
|
+
query AssetHandlerEsgMetrics {
|
|
9
|
+
esgMetrics {
|
|
10
|
+
id
|
|
11
|
+
metricKey
|
|
12
|
+
metricName
|
|
13
|
+
category
|
|
14
|
+
unit
|
|
15
|
+
value
|
|
16
|
+
target
|
|
17
|
+
trend
|
|
18
|
+
periodStart
|
|
19
|
+
periodEnd
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
`, c = i`
|
|
23
|
+
mutation AssetHandlerUpsertEsgMetric($input: UpsertEsgMetricInput!) {
|
|
24
|
+
upsertEsgMetric(input: $input) {
|
|
25
|
+
id
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
`;
|
|
29
|
+
function l() {
|
|
30
|
+
let [i, l] = e("42.5"), { data: u, loading: d, refetch: f } = o(s, { fetchPolicy: "cache-and-network" }), [p, { loading: m }] = a(c, { onCompleted: () => {
|
|
31
|
+
f();
|
|
32
|
+
} }), h = u?.esgMetrics ?? [];
|
|
33
|
+
return /* @__PURE__ */ r("div", {
|
|
34
|
+
className: "space-y-4 p-4",
|
|
35
|
+
children: [
|
|
36
|
+
/* @__PURE__ */ r("h1", {
|
|
37
|
+
className: "flex items-center gap-2 text-2xl font-semibold",
|
|
38
|
+
children: [/* @__PURE__ */ n(t, { className: "h-6 w-6" }), " ESG Dashboard"]
|
|
39
|
+
}),
|
|
40
|
+
/* @__PURE__ */ n("p", {
|
|
41
|
+
className: "text-muted-foreground",
|
|
42
|
+
children: "Track sustainability and governance KPIs across the full asset portfolio."
|
|
43
|
+
}),
|
|
44
|
+
/* @__PURE__ */ r("form", {
|
|
45
|
+
className: "grid gap-3 rounded-lg border p-4 md:grid-cols-4",
|
|
46
|
+
onSubmit: (e) => {
|
|
47
|
+
e.preventDefault();
|
|
48
|
+
let t = new Date((/* @__PURE__ */ new Date()).getFullYear(), (/* @__PURE__ */ new Date()).getMonth(), 1).toISOString(), n = (/* @__PURE__ */ new Date()).toISOString();
|
|
49
|
+
p({ variables: { input: {
|
|
50
|
+
metricKey: "carbon-footprint-scope2",
|
|
51
|
+
metricName: "Scope 2 Carbon Emissions",
|
|
52
|
+
category: "environment",
|
|
53
|
+
unit: "tCO2e",
|
|
54
|
+
value: Number(i),
|
|
55
|
+
target: 40,
|
|
56
|
+
trend: "improving",
|
|
57
|
+
periodStart: t,
|
|
58
|
+
periodEnd: n
|
|
59
|
+
} } });
|
|
60
|
+
},
|
|
61
|
+
children: [
|
|
62
|
+
/* @__PURE__ */ n("input", {
|
|
63
|
+
className: "rounded-md border px-3 py-2",
|
|
64
|
+
value: i,
|
|
65
|
+
onChange: (e) => l(e.target.value)
|
|
66
|
+
}),
|
|
67
|
+
/* @__PURE__ */ n("div", {
|
|
68
|
+
className: "text-sm text-muted-foreground md:col-span-2",
|
|
69
|
+
children: "Metric: Scope 2 Carbon Emissions (monthly)"
|
|
70
|
+
}),
|
|
71
|
+
/* @__PURE__ */ n("button", {
|
|
72
|
+
className: "rounded-md bg-primary px-3 py-2 text-primary-foreground",
|
|
73
|
+
disabled: m,
|
|
74
|
+
type: "submit",
|
|
75
|
+
children: m ? "Saving..." : "Save Metric"
|
|
76
|
+
})
|
|
77
|
+
]
|
|
78
|
+
}),
|
|
79
|
+
/* @__PURE__ */ r("div", {
|
|
80
|
+
className: "grid gap-3 md:grid-cols-2",
|
|
81
|
+
children: [
|
|
82
|
+
d && h.length === 0 ? /* @__PURE__ */ n("p", {
|
|
83
|
+
className: "text-sm text-muted-foreground",
|
|
84
|
+
children: "Loading ESG metrics..."
|
|
85
|
+
}) : null,
|
|
86
|
+
!d && h.length === 0 ? /* @__PURE__ */ n("p", {
|
|
87
|
+
className: "text-sm text-muted-foreground",
|
|
88
|
+
children: "No ESG metrics recorded yet."
|
|
89
|
+
}) : null,
|
|
90
|
+
h.map((e) => /* @__PURE__ */ r("article", {
|
|
91
|
+
className: "rounded-lg border p-4",
|
|
92
|
+
children: [
|
|
93
|
+
/* @__PURE__ */ n("p", {
|
|
94
|
+
className: "text-xs uppercase tracking-wide text-muted-foreground",
|
|
95
|
+
children: e.category
|
|
96
|
+
}),
|
|
97
|
+
/* @__PURE__ */ n("h2", {
|
|
98
|
+
className: "mt-1 text-base font-semibold",
|
|
99
|
+
children: e.metricName
|
|
100
|
+
}),
|
|
101
|
+
/* @__PURE__ */ r("p", {
|
|
102
|
+
className: "mt-2 text-sm",
|
|
103
|
+
children: [
|
|
104
|
+
/* @__PURE__ */ n("span", {
|
|
105
|
+
className: "font-semibold",
|
|
106
|
+
children: e.value
|
|
107
|
+
}),
|
|
108
|
+
" ",
|
|
109
|
+
e.unit,
|
|
110
|
+
e.target === null ? null : /* @__PURE__ */ r("span", {
|
|
111
|
+
className: "text-muted-foreground",
|
|
112
|
+
children: [" / target ", e.target]
|
|
113
|
+
})
|
|
114
|
+
]
|
|
115
|
+
}),
|
|
116
|
+
/* @__PURE__ */ r("p", {
|
|
117
|
+
className: "mt-1 text-xs text-muted-foreground",
|
|
118
|
+
children: ["Trend: ", e.trend ?? "stable"]
|
|
119
|
+
})
|
|
120
|
+
]
|
|
121
|
+
}, e.id))
|
|
122
|
+
]
|
|
123
|
+
})
|
|
124
|
+
]
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
//#endregion
|
|
128
|
+
export { l as EsgDashboardPage };
|
|
129
|
+
|
|
130
|
+
//# sourceMappingURL=EsgDashboardPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EsgDashboardPage.js","names":[],"sources":["../../../src/assethandler/pages/EsgDashboardPage.tsx"],"sourcesContent":["import { Leaf } from 'lucide-react';\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\n\nconst ESG_METRICS_QUERY = gql`\n query AssetHandlerEsgMetrics {\n esgMetrics {\n id\n metricKey\n metricName\n category\n unit\n value\n target\n trend\n periodStart\n periodEnd\n }\n }\n`;\n\nconst UPSERT_ESG_METRIC_MUTATION = gql`\n mutation AssetHandlerUpsertEsgMetric($input: UpsertEsgMetricInput!) {\n upsertEsgMetric(input: $input) {\n id\n }\n }\n`;\n\nexport function EsgDashboardPage() {\n const [value, setValue] = useState('42.5');\n\n const { data, loading, refetch } = useQuery<{\n esgMetrics: Array<{\n id: string;\n metricKey: string;\n metricName: string;\n category: string;\n unit: string;\n value: number;\n target: number | null;\n trend: string | null;\n periodStart: string;\n periodEnd: string;\n }>;\n }>(ESG_METRICS_QUERY, { fetchPolicy: 'cache-and-network' });\n\n const [upsertEsgMetric, { loading: saving }] = useMutation(UPSERT_ESG_METRIC_MUTATION, {\n onCompleted: () => {\n void refetch();\n },\n });\n\n const metrics = data?.esgMetrics ?? [];\n\n return (\n <div className=\"space-y-4 p-4\">\n <h1 className=\"flex items-center gap-2 text-2xl font-semibold\">\n <Leaf className=\"h-6 w-6\" /> ESG Dashboard\n </h1>\n <p className=\"text-muted-foreground\">\n Track sustainability and governance KPIs across the full asset portfolio.\n </p>\n <form\n className=\"grid gap-3 rounded-lg border p-4 md:grid-cols-4\"\n onSubmit={(event) => {\n event.preventDefault();\n const periodStart = new Date(\n new Date().getFullYear(),\n new Date().getMonth(),\n 1\n ).toISOString();\n const periodEnd = new Date().toISOString();\n void upsertEsgMetric({\n variables: {\n input: {\n metricKey: 'carbon-footprint-scope2',\n metricName: 'Scope 2 Carbon Emissions',\n category: 'environment',\n unit: 'tCO2e',\n value: Number(value),\n target: 40,\n trend: 'improving',\n periodStart,\n periodEnd,\n },\n },\n });\n }}\n >\n <input\n className=\"rounded-md border px-3 py-2\"\n value={value}\n onChange={(event) => setValue(event.target.value)}\n />\n <div className=\"text-sm text-muted-foreground md:col-span-2\">\n Metric: Scope 2 Carbon Emissions (monthly)\n </div>\n <button\n className=\"rounded-md bg-primary px-3 py-2 text-primary-foreground\"\n disabled={saving}\n type=\"submit\"\n >\n {saving ? 'Saving...' : 'Save Metric'}\n </button>\n </form>\n <div className=\"grid gap-3 md:grid-cols-2\">\n {loading && metrics.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">Loading ESG metrics...</p>\n ) : null}\n {!loading && metrics.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">No ESG metrics recorded yet.</p>\n ) : null}\n {metrics.map((metric) => (\n <article key={metric.id} className=\"rounded-lg border p-4\">\n <p className=\"text-xs uppercase tracking-wide text-muted-foreground\">\n {metric.category}\n </p>\n <h2 className=\"mt-1 text-base font-semibold\">{metric.metricName}</h2>\n <p className=\"mt-2 text-sm\">\n <span className=\"font-semibold\">{metric.value}</span> {metric.unit}\n {metric.target !== null ? (\n <span className=\"text-muted-foreground\"> / target {metric.target}</span>\n ) : null}\n </p>\n <p className=\"mt-1 text-xs text-muted-foreground\">Trend: {metric.trend ?? 'stable'}</p>\n </article>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAKA,IAAM,IAAoB,CAAG;;;;;;;;;;;;;;;GAiBvB,IAA6B,CAAG;;;;;;;AAQtC,SAAgB,IAAmB;CACjC,IAAM,CAAC,GAAO,KAAY,EAAS,OAAO,EAEpC,EAAE,SAAM,YAAS,eAAY,EAahC,GAAmB,EAAE,aAAa,qBAAqB,CAAC,EAErD,CAAC,GAAiB,EAAE,SAAS,OAAY,EAAY,GAA4B,EACrF,mBAAmB;AACZ,KAAS;IAEjB,CAAC,EAEI,IAAU,GAAM,cAAc,EAAE;AAEtC,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,MAAD;IAAI,WAAU;cAAd,CACE,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA,EAAA,iBACzB;;GACL,kBAAC,KAAD;IAAG,WAAU;cAAwB;IAEjC,CAAA;GACJ,kBAAC,QAAD;IACE,WAAU;IACV,WAAW,MAAU;AACnB,OAAM,gBAAgB;KACtB,IAAM,IAAc,IAAI,sBACtB,IAAI,MAAM,EAAC,aAAa,mBACxB,IAAI,MAAM,EAAC,UAAU,EACrB,EACD,CAAC,aAAa,EACT,qBAAY,IAAI,MAAM,EAAC,aAAa;AACrC,OAAgB,EACnB,WAAW,EACT,OAAO;MACL,WAAW;MACX,YAAY;MACZ,UAAU;MACV,MAAM;MACN,OAAO,OAAO,EAAM;MACpB,QAAQ;MACR,OAAO;MACP;MACA;MACD,EACF,EACF,CAAC;;cAxBN;KA2BE,kBAAC,SAAD;MACE,WAAU;MACH;MACP,WAAW,MAAU,EAAS,EAAM,OAAO,MAAM;MACjD,CAAA;KACF,kBAAC,OAAD;MAAK,WAAU;gBAA8C;MAEvD,CAAA;KACN,kBAAC,UAAD;MACE,WAAU;MACV,UAAU;MACV,MAAK;gBAEJ,IAAS,cAAc;MACjB,CAAA;KACJ;;GACP,kBAAC,OAAD;IAAK,WAAU;cAAf;KACG,KAAW,EAAQ,WAAW,IAC7B,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAA0B,CAAA,GACrE;KACH,CAAC,KAAW,EAAQ,WAAW,IAC9B,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAAgC,CAAA,GAC3E;KACH,EAAQ,KAAK,MACZ,kBAAC,WAAD;MAAyB,WAAU;gBAAnC;OACE,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAO;QACN,CAAA;OACJ,kBAAC,MAAD;QAAI,WAAU;kBAAgC,EAAO;QAAgB,CAAA;OACrE,kBAAC,KAAD;QAAG,WAAU;kBAAb;SACE,kBAAC,QAAD;UAAM,WAAU;oBAAiB,EAAO;UAAa,CAAA;;SAAE,EAAO;SAC7D,EAAO,WAAW,OAEf,OADF,kBAAC,QAAD;UAAM,WAAU;oBAAhB,CAAwC,cAAW,EAAO,OAAc;;SAExE;;OACJ,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAAkD,WAAQ,EAAO,SAAS,SAAa;;OAC/E;QAZI,EAAO,GAYX,CACV;KACE;;GACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FinanceBudgetDetailPage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/FinanceBudgetDetailPage.tsx"],"names":[],"mappings":"AAcA,wBAAgB,uBAAuB,4CAwItC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
|
|
2
|
+
import { ArrowLeft as t, Edit as n } from "lucide-react";
|
|
3
|
+
import { useParams as r } from "react-router-dom";
|
|
4
|
+
import { Badge as i, Button as a, Card as o, CardContent as s, CardDescription as c, CardHeader as l, CardTitle as u } from "@burdenoff/fe-libs/ui";
|
|
5
|
+
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
6
|
+
//#region src/assethandler/pages/FinanceBudgetDetailPage.tsx
|
|
7
|
+
function p() {
|
|
8
|
+
let { budgetId: p } = r(), { budgets: m, transactions: h } = e(), g = m.find((e) => e.id === p) ?? m[0];
|
|
9
|
+
if (!g) return /* @__PURE__ */ d("div", {
|
|
10
|
+
className: "p-6",
|
|
11
|
+
children: /* @__PURE__ */ d("p", {
|
|
12
|
+
className: "text-muted-foreground",
|
|
13
|
+
children: "Budget not found."
|
|
14
|
+
})
|
|
15
|
+
});
|
|
16
|
+
let _ = h.filter((e) => e.category === g.category), v = Math.round(g.spent / g.allocated * 100);
|
|
17
|
+
return /* @__PURE__ */ f("div", {
|
|
18
|
+
className: "space-y-6 p-6",
|
|
19
|
+
children: [
|
|
20
|
+
/* @__PURE__ */ f("div", {
|
|
21
|
+
className: "flex items-center justify-between",
|
|
22
|
+
children: [/* @__PURE__ */ f("div", {
|
|
23
|
+
className: "flex items-center gap-4",
|
|
24
|
+
children: [/* @__PURE__ */ d(a, {
|
|
25
|
+
variant: "ghost",
|
|
26
|
+
size: "icon",
|
|
27
|
+
children: /* @__PURE__ */ d(t, { className: "h-4 w-4" })
|
|
28
|
+
}), /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ f("div", {
|
|
29
|
+
className: "flex items-center gap-3",
|
|
30
|
+
children: [/* @__PURE__ */ d("h1", {
|
|
31
|
+
className: "text-2xl font-bold",
|
|
32
|
+
children: g.name
|
|
33
|
+
}), /* @__PURE__ */ d(i, {
|
|
34
|
+
variant: g.status === "over_budget" ? "destructive" : g.status === "under_budget" ? "secondary" : "default",
|
|
35
|
+
children: g.status.replace("_", " ")
|
|
36
|
+
})]
|
|
37
|
+
}), /* @__PURE__ */ f("p", {
|
|
38
|
+
className: "text-sm text-muted-foreground mt-1",
|
|
39
|
+
children: [
|
|
40
|
+
g.department,
|
|
41
|
+
" · ",
|
|
42
|
+
g.period
|
|
43
|
+
]
|
|
44
|
+
})] })]
|
|
45
|
+
}), /* @__PURE__ */ f(a, {
|
|
46
|
+
size: "sm",
|
|
47
|
+
children: [/* @__PURE__ */ d(n, { className: "mr-2 h-4 w-4" }), "Edit Budget"]
|
|
48
|
+
})]
|
|
49
|
+
}),
|
|
50
|
+
/* @__PURE__ */ f("div", {
|
|
51
|
+
className: "grid gap-4 md:grid-cols-3",
|
|
52
|
+
children: [
|
|
53
|
+
/* @__PURE__ */ d(o, { children: /* @__PURE__ */ f(s, {
|
|
54
|
+
className: "pt-4",
|
|
55
|
+
children: [/* @__PURE__ */ d("p", {
|
|
56
|
+
className: "text-sm text-muted-foreground",
|
|
57
|
+
children: "Allocated"
|
|
58
|
+
}), /* @__PURE__ */ f("p", {
|
|
59
|
+
className: "text-2xl font-bold",
|
|
60
|
+
children: ["$", g.allocated.toLocaleString()]
|
|
61
|
+
})]
|
|
62
|
+
}) }),
|
|
63
|
+
/* @__PURE__ */ d(o, { children: /* @__PURE__ */ f(s, {
|
|
64
|
+
className: "pt-4",
|
|
65
|
+
children: [
|
|
66
|
+
/* @__PURE__ */ d("p", {
|
|
67
|
+
className: "text-sm text-muted-foreground",
|
|
68
|
+
children: "Spent"
|
|
69
|
+
}),
|
|
70
|
+
/* @__PURE__ */ f("p", {
|
|
71
|
+
className: "text-2xl font-bold",
|
|
72
|
+
children: ["$", g.spent.toLocaleString()]
|
|
73
|
+
}),
|
|
74
|
+
/* @__PURE__ */ f("p", {
|
|
75
|
+
className: "text-xs text-muted-foreground",
|
|
76
|
+
children: [v, "% utilized"]
|
|
77
|
+
})
|
|
78
|
+
]
|
|
79
|
+
}) }),
|
|
80
|
+
/* @__PURE__ */ d(o, { children: /* @__PURE__ */ f(s, {
|
|
81
|
+
className: "pt-4",
|
|
82
|
+
children: [/* @__PURE__ */ d("p", {
|
|
83
|
+
className: "text-sm text-muted-foreground",
|
|
84
|
+
children: "Remaining"
|
|
85
|
+
}), /* @__PURE__ */ f("p", {
|
|
86
|
+
className: `text-2xl font-bold ${g.remaining < 0 ? "text-red-600" : "text-green-600"}`,
|
|
87
|
+
children: ["$", g.remaining.toLocaleString()]
|
|
88
|
+
})]
|
|
89
|
+
}) })
|
|
90
|
+
]
|
|
91
|
+
}),
|
|
92
|
+
/* @__PURE__ */ f(o, { children: [/* @__PURE__ */ d(l, { children: /* @__PURE__ */ d(u, { children: "Budget Utilization" }) }), /* @__PURE__ */ f(s, { children: [/* @__PURE__ */ d("div", {
|
|
93
|
+
className: "h-4 rounded-full bg-muted overflow-hidden",
|
|
94
|
+
children: /* @__PURE__ */ d("div", {
|
|
95
|
+
className: `h-full rounded-full transition-all ${g.status === "over_budget" ? "bg-red-500" : "bg-primary"}`,
|
|
96
|
+
style: { width: `${Math.min(v, 100)}%` }
|
|
97
|
+
})
|
|
98
|
+
}), /* @__PURE__ */ f("p", {
|
|
99
|
+
className: "text-sm text-muted-foreground mt-2",
|
|
100
|
+
children: [
|
|
101
|
+
v,
|
|
102
|
+
"% of $",
|
|
103
|
+
g.allocated.toLocaleString(),
|
|
104
|
+
" allocated budget consumed"
|
|
105
|
+
]
|
|
106
|
+
})] })] }),
|
|
107
|
+
/* @__PURE__ */ f(o, { children: [/* @__PURE__ */ f(l, { children: [/* @__PURE__ */ d(u, { children: "Related Transactions" }), /* @__PURE__ */ f(c, { children: [
|
|
108
|
+
"Transactions in ",
|
|
109
|
+
g.category,
|
|
110
|
+
" category"
|
|
111
|
+
] })] }), /* @__PURE__ */ d(s, {
|
|
112
|
+
className: "p-0",
|
|
113
|
+
children: /* @__PURE__ */ d("div", {
|
|
114
|
+
className: "overflow-x-auto",
|
|
115
|
+
children: /* @__PURE__ */ f("table", {
|
|
116
|
+
className: "w-full text-sm",
|
|
117
|
+
children: [/* @__PURE__ */ d("thead", { children: /* @__PURE__ */ f("tr", {
|
|
118
|
+
className: "border-b bg-muted/50",
|
|
119
|
+
children: [
|
|
120
|
+
/* @__PURE__ */ d("th", {
|
|
121
|
+
className: "text-left p-3 font-medium",
|
|
122
|
+
children: "ID"
|
|
123
|
+
}),
|
|
124
|
+
/* @__PURE__ */ d("th", {
|
|
125
|
+
className: "text-left p-3 font-medium",
|
|
126
|
+
children: "Description"
|
|
127
|
+
}),
|
|
128
|
+
/* @__PURE__ */ d("th", {
|
|
129
|
+
className: "text-right p-3 font-medium",
|
|
130
|
+
children: "Amount"
|
|
131
|
+
}),
|
|
132
|
+
/* @__PURE__ */ d("th", {
|
|
133
|
+
className: "text-left p-3 font-medium",
|
|
134
|
+
children: "Status"
|
|
135
|
+
}),
|
|
136
|
+
/* @__PURE__ */ d("th", {
|
|
137
|
+
className: "text-left p-3 font-medium",
|
|
138
|
+
children: "Date"
|
|
139
|
+
})
|
|
140
|
+
]
|
|
141
|
+
}) }), /* @__PURE__ */ f("tbody", { children: [_.map((e) => /* @__PURE__ */ f("tr", {
|
|
142
|
+
className: "border-b hover:bg-muted/50",
|
|
143
|
+
children: [
|
|
144
|
+
/* @__PURE__ */ d("td", {
|
|
145
|
+
className: "p-3 font-mono text-xs",
|
|
146
|
+
children: e.id
|
|
147
|
+
}),
|
|
148
|
+
/* @__PURE__ */ d("td", {
|
|
149
|
+
className: "p-3 truncate max-w-xs",
|
|
150
|
+
children: e.description
|
|
151
|
+
}),
|
|
152
|
+
/* @__PURE__ */ f("td", {
|
|
153
|
+
className: "p-3 text-right font-medium",
|
|
154
|
+
children: ["$", Math.abs(e.amount).toLocaleString()]
|
|
155
|
+
}),
|
|
156
|
+
/* @__PURE__ */ d("td", {
|
|
157
|
+
className: "p-3",
|
|
158
|
+
children: /* @__PURE__ */ d(i, {
|
|
159
|
+
variant: "outline",
|
|
160
|
+
children: e.status
|
|
161
|
+
})
|
|
162
|
+
}),
|
|
163
|
+
/* @__PURE__ */ d("td", {
|
|
164
|
+
className: "p-3 text-xs",
|
|
165
|
+
children: new Date(e.date).toLocaleDateString()
|
|
166
|
+
})
|
|
167
|
+
]
|
|
168
|
+
}, e.id)), _.length === 0 && /* @__PURE__ */ d("tr", { children: /* @__PURE__ */ d("td", {
|
|
169
|
+
colSpan: 5,
|
|
170
|
+
className: "text-center py-8 text-muted-foreground",
|
|
171
|
+
children: "No related transactions."
|
|
172
|
+
}) })] })]
|
|
173
|
+
})
|
|
174
|
+
})
|
|
175
|
+
})] })
|
|
176
|
+
]
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
//#endregion
|
|
180
|
+
export { p as FinanceBudgetDetailPage };
|
|
181
|
+
|
|
182
|
+
//# sourceMappingURL=FinanceBudgetDetailPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FinanceBudgetDetailPage.js","names":[],"sources":["../../../src/assethandler/pages/FinanceBudgetDetailPage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Separator,\n} from '@burdenoff/fe-libs/ui';\nimport { ArrowLeft, DollarSign, Edit } from 'lucide-react';\nimport { useParams } from 'react-router-dom';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nexport function FinanceBudgetDetailPage() {\n const { budgetId } = useParams<{ budgetId: string }>();\n const { budgets, transactions } = useAssetHandlerStore();\n const budget = budgets.find((item) => item.id === budgetId) ?? budgets[0];\n\n if (!budget)\n return (\n <div className=\"p-6\">\n <p className=\"text-muted-foreground\">Budget not found.</p>\n </div>\n );\n\n const relatedTxns = transactions.filter((t) => t.category === budget.category);\n const utilizationPct = Math.round((budget.spent / budget.allocated) * 100);\n\n return (\n <div className=\"space-y-6 p-6\">\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 <div className=\"flex items-center gap-3\">\n <h1 className=\"text-2xl font-bold\">{budget.name}</h1>\n <Badge\n variant={\n budget.status === 'over_budget'\n ? 'destructive'\n : budget.status === 'under_budget'\n ? 'secondary'\n : 'default'\n }\n >\n {budget.status.replace('_', ' ')}\n </Badge>\n </div>\n <p className=\"text-sm text-muted-foreground mt-1\">\n {budget.department} · {budget.period}\n </p>\n </div>\n </div>\n <Button size=\"sm\">\n <Edit className=\"mr-2 h-4 w-4\" />\n Edit Budget\n </Button>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-3\">\n <Card>\n <CardContent className=\"pt-4\">\n <p className=\"text-sm text-muted-foreground\">Allocated</p>\n <p className=\"text-2xl font-bold\">${budget.allocated.toLocaleString()}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <p className=\"text-sm text-muted-foreground\">Spent</p>\n <p className=\"text-2xl font-bold\">${budget.spent.toLocaleString()}</p>\n <p className=\"text-xs text-muted-foreground\">{utilizationPct}% utilized</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <p className=\"text-sm text-muted-foreground\">Remaining</p>\n <p\n className={`text-2xl font-bold ${budget.remaining < 0 ? 'text-red-600' : 'text-green-600'}`}\n >\n ${budget.remaining.toLocaleString()}\n </p>\n </CardContent>\n </Card>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>Budget Utilization</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"h-4 rounded-full bg-muted overflow-hidden\">\n <div\n className={`h-full rounded-full transition-all ${budget.status === 'over_budget' ? 'bg-red-500' : 'bg-primary'}`}\n style={{ width: `${Math.min(utilizationPct, 100)}%` }}\n />\n </div>\n <p className=\"text-sm text-muted-foreground mt-2\">\n {utilizationPct}% of ${budget.allocated.toLocaleString()} allocated budget consumed\n </p>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Related Transactions</CardTitle>\n <CardDescription>Transactions in {budget.category} category</CardDescription>\n </CardHeader>\n <CardContent className=\"p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b bg-muted/50\">\n <th className=\"text-left p-3 font-medium\">ID</th>\n <th className=\"text-left p-3 font-medium\">Description</th>\n <th className=\"text-right p-3 font-medium\">Amount</th>\n <th className=\"text-left p-3 font-medium\">Status</th>\n <th className=\"text-left p-3 font-medium\">Date</th>\n </tr>\n </thead>\n <tbody>\n {relatedTxns.map((txn) => (\n <tr key={txn.id} className=\"border-b hover:bg-muted/50\">\n <td className=\"p-3 font-mono text-xs\">{txn.id}</td>\n <td className=\"p-3 truncate max-w-xs\">{txn.description}</td>\n <td className=\"p-3 text-right font-medium\">\n ${Math.abs(txn.amount).toLocaleString()}\n </td>\n <td className=\"p-3\">\n <Badge variant=\"outline\">{txn.status}</Badge>\n </td>\n <td className=\"p-3 text-xs\">{new Date(txn.date).toLocaleDateString()}</td>\n </tr>\n ))}\n {relatedTxns.length === 0 && (\n <tr>\n <td colSpan={5} className=\"text-center py-8 text-muted-foreground\">\n No related transactions.\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FinanceFinanceHubPage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/FinanceFinanceHubPage.tsx"],"names":[],"mappings":"AAyBA,wBAAgB,qBAAqB,4CA2NpC"}
|