@burdenoff/microfe-planmagnet 2026.930.25 → 2026.1001.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 (314) hide show
  1. package/dist/_virtual/__vite-browser-external.js +9 -0
  2. package/dist/_virtual/__vite-browser-external.js.map +1 -0
  3. package/dist/_virtual/_rolldown/runtime.js +5 -2
  4. package/dist/index.js +3 -1
  5. package/dist/node_modules/fflate/esm/browser.js +554 -0
  6. package/dist/node_modules/fflate/esm/browser.js.map +1 -0
  7. package/dist/node_modules/jszip/dist/jszip.min.js +3038 -0
  8. package/dist/node_modules/jszip/dist/jszip.min.js.map +1 -0
  9. package/dist/node_modules/pptxgenjs/dist/pptxgen.es.js +2151 -0
  10. package/dist/node_modules/pptxgenjs/dist/pptxgen.es.js.map +1 -0
  11. package/dist/node_modules/write-excel-file/browser/index.js +3 -0
  12. package/dist/node_modules/write-excel-file/modules/export/convertFileContentToUint8ArrayBrowser.js +13 -0
  13. package/dist/node_modules/write-excel-file/modules/export/convertFileContentToUint8ArrayBrowser.js.map +1 -0
  14. package/dist/node_modules/write-excel-file/modules/export/convertFilesContentToUint8Arrays.js +21 -0
  15. package/dist/node_modules/write-excel-file/modules/export/convertFilesContentToUint8Arrays.js.map +1 -0
  16. package/dist/node_modules/write-excel-file/modules/export/downloadBlob.js +11 -0
  17. package/dist/node_modules/write-excel-file/modules/export/downloadBlob.js.map +1 -0
  18. package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileBrowser.js +23 -0
  19. package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileBrowser.js.map +1 -0
  20. package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileUniversal.js +22 -0
  21. package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileUniversal.js.map +1 -0
  22. package/dist/node_modules/write-excel-file/modules/getSheetData/getSheetData.js +18 -0
  23. package/dist/node_modules/write-excel-file/modules/getSheetData/getSheetData.js.map +1 -0
  24. package/dist/node_modules/write-excel-file/modules/xlsx/features/conditionalFormatting.js +131 -0
  25. package/dist/node_modules/write-excel-file/modules/xlsx/features/conditionalFormatting.js.map +1 -0
  26. package/dist/node_modules/write-excel-file/modules/xlsx/features/images.js +188 -0
  27. package/dist/node_modules/write-excel-file/modules/xlsx/features/images.js.map +1 -0
  28. package/dist/node_modules/write-excel-file/modules/xlsx/features/stickyRowsOrColumns.js +52 -0
  29. package/dist/node_modules/write-excel-file/modules/xlsx/features/stickyRowsOrColumns.js.map +1 -0
  30. package/dist/node_modules/write-excel-file/modules/xlsx/files/_Content_Types_.xml.js +18 -0
  31. package/dist/node_modules/write-excel-file/modules/xlsx/files/_Content_Types_.xml.js.map +1 -0
  32. package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.js +18 -0
  33. package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.js.map +1 -0
  34. package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.rels.js +17 -0
  35. package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.rels.js.map +1 -0
  36. package/dist/node_modules/write-excel-file/modules/xlsx/files/rels.js +11 -0
  37. package/dist/node_modules/write-excel-file/modules/xlsx/files/rels.js.map +1 -0
  38. package/dist/node_modules/write-excel-file/modules/xlsx/files/sharedStrings.xml.js +42 -0
  39. package/dist/node_modules/write-excel-file/modules/xlsx/files/sharedStrings.xml.js.map +1 -0
  40. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/cell.js +102 -0
  41. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/cell.js.map +1 -0
  42. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/column.js +17 -0
  43. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/column.js.map +1 -0
  44. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/columns.js +15 -0
  45. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/columns.js.map +1 -0
  46. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/drawingReference.js +8 -0
  47. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/drawingReference.js.map +1 -0
  48. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/helpers/getCellStyleProperties.js +71 -0
  49. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/helpers/getCellStyleProperties.js.map +1 -0
  50. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/mergedCellsDescription.js +56 -0
  51. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/mergedCellsDescription.js.map +1 -0
  52. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageMargins.js +15 -0
  53. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageMargins.js.map +1 -0
  54. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageSetup.js +13 -0
  55. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageSetup.js.map +1 -0
  56. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/processMergedCells.js +44 -0
  57. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/processMergedCells.js.map +1 -0
  58. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/row.js +123 -0
  59. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/row.js.map +1 -0
  60. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheet.xml.js +41 -0
  61. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheet.xml.js.map +1 -0
  62. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetData.js +11 -0
  63. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetData.js.map +1 -0
  64. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetViews.js +17 -0
  65. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetViews.js.map +1 -0
  66. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml.rels.js +20 -0
  67. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml.rels.js.map +1 -0
  68. package/dist/node_modules/write-excel-file/modules/xlsx/files/styles.xml.js +77 -0
  69. package/dist/node_modules/write-excel-file/modules/xlsx/files/styles.xml.js.map +1 -0
  70. package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.js +22 -0
  71. package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.js.map +1 -0
  72. package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.rels.js +13 -0
  73. package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.rels.js.map +1 -0
  74. package/dist/node_modules/write-excel-file/modules/xlsx/generateXlsxFileContents.js +242 -0
  75. package/dist/node_modules/write-excel-file/modules/xlsx/generateXlsxFileContents.js.map +1 -0
  76. package/dist/node_modules/write-excel-file/modules/xlsx/getFeatures.js +29 -0
  77. package/dist/node_modules/write-excel-file/modules/xlsx/getFeatures.js.map +1 -0
  78. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/convertDateToSerialNumber.js +9 -0
  79. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/convertDateToSerialNumber.js.map +1 -0
  80. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getAdditionalContent.js +42 -0
  81. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getAdditionalContent.js.map +1 -0
  82. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getElementXml.js +43 -0
  83. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getElementXml.js.map +1 -0
  84. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getWrittenFiles.js +93 -0
  85. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getWrittenFiles.js.map +1 -0
  86. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/transformContent.js +39 -0
  87. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/transformContent.js.map +1 -0
  88. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getAlignmentXml.js +17 -0
  89. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getAlignmentXml.js.map +1 -0
  90. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getBorderXml.js +29 -0
  91. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getBorderXml.js.map +1 -0
  92. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getCellAddress.js +14 -0
  93. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getCellAddress.js.map +1 -0
  94. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFileExtensionForContentType.js +11 -0
  95. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFileExtensionForContentType.js.map +1 -0
  96. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFillXml.js +14 -0
  97. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFillXml.js.map +1 -0
  98. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFontXml.js +12 -0
  99. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFontXml.js.map +1 -0
  100. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getOrderOfSiblings.js +24 -0
  101. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getOrderOfSiblings.js.map +1 -0
  102. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getXlsxColorForHexColor.js +9 -0
  103. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getXlsxColorForHexColor.js.map +1 -0
  104. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasAlignment.js +9 -0
  105. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasAlignment.js.map +1 -0
  106. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasBorder.js +9 -0
  107. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasBorder.js.map +1 -0
  108. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFill.js +9 -0
  109. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFill.js.map +1 -0
  110. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFont.js +9 -0
  111. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFont.js.map +1 -0
  112. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isCellObject.js +9 -0
  113. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isCellObject.js.map +1 -0
  114. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isObject.js +9 -0
  115. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isObject.js.map +1 -0
  116. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/orderOfSiblings.js +27 -0
  117. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/orderOfSiblings.js.map +1 -0
  118. package/dist/node_modules/write-excel-file/modules/xlsx/initializeSharedStrings.js +17 -0
  119. package/dist/node_modules/write-excel-file/modules/xlsx/initializeSharedStrings.js.map +1 -0
  120. package/dist/node_modules/write-excel-file/modules/xlsx/initializeSheets.js +74 -0
  121. package/dist/node_modules/write-excel-file/modules/xlsx/initializeSheets.js.map +1 -0
  122. package/dist/node_modules/write-excel-file/modules/xlsx/initializeStyles.js +138 -0
  123. package/dist/node_modules/write-excel-file/modules/xlsx/initializeStyles.js.map +1 -0
  124. package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetData.js +40 -0
  125. package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetData.js.map +1 -0
  126. package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetName.js +11 -0
  127. package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetName.js.map +1 -0
  128. package/dist/node_modules/write-excel-file/modules/xml/appendMarkupInsideElement.js +9 -0
  129. package/dist/node_modules/write-excel-file/modules/xml/appendMarkupInsideElement.js.map +1 -0
  130. package/dist/node_modules/write-excel-file/modules/xml/applyEnclosingElementOffset.js +9 -0
  131. package/dist/node_modules/write-excel-file/modules/xml/applyEnclosingElementOffset.js.map +1 -0
  132. package/dist/node_modules/write-excel-file/modules/xml/escapeXmlSpecialCharacters.js +12 -0
  133. package/dist/node_modules/write-excel-file/modules/xml/escapeXmlSpecialCharacters.js.map +1 -0
  134. package/dist/node_modules/write-excel-file/modules/xml/findElement.js +12 -0
  135. package/dist/node_modules/write-excel-file/modules/xml/findElement.js.map +1 -0
  136. package/dist/node_modules/write-excel-file/modules/xml/findElementInsideElement.js +12 -0
  137. package/dist/node_modules/write-excel-file/modules/xml/findElementInsideElement.js.map +1 -0
  138. package/dist/node_modules/write-excel-file/modules/xml/findElementsNonRecursive_.js +41 -0
  139. package/dist/node_modules/write-excel-file/modules/xml/findElementsNonRecursive_.js.map +1 -0
  140. package/dist/node_modules/write-excel-file/modules/xml/getAttributesString.js +14 -0
  141. package/dist/node_modules/write-excel-file/modules/xml/getAttributesString.js.map +1 -0
  142. package/dist/node_modules/write-excel-file/modules/xml/getChildElements.js +42 -0
  143. package/dist/node_modules/write-excel-file/modules/xml/getChildElements.js.map +1 -0
  144. package/dist/node_modules/write-excel-file/modules/xml/getClosingTagMarkup.js +8 -0
  145. package/dist/node_modules/write-excel-file/modules/xml/getClosingTagMarkup.js.map +1 -0
  146. package/dist/node_modules/write-excel-file/modules/xml/getMarkupInsideElement.js +8 -0
  147. package/dist/node_modules/write-excel-file/modules/xml/getMarkupInsideElement.js.map +1 -0
  148. package/dist/node_modules/write-excel-file/modules/xml/getOpeningTagMarkup.js +9 -0
  149. package/dist/node_modules/write-excel-file/modules/xml/getOpeningTagMarkup.js.map +1 -0
  150. package/dist/node_modules/write-excel-file/modules/xml/getSelfClosingTagMarkup.js +9 -0
  151. package/dist/node_modules/write-excel-file/modules/xml/getSelfClosingTagMarkup.js.map +1 -0
  152. package/dist/node_modules/write-excel-file/modules/xml/insertElementMarkupAccordingToOrderOfSiblings.js +64 -0
  153. package/dist/node_modules/write-excel-file/modules/xml/insertElementMarkupAccordingToOrderOfSiblings.js.map +1 -0
  154. package/dist/node_modules/write-excel-file/modules/xml/prependMarkupInsideElement.js +9 -0
  155. package/dist/node_modules/write-excel-file/modules/xml/prependMarkupInsideElement.js.map +1 -0
  156. package/dist/node_modules/write-excel-file/modules/xml/removeInvalidXmlCharacters.js +9 -0
  157. package/dist/node_modules/write-excel-file/modules/xml/removeInvalidXmlCharacters.js.map +1 -0
  158. package/dist/node_modules/write-excel-file/modules/xml/replaceElement.js +8 -0
  159. package/dist/node_modules/write-excel-file/modules/xml/replaceElement.js.map +1 -0
  160. package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeName.js +10 -0
  161. package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeName.js.map +1 -0
  162. package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeValue.js +11 -0
  163. package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeValue.js.map +1 -0
  164. package/dist/node_modules/write-excel-file/modules/xml/sanitizeTextContent.js +11 -0
  165. package/dist/node_modules/write-excel-file/modules/xml/sanitizeTextContent.js.map +1 -0
  166. package/dist/node_modules/write-excel-file/modules/xml/setMarkupInsideElement.js +8 -0
  167. package/dist/node_modules/write-excel-file/modules/xml/setMarkupInsideElement.js.map +1 -0
  168. package/dist/node_modules/write-excel-file/modules/zip/zipToArrayBuffer.js +18 -0
  169. package/dist/node_modules/write-excel-file/modules/zip/zipToArrayBuffer.js.map +1 -0
  170. package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
  171. package/dist/planmagnet/PlanMagnetRoot.js +160 -147
  172. package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
  173. package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
  174. package/dist/planmagnet/PlanMagnetRoutes.js +126 -106
  175. package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
  176. package/dist/planmagnet/comments/CommentThread.js +36 -36
  177. package/dist/planmagnet/comments/RoadmapComments.js +21 -21
  178. package/dist/planmagnet/controls/AutomationRuleControls.js +24 -24
  179. package/dist/planmagnet/controls/FeatureControls.js +60 -60
  180. package/dist/planmagnet/controls/Pickers.d.ts +10 -0
  181. package/dist/planmagnet/controls/Pickers.d.ts.map +1 -1
  182. package/dist/planmagnet/controls/Pickers.js +75 -27
  183. package/dist/planmagnet/controls/Pickers.js.map +1 -1
  184. package/dist/planmagnet/controls/SyncControls.js +59 -59
  185. package/dist/planmagnet/discussion/WorkItemDiscussionPanel.js +15 -15
  186. package/dist/planmagnet/docs/DocSuggestionsPanel.js +12 -12
  187. package/dist/planmagnet/docs/DocVersionCompare.js +3 -3
  188. package/dist/planmagnet/forecast/DeliveryForecastCard.d.ts +12 -0
  189. package/dist/planmagnet/forecast/DeliveryForecastCard.d.ts.map +1 -0
  190. package/dist/planmagnet/forecast/DeliveryForecastCard.js +208 -0
  191. package/dist/planmagnet/forecast/DeliveryForecastCard.js.map +1 -0
  192. package/dist/planmagnet/forecast/ProjectOutlookCard.d.ts +5 -0
  193. package/dist/planmagnet/forecast/ProjectOutlookCard.d.ts.map +1 -0
  194. package/dist/planmagnet/forecast/ProjectOutlookCard.js +190 -0
  195. package/dist/planmagnet/forecast/ProjectOutlookCard.js.map +1 -0
  196. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.d.ts +5 -0
  197. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.d.ts.map +1 -0
  198. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.js +99 -0
  199. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.js.map +1 -0
  200. package/dist/planmagnet/forecast/ResourceForecastCard.d.ts +8 -0
  201. package/dist/planmagnet/forecast/ResourceForecastCard.d.ts.map +1 -0
  202. package/dist/planmagnet/forecast/ResourceForecastCard.js +185 -0
  203. package/dist/planmagnet/forecast/ResourceForecastCard.js.map +1 -0
  204. package/dist/planmagnet/forecast/riskFlags.d.ts +35 -0
  205. package/dist/planmagnet/forecast/riskFlags.d.ts.map +1 -0
  206. package/dist/planmagnet/forecast/riskFlags.js +37 -0
  207. package/dist/planmagnet/forecast/riskFlags.js.map +1 -0
  208. package/dist/planmagnet/index.d.ts +2 -0
  209. package/dist/planmagnet/index.d.ts.map +1 -1
  210. package/dist/planmagnet/index.js +2 -0
  211. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.d.ts.map +1 -1
  212. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js +216 -182
  213. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  214. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.js +11 -11
  215. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.js +4 -4
  216. package/dist/planmagnet/pages/DocsDocDetailPagePage.js +163 -163
  217. package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -1
  218. package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.js +165 -165
  219. package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.js.map +1 -1
  220. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.d.ts +2 -0
  221. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.d.ts.map +1 -0
  222. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.js +234 -0
  223. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.js.map +1 -0
  224. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
  225. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +206 -182
  226. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
  227. package/dist/planmagnet/pages/ReportsCreateReportPagePage.d.ts +6 -0
  228. package/dist/planmagnet/pages/ReportsCreateReportPagePage.d.ts.map +1 -1
  229. package/dist/planmagnet/pages/ReportsCreateReportPagePage.js +5 -177
  230. package/dist/planmagnet/pages/ReportsCreateReportPagePage.js.map +1 -1
  231. package/dist/planmagnet/pages/ReportsEditReportPagePage.d.ts +3 -0
  232. package/dist/planmagnet/pages/ReportsEditReportPagePage.d.ts.map +1 -0
  233. package/dist/planmagnet/pages/ReportsEditReportPagePage.js +15 -0
  234. package/dist/planmagnet/pages/ReportsEditReportPagePage.js.map +1 -0
  235. package/dist/planmagnet/pages/ReportsReportPagePage.d.ts +7 -0
  236. package/dist/planmagnet/pages/ReportsReportPagePage.d.ts.map +1 -0
  237. package/dist/planmagnet/pages/ReportsReportPagePage.js +226 -0
  238. package/dist/planmagnet/pages/ReportsReportPagePage.js.map +1 -0
  239. package/dist/planmagnet/pages/ReportsReportsPagePage.d.ts.map +1 -1
  240. package/dist/planmagnet/pages/ReportsReportsPagePage.js +224 -496
  241. package/dist/planmagnet/pages/ReportsReportsPagePage.js.map +1 -1
  242. package/dist/planmagnet/pages/TeamTeamDetailPagePage.d.ts.map +1 -1
  243. package/dist/planmagnet/pages/TeamTeamDetailPagePage.js +88 -83
  244. package/dist/planmagnet/pages/TeamTeamDetailPagePage.js.map +1 -1
  245. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.d.ts.map +1 -1
  246. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.js +139 -112
  247. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.js.map +1 -1
  248. package/dist/planmagnet/pages/analytics/StatusFlowCard.js +21 -21
  249. package/dist/planmagnet/product/ProductControls.js +91 -91
  250. package/dist/planmagnet/reports/ExportMenu.d.ts +9 -0
  251. package/dist/planmagnet/reports/ExportMenu.d.ts.map +1 -0
  252. package/dist/planmagnet/reports/ExportMenu.js +116 -0
  253. package/dist/planmagnet/reports/ExportMenu.js.map +1 -0
  254. package/dist/planmagnet/reports/PrintReportView.d.ts +24 -0
  255. package/dist/planmagnet/reports/PrintReportView.d.ts.map +1 -0
  256. package/dist/planmagnet/reports/PrintReportView.js +75 -0
  257. package/dist/planmagnet/reports/PrintReportView.js.map +1 -0
  258. package/dist/planmagnet/reports/ReportBuilderCanvas.d.ts +8 -0
  259. package/dist/planmagnet/reports/ReportBuilderCanvas.d.ts.map +1 -0
  260. package/dist/planmagnet/reports/ReportBuilderCanvas.js +261 -0
  261. package/dist/planmagnet/reports/ReportBuilderCanvas.js.map +1 -0
  262. package/dist/planmagnet/reports/ReportBuilderPage.d.ts +5 -0
  263. package/dist/planmagnet/reports/ReportBuilderPage.d.ts.map +1 -0
  264. package/dist/planmagnet/reports/ReportBuilderPage.js +198 -0
  265. package/dist/planmagnet/reports/ReportBuilderPage.js.map +1 -0
  266. package/dist/planmagnet/reports/ReportRunHistory.d.ts +8 -0
  267. package/dist/planmagnet/reports/ReportRunHistory.d.ts.map +1 -0
  268. package/dist/planmagnet/reports/ReportRunHistory.js +63 -0
  269. package/dist/planmagnet/reports/ReportRunHistory.js.map +1 -0
  270. package/dist/planmagnet/reports/ReportWidgetRenderer.d.ts +7 -0
  271. package/dist/planmagnet/reports/ReportWidgetRenderer.d.ts.map +1 -0
  272. package/dist/planmagnet/reports/ReportWidgetRenderer.js +251 -0
  273. package/dist/planmagnet/reports/ReportWidgetRenderer.js.map +1 -0
  274. package/dist/planmagnet/reports/SchedulesPanel.d.ts +4 -0
  275. package/dist/planmagnet/reports/SchedulesPanel.d.ts.map +1 -0
  276. package/dist/planmagnet/reports/SchedulesPanel.js +457 -0
  277. package/dist/planmagnet/reports/SchedulesPanel.js.map +1 -0
  278. package/dist/planmagnet/reports/ShareDialog.d.ts +5 -0
  279. package/dist/planmagnet/reports/ShareDialog.d.ts.map +1 -0
  280. package/dist/planmagnet/reports/ShareDialog.js +234 -0
  281. package/dist/planmagnet/reports/ShareDialog.js.map +1 -0
  282. package/dist/planmagnet/reports/SharedReportPage.d.ts +4 -0
  283. package/dist/planmagnet/reports/SharedReportPage.d.ts.map +1 -0
  284. package/dist/planmagnet/reports/SharedReportPage.js +180 -0
  285. package/dist/planmagnet/reports/SharedReportPage.js.map +1 -0
  286. package/dist/planmagnet/reports/WidgetEditorDialog.d.ts +10 -0
  287. package/dist/planmagnet/reports/WidgetEditorDialog.d.ts.map +1 -0
  288. package/dist/planmagnet/reports/WidgetEditorDialog.js +220 -0
  289. package/dist/planmagnet/reports/WidgetEditorDialog.js.map +1 -0
  290. package/dist/planmagnet/reports/reportExportPptx.d.ts +4 -0
  291. package/dist/planmagnet/reports/reportExportPptx.d.ts.map +1 -0
  292. package/dist/planmagnet/reports/reportExportPptx.js +118 -0
  293. package/dist/planmagnet/reports/reportExportPptx.js.map +1 -0
  294. package/dist/planmagnet/reports/reportExportXlsx.d.ts +4 -0
  295. package/dist/planmagnet/reports/reportExportXlsx.d.ts.map +1 -0
  296. package/dist/planmagnet/reports/reportExportXlsx.js +42 -0
  297. package/dist/planmagnet/reports/reportExportXlsx.js.map +1 -0
  298. package/dist/planmagnet/reports/reportGraphql.d.ts +28 -0
  299. package/dist/planmagnet/reports/reportGraphql.d.ts.map +1 -0
  300. package/dist/planmagnet/reports/reportGraphql.js +360 -0
  301. package/dist/planmagnet/reports/reportGraphql.js.map +1 -0
  302. package/dist/planmagnet/reports/reportModel.d.ts +198 -0
  303. package/dist/planmagnet/reports/reportModel.d.ts.map +1 -0
  304. package/dist/planmagnet/reports/reportModel.js +328 -0
  305. package/dist/planmagnet/reports/reportModel.js.map +1 -0
  306. package/dist/planmagnet/reports/sharedReportRoute.d.ts +15 -0
  307. package/dist/planmagnet/reports/sharedReportRoute.d.ts.map +1 -0
  308. package/dist/planmagnet/reports/sharedReportRoute.js +9 -0
  309. package/dist/planmagnet/reports/sharedReportRoute.js.map +1 -0
  310. package/dist/planmagnet/roadmaps/RoadmapControls.js +60 -60
  311. package/dist/planmagnet/roadmaps/RoadmapNowNextLater.js +30 -30
  312. package/dist/planmagnet/roadmaps/RoadmapReviewPanel.js +21 -21
  313. package/dist/planmagnet/roadmaps/RoadmapVersionsPanel.js +22 -22
  314. package/package.json +6 -4
@@ -0,0 +1,457 @@
1
+ import { usePlanMagnet as e } from "../providers/PlanMagnetProvider.js";
2
+ import { PersonName as t } from "../people/People.js";
3
+ import { mutationErrorMessage as n } from "../utils/graphqlErrors.js";
4
+ import { throwOnError as r } from "../utils/mutationResult.js";
5
+ import { ConfirmButton as i, ErrorLine as a } from "../controls/ConfirmButton.js";
6
+ import { CREATE_REPORT_SCHEDULE as o, DELETE_REPORT_SCHEDULE as s, LIST_REPORT_SCHEDULES as c, UPDATE_REPORT_SCHEDULE as l } from "./reportGraphql.js";
7
+ import { useDeferredValue as u, useEffect as d, useState as f } from "react";
8
+ import { CalendarClock as p, Plus as m } from "lucide-react";
9
+ import { useMutation as h, useQuery as g } from "@apollo/client/react";
10
+ import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
11
+ import { Badge as b, Button as x, Checkbox as S, Input as C, Label as w, ResponsiveDialog as T, ResponsiveDialogContent as E, ResponsiveDialogDescription as D, ResponsiveDialogFooter as O, ResponsiveDialogHeader as k, ResponsiveDialogTitle as A, Select as j, SelectContent as M, SelectItem as N, SelectTrigger as P, SelectValue as F, Switch as I } from "@burdenoff/fe-libs/ui";
12
+ import { useWorkspaceDirectory as L } from "@burdenoff/fe-libs/sharing";
13
+ //#region src/planmagnet/reports/SchedulesPanel.tsx
14
+ var R = [
15
+ "DAILY",
16
+ "WEEKLY",
17
+ "MONTHLY"
18
+ ], z = [
19
+ "CSV",
20
+ "JSON",
21
+ "XML"
22
+ ], B = [
23
+ "Sunday",
24
+ "Monday",
25
+ "Tuesday",
26
+ "Wednesday",
27
+ "Thursday",
28
+ "Friday",
29
+ "Saturday"
30
+ ];
31
+ function V(e) {
32
+ let t = /* @__PURE__ */ new Date();
33
+ return t.setUTCHours(e, 0, 0, 0), t.toLocaleTimeString(void 0, {
34
+ hour: "numeric",
35
+ minute: "2-digit"
36
+ });
37
+ }
38
+ function H(e) {
39
+ return e ? new Date(e).toLocaleString() : "—";
40
+ }
41
+ function U({ selected: t, onToggle: n }) {
42
+ let { workspaceId: r, authToken: i, apiGatewayUrl: a } = e(), [o, s] = f(""), c = u(o.trim()), l = L({
43
+ workspaceId: r ?? "",
44
+ authToken: i ?? void 0,
45
+ apiGatewayUrl: a ?? void 0
46
+ }), { search: p } = l;
47
+ return d(() => {
48
+ p(c);
49
+ }, [c, p]), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v(C, {
50
+ value: o,
51
+ onChange: (e) => s(e.target.value),
52
+ placeholder: "Search workspace members",
53
+ "aria-label": "Search workspace members"
54
+ }), /* @__PURE__ */ y("div", {
55
+ className: "mt-2 max-h-48 space-y-1 overflow-y-auto",
56
+ children: [
57
+ l.loading && l.members.length === 0 && /* @__PURE__ */ v("p", {
58
+ className: "py-4 text-center text-sm text-muted-foreground",
59
+ children: "Loading…"
60
+ }),
61
+ !l.loading && l.members.length === 0 && /* @__PURE__ */ v("p", {
62
+ className: "py-4 text-center text-sm text-muted-foreground",
63
+ children: "No matching members."
64
+ }),
65
+ l.members.map((e) => {
66
+ let r = `schedule-recipient-${e.id}`;
67
+ return /* @__PURE__ */ y("label", {
68
+ htmlFor: r,
69
+ className: "flex cursor-pointer items-center gap-3 rounded-md border p-2 text-sm hover:bg-muted",
70
+ children: [/* @__PURE__ */ v(S, {
71
+ id: r,
72
+ checked: t.has(e.id),
73
+ onCheckedChange: (t) => n(e.id, t === !0)
74
+ }), /* @__PURE__ */ y("span", {
75
+ className: "min-w-0 flex-1 truncate",
76
+ children: [e.name, e.email && /* @__PURE__ */ y("span", {
77
+ className: "text-muted-foreground",
78
+ children: [" · ", e.email]
79
+ })]
80
+ })]
81
+ }, e.id);
82
+ }),
83
+ l.hasMore && /* @__PURE__ */ v("button", {
84
+ type: "button",
85
+ className: "w-full py-1 text-xs text-primary hover:underline",
86
+ onClick: l.fetchMore,
87
+ children: "Show more members"
88
+ })
89
+ ]
90
+ })] });
91
+ }
92
+ function W(e) {
93
+ return e ? {
94
+ cadence: e.cadence,
95
+ hourUtc: e.hourUtc,
96
+ dayOfWeek: e.dayOfWeek ?? 1,
97
+ dayOfMonth: e.dayOfMonth ?? 1,
98
+ format: e.format,
99
+ recipientIds: new Set(e.recipientIds)
100
+ } : {
101
+ cadence: "WEEKLY",
102
+ hourUtc: 9,
103
+ dayOfWeek: 1,
104
+ dayOfMonth: 1,
105
+ format: "CSV",
106
+ recipientIds: /* @__PURE__ */ new Set()
107
+ };
108
+ }
109
+ function G({ reportId: e, schedule: t, onCancel: i, onSaved: s }) {
110
+ let [u, d] = f(() => W(t)), [p, m] = f(null), g = { refetchQueries: [{
111
+ query: c,
112
+ variables: { reportId: e }
113
+ }] }, [b, S] = h(o, g), [T, E] = h(l, g), I = S.loading || E.loading, L = (e, t) => d((n) => {
114
+ let r = new Set(n.recipientIds);
115
+ return t ? r.add(e) : r.delete(e), {
116
+ ...n,
117
+ recipientIds: r
118
+ };
119
+ }), H = async () => {
120
+ m(null);
121
+ let i = {
122
+ cadence: u.cadence,
123
+ hourUtc: u.hourUtc,
124
+ dayOfWeek: u.cadence === "WEEKLY" ? u.dayOfWeek : void 0,
125
+ dayOfMonth: u.cadence === "MONTHLY" ? u.dayOfMonth : void 0,
126
+ format: u.format,
127
+ recipientIds: [...u.recipientIds]
128
+ };
129
+ try {
130
+ t ? await r(T({ variables: {
131
+ id: t.id,
132
+ input: i
133
+ } })) : await r(b({ variables: {
134
+ reportId: e,
135
+ input: i
136
+ } })), s();
137
+ } catch (e) {
138
+ m(n(e, "The schedule could not be saved."));
139
+ }
140
+ };
141
+ return /* @__PURE__ */ y(_, { children: [
142
+ /* @__PURE__ */ y(k, { children: [/* @__PURE__ */ v(A, { children: t ? "Edit schedule" : "New schedule" }), /* @__PURE__ */ v(D, { children: "A due schedule runs this report automatically, as you. Email delivery is not available yet — recipients read the run in-app under run history." })] }),
143
+ /* @__PURE__ */ y("div", {
144
+ className: "space-y-3",
145
+ children: [
146
+ /* @__PURE__ */ y("div", {
147
+ className: "grid grid-cols-2 gap-3",
148
+ children: [/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v(w, {
149
+ htmlFor: "schedule-cadence",
150
+ children: "Cadence"
151
+ }), /* @__PURE__ */ y(j, {
152
+ value: u.cadence,
153
+ onValueChange: (e) => d((t) => ({
154
+ ...t,
155
+ cadence: e
156
+ })),
157
+ children: [/* @__PURE__ */ v(P, {
158
+ id: "schedule-cadence",
159
+ className: "mt-1",
160
+ children: /* @__PURE__ */ v(F, {})
161
+ }), /* @__PURE__ */ v(M, { children: R.map((e) => /* @__PURE__ */ v(N, {
162
+ value: e,
163
+ children: e.charAt(0) + e.slice(1).toLowerCase()
164
+ }, e)) })]
165
+ })] }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v(w, {
166
+ htmlFor: "schedule-format",
167
+ children: "Export format"
168
+ }), /* @__PURE__ */ y(j, {
169
+ value: u.format,
170
+ onValueChange: (e) => d((t) => ({
171
+ ...t,
172
+ format: e
173
+ })),
174
+ children: [/* @__PURE__ */ v(P, {
175
+ id: "schedule-format",
176
+ className: "mt-1",
177
+ children: /* @__PURE__ */ v(F, {})
178
+ }), /* @__PURE__ */ v(M, { children: z.map((e) => /* @__PURE__ */ v(N, {
179
+ value: e,
180
+ children: e
181
+ }, e)) })]
182
+ })] })]
183
+ }),
184
+ u.cadence === "WEEKLY" && /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v(w, {
185
+ htmlFor: "schedule-dow",
186
+ children: "Day of week"
187
+ }), /* @__PURE__ */ y(j, {
188
+ value: String(u.dayOfWeek),
189
+ onValueChange: (e) => d((t) => ({
190
+ ...t,
191
+ dayOfWeek: Number(e)
192
+ })),
193
+ children: [/* @__PURE__ */ v(P, {
194
+ id: "schedule-dow",
195
+ className: "mt-1",
196
+ children: /* @__PURE__ */ v(F, {})
197
+ }), /* @__PURE__ */ v(M, { children: B.map((e, t) => /* @__PURE__ */ v(N, {
198
+ value: String(t),
199
+ children: e
200
+ }, e)) })]
201
+ })] }),
202
+ u.cadence === "MONTHLY" && /* @__PURE__ */ y("div", { children: [
203
+ /* @__PURE__ */ v(w, {
204
+ htmlFor: "schedule-dom",
205
+ children: "Day of month"
206
+ }),
207
+ /* @__PURE__ */ v(C, {
208
+ id: "schedule-dom",
209
+ type: "number",
210
+ min: 1,
211
+ max: 28,
212
+ className: "mt-1",
213
+ value: u.dayOfMonth,
214
+ onChange: (e) => d((t) => ({
215
+ ...t,
216
+ dayOfMonth: Math.min(28, Math.max(1, Number(e.target.value) || 1))
217
+ }))
218
+ }),
219
+ /* @__PURE__ */ v("p", {
220
+ className: "mt-1 text-xs text-muted-foreground",
221
+ children: "Capped at 28 so every month has this day."
222
+ })
223
+ ] }),
224
+ /* @__PURE__ */ y("div", { children: [
225
+ /* @__PURE__ */ v(w, {
226
+ htmlFor: "schedule-hour",
227
+ children: "Hour (UTC)"
228
+ }),
229
+ /* @__PURE__ */ y(j, {
230
+ value: String(u.hourUtc),
231
+ onValueChange: (e) => d((t) => ({
232
+ ...t,
233
+ hourUtc: Number(e)
234
+ })),
235
+ children: [/* @__PURE__ */ v(P, {
236
+ id: "schedule-hour",
237
+ className: "mt-1",
238
+ children: /* @__PURE__ */ v(F, {})
239
+ }), /* @__PURE__ */ v(M, { children: Array.from({ length: 24 }, (e, t) => /* @__PURE__ */ y(N, {
240
+ value: String(t),
241
+ children: [String(t).padStart(2, "0"), ":00 UTC"]
242
+ }, t)) })]
243
+ }),
244
+ /* @__PURE__ */ y("p", {
245
+ className: "mt-1 text-xs text-muted-foreground",
246
+ children: [
247
+ "That’s ",
248
+ V(u.hourUtc),
249
+ " for you."
250
+ ]
251
+ })
252
+ ] }),
253
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v(w, { children: "Recipients (read in-app; no email yet)" }), /* @__PURE__ */ v("div", {
254
+ className: "mt-1",
255
+ children: /* @__PURE__ */ v(U, {
256
+ selected: u.recipientIds,
257
+ onToggle: L
258
+ })
259
+ })] })
260
+ ]
261
+ }),
262
+ p && /* @__PURE__ */ v(a, { message: p }),
263
+ /* @__PURE__ */ y(O, { children: [/* @__PURE__ */ v(x, {
264
+ variant: "outline",
265
+ onClick: i,
266
+ children: "Cancel"
267
+ }), /* @__PURE__ */ v(x, {
268
+ onClick: () => void H(),
269
+ disabled: I,
270
+ children: I ? "Saving…" : "Save schedule"
271
+ })] })
272
+ ] });
273
+ }
274
+ function K({ reportId: e, schedule: t, open: n, onOpenChange: r }) {
275
+ return /* @__PURE__ */ v(T, {
276
+ open: n,
277
+ onOpenChange: r,
278
+ children: /* @__PURE__ */ v(E, {
279
+ className: "max-h-[85vh] overflow-y-auto sm:max-w-lg",
280
+ children: n && /* @__PURE__ */ v(G, {
281
+ reportId: e,
282
+ schedule: t,
283
+ onCancel: () => r(!1),
284
+ onSaved: () => r(!1)
285
+ })
286
+ })
287
+ });
288
+ }
289
+ function q({ schedule: e, reportId: t }) {
290
+ let [i, { loading: o }] = h(l, { refetchQueries: [{
291
+ query: c,
292
+ variables: { reportId: t }
293
+ }] }), [s, u] = f(null);
294
+ return /* @__PURE__ */ y("div", {
295
+ className: "flex items-center gap-1.5",
296
+ children: [
297
+ /* @__PURE__ */ v(I, {
298
+ checked: e.active,
299
+ disabled: o,
300
+ "aria-label": e.active ? "Pause schedule" : "Resume schedule",
301
+ onCheckedChange: (t) => {
302
+ u(null), (async () => {
303
+ try {
304
+ await r(i({ variables: {
305
+ id: e.id,
306
+ input: { active: t }
307
+ } }));
308
+ } catch (e) {
309
+ u(n(e, "Could not update."));
310
+ }
311
+ })();
312
+ }
313
+ }),
314
+ /* @__PURE__ */ v("span", {
315
+ className: "text-xs text-muted-foreground",
316
+ children: e.active ? "Active" : "Paused"
317
+ }),
318
+ s && /* @__PURE__ */ v(a, { message: s })
319
+ ]
320
+ });
321
+ }
322
+ function J({ reportId: e }) {
323
+ let [o, l] = f(!1), [u, d] = f(null), { data: S, loading: C } = g(c, { variables: { reportId: e } }), [w] = h(s, { refetchQueries: [{
324
+ query: c,
325
+ variables: { reportId: e }
326
+ }] }), [T, E] = f(null), D = S?.planmagnetReportSchedules ?? [];
327
+ return /* @__PURE__ */ y("div", {
328
+ className: "space-y-3",
329
+ "data-testid": "report-schedules",
330
+ children: [
331
+ /* @__PURE__ */ y("div", {
332
+ className: "flex items-center justify-between",
333
+ children: [/* @__PURE__ */ v("h2", {
334
+ className: "text-sm font-semibold",
335
+ children: "Schedules"
336
+ }), /* @__PURE__ */ y(x, {
337
+ size: "sm",
338
+ onClick: () => {
339
+ d(null), l(!0);
340
+ },
341
+ children: [/* @__PURE__ */ v(m, { className: "mr-1 h-4 w-4" }), "New schedule"]
342
+ })]
343
+ }),
344
+ /* @__PURE__ */ v("p", {
345
+ className: "text-xs text-muted-foreground",
346
+ children: "Email delivery is not available yet (Linear BOFF-7927) — recipients read a scheduled run in-app, under run history."
347
+ }),
348
+ T && /* @__PURE__ */ v(a, { message: T }),
349
+ C && !S ? /* @__PURE__ */ v("p", {
350
+ className: "text-sm text-muted-foreground",
351
+ children: "Loading…"
352
+ }) : D.length === 0 ? /* @__PURE__ */ v("p", {
353
+ className: "text-sm text-muted-foreground",
354
+ children: "No schedules yet."
355
+ }) : /* @__PURE__ */ v("ul", {
356
+ className: "space-y-2",
357
+ children: D.map((a) => /* @__PURE__ */ y("li", {
358
+ className: "rounded-md border border-border p-3 text-sm",
359
+ children: [
360
+ /* @__PURE__ */ y("div", {
361
+ className: "flex flex-wrap items-start justify-between gap-2",
362
+ children: [/* @__PURE__ */ y("div", {
363
+ className: "flex items-center gap-2",
364
+ children: [
365
+ /* @__PURE__ */ v(p, {
366
+ className: "h-4 w-4 text-muted-foreground",
367
+ "aria-hidden": !0
368
+ }),
369
+ /* @__PURE__ */ y("span", {
370
+ className: "font-medium",
371
+ children: [
372
+ a.cadence.charAt(0) + a.cadence.slice(1).toLowerCase(),
373
+ " at",
374
+ " ",
375
+ String(a.hourUtc).padStart(2, "0"),
376
+ ":00 UTC (",
377
+ V(a.hourUtc),
378
+ ")"
379
+ ]
380
+ }),
381
+ /* @__PURE__ */ v(b, {
382
+ variant: "outline",
383
+ children: a.format
384
+ })
385
+ ]
386
+ }), /* @__PURE__ */ y("div", {
387
+ className: "flex items-center gap-2",
388
+ children: [
389
+ /* @__PURE__ */ v(q, {
390
+ schedule: a,
391
+ reportId: e
392
+ }),
393
+ /* @__PURE__ */ v(x, {
394
+ size: "sm",
395
+ variant: "outline",
396
+ onClick: () => {
397
+ d(a), l(!0);
398
+ },
399
+ children: "Edit"
400
+ }),
401
+ /* @__PURE__ */ v(i, {
402
+ label: "Delete",
403
+ icon: null,
404
+ title: "Delete this schedule?",
405
+ description: "It stops running. This cannot be undone.",
406
+ confirmLabel: "Delete",
407
+ destructive: !0,
408
+ variant: "outline",
409
+ disabled: !1,
410
+ onConfirm: () => {
411
+ E(null), (async () => {
412
+ try {
413
+ await r(w({ variables: { id: a.id } }));
414
+ } catch (e) {
415
+ E(n(e, "Could not delete."));
416
+ }
417
+ })();
418
+ }
419
+ })
420
+ ]
421
+ })]
422
+ }),
423
+ /* @__PURE__ */ y("p", {
424
+ className: "mt-1 text-xs text-muted-foreground",
425
+ children: [
426
+ "Next run ",
427
+ H(a.nextRunAt),
428
+ " · Last run",
429
+ " ",
430
+ H(a.lastRunAt),
431
+ a.lastError ? ` · last error: ${a.lastError}` : ""
432
+ ]
433
+ }),
434
+ /* @__PURE__ */ v("p", {
435
+ className: "mt-1 text-xs text-muted-foreground",
436
+ children: a.recipientIds.length === 0 ? "No recipients" : /* @__PURE__ */ y(_, { children: [
437
+ "Recipients:",
438
+ " ",
439
+ a.recipientIds.map((e, n) => /* @__PURE__ */ y("span", { children: [n > 0 && ", ", /* @__PURE__ */ v(t, { id: e })] }, e))
440
+ ] })
441
+ })
442
+ ]
443
+ }, a.id))
444
+ }),
445
+ /* @__PURE__ */ v(K, {
446
+ reportId: e,
447
+ schedule: u,
448
+ open: o,
449
+ onOpenChange: l
450
+ })
451
+ ]
452
+ });
453
+ }
454
+ //#endregion
455
+ export { J as SchedulesPanel };
456
+
457
+ //# sourceMappingURL=SchedulesPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchedulesPanel.js","names":[],"sources":["../../../src/planmagnet/reports/SchedulesPanel.tsx"],"sourcesContent":["import { useDeferredValue, useEffect, useState } from 'react';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport {\n Badge,\n Button,\n Checkbox,\n ResponsiveDialog,\n ResponsiveDialogContent,\n ResponsiveDialogDescription,\n ResponsiveDialogFooter,\n ResponsiveDialogHeader,\n ResponsiveDialogTitle,\n Input,\n Label,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Switch,\n} from '@burdenoff/fe-libs/ui';\nimport { useWorkspaceDirectory } from '@burdenoff/fe-libs/sharing';\nimport { CalendarClock, Plus } from 'lucide-react';\nimport { usePlanMagnet } from '../providers/PlanMagnetProvider';\nimport { PersonName } from '../people/People';\nimport { ConfirmButton, ErrorLine } from '../controls/ConfirmButton';\nimport { mutationErrorMessage } from '../utils/graphqlErrors';\nimport { throwOnError } from '../utils/mutationResult';\nimport {\n CREATE_REPORT_SCHEDULE,\n DELETE_REPORT_SCHEDULE,\n LIST_REPORT_SCHEDULES,\n UPDATE_REPORT_SCHEDULE,\n} from './reportGraphql';\nimport type { ReportExportFormat, ReportSchedule, ReportScheduleCadence } from './reportModel';\n\n/**\n * Schedules (ANR-15), owner-only. A due schedule runs the report automatically as its owner, but — see\n * `planmagnetReportSchedules`' own schema doc and Linear BOFF-7927 — email delivery does not exist yet, so a\n * scheduled run's `deliveryStatus` stays `PENDING_NOTIFICATIONS` and recipients read it in-app via run history\n * instead. Every schedule form here says so; nothing in this panel implies mail goes out.\n */\n\nconst CADENCES: ReportScheduleCadence[] = ['DAILY', 'WEEKLY', 'MONTHLY'];\nconst FORMATS: ReportExportFormat[] = ['CSV', 'JSON', 'XML'];\nconst WEEKDAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nfunction localHourLabel(hourUtc: number): string {\n const reference = new Date();\n reference.setUTCHours(hourUtc, 0, 0, 0);\n return reference.toLocaleTimeString(undefined, { hour: 'numeric', minute: '2-digit' });\n}\n\nfunction formatDateTime(iso: string | null): string {\n return iso ? new Date(iso).toLocaleString() : '—';\n}\n\nfunction RecipientsPicker({\n selected,\n onToggle,\n}: {\n selected: Set<string>;\n onToggle: (id: string, checked: boolean) => void;\n}) {\n const { workspaceId, authToken, apiGatewayUrl } = usePlanMagnet();\n const [search, setSearch] = useState('');\n const deferredSearch = useDeferredValue(search.trim());\n const directory = useWorkspaceDirectory({\n workspaceId: workspaceId ?? '',\n authToken: authToken ?? undefined,\n apiGatewayUrl: apiGatewayUrl ?? undefined,\n });\n const { search: setDirectoryFilter } = directory;\n useEffect(() => {\n setDirectoryFilter(deferredSearch);\n }, [deferredSearch, setDirectoryFilter]);\n\n return (\n <div>\n <Input\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search workspace members\"\n aria-label=\"Search workspace members\"\n />\n <div className=\"mt-2 max-h-48 space-y-1 overflow-y-auto\">\n {directory.loading && directory.members.length === 0 && (\n <p className=\"py-4 text-center text-sm text-muted-foreground\">Loading…</p>\n )}\n {!directory.loading && directory.members.length === 0 && (\n <p className=\"py-4 text-center text-sm text-muted-foreground\">No matching members.</p>\n )}\n {directory.members.map((member) => {\n const inputId = `schedule-recipient-${member.id}`;\n return (\n <label\n key={member.id}\n htmlFor={inputId}\n className=\"flex cursor-pointer items-center gap-3 rounded-md border p-2 text-sm hover:bg-muted\"\n >\n <Checkbox\n id={inputId}\n checked={selected.has(member.id)}\n onCheckedChange={(checked) => onToggle(member.id, checked === true)}\n />\n <span className=\"min-w-0 flex-1 truncate\">\n {member.name}\n {member.email && (\n <span className=\"text-muted-foreground\"> &middot; {member.email}</span>\n )}\n </span>\n </label>\n );\n })}\n {directory.hasMore && (\n <button\n type=\"button\"\n className=\"w-full py-1 text-xs text-primary hover:underline\"\n onClick={directory.fetchMore}\n >\n Show more members\n </button>\n )}\n </div>\n </div>\n );\n}\n\ninterface ScheduleFormState {\n cadence: ReportScheduleCadence;\n hourUtc: number;\n dayOfWeek: number;\n dayOfMonth: number;\n format: ReportExportFormat;\n recipientIds: Set<string>;\n}\n\nfunction initialScheduleForm(schedule: ReportSchedule | null): ScheduleFormState {\n if (!schedule) {\n return {\n cadence: 'WEEKLY',\n hourUtc: 9,\n dayOfWeek: 1,\n dayOfMonth: 1,\n format: 'CSV',\n recipientIds: new Set(),\n };\n }\n return {\n cadence: schedule.cadence,\n hourUtc: schedule.hourUtc,\n dayOfWeek: schedule.dayOfWeek ?? 1,\n dayOfMonth: schedule.dayOfMonth ?? 1,\n format: schedule.format,\n recipientIds: new Set(schedule.recipientIds),\n };\n}\n\n/**\n * Only ever rendered while the dialog is open (see `ScheduleDialog` below) — its form state initializes\n * straight from `schedule`, once, on mount, rather than being resynced by an effect on every open/schedule\n * change (same reasoning as `WidgetEditorDialog.tsx`'s `WidgetEditorForm`).\n */\nfunction ScheduleForm({\n reportId,\n schedule,\n onCancel,\n onSaved,\n}: {\n reportId: string;\n schedule: ReportSchedule | null;\n onCancel: () => void;\n onSaved: () => void;\n}) {\n const [form, setForm] = useState<ScheduleFormState>(() => initialScheduleForm(schedule));\n const [error, setError] = useState<string | null>(null);\n const refetch = { refetchQueries: [{ query: LIST_REPORT_SCHEDULES, variables: { reportId } }] };\n const [create, createState] = useMutation(CREATE_REPORT_SCHEDULE, refetch);\n const [update, updateState] = useMutation(UPDATE_REPORT_SCHEDULE, refetch);\n const saving = createState.loading || updateState.loading;\n\n const toggleRecipient = (id: string, checked: boolean) =>\n setForm((prev) => {\n const next = new Set(prev.recipientIds);\n if (checked) next.add(id);\n else next.delete(id);\n return { ...prev, recipientIds: next };\n });\n\n const submit = async () => {\n setError(null);\n const input = {\n cadence: form.cadence,\n hourUtc: form.hourUtc,\n dayOfWeek: form.cadence === 'WEEKLY' ? form.dayOfWeek : undefined,\n dayOfMonth: form.cadence === 'MONTHLY' ? form.dayOfMonth : undefined,\n format: form.format,\n recipientIds: [...form.recipientIds],\n };\n try {\n if (schedule) {\n await throwOnError(update({ variables: { id: schedule.id, input } }));\n } else {\n await throwOnError(create({ variables: { reportId, input } }));\n }\n onSaved();\n } catch (e) {\n setError(mutationErrorMessage(e, 'The schedule could not be saved.'));\n }\n };\n\n return (\n <>\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>{schedule ? 'Edit schedule' : 'New schedule'}</ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n A due schedule runs this report automatically, as you. Email delivery is not available yet\n — recipients read the run in-app under run history.\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-2 gap-3\">\n <div>\n <Label htmlFor=\"schedule-cadence\">Cadence</Label>\n <Select\n value={form.cadence}\n onValueChange={(v) => setForm((p) => ({ ...p, cadence: v as ReportScheduleCadence }))}\n >\n <SelectTrigger id=\"schedule-cadence\" className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {CADENCES.map((c) => (\n <SelectItem key={c} value={c}>\n {c.charAt(0) + c.slice(1).toLowerCase()}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div>\n <Label htmlFor=\"schedule-format\">Export format</Label>\n <Select\n value={form.format}\n onValueChange={(v) => setForm((p) => ({ ...p, format: v as ReportExportFormat }))}\n >\n <SelectTrigger id=\"schedule-format\" className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {FORMATS.map((f) => (\n <SelectItem key={f} value={f}>\n {f}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n\n {form.cadence === 'WEEKLY' && (\n <div>\n <Label htmlFor=\"schedule-dow\">Day of week</Label>\n <Select\n value={String(form.dayOfWeek)}\n onValueChange={(v) => setForm((p) => ({ ...p, dayOfWeek: Number(v) }))}\n >\n <SelectTrigger id=\"schedule-dow\" className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {WEEKDAYS.map((label, index) => (\n <SelectItem key={label} value={String(index)}>\n {label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n {form.cadence === 'MONTHLY' && (\n <div>\n <Label htmlFor=\"schedule-dom\">Day of month</Label>\n <Input\n id=\"schedule-dom\"\n type=\"number\"\n min={1}\n max={28}\n className=\"mt-1\"\n value={form.dayOfMonth}\n onChange={(e) =>\n setForm((p) => ({\n ...p,\n dayOfMonth: Math.min(28, Math.max(1, Number(e.target.value) || 1)),\n }))\n }\n />\n <p className=\"mt-1 text-xs text-muted-foreground\">\n Capped at 28 so every month has this day.\n </p>\n </div>\n )}\n\n <div>\n <Label htmlFor=\"schedule-hour\">Hour (UTC)</Label>\n <Select\n value={String(form.hourUtc)}\n onValueChange={(v) => setForm((p) => ({ ...p, hourUtc: Number(v) }))}\n >\n <SelectTrigger id=\"schedule-hour\" className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {Array.from({ length: 24 }, (_, hour) => (\n <SelectItem key={hour} value={String(hour)}>\n {String(hour).padStart(2, '0')}:00 UTC\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n That&rsquo;s {localHourLabel(form.hourUtc)} for you.\n </p>\n </div>\n\n <div>\n <Label>Recipients (read in-app; no email yet)</Label>\n <div className=\"mt-1\">\n <RecipientsPicker selected={form.recipientIds} onToggle={toggleRecipient} />\n </div>\n </div>\n </div>\n\n {error && <ErrorLine message={error} />}\n\n <ResponsiveDialogFooter>\n <Button variant=\"outline\" onClick={onCancel}>\n Cancel\n </Button>\n <Button onClick={() => void submit()} disabled={saving}>\n {saving ? 'Saving…' : 'Save schedule'}\n </Button>\n </ResponsiveDialogFooter>\n </>\n );\n}\n\nfunction ScheduleDialog({\n reportId,\n schedule,\n open,\n onOpenChange,\n}: {\n reportId: string;\n schedule: ReportSchedule | null;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}) {\n return (\n <ResponsiveDialog open={open} onOpenChange={onOpenChange}>\n <ResponsiveDialogContent className=\"max-h-[85vh] overflow-y-auto sm:max-w-lg\">\n {open && (\n <ScheduleForm\n reportId={reportId}\n schedule={schedule}\n onCancel={() => onOpenChange(false)}\n onSaved={() => onOpenChange(false)}\n />\n )}\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n );\n}\n\nfunction ActiveToggle({ schedule, reportId }: { schedule: ReportSchedule; reportId: string }) {\n const [update, { loading }] = useMutation(UPDATE_REPORT_SCHEDULE, {\n refetchQueries: [{ query: LIST_REPORT_SCHEDULES, variables: { reportId } }],\n });\n const [error, setError] = useState<string | null>(null);\n return (\n <div className=\"flex items-center gap-1.5\">\n <Switch\n checked={schedule.active}\n disabled={loading}\n aria-label={schedule.active ? 'Pause schedule' : 'Resume schedule'}\n onCheckedChange={(checked) => {\n setError(null);\n void (async () => {\n try {\n await throwOnError(\n update({ variables: { id: schedule.id, input: { active: checked } } })\n );\n } catch (e) {\n setError(mutationErrorMessage(e, 'Could not update.'));\n }\n })();\n }}\n />\n <span className=\"text-xs text-muted-foreground\">{schedule.active ? 'Active' : 'Paused'}</span>\n {error && <ErrorLine message={error} />}\n </div>\n );\n}\n\nexport function SchedulesPanel({ reportId }: { reportId: string }) {\n const [dialogOpen, setDialogOpen] = useState(false);\n const [editing, setEditing] = useState<ReportSchedule | null>(null);\n const { data, loading } = useQuery<{ planmagnetReportSchedules: ReportSchedule[] }>(\n LIST_REPORT_SCHEDULES,\n { variables: { reportId } }\n );\n const [remove] = useMutation(DELETE_REPORT_SCHEDULE, {\n refetchQueries: [{ query: LIST_REPORT_SCHEDULES, variables: { reportId } }],\n });\n const [deleteError, setDeleteError] = useState<string | null>(null);\n\n const schedules = data?.planmagnetReportSchedules ?? [];\n\n return (\n <div className=\"space-y-3\" data-testid=\"report-schedules\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-sm font-semibold\">Schedules</h2>\n <Button\n size=\"sm\"\n onClick={() => {\n setEditing(null);\n setDialogOpen(true);\n }}\n >\n <Plus className=\"mr-1 h-4 w-4\" />\n New schedule\n </Button>\n </div>\n <p className=\"text-xs text-muted-foreground\">\n Email delivery is not available yet (Linear BOFF-7927) — recipients read a scheduled run\n in-app, under run history.\n </p>\n {deleteError && <ErrorLine message={deleteError} />}\n\n {loading && !data ? (\n <p className=\"text-sm text-muted-foreground\">Loading…</p>\n ) : schedules.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">No schedules yet.</p>\n ) : (\n <ul className=\"space-y-2\">\n {schedules.map((schedule) => (\n <li key={schedule.id} className=\"rounded-md border border-border p-3 text-sm\">\n <div className=\"flex flex-wrap items-start justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n <CalendarClock className=\"h-4 w-4 text-muted-foreground\" aria-hidden={true} />\n <span className=\"font-medium\">\n {schedule.cadence.charAt(0) + schedule.cadence.slice(1).toLowerCase()} at{' '}\n {String(schedule.hourUtc).padStart(2, '0')}:00 UTC (\n {localHourLabel(schedule.hourUtc)})\n </span>\n <Badge variant=\"outline\">{schedule.format}</Badge>\n </div>\n <div className=\"flex items-center gap-2\">\n <ActiveToggle schedule={schedule} reportId={reportId} />\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => {\n setEditing(schedule);\n setDialogOpen(true);\n }}\n >\n Edit\n </Button>\n <ConfirmButton\n label=\"Delete\"\n icon={null}\n title=\"Delete this schedule?\"\n description=\"It stops running. This cannot be undone.\"\n confirmLabel=\"Delete\"\n destructive\n variant=\"outline\"\n disabled={false}\n onConfirm={() => {\n setDeleteError(null);\n void (async () => {\n try {\n await throwOnError(remove({ variables: { id: schedule.id } }));\n } catch (e) {\n setDeleteError(mutationErrorMessage(e, 'Could not delete.'));\n }\n })();\n }}\n />\n </div>\n </div>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n Next run {formatDateTime(schedule.nextRunAt)} · Last run{' '}\n {formatDateTime(schedule.lastRunAt)}\n {schedule.lastError ? ` · last error: ${schedule.lastError}` : ''}\n </p>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n {schedule.recipientIds.length === 0 ? (\n 'No recipients'\n ) : (\n <>\n Recipients:{' '}\n {schedule.recipientIds.map((id, index) => (\n <span key={id}>\n {index > 0 && ', '}\n <PersonName id={id} />\n </span>\n ))}\n </>\n )}\n </p>\n </li>\n ))}\n </ul>\n )}\n\n <ScheduleDialog\n reportId={reportId}\n schedule={editing}\n open={dialogOpen}\n onOpenChange={setDialogOpen}\n />\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function ShareDialog({ reportId, runId }: {
2
+ reportId: string;
3
+ runId: string | null;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=ShareDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareDialog.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/reports/ShareDialog.tsx"],"names":[],"mappings":"AAwCA,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,2CA4O1F"}