@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,324 @@
|
|
|
1
|
+
import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
|
|
2
|
+
import { CreditCard as t, DollarSign as n, Download as r, Receipt as i, TrendingDown as a } from "lucide-react";
|
|
3
|
+
import { Badge as o, Button as s, Card as c, CardContent as l, CardDescription as u, CardHeader as d, CardTitle as f, Tabs as p, TabsContent as m, TabsList as h, TabsTrigger as g } from "@burdenoff/fe-libs/ui";
|
|
4
|
+
import { jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
5
|
+
//#region src/assethandler/pages/FinanceFinanceHubPage.tsx
|
|
6
|
+
function y() {
|
|
7
|
+
let { transactions: y, budgets: b, invoices: x } = e(), S = y.filter((e) => e.amount > 0).reduce((e, t) => e + t.amount, 0), C = y.filter((e) => e.status === "pending"), w = b.filter((e) => e.status === "over_budget"), T = x.filter((e) => e.status === "overdue");
|
|
8
|
+
return /* @__PURE__ */ v("div", {
|
|
9
|
+
className: "space-y-6 p-6",
|
|
10
|
+
children: [
|
|
11
|
+
/* @__PURE__ */ v("div", {
|
|
12
|
+
className: "flex items-center justify-between",
|
|
13
|
+
children: [/* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("h1", {
|
|
14
|
+
className: "text-2xl font-bold",
|
|
15
|
+
children: "Finance Hub"
|
|
16
|
+
}), /* @__PURE__ */ _("p", {
|
|
17
|
+
className: "text-sm text-muted-foreground",
|
|
18
|
+
children: "Financial management for IT assets"
|
|
19
|
+
})] }), /* @__PURE__ */ v("div", {
|
|
20
|
+
className: "flex gap-2",
|
|
21
|
+
children: [/* @__PURE__ */ v(s, {
|
|
22
|
+
variant: "outline",
|
|
23
|
+
size: "sm",
|
|
24
|
+
children: [/* @__PURE__ */ _(r, { className: "mr-2 h-4 w-4" }), "Export"]
|
|
25
|
+
}), /* @__PURE__ */ _(s, {
|
|
26
|
+
size: "sm",
|
|
27
|
+
children: "New Transaction"
|
|
28
|
+
})]
|
|
29
|
+
})]
|
|
30
|
+
}),
|
|
31
|
+
/* @__PURE__ */ v("div", {
|
|
32
|
+
className: "grid gap-4 md:grid-cols-4",
|
|
33
|
+
children: [
|
|
34
|
+
/* @__PURE__ */ _(c, { children: /* @__PURE__ */ v(l, {
|
|
35
|
+
className: "pt-4",
|
|
36
|
+
children: [/* @__PURE__ */ v("div", {
|
|
37
|
+
className: "flex items-center gap-2 text-sm text-muted-foreground",
|
|
38
|
+
children: [/* @__PURE__ */ _(n, { className: "h-4 w-4" }), "Total Spend"]
|
|
39
|
+
}), /* @__PURE__ */ v("p", {
|
|
40
|
+
className: "text-2xl font-bold mt-1",
|
|
41
|
+
children: ["$", S.toLocaleString()]
|
|
42
|
+
})]
|
|
43
|
+
}) }),
|
|
44
|
+
/* @__PURE__ */ _(c, { children: /* @__PURE__ */ v(l, {
|
|
45
|
+
className: "pt-4",
|
|
46
|
+
children: [/* @__PURE__ */ v("div", {
|
|
47
|
+
className: "flex items-center gap-2 text-sm text-muted-foreground",
|
|
48
|
+
children: [/* @__PURE__ */ _(t, { className: "h-4 w-4" }), "Pending"]
|
|
49
|
+
}), /* @__PURE__ */ _("p", {
|
|
50
|
+
className: "text-2xl font-bold mt-1 text-blue-600",
|
|
51
|
+
children: C.length
|
|
52
|
+
})]
|
|
53
|
+
}) }),
|
|
54
|
+
/* @__PURE__ */ _(c, { children: /* @__PURE__ */ v(l, {
|
|
55
|
+
className: "pt-4",
|
|
56
|
+
children: [/* @__PURE__ */ v("div", {
|
|
57
|
+
className: "flex items-center gap-2 text-sm text-muted-foreground",
|
|
58
|
+
children: [/* @__PURE__ */ _(a, { className: "h-4 w-4" }), "Over Budget"]
|
|
59
|
+
}), /* @__PURE__ */ _("p", {
|
|
60
|
+
className: "text-2xl font-bold mt-1 text-red-600",
|
|
61
|
+
children: w.length
|
|
62
|
+
})]
|
|
63
|
+
}) }),
|
|
64
|
+
/* @__PURE__ */ _(c, { children: /* @__PURE__ */ v(l, {
|
|
65
|
+
className: "pt-4",
|
|
66
|
+
children: [/* @__PURE__ */ v("div", {
|
|
67
|
+
className: "flex items-center gap-2 text-sm text-muted-foreground",
|
|
68
|
+
children: [/* @__PURE__ */ _(i, { className: "h-4 w-4" }), "Overdue Invoices"]
|
|
69
|
+
}), /* @__PURE__ */ _("p", {
|
|
70
|
+
className: "text-2xl font-bold mt-1 text-orange-600",
|
|
71
|
+
children: T.length
|
|
72
|
+
})]
|
|
73
|
+
}) })
|
|
74
|
+
]
|
|
75
|
+
}),
|
|
76
|
+
/* @__PURE__ */ v(p, {
|
|
77
|
+
defaultValue: "transactions",
|
|
78
|
+
children: [
|
|
79
|
+
/* @__PURE__ */ v(h, { children: [
|
|
80
|
+
/* @__PURE__ */ _(g, {
|
|
81
|
+
value: "transactions",
|
|
82
|
+
children: "Transactions"
|
|
83
|
+
}),
|
|
84
|
+
/* @__PURE__ */ _(g, {
|
|
85
|
+
value: "budgets",
|
|
86
|
+
children: "Budgets"
|
|
87
|
+
}),
|
|
88
|
+
/* @__PURE__ */ _(g, {
|
|
89
|
+
value: "invoices",
|
|
90
|
+
children: "Invoices"
|
|
91
|
+
})
|
|
92
|
+
] }),
|
|
93
|
+
/* @__PURE__ */ _(m, {
|
|
94
|
+
value: "transactions",
|
|
95
|
+
className: "mt-4",
|
|
96
|
+
children: /* @__PURE__ */ _(c, { children: /* @__PURE__ */ _(l, {
|
|
97
|
+
className: "p-0",
|
|
98
|
+
children: /* @__PURE__ */ _("div", {
|
|
99
|
+
className: "overflow-x-auto",
|
|
100
|
+
children: /* @__PURE__ */ v("table", {
|
|
101
|
+
className: "w-full text-sm",
|
|
102
|
+
children: [/* @__PURE__ */ _("thead", { children: /* @__PURE__ */ v("tr", {
|
|
103
|
+
className: "border-b bg-muted/50",
|
|
104
|
+
children: [
|
|
105
|
+
/* @__PURE__ */ _("th", {
|
|
106
|
+
className: "text-left p-3 font-medium",
|
|
107
|
+
children: "ID"
|
|
108
|
+
}),
|
|
109
|
+
/* @__PURE__ */ _("th", {
|
|
110
|
+
className: "text-left p-3 font-medium",
|
|
111
|
+
children: "Type"
|
|
112
|
+
}),
|
|
113
|
+
/* @__PURE__ */ _("th", {
|
|
114
|
+
className: "text-left p-3 font-medium",
|
|
115
|
+
children: "Description"
|
|
116
|
+
}),
|
|
117
|
+
/* @__PURE__ */ _("th", {
|
|
118
|
+
className: "text-left p-3 font-medium",
|
|
119
|
+
children: "Department"
|
|
120
|
+
}),
|
|
121
|
+
/* @__PURE__ */ _("th", {
|
|
122
|
+
className: "text-right p-3 font-medium",
|
|
123
|
+
children: "Amount"
|
|
124
|
+
}),
|
|
125
|
+
/* @__PURE__ */ _("th", {
|
|
126
|
+
className: "text-left p-3 font-medium",
|
|
127
|
+
children: "Status"
|
|
128
|
+
}),
|
|
129
|
+
/* @__PURE__ */ _("th", {
|
|
130
|
+
className: "text-left p-3 font-medium",
|
|
131
|
+
children: "Date"
|
|
132
|
+
})
|
|
133
|
+
]
|
|
134
|
+
}) }), /* @__PURE__ */ _("tbody", { children: y.map((e) => /* @__PURE__ */ v("tr", {
|
|
135
|
+
className: "border-b hover:bg-muted/50 cursor-pointer",
|
|
136
|
+
children: [
|
|
137
|
+
/* @__PURE__ */ _("td", {
|
|
138
|
+
className: "p-3 font-mono text-xs",
|
|
139
|
+
children: e.id
|
|
140
|
+
}),
|
|
141
|
+
/* @__PURE__ */ _("td", {
|
|
142
|
+
className: "p-3 capitalize",
|
|
143
|
+
children: e.type
|
|
144
|
+
}),
|
|
145
|
+
/* @__PURE__ */ _("td", {
|
|
146
|
+
className: "p-3 truncate max-w-xs",
|
|
147
|
+
children: e.description
|
|
148
|
+
}),
|
|
149
|
+
/* @__PURE__ */ _("td", {
|
|
150
|
+
className: "p-3 text-xs",
|
|
151
|
+
children: e.department
|
|
152
|
+
}),
|
|
153
|
+
/* @__PURE__ */ v("td", {
|
|
154
|
+
className: `p-3 text-right font-medium ${e.amount < 0 ? "text-red-600" : ""}`,
|
|
155
|
+
children: ["$", Math.abs(e.amount).toLocaleString()]
|
|
156
|
+
}),
|
|
157
|
+
/* @__PURE__ */ _("td", {
|
|
158
|
+
className: "p-3",
|
|
159
|
+
children: /* @__PURE__ */ _(o, {
|
|
160
|
+
variant: "outline",
|
|
161
|
+
children: e.status
|
|
162
|
+
})
|
|
163
|
+
}),
|
|
164
|
+
/* @__PURE__ */ _("td", {
|
|
165
|
+
className: "p-3 text-xs",
|
|
166
|
+
children: new Date(e.date).toLocaleDateString()
|
|
167
|
+
})
|
|
168
|
+
]
|
|
169
|
+
}, e.id)) })]
|
|
170
|
+
})
|
|
171
|
+
})
|
|
172
|
+
}) })
|
|
173
|
+
}),
|
|
174
|
+
/* @__PURE__ */ _(m, {
|
|
175
|
+
value: "budgets",
|
|
176
|
+
className: "mt-4",
|
|
177
|
+
children: /* @__PURE__ */ _("div", {
|
|
178
|
+
className: "grid gap-4 md:grid-cols-2",
|
|
179
|
+
children: b.map((e) => /* @__PURE__ */ v(c, { children: [/* @__PURE__ */ v(d, {
|
|
180
|
+
className: "pb-2",
|
|
181
|
+
children: [/* @__PURE__ */ v("div", {
|
|
182
|
+
className: "flex items-center justify-between",
|
|
183
|
+
children: [/* @__PURE__ */ _(f, {
|
|
184
|
+
className: "text-base",
|
|
185
|
+
children: e.name
|
|
186
|
+
}), /* @__PURE__ */ _(o, {
|
|
187
|
+
variant: e.status === "over_budget" ? "destructive" : e.status === "under_budget" ? "secondary" : "default",
|
|
188
|
+
children: e.status.replace("_", " ")
|
|
189
|
+
})]
|
|
190
|
+
}), /* @__PURE__ */ v(u, { children: [
|
|
191
|
+
e.department,
|
|
192
|
+
" · ",
|
|
193
|
+
e.period
|
|
194
|
+
] })]
|
|
195
|
+
}), /* @__PURE__ */ _(l, { children: /* @__PURE__ */ v("div", {
|
|
196
|
+
className: "space-y-3",
|
|
197
|
+
children: [
|
|
198
|
+
/* @__PURE__ */ v("div", {
|
|
199
|
+
className: "flex justify-between text-sm",
|
|
200
|
+
children: [/* @__PURE__ */ _("span", {
|
|
201
|
+
className: "text-muted-foreground",
|
|
202
|
+
children: "Allocated"
|
|
203
|
+
}), /* @__PURE__ */ v("span", {
|
|
204
|
+
className: "font-medium",
|
|
205
|
+
children: ["$", e.allocated.toLocaleString()]
|
|
206
|
+
})]
|
|
207
|
+
}),
|
|
208
|
+
/* @__PURE__ */ v("div", {
|
|
209
|
+
className: "flex justify-between text-sm",
|
|
210
|
+
children: [/* @__PURE__ */ _("span", {
|
|
211
|
+
className: "text-muted-foreground",
|
|
212
|
+
children: "Spent"
|
|
213
|
+
}), /* @__PURE__ */ v("span", {
|
|
214
|
+
className: "font-medium",
|
|
215
|
+
children: ["$", e.spent.toLocaleString()]
|
|
216
|
+
})]
|
|
217
|
+
}),
|
|
218
|
+
/* @__PURE__ */ v("div", {
|
|
219
|
+
className: "flex justify-between text-sm",
|
|
220
|
+
children: [/* @__PURE__ */ _("span", {
|
|
221
|
+
className: "text-muted-foreground",
|
|
222
|
+
children: "Remaining"
|
|
223
|
+
}), /* @__PURE__ */ v("span", {
|
|
224
|
+
className: `font-medium ${e.remaining < 0 ? "text-red-600" : "text-green-600"}`,
|
|
225
|
+
children: ["$", e.remaining.toLocaleString()]
|
|
226
|
+
})]
|
|
227
|
+
}),
|
|
228
|
+
/* @__PURE__ */ _("div", {
|
|
229
|
+
className: "h-2 rounded-full bg-muted overflow-hidden",
|
|
230
|
+
children: /* @__PURE__ */ _("div", {
|
|
231
|
+
className: `h-full rounded-full ${e.status === "over_budget" ? "bg-red-500" : "bg-primary"}`,
|
|
232
|
+
style: { width: `${Math.min(e.spent / e.allocated * 100, 100)}%` }
|
|
233
|
+
})
|
|
234
|
+
}),
|
|
235
|
+
/* @__PURE__ */ v("p", {
|
|
236
|
+
className: "text-xs text-muted-foreground text-right",
|
|
237
|
+
children: [Math.round(e.spent / e.allocated * 100), "% utilized"]
|
|
238
|
+
})
|
|
239
|
+
]
|
|
240
|
+
}) })] }, e.id))
|
|
241
|
+
})
|
|
242
|
+
}),
|
|
243
|
+
/* @__PURE__ */ _(m, {
|
|
244
|
+
value: "invoices",
|
|
245
|
+
className: "mt-4",
|
|
246
|
+
children: /* @__PURE__ */ _(c, { children: /* @__PURE__ */ _(l, {
|
|
247
|
+
className: "p-0",
|
|
248
|
+
children: /* @__PURE__ */ _("div", {
|
|
249
|
+
className: "overflow-x-auto",
|
|
250
|
+
children: /* @__PURE__ */ v("table", {
|
|
251
|
+
className: "w-full text-sm",
|
|
252
|
+
children: [/* @__PURE__ */ _("thead", { children: /* @__PURE__ */ v("tr", {
|
|
253
|
+
className: "border-b bg-muted/50",
|
|
254
|
+
children: [
|
|
255
|
+
/* @__PURE__ */ _("th", {
|
|
256
|
+
className: "text-left p-3 font-medium",
|
|
257
|
+
children: "Invoice #"
|
|
258
|
+
}),
|
|
259
|
+
/* @__PURE__ */ _("th", {
|
|
260
|
+
className: "text-left p-3 font-medium",
|
|
261
|
+
children: "Vendor"
|
|
262
|
+
}),
|
|
263
|
+
/* @__PURE__ */ _("th", {
|
|
264
|
+
className: "text-right p-3 font-medium",
|
|
265
|
+
children: "Amount"
|
|
266
|
+
}),
|
|
267
|
+
/* @__PURE__ */ _("th", {
|
|
268
|
+
className: "text-left p-3 font-medium",
|
|
269
|
+
children: "Issue Date"
|
|
270
|
+
}),
|
|
271
|
+
/* @__PURE__ */ _("th", {
|
|
272
|
+
className: "text-left p-3 font-medium",
|
|
273
|
+
children: "Due Date"
|
|
274
|
+
}),
|
|
275
|
+
/* @__PURE__ */ _("th", {
|
|
276
|
+
className: "text-left p-3 font-medium",
|
|
277
|
+
children: "Status"
|
|
278
|
+
})
|
|
279
|
+
]
|
|
280
|
+
}) }), /* @__PURE__ */ _("tbody", { children: x.map((e) => /* @__PURE__ */ v("tr", {
|
|
281
|
+
className: "border-b hover:bg-muted/50 cursor-pointer",
|
|
282
|
+
children: [
|
|
283
|
+
/* @__PURE__ */ _("td", {
|
|
284
|
+
className: "p-3 font-mono text-xs",
|
|
285
|
+
children: e.number
|
|
286
|
+
}),
|
|
287
|
+
/* @__PURE__ */ _("td", {
|
|
288
|
+
className: "p-3",
|
|
289
|
+
children: e.vendor
|
|
290
|
+
}),
|
|
291
|
+
/* @__PURE__ */ v("td", {
|
|
292
|
+
className: "p-3 text-right font-medium",
|
|
293
|
+
children: ["$", e.amount.toLocaleString()]
|
|
294
|
+
}),
|
|
295
|
+
/* @__PURE__ */ _("td", {
|
|
296
|
+
className: "p-3 text-xs",
|
|
297
|
+
children: e.issueDate
|
|
298
|
+
}),
|
|
299
|
+
/* @__PURE__ */ _("td", {
|
|
300
|
+
className: "p-3 text-xs",
|
|
301
|
+
children: e.dueDate
|
|
302
|
+
}),
|
|
303
|
+
/* @__PURE__ */ _("td", {
|
|
304
|
+
className: "p-3",
|
|
305
|
+
children: /* @__PURE__ */ _(o, {
|
|
306
|
+
variant: e.status === "overdue" ? "destructive" : e.status === "paid" ? "default" : "outline",
|
|
307
|
+
children: e.status
|
|
308
|
+
})
|
|
309
|
+
})
|
|
310
|
+
]
|
|
311
|
+
}, e.id)) })]
|
|
312
|
+
})
|
|
313
|
+
})
|
|
314
|
+
}) })
|
|
315
|
+
})
|
|
316
|
+
]
|
|
317
|
+
})
|
|
318
|
+
]
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
//#endregion
|
|
322
|
+
export { y as FinanceFinanceHubPage };
|
|
323
|
+
|
|
324
|
+
//# sourceMappingURL=FinanceFinanceHubPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FinanceFinanceHubPage.js","names":[],"sources":["../../../src/assethandler/pages/FinanceFinanceHubPage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Separator,\n} from '@burdenoff/fe-libs/ui';\nimport {\n DollarSign,\n TrendingUp,\n TrendingDown,\n Receipt,\n FileText,\n CreditCard,\n Download,\n} from 'lucide-react';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nexport function FinanceFinanceHubPage() {\n const { transactions, budgets, invoices } = useAssetHandlerStore();\n\n const totalSpend = transactions.filter((t) => t.amount > 0).reduce((s, t) => s + t.amount, 0);\n const pendingTxns = transactions.filter((t) => t.status === 'pending');\n const overBudget = budgets.filter((b) => b.status === 'over_budget');\n const overdueInvoices = invoices.filter((i) => i.status === 'overdue');\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-bold\">Finance Hub</h1>\n <p className=\"text-sm text-muted-foreground\">Financial management for IT assets</p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\">\n <Download className=\"mr-2 h-4 w-4\" />\n Export\n </Button>\n <Button size=\"sm\">New Transaction</Button>\n </div>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <DollarSign className=\"h-4 w-4\" />\n Total Spend\n </div>\n <p className=\"text-2xl font-bold mt-1\">${totalSpend.toLocaleString()}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <CreditCard className=\"h-4 w-4\" />\n Pending\n </div>\n <p className=\"text-2xl font-bold mt-1 text-blue-600\">{pendingTxns.length}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <TrendingDown className=\"h-4 w-4\" />\n Over Budget\n </div>\n <p className=\"text-2xl font-bold mt-1 text-red-600\">{overBudget.length}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-sm text-muted-foreground\">\n <Receipt className=\"h-4 w-4\" />\n Overdue Invoices\n </div>\n <p className=\"text-2xl font-bold mt-1 text-orange-600\">{overdueInvoices.length}</p>\n </CardContent>\n </Card>\n </div>\n\n <Tabs defaultValue=\"transactions\">\n <TabsList>\n <TabsTrigger value=\"transactions\">Transactions</TabsTrigger>\n <TabsTrigger value=\"budgets\">Budgets</TabsTrigger>\n <TabsTrigger value=\"invoices\">Invoices</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"transactions\" className=\"mt-4\">\n <Card>\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\">Type</th>\n <th className=\"text-left p-3 font-medium\">Description</th>\n <th className=\"text-left p-3 font-medium\">Department</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 {transactions.map((txn) => (\n <tr key={txn.id} className=\"border-b hover:bg-muted/50 cursor-pointer\">\n <td className=\"p-3 font-mono text-xs\">{txn.id}</td>\n <td className=\"p-3 capitalize\">{txn.type}</td>\n <td className=\"p-3 truncate max-w-xs\">{txn.description}</td>\n <td className=\"p-3 text-xs\">{txn.department}</td>\n <td\n className={`p-3 text-right font-medium ${txn.amount < 0 ? 'text-red-600' : ''}`}\n >\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 </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"budgets\" className=\"mt-4\">\n <div className=\"grid gap-4 md:grid-cols-2\">\n {budgets.map((budget) => (\n <Card key={budget.id}>\n <CardHeader className=\"pb-2\">\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-base\">{budget.name}</CardTitle>\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 <CardDescription>\n {budget.department} · {budget.period}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Allocated</span>\n <span className=\"font-medium\">${budget.allocated.toLocaleString()}</span>\n </div>\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Spent</span>\n <span className=\"font-medium\">${budget.spent.toLocaleString()}</span>\n </div>\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-muted-foreground\">Remaining</span>\n <span\n className={`font-medium ${budget.remaining < 0 ? 'text-red-600' : 'text-green-600'}`}\n >\n ${budget.remaining.toLocaleString()}\n </span>\n </div>\n <div className=\"h-2 rounded-full bg-muted overflow-hidden\">\n <div\n className={`h-full rounded-full ${budget.status === 'over_budget' ? 'bg-red-500' : 'bg-primary'}`}\n style={{\n width: `${Math.min((budget.spent / budget.allocated) * 100, 100)}%`,\n }}\n />\n </div>\n <p className=\"text-xs text-muted-foreground text-right\">\n {Math.round((budget.spent / budget.allocated) * 100)}% utilized\n </p>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </TabsContent>\n\n <TabsContent value=\"invoices\" className=\"mt-4\">\n <Card>\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\">Invoice #</th>\n <th className=\"text-left p-3 font-medium\">Vendor</th>\n <th className=\"text-right p-3 font-medium\">Amount</th>\n <th className=\"text-left p-3 font-medium\">Issue Date</th>\n <th className=\"text-left p-3 font-medium\">Due Date</th>\n <th className=\"text-left p-3 font-medium\">Status</th>\n </tr>\n </thead>\n <tbody>\n {invoices.map((inv) => (\n <tr key={inv.id} className=\"border-b hover:bg-muted/50 cursor-pointer\">\n <td className=\"p-3 font-mono text-xs\">{inv.number}</td>\n <td className=\"p-3\">{inv.vendor}</td>\n <td className=\"p-3 text-right font-medium\">\n ${inv.amount.toLocaleString()}\n </td>\n <td className=\"p-3 text-xs\">{inv.issueDate}</td>\n <td className=\"p-3 text-xs\">{inv.dueDate}</td>\n <td className=\"p-3\">\n <Badge\n variant={\n inv.status === 'overdue'\n ? 'destructive'\n : inv.status === 'paid'\n ? 'default'\n : 'outline'\n }\n >\n {inv.status}\n </Badge>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n </TabsContent>\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FinanceInvoiceDetailPage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/FinanceInvoiceDetailPage.tsx"],"names":[],"mappings":"AAaA,wBAAgB,wBAAwB,4CAmIvC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
|
|
2
|
+
import { ArrowLeft as t, CheckCircle as n, Download as r, Printer as i } from "lucide-react";
|
|
3
|
+
import { useParams as a } from "react-router-dom";
|
|
4
|
+
import { Badge as o, Button as s, Card as c, CardContent as l, CardHeader as u, CardTitle as d } from "@burdenoff/fe-libs/ui";
|
|
5
|
+
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
6
|
+
//#region src/assethandler/pages/FinanceInvoiceDetailPage.tsx
|
|
7
|
+
function m() {
|
|
8
|
+
let { invoiceId: m } = a(), { invoices: h } = e(), g = h.find((e) => e.id === m || e.number === m) ?? h[0];
|
|
9
|
+
return g ? /* @__PURE__ */ p("div", {
|
|
10
|
+
className: "space-y-6 p-6 max-w-4xl",
|
|
11
|
+
children: [
|
|
12
|
+
/* @__PURE__ */ p("div", {
|
|
13
|
+
className: "flex items-center justify-between",
|
|
14
|
+
children: [/* @__PURE__ */ p("div", {
|
|
15
|
+
className: "flex items-center gap-4",
|
|
16
|
+
children: [/* @__PURE__ */ f(s, {
|
|
17
|
+
variant: "ghost",
|
|
18
|
+
size: "icon",
|
|
19
|
+
children: /* @__PURE__ */ f(t, { className: "h-4 w-4" })
|
|
20
|
+
}), /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ p("div", {
|
|
21
|
+
className: "flex items-center gap-3",
|
|
22
|
+
children: [/* @__PURE__ */ f("h1", {
|
|
23
|
+
className: "text-2xl font-bold",
|
|
24
|
+
children: g.number
|
|
25
|
+
}), /* @__PURE__ */ f(o, {
|
|
26
|
+
variant: g.status === "overdue" ? "destructive" : g.status === "paid" ? "default" : "outline",
|
|
27
|
+
children: g.status
|
|
28
|
+
})]
|
|
29
|
+
}), /* @__PURE__ */ f("p", {
|
|
30
|
+
className: "text-sm text-muted-foreground mt-1",
|
|
31
|
+
children: g.vendor
|
|
32
|
+
})] })]
|
|
33
|
+
}), /* @__PURE__ */ p("div", {
|
|
34
|
+
className: "flex gap-2",
|
|
35
|
+
children: [
|
|
36
|
+
/* @__PURE__ */ p(s, {
|
|
37
|
+
variant: "outline",
|
|
38
|
+
size: "sm",
|
|
39
|
+
children: [/* @__PURE__ */ f(i, { className: "mr-2 h-4 w-4" }), "Print"]
|
|
40
|
+
}),
|
|
41
|
+
/* @__PURE__ */ p(s, {
|
|
42
|
+
variant: "outline",
|
|
43
|
+
size: "sm",
|
|
44
|
+
children: [/* @__PURE__ */ f(r, { className: "mr-2 h-4 w-4" }), "Download"]
|
|
45
|
+
}),
|
|
46
|
+
g.status !== "paid" && /* @__PURE__ */ p(s, {
|
|
47
|
+
size: "sm",
|
|
48
|
+
children: [/* @__PURE__ */ f(n, { className: "mr-2 h-4 w-4" }), "Mark as Paid"]
|
|
49
|
+
})
|
|
50
|
+
]
|
|
51
|
+
})]
|
|
52
|
+
}),
|
|
53
|
+
/* @__PURE__ */ p(c, { children: [/* @__PURE__ */ f(u, { children: /* @__PURE__ */ f(d, { children: "Invoice Details" }) }), /* @__PURE__ */ f(l, { children: /* @__PURE__ */ p("div", {
|
|
54
|
+
className: "grid grid-cols-2 gap-6 text-sm",
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("span", {
|
|
57
|
+
className: "text-muted-foreground",
|
|
58
|
+
children: "Invoice Number"
|
|
59
|
+
}), /* @__PURE__ */ f("p", {
|
|
60
|
+
className: "font-medium",
|
|
61
|
+
children: g.number
|
|
62
|
+
})] }),
|
|
63
|
+
/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("span", {
|
|
64
|
+
className: "text-muted-foreground",
|
|
65
|
+
children: "Vendor"
|
|
66
|
+
}), /* @__PURE__ */ f("p", {
|
|
67
|
+
className: "font-medium",
|
|
68
|
+
children: g.vendor
|
|
69
|
+
})] }),
|
|
70
|
+
/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("span", {
|
|
71
|
+
className: "text-muted-foreground",
|
|
72
|
+
children: "Issue Date"
|
|
73
|
+
}), /* @__PURE__ */ f("p", {
|
|
74
|
+
className: "font-medium",
|
|
75
|
+
children: g.issueDate
|
|
76
|
+
})] }),
|
|
77
|
+
/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("span", {
|
|
78
|
+
className: "text-muted-foreground",
|
|
79
|
+
children: "Due Date"
|
|
80
|
+
}), /* @__PURE__ */ f("p", {
|
|
81
|
+
className: "font-medium",
|
|
82
|
+
children: g.dueDate
|
|
83
|
+
})] }),
|
|
84
|
+
g.relatedPO && /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("span", {
|
|
85
|
+
className: "text-muted-foreground",
|
|
86
|
+
children: "Related PO"
|
|
87
|
+
}), /* @__PURE__ */ f("p", {
|
|
88
|
+
className: "font-medium",
|
|
89
|
+
children: g.relatedPO
|
|
90
|
+
})] }),
|
|
91
|
+
/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("span", {
|
|
92
|
+
className: "text-muted-foreground",
|
|
93
|
+
children: "Currency"
|
|
94
|
+
}), /* @__PURE__ */ f("p", {
|
|
95
|
+
className: "font-medium",
|
|
96
|
+
children: g.currency
|
|
97
|
+
})] })
|
|
98
|
+
]
|
|
99
|
+
}) })] }),
|
|
100
|
+
/* @__PURE__ */ p(c, { children: [/* @__PURE__ */ f(u, { children: /* @__PURE__ */ f(d, { children: "Line Items" }) }), /* @__PURE__ */ f(l, {
|
|
101
|
+
className: "p-0",
|
|
102
|
+
children: /* @__PURE__ */ f("div", {
|
|
103
|
+
className: "overflow-x-auto",
|
|
104
|
+
children: /* @__PURE__ */ p("table", {
|
|
105
|
+
className: "w-full text-sm",
|
|
106
|
+
children: [/* @__PURE__ */ f("thead", { children: /* @__PURE__ */ p("tr", {
|
|
107
|
+
className: "border-b bg-muted/50",
|
|
108
|
+
children: [
|
|
109
|
+
/* @__PURE__ */ f("th", {
|
|
110
|
+
className: "text-left p-3 font-medium",
|
|
111
|
+
children: "Description"
|
|
112
|
+
}),
|
|
113
|
+
/* @__PURE__ */ f("th", {
|
|
114
|
+
className: "text-right p-3 font-medium",
|
|
115
|
+
children: "Qty"
|
|
116
|
+
}),
|
|
117
|
+
/* @__PURE__ */ f("th", {
|
|
118
|
+
className: "text-right p-3 font-medium",
|
|
119
|
+
children: "Unit Price"
|
|
120
|
+
}),
|
|
121
|
+
/* @__PURE__ */ f("th", {
|
|
122
|
+
className: "text-right p-3 font-medium",
|
|
123
|
+
children: "Total"
|
|
124
|
+
})
|
|
125
|
+
]
|
|
126
|
+
}) }), /* @__PURE__ */ p("tbody", { children: [g.items.map((e, t) => /* @__PURE__ */ p("tr", {
|
|
127
|
+
className: "border-b",
|
|
128
|
+
children: [
|
|
129
|
+
/* @__PURE__ */ f("td", {
|
|
130
|
+
className: "p-3",
|
|
131
|
+
children: e.description
|
|
132
|
+
}),
|
|
133
|
+
/* @__PURE__ */ f("td", {
|
|
134
|
+
className: "p-3 text-right",
|
|
135
|
+
children: e.qty
|
|
136
|
+
}),
|
|
137
|
+
/* @__PURE__ */ p("td", {
|
|
138
|
+
className: "p-3 text-right",
|
|
139
|
+
children: ["$", e.unitPrice.toLocaleString()]
|
|
140
|
+
}),
|
|
141
|
+
/* @__PURE__ */ p("td", {
|
|
142
|
+
className: "p-3 text-right font-medium",
|
|
143
|
+
children: ["$", e.total.toLocaleString()]
|
|
144
|
+
})
|
|
145
|
+
]
|
|
146
|
+
}, t)), /* @__PURE__ */ p("tr", {
|
|
147
|
+
className: "bg-muted/50",
|
|
148
|
+
children: [/* @__PURE__ */ f("td", {
|
|
149
|
+
colSpan: 3,
|
|
150
|
+
className: "p-3 text-right font-bold",
|
|
151
|
+
children: "Total"
|
|
152
|
+
}), /* @__PURE__ */ p("td", {
|
|
153
|
+
className: "p-3 text-right font-bold text-lg",
|
|
154
|
+
children: ["$", g.amount.toLocaleString()]
|
|
155
|
+
})]
|
|
156
|
+
})] })]
|
|
157
|
+
})
|
|
158
|
+
})
|
|
159
|
+
})] })
|
|
160
|
+
]
|
|
161
|
+
}) : /* @__PURE__ */ f("div", {
|
|
162
|
+
className: "p-6",
|
|
163
|
+
children: /* @__PURE__ */ f("p", {
|
|
164
|
+
className: "text-muted-foreground",
|
|
165
|
+
children: "Invoice not found."
|
|
166
|
+
})
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
//#endregion
|
|
170
|
+
export { m as FinanceInvoiceDetailPage };
|
|
171
|
+
|
|
172
|
+
//# sourceMappingURL=FinanceInvoiceDetailPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FinanceInvoiceDetailPage.js","names":[],"sources":["../../../src/assethandler/pages/FinanceInvoiceDetailPage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Separator,\n} from '@burdenoff/fe-libs/ui';\nimport { ArrowLeft, Download, Printer, CheckCircle } from 'lucide-react';\nimport { useParams } from 'react-router-dom';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\nexport function FinanceInvoiceDetailPage() {\n const { invoiceId } = useParams<{ invoiceId: string }>();\n const { invoices } = useAssetHandlerStore();\n const invoice =\n invoices.find((item) => item.id === invoiceId || item.number === invoiceId) ?? invoices[0];\n\n if (!invoice)\n return (\n <div className=\"p-6\">\n <p className=\"text-muted-foreground\">Invoice not found.</p>\n </div>\n );\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 <div className=\"flex items-center gap-3\">\n <h1 className=\"text-2xl font-bold\">{invoice.number}</h1>\n <Badge\n variant={\n invoice.status === 'overdue'\n ? 'destructive'\n : invoice.status === 'paid'\n ? 'default'\n : 'outline'\n }\n >\n {invoice.status}\n </Badge>\n </div>\n <p className=\"text-sm text-muted-foreground mt-1\">{invoice.vendor}</p>\n </div>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\">\n <Printer className=\"mr-2 h-4 w-4\" />\n Print\n </Button>\n <Button variant=\"outline\" size=\"sm\">\n <Download className=\"mr-2 h-4 w-4\" />\n Download\n </Button>\n {invoice.status !== 'paid' && (\n <Button size=\"sm\">\n <CheckCircle className=\"mr-2 h-4 w-4\" />\n Mark as Paid\n </Button>\n )}\n </div>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>Invoice Details</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-2 gap-6 text-sm\">\n <div>\n <span className=\"text-muted-foreground\">Invoice Number</span>\n <p className=\"font-medium\">{invoice.number}</p>\n </div>\n <div>\n <span className=\"text-muted-foreground\">Vendor</span>\n <p className=\"font-medium\">{invoice.vendor}</p>\n </div>\n <div>\n <span className=\"text-muted-foreground\">Issue Date</span>\n <p className=\"font-medium\">{invoice.issueDate}</p>\n </div>\n <div>\n <span className=\"text-muted-foreground\">Due Date</span>\n <p className=\"font-medium\">{invoice.dueDate}</p>\n </div>\n {invoice.relatedPO && (\n <div>\n <span className=\"text-muted-foreground\">Related PO</span>\n <p className=\"font-medium\">{invoice.relatedPO}</p>\n </div>\n )}\n <div>\n <span className=\"text-muted-foreground\">Currency</span>\n <p className=\"font-medium\">{invoice.currency}</p>\n </div>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Line Items</CardTitle>\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\">Description</th>\n <th className=\"text-right p-3 font-medium\">Qty</th>\n <th className=\"text-right p-3 font-medium\">Unit Price</th>\n <th className=\"text-right p-3 font-medium\">Total</th>\n </tr>\n </thead>\n <tbody>\n {invoice.items.map((item, i) => (\n <tr key={i} className=\"border-b\">\n <td className=\"p-3\">{item.description}</td>\n <td className=\"p-3 text-right\">{item.qty}</td>\n <td className=\"p-3 text-right\">${item.unitPrice.toLocaleString()}</td>\n <td className=\"p-3 text-right font-medium\">${item.total.toLocaleString()}</td>\n </tr>\n ))}\n <tr className=\"bg-muted/50\">\n <td colSpan={3} className=\"p-3 text-right font-bold\">\n Total\n </td>\n <td className=\"p-3 text-right font-bold text-lg\">\n ${invoice.amount.toLocaleString()}\n </td>\n </tr>\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":"IotDevicesPage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/IotDevicesPage.tsx"],"names":[],"mappings":"AAmBA,wBAAgB,cAAc,4CAuD7B"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Cpu as e } from "lucide-react";
|
|
2
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
+
import { gql as r } from "@apollo/client";
|
|
4
|
+
import { useQuery as i } from "@apollo/client/react";
|
|
5
|
+
//#region src/assethandler/pages/IotDevicesPage.tsx
|
|
6
|
+
var a = r`
|
|
7
|
+
query AssetHandlerIoTDevices {
|
|
8
|
+
iotDevices {
|
|
9
|
+
id
|
|
10
|
+
deviceId
|
|
11
|
+
name
|
|
12
|
+
type
|
|
13
|
+
protocol
|
|
14
|
+
status
|
|
15
|
+
assetId
|
|
16
|
+
updatedAt
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
`;
|
|
20
|
+
function o() {
|
|
21
|
+
let { data: r, loading: o } = i(a, { fetchPolicy: "cache-and-network" }), s = r?.iotDevices ?? [];
|
|
22
|
+
return /* @__PURE__ */ n("div", {
|
|
23
|
+
className: "space-y-4 p-4",
|
|
24
|
+
children: [
|
|
25
|
+
/* @__PURE__ */ n("h1", {
|
|
26
|
+
className: "flex items-center gap-2 text-2xl font-semibold",
|
|
27
|
+
children: [/* @__PURE__ */ t(e, { className: "h-6 w-6" }), " IoT Devices"]
|
|
28
|
+
}),
|
|
29
|
+
/* @__PURE__ */ t("p", {
|
|
30
|
+
className: "text-muted-foreground",
|
|
31
|
+
children: "Monitor IoT device health, telemetry streams, and command execution."
|
|
32
|
+
}),
|
|
33
|
+
/* @__PURE__ */ n("div", {
|
|
34
|
+
className: "rounded-lg border",
|
|
35
|
+
children: [
|
|
36
|
+
/* @__PURE__ */ n("div", {
|
|
37
|
+
className: "grid grid-cols-6 gap-3 border-b px-4 py-3 text-xs font-semibold uppercase tracking-wide text-muted-foreground",
|
|
38
|
+
children: [
|
|
39
|
+
/* @__PURE__ */ t("span", { children: "Device" }),
|
|
40
|
+
/* @__PURE__ */ t("span", { children: "Name" }),
|
|
41
|
+
/* @__PURE__ */ t("span", { children: "Type" }),
|
|
42
|
+
/* @__PURE__ */ t("span", { children: "Protocol" }),
|
|
43
|
+
/* @__PURE__ */ t("span", { children: "Status" }),
|
|
44
|
+
/* @__PURE__ */ t("span", { children: "Asset" })
|
|
45
|
+
]
|
|
46
|
+
}),
|
|
47
|
+
o && s.length === 0 ? /* @__PURE__ */ t("div", {
|
|
48
|
+
className: "px-4 py-4 text-sm text-muted-foreground",
|
|
49
|
+
children: "Loading devices..."
|
|
50
|
+
}) : null,
|
|
51
|
+
!o && s.length === 0 ? /* @__PURE__ */ t("div", {
|
|
52
|
+
className: "px-4 py-4 text-sm text-muted-foreground",
|
|
53
|
+
children: "No IoT devices found."
|
|
54
|
+
}) : null,
|
|
55
|
+
s.map((e) => /* @__PURE__ */ n("div", {
|
|
56
|
+
className: "grid grid-cols-6 gap-3 border-b px-4 py-3 text-sm last:border-b-0",
|
|
57
|
+
children: [
|
|
58
|
+
/* @__PURE__ */ t("span", {
|
|
59
|
+
className: "font-medium",
|
|
60
|
+
children: e.deviceId
|
|
61
|
+
}),
|
|
62
|
+
/* @__PURE__ */ t("span", { children: e.name }),
|
|
63
|
+
/* @__PURE__ */ t("span", { children: e.type }),
|
|
64
|
+
/* @__PURE__ */ t("span", { children: e.protocol }),
|
|
65
|
+
/* @__PURE__ */ t("span", { children: e.status }),
|
|
66
|
+
/* @__PURE__ */ t("span", {
|
|
67
|
+
className: "truncate text-muted-foreground",
|
|
68
|
+
children: e.assetId ?? "Unlinked"
|
|
69
|
+
})
|
|
70
|
+
]
|
|
71
|
+
}, e.id))
|
|
72
|
+
]
|
|
73
|
+
})
|
|
74
|
+
]
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
export { o as IotDevicesPage };
|
|
79
|
+
|
|
80
|
+
//# sourceMappingURL=IotDevicesPage.js.map
|