@burdenoff/microfe-planmagnet 2026.1008.1 → 2026.1008.3

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 (1970) hide show
  1. package/dist/_virtual/__vite-browser-external.js +0 -2
  2. package/dist/components/MarkdownEditor.js +0 -2
  3. package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js +0 -2
  4. package/dist/node_modules/@apollo/client/errors/ServerError.js +0 -2
  5. package/dist/node_modules/@apollo/client/errors/utils.js +0 -2
  6. package/dist/node_modules/clsx/dist/clsx.js +0 -2
  7. package/dist/node_modules/d3-array/src/ascending.js +0 -2
  8. package/dist/node_modules/d3-array/src/bisect.js +0 -2
  9. package/dist/node_modules/d3-array/src/bisector.js +0 -2
  10. package/dist/node_modules/d3-array/src/descending.js +0 -2
  11. package/dist/node_modules/d3-array/src/max.js +0 -2
  12. package/dist/node_modules/d3-array/src/min.js +0 -2
  13. package/dist/node_modules/d3-array/src/number.js +0 -2
  14. package/dist/node_modules/d3-array/src/quantile.js +0 -2
  15. package/dist/node_modules/d3-array/src/quickselect.js +0 -2
  16. package/dist/node_modules/d3-array/src/range.js +0 -2
  17. package/dist/node_modules/d3-array/src/sort.js +0 -2
  18. package/dist/node_modules/d3-array/src/ticks.js +0 -2
  19. package/dist/node_modules/d3-color/src/color.js +0 -2
  20. package/dist/node_modules/d3-color/src/define.js +0 -2
  21. package/dist/node_modules/d3-format/src/defaultLocale.js +0 -2
  22. package/dist/node_modules/d3-format/src/exponent.js +0 -2
  23. package/dist/node_modules/d3-format/src/formatDecimal.js +0 -2
  24. package/dist/node_modules/d3-format/src/formatGroup.js +0 -2
  25. package/dist/node_modules/d3-format/src/formatNumerals.js +0 -2
  26. package/dist/node_modules/d3-format/src/formatPrefixAuto.js +0 -2
  27. package/dist/node_modules/d3-format/src/formatRounded.js +0 -2
  28. package/dist/node_modules/d3-format/src/formatSpecifier.js +0 -2
  29. package/dist/node_modules/d3-format/src/formatTrim.js +0 -2
  30. package/dist/node_modules/d3-format/src/formatTypes.js +0 -2
  31. package/dist/node_modules/d3-format/src/identity.js +0 -2
  32. package/dist/node_modules/d3-format/src/locale.js +0 -2
  33. package/dist/node_modules/d3-format/src/precisionFixed.js +0 -2
  34. package/dist/node_modules/d3-format/src/precisionPrefix.js +0 -2
  35. package/dist/node_modules/d3-format/src/precisionRound.js +0 -2
  36. package/dist/node_modules/d3-interpolate/src/array.js +0 -2
  37. package/dist/node_modules/d3-interpolate/src/basis.js +0 -2
  38. package/dist/node_modules/d3-interpolate/src/basisClosed.js +0 -2
  39. package/dist/node_modules/d3-interpolate/src/color.js +0 -2
  40. package/dist/node_modules/d3-interpolate/src/constant.js +0 -2
  41. package/dist/node_modules/d3-interpolate/src/date.js +0 -2
  42. package/dist/node_modules/d3-interpolate/src/number.js +0 -2
  43. package/dist/node_modules/d3-interpolate/src/numberArray.js +0 -2
  44. package/dist/node_modules/d3-interpolate/src/object.js +0 -2
  45. package/dist/node_modules/d3-interpolate/src/piecewise.js +0 -2
  46. package/dist/node_modules/d3-interpolate/src/rgb.js +0 -2
  47. package/dist/node_modules/d3-interpolate/src/round.js +0 -2
  48. package/dist/node_modules/d3-interpolate/src/string.js +0 -2
  49. package/dist/node_modules/d3-interpolate/src/value.js +0 -2
  50. package/dist/node_modules/d3-path/src/path.js +0 -2
  51. package/dist/node_modules/d3-scale/src/band.js +0 -2
  52. package/dist/node_modules/d3-scale/src/constant.js +0 -2
  53. package/dist/node_modules/d3-scale/src/continuous.js +0 -2
  54. package/dist/node_modules/d3-scale/src/diverging.js +0 -2
  55. package/dist/node_modules/d3-scale/src/identity.js +0 -2
  56. package/dist/node_modules/d3-scale/src/init.js +0 -2
  57. package/dist/node_modules/d3-scale/src/linear.js +0 -2
  58. package/dist/node_modules/d3-scale/src/log.js +0 -2
  59. package/dist/node_modules/d3-scale/src/nice.js +0 -2
  60. package/dist/node_modules/d3-scale/src/number.js +0 -2
  61. package/dist/node_modules/d3-scale/src/ordinal.js +0 -2
  62. package/dist/node_modules/d3-scale/src/pow.js +0 -2
  63. package/dist/node_modules/d3-scale/src/quantile.js +0 -2
  64. package/dist/node_modules/d3-scale/src/quantize.js +0 -2
  65. package/dist/node_modules/d3-scale/src/radial.js +0 -2
  66. package/dist/node_modules/d3-scale/src/sequential.js +0 -2
  67. package/dist/node_modules/d3-scale/src/sequentialQuantile.js +0 -2
  68. package/dist/node_modules/d3-scale/src/symlog.js +0 -2
  69. package/dist/node_modules/d3-scale/src/threshold.js +0 -2
  70. package/dist/node_modules/d3-scale/src/tickFormat.js +0 -2
  71. package/dist/node_modules/d3-scale/src/time.js +0 -2
  72. package/dist/node_modules/d3-scale/src/utcTime.js +0 -2
  73. package/dist/node_modules/d3-shape/src/area.js +0 -2
  74. package/dist/node_modules/d3-shape/src/array.js +0 -2
  75. package/dist/node_modules/d3-shape/src/constant.js +0 -2
  76. package/dist/node_modules/d3-shape/src/curve/basis.js +0 -2
  77. package/dist/node_modules/d3-shape/src/curve/basisClosed.js +0 -2
  78. package/dist/node_modules/d3-shape/src/curve/basisOpen.js +0 -2
  79. package/dist/node_modules/d3-shape/src/curve/bump.js +0 -2
  80. package/dist/node_modules/d3-shape/src/curve/linear.js +0 -2
  81. package/dist/node_modules/d3-shape/src/curve/linearClosed.js +0 -2
  82. package/dist/node_modules/d3-shape/src/curve/monotone.js +0 -2
  83. package/dist/node_modules/d3-shape/src/curve/natural.js +0 -2
  84. package/dist/node_modules/d3-shape/src/curve/step.js +0 -2
  85. package/dist/node_modules/d3-shape/src/line.js +0 -2
  86. package/dist/node_modules/d3-shape/src/math.js +0 -2
  87. package/dist/node_modules/d3-shape/src/noop.js +0 -2
  88. package/dist/node_modules/d3-shape/src/offset/expand.js +0 -2
  89. package/dist/node_modules/d3-shape/src/offset/none.js +0 -2
  90. package/dist/node_modules/d3-shape/src/offset/silhouette.js +0 -2
  91. package/dist/node_modules/d3-shape/src/offset/wiggle.js +0 -2
  92. package/dist/node_modules/d3-shape/src/order/none.js +0 -2
  93. package/dist/node_modules/d3-shape/src/path.js +0 -2
  94. package/dist/node_modules/d3-shape/src/point.js +0 -2
  95. package/dist/node_modules/d3-shape/src/stack.js +0 -2
  96. package/dist/node_modules/d3-shape/src/symbol/circle.js +0 -2
  97. package/dist/node_modules/d3-shape/src/symbol/cross.js +0 -2
  98. package/dist/node_modules/d3-shape/src/symbol/diamond.js +0 -2
  99. package/dist/node_modules/d3-shape/src/symbol/square.js +0 -2
  100. package/dist/node_modules/d3-shape/src/symbol/star.js +0 -2
  101. package/dist/node_modules/d3-shape/src/symbol/triangle.js +0 -2
  102. package/dist/node_modules/d3-shape/src/symbol/wye.js +0 -2
  103. package/dist/node_modules/d3-shape/src/symbol.js +0 -2
  104. package/dist/node_modules/d3-time/src/day.js +0 -2
  105. package/dist/node_modules/d3-time/src/duration.js +0 -2
  106. package/dist/node_modules/d3-time/src/hour.js +0 -2
  107. package/dist/node_modules/d3-time/src/interval.js +0 -2
  108. package/dist/node_modules/d3-time/src/millisecond.js +0 -2
  109. package/dist/node_modules/d3-time/src/minute.js +0 -2
  110. package/dist/node_modules/d3-time/src/month.js +0 -2
  111. package/dist/node_modules/d3-time/src/second.js +0 -2
  112. package/dist/node_modules/d3-time/src/ticks.js +0 -2
  113. package/dist/node_modules/d3-time/src/week.js +0 -2
  114. package/dist/node_modules/d3-time/src/year.js +0 -2
  115. package/dist/node_modules/d3-time-format/src/defaultLocale.js +0 -2
  116. package/dist/node_modules/d3-time-format/src/locale.js +0 -2
  117. package/dist/node_modules/decimal.js-light/decimal.js +0 -2
  118. package/dist/node_modules/eventemitter3/index.js +0 -2
  119. package/dist/node_modules/fast-equals/dist/es/index.js +0 -2
  120. package/dist/node_modules/fflate/esm/browser.js +0 -2
  121. package/dist/node_modules/internmap/src/index.js +0 -2
  122. package/dist/node_modules/jszip/dist/jszip.min.js +0 -2
  123. package/dist/node_modules/lodash/_DataView.js +0 -2
  124. package/dist/node_modules/lodash/_Hash.js +0 -2
  125. package/dist/node_modules/lodash/_ListCache.js +0 -2
  126. package/dist/node_modules/lodash/_Map.js +0 -2
  127. package/dist/node_modules/lodash/_MapCache.js +0 -2
  128. package/dist/node_modules/lodash/_Promise.js +0 -2
  129. package/dist/node_modules/lodash/_Set.js +0 -2
  130. package/dist/node_modules/lodash/_SetCache.js +0 -2
  131. package/dist/node_modules/lodash/_Stack.js +0 -2
  132. package/dist/node_modules/lodash/_Symbol.js +0 -2
  133. package/dist/node_modules/lodash/_Uint8Array.js +0 -2
  134. package/dist/node_modules/lodash/_WeakMap.js +0 -2
  135. package/dist/node_modules/lodash/_apply.js +0 -2
  136. package/dist/node_modules/lodash/_arrayEach.js +0 -2
  137. package/dist/node_modules/lodash/_arrayEvery.js +0 -2
  138. package/dist/node_modules/lodash/_arrayFilter.js +0 -2
  139. package/dist/node_modules/lodash/_arrayIncludes.js +0 -2
  140. package/dist/node_modules/lodash/_arrayIncludesWith.js +0 -2
  141. package/dist/node_modules/lodash/_arrayLikeKeys.js +0 -2
  142. package/dist/node_modules/lodash/_arrayMap.js +0 -2
  143. package/dist/node_modules/lodash/_arrayPush.js +0 -2
  144. package/dist/node_modules/lodash/_arraySome.js +0 -2
  145. package/dist/node_modules/lodash/_asciiToArray.js +0 -2
  146. package/dist/node_modules/lodash/_assignValue.js +0 -2
  147. package/dist/node_modules/lodash/_assocIndexOf.js +0 -2
  148. package/dist/node_modules/lodash/_baseAssign.js +0 -2
  149. package/dist/node_modules/lodash/_baseAssignIn.js +0 -2
  150. package/dist/node_modules/lodash/_baseAssignValue.js +0 -2
  151. package/dist/node_modules/lodash/_baseClone.js +0 -2
  152. package/dist/node_modules/lodash/_baseCreate.js +0 -2
  153. package/dist/node_modules/lodash/_baseEach.js +0 -2
  154. package/dist/node_modules/lodash/_baseEvery.js +0 -2
  155. package/dist/node_modules/lodash/_baseExtremum.js +0 -2
  156. package/dist/node_modules/lodash/_baseFindIndex.js +0 -2
  157. package/dist/node_modules/lodash/_baseFlatten.js +0 -2
  158. package/dist/node_modules/lodash/_baseFor.js +0 -2
  159. package/dist/node_modules/lodash/_baseForOwn.js +0 -2
  160. package/dist/node_modules/lodash/_baseGet.js +0 -2
  161. package/dist/node_modules/lodash/_baseGetAllKeys.js +0 -2
  162. package/dist/node_modules/lodash/_baseGetTag.js +0 -2
  163. package/dist/node_modules/lodash/_baseGt.js +0 -2
  164. package/dist/node_modules/lodash/_baseHasIn.js +0 -2
  165. package/dist/node_modules/lodash/_baseIndexOf.js +0 -2
  166. package/dist/node_modules/lodash/_baseIsArguments.js +0 -2
  167. package/dist/node_modules/lodash/_baseIsEqual.js +0 -2
  168. package/dist/node_modules/lodash/_baseIsEqualDeep.js +0 -2
  169. package/dist/node_modules/lodash/_baseIsMap.js +0 -2
  170. package/dist/node_modules/lodash/_baseIsMatch.js +0 -2
  171. package/dist/node_modules/lodash/_baseIsNaN.js +0 -2
  172. package/dist/node_modules/lodash/_baseIsNative.js +0 -2
  173. package/dist/node_modules/lodash/_baseIsSet.js +0 -2
  174. package/dist/node_modules/lodash/_baseIsTypedArray.js +0 -2
  175. package/dist/node_modules/lodash/_baseIteratee.js +0 -2
  176. package/dist/node_modules/lodash/_baseKeys.js +0 -2
  177. package/dist/node_modules/lodash/_baseKeysIn.js +0 -2
  178. package/dist/node_modules/lodash/_baseLt.js +0 -2
  179. package/dist/node_modules/lodash/_baseMap.js +0 -2
  180. package/dist/node_modules/lodash/_baseMatches.js +0 -2
  181. package/dist/node_modules/lodash/_baseMatchesProperty.js +0 -2
  182. package/dist/node_modules/lodash/_baseOrderBy.js +0 -2
  183. package/dist/node_modules/lodash/_baseProperty.js +0 -2
  184. package/dist/node_modules/lodash/_basePropertyDeep.js +0 -2
  185. package/dist/node_modules/lodash/_baseRange.js +0 -2
  186. package/dist/node_modules/lodash/_baseRest.js +0 -2
  187. package/dist/node_modules/lodash/_baseSetToString.js +0 -2
  188. package/dist/node_modules/lodash/_baseSlice.js +0 -2
  189. package/dist/node_modules/lodash/_baseSome.js +0 -2
  190. package/dist/node_modules/lodash/_baseSortBy.js +0 -2
  191. package/dist/node_modules/lodash/_baseSum.js +0 -2
  192. package/dist/node_modules/lodash/_baseTimes.js +0 -2
  193. package/dist/node_modules/lodash/_baseToString.js +0 -2
  194. package/dist/node_modules/lodash/_baseTrim.js +0 -2
  195. package/dist/node_modules/lodash/_baseUnary.js +0 -2
  196. package/dist/node_modules/lodash/_baseUniq.js +0 -2
  197. package/dist/node_modules/lodash/_baseUnset.js +0 -2
  198. package/dist/node_modules/lodash/_cacheHas.js +0 -2
  199. package/dist/node_modules/lodash/_castPath.js +0 -2
  200. package/dist/node_modules/lodash/_castSlice.js +0 -2
  201. package/dist/node_modules/lodash/_cloneArrayBuffer.js +0 -2
  202. package/dist/node_modules/lodash/_cloneBuffer.js +0 -2
  203. package/dist/node_modules/lodash/_cloneDataView.js +0 -2
  204. package/dist/node_modules/lodash/_cloneRegExp.js +0 -2
  205. package/dist/node_modules/lodash/_cloneSymbol.js +0 -2
  206. package/dist/node_modules/lodash/_cloneTypedArray.js +0 -2
  207. package/dist/node_modules/lodash/_compareAscending.js +0 -2
  208. package/dist/node_modules/lodash/_compareMultiple.js +0 -2
  209. package/dist/node_modules/lodash/_copyArray.js +0 -2
  210. package/dist/node_modules/lodash/_copyObject.js +0 -2
  211. package/dist/node_modules/lodash/_copySymbols.js +0 -2
  212. package/dist/node_modules/lodash/_copySymbolsIn.js +0 -2
  213. package/dist/node_modules/lodash/_coreJsData.js +0 -2
  214. package/dist/node_modules/lodash/_createBaseEach.js +0 -2
  215. package/dist/node_modules/lodash/_createBaseFor.js +0 -2
  216. package/dist/node_modules/lodash/_createCaseFirst.js +0 -2
  217. package/dist/node_modules/lodash/_createFind.js +0 -2
  218. package/dist/node_modules/lodash/_createRange.js +0 -2
  219. package/dist/node_modules/lodash/_createSet.js +0 -2
  220. package/dist/node_modules/lodash/_customOmitClone.js +0 -2
  221. package/dist/node_modules/lodash/_defineProperty.js +0 -2
  222. package/dist/node_modules/lodash/_equalArrays.js +0 -2
  223. package/dist/node_modules/lodash/_equalByTag.js +0 -2
  224. package/dist/node_modules/lodash/_equalObjects.js +0 -2
  225. package/dist/node_modules/lodash/_flatRest.js +0 -2
  226. package/dist/node_modules/lodash/_freeGlobal.js +0 -2
  227. package/dist/node_modules/lodash/_getAllKeys.js +0 -2
  228. package/dist/node_modules/lodash/_getAllKeysIn.js +0 -2
  229. package/dist/node_modules/lodash/_getMapData.js +0 -2
  230. package/dist/node_modules/lodash/_getMatchData.js +0 -2
  231. package/dist/node_modules/lodash/_getNative.js +0 -2
  232. package/dist/node_modules/lodash/_getPrototype.js +0 -2
  233. package/dist/node_modules/lodash/_getRawTag.js +0 -2
  234. package/dist/node_modules/lodash/_getSymbols.js +0 -2
  235. package/dist/node_modules/lodash/_getSymbolsIn.js +0 -2
  236. package/dist/node_modules/lodash/_getTag.js +0 -2
  237. package/dist/node_modules/lodash/_getValue.js +0 -2
  238. package/dist/node_modules/lodash/_hasPath.js +0 -2
  239. package/dist/node_modules/lodash/_hasUnicode.js +0 -2
  240. package/dist/node_modules/lodash/_hashClear.js +0 -2
  241. package/dist/node_modules/lodash/_hashDelete.js +0 -2
  242. package/dist/node_modules/lodash/_hashGet.js +0 -2
  243. package/dist/node_modules/lodash/_hashHas.js +0 -2
  244. package/dist/node_modules/lodash/_hashSet.js +0 -2
  245. package/dist/node_modules/lodash/_initCloneArray.js +0 -2
  246. package/dist/node_modules/lodash/_initCloneByTag.js +0 -2
  247. package/dist/node_modules/lodash/_initCloneObject.js +0 -2
  248. package/dist/node_modules/lodash/_isFlattenable.js +0 -2
  249. package/dist/node_modules/lodash/_isIndex.js +0 -2
  250. package/dist/node_modules/lodash/_isIterateeCall.js +0 -2
  251. package/dist/node_modules/lodash/_isKey.js +0 -2
  252. package/dist/node_modules/lodash/_isKeyable.js +0 -2
  253. package/dist/node_modules/lodash/_isMasked.js +0 -2
  254. package/dist/node_modules/lodash/_isPrototype.js +0 -2
  255. package/dist/node_modules/lodash/_isStrictComparable.js +0 -2
  256. package/dist/node_modules/lodash/_listCacheClear.js +0 -2
  257. package/dist/node_modules/lodash/_listCacheDelete.js +0 -2
  258. package/dist/node_modules/lodash/_listCacheGet.js +0 -2
  259. package/dist/node_modules/lodash/_listCacheHas.js +0 -2
  260. package/dist/node_modules/lodash/_listCacheSet.js +0 -2
  261. package/dist/node_modules/lodash/_mapCacheClear.js +0 -2
  262. package/dist/node_modules/lodash/_mapCacheDelete.js +0 -2
  263. package/dist/node_modules/lodash/_mapCacheGet.js +0 -2
  264. package/dist/node_modules/lodash/_mapCacheHas.js +0 -2
  265. package/dist/node_modules/lodash/_mapCacheSet.js +0 -2
  266. package/dist/node_modules/lodash/_mapToArray.js +0 -2
  267. package/dist/node_modules/lodash/_matchesStrictComparable.js +0 -2
  268. package/dist/node_modules/lodash/_memoizeCapped.js +0 -2
  269. package/dist/node_modules/lodash/_nativeCreate.js +0 -2
  270. package/dist/node_modules/lodash/_nativeKeys.js +0 -2
  271. package/dist/node_modules/lodash/_nativeKeysIn.js +0 -2
  272. package/dist/node_modules/lodash/_nodeUtil.js +0 -2
  273. package/dist/node_modules/lodash/_objectToString.js +0 -2
  274. package/dist/node_modules/lodash/_overArg.js +0 -2
  275. package/dist/node_modules/lodash/_overRest.js +0 -2
  276. package/dist/node_modules/lodash/_parent.js +0 -2
  277. package/dist/node_modules/lodash/_root.js +0 -2
  278. package/dist/node_modules/lodash/_setCacheAdd.js +0 -2
  279. package/dist/node_modules/lodash/_setCacheHas.js +0 -2
  280. package/dist/node_modules/lodash/_setToArray.js +0 -2
  281. package/dist/node_modules/lodash/_setToString.js +0 -2
  282. package/dist/node_modules/lodash/_shortOut.js +0 -2
  283. package/dist/node_modules/lodash/_stackClear.js +0 -2
  284. package/dist/node_modules/lodash/_stackDelete.js +0 -2
  285. package/dist/node_modules/lodash/_stackGet.js +0 -2
  286. package/dist/node_modules/lodash/_stackHas.js +0 -2
  287. package/dist/node_modules/lodash/_stackSet.js +0 -2
  288. package/dist/node_modules/lodash/_strictIndexOf.js +0 -2
  289. package/dist/node_modules/lodash/_stringToArray.js +0 -2
  290. package/dist/node_modules/lodash/_stringToPath.js +0 -2
  291. package/dist/node_modules/lodash/_toKey.js +0 -2
  292. package/dist/node_modules/lodash/_toSource.js +0 -2
  293. package/dist/node_modules/lodash/_trimmedEndIndex.js +0 -2
  294. package/dist/node_modules/lodash/_unicodeToArray.js +0 -2
  295. package/dist/node_modules/lodash/constant.js +0 -2
  296. package/dist/node_modules/lodash/debounce.js +0 -2
  297. package/dist/node_modules/lodash/eq.js +0 -2
  298. package/dist/node_modules/lodash/every.js +0 -2
  299. package/dist/node_modules/lodash/find.js +0 -2
  300. package/dist/node_modules/lodash/findIndex.js +0 -2
  301. package/dist/node_modules/lodash/flatMap.js +0 -2
  302. package/dist/node_modules/lodash/flatten.js +0 -2
  303. package/dist/node_modules/lodash/get.js +0 -2
  304. package/dist/node_modules/lodash/hasIn.js +0 -2
  305. package/dist/node_modules/lodash/identity.js +0 -2
  306. package/dist/node_modules/lodash/isArguments.js +0 -2
  307. package/dist/node_modules/lodash/isArray.js +0 -2
  308. package/dist/node_modules/lodash/isArrayLike.js +0 -2
  309. package/dist/node_modules/lodash/isBoolean.js +0 -2
  310. package/dist/node_modules/lodash/isBuffer.js +0 -2
  311. package/dist/node_modules/lodash/isEqual.js +0 -2
  312. package/dist/node_modules/lodash/isFunction.js +0 -2
  313. package/dist/node_modules/lodash/isLength.js +0 -2
  314. package/dist/node_modules/lodash/isMap.js +0 -2
  315. package/dist/node_modules/lodash/isNaN.js +0 -2
  316. package/dist/node_modules/lodash/isNil.js +0 -2
  317. package/dist/node_modules/lodash/isNumber.js +0 -2
  318. package/dist/node_modules/lodash/isObject.js +0 -2
  319. package/dist/node_modules/lodash/isObjectLike.js +0 -2
  320. package/dist/node_modules/lodash/isPlainObject.js +0 -2
  321. package/dist/node_modules/lodash/isSet.js +0 -2
  322. package/dist/node_modules/lodash/isString.js +0 -2
  323. package/dist/node_modules/lodash/isSymbol.js +0 -2
  324. package/dist/node_modules/lodash/isTypedArray.js +0 -2
  325. package/dist/node_modules/lodash/keys.js +0 -2
  326. package/dist/node_modules/lodash/keysIn.js +0 -2
  327. package/dist/node_modules/lodash/last.js +0 -2
  328. package/dist/node_modules/lodash/map.js +0 -2
  329. package/dist/node_modules/lodash/mapValues.js +0 -2
  330. package/dist/node_modules/lodash/max.js +0 -2
  331. package/dist/node_modules/lodash/maxBy.js +0 -2
  332. package/dist/node_modules/lodash/memoize.js +0 -2
  333. package/dist/node_modules/lodash/min.js +0 -2
  334. package/dist/node_modules/lodash/noop.js +0 -2
  335. package/dist/node_modules/lodash/now.js +0 -2
  336. package/dist/node_modules/lodash/omit.js +0 -2
  337. package/dist/node_modules/lodash/property.js +0 -2
  338. package/dist/node_modules/lodash/range.js +0 -2
  339. package/dist/node_modules/lodash/some.js +0 -2
  340. package/dist/node_modules/lodash/sortBy.js +0 -2
  341. package/dist/node_modules/lodash/stubArray.js +0 -2
  342. package/dist/node_modules/lodash/stubFalse.js +0 -2
  343. package/dist/node_modules/lodash/sumBy.js +0 -2
  344. package/dist/node_modules/lodash/throttle.js +0 -2
  345. package/dist/node_modules/lodash/toFinite.js +0 -2
  346. package/dist/node_modules/lodash/toInteger.js +0 -2
  347. package/dist/node_modules/lodash/toNumber.js +0 -2
  348. package/dist/node_modules/lodash/toString.js +0 -2
  349. package/dist/node_modules/lodash/uniqBy.js +0 -2
  350. package/dist/node_modules/lodash/upperFirst.js +0 -2
  351. package/dist/node_modules/object-assign/index.js +0 -2
  352. package/dist/node_modules/pptxgenjs/dist/pptxgen.es.js +0 -2
  353. package/dist/node_modules/prop-types/checkPropTypes.js +0 -2
  354. package/dist/node_modules/prop-types/factoryWithThrowingShims.js +0 -2
  355. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js +0 -2
  356. package/dist/node_modules/prop-types/index.js +0 -2
  357. package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js +0 -2
  358. package/dist/node_modules/prop-types/lib/has.js +0 -2
  359. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js +0 -2
  360. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js +0 -2
  361. package/dist/node_modules/prop-types/node_modules/react-is/index.js +0 -2
  362. package/dist/node_modules/react-is/cjs/react-is.development.js +0 -2
  363. package/dist/node_modules/react-is/cjs/react-is.production.min.js +0 -2
  364. package/dist/node_modules/react-is/index.js +0 -2
  365. package/dist/node_modules/react-smooth/es6/Animate.js +0 -2
  366. package/dist/node_modules/react-smooth/es6/AnimateManager.js +0 -2
  367. package/dist/node_modules/react-smooth/es6/configUpdate.js +0 -2
  368. package/dist/node_modules/react-smooth/es6/easing.js +0 -2
  369. package/dist/node_modules/react-smooth/es6/index.js +0 -2
  370. package/dist/node_modules/react-smooth/es6/setRafTimeout.js +0 -2
  371. package/dist/node_modules/react-smooth/es6/util.js +0 -2
  372. package/dist/node_modules/recharts/es6/cartesian/Area.js +0 -2
  373. package/dist/node_modules/recharts/es6/cartesian/Bar.js +0 -2
  374. package/dist/node_modules/recharts/es6/cartesian/Brush.js +0 -2
  375. package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js +0 -2
  376. package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js +0 -2
  377. package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js +0 -2
  378. package/dist/node_modules/recharts/es6/cartesian/Line.js +0 -2
  379. package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js +0 -2
  380. package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js +0 -2
  381. package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js +0 -2
  382. package/dist/node_modules/recharts/es6/cartesian/XAxis.js +0 -2
  383. package/dist/node_modules/recharts/es6/cartesian/YAxis.js +0 -2
  384. package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js +0 -2
  385. package/dist/node_modules/recharts/es6/cartesian/getTicks.js +0 -2
  386. package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js +0 -2
  387. package/dist/node_modules/recharts/es6/chart/AreaChart.js +0 -2
  388. package/dist/node_modules/recharts/es6/chart/BarChart.js +0 -2
  389. package/dist/node_modules/recharts/es6/chart/LineChart.js +0 -2
  390. package/dist/node_modules/recharts/es6/chart/Sankey.js +0 -2
  391. package/dist/node_modules/recharts/es6/chart/Treemap.js +0 -2
  392. package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js +0 -2
  393. package/dist/node_modules/recharts/es6/component/Cell.js +0 -2
  394. package/dist/node_modules/recharts/es6/component/Cursor.js +0 -2
  395. package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js +0 -2
  396. package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js +0 -2
  397. package/dist/node_modules/recharts/es6/component/Label.js +0 -2
  398. package/dist/node_modules/recharts/es6/component/LabelList.js +0 -2
  399. package/dist/node_modules/recharts/es6/component/Legend.js +0 -2
  400. package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js +0 -2
  401. package/dist/node_modules/recharts/es6/component/Text.js +0 -2
  402. package/dist/node_modules/recharts/es6/component/Tooltip.js +0 -2
  403. package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js +0 -2
  404. package/dist/node_modules/recharts/es6/container/Layer.js +0 -2
  405. package/dist/node_modules/recharts/es6/container/Surface.js +0 -2
  406. package/dist/node_modules/recharts/es6/context/chartLayoutContext.js +0 -2
  407. package/dist/node_modules/recharts/es6/shape/Cross.js +0 -2
  408. package/dist/node_modules/recharts/es6/shape/Curve.js +0 -2
  409. package/dist/node_modules/recharts/es6/shape/Dot.js +0 -2
  410. package/dist/node_modules/recharts/es6/shape/Polygon.js +0 -2
  411. package/dist/node_modules/recharts/es6/shape/Rectangle.js +0 -2
  412. package/dist/node_modules/recharts/es6/shape/Sector.js +0 -2
  413. package/dist/node_modules/recharts/es6/shape/Symbols.js +0 -2
  414. package/dist/node_modules/recharts/es6/shape/Trapezoid.js +0 -2
  415. package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js +0 -2
  416. package/dist/node_modules/recharts/es6/util/BarUtils.js +0 -2
  417. package/dist/node_modules/recharts/es6/util/CartesianUtils.js +0 -2
  418. package/dist/node_modules/recharts/es6/util/ChartUtils.js +0 -2
  419. package/dist/node_modules/recharts/es6/util/Constants.js +0 -2
  420. package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js +0 -2
  421. package/dist/node_modules/recharts/es6/util/DOMUtils.js +0 -2
  422. package/dist/node_modules/recharts/es6/util/DataUtils.js +0 -2
  423. package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js +0 -2
  424. package/dist/node_modules/recharts/es6/util/Events.js +0 -2
  425. package/dist/node_modules/recharts/es6/util/Global.js +0 -2
  426. package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js +0 -2
  427. package/dist/node_modules/recharts/es6/util/LogUtils.js +0 -2
  428. package/dist/node_modules/recharts/es6/util/PolarUtils.js +0 -2
  429. package/dist/node_modules/recharts/es6/util/ReactUtils.js +0 -2
  430. package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js +0 -2
  431. package/dist/node_modules/recharts/es6/util/ShallowEqual.js +0 -2
  432. package/dist/node_modules/recharts/es6/util/TickUtils.js +0 -2
  433. package/dist/node_modules/recharts/es6/util/calculateViewBox.js +0 -2
  434. package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js +0 -2
  435. package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js +0 -2
  436. package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js +0 -2
  437. package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js +0 -2
  438. package/dist/node_modules/recharts/es6/util/getLegendProps.js +0 -2
  439. package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js +0 -2
  440. package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js +0 -2
  441. package/dist/node_modules/recharts/es6/util/tooltip/translate.js +0 -2
  442. package/dist/node_modules/recharts/es6/util/types.js +0 -2
  443. package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js +0 -2
  444. package/dist/node_modules/recharts-scale/es6/util/arithmetic.js +0 -2
  445. package/dist/node_modules/recharts-scale/es6/util/utils.js +0 -2
  446. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +0 -2
  447. package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js +0 -2
  448. package/dist/node_modules/victory-vendor/es/d3-scale.js +0 -2
  449. package/dist/node_modules/write-excel-file/modules/export/convertFileContentToUint8ArrayBrowser.js +0 -2
  450. package/dist/node_modules/write-excel-file/modules/export/convertFilesContentToUint8Arrays.js +0 -2
  451. package/dist/node_modules/write-excel-file/modules/export/downloadBlob.js +0 -2
  452. package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileBrowser.js +0 -2
  453. package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileUniversal.js +0 -2
  454. package/dist/node_modules/write-excel-file/modules/getSheetData/getSheetData.js +0 -2
  455. package/dist/node_modules/write-excel-file/modules/xlsx/features/conditionalFormatting.js +0 -2
  456. package/dist/node_modules/write-excel-file/modules/xlsx/features/images.js +0 -2
  457. package/dist/node_modules/write-excel-file/modules/xlsx/features/stickyRowsOrColumns.js +0 -2
  458. package/dist/node_modules/write-excel-file/modules/xlsx/files/_Content_Types_.xml.js +0 -2
  459. package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.js +0 -2
  460. package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.rels.js +0 -2
  461. package/dist/node_modules/write-excel-file/modules/xlsx/files/rels.js +0 -2
  462. package/dist/node_modules/write-excel-file/modules/xlsx/files/sharedStrings.xml.js +0 -2
  463. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/cell.js +0 -2
  464. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/column.js +0 -2
  465. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/columns.js +0 -2
  466. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/drawingReference.js +0 -2
  467. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/helpers/getCellStyleProperties.js +0 -2
  468. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/mergedCellsDescription.js +0 -2
  469. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageMargins.js +0 -2
  470. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageSetup.js +0 -2
  471. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/processMergedCells.js +0 -2
  472. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/row.js +0 -2
  473. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheet.xml.js +0 -2
  474. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetData.js +0 -2
  475. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetViews.js +0 -2
  476. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml.rels.js +0 -2
  477. package/dist/node_modules/write-excel-file/modules/xlsx/files/styles.xml.js +0 -2
  478. package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.js +0 -2
  479. package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.rels.js +0 -2
  480. package/dist/node_modules/write-excel-file/modules/xlsx/generateXlsxFileContents.js +0 -2
  481. package/dist/node_modules/write-excel-file/modules/xlsx/getFeatures.js +0 -2
  482. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/convertDateToSerialNumber.js +0 -2
  483. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getAdditionalContent.js +0 -2
  484. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getElementXml.js +0 -2
  485. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getWrittenFiles.js +0 -2
  486. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/transformContent.js +0 -2
  487. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getAlignmentXml.js +0 -2
  488. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getBorderXml.js +0 -2
  489. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getCellAddress.js +0 -2
  490. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFileExtensionForContentType.js +0 -2
  491. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFillXml.js +0 -2
  492. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFontXml.js +0 -2
  493. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getOrderOfSiblings.js +0 -2
  494. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getXlsxColorForHexColor.js +0 -2
  495. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasAlignment.js +0 -2
  496. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasBorder.js +0 -2
  497. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFill.js +0 -2
  498. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFont.js +0 -2
  499. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isCellObject.js +0 -2
  500. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isObject.js +0 -2
  501. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/orderOfSiblings.js +0 -2
  502. package/dist/node_modules/write-excel-file/modules/xlsx/initializeSharedStrings.js +0 -2
  503. package/dist/node_modules/write-excel-file/modules/xlsx/initializeSheets.js +0 -2
  504. package/dist/node_modules/write-excel-file/modules/xlsx/initializeStyles.js +0 -2
  505. package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetData.js +0 -2
  506. package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetName.js +0 -2
  507. package/dist/node_modules/write-excel-file/modules/xml/appendMarkupInsideElement.js +0 -2
  508. package/dist/node_modules/write-excel-file/modules/xml/applyEnclosingElementOffset.js +0 -2
  509. package/dist/node_modules/write-excel-file/modules/xml/escapeXmlSpecialCharacters.js +0 -2
  510. package/dist/node_modules/write-excel-file/modules/xml/findElement.js +0 -2
  511. package/dist/node_modules/write-excel-file/modules/xml/findElementInsideElement.js +0 -2
  512. package/dist/node_modules/write-excel-file/modules/xml/findElementsNonRecursive_.js +0 -2
  513. package/dist/node_modules/write-excel-file/modules/xml/getAttributesString.js +0 -2
  514. package/dist/node_modules/write-excel-file/modules/xml/getChildElements.js +0 -2
  515. package/dist/node_modules/write-excel-file/modules/xml/getClosingTagMarkup.js +0 -2
  516. package/dist/node_modules/write-excel-file/modules/xml/getMarkupInsideElement.js +0 -2
  517. package/dist/node_modules/write-excel-file/modules/xml/getOpeningTagMarkup.js +0 -2
  518. package/dist/node_modules/write-excel-file/modules/xml/getSelfClosingTagMarkup.js +0 -2
  519. package/dist/node_modules/write-excel-file/modules/xml/insertElementMarkupAccordingToOrderOfSiblings.js +0 -2
  520. package/dist/node_modules/write-excel-file/modules/xml/prependMarkupInsideElement.js +0 -2
  521. package/dist/node_modules/write-excel-file/modules/xml/removeInvalidXmlCharacters.js +0 -2
  522. package/dist/node_modules/write-excel-file/modules/xml/replaceElement.js +0 -2
  523. package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeName.js +0 -2
  524. package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeValue.js +0 -2
  525. package/dist/node_modules/write-excel-file/modules/xml/sanitizeTextContent.js +0 -2
  526. package/dist/node_modules/write-excel-file/modules/xml/setMarkupInsideElement.js +0 -2
  527. package/dist/node_modules/write-excel-file/modules/zip/zipToArrayBuffer.js +0 -2
  528. package/dist/planmagnet/PlanMagnetRoot.js +0 -2
  529. package/dist/planmagnet/PlanMagnetRoutes.js +0 -2
  530. package/dist/planmagnet/activity/activityDescribe.js +0 -2
  531. package/dist/planmagnet/activity/relativeTime.js +0 -2
  532. package/dist/planmagnet/admin/PlanMagnetAdminRoot.js +0 -2
  533. package/dist/planmagnet/automation/AutomationExecutionsPanel.js +0 -2
  534. package/dist/planmagnet/automation/AutomationRuleFields.js +0 -2
  535. package/dist/planmagnet/automation/automationRuleTypes.js +0 -2
  536. package/dist/planmagnet/board/BoardViewBar.js +0 -2
  537. package/dist/planmagnet/board/BulkActions.js +0 -2
  538. package/dist/planmagnet/board/ProjectBoard.js +0 -2
  539. package/dist/planmagnet/board/boardViewConfig.js +0 -2
  540. package/dist/planmagnet/budgets/BudgetControls.js +0 -2
  541. package/dist/planmagnet/budgets/ExpenseControls.js +0 -2
  542. package/dist/planmagnet/budgets/ProjectBudgetsSummary.js +0 -2
  543. package/dist/planmagnet/budgets/budgetMath.js +0 -2
  544. package/dist/planmagnet/comments/CommentAttachmentUpload.js +0 -2
  545. package/dist/planmagnet/comments/CommentAttachments.js +0 -2
  546. package/dist/planmagnet/comments/CommentBody.js +0 -2
  547. package/dist/planmagnet/comments/CommentThread.js +0 -2
  548. package/dist/planmagnet/comments/MentionComposer.js +0 -2
  549. package/dist/planmagnet/comments/RoadmapComments.js +0 -2
  550. package/dist/planmagnet/comments/TargetComments.js +0 -2
  551. package/dist/planmagnet/comments/WorkItemActivity.js +0 -2
  552. package/dist/planmagnet/comments/WorkItemComments.js +0 -2
  553. package/dist/planmagnet/comments/commentAttachmentUploadClient.js +0 -2
  554. package/dist/planmagnet/comments/commentImageTokens.js +0 -2
  555. package/dist/planmagnet/comments/commentTokens.js +0 -2
  556. package/dist/planmagnet/comments/fileDisplay.js +0 -2
  557. package/dist/planmagnet/comments/useCommentFileUrl.js +0 -2
  558. package/dist/planmagnet/controls/AutomationRuleControls.js +0 -2
  559. package/dist/planmagnet/controls/CompetitorControls.js +0 -2
  560. package/dist/planmagnet/controls/ConfirmButton.js +0 -2
  561. package/dist/planmagnet/controls/CustomFieldControls.js +0 -2
  562. package/dist/planmagnet/controls/CustomFieldValuesPanel.js +0 -2
  563. package/dist/planmagnet/controls/FeatureControls.js +0 -2
  564. package/dist/planmagnet/controls/FeatureTriage.js +0 -2
  565. package/dist/planmagnet/controls/FeedbackControls.js +0 -2
  566. package/dist/planmagnet/controls/LiveStatus.js +0 -2
  567. package/dist/planmagnet/controls/MilestoneControls.js +0 -2
  568. package/dist/planmagnet/controls/ObjectiveControls.js +0 -2
  569. package/dist/planmagnet/controls/Pickers.js +0 -2
  570. package/dist/planmagnet/controls/PortfolioControls.js +0 -2
  571. package/dist/planmagnet/controls/PrioritizationControls.js +0 -2
  572. package/dist/planmagnet/controls/ProgramControls.js +0 -2
  573. package/dist/planmagnet/controls/ProjectControls.js +0 -2
  574. package/dist/planmagnet/controls/QualityGateControls.js +0 -2
  575. package/dist/planmagnet/controls/ReleaseControls.js +0 -2
  576. package/dist/planmagnet/controls/RiskControls.js +0 -2
  577. package/dist/planmagnet/controls/SyncControls.js +0 -2
  578. package/dist/planmagnet/controls/TemplateControls.js +0 -2
  579. package/dist/planmagnet/controls/WebhookSubscriptionControls.js +0 -2
  580. package/dist/planmagnet/controls/WorkItemControls.js +0 -2
  581. package/dist/planmagnet/create/CreateDialogs.js +0 -2
  582. package/dist/planmagnet/dashboards/DashboardUI.js +0 -2
  583. package/dist/planmagnet/dashboards/cards/DeliveryTimelineCard.js +0 -2
  584. package/dist/planmagnet/dashboards/cards/ObjectivesProgressCard.js +0 -2
  585. package/dist/planmagnet/dashboards/cards/PortfolioHealthCard.js +0 -2
  586. package/dist/planmagnet/dashboards/cards/QualityMetricsCard.js +0 -2
  587. package/dist/planmagnet/dashboards/cards/RiskSeverityCard.js +0 -2
  588. package/dist/planmagnet/dashboards/cards/RoadmapHorizonCard.js +0 -2
  589. package/dist/planmagnet/dashboards/cards/SprintCapacityCard.js +0 -2
  590. package/dist/planmagnet/dashboards/cards/TaskCompletionCard.js +0 -2
  591. package/dist/planmagnet/dashboards/cards/TeamCapacityCard.js +0 -2
  592. package/dist/planmagnet/dashboards/cards/TeamOverviewCard.js +0 -2
  593. package/dist/planmagnet/dashboards/cards/TeamWorkloadCard.js +0 -2
  594. package/dist/planmagnet/dashboards/cards/TimeLoggedCard.js +0 -2
  595. package/dist/planmagnet/dependency/DependencyGraph.js +0 -2
  596. package/dist/planmagnet/dependency/DependencyPanel.js +0 -2
  597. package/dist/planmagnet/dependency/GanttChart.js +0 -2
  598. package/dist/planmagnet/dependency/useProjectWorkItemsGraph.js +0 -2
  599. package/dist/planmagnet/discussion/WorkItemDiscussionPanel.js +0 -2
  600. package/dist/planmagnet/docs/DocDiffView.js +0 -2
  601. package/dist/planmagnet/docs/DocStatusBadge.js +0 -2
  602. package/dist/planmagnet/docs/DocSuggestionsPanel.js +0 -2
  603. package/dist/planmagnet/docs/DocVersionCompare.js +0 -2
  604. package/dist/planmagnet/export/ExportWorkItemsButton.js +0 -2
  605. package/dist/planmagnet/export/workItemsCsv.js +0 -2
  606. package/dist/planmagnet/forecast/DeliveryForecastCard.js +0 -2
  607. package/dist/planmagnet/forecast/ProjectOutlookCard.js +0 -2
  608. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.js +0 -2
  609. package/dist/planmagnet/forecast/ResourceForecastCard.js +0 -2
  610. package/dist/planmagnet/forecast/riskFlags.js +0 -2
  611. package/dist/planmagnet/hooks/useCounts.js +0 -2
  612. package/dist/planmagnet/hooks/useEntityId.js +0 -2
  613. package/dist/planmagnet/hooks/useLiveRefresh.js +0 -2
  614. package/dist/planmagnet/hooks/usePresence.js +0 -2
  615. package/dist/planmagnet/hooks/useProjectWorkflow.js +0 -2
  616. package/dist/planmagnet/import/exportColumns.js +0 -2
  617. package/dist/planmagnet/integrations/routes.js +0 -2
  618. package/dist/planmagnet/integrations/syncTypes.js +0 -2
  619. package/dist/planmagnet/integrations/useSyncProviderCapabilities.js +0 -2
  620. package/dist/planmagnet/links/CodeLinksPanel.js +0 -2
  621. package/dist/planmagnet/links/IssueLinksPanel.js +0 -2
  622. package/dist/planmagnet/meetings/MeetingActionItemsPanel.js +0 -2
  623. package/dist/planmagnet/meetings/MeetingsCard.js +0 -2
  624. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.js +0 -2
  625. package/dist/planmagnet/meetings/ScheduleMeetingDialog.js +0 -2
  626. package/dist/planmagnet/meetings/UnlinkMeetingDialog.js +0 -2
  627. package/dist/planmagnet/meetings/meetingActions.js +0 -2
  628. package/dist/planmagnet/meetings/meetingGraphql.js +0 -2
  629. package/dist/planmagnet/meetings/meetingModel.js +0 -2
  630. package/dist/planmagnet/milestones/MilestoneControls.js +0 -2
  631. package/dist/planmagnet/pages/ActivityActivityPagePage.js +0 -2
  632. package/dist/planmagnet/pages/AiActivityPagePage.js +0 -2
  633. package/dist/planmagnet/pages/AiPlanPagePage.js +0 -2
  634. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js +0 -2
  635. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.js +0 -2
  636. package/dist/planmagnet/pages/AutomationAutomationRulesPagePage.js +0 -2
  637. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.js +0 -2
  638. package/dist/planmagnet/pages/CompetitorsCompetitorDetailPagePage.js +0 -2
  639. package/dist/planmagnet/pages/CompetitorsCompetitorsPagePage.js +0 -2
  640. package/dist/planmagnet/pages/CompetitorsCreateCompetitorPagePage.js +0 -2
  641. package/dist/planmagnet/pages/CompetitorsEditCompetitorPagePage.js +0 -2
  642. package/dist/planmagnet/pages/DashboardDashboardPagePage.js +0 -2
  643. package/dist/planmagnet/pages/DashboardsExecutivePagePage.js +0 -2
  644. package/dist/planmagnet/pages/DashboardsLeadershipPagePage.js +0 -2
  645. package/dist/planmagnet/pages/DashboardsProjectManagerPagePage.js +0 -2
  646. package/dist/planmagnet/pages/DashboardsTeamUtilizationPagePage.js +0 -2
  647. package/dist/planmagnet/pages/DocsDocDetailPagePage.js +0 -2
  648. package/dist/planmagnet/pages/DocsDocsPagePage.js +0 -2
  649. package/dist/planmagnet/pages/GoalsCreateObjectivePagePage.js +0 -2
  650. package/dist/planmagnet/pages/GoalsGoalsPagePage.js +0 -2
  651. package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js +0 -2
  652. package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.js +0 -2
  653. package/dist/planmagnet/pages/IntegrationsSyncDetailPagePage.js +0 -2
  654. package/dist/planmagnet/pages/IntegrationsSyncsPagePage.js +0 -2
  655. package/dist/planmagnet/pages/IntegrationsWebhooksPagePage.js +0 -2
  656. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.js +0 -2
  657. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.js +0 -2
  658. package/dist/planmagnet/pages/NotFoundPage.js +0 -2
  659. package/dist/planmagnet/pages/PortfoliosCreatePortfolioPagePage.js +0 -2
  660. package/dist/planmagnet/pages/PortfoliosEditPortfolioPagePage.js +0 -2
  661. package/dist/planmagnet/pages/PortfoliosPortfolioDetailPagePage.js +0 -2
  662. package/dist/planmagnet/pages/PortfoliosPortfoliosPagePage.js +0 -2
  663. package/dist/planmagnet/pages/ProductsCreateProductPagePage.js +0 -2
  664. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js +0 -2
  665. package/dist/planmagnet/pages/ProductsCustomerSatisfactionPagePage.js +0 -2
  666. package/dist/planmagnet/pages/ProductsEditProductPagePage.js +0 -2
  667. package/dist/planmagnet/pages/ProductsEditReleasePagePage.js +0 -2
  668. package/dist/planmagnet/pages/ProductsEditRoadmapPagePage.js +0 -2
  669. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js +0 -2
  670. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js +0 -2
  671. package/dist/planmagnet/pages/ProductsFeaturesPagePage.js +0 -2
  672. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js +0 -2
  673. package/dist/planmagnet/pages/ProductsPrioritizationPagePage.js +0 -2
  674. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js +0 -2
  675. package/dist/planmagnet/pages/ProductsProductFeatureDetailPagePage.js +0 -2
  676. package/dist/planmagnet/pages/ProductsProductHierarchyPagePage.js +0 -2
  677. package/dist/planmagnet/pages/ProductsProductLinesPagePage.js +0 -2
  678. package/dist/planmagnet/pages/ProductsProductsPagePage.js +0 -2
  679. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js +0 -2
  680. package/dist/planmagnet/pages/ProductsReleasesPagePage.js +0 -2
  681. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js +0 -2
  682. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js +0 -2
  683. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js +0 -2
  684. package/dist/planmagnet/pages/ProgramsCreateProgramPagePage.js +0 -2
  685. package/dist/planmagnet/pages/ProgramsEditProgramPagePage.js +0 -2
  686. package/dist/planmagnet/pages/ProgramsProgramDetailPagePage.js +0 -2
  687. package/dist/planmagnet/pages/ProgramsProgramsPagePage.js +0 -2
  688. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.js +0 -2
  689. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.js +0 -2
  690. package/dist/planmagnet/pages/ProjectsBudgetDetailPagePage.js +0 -2
  691. package/dist/planmagnet/pages/ProjectsBudgetsPagePage.js +0 -2
  692. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js +0 -2
  693. package/dist/planmagnet/pages/ProjectsCriticalPathPagePage.js +0 -2
  694. package/dist/planmagnet/pages/ProjectsCustomFieldsPagePage.js +0 -2
  695. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js +0 -2
  696. package/dist/planmagnet/pages/ProjectsGanttPagePage.js +0 -2
  697. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.js +0 -2
  698. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js +0 -2
  699. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +0 -2
  700. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js +0 -2
  701. package/dist/planmagnet/pages/ProjectsPlanningPagePage.js +0 -2
  702. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +0 -2
  703. package/dist/planmagnet/pages/ProjectsProjectsPagePage.js +0 -2
  704. package/dist/planmagnet/pages/ProjectsQualityGatesPagePage.js +0 -2
  705. package/dist/planmagnet/pages/ProjectsWorkflowPagePage.js +0 -2
  706. package/dist/planmagnet/pages/ReportsCreateReportPagePage.js +0 -2
  707. package/dist/planmagnet/pages/ReportsEditReportPagePage.js +0 -2
  708. package/dist/planmagnet/pages/ReportsReportPagePage.js +0 -2
  709. package/dist/planmagnet/pages/ReportsReportsPagePage.js +0 -2
  710. package/dist/planmagnet/pages/RisksRiskDetailPagePage.js +0 -2
  711. package/dist/planmagnet/pages/RisksRiskRegisterPagePage.js +0 -2
  712. package/dist/planmagnet/pages/SprintsStartSprintPagePage.js +0 -2
  713. package/dist/planmagnet/pages/TasksCreateTaskPagePage.js +0 -2
  714. package/dist/planmagnet/pages/TasksEditTaskPagePage.js +0 -2
  715. package/dist/planmagnet/pages/TasksImportPagePage.js +0 -2
  716. package/dist/planmagnet/pages/TasksMyDashboardPagePage.js +0 -2
  717. package/dist/planmagnet/pages/TasksMyWorkPagePage.js +0 -2
  718. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js +0 -2
  719. package/dist/planmagnet/pages/TasksTasksPagePage.js +0 -2
  720. package/dist/planmagnet/pages/TasksTimeEntriesPagePage.js +0 -2
  721. package/dist/planmagnet/pages/TasksTimesheetDetailPagePage.js +0 -2
  722. package/dist/planmagnet/pages/TasksTimesheetsPagePage.js +0 -2
  723. package/dist/planmagnet/pages/TeamCreateTeamPagePage.js +0 -2
  724. package/dist/planmagnet/pages/TeamInviteMemberPagePage.js +99 -101
  725. package/dist/planmagnet/pages/TeamTeamDetailPagePage.js +0 -2
  726. package/dist/planmagnet/pages/TeamTeamEditPagePage.js +0 -2
  727. package/dist/planmagnet/pages/TeamTeamPagePage.js +0 -2
  728. package/dist/planmagnet/pages/TeamTeamsListPagePage.js +0 -2
  729. package/dist/planmagnet/pages/TemplatesEditTemplatePagePage.js +0 -2
  730. package/dist/planmagnet/pages/TemplatesTemplatesPagePage.js +0 -2
  731. package/dist/planmagnet/pages/WorkspaceCreateWorkspacePagePage.js +0 -2
  732. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.js +0 -2
  733. package/dist/planmagnet/pages/analytics/DeliveryKpisCard.js +0 -2
  734. package/dist/planmagnet/pages/analytics/MetricsCard.js +0 -2
  735. package/dist/planmagnet/pages/analytics/QualityMetricsCard.js +0 -2
  736. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.js +0 -2
  737. package/dist/planmagnet/pages/analytics/StatusFlowCard.js +0 -2
  738. package/dist/planmagnet/pages/analytics/ThroughputCard.js +0 -2
  739. package/dist/planmagnet/pages/analytics/WorkBreakdownCard.js +0 -2
  740. package/dist/planmagnet/pages/analytics/analyticsRange.js +0 -2
  741. package/dist/planmagnet/people/People.js +0 -2
  742. package/dist/planmagnet/presence/PresenceAvatars.js +0 -2
  743. package/dist/planmagnet/product/FeatureLinkPanels.js +0 -2
  744. package/dist/planmagnet/product/ProductControls.js +0 -2
  745. package/dist/planmagnet/product/ProductFeatureControls.js +0 -2
  746. package/dist/planmagnet/product/ProductFeatureLinkCard.js +0 -2
  747. package/dist/planmagnet/product/ProductLineControls.js +0 -2
  748. package/dist/planmagnet/product/ProductTeamsPanel.js +0 -2
  749. package/dist/planmagnet/product/WorkItemProductFeatureChip.js +0 -2
  750. package/dist/planmagnet/product/hierarchy.js +0 -2
  751. package/dist/planmagnet/product/hierarchyOperations.js +0 -2
  752. package/dist/planmagnet/product/refusal.js +0 -2
  753. package/dist/planmagnet/product/routes.js +0 -2
  754. package/dist/planmagnet/providers/PlanMagnetProvider.js +0 -2
  755. package/dist/planmagnet/releases/ReleaseChecklistCard.js +0 -2
  756. package/dist/planmagnet/releases/ReleaseGatesCard.js +0 -2
  757. package/dist/planmagnet/releases/ReleaseNotesCard.js +0 -2
  758. package/dist/planmagnet/releases/ReleaseReadinessCard.js +0 -2
  759. package/dist/planmagnet/releases/ReleaseWorkItemsCard.js +0 -2
  760. package/dist/planmagnet/releases/useReleaseOptions.js +0 -2
  761. package/dist/planmagnet/reports/ExportMenu.js +0 -2
  762. package/dist/planmagnet/reports/PrintReportView.js +0 -2
  763. package/dist/planmagnet/reports/ReportBuilderCanvas.js +0 -2
  764. package/dist/planmagnet/reports/ReportBuilderPage.js +0 -2
  765. package/dist/planmagnet/reports/ReportRunHistory.js +0 -2
  766. package/dist/planmagnet/reports/ReportWidgetRenderer.js +0 -2
  767. package/dist/planmagnet/reports/SchedulesPanel.js +0 -2
  768. package/dist/planmagnet/reports/ShareDialog.js +0 -2
  769. package/dist/planmagnet/reports/SharedReportPage.js +0 -2
  770. package/dist/planmagnet/reports/WidgetEditorDialog.js +0 -2
  771. package/dist/planmagnet/reports/reportExportPptx.js +0 -2
  772. package/dist/planmagnet/reports/reportExportXlsx.js +0 -2
  773. package/dist/planmagnet/reports/reportGraphql.js +0 -2
  774. package/dist/planmagnet/reports/reportModel.js +0 -2
  775. package/dist/planmagnet/reports/sharedReportRoute.js +0 -2
  776. package/dist/planmagnet/roadmaps/FeatureInitiativeCard.js +0 -2
  777. package/dist/planmagnet/roadmaps/RoadmapControls.js +0 -2
  778. package/dist/planmagnet/roadmaps/RoadmapNowNextLater.js +0 -2
  779. package/dist/planmagnet/roadmaps/RoadmapPresentation.js +0 -2
  780. package/dist/planmagnet/roadmaps/RoadmapReviewPanel.js +0 -2
  781. package/dist/planmagnet/roadmaps/RoadmapVersionsPanel.js +0 -2
  782. package/dist/planmagnet/roadmaps/planningFocus.js +0 -2
  783. package/dist/planmagnet/satisfaction/DeliverySatisfactionSection.js +0 -2
  784. package/dist/planmagnet/satisfaction/SatisfactionFigures.js +0 -2
  785. package/dist/planmagnet/satisfaction/SatisfactionImportDialog.js +0 -2
  786. package/dist/planmagnet/satisfaction/SatisfactionLinkFields.js +0 -2
  787. package/dist/planmagnet/satisfaction/SatisfactionReleaseSelect.js +0 -2
  788. package/dist/planmagnet/satisfaction/SatisfactionResponseDialog.js +0 -2
  789. package/dist/planmagnet/satisfaction/SatisfactionResponsesTable.js +0 -2
  790. package/dist/planmagnet/satisfaction/SatisfactionSummaryCard.js +0 -2
  791. package/dist/planmagnet/satisfaction/SatisfactionWindowPicker.js +0 -2
  792. package/dist/planmagnet/satisfaction/satisfaction.js +0 -2
  793. package/dist/planmagnet/satisfaction/satisfactionCsv.js +0 -2
  794. package/dist/planmagnet/satisfaction/satisfactionForm.js +0 -2
  795. package/dist/planmagnet/satisfaction/satisfactionOperations.js +0 -2
  796. package/dist/planmagnet/satisfaction/useSatisfactionAccess.js +0 -2
  797. package/dist/planmagnet/skills/RequiredSkillsEditor.js +0 -2
  798. package/dist/planmagnet/skills/SkillChips.js +0 -2
  799. package/dist/planmagnet/skills/SkillCoverageCard.js +0 -2
  800. package/dist/planmagnet/skills/WorkItemRequiredSkills.js +0 -2
  801. package/dist/planmagnet/skills/skillOperations.js +0 -2
  802. package/dist/planmagnet/skills/skillTags.js +0 -2
  803. package/dist/planmagnet/skills/useRequiredSkillsDraft.js +0 -2
  804. package/dist/planmagnet/sprints/SprintControls.js +0 -2
  805. package/dist/planmagnet/sprints/SprintDates.js +0 -2
  806. package/dist/planmagnet/store/planmagnetStore.js +0 -2
  807. package/dist/planmagnet/team/PendingInvitations.d.ts +1 -3
  808. package/dist/planmagnet/team/PendingInvitations.js +62 -65
  809. package/dist/planmagnet/team/TeamControls.js +0 -2
  810. package/dist/planmagnet/team/UnmatchedCrewIdentities.js +0 -2
  811. package/dist/planmagnet/team/invitationEmail.js +0 -2
  812. package/dist/planmagnet/time/TaskTimePanel.js +0 -2
  813. package/dist/planmagnet/time/TimeEntryControls.js +0 -2
  814. package/dist/planmagnet/time/TimesheetControls.js +0 -2
  815. package/dist/planmagnet/time/timeShared.js +0 -2
  816. package/dist/planmagnet/utils/cn.js +0 -2
  817. package/dist/planmagnet/utils/email.js +0 -2
  818. package/dist/planmagnet/utils/formValidation.js +0 -2
  819. package/dist/planmagnet/utils/graphqlErrors.js +0 -2
  820. package/dist/planmagnet/utils/lineDiff.js +0 -2
  821. package/dist/planmagnet/utils/mutationResult.js +0 -2
  822. package/dist/planmagnet/utils/navigation.js +0 -2
  823. package/dist/planmagnet/utils/qualityGateCriteria.js +0 -2
  824. package/dist/planmagnet/utils/rowNavigation.js +0 -2
  825. package/dist/planmagnet/utils/statusColor.js +0 -2
  826. package/dist/planmagnet/utils/urlParam.js +0 -2
  827. package/dist/planmagnet/webhooks/webhookTypes.js +0 -2
  828. package/dist/shared/hooks/useTr.js +0 -2
  829. package/dist/shared/utils/i18n.js +0 -2
  830. package/package.json +2 -1
  831. package/dist/_virtual/__vite-browser-external.js.map +0 -1
  832. package/dist/components/Button.d.ts.map +0 -1
  833. package/dist/components/Button.stories.d.ts.map +0 -1
  834. package/dist/components/MarkdownEditor.d.ts.map +0 -1
  835. package/dist/components/MarkdownEditor.js.map +0 -1
  836. package/dist/dev/main.d.ts.map +0 -1
  837. package/dist/generated/global-operations.d.ts.map +0 -1
  838. package/dist/generated/global-types.d.ts.map +0 -1
  839. package/dist/generated/wspace-operations.d.ts.map +0 -1
  840. package/dist/generated/wspace-types.d.ts.map +0 -1
  841. package/dist/index.d.ts.map +0 -1
  842. package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +0 -1
  843. package/dist/node_modules/@apollo/client/errors/ServerError.js.map +0 -1
  844. package/dist/node_modules/@apollo/client/errors/utils.js.map +0 -1
  845. package/dist/node_modules/clsx/dist/clsx.js.map +0 -1
  846. package/dist/node_modules/d3-array/src/ascending.js.map +0 -1
  847. package/dist/node_modules/d3-array/src/bisect.js.map +0 -1
  848. package/dist/node_modules/d3-array/src/bisector.js.map +0 -1
  849. package/dist/node_modules/d3-array/src/descending.js.map +0 -1
  850. package/dist/node_modules/d3-array/src/max.js.map +0 -1
  851. package/dist/node_modules/d3-array/src/min.js.map +0 -1
  852. package/dist/node_modules/d3-array/src/number.js.map +0 -1
  853. package/dist/node_modules/d3-array/src/quantile.js.map +0 -1
  854. package/dist/node_modules/d3-array/src/quickselect.js.map +0 -1
  855. package/dist/node_modules/d3-array/src/range.js.map +0 -1
  856. package/dist/node_modules/d3-array/src/sort.js.map +0 -1
  857. package/dist/node_modules/d3-array/src/ticks.js.map +0 -1
  858. package/dist/node_modules/d3-color/src/color.js.map +0 -1
  859. package/dist/node_modules/d3-color/src/define.js.map +0 -1
  860. package/dist/node_modules/d3-format/src/defaultLocale.js.map +0 -1
  861. package/dist/node_modules/d3-format/src/exponent.js.map +0 -1
  862. package/dist/node_modules/d3-format/src/formatDecimal.js.map +0 -1
  863. package/dist/node_modules/d3-format/src/formatGroup.js.map +0 -1
  864. package/dist/node_modules/d3-format/src/formatNumerals.js.map +0 -1
  865. package/dist/node_modules/d3-format/src/formatPrefixAuto.js.map +0 -1
  866. package/dist/node_modules/d3-format/src/formatRounded.js.map +0 -1
  867. package/dist/node_modules/d3-format/src/formatSpecifier.js.map +0 -1
  868. package/dist/node_modules/d3-format/src/formatTrim.js.map +0 -1
  869. package/dist/node_modules/d3-format/src/formatTypes.js.map +0 -1
  870. package/dist/node_modules/d3-format/src/identity.js.map +0 -1
  871. package/dist/node_modules/d3-format/src/locale.js.map +0 -1
  872. package/dist/node_modules/d3-format/src/precisionFixed.js.map +0 -1
  873. package/dist/node_modules/d3-format/src/precisionPrefix.js.map +0 -1
  874. package/dist/node_modules/d3-format/src/precisionRound.js.map +0 -1
  875. package/dist/node_modules/d3-interpolate/src/array.js.map +0 -1
  876. package/dist/node_modules/d3-interpolate/src/basis.js.map +0 -1
  877. package/dist/node_modules/d3-interpolate/src/basisClosed.js.map +0 -1
  878. package/dist/node_modules/d3-interpolate/src/color.js.map +0 -1
  879. package/dist/node_modules/d3-interpolate/src/constant.js.map +0 -1
  880. package/dist/node_modules/d3-interpolate/src/date.js.map +0 -1
  881. package/dist/node_modules/d3-interpolate/src/number.js.map +0 -1
  882. package/dist/node_modules/d3-interpolate/src/numberArray.js.map +0 -1
  883. package/dist/node_modules/d3-interpolate/src/object.js.map +0 -1
  884. package/dist/node_modules/d3-interpolate/src/piecewise.js.map +0 -1
  885. package/dist/node_modules/d3-interpolate/src/rgb.js.map +0 -1
  886. package/dist/node_modules/d3-interpolate/src/round.js.map +0 -1
  887. package/dist/node_modules/d3-interpolate/src/string.js.map +0 -1
  888. package/dist/node_modules/d3-interpolate/src/value.js.map +0 -1
  889. package/dist/node_modules/d3-path/src/path.js.map +0 -1
  890. package/dist/node_modules/d3-scale/src/band.js.map +0 -1
  891. package/dist/node_modules/d3-scale/src/constant.js.map +0 -1
  892. package/dist/node_modules/d3-scale/src/continuous.js.map +0 -1
  893. package/dist/node_modules/d3-scale/src/diverging.js.map +0 -1
  894. package/dist/node_modules/d3-scale/src/identity.js.map +0 -1
  895. package/dist/node_modules/d3-scale/src/init.js.map +0 -1
  896. package/dist/node_modules/d3-scale/src/linear.js.map +0 -1
  897. package/dist/node_modules/d3-scale/src/log.js.map +0 -1
  898. package/dist/node_modules/d3-scale/src/nice.js.map +0 -1
  899. package/dist/node_modules/d3-scale/src/number.js.map +0 -1
  900. package/dist/node_modules/d3-scale/src/ordinal.js.map +0 -1
  901. package/dist/node_modules/d3-scale/src/pow.js.map +0 -1
  902. package/dist/node_modules/d3-scale/src/quantile.js.map +0 -1
  903. package/dist/node_modules/d3-scale/src/quantize.js.map +0 -1
  904. package/dist/node_modules/d3-scale/src/radial.js.map +0 -1
  905. package/dist/node_modules/d3-scale/src/sequential.js.map +0 -1
  906. package/dist/node_modules/d3-scale/src/sequentialQuantile.js.map +0 -1
  907. package/dist/node_modules/d3-scale/src/symlog.js.map +0 -1
  908. package/dist/node_modules/d3-scale/src/threshold.js.map +0 -1
  909. package/dist/node_modules/d3-scale/src/tickFormat.js.map +0 -1
  910. package/dist/node_modules/d3-scale/src/time.js.map +0 -1
  911. package/dist/node_modules/d3-scale/src/utcTime.js.map +0 -1
  912. package/dist/node_modules/d3-shape/src/area.js.map +0 -1
  913. package/dist/node_modules/d3-shape/src/array.js.map +0 -1
  914. package/dist/node_modules/d3-shape/src/constant.js.map +0 -1
  915. package/dist/node_modules/d3-shape/src/curve/basis.js.map +0 -1
  916. package/dist/node_modules/d3-shape/src/curve/basisClosed.js.map +0 -1
  917. package/dist/node_modules/d3-shape/src/curve/basisOpen.js.map +0 -1
  918. package/dist/node_modules/d3-shape/src/curve/bump.js.map +0 -1
  919. package/dist/node_modules/d3-shape/src/curve/linear.js.map +0 -1
  920. package/dist/node_modules/d3-shape/src/curve/linearClosed.js.map +0 -1
  921. package/dist/node_modules/d3-shape/src/curve/monotone.js.map +0 -1
  922. package/dist/node_modules/d3-shape/src/curve/natural.js.map +0 -1
  923. package/dist/node_modules/d3-shape/src/curve/step.js.map +0 -1
  924. package/dist/node_modules/d3-shape/src/line.js.map +0 -1
  925. package/dist/node_modules/d3-shape/src/math.js.map +0 -1
  926. package/dist/node_modules/d3-shape/src/noop.js.map +0 -1
  927. package/dist/node_modules/d3-shape/src/offset/expand.js.map +0 -1
  928. package/dist/node_modules/d3-shape/src/offset/none.js.map +0 -1
  929. package/dist/node_modules/d3-shape/src/offset/silhouette.js.map +0 -1
  930. package/dist/node_modules/d3-shape/src/offset/wiggle.js.map +0 -1
  931. package/dist/node_modules/d3-shape/src/order/none.js.map +0 -1
  932. package/dist/node_modules/d3-shape/src/path.js.map +0 -1
  933. package/dist/node_modules/d3-shape/src/point.js.map +0 -1
  934. package/dist/node_modules/d3-shape/src/stack.js.map +0 -1
  935. package/dist/node_modules/d3-shape/src/symbol/circle.js.map +0 -1
  936. package/dist/node_modules/d3-shape/src/symbol/cross.js.map +0 -1
  937. package/dist/node_modules/d3-shape/src/symbol/diamond.js.map +0 -1
  938. package/dist/node_modules/d3-shape/src/symbol/square.js.map +0 -1
  939. package/dist/node_modules/d3-shape/src/symbol/star.js.map +0 -1
  940. package/dist/node_modules/d3-shape/src/symbol/triangle.js.map +0 -1
  941. package/dist/node_modules/d3-shape/src/symbol/wye.js.map +0 -1
  942. package/dist/node_modules/d3-shape/src/symbol.js.map +0 -1
  943. package/dist/node_modules/d3-time/src/day.js.map +0 -1
  944. package/dist/node_modules/d3-time/src/duration.js.map +0 -1
  945. package/dist/node_modules/d3-time/src/hour.js.map +0 -1
  946. package/dist/node_modules/d3-time/src/interval.js.map +0 -1
  947. package/dist/node_modules/d3-time/src/millisecond.js.map +0 -1
  948. package/dist/node_modules/d3-time/src/minute.js.map +0 -1
  949. package/dist/node_modules/d3-time/src/month.js.map +0 -1
  950. package/dist/node_modules/d3-time/src/second.js.map +0 -1
  951. package/dist/node_modules/d3-time/src/ticks.js.map +0 -1
  952. package/dist/node_modules/d3-time/src/week.js.map +0 -1
  953. package/dist/node_modules/d3-time/src/year.js.map +0 -1
  954. package/dist/node_modules/d3-time-format/src/defaultLocale.js.map +0 -1
  955. package/dist/node_modules/d3-time-format/src/locale.js.map +0 -1
  956. package/dist/node_modules/decimal.js-light/decimal.js.map +0 -1
  957. package/dist/node_modules/eventemitter3/index.js.map +0 -1
  958. package/dist/node_modules/fast-equals/dist/es/index.js.map +0 -1
  959. package/dist/node_modules/fflate/esm/browser.js.map +0 -1
  960. package/dist/node_modules/internmap/src/index.js.map +0 -1
  961. package/dist/node_modules/jszip/dist/jszip.min.js.map +0 -1
  962. package/dist/node_modules/lodash/_DataView.js.map +0 -1
  963. package/dist/node_modules/lodash/_Hash.js.map +0 -1
  964. package/dist/node_modules/lodash/_ListCache.js.map +0 -1
  965. package/dist/node_modules/lodash/_Map.js.map +0 -1
  966. package/dist/node_modules/lodash/_MapCache.js.map +0 -1
  967. package/dist/node_modules/lodash/_Promise.js.map +0 -1
  968. package/dist/node_modules/lodash/_Set.js.map +0 -1
  969. package/dist/node_modules/lodash/_SetCache.js.map +0 -1
  970. package/dist/node_modules/lodash/_Stack.js.map +0 -1
  971. package/dist/node_modules/lodash/_Symbol.js.map +0 -1
  972. package/dist/node_modules/lodash/_Uint8Array.js.map +0 -1
  973. package/dist/node_modules/lodash/_WeakMap.js.map +0 -1
  974. package/dist/node_modules/lodash/_apply.js.map +0 -1
  975. package/dist/node_modules/lodash/_arrayEach.js.map +0 -1
  976. package/dist/node_modules/lodash/_arrayEvery.js.map +0 -1
  977. package/dist/node_modules/lodash/_arrayFilter.js.map +0 -1
  978. package/dist/node_modules/lodash/_arrayIncludes.js.map +0 -1
  979. package/dist/node_modules/lodash/_arrayIncludesWith.js.map +0 -1
  980. package/dist/node_modules/lodash/_arrayLikeKeys.js.map +0 -1
  981. package/dist/node_modules/lodash/_arrayMap.js.map +0 -1
  982. package/dist/node_modules/lodash/_arrayPush.js.map +0 -1
  983. package/dist/node_modules/lodash/_arraySome.js.map +0 -1
  984. package/dist/node_modules/lodash/_asciiToArray.js.map +0 -1
  985. package/dist/node_modules/lodash/_assignValue.js.map +0 -1
  986. package/dist/node_modules/lodash/_assocIndexOf.js.map +0 -1
  987. package/dist/node_modules/lodash/_baseAssign.js.map +0 -1
  988. package/dist/node_modules/lodash/_baseAssignIn.js.map +0 -1
  989. package/dist/node_modules/lodash/_baseAssignValue.js.map +0 -1
  990. package/dist/node_modules/lodash/_baseClone.js.map +0 -1
  991. package/dist/node_modules/lodash/_baseCreate.js.map +0 -1
  992. package/dist/node_modules/lodash/_baseEach.js.map +0 -1
  993. package/dist/node_modules/lodash/_baseEvery.js.map +0 -1
  994. package/dist/node_modules/lodash/_baseExtremum.js.map +0 -1
  995. package/dist/node_modules/lodash/_baseFindIndex.js.map +0 -1
  996. package/dist/node_modules/lodash/_baseFlatten.js.map +0 -1
  997. package/dist/node_modules/lodash/_baseFor.js.map +0 -1
  998. package/dist/node_modules/lodash/_baseForOwn.js.map +0 -1
  999. package/dist/node_modules/lodash/_baseGet.js.map +0 -1
  1000. package/dist/node_modules/lodash/_baseGetAllKeys.js.map +0 -1
  1001. package/dist/node_modules/lodash/_baseGetTag.js.map +0 -1
  1002. package/dist/node_modules/lodash/_baseGt.js.map +0 -1
  1003. package/dist/node_modules/lodash/_baseHasIn.js.map +0 -1
  1004. package/dist/node_modules/lodash/_baseIndexOf.js.map +0 -1
  1005. package/dist/node_modules/lodash/_baseIsArguments.js.map +0 -1
  1006. package/dist/node_modules/lodash/_baseIsEqual.js.map +0 -1
  1007. package/dist/node_modules/lodash/_baseIsEqualDeep.js.map +0 -1
  1008. package/dist/node_modules/lodash/_baseIsMap.js.map +0 -1
  1009. package/dist/node_modules/lodash/_baseIsMatch.js.map +0 -1
  1010. package/dist/node_modules/lodash/_baseIsNaN.js.map +0 -1
  1011. package/dist/node_modules/lodash/_baseIsNative.js.map +0 -1
  1012. package/dist/node_modules/lodash/_baseIsSet.js.map +0 -1
  1013. package/dist/node_modules/lodash/_baseIsTypedArray.js.map +0 -1
  1014. package/dist/node_modules/lodash/_baseIteratee.js.map +0 -1
  1015. package/dist/node_modules/lodash/_baseKeys.js.map +0 -1
  1016. package/dist/node_modules/lodash/_baseKeysIn.js.map +0 -1
  1017. package/dist/node_modules/lodash/_baseLt.js.map +0 -1
  1018. package/dist/node_modules/lodash/_baseMap.js.map +0 -1
  1019. package/dist/node_modules/lodash/_baseMatches.js.map +0 -1
  1020. package/dist/node_modules/lodash/_baseMatchesProperty.js.map +0 -1
  1021. package/dist/node_modules/lodash/_baseOrderBy.js.map +0 -1
  1022. package/dist/node_modules/lodash/_baseProperty.js.map +0 -1
  1023. package/dist/node_modules/lodash/_basePropertyDeep.js.map +0 -1
  1024. package/dist/node_modules/lodash/_baseRange.js.map +0 -1
  1025. package/dist/node_modules/lodash/_baseRest.js.map +0 -1
  1026. package/dist/node_modules/lodash/_baseSetToString.js.map +0 -1
  1027. package/dist/node_modules/lodash/_baseSlice.js.map +0 -1
  1028. package/dist/node_modules/lodash/_baseSome.js.map +0 -1
  1029. package/dist/node_modules/lodash/_baseSortBy.js.map +0 -1
  1030. package/dist/node_modules/lodash/_baseSum.js.map +0 -1
  1031. package/dist/node_modules/lodash/_baseTimes.js.map +0 -1
  1032. package/dist/node_modules/lodash/_baseToString.js.map +0 -1
  1033. package/dist/node_modules/lodash/_baseTrim.js.map +0 -1
  1034. package/dist/node_modules/lodash/_baseUnary.js.map +0 -1
  1035. package/dist/node_modules/lodash/_baseUniq.js.map +0 -1
  1036. package/dist/node_modules/lodash/_baseUnset.js.map +0 -1
  1037. package/dist/node_modules/lodash/_cacheHas.js.map +0 -1
  1038. package/dist/node_modules/lodash/_castPath.js.map +0 -1
  1039. package/dist/node_modules/lodash/_castSlice.js.map +0 -1
  1040. package/dist/node_modules/lodash/_cloneArrayBuffer.js.map +0 -1
  1041. package/dist/node_modules/lodash/_cloneBuffer.js.map +0 -1
  1042. package/dist/node_modules/lodash/_cloneDataView.js.map +0 -1
  1043. package/dist/node_modules/lodash/_cloneRegExp.js.map +0 -1
  1044. package/dist/node_modules/lodash/_cloneSymbol.js.map +0 -1
  1045. package/dist/node_modules/lodash/_cloneTypedArray.js.map +0 -1
  1046. package/dist/node_modules/lodash/_compareAscending.js.map +0 -1
  1047. package/dist/node_modules/lodash/_compareMultiple.js.map +0 -1
  1048. package/dist/node_modules/lodash/_copyArray.js.map +0 -1
  1049. package/dist/node_modules/lodash/_copyObject.js.map +0 -1
  1050. package/dist/node_modules/lodash/_copySymbols.js.map +0 -1
  1051. package/dist/node_modules/lodash/_copySymbolsIn.js.map +0 -1
  1052. package/dist/node_modules/lodash/_coreJsData.js.map +0 -1
  1053. package/dist/node_modules/lodash/_createBaseEach.js.map +0 -1
  1054. package/dist/node_modules/lodash/_createBaseFor.js.map +0 -1
  1055. package/dist/node_modules/lodash/_createCaseFirst.js.map +0 -1
  1056. package/dist/node_modules/lodash/_createFind.js.map +0 -1
  1057. package/dist/node_modules/lodash/_createRange.js.map +0 -1
  1058. package/dist/node_modules/lodash/_createSet.js.map +0 -1
  1059. package/dist/node_modules/lodash/_customOmitClone.js.map +0 -1
  1060. package/dist/node_modules/lodash/_defineProperty.js.map +0 -1
  1061. package/dist/node_modules/lodash/_equalArrays.js.map +0 -1
  1062. package/dist/node_modules/lodash/_equalByTag.js.map +0 -1
  1063. package/dist/node_modules/lodash/_equalObjects.js.map +0 -1
  1064. package/dist/node_modules/lodash/_flatRest.js.map +0 -1
  1065. package/dist/node_modules/lodash/_freeGlobal.js.map +0 -1
  1066. package/dist/node_modules/lodash/_getAllKeys.js.map +0 -1
  1067. package/dist/node_modules/lodash/_getAllKeysIn.js.map +0 -1
  1068. package/dist/node_modules/lodash/_getMapData.js.map +0 -1
  1069. package/dist/node_modules/lodash/_getMatchData.js.map +0 -1
  1070. package/dist/node_modules/lodash/_getNative.js.map +0 -1
  1071. package/dist/node_modules/lodash/_getPrototype.js.map +0 -1
  1072. package/dist/node_modules/lodash/_getRawTag.js.map +0 -1
  1073. package/dist/node_modules/lodash/_getSymbols.js.map +0 -1
  1074. package/dist/node_modules/lodash/_getSymbolsIn.js.map +0 -1
  1075. package/dist/node_modules/lodash/_getTag.js.map +0 -1
  1076. package/dist/node_modules/lodash/_getValue.js.map +0 -1
  1077. package/dist/node_modules/lodash/_hasPath.js.map +0 -1
  1078. package/dist/node_modules/lodash/_hasUnicode.js.map +0 -1
  1079. package/dist/node_modules/lodash/_hashClear.js.map +0 -1
  1080. package/dist/node_modules/lodash/_hashDelete.js.map +0 -1
  1081. package/dist/node_modules/lodash/_hashGet.js.map +0 -1
  1082. package/dist/node_modules/lodash/_hashHas.js.map +0 -1
  1083. package/dist/node_modules/lodash/_hashSet.js.map +0 -1
  1084. package/dist/node_modules/lodash/_initCloneArray.js.map +0 -1
  1085. package/dist/node_modules/lodash/_initCloneByTag.js.map +0 -1
  1086. package/dist/node_modules/lodash/_initCloneObject.js.map +0 -1
  1087. package/dist/node_modules/lodash/_isFlattenable.js.map +0 -1
  1088. package/dist/node_modules/lodash/_isIndex.js.map +0 -1
  1089. package/dist/node_modules/lodash/_isIterateeCall.js.map +0 -1
  1090. package/dist/node_modules/lodash/_isKey.js.map +0 -1
  1091. package/dist/node_modules/lodash/_isKeyable.js.map +0 -1
  1092. package/dist/node_modules/lodash/_isMasked.js.map +0 -1
  1093. package/dist/node_modules/lodash/_isPrototype.js.map +0 -1
  1094. package/dist/node_modules/lodash/_isStrictComparable.js.map +0 -1
  1095. package/dist/node_modules/lodash/_listCacheClear.js.map +0 -1
  1096. package/dist/node_modules/lodash/_listCacheDelete.js.map +0 -1
  1097. package/dist/node_modules/lodash/_listCacheGet.js.map +0 -1
  1098. package/dist/node_modules/lodash/_listCacheHas.js.map +0 -1
  1099. package/dist/node_modules/lodash/_listCacheSet.js.map +0 -1
  1100. package/dist/node_modules/lodash/_mapCacheClear.js.map +0 -1
  1101. package/dist/node_modules/lodash/_mapCacheDelete.js.map +0 -1
  1102. package/dist/node_modules/lodash/_mapCacheGet.js.map +0 -1
  1103. package/dist/node_modules/lodash/_mapCacheHas.js.map +0 -1
  1104. package/dist/node_modules/lodash/_mapCacheSet.js.map +0 -1
  1105. package/dist/node_modules/lodash/_mapToArray.js.map +0 -1
  1106. package/dist/node_modules/lodash/_matchesStrictComparable.js.map +0 -1
  1107. package/dist/node_modules/lodash/_memoizeCapped.js.map +0 -1
  1108. package/dist/node_modules/lodash/_nativeCreate.js.map +0 -1
  1109. package/dist/node_modules/lodash/_nativeKeys.js.map +0 -1
  1110. package/dist/node_modules/lodash/_nativeKeysIn.js.map +0 -1
  1111. package/dist/node_modules/lodash/_nodeUtil.js.map +0 -1
  1112. package/dist/node_modules/lodash/_objectToString.js.map +0 -1
  1113. package/dist/node_modules/lodash/_overArg.js.map +0 -1
  1114. package/dist/node_modules/lodash/_overRest.js.map +0 -1
  1115. package/dist/node_modules/lodash/_parent.js.map +0 -1
  1116. package/dist/node_modules/lodash/_root.js.map +0 -1
  1117. package/dist/node_modules/lodash/_setCacheAdd.js.map +0 -1
  1118. package/dist/node_modules/lodash/_setCacheHas.js.map +0 -1
  1119. package/dist/node_modules/lodash/_setToArray.js.map +0 -1
  1120. package/dist/node_modules/lodash/_setToString.js.map +0 -1
  1121. package/dist/node_modules/lodash/_shortOut.js.map +0 -1
  1122. package/dist/node_modules/lodash/_stackClear.js.map +0 -1
  1123. package/dist/node_modules/lodash/_stackDelete.js.map +0 -1
  1124. package/dist/node_modules/lodash/_stackGet.js.map +0 -1
  1125. package/dist/node_modules/lodash/_stackHas.js.map +0 -1
  1126. package/dist/node_modules/lodash/_stackSet.js.map +0 -1
  1127. package/dist/node_modules/lodash/_strictIndexOf.js.map +0 -1
  1128. package/dist/node_modules/lodash/_stringToArray.js.map +0 -1
  1129. package/dist/node_modules/lodash/_stringToPath.js.map +0 -1
  1130. package/dist/node_modules/lodash/_toKey.js.map +0 -1
  1131. package/dist/node_modules/lodash/_toSource.js.map +0 -1
  1132. package/dist/node_modules/lodash/_trimmedEndIndex.js.map +0 -1
  1133. package/dist/node_modules/lodash/_unicodeToArray.js.map +0 -1
  1134. package/dist/node_modules/lodash/constant.js.map +0 -1
  1135. package/dist/node_modules/lodash/debounce.js.map +0 -1
  1136. package/dist/node_modules/lodash/eq.js.map +0 -1
  1137. package/dist/node_modules/lodash/every.js.map +0 -1
  1138. package/dist/node_modules/lodash/find.js.map +0 -1
  1139. package/dist/node_modules/lodash/findIndex.js.map +0 -1
  1140. package/dist/node_modules/lodash/flatMap.js.map +0 -1
  1141. package/dist/node_modules/lodash/flatten.js.map +0 -1
  1142. package/dist/node_modules/lodash/get.js.map +0 -1
  1143. package/dist/node_modules/lodash/hasIn.js.map +0 -1
  1144. package/dist/node_modules/lodash/identity.js.map +0 -1
  1145. package/dist/node_modules/lodash/isArguments.js.map +0 -1
  1146. package/dist/node_modules/lodash/isArray.js.map +0 -1
  1147. package/dist/node_modules/lodash/isArrayLike.js.map +0 -1
  1148. package/dist/node_modules/lodash/isBoolean.js.map +0 -1
  1149. package/dist/node_modules/lodash/isBuffer.js.map +0 -1
  1150. package/dist/node_modules/lodash/isEqual.js.map +0 -1
  1151. package/dist/node_modules/lodash/isFunction.js.map +0 -1
  1152. package/dist/node_modules/lodash/isLength.js.map +0 -1
  1153. package/dist/node_modules/lodash/isMap.js.map +0 -1
  1154. package/dist/node_modules/lodash/isNaN.js.map +0 -1
  1155. package/dist/node_modules/lodash/isNil.js.map +0 -1
  1156. package/dist/node_modules/lodash/isNumber.js.map +0 -1
  1157. package/dist/node_modules/lodash/isObject.js.map +0 -1
  1158. package/dist/node_modules/lodash/isObjectLike.js.map +0 -1
  1159. package/dist/node_modules/lodash/isPlainObject.js.map +0 -1
  1160. package/dist/node_modules/lodash/isSet.js.map +0 -1
  1161. package/dist/node_modules/lodash/isString.js.map +0 -1
  1162. package/dist/node_modules/lodash/isSymbol.js.map +0 -1
  1163. package/dist/node_modules/lodash/isTypedArray.js.map +0 -1
  1164. package/dist/node_modules/lodash/keys.js.map +0 -1
  1165. package/dist/node_modules/lodash/keysIn.js.map +0 -1
  1166. package/dist/node_modules/lodash/last.js.map +0 -1
  1167. package/dist/node_modules/lodash/map.js.map +0 -1
  1168. package/dist/node_modules/lodash/mapValues.js.map +0 -1
  1169. package/dist/node_modules/lodash/max.js.map +0 -1
  1170. package/dist/node_modules/lodash/maxBy.js.map +0 -1
  1171. package/dist/node_modules/lodash/memoize.js.map +0 -1
  1172. package/dist/node_modules/lodash/min.js.map +0 -1
  1173. package/dist/node_modules/lodash/noop.js.map +0 -1
  1174. package/dist/node_modules/lodash/now.js.map +0 -1
  1175. package/dist/node_modules/lodash/omit.js.map +0 -1
  1176. package/dist/node_modules/lodash/property.js.map +0 -1
  1177. package/dist/node_modules/lodash/range.js.map +0 -1
  1178. package/dist/node_modules/lodash/some.js.map +0 -1
  1179. package/dist/node_modules/lodash/sortBy.js.map +0 -1
  1180. package/dist/node_modules/lodash/stubArray.js.map +0 -1
  1181. package/dist/node_modules/lodash/stubFalse.js.map +0 -1
  1182. package/dist/node_modules/lodash/sumBy.js.map +0 -1
  1183. package/dist/node_modules/lodash/throttle.js.map +0 -1
  1184. package/dist/node_modules/lodash/toFinite.js.map +0 -1
  1185. package/dist/node_modules/lodash/toInteger.js.map +0 -1
  1186. package/dist/node_modules/lodash/toNumber.js.map +0 -1
  1187. package/dist/node_modules/lodash/toString.js.map +0 -1
  1188. package/dist/node_modules/lodash/uniqBy.js.map +0 -1
  1189. package/dist/node_modules/lodash/upperFirst.js.map +0 -1
  1190. package/dist/node_modules/object-assign/index.js.map +0 -1
  1191. package/dist/node_modules/pptxgenjs/dist/pptxgen.es.js.map +0 -1
  1192. package/dist/node_modules/prop-types/checkPropTypes.js.map +0 -1
  1193. package/dist/node_modules/prop-types/factoryWithThrowingShims.js.map +0 -1
  1194. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js.map +0 -1
  1195. package/dist/node_modules/prop-types/index.js.map +0 -1
  1196. package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js.map +0 -1
  1197. package/dist/node_modules/prop-types/lib/has.js.map +0 -1
  1198. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js.map +0 -1
  1199. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js.map +0 -1
  1200. package/dist/node_modules/prop-types/node_modules/react-is/index.js.map +0 -1
  1201. package/dist/node_modules/react-is/cjs/react-is.development.js.map +0 -1
  1202. package/dist/node_modules/react-is/cjs/react-is.production.min.js.map +0 -1
  1203. package/dist/node_modules/react-is/index.js.map +0 -1
  1204. package/dist/node_modules/react-smooth/es6/Animate.js.map +0 -1
  1205. package/dist/node_modules/react-smooth/es6/AnimateManager.js.map +0 -1
  1206. package/dist/node_modules/react-smooth/es6/configUpdate.js.map +0 -1
  1207. package/dist/node_modules/react-smooth/es6/easing.js.map +0 -1
  1208. package/dist/node_modules/react-smooth/es6/index.js.map +0 -1
  1209. package/dist/node_modules/react-smooth/es6/setRafTimeout.js.map +0 -1
  1210. package/dist/node_modules/react-smooth/es6/util.js.map +0 -1
  1211. package/dist/node_modules/recharts/es6/cartesian/Area.js.map +0 -1
  1212. package/dist/node_modules/recharts/es6/cartesian/Bar.js.map +0 -1
  1213. package/dist/node_modules/recharts/es6/cartesian/Brush.js.map +0 -1
  1214. package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js.map +0 -1
  1215. package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js.map +0 -1
  1216. package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js.map +0 -1
  1217. package/dist/node_modules/recharts/es6/cartesian/Line.js.map +0 -1
  1218. package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js.map +0 -1
  1219. package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js.map +0 -1
  1220. package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js.map +0 -1
  1221. package/dist/node_modules/recharts/es6/cartesian/XAxis.js.map +0 -1
  1222. package/dist/node_modules/recharts/es6/cartesian/YAxis.js.map +0 -1
  1223. package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js.map +0 -1
  1224. package/dist/node_modules/recharts/es6/cartesian/getTicks.js.map +0 -1
  1225. package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js.map +0 -1
  1226. package/dist/node_modules/recharts/es6/chart/AreaChart.js.map +0 -1
  1227. package/dist/node_modules/recharts/es6/chart/BarChart.js.map +0 -1
  1228. package/dist/node_modules/recharts/es6/chart/LineChart.js.map +0 -1
  1229. package/dist/node_modules/recharts/es6/chart/Sankey.js.map +0 -1
  1230. package/dist/node_modules/recharts/es6/chart/Treemap.js.map +0 -1
  1231. package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js.map +0 -1
  1232. package/dist/node_modules/recharts/es6/component/Cell.js.map +0 -1
  1233. package/dist/node_modules/recharts/es6/component/Cursor.js.map +0 -1
  1234. package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js.map +0 -1
  1235. package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js.map +0 -1
  1236. package/dist/node_modules/recharts/es6/component/Label.js.map +0 -1
  1237. package/dist/node_modules/recharts/es6/component/LabelList.js.map +0 -1
  1238. package/dist/node_modules/recharts/es6/component/Legend.js.map +0 -1
  1239. package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js.map +0 -1
  1240. package/dist/node_modules/recharts/es6/component/Text.js.map +0 -1
  1241. package/dist/node_modules/recharts/es6/component/Tooltip.js.map +0 -1
  1242. package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js.map +0 -1
  1243. package/dist/node_modules/recharts/es6/container/Layer.js.map +0 -1
  1244. package/dist/node_modules/recharts/es6/container/Surface.js.map +0 -1
  1245. package/dist/node_modules/recharts/es6/context/chartLayoutContext.js.map +0 -1
  1246. package/dist/node_modules/recharts/es6/shape/Cross.js.map +0 -1
  1247. package/dist/node_modules/recharts/es6/shape/Curve.js.map +0 -1
  1248. package/dist/node_modules/recharts/es6/shape/Dot.js.map +0 -1
  1249. package/dist/node_modules/recharts/es6/shape/Polygon.js.map +0 -1
  1250. package/dist/node_modules/recharts/es6/shape/Rectangle.js.map +0 -1
  1251. package/dist/node_modules/recharts/es6/shape/Sector.js.map +0 -1
  1252. package/dist/node_modules/recharts/es6/shape/Symbols.js.map +0 -1
  1253. package/dist/node_modules/recharts/es6/shape/Trapezoid.js.map +0 -1
  1254. package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js.map +0 -1
  1255. package/dist/node_modules/recharts/es6/util/BarUtils.js.map +0 -1
  1256. package/dist/node_modules/recharts/es6/util/CartesianUtils.js.map +0 -1
  1257. package/dist/node_modules/recharts/es6/util/ChartUtils.js.map +0 -1
  1258. package/dist/node_modules/recharts/es6/util/Constants.js.map +0 -1
  1259. package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js.map +0 -1
  1260. package/dist/node_modules/recharts/es6/util/DOMUtils.js.map +0 -1
  1261. package/dist/node_modules/recharts/es6/util/DataUtils.js.map +0 -1
  1262. package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js.map +0 -1
  1263. package/dist/node_modules/recharts/es6/util/Events.js.map +0 -1
  1264. package/dist/node_modules/recharts/es6/util/Global.js.map +0 -1
  1265. package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js.map +0 -1
  1266. package/dist/node_modules/recharts/es6/util/LogUtils.js.map +0 -1
  1267. package/dist/node_modules/recharts/es6/util/PolarUtils.js.map +0 -1
  1268. package/dist/node_modules/recharts/es6/util/ReactUtils.js.map +0 -1
  1269. package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js.map +0 -1
  1270. package/dist/node_modules/recharts/es6/util/ShallowEqual.js.map +0 -1
  1271. package/dist/node_modules/recharts/es6/util/TickUtils.js.map +0 -1
  1272. package/dist/node_modules/recharts/es6/util/calculateViewBox.js.map +0 -1
  1273. package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js.map +0 -1
  1274. package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js.map +0 -1
  1275. package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js.map +0 -1
  1276. package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js.map +0 -1
  1277. package/dist/node_modules/recharts/es6/util/getLegendProps.js.map +0 -1
  1278. package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js.map +0 -1
  1279. package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js.map +0 -1
  1280. package/dist/node_modules/recharts/es6/util/tooltip/translate.js.map +0 -1
  1281. package/dist/node_modules/recharts/es6/util/types.js.map +0 -1
  1282. package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js.map +0 -1
  1283. package/dist/node_modules/recharts-scale/es6/util/arithmetic.js.map +0 -1
  1284. package/dist/node_modules/recharts-scale/es6/util/utils.js.map +0 -1
  1285. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +0 -1
  1286. package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js.map +0 -1
  1287. package/dist/node_modules/victory-vendor/es/d3-scale.js.map +0 -1
  1288. package/dist/node_modules/write-excel-file/modules/export/convertFileContentToUint8ArrayBrowser.js.map +0 -1
  1289. package/dist/node_modules/write-excel-file/modules/export/convertFilesContentToUint8Arrays.js.map +0 -1
  1290. package/dist/node_modules/write-excel-file/modules/export/downloadBlob.js.map +0 -1
  1291. package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileBrowser.js.map +0 -1
  1292. package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileUniversal.js.map +0 -1
  1293. package/dist/node_modules/write-excel-file/modules/getSheetData/getSheetData.js.map +0 -1
  1294. package/dist/node_modules/write-excel-file/modules/xlsx/features/conditionalFormatting.js.map +0 -1
  1295. package/dist/node_modules/write-excel-file/modules/xlsx/features/images.js.map +0 -1
  1296. package/dist/node_modules/write-excel-file/modules/xlsx/features/stickyRowsOrColumns.js.map +0 -1
  1297. package/dist/node_modules/write-excel-file/modules/xlsx/files/_Content_Types_.xml.js.map +0 -1
  1298. package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.js.map +0 -1
  1299. package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.rels.js.map +0 -1
  1300. package/dist/node_modules/write-excel-file/modules/xlsx/files/rels.js.map +0 -1
  1301. package/dist/node_modules/write-excel-file/modules/xlsx/files/sharedStrings.xml.js.map +0 -1
  1302. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/cell.js.map +0 -1
  1303. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/column.js.map +0 -1
  1304. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/columns.js.map +0 -1
  1305. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/drawingReference.js.map +0 -1
  1306. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/helpers/getCellStyleProperties.js.map +0 -1
  1307. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/mergedCellsDescription.js.map +0 -1
  1308. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageMargins.js.map +0 -1
  1309. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageSetup.js.map +0 -1
  1310. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/processMergedCells.js.map +0 -1
  1311. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/row.js.map +0 -1
  1312. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheet.xml.js.map +0 -1
  1313. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetData.js.map +0 -1
  1314. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetViews.js.map +0 -1
  1315. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml.rels.js.map +0 -1
  1316. package/dist/node_modules/write-excel-file/modules/xlsx/files/styles.xml.js.map +0 -1
  1317. package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.js.map +0 -1
  1318. package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.rels.js.map +0 -1
  1319. package/dist/node_modules/write-excel-file/modules/xlsx/generateXlsxFileContents.js.map +0 -1
  1320. package/dist/node_modules/write-excel-file/modules/xlsx/getFeatures.js.map +0 -1
  1321. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/convertDateToSerialNumber.js.map +0 -1
  1322. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getAdditionalContent.js.map +0 -1
  1323. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getElementXml.js.map +0 -1
  1324. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getWrittenFiles.js.map +0 -1
  1325. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/transformContent.js.map +0 -1
  1326. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getAlignmentXml.js.map +0 -1
  1327. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getBorderXml.js.map +0 -1
  1328. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getCellAddress.js.map +0 -1
  1329. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFileExtensionForContentType.js.map +0 -1
  1330. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFillXml.js.map +0 -1
  1331. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFontXml.js.map +0 -1
  1332. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getOrderOfSiblings.js.map +0 -1
  1333. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getXlsxColorForHexColor.js.map +0 -1
  1334. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasAlignment.js.map +0 -1
  1335. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasBorder.js.map +0 -1
  1336. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFill.js.map +0 -1
  1337. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFont.js.map +0 -1
  1338. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isCellObject.js.map +0 -1
  1339. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isObject.js.map +0 -1
  1340. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/orderOfSiblings.js.map +0 -1
  1341. package/dist/node_modules/write-excel-file/modules/xlsx/initializeSharedStrings.js.map +0 -1
  1342. package/dist/node_modules/write-excel-file/modules/xlsx/initializeSheets.js.map +0 -1
  1343. package/dist/node_modules/write-excel-file/modules/xlsx/initializeStyles.js.map +0 -1
  1344. package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetData.js.map +0 -1
  1345. package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetName.js.map +0 -1
  1346. package/dist/node_modules/write-excel-file/modules/xml/appendMarkupInsideElement.js.map +0 -1
  1347. package/dist/node_modules/write-excel-file/modules/xml/applyEnclosingElementOffset.js.map +0 -1
  1348. package/dist/node_modules/write-excel-file/modules/xml/escapeXmlSpecialCharacters.js.map +0 -1
  1349. package/dist/node_modules/write-excel-file/modules/xml/findElement.js.map +0 -1
  1350. package/dist/node_modules/write-excel-file/modules/xml/findElementInsideElement.js.map +0 -1
  1351. package/dist/node_modules/write-excel-file/modules/xml/findElementsNonRecursive_.js.map +0 -1
  1352. package/dist/node_modules/write-excel-file/modules/xml/getAttributesString.js.map +0 -1
  1353. package/dist/node_modules/write-excel-file/modules/xml/getChildElements.js.map +0 -1
  1354. package/dist/node_modules/write-excel-file/modules/xml/getClosingTagMarkup.js.map +0 -1
  1355. package/dist/node_modules/write-excel-file/modules/xml/getMarkupInsideElement.js.map +0 -1
  1356. package/dist/node_modules/write-excel-file/modules/xml/getOpeningTagMarkup.js.map +0 -1
  1357. package/dist/node_modules/write-excel-file/modules/xml/getSelfClosingTagMarkup.js.map +0 -1
  1358. package/dist/node_modules/write-excel-file/modules/xml/insertElementMarkupAccordingToOrderOfSiblings.js.map +0 -1
  1359. package/dist/node_modules/write-excel-file/modules/xml/prependMarkupInsideElement.js.map +0 -1
  1360. package/dist/node_modules/write-excel-file/modules/xml/removeInvalidXmlCharacters.js.map +0 -1
  1361. package/dist/node_modules/write-excel-file/modules/xml/replaceElement.js.map +0 -1
  1362. package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeName.js.map +0 -1
  1363. package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeValue.js.map +0 -1
  1364. package/dist/node_modules/write-excel-file/modules/xml/sanitizeTextContent.js.map +0 -1
  1365. package/dist/node_modules/write-excel-file/modules/xml/setMarkupInsideElement.js.map +0 -1
  1366. package/dist/node_modules/write-excel-file/modules/zip/zipToArrayBuffer.js.map +0 -1
  1367. package/dist/planmagnet/PlanMagnetRoot.d.ts.map +0 -1
  1368. package/dist/planmagnet/PlanMagnetRoot.js.map +0 -1
  1369. package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +0 -1
  1370. package/dist/planmagnet/PlanMagnetRoutes.js.map +0 -1
  1371. package/dist/planmagnet/activity/activityDescribe.d.ts.map +0 -1
  1372. package/dist/planmagnet/activity/activityDescribe.js.map +0 -1
  1373. package/dist/planmagnet/activity/relativeTime.d.ts.map +0 -1
  1374. package/dist/planmagnet/activity/relativeTime.js.map +0 -1
  1375. package/dist/planmagnet/admin/PlanMagnetAdminRoot.d.ts.map +0 -1
  1376. package/dist/planmagnet/admin/PlanMagnetAdminRoot.js.map +0 -1
  1377. package/dist/planmagnet/automation/AutomationExecutionsPanel.d.ts.map +0 -1
  1378. package/dist/planmagnet/automation/AutomationExecutionsPanel.js.map +0 -1
  1379. package/dist/planmagnet/automation/AutomationRuleFields.d.ts.map +0 -1
  1380. package/dist/planmagnet/automation/AutomationRuleFields.js.map +0 -1
  1381. package/dist/planmagnet/automation/automationRuleTypes.d.ts.map +0 -1
  1382. package/dist/planmagnet/automation/automationRuleTypes.js.map +0 -1
  1383. package/dist/planmagnet/board/BoardViewBar.d.ts.map +0 -1
  1384. package/dist/planmagnet/board/BoardViewBar.js.map +0 -1
  1385. package/dist/planmagnet/board/BulkActions.d.ts.map +0 -1
  1386. package/dist/planmagnet/board/BulkActions.js.map +0 -1
  1387. package/dist/planmagnet/board/ProjectBoard.d.ts.map +0 -1
  1388. package/dist/planmagnet/board/ProjectBoard.js.map +0 -1
  1389. package/dist/planmagnet/board/boardViewConfig.d.ts.map +0 -1
  1390. package/dist/planmagnet/board/boardViewConfig.js.map +0 -1
  1391. package/dist/planmagnet/budgets/BudgetControls.d.ts.map +0 -1
  1392. package/dist/planmagnet/budgets/BudgetControls.js.map +0 -1
  1393. package/dist/planmagnet/budgets/ExpenseControls.d.ts.map +0 -1
  1394. package/dist/planmagnet/budgets/ExpenseControls.js.map +0 -1
  1395. package/dist/planmagnet/budgets/ProjectBudgetsSummary.d.ts.map +0 -1
  1396. package/dist/planmagnet/budgets/ProjectBudgetsSummary.js.map +0 -1
  1397. package/dist/planmagnet/budgets/budgetMath.d.ts.map +0 -1
  1398. package/dist/planmagnet/budgets/budgetMath.js.map +0 -1
  1399. package/dist/planmagnet/comments/CommentAttachmentUpload.d.ts.map +0 -1
  1400. package/dist/planmagnet/comments/CommentAttachmentUpload.js.map +0 -1
  1401. package/dist/planmagnet/comments/CommentAttachments.d.ts.map +0 -1
  1402. package/dist/planmagnet/comments/CommentAttachments.js.map +0 -1
  1403. package/dist/planmagnet/comments/CommentBody.d.ts.map +0 -1
  1404. package/dist/planmagnet/comments/CommentBody.js.map +0 -1
  1405. package/dist/planmagnet/comments/CommentThread.d.ts.map +0 -1
  1406. package/dist/planmagnet/comments/CommentThread.js.map +0 -1
  1407. package/dist/planmagnet/comments/MentionComposer.d.ts.map +0 -1
  1408. package/dist/planmagnet/comments/MentionComposer.js.map +0 -1
  1409. package/dist/planmagnet/comments/RoadmapComments.d.ts.map +0 -1
  1410. package/dist/planmagnet/comments/RoadmapComments.js.map +0 -1
  1411. package/dist/planmagnet/comments/TargetComments.d.ts.map +0 -1
  1412. package/dist/planmagnet/comments/TargetComments.js.map +0 -1
  1413. package/dist/planmagnet/comments/WorkItemActivity.d.ts.map +0 -1
  1414. package/dist/planmagnet/comments/WorkItemActivity.js.map +0 -1
  1415. package/dist/planmagnet/comments/WorkItemComments.d.ts.map +0 -1
  1416. package/dist/planmagnet/comments/WorkItemComments.js.map +0 -1
  1417. package/dist/planmagnet/comments/commentAttachmentUploadClient.d.ts.map +0 -1
  1418. package/dist/planmagnet/comments/commentAttachmentUploadClient.js.map +0 -1
  1419. package/dist/planmagnet/comments/commentImageTokens.d.ts.map +0 -1
  1420. package/dist/planmagnet/comments/commentImageTokens.js.map +0 -1
  1421. package/dist/planmagnet/comments/commentTokens.d.ts.map +0 -1
  1422. package/dist/planmagnet/comments/commentTokens.js.map +0 -1
  1423. package/dist/planmagnet/comments/fileDisplay.d.ts.map +0 -1
  1424. package/dist/planmagnet/comments/fileDisplay.js.map +0 -1
  1425. package/dist/planmagnet/comments/useCommentFileUrl.d.ts.map +0 -1
  1426. package/dist/planmagnet/comments/useCommentFileUrl.js.map +0 -1
  1427. package/dist/planmagnet/controls/AutomationRuleControls.d.ts.map +0 -1
  1428. package/dist/planmagnet/controls/AutomationRuleControls.js.map +0 -1
  1429. package/dist/planmagnet/controls/CompetitorControls.d.ts.map +0 -1
  1430. package/dist/planmagnet/controls/CompetitorControls.js.map +0 -1
  1431. package/dist/planmagnet/controls/ConfirmButton.d.ts.map +0 -1
  1432. package/dist/planmagnet/controls/ConfirmButton.js.map +0 -1
  1433. package/dist/planmagnet/controls/CustomFieldControls.d.ts.map +0 -1
  1434. package/dist/planmagnet/controls/CustomFieldControls.js.map +0 -1
  1435. package/dist/planmagnet/controls/CustomFieldValuesPanel.d.ts.map +0 -1
  1436. package/dist/planmagnet/controls/CustomFieldValuesPanel.js.map +0 -1
  1437. package/dist/planmagnet/controls/FeatureControls.d.ts.map +0 -1
  1438. package/dist/planmagnet/controls/FeatureControls.js.map +0 -1
  1439. package/dist/planmagnet/controls/FeatureTriage.d.ts.map +0 -1
  1440. package/dist/planmagnet/controls/FeatureTriage.js.map +0 -1
  1441. package/dist/planmagnet/controls/FeedbackControls.d.ts.map +0 -1
  1442. package/dist/planmagnet/controls/FeedbackControls.js.map +0 -1
  1443. package/dist/planmagnet/controls/LiveStatus.d.ts.map +0 -1
  1444. package/dist/planmagnet/controls/LiveStatus.js.map +0 -1
  1445. package/dist/planmagnet/controls/MilestoneControls.d.ts.map +0 -1
  1446. package/dist/planmagnet/controls/MilestoneControls.js.map +0 -1
  1447. package/dist/planmagnet/controls/ObjectiveControls.d.ts.map +0 -1
  1448. package/dist/planmagnet/controls/ObjectiveControls.js.map +0 -1
  1449. package/dist/planmagnet/controls/Pickers.d.ts.map +0 -1
  1450. package/dist/planmagnet/controls/Pickers.js.map +0 -1
  1451. package/dist/planmagnet/controls/PortfolioControls.d.ts.map +0 -1
  1452. package/dist/planmagnet/controls/PortfolioControls.js.map +0 -1
  1453. package/dist/planmagnet/controls/PrioritizationControls.d.ts.map +0 -1
  1454. package/dist/planmagnet/controls/PrioritizationControls.js.map +0 -1
  1455. package/dist/planmagnet/controls/ProgramControls.d.ts.map +0 -1
  1456. package/dist/planmagnet/controls/ProgramControls.js.map +0 -1
  1457. package/dist/planmagnet/controls/ProjectControls.d.ts.map +0 -1
  1458. package/dist/planmagnet/controls/ProjectControls.js.map +0 -1
  1459. package/dist/planmagnet/controls/QualityGateControls.d.ts.map +0 -1
  1460. package/dist/planmagnet/controls/QualityGateControls.js.map +0 -1
  1461. package/dist/planmagnet/controls/ReleaseControls.d.ts.map +0 -1
  1462. package/dist/planmagnet/controls/ReleaseControls.js.map +0 -1
  1463. package/dist/planmagnet/controls/RiskControls.d.ts.map +0 -1
  1464. package/dist/planmagnet/controls/RiskControls.js.map +0 -1
  1465. package/dist/planmagnet/controls/SyncControls.d.ts.map +0 -1
  1466. package/dist/planmagnet/controls/SyncControls.js.map +0 -1
  1467. package/dist/planmagnet/controls/TemplateControls.d.ts.map +0 -1
  1468. package/dist/planmagnet/controls/TemplateControls.js.map +0 -1
  1469. package/dist/planmagnet/controls/WebhookSubscriptionControls.d.ts.map +0 -1
  1470. package/dist/planmagnet/controls/WebhookSubscriptionControls.js.map +0 -1
  1471. package/dist/planmagnet/controls/WorkItemControls.d.ts.map +0 -1
  1472. package/dist/planmagnet/controls/WorkItemControls.js.map +0 -1
  1473. package/dist/planmagnet/create/CreateDialogs.d.ts.map +0 -1
  1474. package/dist/planmagnet/create/CreateDialogs.js.map +0 -1
  1475. package/dist/planmagnet/dashboards/DashboardUI.d.ts.map +0 -1
  1476. package/dist/planmagnet/dashboards/DashboardUI.js.map +0 -1
  1477. package/dist/planmagnet/dashboards/cards/DeliveryTimelineCard.d.ts.map +0 -1
  1478. package/dist/planmagnet/dashboards/cards/DeliveryTimelineCard.js.map +0 -1
  1479. package/dist/planmagnet/dashboards/cards/ObjectivesProgressCard.d.ts.map +0 -1
  1480. package/dist/planmagnet/dashboards/cards/ObjectivesProgressCard.js.map +0 -1
  1481. package/dist/planmagnet/dashboards/cards/PortfolioHealthCard.d.ts.map +0 -1
  1482. package/dist/planmagnet/dashboards/cards/PortfolioHealthCard.js.map +0 -1
  1483. package/dist/planmagnet/dashboards/cards/QualityMetricsCard.d.ts.map +0 -1
  1484. package/dist/planmagnet/dashboards/cards/QualityMetricsCard.js.map +0 -1
  1485. package/dist/planmagnet/dashboards/cards/RiskSeverityCard.d.ts.map +0 -1
  1486. package/dist/planmagnet/dashboards/cards/RiskSeverityCard.js.map +0 -1
  1487. package/dist/planmagnet/dashboards/cards/RoadmapHorizonCard.d.ts.map +0 -1
  1488. package/dist/planmagnet/dashboards/cards/RoadmapHorizonCard.js.map +0 -1
  1489. package/dist/planmagnet/dashboards/cards/SprintCapacityCard.d.ts.map +0 -1
  1490. package/dist/planmagnet/dashboards/cards/SprintCapacityCard.js.map +0 -1
  1491. package/dist/planmagnet/dashboards/cards/TaskCompletionCard.d.ts.map +0 -1
  1492. package/dist/planmagnet/dashboards/cards/TaskCompletionCard.js.map +0 -1
  1493. package/dist/planmagnet/dashboards/cards/TeamCapacityCard.d.ts.map +0 -1
  1494. package/dist/planmagnet/dashboards/cards/TeamCapacityCard.js.map +0 -1
  1495. package/dist/planmagnet/dashboards/cards/TeamOverviewCard.d.ts.map +0 -1
  1496. package/dist/planmagnet/dashboards/cards/TeamOverviewCard.js.map +0 -1
  1497. package/dist/planmagnet/dashboards/cards/TeamWorkloadCard.d.ts.map +0 -1
  1498. package/dist/planmagnet/dashboards/cards/TeamWorkloadCard.js.map +0 -1
  1499. package/dist/planmagnet/dashboards/cards/TimeLoggedCard.d.ts.map +0 -1
  1500. package/dist/planmagnet/dashboards/cards/TimeLoggedCard.js.map +0 -1
  1501. package/dist/planmagnet/dependency/DependencyGraph.d.ts.map +0 -1
  1502. package/dist/planmagnet/dependency/DependencyGraph.js.map +0 -1
  1503. package/dist/planmagnet/dependency/DependencyPanel.d.ts.map +0 -1
  1504. package/dist/planmagnet/dependency/DependencyPanel.js.map +0 -1
  1505. package/dist/planmagnet/dependency/GanttChart.d.ts.map +0 -1
  1506. package/dist/planmagnet/dependency/GanttChart.js.map +0 -1
  1507. package/dist/planmagnet/dependency/useProjectWorkItemsGraph.d.ts.map +0 -1
  1508. package/dist/planmagnet/dependency/useProjectWorkItemsGraph.js.map +0 -1
  1509. package/dist/planmagnet/discussion/WorkItemDiscussionPanel.d.ts.map +0 -1
  1510. package/dist/planmagnet/discussion/WorkItemDiscussionPanel.js.map +0 -1
  1511. package/dist/planmagnet/docs/DocDiffView.d.ts.map +0 -1
  1512. package/dist/planmagnet/docs/DocDiffView.js.map +0 -1
  1513. package/dist/planmagnet/docs/DocStatusBadge.d.ts.map +0 -1
  1514. package/dist/planmagnet/docs/DocStatusBadge.js.map +0 -1
  1515. package/dist/planmagnet/docs/DocSuggestionsPanel.d.ts.map +0 -1
  1516. package/dist/planmagnet/docs/DocSuggestionsPanel.js.map +0 -1
  1517. package/dist/planmagnet/docs/DocVersionCompare.d.ts.map +0 -1
  1518. package/dist/planmagnet/docs/DocVersionCompare.js.map +0 -1
  1519. package/dist/planmagnet/export/ExportWorkItemsButton.d.ts.map +0 -1
  1520. package/dist/planmagnet/export/ExportWorkItemsButton.js.map +0 -1
  1521. package/dist/planmagnet/export/workItemsCsv.d.ts.map +0 -1
  1522. package/dist/planmagnet/export/workItemsCsv.js.map +0 -1
  1523. package/dist/planmagnet/forecast/DeliveryForecastCard.d.ts.map +0 -1
  1524. package/dist/planmagnet/forecast/DeliveryForecastCard.js.map +0 -1
  1525. package/dist/planmagnet/forecast/ProjectOutlookCard.d.ts.map +0 -1
  1526. package/dist/planmagnet/forecast/ProjectOutlookCard.js.map +0 -1
  1527. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.d.ts.map +0 -1
  1528. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.js.map +0 -1
  1529. package/dist/planmagnet/forecast/ResourceForecastCard.d.ts.map +0 -1
  1530. package/dist/planmagnet/forecast/ResourceForecastCard.js.map +0 -1
  1531. package/dist/planmagnet/forecast/riskFlags.d.ts.map +0 -1
  1532. package/dist/planmagnet/forecast/riskFlags.js.map +0 -1
  1533. package/dist/planmagnet/hooks/useCounts.d.ts.map +0 -1
  1534. package/dist/planmagnet/hooks/useCounts.js.map +0 -1
  1535. package/dist/planmagnet/hooks/useEntityId.d.ts.map +0 -1
  1536. package/dist/planmagnet/hooks/useEntityId.js.map +0 -1
  1537. package/dist/planmagnet/hooks/useLiveRefresh.d.ts.map +0 -1
  1538. package/dist/planmagnet/hooks/useLiveRefresh.js.map +0 -1
  1539. package/dist/planmagnet/hooks/usePresence.d.ts.map +0 -1
  1540. package/dist/planmagnet/hooks/usePresence.js.map +0 -1
  1541. package/dist/planmagnet/hooks/useProjectWorkflow.d.ts.map +0 -1
  1542. package/dist/planmagnet/hooks/useProjectWorkflow.js.map +0 -1
  1543. package/dist/planmagnet/import/exportColumns.d.ts.map +0 -1
  1544. package/dist/planmagnet/import/exportColumns.js.map +0 -1
  1545. package/dist/planmagnet/index.d.ts.map +0 -1
  1546. package/dist/planmagnet/integrations/routes.d.ts.map +0 -1
  1547. package/dist/planmagnet/integrations/routes.js.map +0 -1
  1548. package/dist/planmagnet/integrations/syncTypes.d.ts.map +0 -1
  1549. package/dist/planmagnet/integrations/syncTypes.js.map +0 -1
  1550. package/dist/planmagnet/integrations/useSyncProviderCapabilities.d.ts.map +0 -1
  1551. package/dist/planmagnet/integrations/useSyncProviderCapabilities.js.map +0 -1
  1552. package/dist/planmagnet/links/CodeLinksPanel.d.ts.map +0 -1
  1553. package/dist/planmagnet/links/CodeLinksPanel.js.map +0 -1
  1554. package/dist/planmagnet/links/IssueLinksPanel.d.ts.map +0 -1
  1555. package/dist/planmagnet/links/IssueLinksPanel.js.map +0 -1
  1556. package/dist/planmagnet/meetings/MeetingActionItemsPanel.d.ts.map +0 -1
  1557. package/dist/planmagnet/meetings/MeetingActionItemsPanel.js.map +0 -1
  1558. package/dist/planmagnet/meetings/MeetingsCard.d.ts.map +0 -1
  1559. package/dist/planmagnet/meetings/MeetingsCard.js.map +0 -1
  1560. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.d.ts.map +0 -1
  1561. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.js.map +0 -1
  1562. package/dist/planmagnet/meetings/ScheduleMeetingDialog.d.ts.map +0 -1
  1563. package/dist/planmagnet/meetings/ScheduleMeetingDialog.js.map +0 -1
  1564. package/dist/planmagnet/meetings/UnlinkMeetingDialog.d.ts.map +0 -1
  1565. package/dist/planmagnet/meetings/UnlinkMeetingDialog.js.map +0 -1
  1566. package/dist/planmagnet/meetings/meetingActions.d.ts.map +0 -1
  1567. package/dist/planmagnet/meetings/meetingActions.js.map +0 -1
  1568. package/dist/planmagnet/meetings/meetingGraphql.d.ts.map +0 -1
  1569. package/dist/planmagnet/meetings/meetingGraphql.js.map +0 -1
  1570. package/dist/planmagnet/meetings/meetingModel.d.ts.map +0 -1
  1571. package/dist/planmagnet/meetings/meetingModel.js.map +0 -1
  1572. package/dist/planmagnet/milestones/MilestoneControls.d.ts.map +0 -1
  1573. package/dist/planmagnet/milestones/MilestoneControls.js.map +0 -1
  1574. package/dist/planmagnet/pages/ActivityActivityPagePage.d.ts.map +0 -1
  1575. package/dist/planmagnet/pages/ActivityActivityPagePage.js.map +0 -1
  1576. package/dist/planmagnet/pages/AiActivityPagePage.d.ts.map +0 -1
  1577. package/dist/planmagnet/pages/AiActivityPagePage.js.map +0 -1
  1578. package/dist/planmagnet/pages/AiPlanPagePage.d.ts.map +0 -1
  1579. package/dist/planmagnet/pages/AiPlanPagePage.js.map +0 -1
  1580. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.d.ts.map +0 -1
  1581. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js.map +0 -1
  1582. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.d.ts.map +0 -1
  1583. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.js.map +0 -1
  1584. package/dist/planmagnet/pages/AutomationAutomationRulesPagePage.d.ts.map +0 -1
  1585. package/dist/planmagnet/pages/AutomationAutomationRulesPagePage.js.map +0 -1
  1586. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.d.ts.map +0 -1
  1587. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.js.map +0 -1
  1588. package/dist/planmagnet/pages/CompetitorsCompetitorDetailPagePage.d.ts.map +0 -1
  1589. package/dist/planmagnet/pages/CompetitorsCompetitorDetailPagePage.js.map +0 -1
  1590. package/dist/planmagnet/pages/CompetitorsCompetitorsPagePage.d.ts.map +0 -1
  1591. package/dist/planmagnet/pages/CompetitorsCompetitorsPagePage.js.map +0 -1
  1592. package/dist/planmagnet/pages/CompetitorsCreateCompetitorPagePage.d.ts.map +0 -1
  1593. package/dist/planmagnet/pages/CompetitorsCreateCompetitorPagePage.js.map +0 -1
  1594. package/dist/planmagnet/pages/CompetitorsEditCompetitorPagePage.d.ts.map +0 -1
  1595. package/dist/planmagnet/pages/CompetitorsEditCompetitorPagePage.js.map +0 -1
  1596. package/dist/planmagnet/pages/DashboardDashboardPagePage.d.ts.map +0 -1
  1597. package/dist/planmagnet/pages/DashboardDashboardPagePage.js.map +0 -1
  1598. package/dist/planmagnet/pages/DashboardsExecutivePagePage.d.ts.map +0 -1
  1599. package/dist/planmagnet/pages/DashboardsExecutivePagePage.js.map +0 -1
  1600. package/dist/planmagnet/pages/DashboardsLeadershipPagePage.d.ts.map +0 -1
  1601. package/dist/planmagnet/pages/DashboardsLeadershipPagePage.js.map +0 -1
  1602. package/dist/planmagnet/pages/DashboardsProjectManagerPagePage.d.ts.map +0 -1
  1603. package/dist/planmagnet/pages/DashboardsProjectManagerPagePage.js.map +0 -1
  1604. package/dist/planmagnet/pages/DashboardsTeamUtilizationPagePage.d.ts.map +0 -1
  1605. package/dist/planmagnet/pages/DashboardsTeamUtilizationPagePage.js.map +0 -1
  1606. package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts.map +0 -1
  1607. package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +0 -1
  1608. package/dist/planmagnet/pages/DocsDocsPagePage.d.ts.map +0 -1
  1609. package/dist/planmagnet/pages/DocsDocsPagePage.js.map +0 -1
  1610. package/dist/planmagnet/pages/GoalsCreateObjectivePagePage.d.ts.map +0 -1
  1611. package/dist/planmagnet/pages/GoalsCreateObjectivePagePage.js.map +0 -1
  1612. package/dist/planmagnet/pages/GoalsGoalsPagePage.d.ts.map +0 -1
  1613. package/dist/planmagnet/pages/GoalsGoalsPagePage.js.map +0 -1
  1614. package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.d.ts.map +0 -1
  1615. package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js.map +0 -1
  1616. package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.d.ts.map +0 -1
  1617. package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.js.map +0 -1
  1618. package/dist/planmagnet/pages/IntegrationsSyncDetailPagePage.d.ts.map +0 -1
  1619. package/dist/planmagnet/pages/IntegrationsSyncDetailPagePage.js.map +0 -1
  1620. package/dist/planmagnet/pages/IntegrationsSyncsPagePage.d.ts.map +0 -1
  1621. package/dist/planmagnet/pages/IntegrationsSyncsPagePage.js.map +0 -1
  1622. package/dist/planmagnet/pages/IntegrationsWebhooksPagePage.d.ts.map +0 -1
  1623. package/dist/planmagnet/pages/IntegrationsWebhooksPagePage.js.map +0 -1
  1624. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.d.ts.map +0 -1
  1625. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.js.map +0 -1
  1626. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.d.ts.map +0 -1
  1627. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.js.map +0 -1
  1628. package/dist/planmagnet/pages/NotFoundPage.d.ts.map +0 -1
  1629. package/dist/planmagnet/pages/NotFoundPage.js.map +0 -1
  1630. package/dist/planmagnet/pages/PortfoliosCreatePortfolioPagePage.d.ts.map +0 -1
  1631. package/dist/planmagnet/pages/PortfoliosCreatePortfolioPagePage.js.map +0 -1
  1632. package/dist/planmagnet/pages/PortfoliosEditPortfolioPagePage.d.ts.map +0 -1
  1633. package/dist/planmagnet/pages/PortfoliosEditPortfolioPagePage.js.map +0 -1
  1634. package/dist/planmagnet/pages/PortfoliosPortfolioDetailPagePage.d.ts.map +0 -1
  1635. package/dist/planmagnet/pages/PortfoliosPortfolioDetailPagePage.js.map +0 -1
  1636. package/dist/planmagnet/pages/PortfoliosPortfoliosPagePage.d.ts.map +0 -1
  1637. package/dist/planmagnet/pages/PortfoliosPortfoliosPagePage.js.map +0 -1
  1638. package/dist/planmagnet/pages/ProductsCreateProductPagePage.d.ts.map +0 -1
  1639. package/dist/planmagnet/pages/ProductsCreateProductPagePage.js.map +0 -1
  1640. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.d.ts.map +0 -1
  1641. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js.map +0 -1
  1642. package/dist/planmagnet/pages/ProductsCustomerSatisfactionPagePage.d.ts.map +0 -1
  1643. package/dist/planmagnet/pages/ProductsCustomerSatisfactionPagePage.js.map +0 -1
  1644. package/dist/planmagnet/pages/ProductsEditProductPagePage.d.ts.map +0 -1
  1645. package/dist/planmagnet/pages/ProductsEditProductPagePage.js.map +0 -1
  1646. package/dist/planmagnet/pages/ProductsEditReleasePagePage.d.ts.map +0 -1
  1647. package/dist/planmagnet/pages/ProductsEditReleasePagePage.js.map +0 -1
  1648. package/dist/planmagnet/pages/ProductsEditRoadmapPagePage.d.ts.map +0 -1
  1649. package/dist/planmagnet/pages/ProductsEditRoadmapPagePage.js.map +0 -1
  1650. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.d.ts.map +0 -1
  1651. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js.map +0 -1
  1652. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.d.ts.map +0 -1
  1653. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js.map +0 -1
  1654. package/dist/planmagnet/pages/ProductsFeaturesPagePage.d.ts.map +0 -1
  1655. package/dist/planmagnet/pages/ProductsFeaturesPagePage.js.map +0 -1
  1656. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.d.ts.map +0 -1
  1657. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js.map +0 -1
  1658. package/dist/planmagnet/pages/ProductsPrioritizationPagePage.d.ts.map +0 -1
  1659. package/dist/planmagnet/pages/ProductsPrioritizationPagePage.js.map +0 -1
  1660. package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts.map +0 -1
  1661. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js.map +0 -1
  1662. package/dist/planmagnet/pages/ProductsProductFeatureDetailPagePage.d.ts.map +0 -1
  1663. package/dist/planmagnet/pages/ProductsProductFeatureDetailPagePage.js.map +0 -1
  1664. package/dist/planmagnet/pages/ProductsProductHierarchyPagePage.d.ts.map +0 -1
  1665. package/dist/planmagnet/pages/ProductsProductHierarchyPagePage.js.map +0 -1
  1666. package/dist/planmagnet/pages/ProductsProductLinesPagePage.d.ts.map +0 -1
  1667. package/dist/planmagnet/pages/ProductsProductLinesPagePage.js.map +0 -1
  1668. package/dist/planmagnet/pages/ProductsProductsPagePage.d.ts.map +0 -1
  1669. package/dist/planmagnet/pages/ProductsProductsPagePage.js.map +0 -1
  1670. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.d.ts.map +0 -1
  1671. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js.map +0 -1
  1672. package/dist/planmagnet/pages/ProductsReleasesPagePage.d.ts.map +0 -1
  1673. package/dist/planmagnet/pages/ProductsReleasesPagePage.js.map +0 -1
  1674. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.d.ts.map +0 -1
  1675. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js.map +0 -1
  1676. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.d.ts.map +0 -1
  1677. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js.map +0 -1
  1678. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.d.ts.map +0 -1
  1679. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js.map +0 -1
  1680. package/dist/planmagnet/pages/ProgramsCreateProgramPagePage.d.ts.map +0 -1
  1681. package/dist/planmagnet/pages/ProgramsCreateProgramPagePage.js.map +0 -1
  1682. package/dist/planmagnet/pages/ProgramsEditProgramPagePage.d.ts.map +0 -1
  1683. package/dist/planmagnet/pages/ProgramsEditProgramPagePage.js.map +0 -1
  1684. package/dist/planmagnet/pages/ProgramsProgramDetailPagePage.d.ts.map +0 -1
  1685. package/dist/planmagnet/pages/ProgramsProgramDetailPagePage.js.map +0 -1
  1686. package/dist/planmagnet/pages/ProgramsProgramsPagePage.d.ts.map +0 -1
  1687. package/dist/planmagnet/pages/ProgramsProgramsPagePage.js.map +0 -1
  1688. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.d.ts.map +0 -1
  1689. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.js.map +0 -1
  1690. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.d.ts.map +0 -1
  1691. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.js.map +0 -1
  1692. package/dist/planmagnet/pages/ProjectsBudgetDetailPagePage.d.ts.map +0 -1
  1693. package/dist/planmagnet/pages/ProjectsBudgetDetailPagePage.js.map +0 -1
  1694. package/dist/planmagnet/pages/ProjectsBudgetsPagePage.d.ts.map +0 -1
  1695. package/dist/planmagnet/pages/ProjectsBudgetsPagePage.js.map +0 -1
  1696. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.d.ts.map +0 -1
  1697. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js.map +0 -1
  1698. package/dist/planmagnet/pages/ProjectsCriticalPathPagePage.d.ts.map +0 -1
  1699. package/dist/planmagnet/pages/ProjectsCriticalPathPagePage.js.map +0 -1
  1700. package/dist/planmagnet/pages/ProjectsCustomFieldsPagePage.d.ts.map +0 -1
  1701. package/dist/planmagnet/pages/ProjectsCustomFieldsPagePage.js.map +0 -1
  1702. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.d.ts.map +0 -1
  1703. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js.map +0 -1
  1704. package/dist/planmagnet/pages/ProjectsGanttPagePage.d.ts.map +0 -1
  1705. package/dist/planmagnet/pages/ProjectsGanttPagePage.js.map +0 -1
  1706. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.d.ts.map +0 -1
  1707. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.js.map +0 -1
  1708. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.d.ts.map +0 -1
  1709. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js.map +0 -1
  1710. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +0 -1
  1711. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +0 -1
  1712. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.d.ts.map +0 -1
  1713. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js.map +0 -1
  1714. package/dist/planmagnet/pages/ProjectsPlanningPagePage.d.ts.map +0 -1
  1715. package/dist/planmagnet/pages/ProjectsPlanningPagePage.js.map +0 -1
  1716. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +0 -1
  1717. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +0 -1
  1718. package/dist/planmagnet/pages/ProjectsProjectsPagePage.d.ts.map +0 -1
  1719. package/dist/planmagnet/pages/ProjectsProjectsPagePage.js.map +0 -1
  1720. package/dist/planmagnet/pages/ProjectsQualityGatesPagePage.d.ts.map +0 -1
  1721. package/dist/planmagnet/pages/ProjectsQualityGatesPagePage.js.map +0 -1
  1722. package/dist/planmagnet/pages/ProjectsWorkflowPagePage.d.ts.map +0 -1
  1723. package/dist/planmagnet/pages/ProjectsWorkflowPagePage.js.map +0 -1
  1724. package/dist/planmagnet/pages/ReportsCreateReportPagePage.d.ts.map +0 -1
  1725. package/dist/planmagnet/pages/ReportsCreateReportPagePage.js.map +0 -1
  1726. package/dist/planmagnet/pages/ReportsEditReportPagePage.d.ts.map +0 -1
  1727. package/dist/planmagnet/pages/ReportsEditReportPagePage.js.map +0 -1
  1728. package/dist/planmagnet/pages/ReportsReportPagePage.d.ts.map +0 -1
  1729. package/dist/planmagnet/pages/ReportsReportPagePage.js.map +0 -1
  1730. package/dist/planmagnet/pages/ReportsReportsPagePage.d.ts.map +0 -1
  1731. package/dist/planmagnet/pages/ReportsReportsPagePage.js.map +0 -1
  1732. package/dist/planmagnet/pages/RisksRiskDetailPagePage.d.ts.map +0 -1
  1733. package/dist/planmagnet/pages/RisksRiskDetailPagePage.js.map +0 -1
  1734. package/dist/planmagnet/pages/RisksRiskRegisterPagePage.d.ts.map +0 -1
  1735. package/dist/planmagnet/pages/RisksRiskRegisterPagePage.js.map +0 -1
  1736. package/dist/planmagnet/pages/SprintsStartSprintPagePage.d.ts.map +0 -1
  1737. package/dist/planmagnet/pages/SprintsStartSprintPagePage.js.map +0 -1
  1738. package/dist/planmagnet/pages/TasksCreateTaskPagePage.d.ts.map +0 -1
  1739. package/dist/planmagnet/pages/TasksCreateTaskPagePage.js.map +0 -1
  1740. package/dist/planmagnet/pages/TasksEditTaskPagePage.d.ts.map +0 -1
  1741. package/dist/planmagnet/pages/TasksEditTaskPagePage.js.map +0 -1
  1742. package/dist/planmagnet/pages/TasksImportPagePage.d.ts.map +0 -1
  1743. package/dist/planmagnet/pages/TasksImportPagePage.js.map +0 -1
  1744. package/dist/planmagnet/pages/TasksMyDashboardPagePage.d.ts.map +0 -1
  1745. package/dist/planmagnet/pages/TasksMyDashboardPagePage.js.map +0 -1
  1746. package/dist/planmagnet/pages/TasksMyWorkPagePage.d.ts.map +0 -1
  1747. package/dist/planmagnet/pages/TasksMyWorkPagePage.js.map +0 -1
  1748. package/dist/planmagnet/pages/TasksTaskDetailPagePage.d.ts.map +0 -1
  1749. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js.map +0 -1
  1750. package/dist/planmagnet/pages/TasksTasksPagePage.d.ts.map +0 -1
  1751. package/dist/planmagnet/pages/TasksTasksPagePage.js.map +0 -1
  1752. package/dist/planmagnet/pages/TasksTimeEntriesPagePage.d.ts.map +0 -1
  1753. package/dist/planmagnet/pages/TasksTimeEntriesPagePage.js.map +0 -1
  1754. package/dist/planmagnet/pages/TasksTimesheetDetailPagePage.d.ts.map +0 -1
  1755. package/dist/planmagnet/pages/TasksTimesheetDetailPagePage.js.map +0 -1
  1756. package/dist/planmagnet/pages/TasksTimesheetsPagePage.d.ts.map +0 -1
  1757. package/dist/planmagnet/pages/TasksTimesheetsPagePage.js.map +0 -1
  1758. package/dist/planmagnet/pages/TeamCreateTeamPagePage.d.ts.map +0 -1
  1759. package/dist/planmagnet/pages/TeamCreateTeamPagePage.js.map +0 -1
  1760. package/dist/planmagnet/pages/TeamInviteMemberPagePage.d.ts.map +0 -1
  1761. package/dist/planmagnet/pages/TeamInviteMemberPagePage.js.map +0 -1
  1762. package/dist/planmagnet/pages/TeamTeamDetailPagePage.d.ts.map +0 -1
  1763. package/dist/planmagnet/pages/TeamTeamDetailPagePage.js.map +0 -1
  1764. package/dist/planmagnet/pages/TeamTeamEditPagePage.d.ts.map +0 -1
  1765. package/dist/planmagnet/pages/TeamTeamEditPagePage.js.map +0 -1
  1766. package/dist/planmagnet/pages/TeamTeamPagePage.d.ts.map +0 -1
  1767. package/dist/planmagnet/pages/TeamTeamPagePage.js.map +0 -1
  1768. package/dist/planmagnet/pages/TeamTeamsListPagePage.d.ts.map +0 -1
  1769. package/dist/planmagnet/pages/TeamTeamsListPagePage.js.map +0 -1
  1770. package/dist/planmagnet/pages/TemplatesEditTemplatePagePage.d.ts.map +0 -1
  1771. package/dist/planmagnet/pages/TemplatesEditTemplatePagePage.js.map +0 -1
  1772. package/dist/planmagnet/pages/TemplatesTemplatesPagePage.d.ts.map +0 -1
  1773. package/dist/planmagnet/pages/TemplatesTemplatesPagePage.js.map +0 -1
  1774. package/dist/planmagnet/pages/WorkspaceCreateWorkspacePagePage.d.ts.map +0 -1
  1775. package/dist/planmagnet/pages/WorkspaceCreateWorkspacePagePage.js.map +0 -1
  1776. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.d.ts.map +0 -1
  1777. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.js.map +0 -1
  1778. package/dist/planmagnet/pages/analytics/DeliveryKpisCard.d.ts.map +0 -1
  1779. package/dist/planmagnet/pages/analytics/DeliveryKpisCard.js.map +0 -1
  1780. package/dist/planmagnet/pages/analytics/MetricsCard.d.ts.map +0 -1
  1781. package/dist/planmagnet/pages/analytics/MetricsCard.js.map +0 -1
  1782. package/dist/planmagnet/pages/analytics/QualityMetricsCard.d.ts.map +0 -1
  1783. package/dist/planmagnet/pages/analytics/QualityMetricsCard.js.map +0 -1
  1784. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.d.ts.map +0 -1
  1785. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.js.map +0 -1
  1786. package/dist/planmagnet/pages/analytics/StatusFlowCard.d.ts.map +0 -1
  1787. package/dist/planmagnet/pages/analytics/StatusFlowCard.js.map +0 -1
  1788. package/dist/planmagnet/pages/analytics/ThroughputCard.d.ts.map +0 -1
  1789. package/dist/planmagnet/pages/analytics/ThroughputCard.js.map +0 -1
  1790. package/dist/planmagnet/pages/analytics/WorkBreakdownCard.d.ts.map +0 -1
  1791. package/dist/planmagnet/pages/analytics/WorkBreakdownCard.js.map +0 -1
  1792. package/dist/planmagnet/pages/analytics/analyticsRange.d.ts.map +0 -1
  1793. package/dist/planmagnet/pages/analytics/analyticsRange.js.map +0 -1
  1794. package/dist/planmagnet/people/People.d.ts.map +0 -1
  1795. package/dist/planmagnet/people/People.js.map +0 -1
  1796. package/dist/planmagnet/presence/PresenceAvatars.d.ts.map +0 -1
  1797. package/dist/planmagnet/presence/PresenceAvatars.js.map +0 -1
  1798. package/dist/planmagnet/product/FeatureLinkPanels.d.ts.map +0 -1
  1799. package/dist/planmagnet/product/FeatureLinkPanels.js.map +0 -1
  1800. package/dist/planmagnet/product/ProductControls.d.ts.map +0 -1
  1801. package/dist/planmagnet/product/ProductControls.js.map +0 -1
  1802. package/dist/planmagnet/product/ProductFeatureControls.d.ts.map +0 -1
  1803. package/dist/planmagnet/product/ProductFeatureControls.js.map +0 -1
  1804. package/dist/planmagnet/product/ProductFeatureLinkCard.d.ts.map +0 -1
  1805. package/dist/planmagnet/product/ProductFeatureLinkCard.js.map +0 -1
  1806. package/dist/planmagnet/product/ProductLineControls.d.ts.map +0 -1
  1807. package/dist/planmagnet/product/ProductLineControls.js.map +0 -1
  1808. package/dist/planmagnet/product/ProductTeamsPanel.d.ts.map +0 -1
  1809. package/dist/planmagnet/product/ProductTeamsPanel.js.map +0 -1
  1810. package/dist/planmagnet/product/WorkItemProductFeatureChip.d.ts.map +0 -1
  1811. package/dist/planmagnet/product/WorkItemProductFeatureChip.js.map +0 -1
  1812. package/dist/planmagnet/product/hierarchy.d.ts.map +0 -1
  1813. package/dist/planmagnet/product/hierarchy.js.map +0 -1
  1814. package/dist/planmagnet/product/hierarchyOperations.d.ts.map +0 -1
  1815. package/dist/planmagnet/product/hierarchyOperations.js.map +0 -1
  1816. package/dist/planmagnet/product/refusal.d.ts.map +0 -1
  1817. package/dist/planmagnet/product/refusal.js.map +0 -1
  1818. package/dist/planmagnet/product/routes.d.ts.map +0 -1
  1819. package/dist/planmagnet/product/routes.js.map +0 -1
  1820. package/dist/planmagnet/providers/PlanMagnetProvider.d.ts.map +0 -1
  1821. package/dist/planmagnet/providers/PlanMagnetProvider.js.map +0 -1
  1822. package/dist/planmagnet/releases/ReleaseChecklistCard.d.ts.map +0 -1
  1823. package/dist/planmagnet/releases/ReleaseChecklistCard.js.map +0 -1
  1824. package/dist/planmagnet/releases/ReleaseGatesCard.d.ts.map +0 -1
  1825. package/dist/planmagnet/releases/ReleaseGatesCard.js.map +0 -1
  1826. package/dist/planmagnet/releases/ReleaseNotesCard.d.ts.map +0 -1
  1827. package/dist/planmagnet/releases/ReleaseNotesCard.js.map +0 -1
  1828. package/dist/planmagnet/releases/ReleaseReadinessCard.d.ts.map +0 -1
  1829. package/dist/planmagnet/releases/ReleaseReadinessCard.js.map +0 -1
  1830. package/dist/planmagnet/releases/ReleaseWorkItemsCard.d.ts.map +0 -1
  1831. package/dist/planmagnet/releases/ReleaseWorkItemsCard.js.map +0 -1
  1832. package/dist/planmagnet/releases/useReleaseOptions.d.ts.map +0 -1
  1833. package/dist/planmagnet/releases/useReleaseOptions.js.map +0 -1
  1834. package/dist/planmagnet/reports/ExportMenu.d.ts.map +0 -1
  1835. package/dist/planmagnet/reports/ExportMenu.js.map +0 -1
  1836. package/dist/planmagnet/reports/PrintReportView.d.ts.map +0 -1
  1837. package/dist/planmagnet/reports/PrintReportView.js.map +0 -1
  1838. package/dist/planmagnet/reports/ReportBuilderCanvas.d.ts.map +0 -1
  1839. package/dist/planmagnet/reports/ReportBuilderCanvas.js.map +0 -1
  1840. package/dist/planmagnet/reports/ReportBuilderPage.d.ts.map +0 -1
  1841. package/dist/planmagnet/reports/ReportBuilderPage.js.map +0 -1
  1842. package/dist/planmagnet/reports/ReportRunHistory.d.ts.map +0 -1
  1843. package/dist/planmagnet/reports/ReportRunHistory.js.map +0 -1
  1844. package/dist/planmagnet/reports/ReportWidgetRenderer.d.ts.map +0 -1
  1845. package/dist/planmagnet/reports/ReportWidgetRenderer.js.map +0 -1
  1846. package/dist/planmagnet/reports/SchedulesPanel.d.ts.map +0 -1
  1847. package/dist/planmagnet/reports/SchedulesPanel.js.map +0 -1
  1848. package/dist/planmagnet/reports/ShareDialog.d.ts.map +0 -1
  1849. package/dist/planmagnet/reports/ShareDialog.js.map +0 -1
  1850. package/dist/planmagnet/reports/SharedReportPage.d.ts.map +0 -1
  1851. package/dist/planmagnet/reports/SharedReportPage.js.map +0 -1
  1852. package/dist/planmagnet/reports/WidgetEditorDialog.d.ts.map +0 -1
  1853. package/dist/planmagnet/reports/WidgetEditorDialog.js.map +0 -1
  1854. package/dist/planmagnet/reports/reportExportPptx.d.ts.map +0 -1
  1855. package/dist/planmagnet/reports/reportExportPptx.js.map +0 -1
  1856. package/dist/planmagnet/reports/reportExportXlsx.d.ts.map +0 -1
  1857. package/dist/planmagnet/reports/reportExportXlsx.js.map +0 -1
  1858. package/dist/planmagnet/reports/reportGraphql.d.ts.map +0 -1
  1859. package/dist/planmagnet/reports/reportGraphql.js.map +0 -1
  1860. package/dist/planmagnet/reports/reportModel.d.ts.map +0 -1
  1861. package/dist/planmagnet/reports/reportModel.js.map +0 -1
  1862. package/dist/planmagnet/reports/sharedReportRoute.d.ts.map +0 -1
  1863. package/dist/planmagnet/reports/sharedReportRoute.js.map +0 -1
  1864. package/dist/planmagnet/roadmaps/FeatureInitiativeCard.d.ts.map +0 -1
  1865. package/dist/planmagnet/roadmaps/FeatureInitiativeCard.js.map +0 -1
  1866. package/dist/planmagnet/roadmaps/RoadmapControls.d.ts.map +0 -1
  1867. package/dist/planmagnet/roadmaps/RoadmapControls.js.map +0 -1
  1868. package/dist/planmagnet/roadmaps/RoadmapNowNextLater.d.ts.map +0 -1
  1869. package/dist/planmagnet/roadmaps/RoadmapNowNextLater.js.map +0 -1
  1870. package/dist/planmagnet/roadmaps/RoadmapPresentation.d.ts.map +0 -1
  1871. package/dist/planmagnet/roadmaps/RoadmapPresentation.js.map +0 -1
  1872. package/dist/planmagnet/roadmaps/RoadmapReviewPanel.d.ts.map +0 -1
  1873. package/dist/planmagnet/roadmaps/RoadmapReviewPanel.js.map +0 -1
  1874. package/dist/planmagnet/roadmaps/RoadmapVersionsPanel.d.ts.map +0 -1
  1875. package/dist/planmagnet/roadmaps/RoadmapVersionsPanel.js.map +0 -1
  1876. package/dist/planmagnet/roadmaps/planningFocus.d.ts.map +0 -1
  1877. package/dist/planmagnet/roadmaps/planningFocus.js.map +0 -1
  1878. package/dist/planmagnet/satisfaction/DeliverySatisfactionSection.d.ts.map +0 -1
  1879. package/dist/planmagnet/satisfaction/DeliverySatisfactionSection.js.map +0 -1
  1880. package/dist/planmagnet/satisfaction/SatisfactionFigures.d.ts.map +0 -1
  1881. package/dist/planmagnet/satisfaction/SatisfactionFigures.js.map +0 -1
  1882. package/dist/planmagnet/satisfaction/SatisfactionImportDialog.d.ts.map +0 -1
  1883. package/dist/planmagnet/satisfaction/SatisfactionImportDialog.js.map +0 -1
  1884. package/dist/planmagnet/satisfaction/SatisfactionLinkFields.d.ts.map +0 -1
  1885. package/dist/planmagnet/satisfaction/SatisfactionLinkFields.js.map +0 -1
  1886. package/dist/planmagnet/satisfaction/SatisfactionReleaseSelect.d.ts.map +0 -1
  1887. package/dist/planmagnet/satisfaction/SatisfactionReleaseSelect.js.map +0 -1
  1888. package/dist/planmagnet/satisfaction/SatisfactionResponseDialog.d.ts.map +0 -1
  1889. package/dist/planmagnet/satisfaction/SatisfactionResponseDialog.js.map +0 -1
  1890. package/dist/planmagnet/satisfaction/SatisfactionResponsesTable.d.ts.map +0 -1
  1891. package/dist/planmagnet/satisfaction/SatisfactionResponsesTable.js.map +0 -1
  1892. package/dist/planmagnet/satisfaction/SatisfactionSummaryCard.d.ts.map +0 -1
  1893. package/dist/planmagnet/satisfaction/SatisfactionSummaryCard.js.map +0 -1
  1894. package/dist/planmagnet/satisfaction/SatisfactionWindowPicker.d.ts.map +0 -1
  1895. package/dist/planmagnet/satisfaction/SatisfactionWindowPicker.js.map +0 -1
  1896. package/dist/planmagnet/satisfaction/satisfaction.d.ts.map +0 -1
  1897. package/dist/planmagnet/satisfaction/satisfaction.js.map +0 -1
  1898. package/dist/planmagnet/satisfaction/satisfactionCsv.d.ts.map +0 -1
  1899. package/dist/planmagnet/satisfaction/satisfactionCsv.js.map +0 -1
  1900. package/dist/planmagnet/satisfaction/satisfactionForm.d.ts.map +0 -1
  1901. package/dist/planmagnet/satisfaction/satisfactionForm.js.map +0 -1
  1902. package/dist/planmagnet/satisfaction/satisfactionOperations.d.ts.map +0 -1
  1903. package/dist/planmagnet/satisfaction/satisfactionOperations.js.map +0 -1
  1904. package/dist/planmagnet/satisfaction/useSatisfactionAccess.d.ts.map +0 -1
  1905. package/dist/planmagnet/satisfaction/useSatisfactionAccess.js.map +0 -1
  1906. package/dist/planmagnet/skills/RequiredSkillsEditor.d.ts.map +0 -1
  1907. package/dist/planmagnet/skills/RequiredSkillsEditor.js.map +0 -1
  1908. package/dist/planmagnet/skills/SkillChips.d.ts.map +0 -1
  1909. package/dist/planmagnet/skills/SkillChips.js.map +0 -1
  1910. package/dist/planmagnet/skills/SkillCoverageCard.d.ts.map +0 -1
  1911. package/dist/planmagnet/skills/SkillCoverageCard.js.map +0 -1
  1912. package/dist/planmagnet/skills/WorkItemRequiredSkills.d.ts.map +0 -1
  1913. package/dist/planmagnet/skills/WorkItemRequiredSkills.js.map +0 -1
  1914. package/dist/planmagnet/skills/skillOperations.d.ts.map +0 -1
  1915. package/dist/planmagnet/skills/skillOperations.js.map +0 -1
  1916. package/dist/planmagnet/skills/skillTags.d.ts.map +0 -1
  1917. package/dist/planmagnet/skills/skillTags.js.map +0 -1
  1918. package/dist/planmagnet/skills/useRequiredSkillsDraft.d.ts.map +0 -1
  1919. package/dist/planmagnet/skills/useRequiredSkillsDraft.js.map +0 -1
  1920. package/dist/planmagnet/sprints/SprintControls.d.ts.map +0 -1
  1921. package/dist/planmagnet/sprints/SprintControls.js.map +0 -1
  1922. package/dist/planmagnet/sprints/SprintDates.d.ts.map +0 -1
  1923. package/dist/planmagnet/sprints/SprintDates.js.map +0 -1
  1924. package/dist/planmagnet/store/planmagnetStore.d.ts.map +0 -1
  1925. package/dist/planmagnet/store/planmagnetStore.js.map +0 -1
  1926. package/dist/planmagnet/team/PendingInvitations.d.ts.map +0 -1
  1927. package/dist/planmagnet/team/PendingInvitations.js.map +0 -1
  1928. package/dist/planmagnet/team/TeamControls.d.ts.map +0 -1
  1929. package/dist/planmagnet/team/TeamControls.js.map +0 -1
  1930. package/dist/planmagnet/team/UnmatchedCrewIdentities.d.ts.map +0 -1
  1931. package/dist/planmagnet/team/UnmatchedCrewIdentities.js.map +0 -1
  1932. package/dist/planmagnet/team/invitationEmail.d.ts.map +0 -1
  1933. package/dist/planmagnet/team/invitationEmail.js.map +0 -1
  1934. package/dist/planmagnet/time/TaskTimePanel.d.ts.map +0 -1
  1935. package/dist/planmagnet/time/TaskTimePanel.js.map +0 -1
  1936. package/dist/planmagnet/time/TimeEntryControls.d.ts.map +0 -1
  1937. package/dist/planmagnet/time/TimeEntryControls.js.map +0 -1
  1938. package/dist/planmagnet/time/TimesheetControls.d.ts.map +0 -1
  1939. package/dist/planmagnet/time/TimesheetControls.js.map +0 -1
  1940. package/dist/planmagnet/time/timeShared.d.ts.map +0 -1
  1941. package/dist/planmagnet/time/timeShared.js.map +0 -1
  1942. package/dist/planmagnet/types/index.d.ts.map +0 -1
  1943. package/dist/planmagnet/utils/cn.d.ts.map +0 -1
  1944. package/dist/planmagnet/utils/cn.js.map +0 -1
  1945. package/dist/planmagnet/utils/email.d.ts.map +0 -1
  1946. package/dist/planmagnet/utils/email.js.map +0 -1
  1947. package/dist/planmagnet/utils/formValidation.d.ts.map +0 -1
  1948. package/dist/planmagnet/utils/formValidation.js.map +0 -1
  1949. package/dist/planmagnet/utils/graphqlErrors.d.ts.map +0 -1
  1950. package/dist/planmagnet/utils/graphqlErrors.js.map +0 -1
  1951. package/dist/planmagnet/utils/lineDiff.d.ts.map +0 -1
  1952. package/dist/planmagnet/utils/lineDiff.js.map +0 -1
  1953. package/dist/planmagnet/utils/mutationResult.d.ts.map +0 -1
  1954. package/dist/planmagnet/utils/mutationResult.js.map +0 -1
  1955. package/dist/planmagnet/utils/navigation.d.ts.map +0 -1
  1956. package/dist/planmagnet/utils/navigation.js.map +0 -1
  1957. package/dist/planmagnet/utils/qualityGateCriteria.d.ts.map +0 -1
  1958. package/dist/planmagnet/utils/qualityGateCriteria.js.map +0 -1
  1959. package/dist/planmagnet/utils/rowNavigation.d.ts.map +0 -1
  1960. package/dist/planmagnet/utils/rowNavigation.js.map +0 -1
  1961. package/dist/planmagnet/utils/statusColor.d.ts.map +0 -1
  1962. package/dist/planmagnet/utils/statusColor.js.map +0 -1
  1963. package/dist/planmagnet/utils/urlParam.d.ts.map +0 -1
  1964. package/dist/planmagnet/utils/urlParam.js.map +0 -1
  1965. package/dist/planmagnet/webhooks/webhookTypes.d.ts.map +0 -1
  1966. package/dist/planmagnet/webhooks/webhookTypes.js.map +0 -1
  1967. package/dist/shared/hooks/useTr.d.ts.map +0 -1
  1968. package/dist/shared/hooks/useTr.js.map +0 -1
  1969. package/dist/shared/utils/i18n.d.ts.map +0 -1
  1970. package/dist/shared/utils/i18n.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlanMagnetProvider.js","names":[],"sources":["../../../src/planmagnet/providers/PlanMagnetProvider.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from 'react';\nimport { createContext, useContext, useMemo, useCallback } from 'react';\nimport { MemoryRouter, useNavigate as useRouterNavigate } from 'react-router';\nimport { ApolloClient, InMemoryCache, HttpLink, from } from '@apollo/client';\nimport { onError } from '@apollo/client/link/error';\nimport { CombinedGraphQLErrors } from '@apollo/client/errors';\nimport { setContext } from '@apollo/client/link/context';\nimport { ApolloProvider } from '@apollo/client/react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport type { PlanMagnetRootProps } from '../types';\n\n// Create a shared QueryClient for React Query (retained for any REST/non-GraphQL needs)\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 5 * 60 * 1000, // 5 minutes\n retry: 1,\n refetchOnWindowFocus: false,\n },\n },\n});\n\n/**\n * Context value for PlanMagnet microfrontend\n */\ntype PlanMagnetContextValue = PlanMagnetRootProps;\n\nconst PlanMagnetContext = createContext<PlanMagnetContextValue | null>(null);\n\n/**\n * Hook to access PlanMagnet context\n */\nexport const usePlanMagnet = () => {\n const context = useContext(PlanMagnetContext);\n if (!context) {\n throw new Error('usePlanMagnet must be used within PlanMagnetProvider');\n }\n return context;\n};\n\n/**\n * Hook for navigation within the PlanMagnet microfrontend.\n * Uses the shell's navigate function if available, falling back to\n * React Router's useNavigate. Automatically prepends basePath.\n *\n * Usage:\n * const navigate = usePlanMagnetNavigate();\n * navigate('/products/123'); // navigates to /planmagnet/products/123\n */\nexport const usePlanMagnetNavigate = () => {\n const { navigate: shellNavigate, basePath } = usePlanMagnet();\n const routerNavigate = useRouterNavigate();\n\n return useCallback(\n (path: string) => {\n const fullPath = basePath && basePath !== '/' ? `${basePath}${path}` : path;\n if (shellNavigate) {\n shellNavigate(fullPath);\n } else {\n routerNavigate(fullPath);\n }\n },\n [shellNavigate, basePath, routerNavigate]\n );\n};\n\n/**\n * Provider component for PlanMagnet microfrontend.\n * Sets up routing, Apollo Client with auth error detection, and context.\n *\n * The Apollo Client is configured with:\n * - An onError link that detects UNAUTHENTICATED / FORBIDDEN responses and\n * invokes the `onAuthError` prop so the host shell can trigger logout.\n * - A dynamic auth link that reads the token per-request (not baked in at\n * client creation time), so token refreshes take effect immediately.\n * - InMemoryCache with type policies for proper cache normalization.\n * - Default fetch policy: cache-and-network.\n */\nexport const PlanMagnetProvider: FC<PropsWithChildren<PlanMagnetRootProps>> = ({\n children,\n basePath,\n navigate,\n currentUser,\n workspaceId,\n tenantId,\n apiGatewayUrl,\n authToken,\n workspaceToken,\n registerNavItems,\n registerFooterItems,\n onAuthError,\n}) => {\n // Build Apollo Client with error link + dynamic auth link\n const apolloClient = useMemo(() => {\n // Error link (Apollo v4 pattern): detect authentication failures\n const errorLink = onError(({ error }) => {\n if (CombinedGraphQLErrors.is(error)) {\n for (const graphQLError of error.errors) {\n const code = graphQLError.extensions?.code;\n if (code === 'UNAUTHENTICATED' || code === 'FORBIDDEN') {\n console.warn('[PlanMagnet] Auth error detected — notifying host shell');\n onAuthError?.();\n return; // Only fire once per batch\n }\n }\n } else if (error) {\n // Network-level errors (e.g., gateway returning 401/403 as non-JSON)\n const msg = error.message ?? '';\n if (msg.includes('401') || msg.includes('403') || msg.includes('Unauthorized')) {\n console.warn('[PlanMagnet] Auth network error — notifying host shell');\n onAuthError?.();\n }\n }\n });\n\n // Auth link: dynamically attach dual-token auth and workspace context per-request.\n // The workspace gateway requires:\n // Authorization: Bearer <authToken> (platform identity)\n // X-Workspace-Authorization: Bearer <workspaceToken> (workspace access)\n const authLink = setContext((_, { headers }) => ({\n headers: {\n ...headers,\n ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),\n ...(workspaceToken ? { 'X-Workspace-Authorization': `Bearer ${workspaceToken}` } : {}),\n ...(workspaceId ? { 'x-workspace-id': workspaceId } : {}),\n },\n }));\n\n const httpLink = new HttpLink({\n uri: apiGatewayUrl ? `${apiGatewayUrl}/workspaces/graphql` : '/workspaces/graphql',\n });\n\n return new ApolloClient({\n link: from([errorLink, authLink, httpLink]),\n cache: new InMemoryCache({\n typePolicies: {\n Query: {\n fields: {\n // Merge paginated results for common list queries\n roadmaps: { merge: false },\n featureRequests: { merge: false },\n releases: { merge: false },\n competitors: { merge: false },\n roadmapItems: { merge: false },\n projects: { merge: false },\n workItems: { merge: false },\n sprints: { merge: false },\n milestones: { merge: false },\n },\n },\n Roadmap: { keyFields: ['id'] },\n RoadmapItem: { keyFields: ['id'] },\n Release: { keyFields: ['id'] },\n FeatureRequest: { keyFields: ['id'] },\n FeatureVote: { keyFields: ['id'] },\n Competitor: { keyFields: ['id'] },\n Project: { keyFields: ['id'] },\n WorkItem: { keyFields: ['id'] },\n Sprint: { keyFields: ['id'] },\n Milestone: { keyFields: ['id'] },\n Team: { keyFields: ['id'] },\n TeamMember: { keyFields: ['id'] },\n },\n }),\n defaultOptions: {\n watchQuery: { fetchPolicy: 'cache-and-network', errorPolicy: 'all' },\n query: { errorPolicy: 'all' },\n mutate: { errorPolicy: 'all' },\n },\n });\n }, [apiGatewayUrl, authToken, workspaceToken, workspaceId, onAuthError]);\n\n const contextValue: PlanMagnetContextValue = {\n basePath,\n navigate,\n currentUser,\n workspaceId,\n tenantId,\n apiGatewayUrl,\n authToken,\n workspaceToken,\n registerNavItems,\n registerFooterItems,\n onAuthError,\n };\n\n const isIntegrated = !!basePath;\n\n // Core providers that wrap the children\n const content = (\n <QueryClientProvider client={queryClient}>\n <PlanMagnetContext.Provider value={contextValue}>{children}</PlanMagnetContext.Provider>\n </QueryClientProvider>\n );\n\n // When integrated into a shell (basePath provided), the shell already has a router and ApolloProvider\n // so we don't create another one. When standalone (no basePath), use MemoryRouter and ApolloProvider.\n return isIntegrated ? (\n content\n ) : (\n <ApolloProvider client={apolloClient}>\n <MemoryRouter>{content}</MemoryRouter>\n </ApolloProvider>\n );\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReleaseChecklistCard.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/releases/ReleaseChecklistCard.tsx"],"names":[],"mappings":"AA4FA,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,SAAS,GACV,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,2CAgOA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReleaseChecklistCard.js","names":[],"sources":["../../../src/planmagnet/releases/ReleaseChecklistCard.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Input,\n} from '@burdenoff/fe-libs/ui';\nimport { Copy, Plus, X } from 'lucide-react';\nimport { ErrorLine } from '../controls/ConfirmButton';\nimport { PersonName } from '../people/People';\nimport { usePlanMagnet } from '../providers/PlanMagnetProvider';\nimport { throwOnError } from '../utils/mutationResult';\n\n/**\n * The release's readiness checklist (PRM-19): the criteria the team defines — docs updated, security sign-off — and\n * ticks off before shipping. A REQUIRED item still open blocks releasing (the server refuses RELEASED and names it,\n * as it does for an open quality gate); optional ones are shown but never block. \"Copy from\" brings another\n * release's criteria (never its ticks), so a team writes its list once.\n */\n\nconst CHECKLIST = gql`\n query ReleaseChecklist($id: ID!) {\n planmagnetRelease(id: $id) {\n id\n checklist {\n id\n label\n isRequired\n isDone\n doneBy\n doneAt\n note\n position\n }\n }\n }\n`;\nconst OTHER_RELEASES = gql`\n query ReleaseChecklistSources($workspaceId: ID!, $filter: PlanmagnetReleaseFilter) {\n planmagnetReleases(workspaceId: $workspaceId, filter: $filter, pagination: { first: 50 }) {\n items {\n id\n name\n version\n }\n }\n }\n`;\nconst ADD = gql`\n mutation ReleaseChecklistAdd($releaseId: ID!, $input: PlanmagnetAddReleaseChecklistItemInput!) {\n planmagnetAddReleaseChecklistItem(releaseId: $releaseId, input: $input) {\n id\n }\n }\n`;\nconst SET_DONE = gql`\n mutation ReleaseChecklistSetDone($id: ID!, $done: Boolean!) {\n planmagnetSetReleaseChecklistItemDone(id: $id, done: $done) {\n id\n isDone\n }\n }\n`;\nconst REMOVE = gql`\n mutation ReleaseChecklistRemove($id: ID!) {\n planmagnetRemoveReleaseChecklistItem(id: $id)\n }\n`;\nconst COPY = gql`\n mutation ReleaseChecklistCopy($releaseId: ID!, $fromReleaseId: ID!) {\n planmagnetCopyReleaseChecklist(releaseId: $releaseId, fromReleaseId: $fromReleaseId) {\n id\n }\n }\n`;\n\ninterface ChecklistItem {\n id: string;\n label: string;\n isRequired: boolean;\n isDone: boolean;\n doneBy: string | null;\n doneAt: string | null;\n note: string | null;\n position: number;\n}\n\nexport function ReleaseChecklistCard({\n releaseId,\n projectId,\n}: {\n releaseId: string;\n projectId: string | null;\n}) {\n const { workspaceId } = usePlanMagnet();\n const { data, loading, error } = useQuery<{\n planmagnetRelease: { id: string; checklist: ChecklistItem[] } | null;\n }>(CHECKLIST, { variables: { id: releaseId }, skip: !releaseId });\n const [copying, setCopying] = useState(false);\n const sources = useQuery<{\n planmagnetReleases: { items: { id: string; name: string; version: string }[] };\n }>(OTHER_RELEASES, {\n variables: { workspaceId, filter: projectId ? { projectId } : {} },\n skip: !copying || !workspaceId,\n });\n const refetch = {\n refetchQueries: ['ReleaseChecklist', 'ReleaseReadiness', 'GetRelease'],\n awaitRefetchQueries: true,\n };\n const [add, addState] = useMutation(ADD, refetch);\n const [setDone, setDoneState] = useMutation(SET_DONE, refetch);\n const [remove, removeState] = useMutation(REMOVE, refetch);\n const [copy, copyState] = useMutation(COPY, refetch);\n const [label, setLabel] = useState('');\n const [required, setRequired] = useState(true);\n const [fromReleaseId, setFromReleaseId] = useState('');\n const [problem, setProblem] = useState<string | null>(null);\n // The tick a click asked for, shown at once and held until the server's answer is back: a server-controlled box\n // that did not move on click invited a second click, which sent the opposite value.\n const [pendingTick, setPendingTick] = useState<{ id: string; done: boolean } | null>(null);\n const busy = addState.loading || setDoneState.loading || removeState.loading || copyState.loading;\n\n const items = data?.planmagnetRelease?.checklist ?? [];\n const done = items.filter((i) => i.isDone).length;\n const openRequired = items.filter((i) => i.isRequired && !i.isDone).length;\n const others = (sources.data?.planmagnetReleases.items ?? []).filter((r) => r.id !== releaseId);\n\n const run = async (\n action: () => Promise<{ error?: unknown }>,\n fallback: string\n ): Promise<boolean> => {\n setProblem(null);\n try {\n await throwOnError(action());\n return true;\n } catch (e) {\n setProblem(e instanceof Error ? e.message : fallback);\n return false;\n }\n };\n\n const addItem = async () => {\n const ok = await run(\n () => add({ variables: { releaseId, input: { label: label.trim(), isRequired: required } } }),\n 'The item could not be added.'\n );\n if (ok) {\n setLabel('');\n setRequired(true);\n }\n };\n\n const copyFrom = async () => {\n const ok = await run(\n () => copy({ variables: { releaseId, fromReleaseId } }),\n 'The checklist could not be copied.'\n );\n if (ok) {\n setCopying(false);\n setFromReleaseId('');\n }\n };\n\n return (\n <Card data-testid=\"release-checklist\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0\">\n <CardTitle>Readiness checklist</CardTitle>\n {items.length > 0 && (\n <span className=\"text-xs text-muted-foreground\" data-testid=\"release-checklist-summary\">\n {done} of {items.length} done\n {openRequired > 0 ? ` · ${openRequired} required still open` : ''}\n </span>\n )}\n </CardHeader>\n <CardContent className=\"space-y-2\">\n <p className=\"text-xs text-muted-foreground\">\n What must be true before this release ships. A required item still open blocks releasing.\n </p>\n {problem && <ErrorLine message={problem} />}\n {loading && !data && <p className=\"text-sm text-muted-foreground\">Loading…</p>}\n {error && (\n <p role=\"alert\" className=\"text-sm text-destructive\">\n The checklist could not be loaded: {error.message}\n </p>\n )}\n {data && items.length === 0 && (\n <p className=\"text-sm text-muted-foreground\">\n No criteria yet — add them, or copy another release&apos;s checklist.\n </p>\n )}\n <ul className=\"space-y-1\">\n {items.map((item) => (\n <li\n key={item.id}\n className=\"flex items-start justify-between gap-2 rounded-md border p-2\"\n data-testid=\"release-checklist-item\"\n >\n <label className=\"flex min-w-0 items-start gap-2 text-sm cursor-pointer\">\n <input\n type=\"checkbox\"\n className=\"mt-0.5\"\n checked={pendingTick?.id === item.id ? pendingTick.done : item.isDone}\n disabled={busy || pendingTick !== null}\n aria-busy={pendingTick?.id === item.id}\n onChange={(e) => {\n const done = e.target.checked;\n setPendingTick({ id: item.id, done });\n void run(\n () => setDone({ variables: { id: item.id, done } }),\n 'The item could not be updated.'\n ).finally(() => setPendingTick(null));\n }}\n aria-label={`${item.label}${item.isDone ? ' (done)' : ''}`}\n />\n <span className=\"min-w-0\">\n <span className={item.isDone ? 'line-through text-muted-foreground' : ''}>\n {item.label}\n </span>\n {!item.isRequired && (\n <Badge variant=\"outline\" className=\"ml-2 text-xs\">\n optional\n </Badge>\n )}\n {item.isDone && item.doneBy && (\n <span className=\"block text-xs text-muted-foreground\">\n Ticked by <PersonName id={item.doneBy} />\n {item.doneAt ? ` on ${new Date(item.doneAt).toLocaleDateString()}` : ''}\n </span>\n )}\n {item.note && (\n <span className=\"block text-xs text-muted-foreground\">{item.note}</span>\n )}\n </span>\n </label>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n aria-label={`Remove \"${item.label}\" from the checklist`}\n disabled={busy}\n onClick={() =>\n void run(\n () => remove({ variables: { id: item.id } }),\n 'The item could not be removed.'\n )\n }\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </li>\n ))}\n </ul>\n <div className=\"flex flex-wrap items-center gap-2 border-t pt-3\">\n <Input\n aria-label=\"New checklist item\"\n placeholder=\"e.g. Docs updated\"\n value={label}\n maxLength={200}\n onChange={(e) => setLabel(e.target.value)}\n className=\"min-w-[12rem] flex-1\"\n data-testid=\"release-checklist-new\"\n />\n <label className=\"flex items-center gap-1 text-xs\">\n <input\n type=\"checkbox\"\n checked={required}\n onChange={(e) => setRequired(e.target.checked)}\n />\n Required\n </label>\n <Button\n size=\"sm\"\n disabled={!label.trim() || busy}\n onClick={() => void addItem()}\n data-testid=\"release-checklist-add\"\n >\n <Plus className=\"mr-1 h-4 w-4\" /> Add\n </Button>\n {!copying && (\n <Button size=\"sm\" variant=\"outline\" onClick={() => setCopying(true)}>\n <Copy className=\"mr-1 h-4 w-4\" /> Copy from another release\n </Button>\n )}\n </div>\n {copying && (\n <div className=\"flex flex-wrap items-center gap-2\">\n <select\n aria-label=\"Release to copy the checklist from\"\n className=\"min-w-[12rem] flex-1 rounded-md border border-input bg-background px-3 py-2 text-sm\"\n value={fromReleaseId}\n onChange={(e) => setFromReleaseId(e.target.value)}\n data-testid=\"release-checklist-copy-from\"\n >\n <option value=\"\">\n {sources.loading && !sources.data ? 'Loading releases…' : 'Choose a release'}\n </option>\n {others.map((r) => (\n <option key={r.id} value={r.id}>\n {r.name} ({r.version})\n </option>\n ))}\n </select>\n <Button\n size=\"sm\"\n disabled={!fromReleaseId || busy}\n onClick={() => void copyFrom()}\n data-testid=\"release-checklist-copy\"\n >\n Copy\n </Button>\n <Button size=\"sm\" variant=\"ghost\" onClick={() => setCopying(false)}>\n Cancel\n </Button>\n </div>\n )}\n </CardContent>\n </Card>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReleaseGatesCard.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/releases/ReleaseGatesCard.tsx"],"names":[],"mappings":"AAQA;;;;;GAKG;AAEH,eAAO,MAAM,aAAa,gCAazB,CAAC;AAsDF,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,SAAS,EACT,aAAa,GACd,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACvB,2CA8HA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReleaseGatesCard.js","names":[],"sources":["../../../src/planmagnet/releases/ReleaseGatesCard.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport { Button, Card, CardContent, CardHeader, CardTitle, Input } from '@burdenoff/fe-libs/ui';\nimport { CheckCircle2, CircleDashed, ShieldAlert, XCircle } from 'lucide-react';\nimport { PersonName } from '../people/People';\nimport { throwOnError } from '../utils/mutationResult';\n\n/**\n * Quality gates holding a release (P1.4). The service refuses RELEASED while\n * any gate here is not PASSED or WAIVED; this card shows which gates hold the\n * release, and lets a reviewer add, pass, fail or waive them. There was no\n * quality-gate UI anywhere before this.\n */\n\nexport const RELEASE_GATES = gql`\n query ReleaseGates($id: ID!) {\n planmagnetRelease(id: $id) {\n id\n qualityGates {\n id\n name\n status\n reviewerId\n reviewedAt\n }\n }\n }\n`;\nconst CREATE_GATE = gql`\n mutation ReleaseGateCreate($input: PlanmagnetCreateQualityGateInput!) {\n planmagnetCreateQualityGate(input: $input) {\n id\n }\n }\n`;\nconst REVIEW_GATE = gql`\n mutation ReleaseGateReview($id: ID!, $input: PlanmagnetReviewQualityGateInput!) {\n planmagnetReviewQualityGate(id: $id, input: $input) {\n id\n status\n }\n }\n`;\n\ninterface Gate {\n id: string;\n name: string;\n status: string;\n reviewerId: string | null;\n reviewedAt: string | null;\n}\n\nconst CLEARING = new Set(['PASSED', 'WAIVED']);\n\nfunction StatusMark({ status }: { status: string }) {\n // Status carries an icon AND a label, never colour alone.\n if (status === 'PASSED')\n return (\n <span className=\"inline-flex items-center gap-1 text-xs text-status-success-text\">\n <CheckCircle2 className=\"h-3.5 w-3.5\" /> Passed\n </span>\n );\n if (status === 'WAIVED')\n return (\n <span className=\"inline-flex items-center gap-1 text-xs text-muted-foreground\">\n <CheckCircle2 className=\"h-3.5 w-3.5\" /> Waived\n </span>\n );\n if (status === 'FAILED')\n return (\n <span className=\"inline-flex items-center gap-1 text-xs text-status-error-text\">\n <XCircle className=\"h-3.5 w-3.5\" /> Failed\n </span>\n );\n return (\n <span className=\"inline-flex items-center gap-1 text-xs text-status-warning-text\">\n <CircleDashed className=\"h-3.5 w-3.5\" /> {status === 'IN_REVIEW' ? 'In review' : 'Pending'}\n </span>\n );\n}\n\nexport function ReleaseGatesCard({\n releaseId,\n projectId,\n releaseStatus,\n}: {\n releaseId: string;\n projectId: string | null;\n releaseStatus: string;\n}) {\n const [name, setName] = useState('');\n const [error, setError] = useState<string | null>(null);\n const { data } = useQuery<{ planmagnetRelease: { qualityGates: Gate[] } | null }>(RELEASE_GATES, {\n variables: { id: releaseId },\n });\n const refetch = { refetchQueries: ['ReleaseGates', 'GetRelease'], awaitRefetchQueries: true };\n const [create, createState] = useMutation(CREATE_GATE, refetch);\n const [review, reviewState] = useMutation(REVIEW_GATE, refetch);\n\n const gates = data?.planmagnetRelease?.qualityGates ?? [];\n const open = gates.filter((g) => !CLEARING.has(g.status));\n const shipped = releaseStatus === 'RELEASED';\n\n const run = async (\n action: () => Promise<{ error?: unknown }>,\n fallback: string,\n after?: () => void\n ) => {\n setError(null);\n try {\n await throwOnError(action());\n after?.();\n } catch (e) {\n setError(e instanceof Error ? e.message : fallback);\n }\n };\n\n return (\n <Card data-testid=\"release-gates\">\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <ShieldAlert className=\"h-4 w-4\" /> Quality Gates\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {error && (\n <p role=\"alert\" className=\"text-sm text-destructive\">\n {error}\n </p>\n )}\n {!shipped && open.length > 0 && (\n <p className=\"text-sm text-status-warning-text\" data-testid=\"release-held\">\n This release cannot be released until {open.length} gate{open.length === 1 ? '' : 's'}{' '}\n {open.length === 1 ? 'is' : 'are'} passed or waived:{' '}\n {open.map((g) => g.name).join(', ')}.\n </p>\n )}\n {gates.length === 0 && (\n <p className=\"text-sm text-muted-foreground\">No quality gates hold this release.</p>\n )}\n <ul className=\"space-y-2\">\n {gates.map((gate) => (\n <li\n key={gate.id}\n className=\"rounded-md border p-2 space-y-1\"\n data-testid=\"release-gate\"\n >\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-sm font-medium\">{gate.name}</span>\n <StatusMark status={gate.status} />\n </div>\n {gate.reviewerId && (\n <p className=\"text-xs text-muted-foreground\">\n Reviewed by <PersonName id={gate.reviewerId} />\n {gate.reviewedAt ? ` · ${new Date(gate.reviewedAt).toLocaleString()}` : ''}\n </p>\n )}\n <div className=\"flex gap-1\">\n {(['PASSED', 'FAILED', 'WAIVED'] as const).map((status) => (\n <Button\n key={status}\n size=\"sm\"\n variant=\"outline\"\n className=\"h-7 text-xs\"\n disabled={reviewState.loading || gate.status === status}\n onClick={() =>\n run(\n () => review({ variables: { id: gate.id, input: { status } } }),\n 'The gate could not be reviewed.'\n )\n }\n >\n {status === 'PASSED' ? 'Pass' : status === 'FAILED' ? 'Fail' : 'Waive'}\n </Button>\n ))}\n </div>\n </li>\n ))}\n </ul>\n {projectId ? (\n <div className=\"flex gap-2 border-t pt-3\">\n <Input\n aria-label=\"New gate name\"\n placeholder=\"Add a gate, e.g. Security review\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n />\n <Button\n size=\"sm\"\n disabled={!name.trim() || createState.loading}\n data-testid=\"release-gate-add\"\n onClick={() =>\n run(\n () =>\n create({\n variables: {\n input: { projectId, releaseId, name: name.trim(), criteria: {} },\n },\n }),\n 'The gate could not be added.',\n () => setName('')\n )\n }\n >\n Add gate\n </Button>\n </div>\n ) : (\n <p className=\"text-xs text-muted-foreground\">\n This release has no project, so gates cannot be added here.\n </p>\n )}\n </CardContent>\n </Card>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReleaseNotesCard.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/releases/ReleaseNotesCard.tsx"],"names":[],"mappings":"AAqDA,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,KAAK,GACN,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,2CA6EA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReleaseNotesCard.js","names":[],"sources":["../../../src/planmagnet/releases/ReleaseNotesCard.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation } from '@apollo/client/react';\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n} from '@burdenoff/fe-libs/ui';\nimport { Markdown } from '@burdenoff/fe-libs/shared/components';\nimport { FileText } from 'lucide-react';\nimport { throwOnError } from '../utils/mutationResult';\n\n/**\n * Release notes (P1.4). planmagnetGenerateReleaseNotes was verified to be real\n * generation (the release's closed work items, grouped) but no UI invoked it,\n * and this card only appeared once notes already existed, so there was nothing\n * to click on a new release.\n */\n\nconst GENERATE = gql`\n mutation ReleaseNotesGenerate($id: ID!) {\n planmagnetGenerateReleaseNotes(id: $id, persist: true) {\n markdown\n counts {\n total\n features\n bugFixes\n improvements\n other\n }\n }\n }\n`;\n\ninterface Counts {\n total: number;\n features: number;\n bugFixes: number;\n improvements: number;\n other: number;\n}\n\nexport function ReleaseNotesCard({\n releaseId,\n notes,\n}: {\n releaseId: string;\n notes: string | null;\n}) {\n const [error, setError] = useState<string | null>(null);\n const [counts, setCounts] = useState<Counts | null>(null);\n const [generate, { loading }] = useMutation<{\n planmagnetGenerateReleaseNotes: { markdown: string; counts: Counts };\n }>(GENERATE, { refetchQueries: ['GetRelease'], awaitRefetchQueries: true });\n\n const run = async () => {\n setError(null);\n try {\n const result = await throwOnError(generate({ variables: { id: releaseId } }));\n setCounts(result.data?.planmagnetGenerateReleaseNotes.counts ?? null);\n } catch (e) {\n setError(e instanceof Error ? e.message : 'The release notes could not be generated.');\n }\n };\n\n const action = notes ? (\n // Regenerating replaces the saved notes, including any hand edits.\n <AlertDialog>\n <AlertDialogTrigger asChild>\n <Button size=\"sm\" variant=\"outline\" disabled={loading}>\n {loading ? 'Generating…' : 'Regenerate'}\n </Button>\n </AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Replace the release notes?</AlertDialogTitle>\n <AlertDialogDescription>\n The current notes are replaced by notes generated from the release&apos;s completed work\n items. Hand edits are lost.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Keep them</AlertDialogCancel>\n <AlertDialogAction onClick={run}>Regenerate</AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n ) : (\n <Button size=\"sm\" onClick={run} disabled={loading} data-testid=\"release-notes-generate\">\n <FileText className=\"mr-1 h-4 w-4\" />\n {loading ? 'Generating…' : 'Generate release notes'}\n </Button>\n );\n\n return (\n <Card data-testid=\"release-notes\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0\">\n <CardTitle>Release Notes</CardTitle>\n {action}\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {error && (\n <p role=\"alert\" className=\"text-sm text-destructive\">\n {error}\n </p>\n )}\n {counts && (\n <p className=\"text-xs text-muted-foreground\" data-testid=\"release-notes-counts\">\n Generated from {counts.total} completed work item{counts.total === 1 ? '' : 's'}:{' '}\n {counts.features} features, {counts.bugFixes} bug fixes, {counts.improvements}{' '}\n improvements, {counts.other} other.\n </p>\n )}\n {notes ? (\n <div className=\"text-sm prose prose-sm dark:prose-invert max-w-none\">\n <Markdown>{notes}</Markdown>\n </div>\n ) : (\n <p className=\"text-sm text-muted-foreground\">\n No release notes yet. Generate them from this release&apos;s completed work items.\n </p>\n )}\n </CardContent>\n </Card>\n );\n}\n"],"mappings":";;;;;;;;;AA8BA,IAAM,IAAW,CAAG;;;;;;;;;;;;;;AAuBpB,SAAgB,EAAiB,EAC/B,cACA,YAIC;CACD,IAAM,CAAC,GAAO,KAAY,EAAwB,KAAK,EACjD,CAAC,GAAQ,KAAa,EAAwB,KAAK,EACnD,CAAC,GAAU,EAAE,gBAAa,EAE7B,GAAU;EAAE,gBAAgB,CAAC,aAAa;EAAE,qBAAqB;EAAM,CAAC,EAErE,IAAM,YAAY;AACtB,IAAS,KAAK;AACd,MAAI;AAEF,MADe,MAAM,EAAa,EAAS,EAAE,WAAW,EAAE,IAAI,GAAW,EAAE,CAAC,CAAC,EAC5D,MAAM,+BAA+B,UAAU,KAAK;WAC9D,GAAG;AACV,KAAS,aAAa,QAAQ,EAAE,UAAU,4CAA4C;;;AAiC1F,QACE,kBAAC,GAAD;EAAM,eAAY;YAAlB,CACE,kBAAC,GAAD;GAAY,WAAU;aAAtB,CACE,kBAAC,GAAD,EAAA,UAAW,iBAAyB,CAAA,EAhC3B,IAEb,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;IAAoB,SAAA;cAClB,kBAAC,GAAD;KAAQ,MAAK;KAAK,SAAQ;KAAU,UAAU;eAC3C,IAAU,gBAAgB;KACpB,CAAA;IACU,CAAA,EACrB,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAkB,8BAA6C,CAAA,EAC/D,kBAAC,GAAD,EAAA,UAAwB,mHAGC,CAAA,CACP,EAAA,CAAA,EACpB,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAmB,aAA6B,CAAA,EAChD,kBAAC,GAAD;IAAmB,SAAS;cAAK;IAA8B,CAAA,CAC7C,EAAA,CAAA,CACD,EAAA,CAAA,CACT,EAAA,CAAA,GAEd,kBAAC,GAAD;IAAQ,MAAK;IAAK,SAAS;IAAK,UAAU;IAAS,eAAY;cAA/D,CACE,kBAAC,GAAD,EAAU,WAAU,gBAAiB,CAAA,EACpC,IAAU,gBAAgB,yBACpB;MAQM;MACb,kBAAC,GAAD;GAAa,WAAU;aAAvB;IACG,KACC,kBAAC,KAAD;KAAG,MAAK;KAAQ,WAAU;eACvB;KACC,CAAA;IAEL,KACC,kBAAC,KAAD;KAAG,WAAU;KAAgC,eAAY;eAAzD;MAAgF;MAC9D,EAAO;MAAM;MAAqB,EAAO,UAAU,IAAI,KAAK;MAAI;MAAE;MACjF,EAAO;MAAS;MAAY,EAAO;MAAS;MAAa,EAAO;MAAc;MAAI;MACpE,EAAO;MAAM;MAC1B;;IAEL,IACC,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD,EAAA,UAAW,GAAiB,CAAA;KACxB,CAAA,GAEN,kBAAC,KAAD;KAAG,WAAU;eAAgC;KAEzC,CAAA;IAEM;KACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReleaseReadinessCard.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/releases/ReleaseReadinessCard.tsx"],"names":[],"mappings":"AA0NA,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,SAAS,EACT,aAAa,EACb,WAAW,GACZ,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,2CA8RA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReleaseReadinessCard.js","names":[],"sources":["../../../src/planmagnet/releases/ReleaseReadinessCard.tsx"],"sourcesContent":["import { useState, type ReactNode } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { CombinedGraphQLErrors, ServerError } from '@apollo/client/errors';\nimport { Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport {\n AlertTriangle,\n CheckCircle2,\n Link2,\n Wallet,\n Users,\n ShieldAlert,\n Clock,\n} from 'lucide-react';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { RELEASE_GATES } from './ReleaseGatesCard';\n\n/**\n * Release overview (P1.4): what stands between this release and shipping, in\n * one place: unfinished and dependency-blocked work, gates not yet passed,\n * the budget position of its project, its open risks, and the customer\n * requests that ride on its unfinished work.\n *\n * Each part is read through its OWN gated query. Budgets, risks and feature\n * requests are separate RBAC resources (a product manager can read releases\n * but not budgets), so a part the viewer may not see says so, instead of the\n * release leaking it or the whole card failing.\n */\n\nconst READINESS = gql`\n query ReleaseReadiness($releaseId: ID!) {\n planmagnetReleaseReadiness(releaseId: $releaseId) {\n scope\n totalItems\n doneItems\n openWorkItemIds\n openRequiredChecklist\n blockers {\n workItem {\n id\n key\n title\n status\n }\n waitingOn {\n id\n key\n title\n status\n projectId\n }\n }\n }\n }\n`;\nconst BUDGETS = gql`\n query ReleaseBudgets($workspaceId: ID!, $projectId: String!) {\n planmagnetBudgets(\n workspaceId: $workspaceId\n filter: { projectId: $projectId }\n pagination: { first: 50 }\n ) {\n items {\n id\n name\n status\n currency\n plannedAmount\n spentAmount\n remainingAmount\n approvedAt\n }\n }\n }\n`;\nconst RISKS = gql`\n query ReleaseRisks($workspaceId: ID!, $projectId: String!) {\n planmagnetRisks(\n workspaceId: $workspaceId\n filter: { projectId: $projectId }\n pagination: { first: 100 }\n ) {\n items {\n id\n title\n severity\n status\n riskScore\n }\n }\n }\n`;\nconst REQUESTS = gql`\n query ReleaseCustomerRequests($workspaceId: ID!, $projectId: String!) {\n planmagnetFeatureRequests(\n workspaceId: $workspaceId\n filter: { projectId: $projectId }\n pagination: { first: 100 }\n ) {\n items {\n id\n title\n status\n voteCount\n workItemId\n }\n }\n }\n`;\n\ninterface ItemRef {\n id: string;\n key: string;\n title: string;\n status: string;\n projectId?: string;\n}\ninterface Readiness {\n scope: 'WORK_ITEMS' | 'PROJECTS' | 'NONE';\n totalItems: number;\n doneItems: number;\n openWorkItemIds: string[];\n /** PRM-19: required checklist items still open — they block RELEASED like an open gate. */\n openRequiredChecklist: string[];\n blockers: { workItem: ItemRef; waitingOn: ItemRef[] }[];\n}\ninterface Budget {\n id: string;\n name: string;\n status: string;\n currency: string;\n plannedAmount: number;\n spentAmount: number;\n remainingAmount: number;\n approvedAt: string | null;\n}\ninterface Risk {\n id: string;\n title: string;\n severity: string;\n status: string;\n riskScore: number;\n}\ninterface Request {\n id: string;\n title: string;\n status: string;\n voteCount: number;\n workItemId: string | null;\n}\n\nconst CLOSED_RISK = new Set(['RESOLVED', 'ACCEPTED', 'CLOSED']);\nconst CLOSED_REQUEST = new Set(['COMPLETED', 'DECLINED', 'DUPLICATE']);\nconst DAY = 24 * 60 * 60 * 1000;\n\n/**\n * Is this the gateway refusing the viewer's role? The gateway answers an RBAC\n * denial with HTTP 403 (400 inside a batch) and `extensions.code: FORBIDDEN`.\n * Depending on the fetch path Apollo surfaces that as GraphQL errors or as a\n * ServerError carrying the body, so both are read.\n */\nfunction denied(error: unknown): boolean {\n if (CombinedGraphQLErrors.is(error)) {\n return error.errors.some((e) => e.extensions?.code === 'FORBIDDEN');\n }\n if (ServerError.is(error)) {\n return error.statusCode === 403 || /\"code\"\\s*:\\s*\"FORBIDDEN\"/.test(error.bodyText);\n }\n return false;\n}\n\n/** One part of the overview: its own title, and its own loading/denied/error state. */\nfunction Part({\n icon,\n title,\n testId,\n loading,\n error,\n children,\n}: {\n icon: ReactNode;\n title: string;\n testId: string;\n loading: boolean;\n error: unknown;\n children: ReactNode;\n}) {\n let body = children;\n if (error) {\n body = (\n <p className=\"text-sm text-muted-foreground\">\n {denied(error)\n ? 'Your role cannot see this.'\n : `Could not be loaded: ${error instanceof Error ? error.message : 'unknown error'}`}\n </p>\n );\n } else if (loading) {\n body = <p className=\"text-sm text-muted-foreground\">Loading…</p>;\n }\n return (\n <section className=\"space-y-1.5\" data-testid={testId}>\n <h3 className=\"flex items-center gap-2 text-sm font-medium\">\n {icon}\n {title}\n </h3>\n {body}\n </section>\n );\n}\n\nconst money = (amount: number, currency: string) => {\n try {\n return new Intl.NumberFormat(undefined, { style: 'currency', currency }).format(amount);\n } catch {\n return `${amount.toFixed(2)} ${currency}`;\n }\n};\n\nexport function ReleaseReadinessCard({\n releaseId,\n projectId,\n releaseStatus,\n plannedDate,\n}: {\n releaseId: string;\n projectId: string | null;\n releaseStatus: string;\n plannedDate: string | null;\n}) {\n const { workspaceId } = usePlanMagnet();\n // Read once: lateness is a property of the page view, not of each render.\n const [now] = useState(() => Date.now());\n const navigate = usePlanMagnetNavigate();\n const byProject = { variables: { workspaceId, projectId }, skip: !workspaceId || !projectId };\n\n const readiness = useQuery<{ planmagnetReleaseReadiness: Readiness }>(READINESS, {\n variables: { releaseId },\n });\n const gates = useQuery<{\n planmagnetRelease: { qualityGates: { id: string; name: string; status: string }[] } | null;\n }>(RELEASE_GATES, { variables: { id: releaseId } });\n const budgets = useQuery<{ planmagnetBudgets: { items: Budget[] } }>(BUDGETS, byProject);\n const risks = useQuery<{ planmagnetRisks: { items: Risk[] } }>(RISKS, byProject);\n const requests = useQuery<{ planmagnetFeatureRequests: { items: Request[] } }>(\n REQUESTS,\n byProject\n );\n\n const shipped = releaseStatus === 'RELEASED';\n const r = readiness.data?.planmagnetReleaseReadiness;\n const openGates = (gates.data?.planmagnetRelease?.qualityGates ?? []).filter(\n (g) => g.status !== 'PASSED' && g.status !== 'WAIVED'\n );\n const budgetRows = budgets.data?.planmagnetBudgets.items ?? [];\n const openRisks = (risks.data?.planmagnetRisks.items ?? [])\n .filter((risk) => !CLOSED_RISK.has(risk.status))\n .sort((a, b) => b.riskScore - a.riskScore);\n const openIds = new Set(r?.openWorkItemIds ?? []);\n const blockedIds = new Set((r?.blockers ?? []).map((b) => b.workItem.id));\n const riding = (requests.data?.planmagnetFeatureRequests.items ?? []).filter(\n (req) => req.workItemId && openIds.has(req.workItemId) && !CLOSED_REQUEST.has(req.status)\n );\n\n const daysLate =\n plannedDate && !shipped ? Math.floor((now - new Date(plannedDate).getTime()) / DAY) : null;\n\n // The headline lists every reason, not just the first one found.\n const reasons: string[] = [];\n if (daysLate !== null && daysLate > 0)\n reasons.push(`${daysLate} day${daysLate === 1 ? '' : 's'} past its planned date`);\n if (r && r.blockers.length > 0)\n reasons.push(`${r.blockers.length} blocked item${r.blockers.length === 1 ? '' : 's'}`);\n if (r && r.openWorkItemIds.length > 0)\n reasons.push(\n `${r.openWorkItemIds.length} unfinished item${r.openWorkItemIds.length === 1 ? '' : 's'}`\n );\n if (openGates.length > 0)\n reasons.push(`${openGates.length} gate${openGates.length === 1 ? '' : 's'} not passed`);\n // PRM-19: a required checklist item still open is a reason too — the server refuses RELEASED over it.\n const openChecklist = r?.openRequiredChecklist ?? [];\n if (openChecklist.length > 0)\n reasons.push(\n `${openChecklist.length} required checklist item${openChecklist.length === 1 ? '' : 's'} open (${openChecklist.join(', ')})`\n );\n const overBudget = budgetRows.filter((b) => b.remainingAmount < 0 || b.status === 'EXCEEDED');\n if (overBudget.length > 0) reasons.push('over budget');\n const settled = !readiness.loading && !gates.loading;\n\n return (\n <Card data-testid=\"release-readiness\">\n <CardHeader>\n <CardTitle>What stands between this release and shipping</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-5\">\n {shipped ? (\n <p className=\"flex items-center gap-2 text-sm text-status-success-text\">\n <CheckCircle2 className=\"h-4 w-4\" /> Released.\n </p>\n ) : settled && reasons.length === 0 && r && r.scope !== 'NONE' ? (\n <p\n className=\"flex items-center gap-2 text-sm text-status-success-text\"\n data-testid=\"readiness-headline\"\n >\n <CheckCircle2 className=\"h-4 w-4\" /> Nothing is holding this release.\n </p>\n ) : settled && reasons.length > 0 ? (\n <p\n className=\"flex items-center gap-2 text-sm text-status-warning-text\"\n data-testid=\"readiness-headline\"\n >\n <AlertTriangle className=\"h-4 w-4 shrink-0\" /> Held by: {reasons.join(', ')}.\n </p>\n ) : null}\n\n <Part\n icon={<Link2 className=\"h-4 w-4\" />}\n title=\"Work and blockers\"\n testId=\"readiness-work\"\n loading={readiness.loading && !readiness.data}\n error={readiness.error}\n >\n {r && (\n <div className=\"space-y-2\">\n <p className=\"text-sm text-muted-foreground\">\n {r.scope === 'NONE'\n ? 'This release has no work items and no project, so there is nothing to track.'\n : r.scope === 'PROJECTS'\n ? `No work items are assigned to this release, so everything open in its project counts: ${r.totalItems} open.`\n : `${r.doneItems} of ${r.totalItems} work items done.`}\n </p>\n {r.blockers.length === 0 && r.scope !== 'NONE' && (\n <p className=\"text-sm text-muted-foreground\">\n No item is waiting on unfinished work.\n </p>\n )}\n <ul className=\"space-y-1.5\">\n {r.blockers.map((b) => (\n <li\n key={b.workItem.id}\n className=\"rounded-md border p-2 text-sm\"\n data-testid=\"readiness-blocker\"\n >\n <button\n type=\"button\"\n className=\"font-medium hover:underline text-left\"\n onClick={() =>\n navigate(\n `/tasks/task-detail-page?taskId=${encodeURIComponent(b.workItem.id)}`\n )\n }\n >\n {b.workItem.key} {b.workItem.title}\n </button>\n <span className=\"text-muted-foreground\"> waits on </span>\n {b.waitingOn.map((w, i) => (\n <span key={w.id}>\n {i > 0 && ', '}\n <button\n type=\"button\"\n className=\"hover:underline\"\n onClick={() =>\n navigate(`/tasks/task-detail-page?taskId=${encodeURIComponent(w.id)}`)\n }\n >\n {w.key} {w.title}\n </button>{' '}\n <span className=\"text-xs text-muted-foreground\">\n ({w.status.toLowerCase().replace('_', ' ')}\n {projectId && w.projectId && w.projectId !== projectId\n ? ', another project'\n : ''}\n )\n </span>\n </span>\n ))}\n </li>\n ))}\n </ul>\n </div>\n )}\n </Part>\n\n <Part\n icon={<ShieldAlert className=\"h-4 w-4\" />}\n title=\"Approvals\"\n testId=\"readiness-approvals\"\n loading={gates.loading && !gates.data}\n error={gates.error}\n >\n <p className=\"text-sm text-muted-foreground\">\n {openGates.length === 0\n ? 'No quality gate is waiting for a decision.'\n : `Waiting on: ${openGates.map((g) => `${g.name} (${g.status.toLowerCase().replace('_', ' ')})`).join(', ')}.`}\n </p>\n </Part>\n\n {projectId ? (\n <>\n <Part\n icon={<Wallet className=\"h-4 w-4\" />}\n title=\"Budget\"\n testId=\"readiness-budget\"\n loading={budgets.loading && !budgets.data}\n error={budgets.error}\n >\n {budgetRows.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">\n This release&apos;s project has no budget.\n </p>\n ) : (\n <ul className=\"space-y-1\">\n {budgetRows.map((b) => {\n const over = b.remainingAmount < 0;\n return (\n <li key={b.id} className=\"text-sm\" data-testid=\"readiness-budget-row\">\n <span className=\"font-medium\">{b.name}</span>:{' '}\n {money(b.spentAmount, b.currency)} of {money(b.plannedAmount, b.currency)}{' '}\n spent\n {over ? (\n <span className=\"text-status-error-text\">\n {' '}\n — over by {money(-b.remainingAmount, b.currency)}\n </span>\n ) : (\n <span className=\"text-muted-foreground\">\n {' '}\n — {money(b.remainingAmount, b.currency)} left\n </span>\n )}\n {!b.approvedAt && (\n <span className=\"text-status-warning-text\"> · not approved</span>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </Part>\n\n <Part\n icon={<AlertTriangle className=\"h-4 w-4\" />}\n title=\"Open risks\"\n testId=\"readiness-risks\"\n loading={risks.loading && !risks.data}\n error={risks.error}\n >\n {openRisks.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">\n No open risks on this release&apos;s project.\n </p>\n ) : (\n <ul className=\"space-y-1\">\n {openRisks.slice(0, 5).map((risk) => (\n <li key={risk.id} className=\"text-sm\">\n <span className=\"font-medium\">{risk.title}</span>{' '}\n <span className=\"text-xs text-muted-foreground\">\n ({risk.severity.toLowerCase()}, score {risk.riskScore},{' '}\n {risk.status.toLowerCase()})\n </span>\n </li>\n ))}\n {openRisks.length > 5 && (\n <li className=\"text-xs text-muted-foreground\">\n and {openRisks.length - 5} more\n </li>\n )}\n </ul>\n )}\n </Part>\n\n <Part\n icon={<Users className=\"h-4 w-4\" />}\n title=\"Customer requests riding on unfinished work\"\n testId=\"readiness-requests\"\n loading={requests.loading && !requests.data}\n error={requests.error}\n >\n {riding.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">\n No open customer request is tied to unfinished work in this release.\n </p>\n ) : (\n <ul className=\"space-y-1\">\n {riding.map((req) => (\n <li key={req.id} className=\"text-sm\" data-testid=\"readiness-request\">\n <span className=\"font-medium\">{req.title}</span>{' '}\n <span className=\"text-xs text-muted-foreground\">\n ({req.voteCount} vote{req.voteCount === 1 ? '' : 's'})\n </span>\n {req.workItemId && blockedIds.has(req.workItemId) && (\n <span className=\"text-status-error-text\"> — its work is blocked</span>\n )}\n </li>\n ))}\n </ul>\n )}\n </Part>\n </>\n ) : (\n <p className=\"text-sm text-muted-foreground\">\n This release has no project, so budget, risks and customer requests cannot be shown.\n </p>\n )}\n\n {plannedDate && daysLate !== null && (\n <p className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <Clock className=\"h-3.5 w-3.5\" />\n Planned for {new Date(plannedDate).toLocaleDateString()}\n {daysLate > 0 ? ` (${daysLate} day${daysLate === 1 ? '' : 's'} ago)` : ''}.\n </p>\n )}\n </CardContent>\n </Card>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReleaseWorkItemsCard.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/releases/ReleaseWorkItemsCard.tsx"],"names":[],"mappings":"AAmDA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,SAAS,EACT,KAAK,GACN,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B,2CAgLA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReleaseWorkItemsCard.js","names":[],"sources":["../../../src/planmagnet/releases/ReleaseWorkItemsCard.tsx"],"sourcesContent":["import { useDeferredValue, useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Input,\n} from '@burdenoff/fe-libs/ui';\nimport { Plus, X } from 'lucide-react';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { throwOnError } from '../utils/mutationResult';\n\n/**\n * What is in this release (BOFF-7931). Until the service could write a\n * release's work items this card never rendered: every release was empty and\n * its scope silently fell back to its whole project. Items can be added from\n * the release's project only; the service refuses anything else and says why.\n */\n\nconst CANDIDATES = gql`\n query ReleaseWorkItemCandidates($workspaceId: ID!, $filter: PlanmagnetWorkItemFilter) {\n planmagnetWorkItems(workspaceId: $workspaceId, filter: $filter, pagination: { first: 20 }) {\n items {\n id\n key\n title\n status\n }\n totalCount\n }\n }\n`;\nconst ADD = gql`\n mutation ReleaseAddWorkItems($releaseId: ID!, $workItemIds: [ID!]!) {\n planmagnetAddWorkItemsToRelease(releaseId: $releaseId, workItemIds: $workItemIds) {\n id\n }\n }\n`;\nconst REMOVE = gql`\n mutation ReleaseRemoveWorkItems($releaseId: ID!, $workItemIds: [ID!]!) {\n planmagnetRemoveWorkItemsFromRelease(releaseId: $releaseId, workItemIds: $workItemIds) {\n id\n }\n }\n`;\n\nexport interface ReleaseWorkItem {\n id: string;\n title: string;\n status: string;\n type: string;\n priority: string;\n}\n\nexport function ReleaseWorkItemsCard({\n releaseId,\n projectId,\n items,\n}: {\n releaseId: string;\n projectId: string | null;\n items: ReleaseWorkItem[];\n}) {\n const { workspaceId } = usePlanMagnet();\n const navigate = usePlanMagnetNavigate();\n const [adding, setAdding] = useState(false);\n const [search, setSearch] = useState('');\n const [error, setError] = useState<string | null>(null);\n const term = useDeferredValue(search.trim());\n\n const candidates = useQuery<{\n planmagnetWorkItems: {\n items: { id: string; key: string; title: string; status: string }[];\n totalCount: number;\n };\n }>(CANDIDATES, {\n // Members are excluded on the SERVER (BOFF-7984): it took 20 and dropped members afterwards, so 20 members\n // read as \"No other work items match\" while others existed. Search also matches the key now.\n variables: {\n workspaceId,\n filter: { projectId, excludeIds: items.map((i) => i.id), ...(term ? { search: term } : {}) },\n },\n skip: !adding || !workspaceId || !projectId,\n });\n const refetch = {\n refetchQueries: ['GetRelease', 'ReleaseReadiness'],\n awaitRefetchQueries: true,\n };\n const [add, addState] = useMutation(ADD, refetch);\n const [remove, removeState] = useMutation(REMOVE, refetch);\n\n const offered = candidates.data?.planmagnetWorkItems.items ?? [];\n const moreCandidates = (candidates.data?.planmagnetWorkItems.totalCount ?? 0) - offered.length;\n\n const change = async (action: () => Promise<{ error?: unknown }>, fallback: string) => {\n setError(null);\n try {\n await throwOnError(action());\n } catch (e) {\n setError(e instanceof Error ? e.message : fallback);\n }\n };\n\n return (\n <Card data-testid=\"release-work-items\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0\">\n <CardTitle>Work Items ({items.length})</CardTitle>\n {projectId && !adding && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => setAdding(true)}\n data-testid=\"release-items-add\"\n >\n <Plus className=\"mr-1 h-4 w-4\" /> Add work items\n </Button>\n )}\n </CardHeader>\n <CardContent className=\"space-y-2\">\n {error && (\n <p role=\"alert\" className=\"text-sm text-destructive\">\n {error}\n </p>\n )}\n {items.length === 0 && (\n <p className=\"text-sm text-muted-foreground\">\n No work items are in this release yet, so its overview and release notes cover\n everything in its project.\n </p>\n )}\n {items.map((item) => (\n <div\n key={item.id}\n className=\"flex items-center justify-between gap-2 rounded-md border p-3\"\n data-testid=\"release-item\"\n >\n <button\n type=\"button\"\n className=\"min-w-0 text-left\"\n onClick={() =>\n navigate(`/tasks/task-detail-page?taskId=${encodeURIComponent(item.id)}`)\n }\n >\n <p className=\"truncate text-sm font-medium hover:underline\">{item.title}</p>\n <p className=\"text-xs capitalize text-muted-foreground\">\n {item.type.toLowerCase()} &middot; {item.priority.toLowerCase()} priority\n </p>\n </button>\n <span className=\"flex shrink-0 items-center gap-1\">\n <Badge variant=\"outline\" className=\"text-xs capitalize\">\n {item.status.toLowerCase().replace('_', ' ')}\n </Badge>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n aria-label={`Remove ${item.title} from this release`}\n disabled={removeState.loading}\n onClick={() =>\n change(\n () => remove({ variables: { releaseId, workItemIds: [item.id] } }),\n 'The work item could not be removed.'\n )\n }\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </span>\n </div>\n ))}\n {adding && (\n <div className=\"space-y-2 border-t pt-3\">\n <div className=\"flex gap-2\">\n <Input\n aria-label=\"Find work items in this release's project\"\n placeholder=\"Find work items in this project\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n />\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => {\n setAdding(false);\n setSearch('');\n }}\n >\n Done\n </Button>\n </div>\n {candidates.loading && !candidates.data && (\n <p className=\"text-sm text-muted-foreground\">Loading…</p>\n )}\n {candidates.error && (\n <p role=\"alert\" className=\"text-sm text-destructive\">\n Work items could not be loaded: {candidates.error.message}\n </p>\n )}\n {candidates.data && offered.length === 0 && (\n <p className=\"text-sm text-muted-foreground\">\n {term\n ? 'No other work items match.'\n : 'Every work item in this project is already in the release.'}\n </p>\n )}\n {moreCandidates > 0 && (\n <p className=\"text-xs text-muted-foreground\">\n {moreCandidates} more — type a key or title to narrow the list.\n </p>\n )}\n <ul className=\"space-y-1\">\n {offered.map((c) => (\n <li key={c.id} className=\"flex items-center justify-between gap-2 text-sm\">\n <span className=\"min-w-0 truncate\">\n <span className=\"text-muted-foreground\">{c.key}</span> {c.title}\n </span>\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"h-7 shrink-0 text-xs\"\n disabled={addState.loading}\n data-testid=\"release-item-candidate-add\"\n onClick={() =>\n change(\n () => add({ variables: { releaseId, workItemIds: [c.id] } }),\n 'The work item could not be added.'\n )\n }\n >\n Add\n </Button>\n </li>\n ))}\n </ul>\n </div>\n )}\n </CardContent>\n </Card>\n );\n}\n"],"mappings":";;;;;;;;;AAuBA,IAAM,IAAa,CAAG;;;;;;;;;;;;GAahB,IAAM,CAAG;;;;;;GAOT,IAAS,CAAG;;;;;;;AAgBlB,SAAgB,EAAqB,EACnC,cACA,cACA,YAKC;CACD,IAAM,EAAE,mBAAgB,GAAe,EACjC,IAAW,GAAuB,EAClC,CAAC,GAAQ,KAAa,EAAS,GAAM,EACrC,CAAC,GAAQ,KAAa,EAAS,GAAG,EAClC,CAAC,GAAO,KAAY,EAAwB,KAAK,EACjD,IAAO,EAAiB,EAAO,MAAM,CAAC,EAEtC,IAAa,EAKhB,GAAY;EAGb,WAAW;GACT;GACA,QAAQ;IAAE;IAAW,YAAY,EAAM,KAAK,MAAM,EAAE,GAAG;IAAE,GAAI,IAAO,EAAE,QAAQ,GAAM,GAAG,EAAE;IAAG;GAC7F;EACD,MAAM,CAAC,KAAU,CAAC,KAAe,CAAC;EACnC,CAAC,EACI,IAAU;EACd,gBAAgB,CAAC,cAAc,mBAAmB;EAClD,qBAAqB;EACtB,EACK,CAAC,GAAK,KAAY,EAAY,GAAK,EAAQ,EAC3C,CAAC,GAAQ,KAAe,EAAY,GAAQ,EAAQ,EAEpD,IAAU,EAAW,MAAM,oBAAoB,SAAS,EAAE,EAC1D,KAAkB,EAAW,MAAM,oBAAoB,cAAc,KAAK,EAAQ,QAElF,IAAS,OAAO,GAA4C,MAAqB;AACrF,IAAS,KAAK;AACd,MAAI;AACF,SAAM,EAAa,GAAQ,CAAC;WACrB,GAAG;AACV,KAAS,aAAa,QAAQ,EAAE,UAAU,EAAS;;;AAIvD,QACE,kBAAC,GAAD;EAAM,eAAY;YAAlB,CACE,kBAAC,GAAD;GAAY,WAAU;aAAtB,CACE,kBAAC,GAAD,EAAA,UAAA;IAAW;IAAa,EAAM;IAAO;IAAa,EAAA,CAAA,EACjD,KAAa,CAAC,KACb,kBAAC,GAAD;IACE,MAAK;IACL,SAAQ;IACR,eAAe,EAAU,GAAK;IAC9B,eAAY;cAJd,CAME,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAAA,kBAC1B;MAEA;MACb,kBAAC,GAAD;GAAa,WAAU;aAAvB;IACG,KACC,kBAAC,KAAD;KAAG,MAAK;KAAQ,WAAU;eACvB;KACC,CAAA;IAEL,EAAM,WAAW,KAChB,kBAAC,KAAD;KAAG,WAAU;eAAgC;KAGzC,CAAA;IAEL,EAAM,KAAK,MACV,kBAAC,OAAD;KAEE,WAAU;KACV,eAAY;eAHd,CAKE,kBAAC,UAAD;MACE,MAAK;MACL,WAAU;MACV,eACE,EAAS,kCAAkC,mBAAmB,EAAK,GAAG,GAAG;gBAJ7E,CAOE,kBAAC,KAAD;OAAG,WAAU;iBAAgD,EAAK;OAAU,CAAA,EAC5E,kBAAC,KAAD;OAAG,WAAU;iBAAb;QACG,EAAK,KAAK,aAAa;QAAC;QAAW,EAAK,SAAS,aAAa;QAAC;QAC9D;SACG;SACT,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CACE,kBAAC,GAAD;OAAO,SAAQ;OAAU,WAAU;iBAChC,EAAK,OAAO,aAAa,CAAC,QAAQ,KAAK,IAAI;OACtC,CAAA,EACR,kBAAC,GAAD;OACE,MAAK;OACL,SAAQ;OACR,cAAY,UAAU,EAAK,MAAM;OACjC,UAAU,EAAY;OACtB,eACE,QACQ,EAAO,EAAE,WAAW;QAAE;QAAW,aAAa,CAAC,EAAK,GAAG;QAAE,EAAE,CAAC,EAClE,sCACD;iBAGH,kBAAC,GAAD,EAAG,WAAU,WAAY,CAAA;OAClB,CAAA,CACJ;QACH;OAnCC,EAAK,GAmCN,CACN;IACD,KACC,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,GAAD;QACE,cAAW;QACX,aAAY;QACZ,OAAO;QACP,WAAW,MAAM,EAAU,EAAE,OAAO,MAAM;QAC1C,CAAA,EACF,kBAAC,GAAD;QACE,MAAK;QACL,SAAQ;QACR,eAAe;AAEb,SADA,EAAU,GAAM,EAChB,EAAU,GAAG;;kBAEhB;QAEQ,CAAA,CACL;;MACL,EAAW,WAAW,CAAC,EAAW,QACjC,kBAAC,KAAD;OAAG,WAAU;iBAAgC;OAAY,CAAA;MAE1D,EAAW,SACV,kBAAC,KAAD;OAAG,MAAK;OAAQ,WAAU;iBAA1B,CAAqD,oCAClB,EAAW,MAAM,QAChD;;MAEL,EAAW,QAAQ,EAAQ,WAAW,KACrC,kBAAC,KAAD;OAAG,WAAU;iBACV,IACG,+BACA;OACF,CAAA;MAEL,IAAiB,KAChB,kBAAC,KAAD;OAAG,WAAU;iBAAb,CACG,GAAe,kDACd;;MAEN,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAQ,KAAK,MACZ,kBAAC,MAAD;QAAe,WAAU;kBAAzB,CACE,kBAAC,QAAD;SAAM,WAAU;mBAAhB;UACE,kBAAC,QAAD;WAAM,WAAU;qBAAyB,EAAE;WAAW,CAAA;;UAAE,EAAE;UACrD;YACP,kBAAC,GAAD;SACE,MAAK;SACL,SAAQ;SACR,WAAU;SACV,UAAU,EAAS;SACnB,eAAY;SACZ,eACE,QACQ,EAAI,EAAE,WAAW;UAAE;UAAW,aAAa,CAAC,EAAE,GAAG;UAAE,EAAE,CAAC,EAC5D,oCACD;mBAEJ;SAEQ,CAAA,CACN;UAnBI,EAAE,GAmBN,CACL;OACC,CAAA;MACD;;IAEI;KACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useReleaseOptions.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/releases/useReleaseOptions.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,SAAS,EAAE,MAAM,CAAC;CACnB;AA6DD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;;;;EAc5E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useReleaseOptions.js","names":[],"sources":["../../../src/planmagnet/releases/useReleaseOptions.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { usePlanMagnet } from '../providers/PlanMagnetProvider';\n\n/**\n * Releases for a picker or a name lookup, read page by page up to MAX_RELEASE_OPTIONS — so a workspace past 100\n * releases never silently loses the later ones (same pattern as useProjectMilestones).\n *\n * With a project, the releases a gate of that project may hold: the ones linked to the project (the server's\n * project filter, which matches any of a release's projects) AND the ones with no project at all — the server's own\n * rule (quality.service.ts assertReleaseAcceptsGate). A project filter alone would drop the projectless ones.\n */\nexport interface ReleaseOption {\n id: string;\n name: string;\n version: string;\n /** The release's first project, '' when it has none (see release.resolvers.ts). */\n projectId: string;\n}\n\nconst RELEASE_OPTIONS = gql`\n query ReleaseOptions(\n $workspaceId: ID!\n $filter: PlanmagnetReleaseFilter\n $pagination: PlanmagnetPaginationInput\n ) {\n planmagnetReleases(workspaceId: $workspaceId, filter: $filter, pagination: $pagination) {\n items {\n id\n name\n version\n projectId\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n`;\n\nconst MAX_RELEASE_OPTIONS = 500;\n\n/** Every page of one release query, up to the cap. */\nfunction useAllReleasePages(enabled: boolean, projectId: string | null) {\n const { workspaceId } = usePlanMagnet();\n const { data, loading, error, fetchMore } = useQuery<{\n planmagnetReleases: {\n items: ReleaseOption[];\n pageInfo: { hasNextPage: boolean; endCursor: string | null };\n };\n }>(RELEASE_OPTIONS, {\n variables: {\n workspaceId: workspaceId ?? '',\n filter: projectId ? { projectId } : {},\n pagination: { first: 100 },\n },\n skip: !enabled || !workspaceId,\n });\n const loaded = data?.planmagnetReleases.items ?? [];\n const hasNextPage = data?.planmagnetReleases.pageInfo.hasNextPage ?? false;\n const endCursor = data?.planmagnetReleases.pageInfo.endCursor ?? null;\n useEffect(() => {\n if (!enabled || !hasNextPage || !endCursor || loaded.length >= MAX_RELEASE_OPTIONS) return;\n fetchMore({\n variables: { pagination: { first: 100, after: endCursor } },\n updateQuery: (prev, { fetchMoreResult }) => ({\n planmagnetReleases: {\n ...fetchMoreResult.planmagnetReleases,\n items: [...prev.planmagnetReleases.items, ...fetchMoreResult.planmagnetReleases.items],\n },\n }),\n }).catch(() => {\n // A failed extra page leaves the releases already loaded usable.\n });\n }, [enabled, hasNextPage, endCursor, loaded.length, fetchMore]);\n return { items: loaded, loading: loading && !data, error };\n}\n\nexport function useReleaseOptions(enabled: boolean, projectId?: string | null) {\n const all = useAllReleasePages(enabled, null);\n const ofProject = useAllReleasePages(enabled && !!projectId, projectId ?? null);\n if (!projectId) return { releases: all.items, loading: all.loading, error: all.error };\n const seen = new Set(ofProject.items.map((r) => r.id));\n const releases = [\n ...ofProject.items,\n ...all.items.filter((r) => r.projectId === '' && !seen.has(r.id)),\n ];\n return {\n releases,\n loading: all.loading || ofProject.loading,\n error: all.error ?? ofProject.error,\n };\n}\n"],"mappings":";;;;;AAqBA,IAAM,IAAkB,CAAG;;;;;;;;;;;;;;;;;;;GAqBrB,IAAsB;AAG5B,SAAS,EAAmB,GAAkB,GAA0B;CACtE,IAAM,EAAE,mBAAgB,GAAe,EACjC,EAAE,SAAM,YAAS,UAAO,iBAAc,EAKzC,GAAiB;EAClB,WAAW;GACT,aAAa,KAAe;GAC5B,QAAQ,IAAY,EAAE,cAAW,GAAG,EAAE;GACtC,YAAY,EAAE,OAAO,KAAK;GAC3B;EACD,MAAM,CAAC,KAAW,CAAC;EACpB,CAAC,EACI,IAAS,GAAM,mBAAmB,SAAS,EAAE,EAC7C,IAAc,GAAM,mBAAmB,SAAS,eAAe,IAC/D,IAAY,GAAM,mBAAmB,SAAS,aAAa;AAejE,QAdA,QAAgB;AACV,GAAC,KAAW,CAAC,KAAe,CAAC,KAAa,EAAO,UAAU,KAC/D,EAAU;GACR,WAAW,EAAE,YAAY;IAAE,OAAO;IAAK,OAAO;IAAW,EAAE;GAC3D,cAAc,GAAM,EAAE,0BAAuB,EAC3C,oBAAoB;IAClB,GAAG,EAAgB;IACnB,OAAO,CAAC,GAAG,EAAK,mBAAmB,OAAO,GAAG,EAAgB,mBAAmB,MAAM;IACvF,EACF;GACF,CAAC,CAAC,YAAY,GAEb;IACD;EAAC;EAAS;EAAa;EAAW,EAAO;EAAQ;EAAU,CAAC,EACxD;EAAE,OAAO;EAAQ,SAAS,KAAW,CAAC;EAAM;EAAO;;AAG5D,SAAgB,EAAkB,GAAkB,GAA2B;CAC7E,IAAM,IAAM,EAAmB,GAAS,KAAK,EACvC,IAAY,EAAmB,KAAW,CAAC,CAAC,GAAW,KAAa,KAAK;AAC/E,KAAI,CAAC,EAAW,QAAO;EAAE,UAAU,EAAI;EAAO,SAAS,EAAI;EAAS,OAAO,EAAI;EAAO;CACtF,IAAM,IAAO,IAAI,IAAI,EAAU,MAAM,KAAK,MAAM,EAAE,GAAG,CAAC;AAKtD,QAAO;EACL,UALe,CACf,GAAG,EAAU,OACb,GAAG,EAAI,MAAM,QAAQ,MAAM,EAAE,cAAc,MAAM,CAAC,EAAK,IAAI,EAAE,GAAG,CAAC,CAClE;EAGC,SAAS,EAAI,WAAW,EAAU;EAClC,OAAO,EAAI,SAAS,EAAU;EAC/B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExportMenu.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/reports/ExportMenu.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAsB,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AA+BjF,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,OAAO,EACP,GAAG,EACH,OAAO,GACR,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,2CAyFA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExportMenu.js","names":[],"sources":["../../../src/planmagnet/reports/ExportMenu.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@burdenoff/fe-libs/ui';\nimport { Download, Printer } from 'lucide-react';\nimport { mutationErrorMessage } from '../utils/graphqlErrors';\nimport { EXPORT_REPORT_RUN } from './reportGraphql';\nimport type { ReportExportFormat, ReportRun, ReportWidget } from './reportModel';\n\n/**\n * Export a run (ANR-16). CSV/JSON/XML are rendered server-side (`planmagnetExportReportRun`) and downloaded as\n * given. Excel/PowerPoint are built client-side from the same already-fetched run, via a dynamic `import()` so\n * `write-excel-file`/`pptxgenjs` only ever load when actually used. PDF is a print-optimised view + the\n * browser's own \"Save as PDF\" (`onPrint`) — no PDF library.\n */\n\nfunction slugify(name: string): string {\n return (\n name\n .toLowerCase()\n .trim()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '') || 'report'\n );\n}\n\nfunction downloadTextFile(filename: string, contentType: string, content: string): void {\n const blob = new Blob([content], { type: contentType || 'text/plain;charset=utf-8' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n link.remove();\n URL.revokeObjectURL(url);\n}\n\nexport function ExportMenu({\n reportName,\n widgets,\n run,\n onPrint,\n}: {\n reportName: string;\n widgets: ReportWidget[];\n run: ReportRun | null;\n onPrint: () => void;\n}) {\n const client = useApolloClient();\n const [busy, setBusy] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const fileNameBase = `${slugify(reportName)}-${new Date().toISOString().slice(0, 10)}`;\n const disabled = !run;\n\n const exportServerFormat = async (format: ReportExportFormat) => {\n if (!run) return;\n setBusy(format);\n setError(null);\n try {\n const result = await client.query<{\n planmagnetExportReportRun: { filename: string; contentType: string; content: string };\n }>({\n query: EXPORT_REPORT_RUN,\n variables: { runId: run.id, format },\n fetchPolicy: 'network-only',\n });\n if (result.error) throw result.error;\n const file = result.data?.planmagnetExportReportRun;\n if (!file) throw new Error('The export could not be generated.');\n downloadTextFile(file.filename, file.contentType, file.content);\n } catch (e) {\n setError(mutationErrorMessage(e, 'The export failed.'));\n } finally {\n setBusy(null);\n }\n };\n\n const exportXlsx = async () => {\n if (!run) return;\n setBusy('XLSX');\n setError(null);\n try {\n const { exportReportRunToXlsx } = await import('./reportExportXlsx');\n await exportReportRunToXlsx(widgets, run, fileNameBase);\n } catch (e) {\n setError(mutationErrorMessage(e, 'The Excel export failed.'));\n } finally {\n setBusy(null);\n }\n };\n\n const exportPptx = async () => {\n if (!run) return;\n setBusy('PPTX');\n setError(null);\n try {\n const { exportReportRunToPptx } = await import('./reportExportPptx');\n await exportReportRunToPptx(widgets, run, fileNameBase, reportName);\n } catch (e) {\n setError(mutationErrorMessage(e, 'The PowerPoint export failed.'));\n } finally {\n setBusy(null);\n }\n };\n\n return (\n <div className=\"flex items-center gap-2\">\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button size=\"sm\" variant=\"outline\" disabled={disabled} data-testid=\"report-export\">\n <Download className=\"mr-1 h-4 w-4\" />\n {busy ? `Exporting ${busy}…` : 'Export'}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuLabel>Data</DropdownMenuLabel>\n <DropdownMenuItem onSelect={() => void exportServerFormat('CSV')}>CSV</DropdownMenuItem>\n <DropdownMenuItem onSelect={() => void exportServerFormat('JSON')}>JSON</DropdownMenuItem>\n <DropdownMenuItem onSelect={() => void exportServerFormat('XML')}>XML</DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuLabel>Documents</DropdownMenuLabel>\n <DropdownMenuItem onSelect={() => void exportXlsx()}>Excel (.xlsx)</DropdownMenuItem>\n <DropdownMenuItem onSelect={() => void exportPptx()}>PowerPoint (.pptx)</DropdownMenuItem>\n <DropdownMenuItem onSelect={onPrint}>\n <Printer className=\"mr-1 h-3.5 w-3.5\" />\n PDF (print)\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n {error && (\n <span role=\"alert\" className=\"text-xs text-destructive\">\n {error}\n </span>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PrintReportView.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/reports/PrintReportView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEnE;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,OAAO,EACP,OAAO,EACP,UAAU,GACX,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtC,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,2CA+DA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PrintReportView.js","names":[],"sources":["../../../src/planmagnet/reports/PrintReportView.tsx"],"sourcesContent":["import { Button } from '@burdenoff/fe-libs/ui';\nimport { Printer, X } from 'lucide-react';\nimport { ReportWidgetRenderer } from './ReportWidgetRenderer';\nimport type { ReportWidget, WidgetRunResult } from './reportModel';\n\n/**\n * The print-optimised view (ANR-16's PDF export — a print stylesheet, not a PDF library: `window.print()` lets\n * the browser's own \"Save as PDF\" do the rendering). Reused by both the in-app Export ▸ PDF flow\n * (`ReportsReportPagePage.tsx`, the owner's own widgets/results) and the public `SharedReportPage` (a synthetic\n * `CHART`-typed widget per result, since a share's snapshot carries no widget title/type — see that file).\n *\n * The toolbar (`print:hidden`) never appears in the printed/PDF output, only on screen. The watermark, when\n * set, is `aria-hidden` (decorative) but rendered both on screen and in print via a fixed, tiled overlay —\n * never only in a `@media print` block this package cannot ship (Tailwind utility classes only, per this\n * repo's design constraints).\n */\nexport function PrintReportView({\n reportName,\n generatedAt,\n watermark,\n widgets,\n results,\n onClose,\n onPrintNow,\n}: {\n reportName: string;\n generatedAt: string;\n watermark?: string | null;\n widgets: ReportWidget[];\n results: Map<string, WidgetRunResult>;\n /** Omit for the public shared view, which has no \"back to the builder\" to return to. */\n onClose?: () => void;\n onPrintNow: () => void;\n}) {\n return (\n <div\n className=\"relative mx-auto max-w-4xl bg-background p-6 text-foreground\"\n data-testid=\"print-report-view\"\n >\n {watermark && (\n <div\n aria-hidden={true}\n className=\"pointer-events-none fixed inset-0 z-50 flex flex-wrap content-around justify-around gap-16 overflow-hidden opacity-10 print:opacity-20\"\n >\n {Array.from({ length: 24 }, (_, i) => (\n <span\n key={i}\n className=\"whitespace-nowrap rotate-[-30deg] text-2xl font-semibold text-foreground\"\n >\n {watermark}\n </span>\n ))}\n </div>\n )}\n\n <div className=\"mb-4 flex items-center justify-between gap-2 print:hidden\">\n <p className=\"text-xs text-muted-foreground\">\n Use your browser&rsquo;s print dialog to save this as a PDF.\n </p>\n <div className=\"flex gap-2\">\n <Button size=\"sm\" onClick={onPrintNow} data-testid=\"print-report-now\">\n <Printer className=\"mr-1 h-4 w-4\" />\n Print / Save as PDF\n </Button>\n {onClose && (\n <Button size=\"sm\" variant=\"outline\" onClick={onClose}>\n <X className=\"mr-1 h-4 w-4\" />\n Close\n </Button>\n )}\n </div>\n </div>\n\n <header className=\"mb-6 border-b border-border pb-4\">\n <p className=\"text-xs font-semibold uppercase tracking-wide text-primary\">PlanMagnet</p>\n <h1 className=\"text-2xl font-bold\">{reportName}</h1>\n <p className=\"text-sm text-muted-foreground\">\n Generated {new Date(generatedAt).toLocaleString()}\n </p>\n </header>\n\n <div className=\"space-y-6\">\n {widgets.map((widget) => (\n <section\n key={widget.id}\n className=\"break-inside-avoid rounded-md border border-border p-4\"\n >\n {widget.type !== 'TEXT' && (\n <h2 className=\"mb-2 text-base font-semibold\">{widget.title}</h2>\n )}\n <ReportWidgetRenderer widget={widget} runResult={results.get(widget.id)} />\n </section>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAgBA,SAAgB,EAAgB,EAC9B,eACA,gBACA,cACA,YACA,YACA,YACA,iBAUC;AACD,QACE,kBAAC,OAAD;EACE,WAAU;EACV,eAAY;YAFd;GAIG,KACC,kBAAC,OAAD;IACE,eAAa;IACb,WAAU;cAET,MAAM,KAAK,EAAE,QAAQ,IAAI,GAAG,GAAG,MAC9B,kBAAC,QAAD;KAEE,WAAU;eAET;KACI,EAJA,EAIA,CACP;IACE,CAAA;GAGR,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,KAAD;KAAG,WAAU;eAAgC;KAEzC,CAAA,EACJ,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD;MAAQ,MAAK;MAAK,SAAS;MAAY,eAAY;gBAAnD,CACE,kBAAC,GAAD,EAAS,WAAU,gBAAiB,CAAA,EAAA,sBAE7B;SACR,KACC,kBAAC,GAAD;MAAQ,MAAK;MAAK,SAAQ;MAAU,SAAS;gBAA7C,CACE,kBAAC,GAAD,EAAG,WAAU,gBAAiB,CAAA,EAAA,QAEvB;QAEP;OACF;;GAEN,kBAAC,UAAD;IAAQ,WAAU;cAAlB;KACE,kBAAC,KAAD;MAAG,WAAU;gBAA6D;MAAc,CAAA;KACxF,kBAAC,MAAD;MAAI,WAAU;gBAAsB;MAAgB,CAAA;KACpD,kBAAC,KAAD;MAAG,WAAU;gBAAb,CAA6C,cAChC,IAAI,KAAK,EAAY,CAAC,gBAAgB,CAC/C;;KACG;;GAET,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAQ,KAAK,MACZ,kBAAC,WAAD;KAEE,WAAU;eAFZ,CAIG,EAAO,SAAS,UACf,kBAAC,MAAD;MAAI,WAAU;gBAAgC,EAAO;MAAW,CAAA,EAElE,kBAAC,GAAD;MAA8B;MAAQ,WAAW,EAAQ,IAAI,EAAO,GAAG;MAAI,CAAA,CACnE;OAPH,EAAO,GAOJ,CACV;IACE,CAAA;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReportBuilderCanvas.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/reports/ReportBuilderCanvas.tsx"],"names":[],"mappings":"AAIA,OAAO,EAOL,KAAK,UAAU,EACf,KAAK,YAAY,EAElB,MAAM,eAAe,CAAC;AA8OvB,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,QAAQ,EACR,MAAM,GACP,EAAE;IACD,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB,2CAsGA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReportBuilderCanvas.js","names":[],"sources":["../../../src/planmagnet/reports/ReportBuilderCanvas.tsx"],"sourcesContent":["import { useState, type DragEvent } from 'react';\nimport { Badge, Button } from '@burdenoff/fe-libs/ui';\nimport { ArrowDown, ArrowUp, GripVertical, Minus, Pencil, Plus, Trash2 } from 'lucide-react';\nimport { WidgetEditorDialog } from './WidgetEditorDialog';\nimport {\n GRID_COLUMNS,\n MAX_WIDGETS,\n PARAM_LABELS,\n REPORT_SOURCE_SPECS,\n repackWidgets,\n widgetIndexFromField,\n type FieldError,\n type ReportWidget,\n type WidgetParamKey,\n} from './reportModel';\n\n/**\n * The builder's 12-column grid canvas (ANR-13). There is no free-form drag-to-position: a widget's place comes\n * from its order in the list (reordered by drag-and-drop or the keyboard up/down buttons) and its own width,\n * packed left-to-right with wraparound (`packLayout` in `reportModel.ts`) — the same rule the flex-wrap layout\n * below renders visually, so the canvas preview and the persisted `layout` never disagree, and every layout\n * this UI can produce already satisfies the server's grid bounds.\n */\n\nconst PARAM_KEYS_ORDER: WidgetParamKey[] = [\n 'projectId',\n 'sprintId',\n 'teamId',\n 'from',\n 'to',\n 'limit',\n];\n\nfunction moveItem<T>(list: T[], from: number, to: number): T[] {\n if (to < 0 || to >= list.length) return list;\n const next = list.slice();\n const [item] = next.splice(from, 1);\n if (item === undefined) return list;\n next.splice(to, 0, item);\n return next;\n}\n\nfunction paramSummary(widget: ReportWidget): string | null {\n const parts = PARAM_KEYS_ORDER.filter((key) => {\n const value = widget.params[key];\n return value !== undefined && value !== null && value !== '';\n }).map((key) => {\n const value = widget.params[key];\n const text = key === 'from' || key === 'to' ? String(value).slice(0, 10) : String(value);\n return `${PARAM_LABELS[key]}: ${text}`;\n });\n return parts.length ? parts.join(' · ') : null;\n}\n\nfunction WidgetCard({\n widget,\n index,\n total,\n errors,\n onEdit,\n onRemove,\n onMoveUp,\n onMoveDown,\n onResize,\n onDragStart,\n onDropBefore,\n}: {\n widget: ReportWidget;\n index: number;\n total: number;\n errors: FieldError[];\n onEdit: () => void;\n onRemove: () => void;\n onMoveUp: () => void;\n onMoveDown: () => void;\n onResize: (dims: Partial<{ w: number; h: number }>) => void;\n onDragStart: (event: DragEvent<HTMLDivElement>) => void;\n onDropBefore: (event: DragEvent<HTMLDivElement>) => void;\n}) {\n const [dragOver, setDragOver] = useState(false);\n const cardErrors = errors.filter((e) => widgetIndexFromField(e.field) === index);\n\n return (\n <div\n style={{ width: `${(widget.layout.w / GRID_COLUMNS) * 100}%` }}\n className=\"p-1.5\"\n data-testid=\"report-widget\"\n >\n <div\n draggable\n onDragStart={onDragStart}\n onDragOver={(e) => {\n e.preventDefault();\n setDragOver(true);\n }}\n onDragLeave={() => setDragOver(false)}\n onDrop={(e) => {\n setDragOver(false);\n onDropBefore(e);\n }}\n className={`flex h-full flex-col gap-2 rounded-md border bg-background p-3 ${\n dragOver ? 'ring-2 ring-primary' : 'border-border'\n } ${cardErrors.length ? 'border-destructive' : ''}`}\n >\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex min-w-0 items-start gap-1.5\">\n <GripVertical\n className=\"mt-0.5 h-4 w-4 shrink-0 cursor-grab text-muted-foreground\"\n aria-hidden={true}\n />\n <div className=\"min-w-0\">\n <p className=\"truncate text-sm font-medium\" title={widget.title}>\n {widget.title}\n </p>\n <div className=\"mt-0.5 flex flex-wrap items-center gap-1\">\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {widget.type}\n </Badge>\n {widget.type !== 'TEXT' && (\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n {REPORT_SOURCE_SPECS[widget.source].label}\n </Badge>\n )}\n </div>\n </div>\n </div>\n <div\n className=\"flex shrink-0 items-center gap-0.5\"\n draggable={false}\n onMouseDown={(e) => e.stopPropagation()}\n onDragStart={(e) => e.stopPropagation()}\n >\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"h-7 w-7 p-0\"\n aria-label=\"Move widget earlier\"\n disabled={index === 0}\n onClick={onMoveUp}\n >\n <ArrowUp className=\"h-3.5 w-3.5\" />\n </Button>\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"h-7 w-7 p-0\"\n aria-label=\"Move widget later\"\n disabled={index === total - 1}\n onClick={onMoveDown}\n >\n <ArrowDown className=\"h-3.5 w-3.5\" />\n </Button>\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"h-7 w-7 p-0\"\n aria-label={`Edit ${widget.title}`}\n onClick={onEdit}\n >\n <Pencil className=\"h-3.5 w-3.5\" />\n </Button>\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"h-7 w-7 p-0\"\n aria-label={`Remove ${widget.title}`}\n onClick={onRemove}\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n </div>\n\n {widget.type !== 'TEXT' && paramSummary(widget) && (\n <p className=\"text-xs text-muted-foreground\">{paramSummary(widget)}</p>\n )}\n\n <div\n className=\"mt-auto flex flex-wrap items-center gap-3 border-t border-border pt-2 text-xs text-muted-foreground\"\n draggable={false}\n onMouseDown={(e) => e.stopPropagation()}\n onDragStart={(e) => e.stopPropagation()}\n >\n <SizeStepper\n label=\"Width\"\n value={widget.layout.w}\n min={1}\n max={GRID_COLUMNS}\n onChange={(w) => onResize({ w })}\n />\n <SizeStepper\n label=\"Height\"\n value={widget.layout.h}\n min={1}\n max={GRID_COLUMNS}\n onChange={(h) => onResize({ h })}\n />\n </div>\n\n {cardErrors.length > 0 && (\n <ul className=\"space-y-0.5 text-xs text-destructive\" role=\"alert\">\n {cardErrors.map((e) => (\n <li key={e.field}>{e.message}</li>\n ))}\n </ul>\n )}\n </div>\n </div>\n );\n}\n\nfunction SizeStepper({\n label,\n value,\n min,\n max,\n onChange,\n}: {\n label: string;\n value: number;\n min: number;\n max: number;\n onChange: (value: number) => void;\n}) {\n return (\n <div className=\"flex items-center gap-1\">\n <span>{label}</span>\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"h-6 w-6 p-0\"\n aria-label={`Decrease ${label.toLowerCase()}`}\n disabled={value <= min}\n onClick={() => onChange(Math.max(min, value - 1))}\n >\n <Minus className=\"h-3 w-3\" />\n </Button>\n <span className=\"w-4 text-center tabular-nums\">{value}</span>\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"h-6 w-6 p-0\"\n aria-label={`Increase ${label.toLowerCase()}`}\n disabled={value >= max}\n onClick={() => onChange(Math.min(max, value + 1))}\n >\n <Plus className=\"h-3 w-3\" />\n </Button>\n </div>\n );\n}\n\nexport function ReportBuilderCanvas({\n widgets,\n onChange,\n errors,\n}: {\n widgets: ReportWidget[];\n onChange: (widgets: ReportWidget[]) => void;\n errors: FieldError[];\n}) {\n const [editorOpen, setEditorOpen] = useState(false);\n const [editingIndex, setEditingIndex] = useState<number | null>(null);\n const [dragIndex, setDragIndex] = useState<number | null>(null);\n\n const apply = (next: ReportWidget[]) => onChange(repackWidgets(next));\n\n const openAdd = () => {\n setEditingIndex(null);\n setEditorOpen(true);\n };\n const openEdit = (index: number) => {\n setEditingIndex(index);\n setEditorOpen(true);\n };\n\n const handleSave = (widget: ReportWidget) => {\n if (editingIndex === null) {\n apply([...widgets, widget]);\n } else {\n apply(widgets.map((w, i) => (i === editingIndex ? widget : w)));\n }\n };\n\n const reportLevelErrors = errors.filter((e) => widgetIndexFromField(e.field) === null);\n\n return (\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <h2 className=\"text-sm font-semibold\">Widgets</h2>\n <Badge variant={widgets.length > MAX_WIDGETS ? 'destructive' : 'outline'}>\n {widgets.length} / {MAX_WIDGETS}\n </Badge>\n </div>\n <Button\n size=\"sm\"\n onClick={openAdd}\n disabled={widgets.length >= MAX_WIDGETS}\n data-testid=\"report-add-widget-trigger\"\n >\n <Plus className=\"mr-1 h-4 w-4\" />\n Add widget\n </Button>\n </div>\n\n {reportLevelErrors.length > 0 && (\n <ul className=\"space-y-0.5 text-sm text-destructive\" role=\"alert\">\n {reportLevelErrors.map((e) => (\n <li key={e.field}>{e.message}</li>\n ))}\n </ul>\n )}\n\n {widgets.length === 0 ? (\n <div className=\"rounded-md border border-dashed border-border p-8 text-center text-sm text-muted-foreground\">\n No widgets yet. Add one to start building this report.\n </div>\n ) : (\n <div className=\"flex flex-wrap\" data-testid=\"report-builder\">\n {widgets.map((widget, index) => (\n <WidgetCard\n key={widget.id}\n widget={widget}\n index={index}\n total={widgets.length}\n errors={errors}\n onEdit={() => openEdit(index)}\n onRemove={() => apply(widgets.filter((_, i) => i !== index))}\n onMoveUp={() => apply(moveItem(widgets, index, index - 1))}\n onMoveDown={() => apply(moveItem(widgets, index, index + 1))}\n onResize={(dims) =>\n apply(\n widgets.map((w, i) =>\n i === index ? { ...w, layout: { ...w.layout, ...dims } } : w\n )\n )\n }\n onDragStart={(e) => {\n setDragIndex(index);\n e.dataTransfer.effectAllowed = 'move';\n e.dataTransfer.setData('text/plain', widget.id);\n }}\n onDropBefore={(e) => {\n e.preventDefault();\n if (dragIndex === null || dragIndex === index) return;\n apply(moveItem(widgets, dragIndex, index));\n setDragIndex(null);\n }}\n />\n ))}\n </div>\n )}\n\n <WidgetEditorDialog\n open={editorOpen}\n onOpenChange={setEditorOpen}\n widget={editingIndex === null ? null : (widgets[editingIndex] ?? null)}\n onSave={handleSave}\n />\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReportBuilderPage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/reports/ReportBuilderPage.tsx"],"names":[],"mappings":"AA2PA,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,2CAqCA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReportBuilderPage.js","names":[],"sources":["../../../src/planmagnet/reports/ReportBuilderPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport { CombinedGraphQLErrors } from '@apollo/client/errors';\nimport {\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Input,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Textarea,\n} from '@burdenoff/fe-libs/ui';\nimport { Save, X } from 'lucide-react';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { detailPath } from '../utils/rowNavigation';\nimport { ErrorLine } from '../controls/ConfirmButton';\nimport { LEAVES_PAGE_CONTEXT, throwOnError } from '../utils/mutationResult';\nimport { ReportBuilderCanvas } from './ReportBuilderCanvas';\nimport { CREATE_REPORT, GET_REPORT, UPDATE_REPORT } from './reportGraphql';\nimport {\n blankWidget,\n repackWidgets,\n validateReportDraft,\n type FieldError,\n type ReportRecord,\n type ReportVisibility,\n type ReportWidget,\n} from './reportModel';\n\n/**\n * The report builder (ANR-13): name/description/visibility + the widget grid canvas, shared between create\n * (`ReportsCreateReportPagePage.tsx`, no report yet) and edit (`ReportsEditReportPagePage.tsx`, an existing\n * `id`). A server `BAD_USER_INPUT` this form's own `validateReportDraft` didn't already catch still lands on\n * the right field — `serverFieldError` reads its `extensions.field`, which matches\n * `definition.widgets[i].…` exactly as `report-definition.ts` sets it.\n *\n * `ReportBuilderPage` only loads data (and shows the first-load/not-found states); `ReportBuilderForm` is\n * mounted exactly once real initial data exists (`initial: ReportRecord | null` — always non-null before mount\n * in edit mode) and seeds every field from it via a lazy `useState` initializer, never an effect: there is\n * nothing to resynchronize afterwards; an in-cache `GET_REPORT` refetch while the user is mid-edit must not\n * stomp their unsaved changes, which an effect keyed on the query result would risk doing.\n */\n\nfunction serverFieldError(error: unknown): FieldError | null {\n if (!CombinedGraphQLErrors.is(error)) return null;\n const first = error.errors[0];\n const field = first?.extensions?.field;\n if (!first || typeof field !== 'string' || !field) return null;\n return { field, message: first.message };\n}\n\nfunction toWidgetInput(widget: ReportWidget) {\n const params: Record<string, string | number> = {};\n if (widget.params.projectId) params.projectId = widget.params.projectId;\n if (widget.params.sprintId) params.sprintId = widget.params.sprintId;\n if (widget.params.teamId) params.teamId = widget.params.teamId;\n if (widget.params.from) params.from = widget.params.from;\n if (widget.params.to) params.to = widget.params.to;\n if (widget.params.limit) params.limit = widget.params.limit;\n return {\n id: widget.id,\n type: widget.type,\n title: widget.title,\n source: widget.source,\n params,\n layout: widget.layout,\n };\n}\n\nfunction ReportBuilderForm({\n mode,\n reportId,\n initial,\n}: {\n mode: 'create' | 'edit';\n reportId?: string;\n initial: ReportRecord | null;\n}) {\n const { workspaceId } = usePlanMagnet();\n const navigate = usePlanMagnetNavigate();\n\n const [name, setName] = useState(initial?.name ?? '');\n const [description, setDescription] = useState(initial?.description ?? '');\n const [visibility, setVisibility] = useState<ReportVisibility>(initial?.visibility ?? 'PRIVATE');\n const [widgets, setWidgets] = useState<ReportWidget[]>(\n () => initial?.definition.widgets ?? [blankWidget()]\n );\n const [touched, setTouched] = useState(false);\n const [serverError, setServerError] = useState<FieldError | null>(null);\n const [saveError, setSaveError] = useState<string | null>(null);\n\n const [createReport, createState] = useMutation(CREATE_REPORT);\n const [updateReport, updateState] = useMutation(UPDATE_REPORT);\n const saving = createState.loading || updateState.loading;\n\n const draftErrors = validateReportDraft(widgets);\n const nameError = touched && !name.trim() ? 'Give this report a name.' : null;\n const allErrors = serverError ? [...draftErrors, serverError] : draftErrors;\n\n const handleSave = async () => {\n setTouched(true);\n setSaveError(null);\n setServerError(null);\n if (!name.trim() || draftErrors.length > 0) return;\n const definition = { widgets: repackWidgets(widgets).map(toWidgetInput) };\n try {\n if (mode === 'create') {\n if (!workspaceId) throw new Error('No workspace selected.');\n const result = await throwOnError(\n createReport({\n variables: {\n workspaceId,\n input: {\n name: name.trim(),\n description: description.trim() || null,\n visibility,\n definition,\n },\n },\n context: LEAVES_PAGE_CONTEXT,\n })\n );\n const id = (result.data as { planmagnetCreateReport?: { id: string } } | undefined)\n ?.planmagnetCreateReport?.id;\n if (id) navigate(detailPath('/reports/report-page', id));\n } else if (reportId) {\n await throwOnError(\n updateReport({\n variables: {\n id: reportId,\n input: {\n name: name.trim(),\n description: description.trim() || null,\n visibility,\n definition,\n },\n },\n context: LEAVES_PAGE_CONTEXT,\n })\n );\n navigate(detailPath('/reports/report-page', reportId));\n }\n } catch (e) {\n const field = serverFieldError(e);\n if (field) {\n setServerError(field);\n setSaveError('Fix the highlighted field and try again.');\n } else {\n setSaveError(e instanceof Error ? e.message : 'The report could not be saved.');\n }\n }\n };\n\n const cancel = () =>\n navigate(\n mode === 'edit' && reportId\n ? detailPath('/reports/report-page', reportId)\n : '/reports/reports-page'\n );\n\n return (\n <div className=\"space-y-6 p-6\" data-testid=\"report-builder-page\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n {mode === 'create' ? 'New report' : 'Edit report'}\n </h1>\n <p className=\"text-sm text-muted-foreground\">\n Build a report from widgets over your live PlanMagnet data.\n </p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={cancel}>\n <X className=\"mr-1 h-4 w-4\" />\n Cancel\n </Button>\n <Button\n size=\"sm\"\n onClick={() => void handleSave()}\n disabled={saving}\n data-testid=\"report-save\"\n >\n <Save className=\"mr-1 h-4 w-4\" />\n {saving ? 'Saving…' : 'Save report'}\n </Button>\n </div>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <label htmlFor=\"report-name\" className=\"text-sm font-medium\">\n Name\n </label>\n <Input\n id=\"report-name\"\n className=\"mt-1\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n aria-invalid={!!nameError}\n />\n {nameError && <p className=\"mt-1 text-xs text-destructive\">{nameError}</p>}\n </div>\n <div>\n <label htmlFor=\"report-description\" className=\"text-sm font-medium\">\n Description\n </label>\n <Textarea\n id=\"report-description\"\n className=\"mt-1\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n placeholder=\"What does this report show, and who is it for?\"\n />\n </div>\n <div>\n <label htmlFor=\"report-visibility\" className=\"text-sm font-medium\">\n Visibility\n </label>\n <Select value={visibility} onValueChange={(v) => setVisibility(v as ReportVisibility)}>\n <SelectTrigger id=\"report-visibility\" className=\"mt-1 w-64\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"PRIVATE\">Private — only me</SelectItem>\n <SelectItem value=\"WORKSPACE\">Workspace — everyone can view</SelectItem>\n </SelectContent>\n </Select>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardContent className=\"pt-6\">\n <ReportBuilderCanvas widgets={widgets} onChange={setWidgets} errors={allErrors} />\n </CardContent>\n </Card>\n\n {saveError && <ErrorLine message={saveError} />}\n </div>\n );\n}\n\nexport function ReportBuilderPage({\n mode,\n reportId,\n}: {\n mode: 'create' | 'edit';\n reportId?: string;\n}) {\n const navigate = usePlanMagnetNavigate();\n\n const existing = useQuery<{ planmagnetReport: ReportRecord | null }>(GET_REPORT, {\n variables: { id: reportId ?? '' },\n skip: mode !== 'edit' || !reportId,\n });\n\n if (mode === 'create') {\n return <ReportBuilderForm mode=\"create\" initial={null} />;\n }\n\n // Only before the first load: a refetch must not blank the page.\n if (existing.loading && !existing.data) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <div className=\"h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent\" />\n </div>\n );\n }\n const report = existing.data?.planmagnetReport;\n if (!report) {\n return (\n <div className=\"space-y-3 p-6\">\n <p className=\"text-sm text-muted-foreground\">\n This report does not exist, or you do not have access to it.\n </p>\n <Button size=\"sm\" variant=\"outline\" onClick={() => navigate('/reports/reports-page')}>\n Back to reports\n </Button>\n </div>\n );\n }\n\n // Keyed by id: switching to a different report's edit page (a fresh navigation, not a refetch of this one)\n // mounts a new form with that report's own data, rather than reusing in-progress state from another report.\n return <ReportBuilderForm key={report.id} mode=\"edit\" reportId={reportId} initial={report} />;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReportRunHistory.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/reports/ReportRunHistory.tsx"],"names":[],"mappings":"AAeA;yEACyE;AACzE,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,aAAa,EACb,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,2CAsDA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReportRunHistory.js","names":[],"sources":["../../../src/planmagnet/reports/ReportRunHistory.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\nimport { Badge } from '@burdenoff/fe-libs/ui';\nimport { History } from 'lucide-react';\nimport { PersonName } from '../people/People';\nimport { rowLinkProps } from '../utils/rowNavigation';\nimport { LIST_REPORT_RUNS } from './reportGraphql';\n\ninterface RunListItem {\n id: string;\n trigger: 'MANUAL' | 'SCHEDULE';\n generatedAt: string;\n generatedBy: string;\n deliveryStatus: 'PENDING_NOTIFICATIONS' | null;\n}\n\n/** Past runs of a report (ANR-15) — a run is a snapshot, so re-opening an older one shows exactly what it\n * showed when it ran, even if the underlying data has since changed. */\nexport function ReportRunHistory({\n reportId,\n selectedRunId,\n onSelect,\n}: {\n reportId: string;\n selectedRunId: string | null;\n onSelect: (runId: string) => void;\n}) {\n const { data, loading, error } = useQuery<{\n planmagnetReportRuns: { items: RunListItem[]; totalCount: number };\n }>(LIST_REPORT_RUNS, { variables: { reportId, pagination: { first: 25 } } });\n\n const runs = data?.planmagnetReportRuns.items ?? [];\n\n return (\n <div className=\"space-y-2\" data-testid=\"report-run-history\">\n <h2 className=\"flex items-center gap-1.5 text-sm font-semibold\">\n <History className=\"h-4 w-4\" aria-hidden={true} />\n Run history\n </h2>\n {loading && !data ? (\n <p className=\"text-sm text-muted-foreground\">Loading…</p>\n ) : error ? (\n <p className=\"text-sm text-destructive\">Run history could not be loaded.</p>\n ) : runs.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">No runs yet.</p>\n ) : (\n <ul className=\"space-y-1\">\n {runs.map((run) => {\n const selected = run.id === selectedRunId;\n return (\n <li key={run.id}>\n <div\n {...rowLinkProps(\n () => onSelect(run.id),\n `Open run from ${new Date(run.generatedAt).toLocaleString()}`\n )}\n className={`flex items-center justify-between gap-2 rounded-md border p-2 text-xs ${\n selected ? 'border-primary bg-primary/5' : 'border-border'\n }`}\n >\n <div>\n <p className=\"font-medium\">{new Date(run.generatedAt).toLocaleString()}</p>\n <p className=\"text-muted-foreground\">\n {run.trigger === 'SCHEDULE' ? 'Scheduled' : 'Manual'} · by{' '}\n <PersonName id={run.generatedBy} />\n </p>\n </div>\n {run.deliveryStatus === 'PENDING_NOTIFICATIONS' && (\n <Badge variant=\"outline\" className=\"shrink-0 text-[10px]\">\n No email yet\n </Badge>\n )}\n </div>\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAiBA,SAAgB,EAAiB,EAC/B,aACA,kBACA,eAKC;CACD,IAAM,EAAE,SAAM,YAAS,aAAU,EAE9B,GAAkB,EAAE,WAAW;EAAE;EAAU,YAAY,EAAE,OAAO,IAAI;EAAE,EAAE,CAAC,EAEtE,IAAO,GAAM,qBAAqB,SAAS,EAAE;AAEnD,QACE,kBAAC,OAAD;EAAK,WAAU;EAAY,eAAY;YAAvC,CACE,kBAAC,MAAD;GAAI,WAAU;aAAd,CACE,kBAAC,GAAD;IAAS,WAAU;IAAU,eAAa;IAAQ,CAAA,EAAA,cAE/C;MACJ,KAAW,CAAC,IACX,kBAAC,KAAD;GAAG,WAAU;aAAgC;GAAY,CAAA,GACvD,IACF,kBAAC,KAAD;GAAG,WAAU;aAA2B;GAAoC,CAAA,GAC1E,EAAK,WAAW,IAClB,kBAAC,KAAD;GAAG,WAAU;aAAgC;GAAgB,CAAA,GAE7D,kBAAC,MAAD;GAAI,WAAU;aACX,EAAK,KAAK,MAAQ;IACjB,IAAM,IAAW,EAAI,OAAO;AAC5B,WACE,kBAAC,MAAD,EAAA,UACE,kBAAC,OAAD;KACE,GAAI,QACI,EAAS,EAAI,GAAG,EACtB,iBAAiB,IAAI,KAAK,EAAI,YAAY,CAAC,gBAAgB,GAC5D;KACD,WAAW,yEACT,IAAW,gCAAgC;eAN/C,CASE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;MAAG,WAAU;gBAAe,IAAI,KAAK,EAAI,YAAY,CAAC,gBAAgB;MAAK,CAAA,EAC3E,kBAAC,KAAD;MAAG,WAAU;gBAAb;OACG,EAAI,YAAY,aAAa,cAAc;OAAS;OAAM;OAC3D,kBAAC,GAAD,EAAY,IAAI,EAAI,aAAe,CAAA;OACjC;QACA,EAAA,CAAA,EACL,EAAI,mBAAmB,2BACtB,kBAAC,GAAD;MAAO,SAAQ;MAAU,WAAU;gBAAuB;MAElD,CAAA,CAEN;QACH,EAvBI,EAAI,GAuBR;KAEP;GACC,CAAA,CAEH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReportWidgetRenderer.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/reports/ReportWidgetRenderer.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAML,KAAK,YAAY,EAEjB,KAAK,eAAe,EACrB,MAAM,eAAe,CAAC;AAkRvB,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,SAAS,GACV,EAAE;IACD,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,eAAe,GAAG,SAAS,CAAC;CACxC,kDAkDA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReportWidgetRenderer.js","names":[],"sources":["../../../src/planmagnet/reports/ReportWidgetRenderer.tsx"],"sourcesContent":["import { useId, useMemo, useState } from 'react';\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from 'recharts';\nimport { Lock, ChevronDown, ChevronRight, AlertTriangle } from 'lucide-react';\nimport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@burdenoff/fe-libs/ui';\nimport {\n extractRows,\n humanizeKey,\n pickLabelField,\n pickNumericFields,\n scalarFields,\n type ReportWidget,\n type Row,\n type WidgetRunResult,\n} from './reportModel';\n\n/**\n * Renders one widget's run result (ANR-13/15). The widget's `type` (KPI/CHART/TABLE/TEXT) decides the shape;\n * within CHART/TABLE/KPI, the actual rows/fields are derived generically from the JSON `result` via\n * `reportModel`'s `extractRows`/`pickLabelField`/`pickNumericFields` — there is no per-source switch here, so\n * every one of the 15 `PlanmagnetReportSource`s (including ones added later) renders without a code change.\n *\n * FORBIDDEN and ERROR always show an explicit message (never an empty chart/table) — see the widget-status\n * branch below. Every CHART also carries a same-data `<table>` (a `<details>` disclosure, not visually hidden)\n * as its text alternative, per this package's accessibility bar.\n */\n\nconst CHART_COLORS = [\n 'var(--color-chart-1)',\n 'var(--color-chart-2)',\n 'var(--color-chart-3)',\n 'var(--color-chart-4)',\n 'var(--color-chart-5)',\n 'var(--color-chart-6)',\n];\nconst MAX_CHART_SERIES = 4;\nconst MAX_CHART_POINTS = 60;\nconst MAX_TABLE_COLUMNS = 8;\nconst MAX_TABLE_ROWS = 100;\n\nfunction isIsoDateish(value: unknown): value is string {\n return typeof value === 'string' && /^\\d{4}-\\d{2}-\\d{2}([T ]|$)/.test(value);\n}\n\n/** A scalar cell value as readable text — dates shortened to M/D, booleans spelled out, null/undefined blank. */\nfunction formatCell(value: unknown): string {\n if (value === null || value === undefined) return '—';\n if (typeof value === 'boolean') return value ? 'Yes' : 'No';\n if (isIsoDateish(value)) {\n const date = new Date(value);\n if (!Number.isNaN(date.getTime())) {\n return `${date.getUTCFullYear()}-${String(date.getUTCMonth() + 1).padStart(2, '0')}-${String(\n date.getUTCDate()\n ).padStart(2, '0')}`;\n }\n }\n if (typeof value === 'number') return Number.isInteger(value) ? String(value) : value.toFixed(2);\n return String(value);\n}\n\n/** The x-axis label for a chart point: a short date for date-ish values, the raw string/number otherwise. */\nfunction formatAxisLabel(value: unknown): string {\n if (isIsoDateish(value)) {\n const date = new Date(value as string);\n if (!Number.isNaN(date.getTime())) return `${date.getUTCMonth() + 1}/${date.getUTCDate()}`;\n }\n return value === null || value === undefined ? '' : String(value);\n}\n\nfunction tableColumns(rows: Row[], labelField: string | null): string[] {\n const seen = new Set<string>();\n const columns: string[] = [];\n if (labelField) {\n seen.add(labelField);\n columns.push(labelField);\n }\n for (const row of rows) {\n for (const [key] of scalarFields(row)) {\n if (seen.has(key)) continue;\n seen.add(key);\n columns.push(key);\n if (columns.length >= MAX_TABLE_COLUMNS) return columns;\n }\n }\n return columns;\n}\n\n/** The top-level result's own scalar fields, for a single-record source (PROJECT_STATUS, DELIVERY_KPIS, …). For\n * a bare array with no wrapper (WORK_ITEMS, RISKS, …) there is no top-level summary, so this returns `[]` and\n * the caller aggregates from rows instead. */\nfunction topLevelSummary(result: unknown): [string, string | number | boolean][] {\n if (!result || typeof result !== 'object' || Array.isArray(result)) return [];\n return scalarFields(result as Row);\n}\n\nfunction aggregateFromRows(rows: Row[]): { label: string; value: string }[] {\n const tiles: { label: string; value: string }[] = [\n { label: 'Count', value: String(rows.length) },\n ];\n const labelField = pickLabelField(rows);\n const numericFields = pickNumericFields(rows, labelField).slice(0, 4);\n for (const key of numericFields) {\n const total = rows.reduce((sum, row) => {\n const value = row[key];\n return sum + (typeof value === 'number' ? value : 0);\n }, 0);\n tiles.push({ label: `Total ${humanizeKey(key)}`, value: formatCell(total) });\n }\n return tiles;\n}\n\nfunction KpiTiles({ result }: { result: unknown }) {\n const summary = topLevelSummary(result);\n // extractRows/aggregateFromRows are cheap (object-key scans over an already in-memory JSON result), so this\n // is computed plainly rather than memoized — a `useMemo` here previously tripped\n // `react-hooks/preserve-manual-memoization` (the compiler could not reconcile it with its own inference).\n const tiles =\n summary.length > 0\n ? summary.map(([key, value]) => ({ label: humanizeKey(key), value: formatCell(value) }))\n : aggregateFromRows(extractRows(result));\n if (tiles.length === 0) {\n return <p className=\"text-sm text-muted-foreground\">No figures in this result.</p>;\n }\n return (\n <dl className=\"grid grid-cols-2 gap-3 sm:grid-cols-3\">\n {tiles.map((tile) => (\n <div key={tile.label} className=\"rounded-md border border-border bg-muted/40 p-2\">\n <dt className=\"text-[11px] text-muted-foreground\">{tile.label}</dt>\n <dd className=\"text-lg font-semibold tabular-nums\">{tile.value}</dd>\n </div>\n ))}\n </dl>\n );\n}\n\n/** The accessible text alternative every chart carries — a real `<table>` of the same rows, collapsed by\n * default (a sighted user who wants the chart isn't forced past it, but the data is one click away for\n * anyone who needs it: screen-reader users, anyone wanting exact values). */\nfunction DataTableDisclosure({\n rows,\n labelField,\n title,\n}: {\n rows: Row[];\n labelField: string | null;\n title: string;\n}) {\n const [open, setOpen] = useState(false);\n const panelId = useId();\n const columns = tableColumns(rows, labelField);\n return (\n <div className=\"mt-2\">\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 text-xs font-medium text-primary hover:underline\"\n aria-expanded={open}\n aria-controls={panelId}\n onClick={() => setOpen((v) => !v)}\n >\n {open ? <ChevronDown className=\"h-3 w-3\" /> : <ChevronRight className=\"h-3 w-3\" />}\n View data as a table\n </button>\n {open && (\n <div id={panelId} className=\"mt-2 max-h-64 overflow-auto rounded-md border border-border\">\n <DataTable rows={rows} columns={columns} caption={`${title} — data`} />\n </div>\n )}\n </div>\n );\n}\n\nfunction DataTable({\n rows,\n columns,\n caption,\n}: {\n rows: Row[];\n columns: string[];\n caption: string;\n}) {\n const shown = rows.slice(0, MAX_TABLE_ROWS);\n return (\n <div>\n <Table>\n <TableCaption className=\"sr-only\">{caption}</TableCaption>\n <TableHeader>\n <TableRow>\n {columns.map((col) => (\n <TableHead key={col} scope=\"col\">\n {humanizeKey(col)}\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {shown.map((row, index) => (\n // Rows carry no stable id across sources — the positional key is fine since this table is\n // read-only and re-rendered wholesale from a fresh run result each time, never reordered in place.\n <TableRow key={index}>\n {columns.map((col) => (\n <TableCell key={col}>{formatCell(row[col])}</TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n {rows.length > shown.length && (\n <p className=\"p-2 text-left text-xs text-muted-foreground\">\n Showing {shown.length} of {rows.length} rows.\n </p>\n )}\n </div>\n );\n}\n\nfunction ChartBody({ result, title }: { result: unknown; title: string }) {\n const rows = useMemo(() => extractRows(result), [result]);\n const labelField = useMemo(() => pickLabelField(rows), [rows]);\n const numericFields = useMemo(\n () => pickNumericFields(rows, labelField).slice(0, MAX_CHART_SERIES),\n [rows, labelField]\n );\n\n if (rows.length < 2 || numericFields.length === 0) {\n return (\n <div>\n <p className=\"mb-2 text-xs text-muted-foreground\">\n Not enough rows to chart — showing the figures instead.\n </p>\n <KpiTiles result={result} />\n </div>\n );\n }\n\n const chartData = rows.slice(0, MAX_CHART_POINTS).map((row, index) => {\n const point: Record<string, string | number> = {\n __label: labelField ? formatAxisLabel(row[labelField]) : String(index + 1),\n };\n for (const key of numericFields) {\n const value = row[key];\n point[key] = typeof value === 'number' ? value : 0;\n }\n return point;\n });\n\n return (\n <div>\n <ResponsiveContainer width=\"100%\" height={220}>\n <BarChart data={chartData}>\n <CartesianGrid strokeDasharray=\"3 3\" opacity={0.2} />\n <XAxis dataKey=\"__label\" tick={{ fontSize: 11 }} />\n <YAxis tick={{ fontSize: 11 }} allowDecimals={false} />\n <Tooltip />\n {numericFields.length > 1 && <Legend wrapperStyle={{ fontSize: 12 }} />}\n {numericFields.map((key, index) => (\n <Bar\n key={key}\n dataKey={key}\n name={humanizeKey(key)}\n fill={CHART_COLORS[index % CHART_COLORS.length]}\n />\n ))}\n </BarChart>\n </ResponsiveContainer>\n {rows.length > MAX_CHART_POINTS && (\n <p className=\"mt-1 text-[11px] text-muted-foreground\">\n Showing the first {MAX_CHART_POINTS} of {rows.length} rows.\n </p>\n )}\n <DataTableDisclosure rows={rows} labelField={labelField} title={title} />\n </div>\n );\n}\n\nfunction TableBodyContent({ result }: { result: unknown }) {\n const rows = useMemo(() => extractRows(result), [result]);\n const labelField = useMemo(() => pickLabelField(rows), [rows]);\n if (rows.length === 0) {\n return <p className=\"text-sm text-muted-foreground\">No rows in this result.</p>;\n }\n const columns = tableColumns(rows, labelField);\n return (\n <div className=\"max-h-80 overflow-auto rounded-md border border-border\">\n <DataTable rows={rows} columns={columns} caption=\"Widget data\" />\n </div>\n );\n}\n\nexport function ReportWidgetRenderer({\n widget,\n runResult,\n}: {\n widget: ReportWidget;\n runResult: WidgetRunResult | undefined;\n}) {\n if (widget.type === 'TEXT') {\n return (\n <div className=\"flex h-full items-center border-b border-border pb-1\">\n <h3 className=\"text-sm font-semibold uppercase tracking-wide text-muted-foreground\">\n {widget.title}\n </h3>\n </div>\n );\n }\n\n if (!runResult) {\n return (\n <p className=\"text-sm text-muted-foreground\">\n Not run yet — choose &ldquo;Run now&rdquo; above.\n </p>\n );\n }\n\n if (runResult.status === 'FORBIDDEN') {\n return (\n <div className=\"flex items-start gap-2 text-sm text-muted-foreground\" role=\"status\">\n <Lock className=\"mt-0.5 h-4 w-4 shrink-0\" aria-hidden={true} />\n <div>\n <p>You do not have access to this data.</p>\n {runResult.message && <p className=\"text-xs\">{runResult.message}</p>}\n </div>\n </div>\n );\n }\n\n if (runResult.status === 'ERROR') {\n return (\n <div className=\"flex items-start gap-2 text-sm text-destructive\" role=\"alert\">\n <AlertTriangle className=\"mt-0.5 h-4 w-4 shrink-0\" aria-hidden={true} />\n <p>{runResult.message ?? 'This widget could not be generated.'}</p>\n </div>\n );\n }\n\n switch (widget.type) {\n case 'KPI':\n return <KpiTiles result={runResult.result} />;\n case 'CHART':\n return <ChartBody result={runResult.result} title={widget.title} />;\n case 'TABLE':\n return <TableBodyContent result={runResult.result} />;\n default:\n return null;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchedulesPanel.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/reports/SchedulesPanel.tsx"],"names":[],"mappings":"AAqZA,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,2CAwHhE"}
@@ -1 +0,0 @@
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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"}
@@ -1 +0,0 @@
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"}