@burdenoff/microfe-planmagnet 2026.715.3 → 2026.719.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/components/Button.d.ts +8 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.stories.d.ts +10 -0
- package/dist/components/Button.stories.d.ts.map +1 -0
- package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoot.js +98 -173
- package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.js +43 -67
- package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
- package/dist/planmagnet/pages/ProductsCreateProductPagePage.js +1 -1
- package/dist/planmagnet/pages/ProductsCreateProductPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js +1 -1
- package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsEditProductPagePage.js +1 -1
- package/dist/planmagnet/pages/ProductsEditProductPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsEditReleasePagePage.js +1 -1
- package/dist/planmagnet/pages/ProductsEditReleasePagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js +1 -1
- package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsFeaturesPagePage.js +1 -1
- package/dist/planmagnet/pages/ProductsFeaturesPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js +2 -2
- package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.js +1 -1
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsProductsPagePage.js +1 -1
- package/dist/planmagnet/pages/ProductsProductsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsReleasesPagePage.js +1 -1
- package/dist/planmagnet/pages/ProductsReleasesPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js +1 -1
- package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js +1 -1
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js +1 -1
- package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js.map +1 -1
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.js +75 -86
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksCreateTaskPagePage.js +1 -1
- package/dist/planmagnet/pages/TasksCreateTaskPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksEditTaskPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TasksEditTaskPagePage.js +6 -10
- package/dist/planmagnet/pages/TasksEditTaskPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksTaskDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TasksTaskDetailPagePage.js +4 -8
- package/dist/planmagnet/pages/TasksTaskDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksTasksPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TasksTasksPagePage.js +8 -9
- package/dist/planmagnet/pages/TasksTasksPagePage.js.map +1 -1
- package/package.json +14 -2
- package/dist/planmagnet/pages/CollaborationCollaborationPagePage.d.ts +0 -2
- package/dist/planmagnet/pages/CollaborationCollaborationPagePage.d.ts.map +0 -1
- package/dist/planmagnet/pages/CollaborationCollaborationPagePage.js +0 -110
- package/dist/planmagnet/pages/CollaborationCollaborationPagePage.js.map +0 -1
- package/dist/planmagnet/pages/CollaborationCreateChannelPagePage.d.ts +0 -2
- package/dist/planmagnet/pages/CollaborationCreateChannelPagePage.d.ts.map +0 -1
- package/dist/planmagnet/pages/CollaborationCreateChannelPagePage.js +0 -96
- package/dist/planmagnet/pages/CollaborationCreateChannelPagePage.js.map +0 -1
- package/dist/planmagnet/pages/CollaborationFilesPagePage.d.ts +0 -2
- package/dist/planmagnet/pages/CollaborationFilesPagePage.d.ts.map +0 -1
- package/dist/planmagnet/pages/CollaborationFilesPagePage.js +0 -112
- package/dist/planmagnet/pages/CollaborationFilesPagePage.js.map +0 -1
- package/dist/planmagnet/pages/CollaborationMessagesPagePage.d.ts +0 -2
- package/dist/planmagnet/pages/CollaborationMessagesPagePage.d.ts.map +0 -1
- package/dist/planmagnet/pages/CollaborationMessagesPagePage.js +0 -141
- package/dist/planmagnet/pages/CollaborationMessagesPagePage.js.map +0 -1
- package/dist/planmagnet/pages/CollaborationNewDiscussionPagePage.d.ts +0 -2
- package/dist/planmagnet/pages/CollaborationNewDiscussionPagePage.d.ts.map +0 -1
- package/dist/planmagnet/pages/CollaborationNewDiscussionPagePage.js +0 -124
- package/dist/planmagnet/pages/CollaborationNewDiscussionPagePage.js.map +0 -1
- package/dist/planmagnet/pages/MeetingsScheduleMeetingPagePage.d.ts +0 -2
- package/dist/planmagnet/pages/MeetingsScheduleMeetingPagePage.d.ts.map +0 -1
- package/dist/planmagnet/pages/MeetingsScheduleMeetingPagePage.js +0 -290
- package/dist/planmagnet/pages/MeetingsScheduleMeetingPagePage.js.map +0 -1
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { usePlanMagnet as e } from "../providers/PlanMagnetProvider.js";
|
|
2
|
-
import { Hash as t, MessageSquare as n } from "lucide-react";
|
|
3
|
-
import { gql as r } from "@apollo/client";
|
|
4
|
-
import { useQuery as i } from "@apollo/client/react";
|
|
5
|
-
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
6
|
-
import { Card as s, CardContent as c } from "@burdenoff/fe-libs/ui";
|
|
7
|
-
//#region src/planmagnet/pages/CollaborationMessagesPagePage.tsx
|
|
8
|
-
var l = r`
|
|
9
|
-
query GetRecentWorkItemsForMessages($workspaceId: ID!, $pagination: PlanmagnetPaginationInput) {
|
|
10
|
-
planmagnetWorkItems(workspaceId: $workspaceId, pagination: $pagination) {
|
|
11
|
-
items {
|
|
12
|
-
id
|
|
13
|
-
key
|
|
14
|
-
title
|
|
15
|
-
status
|
|
16
|
-
priority
|
|
17
|
-
assigneeId
|
|
18
|
-
labels
|
|
19
|
-
tags
|
|
20
|
-
createdAt
|
|
21
|
-
}
|
|
22
|
-
totalCount
|
|
23
|
-
}
|
|
24
|
-
planmagnetProjects(workspaceId: $workspaceId, pagination: $pagination) {
|
|
25
|
-
items {
|
|
26
|
-
id
|
|
27
|
-
name
|
|
28
|
-
key
|
|
29
|
-
}
|
|
30
|
-
totalCount
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
`;
|
|
34
|
-
function u() {
|
|
35
|
-
let { workspaceId: r } = e(), { data: u, loading: d, error: f } = i(l, {
|
|
36
|
-
variables: {
|
|
37
|
-
workspaceId: r,
|
|
38
|
-
pagination: { first: 50 }
|
|
39
|
-
},
|
|
40
|
-
skip: !r
|
|
41
|
-
});
|
|
42
|
-
if (d) return /* @__PURE__ */ a("div", {
|
|
43
|
-
className: "flex items-center justify-center p-12",
|
|
44
|
-
children: /* @__PURE__ */ a("div", { className: "animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full" })
|
|
45
|
-
});
|
|
46
|
-
if (f) return /* @__PURE__ */ o("div", {
|
|
47
|
-
className: "p-6 text-red-500",
|
|
48
|
-
children: ["Error: ", f.message]
|
|
49
|
-
});
|
|
50
|
-
let p = u?.planmagnetWorkItems?.items ?? [], m = u?.planmagnetProjects?.items ?? [];
|
|
51
|
-
new Map(m.map((e) => [e.id, e]));
|
|
52
|
-
let h = p.slice(0, 20).map((e) => ({
|
|
53
|
-
id: e.id,
|
|
54
|
-
key: e.key,
|
|
55
|
-
title: e.title,
|
|
56
|
-
status: e.status,
|
|
57
|
-
priority: e.priority,
|
|
58
|
-
assigneeId: e.assigneeId,
|
|
59
|
-
createdAt: e.createdAt,
|
|
60
|
-
labels: e.labels
|
|
61
|
-
}));
|
|
62
|
-
return /* @__PURE__ */ o("div", {
|
|
63
|
-
className: "space-y-6 p-6",
|
|
64
|
-
children: [/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("h1", {
|
|
65
|
-
className: "text-2xl font-semibold",
|
|
66
|
-
children: "Messages"
|
|
67
|
-
}), /* @__PURE__ */ a("p", {
|
|
68
|
-
className: "text-sm text-muted-foreground",
|
|
69
|
-
children: "Recent activity across all projects"
|
|
70
|
-
})] }), /* @__PURE__ */ o("div", {
|
|
71
|
-
className: "space-y-4",
|
|
72
|
-
children: [h.map((e) => /* @__PURE__ */ a(s, { children: /* @__PURE__ */ a(c, {
|
|
73
|
-
className: "py-3",
|
|
74
|
-
children: /* @__PURE__ */ o("div", {
|
|
75
|
-
className: "flex items-start gap-3",
|
|
76
|
-
children: [/* @__PURE__ */ a("div", {
|
|
77
|
-
className: "h-8 w-8 rounded-full bg-primary/10 flex items-center justify-center text-xs font-medium text-primary shrink-0 mt-0.5",
|
|
78
|
-
children: e.key.slice(0, 2)
|
|
79
|
-
}), /* @__PURE__ */ o("div", {
|
|
80
|
-
className: "flex-1",
|
|
81
|
-
children: [
|
|
82
|
-
/* @__PURE__ */ o("div", {
|
|
83
|
-
className: "flex items-center gap-2",
|
|
84
|
-
children: [
|
|
85
|
-
/* @__PURE__ */ a("span", {
|
|
86
|
-
className: "text-sm font-medium",
|
|
87
|
-
children: e.title
|
|
88
|
-
}),
|
|
89
|
-
/* @__PURE__ */ o("span", {
|
|
90
|
-
className: "text-xs text-muted-foreground flex items-center gap-0.5",
|
|
91
|
-
children: [/* @__PURE__ */ a(t, { className: "h-3 w-3" }), e.key]
|
|
92
|
-
}),
|
|
93
|
-
/* @__PURE__ */ a("span", {
|
|
94
|
-
className: "text-xs text-muted-foreground",
|
|
95
|
-
children: new Date(e.createdAt).toLocaleTimeString([], {
|
|
96
|
-
hour: "2-digit",
|
|
97
|
-
minute: "2-digit"
|
|
98
|
-
})
|
|
99
|
-
})
|
|
100
|
-
]
|
|
101
|
-
}),
|
|
102
|
-
/* @__PURE__ */ o("p", {
|
|
103
|
-
className: "text-sm mt-1 text-muted-foreground",
|
|
104
|
-
children: [
|
|
105
|
-
"Status: ",
|
|
106
|
-
e.status.toLowerCase().replace("_", " "),
|
|
107
|
-
" · Priority:",
|
|
108
|
-
" ",
|
|
109
|
-
e.priority.toLowerCase()
|
|
110
|
-
]
|
|
111
|
-
}),
|
|
112
|
-
/* @__PURE__ */ o("div", {
|
|
113
|
-
className: "flex items-center gap-3 mt-2",
|
|
114
|
-
children: [/* @__PURE__ */ a("div", {
|
|
115
|
-
className: "flex gap-1",
|
|
116
|
-
children: e.labels.slice(0, 3).map((e) => /* @__PURE__ */ a("span", {
|
|
117
|
-
className: "text-xs bg-muted px-1.5 py-0.5 rounded-full",
|
|
118
|
-
children: e
|
|
119
|
-
}, e))
|
|
120
|
-
}), e.assigneeId && /* @__PURE__ */ o("span", {
|
|
121
|
-
className: "text-xs text-primary flex items-center gap-1",
|
|
122
|
-
children: [/* @__PURE__ */ a(n, { className: "h-3 w-3" }), "Assigned"]
|
|
123
|
-
})]
|
|
124
|
-
})
|
|
125
|
-
]
|
|
126
|
-
})]
|
|
127
|
-
})
|
|
128
|
-
}) }, e.id)), h.length === 0 && /* @__PURE__ */ o("div", {
|
|
129
|
-
className: "text-center py-12",
|
|
130
|
-
children: [/* @__PURE__ */ a(n, { className: "h-12 w-12 text-muted-foreground mx-auto mb-3" }), /* @__PURE__ */ a("p", {
|
|
131
|
-
className: "text-sm text-muted-foreground",
|
|
132
|
-
children: "No recent activity. Create work items to see updates here."
|
|
133
|
-
})]
|
|
134
|
-
})]
|
|
135
|
-
})]
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
//#endregion
|
|
139
|
-
export { u as CollaborationMessagesPagePage };
|
|
140
|
-
|
|
141
|
-
//# sourceMappingURL=CollaborationMessagesPagePage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CollaborationMessagesPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/CollaborationMessagesPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent } from '@burdenoff/fe-libs/ui';\nimport { MessageSquare, Hash } from 'lucide-react';\nimport { usePlanMagnet } from '../providers/PlanMagnetProvider';\n\nconst GET_RECENT_WORK_ITEMS = gql`\n query GetRecentWorkItemsForMessages($workspaceId: ID!, $pagination: PlanmagnetPaginationInput) {\n planmagnetWorkItems(workspaceId: $workspaceId, pagination: $pagination) {\n items {\n id\n key\n title\n status\n priority\n assigneeId\n labels\n tags\n createdAt\n }\n totalCount\n }\n planmagnetProjects(workspaceId: $workspaceId, pagination: $pagination) {\n items {\n id\n name\n key\n }\n totalCount\n }\n }\n`;\n\ninterface WorkItemNode {\n id: string;\n key: string;\n title: string;\n status: string;\n priority: string;\n assigneeId: string | null;\n labels: string[];\n tags: string[];\n createdAt: string;\n}\n\ninterface ProjectNode {\n id: string;\n name: string;\n key: string;\n}\n\ninterface MessagesData {\n workItems: { items: WorkItemNode[]; totalCount: number };\n projects: { items: ProjectNode[]; totalCount: number };\n}\n\nexport function CollaborationMessagesPagePage() {\n const { workspaceId } = usePlanMagnet();\n\n const { data, loading, error } = useQuery<MessagesData>(GET_RECENT_WORK_ITEMS, {\n variables: {\n workspaceId,\n pagination: { first: 50 },\n },\n skip: !workspaceId,\n });\n\n if (loading) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <div className=\"animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full\" />\n </div>\n );\n }\n\n if (error) {\n return <div className=\"p-6 text-red-500\">Error: {error.message}</div>;\n }\n\n const workItems = data?.planmagnetWorkItems?.items ?? [];\n const projects = data?.planmagnetProjects?.items ?? [];\n const projectMap = new Map(projects.map((p) => [p.id, p]));\n\n const recentActivity = workItems.slice(0, 20).map((wi) => ({\n id: wi.id,\n key: wi.key,\n title: wi.title,\n status: wi.status,\n priority: wi.priority,\n assigneeId: wi.assigneeId,\n createdAt: wi.createdAt,\n labels: wi.labels,\n }));\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Messages</h1>\n <p className=\"text-sm text-muted-foreground\">Recent activity across all projects</p>\n </div>\n <div className=\"space-y-4\">\n {recentActivity.map((activity) => (\n <Card key={activity.id}>\n <CardContent className=\"py-3\">\n <div className=\"flex items-start gap-3\">\n <div className=\"h-8 w-8 rounded-full bg-primary/10 flex items-center justify-center text-xs font-medium text-primary shrink-0 mt-0.5\">\n {activity.key.slice(0, 2)}\n </div>\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">{activity.title}</span>\n <span className=\"text-xs text-muted-foreground flex items-center gap-0.5\">\n <Hash className=\"h-3 w-3\" />\n {activity.key}\n </span>\n <span className=\"text-xs text-muted-foreground\">\n {new Date(activity.createdAt).toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n })}\n </span>\n </div>\n <p className=\"text-sm mt-1 text-muted-foreground\">\n Status: {activity.status.toLowerCase().replace('_', ' ')} · Priority:{' '}\n {activity.priority.toLowerCase()}\n </p>\n <div className=\"flex items-center gap-3 mt-2\">\n <div className=\"flex gap-1\">\n {activity.labels.slice(0, 3).map((label) => (\n <span key={label} className=\"text-xs bg-muted px-1.5 py-0.5 rounded-full\">\n {label}\n </span>\n ))}\n </div>\n {activity.assigneeId && (\n <span className=\"text-xs text-primary flex items-center gap-1\">\n <MessageSquare className=\"h-3 w-3\" />\n Assigned\n </span>\n )}\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n ))}\n {recentActivity.length === 0 && (\n <div className=\"text-center py-12\">\n <MessageSquare className=\"h-12 w-12 text-muted-foreground mx-auto mb-3\" />\n <p className=\"text-sm text-muted-foreground\">\n No recent activity. Create work items to see updates here.\n </p>\n </div>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;AAQA,IAAM,IAAwB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDjC,SAAgB,IAAgC;CAC9C,IAAM,EAAE,mBAAgB,GAAe,EAEjC,EAAE,SAAM,YAAS,aAAU,EAAuB,GAAuB;EAC7E,WAAW;GACT;GACA,YAAY,EAAE,OAAO,IAAI;GAC1B;EACD,MAAM,CAAC;EACR,CAAC;AAEF,KAAI,EACF,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,OAAD,EAAK,WAAU,kFAAmF,CAAA;EAC9F,CAAA;AAIV,KAAI,EACF,QAAO,kBAAC,OAAD;EAAK,WAAU;YAAf,CAAkC,WAAQ,EAAM,QAAc;;CAGvE,IAAM,IAAY,GAAM,qBAAqB,SAAS,EAAE,EAClD,IAAW,GAAM,oBAAoB,SAAS,EAAE;AACnC,KAAI,IAAI,EAAS,KAAK,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;CAE1D,IAAM,IAAiB,EAAU,MAAM,GAAG,GAAG,CAAC,KAAK,OAAQ;EACzD,IAAI,EAAG;EACP,KAAK,EAAG;EACR,OAAO,EAAG;EACV,QAAQ,EAAG;EACX,UAAU,EAAG;EACb,YAAY,EAAG;EACf,WAAW,EAAG;EACd,QAAQ,EAAG;EACZ,EAAE;AAEH,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;GAAI,WAAU;aAAyB;GAAa,CAAA,EACpD,kBAAC,KAAD;GAAG,WAAU;aAAgC;GAAuC,CAAA,CAChF,EAAA,CAAA,EACN,kBAAC,OAAD;GAAK,WAAU;aAAf,CACG,EAAe,KAAK,MACnB,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;IAAa,WAAU;cACrB,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAS,IAAI,MAAM,GAAG,EAAE;MACrB,CAAA,EACN,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,OAAD;QAAK,WAAU;kBAAf;SACE,kBAAC,QAAD;UAAM,WAAU;oBAAuB,EAAS;UAAa,CAAA;SAC7D,kBAAC,QAAD;UAAM,WAAU;oBAAhB,CACE,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA,EAC3B,EAAS,IACL;;SACP,kBAAC,QAAD;UAAM,WAAU;oBACb,IAAI,KAAK,EAAS,UAAU,CAAC,mBAAmB,EAAE,EAAE;WACnD,MAAM;WACN,QAAQ;WACT,CAAC;UACG,CAAA;SACH;;OACN,kBAAC,KAAD;QAAG,WAAU;kBAAb;SAAkD;SACvC,EAAS,OAAO,aAAa,CAAC,QAAQ,KAAK,IAAI;SAAC;SAAoB;SAC5E,EAAS,SAAS,aAAa;SAC9B;;OACJ,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,OAAD;SAAK,WAAU;mBACZ,EAAS,OAAO,MAAM,GAAG,EAAE,CAAC,KAAK,MAChC,kBAAC,QAAD;UAAkB,WAAU;oBACzB;UACI,EAFI,EAEJ,CACP;SACE,CAAA,EACL,EAAS,cACR,kBAAC,QAAD;SAAM,WAAU;mBAAhB,CACE,kBAAC,GAAD,EAAe,WAAU,WAAY,CAAA,EAAA,WAEhC;WAEL;;OACF;QACF;;IACM,CAAA,EACT,EA1CI,EAAS,GA0Cb,CACP,EACD,EAAe,WAAW,KACzB,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD,EAAe,WAAU,gDAAiD,CAAA,EAC1E,kBAAC,KAAD;KAAG,WAAU;eAAgC;KAEzC,CAAA,CACA;MAEJ;KACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CollaborationNewDiscussionPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/CollaborationNewDiscussionPagePage.tsx"],"names":[],"mappings":"AAgCA,wBAAgB,kCAAkC,4CAiGjD"}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { usePlanMagnet as e, usePlanMagnetNavigate as t } from "../providers/PlanMagnetProvider.js";
|
|
2
|
-
import { useState as n } from "react";
|
|
3
|
-
import { MessageCircle as r, Save as i, X as a } from "lucide-react";
|
|
4
|
-
import { gql as o } from "@apollo/client";
|
|
5
|
-
import { useQuery as s } from "@apollo/client/react";
|
|
6
|
-
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
7
|
-
import { Button as u, Card as d, CardContent as f, CardHeader as p, CardTitle as m, Input as h } from "@burdenoff/fe-libs/ui";
|
|
8
|
-
//#region src/planmagnet/pages/CollaborationNewDiscussionPagePage.tsx
|
|
9
|
-
var g = o`
|
|
10
|
-
query GetProjectsForDiscussion($workspaceId: ID!, $pagination: PlanmagnetPaginationInput) {
|
|
11
|
-
planmagnetProjects(workspaceId: $workspaceId, pagination: $pagination) {
|
|
12
|
-
items {
|
|
13
|
-
id
|
|
14
|
-
name
|
|
15
|
-
key
|
|
16
|
-
}
|
|
17
|
-
totalCount
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
`;
|
|
21
|
-
function _() {
|
|
22
|
-
let { workspaceId: o } = e(), _ = t(), [v, y] = n({
|
|
23
|
-
title: "",
|
|
24
|
-
content: "",
|
|
25
|
-
projectId: ""
|
|
26
|
-
}), { data: b, loading: x, error: S } = s(g, {
|
|
27
|
-
variables: {
|
|
28
|
-
workspaceId: o,
|
|
29
|
-
pagination: { first: 100 }
|
|
30
|
-
},
|
|
31
|
-
skip: !o
|
|
32
|
-
}), C = b?.planmagnetProjects?.items ?? [];
|
|
33
|
-
return x ? /* @__PURE__ */ c("div", {
|
|
34
|
-
className: "flex items-center justify-center p-12",
|
|
35
|
-
children: /* @__PURE__ */ c("div", { className: "animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full" })
|
|
36
|
-
}) : S ? /* @__PURE__ */ l("div", {
|
|
37
|
-
className: "p-6 text-red-500",
|
|
38
|
-
children: ["Error: ", S.message]
|
|
39
|
-
}) : /* @__PURE__ */ l("div", {
|
|
40
|
-
className: "space-y-6 p-6 max-w-4xl",
|
|
41
|
-
children: [/* @__PURE__ */ l("div", {
|
|
42
|
-
className: "flex items-center justify-between",
|
|
43
|
-
children: [/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("h1", {
|
|
44
|
-
className: "text-2xl font-semibold",
|
|
45
|
-
children: "New Discussion"
|
|
46
|
-
}), /* @__PURE__ */ c("p", {
|
|
47
|
-
className: "text-sm text-muted-foreground",
|
|
48
|
-
children: "Start a new discussion thread with your team."
|
|
49
|
-
})] }), /* @__PURE__ */ l("div", {
|
|
50
|
-
className: "flex gap-2",
|
|
51
|
-
children: [/* @__PURE__ */ l(u, {
|
|
52
|
-
variant: "outline",
|
|
53
|
-
size: "sm",
|
|
54
|
-
onClick: () => _("/collaboration"),
|
|
55
|
-
children: [/* @__PURE__ */ c(a, { className: "mr-1 h-4 w-4" }), "Cancel"]
|
|
56
|
-
}), /* @__PURE__ */ l(u, {
|
|
57
|
-
size: "sm",
|
|
58
|
-
onClick: () => {
|
|
59
|
-
!v.title.trim() || !v.content.trim() || _("/collaboration");
|
|
60
|
-
},
|
|
61
|
-
children: [/* @__PURE__ */ c(i, { className: "mr-1 h-4 w-4" }), "Post Discussion"]
|
|
62
|
-
})]
|
|
63
|
-
})]
|
|
64
|
-
}), /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(p, { children: /* @__PURE__ */ l(m, {
|
|
65
|
-
className: "flex items-center gap-2",
|
|
66
|
-
children: [/* @__PURE__ */ c(r, { className: "h-4 w-4" }), "Discussion Details"]
|
|
67
|
-
}) }), /* @__PURE__ */ l(f, {
|
|
68
|
-
className: "space-y-4",
|
|
69
|
-
children: [
|
|
70
|
-
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
|
|
71
|
-
className: "text-sm font-medium",
|
|
72
|
-
children: "Title"
|
|
73
|
-
}), /* @__PURE__ */ c(h, {
|
|
74
|
-
value: v.title,
|
|
75
|
-
onChange: (e) => y({
|
|
76
|
-
...v,
|
|
77
|
-
title: e.target.value
|
|
78
|
-
}),
|
|
79
|
-
className: "mt-1",
|
|
80
|
-
placeholder: "e.g. RFC: Search Architecture Proposal"
|
|
81
|
-
})] }),
|
|
82
|
-
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
|
|
83
|
-
className: "text-sm font-medium",
|
|
84
|
-
children: "Project (optional)"
|
|
85
|
-
}), /* @__PURE__ */ l("select", {
|
|
86
|
-
className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
|
|
87
|
-
value: v.projectId,
|
|
88
|
-
onChange: (e) => y({
|
|
89
|
-
...v,
|
|
90
|
-
projectId: e.target.value
|
|
91
|
-
}),
|
|
92
|
-
children: [/* @__PURE__ */ c("option", {
|
|
93
|
-
value: "",
|
|
94
|
-
children: "General"
|
|
95
|
-
}), C.map((e) => /* @__PURE__ */ l("option", {
|
|
96
|
-
value: e.id,
|
|
97
|
-
children: [
|
|
98
|
-
e.name,
|
|
99
|
-
" (",
|
|
100
|
-
e.key,
|
|
101
|
-
")"
|
|
102
|
-
]
|
|
103
|
-
}, e.id))]
|
|
104
|
-
})] }),
|
|
105
|
-
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
|
|
106
|
-
className: "text-sm font-medium",
|
|
107
|
-
children: "Content"
|
|
108
|
-
}), /* @__PURE__ */ c("textarea", {
|
|
109
|
-
className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[200px] font-mono",
|
|
110
|
-
value: v.content,
|
|
111
|
-
onChange: (e) => y({
|
|
112
|
-
...v,
|
|
113
|
-
content: e.target.value
|
|
114
|
-
}),
|
|
115
|
-
placeholder: "Write your discussion content... (Markdown supported)"
|
|
116
|
-
})] })
|
|
117
|
-
]
|
|
118
|
-
})] })]
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
//#endregion
|
|
122
|
-
export { _ as CollaborationNewDiscussionPagePage };
|
|
123
|
-
|
|
124
|
-
//# sourceMappingURL=CollaborationNewDiscussionPagePage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CollaborationNewDiscussionPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/CollaborationNewDiscussionPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Button, Input } from '@burdenoff/fe-libs/ui';\nimport { Save, X, MessageCircle } from 'lucide-react';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\n\nconst GET_PROJECTS_FOR_DISCUSSION = gql`\n query GetProjectsForDiscussion($workspaceId: ID!, $pagination: PlanmagnetPaginationInput) {\n planmagnetProjects(workspaceId: $workspaceId, pagination: $pagination) {\n items {\n id\n name\n key\n }\n totalCount\n }\n }\n`;\n\ninterface ProjectNode {\n id: string;\n name: string;\n key: string;\n}\n\ninterface ProjectsData {\n projects: { items: ProjectNode[]; totalCount: number };\n}\n\nexport function CollaborationNewDiscussionPagePage() {\n const { workspaceId } = usePlanMagnet();\n const navigate = usePlanMagnetNavigate();\n const [form, setForm] = useState({ title: '', content: '', projectId: '' });\n\n const { data, loading, error } = useQuery<ProjectsData>(GET_PROJECTS_FOR_DISCUSSION, {\n variables: {\n workspaceId,\n pagination: { first: 100 },\n },\n skip: !workspaceId,\n });\n\n const projects = data?.planmagnetProjects?.items ?? [];\n\n const handlePost = () => {\n if (!form.title.trim() || !form.content.trim()) return;\n navigate('/collaboration');\n };\n\n if (loading) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <div className=\"animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full\" />\n </div>\n );\n }\n\n if (error) {\n return <div className=\"p-6 text-red-500\">Error: {error.message}</div>;\n }\n\n return (\n <div className=\"space-y-6 p-6 max-w-4xl\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">New Discussion</h1>\n <p className=\"text-sm text-muted-foreground\">\n Start a new discussion thread with your team.\n </p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => navigate('/collaboration')}>\n <X className=\"mr-1 h-4 w-4\" />\n Cancel\n </Button>\n <Button size=\"sm\" onClick={handlePost}>\n <Save className=\"mr-1 h-4 w-4\" />\n Post Discussion\n </Button>\n </div>\n </div>\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <MessageCircle className=\"h-4 w-4\" />\n Discussion Details\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <label className=\"text-sm font-medium\">Title</label>\n <Input\n value={form.title}\n onChange={(e) => setForm({ ...form, title: e.target.value })}\n className=\"mt-1\"\n placeholder=\"e.g. RFC: Search Architecture Proposal\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Project (optional)</label>\n <select\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"\n value={form.projectId}\n onChange={(e) => setForm({ ...form, projectId: e.target.value })}\n >\n <option value=\"\">General</option>\n {projects.map((p) => (\n <option key={p.id} value={p.id}>\n {p.name} ({p.key})\n </option>\n ))}\n </select>\n </div>\n <div>\n <label className=\"text-sm font-medium\">Content</label>\n <textarea\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[200px] font-mono\"\n value={form.content}\n onChange={(e) => setForm({ ...form, content: e.target.value })}\n placeholder=\"Write your discussion content... (Markdown supported)\"\n />\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AASA,IAAM,IAA8B,CAAG;;;;;;;;;;;;AAuBvC,SAAgB,IAAqC;CACnD,IAAM,EAAE,mBAAgB,GAAe,EACjC,IAAW,GAAuB,EAClC,CAAC,GAAM,KAAW,EAAS;EAAE,OAAO;EAAI,SAAS;EAAI,WAAW;EAAI,CAAC,EAErE,EAAE,SAAM,YAAS,aAAU,EAAuB,GAA6B;EACnF,WAAW;GACT;GACA,YAAY,EAAE,OAAO,KAAK;GAC3B;EACD,MAAM,CAAC;EACR,CAAC,EAEI,IAAW,GAAM,oBAAoB,SAAS,EAAE;AAmBtD,QAZI,IAEA,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,OAAD,EAAK,WAAU,kFAAmF,CAAA;EAC9F,CAAA,GAIN,IACK,kBAAC,OAAD;EAAK,WAAU;YAAf,CAAkC,WAAQ,EAAM,QAAc;MAIrE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,WAAU;cAAyB;IAAmB,CAAA,EAC1D,kBAAC,KAAD;IAAG,WAAU;cAAgC;IAEzC,CAAA,CACA,EAAA,CAAA,EACN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD;KAAQ,SAAQ;KAAU,MAAK;KAAK,eAAe,EAAS,iBAAiB;eAA7E,CACE,kBAAC,GAAD,EAAG,WAAU,gBAAiB,CAAA,EAAA,SAEvB;QACT,kBAAC,GAAD;KAAQ,MAAK;KAAK,eA/BD;AACnB,OAAC,EAAK,MAAM,MAAM,IAAI,CAAC,EAAK,QAAQ,MAAM,IAC9C,EAAS,iBAAiB;;eA6BpB,CACE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAAA,kBAE1B;OACL;MACF;MACN,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;GAAW,WAAU;aAArB,CACE,kBAAC,GAAD,EAAe,WAAU,WAAY,CAAA,EAAA,qBAE3B;MACD,CAAA,EACb,kBAAC,GAAD;GAAa,WAAU;aAAvB;IACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;KAAO,WAAU;eAAsB;KAAa,CAAA,EACpD,kBAAC,GAAD;KACE,OAAO,EAAK;KACZ,WAAW,MAAM,EAAQ;MAAE,GAAG;MAAM,OAAO,EAAE,OAAO;MAAO,CAAC;KAC5D,WAAU;KACV,aAAY;KACZ,CAAA,CACE,EAAA,CAAA;IACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;KAAO,WAAU;eAAsB;KAA0B,CAAA,EACjE,kBAAC,UAAD;KACE,WAAU;KACV,OAAO,EAAK;KACZ,WAAW,MAAM,EAAQ;MAAE,GAAG;MAAM,WAAW,EAAE,OAAO;MAAO,CAAC;eAHlE,CAKE,kBAAC,UAAD;MAAQ,OAAM;gBAAG;MAAgB,CAAA,EAChC,EAAS,KAAK,MACb,kBAAC,UAAD;MAAmB,OAAO,EAAE;gBAA5B;OACG,EAAE;OAAK;OAAG,EAAE;OAAI;OACV;QAFI,EAAE,GAEN,CACT,CACK;OACL,EAAA,CAAA;IACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;KAAO,WAAU;eAAsB;KAAe,CAAA,EACtD,kBAAC,YAAD;KACE,WAAU;KACV,OAAO,EAAK;KACZ,WAAW,MAAM,EAAQ;MAAE,GAAG;MAAM,SAAS,EAAE,OAAO;MAAO,CAAC;KAC9D,aAAY;KACZ,CAAA,CACE,EAAA,CAAA;IACM;KACT,EAAA,CAAA,CACH"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MeetingsScheduleMeetingPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/MeetingsScheduleMeetingPagePage.tsx"],"names":[],"mappings":"AAiEA,wBAAgB,+BAA+B,4CAwN9C"}
|
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
import { usePlanMagnet as e } from "../providers/PlanMagnetProvider.js";
|
|
2
|
-
import { useState as t } from "react";
|
|
3
|
-
import { CalendarDays as n, Clock as r, MapPin as i, Save as a } from "lucide-react";
|
|
4
|
-
import { gql as o } from "@apollo/client";
|
|
5
|
-
import { useQuery as s } from "@apollo/client/react";
|
|
6
|
-
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
7
|
-
import { Badge as u, Button as d, Card as f, CardContent as p, CardHeader as m, CardTitle as h, Input as g } from "@burdenoff/fe-libs/ui";
|
|
8
|
-
//#region src/planmagnet/pages/MeetingsScheduleMeetingPagePage.tsx
|
|
9
|
-
var _ = o`
|
|
10
|
-
query GetProjectsAndSprintsForMeetings(
|
|
11
|
-
$workspaceId: ID!
|
|
12
|
-
$projectPagination: PlanmagnetPaginationInput
|
|
13
|
-
$sprintPagination: PlanmagnetPaginationInput
|
|
14
|
-
) {
|
|
15
|
-
planmagnetProjects(workspaceId: $workspaceId, pagination: $projectPagination) {
|
|
16
|
-
items {
|
|
17
|
-
id
|
|
18
|
-
name
|
|
19
|
-
key
|
|
20
|
-
status
|
|
21
|
-
}
|
|
22
|
-
totalCount
|
|
23
|
-
}
|
|
24
|
-
planmagnetSprints(workspaceId: $workspaceId, pagination: $sprintPagination) {
|
|
25
|
-
items {
|
|
26
|
-
id
|
|
27
|
-
name
|
|
28
|
-
status
|
|
29
|
-
startDate
|
|
30
|
-
endDate
|
|
31
|
-
}
|
|
32
|
-
totalCount
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
`;
|
|
36
|
-
function v() {
|
|
37
|
-
let { workspaceId: o } = e(), [v, y] = t({
|
|
38
|
-
title: "",
|
|
39
|
-
description: "",
|
|
40
|
-
type: "standup",
|
|
41
|
-
date: "",
|
|
42
|
-
startTime: "",
|
|
43
|
-
endTime: "",
|
|
44
|
-
projectId: "",
|
|
45
|
-
location: ""
|
|
46
|
-
}), b = [
|
|
47
|
-
"standup",
|
|
48
|
-
"sprint_review",
|
|
49
|
-
"retrospective",
|
|
50
|
-
"planning",
|
|
51
|
-
"one_on_one",
|
|
52
|
-
"general"
|
|
53
|
-
], { data: x, loading: S, error: C } = s(_, {
|
|
54
|
-
variables: {
|
|
55
|
-
workspaceId: o,
|
|
56
|
-
projectPagination: { first: 100 },
|
|
57
|
-
sprintPagination: { first: 50 }
|
|
58
|
-
},
|
|
59
|
-
skip: !o
|
|
60
|
-
});
|
|
61
|
-
if (S) return /* @__PURE__ */ c("div", {
|
|
62
|
-
className: "flex items-center justify-center p-12",
|
|
63
|
-
children: /* @__PURE__ */ c("div", { className: "animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full" })
|
|
64
|
-
});
|
|
65
|
-
if (C) return /* @__PURE__ */ l("div", {
|
|
66
|
-
className: "p-6 text-red-500",
|
|
67
|
-
children: ["Error: ", C.message]
|
|
68
|
-
});
|
|
69
|
-
let w = x?.planmagnetProjects?.items ?? [], T = (x?.planmagnetSprints?.items ?? []).filter((e) => e.status === "ACTIVE"), E = T.map((e) => ({
|
|
70
|
-
id: e.id,
|
|
71
|
-
title: `${e.name} Standup`,
|
|
72
|
-
description: `Daily standup for ${e.name}`,
|
|
73
|
-
type: "standup",
|
|
74
|
-
date: e.startDate ?? "",
|
|
75
|
-
startTime: "09:00",
|
|
76
|
-
endTime: "09:15",
|
|
77
|
-
location: "Virtual",
|
|
78
|
-
sprintName: e.name
|
|
79
|
-
}));
|
|
80
|
-
return /* @__PURE__ */ l("div", {
|
|
81
|
-
className: "space-y-6 p-6",
|
|
82
|
-
children: [/* @__PURE__ */ c("div", {
|
|
83
|
-
className: "flex items-center justify-between",
|
|
84
|
-
children: /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("h1", {
|
|
85
|
-
className: "text-2xl font-semibold",
|
|
86
|
-
children: "Meeting Scheduler"
|
|
87
|
-
}), /* @__PURE__ */ l("p", {
|
|
88
|
-
className: "text-sm text-muted-foreground",
|
|
89
|
-
children: [
|
|
90
|
-
T.length,
|
|
91
|
-
" active sprints · ",
|
|
92
|
-
w.length,
|
|
93
|
-
" projects"
|
|
94
|
-
]
|
|
95
|
-
})] })
|
|
96
|
-
}), /* @__PURE__ */ l("div", {
|
|
97
|
-
className: "grid grid-cols-1 lg:grid-cols-2 gap-6",
|
|
98
|
-
children: [/* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c(m, { children: /* @__PURE__ */ l(h, {
|
|
99
|
-
className: "flex items-center gap-2",
|
|
100
|
-
children: [/* @__PURE__ */ c(n, { className: "h-4 w-4" }), "Schedule New Meeting"]
|
|
101
|
-
}) }), /* @__PURE__ */ l(p, {
|
|
102
|
-
className: "space-y-4",
|
|
103
|
-
children: [
|
|
104
|
-
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
|
|
105
|
-
className: "text-sm font-medium",
|
|
106
|
-
children: "Title"
|
|
107
|
-
}), /* @__PURE__ */ c(g, {
|
|
108
|
-
value: v.title,
|
|
109
|
-
onChange: (e) => y({
|
|
110
|
-
...v,
|
|
111
|
-
title: e.target.value
|
|
112
|
-
}),
|
|
113
|
-
className: "mt-1",
|
|
114
|
-
placeholder: "e.g. Sprint 14 Review"
|
|
115
|
-
})] }),
|
|
116
|
-
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
|
|
117
|
-
className: "text-sm font-medium",
|
|
118
|
-
children: "Description"
|
|
119
|
-
}), /* @__PURE__ */ c("textarea", {
|
|
120
|
-
className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[60px]",
|
|
121
|
-
value: v.description,
|
|
122
|
-
onChange: (e) => y({
|
|
123
|
-
...v,
|
|
124
|
-
description: e.target.value
|
|
125
|
-
})
|
|
126
|
-
})] }),
|
|
127
|
-
/* @__PURE__ */ l("div", {
|
|
128
|
-
className: "grid grid-cols-2 gap-4",
|
|
129
|
-
children: [/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
|
|
130
|
-
className: "text-sm font-medium",
|
|
131
|
-
children: "Type"
|
|
132
|
-
}), /* @__PURE__ */ c("select", {
|
|
133
|
-
className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
|
|
134
|
-
value: v.type,
|
|
135
|
-
onChange: (e) => y({
|
|
136
|
-
...v,
|
|
137
|
-
type: e.target.value
|
|
138
|
-
}),
|
|
139
|
-
children: b.map((e) => /* @__PURE__ */ c("option", {
|
|
140
|
-
value: e,
|
|
141
|
-
children: e.replace("_", " ")
|
|
142
|
-
}, e))
|
|
143
|
-
})] }), /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
|
|
144
|
-
className: "text-sm font-medium",
|
|
145
|
-
children: "Project"
|
|
146
|
-
}), /* @__PURE__ */ l("select", {
|
|
147
|
-
className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
|
|
148
|
-
value: v.projectId,
|
|
149
|
-
onChange: (e) => y({
|
|
150
|
-
...v,
|
|
151
|
-
projectId: e.target.value
|
|
152
|
-
}),
|
|
153
|
-
children: [/* @__PURE__ */ c("option", {
|
|
154
|
-
value: "",
|
|
155
|
-
children: "None"
|
|
156
|
-
}), w.map((e) => /* @__PURE__ */ l("option", {
|
|
157
|
-
value: e.id,
|
|
158
|
-
children: [
|
|
159
|
-
e.name,
|
|
160
|
-
" (",
|
|
161
|
-
e.key,
|
|
162
|
-
")"
|
|
163
|
-
]
|
|
164
|
-
}, e.id))]
|
|
165
|
-
})] })]
|
|
166
|
-
}),
|
|
167
|
-
/* @__PURE__ */ l("div", {
|
|
168
|
-
className: "grid grid-cols-3 gap-4",
|
|
169
|
-
children: [
|
|
170
|
-
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
|
|
171
|
-
className: "text-sm font-medium",
|
|
172
|
-
children: "Date"
|
|
173
|
-
}), /* @__PURE__ */ c(g, {
|
|
174
|
-
type: "date",
|
|
175
|
-
value: v.date,
|
|
176
|
-
onChange: (e) => y({
|
|
177
|
-
...v,
|
|
178
|
-
date: e.target.value
|
|
179
|
-
}),
|
|
180
|
-
className: "mt-1"
|
|
181
|
-
})] }),
|
|
182
|
-
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
|
|
183
|
-
className: "text-sm font-medium",
|
|
184
|
-
children: "Start"
|
|
185
|
-
}), /* @__PURE__ */ c(g, {
|
|
186
|
-
type: "time",
|
|
187
|
-
value: v.startTime,
|
|
188
|
-
onChange: (e) => y({
|
|
189
|
-
...v,
|
|
190
|
-
startTime: e.target.value
|
|
191
|
-
}),
|
|
192
|
-
className: "mt-1"
|
|
193
|
-
})] }),
|
|
194
|
-
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
|
|
195
|
-
className: "text-sm font-medium",
|
|
196
|
-
children: "End"
|
|
197
|
-
}), /* @__PURE__ */ c(g, {
|
|
198
|
-
type: "time",
|
|
199
|
-
value: v.endTime,
|
|
200
|
-
onChange: (e) => y({
|
|
201
|
-
...v,
|
|
202
|
-
endTime: e.target.value
|
|
203
|
-
}),
|
|
204
|
-
className: "mt-1"
|
|
205
|
-
})] })
|
|
206
|
-
]
|
|
207
|
-
}),
|
|
208
|
-
/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("label", {
|
|
209
|
-
className: "text-sm font-medium",
|
|
210
|
-
children: "Location"
|
|
211
|
-
}), /* @__PURE__ */ c(g, {
|
|
212
|
-
value: v.location,
|
|
213
|
-
onChange: (e) => y({
|
|
214
|
-
...v,
|
|
215
|
-
location: e.target.value
|
|
216
|
-
}),
|
|
217
|
-
className: "mt-1",
|
|
218
|
-
placeholder: "Zoom / Conference Room A"
|
|
219
|
-
})] }),
|
|
220
|
-
/* @__PURE__ */ l(d, {
|
|
221
|
-
size: "sm",
|
|
222
|
-
className: "w-full",
|
|
223
|
-
children: [/* @__PURE__ */ c(a, { className: "mr-1 h-4 w-4" }), "Schedule Meeting"]
|
|
224
|
-
})
|
|
225
|
-
]
|
|
226
|
-
})] }), /* @__PURE__ */ l("div", {
|
|
227
|
-
className: "space-y-4",
|
|
228
|
-
children: [
|
|
229
|
-
/* @__PURE__ */ c("h2", {
|
|
230
|
-
className: "text-lg font-medium",
|
|
231
|
-
children: "Sprint-Based Meetings"
|
|
232
|
-
}),
|
|
233
|
-
E.map((e) => /* @__PURE__ */ c(f, { children: /* @__PURE__ */ l(p, {
|
|
234
|
-
className: "py-3 space-y-2",
|
|
235
|
-
children: [
|
|
236
|
-
/* @__PURE__ */ l("div", {
|
|
237
|
-
className: "flex items-center justify-between",
|
|
238
|
-
children: [/* @__PURE__ */ c("span", {
|
|
239
|
-
className: "text-sm font-medium",
|
|
240
|
-
children: e.title
|
|
241
|
-
}), /* @__PURE__ */ c(u, {
|
|
242
|
-
variant: "outline",
|
|
243
|
-
className: "capitalize text-xs",
|
|
244
|
-
children: e.type.replace("_", " ")
|
|
245
|
-
})]
|
|
246
|
-
}),
|
|
247
|
-
/* @__PURE__ */ c("p", {
|
|
248
|
-
className: "text-xs text-muted-foreground",
|
|
249
|
-
children: e.description
|
|
250
|
-
}),
|
|
251
|
-
/* @__PURE__ */ l("div", {
|
|
252
|
-
className: "flex gap-3 text-xs text-muted-foreground",
|
|
253
|
-
children: [
|
|
254
|
-
e.date && /* @__PURE__ */ l("span", {
|
|
255
|
-
className: "flex items-center gap-1",
|
|
256
|
-
children: [/* @__PURE__ */ c(n, { className: "h-3 w-3" }), e.date]
|
|
257
|
-
}),
|
|
258
|
-
/* @__PURE__ */ l("span", {
|
|
259
|
-
className: "flex items-center gap-1",
|
|
260
|
-
children: [
|
|
261
|
-
/* @__PURE__ */ c(r, { className: "h-3 w-3" }),
|
|
262
|
-
e.startTime,
|
|
263
|
-
"-",
|
|
264
|
-
e.endTime
|
|
265
|
-
]
|
|
266
|
-
}),
|
|
267
|
-
/* @__PURE__ */ l("span", {
|
|
268
|
-
className: "flex items-center gap-1",
|
|
269
|
-
children: [/* @__PURE__ */ c(i, { className: "h-3 w-3" }), e.location]
|
|
270
|
-
})
|
|
271
|
-
]
|
|
272
|
-
})
|
|
273
|
-
]
|
|
274
|
-
}) }, e.id)),
|
|
275
|
-
E.length === 0 && /* @__PURE__ */ c(f, { children: /* @__PURE__ */ l(p, {
|
|
276
|
-
className: "py-8 text-center",
|
|
277
|
-
children: [/* @__PURE__ */ c(n, { className: "h-10 w-10 text-muted-foreground mx-auto mb-2" }), /* @__PURE__ */ c("p", {
|
|
278
|
-
className: "text-sm text-muted-foreground",
|
|
279
|
-
children: "No active sprints found. Start a sprint to generate meeting suggestions."
|
|
280
|
-
})]
|
|
281
|
-
}) })
|
|
282
|
-
]
|
|
283
|
-
})]
|
|
284
|
-
})]
|
|
285
|
-
});
|
|
286
|
-
}
|
|
287
|
-
//#endregion
|
|
288
|
-
export { v as MeetingsScheduleMeetingPagePage };
|
|
289
|
-
|
|
290
|
-
//# sourceMappingURL=MeetingsScheduleMeetingPagePage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MeetingsScheduleMeetingPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/MeetingsScheduleMeetingPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Button,\n Input,\n Badge,\n} from '@burdenoff/fe-libs/ui';\nimport { Save, CalendarDays, Clock, MapPin } from 'lucide-react';\nimport { usePlanMagnet } from '../providers/PlanMagnetProvider';\n\nconst GET_PROJECTS_AND_SPRINTS = gql`\n query GetProjectsAndSprintsForMeetings(\n $workspaceId: ID!\n $projectPagination: PlanmagnetPaginationInput\n $sprintPagination: PlanmagnetPaginationInput\n ) {\n planmagnetProjects(workspaceId: $workspaceId, pagination: $projectPagination) {\n items {\n id\n name\n key\n status\n }\n totalCount\n }\n planmagnetSprints(workspaceId: $workspaceId, pagination: $sprintPagination) {\n items {\n id\n name\n status\n startDate\n endDate\n }\n totalCount\n }\n }\n`;\n\ninterface ProjectNode {\n id: string;\n name: string;\n key: string;\n status: string;\n}\n\ninterface SprintNode {\n id: string;\n name: string;\n status: string;\n startDate: string | null;\n endDate: string | null;\n}\n\ninterface MeetingsQueryData {\n projects: { items: ProjectNode[]; totalCount: number };\n sprints: { items: SprintNode[]; totalCount: number };\n}\n\nexport function MeetingsScheduleMeetingPagePage() {\n const { workspaceId } = usePlanMagnet();\n const [form, setForm] = useState({\n title: '',\n description: '',\n type: 'standup',\n date: '',\n startTime: '',\n endTime: '',\n projectId: '',\n location: '',\n });\n const types = [\n 'standup',\n 'sprint_review',\n 'retrospective',\n 'planning',\n 'one_on_one',\n 'general',\n ] as const;\n\n const { data, loading, error } = useQuery<MeetingsQueryData>(GET_PROJECTS_AND_SPRINTS, {\n variables: {\n workspaceId,\n projectPagination: { first: 100 },\n sprintPagination: { first: 50 },\n },\n skip: !workspaceId,\n });\n\n if (loading) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <div className=\"animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full\" />\n </div>\n );\n }\n\n if (error) {\n return <div className=\"p-6 text-red-500\">Error: {error.message}</div>;\n }\n\n const projects = data?.planmagnetProjects?.items ?? [];\n const sprints = data?.planmagnetSprints?.items ?? [];\n const activeSprints = sprints.filter((s) => s.status === 'ACTIVE');\n\n const upcomingMeetings = activeSprints.map((sprint) => ({\n id: sprint.id,\n title: `${sprint.name} Standup`,\n description: `Daily standup for ${sprint.name}`,\n type: 'standup' as const,\n date: sprint.startDate ?? '',\n startTime: '09:00',\n endTime: '09:15',\n location: 'Virtual',\n sprintName: sprint.name,\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\">Meeting Scheduler</h1>\n <p className=\"text-sm text-muted-foreground\">\n {activeSprints.length} active sprints · {projects.length} projects\n </p>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <CalendarDays className=\"h-4 w-4\" />\n Schedule New Meeting\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <label className=\"text-sm font-medium\">Title</label>\n <Input\n value={form.title}\n onChange={(e) => setForm({ ...form, title: e.target.value })}\n className=\"mt-1\"\n placeholder=\"e.g. Sprint 14 Review\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Description</label>\n <textarea\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[60px]\"\n value={form.description}\n onChange={(e) => setForm({ ...form, description: e.target.value })}\n />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label className=\"text-sm font-medium\">Type</label>\n <select\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"\n value={form.type}\n onChange={(e) => setForm({ ...form, type: e.target.value })}\n >\n {types.map((t) => (\n <option key={t} value={t}>\n {t.replace('_', ' ')}\n </option>\n ))}\n </select>\n </div>\n <div>\n <label className=\"text-sm font-medium\">Project</label>\n <select\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"\n value={form.projectId}\n onChange={(e) => setForm({ ...form, projectId: e.target.value })}\n >\n <option value=\"\">None</option>\n {projects.map((p) => (\n <option key={p.id} value={p.id}>\n {p.name} ({p.key})\n </option>\n ))}\n </select>\n </div>\n </div>\n <div className=\"grid grid-cols-3 gap-4\">\n <div>\n <label className=\"text-sm font-medium\">Date</label>\n <Input\n type=\"date\"\n value={form.date}\n onChange={(e) => setForm({ ...form, date: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Start</label>\n <Input\n type=\"time\"\n value={form.startTime}\n onChange={(e) => setForm({ ...form, startTime: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">End</label>\n <Input\n type=\"time\"\n value={form.endTime}\n onChange={(e) => setForm({ ...form, endTime: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n </div>\n <div>\n <label className=\"text-sm font-medium\">Location</label>\n <Input\n value={form.location}\n onChange={(e) => setForm({ ...form, location: e.target.value })}\n className=\"mt-1\"\n placeholder=\"Zoom / Conference Room A\"\n />\n </div>\n <Button size=\"sm\" className=\"w-full\">\n <Save className=\"mr-1 h-4 w-4\" />\n Schedule Meeting\n </Button>\n </CardContent>\n </Card>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-lg font-medium\">Sprint-Based Meetings</h2>\n {upcomingMeetings.map((mtg) => (\n <Card key={mtg.id}>\n <CardContent className=\"py-3 space-y-2\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">{mtg.title}</span>\n <Badge variant=\"outline\" className=\"capitalize text-xs\">\n {mtg.type.replace('_', ' ')}\n </Badge>\n </div>\n <p className=\"text-xs text-muted-foreground\">{mtg.description}</p>\n <div className=\"flex gap-3 text-xs text-muted-foreground\">\n {mtg.date && (\n <span className=\"flex items-center gap-1\">\n <CalendarDays className=\"h-3 w-3\" />\n {mtg.date}\n </span>\n )}\n <span className=\"flex items-center gap-1\">\n <Clock className=\"h-3 w-3\" />\n {mtg.startTime}-{mtg.endTime}\n </span>\n <span className=\"flex items-center gap-1\">\n <MapPin className=\"h-3 w-3\" />\n {mtg.location}\n </span>\n </div>\n </CardContent>\n </Card>\n ))}\n {upcomingMeetings.length === 0 && (\n <Card>\n <CardContent className=\"py-8 text-center\">\n <CalendarDays className=\"h-10 w-10 text-muted-foreground mx-auto mb-2\" />\n <p className=\"text-sm text-muted-foreground\">\n No active sprints found. Start a sprint to generate meeting suggestions.\n </p>\n </CardContent>\n </Card>\n )}\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|