@burdenoff/microfe-planmagnet 2026.925.18 → 2026.926.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.
- package/dist/generated/wspace-types.d.ts +61 -2
- package/dist/generated/wspace-types.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoot.js +90 -79
- package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.js +124 -127
- package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
- package/dist/planmagnet/create/CreateDialogs.d.ts.map +1 -1
- package/dist/planmagnet/create/CreateDialogs.js +149 -124
- package/dist/planmagnet/create/CreateDialogs.js.map +1 -1
- package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js +1 -1
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/NotFoundPage.d.ts +6 -0
- package/dist/planmagnet/pages/NotFoundPage.d.ts.map +1 -0
- package/dist/planmagnet/pages/NotFoundPage.js +18 -0
- package/dist/planmagnet/pages/NotFoundPage.js.map +1 -0
- package/dist/planmagnet/pages/ProductsCreateProductPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsCreateProductPagePage.js +93 -98
- package/dist/planmagnet/pages/ProductsCreateProductPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js +72 -79
- package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsEditProductPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsEditProductPagePage.js +112 -123
- package/dist/planmagnet/pages/ProductsEditProductPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsNewFeaturePagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js +103 -87
- package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.js +92 -98
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsProductsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsProductsPagePage.js +88 -96
- package/dist/planmagnet/pages/ProductsProductsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js +116 -114
- package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js +82 -88
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js +79 -79
- package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js +111 -91
- package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js +117 -97
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +150 -154
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js +154 -117
- 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 -31
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksCreateTaskPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TasksCreateTaskPagePage.js +161 -115
- 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 +117 -102
- package/dist/planmagnet/pages/TasksEditTaskPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TeamInviteMemberPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TeamInviteMemberPagePage.js +147 -147
- package/dist/planmagnet/pages/TeamInviteMemberPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TeamTeamPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TeamTeamPagePage.js +77 -67
- package/dist/planmagnet/pages/TeamTeamPagePage.js.map +1 -1
- package/dist/planmagnet/roadmaps/planningFocus.d.ts +23 -0
- package/dist/planmagnet/roadmaps/planningFocus.d.ts.map +1 -0
- package/dist/planmagnet/roadmaps/planningFocus.js +76 -0
- package/dist/planmagnet/roadmaps/planningFocus.js.map +1 -0
- package/dist/planmagnet/sprints/SprintControls.d.ts.map +1 -1
- package/dist/planmagnet/sprints/SprintControls.js +48 -29
- package/dist/planmagnet/sprints/SprintControls.js.map +1 -1
- package/dist/planmagnet/sprints/SprintDates.d.ts +37 -0
- package/dist/planmagnet/sprints/SprintDates.d.ts.map +1 -0
- package/dist/planmagnet/sprints/SprintDates.js +114 -0
- package/dist/planmagnet/sprints/SprintDates.js.map +1 -0
- package/dist/planmagnet/utils/email.d.ts +9 -0
- package/dist/planmagnet/utils/email.d.ts.map +1 -0
- package/dist/planmagnet/utils/email.js +15 -0
- package/dist/planmagnet/utils/email.js.map +1 -0
- package/dist/planmagnet/utils/formValidation.d.ts +18 -0
- package/dist/planmagnet/utils/formValidation.d.ts.map +1 -0
- package/dist/planmagnet/utils/formValidation.js +17 -0
- package/dist/planmagnet/utils/formValidation.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,140 +1,133 @@
|
|
|
1
1
|
import { usePlanMagnet as e, usePlanMagnetNavigate as t } from "../providers/PlanMagnetProvider.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
2
|
+
import { throwOnError as n } from "../utils/mutationResult.js";
|
|
3
|
+
import { PlanningFocusSelect as r, ROADMAP_DISPLAY as i } from "../roadmaps/planningFocus.js";
|
|
4
|
+
import { useState as a } from "react";
|
|
5
|
+
import { Loader2 as o, Map as s, Save as c, X as l } from "lucide-react";
|
|
6
|
+
import { gql as u } from "@apollo/client";
|
|
7
|
+
import { useMutation as d } from "@apollo/client/react";
|
|
8
|
+
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
9
|
+
import { Button as m, Card as h, CardContent as g, CardHeader as _, CardTitle as v, Input as y } from "@burdenoff/fe-libs/ui";
|
|
8
10
|
//#region src/planmagnet/pages/ProductsCreateRoadmapPagePage.tsx
|
|
9
|
-
var
|
|
11
|
+
var b = u`
|
|
10
12
|
mutation CreateRoadmapPage($input: PlanmagnetCreateRoadmapInput!) {
|
|
11
13
|
planmagnetCreateRoadmap(input: $input) {
|
|
12
14
|
id
|
|
13
15
|
name
|
|
14
16
|
description
|
|
15
17
|
type
|
|
18
|
+
planningFocus
|
|
16
19
|
isPublic
|
|
17
20
|
ownerId
|
|
18
21
|
createdAt
|
|
19
22
|
}
|
|
20
23
|
}
|
|
21
24
|
`;
|
|
22
|
-
function
|
|
23
|
-
let { workspaceId:
|
|
25
|
+
function x() {
|
|
26
|
+
let { workspaceId: u, currentUser: x } = e(), S = t(), [C, w] = a({
|
|
24
27
|
name: "",
|
|
25
28
|
description: "",
|
|
26
|
-
|
|
29
|
+
planningFocus: null,
|
|
27
30
|
isPublic: !1
|
|
28
|
-
}), [
|
|
29
|
-
|
|
30
|
-
onCompleted: () => {
|
|
31
|
-
y("/products/roadmaps-page");
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
return /* @__PURE__ */ u("div", {
|
|
31
|
+
}), [T, E] = a(null), [D, { loading: O }] = d(b, { refetchQueries: ["ListRoadmapsPage", "ListRoadmaps"] });
|
|
32
|
+
return /* @__PURE__ */ p("div", {
|
|
35
33
|
className: "space-y-6 p-6 max-w-4xl",
|
|
36
34
|
children: [
|
|
37
|
-
/* @__PURE__ */
|
|
35
|
+
/* @__PURE__ */ p("div", {
|
|
38
36
|
className: "flex items-center justify-between",
|
|
39
|
-
children: [/* @__PURE__ */
|
|
37
|
+
children: [/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("h1", {
|
|
40
38
|
className: "text-2xl font-semibold",
|
|
41
39
|
children: "Create Roadmap"
|
|
42
|
-
}), /* @__PURE__ */
|
|
40
|
+
}), /* @__PURE__ */ f("p", {
|
|
43
41
|
className: "text-sm text-muted-foreground",
|
|
44
42
|
children: "Define a new product roadmap with milestones and features."
|
|
45
|
-
})] }), /* @__PURE__ */
|
|
43
|
+
})] }), /* @__PURE__ */ p("div", {
|
|
46
44
|
className: "flex gap-2",
|
|
47
|
-
children: [/* @__PURE__ */
|
|
45
|
+
children: [/* @__PURE__ */ p(m, {
|
|
48
46
|
variant: "outline",
|
|
49
47
|
size: "sm",
|
|
50
|
-
onClick: () =>
|
|
51
|
-
children: [/* @__PURE__ */ l
|
|
52
|
-
}), /* @__PURE__ */
|
|
48
|
+
onClick: () => S("/products/roadmaps-page"),
|
|
49
|
+
children: [/* @__PURE__ */ f(l, { className: "mr-1 h-4 w-4" }), "Cancel"]
|
|
50
|
+
}), /* @__PURE__ */ p(m, {
|
|
53
51
|
size: "sm",
|
|
54
|
-
onClick: () => {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
52
|
+
onClick: async () => {
|
|
53
|
+
if (C.name.trim()) {
|
|
54
|
+
E(null);
|
|
55
|
+
try {
|
|
56
|
+
await n(D({ variables: { input: {
|
|
57
|
+
name: C.name,
|
|
58
|
+
description: C.description || void 0,
|
|
59
|
+
type: i,
|
|
60
|
+
...C.planningFocus ? { planningFocus: C.planningFocus } : {},
|
|
61
|
+
isPublic: C.isPublic,
|
|
62
|
+
ownerId: x?.id ?? ""
|
|
63
|
+
} } })), S("/products/roadmaps-page");
|
|
64
|
+
} catch (e) {
|
|
65
|
+
E(e instanceof Error ? e.message : "The roadmap could not be created.");
|
|
66
|
+
}
|
|
67
|
+
}
|
|
62
68
|
},
|
|
63
|
-
disabled:
|
|
64
|
-
children: [
|
|
69
|
+
disabled: O || !C.name.trim(),
|
|
70
|
+
children: [O ? /* @__PURE__ */ f(o, { className: "mr-1 h-4 w-4 animate-spin" }) : /* @__PURE__ */ f(c, { className: "mr-1 h-4 w-4" }), "Create Roadmap"]
|
|
65
71
|
})]
|
|
66
72
|
})]
|
|
67
73
|
}),
|
|
68
|
-
|
|
74
|
+
T && /* @__PURE__ */ p("div", {
|
|
75
|
+
role: "alert",
|
|
69
76
|
className: "p-3 rounded-md bg-destructive/10 text-destructive text-sm",
|
|
70
|
-
children: ["Failed to create roadmap: ",
|
|
77
|
+
children: ["Failed to create roadmap: ", T]
|
|
71
78
|
}),
|
|
72
|
-
/* @__PURE__ */
|
|
79
|
+
/* @__PURE__ */ p(h, { children: [/* @__PURE__ */ f(_, { children: /* @__PURE__ */ p(v, {
|
|
73
80
|
className: "flex items-center gap-2",
|
|
74
|
-
children: [/* @__PURE__ */
|
|
75
|
-
}) }), /* @__PURE__ */
|
|
81
|
+
children: [/* @__PURE__ */ f(s, { className: "h-4 w-4" }), "Roadmap Details"]
|
|
82
|
+
}) }), /* @__PURE__ */ p(g, {
|
|
76
83
|
className: "space-y-4",
|
|
77
84
|
children: [
|
|
78
|
-
/* @__PURE__ */
|
|
85
|
+
/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
|
|
79
86
|
className: "text-sm font-medium",
|
|
80
87
|
children: "Name"
|
|
81
|
-
}), /* @__PURE__ */
|
|
82
|
-
value:
|
|
83
|
-
onChange: (e) =>
|
|
84
|
-
...
|
|
88
|
+
}), /* @__PURE__ */ f(y, {
|
|
89
|
+
value: C.name,
|
|
90
|
+
onChange: (e) => w({
|
|
91
|
+
...C,
|
|
85
92
|
name: e.target.value
|
|
86
93
|
}),
|
|
87
94
|
className: "mt-1",
|
|
88
95
|
placeholder: "e.g. 2026 Platform Roadmap"
|
|
89
96
|
})] }),
|
|
90
|
-
/* @__PURE__ */
|
|
97
|
+
/* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
|
|
91
98
|
className: "text-sm font-medium",
|
|
92
99
|
children: "Description"
|
|
93
|
-
}), /* @__PURE__ */
|
|
100
|
+
}), /* @__PURE__ */ f("textarea", {
|
|
94
101
|
className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[80px]",
|
|
95
|
-
value:
|
|
96
|
-
onChange: (e) =>
|
|
97
|
-
...
|
|
102
|
+
value: C.description,
|
|
103
|
+
onChange: (e) => w({
|
|
104
|
+
...C,
|
|
98
105
|
description: e.target.value
|
|
99
106
|
}),
|
|
100
107
|
placeholder: "Describe the roadmap goals and scope..."
|
|
101
108
|
})] }),
|
|
102
|
-
/* @__PURE__ */
|
|
109
|
+
/* @__PURE__ */ p("div", {
|
|
103
110
|
className: "grid grid-cols-2 gap-4",
|
|
104
|
-
children: [/* @__PURE__ */
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
...b,
|
|
112
|
-
type: e.target.value
|
|
113
|
-
}),
|
|
114
|
-
children: [
|
|
115
|
-
"TIMELINE",
|
|
116
|
-
"GANTT",
|
|
117
|
-
"SWIMLANE",
|
|
118
|
-
"CUSTOM"
|
|
119
|
-
].map((e) => /* @__PURE__ */ l("option", {
|
|
120
|
-
value: e,
|
|
121
|
-
className: "capitalize",
|
|
122
|
-
children: e.toLowerCase()
|
|
123
|
-
}, e))
|
|
124
|
-
})] }), /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("label", {
|
|
111
|
+
children: [/* @__PURE__ */ f(r, {
|
|
112
|
+
value: C.planningFocus,
|
|
113
|
+
onChange: (e) => w({
|
|
114
|
+
...C,
|
|
115
|
+
planningFocus: e
|
|
116
|
+
})
|
|
117
|
+
}), /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("label", {
|
|
125
118
|
className: "text-sm font-medium",
|
|
126
119
|
children: "Visibility"
|
|
127
|
-
}), /* @__PURE__ */
|
|
120
|
+
}), /* @__PURE__ */ p("select", {
|
|
128
121
|
className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
|
|
129
|
-
value:
|
|
130
|
-
onChange: (e) =>
|
|
131
|
-
...
|
|
122
|
+
value: C.isPublic ? "public" : "private",
|
|
123
|
+
onChange: (e) => w({
|
|
124
|
+
...C,
|
|
132
125
|
isPublic: e.target.value === "public"
|
|
133
126
|
}),
|
|
134
|
-
children: [/* @__PURE__ */
|
|
127
|
+
children: [/* @__PURE__ */ f("option", {
|
|
135
128
|
value: "private",
|
|
136
129
|
children: "Private"
|
|
137
|
-
}), /* @__PURE__ */
|
|
130
|
+
}), /* @__PURE__ */ f("option", {
|
|
138
131
|
value: "public",
|
|
139
132
|
children: "Public"
|
|
140
133
|
})]
|
|
@@ -146,6 +139,6 @@ function v() {
|
|
|
146
139
|
});
|
|
147
140
|
}
|
|
148
141
|
//#endregion
|
|
149
|
-
export {
|
|
142
|
+
export { x as ProductsCreateRoadmapPagePage };
|
|
150
143
|
|
|
151
144
|
//# sourceMappingURL=ProductsCreateRoadmapPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductsCreateRoadmapPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsCreateRoadmapPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Button, Input } from '@burdenoff/fe-libs/ui';\nimport { Save, X, Map, Loader2 } from 'lucide-react';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\n\nconst CREATE_ROADMAP = gql`\n mutation CreateRoadmapPage($input: PlanmagnetCreateRoadmapInput!) {\n planmagnetCreateRoadmap(input: $input) {\n id\n name\n description\n type\n isPublic\n ownerId\n createdAt\n }\n }\n`;\n\nexport function ProductsCreateRoadmapPagePage() {\n const { workspaceId, currentUser } = usePlanMagnet();\n const navigate = usePlanMagnetNavigate();\n\n const [form, setForm] = useState({\n name: '',\n description: '',\n
|
|
1
|
+
{"version":3,"file":"ProductsCreateRoadmapPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsCreateRoadmapPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Button, Input } from '@burdenoff/fe-libs/ui';\nimport { Save, X, Map, Loader2 } from 'lucide-react';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { throwOnError } from '../utils/mutationResult';\nimport {\n PlanningFocusSelect,\n ROADMAP_DISPLAY,\n type PlanningFocus,\n} from '../roadmaps/planningFocus';\n\nconst CREATE_ROADMAP = gql`\n mutation CreateRoadmapPage($input: PlanmagnetCreateRoadmapInput!) {\n planmagnetCreateRoadmap(input: $input) {\n id\n name\n description\n type\n planningFocus\n isPublic\n ownerId\n createdAt\n }\n }\n`;\n\nexport function ProductsCreateRoadmapPagePage() {\n const { workspaceId, currentUser } = usePlanMagnet();\n const navigate = usePlanMagnetNavigate();\n\n const [form, setForm] = useState({\n name: '',\n description: '',\n planningFocus: null as PlanningFocus | null,\n isPublic: false,\n });\n\n const [saveError, setSaveError] = useState<string | null>(null);\n const [createRoadmap, { loading: saving }] = useMutation(CREATE_ROADMAP, {\n refetchQueries: ['ListRoadmapsPage', 'ListRoadmaps'],\n });\n\n // Navigate only after the service ACCEPTED the roadmap: a refused create\n // (e.g. a duplicate name) resolves rather than rejects under fe-libs'\n // errorPolicy 'all', and onCompleted-style navigation would leave the page\n // with the reason unseen.\n const handleCreate = async () => {\n if (!form.name.trim()) return;\n setSaveError(null);\n try {\n await throwOnError(\n createRoadmap({\n variables: {\n input: {\n name: form.name,\n description: form.description || undefined,\n type: ROADMAP_DISPLAY,\n ...(form.planningFocus ? { planningFocus: form.planningFocus } : {}),\n isPublic: form.isPublic,\n ownerId: currentUser?.id ?? '',\n },\n },\n })\n );\n navigate('/products/roadmaps-page');\n } catch (e) {\n setSaveError(e instanceof Error ? e.message : 'The roadmap could not be created.');\n }\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\">Create Roadmap</h1>\n <p className=\"text-sm text-muted-foreground\">\n Define a new product roadmap with milestones and features.\n </p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => navigate('/products/roadmaps-page')}>\n <X className=\"mr-1 h-4 w-4\" />\n Cancel\n </Button>\n <Button size=\"sm\" onClick={handleCreate} disabled={saving || !form.name.trim()}>\n {saving ? (\n <Loader2 className=\"mr-1 h-4 w-4 animate-spin\" />\n ) : (\n <Save className=\"mr-1 h-4 w-4\" />\n )}\n Create Roadmap\n </Button>\n </div>\n </div>\n\n {saveError && (\n <div role=\"alert\" className=\"p-3 rounded-md bg-destructive/10 text-destructive text-sm\">\n Failed to create roadmap: {saveError}\n </div>\n )}\n\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Map className=\"h-4 w-4\" />\n Roadmap Details\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <label className=\"text-sm font-medium\">Name</label>\n <Input\n value={form.name}\n onChange={(e) => setForm({ ...form, name: e.target.value })}\n className=\"mt-1\"\n placeholder=\"e.g. 2026 Platform Roadmap\"\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-[80px]\"\n value={form.description}\n onChange={(e) => setForm({ ...form, description: e.target.value })}\n placeholder=\"Describe the roadmap goals and scope...\"\n />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <PlanningFocusSelect\n value={form.planningFocus}\n onChange={(planningFocus) => setForm({ ...form, planningFocus })}\n />\n <div>\n <label className=\"text-sm font-medium\">Visibility</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.isPublic ? 'public' : 'private'}\n onChange={(e) => setForm({ ...form, isPublic: e.target.value === 'public' })}\n >\n <option value=\"private\">Private</option>\n <option value=\"public\">Public</option>\n </select>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductsEditProductPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsEditProductPagePage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProductsEditProductPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsEditProductPagePage.tsx"],"names":[],"mappings":"AAkEA,wBAAgB,2BAA2B,4CAwN1C"}
|