@burdenoff/microfe-planmagnet 2026.716.1 → 2026.719.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
  2. package/dist/planmagnet/PlanMagnetRoot.js +98 -173
  3. package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
  4. package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
  5. package/dist/planmagnet/PlanMagnetRoutes.js +43 -67
  6. package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
  7. package/dist/planmagnet/pages/ProductsCreateProductPagePage.js +2 -2
  8. package/dist/planmagnet/pages/ProductsCreateProductPagePage.js.map +1 -1
  9. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js +2 -2
  10. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js.map +1 -1
  11. package/dist/planmagnet/pages/ProductsEditProductPagePage.js +2 -2
  12. package/dist/planmagnet/pages/ProductsEditProductPagePage.js.map +1 -1
  13. package/dist/planmagnet/pages/ProductsEditReleasePagePage.js +2 -2
  14. package/dist/planmagnet/pages/ProductsEditReleasePagePage.js.map +1 -1
  15. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js +1 -1
  16. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js.map +1 -1
  17. package/dist/planmagnet/pages/ProductsFeaturesPagePage.js +1 -1
  18. package/dist/planmagnet/pages/ProductsFeaturesPagePage.js.map +1 -1
  19. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js +2 -2
  20. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js.map +1 -1
  21. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js +1 -1
  22. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js.map +1 -1
  23. package/dist/planmagnet/pages/ProductsProductsPagePage.js +1 -1
  24. package/dist/planmagnet/pages/ProductsProductsPagePage.js.map +1 -1
  25. package/dist/planmagnet/pages/ProductsReleasesPagePage.js +1 -1
  26. package/dist/planmagnet/pages/ProductsReleasesPagePage.js.map +1 -1
  27. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js +1 -1
  28. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js.map +1 -1
  29. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js +1 -1
  30. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js.map +1 -1
  31. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js +2 -2
  32. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js.map +1 -1
  33. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js +2 -2
  34. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js.map +1 -1
  35. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js +1 -1
  36. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js.map +1 -1
  37. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js +2 -2
  38. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js.map +1 -1
  39. package/dist/planmagnet/pages/SprintsStartSprintPagePage.d.ts.map +1 -1
  40. package/dist/planmagnet/pages/SprintsStartSprintPagePage.js +75 -86
  41. package/dist/planmagnet/pages/SprintsStartSprintPagePage.js.map +1 -1
  42. package/dist/planmagnet/pages/TasksCreateTaskPagePage.js +1 -1
  43. package/dist/planmagnet/pages/TasksCreateTaskPagePage.js.map +1 -1
  44. package/dist/planmagnet/pages/TasksEditTaskPagePage.d.ts.map +1 -1
  45. package/dist/planmagnet/pages/TasksEditTaskPagePage.js +6 -10
  46. package/dist/planmagnet/pages/TasksEditTaskPagePage.js.map +1 -1
  47. package/dist/planmagnet/pages/TasksTaskDetailPagePage.d.ts.map +1 -1
  48. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js +4 -8
  49. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js.map +1 -1
  50. package/dist/planmagnet/pages/TasksTasksPagePage.d.ts.map +1 -1
  51. package/dist/planmagnet/pages/TasksTasksPagePage.js +8 -9
  52. package/dist/planmagnet/pages/TasksTasksPagePage.js.map +1 -1
  53. package/package.json +1 -1
  54. package/dist/planmagnet/pages/CollaborationCollaborationPagePage.d.ts +0 -2
  55. package/dist/planmagnet/pages/CollaborationCollaborationPagePage.d.ts.map +0 -1
  56. package/dist/planmagnet/pages/CollaborationCollaborationPagePage.js +0 -110
  57. package/dist/planmagnet/pages/CollaborationCollaborationPagePage.js.map +0 -1
  58. package/dist/planmagnet/pages/CollaborationCreateChannelPagePage.d.ts +0 -2
  59. package/dist/planmagnet/pages/CollaborationCreateChannelPagePage.d.ts.map +0 -1
  60. package/dist/planmagnet/pages/CollaborationCreateChannelPagePage.js +0 -96
  61. package/dist/planmagnet/pages/CollaborationCreateChannelPagePage.js.map +0 -1
  62. package/dist/planmagnet/pages/CollaborationFilesPagePage.d.ts +0 -2
  63. package/dist/planmagnet/pages/CollaborationFilesPagePage.d.ts.map +0 -1
  64. package/dist/planmagnet/pages/CollaborationFilesPagePage.js +0 -112
  65. package/dist/planmagnet/pages/CollaborationFilesPagePage.js.map +0 -1
  66. package/dist/planmagnet/pages/CollaborationMessagesPagePage.d.ts +0 -2
  67. package/dist/planmagnet/pages/CollaborationMessagesPagePage.d.ts.map +0 -1
  68. package/dist/planmagnet/pages/CollaborationMessagesPagePage.js +0 -141
  69. package/dist/planmagnet/pages/CollaborationMessagesPagePage.js.map +0 -1
  70. package/dist/planmagnet/pages/CollaborationNewDiscussionPagePage.d.ts +0 -2
  71. package/dist/planmagnet/pages/CollaborationNewDiscussionPagePage.d.ts.map +0 -1
  72. package/dist/planmagnet/pages/CollaborationNewDiscussionPagePage.js +0 -124
  73. package/dist/planmagnet/pages/CollaborationNewDiscussionPagePage.js.map +0 -1
  74. package/dist/planmagnet/pages/MeetingsScheduleMeetingPagePage.d.ts +0 -2
  75. package/dist/planmagnet/pages/MeetingsScheduleMeetingPagePage.d.ts.map +0 -1
  76. package/dist/planmagnet/pages/MeetingsScheduleMeetingPagePage.js +0 -290
  77. 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('_', ' ')} &middot; 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,2 +0,0 @@
1
- export declare function CollaborationNewDiscussionPagePage(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=CollaborationNewDiscussionPagePage.d.ts.map
@@ -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,2 +0,0 @@
1
- export declare function MeetingsScheduleMeetingPagePage(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=MeetingsScheduleMeetingPagePage.d.ts.map
@@ -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 &middot; {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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"}