@burdenoff/microfe-crewfoundry 2026.703.2 → 2026.704.2

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 (130) hide show
  1. package/dist/crewfoundry/components/forms/FormModal.js.map +1 -1
  2. package/dist/crewfoundry/pages/AdminAdminPagePage.js +117 -164
  3. package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
  4. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +99 -82
  5. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  6. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +160 -192
  7. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
  8. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +238 -231
  9. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
  10. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +196 -166
  11. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
  12. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
  13. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +45 -147
  14. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
  15. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +20 -11
  16. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
  17. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +45 -152
  18. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
  19. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +50 -138
  20. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
  21. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +149 -67
  22. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
  23. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +50 -201
  24. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
  25. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +205 -136
  26. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
  27. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +25 -31
  28. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
  29. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +118 -104
  30. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
  31. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +117 -58
  32. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
  33. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +90 -94
  34. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
  35. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +210 -191
  36. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
  37. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +213 -180
  38. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
  39. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +133 -264
  40. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
  41. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +279 -212
  42. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
  43. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +131 -105
  44. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
  45. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +167 -148
  46. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
  47. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +3 -3
  48. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
  49. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +13 -5
  50. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
  51. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +151 -152
  52. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
  53. package/dist/crewfoundry/pages/HiringJobsPagePage.js +38 -21
  54. package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
  55. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +3 -3
  56. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
  57. package/dist/crewfoundry/pages/HrEmployeesPagePage.js +134 -127
  58. package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
  59. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +163 -132
  60. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
  61. package/dist/crewfoundry/pages/HrPayrollPagePage.js +202 -160
  62. package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
  63. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +104 -91
  64. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
  65. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +29 -147
  66. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
  67. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +22 -106
  68. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
  69. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +74 -74
  70. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
  71. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +101 -97
  72. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
  73. package/dist/crewfoundry/pages/LearningCoursesPagePage.js +64 -47
  74. package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
  75. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +111 -121
  76. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
  77. package/dist/crewfoundry/pages/LearningLearningPagePage.js +131 -110
  78. package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
  79. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +65 -64
  80. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
  81. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +58 -43
  82. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
  83. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +66 -82
  84. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
  85. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +38 -88
  86. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
  87. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +59 -65
  88. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
  89. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +209 -323
  90. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
  91. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +175 -220
  92. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
  93. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +74 -59
  94. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
  95. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +96 -80
  96. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
  97. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +28 -100
  98. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
  99. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +27 -20
  100. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
  101. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +73 -73
  102. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
  103. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +62 -56
  104. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
  105. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +40 -138
  106. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
  107. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +126 -93
  108. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
  109. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +99 -77
  110. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
  111. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
  112. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +73 -74
  113. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
  114. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +1 -1
  115. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
  116. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +122 -122
  117. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
  118. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +130 -113
  119. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
  120. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +68 -59
  121. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
  122. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +73 -62
  123. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
  124. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +82 -58
  125. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
  126. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +153 -153
  127. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
  128. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +63 -48
  129. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
  130. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CompanyCompanyDashboardPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/CompanyCompanyDashboardPagePage.tsx"],"sourcesContent":["import {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { DollarSign, Globe, TrendingUp, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function CompanyCompanyDashboardPagePage() {\n const { employees, departments, projects, clients } = useCrewFoundryStore();\n const totalRevenue = clients.reduce((s, c) => s + c.revenue, 0);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Company Dashboard</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n Organization overview and key business metrics\n </p>\n <PagePurpose className=\"mt-1\">A bird&apos;s-eye view of your company&apos;s health — headcount, revenue, and key activity at a glance to guide your next move.</PagePurpose>\n </div>\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n <GlassCard treatment=\"glass\" glow 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 Employees</CardTitle>\n <Users className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">{employees.length}</div>\n <p className=\"text-xs text-text-secondary\">{departments.length} departments</p>\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\">Active Projects</CardTitle>\n <TrendingUp className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">\n {projects.filter((p) => p.status === 'active').length}\n </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\">Client Revenue</CardTitle>\n <DollarSign className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">\n ${(totalRevenue / 1000000).toFixed(1)}M\n </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\">Active Clients</CardTitle>\n <Globe className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">\n {clients.filter((c) => c.status === 'active').length}\n </div>\n </CardContent>\n </GlassCard>\n </div>\n <Card>\n <CardHeader>\n <CardTitle>Company Information</CardTitle>\n </CardHeader>\n <CardContent className=\"grid gap-4 md:grid-cols-2\">\n <div className=\"space-y-3\">\n <div>\n <p className=\"text-xs text-text-secondary\">Company Name</p>\n <p className=\"text-sm font-medium\">CrewFoundry Inc.</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Industry</p>\n <p className=\"text-sm font-medium\">HR Technology / SaaS</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Founded</p>\n <p className=\"text-sm font-medium\">2020</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Headquarters</p>\n <p className=\"text-sm font-medium\">San Francisco, CA</p>\n </div>\n </div>\n <div className=\"space-y-3\">\n <div>\n <p className=\"text-xs text-text-secondary\">CEO</p>\n <p className=\"text-sm font-medium\">Alex Rivera</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Website</p>\n <p className=\"text-sm font-medium\">www.crewfoundry.com</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Offices</p>\n <p className=\"text-sm font-medium\">\n San Francisco, Austin, New York, Chicago, Remote\n </p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Funding</p>\n <p className=\"text-sm font-medium\">Series B - $45M</p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CompanyCompanyDashboardPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/CompanyCompanyDashboardPagePage.tsx"],"sourcesContent":["import {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { DollarSign, Globe, TrendingUp, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function CompanyCompanyDashboardPagePage() {\n const { employees, departments, projects, clients } = useCrewFoundryStore();\n const totalRevenue = clients.reduce((s, c) => s + c.revenue, 0);\n const officeLocations = Array.from(\n new Set(employees.map((e) => e.location).filter((loc) => loc.trim() !== ''))\n );\n const clientIndustries = Array.from(\n new Set(clients.map((c) => c.industry).filter((industry) => industry.trim() !== ''))\n );\n const activeProjects = projects.filter((p) => p.status === 'active').length;\n const activeClients = clients.filter((c) => c.status === 'active').length;\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Company Dashboard</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n Organization overview and key business metrics\n </p>\n <PagePurpose className=\"mt-1\">\n A bird&apos;s-eye view of your company&apos;s health — headcount, revenue, and key\n activity at a glance to guide your next move.\n </PagePurpose>\n </div>\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n <GlassCard treatment=\"glass\" glow 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 Employees</CardTitle>\n <Users className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">{employees.length}</div>\n <p className=\"text-xs text-text-secondary\">{departments.length} departments</p>\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\">Active Projects</CardTitle>\n <TrendingUp className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">\n {projects.filter((p) => p.status === 'active').length}\n </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\">Client Revenue</CardTitle>\n <DollarSign className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">\n ${(totalRevenue / 1000000).toFixed(1)}M\n </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\">Active Clients</CardTitle>\n <Globe className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">\n {clients.filter((c) => c.status === 'active').length}\n </div>\n </CardContent>\n </GlassCard>\n </div>\n <Card>\n <CardHeader>\n <CardTitle>Company at a Glance</CardTitle>\n </CardHeader>\n <CardContent className=\"grid gap-4 md:grid-cols-2\">\n <div className=\"space-y-3\">\n <div>\n <p className=\"text-xs text-text-secondary\">Headcount</p>\n <p className=\"text-sm font-medium\">{employees.length} employees</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Departments</p>\n <p className=\"text-sm font-medium\">{departments.length}</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Active projects</p>\n <p className=\"text-sm font-medium\">\n {activeProjects} of {projects.length}\n </p>\n </div>\n </div>\n <div className=\"space-y-3\">\n <div>\n <p className=\"text-xs text-text-secondary\">Active clients</p>\n <p className=\"text-sm font-medium\">\n {activeClients} of {clients.length}\n </p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Client industries served</p>\n <p className=\"text-sm font-medium\">{clientIndustries.length}</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Office locations</p>\n <p className=\"text-sm font-medium\">\n {officeLocations.length > 0 ? officeLocations.join(', ') : '—'}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,30 +1,22 @@
1
1
  import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
2
  import { useMemo as t } from "react";
3
- import { Award as n, BarChart3 as r, Building2 as i, Calendar as a, ExternalLink as o, Globe as s, MapPin as c, TrendingUp as l, Users as u } from "lucide-react";
4
- import { jsx as d, jsxs as f } from "react/jsx-runtime";
5
- import { Badge as p, Button as m, Card as h, CardContent as g, CardDescription as _, CardHeader as v, CardTitle as y, EmphasisPanel as b, GradientText as x, PagePurpose as S, Separator as C } from "@burdenoff/fe-libs/ui";
3
+ import { BarChart3 as n, Building2 as r, ExternalLink as i, MapPin as a, TrendingUp as o, Users as s } from "lucide-react";
4
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
5
+ import { Badge as u, Button as d, Card as f, CardContent as p, CardDescription as m, CardHeader as h, CardTitle as g, EmphasisPanel as _, GradientText as v, IllustratedEmptyState as y, PagePurpose as b, Separator as x } from "@burdenoff/fe-libs/ui";
6
6
  //#region src/crewfoundry/pages/CompanyCompanyProfilePagePage.tsx
7
+ var S = "https://crewfoundry.com", C = (e) => {
8
+ let t = new Date(e);
9
+ return Number.isNaN(t.getTime()) ? "—" : t.toLocaleDateString(void 0, {
10
+ year: "numeric",
11
+ month: "short"
12
+ });
13
+ };
7
14
  function w() {
8
- let { employees: w, departments: T, teams: E, projects: D, announcements: O } = e(), k = t(() => {
9
- let e = [
10
- {
11
- year: "2020",
12
- event: "CrewFoundry founded and team assembled"
13
- },
14
- {
15
- year: "2021",
16
- event: "Core workforce modules launched"
17
- },
18
- {
19
- year: "2022",
20
- event: "Expanded hiring and payroll capabilities"
21
- }
22
- ], t = O.slice(0, 4).map((e, t) => ({
23
- year: String(2023 + t),
24
- event: e.title
25
- }));
26
- return [...e, ...t];
27
- }, [O]), A = t(() => [
15
+ let { employees: w, departments: T, teams: E, projects: D, announcements: O } = e(), k = t(() => Array.from(new Set(w.map((e) => e.location).filter((e) => e.trim() !== ""))), [w]), A = t(() => [...O].sort((e, t) => (t.createdAt ?? "").localeCompare(e.createdAt ?? "")).slice(0, 6).map((e) => ({
16
+ id: e.id,
17
+ date: e.createdAt,
18
+ title: e.title
19
+ })), [O]), j = t(() => [
28
20
  {
29
21
  title: "People First",
30
22
  description: `Supporting ${w.length} employees with modern workforce tooling.`
@@ -39,153 +31,171 @@ function w() {
39
31
  },
40
32
  {
41
33
  title: "Inclusion",
42
- description: `Distributed teams across ${new Set(w.map((e) => e.location)).size} locations.`
34
+ description: `Distributed teams across ${k.length} location${k.length === 1 ? "" : "s"}.`
43
35
  }
44
36
  ], [
45
37
  T.length,
46
- w,
38
+ w.length,
39
+ k.length,
47
40
  D
48
- ]), j = t(() => Array.from(new Set(w.map((e) => e.location))).slice(0, 8), [w]);
49
- return /* @__PURE__ */ f("div", {
41
+ ]), M = t(() => [
42
+ {
43
+ icon: s,
44
+ label: `${w.length} employees`
45
+ },
46
+ {
47
+ icon: r,
48
+ label: `${T.length} departments`
49
+ },
50
+ {
51
+ icon: o,
52
+ label: `${E.length} teams`
53
+ },
54
+ {
55
+ icon: a,
56
+ label: `${k.length} office location${k.length === 1 ? "" : "s"}`
57
+ }
58
+ ], [
59
+ T.length,
60
+ w.length,
61
+ k.length,
62
+ E.length
63
+ ]);
64
+ return /* @__PURE__ */ l("div", {
50
65
  className: "space-y-6 p-6",
51
66
  children: [
52
- /* @__PURE__ */ f("div", {
67
+ /* @__PURE__ */ l("div", {
53
68
  className: "flex items-center justify-between",
54
- children: [/* @__PURE__ */ f("div", {
69
+ children: [/* @__PURE__ */ l("div", {
55
70
  className: "flex items-center gap-4",
56
- children: [/* @__PURE__ */ d("div", {
71
+ children: [/* @__PURE__ */ c("div", {
57
72
  className: "flex h-14 w-14 items-center justify-center rounded-xl bg-action-primary-bg text-action-primary-text",
58
- children: /* @__PURE__ */ d(i, { className: "h-7 w-7" })
59
- }), /* @__PURE__ */ f("div", { children: [
60
- /* @__PURE__ */ d("h1", {
73
+ children: /* @__PURE__ */ c(r, { className: "h-7 w-7" })
74
+ }), /* @__PURE__ */ l("div", { children: [
75
+ /* @__PURE__ */ c("h1", {
61
76
  className: "text-2xl font-semibold",
62
- children: /* @__PURE__ */ d(x, { children: "CrewFoundry Inc." })
77
+ children: /* @__PURE__ */ c(v, { children: "CrewFoundry" })
63
78
  }),
64
- /* @__PURE__ */ d("p", {
79
+ /* @__PURE__ */ c("p", {
65
80
  className: "text-sm text-text-secondary",
66
81
  children: "Modern workforce management platform"
67
82
  }),
68
- /* @__PURE__ */ d(S, {
83
+ /* @__PURE__ */ c(b, {
69
84
  className: "mt-1",
70
85
  children: "Maintain your company's public identity — name, branding, and details that appear across CrewFoundry and to external partners."
71
86
  })
72
87
  ] })]
73
- }), /* @__PURE__ */ f(m, {
88
+ }), /* @__PURE__ */ l(d, {
74
89
  variant: "outline",
75
90
  size: "sm",
76
- children: [/* @__PURE__ */ d(o, { className: "h-3 w-3 mr-1" }), "crewfoundry.com"]
91
+ "aria-label": "Open crewfoundry.com in a new tab",
92
+ onClick: () => window.open(S, "_blank", "noopener,noreferrer"),
93
+ children: [/* @__PURE__ */ c(i, { className: "h-3 w-3 mr-1" }), "crewfoundry.com"]
77
94
  })]
78
95
  }),
79
- /* @__PURE__ */ d("div", {
96
+ /* @__PURE__ */ c("div", {
80
97
  className: "grid gap-4 md:grid-cols-4",
81
98
  children: [
82
99
  {
83
- icon: u,
100
+ icon: s,
84
101
  label: "Employees",
85
102
  value: `${w.length}+`,
86
103
  color: "text-status-info-text"
87
104
  },
88
105
  {
89
- icon: i,
106
+ icon: r,
90
107
  label: "Departments",
91
108
  value: T.length.toString(),
92
109
  color: "text-action-primary-bg"
93
110
  },
94
111
  {
95
- icon: r,
112
+ icon: n,
96
113
  label: "Active Projects",
97
114
  value: D.filter((e) => e.status === "active").length.toString(),
98
115
  color: "text-status-success-text"
99
116
  },
100
117
  {
101
- icon: l,
118
+ icon: o,
102
119
  label: "Teams",
103
120
  value: E.length.toString(),
104
121
  color: "text-status-warning-text"
105
122
  }
106
- ].map((e) => /* @__PURE__ */ d(h, { children: /* @__PURE__ */ f(g, {
123
+ ].map((e) => /* @__PURE__ */ c(f, { children: /* @__PURE__ */ l(p, {
107
124
  className: "flex items-center gap-3 pt-6",
108
- children: [/* @__PURE__ */ d(e.icon, { className: `h-5 w-5 ${e.color}` }), /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
125
+ children: [/* @__PURE__ */ c(e.icon, { className: `h-5 w-5 ${e.color}` }), /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
109
126
  className: "text-xs text-text-secondary",
110
127
  children: e.label
111
- }), /* @__PURE__ */ d("p", {
128
+ }), /* @__PURE__ */ c("p", {
112
129
  className: "text-lg font-bold",
113
130
  children: e.value
114
131
  })] })]
115
132
  }) }, e.label))
116
133
  }),
117
- /* @__PURE__ */ f("div", {
134
+ /* @__PURE__ */ l("div", {
118
135
  className: "grid gap-6 lg:grid-cols-3",
119
- children: [/* @__PURE__ */ f("div", {
136
+ children: [/* @__PURE__ */ l("div", {
120
137
  className: "lg:col-span-2 space-y-6",
121
138
  children: [
122
- /* @__PURE__ */ f(b, { children: [/* @__PURE__ */ d("div", {
139
+ /* @__PURE__ */ l(_, { children: [/* @__PURE__ */ c("div", {
123
140
  className: "mb-2 text-base font-semibold",
124
141
  children: "About CrewFoundry"
125
- }), /* @__PURE__ */ f("div", {
142
+ }), /* @__PURE__ */ l("div", {
126
143
  className: "space-y-3 text-sm text-text-secondary",
127
144
  children: [
128
- /* @__PURE__ */ d("p", { children: "CrewFoundry is a modern, all-in-one workforce management platform built for growing organizations. Our platform streamlines HR operations, recruitment, payroll processing, and employee development through an intuitive interface powered by AI and automation." }),
129
- /* @__PURE__ */ d("p", { children: "Founded in 2020 in San Francisco, we've grown to serve hundreds of companies managing their workforce with our integrated suite of tools spanning hiring, onboarding, time tracking, learning management, and analytics." }),
130
- /* @__PURE__ */ d(C, {}),
131
- /* @__PURE__ */ f("div", {
145
+ /* @__PURE__ */ c("p", { children: "CrewFoundry is a modern, all-in-one workforce management platform built for growing organizations. It streamlines HR operations, recruitment, payroll processing, and employee development through an intuitive interface powered by automation." }),
146
+ /* @__PURE__ */ c("p", { children: "The platform brings hiring, onboarding, time tracking, learning management, and analytics together in one integrated suite so teams can manage their entire workforce in a single place." }),
147
+ /* @__PURE__ */ c(x, {}),
148
+ /* @__PURE__ */ c("div", {
132
149
  className: "grid grid-cols-2 gap-3 text-xs",
133
- children: [
134
- /* @__PURE__ */ f("div", {
135
- className: "flex items-center gap-2",
136
- children: [/* @__PURE__ */ d(c, { className: "h-3 w-3" }), /* @__PURE__ */ d("span", { children: "San Francisco, CA (HQ)" })]
137
- }),
138
- /* @__PURE__ */ f("div", {
139
- className: "flex items-center gap-2",
140
- children: [/* @__PURE__ */ d(s, { className: "h-3 w-3" }), /* @__PURE__ */ d("span", { children: "6 office locations globally" })]
141
- }),
142
- /* @__PURE__ */ f("div", {
143
- className: "flex items-center gap-2",
144
- children: [/* @__PURE__ */ d(a, { className: "h-3 w-3" }), /* @__PURE__ */ d("span", { children: "Founded 2020" })]
145
- }),
146
- /* @__PURE__ */ f("div", {
147
- className: "flex items-center gap-2",
148
- children: [/* @__PURE__ */ d(n, { className: "h-3 w-3" }), /* @__PURE__ */ d("span", { children: "Series B funded" })]
149
- })
150
- ]
150
+ children: M.map((e) => /* @__PURE__ */ l("div", {
151
+ className: "flex items-center gap-2",
152
+ children: [/* @__PURE__ */ c(e.icon, { className: "h-3 w-3" }), /* @__PURE__ */ c("span", { children: e.label })]
153
+ }, e.label))
151
154
  })
152
155
  ]
153
156
  })] }),
154
- /* @__PURE__ */ f(h, { children: [/* @__PURE__ */ f(v, { children: [/* @__PURE__ */ d(y, {
157
+ /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ l(h, { children: [/* @__PURE__ */ c(g, {
155
158
  className: "text-base",
156
159
  children: "Our Values"
157
- }), /* @__PURE__ */ d(_, { children: "The principles that guide how we build and work" })] }), /* @__PURE__ */ d(g, {
160
+ }), /* @__PURE__ */ c(m, { children: "The principles that guide how we build and work" })] }), /* @__PURE__ */ c(p, {
158
161
  className: "grid gap-3 sm:grid-cols-2",
159
- children: A.map((e) => /* @__PURE__ */ f("div", {
162
+ children: j.map((e) => /* @__PURE__ */ l("div", {
160
163
  className: "rounded-lg border p-3 space-y-1",
161
- children: [/* @__PURE__ */ d("p", {
164
+ children: [/* @__PURE__ */ c("p", {
162
165
  className: "text-sm font-medium",
163
166
  children: e.title
164
- }), /* @__PURE__ */ d("p", {
167
+ }), /* @__PURE__ */ c("p", {
165
168
  className: "text-xs text-text-secondary",
166
169
  children: e.description
167
170
  })]
168
171
  }, e.title))
169
172
  })] }),
170
- /* @__PURE__ */ f(h, { children: [/* @__PURE__ */ d(v, { children: /* @__PURE__ */ d(y, {
173
+ /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c(h, { children: /* @__PURE__ */ c(g, {
171
174
  className: "text-base",
172
175
  children: "Departments"
173
- }) }), /* @__PURE__ */ d(g, {
176
+ }) }), /* @__PURE__ */ c(p, {
174
177
  className: "p-0",
175
- children: T.map((e, t) => /* @__PURE__ */ f("div", {
178
+ children: T.length === 0 ? /* @__PURE__ */ c("div", {
179
+ className: "p-6",
180
+ children: /* @__PURE__ */ c(y, {
181
+ illustration: "empty-data",
182
+ title: "No departments yet",
183
+ description: "Departments you create will appear here."
184
+ })
185
+ }) : T.map((e, t) => /* @__PURE__ */ l("div", {
176
186
  className: `flex items-center justify-between px-6 py-3 ${t < T.length - 1 ? "border-b" : ""}`,
177
- children: [/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
187
+ children: [/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
178
188
  className: "text-sm font-medium",
179
189
  children: e.name
180
- }), /* @__PURE__ */ f("p", {
190
+ }), /* @__PURE__ */ l("p", {
181
191
  className: "text-xs text-text-secondary",
182
192
  children: ["Led by ", e.headName]
183
- })] }), /* @__PURE__ */ f("div", {
193
+ })] }), /* @__PURE__ */ l("div", {
184
194
  className: "flex items-center gap-3",
185
- children: [/* @__PURE__ */ f("span", {
195
+ children: [/* @__PURE__ */ l("span", {
186
196
  className: "text-xs text-text-secondary",
187
197
  children: [e.employeeCount, " employees"]
188
- }), /* @__PURE__ */ d(p, {
198
+ }), /* @__PURE__ */ c(u, {
189
199
  variant: e.status === "active" ? "default" : "secondary",
190
200
  className: "text-[10px]",
191
201
  children: e.status
@@ -194,40 +204,44 @@ function w() {
194
204
  }, e.id))
195
205
  })] })
196
206
  ]
197
- }), /* @__PURE__ */ f("div", {
207
+ }), /* @__PURE__ */ l("div", {
198
208
  className: "space-y-4",
199
- children: [/* @__PURE__ */ f(h, { children: [/* @__PURE__ */ d(v, { children: /* @__PURE__ */ d(y, {
209
+ children: [/* @__PURE__ */ l(f, { children: [/* @__PURE__ */ l(h, { children: [/* @__PURE__ */ c(g, {
200
210
  className: "text-sm",
201
211
  children: "Company Timeline"
202
- }) }), /* @__PURE__ */ d(g, {
212
+ }), /* @__PURE__ */ c(m, { children: "Recent company announcements" })] }), /* @__PURE__ */ c(p, {
203
213
  className: "space-y-0",
204
- children: k.map((e, t) => /* @__PURE__ */ f("div", {
214
+ children: A.length === 0 ? /* @__PURE__ */ c(y, {
215
+ illustration: "empty-data",
216
+ title: "No announcements yet",
217
+ description: "Company milestones from announcements will appear here."
218
+ }) : A.map((e, t) => /* @__PURE__ */ l("div", {
205
219
  className: "flex gap-3",
206
- children: [/* @__PURE__ */ f("div", {
220
+ children: [/* @__PURE__ */ l("div", {
207
221
  className: "flex flex-col items-center",
208
- children: [/* @__PURE__ */ d("div", {
209
- className: "flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-action-primary-bg text-action-primary-text text-[10px] font-medium",
210
- children: e.year.slice(2)
211
- }), t < k.length - 1 && /* @__PURE__ */ d("div", { className: "h-full w-px bg-border my-1" })]
212
- }), /* @__PURE__ */ f("div", {
222
+ children: [/* @__PURE__ */ c("div", { className: "flex h-2.5 w-2.5 shrink-0 items-center justify-center rounded-full bg-action-primary-bg" }), t < A.length - 1 && /* @__PURE__ */ c("div", { className: "h-full w-px bg-border my-1" })]
223
+ }), /* @__PURE__ */ l("div", {
213
224
  className: "pb-4",
214
- children: [/* @__PURE__ */ d("p", {
225
+ children: [/* @__PURE__ */ c("p", {
215
226
  className: "text-xs font-medium",
216
- children: e.year
217
- }), /* @__PURE__ */ d("p", {
227
+ children: C(e.date)
228
+ }), /* @__PURE__ */ c("p", {
218
229
  className: "text-xs text-text-secondary",
219
- children: e.event
230
+ children: e.title
220
231
  })]
221
232
  })]
222
- }, e.year))
223
- })] }), /* @__PURE__ */ f(h, { children: [/* @__PURE__ */ d(v, { children: /* @__PURE__ */ d(y, {
233
+ }, e.id))
234
+ })] }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c(h, { children: /* @__PURE__ */ c(g, {
224
235
  className: "text-sm",
225
236
  children: "Office Locations"
226
- }) }), /* @__PURE__ */ d(g, {
237
+ }) }), /* @__PURE__ */ c(p, {
227
238
  className: "space-y-2",
228
- children: j.map((e) => /* @__PURE__ */ f("div", {
239
+ children: k.length === 0 ? /* @__PURE__ */ c("p", {
240
+ className: "text-sm text-text-secondary",
241
+ children: "No locations on record yet."
242
+ }) : k.map((e) => /* @__PURE__ */ l("div", {
229
243
  className: "flex items-center gap-2 text-sm",
230
- children: [/* @__PURE__ */ d(c, { className: "h-3 w-3 text-text-secondary" }), /* @__PURE__ */ d("span", { children: e })]
244
+ children: [/* @__PURE__ */ c(a, { className: "h-3 w-3 text-text-secondary" }), /* @__PURE__ */ c("span", { children: e })]
231
245
  }, e))
232
246
  })] })]
233
247
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"CompanyCompanyProfilePagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/CompanyCompanyProfilePagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n EmphasisPanel,\n GradientText,\n PagePurpose,\n Separator,\n} from '@burdenoff/fe-libs/ui';\nimport {\n Award,\n BarChart3,\n Building2,\n Calendar,\n ExternalLink,\n Globe,\n MapPin,\n TrendingUp,\n Users,\n} from 'lucide-react';\nimport { useMemo } from 'react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function CompanyCompanyProfilePagePage() {\n const { employees, departments, teams, projects, announcements } = useCrewFoundryStore();\n\n const milestones = useMemo(() => {\n const base = [\n { year: '2020', event: 'CrewFoundry founded and team assembled' },\n { year: '2021', event: 'Core workforce modules launched' },\n { year: '2022', event: 'Expanded hiring and payroll capabilities' },\n ];\n const dynamic = announcements.slice(0, 4).map((announcement, index) => ({\n year: String(2023 + index),\n event: announcement.title,\n }));\n return [...base, ...dynamic];\n }, [announcements]);\n\n const values = useMemo(\n () => [\n {\n title: 'People First',\n description: `Supporting ${employees.length} employees with modern workforce tooling.`,\n },\n {\n title: 'Transparency',\n description: `Cross-functional visibility across ${departments.length} departments.`,\n },\n {\n title: 'Innovation',\n description: `${projects.filter((project) => project.status === 'active').length} active initiatives driving product growth.`,\n },\n {\n title: 'Inclusion',\n description: `Distributed teams across ${new Set(employees.map((employee) => employee.location)).size} locations.`,\n },\n ],\n [departments.length, employees, projects]\n );\n\n const officeLocations = useMemo(\n () => Array.from(new Set(employees.map((employee) => employee.location))).slice(0, 8),\n [employees]\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-4\">\n <div className=\"flex h-14 w-14 items-center justify-center rounded-xl bg-action-primary-bg text-action-primary-text\">\n <Building2 className=\"h-7 w-7\" />\n </div>\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>CrewFoundry Inc.</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Modern workforce management platform</p>\n <PagePurpose className=\"mt-1\">Maintain your company&apos;s public identity — name, branding, and details that appear across CrewFoundry and to external partners.</PagePurpose>\n </div>\n </div>\n <Button variant=\"outline\" size=\"sm\">\n <ExternalLink className=\"h-3 w-3 mr-1\" />\n crewfoundry.com\n </Button>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n {[\n {\n icon: Users,\n label: 'Employees',\n value: `${employees.length}+`,\n color: 'text-status-info-text',\n },\n {\n icon: Building2,\n label: 'Departments',\n value: departments.length.toString(),\n color: 'text-action-primary-bg',\n },\n {\n icon: BarChart3,\n label: 'Active Projects',\n value: projects.filter((p) => p.status === 'active').length.toString(),\n color: 'text-status-success-text',\n },\n {\n icon: TrendingUp,\n label: 'Teams',\n value: teams.length.toString(),\n color: 'text-status-warning-text',\n },\n ].map((stat) => (\n <Card key={stat.label}>\n <CardContent className=\"flex items-center gap-3 pt-6\">\n <stat.icon className={`h-5 w-5 ${stat.color}`} />\n <div>\n <p className=\"text-xs text-text-secondary\">{stat.label}</p>\n <p className=\"text-lg font-bold\">{stat.value}</p>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n\n <div className=\"grid gap-6 lg:grid-cols-3\">\n <div className=\"lg:col-span-2 space-y-6\">\n <EmphasisPanel>\n <div className=\"mb-2 text-base font-semibold\">About CrewFoundry</div>\n <div className=\"space-y-3 text-sm text-text-secondary\">\n <p>\n CrewFoundry is a modern, all-in-one workforce management platform built for growing\n organizations. Our platform streamlines HR operations, recruitment, payroll\n processing, and employee development through an intuitive interface powered by AI\n and automation.\n </p>\n <p>\n Founded in 2020 in San Francisco, we&apos;ve grown to serve hundreds of companies\n managing their workforce with our integrated suite of tools spanning hiring,\n onboarding, time tracking, learning management, and analytics.\n </p>\n <Separator />\n <div className=\"grid grid-cols-2 gap-3 text-xs\">\n <div className=\"flex items-center gap-2\">\n <MapPin className=\"h-3 w-3\" />\n <span>San Francisco, CA (HQ)</span>\n </div>\n <div className=\"flex items-center gap-2\">\n <Globe className=\"h-3 w-3\" />\n <span>6 office locations globally</span>\n </div>\n <div className=\"flex items-center gap-2\">\n <Calendar className=\"h-3 w-3\" />\n <span>Founded 2020</span>\n </div>\n <div className=\"flex items-center gap-2\">\n <Award className=\"h-3 w-3\" />\n <span>Series B funded</span>\n </div>\n </div>\n </div>\n </EmphasisPanel>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Our Values</CardTitle>\n <CardDescription>The principles that guide how we build and work</CardDescription>\n </CardHeader>\n <CardContent className=\"grid gap-3 sm:grid-cols-2\">\n {values.map((v) => (\n <div key={v.title} className=\"rounded-lg border p-3 space-y-1\">\n <p className=\"text-sm font-medium\">{v.title}</p>\n <p className=\"text-xs text-text-secondary\">{v.description}</p>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Departments</CardTitle>\n </CardHeader>\n <CardContent className=\"p-0\">\n {departments.map((dept, i) => (\n <div\n key={dept.id}\n className={`flex items-center justify-between px-6 py-3 ${i < departments.length - 1 ? 'border-b' : ''}`}\n >\n <div>\n <p className=\"text-sm font-medium\">{dept.name}</p>\n <p className=\"text-xs text-text-secondary\">Led by {dept.headName}</p>\n </div>\n <div className=\"flex items-center gap-3\">\n <span className=\"text-xs text-text-secondary\">\n {dept.employeeCount} employees\n </span>\n <Badge\n variant={dept.status === 'active' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {dept.status}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n\n <div className=\"space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Company Timeline</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-0\">\n {milestones.map((ms, i) => (\n <div key={ms.year} className=\"flex gap-3\">\n <div className=\"flex flex-col items-center\">\n <div className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-action-primary-bg text-action-primary-text text-[10px] font-medium\">\n {ms.year.slice(2)}\n </div>\n {i < milestones.length - 1 && <div className=\"h-full w-px bg-border my-1\" />}\n </div>\n <div className=\"pb-4\">\n <p className=\"text-xs font-medium\">{ms.year}</p>\n <p className=\"text-xs text-text-secondary\">{ms.event}</p>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Office Locations</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n {officeLocations.map((loc) => (\n <div key={loc} className=\"flex items-center gap-2 text-sm\">\n <MapPin className=\"h-3 w-3 text-text-secondary\" />\n <span>{loc}</span>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CompanyCompanyProfilePagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/CompanyCompanyProfilePagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n EmphasisPanel,\n GradientText,\n IllustratedEmptyState,\n PagePurpose,\n Separator,\n} from '@burdenoff/fe-libs/ui';\nimport { BarChart3, Building2, ExternalLink, MapPin, TrendingUp, Users } from 'lucide-react';\nimport { useMemo } from 'react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nconst COMPANY_WEBSITE = 'https://crewfoundry.com';\n\nconst formatTimelineDate = (value: string): string => {\n const parsed = new Date(value);\n if (Number.isNaN(parsed.getTime())) {\n return '—';\n }\n return parsed.toLocaleDateString(undefined, { year: 'numeric', month: 'short' });\n};\n\nexport function CompanyCompanyProfilePagePage() {\n const { employees, departments, teams, projects, announcements } = useCrewFoundryStore();\n\n const officeLocations = useMemo(\n () =>\n Array.from(\n new Set(employees.map((employee) => employee.location).filter((loc) => loc.trim() !== ''))\n ),\n [employees]\n );\n\n const timeline = useMemo(\n () =>\n [...announcements]\n .sort((a, b) => (b.createdAt ?? '').localeCompare(a.createdAt ?? ''))\n .slice(0, 6)\n .map((announcement) => ({\n id: announcement.id,\n date: announcement.createdAt,\n title: announcement.title,\n })),\n [announcements]\n );\n\n const values = useMemo(\n () => [\n {\n title: 'People First',\n description: `Supporting ${employees.length} employees with modern workforce tooling.`,\n },\n {\n title: 'Transparency',\n description: `Cross-functional visibility across ${departments.length} departments.`,\n },\n {\n title: 'Innovation',\n description: `${projects.filter((project) => project.status === 'active').length} active initiatives driving product growth.`,\n },\n {\n title: 'Inclusion',\n description: `Distributed teams across ${officeLocations.length} location${officeLocations.length === 1 ? '' : 's'}.`,\n },\n ],\n [departments.length, employees.length, officeLocations.length, projects]\n );\n\n const facts = useMemo(\n () => [\n { icon: Users, label: `${employees.length} employees` },\n { icon: Building2, label: `${departments.length} departments` },\n { icon: TrendingUp, label: `${teams.length} teams` },\n {\n icon: MapPin,\n label: `${officeLocations.length} office location${officeLocations.length === 1 ? '' : 's'}`,\n },\n ],\n [departments.length, employees.length, officeLocations.length, teams.length]\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-4\">\n <div className=\"flex h-14 w-14 items-center justify-center rounded-xl bg-action-primary-bg text-action-primary-text\">\n <Building2 className=\"h-7 w-7\" />\n </div>\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>CrewFoundry</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Modern workforce management platform</p>\n <PagePurpose className=\"mt-1\">\n Maintain your company&apos;s public identity — name, branding, and details that appear\n across CrewFoundry and to external partners.\n </PagePurpose>\n </div>\n </div>\n <Button\n variant=\"outline\"\n size=\"sm\"\n aria-label=\"Open crewfoundry.com in a new tab\"\n onClick={() => window.open(COMPANY_WEBSITE, '_blank', 'noopener,noreferrer')}\n >\n <ExternalLink className=\"h-3 w-3 mr-1\" />\n crewfoundry.com\n </Button>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n {[\n {\n icon: Users,\n label: 'Employees',\n value: `${employees.length}+`,\n color: 'text-status-info-text',\n },\n {\n icon: Building2,\n label: 'Departments',\n value: departments.length.toString(),\n color: 'text-action-primary-bg',\n },\n {\n icon: BarChart3,\n label: 'Active Projects',\n value: projects.filter((p) => p.status === 'active').length.toString(),\n color: 'text-status-success-text',\n },\n {\n icon: TrendingUp,\n label: 'Teams',\n value: teams.length.toString(),\n color: 'text-status-warning-text',\n },\n ].map((stat) => (\n <Card key={stat.label}>\n <CardContent className=\"flex items-center gap-3 pt-6\">\n <stat.icon className={`h-5 w-5 ${stat.color}`} />\n <div>\n <p className=\"text-xs text-text-secondary\">{stat.label}</p>\n <p className=\"text-lg font-bold\">{stat.value}</p>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n\n <div className=\"grid gap-6 lg:grid-cols-3\">\n <div className=\"lg:col-span-2 space-y-6\">\n <EmphasisPanel>\n <div className=\"mb-2 text-base font-semibold\">About CrewFoundry</div>\n <div className=\"space-y-3 text-sm text-text-secondary\">\n <p>\n CrewFoundry is a modern, all-in-one workforce management platform built for growing\n organizations. It streamlines HR operations, recruitment, payroll processing, and\n employee development through an intuitive interface powered by automation.\n </p>\n <p>\n The platform brings hiring, onboarding, time tracking, learning management, and\n analytics together in one integrated suite so teams can manage their entire\n workforce in a single place.\n </p>\n <Separator />\n <div className=\"grid grid-cols-2 gap-3 text-xs\">\n {facts.map((fact) => (\n <div key={fact.label} className=\"flex items-center gap-2\">\n <fact.icon className=\"h-3 w-3\" />\n <span>{fact.label}</span>\n </div>\n ))}\n </div>\n </div>\n </EmphasisPanel>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Our Values</CardTitle>\n <CardDescription>The principles that guide how we build and work</CardDescription>\n </CardHeader>\n <CardContent className=\"grid gap-3 sm:grid-cols-2\">\n {values.map((v) => (\n <div key={v.title} className=\"rounded-lg border p-3 space-y-1\">\n <p className=\"text-sm font-medium\">{v.title}</p>\n <p className=\"text-xs text-text-secondary\">{v.description}</p>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Departments</CardTitle>\n </CardHeader>\n <CardContent className=\"p-0\">\n {departments.length === 0 ? (\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title=\"No departments yet\"\n description=\"Departments you create will appear here.\"\n />\n </div>\n ) : (\n departments.map((dept, i) => (\n <div\n key={dept.id}\n className={`flex items-center justify-between px-6 py-3 ${i < departments.length - 1 ? 'border-b' : ''}`}\n >\n <div>\n <p className=\"text-sm font-medium\">{dept.name}</p>\n <p className=\"text-xs text-text-secondary\">Led by {dept.headName}</p>\n </div>\n <div className=\"flex items-center gap-3\">\n <span className=\"text-xs text-text-secondary\">\n {dept.employeeCount} employees\n </span>\n <Badge\n variant={dept.status === 'active' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {dept.status}\n </Badge>\n </div>\n </div>\n ))\n )}\n </CardContent>\n </Card>\n </div>\n\n <div className=\"space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Company Timeline</CardTitle>\n <CardDescription>Recent company announcements</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-0\">\n {timeline.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title=\"No announcements yet\"\n description=\"Company milestones from announcements will appear here.\"\n />\n ) : (\n timeline.map((entry, i) => (\n <div key={entry.id} className=\"flex gap-3\">\n <div className=\"flex flex-col items-center\">\n <div className=\"flex h-2.5 w-2.5 shrink-0 items-center justify-center rounded-full bg-action-primary-bg\" />\n {i < timeline.length - 1 && <div className=\"h-full w-px bg-border my-1\" />}\n </div>\n <div className=\"pb-4\">\n <p className=\"text-xs font-medium\">{formatTimelineDate(entry.date)}</p>\n <p className=\"text-xs text-text-secondary\">{entry.title}</p>\n </div>\n </div>\n ))\n )}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Office Locations</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n {officeLocations.length === 0 ? (\n <p className=\"text-sm text-text-secondary\">No locations on record yet.</p>\n ) : (\n officeLocations.map((loc) => (\n <div key={loc} className=\"flex items-center gap-2 text-sm\">\n <MapPin className=\"h-3 w-3 text-text-secondary\" />\n <span>{loc}</span>\n </div>\n ))\n )}\n </CardContent>\n </Card>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}