@burdenoff/microfe-crewfoundry 2026.608.1 → 2026.625.1

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.
Files changed (131) hide show
  1. package/dist/crewfoundry/pages/AdminAdminPagePage.js +94 -78
  2. package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
  3. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +112 -96
  4. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  5. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +101 -85
  6. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
  7. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +131 -115
  8. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
  9. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +116 -100
  10. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
  11. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +15 -15
  12. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
  13. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +63 -51
  14. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
  15. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +16 -16
  16. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
  17. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +26 -26
  18. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
  19. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +28 -28
  20. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
  21. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +10 -10
  22. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
  23. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +71 -59
  24. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
  25. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +59 -47
  26. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
  27. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +77 -61
  28. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
  29. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +40 -40
  30. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
  31. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +13 -13
  32. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
  33. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +102 -86
  34. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
  35. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +173 -139
  36. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
  37. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +59 -59
  38. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
  39. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +113 -97
  40. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
  41. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +45 -45
  42. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
  43. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +85 -69
  44. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
  45. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +23 -23
  46. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
  47. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +40 -40
  48. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
  49. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +59 -47
  50. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
  51. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +52 -48
  52. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
  53. package/dist/crewfoundry/pages/HiringJobsPagePage.js +31 -26
  54. package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
  55. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +61 -49
  56. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
  57. package/dist/crewfoundry/pages/HrEmployeesPagePage.js +83 -67
  58. package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
  59. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +90 -74
  60. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
  61. package/dist/crewfoundry/pages/HrPayrollPagePage.js +90 -74
  62. package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
  63. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +83 -67
  64. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
  65. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +54 -42
  66. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
  67. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +16 -16
  68. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
  69. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +39 -35
  70. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
  71. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +24 -24
  72. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
  73. package/dist/crewfoundry/pages/LearningCoursesPagePage.js +14 -14
  74. package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
  75. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +81 -65
  76. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
  77. package/dist/crewfoundry/pages/LearningLearningPagePage.js +73 -57
  78. package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
  79. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +28 -28
  80. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
  81. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +12 -12
  82. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
  83. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +75 -59
  84. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
  85. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +57 -45
  86. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
  87. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +71 -59
  88. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
  89. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +48 -48
  90. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
  91. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +44 -43
  92. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
  93. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +58 -46
  94. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
  95. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +16 -16
  96. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
  97. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +23 -23
  98. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
  99. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +9 -9
  100. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
  101. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +43 -39
  102. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
  103. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +31 -27
  104. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
  105. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +59 -47
  106. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
  107. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +13 -13
  108. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
  109. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +66 -50
  110. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
  111. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +18 -18
  112. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
  113. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +74 -62
  114. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
  115. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +21 -21
  116. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
  117. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +47 -43
  118. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
  119. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +20 -20
  120. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
  121. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +58 -46
  122. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
  123. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +38 -34
  124. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
  125. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +14 -14
  126. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
  127. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +67 -67
  128. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
  129. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +16 -16
  130. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
  131. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"MarketplaceProjectDetailsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceProjectDetailsPagePage.tsx"],"sourcesContent":["import { Badge, Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { Calendar, DollarSign, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceProjectDetailsPagePage() {\n const { projects } = useCrewFoundryStore();\n const project = projects[0];\n if (!project) return <div className=\"p-6 text-muted-foreground\">No project found.</div>;\n\n return (\n <div className=\"space-y-6 p-6 max-w-4xl\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">{project.name}</h1>\n <p className=\"text-sm text-muted-foreground\">{project.description}</p>\n </div>\n <Badge variant={project.status === 'active' ? 'default' : 'secondary'}>\n {project.status}\n </Badge>\n </div>\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"p-4 text-center\">\n <DollarSign className=\"h-5 w-5 mx-auto text-muted-foreground mb-1\" />\n <p className=\"text-lg font-bold\">${(project.budget / 1000).toFixed(0)}K</p>\n <p className=\"text-xs text-muted-foreground\">Budget</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <DollarSign className=\"h-5 w-5 mx-auto text-green-500 mb-1\" />\n <p className=\"text-lg font-bold\">${(project.spent / 1000).toFixed(0)}K</p>\n <p className=\"text-xs text-muted-foreground\">Spent</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Users className=\"h-5 w-5 mx-auto text-muted-foreground mb-1\" />\n <p className=\"text-lg font-bold\">{project.teamName}</p>\n <p className=\"text-xs text-muted-foreground\">Team</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Calendar className=\"h-5 w-5 mx-auto text-muted-foreground mb-1\" />\n <p className=\"text-lg font-bold\">{project.endDate}</p>\n <p className=\"text-xs text-muted-foreground\">Deadline</p>\n </CardContent>\n </Card>\n </div>\n <Card>\n <CardHeader>\n <CardTitle>Progress</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2\">\n <div className=\"flex justify-between text-sm\">\n <span>\n {project.completedTasks} of {project.tasks} tasks\n </span>\n <span className=\"font-medium\">{project.progress}%</span>\n </div>\n <div className=\"h-3 bg-muted rounded overflow-hidden\">\n <div className=\"h-3 bg-primary rounded\" style={{ width: `${project.progress}%` }} />\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-4 mt-4\">\n <div>\n <p className=\"text-xs text-muted-foreground\">Manager</p>\n <p className=\"text-sm font-medium\">{project.managerName}</p>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Priority</p>\n <Badge\n variant={\n project.priority === 'critical'\n ? 'destructive'\n : project.priority === 'high'\n ? 'default'\n : 'secondary'\n }\n >\n {project.priority}\n </Badge>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">Start Date</p>\n <p className=\"text-sm\">{project.startDate}</p>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">End Date</p>\n <p className=\"text-sm\">{project.endDate}</p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"MarketplaceProjectDetailsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceProjectDetailsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n GradientText,\n IllustratedEmptyState,\n} from '@burdenoff/fe-libs/ui';\nimport { Calendar, DollarSign, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceProjectDetailsPagePage() {\n const { projects } = useCrewFoundryStore();\n const project = projects[0];\n if (!project)\n return (\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"Project not found\"\n description=\"This project is no longer available.\"\n />\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>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>{project.name}</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">{project.description}</p>\n </div>\n <Badge variant={project.status === 'active' ? 'default' : 'secondary'}>\n {project.status}\n </Badge>\n </div>\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"p-4 text-center\">\n <DollarSign className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">${(project.budget / 1000).toFixed(0)}K</p>\n <p className=\"text-xs text-text-secondary\">Budget</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <DollarSign className=\"h-5 w-5 mx-auto text-status-success-text mb-1\" />\n <p className=\"text-lg font-bold\">${(project.spent / 1000).toFixed(0)}K</p>\n <p className=\"text-xs text-text-secondary\">Spent</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Users className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{project.teamName}</p>\n <p className=\"text-xs text-text-secondary\">Team</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Calendar className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{project.endDate}</p>\n <p className=\"text-xs text-text-secondary\">Deadline</p>\n </CardContent>\n </Card>\n </div>\n <Card>\n <CardHeader>\n <CardTitle>Progress</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2\">\n <div className=\"flex justify-between text-sm\">\n <span>\n {project.completedTasks} of {project.tasks} tasks\n </span>\n <span className=\"font-medium\">{project.progress}%</span>\n </div>\n <div className=\"h-3 bg-bg-sunken rounded overflow-hidden\">\n <div\n className=\"h-3 bg-action-primary-bg rounded\"\n style={{ width: `${project.progress}%` }}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-4 mt-4\">\n <div>\n <p className=\"text-xs text-text-secondary\">Manager</p>\n <p className=\"text-sm font-medium\">{project.managerName}</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Priority</p>\n <Badge\n variant={\n project.priority === 'critical'\n ? 'destructive'\n : project.priority === 'high'\n ? 'default'\n : 'secondary'\n }\n >\n {project.priority}\n </Badge>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Start Date</p>\n <p className=\"text-sm\">{project.startDate}</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">End Date</p>\n <p className=\"text-sm\">{project.endDate}</p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,21 +1,21 @@
1
1
  import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
2
  import { Clock as t, DollarSign as n, MessageSquare as r, Star as i, Users as a } from "lucide-react";
3
3
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
4
- import { Badge as c, Button as l, Card as u, CardContent as d, CardHeader as f, CardTitle as p } from "@burdenoff/fe-libs/ui";
4
+ import { Badge as c, Button as l, Card as u, CardContent as d, CardHeader as f, CardTitle as p, GradientText as m, IllustratedEmptyState as h } from "@burdenoff/fe-libs/ui";
5
5
  //#region src/crewfoundry/pages/MarketplaceServiceDetailsPagePage.tsx
6
- function m() {
7
- let { marketplaceServices: m } = e(), h = m[0];
8
- return h ? /* @__PURE__ */ s("div", {
6
+ function g() {
7
+ let { marketplaceServices: g } = e(), _ = g[0];
8
+ return _ ? /* @__PURE__ */ s("div", {
9
9
  className: "space-y-6 p-6 max-w-4xl",
10
10
  children: [
11
11
  /* @__PURE__ */ s("div", {
12
12
  className: "flex items-center justify-between",
13
13
  children: [/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h1", {
14
14
  className: "text-2xl font-semibold",
15
- children: h.title
15
+ children: /* @__PURE__ */ o(m, { children: _.title })
16
16
  }), /* @__PURE__ */ s("p", {
17
- className: "text-sm text-muted-foreground",
18
- children: ["by ", h.provider]
17
+ className: "text-sm text-text-secondary",
18
+ children: ["by ", _.provider]
19
19
  })] }), /* @__PURE__ */ s("div", {
20
20
  className: "flex gap-2",
21
21
  children: [/* @__PURE__ */ s(l, {
@@ -30,41 +30,41 @@ function m() {
30
30
  /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
31
31
  className: "p-4 text-center",
32
32
  children: [
33
- /* @__PURE__ */ o(n, { className: "h-5 w-5 mx-auto text-muted-foreground mb-1" }),
33
+ /* @__PURE__ */ o(n, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
34
34
  /* @__PURE__ */ s("p", {
35
35
  className: "text-lg font-bold",
36
- children: ["$", h.price.toLocaleString()]
36
+ children: ["$", _.price.toLocaleString()]
37
37
  }),
38
38
  /* @__PURE__ */ s("p", {
39
- className: "text-xs text-muted-foreground",
40
- children: ["per ", h.priceType]
39
+ className: "text-xs text-text-secondary",
40
+ children: ["per ", _.priceType]
41
41
  })
42
42
  ]
43
43
  }) }),
44
44
  /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
45
45
  className: "p-4 text-center",
46
46
  children: [
47
- /* @__PURE__ */ o(i, { className: "h-5 w-5 mx-auto text-yellow-500 mb-1" }),
47
+ /* @__PURE__ */ o(i, { className: "h-5 w-5 mx-auto text-status-warning-text mb-1" }),
48
48
  /* @__PURE__ */ s("p", {
49
49
  className: "text-lg font-bold",
50
- children: [h.rating, "/5"]
50
+ children: [_.rating, "/5"]
51
51
  }),
52
52
  /* @__PURE__ */ s("p", {
53
- className: "text-xs text-muted-foreground",
54
- children: [h.reviews, " reviews"]
53
+ className: "text-xs text-text-secondary",
54
+ children: [_.reviews, " reviews"]
55
55
  })
56
56
  ]
57
57
  }) }),
58
58
  /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
59
59
  className: "p-4 text-center",
60
60
  children: [
61
- /* @__PURE__ */ o(t, { className: "h-5 w-5 mx-auto text-muted-foreground mb-1" }),
61
+ /* @__PURE__ */ o(t, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
62
62
  /* @__PURE__ */ o("p", {
63
63
  className: "text-lg font-bold",
64
- children: h.deliveryTime
64
+ children: _.deliveryTime
65
65
  }),
66
66
  /* @__PURE__ */ o("p", {
67
- className: "text-xs text-muted-foreground",
67
+ className: "text-xs text-text-secondary",
68
68
  children: "Delivery"
69
69
  })
70
70
  ]
@@ -72,13 +72,13 @@ function m() {
72
72
  /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
73
73
  className: "p-4 text-center",
74
74
  children: [
75
- /* @__PURE__ */ o(a, { className: "h-5 w-5 mx-auto text-muted-foreground mb-1" }),
75
+ /* @__PURE__ */ o(a, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
76
76
  /* @__PURE__ */ o("p", {
77
77
  className: "text-lg font-bold",
78
- children: h.category
78
+ children: _.category
79
79
  }),
80
80
  /* @__PURE__ */ o("p", {
81
- className: "text-xs text-muted-foreground",
81
+ className: "text-xs text-text-secondary",
82
82
  children: "Category"
83
83
  })
84
84
  ]
@@ -86,22 +86,26 @@ function m() {
86
86
  ]
87
87
  }),
88
88
  /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ o(f, { children: /* @__PURE__ */ o(p, { children: "About this Service" }) }), /* @__PURE__ */ s(d, { children: [/* @__PURE__ */ o("p", {
89
- className: "text-sm text-muted-foreground",
90
- children: h.description
89
+ className: "text-sm text-text-secondary",
90
+ children: _.description
91
91
  }), /* @__PURE__ */ o("div", {
92
92
  className: "flex flex-wrap gap-1 mt-3",
93
- children: h.skills.map((e) => /* @__PURE__ */ o(c, {
93
+ children: _.skills.map((e) => /* @__PURE__ */ o(c, {
94
94
  variant: "outline",
95
95
  children: e
96
96
  }, e))
97
97
  })] })] })
98
98
  ]
99
99
  }) : /* @__PURE__ */ o("div", {
100
- className: "p-6 text-muted-foreground",
101
- children: "No service found."
100
+ className: "p-6",
101
+ children: /* @__PURE__ */ o(h, {
102
+ illustration: "empty-search",
103
+ title: "Service not found",
104
+ description: "This service is no longer available."
105
+ })
102
106
  });
103
107
  }
104
108
  //#endregion
105
- export { m as MarketplaceServiceDetailsPagePage };
109
+ export { g as MarketplaceServiceDetailsPagePage };
106
110
 
107
111
  //# sourceMappingURL=MarketplaceServiceDetailsPagePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarketplaceServiceDetailsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceServiceDetailsPagePage.tsx"],"sourcesContent":["import { Badge, Button, Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { Clock, DollarSign, MessageSquare, Star, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceServiceDetailsPagePage() {\n const { marketplaceServices } = useCrewFoundryStore();\n const svc = marketplaceServices[0];\n if (!svc) return <div className=\"p-6 text-muted-foreground\">No service found.</div>;\n\n return (\n <div className=\"space-y-6 p-6 max-w-4xl\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">{svc.title}</h1>\n <p className=\"text-sm text-muted-foreground\">by {svc.provider}</p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\">\n <MessageSquare className=\"h-4 w-4 mr-1\" />\n Contact\n </Button>\n <Button>Hire Now</Button>\n </div>\n </div>\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"p-4 text-center\">\n <DollarSign className=\"h-5 w-5 mx-auto text-muted-foreground mb-1\" />\n <p className=\"text-lg font-bold\">${svc.price.toLocaleString()}</p>\n <p className=\"text-xs text-muted-foreground\">per {svc.priceType}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Star className=\"h-5 w-5 mx-auto text-yellow-500 mb-1\" />\n <p className=\"text-lg font-bold\">{svc.rating}/5</p>\n <p className=\"text-xs text-muted-foreground\">{svc.reviews} reviews</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Clock className=\"h-5 w-5 mx-auto text-muted-foreground mb-1\" />\n <p className=\"text-lg font-bold\">{svc.deliveryTime}</p>\n <p className=\"text-xs text-muted-foreground\">Delivery</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Users className=\"h-5 w-5 mx-auto text-muted-foreground mb-1\" />\n <p className=\"text-lg font-bold\">{svc.category}</p>\n <p className=\"text-xs text-muted-foreground\">Category</p>\n </CardContent>\n </Card>\n </div>\n <Card>\n <CardHeader>\n <CardTitle>About this Service</CardTitle>\n </CardHeader>\n <CardContent>\n <p className=\"text-sm text-muted-foreground\">{svc.description}</p>\n <div className=\"flex flex-wrap gap-1 mt-3\">\n {svc.skills.map((s) => (\n <Badge key={s} variant=\"outline\">\n {s}\n </Badge>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":";;;;;AAIA,SAAgB,IAAoC;CAClD,IAAM,EAAE,2BAAwB,GAAqB,EAC/C,IAAM,EAAoB;AAGhC,QAFK,IAGH,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;KAAI,WAAU;eAA0B,EAAI;KAAW,CAAA,EACvD,kBAAC,KAAD;KAAG,WAAU;eAAb,CAA6C,OAAI,EAAI,SAAa;OAC9D,EAAA,CAAA,EACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD;MAAQ,SAAQ;gBAAhB,CACE,kBAAC,GAAD,EAAe,WAAU,gBAAiB,CAAA,EAAA,UAEnC;SACT,kBAAC,GAAD,EAAA,UAAQ,YAAiB,CAAA,CACrB;OACF;;GACN,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;MAAa,WAAU;gBAAvB;OACE,kBAAC,GAAD,EAAY,WAAU,8CAA+C,CAAA;OACrE,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAAiC,KAAE,EAAI,MAAM,gBAAgB,CAAK;;OAClE,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAA6C,QAAK,EAAI,UAAc;;OACxD;SACT,CAAA;KACP,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;MAAa,WAAU;gBAAvB;OACE,kBAAC,GAAD,EAAM,WAAU,wCAAyC,CAAA;OACzD,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAAkC,EAAI,QAAO,KAAM;;OACnD,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAA8C,EAAI,SAAQ,WAAY;;OAC1D;SACT,CAAA;KACP,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;MAAa,WAAU;gBAAvB;OACE,kBAAC,GAAD,EAAO,WAAU,8CAA+C,CAAA;OAChE,kBAAC,KAAD;QAAG,WAAU;kBAAqB,EAAI;QAAiB,CAAA;OACvD,kBAAC,KAAD;QAAG,WAAU;kBAAgC;QAAY,CAAA;OAC7C;SACT,CAAA;KACP,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;MAAa,WAAU;gBAAvB;OACE,kBAAC,GAAD,EAAO,WAAU,8CAA+C,CAAA;OAChE,kBAAC,KAAD;QAAG,WAAU;kBAAqB,EAAI;QAAa,CAAA;OACnD,kBAAC,KAAD;QAAG,WAAU;kBAAgC;QAAY,CAAA;OAC7C;SACT,CAAA;KACH;;GACN,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAW,sBAA8B,CAAA,EAC9B,CAAA,EACb,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,KAAD;IAAG,WAAU;cAAiC,EAAI;IAAgB,CAAA,EAClE,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAI,OAAO,KAAK,MACf,kBAAC,GAAD;KAAe,SAAQ;eACpB;KACK,EAFI,EAEJ,CACR;IACE,CAAA,CACM,EAAA,CAAA,CACT,EAAA,CAAA;GACH;MA9DS,kBAAC,OAAD;EAAK,WAAU;YAA4B;EAAuB,CAAA"}
1
+ {"version":3,"file":"MarketplaceServiceDetailsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceServiceDetailsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n GradientText,\n IllustratedEmptyState,\n} from '@burdenoff/fe-libs/ui';\nimport { Clock, DollarSign, MessageSquare, Star, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceServiceDetailsPagePage() {\n const { marketplaceServices } = useCrewFoundryStore();\n const svc = marketplaceServices[0];\n if (!svc)\n return (\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"Service not found\"\n description=\"This service is no longer available.\"\n />\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>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>{svc.title}</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">by {svc.provider}</p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\">\n <MessageSquare className=\"h-4 w-4 mr-1\" />\n Contact\n </Button>\n <Button>Hire Now</Button>\n </div>\n </div>\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"p-4 text-center\">\n <DollarSign className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">${svc.price.toLocaleString()}</p>\n <p className=\"text-xs text-text-secondary\">per {svc.priceType}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Star className=\"h-5 w-5 mx-auto text-status-warning-text mb-1\" />\n <p className=\"text-lg font-bold\">{svc.rating}/5</p>\n <p className=\"text-xs text-text-secondary\">{svc.reviews} reviews</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Clock className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{svc.deliveryTime}</p>\n <p className=\"text-xs text-text-secondary\">Delivery</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Users className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{svc.category}</p>\n <p className=\"text-xs text-text-secondary\">Category</p>\n </CardContent>\n </Card>\n </div>\n <Card>\n <CardHeader>\n <CardTitle>About this Service</CardTitle>\n </CardHeader>\n <CardContent>\n <p className=\"text-sm text-text-secondary\">{svc.description}</p>\n <div className=\"flex flex-wrap gap-1 mt-3\">\n {svc.skills.map((s) => (\n <Badge key={s} variant=\"outline\">\n {s}\n </Badge>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":";;;;;AAaA,SAAgB,IAAoC;CAClD,IAAM,EAAE,2BAAwB,GAAqB,EAC/C,IAAM,EAAoB;AAYhC,QAXK,IAYH,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;KAAI,WAAU;eACZ,kBAAC,GAAD,EAAA,UAAe,EAAI,OAAqB,CAAA;KACrC,CAAA,EACL,kBAAC,KAAD;KAAG,WAAU;eAAb,CAA2C,OAAI,EAAI,SAAa;OAC5D,EAAA,CAAA,EACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD;MAAQ,SAAQ;gBAAhB,CACE,kBAAC,GAAD,EAAe,WAAU,gBAAiB,CAAA,EAAA,UAEnC;SACT,kBAAC,GAAD,EAAA,UAAQ,YAAiB,CAAA,CACrB;OACF;;GACN,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;MAAa,WAAU;gBAAvB;OACE,kBAAC,GAAD,EAAY,WAAU,4CAA6C,CAAA;OACnE,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAAiC,KAAE,EAAI,MAAM,gBAAgB,CAAK;;OAClE,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAA2C,QAAK,EAAI,UAAc;;OACtD;SACT,CAAA;KACP,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;MAAa,WAAU;gBAAvB;OACE,kBAAC,GAAD,EAAM,WAAU,iDAAkD,CAAA;OAClE,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAAkC,EAAI,QAAO,KAAM;;OACnD,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAA4C,EAAI,SAAQ,WAAY;;OACxD;SACT,CAAA;KACP,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;MAAa,WAAU;gBAAvB;OACE,kBAAC,GAAD,EAAO,WAAU,4CAA6C,CAAA;OAC9D,kBAAC,KAAD;QAAG,WAAU;kBAAqB,EAAI;QAAiB,CAAA;OACvD,kBAAC,KAAD;QAAG,WAAU;kBAA8B;QAAY,CAAA;OAC3C;SACT,CAAA;KACP,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;MAAa,WAAU;gBAAvB;OACE,kBAAC,GAAD,EAAO,WAAU,4CAA6C,CAAA;OAC9D,kBAAC,KAAD;QAAG,WAAU;kBAAqB,EAAI;QAAa,CAAA;OACnD,kBAAC,KAAD;QAAG,WAAU;kBAA8B;QAAY,CAAA;OAC3C;SACT,CAAA;KACH;;GACN,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAW,sBAA8B,CAAA,EAC9B,CAAA,EACb,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,KAAD;IAAG,WAAU;cAA+B,EAAI;IAAgB,CAAA,EAChE,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAI,OAAO,KAAK,MACf,kBAAC,GAAD;KAAe,SAAQ;eACpB;KACK,EAFI,EAEJ,CACR;IACE,CAAA,CACM,EAAA,CAAA,CACT,EAAA,CAAA;GACH;MAvEJ,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD;GACE,cAAa;GACb,OAAM;GACN,aAAY;GACZ,CAAA;EACE,CAAA"}
@@ -2,11 +2,11 @@ import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
2
  import { useMemo as t } from "react";
3
3
  import { DollarSign as n, Lock as r, ShieldCheck as i } from "lucide-react";
4
4
  import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
- import { Badge as s, Card as c, CardContent as l, CardHeader as u, CardTitle as d } from "@burdenoff/fe-libs/ui";
5
+ import { Badge as s, Card as c, CardContent as l, CardHeader as u, CardTitle as d, GlassCard as f, GradientText as p } from "@burdenoff/fe-libs/ui";
6
6
  //#region src/crewfoundry/pages/PaymentsEscrowPagePage.tsx
7
- function f() {
8
- let { projects: f, invoices: p, payrollRecords: m } = e(), h = t(() => f.slice(0, 10).map((e, t) => {
9
- let n = p[t % Math.max(p.length, 1)], r = m[t % Math.max(m.length, 1)], i = Math.max(e.budget || 0, n?.amount || 0, 1e3), a = Math.min(e.spent || 0, i), o = Math.max(0, Math.round(e.progress / 100 * 5)), s = Math.max(o + 1, 3), c = a >= i ? "completed" : a > 0 ? "active" : r?.status === "approved" ? "funded" : "active";
7
+ function m() {
8
+ let { projects: m, invoices: h, payrollRecords: g } = e(), _ = t(() => m.slice(0, 10).map((e, t) => {
9
+ let n = h[t % Math.max(h.length, 1)], r = g[t % Math.max(g.length, 1)], i = Math.max(e.budget || 0, n?.amount || 0, 1e3), a = Math.min(e.spent || 0, i), o = Math.max(0, Math.round(e.progress / 100 * 5)), s = Math.max(o + 1, 3), c = a >= i ? "completed" : a > 0 ? "active" : r?.status === "approved" ? "funded" : "active";
10
10
  return {
11
11
  id: e.id,
12
12
  project: e.name,
@@ -18,58 +18,70 @@ function f() {
18
18
  completedMilestones: Math.min(o, s)
19
19
  };
20
20
  }), [
21
- p,
22
- m,
23
- f
24
- ]), g = h.reduce((e, t) => e + t.amount, 0), _ = h.reduce((e, t) => e + t.released, 0);
21
+ h,
22
+ g,
23
+ m
24
+ ]), v = _.reduce((e, t) => e + t.amount, 0), y = _.reduce((e, t) => e + t.released, 0);
25
25
  return /* @__PURE__ */ o("div", {
26
26
  className: "space-y-6 p-6",
27
27
  children: [
28
28
  /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("h1", {
29
29
  className: "text-2xl font-semibold",
30
- children: "Escrow"
30
+ children: /* @__PURE__ */ a(p, { children: "Escrow" })
31
31
  }), /* @__PURE__ */ a("p", {
32
- className: "text-sm text-muted-foreground",
32
+ className: "text-sm text-text-secondary",
33
33
  children: "Secure payment holding for service contracts"
34
34
  })] }),
35
35
  /* @__PURE__ */ o("div", {
36
36
  className: "grid gap-4 md:grid-cols-3",
37
37
  children: [
38
- /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ o(u, {
39
- className: "flex flex-row items-center justify-between space-y-0 pb-2",
40
- children: [/* @__PURE__ */ a(d, {
41
- className: "text-sm font-medium",
42
- children: "Total in Escrow"
43
- }), /* @__PURE__ */ a(r, { className: "h-4 w-4 text-muted-foreground" })]
44
- }), /* @__PURE__ */ a(l, { children: /* @__PURE__ */ o("div", {
45
- className: "text-2xl font-bold",
46
- children: ["$", g.toLocaleString()]
47
- }) })] }),
48
- /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ o(u, {
49
- className: "flex flex-row items-center justify-between space-y-0 pb-2",
50
- children: [/* @__PURE__ */ a(d, {
51
- className: "text-sm font-medium",
52
- children: "Released"
53
- }), /* @__PURE__ */ a(n, { className: "h-4 w-4 text-green-500" })]
54
- }), /* @__PURE__ */ a(l, { children: /* @__PURE__ */ o("div", {
55
- className: "text-2xl font-bold",
56
- children: ["$", _.toLocaleString()]
57
- }) })] }),
58
- /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ o(u, {
59
- className: "flex flex-row items-center justify-between space-y-0 pb-2",
60
- children: [/* @__PURE__ */ a(d, {
61
- className: "text-sm font-medium",
62
- children: "Held"
63
- }), /* @__PURE__ */ a(i, { className: "h-4 w-4 text-blue-500" })]
64
- }), /* @__PURE__ */ a(l, { children: /* @__PURE__ */ o("div", {
65
- className: "text-2xl font-bold",
66
- children: ["$", (g - _).toLocaleString()]
67
- }) })] })
38
+ /* @__PURE__ */ o(f, {
39
+ treatment: "metric",
40
+ className: "border-border-seam",
41
+ children: [/* @__PURE__ */ o(u, {
42
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
43
+ children: [/* @__PURE__ */ a(d, {
44
+ className: "text-sm font-medium",
45
+ children: "Total in Escrow"
46
+ }), /* @__PURE__ */ a(r, { className: "h-4 w-4 text-text-secondary" })]
47
+ }), /* @__PURE__ */ a(l, { children: /* @__PURE__ */ o("div", {
48
+ className: "text-2xl font-bold tabular-nums",
49
+ children: ["$", v.toLocaleString()]
50
+ }) })]
51
+ }),
52
+ /* @__PURE__ */ o(f, {
53
+ treatment: "metric",
54
+ className: "border-border-seam",
55
+ children: [/* @__PURE__ */ o(u, {
56
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
57
+ children: [/* @__PURE__ */ a(d, {
58
+ className: "text-sm font-medium",
59
+ children: "Released"
60
+ }), /* @__PURE__ */ a(n, { className: "h-4 w-4 text-status-success-text" })]
61
+ }), /* @__PURE__ */ a(l, { children: /* @__PURE__ */ o("div", {
62
+ className: "text-2xl font-bold tabular-nums",
63
+ children: ["$", y.toLocaleString()]
64
+ }) })]
65
+ }),
66
+ /* @__PURE__ */ o(f, {
67
+ treatment: "metric",
68
+ className: "border-border-seam",
69
+ children: [/* @__PURE__ */ o(u, {
70
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
71
+ children: [/* @__PURE__ */ a(d, {
72
+ className: "text-sm font-medium",
73
+ children: "Held"
74
+ }), /* @__PURE__ */ a(i, { className: "h-4 w-4 text-status-info-text" })]
75
+ }), /* @__PURE__ */ a(l, { children: /* @__PURE__ */ o("div", {
76
+ className: "text-2xl font-bold tabular-nums",
77
+ children: ["$", (v - y).toLocaleString()]
78
+ }) })]
79
+ })
68
80
  ]
69
81
  }),
70
82
  /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a(u, { children: /* @__PURE__ */ a(d, { children: "Escrow Transactions" }) }), /* @__PURE__ */ a(l, {
71
83
  className: "space-y-3",
72
- children: h.map((e) => {
84
+ children: _.map((e) => {
73
85
  let t = e.amount === 0 ? 0 : Math.round(e.released / e.amount * 100);
74
86
  return /* @__PURE__ */ o("div", {
75
87
  className: "rounded border p-4",
@@ -80,7 +92,7 @@ function f() {
80
92
  className: "text-sm font-medium",
81
93
  children: e.project
82
94
  }), /* @__PURE__ */ a("p", {
83
- className: "text-xs text-muted-foreground",
95
+ className: "text-xs text-text-secondary",
84
96
  children: e.provider
85
97
  })] }), /* @__PURE__ */ a(s, {
86
98
  variant: e.status === "active" ? "default" : e.status === "completed" ? "secondary" : "outline",
@@ -93,11 +105,11 @@ function f() {
93
105
  children: [
94
106
  /* @__PURE__ */ o("span", { children: ["Total: $", e.amount.toLocaleString()] }),
95
107
  /* @__PURE__ */ o("span", {
96
- className: "text-green-600",
108
+ className: "text-status-success-text",
97
109
  children: ["Released: $", e.released.toLocaleString()]
98
110
  }),
99
111
  /* @__PURE__ */ o("span", {
100
- className: "text-muted-foreground",
112
+ className: "text-text-secondary",
101
113
  children: ["Held: $", (e.amount - e.released).toLocaleString()]
102
114
  })
103
115
  ]
@@ -113,9 +125,9 @@ function f() {
113
125
  e.milestones
114
126
  ] }), /* @__PURE__ */ o("span", { children: [t, "%"] })]
115
127
  }), /* @__PURE__ */ a("div", {
116
- className: "h-2 overflow-hidden rounded bg-muted",
128
+ className: "h-2 overflow-hidden rounded bg-bg-sunken",
117
129
  children: /* @__PURE__ */ a("div", {
118
- className: "h-2 rounded bg-green-500",
130
+ className: "h-2 rounded bg-status-success-text",
119
131
  style: { width: `${t}%` }
120
132
  })
121
133
  })]
@@ -128,6 +140,6 @@ function f() {
128
140
  });
129
141
  }
130
142
  //#endregion
131
- export { f as PaymentsEscrowPagePage };
143
+ export { m as PaymentsEscrowPagePage };
132
144
 
133
145
  //# sourceMappingURL=PaymentsEscrowPagePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentsEscrowPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/PaymentsEscrowPagePage.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { Badge, Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { DollarSign, Lock, ShieldCheck } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\ntype EscrowTransaction = {\n id: string;\n project: string;\n provider: string;\n amount: number;\n released: number;\n status: 'active' | 'funded' | 'completed';\n milestones: number;\n completedMilestones: number;\n};\n\nexport function PaymentsEscrowPagePage() {\n const { projects, invoices, payrollRecords } = useCrewFoundryStore();\n\n const escrowTransactions = useMemo<EscrowTransaction[]>(() => {\n return projects.slice(0, 10).map((project, index) => {\n const invoice = invoices[index % Math.max(invoices.length, 1)];\n const payroll = payrollRecords[index % Math.max(payrollRecords.length, 1)];\n const amount = Math.max(project.budget || 0, invoice?.amount || 0, 1000);\n const released = Math.min(project.spent || 0, amount);\n const completedMilestones = Math.max(0, Math.round((project.progress / 100) * 5));\n const milestones = Math.max(completedMilestones + 1, 3);\n const status: EscrowTransaction['status'] =\n released >= amount\n ? 'completed'\n : released > 0\n ? 'active'\n : payroll?.status === 'approved'\n ? 'funded'\n : 'active';\n\n return {\n id: project.id,\n project: project.name,\n provider: payroll?.employeeName || project.managerName,\n amount,\n released,\n status,\n milestones,\n completedMilestones: Math.min(completedMilestones, milestones),\n };\n });\n }, [invoices, payrollRecords, projects]);\n\n const totalEscrow = escrowTransactions.reduce((sum, transaction) => sum + transaction.amount, 0);\n const totalReleased = escrowTransactions.reduce(\n (sum, transaction) => sum + transaction.released,\n 0\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Escrow</h1>\n <p className=\"text-sm text-muted-foreground\">\n Secure payment holding for service contracts\n </p>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-3\">\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Total in Escrow</CardTitle>\n <Lock className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">${totalEscrow.toLocaleString()}</div>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Released</CardTitle>\n <DollarSign className=\"h-4 w-4 text-green-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">${totalReleased.toLocaleString()}</div>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Held</CardTitle>\n <ShieldCheck className=\"h-4 w-4 text-blue-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">\n ${(totalEscrow - totalReleased).toLocaleString()}\n </div>\n </CardContent>\n </Card>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>Escrow Transactions</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {escrowTransactions.map((escrow) => {\n const progress =\n escrow.amount === 0 ? 0 : Math.round((escrow.released / escrow.amount) * 100);\n\n return (\n <div key={escrow.id} className=\"rounded border p-4\">\n <div className=\"mb-2 flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium\">{escrow.project}</p>\n <p className=\"text-xs text-muted-foreground\">{escrow.provider}</p>\n </div>\n <Badge\n variant={\n escrow.status === 'active'\n ? 'default'\n : escrow.status === 'completed'\n ? 'secondary'\n : 'outline'\n }\n className=\"text-[10px]\"\n >\n {escrow.status}\n </Badge>\n </div>\n\n <div className=\"flex items-center gap-4 text-sm\">\n <span>Total: ${escrow.amount.toLocaleString()}</span>\n <span className=\"text-green-600\">\n Released: ${escrow.released.toLocaleString()}\n </span>\n <span className=\"text-muted-foreground\">\n Held: ${(escrow.amount - escrow.released).toLocaleString()}\n </span>\n </div>\n\n <div className=\"mt-2\">\n <div className=\"mb-1 flex justify-between text-xs\">\n <span>\n Milestones: {escrow.completedMilestones}/{escrow.milestones}\n </span>\n <span>{progress}%</span>\n </div>\n <div className=\"h-2 overflow-hidden rounded bg-muted\">\n <div className=\"h-2 rounded bg-green-500\" style={{ width: `${progress}%` }} />\n </div>\n </div>\n </div>\n );\n })}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"PaymentsEscrowPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/PaymentsEscrowPagePage.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport {\n Badge,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n} from '@burdenoff/fe-libs/ui';\nimport { DollarSign, Lock, ShieldCheck } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\ntype EscrowTransaction = {\n id: string;\n project: string;\n provider: string;\n amount: number;\n released: number;\n status: 'active' | 'funded' | 'completed';\n milestones: number;\n completedMilestones: number;\n};\n\nexport function PaymentsEscrowPagePage() {\n const { projects, invoices, payrollRecords } = useCrewFoundryStore();\n\n const escrowTransactions = useMemo<EscrowTransaction[]>(() => {\n return projects.slice(0, 10).map((project, index) => {\n const invoice = invoices[index % Math.max(invoices.length, 1)];\n const payroll = payrollRecords[index % Math.max(payrollRecords.length, 1)];\n const amount = Math.max(project.budget || 0, invoice?.amount || 0, 1000);\n const released = Math.min(project.spent || 0, amount);\n const completedMilestones = Math.max(0, Math.round((project.progress / 100) * 5));\n const milestones = Math.max(completedMilestones + 1, 3);\n const status: EscrowTransaction['status'] =\n released >= amount\n ? 'completed'\n : released > 0\n ? 'active'\n : payroll?.status === 'approved'\n ? 'funded'\n : 'active';\n\n return {\n id: project.id,\n project: project.name,\n provider: payroll?.employeeName || project.managerName,\n amount,\n released,\n status,\n milestones,\n completedMilestones: Math.min(completedMilestones, milestones),\n };\n });\n }, [invoices, payrollRecords, projects]);\n\n const totalEscrow = escrowTransactions.reduce((sum, transaction) => sum + transaction.amount, 0);\n const totalReleased = escrowTransactions.reduce(\n (sum, transaction) => sum + transaction.released,\n 0\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Escrow</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Secure payment holding for service contracts</p>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-3\">\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Total in Escrow</CardTitle>\n <Lock className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">${totalEscrow.toLocaleString()}</div>\n </CardContent>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Released</CardTitle>\n <DollarSign className=\"h-4 w-4 text-status-success-text\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">${totalReleased.toLocaleString()}</div>\n </CardContent>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Held</CardTitle>\n <ShieldCheck className=\"h-4 w-4 text-status-info-text\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">\n ${(totalEscrow - totalReleased).toLocaleString()}\n </div>\n </CardContent>\n </GlassCard>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>Escrow Transactions</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {escrowTransactions.map((escrow) => {\n const progress =\n escrow.amount === 0 ? 0 : Math.round((escrow.released / escrow.amount) * 100);\n\n return (\n <div key={escrow.id} className=\"rounded border p-4\">\n <div className=\"mb-2 flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium\">{escrow.project}</p>\n <p className=\"text-xs text-text-secondary\">{escrow.provider}</p>\n </div>\n <Badge\n variant={\n escrow.status === 'active'\n ? 'default'\n : escrow.status === 'completed'\n ? 'secondary'\n : 'outline'\n }\n className=\"text-[10px]\"\n >\n {escrow.status}\n </Badge>\n </div>\n\n <div className=\"flex items-center gap-4 text-sm\">\n <span>Total: ${escrow.amount.toLocaleString()}</span>\n <span className=\"text-status-success-text\">\n Released: ${escrow.released.toLocaleString()}\n </span>\n <span className=\"text-text-secondary\">\n Held: ${(escrow.amount - escrow.released).toLocaleString()}\n </span>\n </div>\n\n <div className=\"mt-2\">\n <div className=\"mb-1 flex justify-between text-xs\">\n <span>\n Milestones: {escrow.completedMilestones}/{escrow.milestones}\n </span>\n <span>{progress}%</span>\n </div>\n <div className=\"h-2 overflow-hidden rounded bg-bg-sunken\">\n <div\n className=\"h-2 rounded bg-status-success-text\"\n style={{ width: `${progress}%` }}\n />\n </div>\n </div>\n </div>\n );\n })}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,20 +1,20 @@
1
1
  import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
2
  import { Plus as t } from "lucide-react";
3
3
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
- import { Badge as i, Button as a, Card as o, CardContent as s } from "@burdenoff/fe-libs/ui";
4
+ import { Badge as i, Button as a, Card as o, CardContent as s, GradientText as c } from "@burdenoff/fe-libs/ui";
5
5
  //#region src/crewfoundry/pages/PaymentsInvoicesPagePage.tsx
6
- function c() {
7
- let { invoices: c } = e();
6
+ function l() {
7
+ let { invoices: l } = e();
8
8
  return /* @__PURE__ */ r("div", {
9
9
  className: "space-y-6 p-6",
10
10
  children: [/* @__PURE__ */ r("div", {
11
11
  className: "flex items-center justify-between",
12
12
  children: [/* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("h1", {
13
13
  className: "text-2xl font-semibold",
14
- children: "Invoices"
14
+ children: /* @__PURE__ */ n(c, { children: "Invoices" })
15
15
  }), /* @__PURE__ */ r("p", {
16
- className: "text-sm text-muted-foreground",
17
- children: [c.length, " invoices"]
16
+ className: "text-sm text-text-secondary",
17
+ children: [l.length, " invoices"]
18
18
  })] }), /* @__PURE__ */ r(a, {
19
19
  size: "sm",
20
20
  children: [/* @__PURE__ */ n(t, { className: "h-4 w-4 mr-1" }), "Create Invoice"]
@@ -22,7 +22,7 @@ function c() {
22
22
  }), /* @__PURE__ */ n(o, { children: /* @__PURE__ */ r(s, {
23
23
  className: "p-0",
24
24
  children: [/* @__PURE__ */ r("div", {
25
- className: "grid grid-cols-6 gap-2 text-xs font-medium text-muted-foreground p-4 border-b",
25
+ className: "grid grid-cols-6 gap-2 text-xs font-medium text-text-secondary p-4 border-b",
26
26
  children: [
27
27
  /* @__PURE__ */ n("span", { children: "Invoice #" }),
28
28
  /* @__PURE__ */ n("span", { children: "Client" }),
@@ -37,19 +37,19 @@ function c() {
37
37
  children: "Status"
38
38
  })
39
39
  ]
40
- }), c.map((e) => /* @__PURE__ */ r("div", {
41
- className: "grid grid-cols-6 gap-2 py-3 px-4 border-b last:border-0 text-sm hover:bg-muted/50",
40
+ }), l.map((e) => /* @__PURE__ */ r("div", {
41
+ className: "grid grid-cols-6 gap-2 py-3 px-4 border-b last:border-0 text-sm hover:bg-bg-sunken/50",
42
42
  children: [
43
43
  /* @__PURE__ */ n("span", {
44
44
  className: "font-medium",
45
45
  children: e.number
46
46
  }),
47
47
  /* @__PURE__ */ n("span", {
48
- className: "text-muted-foreground",
48
+ className: "text-text-secondary",
49
49
  children: e.clientName
50
50
  }),
51
51
  /* @__PURE__ */ n("div", {
52
- className: "text-xs text-muted-foreground",
52
+ className: "text-xs text-text-secondary",
53
53
  children: e.items.map((e) => e.description).join(", ")
54
54
  }),
55
55
  /* @__PURE__ */ r("span", {
@@ -57,7 +57,7 @@ function c() {
57
57
  children: ["$", e.amount.toLocaleString()]
58
58
  }),
59
59
  /* @__PURE__ */ n("span", {
60
- className: "text-muted-foreground",
60
+ className: "text-text-secondary",
61
61
  children: e.dueDate
62
62
  }),
63
63
  /* @__PURE__ */ n("div", {
@@ -74,6 +74,6 @@ function c() {
74
74
  });
75
75
  }
76
76
  //#endregion
77
- export { c as PaymentsInvoicesPagePage };
77
+ export { l as PaymentsInvoicesPagePage };
78
78
 
79
79
  //# sourceMappingURL=PaymentsInvoicesPagePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentsInvoicesPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/PaymentsInvoicesPagePage.tsx"],"sourcesContent":["import { Badge, Button, Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { FileText, Plus } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function PaymentsInvoicesPagePage() {\n const { invoices } = useCrewFoundryStore();\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-semibold\">Invoices</h1>\n <p className=\"text-sm text-muted-foreground\">{invoices.length} invoices</p>\n </div>\n <Button size=\"sm\">\n <Plus className=\"h-4 w-4 mr-1\" />\n Create Invoice\n </Button>\n </div>\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"grid grid-cols-6 gap-2 text-xs font-medium text-muted-foreground p-4 border-b\">\n <span>Invoice #</span>\n <span>Client</span>\n <span>Items</span>\n <span className=\"text-right\">Amount</span>\n <span>Due Date</span>\n <span className=\"text-center\">Status</span>\n </div>\n {invoices.map((inv) => (\n <div\n key={inv.id}\n className=\"grid grid-cols-6 gap-2 py-3 px-4 border-b last:border-0 text-sm hover:bg-muted/50\"\n >\n <span className=\"font-medium\">{inv.number}</span>\n <span className=\"text-muted-foreground\">{inv.clientName}</span>\n <div className=\"text-xs text-muted-foreground\">\n {inv.items.map((i) => i.description).join(', ')}\n </div>\n <span className=\"text-right font-medium\">${inv.amount.toLocaleString()}</span>\n <span className=\"text-muted-foreground\">{inv.dueDate}</span>\n <div className=\"text-center\">\n <Badge\n variant={\n inv.status === 'paid'\n ? 'default'\n : inv.status === 'overdue'\n ? 'destructive'\n : inv.status === 'draft'\n ? 'outline'\n : 'secondary'\n }\n className=\"text-[10px]\"\n >\n {inv.status}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":";;;;;AAIA,SAAgB,IAA2B;CACzC,IAAM,EAAE,gBAAa,GAAqB;AAE1C,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,WAAU;cAAyB;IAAa,CAAA,EACpD,kBAAC,KAAD;IAAG,WAAU;cAAb,CAA8C,EAAS,QAAO,YAAa;MACvE,EAAA,CAAA,EACN,kBAAC,GAAD;IAAQ,MAAK;cAAb,CACE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAAA,iBAE1B;MACL;MACN,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GAAa,WAAU;aAAvB,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,QAAD,EAAA,UAAM,aAAgB,CAAA;KACtB,kBAAC,QAAD,EAAA,UAAM,UAAa,CAAA;KACnB,kBAAC,QAAD,EAAA,UAAM,SAAY,CAAA;KAClB,kBAAC,QAAD;MAAM,WAAU;gBAAa;MAAa,CAAA;KAC1C,kBAAC,QAAD,EAAA,UAAM,YAAe,CAAA;KACrB,kBAAC,QAAD;MAAM,WAAU;gBAAc;MAAa,CAAA;KACvC;OACL,EAAS,KAAK,MACb,kBAAC,OAAD;IAEE,WAAU;cAFZ;KAIE,kBAAC,QAAD;MAAM,WAAU;gBAAe,EAAI;MAAc,CAAA;KACjD,kBAAC,QAAD;MAAM,WAAU;gBAAyB,EAAI;MAAkB,CAAA;KAC/D,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAI,MAAM,KAAK,MAAM,EAAE,YAAY,CAAC,KAAK,KAAK;MAC3C,CAAA;KACN,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CAAyC,KAAE,EAAI,OAAO,gBAAgB,CAAQ;;KAC9E,kBAAC,QAAD;MAAM,WAAU;gBAAyB,EAAI;MAAe,CAAA;KAC5D,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,GAAD;OACE,SACE,EAAI,WAAW,SACX,YACA,EAAI,WAAW,YACb,gBACA,EAAI,WAAW,UACb,YACA;OAEV,WAAU;iBAET,EAAI;OACC,CAAA;MACJ,CAAA;KACF;MA1BC,EAAI,GA0BL,CACN,CACU;MACT,CAAA,CACH"}
1
+ {"version":3,"file":"PaymentsInvoicesPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/PaymentsInvoicesPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n GradientText,\n} from '@burdenoff/fe-libs/ui';\nimport { FileText, Plus } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function PaymentsInvoicesPagePage() {\n const { invoices } = useCrewFoundryStore();\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-semibold\">\n <GradientText>Invoices</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">{invoices.length} invoices</p>\n </div>\n <Button size=\"sm\">\n <Plus className=\"h-4 w-4 mr-1\" />\n Create Invoice\n </Button>\n </div>\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"grid grid-cols-6 gap-2 text-xs font-medium text-text-secondary p-4 border-b\">\n <span>Invoice #</span>\n <span>Client</span>\n <span>Items</span>\n <span className=\"text-right\">Amount</span>\n <span>Due Date</span>\n <span className=\"text-center\">Status</span>\n </div>\n {invoices.map((inv) => (\n <div\n key={inv.id}\n className=\"grid grid-cols-6 gap-2 py-3 px-4 border-b last:border-0 text-sm hover:bg-bg-sunken/50\"\n >\n <span className=\"font-medium\">{inv.number}</span>\n <span className=\"text-text-secondary\">{inv.clientName}</span>\n <div className=\"text-xs text-text-secondary\">\n {inv.items.map((i) => i.description).join(', ')}\n </div>\n <span className=\"text-right font-medium\">${inv.amount.toLocaleString()}</span>\n <span className=\"text-text-secondary\">{inv.dueDate}</span>\n <div className=\"text-center\">\n <Badge\n variant={\n inv.status === 'paid'\n ? 'default'\n : inv.status === 'overdue'\n ? 'destructive'\n : inv.status === 'draft'\n ? 'outline'\n : 'secondary'\n }\n className=\"text-[10px]\"\n >\n {inv.status}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":";;;;;AAYA,SAAgB,IAA2B;CACzC,IAAM,EAAE,gBAAa,GAAqB;AAE1C,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,WAAU;cACZ,kBAAC,GAAD,EAAA,UAAc,YAAuB,CAAA;IAClC,CAAA,EACL,kBAAC,KAAD;IAAG,WAAU;cAAb,CAA4C,EAAS,QAAO,YAAa;MACrE,EAAA,CAAA,EACN,kBAAC,GAAD;IAAQ,MAAK;cAAb,CACE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAAA,iBAE1B;MACL;MACN,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GAAa,WAAU;aAAvB,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,QAAD,EAAA,UAAM,aAAgB,CAAA;KACtB,kBAAC,QAAD,EAAA,UAAM,UAAa,CAAA;KACnB,kBAAC,QAAD,EAAA,UAAM,SAAY,CAAA;KAClB,kBAAC,QAAD;MAAM,WAAU;gBAAa;MAAa,CAAA;KAC1C,kBAAC,QAAD,EAAA,UAAM,YAAe,CAAA;KACrB,kBAAC,QAAD;MAAM,WAAU;gBAAc;MAAa,CAAA;KACvC;OACL,EAAS,KAAK,MACb,kBAAC,OAAD;IAEE,WAAU;cAFZ;KAIE,kBAAC,QAAD;MAAM,WAAU;gBAAe,EAAI;MAAc,CAAA;KACjD,kBAAC,QAAD;MAAM,WAAU;gBAAuB,EAAI;MAAkB,CAAA;KAC7D,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAI,MAAM,KAAK,MAAM,EAAE,YAAY,CAAC,KAAK,KAAK;MAC3C,CAAA;KACN,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CAAyC,KAAE,EAAI,OAAO,gBAAgB,CAAQ;;KAC9E,kBAAC,QAAD;MAAM,WAAU;gBAAuB,EAAI;MAAe,CAAA;KAC1D,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,GAAD;OACE,SACE,EAAI,WAAW,SACX,YACA,EAAI,WAAW,YACb,gBACA,EAAI,WAAW,UACb,YACA;OAEV,WAAU;iBAET,EAAI;OACC,CAAA;MACJ,CAAA;KACF;MA1BC,EAAI,GA0BL,CACN,CACU;MACT,CAAA,CACH"}