@burdenoff/microfe-crewfoundry 2026.624.1 → 2026.625.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 (131) hide show
  1. package/dist/crewfoundry/pages/AdminAdminPagePage.js +100 -76
  2. package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
  3. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +118 -94
  4. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  5. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +105 -81
  6. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
  7. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +134 -110
  8. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
  9. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +121 -97
  10. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
  11. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +28 -15
  12. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
  13. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +74 -54
  14. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
  15. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +87 -69
  16. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
  17. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +99 -80
  18. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
  19. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +87 -68
  20. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
  21. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +31 -15
  22. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
  23. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +81 -61
  24. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
  25. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +71 -51
  26. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
  27. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +82 -58
  28. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
  29. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +46 -39
  30. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
  31. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +80 -62
  32. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
  33. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +104 -80
  34. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
  35. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +219 -151
  36. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
  37. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +183 -142
  38. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
  39. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +121 -97
  40. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
  41. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +57 -46
  42. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
  43. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +91 -67
  44. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
  45. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +112 -93
  46. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
  47. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +55 -48
  48. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
  49. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +70 -50
  50. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
  51. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +140 -97
  52. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
  53. package/dist/crewfoundry/pages/HiringJobsPagePage.js +101 -85
  54. package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
  55. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +68 -48
  56. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
  57. package/dist/crewfoundry/pages/HrEmployeesPagePage.js +99 -71
  58. package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
  59. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +97 -73
  60. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
  61. package/dist/crewfoundry/pages/HrPayrollPagePage.js +100 -76
  62. package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
  63. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +93 -69
  64. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
  65. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +65 -45
  66. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
  67. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +93 -75
  68. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
  69. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +117 -72
  70. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
  71. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +66 -54
  72. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
  73. package/dist/crewfoundry/pages/LearningCoursesPagePage.js +36 -20
  74. package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
  75. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +90 -66
  76. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
  77. package/dist/crewfoundry/pages/LearningLearningPagePage.js +81 -57
  78. package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
  79. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +90 -65
  80. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
  81. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +33 -17
  82. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
  83. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +83 -59
  84. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
  85. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +68 -48
  86. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
  87. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +80 -60
  88. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
  89. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +153 -118
  90. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
  91. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +42 -37
  92. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
  93. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +67 -47
  94. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
  95. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +104 -85
  96. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
  97. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +76 -57
  98. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
  99. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +78 -60
  100. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
  101. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +138 -93
  102. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
  103. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +98 -53
  104. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
  105. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +69 -49
  106. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
  107. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +84 -65
  108. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
  109. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +76 -52
  110. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
  111. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +58 -40
  112. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
  113. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +85 -65
  114. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
  115. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +36 -29
  116. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
  117. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +108 -73
  118. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
  119. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +43 -27
  120. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
  121. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +67 -47
  122. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
  123. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +108 -63
  124. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
  125. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +83 -64
  126. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
  127. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +185 -144
  128. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
  129. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +40 -24
  130. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
  131. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectsProjectsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/ProjectsProjectsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { DollarSign, FolderKanban, Plus } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function ProjectsProjectsPagePage() {\n const { t: translate } = useI18n();\n const { projects } = useCrewFoundryStore();\n const activeProjects = projects.filter((p) => p.status === 'active');\n const t = (key: string, fallback: string) => {\n const value = translate(key);\n return value === key ? fallback : value;\n };\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\">{t('crewfoundry.projects.title', 'Projects')}</h1>\n <p className=\"text-sm text-text-secondary\">\n {activeProjects.length}{' '}\n {t('crewfoundry.projects.summary.activeProjects', 'active projects')}\n </p>\n </div>\n <Button size=\"sm\">\n <Plus className=\"h-4 w-4 mr-1\" />\n {t('crewfoundry.projects.actions.newProject', 'New Project')}\n </Button>\n </div>\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {projects.map((project) => (\n <Card key={project.id} className=\"hover:shadow-md transition-shadow cursor-pointer\">\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-base\">{project.name}</CardTitle>\n <Badge\n variant={\n project.status === 'active'\n ? 'default'\n : project.status === 'completed'\n ? 'secondary'\n : 'outline'\n }\n className=\"text-[10px]\"\n >\n {project.status}\n </Badge>\n </div>\n <CardDescription>{project.description}</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2 mb-3\">\n <div className=\"flex justify-between text-xs\">\n <span>\n {project.completedTasks}/{project.tasks}{' '}\n {t('crewfoundry.projects.card.tasks', 'tasks')}\n </span>\n <span>{project.progress}%</span>\n </div>\n <div className=\"h-2 bg-bg-sunken rounded overflow-hidden\">\n <div\n className=\"h-2 bg-action-primary-bg rounded\"\n style={{ width: `${project.progress}%` }}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-2 text-xs text-text-secondary\">\n <span>\n {t('crewfoundry.projects.card.team', 'Team')}: {project.teamName}\n </span>\n <span>\n {t('crewfoundry.projects.card.manager', 'Manager')}: {project.managerName}\n </span>\n <span>\n {t('crewfoundry.projects.card.budget', 'Budget')}: $\n {(project.budget / 1000).toFixed(0)}K\n </span>\n <span>\n {t('crewfoundry.projects.card.spent', 'Spent')}: $\n {(project.spent / 1000).toFixed(0)}K\n </span>\n </div>\n <div className=\"flex gap-1 mt-2\">\n <Badge\n variant={\n project.priority === 'critical'\n ? 'destructive'\n : project.priority === 'high'\n ? 'default'\n : 'secondary'\n }\n className=\"text-[10px]\"\n >\n {project.priority}\n </Badge>\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {project.startDate} — {project.endDate}\n </Badge>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAaA,SAAgB,IAA2B;CACzC,IAAM,EAAE,GAAG,MAAc,GAAS,EAC5B,EAAE,gBAAa,GAAqB,EACpC,IAAiB,EAAS,QAAQ,MAAM,EAAE,WAAW,SAAS,EAC9D,KAAK,GAAa,MAAqB;EAC3C,IAAM,IAAQ,EAAU,EAAI;AAC5B,SAAO,MAAU,IAAM,IAAW;;AAGpC,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,WAAU;cAA0B,EAAE,8BAA8B,WAAW;IAAM,CAAA,EACzF,kBAAC,KAAD;IAAG,WAAU;cAAb;KACG,EAAe;KAAQ;KACvB,EAAE,+CAA+C,kBAAkB;KAClE;MACA,EAAA,CAAA,EACN,kBAAC,GAAD;IAAQ,MAAK;cAAb,CACE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAChC,EAAE,2CAA2C,cAAc,CACrD;MACL;MACN,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAS,KAAK,MACb,kBAAC,GAAD;IAAuB,WAAU;cAAjC,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD;MAAW,WAAU;gBAAa,EAAQ;MAAiB,CAAA,EAC3D,kBAAC,GAAD;MACE,SACE,EAAQ,WAAW,WACf,YACA,EAAQ,WAAW,cACjB,cACA;MAER,WAAU;gBAET,EAAQ;MACH,CAAA,CACJ;QACN,kBAAC,GAAD,EAAA,UAAkB,EAAQ,aAA8B,CAAA,CAC7C,EAAA,CAAA,EACb,kBAAC,GAAD,EAAA,UAAA;KACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,QAAD,EAAA,UAAA;QACG,EAAQ;QAAe;QAAE,EAAQ;QAAO;QACxC,EAAE,mCAAmC,QAAQ;QACzC,EAAA,CAAA,EACP,kBAAC,QAAD,EAAA,UAAA,CAAO,EAAQ,UAAS,IAAQ,EAAA,CAAA,CAC5B;UACN,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,OAAD;QACE,WAAU;QACV,OAAO,EAAE,OAAO,GAAG,EAAQ,SAAS,IAAI;QACxC,CAAA;OACE,CAAA,CACF;;KACN,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,QAAD,EAAA,UAAA;QACG,EAAE,kCAAkC,OAAO;QAAC;QAAG,EAAQ;QACnD,EAAA,CAAA;OACP,kBAAC,QAAD,EAAA,UAAA;QACG,EAAE,qCAAqC,UAAU;QAAC;QAAG,EAAQ;QACzD,EAAA,CAAA;OACP,kBAAC,QAAD,EAAA,UAAA;QACG,EAAE,oCAAoC,SAAS;QAAC;SAC/C,EAAQ,SAAS,KAAM,QAAQ,EAAE;QAAC;QAC/B,EAAA,CAAA;OACP,kBAAC,QAAD,EAAA,UAAA;QACG,EAAE,mCAAmC,QAAQ;QAAC;SAC7C,EAAQ,QAAQ,KAAM,QAAQ,EAAE;QAAC;QAC9B,EAAA,CAAA;OACH;;KACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD;OACE,SACE,EAAQ,aAAa,aACjB,gBACA,EAAQ,aAAa,SACnB,YACA;OAER,WAAU;iBAET,EAAQ;OACH,CAAA,EACR,kBAAC,GAAD;OAAO,SAAQ;OAAU,WAAU;iBAAnC;QACG,EAAQ;QAAU;QAAI,EAAQ;QACzB;SACJ;;KACM,EAAA,CAAA,CACT;MArEI,EAAQ,GAqEZ,CACP;GACE,CAAA,CACF"}
1
+ {"version":3,"file":"ProjectsProjectsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/ProjectsProjectsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n IllustratedEmptyState,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { DollarSign, FolderKanban, Plus } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function ProjectsProjectsPagePage() {\n const { t: translate } = useI18n();\n const { projects } = useCrewFoundryStore();\n const activeProjects = projects.filter((p) => p.status === 'active');\n const t = (key: string, fallback: string) => {\n const value = translate(key);\n return value === key ? fallback : value;\n };\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>{t('crewfoundry.projects.title', 'Projects')}</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n {activeProjects.length}{' '}\n {t('crewfoundry.projects.summary.activeProjects', 'active projects')}\n </p>\n <PagePurpose className=\"mt-1\">All your projects in one view — track status, progress, and budgets so nothing stalls and everything ships on time.</PagePurpose>\n </div>\n <Button size=\"sm\">\n <Plus className=\"h-4 w-4 mr-1\" />\n {t('crewfoundry.projects.actions.newProject', 'New Project')}\n </Button>\n </div>\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {projects.length === 0 ? (\n <div className=\"col-span-full\">\n <IllustratedEmptyState illustration=\"empty-data\" title=\"No projects yet\" description=\"Create your first project to start tracking work.\" />\n </div>\n ) : (\n projects.map((project, _idx) => (\n <GlassCard key={project.id} treatment={_idx === 0 ? 'glass' : 'plain'} glow={_idx === 0} className=\"hover:shadow-md transition-shadow cursor-pointer\">\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-base\">{project.name}</CardTitle>\n <Badge\n variant={\n project.status === 'active'\n ? 'default'\n : project.status === 'completed'\n ? 'secondary'\n : 'outline'\n }\n className=\"text-[10px]\"\n >\n {project.status}\n </Badge>\n </div>\n <CardDescription>{project.description}</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2 mb-3\">\n <div className=\"flex justify-between text-xs\">\n <span>\n {project.completedTasks}/{project.tasks}{' '}\n {t('crewfoundry.projects.card.tasks', 'tasks')}\n </span>\n <span>{project.progress}%</span>\n </div>\n <div className=\"h-2 bg-bg-sunken rounded overflow-hidden\">\n <div\n className=\"h-2 bg-action-primary-bg rounded\"\n style={{ width: `${project.progress}%` }}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-2 text-xs text-text-secondary\">\n <span>\n {t('crewfoundry.projects.card.team', 'Team')}: {project.teamName}\n </span>\n <span>\n {t('crewfoundry.projects.card.manager', 'Manager')}: {project.managerName}\n </span>\n <span>\n {t('crewfoundry.projects.card.budget', 'Budget')}: $\n {(project.budget / 1000).toFixed(0)}K\n </span>\n <span>\n {t('crewfoundry.projects.card.spent', 'Spent')}: $\n {(project.spent / 1000).toFixed(0)}K\n </span>\n </div>\n <div className=\"flex gap-1 mt-2\">\n <Badge\n variant={\n project.priority === 'critical'\n ? 'destructive'\n : project.priority === 'high'\n ? 'default'\n : 'secondary'\n }\n className=\"text-[10px]\"\n >\n {project.priority}\n </Badge>\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {project.startDate} — {project.endDate}\n </Badge>\n </div>\n </CardContent>\n </GlassCard>\n )))}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,66 +1,86 @@
1
1
  import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
2
  import { Star as t, TrendingUp as n, Users as r } from "lucide-react";
3
3
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
4
- import { Badge as o, Card as s, CardContent as c, CardHeader as l, CardTitle as u } from "@burdenoff/fe-libs/ui";
4
+ import { Badge as o, Card as s, CardContent as c, CardHeader as l, CardTitle as u, GlassCard as d, GradientText as f, PagePurpose as p } from "@burdenoff/fe-libs/ui";
5
5
  //#region src/crewfoundry/pages/TeamsTeamAnalyticsPagePage.tsx
6
- function d() {
7
- let { teams: d, employees: f, projects: p } = e(), m = d.map((e) => {
8
- let t = f.filter((t) => e.members.includes(t.id)), n = t.length > 0 ? (t.reduce((e, t) => e + t.performanceScore, 0) / t.length).toFixed(1) : "0", r = p.filter((t) => t.teamId === e.id), i = r.filter((e) => e.status === "active").length;
6
+ function m() {
7
+ let { teams: m, employees: h, projects: g } = e(), _ = m.map((e) => {
8
+ let t = h.filter((t) => e.members.includes(t.id)), n = t.length > 0 ? (t.reduce((e, t) => e + t.performanceScore, 0) / t.length).toFixed(1) : "0", r = g.filter((t) => t.teamId === e.id), i = r.filter((e) => e.status === "active").length;
9
9
  return {
10
10
  ...e,
11
11
  avgPerf: n,
12
12
  activeProjects: i,
13
13
  totalProjects: r.length
14
14
  };
15
- }), h = Math.max(...d.map((e) => e.memberCount));
15
+ }), v = Math.max(...m.map((e) => e.memberCount));
16
16
  return /* @__PURE__ */ a("div", {
17
17
  className: "space-y-6 p-6",
18
18
  children: [
19
- /* @__PURE__ */ a("div", { children: [/* @__PURE__ */ i("h1", {
20
- className: "text-2xl font-semibold",
21
- children: "Team Analytics"
22
- }), /* @__PURE__ */ i("p", {
23
- className: "text-sm text-text-secondary",
24
- children: "Performance and productivity metrics across teams"
25
- })] }),
19
+ /* @__PURE__ */ a("div", { children: [
20
+ /* @__PURE__ */ i("h1", {
21
+ className: "text-2xl font-semibold",
22
+ children: /* @__PURE__ */ i(f, { children: "Team Analytics" })
23
+ }),
24
+ /* @__PURE__ */ i("p", {
25
+ className: "text-sm text-text-secondary",
26
+ children: "Performance and productivity metrics across teams"
27
+ }),
28
+ /* @__PURE__ */ i(p, {
29
+ className: "mt-1",
30
+ children: "Understand how your teams are performing — productivity, workload, and trends that help you balance and support your groups."
31
+ })
32
+ ] }),
26
33
  /* @__PURE__ */ a("div", {
27
34
  className: "grid gap-4 md:grid-cols-3",
28
35
  children: [
29
- /* @__PURE__ */ a(s, { children: [/* @__PURE__ */ a(l, {
30
- className: "flex flex-row items-center justify-between space-y-0 pb-2",
31
- children: [/* @__PURE__ */ i(u, {
32
- className: "text-sm font-medium",
33
- children: "Total Teams"
34
- }), /* @__PURE__ */ i(r, { className: "h-4 w-4 text-text-secondary" })]
35
- }), /* @__PURE__ */ i(c, { children: /* @__PURE__ */ i("div", {
36
- className: "text-2xl font-bold",
37
- children: d.length
38
- }) })] }),
39
- /* @__PURE__ */ a(s, { children: [/* @__PURE__ */ a(l, {
40
- className: "flex flex-row items-center justify-between space-y-0 pb-2",
41
- children: [/* @__PURE__ */ i(u, {
42
- className: "text-sm font-medium",
43
- children: "Total Members"
44
- }), /* @__PURE__ */ i(r, { className: "h-4 w-4 text-text-secondary" })]
45
- }), /* @__PURE__ */ i(c, { children: /* @__PURE__ */ i("div", {
46
- className: "text-2xl font-bold",
47
- children: d.reduce((e, t) => e + t.memberCount, 0)
48
- }) })] }),
49
- /* @__PURE__ */ a(s, { children: [/* @__PURE__ */ a(l, {
50
- className: "flex flex-row items-center justify-between space-y-0 pb-2",
51
- children: [/* @__PURE__ */ i(u, {
52
- className: "text-sm font-medium",
53
- children: "Active Projects"
54
- }), /* @__PURE__ */ i(n, { className: "h-4 w-4 text-text-secondary" })]
55
- }), /* @__PURE__ */ i(c, { children: /* @__PURE__ */ i("div", {
56
- className: "text-2xl font-bold",
57
- children: m.reduce((e, t) => e + t.activeProjects, 0)
58
- }) })] })
36
+ /* @__PURE__ */ a(d, {
37
+ treatment: "glass",
38
+ glow: !0,
39
+ className: "border-border-seam",
40
+ children: [/* @__PURE__ */ a(l, {
41
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
42
+ children: [/* @__PURE__ */ i(u, {
43
+ className: "text-sm font-medium",
44
+ children: "Total Teams"
45
+ }), /* @__PURE__ */ i(r, { className: "h-4 w-4 text-text-secondary" })]
46
+ }), /* @__PURE__ */ i(c, { children: /* @__PURE__ */ i("div", {
47
+ className: "text-2xl font-bold tabular-nums",
48
+ children: m.length
49
+ }) })]
50
+ }),
51
+ /* @__PURE__ */ a(d, {
52
+ treatment: "metric",
53
+ className: "border-border-seam",
54
+ children: [/* @__PURE__ */ a(l, {
55
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
56
+ children: [/* @__PURE__ */ i(u, {
57
+ className: "text-sm font-medium",
58
+ children: "Total Members"
59
+ }), /* @__PURE__ */ i(r, { className: "h-4 w-4 text-text-secondary" })]
60
+ }), /* @__PURE__ */ i(c, { children: /* @__PURE__ */ i("div", {
61
+ className: "text-2xl font-bold tabular-nums",
62
+ children: m.reduce((e, t) => e + t.memberCount, 0)
63
+ }) })]
64
+ }),
65
+ /* @__PURE__ */ a(d, {
66
+ treatment: "metric",
67
+ className: "border-border-seam",
68
+ children: [/* @__PURE__ */ a(l, {
69
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
70
+ children: [/* @__PURE__ */ i(u, {
71
+ className: "text-sm font-medium",
72
+ children: "Active Projects"
73
+ }), /* @__PURE__ */ i(n, { className: "h-4 w-4 text-text-secondary" })]
74
+ }), /* @__PURE__ */ i(c, { children: /* @__PURE__ */ i("div", {
75
+ className: "text-2xl font-bold tabular-nums",
76
+ children: _.reduce((e, t) => e + t.activeProjects, 0)
77
+ }) })]
78
+ })
59
79
  ]
60
80
  }),
61
81
  /* @__PURE__ */ a(s, { children: [/* @__PURE__ */ i(l, { children: /* @__PURE__ */ i(u, { children: "Team Size Comparison" }) }), /* @__PURE__ */ i(c, {
62
82
  className: "space-y-3",
63
- children: d.sort((e, t) => t.memberCount - e.memberCount).map((e) => /* @__PURE__ */ a("div", {
83
+ children: m.sort((e, t) => t.memberCount - e.memberCount).map((e) => /* @__PURE__ */ a("div", {
64
84
  className: "flex items-center gap-3",
65
85
  children: [
66
86
  /* @__PURE__ */ i("span", {
@@ -71,7 +91,7 @@ function d() {
71
91
  className: "flex-1 h-4 bg-bg-sunken rounded overflow-hidden",
72
92
  children: /* @__PURE__ */ i("div", {
73
93
  className: "h-4 bg-action-primary-bg rounded",
74
- style: { width: `${Math.round(e.memberCount / h * 100)}%` }
94
+ style: { width: `${Math.round(e.memberCount / v * 100)}%` }
75
95
  })
76
96
  }),
77
97
  /* @__PURE__ */ i("span", {
@@ -99,7 +119,7 @@ function d() {
99
119
  children: "Status"
100
120
  })
101
121
  ]
102
- }), m.map((e) => /* @__PURE__ */ a("div", {
122
+ }), _.map((e) => /* @__PURE__ */ a("div", {
103
123
  className: "grid grid-cols-5 gap-2 py-2 border-b last:border-0 text-sm",
104
124
  children: [
105
125
  /* @__PURE__ */ i("span", {
@@ -112,7 +132,7 @@ function d() {
112
132
  }),
113
133
  /* @__PURE__ */ a("div", {
114
134
  className: "flex items-center justify-center gap-1",
115
- children: [/* @__PURE__ */ i(t, { className: "h-3 w-3 text-yellow-500" }), e.avgPerf]
135
+ children: [/* @__PURE__ */ i(t, { className: "h-3 w-3 text-status-warning-text" }), e.avgPerf]
116
136
  }),
117
137
  /* @__PURE__ */ a("span", {
118
138
  className: "text-right",
@@ -136,6 +156,6 @@ function d() {
136
156
  });
137
157
  }
138
158
  //#endregion
139
- export { d as TeamsTeamAnalyticsPagePage };
159
+ export { m as TeamsTeamAnalyticsPagePage };
140
160
 
141
161
  //# sourceMappingURL=TeamsTeamAnalyticsPagePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TeamsTeamAnalyticsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/TeamsTeamAnalyticsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@burdenoff/fe-libs/ui';\nimport { BarChart3, Star, TrendingUp, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function TeamsTeamAnalyticsPagePage() {\n const { teams, employees, projects } = useCrewFoundryStore();\n\n const teamMetrics = teams.map((t) => {\n const members = employees.filter((e) => t.members.includes(e.id));\n const avgPerf =\n members.length > 0\n ? (members.reduce((s, m) => s + m.performanceScore, 0) / members.length).toFixed(1)\n : '0';\n const teamProjects = projects.filter((p) => p.teamId === t.id);\n const activeProj = teamProjects.filter((p) => p.status === 'active').length;\n return { ...t, avgPerf, activeProjects: activeProj, totalProjects: teamProjects.length };\n });\n\n const maxMembers = Math.max(...teams.map((t) => t.memberCount));\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Team Analytics</h1>\n <p className=\"text-sm text-text-secondary\">\n Performance and productivity metrics across teams\n </p>\n </div>\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 Teams</CardTitle>\n <Users className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{teams.length}</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\">Total Members</CardTitle>\n <Users className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{teams.reduce((s, t) => s + t.memberCount, 0)}</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\">Active Projects</CardTitle>\n <TrendingUp className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">\n {teamMetrics.reduce((s, t) => s + t.activeProjects, 0)}\n </div>\n </CardContent>\n </Card>\n </div>\n <Card>\n <CardHeader>\n <CardTitle>Team Size Comparison</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {teams\n .sort((a, b) => b.memberCount - a.memberCount)\n .map((t) => (\n <div key={t.id} className=\"flex items-center gap-3\">\n <span className=\"w-40 text-sm font-medium truncate\">{t.name}</span>\n <div className=\"flex-1 h-4 bg-bg-sunken rounded overflow-hidden\">\n <div\n className=\"h-4 bg-action-primary-bg rounded\"\n style={{ width: `${Math.round((t.memberCount / maxMembers) * 100)}%` }}\n />\n </div>\n <span className=\"text-sm font-medium w-8 text-right\">{t.memberCount}</span>\n </div>\n ))}\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Team Performance Overview</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-5 gap-2 text-xs font-medium text-text-secondary border-b pb-2 mb-2\">\n <span>Team</span>\n <span>Department</span>\n <span className=\"text-center\">Avg Performance</span>\n <span className=\"text-right\">Active Projects</span>\n <span className=\"text-center\">Status</span>\n </div>\n {teamMetrics.map((t) => (\n <div key={t.id} className=\"grid grid-cols-5 gap-2 py-2 border-b last:border-0 text-sm\">\n <span className=\"font-medium\">{t.name}</span>\n <span className=\"text-text-secondary\">{t.department}</span>\n <div className=\"flex items-center justify-center gap-1\">\n <Star className=\"h-3 w-3 text-yellow-500\" />\n {t.avgPerf}\n </div>\n <span className=\"text-right\">\n {t.activeProjects}/{t.totalProjects}\n </span>\n <div className=\"text-center\">\n <Badge\n variant={t.status === 'active' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {t.status}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TeamsTeamAnalyticsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/TeamsTeamAnalyticsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { BarChart3, Star, TrendingUp, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function TeamsTeamAnalyticsPagePage() {\n const { teams, employees, projects } = useCrewFoundryStore();\n\n const teamMetrics = teams.map((t) => {\n const members = employees.filter((e) => t.members.includes(e.id));\n const avgPerf =\n members.length > 0\n ? (members.reduce((s, m) => s + m.performanceScore, 0) / members.length).toFixed(1)\n : '0';\n const teamProjects = projects.filter((p) => p.teamId === t.id);\n const activeProj = teamProjects.filter((p) => p.status === 'active').length;\n return { ...t, avgPerf, activeProjects: activeProj, totalProjects: teamProjects.length };\n });\n\n const maxMembers = Math.max(...teams.map((t) => t.memberCount));\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Team Analytics</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n Performance and productivity metrics across teams\n </p>\n <PagePurpose className=\"mt-1\">Understand how your teams are performing — productivity, workload, and trends that help you balance and support your groups.</PagePurpose>\n </div>\n <div className=\"grid gap-4 md:grid-cols-3\">\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 Teams</CardTitle>\n <Users className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">{teams.length}</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\">Total Members</CardTitle>\n <Users className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">\n {teams.reduce((s, t) => s + t.memberCount, 0)}\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 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 {teamMetrics.reduce((s, t) => s + t.activeProjects, 0)}\n </div>\n </CardContent>\n </GlassCard>\n </div>\n <Card>\n <CardHeader>\n <CardTitle>Team Size Comparison</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {teams\n .sort((a, b) => b.memberCount - a.memberCount)\n .map((t) => (\n <div key={t.id} className=\"flex items-center gap-3\">\n <span className=\"w-40 text-sm font-medium truncate\">{t.name}</span>\n <div className=\"flex-1 h-4 bg-bg-sunken rounded overflow-hidden\">\n <div\n className=\"h-4 bg-action-primary-bg rounded\"\n style={{ width: `${Math.round((t.memberCount / maxMembers) * 100)}%` }}\n />\n </div>\n <span className=\"text-sm font-medium w-8 text-right\">{t.memberCount}</span>\n </div>\n ))}\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Team Performance Overview</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-5 gap-2 text-xs font-medium text-text-secondary border-b pb-2 mb-2\">\n <span>Team</span>\n <span>Department</span>\n <span className=\"text-center\">Avg Performance</span>\n <span className=\"text-right\">Active Projects</span>\n <span className=\"text-center\">Status</span>\n </div>\n {teamMetrics.map((t) => (\n <div key={t.id} className=\"grid grid-cols-5 gap-2 py-2 border-b last:border-0 text-sm\">\n <span className=\"font-medium\">{t.name}</span>\n <span className=\"text-text-secondary\">{t.department}</span>\n <div className=\"flex items-center justify-center gap-1\">\n <Star className=\"h-3 w-3 text-status-warning-text\" />\n {t.avgPerf}\n </div>\n <span className=\"text-right\">\n {t.activeProjects}/{t.totalProjects}\n </span>\n <div className=\"text-center\">\n <Badge\n variant={t.status === 'active' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {t.status}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,85 +1,123 @@
1
1
  import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
- import { Calendar as t, FolderKanban as n, Star as r, Users as i } from "lucide-react";
3
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
4
- import { Badge as s, Card as c, CardContent as l, CardHeader as u, CardTitle as d } from "@burdenoff/fe-libs/ui";
2
+ import { BarChart3 as t, Calendar as n, FolderKanban as r, Settings as i, Star as a, Users as o } from "lucide-react";
3
+ import { useNavigate as s } from "react-router-dom";
4
+ import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
5
+ import { Badge as d, Card as f, CardContent as p, CardHeader as m, CardTitle as h, EmphasisPanel as g, GradientText as _, IllustratedEmptyState as v, NextSteps as y, PagePurpose as b } from "@burdenoff/fe-libs/ui";
5
6
  //#region src/crewfoundry/pages/TeamsTeamDetailPagePage.tsx
6
- function f() {
7
- let { teams: f, employees: p, projects: m } = e(), h = f[0];
8
- if (!h) return /* @__PURE__ */ a("div", {
9
- className: "p-6 text-text-secondary",
10
- children: "No team found."
7
+ function x() {
8
+ let x = s(), { teams: S, employees: C, projects: w } = e(), T = S[0];
9
+ if (!T) return /* @__PURE__ */ l("div", {
10
+ className: "p-6",
11
+ children: /* @__PURE__ */ l(v, {
12
+ illustration: "empty-search",
13
+ title: "Team not found",
14
+ description: "This team is no longer available."
15
+ })
11
16
  });
12
- let g = p.filter((e) => h.members.includes(e.id)), _ = m.filter((e) => e.teamId === h.id);
13
- return /* @__PURE__ */ o("div", {
17
+ let E = C.filter((e) => T.members.includes(e.id)), D = w.filter((e) => e.teamId === T.id);
18
+ return /* @__PURE__ */ u("div", {
14
19
  className: "space-y-6 p-6 max-w-4xl",
15
20
  children: [
16
- /* @__PURE__ */ o("div", {
21
+ /* @__PURE__ */ u("div", {
17
22
  className: "flex items-center justify-between",
18
- children: [/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("h1", {
19
- className: "text-2xl font-semibold",
20
- children: h.name
21
- }), /* @__PURE__ */ a("p", {
22
- className: "text-sm text-text-secondary",
23
- children: h.description
24
- })] }), /* @__PURE__ */ a(s, {
25
- variant: h.status === "active" ? "default" : "secondary",
26
- children: h.status
23
+ children: [/* @__PURE__ */ u("div", { children: [
24
+ /* @__PURE__ */ l("h1", {
25
+ className: "text-2xl font-semibold",
26
+ children: /* @__PURE__ */ l(_, { children: T.name })
27
+ }),
28
+ /* @__PURE__ */ l("p", {
29
+ className: "text-sm text-text-secondary",
30
+ children: T.description
31
+ }),
32
+ /* @__PURE__ */ l(b, {
33
+ className: "mt-2",
34
+ children: "A complete view of one team — who's on it, what they're working on, and how they're performing — so you can support the group and keep its projects on track."
35
+ })
36
+ ] }), /* @__PURE__ */ l(d, {
37
+ variant: T.status === "active" ? "default" : "secondary",
38
+ children: T.status
27
39
  })]
28
40
  }),
29
- /* @__PURE__ */ o("div", {
41
+ /* @__PURE__ */ l(y, {
42
+ storageKey: "crewfoundry-team-details",
43
+ steps: [
44
+ {
45
+ id: "analytics",
46
+ label: "View team analytics",
47
+ description: "See productivity and workload trends for this team.",
48
+ icon: /* @__PURE__ */ l(t, { className: "h-4 w-4" }),
49
+ onClick: () => x("../../teams/team-analytics-page")
50
+ },
51
+ {
52
+ id: "settings",
53
+ label: "Adjust team settings",
54
+ description: "Manage membership, permissions, and preferences.",
55
+ icon: /* @__PURE__ */ l(i, { className: "h-4 w-4" }),
56
+ onClick: () => x("../../teams/team-settings-page")
57
+ },
58
+ {
59
+ id: "directory",
60
+ label: "Browse all teams",
61
+ description: "Explore how the rest of the organization is structured.",
62
+ icon: /* @__PURE__ */ l(o, { className: "h-4 w-4" }),
63
+ onClick: () => x("../../teams/team-directory-page")
64
+ }
65
+ ]
66
+ }),
67
+ /* @__PURE__ */ u("div", {
30
68
  className: "grid gap-4 md:grid-cols-4",
31
69
  children: [
32
- /* @__PURE__ */ a(c, { children: /* @__PURE__ */ o(l, {
70
+ /* @__PURE__ */ l(f, { children: /* @__PURE__ */ u(p, {
33
71
  className: "p-4 text-center",
34
72
  children: [
35
- /* @__PURE__ */ a(i, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
36
- /* @__PURE__ */ a("p", {
73
+ /* @__PURE__ */ l(o, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
74
+ /* @__PURE__ */ l("p", {
37
75
  className: "text-lg font-bold",
38
- children: h.memberCount
76
+ children: T.memberCount
39
77
  }),
40
- /* @__PURE__ */ a("p", {
78
+ /* @__PURE__ */ l("p", {
41
79
  className: "text-xs text-text-secondary",
42
80
  children: "Members"
43
81
  })
44
82
  ]
45
83
  }) }),
46
- /* @__PURE__ */ a(c, { children: /* @__PURE__ */ o(l, {
84
+ /* @__PURE__ */ l(f, { children: /* @__PURE__ */ u(p, {
47
85
  className: "p-4 text-center",
48
86
  children: [
49
- /* @__PURE__ */ a(n, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
50
- /* @__PURE__ */ a("p", {
87
+ /* @__PURE__ */ l(r, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
88
+ /* @__PURE__ */ l("p", {
51
89
  className: "text-lg font-bold",
52
- children: h.projectCount
90
+ children: T.projectCount
53
91
  }),
54
- /* @__PURE__ */ a("p", {
92
+ /* @__PURE__ */ l("p", {
55
93
  className: "text-xs text-text-secondary",
56
94
  children: "Projects"
57
95
  })
58
96
  ]
59
97
  }) }),
60
- /* @__PURE__ */ a(c, { children: /* @__PURE__ */ o(l, {
98
+ /* @__PURE__ */ l(f, { children: /* @__PURE__ */ u(p, {
61
99
  className: "p-4 text-center",
62
100
  children: [
63
- /* @__PURE__ */ a(r, { className: "h-5 w-5 mx-auto text-yellow-500 mb-1" }),
64
- /* @__PURE__ */ a("p", {
101
+ /* @__PURE__ */ l(a, { className: "h-5 w-5 mx-auto text-status-warning-text mb-1" }),
102
+ /* @__PURE__ */ l("p", {
65
103
  className: "text-lg font-bold",
66
- children: h.leadName
104
+ children: T.leadName
67
105
  }),
68
- /* @__PURE__ */ a("p", {
106
+ /* @__PURE__ */ l("p", {
69
107
  className: "text-xs text-text-secondary",
70
108
  children: "Lead"
71
109
  })
72
110
  ]
73
111
  }) }),
74
- /* @__PURE__ */ a(c, { children: /* @__PURE__ */ o(l, {
112
+ /* @__PURE__ */ l(f, { children: /* @__PURE__ */ u(p, {
75
113
  className: "p-4 text-center",
76
114
  children: [
77
- /* @__PURE__ */ a(t, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
78
- /* @__PURE__ */ a("p", {
115
+ /* @__PURE__ */ l(n, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
116
+ /* @__PURE__ */ l("p", {
79
117
  className: "text-lg font-bold",
80
- children: h.createdAt
118
+ children: T.createdAt
81
119
  }),
82
- /* @__PURE__ */ a("p", {
120
+ /* @__PURE__ */ l("p", {
83
121
  className: "text-xs text-text-secondary",
84
122
  children: "Created"
85
123
  })
@@ -87,24 +125,31 @@ function f() {
87
125
  }) })
88
126
  ]
89
127
  }),
90
- /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a(u, { children: /* @__PURE__ */ a(d, { children: "Team Members" }) }), /* @__PURE__ */ o(l, { children: [/* @__PURE__ */ o("div", {
128
+ /* @__PURE__ */ u(g, { children: [/* @__PURE__ */ l("div", {
129
+ className: "mb-2 text-lg font-semibold",
130
+ children: "Team Members"
131
+ }), E.length === 0 ? /* @__PURE__ */ l(v, {
132
+ illustration: "empty-people",
133
+ title: "No members yet",
134
+ description: "Add people to this team to start collaborating."
135
+ }) : /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ u("div", {
91
136
  className: "grid grid-cols-4 gap-2 text-xs font-medium text-text-secondary border-b pb-2 mb-2",
92
137
  children: [
93
- /* @__PURE__ */ a("span", { children: "Name" }),
94
- /* @__PURE__ */ a("span", { children: "Position" }),
95
- /* @__PURE__ */ a("span", {
138
+ /* @__PURE__ */ l("span", { children: "Name" }),
139
+ /* @__PURE__ */ l("span", { children: "Position" }),
140
+ /* @__PURE__ */ l("span", {
96
141
  className: "text-center",
97
142
  children: "Performance"
98
143
  }),
99
- /* @__PURE__ */ a("span", {
144
+ /* @__PURE__ */ l("span", {
100
145
  className: "text-center",
101
146
  children: "Status"
102
147
  })
103
148
  ]
104
- }), g.map((e) => /* @__PURE__ */ o("div", {
149
+ }), E.map((e) => /* @__PURE__ */ u("div", {
105
150
  className: "grid grid-cols-4 gap-2 py-2 border-b last:border-0 text-sm",
106
151
  children: [
107
- /* @__PURE__ */ o("span", {
152
+ /* @__PURE__ */ u("span", {
108
153
  className: "font-medium",
109
154
  children: [
110
155
  e.firstName,
@@ -112,17 +157,17 @@ function f() {
112
157
  e.lastName
113
158
  ]
114
159
  }),
115
- /* @__PURE__ */ a("span", {
160
+ /* @__PURE__ */ l("span", {
116
161
  className: "text-text-secondary",
117
162
  children: e.position
118
163
  }),
119
- /* @__PURE__ */ o("div", {
164
+ /* @__PURE__ */ u("div", {
120
165
  className: "text-center flex items-center justify-center gap-1",
121
- children: [/* @__PURE__ */ a(r, { className: "h-3 w-3 text-yellow-500" }), e.performanceScore]
166
+ children: [/* @__PURE__ */ l(a, { className: "h-3 w-3 text-status-warning-text" }), e.performanceScore]
122
167
  }),
123
- /* @__PURE__ */ a("div", {
168
+ /* @__PURE__ */ l("div", {
124
169
  className: "text-center",
125
- children: /* @__PURE__ */ a(s, {
170
+ children: /* @__PURE__ */ l(d, {
126
171
  variant: e.status === "active" ? "default" : "secondary",
127
172
  className: "text-[10px]",
128
173
  children: e.status
@@ -130,35 +175,35 @@ function f() {
130
175
  })
131
176
  ]
132
177
  }, e.id))] })] }),
133
- _.length > 0 && /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a(u, { children: /* @__PURE__ */ a(d, { children: "Team Projects" }) }), /* @__PURE__ */ a(l, {
178
+ D.length > 0 && /* @__PURE__ */ u(f, { children: [/* @__PURE__ */ l(m, { children: /* @__PURE__ */ l(h, { children: "Team Projects" }) }), /* @__PURE__ */ l(p, {
134
179
  className: "space-y-3",
135
- children: _.map((e) => /* @__PURE__ */ o("div", {
180
+ children: D.map((e) => /* @__PURE__ */ u("div", {
136
181
  className: "flex items-center justify-between rounded border p-3",
137
- children: [/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("p", {
182
+ children: [/* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("p", {
138
183
  className: "text-sm font-medium",
139
184
  children: e.name
140
- }), /* @__PURE__ */ o("p", {
185
+ }), /* @__PURE__ */ u("p", {
141
186
  className: "text-xs text-text-secondary",
142
187
  children: [
143
188
  e.startDate,
144
189
  " — ",
145
190
  e.endDate
146
191
  ]
147
- })] }), /* @__PURE__ */ o("div", {
192
+ })] }), /* @__PURE__ */ u("div", {
148
193
  className: "flex items-center gap-2",
149
194
  children: [
150
- /* @__PURE__ */ a("div", {
195
+ /* @__PURE__ */ l("div", {
151
196
  className: "w-24 h-2 bg-bg-sunken rounded overflow-hidden",
152
- children: /* @__PURE__ */ a("div", {
197
+ children: /* @__PURE__ */ l("div", {
153
198
  className: "h-2 bg-action-primary-bg rounded",
154
199
  style: { width: `${e.progress}%` }
155
200
  })
156
201
  }),
157
- /* @__PURE__ */ o("span", {
202
+ /* @__PURE__ */ u("span", {
158
203
  className: "text-xs",
159
204
  children: [e.progress, "%"]
160
205
  }),
161
- /* @__PURE__ */ a(s, {
206
+ /* @__PURE__ */ l(d, {
162
207
  variant: e.status === "active" ? "default" : "secondary",
163
208
  className: "text-[10px]",
164
209
  children: e.status
@@ -171,6 +216,6 @@ function f() {
171
216
  });
172
217
  }
173
218
  //#endregion
174
- export { f as TeamsTeamDetailPagePage };
219
+ export { x as TeamsTeamDetailPagePage };
175
220
 
176
221
  //# sourceMappingURL=TeamsTeamDetailPagePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TeamsTeamDetailPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/TeamsTeamDetailPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@burdenoff/fe-libs/ui';\nimport { Calendar, FolderKanban, Star, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function TeamsTeamDetailPagePage() {\n const { teams, employees, projects } = useCrewFoundryStore();\n const team = teams[0];\n if (!team) return <div className=\"p-6 text-text-secondary\">No team found.</div>;\n const teamMembers = employees.filter((e) => team.members.includes(e.id));\n const teamProjects = projects.filter((p) => p.teamId === team.id);\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\">{team.name}</h1>\n <p className=\"text-sm text-text-secondary\">{team.description}</p>\n </div>\n <Badge variant={team.status === 'active' ? 'default' : 'secondary'}>{team.status}</Badge>\n </div>\n <div className=\"grid gap-4 md:grid-cols-4\">\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\">{team.memberCount}</p>\n <p className=\"text-xs text-text-secondary\">Members</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <FolderKanban className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{team.projectCount}</p>\n <p className=\"text-xs text-text-secondary\">Projects</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\">{team.leadName}</p>\n <p className=\"text-xs text-text-secondary\">Lead</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\">{team.createdAt}</p>\n <p className=\"text-xs text-text-secondary\">Created</p>\n </CardContent>\n </Card>\n </div>\n <Card>\n <CardHeader>\n <CardTitle>Team Members</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-4 gap-2 text-xs font-medium text-text-secondary border-b pb-2 mb-2\">\n <span>Name</span>\n <span>Position</span>\n <span className=\"text-center\">Performance</span>\n <span className=\"text-center\">Status</span>\n </div>\n {teamMembers.map((emp) => (\n <div\n key={emp.id}\n className=\"grid grid-cols-4 gap-2 py-2 border-b last:border-0 text-sm\"\n >\n <span className=\"font-medium\">\n {emp.firstName} {emp.lastName}\n </span>\n <span className=\"text-text-secondary\">{emp.position}</span>\n <div className=\"text-center flex items-center justify-center gap-1\">\n <Star className=\"h-3 w-3 text-yellow-500\" />\n {emp.performanceScore}\n </div>\n <div className=\"text-center\">\n <Badge\n variant={emp.status === 'active' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {emp.status}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n {teamProjects.length > 0 && (\n <Card>\n <CardHeader>\n <CardTitle>Team Projects</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {teamProjects.map((p) => (\n <div key={p.id} className=\"flex items-center justify-between rounded border p-3\">\n <div>\n <p className=\"text-sm font-medium\">{p.name}</p>\n <p className=\"text-xs text-text-secondary\">\n {p.startDate} — {p.endDate}\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <div className=\"w-24 h-2 bg-bg-sunken rounded overflow-hidden\">\n <div className=\"h-2 bg-action-primary-bg rounded\" style={{ width: `${p.progress}%` }} />\n </div>\n <span className=\"text-xs\">{p.progress}%</span>\n <Badge\n variant={p.status === 'active' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {p.status}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TeamsTeamDetailPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/TeamsTeamDetailPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n EmphasisPanel,\n GradientText,\n IllustratedEmptyState,\n NextSteps,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { BarChart3, Calendar, FolderKanban, Settings, Star, Users } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function TeamsTeamDetailPagePage() {\n const navigate = useNavigate();\n const { teams, employees, projects } = useCrewFoundryStore();\n const team = teams[0];\n if (!team)\n return (\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"Team not found\"\n description=\"This team is no longer available.\"\n />\n </div>\n );\n const teamMembers = employees.filter((e) => team.members.includes(e.id));\n const teamProjects = projects.filter((p) => p.teamId === team.id);\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>{team.name}</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">{team.description}</p>\n <PagePurpose className=\"mt-2\">\n A complete view of one team — who&apos;s on it, what they&apos;re working on, and how\n they&apos;re performing — so you can support the group and keep its projects on track.\n </PagePurpose>\n </div>\n <Badge variant={team.status === 'active' ? 'default' : 'secondary'}>{team.status}</Badge>\n </div>\n\n <NextSteps\n storageKey=\"crewfoundry-team-details\"\n steps={[\n {\n id: 'analytics',\n label: 'View team analytics',\n description: 'See productivity and workload trends for this team.',\n icon: <BarChart3 className=\"h-4 w-4\" />,\n onClick: () => navigate('../../teams/team-analytics-page'),\n },\n {\n id: 'settings',\n label: 'Adjust team settings',\n description: 'Manage membership, permissions, and preferences.',\n icon: <Settings className=\"h-4 w-4\" />,\n onClick: () => navigate('../../teams/team-settings-page'),\n },\n {\n id: 'directory',\n label: 'Browse all teams',\n description: 'Explore how the rest of the organization is structured.',\n icon: <Users className=\"h-4 w-4\" />,\n onClick: () => navigate('../../teams/team-directory-page'),\n },\n ]}\n />\n\n <div className=\"grid gap-4 md:grid-cols-4\">\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\">{team.memberCount}</p>\n <p className=\"text-xs text-text-secondary\">Members</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <FolderKanban className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{team.projectCount}</p>\n <p className=\"text-xs text-text-secondary\">Projects</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\">{team.leadName}</p>\n <p className=\"text-xs text-text-secondary\">Lead</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\">{team.createdAt}</p>\n <p className=\"text-xs text-text-secondary\">Created</p>\n </CardContent>\n </Card>\n </div>\n <EmphasisPanel>\n <div className=\"mb-2 text-lg font-semibold\">Team Members</div>\n {teamMembers.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-people\"\n title=\"No members yet\"\n description=\"Add people to this team to start collaborating.\"\n />\n ) : (\n <>\n <div className=\"grid grid-cols-4 gap-2 text-xs font-medium text-text-secondary border-b pb-2 mb-2\">\n <span>Name</span>\n <span>Position</span>\n <span className=\"text-center\">Performance</span>\n <span className=\"text-center\">Status</span>\n </div>\n {teamMembers.map((emp) => (\n <div\n key={emp.id}\n className=\"grid grid-cols-4 gap-2 py-2 border-b last:border-0 text-sm\"\n >\n <span className=\"font-medium\">\n {emp.firstName} {emp.lastName}\n </span>\n <span className=\"text-text-secondary\">{emp.position}</span>\n <div className=\"text-center flex items-center justify-center gap-1\">\n <Star className=\"h-3 w-3 text-status-warning-text\" />\n {emp.performanceScore}\n </div>\n <div className=\"text-center\">\n <Badge\n variant={emp.status === 'active' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {emp.status}\n </Badge>\n </div>\n </div>\n ))}\n </>\n )}\n </EmphasisPanel>\n {teamProjects.length > 0 && (\n <Card>\n <CardHeader>\n <CardTitle>Team Projects</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {teamProjects.map((p) => (\n <div key={p.id} className=\"flex items-center justify-between rounded border p-3\">\n <div>\n <p className=\"text-sm font-medium\">{p.name}</p>\n <p className=\"text-xs text-text-secondary\">\n {p.startDate} — {p.endDate}\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <div className=\"w-24 h-2 bg-bg-sunken rounded overflow-hidden\">\n <div\n className=\"h-2 bg-action-primary-bg rounded\"\n style={{ width: `${p.progress}%` }}\n />\n </div>\n <span className=\"text-xs\">{p.progress}%</span>\n <Badge\n variant={p.status === 'active' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {p.status}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n )}\n </div>\n );\n}\n"],"mappings":"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"}