@burdenoff/microfe-crewfoundry 2026.608.1 → 2026.624.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/crewfoundry/pages/AdminAdminPagePage.js +15 -15
- package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +15 -15
- package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +17 -17
- package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +19 -19
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +16 -16
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +5 -5
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +7 -7
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +7 -7
- package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +7 -7
- package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +7 -7
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +3 -3
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +8 -8
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +8 -8
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +14 -14
- package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +10 -10
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +4 -4
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +17 -17
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +19 -19
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +17 -17
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +12 -12
- package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +12 -12
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +11 -11
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +7 -7
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +1 -1
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +7 -7
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +13 -13
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobsPagePage.js +7 -7
- package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +10 -10
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrEmployeesPagePage.js +9 -9
- package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +13 -13
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrPayrollPagePage.js +10 -10
- package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +9 -9
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +3 -3
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +2 -2
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +11 -11
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +7 -7
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js +4 -4
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +9 -9
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPagePage.js +10 -10
- package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +11 -11
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +5 -5
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +7 -7
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +3 -3
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +7 -7
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +11 -11
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +11 -11
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +6 -6
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +6 -6
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +7 -7
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +2 -2
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +15 -15
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +10 -10
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +5 -5
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +6 -6
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +6 -6
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +4 -4
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +4 -4
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +1 -1
- package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +15 -15
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +4 -4
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +8 -8
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +14 -14
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +6 -6
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +20 -20
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +3 -3
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
- package/package.json +1 -1
|
@@ -20,7 +20,7 @@ function d() {
|
|
|
20
20
|
className: "text-2xl font-semibold",
|
|
21
21
|
children: "Team Analytics"
|
|
22
22
|
}), /* @__PURE__ */ i("p", {
|
|
23
|
-
className: "text-sm text-
|
|
23
|
+
className: "text-sm text-text-secondary",
|
|
24
24
|
children: "Performance and productivity metrics across teams"
|
|
25
25
|
})] }),
|
|
26
26
|
/* @__PURE__ */ a("div", {
|
|
@@ -31,7 +31,7 @@ function d() {
|
|
|
31
31
|
children: [/* @__PURE__ */ i(u, {
|
|
32
32
|
className: "text-sm font-medium",
|
|
33
33
|
children: "Total Teams"
|
|
34
|
-
}), /* @__PURE__ */ i(r, { className: "h-4 w-4 text-
|
|
34
|
+
}), /* @__PURE__ */ i(r, { className: "h-4 w-4 text-text-secondary" })]
|
|
35
35
|
}), /* @__PURE__ */ i(c, { children: /* @__PURE__ */ i("div", {
|
|
36
36
|
className: "text-2xl font-bold",
|
|
37
37
|
children: d.length
|
|
@@ -41,7 +41,7 @@ function d() {
|
|
|
41
41
|
children: [/* @__PURE__ */ i(u, {
|
|
42
42
|
className: "text-sm font-medium",
|
|
43
43
|
children: "Total Members"
|
|
44
|
-
}), /* @__PURE__ */ i(r, { className: "h-4 w-4 text-
|
|
44
|
+
}), /* @__PURE__ */ i(r, { className: "h-4 w-4 text-text-secondary" })]
|
|
45
45
|
}), /* @__PURE__ */ i(c, { children: /* @__PURE__ */ i("div", {
|
|
46
46
|
className: "text-2xl font-bold",
|
|
47
47
|
children: d.reduce((e, t) => e + t.memberCount, 0)
|
|
@@ -51,7 +51,7 @@ function d() {
|
|
|
51
51
|
children: [/* @__PURE__ */ i(u, {
|
|
52
52
|
className: "text-sm font-medium",
|
|
53
53
|
children: "Active Projects"
|
|
54
|
-
}), /* @__PURE__ */ i(n, { className: "h-4 w-4 text-
|
|
54
|
+
}), /* @__PURE__ */ i(n, { className: "h-4 w-4 text-text-secondary" })]
|
|
55
55
|
}), /* @__PURE__ */ i(c, { children: /* @__PURE__ */ i("div", {
|
|
56
56
|
className: "text-2xl font-bold",
|
|
57
57
|
children: m.reduce((e, t) => e + t.activeProjects, 0)
|
|
@@ -68,9 +68,9 @@ function d() {
|
|
|
68
68
|
children: e.name
|
|
69
69
|
}),
|
|
70
70
|
/* @__PURE__ */ i("div", {
|
|
71
|
-
className: "flex-1 h-4 bg-
|
|
71
|
+
className: "flex-1 h-4 bg-bg-sunken rounded overflow-hidden",
|
|
72
72
|
children: /* @__PURE__ */ i("div", {
|
|
73
|
-
className: "h-4 bg-primary rounded",
|
|
73
|
+
className: "h-4 bg-action-primary-bg rounded",
|
|
74
74
|
style: { width: `${Math.round(e.memberCount / h * 100)}%` }
|
|
75
75
|
})
|
|
76
76
|
}),
|
|
@@ -82,7 +82,7 @@ function d() {
|
|
|
82
82
|
}, e.id))
|
|
83
83
|
})] }),
|
|
84
84
|
/* @__PURE__ */ a(s, { children: [/* @__PURE__ */ i(l, { children: /* @__PURE__ */ i(u, { children: "Team Performance Overview" }) }), /* @__PURE__ */ a(c, { children: [/* @__PURE__ */ a("div", {
|
|
85
|
-
className: "grid grid-cols-5 gap-2 text-xs font-medium text-
|
|
85
|
+
className: "grid grid-cols-5 gap-2 text-xs font-medium text-text-secondary border-b pb-2 mb-2",
|
|
86
86
|
children: [
|
|
87
87
|
/* @__PURE__ */ i("span", { children: "Team" }),
|
|
88
88
|
/* @__PURE__ */ i("span", { children: "Department" }),
|
|
@@ -107,7 +107,7 @@ function d() {
|
|
|
107
107
|
children: e.name
|
|
108
108
|
}),
|
|
109
109
|
/* @__PURE__ */ i("span", {
|
|
110
|
-
className: "text-
|
|
110
|
+
className: "text-text-secondary",
|
|
111
111
|
children: e.department
|
|
112
112
|
}),
|
|
113
113
|
/* @__PURE__ */ a("div", {
|
|
@@ -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-
|
|
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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"}
|
|
@@ -6,7 +6,7 @@ import { Badge as s, Card as c, CardContent as l, CardHeader as u, CardTitle as
|
|
|
6
6
|
function f() {
|
|
7
7
|
let { teams: f, employees: p, projects: m } = e(), h = f[0];
|
|
8
8
|
if (!h) return /* @__PURE__ */ a("div", {
|
|
9
|
-
className: "p-6 text-
|
|
9
|
+
className: "p-6 text-text-secondary",
|
|
10
10
|
children: "No team found."
|
|
11
11
|
});
|
|
12
12
|
let g = p.filter((e) => h.members.includes(e.id)), _ = m.filter((e) => e.teamId === h.id);
|
|
@@ -19,7 +19,7 @@ function f() {
|
|
|
19
19
|
className: "text-2xl font-semibold",
|
|
20
20
|
children: h.name
|
|
21
21
|
}), /* @__PURE__ */ a("p", {
|
|
22
|
-
className: "text-sm text-
|
|
22
|
+
className: "text-sm text-text-secondary",
|
|
23
23
|
children: h.description
|
|
24
24
|
})] }), /* @__PURE__ */ a(s, {
|
|
25
25
|
variant: h.status === "active" ? "default" : "secondary",
|
|
@@ -32,13 +32,13 @@ function f() {
|
|
|
32
32
|
/* @__PURE__ */ a(c, { children: /* @__PURE__ */ o(l, {
|
|
33
33
|
className: "p-4 text-center",
|
|
34
34
|
children: [
|
|
35
|
-
/* @__PURE__ */ a(i, { className: "h-5 w-5 mx-auto text-
|
|
35
|
+
/* @__PURE__ */ a(i, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
36
36
|
/* @__PURE__ */ a("p", {
|
|
37
37
|
className: "text-lg font-bold",
|
|
38
38
|
children: h.memberCount
|
|
39
39
|
}),
|
|
40
40
|
/* @__PURE__ */ a("p", {
|
|
41
|
-
className: "text-xs text-
|
|
41
|
+
className: "text-xs text-text-secondary",
|
|
42
42
|
children: "Members"
|
|
43
43
|
})
|
|
44
44
|
]
|
|
@@ -46,13 +46,13 @@ function f() {
|
|
|
46
46
|
/* @__PURE__ */ a(c, { children: /* @__PURE__ */ o(l, {
|
|
47
47
|
className: "p-4 text-center",
|
|
48
48
|
children: [
|
|
49
|
-
/* @__PURE__ */ a(n, { className: "h-5 w-5 mx-auto text-
|
|
49
|
+
/* @__PURE__ */ a(n, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
50
50
|
/* @__PURE__ */ a("p", {
|
|
51
51
|
className: "text-lg font-bold",
|
|
52
52
|
children: h.projectCount
|
|
53
53
|
}),
|
|
54
54
|
/* @__PURE__ */ a("p", {
|
|
55
|
-
className: "text-xs text-
|
|
55
|
+
className: "text-xs text-text-secondary",
|
|
56
56
|
children: "Projects"
|
|
57
57
|
})
|
|
58
58
|
]
|
|
@@ -66,7 +66,7 @@ function f() {
|
|
|
66
66
|
children: h.leadName
|
|
67
67
|
}),
|
|
68
68
|
/* @__PURE__ */ a("p", {
|
|
69
|
-
className: "text-xs text-
|
|
69
|
+
className: "text-xs text-text-secondary",
|
|
70
70
|
children: "Lead"
|
|
71
71
|
})
|
|
72
72
|
]
|
|
@@ -74,13 +74,13 @@ function f() {
|
|
|
74
74
|
/* @__PURE__ */ a(c, { children: /* @__PURE__ */ o(l, {
|
|
75
75
|
className: "p-4 text-center",
|
|
76
76
|
children: [
|
|
77
|
-
/* @__PURE__ */ a(t, { className: "h-5 w-5 mx-auto text-
|
|
77
|
+
/* @__PURE__ */ a(t, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
78
78
|
/* @__PURE__ */ a("p", {
|
|
79
79
|
className: "text-lg font-bold",
|
|
80
80
|
children: h.createdAt
|
|
81
81
|
}),
|
|
82
82
|
/* @__PURE__ */ a("p", {
|
|
83
|
-
className: "text-xs text-
|
|
83
|
+
className: "text-xs text-text-secondary",
|
|
84
84
|
children: "Created"
|
|
85
85
|
})
|
|
86
86
|
]
|
|
@@ -88,7 +88,7 @@ function f() {
|
|
|
88
88
|
]
|
|
89
89
|
}),
|
|
90
90
|
/* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a(u, { children: /* @__PURE__ */ a(d, { children: "Team Members" }) }), /* @__PURE__ */ o(l, { children: [/* @__PURE__ */ o("div", {
|
|
91
|
-
className: "grid grid-cols-4 gap-2 text-xs font-medium text-
|
|
91
|
+
className: "grid grid-cols-4 gap-2 text-xs font-medium text-text-secondary border-b pb-2 mb-2",
|
|
92
92
|
children: [
|
|
93
93
|
/* @__PURE__ */ a("span", { children: "Name" }),
|
|
94
94
|
/* @__PURE__ */ a("span", { children: "Position" }),
|
|
@@ -113,7 +113,7 @@ function f() {
|
|
|
113
113
|
]
|
|
114
114
|
}),
|
|
115
115
|
/* @__PURE__ */ a("span", {
|
|
116
|
-
className: "text-
|
|
116
|
+
className: "text-text-secondary",
|
|
117
117
|
children: e.position
|
|
118
118
|
}),
|
|
119
119
|
/* @__PURE__ */ o("div", {
|
|
@@ -138,7 +138,7 @@ function f() {
|
|
|
138
138
|
className: "text-sm font-medium",
|
|
139
139
|
children: e.name
|
|
140
140
|
}), /* @__PURE__ */ o("p", {
|
|
141
|
-
className: "text-xs text-
|
|
141
|
+
className: "text-xs text-text-secondary",
|
|
142
142
|
children: [
|
|
143
143
|
e.startDate,
|
|
144
144
|
" — ",
|
|
@@ -148,9 +148,9 @@ function f() {
|
|
|
148
148
|
className: "flex items-center gap-2",
|
|
149
149
|
children: [
|
|
150
150
|
/* @__PURE__ */ a("div", {
|
|
151
|
-
className: "w-24 h-2 bg-
|
|
151
|
+
className: "w-24 h-2 bg-bg-sunken rounded overflow-hidden",
|
|
152
152
|
children: /* @__PURE__ */ a("div", {
|
|
153
|
-
className: "h-2 bg-primary rounded",
|
|
153
|
+
className: "h-2 bg-action-primary-bg rounded",
|
|
154
154
|
style: { width: `${e.progress}%` }
|
|
155
155
|
})
|
|
156
156
|
}),
|
|
@@ -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-
|
|
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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"}
|
|
@@ -13,12 +13,12 @@ function u() {
|
|
|
13
13
|
className: "text-2xl font-semibold",
|
|
14
14
|
children: "Team Directory"
|
|
15
15
|
}), /* @__PURE__ */ i("p", {
|
|
16
|
-
className: "text-sm text-
|
|
16
|
+
className: "text-sm text-text-secondary",
|
|
17
17
|
children: "Browse all teams in the organization"
|
|
18
18
|
})] }),
|
|
19
19
|
/* @__PURE__ */ a("div", {
|
|
20
20
|
className: "relative max-w-sm",
|
|
21
|
-
children: [/* @__PURE__ */ i(n, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-
|
|
21
|
+
children: [/* @__PURE__ */ i(n, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ i(l, {
|
|
22
22
|
placeholder: "Search teams...",
|
|
23
23
|
className: "pl-9",
|
|
24
24
|
value: d,
|
|
@@ -28,7 +28,7 @@ function u() {
|
|
|
28
28
|
/* @__PURE__ */ i(s, { children: /* @__PURE__ */ a(c, {
|
|
29
29
|
className: "p-0",
|
|
30
30
|
children: [/* @__PURE__ */ a("div", {
|
|
31
|
-
className: "grid grid-cols-6 gap-2 text-xs font-medium text-
|
|
31
|
+
className: "grid grid-cols-6 gap-2 text-xs font-medium text-text-secondary p-4 border-b",
|
|
32
32
|
children: [
|
|
33
33
|
/* @__PURE__ */ i("span", { children: "Team" }),
|
|
34
34
|
/* @__PURE__ */ i("span", { children: "Description" }),
|
|
@@ -44,19 +44,19 @@ function u() {
|
|
|
44
44
|
})
|
|
45
45
|
]
|
|
46
46
|
}), p.map((e) => /* @__PURE__ */ a("div", {
|
|
47
|
-
className: "grid grid-cols-6 gap-2 py-3 px-4 border-b last:border-0 text-sm hover:bg-
|
|
47
|
+
className: "grid grid-cols-6 gap-2 py-3 px-4 border-b last:border-0 text-sm hover:bg-bg-sunken/50",
|
|
48
48
|
children: [
|
|
49
49
|
/* @__PURE__ */ i("span", {
|
|
50
50
|
className: "font-medium",
|
|
51
51
|
children: e.name
|
|
52
52
|
}),
|
|
53
53
|
/* @__PURE__ */ i("span", {
|
|
54
|
-
className: "text-
|
|
54
|
+
className: "text-text-secondary truncate",
|
|
55
55
|
children: e.description
|
|
56
56
|
}),
|
|
57
57
|
/* @__PURE__ */ i("span", { children: e.department }),
|
|
58
58
|
/* @__PURE__ */ i("span", {
|
|
59
|
-
className: "text-
|
|
59
|
+
className: "text-text-secondary",
|
|
60
60
|
children: e.leadName
|
|
61
61
|
}),
|
|
62
62
|
/* @__PURE__ */ a("span", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TeamsTeamDirectoryPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/TeamsTeamDirectoryPagePage.tsx"],"sourcesContent":["import { Badge, Card, CardContent, Input } from '@burdenoff/fe-libs/ui';\nimport { Search, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\nimport { useState } from 'react';\n\nexport function TeamsTeamDirectoryPagePage() {\n const { teams } = useCrewFoundryStore();\n const [search, setSearch] = useState('');\n const filtered = teams.filter((t) =>\n `${t.name} ${t.department} ${t.leadName}`.toLowerCase().includes(search.toLowerCase())\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Team Directory</h1>\n <p className=\"text-sm text-
|
|
1
|
+
{"version":3,"file":"TeamsTeamDirectoryPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/TeamsTeamDirectoryPagePage.tsx"],"sourcesContent":["import { Badge, Card, CardContent, Input } from '@burdenoff/fe-libs/ui';\nimport { Search, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\nimport { useState } from 'react';\n\nexport function TeamsTeamDirectoryPagePage() {\n const { teams } = useCrewFoundryStore();\n const [search, setSearch] = useState('');\n const filtered = teams.filter((t) =>\n `${t.name} ${t.department} ${t.leadName}`.toLowerCase().includes(search.toLowerCase())\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Team Directory</h1>\n <p className=\"text-sm text-text-secondary\">Browse all teams in the organization</p>\n </div>\n <div className=\"relative max-w-sm\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder=\"Search teams...\"\n className=\"pl-9\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n />\n </div>\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"grid grid-cols-6 gap-2 text-xs font-medium text-text-secondary p-4 border-b\">\n <span>Team</span>\n <span>Description</span>\n <span>Department</span>\n <span>Lead</span>\n <span className=\"text-right\">Members</span>\n <span className=\"text-center\">Status</span>\n </div>\n {filtered.map((team) => (\n <div\n key={team.id}\n className=\"grid grid-cols-6 gap-2 py-3 px-4 border-b last:border-0 text-sm hover:bg-bg-sunken/50\"\n >\n <span className=\"font-medium\">{team.name}</span>\n <span className=\"text-text-secondary truncate\">{team.description}</span>\n <span>{team.department}</span>\n <span className=\"text-text-secondary\">{team.leadName}</span>\n <span className=\"text-right flex items-center justify-end gap-1\">\n <Users className=\"h-3 w-3\" />\n {team.memberCount}\n </span>\n <div className=\"text-center\">\n <Badge\n variant={team.status === 'active' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {team.status}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":";;;;;;AAKA,SAAgB,IAA6B;CAC3C,IAAM,EAAE,aAAU,GAAqB,EACjC,CAAC,GAAQ,KAAa,EAAS,GAAG,EAClC,IAAW,EAAM,QAAQ,MAC7B,GAAG,EAAE,KAAK,GAAG,EAAE,WAAW,GAAG,EAAE,WAAW,aAAa,CAAC,SAAS,EAAO,aAAa,CAAC,CACvF;AAED,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,WAAU;cAAyB;IAAmB,CAAA,EAC1D,kBAAC,KAAD;IAAG,WAAU;cAA8B;IAAwC,CAAA,CAC/E,EAAA,CAAA;GACN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD,EAAQ,WAAU,wEAAyE,CAAA,EAC3F,kBAAC,GAAD;KACE,aAAY;KACZ,WAAU;KACV,OAAO;KACP,WAAW,MAAM,EAAU,EAAE,OAAO,MAAM;KAC1C,CAAA,CACE;;GACN,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;IAAa,WAAU;cAAvB,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,QAAD,EAAA,UAAM,QAAW,CAAA;MACjB,kBAAC,QAAD,EAAA,UAAM,eAAkB,CAAA;MACxB,kBAAC,QAAD,EAAA,UAAM,cAAiB,CAAA;MACvB,kBAAC,QAAD,EAAA,UAAM,QAAW,CAAA;MACjB,kBAAC,QAAD;OAAM,WAAU;iBAAa;OAAc,CAAA;MAC3C,kBAAC,QAAD;OAAM,WAAU;iBAAc;OAAa,CAAA;MACvC;QACL,EAAS,KAAK,MACb,kBAAC,OAAD;KAEE,WAAU;eAFZ;MAIE,kBAAC,QAAD;OAAM,WAAU;iBAAe,EAAK;OAAY,CAAA;MAChD,kBAAC,QAAD;OAAM,WAAU;iBAAgC,EAAK;OAAmB,CAAA;MACxE,kBAAC,QAAD,EAAA,UAAO,EAAK,YAAkB,CAAA;MAC9B,kBAAC,QAAD;OAAM,WAAU;iBAAuB,EAAK;OAAgB,CAAA;MAC5D,kBAAC,QAAD;OAAM,WAAU;iBAAhB,CACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA,EAC5B,EAAK,YACD;;MACP,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,GAAD;QACE,SAAS,EAAK,WAAW,WAAW,YAAY;QAChD,WAAU;kBAET,EAAK;QACA,CAAA;OACJ,CAAA;MACF;OAnBC,EAAK,GAmBN,CACN,CACU;OACT,CAAA;GACH"}
|
|
@@ -15,7 +15,7 @@ function T() {
|
|
|
15
15
|
className: "text-2xl font-semibold",
|
|
16
16
|
children: "Team Settings"
|
|
17
17
|
}), /* @__PURE__ */ f("p", {
|
|
18
|
-
className: "text-sm text-
|
|
18
|
+
className: "text-sm text-text-secondary",
|
|
19
19
|
children: ["Configure settings for ", D.name]
|
|
20
20
|
})] }), /* @__PURE__ */ f(m, { children: [/* @__PURE__ */ d(i, { className: "h-4 w-4 mr-1" }), "Save Changes"] })]
|
|
21
21
|
}),
|
|
@@ -25,7 +25,7 @@ function T() {
|
|
|
25
25
|
/* @__PURE__ */ d(h, { children: /* @__PURE__ */ f(g, {
|
|
26
26
|
className: "flex items-center gap-3 pt-6",
|
|
27
27
|
children: [/* @__PURE__ */ d(u, { className: "h-5 w-5 text-blue-500" }), /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
|
|
28
|
-
className: "text-xs text-
|
|
28
|
+
className: "text-xs text-text-secondary",
|
|
29
29
|
children: "Members"
|
|
30
30
|
}), /* @__PURE__ */ d("p", {
|
|
31
31
|
className: "text-lg font-bold",
|
|
@@ -35,7 +35,7 @@ function T() {
|
|
|
35
35
|
/* @__PURE__ */ d(h, { children: /* @__PURE__ */ f(g, {
|
|
36
36
|
className: "flex items-center gap-3 pt-6",
|
|
37
37
|
children: [/* @__PURE__ */ d(a, { className: "h-5 w-5 text-purple-500" }), /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
|
|
38
|
-
className: "text-xs text-
|
|
38
|
+
className: "text-xs text-text-secondary",
|
|
39
39
|
children: "Active Projects"
|
|
40
40
|
}), /* @__PURE__ */ d("p", {
|
|
41
41
|
className: "text-lg font-bold",
|
|
@@ -45,7 +45,7 @@ function T() {
|
|
|
45
45
|
/* @__PURE__ */ d(h, { children: /* @__PURE__ */ f(g, {
|
|
46
46
|
className: "flex items-center gap-3 pt-6",
|
|
47
47
|
children: [/* @__PURE__ */ d(o, { className: "h-5 w-5 text-green-500" }), /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
|
|
48
|
-
className: "text-xs text-
|
|
48
|
+
className: "text-xs text-text-secondary",
|
|
49
49
|
children: "Visibility"
|
|
50
50
|
}), /* @__PURE__ */ d("p", {
|
|
51
51
|
className: "text-lg font-bold",
|
|
@@ -95,14 +95,14 @@ function T() {
|
|
|
95
95
|
children: [/* @__PURE__ */ d(x, { children: "Department" }), /* @__PURE__ */ d(b, {
|
|
96
96
|
value: D.department,
|
|
97
97
|
disabled: !0,
|
|
98
|
-
className: "bg-
|
|
98
|
+
className: "bg-bg-sunken"
|
|
99
99
|
})]
|
|
100
100
|
}), /* @__PURE__ */ f("div", {
|
|
101
101
|
className: "space-y-2",
|
|
102
102
|
children: [/* @__PURE__ */ d(x, { children: "Team Lead" }), /* @__PURE__ */ d(b, {
|
|
103
103
|
value: D.leadName,
|
|
104
104
|
disabled: !0,
|
|
105
|
-
className: "bg-
|
|
105
|
+
className: "bg-bg-sunken"
|
|
106
106
|
})]
|
|
107
107
|
})]
|
|
108
108
|
})
|
|
@@ -124,7 +124,7 @@ function T() {
|
|
|
124
124
|
children: [/* @__PURE__ */ f("div", {
|
|
125
125
|
className: "flex items-center gap-3",
|
|
126
126
|
children: [/* @__PURE__ */ f("div", {
|
|
127
|
-
className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-
|
|
127
|
+
className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-bg-sunken text-xs font-medium",
|
|
128
128
|
children: [e.firstName[0], e.lastName[0]]
|
|
129
129
|
}), /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ f("div", {
|
|
130
130
|
className: "flex items-center gap-2",
|
|
@@ -140,7 +140,7 @@ function T() {
|
|
|
140
140
|
children: "Lead"
|
|
141
141
|
})]
|
|
142
142
|
}), /* @__PURE__ */ d("p", {
|
|
143
|
-
className: "text-xs text-
|
|
143
|
+
className: "text-xs text-text-secondary",
|
|
144
144
|
children: e.position
|
|
145
145
|
})] })]
|
|
146
146
|
}), /* @__PURE__ */ f("div", {
|
|
@@ -152,7 +152,7 @@ function T() {
|
|
|
152
152
|
}), e.id !== D.leadId && /* @__PURE__ */ d(m, {
|
|
153
153
|
variant: "ghost",
|
|
154
154
|
size: "sm",
|
|
155
|
-
className: "h-7 w-7 p-0 text-
|
|
155
|
+
className: "h-7 w-7 p-0 text-text-secondary hover:text-status-error-text",
|
|
156
156
|
children: /* @__PURE__ */ d(c, { className: "h-3 w-3" })
|
|
157
157
|
})]
|
|
158
158
|
})]
|
|
@@ -172,12 +172,12 @@ function T() {
|
|
|
172
172
|
className: "text-sm font-medium",
|
|
173
173
|
children: "Private Team"
|
|
174
174
|
}), /* @__PURE__ */ d("p", {
|
|
175
|
-
className: "text-xs text-
|
|
175
|
+
className: "text-xs text-text-secondary",
|
|
176
176
|
children: "Only invited members can see this team"
|
|
177
177
|
})]
|
|
178
178
|
}), /* @__PURE__ */ f("div", {
|
|
179
179
|
className: "flex items-center gap-2",
|
|
180
|
-
children: [/* @__PURE__ */ d(r, { className: "h-4 w-4 text-
|
|
180
|
+
children: [/* @__PURE__ */ d(r, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ d(C, {
|
|
181
181
|
checked: R,
|
|
182
182
|
onCheckedChange: z
|
|
183
183
|
})]
|
|
@@ -192,7 +192,7 @@ function T() {
|
|
|
192
192
|
className: "text-sm font-medium",
|
|
193
193
|
children: "Auto-Approve Join Requests"
|
|
194
194
|
}), /* @__PURE__ */ d("p", {
|
|
195
|
-
className: "text-xs text-
|
|
195
|
+
className: "text-xs text-text-secondary",
|
|
196
196
|
children: "Automatically accept when employees request to join"
|
|
197
197
|
})]
|
|
198
198
|
}), /* @__PURE__ */ d(C, {
|
|
@@ -216,11 +216,11 @@ function T() {
|
|
|
216
216
|
className: "flex items-center justify-between",
|
|
217
217
|
children: [/* @__PURE__ */ f("div", {
|
|
218
218
|
className: "flex items-center gap-2",
|
|
219
|
-
children: [/* @__PURE__ */ d(n, { className: "h-4 w-4 text-
|
|
219
|
+
children: [/* @__PURE__ */ d(n, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
|
|
220
220
|
className: "text-xs font-medium",
|
|
221
221
|
children: "New Member Alerts"
|
|
222
222
|
}), /* @__PURE__ */ d("p", {
|
|
223
|
-
className: "text-[10px] text-
|
|
223
|
+
className: "text-[10px] text-text-secondary",
|
|
224
224
|
children: "Notify when members join or leave"
|
|
225
225
|
})] })]
|
|
226
226
|
}), /* @__PURE__ */ d(C, {
|
|
@@ -233,11 +233,11 @@ function T() {
|
|
|
233
233
|
className: "flex items-center justify-between",
|
|
234
234
|
children: [/* @__PURE__ */ f("div", {
|
|
235
235
|
className: "flex items-center gap-2",
|
|
236
|
-
children: [/* @__PURE__ */ d(n, { className: "h-4 w-4 text-
|
|
236
|
+
children: [/* @__PURE__ */ d(n, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
|
|
237
237
|
className: "text-xs font-medium",
|
|
238
238
|
children: "Weekly Digest"
|
|
239
239
|
}), /* @__PURE__ */ d("p", {
|
|
240
|
-
className: "text-[10px] text-
|
|
240
|
+
className: "text-[10px] text-text-secondary",
|
|
241
241
|
children: "Summary of team activity"
|
|
242
242
|
})] })]
|
|
243
243
|
}), /* @__PURE__ */ d(C, {
|
|
@@ -276,7 +276,7 @@ function T() {
|
|
|
276
276
|
].map((e) => /* @__PURE__ */ f("div", {
|
|
277
277
|
className: "flex items-center justify-between",
|
|
278
278
|
children: [/* @__PURE__ */ d("span", {
|
|
279
|
-
className: "text-
|
|
279
|
+
className: "text-text-secondary text-xs",
|
|
280
280
|
children: e.label
|
|
281
281
|
}), /* @__PURE__ */ d("span", {
|
|
282
282
|
className: "text-xs font-medium",
|
|
@@ -285,14 +285,14 @@ function T() {
|
|
|
285
285
|
}, e.label))
|
|
286
286
|
})] }),
|
|
287
287
|
/* @__PURE__ */ f(h, {
|
|
288
|
-
className: "border-
|
|
288
|
+
className: "border-status-error-border/50",
|
|
289
289
|
children: [/* @__PURE__ */ d(v, { children: /* @__PURE__ */ d(y, {
|
|
290
|
-
className: "text-sm text-
|
|
290
|
+
className: "text-sm text-status-error-text",
|
|
291
291
|
children: "Danger Zone"
|
|
292
292
|
}) }), /* @__PURE__ */ f(g, {
|
|
293
293
|
className: "space-y-3",
|
|
294
294
|
children: [/* @__PURE__ */ d("p", {
|
|
295
|
-
className: "text-xs text-
|
|
295
|
+
className: "text-xs text-text-secondary",
|
|
296
296
|
children: "Archiving a team will remove all members and deactivate associated projects. This action can be reversed by an admin."
|
|
297
297
|
}), /* @__PURE__ */ f(m, {
|
|
298
298
|
variant: "destructive",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TeamsTeamSettingsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/TeamsTeamSettingsPagePage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Input,\n Label,\n Separator,\n Switch,\n Textarea,\n} from '@burdenoff/fe-libs/ui';\nimport {\n Bell,\n Lock,\n Save,\n Settings,\n Shield,\n Trash2,\n UserMinus,\n UserPlus,\n Users,\n} from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function TeamsTeamSettingsPagePage() {\n const { teams, employees } = useCrewFoundryStore();\n const team = teams[0]; // Platform Engineering\n\n const [teamName, setTeamName] = useState(team.name);\n const [description, setDescription] = useState(team.description);\n const [autoApproveJoin, setAutoApproveJoin] = useState(false);\n const [notifyNewMembers, setNotifyNewMembers] = useState(true);\n const [weeklyDigest, setWeeklyDigest] = useState(true);\n const [isPrivate, setIsPrivate] = useState(false);\n\n const teamMembers = employees.filter((e) => team.members.includes(e.id));\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\">Team Settings</h1>\n <p className=\"text-sm text-muted-foreground\">Configure settings for {team.name}</p>\n </div>\n <Button>\n <Save className=\"h-4 w-4 mr-1\" />\n Save Changes\n </Button>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-3\">\n <Card>\n <CardContent className=\"flex items-center gap-3 pt-6\">\n <Users className=\"h-5 w-5 text-blue-500\" />\n <div>\n <p className=\"text-xs text-muted-foreground\">Members</p>\n <p className=\"text-lg font-bold\">{team.memberCount}</p>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"flex items-center gap-3 pt-6\">\n <Settings className=\"h-5 w-5 text-purple-500\" />\n <div>\n <p className=\"text-xs text-muted-foreground\">Active Projects</p>\n <p className=\"text-lg font-bold\">{team.projectCount}</p>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"flex items-center gap-3 pt-6\">\n <Shield className=\"h-5 w-5 text-green-500\" />\n <div>\n <p className=\"text-xs text-muted-foreground\">Visibility</p>\n <p className=\"text-lg font-bold\">{isPrivate ? 'Private' : 'Public'}</p>\n </div>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"grid gap-6 lg:grid-cols-3\">\n <div className=\"lg:col-span-2 space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">General Settings</CardTitle>\n <CardDescription>Basic team information</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"tsName\">Team Name</Label>\n <Input id=\"tsName\" value={teamName} onChange={(e) => setTeamName(e.target.value)} />\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"tsDesc\">Description</Label>\n <Textarea\n id=\"tsDesc\"\n className=\"min-h-[80px]\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n />\n </div>\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"space-y-2\">\n <Label>Department</Label>\n <Input value={team.department} disabled className=\"bg-muted\" />\n </div>\n <div className=\"space-y-2\">\n <Label>Team Lead</Label>\n <Input value={team.leadName} disabled className=\"bg-muted\" />\n </div>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <div>\n <CardTitle className=\"text-base\">Team Members</CardTitle>\n <CardDescription>{teamMembers.length} active members</CardDescription>\n </div>\n <Button size=\"sm\">\n <UserPlus className=\"h-3 w-3 mr-1\" />\n Add Member\n </Button>\n </div>\n </CardHeader>\n <CardContent className=\"p-0\">\n {teamMembers.map((member, i) => (\n <div\n key={member.id}\n className={`flex items-center justify-between px-6 py-3 ${i < teamMembers.length - 1 ? 'border-b' : ''}`}\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-muted text-xs font-medium\">\n {member.firstName[0]}\n {member.lastName[0]}\n </div>\n <div>\n <div className=\"flex items-center gap-2\">\n <p className=\"text-sm font-medium\">\n {member.firstName} {member.lastName}\n </p>\n {member.id === team.leadId && <Badge className=\"text-[10px]\">Lead</Badge>}\n </div>\n <p className=\"text-xs text-muted-foreground\">{member.position}</p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <Badge\n variant={member.status === 'active' ? 'secondary' : 'outline'}\n className=\"text-[10px]\"\n >\n {member.status}\n </Badge>\n {member.id !== team.leadId && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 w-7 p-0 text-muted-foreground hover:text-destructive\"\n >\n <UserMinus className=\"h-3 w-3\" />\n </Button>\n )}\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Permissions & Access</CardTitle>\n <CardDescription>Control team visibility and member permissions</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-0.5\">\n <p className=\"text-sm font-medium\">Private Team</p>\n <p className=\"text-xs text-muted-foreground\">\n Only invited members can see this team\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <Lock className=\"h-4 w-4 text-muted-foreground\" />\n <Switch checked={isPrivate} onCheckedChange={setIsPrivate} />\n </div>\n </div>\n <Separator />\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-0.5\">\n <p className=\"text-sm font-medium\">Auto-Approve Join Requests</p>\n <p className=\"text-xs text-muted-foreground\">\n Automatically accept when employees request to join\n </p>\n </div>\n <Switch checked={autoApproveJoin} onCheckedChange={setAutoApproveJoin} />\n </div>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Notification Preferences</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Bell className=\"h-4 w-4 text-muted-foreground\" />\n <div>\n <p className=\"text-xs font-medium\">New Member Alerts</p>\n <p className=\"text-[10px] text-muted-foreground\">\n Notify when members join or leave\n </p>\n </div>\n </div>\n <Switch checked={notifyNewMembers} onCheckedChange={setNotifyNewMembers} />\n </div>\n <Separator />\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Bell className=\"h-4 w-4 text-muted-foreground\" />\n <div>\n <p className=\"text-xs font-medium\">Weekly Digest</p>\n <p className=\"text-[10px] text-muted-foreground\">Summary of team activity</p>\n </div>\n </div>\n <Switch checked={weeklyDigest} onCheckedChange={setWeeklyDigest} />\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Team Info</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2 text-sm\">\n {[\n { label: 'Created', value: team.createdAt },\n { label: 'Department', value: team.department },\n { label: 'Status', value: team.status },\n { label: 'Projects', value: team.projectCount.toString() },\n { label: 'Members', value: team.memberCount.toString() },\n ].map((item) => (\n <div key={item.label} className=\"flex items-center justify-between\">\n <span className=\"text-muted-foreground text-xs\">{item.label}</span>\n <span className=\"text-xs font-medium\">{item.value}</span>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card className=\"border-destructive/50\">\n <CardHeader>\n <CardTitle className=\"text-sm text-destructive\">Danger Zone</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <p className=\"text-xs text-muted-foreground\">\n Archiving a team will remove all members and deactivate associated projects. This\n action can be reversed by an admin.\n </p>\n <Button variant=\"destructive\" size=\"sm\" className=\"w-full\">\n <Trash2 className=\"h-3 w-3 mr-1\" />\n Archive Team\n </Button>\n </CardContent>\n </Card>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TeamsTeamSettingsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/TeamsTeamSettingsPagePage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Input,\n Label,\n Separator,\n Switch,\n Textarea,\n} from '@burdenoff/fe-libs/ui';\nimport {\n Bell,\n Lock,\n Save,\n Settings,\n Shield,\n Trash2,\n UserMinus,\n UserPlus,\n Users,\n} from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function TeamsTeamSettingsPagePage() {\n const { teams, employees } = useCrewFoundryStore();\n const team = teams[0]; // Platform Engineering\n\n const [teamName, setTeamName] = useState(team.name);\n const [description, setDescription] = useState(team.description);\n const [autoApproveJoin, setAutoApproveJoin] = useState(false);\n const [notifyNewMembers, setNotifyNewMembers] = useState(true);\n const [weeklyDigest, setWeeklyDigest] = useState(true);\n const [isPrivate, setIsPrivate] = useState(false);\n\n const teamMembers = employees.filter((e) => team.members.includes(e.id));\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\">Team Settings</h1>\n <p className=\"text-sm text-text-secondary\">Configure settings for {team.name}</p>\n </div>\n <Button>\n <Save className=\"h-4 w-4 mr-1\" />\n Save Changes\n </Button>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-3\">\n <Card>\n <CardContent className=\"flex items-center gap-3 pt-6\">\n <Users className=\"h-5 w-5 text-blue-500\" />\n <div>\n <p className=\"text-xs text-text-secondary\">Members</p>\n <p className=\"text-lg font-bold\">{team.memberCount}</p>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"flex items-center gap-3 pt-6\">\n <Settings className=\"h-5 w-5 text-purple-500\" />\n <div>\n <p className=\"text-xs text-text-secondary\">Active Projects</p>\n <p className=\"text-lg font-bold\">{team.projectCount}</p>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"flex items-center gap-3 pt-6\">\n <Shield className=\"h-5 w-5 text-green-500\" />\n <div>\n <p className=\"text-xs text-text-secondary\">Visibility</p>\n <p className=\"text-lg font-bold\">{isPrivate ? 'Private' : 'Public'}</p>\n </div>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"grid gap-6 lg:grid-cols-3\">\n <div className=\"lg:col-span-2 space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">General Settings</CardTitle>\n <CardDescription>Basic team information</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"tsName\">Team Name</Label>\n <Input id=\"tsName\" value={teamName} onChange={(e) => setTeamName(e.target.value)} />\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"tsDesc\">Description</Label>\n <Textarea\n id=\"tsDesc\"\n className=\"min-h-[80px]\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n />\n </div>\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"space-y-2\">\n <Label>Department</Label>\n <Input value={team.department} disabled className=\"bg-bg-sunken\" />\n </div>\n <div className=\"space-y-2\">\n <Label>Team Lead</Label>\n <Input value={team.leadName} disabled className=\"bg-bg-sunken\" />\n </div>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <div>\n <CardTitle className=\"text-base\">Team Members</CardTitle>\n <CardDescription>{teamMembers.length} active members</CardDescription>\n </div>\n <Button size=\"sm\">\n <UserPlus className=\"h-3 w-3 mr-1\" />\n Add Member\n </Button>\n </div>\n </CardHeader>\n <CardContent className=\"p-0\">\n {teamMembers.map((member, i) => (\n <div\n key={member.id}\n className={`flex items-center justify-between px-6 py-3 ${i < teamMembers.length - 1 ? 'border-b' : ''}`}\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-bg-sunken text-xs font-medium\">\n {member.firstName[0]}\n {member.lastName[0]}\n </div>\n <div>\n <div className=\"flex items-center gap-2\">\n <p className=\"text-sm font-medium\">\n {member.firstName} {member.lastName}\n </p>\n {member.id === team.leadId && <Badge className=\"text-[10px]\">Lead</Badge>}\n </div>\n <p className=\"text-xs text-text-secondary\">{member.position}</p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <Badge\n variant={member.status === 'active' ? 'secondary' : 'outline'}\n className=\"text-[10px]\"\n >\n {member.status}\n </Badge>\n {member.id !== team.leadId && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 w-7 p-0 text-text-secondary hover:text-status-error-text\"\n >\n <UserMinus className=\"h-3 w-3\" />\n </Button>\n )}\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Permissions & Access</CardTitle>\n <CardDescription>Control team visibility and member permissions</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-0.5\">\n <p className=\"text-sm font-medium\">Private Team</p>\n <p className=\"text-xs text-text-secondary\">\n Only invited members can see this team\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <Lock className=\"h-4 w-4 text-text-secondary\" />\n <Switch checked={isPrivate} onCheckedChange={setIsPrivate} />\n </div>\n </div>\n <Separator />\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-0.5\">\n <p className=\"text-sm font-medium\">Auto-Approve Join Requests</p>\n <p className=\"text-xs text-text-secondary\">\n Automatically accept when employees request to join\n </p>\n </div>\n <Switch checked={autoApproveJoin} onCheckedChange={setAutoApproveJoin} />\n </div>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Notification Preferences</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Bell className=\"h-4 w-4 text-text-secondary\" />\n <div>\n <p className=\"text-xs font-medium\">New Member Alerts</p>\n <p className=\"text-[10px] text-text-secondary\">\n Notify when members join or leave\n </p>\n </div>\n </div>\n <Switch checked={notifyNewMembers} onCheckedChange={setNotifyNewMembers} />\n </div>\n <Separator />\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Bell className=\"h-4 w-4 text-text-secondary\" />\n <div>\n <p className=\"text-xs font-medium\">Weekly Digest</p>\n <p className=\"text-[10px] text-text-secondary\">Summary of team activity</p>\n </div>\n </div>\n <Switch checked={weeklyDigest} onCheckedChange={setWeeklyDigest} />\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Team Info</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2 text-sm\">\n {[\n { label: 'Created', value: team.createdAt },\n { label: 'Department', value: team.department },\n { label: 'Status', value: team.status },\n { label: 'Projects', value: team.projectCount.toString() },\n { label: 'Members', value: team.memberCount.toString() },\n ].map((item) => (\n <div key={item.label} className=\"flex items-center justify-between\">\n <span className=\"text-text-secondary text-xs\">{item.label}</span>\n <span className=\"text-xs font-medium\">{item.value}</span>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card className=\"border-status-error-border/50\">\n <CardHeader>\n <CardTitle className=\"text-sm text-status-error-text\">Danger Zone</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <p className=\"text-xs text-text-secondary\">\n Archiving a team will remove all members and deactivate associated projects. This\n action can be reversed by an admin.\n </p>\n <Button variant=\"destructive\" size=\"sm\" className=\"w-full\">\n <Trash2 className=\"h-3 w-3 mr-1\" />\n Archive Team\n </Button>\n </CardContent>\n </Card>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ function f() {
|
|
|
15
15
|
className: "text-2xl font-semibold",
|
|
16
16
|
children: m("crewfoundry.teams.title", "Teams")
|
|
17
17
|
}), /* @__PURE__ */ i("p", {
|
|
18
|
-
className: "text-sm text-
|
|
18
|
+
className: "text-sm text-text-secondary",
|
|
19
19
|
children: [
|
|
20
20
|
p.length,
|
|
21
21
|
" ",
|
|
@@ -36,7 +36,7 @@ function f() {
|
|
|
36
36
|
children: e.status
|
|
37
37
|
})]
|
|
38
38
|
}), /* @__PURE__ */ r(c, { children: e.description })] }), /* @__PURE__ */ i(s, { children: [/* @__PURE__ */ i("div", {
|
|
39
|
-
className: "grid grid-cols-2 gap-2 text-sm text-
|
|
39
|
+
className: "grid grid-cols-2 gap-2 text-sm text-text-secondary mb-2",
|
|
40
40
|
children: [/* @__PURE__ */ i("span", {
|
|
41
41
|
className: "flex items-center gap-1",
|
|
42
42
|
children: [
|
|
@@ -55,7 +55,7 @@ function f() {
|
|
|
55
55
|
]
|
|
56
56
|
})]
|
|
57
57
|
}), /* @__PURE__ */ i("div", {
|
|
58
|
-
className: "text-xs text-
|
|
58
|
+
className: "text-xs text-text-secondary",
|
|
59
59
|
children: [
|
|
60
60
|
/* @__PURE__ */ i("span", { children: [
|
|
61
61
|
m("crewfoundry.teams.card.lead", "Lead"),
|