@burdenoff/microfe-planmagnet 2026.1001.2 → 2026.1001.4
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/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoot.js +160 -153
- package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.js +121 -109
- package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
- package/dist/planmagnet/controls/MilestoneControls.d.ts +2 -0
- package/dist/planmagnet/controls/MilestoneControls.d.ts.map +1 -1
- package/dist/planmagnet/controls/MilestoneControls.js +89 -72
- package/dist/planmagnet/controls/MilestoneControls.js.map +1 -1
- package/dist/planmagnet/meetings/MeetingActionItemsPanel.d.ts +17 -0
- package/dist/planmagnet/meetings/MeetingActionItemsPanel.d.ts.map +1 -0
- package/dist/planmagnet/meetings/MeetingActionItemsPanel.js +218 -0
- package/dist/planmagnet/meetings/MeetingActionItemsPanel.js.map +1 -0
- package/dist/planmagnet/meetings/MeetingsCard.d.ts +7 -0
- package/dist/planmagnet/meetings/MeetingsCard.d.ts.map +1 -0
- package/dist/planmagnet/meetings/MeetingsCard.js +108 -0
- package/dist/planmagnet/meetings/MeetingsCard.js.map +1 -0
- package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.d.ts +9 -0
- package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.d.ts.map +1 -0
- package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.js +232 -0
- package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.js.map +1 -0
- package/dist/planmagnet/meetings/ScheduleMeetingDialog.d.ts +19 -0
- package/dist/planmagnet/meetings/ScheduleMeetingDialog.d.ts.map +1 -0
- package/dist/planmagnet/meetings/ScheduleMeetingDialog.js +226 -0
- package/dist/planmagnet/meetings/ScheduleMeetingDialog.js.map +1 -0
- package/dist/planmagnet/meetings/UnlinkMeetingDialog.d.ts +14 -0
- package/dist/planmagnet/meetings/UnlinkMeetingDialog.d.ts.map +1 -0
- package/dist/planmagnet/meetings/UnlinkMeetingDialog.js +78 -0
- package/dist/planmagnet/meetings/UnlinkMeetingDialog.js.map +1 -0
- package/dist/planmagnet/meetings/meetingActions.d.ts +58 -0
- package/dist/planmagnet/meetings/meetingActions.d.ts.map +1 -0
- package/dist/planmagnet/meetings/meetingActions.js +48 -0
- package/dist/planmagnet/meetings/meetingActions.js.map +1 -0
- package/dist/planmagnet/meetings/meetingGraphql.d.ts +29 -0
- package/dist/planmagnet/meetings/meetingGraphql.d.ts.map +1 -0
- package/dist/planmagnet/meetings/meetingGraphql.js +166 -0
- package/dist/planmagnet/meetings/meetingGraphql.js.map +1 -0
- package/dist/planmagnet/meetings/meetingModel.d.ts +74 -0
- package/dist/planmagnet/meetings/meetingModel.d.ts.map +1 -0
- package/dist/planmagnet/meetings/meetingModel.js +88 -0
- package/dist/planmagnet/meetings/meetingModel.js.map +1 -0
- package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.js +197 -0
- package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.js.map +1 -0
- package/dist/planmagnet/pages/MeetingsMeetingsPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/MeetingsMeetingsPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/MeetingsMeetingsPagePage.js +173 -0
- package/dist/planmagnet/pages/MeetingsMeetingsPagePage.js.map +1 -0
- package/dist/planmagnet/pages/ProjectsMilestonesPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js +73 -52
- package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +205 -190
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +192 -187
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
- package/dist/planmagnet/reports/ShareDialog.js +65 -65
- package/dist/planmagnet/reports/ShareDialog.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanMagnetRoot.js","names":[],"sources":["../../src/planmagnet/PlanMagnetRoot.tsx"],"sourcesContent":["import type { FC, ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport {\n LayoutDashboard,\n Package,\n FolderKanban,\n CheckSquare,\n Zap,\n CalendarDays,\n Users,\n TrendingUp,\n Star,\n GitBranch,\n Map,\n Target,\n Flag,\n UserPlus,\n Briefcase,\n Swords,\n Bot,\n LayoutTemplate,\n ShieldCheck,\n Sparkles,\n History,\n SquareGanttChart,\n ShieldAlert,\n Activity as ActivityIcon,\n LayoutGrid,\n ClipboardList,\n UsersRound,\n Crown,\n Gauge,\n BarChart3,\n} from 'lucide-react';\nimport { PlanMagnetProvider, usePlanMagnet } from './providers/PlanMagnetProvider';\nimport { PeopleProvider } from './people/People';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useTr } from '../shared/hooks/useTr';\nimport type { NavItem, PlanMagnetRootProps } from './types';\nimport { PlanMagnetRoutes } from './PlanMagnetRoutes';\nimport { joinPath } from './utils/navigation';\nimport { PRIORITIZATION_PATH } from './product/routes';\n\n/** Resolves user ids to names for every page, in one batch (see people/People.tsx). */\nfunction PlanMagnetPeople({ children }: { children: ReactNode }) {\n const { workspaceId } = usePlanMagnet();\n return <PeopleProvider workspaceId={workspaceId ?? undefined}>{children}</PeopleProvider>;\n}\n\nexport const PlanMagnetRoot: FC<PlanMagnetRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const tr = useTr();\n\n useEffect(() => {\n if (!registerNavItems) return;\n const navItem: NavItem = {\n id: 'planmagnet',\n label: tr('planmagnet.nav.root', 'PlanMagnet'),\n path: basePath,\n icon: <LayoutDashboard size={20} />,\n order: 80,\n group: 'products',\n children: [\n {\n id: 'planmagnet-dashboard',\n label: tr('planmagnet.nav.dashboard', 'Dashboard'),\n path: joinPath(basePath, 'dashboard/dashboard-page'),\n icon: <LayoutDashboard size={16} />,\n order: 1,\n },\n {\n // ANR-06/07/28, CWF-31: role dashboards composed from existing queries — no new backend.\n id: 'planmagnet-dashboards',\n label: tr('planmagnet.nav.dashboards', 'Dashboards'),\n path: joinPath(basePath, 'dashboards/executive-page'),\n icon: <LayoutGrid size={16} />,\n order: 1.5,\n children: [\n {\n id: 'planmagnet-dashboards-executive',\n label: tr('planmagnet.nav.dashboards.executive', 'Executive'),\n path: joinPath(basePath, 'dashboards/executive-page'),\n icon: <LayoutGrid size={16} />,\n },\n {\n id: 'planmagnet-dashboards-pm',\n label: tr('planmagnet.nav.dashboards.pm', 'Project manager'),\n path: joinPath(basePath, 'dashboards/project-manager-page'),\n icon: <ClipboardList size={16} />,\n },\n {\n id: 'planmagnet-dashboards-team',\n label: tr('planmagnet.nav.dashboards.team', 'Team utilization'),\n path: joinPath(basePath, 'dashboards/team-utilization-page'),\n icon: <UsersRound size={16} />,\n },\n {\n id: 'planmagnet-dashboards-leadership',\n label: tr('planmagnet.nav.dashboards.leadership', 'Leadership'),\n path: joinPath(basePath, 'dashboards/leadership-page'),\n icon: <Crown size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-products',\n label: tr('planmagnet.nav.products', 'Products'),\n // BOFF-8045: Product is now a real entity (vision, lifecycle stage, North\n // Star) distinct from Roadmap — `products-page` shows real Products, and\n // the group root points there again. \"Roadmaps\" stays as its own child\n // below, now genuinely about roadmaps rather than products relabelled.\n path: joinPath(basePath, 'products/products-page'),\n icon: <Package size={16} />,\n order: 2,\n children: [\n {\n id: 'planmagnet-features',\n label: tr('planmagnet.nav.products.features', 'Features'),\n path: joinPath(basePath, 'products/features-page'),\n icon: <Star size={16} />,\n },\n {\n id: 'planmagnet-releases',\n label: tr('planmagnet.nav.products.releases', 'Releases'),\n path: joinPath(basePath, 'products/releases-page'),\n icon: <GitBranch size={16} />,\n },\n {\n id: 'planmagnet-roadmaps',\n label: tr('planmagnet.nav.products.roadmaps', 'Roadmaps'),\n path: joinPath(basePath, 'products/roadmaps-page'),\n icon: <Map size={16} />,\n },\n {\n // BOFF-8047: Portfolios and Programs were `api-only` — full CRUD existed in the service with\n // zero routes anywhere in the UI.\n id: 'planmagnet-portfolios',\n label: tr('planmagnet.nav.products.portfolios', 'Portfolios'),\n path: joinPath(basePath, 'products/portfolios-page'),\n icon: <Briefcase size={16} />,\n },\n {\n id: 'planmagnet-programs',\n label: tr('planmagnet.nav.products.programs', 'Programs'),\n path: joinPath(basePath, 'products/programs-page'),\n icon: <FolderKanban size={16} />,\n },\n {\n id: 'planmagnet-competitors',\n label: tr('planmagnet.nav.products.competitors', 'Competitors'),\n path: joinPath(basePath, 'products/competitors-page'),\n icon: <Swords size={16} />,\n },\n {\n // PRM-27: MoSCoW/Kano/Value-vs-Effort over feature requests or roadmap initiatives.\n id: 'planmagnet-prioritization',\n label: tr('planmagnet.nav.products.prioritization', 'Prioritization'),\n path: joinPath(basePath, PRIORITIZATION_PATH),\n icon: <Gauge size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-projects',\n label: tr('planmagnet.nav.projects', 'Projects'),\n path: joinPath(basePath, 'projects/projects-page'),\n icon: <FolderKanban size={16} />,\n order: 3,\n children: [\n {\n id: 'planmagnet-projects-all',\n label: tr('planmagnet.nav.projects.all', 'All Projects'),\n path: joinPath(basePath, 'projects/projects-page'),\n icon: <FolderKanban size={16} />,\n },\n {\n id: 'planmagnet-projects-active',\n label: tr('planmagnet.nav.projects.active', 'Active Projects'),\n path: joinPath(basePath, 'projects/active-projects-page'),\n icon: <TrendingUp size={16} />,\n },\n {\n id: 'planmagnet-projects-create',\n label: tr('planmagnet.nav.projects.create', 'Create Project'),\n path: joinPath(basePath, 'projects/create-project-page'),\n icon: <FolderKanban size={16} />,\n },\n {\n id: 'planmagnet-milestones',\n label: tr('planmagnet.nav.projects.milestones', 'Milestones'),\n path: joinPath(basePath, 'projects/milestones-page'),\n icon: <Target size={16} />,\n },\n {\n id: 'planmagnet-planning',\n label: tr('planmagnet.nav.projects.planning', 'Planning'),\n path: joinPath(basePath, 'projects/planning-page'),\n icon: <CalendarDays size={16} />,\n },\n {\n id: 'planmagnet-templates',\n label: tr('planmagnet.nav.projects.templates', 'Templates'),\n path: joinPath(basePath, 'templates/templates-page'),\n icon: <LayoutTemplate size={16} />,\n },\n {\n // GAP-02: the gates a release or phase must pass — list, criteria, review.\n id: 'planmagnet-quality-gates',\n label: tr('planmagnet.nav.projects.qualityGates', 'Quality gates'),\n path: joinPath(basePath, 'projects/quality-gates-page'),\n icon: <ShieldCheck size={16} />,\n },\n {\n // ANR-24: a timeline over the same WorkItemDependency graph the critical-path page's\n // dependency graph (PDM-27) reads.\n id: 'planmagnet-gantt',\n label: tr('planmagnet.nav.projects.gantt', 'Gantt'),\n path: joinPath(basePath, 'projects/gantt-page'),\n icon: <SquareGanttChart size={16} />,\n },\n {\n // AI-10: rule-based at-risk work item flags, project-scoped.\n id: 'planmagnet-at-risk',\n label: tr('planmagnet.nav.projects.atRisk', 'At-risk work'),\n path: joinPath(basePath, 'projects/at-risk-page'),\n icon: <ShieldAlert size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-goals',\n label: tr('planmagnet.nav.goals', 'Goals (OKRs)'),\n path: joinPath(basePath, 'goals/goals-page'),\n icon: <Flag size={16} />,\n order: 3.5,\n children: [\n {\n id: 'planmagnet-goals-all',\n label: tr('planmagnet.nav.goals.all', 'All Objectives'),\n path: joinPath(basePath, 'goals/goals-page'),\n icon: <Flag size={16} />,\n },\n {\n id: 'planmagnet-goals-create',\n label: tr('planmagnet.nav.goals.create', 'Create Objective'),\n path: joinPath(basePath, 'goals/create-objective-page'),\n icon: <Flag size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-tasks',\n label: tr('planmagnet.nav.tasks', 'Tasks'),\n path: joinPath(basePath, 'tasks/tasks-page'),\n icon: <CheckSquare size={16} />,\n order: 4,\n children: [\n {\n // ANR-08: a team member's own time/delivery/goals view — first, alongside My Work.\n id: 'planmagnet-tasks-my-dashboard',\n label: tr('planmagnet.nav.tasks.myDashboard', 'My dashboard'),\n path: joinPath(basePath, 'tasks/my-dashboard-page'),\n icon: <LayoutDashboard size={16} />,\n },\n {\n id: 'planmagnet-tasks-board',\n label: tr('planmagnet.nav.tasks.board', 'Task Board'),\n path: joinPath(basePath, 'tasks/tasks-page'),\n icon: <CheckSquare size={16} />,\n },\n {\n id: 'planmagnet-tasks-create',\n label: tr('planmagnet.nav.tasks.create', 'Create Task'),\n path: joinPath(basePath, 'tasks/create-task-page'),\n icon: <CheckSquare size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-sprints',\n label: tr('planmagnet.nav.sprints', 'Sprints'),\n path: joinPath(basePath, 'sprints/start-sprint-page'),\n icon: <Zap size={16} />,\n order: 5,\n },\n {\n id: 'planmagnet-automation',\n label: tr('planmagnet.nav.automation', 'Automation'),\n path: joinPath(basePath, 'automation/automation-rules-page'),\n icon: <Bot size={16} />,\n order: 5.5,\n children: [\n {\n id: 'planmagnet-automation-rules',\n label: tr('planmagnet.nav.automation.rules', 'Rules'),\n path: joinPath(basePath, 'automation/automation-rules-page'),\n icon: <Bot size={16} />,\n },\n {\n id: 'planmagnet-automation-create',\n label: tr('planmagnet.nav.automation.create', 'New rule'),\n path: joinPath(basePath, 'automation/create-automation-rule-page'),\n icon: <Bot size={16} />,\n },\n ],\n },\n {\n // AI-05 / AI-24: break work down with AI (every suggestion is confirmed by a person before it is created),\n // and the caller's own agent runs.\n id: 'planmagnet-ai',\n label: tr('planmagnet.nav.ai', 'AI planning'),\n path: joinPath(basePath, 'ai/plan-page'),\n icon: <Sparkles size={16} />,\n order: 5.7,\n children: [\n {\n id: 'planmagnet-ai-plan',\n label: tr('planmagnet.nav.ai.plan', 'Break down work'),\n path: joinPath(basePath, 'ai/plan-page'),\n icon: <Sparkles size={16} />,\n },\n {\n id: 'planmagnet-ai-activity',\n label: tr('planmagnet.nav.ai.activity', 'My AI activity'),\n path: joinPath(basePath, 'ai/activity-page'),\n icon: <History size={16} />,\n },\n ],\n },\n {\n // CWF-09: a merged, newest-first feed of work-item events across the workspace — creation, status\n // changes, comments and tracked field edits. A top-level item (not nested, unlike \"My AI activity\"\n // above, which is scoped to the caller's own AI calls) since this feed covers every project.\n id: 'planmagnet-activity',\n label: tr('planmagnet.nav.activity', 'Activity'),\n path: joinPath(basePath, 'activity/activity-page'),\n icon: <ActivityIcon size={16} />,\n order: 6,\n },\n {\n // ANR-13/14/15/16/17: a real, ownable, shareable, schedulable report model now backs this — it was\n // hidden (register: `not-built`) while the page fabricated rows client-side and Save ran no\n // mutation; see git history / BOFF-7822.\n id: 'planmagnet-reports',\n label: tr('planmagnet.nav.reports', 'Reports'),\n path: joinPath(basePath, 'reports/reports-page'),\n icon: <BarChart3 size={16} />,\n order: 8,\n },\n {\n // BOFF-8044: \"Team roster\" (a workspace directory, not a team) is relabelled \"Members\" so\n // it stops colliding with the real Team entity's own \"Teams\" list added alongside it.\n // \"Create Team\" is no longer hidden — the Team model now exists. \"Invite Member\" sends a\n // real invitation through the platform's createInvitation with a PlanMagnet access level (H12).\n id: 'planmagnet-team',\n label: tr('planmagnet.nav.team', 'Team'),\n path: joinPath(basePath, 'team/team-page'),\n icon: <Users size={16} />,\n order: 10,\n children: [\n {\n id: 'planmagnet-teams',\n label: tr('planmagnet.nav.team.teams', 'Teams'),\n path: joinPath(basePath, 'team/teams-page'),\n icon: <Users size={16} />,\n },\n {\n // BOFF-8044: a NEW key, not a relabel of 'planmagnet.nav.team.roster' — a locale that\n // already had that key translated as \"Team roster\" would otherwise keep showing the\n // old wording regardless of this fallback, since useTr only falls back when the\n // provider has no translation for the KEY at all.\n id: 'planmagnet-team-roster',\n label: tr('planmagnet.nav.team.members', 'Members'),\n path: joinPath(basePath, 'team/team-page'),\n icon: <Users size={16} />,\n },\n {\n id: 'planmagnet-team-invite',\n label: tr('planmagnet.nav.team.invite', 'Invite member'),\n path: joinPath(basePath, 'team/invite-member-page'),\n icon: <UserPlus size={16} />,\n },\n ],\n },\n // \"Workspace\" hidden: `create-workspace-page` navigated home on submit and created\n // nothing (a false success). Workspaces are created from the shell's workspace\n // switcher, which is the platform's real flow. Route kept; page now says so.\n {\n id: 'planmagnet-analytics',\n label: tr('planmagnet.nav.analytics', 'Analytics'),\n path: joinPath(basePath, 'analytics/analytics-page'),\n icon: <TrendingUp size={16} />,\n order: 12,\n },\n ],\n };\n return registerNavItems(navItem);\n }, [registerNavItems, basePath, tr]);\n\n useEffect(() => {\n if (!registerFooterItems) return;\n return registerFooterItems([\n {\n id: 'planmagnet-status',\n label: tr('planmagnet.footer.ready', 'PlanMagnet Ready'),\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems, tr]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <PlanMagnetProvider {...props}>\n <PlanMagnetPeople>\n <PlanMagnetRoutes />\n </PlanMagnetPeople>\n </PlanMagnetProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlanMagnetRoot.js","names":[],"sources":["../../src/planmagnet/PlanMagnetRoot.tsx"],"sourcesContent":["import type { FC, ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport {\n LayoutDashboard,\n Package,\n FolderKanban,\n CheckSquare,\n Zap,\n CalendarDays,\n CalendarClock,\n Users,\n TrendingUp,\n Star,\n GitBranch,\n Map,\n Target,\n Flag,\n UserPlus,\n Briefcase,\n Swords,\n Bot,\n LayoutTemplate,\n ShieldCheck,\n Sparkles,\n History,\n SquareGanttChart,\n ShieldAlert,\n Activity as ActivityIcon,\n LayoutGrid,\n ClipboardList,\n UsersRound,\n Crown,\n Gauge,\n BarChart3,\n} from 'lucide-react';\nimport { PlanMagnetProvider, usePlanMagnet } from './providers/PlanMagnetProvider';\nimport { PeopleProvider } from './people/People';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useTr } from '../shared/hooks/useTr';\nimport type { NavItem, PlanMagnetRootProps } from './types';\nimport { PlanMagnetRoutes } from './PlanMagnetRoutes';\nimport { joinPath } from './utils/navigation';\nimport { PRIORITIZATION_PATH } from './product/routes';\n\n/** Resolves user ids to names for every page, in one batch (see people/People.tsx). */\nfunction PlanMagnetPeople({ children }: { children: ReactNode }) {\n const { workspaceId } = usePlanMagnet();\n return <PeopleProvider workspaceId={workspaceId ?? undefined}>{children}</PeopleProvider>;\n}\n\nexport const PlanMagnetRoot: FC<PlanMagnetRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const tr = useTr();\n\n useEffect(() => {\n if (!registerNavItems) return;\n const navItem: NavItem = {\n id: 'planmagnet',\n label: tr('planmagnet.nav.root', 'PlanMagnet'),\n path: basePath,\n icon: <LayoutDashboard size={20} />,\n order: 80,\n group: 'products',\n children: [\n {\n id: 'planmagnet-dashboard',\n label: tr('planmagnet.nav.dashboard', 'Dashboard'),\n path: joinPath(basePath, 'dashboard/dashboard-page'),\n icon: <LayoutDashboard size={16} />,\n order: 1,\n },\n {\n // ANR-06/07/28, CWF-31: role dashboards composed from existing queries — no new backend.\n id: 'planmagnet-dashboards',\n label: tr('planmagnet.nav.dashboards', 'Dashboards'),\n path: joinPath(basePath, 'dashboards/executive-page'),\n icon: <LayoutGrid size={16} />,\n order: 1.5,\n children: [\n {\n id: 'planmagnet-dashboards-executive',\n label: tr('planmagnet.nav.dashboards.executive', 'Executive'),\n path: joinPath(basePath, 'dashboards/executive-page'),\n icon: <LayoutGrid size={16} />,\n },\n {\n id: 'planmagnet-dashboards-pm',\n label: tr('planmagnet.nav.dashboards.pm', 'Project manager'),\n path: joinPath(basePath, 'dashboards/project-manager-page'),\n icon: <ClipboardList size={16} />,\n },\n {\n id: 'planmagnet-dashboards-team',\n label: tr('planmagnet.nav.dashboards.team', 'Team utilization'),\n path: joinPath(basePath, 'dashboards/team-utilization-page'),\n icon: <UsersRound size={16} />,\n },\n {\n id: 'planmagnet-dashboards-leadership',\n label: tr('planmagnet.nav.dashboards.leadership', 'Leadership'),\n path: joinPath(basePath, 'dashboards/leadership-page'),\n icon: <Crown size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-products',\n label: tr('planmagnet.nav.products', 'Products'),\n // BOFF-8045: Product is now a real entity (vision, lifecycle stage, North\n // Star) distinct from Roadmap — `products-page` shows real Products, and\n // the group root points there again. \"Roadmaps\" stays as its own child\n // below, now genuinely about roadmaps rather than products relabelled.\n path: joinPath(basePath, 'products/products-page'),\n icon: <Package size={16} />,\n order: 2,\n children: [\n {\n id: 'planmagnet-features',\n label: tr('planmagnet.nav.products.features', 'Features'),\n path: joinPath(basePath, 'products/features-page'),\n icon: <Star size={16} />,\n },\n {\n id: 'planmagnet-releases',\n label: tr('planmagnet.nav.products.releases', 'Releases'),\n path: joinPath(basePath, 'products/releases-page'),\n icon: <GitBranch size={16} />,\n },\n {\n id: 'planmagnet-roadmaps',\n label: tr('planmagnet.nav.products.roadmaps', 'Roadmaps'),\n path: joinPath(basePath, 'products/roadmaps-page'),\n icon: <Map size={16} />,\n },\n {\n // BOFF-8047: Portfolios and Programs were `api-only` — full CRUD existed in the service with\n // zero routes anywhere in the UI.\n id: 'planmagnet-portfolios',\n label: tr('planmagnet.nav.products.portfolios', 'Portfolios'),\n path: joinPath(basePath, 'products/portfolios-page'),\n icon: <Briefcase size={16} />,\n },\n {\n id: 'planmagnet-programs',\n label: tr('planmagnet.nav.products.programs', 'Programs'),\n path: joinPath(basePath, 'products/programs-page'),\n icon: <FolderKanban size={16} />,\n },\n {\n id: 'planmagnet-competitors',\n label: tr('planmagnet.nav.products.competitors', 'Competitors'),\n path: joinPath(basePath, 'products/competitors-page'),\n icon: <Swords size={16} />,\n },\n {\n // PRM-27: MoSCoW/Kano/Value-vs-Effort over feature requests or roadmap initiatives.\n id: 'planmagnet-prioritization',\n label: tr('planmagnet.nav.products.prioritization', 'Prioritization'),\n path: joinPath(basePath, PRIORITIZATION_PATH),\n icon: <Gauge size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-projects',\n label: tr('planmagnet.nav.projects', 'Projects'),\n path: joinPath(basePath, 'projects/projects-page'),\n icon: <FolderKanban size={16} />,\n order: 3,\n children: [\n {\n id: 'planmagnet-projects-all',\n label: tr('planmagnet.nav.projects.all', 'All Projects'),\n path: joinPath(basePath, 'projects/projects-page'),\n icon: <FolderKanban size={16} />,\n },\n {\n id: 'planmagnet-projects-active',\n label: tr('planmagnet.nav.projects.active', 'Active Projects'),\n path: joinPath(basePath, 'projects/active-projects-page'),\n icon: <TrendingUp size={16} />,\n },\n {\n id: 'planmagnet-projects-create',\n label: tr('planmagnet.nav.projects.create', 'Create Project'),\n path: joinPath(basePath, 'projects/create-project-page'),\n icon: <FolderKanban size={16} />,\n },\n {\n id: 'planmagnet-milestones',\n label: tr('planmagnet.nav.projects.milestones', 'Milestones'),\n path: joinPath(basePath, 'projects/milestones-page'),\n icon: <Target size={16} />,\n },\n {\n id: 'planmagnet-planning',\n label: tr('planmagnet.nav.projects.planning', 'Planning'),\n path: joinPath(basePath, 'projects/planning-page'),\n icon: <CalendarDays size={16} />,\n },\n {\n id: 'planmagnet-templates',\n label: tr('planmagnet.nav.projects.templates', 'Templates'),\n path: joinPath(basePath, 'templates/templates-page'),\n icon: <LayoutTemplate size={16} />,\n },\n {\n // GAP-02: the gates a release or phase must pass — list, criteria, review.\n id: 'planmagnet-quality-gates',\n label: tr('planmagnet.nav.projects.qualityGates', 'Quality gates'),\n path: joinPath(basePath, 'projects/quality-gates-page'),\n icon: <ShieldCheck size={16} />,\n },\n {\n // ANR-24: a timeline over the same WorkItemDependency graph the critical-path page's\n // dependency graph (PDM-27) reads.\n id: 'planmagnet-gantt',\n label: tr('planmagnet.nav.projects.gantt', 'Gantt'),\n path: joinPath(basePath, 'projects/gantt-page'),\n icon: <SquareGanttChart size={16} />,\n },\n {\n // AI-10: rule-based at-risk work item flags, project-scoped.\n id: 'planmagnet-at-risk',\n label: tr('planmagnet.nav.projects.atRisk', 'At-risk work'),\n path: joinPath(basePath, 'projects/at-risk-page'),\n icon: <ShieldAlert size={16} />,\n },\n ],\n },\n {\n // GAP-06, CWF-22/23: meetings scheduled through the platform Calendar module, with PlanMagnet's own\n // agenda/notes/action-items. Sits right after Projects, the other place meetings are scheduled from\n // (a project's or sprint's own Meetings card).\n id: 'planmagnet-meetings',\n label: tr('planmagnet.nav.meetings', 'Meetings'),\n path: joinPath(basePath, 'meetings/meetings-page'),\n icon: <CalendarClock size={16} />,\n order: 3.2,\n },\n {\n id: 'planmagnet-goals',\n label: tr('planmagnet.nav.goals', 'Goals (OKRs)'),\n path: joinPath(basePath, 'goals/goals-page'),\n icon: <Flag size={16} />,\n order: 3.5,\n children: [\n {\n id: 'planmagnet-goals-all',\n label: tr('planmagnet.nav.goals.all', 'All Objectives'),\n path: joinPath(basePath, 'goals/goals-page'),\n icon: <Flag size={16} />,\n },\n {\n id: 'planmagnet-goals-create',\n label: tr('planmagnet.nav.goals.create', 'Create Objective'),\n path: joinPath(basePath, 'goals/create-objective-page'),\n icon: <Flag size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-tasks',\n label: tr('planmagnet.nav.tasks', 'Tasks'),\n path: joinPath(basePath, 'tasks/tasks-page'),\n icon: <CheckSquare size={16} />,\n order: 4,\n children: [\n {\n // ANR-08: a team member's own time/delivery/goals view — first, alongside My Work.\n id: 'planmagnet-tasks-my-dashboard',\n label: tr('planmagnet.nav.tasks.myDashboard', 'My dashboard'),\n path: joinPath(basePath, 'tasks/my-dashboard-page'),\n icon: <LayoutDashboard size={16} />,\n },\n {\n id: 'planmagnet-tasks-board',\n label: tr('planmagnet.nav.tasks.board', 'Task Board'),\n path: joinPath(basePath, 'tasks/tasks-page'),\n icon: <CheckSquare size={16} />,\n },\n {\n id: 'planmagnet-tasks-create',\n label: tr('planmagnet.nav.tasks.create', 'Create Task'),\n path: joinPath(basePath, 'tasks/create-task-page'),\n icon: <CheckSquare size={16} />,\n },\n ],\n },\n {\n id: 'planmagnet-sprints',\n label: tr('planmagnet.nav.sprints', 'Sprints'),\n path: joinPath(basePath, 'sprints/start-sprint-page'),\n icon: <Zap size={16} />,\n order: 5,\n },\n {\n id: 'planmagnet-automation',\n label: tr('planmagnet.nav.automation', 'Automation'),\n path: joinPath(basePath, 'automation/automation-rules-page'),\n icon: <Bot size={16} />,\n order: 5.5,\n children: [\n {\n id: 'planmagnet-automation-rules',\n label: tr('planmagnet.nav.automation.rules', 'Rules'),\n path: joinPath(basePath, 'automation/automation-rules-page'),\n icon: <Bot size={16} />,\n },\n {\n id: 'planmagnet-automation-create',\n label: tr('planmagnet.nav.automation.create', 'New rule'),\n path: joinPath(basePath, 'automation/create-automation-rule-page'),\n icon: <Bot size={16} />,\n },\n ],\n },\n {\n // AI-05 / AI-24: break work down with AI (every suggestion is confirmed by a person before it is created),\n // and the caller's own agent runs.\n id: 'planmagnet-ai',\n label: tr('planmagnet.nav.ai', 'AI planning'),\n path: joinPath(basePath, 'ai/plan-page'),\n icon: <Sparkles size={16} />,\n order: 5.7,\n children: [\n {\n id: 'planmagnet-ai-plan',\n label: tr('planmagnet.nav.ai.plan', 'Break down work'),\n path: joinPath(basePath, 'ai/plan-page'),\n icon: <Sparkles size={16} />,\n },\n {\n id: 'planmagnet-ai-activity',\n label: tr('planmagnet.nav.ai.activity', 'My AI activity'),\n path: joinPath(basePath, 'ai/activity-page'),\n icon: <History size={16} />,\n },\n ],\n },\n {\n // CWF-09: a merged, newest-first feed of work-item events across the workspace — creation, status\n // changes, comments and tracked field edits. A top-level item (not nested, unlike \"My AI activity\"\n // above, which is scoped to the caller's own AI calls) since this feed covers every project.\n id: 'planmagnet-activity',\n label: tr('planmagnet.nav.activity', 'Activity'),\n path: joinPath(basePath, 'activity/activity-page'),\n icon: <ActivityIcon size={16} />,\n order: 6,\n },\n {\n // ANR-13/14/15/16/17: a real, ownable, shareable, schedulable report model now backs this — it was\n // hidden (register: `not-built`) while the page fabricated rows client-side and Save ran no\n // mutation; see git history / BOFF-7822.\n id: 'planmagnet-reports',\n label: tr('planmagnet.nav.reports', 'Reports'),\n path: joinPath(basePath, 'reports/reports-page'),\n icon: <BarChart3 size={16} />,\n order: 8,\n },\n {\n // BOFF-8044: \"Team roster\" (a workspace directory, not a team) is relabelled \"Members\" so\n // it stops colliding with the real Team entity's own \"Teams\" list added alongside it.\n // \"Create Team\" is no longer hidden — the Team model now exists. \"Invite Member\" sends a\n // real invitation through the platform's createInvitation with a PlanMagnet access level (H12).\n id: 'planmagnet-team',\n label: tr('planmagnet.nav.team', 'Team'),\n path: joinPath(basePath, 'team/team-page'),\n icon: <Users size={16} />,\n order: 10,\n children: [\n {\n id: 'planmagnet-teams',\n label: tr('planmagnet.nav.team.teams', 'Teams'),\n path: joinPath(basePath, 'team/teams-page'),\n icon: <Users size={16} />,\n },\n {\n // BOFF-8044: a NEW key, not a relabel of 'planmagnet.nav.team.roster' — a locale that\n // already had that key translated as \"Team roster\" would otherwise keep showing the\n // old wording regardless of this fallback, since useTr only falls back when the\n // provider has no translation for the KEY at all.\n id: 'planmagnet-team-roster',\n label: tr('planmagnet.nav.team.members', 'Members'),\n path: joinPath(basePath, 'team/team-page'),\n icon: <Users size={16} />,\n },\n {\n id: 'planmagnet-team-invite',\n label: tr('planmagnet.nav.team.invite', 'Invite member'),\n path: joinPath(basePath, 'team/invite-member-page'),\n icon: <UserPlus size={16} />,\n },\n ],\n },\n // \"Workspace\" hidden: `create-workspace-page` navigated home on submit and created\n // nothing (a false success). Workspaces are created from the shell's workspace\n // switcher, which is the platform's real flow. Route kept; page now says so.\n {\n id: 'planmagnet-analytics',\n label: tr('planmagnet.nav.analytics', 'Analytics'),\n path: joinPath(basePath, 'analytics/analytics-page'),\n icon: <TrendingUp size={16} />,\n order: 12,\n },\n ],\n };\n return registerNavItems(navItem);\n }, [registerNavItems, basePath, tr]);\n\n useEffect(() => {\n if (!registerFooterItems) return;\n return registerFooterItems([\n {\n id: 'planmagnet-status',\n label: tr('planmagnet.footer.ready', 'PlanMagnet Ready'),\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems, tr]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <PlanMagnetProvider {...props}>\n <PlanMagnetPeople>\n <PlanMagnetRoutes />\n </PlanMagnetPeople>\n </PlanMagnetProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanMagnetRoutes.d.ts","sourceRoot":"","sources":["../../src/planmagnet/PlanMagnetRoutes.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlanMagnetRoutes.d.ts","sourceRoot":"","sources":["../../src/planmagnet/PlanMagnetRoutes.tsx"],"names":[],"mappings":"AA0bA,wBAAgB,gBAAgB,4CAmQ/B"}
|