@burdenoff/microfe-planmagnet 2026.1008.2 → 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 (1969) 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 +0 -2
  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.js +0 -2
  808. package/dist/planmagnet/team/TeamControls.js +0 -2
  809. package/dist/planmagnet/team/UnmatchedCrewIdentities.js +0 -2
  810. package/dist/planmagnet/team/invitationEmail.js +0 -2
  811. package/dist/planmagnet/time/TaskTimePanel.js +0 -2
  812. package/dist/planmagnet/time/TimeEntryControls.js +0 -2
  813. package/dist/planmagnet/time/TimesheetControls.js +0 -2
  814. package/dist/planmagnet/time/timeShared.js +0 -2
  815. package/dist/planmagnet/utils/cn.js +0 -2
  816. package/dist/planmagnet/utils/email.js +0 -2
  817. package/dist/planmagnet/utils/formValidation.js +0 -2
  818. package/dist/planmagnet/utils/graphqlErrors.js +0 -2
  819. package/dist/planmagnet/utils/lineDiff.js +0 -2
  820. package/dist/planmagnet/utils/mutationResult.js +0 -2
  821. package/dist/planmagnet/utils/navigation.js +0 -2
  822. package/dist/planmagnet/utils/qualityGateCriteria.js +0 -2
  823. package/dist/planmagnet/utils/rowNavigation.js +0 -2
  824. package/dist/planmagnet/utils/statusColor.js +0 -2
  825. package/dist/planmagnet/utils/urlParam.js +0 -2
  826. package/dist/planmagnet/webhooks/webhookTypes.js +0 -2
  827. package/dist/shared/hooks/useTr.js +0 -2
  828. package/dist/shared/utils/i18n.js +0 -2
  829. package/package.json +2 -1
  830. package/dist/_virtual/__vite-browser-external.js.map +0 -1
  831. package/dist/components/Button.d.ts.map +0 -1
  832. package/dist/components/Button.stories.d.ts.map +0 -1
  833. package/dist/components/MarkdownEditor.d.ts.map +0 -1
  834. package/dist/components/MarkdownEditor.js.map +0 -1
  835. package/dist/dev/main.d.ts.map +0 -1
  836. package/dist/generated/global-operations.d.ts.map +0 -1
  837. package/dist/generated/global-types.d.ts.map +0 -1
  838. package/dist/generated/wspace-operations.d.ts.map +0 -1
  839. package/dist/generated/wspace-types.d.ts.map +0 -1
  840. package/dist/index.d.ts.map +0 -1
  841. package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +0 -1
  842. package/dist/node_modules/@apollo/client/errors/ServerError.js.map +0 -1
  843. package/dist/node_modules/@apollo/client/errors/utils.js.map +0 -1
  844. package/dist/node_modules/clsx/dist/clsx.js.map +0 -1
  845. package/dist/node_modules/d3-array/src/ascending.js.map +0 -1
  846. package/dist/node_modules/d3-array/src/bisect.js.map +0 -1
  847. package/dist/node_modules/d3-array/src/bisector.js.map +0 -1
  848. package/dist/node_modules/d3-array/src/descending.js.map +0 -1
  849. package/dist/node_modules/d3-array/src/max.js.map +0 -1
  850. package/dist/node_modules/d3-array/src/min.js.map +0 -1
  851. package/dist/node_modules/d3-array/src/number.js.map +0 -1
  852. package/dist/node_modules/d3-array/src/quantile.js.map +0 -1
  853. package/dist/node_modules/d3-array/src/quickselect.js.map +0 -1
  854. package/dist/node_modules/d3-array/src/range.js.map +0 -1
  855. package/dist/node_modules/d3-array/src/sort.js.map +0 -1
  856. package/dist/node_modules/d3-array/src/ticks.js.map +0 -1
  857. package/dist/node_modules/d3-color/src/color.js.map +0 -1
  858. package/dist/node_modules/d3-color/src/define.js.map +0 -1
  859. package/dist/node_modules/d3-format/src/defaultLocale.js.map +0 -1
  860. package/dist/node_modules/d3-format/src/exponent.js.map +0 -1
  861. package/dist/node_modules/d3-format/src/formatDecimal.js.map +0 -1
  862. package/dist/node_modules/d3-format/src/formatGroup.js.map +0 -1
  863. package/dist/node_modules/d3-format/src/formatNumerals.js.map +0 -1
  864. package/dist/node_modules/d3-format/src/formatPrefixAuto.js.map +0 -1
  865. package/dist/node_modules/d3-format/src/formatRounded.js.map +0 -1
  866. package/dist/node_modules/d3-format/src/formatSpecifier.js.map +0 -1
  867. package/dist/node_modules/d3-format/src/formatTrim.js.map +0 -1
  868. package/dist/node_modules/d3-format/src/formatTypes.js.map +0 -1
  869. package/dist/node_modules/d3-format/src/identity.js.map +0 -1
  870. package/dist/node_modules/d3-format/src/locale.js.map +0 -1
  871. package/dist/node_modules/d3-format/src/precisionFixed.js.map +0 -1
  872. package/dist/node_modules/d3-format/src/precisionPrefix.js.map +0 -1
  873. package/dist/node_modules/d3-format/src/precisionRound.js.map +0 -1
  874. package/dist/node_modules/d3-interpolate/src/array.js.map +0 -1
  875. package/dist/node_modules/d3-interpolate/src/basis.js.map +0 -1
  876. package/dist/node_modules/d3-interpolate/src/basisClosed.js.map +0 -1
  877. package/dist/node_modules/d3-interpolate/src/color.js.map +0 -1
  878. package/dist/node_modules/d3-interpolate/src/constant.js.map +0 -1
  879. package/dist/node_modules/d3-interpolate/src/date.js.map +0 -1
  880. package/dist/node_modules/d3-interpolate/src/number.js.map +0 -1
  881. package/dist/node_modules/d3-interpolate/src/numberArray.js.map +0 -1
  882. package/dist/node_modules/d3-interpolate/src/object.js.map +0 -1
  883. package/dist/node_modules/d3-interpolate/src/piecewise.js.map +0 -1
  884. package/dist/node_modules/d3-interpolate/src/rgb.js.map +0 -1
  885. package/dist/node_modules/d3-interpolate/src/round.js.map +0 -1
  886. package/dist/node_modules/d3-interpolate/src/string.js.map +0 -1
  887. package/dist/node_modules/d3-interpolate/src/value.js.map +0 -1
  888. package/dist/node_modules/d3-path/src/path.js.map +0 -1
  889. package/dist/node_modules/d3-scale/src/band.js.map +0 -1
  890. package/dist/node_modules/d3-scale/src/constant.js.map +0 -1
  891. package/dist/node_modules/d3-scale/src/continuous.js.map +0 -1
  892. package/dist/node_modules/d3-scale/src/diverging.js.map +0 -1
  893. package/dist/node_modules/d3-scale/src/identity.js.map +0 -1
  894. package/dist/node_modules/d3-scale/src/init.js.map +0 -1
  895. package/dist/node_modules/d3-scale/src/linear.js.map +0 -1
  896. package/dist/node_modules/d3-scale/src/log.js.map +0 -1
  897. package/dist/node_modules/d3-scale/src/nice.js.map +0 -1
  898. package/dist/node_modules/d3-scale/src/number.js.map +0 -1
  899. package/dist/node_modules/d3-scale/src/ordinal.js.map +0 -1
  900. package/dist/node_modules/d3-scale/src/pow.js.map +0 -1
  901. package/dist/node_modules/d3-scale/src/quantile.js.map +0 -1
  902. package/dist/node_modules/d3-scale/src/quantize.js.map +0 -1
  903. package/dist/node_modules/d3-scale/src/radial.js.map +0 -1
  904. package/dist/node_modules/d3-scale/src/sequential.js.map +0 -1
  905. package/dist/node_modules/d3-scale/src/sequentialQuantile.js.map +0 -1
  906. package/dist/node_modules/d3-scale/src/symlog.js.map +0 -1
  907. package/dist/node_modules/d3-scale/src/threshold.js.map +0 -1
  908. package/dist/node_modules/d3-scale/src/tickFormat.js.map +0 -1
  909. package/dist/node_modules/d3-scale/src/time.js.map +0 -1
  910. package/dist/node_modules/d3-scale/src/utcTime.js.map +0 -1
  911. package/dist/node_modules/d3-shape/src/area.js.map +0 -1
  912. package/dist/node_modules/d3-shape/src/array.js.map +0 -1
  913. package/dist/node_modules/d3-shape/src/constant.js.map +0 -1
  914. package/dist/node_modules/d3-shape/src/curve/basis.js.map +0 -1
  915. package/dist/node_modules/d3-shape/src/curve/basisClosed.js.map +0 -1
  916. package/dist/node_modules/d3-shape/src/curve/basisOpen.js.map +0 -1
  917. package/dist/node_modules/d3-shape/src/curve/bump.js.map +0 -1
  918. package/dist/node_modules/d3-shape/src/curve/linear.js.map +0 -1
  919. package/dist/node_modules/d3-shape/src/curve/linearClosed.js.map +0 -1
  920. package/dist/node_modules/d3-shape/src/curve/monotone.js.map +0 -1
  921. package/dist/node_modules/d3-shape/src/curve/natural.js.map +0 -1
  922. package/dist/node_modules/d3-shape/src/curve/step.js.map +0 -1
  923. package/dist/node_modules/d3-shape/src/line.js.map +0 -1
  924. package/dist/node_modules/d3-shape/src/math.js.map +0 -1
  925. package/dist/node_modules/d3-shape/src/noop.js.map +0 -1
  926. package/dist/node_modules/d3-shape/src/offset/expand.js.map +0 -1
  927. package/dist/node_modules/d3-shape/src/offset/none.js.map +0 -1
  928. package/dist/node_modules/d3-shape/src/offset/silhouette.js.map +0 -1
  929. package/dist/node_modules/d3-shape/src/offset/wiggle.js.map +0 -1
  930. package/dist/node_modules/d3-shape/src/order/none.js.map +0 -1
  931. package/dist/node_modules/d3-shape/src/path.js.map +0 -1
  932. package/dist/node_modules/d3-shape/src/point.js.map +0 -1
  933. package/dist/node_modules/d3-shape/src/stack.js.map +0 -1
  934. package/dist/node_modules/d3-shape/src/symbol/circle.js.map +0 -1
  935. package/dist/node_modules/d3-shape/src/symbol/cross.js.map +0 -1
  936. package/dist/node_modules/d3-shape/src/symbol/diamond.js.map +0 -1
  937. package/dist/node_modules/d3-shape/src/symbol/square.js.map +0 -1
  938. package/dist/node_modules/d3-shape/src/symbol/star.js.map +0 -1
  939. package/dist/node_modules/d3-shape/src/symbol/triangle.js.map +0 -1
  940. package/dist/node_modules/d3-shape/src/symbol/wye.js.map +0 -1
  941. package/dist/node_modules/d3-shape/src/symbol.js.map +0 -1
  942. package/dist/node_modules/d3-time/src/day.js.map +0 -1
  943. package/dist/node_modules/d3-time/src/duration.js.map +0 -1
  944. package/dist/node_modules/d3-time/src/hour.js.map +0 -1
  945. package/dist/node_modules/d3-time/src/interval.js.map +0 -1
  946. package/dist/node_modules/d3-time/src/millisecond.js.map +0 -1
  947. package/dist/node_modules/d3-time/src/minute.js.map +0 -1
  948. package/dist/node_modules/d3-time/src/month.js.map +0 -1
  949. package/dist/node_modules/d3-time/src/second.js.map +0 -1
  950. package/dist/node_modules/d3-time/src/ticks.js.map +0 -1
  951. package/dist/node_modules/d3-time/src/week.js.map +0 -1
  952. package/dist/node_modules/d3-time/src/year.js.map +0 -1
  953. package/dist/node_modules/d3-time-format/src/defaultLocale.js.map +0 -1
  954. package/dist/node_modules/d3-time-format/src/locale.js.map +0 -1
  955. package/dist/node_modules/decimal.js-light/decimal.js.map +0 -1
  956. package/dist/node_modules/eventemitter3/index.js.map +0 -1
  957. package/dist/node_modules/fast-equals/dist/es/index.js.map +0 -1
  958. package/dist/node_modules/fflate/esm/browser.js.map +0 -1
  959. package/dist/node_modules/internmap/src/index.js.map +0 -1
  960. package/dist/node_modules/jszip/dist/jszip.min.js.map +0 -1
  961. package/dist/node_modules/lodash/_DataView.js.map +0 -1
  962. package/dist/node_modules/lodash/_Hash.js.map +0 -1
  963. package/dist/node_modules/lodash/_ListCache.js.map +0 -1
  964. package/dist/node_modules/lodash/_Map.js.map +0 -1
  965. package/dist/node_modules/lodash/_MapCache.js.map +0 -1
  966. package/dist/node_modules/lodash/_Promise.js.map +0 -1
  967. package/dist/node_modules/lodash/_Set.js.map +0 -1
  968. package/dist/node_modules/lodash/_SetCache.js.map +0 -1
  969. package/dist/node_modules/lodash/_Stack.js.map +0 -1
  970. package/dist/node_modules/lodash/_Symbol.js.map +0 -1
  971. package/dist/node_modules/lodash/_Uint8Array.js.map +0 -1
  972. package/dist/node_modules/lodash/_WeakMap.js.map +0 -1
  973. package/dist/node_modules/lodash/_apply.js.map +0 -1
  974. package/dist/node_modules/lodash/_arrayEach.js.map +0 -1
  975. package/dist/node_modules/lodash/_arrayEvery.js.map +0 -1
  976. package/dist/node_modules/lodash/_arrayFilter.js.map +0 -1
  977. package/dist/node_modules/lodash/_arrayIncludes.js.map +0 -1
  978. package/dist/node_modules/lodash/_arrayIncludesWith.js.map +0 -1
  979. package/dist/node_modules/lodash/_arrayLikeKeys.js.map +0 -1
  980. package/dist/node_modules/lodash/_arrayMap.js.map +0 -1
  981. package/dist/node_modules/lodash/_arrayPush.js.map +0 -1
  982. package/dist/node_modules/lodash/_arraySome.js.map +0 -1
  983. package/dist/node_modules/lodash/_asciiToArray.js.map +0 -1
  984. package/dist/node_modules/lodash/_assignValue.js.map +0 -1
  985. package/dist/node_modules/lodash/_assocIndexOf.js.map +0 -1
  986. package/dist/node_modules/lodash/_baseAssign.js.map +0 -1
  987. package/dist/node_modules/lodash/_baseAssignIn.js.map +0 -1
  988. package/dist/node_modules/lodash/_baseAssignValue.js.map +0 -1
  989. package/dist/node_modules/lodash/_baseClone.js.map +0 -1
  990. package/dist/node_modules/lodash/_baseCreate.js.map +0 -1
  991. package/dist/node_modules/lodash/_baseEach.js.map +0 -1
  992. package/dist/node_modules/lodash/_baseEvery.js.map +0 -1
  993. package/dist/node_modules/lodash/_baseExtremum.js.map +0 -1
  994. package/dist/node_modules/lodash/_baseFindIndex.js.map +0 -1
  995. package/dist/node_modules/lodash/_baseFlatten.js.map +0 -1
  996. package/dist/node_modules/lodash/_baseFor.js.map +0 -1
  997. package/dist/node_modules/lodash/_baseForOwn.js.map +0 -1
  998. package/dist/node_modules/lodash/_baseGet.js.map +0 -1
  999. package/dist/node_modules/lodash/_baseGetAllKeys.js.map +0 -1
  1000. package/dist/node_modules/lodash/_baseGetTag.js.map +0 -1
  1001. package/dist/node_modules/lodash/_baseGt.js.map +0 -1
  1002. package/dist/node_modules/lodash/_baseHasIn.js.map +0 -1
  1003. package/dist/node_modules/lodash/_baseIndexOf.js.map +0 -1
  1004. package/dist/node_modules/lodash/_baseIsArguments.js.map +0 -1
  1005. package/dist/node_modules/lodash/_baseIsEqual.js.map +0 -1
  1006. package/dist/node_modules/lodash/_baseIsEqualDeep.js.map +0 -1
  1007. package/dist/node_modules/lodash/_baseIsMap.js.map +0 -1
  1008. package/dist/node_modules/lodash/_baseIsMatch.js.map +0 -1
  1009. package/dist/node_modules/lodash/_baseIsNaN.js.map +0 -1
  1010. package/dist/node_modules/lodash/_baseIsNative.js.map +0 -1
  1011. package/dist/node_modules/lodash/_baseIsSet.js.map +0 -1
  1012. package/dist/node_modules/lodash/_baseIsTypedArray.js.map +0 -1
  1013. package/dist/node_modules/lodash/_baseIteratee.js.map +0 -1
  1014. package/dist/node_modules/lodash/_baseKeys.js.map +0 -1
  1015. package/dist/node_modules/lodash/_baseKeysIn.js.map +0 -1
  1016. package/dist/node_modules/lodash/_baseLt.js.map +0 -1
  1017. package/dist/node_modules/lodash/_baseMap.js.map +0 -1
  1018. package/dist/node_modules/lodash/_baseMatches.js.map +0 -1
  1019. package/dist/node_modules/lodash/_baseMatchesProperty.js.map +0 -1
  1020. package/dist/node_modules/lodash/_baseOrderBy.js.map +0 -1
  1021. package/dist/node_modules/lodash/_baseProperty.js.map +0 -1
  1022. package/dist/node_modules/lodash/_basePropertyDeep.js.map +0 -1
  1023. package/dist/node_modules/lodash/_baseRange.js.map +0 -1
  1024. package/dist/node_modules/lodash/_baseRest.js.map +0 -1
  1025. package/dist/node_modules/lodash/_baseSetToString.js.map +0 -1
  1026. package/dist/node_modules/lodash/_baseSlice.js.map +0 -1
  1027. package/dist/node_modules/lodash/_baseSome.js.map +0 -1
  1028. package/dist/node_modules/lodash/_baseSortBy.js.map +0 -1
  1029. package/dist/node_modules/lodash/_baseSum.js.map +0 -1
  1030. package/dist/node_modules/lodash/_baseTimes.js.map +0 -1
  1031. package/dist/node_modules/lodash/_baseToString.js.map +0 -1
  1032. package/dist/node_modules/lodash/_baseTrim.js.map +0 -1
  1033. package/dist/node_modules/lodash/_baseUnary.js.map +0 -1
  1034. package/dist/node_modules/lodash/_baseUniq.js.map +0 -1
  1035. package/dist/node_modules/lodash/_baseUnset.js.map +0 -1
  1036. package/dist/node_modules/lodash/_cacheHas.js.map +0 -1
  1037. package/dist/node_modules/lodash/_castPath.js.map +0 -1
  1038. package/dist/node_modules/lodash/_castSlice.js.map +0 -1
  1039. package/dist/node_modules/lodash/_cloneArrayBuffer.js.map +0 -1
  1040. package/dist/node_modules/lodash/_cloneBuffer.js.map +0 -1
  1041. package/dist/node_modules/lodash/_cloneDataView.js.map +0 -1
  1042. package/dist/node_modules/lodash/_cloneRegExp.js.map +0 -1
  1043. package/dist/node_modules/lodash/_cloneSymbol.js.map +0 -1
  1044. package/dist/node_modules/lodash/_cloneTypedArray.js.map +0 -1
  1045. package/dist/node_modules/lodash/_compareAscending.js.map +0 -1
  1046. package/dist/node_modules/lodash/_compareMultiple.js.map +0 -1
  1047. package/dist/node_modules/lodash/_copyArray.js.map +0 -1
  1048. package/dist/node_modules/lodash/_copyObject.js.map +0 -1
  1049. package/dist/node_modules/lodash/_copySymbols.js.map +0 -1
  1050. package/dist/node_modules/lodash/_copySymbolsIn.js.map +0 -1
  1051. package/dist/node_modules/lodash/_coreJsData.js.map +0 -1
  1052. package/dist/node_modules/lodash/_createBaseEach.js.map +0 -1
  1053. package/dist/node_modules/lodash/_createBaseFor.js.map +0 -1
  1054. package/dist/node_modules/lodash/_createCaseFirst.js.map +0 -1
  1055. package/dist/node_modules/lodash/_createFind.js.map +0 -1
  1056. package/dist/node_modules/lodash/_createRange.js.map +0 -1
  1057. package/dist/node_modules/lodash/_createSet.js.map +0 -1
  1058. package/dist/node_modules/lodash/_customOmitClone.js.map +0 -1
  1059. package/dist/node_modules/lodash/_defineProperty.js.map +0 -1
  1060. package/dist/node_modules/lodash/_equalArrays.js.map +0 -1
  1061. package/dist/node_modules/lodash/_equalByTag.js.map +0 -1
  1062. package/dist/node_modules/lodash/_equalObjects.js.map +0 -1
  1063. package/dist/node_modules/lodash/_flatRest.js.map +0 -1
  1064. package/dist/node_modules/lodash/_freeGlobal.js.map +0 -1
  1065. package/dist/node_modules/lodash/_getAllKeys.js.map +0 -1
  1066. package/dist/node_modules/lodash/_getAllKeysIn.js.map +0 -1
  1067. package/dist/node_modules/lodash/_getMapData.js.map +0 -1
  1068. package/dist/node_modules/lodash/_getMatchData.js.map +0 -1
  1069. package/dist/node_modules/lodash/_getNative.js.map +0 -1
  1070. package/dist/node_modules/lodash/_getPrototype.js.map +0 -1
  1071. package/dist/node_modules/lodash/_getRawTag.js.map +0 -1
  1072. package/dist/node_modules/lodash/_getSymbols.js.map +0 -1
  1073. package/dist/node_modules/lodash/_getSymbolsIn.js.map +0 -1
  1074. package/dist/node_modules/lodash/_getTag.js.map +0 -1
  1075. package/dist/node_modules/lodash/_getValue.js.map +0 -1
  1076. package/dist/node_modules/lodash/_hasPath.js.map +0 -1
  1077. package/dist/node_modules/lodash/_hasUnicode.js.map +0 -1
  1078. package/dist/node_modules/lodash/_hashClear.js.map +0 -1
  1079. package/dist/node_modules/lodash/_hashDelete.js.map +0 -1
  1080. package/dist/node_modules/lodash/_hashGet.js.map +0 -1
  1081. package/dist/node_modules/lodash/_hashHas.js.map +0 -1
  1082. package/dist/node_modules/lodash/_hashSet.js.map +0 -1
  1083. package/dist/node_modules/lodash/_initCloneArray.js.map +0 -1
  1084. package/dist/node_modules/lodash/_initCloneByTag.js.map +0 -1
  1085. package/dist/node_modules/lodash/_initCloneObject.js.map +0 -1
  1086. package/dist/node_modules/lodash/_isFlattenable.js.map +0 -1
  1087. package/dist/node_modules/lodash/_isIndex.js.map +0 -1
  1088. package/dist/node_modules/lodash/_isIterateeCall.js.map +0 -1
  1089. package/dist/node_modules/lodash/_isKey.js.map +0 -1
  1090. package/dist/node_modules/lodash/_isKeyable.js.map +0 -1
  1091. package/dist/node_modules/lodash/_isMasked.js.map +0 -1
  1092. package/dist/node_modules/lodash/_isPrototype.js.map +0 -1
  1093. package/dist/node_modules/lodash/_isStrictComparable.js.map +0 -1
  1094. package/dist/node_modules/lodash/_listCacheClear.js.map +0 -1
  1095. package/dist/node_modules/lodash/_listCacheDelete.js.map +0 -1
  1096. package/dist/node_modules/lodash/_listCacheGet.js.map +0 -1
  1097. package/dist/node_modules/lodash/_listCacheHas.js.map +0 -1
  1098. package/dist/node_modules/lodash/_listCacheSet.js.map +0 -1
  1099. package/dist/node_modules/lodash/_mapCacheClear.js.map +0 -1
  1100. package/dist/node_modules/lodash/_mapCacheDelete.js.map +0 -1
  1101. package/dist/node_modules/lodash/_mapCacheGet.js.map +0 -1
  1102. package/dist/node_modules/lodash/_mapCacheHas.js.map +0 -1
  1103. package/dist/node_modules/lodash/_mapCacheSet.js.map +0 -1
  1104. package/dist/node_modules/lodash/_mapToArray.js.map +0 -1
  1105. package/dist/node_modules/lodash/_matchesStrictComparable.js.map +0 -1
  1106. package/dist/node_modules/lodash/_memoizeCapped.js.map +0 -1
  1107. package/dist/node_modules/lodash/_nativeCreate.js.map +0 -1
  1108. package/dist/node_modules/lodash/_nativeKeys.js.map +0 -1
  1109. package/dist/node_modules/lodash/_nativeKeysIn.js.map +0 -1
  1110. package/dist/node_modules/lodash/_nodeUtil.js.map +0 -1
  1111. package/dist/node_modules/lodash/_objectToString.js.map +0 -1
  1112. package/dist/node_modules/lodash/_overArg.js.map +0 -1
  1113. package/dist/node_modules/lodash/_overRest.js.map +0 -1
  1114. package/dist/node_modules/lodash/_parent.js.map +0 -1
  1115. package/dist/node_modules/lodash/_root.js.map +0 -1
  1116. package/dist/node_modules/lodash/_setCacheAdd.js.map +0 -1
  1117. package/dist/node_modules/lodash/_setCacheHas.js.map +0 -1
  1118. package/dist/node_modules/lodash/_setToArray.js.map +0 -1
  1119. package/dist/node_modules/lodash/_setToString.js.map +0 -1
  1120. package/dist/node_modules/lodash/_shortOut.js.map +0 -1
  1121. package/dist/node_modules/lodash/_stackClear.js.map +0 -1
  1122. package/dist/node_modules/lodash/_stackDelete.js.map +0 -1
  1123. package/dist/node_modules/lodash/_stackGet.js.map +0 -1
  1124. package/dist/node_modules/lodash/_stackHas.js.map +0 -1
  1125. package/dist/node_modules/lodash/_stackSet.js.map +0 -1
  1126. package/dist/node_modules/lodash/_strictIndexOf.js.map +0 -1
  1127. package/dist/node_modules/lodash/_stringToArray.js.map +0 -1
  1128. package/dist/node_modules/lodash/_stringToPath.js.map +0 -1
  1129. package/dist/node_modules/lodash/_toKey.js.map +0 -1
  1130. package/dist/node_modules/lodash/_toSource.js.map +0 -1
  1131. package/dist/node_modules/lodash/_trimmedEndIndex.js.map +0 -1
  1132. package/dist/node_modules/lodash/_unicodeToArray.js.map +0 -1
  1133. package/dist/node_modules/lodash/constant.js.map +0 -1
  1134. package/dist/node_modules/lodash/debounce.js.map +0 -1
  1135. package/dist/node_modules/lodash/eq.js.map +0 -1
  1136. package/dist/node_modules/lodash/every.js.map +0 -1
  1137. package/dist/node_modules/lodash/find.js.map +0 -1
  1138. package/dist/node_modules/lodash/findIndex.js.map +0 -1
  1139. package/dist/node_modules/lodash/flatMap.js.map +0 -1
  1140. package/dist/node_modules/lodash/flatten.js.map +0 -1
  1141. package/dist/node_modules/lodash/get.js.map +0 -1
  1142. package/dist/node_modules/lodash/hasIn.js.map +0 -1
  1143. package/dist/node_modules/lodash/identity.js.map +0 -1
  1144. package/dist/node_modules/lodash/isArguments.js.map +0 -1
  1145. package/dist/node_modules/lodash/isArray.js.map +0 -1
  1146. package/dist/node_modules/lodash/isArrayLike.js.map +0 -1
  1147. package/dist/node_modules/lodash/isBoolean.js.map +0 -1
  1148. package/dist/node_modules/lodash/isBuffer.js.map +0 -1
  1149. package/dist/node_modules/lodash/isEqual.js.map +0 -1
  1150. package/dist/node_modules/lodash/isFunction.js.map +0 -1
  1151. package/dist/node_modules/lodash/isLength.js.map +0 -1
  1152. package/dist/node_modules/lodash/isMap.js.map +0 -1
  1153. package/dist/node_modules/lodash/isNaN.js.map +0 -1
  1154. package/dist/node_modules/lodash/isNil.js.map +0 -1
  1155. package/dist/node_modules/lodash/isNumber.js.map +0 -1
  1156. package/dist/node_modules/lodash/isObject.js.map +0 -1
  1157. package/dist/node_modules/lodash/isObjectLike.js.map +0 -1
  1158. package/dist/node_modules/lodash/isPlainObject.js.map +0 -1
  1159. package/dist/node_modules/lodash/isSet.js.map +0 -1
  1160. package/dist/node_modules/lodash/isString.js.map +0 -1
  1161. package/dist/node_modules/lodash/isSymbol.js.map +0 -1
  1162. package/dist/node_modules/lodash/isTypedArray.js.map +0 -1
  1163. package/dist/node_modules/lodash/keys.js.map +0 -1
  1164. package/dist/node_modules/lodash/keysIn.js.map +0 -1
  1165. package/dist/node_modules/lodash/last.js.map +0 -1
  1166. package/dist/node_modules/lodash/map.js.map +0 -1
  1167. package/dist/node_modules/lodash/mapValues.js.map +0 -1
  1168. package/dist/node_modules/lodash/max.js.map +0 -1
  1169. package/dist/node_modules/lodash/maxBy.js.map +0 -1
  1170. package/dist/node_modules/lodash/memoize.js.map +0 -1
  1171. package/dist/node_modules/lodash/min.js.map +0 -1
  1172. package/dist/node_modules/lodash/noop.js.map +0 -1
  1173. package/dist/node_modules/lodash/now.js.map +0 -1
  1174. package/dist/node_modules/lodash/omit.js.map +0 -1
  1175. package/dist/node_modules/lodash/property.js.map +0 -1
  1176. package/dist/node_modules/lodash/range.js.map +0 -1
  1177. package/dist/node_modules/lodash/some.js.map +0 -1
  1178. package/dist/node_modules/lodash/sortBy.js.map +0 -1
  1179. package/dist/node_modules/lodash/stubArray.js.map +0 -1
  1180. package/dist/node_modules/lodash/stubFalse.js.map +0 -1
  1181. package/dist/node_modules/lodash/sumBy.js.map +0 -1
  1182. package/dist/node_modules/lodash/throttle.js.map +0 -1
  1183. package/dist/node_modules/lodash/toFinite.js.map +0 -1
  1184. package/dist/node_modules/lodash/toInteger.js.map +0 -1
  1185. package/dist/node_modules/lodash/toNumber.js.map +0 -1
  1186. package/dist/node_modules/lodash/toString.js.map +0 -1
  1187. package/dist/node_modules/lodash/uniqBy.js.map +0 -1
  1188. package/dist/node_modules/lodash/upperFirst.js.map +0 -1
  1189. package/dist/node_modules/object-assign/index.js.map +0 -1
  1190. package/dist/node_modules/pptxgenjs/dist/pptxgen.es.js.map +0 -1
  1191. package/dist/node_modules/prop-types/checkPropTypes.js.map +0 -1
  1192. package/dist/node_modules/prop-types/factoryWithThrowingShims.js.map +0 -1
  1193. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js.map +0 -1
  1194. package/dist/node_modules/prop-types/index.js.map +0 -1
  1195. package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js.map +0 -1
  1196. package/dist/node_modules/prop-types/lib/has.js.map +0 -1
  1197. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js.map +0 -1
  1198. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js.map +0 -1
  1199. package/dist/node_modules/prop-types/node_modules/react-is/index.js.map +0 -1
  1200. package/dist/node_modules/react-is/cjs/react-is.development.js.map +0 -1
  1201. package/dist/node_modules/react-is/cjs/react-is.production.min.js.map +0 -1
  1202. package/dist/node_modules/react-is/index.js.map +0 -1
  1203. package/dist/node_modules/react-smooth/es6/Animate.js.map +0 -1
  1204. package/dist/node_modules/react-smooth/es6/AnimateManager.js.map +0 -1
  1205. package/dist/node_modules/react-smooth/es6/configUpdate.js.map +0 -1
  1206. package/dist/node_modules/react-smooth/es6/easing.js.map +0 -1
  1207. package/dist/node_modules/react-smooth/es6/index.js.map +0 -1
  1208. package/dist/node_modules/react-smooth/es6/setRafTimeout.js.map +0 -1
  1209. package/dist/node_modules/react-smooth/es6/util.js.map +0 -1
  1210. package/dist/node_modules/recharts/es6/cartesian/Area.js.map +0 -1
  1211. package/dist/node_modules/recharts/es6/cartesian/Bar.js.map +0 -1
  1212. package/dist/node_modules/recharts/es6/cartesian/Brush.js.map +0 -1
  1213. package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js.map +0 -1
  1214. package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js.map +0 -1
  1215. package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js.map +0 -1
  1216. package/dist/node_modules/recharts/es6/cartesian/Line.js.map +0 -1
  1217. package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js.map +0 -1
  1218. package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js.map +0 -1
  1219. package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js.map +0 -1
  1220. package/dist/node_modules/recharts/es6/cartesian/XAxis.js.map +0 -1
  1221. package/dist/node_modules/recharts/es6/cartesian/YAxis.js.map +0 -1
  1222. package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js.map +0 -1
  1223. package/dist/node_modules/recharts/es6/cartesian/getTicks.js.map +0 -1
  1224. package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js.map +0 -1
  1225. package/dist/node_modules/recharts/es6/chart/AreaChart.js.map +0 -1
  1226. package/dist/node_modules/recharts/es6/chart/BarChart.js.map +0 -1
  1227. package/dist/node_modules/recharts/es6/chart/LineChart.js.map +0 -1
  1228. package/dist/node_modules/recharts/es6/chart/Sankey.js.map +0 -1
  1229. package/dist/node_modules/recharts/es6/chart/Treemap.js.map +0 -1
  1230. package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js.map +0 -1
  1231. package/dist/node_modules/recharts/es6/component/Cell.js.map +0 -1
  1232. package/dist/node_modules/recharts/es6/component/Cursor.js.map +0 -1
  1233. package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js.map +0 -1
  1234. package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js.map +0 -1
  1235. package/dist/node_modules/recharts/es6/component/Label.js.map +0 -1
  1236. package/dist/node_modules/recharts/es6/component/LabelList.js.map +0 -1
  1237. package/dist/node_modules/recharts/es6/component/Legend.js.map +0 -1
  1238. package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js.map +0 -1
  1239. package/dist/node_modules/recharts/es6/component/Text.js.map +0 -1
  1240. package/dist/node_modules/recharts/es6/component/Tooltip.js.map +0 -1
  1241. package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js.map +0 -1
  1242. package/dist/node_modules/recharts/es6/container/Layer.js.map +0 -1
  1243. package/dist/node_modules/recharts/es6/container/Surface.js.map +0 -1
  1244. package/dist/node_modules/recharts/es6/context/chartLayoutContext.js.map +0 -1
  1245. package/dist/node_modules/recharts/es6/shape/Cross.js.map +0 -1
  1246. package/dist/node_modules/recharts/es6/shape/Curve.js.map +0 -1
  1247. package/dist/node_modules/recharts/es6/shape/Dot.js.map +0 -1
  1248. package/dist/node_modules/recharts/es6/shape/Polygon.js.map +0 -1
  1249. package/dist/node_modules/recharts/es6/shape/Rectangle.js.map +0 -1
  1250. package/dist/node_modules/recharts/es6/shape/Sector.js.map +0 -1
  1251. package/dist/node_modules/recharts/es6/shape/Symbols.js.map +0 -1
  1252. package/dist/node_modules/recharts/es6/shape/Trapezoid.js.map +0 -1
  1253. package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js.map +0 -1
  1254. package/dist/node_modules/recharts/es6/util/BarUtils.js.map +0 -1
  1255. package/dist/node_modules/recharts/es6/util/CartesianUtils.js.map +0 -1
  1256. package/dist/node_modules/recharts/es6/util/ChartUtils.js.map +0 -1
  1257. package/dist/node_modules/recharts/es6/util/Constants.js.map +0 -1
  1258. package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js.map +0 -1
  1259. package/dist/node_modules/recharts/es6/util/DOMUtils.js.map +0 -1
  1260. package/dist/node_modules/recharts/es6/util/DataUtils.js.map +0 -1
  1261. package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js.map +0 -1
  1262. package/dist/node_modules/recharts/es6/util/Events.js.map +0 -1
  1263. package/dist/node_modules/recharts/es6/util/Global.js.map +0 -1
  1264. package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js.map +0 -1
  1265. package/dist/node_modules/recharts/es6/util/LogUtils.js.map +0 -1
  1266. package/dist/node_modules/recharts/es6/util/PolarUtils.js.map +0 -1
  1267. package/dist/node_modules/recharts/es6/util/ReactUtils.js.map +0 -1
  1268. package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js.map +0 -1
  1269. package/dist/node_modules/recharts/es6/util/ShallowEqual.js.map +0 -1
  1270. package/dist/node_modules/recharts/es6/util/TickUtils.js.map +0 -1
  1271. package/dist/node_modules/recharts/es6/util/calculateViewBox.js.map +0 -1
  1272. package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js.map +0 -1
  1273. package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js.map +0 -1
  1274. package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js.map +0 -1
  1275. package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js.map +0 -1
  1276. package/dist/node_modules/recharts/es6/util/getLegendProps.js.map +0 -1
  1277. package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js.map +0 -1
  1278. package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js.map +0 -1
  1279. package/dist/node_modules/recharts/es6/util/tooltip/translate.js.map +0 -1
  1280. package/dist/node_modules/recharts/es6/util/types.js.map +0 -1
  1281. package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js.map +0 -1
  1282. package/dist/node_modules/recharts-scale/es6/util/arithmetic.js.map +0 -1
  1283. package/dist/node_modules/recharts-scale/es6/util/utils.js.map +0 -1
  1284. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +0 -1
  1285. package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js.map +0 -1
  1286. package/dist/node_modules/victory-vendor/es/d3-scale.js.map +0 -1
  1287. package/dist/node_modules/write-excel-file/modules/export/convertFileContentToUint8ArrayBrowser.js.map +0 -1
  1288. package/dist/node_modules/write-excel-file/modules/export/convertFilesContentToUint8Arrays.js.map +0 -1
  1289. package/dist/node_modules/write-excel-file/modules/export/downloadBlob.js.map +0 -1
  1290. package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileBrowser.js.map +0 -1
  1291. package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileUniversal.js.map +0 -1
  1292. package/dist/node_modules/write-excel-file/modules/getSheetData/getSheetData.js.map +0 -1
  1293. package/dist/node_modules/write-excel-file/modules/xlsx/features/conditionalFormatting.js.map +0 -1
  1294. package/dist/node_modules/write-excel-file/modules/xlsx/features/images.js.map +0 -1
  1295. package/dist/node_modules/write-excel-file/modules/xlsx/features/stickyRowsOrColumns.js.map +0 -1
  1296. package/dist/node_modules/write-excel-file/modules/xlsx/files/_Content_Types_.xml.js.map +0 -1
  1297. package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.js.map +0 -1
  1298. package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.rels.js.map +0 -1
  1299. package/dist/node_modules/write-excel-file/modules/xlsx/files/rels.js.map +0 -1
  1300. package/dist/node_modules/write-excel-file/modules/xlsx/files/sharedStrings.xml.js.map +0 -1
  1301. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/cell.js.map +0 -1
  1302. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/column.js.map +0 -1
  1303. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/columns.js.map +0 -1
  1304. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/drawingReference.js.map +0 -1
  1305. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/helpers/getCellStyleProperties.js.map +0 -1
  1306. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/mergedCellsDescription.js.map +0 -1
  1307. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageMargins.js.map +0 -1
  1308. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageSetup.js.map +0 -1
  1309. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/processMergedCells.js.map +0 -1
  1310. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/row.js.map +0 -1
  1311. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheet.xml.js.map +0 -1
  1312. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetData.js.map +0 -1
  1313. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetViews.js.map +0 -1
  1314. package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml.rels.js.map +0 -1
  1315. package/dist/node_modules/write-excel-file/modules/xlsx/files/styles.xml.js.map +0 -1
  1316. package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.js.map +0 -1
  1317. package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.rels.js.map +0 -1
  1318. package/dist/node_modules/write-excel-file/modules/xlsx/generateXlsxFileContents.js.map +0 -1
  1319. package/dist/node_modules/write-excel-file/modules/xlsx/getFeatures.js.map +0 -1
  1320. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/convertDateToSerialNumber.js.map +0 -1
  1321. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getAdditionalContent.js.map +0 -1
  1322. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getElementXml.js.map +0 -1
  1323. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getWrittenFiles.js.map +0 -1
  1324. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/transformContent.js.map +0 -1
  1325. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getAlignmentXml.js.map +0 -1
  1326. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getBorderXml.js.map +0 -1
  1327. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getCellAddress.js.map +0 -1
  1328. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFileExtensionForContentType.js.map +0 -1
  1329. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFillXml.js.map +0 -1
  1330. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFontXml.js.map +0 -1
  1331. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getOrderOfSiblings.js.map +0 -1
  1332. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getXlsxColorForHexColor.js.map +0 -1
  1333. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasAlignment.js.map +0 -1
  1334. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasBorder.js.map +0 -1
  1335. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFill.js.map +0 -1
  1336. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFont.js.map +0 -1
  1337. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isCellObject.js.map +0 -1
  1338. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isObject.js.map +0 -1
  1339. package/dist/node_modules/write-excel-file/modules/xlsx/helpers/orderOfSiblings.js.map +0 -1
  1340. package/dist/node_modules/write-excel-file/modules/xlsx/initializeSharedStrings.js.map +0 -1
  1341. package/dist/node_modules/write-excel-file/modules/xlsx/initializeSheets.js.map +0 -1
  1342. package/dist/node_modules/write-excel-file/modules/xlsx/initializeStyles.js.map +0 -1
  1343. package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetData.js.map +0 -1
  1344. package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetName.js.map +0 -1
  1345. package/dist/node_modules/write-excel-file/modules/xml/appendMarkupInsideElement.js.map +0 -1
  1346. package/dist/node_modules/write-excel-file/modules/xml/applyEnclosingElementOffset.js.map +0 -1
  1347. package/dist/node_modules/write-excel-file/modules/xml/escapeXmlSpecialCharacters.js.map +0 -1
  1348. package/dist/node_modules/write-excel-file/modules/xml/findElement.js.map +0 -1
  1349. package/dist/node_modules/write-excel-file/modules/xml/findElementInsideElement.js.map +0 -1
  1350. package/dist/node_modules/write-excel-file/modules/xml/findElementsNonRecursive_.js.map +0 -1
  1351. package/dist/node_modules/write-excel-file/modules/xml/getAttributesString.js.map +0 -1
  1352. package/dist/node_modules/write-excel-file/modules/xml/getChildElements.js.map +0 -1
  1353. package/dist/node_modules/write-excel-file/modules/xml/getClosingTagMarkup.js.map +0 -1
  1354. package/dist/node_modules/write-excel-file/modules/xml/getMarkupInsideElement.js.map +0 -1
  1355. package/dist/node_modules/write-excel-file/modules/xml/getOpeningTagMarkup.js.map +0 -1
  1356. package/dist/node_modules/write-excel-file/modules/xml/getSelfClosingTagMarkup.js.map +0 -1
  1357. package/dist/node_modules/write-excel-file/modules/xml/insertElementMarkupAccordingToOrderOfSiblings.js.map +0 -1
  1358. package/dist/node_modules/write-excel-file/modules/xml/prependMarkupInsideElement.js.map +0 -1
  1359. package/dist/node_modules/write-excel-file/modules/xml/removeInvalidXmlCharacters.js.map +0 -1
  1360. package/dist/node_modules/write-excel-file/modules/xml/replaceElement.js.map +0 -1
  1361. package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeName.js.map +0 -1
  1362. package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeValue.js.map +0 -1
  1363. package/dist/node_modules/write-excel-file/modules/xml/sanitizeTextContent.js.map +0 -1
  1364. package/dist/node_modules/write-excel-file/modules/xml/setMarkupInsideElement.js.map +0 -1
  1365. package/dist/node_modules/write-excel-file/modules/zip/zipToArrayBuffer.js.map +0 -1
  1366. package/dist/planmagnet/PlanMagnetRoot.d.ts.map +0 -1
  1367. package/dist/planmagnet/PlanMagnetRoot.js.map +0 -1
  1368. package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +0 -1
  1369. package/dist/planmagnet/PlanMagnetRoutes.js.map +0 -1
  1370. package/dist/planmagnet/activity/activityDescribe.d.ts.map +0 -1
  1371. package/dist/planmagnet/activity/activityDescribe.js.map +0 -1
  1372. package/dist/planmagnet/activity/relativeTime.d.ts.map +0 -1
  1373. package/dist/planmagnet/activity/relativeTime.js.map +0 -1
  1374. package/dist/planmagnet/admin/PlanMagnetAdminRoot.d.ts.map +0 -1
  1375. package/dist/planmagnet/admin/PlanMagnetAdminRoot.js.map +0 -1
  1376. package/dist/planmagnet/automation/AutomationExecutionsPanel.d.ts.map +0 -1
  1377. package/dist/planmagnet/automation/AutomationExecutionsPanel.js.map +0 -1
  1378. package/dist/planmagnet/automation/AutomationRuleFields.d.ts.map +0 -1
  1379. package/dist/planmagnet/automation/AutomationRuleFields.js.map +0 -1
  1380. package/dist/planmagnet/automation/automationRuleTypes.d.ts.map +0 -1
  1381. package/dist/planmagnet/automation/automationRuleTypes.js.map +0 -1
  1382. package/dist/planmagnet/board/BoardViewBar.d.ts.map +0 -1
  1383. package/dist/planmagnet/board/BoardViewBar.js.map +0 -1
  1384. package/dist/planmagnet/board/BulkActions.d.ts.map +0 -1
  1385. package/dist/planmagnet/board/BulkActions.js.map +0 -1
  1386. package/dist/planmagnet/board/ProjectBoard.d.ts.map +0 -1
  1387. package/dist/planmagnet/board/ProjectBoard.js.map +0 -1
  1388. package/dist/planmagnet/board/boardViewConfig.d.ts.map +0 -1
  1389. package/dist/planmagnet/board/boardViewConfig.js.map +0 -1
  1390. package/dist/planmagnet/budgets/BudgetControls.d.ts.map +0 -1
  1391. package/dist/planmagnet/budgets/BudgetControls.js.map +0 -1
  1392. package/dist/planmagnet/budgets/ExpenseControls.d.ts.map +0 -1
  1393. package/dist/planmagnet/budgets/ExpenseControls.js.map +0 -1
  1394. package/dist/planmagnet/budgets/ProjectBudgetsSummary.d.ts.map +0 -1
  1395. package/dist/planmagnet/budgets/ProjectBudgetsSummary.js.map +0 -1
  1396. package/dist/planmagnet/budgets/budgetMath.d.ts.map +0 -1
  1397. package/dist/planmagnet/budgets/budgetMath.js.map +0 -1
  1398. package/dist/planmagnet/comments/CommentAttachmentUpload.d.ts.map +0 -1
  1399. package/dist/planmagnet/comments/CommentAttachmentUpload.js.map +0 -1
  1400. package/dist/planmagnet/comments/CommentAttachments.d.ts.map +0 -1
  1401. package/dist/planmagnet/comments/CommentAttachments.js.map +0 -1
  1402. package/dist/planmagnet/comments/CommentBody.d.ts.map +0 -1
  1403. package/dist/planmagnet/comments/CommentBody.js.map +0 -1
  1404. package/dist/planmagnet/comments/CommentThread.d.ts.map +0 -1
  1405. package/dist/planmagnet/comments/CommentThread.js.map +0 -1
  1406. package/dist/planmagnet/comments/MentionComposer.d.ts.map +0 -1
  1407. package/dist/planmagnet/comments/MentionComposer.js.map +0 -1
  1408. package/dist/planmagnet/comments/RoadmapComments.d.ts.map +0 -1
  1409. package/dist/planmagnet/comments/RoadmapComments.js.map +0 -1
  1410. package/dist/planmagnet/comments/TargetComments.d.ts.map +0 -1
  1411. package/dist/planmagnet/comments/TargetComments.js.map +0 -1
  1412. package/dist/planmagnet/comments/WorkItemActivity.d.ts.map +0 -1
  1413. package/dist/planmagnet/comments/WorkItemActivity.js.map +0 -1
  1414. package/dist/planmagnet/comments/WorkItemComments.d.ts.map +0 -1
  1415. package/dist/planmagnet/comments/WorkItemComments.js.map +0 -1
  1416. package/dist/planmagnet/comments/commentAttachmentUploadClient.d.ts.map +0 -1
  1417. package/dist/planmagnet/comments/commentAttachmentUploadClient.js.map +0 -1
  1418. package/dist/planmagnet/comments/commentImageTokens.d.ts.map +0 -1
  1419. package/dist/planmagnet/comments/commentImageTokens.js.map +0 -1
  1420. package/dist/planmagnet/comments/commentTokens.d.ts.map +0 -1
  1421. package/dist/planmagnet/comments/commentTokens.js.map +0 -1
  1422. package/dist/planmagnet/comments/fileDisplay.d.ts.map +0 -1
  1423. package/dist/planmagnet/comments/fileDisplay.js.map +0 -1
  1424. package/dist/planmagnet/comments/useCommentFileUrl.d.ts.map +0 -1
  1425. package/dist/planmagnet/comments/useCommentFileUrl.js.map +0 -1
  1426. package/dist/planmagnet/controls/AutomationRuleControls.d.ts.map +0 -1
  1427. package/dist/planmagnet/controls/AutomationRuleControls.js.map +0 -1
  1428. package/dist/planmagnet/controls/CompetitorControls.d.ts.map +0 -1
  1429. package/dist/planmagnet/controls/CompetitorControls.js.map +0 -1
  1430. package/dist/planmagnet/controls/ConfirmButton.d.ts.map +0 -1
  1431. package/dist/planmagnet/controls/ConfirmButton.js.map +0 -1
  1432. package/dist/planmagnet/controls/CustomFieldControls.d.ts.map +0 -1
  1433. package/dist/planmagnet/controls/CustomFieldControls.js.map +0 -1
  1434. package/dist/planmagnet/controls/CustomFieldValuesPanel.d.ts.map +0 -1
  1435. package/dist/planmagnet/controls/CustomFieldValuesPanel.js.map +0 -1
  1436. package/dist/planmagnet/controls/FeatureControls.d.ts.map +0 -1
  1437. package/dist/planmagnet/controls/FeatureControls.js.map +0 -1
  1438. package/dist/planmagnet/controls/FeatureTriage.d.ts.map +0 -1
  1439. package/dist/planmagnet/controls/FeatureTriage.js.map +0 -1
  1440. package/dist/planmagnet/controls/FeedbackControls.d.ts.map +0 -1
  1441. package/dist/planmagnet/controls/FeedbackControls.js.map +0 -1
  1442. package/dist/planmagnet/controls/LiveStatus.d.ts.map +0 -1
  1443. package/dist/planmagnet/controls/LiveStatus.js.map +0 -1
  1444. package/dist/planmagnet/controls/MilestoneControls.d.ts.map +0 -1
  1445. package/dist/planmagnet/controls/MilestoneControls.js.map +0 -1
  1446. package/dist/planmagnet/controls/ObjectiveControls.d.ts.map +0 -1
  1447. package/dist/planmagnet/controls/ObjectiveControls.js.map +0 -1
  1448. package/dist/planmagnet/controls/Pickers.d.ts.map +0 -1
  1449. package/dist/planmagnet/controls/Pickers.js.map +0 -1
  1450. package/dist/planmagnet/controls/PortfolioControls.d.ts.map +0 -1
  1451. package/dist/planmagnet/controls/PortfolioControls.js.map +0 -1
  1452. package/dist/planmagnet/controls/PrioritizationControls.d.ts.map +0 -1
  1453. package/dist/planmagnet/controls/PrioritizationControls.js.map +0 -1
  1454. package/dist/planmagnet/controls/ProgramControls.d.ts.map +0 -1
  1455. package/dist/planmagnet/controls/ProgramControls.js.map +0 -1
  1456. package/dist/planmagnet/controls/ProjectControls.d.ts.map +0 -1
  1457. package/dist/planmagnet/controls/ProjectControls.js.map +0 -1
  1458. package/dist/planmagnet/controls/QualityGateControls.d.ts.map +0 -1
  1459. package/dist/planmagnet/controls/QualityGateControls.js.map +0 -1
  1460. package/dist/planmagnet/controls/ReleaseControls.d.ts.map +0 -1
  1461. package/dist/planmagnet/controls/ReleaseControls.js.map +0 -1
  1462. package/dist/planmagnet/controls/RiskControls.d.ts.map +0 -1
  1463. package/dist/planmagnet/controls/RiskControls.js.map +0 -1
  1464. package/dist/planmagnet/controls/SyncControls.d.ts.map +0 -1
  1465. package/dist/planmagnet/controls/SyncControls.js.map +0 -1
  1466. package/dist/planmagnet/controls/TemplateControls.d.ts.map +0 -1
  1467. package/dist/planmagnet/controls/TemplateControls.js.map +0 -1
  1468. package/dist/planmagnet/controls/WebhookSubscriptionControls.d.ts.map +0 -1
  1469. package/dist/planmagnet/controls/WebhookSubscriptionControls.js.map +0 -1
  1470. package/dist/planmagnet/controls/WorkItemControls.d.ts.map +0 -1
  1471. package/dist/planmagnet/controls/WorkItemControls.js.map +0 -1
  1472. package/dist/planmagnet/create/CreateDialogs.d.ts.map +0 -1
  1473. package/dist/planmagnet/create/CreateDialogs.js.map +0 -1
  1474. package/dist/planmagnet/dashboards/DashboardUI.d.ts.map +0 -1
  1475. package/dist/planmagnet/dashboards/DashboardUI.js.map +0 -1
  1476. package/dist/planmagnet/dashboards/cards/DeliveryTimelineCard.d.ts.map +0 -1
  1477. package/dist/planmagnet/dashboards/cards/DeliveryTimelineCard.js.map +0 -1
  1478. package/dist/planmagnet/dashboards/cards/ObjectivesProgressCard.d.ts.map +0 -1
  1479. package/dist/planmagnet/dashboards/cards/ObjectivesProgressCard.js.map +0 -1
  1480. package/dist/planmagnet/dashboards/cards/PortfolioHealthCard.d.ts.map +0 -1
  1481. package/dist/planmagnet/dashboards/cards/PortfolioHealthCard.js.map +0 -1
  1482. package/dist/planmagnet/dashboards/cards/QualityMetricsCard.d.ts.map +0 -1
  1483. package/dist/planmagnet/dashboards/cards/QualityMetricsCard.js.map +0 -1
  1484. package/dist/planmagnet/dashboards/cards/RiskSeverityCard.d.ts.map +0 -1
  1485. package/dist/planmagnet/dashboards/cards/RiskSeverityCard.js.map +0 -1
  1486. package/dist/planmagnet/dashboards/cards/RoadmapHorizonCard.d.ts.map +0 -1
  1487. package/dist/planmagnet/dashboards/cards/RoadmapHorizonCard.js.map +0 -1
  1488. package/dist/planmagnet/dashboards/cards/SprintCapacityCard.d.ts.map +0 -1
  1489. package/dist/planmagnet/dashboards/cards/SprintCapacityCard.js.map +0 -1
  1490. package/dist/planmagnet/dashboards/cards/TaskCompletionCard.d.ts.map +0 -1
  1491. package/dist/planmagnet/dashboards/cards/TaskCompletionCard.js.map +0 -1
  1492. package/dist/planmagnet/dashboards/cards/TeamCapacityCard.d.ts.map +0 -1
  1493. package/dist/planmagnet/dashboards/cards/TeamCapacityCard.js.map +0 -1
  1494. package/dist/planmagnet/dashboards/cards/TeamOverviewCard.d.ts.map +0 -1
  1495. package/dist/planmagnet/dashboards/cards/TeamOverviewCard.js.map +0 -1
  1496. package/dist/planmagnet/dashboards/cards/TeamWorkloadCard.d.ts.map +0 -1
  1497. package/dist/planmagnet/dashboards/cards/TeamWorkloadCard.js.map +0 -1
  1498. package/dist/planmagnet/dashboards/cards/TimeLoggedCard.d.ts.map +0 -1
  1499. package/dist/planmagnet/dashboards/cards/TimeLoggedCard.js.map +0 -1
  1500. package/dist/planmagnet/dependency/DependencyGraph.d.ts.map +0 -1
  1501. package/dist/planmagnet/dependency/DependencyGraph.js.map +0 -1
  1502. package/dist/planmagnet/dependency/DependencyPanel.d.ts.map +0 -1
  1503. package/dist/planmagnet/dependency/DependencyPanel.js.map +0 -1
  1504. package/dist/planmagnet/dependency/GanttChart.d.ts.map +0 -1
  1505. package/dist/planmagnet/dependency/GanttChart.js.map +0 -1
  1506. package/dist/planmagnet/dependency/useProjectWorkItemsGraph.d.ts.map +0 -1
  1507. package/dist/planmagnet/dependency/useProjectWorkItemsGraph.js.map +0 -1
  1508. package/dist/planmagnet/discussion/WorkItemDiscussionPanel.d.ts.map +0 -1
  1509. package/dist/planmagnet/discussion/WorkItemDiscussionPanel.js.map +0 -1
  1510. package/dist/planmagnet/docs/DocDiffView.d.ts.map +0 -1
  1511. package/dist/planmagnet/docs/DocDiffView.js.map +0 -1
  1512. package/dist/planmagnet/docs/DocStatusBadge.d.ts.map +0 -1
  1513. package/dist/planmagnet/docs/DocStatusBadge.js.map +0 -1
  1514. package/dist/planmagnet/docs/DocSuggestionsPanel.d.ts.map +0 -1
  1515. package/dist/planmagnet/docs/DocSuggestionsPanel.js.map +0 -1
  1516. package/dist/planmagnet/docs/DocVersionCompare.d.ts.map +0 -1
  1517. package/dist/planmagnet/docs/DocVersionCompare.js.map +0 -1
  1518. package/dist/planmagnet/export/ExportWorkItemsButton.d.ts.map +0 -1
  1519. package/dist/planmagnet/export/ExportWorkItemsButton.js.map +0 -1
  1520. package/dist/planmagnet/export/workItemsCsv.d.ts.map +0 -1
  1521. package/dist/planmagnet/export/workItemsCsv.js.map +0 -1
  1522. package/dist/planmagnet/forecast/DeliveryForecastCard.d.ts.map +0 -1
  1523. package/dist/planmagnet/forecast/DeliveryForecastCard.js.map +0 -1
  1524. package/dist/planmagnet/forecast/ProjectOutlookCard.d.ts.map +0 -1
  1525. package/dist/planmagnet/forecast/ProjectOutlookCard.js.map +0 -1
  1526. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.d.ts.map +0 -1
  1527. package/dist/planmagnet/forecast/ProjectRiskSummaryCard.js.map +0 -1
  1528. package/dist/planmagnet/forecast/ResourceForecastCard.d.ts.map +0 -1
  1529. package/dist/planmagnet/forecast/ResourceForecastCard.js.map +0 -1
  1530. package/dist/planmagnet/forecast/riskFlags.d.ts.map +0 -1
  1531. package/dist/planmagnet/forecast/riskFlags.js.map +0 -1
  1532. package/dist/planmagnet/hooks/useCounts.d.ts.map +0 -1
  1533. package/dist/planmagnet/hooks/useCounts.js.map +0 -1
  1534. package/dist/planmagnet/hooks/useEntityId.d.ts.map +0 -1
  1535. package/dist/planmagnet/hooks/useEntityId.js.map +0 -1
  1536. package/dist/planmagnet/hooks/useLiveRefresh.d.ts.map +0 -1
  1537. package/dist/planmagnet/hooks/useLiveRefresh.js.map +0 -1
  1538. package/dist/planmagnet/hooks/usePresence.d.ts.map +0 -1
  1539. package/dist/planmagnet/hooks/usePresence.js.map +0 -1
  1540. package/dist/planmagnet/hooks/useProjectWorkflow.d.ts.map +0 -1
  1541. package/dist/planmagnet/hooks/useProjectWorkflow.js.map +0 -1
  1542. package/dist/planmagnet/import/exportColumns.d.ts.map +0 -1
  1543. package/dist/planmagnet/import/exportColumns.js.map +0 -1
  1544. package/dist/planmagnet/index.d.ts.map +0 -1
  1545. package/dist/planmagnet/integrations/routes.d.ts.map +0 -1
  1546. package/dist/planmagnet/integrations/routes.js.map +0 -1
  1547. package/dist/planmagnet/integrations/syncTypes.d.ts.map +0 -1
  1548. package/dist/planmagnet/integrations/syncTypes.js.map +0 -1
  1549. package/dist/planmagnet/integrations/useSyncProviderCapabilities.d.ts.map +0 -1
  1550. package/dist/planmagnet/integrations/useSyncProviderCapabilities.js.map +0 -1
  1551. package/dist/planmagnet/links/CodeLinksPanel.d.ts.map +0 -1
  1552. package/dist/planmagnet/links/CodeLinksPanel.js.map +0 -1
  1553. package/dist/planmagnet/links/IssueLinksPanel.d.ts.map +0 -1
  1554. package/dist/planmagnet/links/IssueLinksPanel.js.map +0 -1
  1555. package/dist/planmagnet/meetings/MeetingActionItemsPanel.d.ts.map +0 -1
  1556. package/dist/planmagnet/meetings/MeetingActionItemsPanel.js.map +0 -1
  1557. package/dist/planmagnet/meetings/MeetingsCard.d.ts.map +0 -1
  1558. package/dist/planmagnet/meetings/MeetingsCard.js.map +0 -1
  1559. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.d.ts.map +0 -1
  1560. package/dist/planmagnet/meetings/ScheduleCeremoniesDialog.js.map +0 -1
  1561. package/dist/planmagnet/meetings/ScheduleMeetingDialog.d.ts.map +0 -1
  1562. package/dist/planmagnet/meetings/ScheduleMeetingDialog.js.map +0 -1
  1563. package/dist/planmagnet/meetings/UnlinkMeetingDialog.d.ts.map +0 -1
  1564. package/dist/planmagnet/meetings/UnlinkMeetingDialog.js.map +0 -1
  1565. package/dist/planmagnet/meetings/meetingActions.d.ts.map +0 -1
  1566. package/dist/planmagnet/meetings/meetingActions.js.map +0 -1
  1567. package/dist/planmagnet/meetings/meetingGraphql.d.ts.map +0 -1
  1568. package/dist/planmagnet/meetings/meetingGraphql.js.map +0 -1
  1569. package/dist/planmagnet/meetings/meetingModel.d.ts.map +0 -1
  1570. package/dist/planmagnet/meetings/meetingModel.js.map +0 -1
  1571. package/dist/planmagnet/milestones/MilestoneControls.d.ts.map +0 -1
  1572. package/dist/planmagnet/milestones/MilestoneControls.js.map +0 -1
  1573. package/dist/planmagnet/pages/ActivityActivityPagePage.d.ts.map +0 -1
  1574. package/dist/planmagnet/pages/ActivityActivityPagePage.js.map +0 -1
  1575. package/dist/planmagnet/pages/AiActivityPagePage.d.ts.map +0 -1
  1576. package/dist/planmagnet/pages/AiActivityPagePage.js.map +0 -1
  1577. package/dist/planmagnet/pages/AiPlanPagePage.d.ts.map +0 -1
  1578. package/dist/planmagnet/pages/AiPlanPagePage.js.map +0 -1
  1579. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.d.ts.map +0 -1
  1580. package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js.map +0 -1
  1581. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.d.ts.map +0 -1
  1582. package/dist/planmagnet/pages/AutomationAutomationRuleDetailPagePage.js.map +0 -1
  1583. package/dist/planmagnet/pages/AutomationAutomationRulesPagePage.d.ts.map +0 -1
  1584. package/dist/planmagnet/pages/AutomationAutomationRulesPagePage.js.map +0 -1
  1585. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.d.ts.map +0 -1
  1586. package/dist/planmagnet/pages/AutomationCreateAutomationRulePagePage.js.map +0 -1
  1587. package/dist/planmagnet/pages/CompetitorsCompetitorDetailPagePage.d.ts.map +0 -1
  1588. package/dist/planmagnet/pages/CompetitorsCompetitorDetailPagePage.js.map +0 -1
  1589. package/dist/planmagnet/pages/CompetitorsCompetitorsPagePage.d.ts.map +0 -1
  1590. package/dist/planmagnet/pages/CompetitorsCompetitorsPagePage.js.map +0 -1
  1591. package/dist/planmagnet/pages/CompetitorsCreateCompetitorPagePage.d.ts.map +0 -1
  1592. package/dist/planmagnet/pages/CompetitorsCreateCompetitorPagePage.js.map +0 -1
  1593. package/dist/planmagnet/pages/CompetitorsEditCompetitorPagePage.d.ts.map +0 -1
  1594. package/dist/planmagnet/pages/CompetitorsEditCompetitorPagePage.js.map +0 -1
  1595. package/dist/planmagnet/pages/DashboardDashboardPagePage.d.ts.map +0 -1
  1596. package/dist/planmagnet/pages/DashboardDashboardPagePage.js.map +0 -1
  1597. package/dist/planmagnet/pages/DashboardsExecutivePagePage.d.ts.map +0 -1
  1598. package/dist/planmagnet/pages/DashboardsExecutivePagePage.js.map +0 -1
  1599. package/dist/planmagnet/pages/DashboardsLeadershipPagePage.d.ts.map +0 -1
  1600. package/dist/planmagnet/pages/DashboardsLeadershipPagePage.js.map +0 -1
  1601. package/dist/planmagnet/pages/DashboardsProjectManagerPagePage.d.ts.map +0 -1
  1602. package/dist/planmagnet/pages/DashboardsProjectManagerPagePage.js.map +0 -1
  1603. package/dist/planmagnet/pages/DashboardsTeamUtilizationPagePage.d.ts.map +0 -1
  1604. package/dist/planmagnet/pages/DashboardsTeamUtilizationPagePage.js.map +0 -1
  1605. package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts.map +0 -1
  1606. package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +0 -1
  1607. package/dist/planmagnet/pages/DocsDocsPagePage.d.ts.map +0 -1
  1608. package/dist/planmagnet/pages/DocsDocsPagePage.js.map +0 -1
  1609. package/dist/planmagnet/pages/GoalsCreateObjectivePagePage.d.ts.map +0 -1
  1610. package/dist/planmagnet/pages/GoalsCreateObjectivePagePage.js.map +0 -1
  1611. package/dist/planmagnet/pages/GoalsGoalsPagePage.d.ts.map +0 -1
  1612. package/dist/planmagnet/pages/GoalsGoalsPagePage.js.map +0 -1
  1613. package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.d.ts.map +0 -1
  1614. package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js.map +0 -1
  1615. package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.d.ts.map +0 -1
  1616. package/dist/planmagnet/pages/IntegrationsNewSyncPagePage.js.map +0 -1
  1617. package/dist/planmagnet/pages/IntegrationsSyncDetailPagePage.d.ts.map +0 -1
  1618. package/dist/planmagnet/pages/IntegrationsSyncDetailPagePage.js.map +0 -1
  1619. package/dist/planmagnet/pages/IntegrationsSyncsPagePage.d.ts.map +0 -1
  1620. package/dist/planmagnet/pages/IntegrationsSyncsPagePage.js.map +0 -1
  1621. package/dist/planmagnet/pages/IntegrationsWebhooksPagePage.d.ts.map +0 -1
  1622. package/dist/planmagnet/pages/IntegrationsWebhooksPagePage.js.map +0 -1
  1623. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.d.ts.map +0 -1
  1624. package/dist/planmagnet/pages/MeetingsMeetingDetailPagePage.js.map +0 -1
  1625. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.d.ts.map +0 -1
  1626. package/dist/planmagnet/pages/MeetingsMeetingsPagePage.js.map +0 -1
  1627. package/dist/planmagnet/pages/NotFoundPage.d.ts.map +0 -1
  1628. package/dist/planmagnet/pages/NotFoundPage.js.map +0 -1
  1629. package/dist/planmagnet/pages/PortfoliosCreatePortfolioPagePage.d.ts.map +0 -1
  1630. package/dist/planmagnet/pages/PortfoliosCreatePortfolioPagePage.js.map +0 -1
  1631. package/dist/planmagnet/pages/PortfoliosEditPortfolioPagePage.d.ts.map +0 -1
  1632. package/dist/planmagnet/pages/PortfoliosEditPortfolioPagePage.js.map +0 -1
  1633. package/dist/planmagnet/pages/PortfoliosPortfolioDetailPagePage.d.ts.map +0 -1
  1634. package/dist/planmagnet/pages/PortfoliosPortfolioDetailPagePage.js.map +0 -1
  1635. package/dist/planmagnet/pages/PortfoliosPortfoliosPagePage.d.ts.map +0 -1
  1636. package/dist/planmagnet/pages/PortfoliosPortfoliosPagePage.js.map +0 -1
  1637. package/dist/planmagnet/pages/ProductsCreateProductPagePage.d.ts.map +0 -1
  1638. package/dist/planmagnet/pages/ProductsCreateProductPagePage.js.map +0 -1
  1639. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.d.ts.map +0 -1
  1640. package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js.map +0 -1
  1641. package/dist/planmagnet/pages/ProductsCustomerSatisfactionPagePage.d.ts.map +0 -1
  1642. package/dist/planmagnet/pages/ProductsCustomerSatisfactionPagePage.js.map +0 -1
  1643. package/dist/planmagnet/pages/ProductsEditProductPagePage.d.ts.map +0 -1
  1644. package/dist/planmagnet/pages/ProductsEditProductPagePage.js.map +0 -1
  1645. package/dist/planmagnet/pages/ProductsEditReleasePagePage.d.ts.map +0 -1
  1646. package/dist/planmagnet/pages/ProductsEditReleasePagePage.js.map +0 -1
  1647. package/dist/planmagnet/pages/ProductsEditRoadmapPagePage.d.ts.map +0 -1
  1648. package/dist/planmagnet/pages/ProductsEditRoadmapPagePage.js.map +0 -1
  1649. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.d.ts.map +0 -1
  1650. package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js.map +0 -1
  1651. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.d.ts.map +0 -1
  1652. package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js.map +0 -1
  1653. package/dist/planmagnet/pages/ProductsFeaturesPagePage.d.ts.map +0 -1
  1654. package/dist/planmagnet/pages/ProductsFeaturesPagePage.js.map +0 -1
  1655. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.d.ts.map +0 -1
  1656. package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js.map +0 -1
  1657. package/dist/planmagnet/pages/ProductsPrioritizationPagePage.d.ts.map +0 -1
  1658. package/dist/planmagnet/pages/ProductsPrioritizationPagePage.js.map +0 -1
  1659. package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts.map +0 -1
  1660. package/dist/planmagnet/pages/ProductsProductDetailPagePage.js.map +0 -1
  1661. package/dist/planmagnet/pages/ProductsProductFeatureDetailPagePage.d.ts.map +0 -1
  1662. package/dist/planmagnet/pages/ProductsProductFeatureDetailPagePage.js.map +0 -1
  1663. package/dist/planmagnet/pages/ProductsProductHierarchyPagePage.d.ts.map +0 -1
  1664. package/dist/planmagnet/pages/ProductsProductHierarchyPagePage.js.map +0 -1
  1665. package/dist/planmagnet/pages/ProductsProductLinesPagePage.d.ts.map +0 -1
  1666. package/dist/planmagnet/pages/ProductsProductLinesPagePage.js.map +0 -1
  1667. package/dist/planmagnet/pages/ProductsProductsPagePage.d.ts.map +0 -1
  1668. package/dist/planmagnet/pages/ProductsProductsPagePage.js.map +0 -1
  1669. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.d.ts.map +0 -1
  1670. package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js.map +0 -1
  1671. package/dist/planmagnet/pages/ProductsReleasesPagePage.d.ts.map +0 -1
  1672. package/dist/planmagnet/pages/ProductsReleasesPagePage.js.map +0 -1
  1673. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.d.ts.map +0 -1
  1674. package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js.map +0 -1
  1675. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.d.ts.map +0 -1
  1676. package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js.map +0 -1
  1677. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.d.ts.map +0 -1
  1678. package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js.map +0 -1
  1679. package/dist/planmagnet/pages/ProgramsCreateProgramPagePage.d.ts.map +0 -1
  1680. package/dist/planmagnet/pages/ProgramsCreateProgramPagePage.js.map +0 -1
  1681. package/dist/planmagnet/pages/ProgramsEditProgramPagePage.d.ts.map +0 -1
  1682. package/dist/planmagnet/pages/ProgramsEditProgramPagePage.js.map +0 -1
  1683. package/dist/planmagnet/pages/ProgramsProgramDetailPagePage.d.ts.map +0 -1
  1684. package/dist/planmagnet/pages/ProgramsProgramDetailPagePage.js.map +0 -1
  1685. package/dist/planmagnet/pages/ProgramsProgramsPagePage.d.ts.map +0 -1
  1686. package/dist/planmagnet/pages/ProgramsProgramsPagePage.js.map +0 -1
  1687. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.d.ts.map +0 -1
  1688. package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.js.map +0 -1
  1689. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.d.ts.map +0 -1
  1690. package/dist/planmagnet/pages/ProjectsAtRiskPagePage.js.map +0 -1
  1691. package/dist/planmagnet/pages/ProjectsBudgetDetailPagePage.d.ts.map +0 -1
  1692. package/dist/planmagnet/pages/ProjectsBudgetDetailPagePage.js.map +0 -1
  1693. package/dist/planmagnet/pages/ProjectsBudgetsPagePage.d.ts.map +0 -1
  1694. package/dist/planmagnet/pages/ProjectsBudgetsPagePage.js.map +0 -1
  1695. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.d.ts.map +0 -1
  1696. package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js.map +0 -1
  1697. package/dist/planmagnet/pages/ProjectsCriticalPathPagePage.d.ts.map +0 -1
  1698. package/dist/planmagnet/pages/ProjectsCriticalPathPagePage.js.map +0 -1
  1699. package/dist/planmagnet/pages/ProjectsCustomFieldsPagePage.d.ts.map +0 -1
  1700. package/dist/planmagnet/pages/ProjectsCustomFieldsPagePage.js.map +0 -1
  1701. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.d.ts.map +0 -1
  1702. package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js.map +0 -1
  1703. package/dist/planmagnet/pages/ProjectsGanttPagePage.d.ts.map +0 -1
  1704. package/dist/planmagnet/pages/ProjectsGanttPagePage.js.map +0 -1
  1705. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.d.ts.map +0 -1
  1706. package/dist/planmagnet/pages/ProjectsMilestoneDetailPagePage.js.map +0 -1
  1707. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.d.ts.map +0 -1
  1708. package/dist/planmagnet/pages/ProjectsMilestonesPagePage.js.map +0 -1
  1709. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +0 -1
  1710. package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +0 -1
  1711. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.d.ts.map +0 -1
  1712. package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js.map +0 -1
  1713. package/dist/planmagnet/pages/ProjectsPlanningPagePage.d.ts.map +0 -1
  1714. package/dist/planmagnet/pages/ProjectsPlanningPagePage.js.map +0 -1
  1715. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +0 -1
  1716. package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +0 -1
  1717. package/dist/planmagnet/pages/ProjectsProjectsPagePage.d.ts.map +0 -1
  1718. package/dist/planmagnet/pages/ProjectsProjectsPagePage.js.map +0 -1
  1719. package/dist/planmagnet/pages/ProjectsQualityGatesPagePage.d.ts.map +0 -1
  1720. package/dist/planmagnet/pages/ProjectsQualityGatesPagePage.js.map +0 -1
  1721. package/dist/planmagnet/pages/ProjectsWorkflowPagePage.d.ts.map +0 -1
  1722. package/dist/planmagnet/pages/ProjectsWorkflowPagePage.js.map +0 -1
  1723. package/dist/planmagnet/pages/ReportsCreateReportPagePage.d.ts.map +0 -1
  1724. package/dist/planmagnet/pages/ReportsCreateReportPagePage.js.map +0 -1
  1725. package/dist/planmagnet/pages/ReportsEditReportPagePage.d.ts.map +0 -1
  1726. package/dist/planmagnet/pages/ReportsEditReportPagePage.js.map +0 -1
  1727. package/dist/planmagnet/pages/ReportsReportPagePage.d.ts.map +0 -1
  1728. package/dist/planmagnet/pages/ReportsReportPagePage.js.map +0 -1
  1729. package/dist/planmagnet/pages/ReportsReportsPagePage.d.ts.map +0 -1
  1730. package/dist/planmagnet/pages/ReportsReportsPagePage.js.map +0 -1
  1731. package/dist/planmagnet/pages/RisksRiskDetailPagePage.d.ts.map +0 -1
  1732. package/dist/planmagnet/pages/RisksRiskDetailPagePage.js.map +0 -1
  1733. package/dist/planmagnet/pages/RisksRiskRegisterPagePage.d.ts.map +0 -1
  1734. package/dist/planmagnet/pages/RisksRiskRegisterPagePage.js.map +0 -1
  1735. package/dist/planmagnet/pages/SprintsStartSprintPagePage.d.ts.map +0 -1
  1736. package/dist/planmagnet/pages/SprintsStartSprintPagePage.js.map +0 -1
  1737. package/dist/planmagnet/pages/TasksCreateTaskPagePage.d.ts.map +0 -1
  1738. package/dist/planmagnet/pages/TasksCreateTaskPagePage.js.map +0 -1
  1739. package/dist/planmagnet/pages/TasksEditTaskPagePage.d.ts.map +0 -1
  1740. package/dist/planmagnet/pages/TasksEditTaskPagePage.js.map +0 -1
  1741. package/dist/planmagnet/pages/TasksImportPagePage.d.ts.map +0 -1
  1742. package/dist/planmagnet/pages/TasksImportPagePage.js.map +0 -1
  1743. package/dist/planmagnet/pages/TasksMyDashboardPagePage.d.ts.map +0 -1
  1744. package/dist/planmagnet/pages/TasksMyDashboardPagePage.js.map +0 -1
  1745. package/dist/planmagnet/pages/TasksMyWorkPagePage.d.ts.map +0 -1
  1746. package/dist/planmagnet/pages/TasksMyWorkPagePage.js.map +0 -1
  1747. package/dist/planmagnet/pages/TasksTaskDetailPagePage.d.ts.map +0 -1
  1748. package/dist/planmagnet/pages/TasksTaskDetailPagePage.js.map +0 -1
  1749. package/dist/planmagnet/pages/TasksTasksPagePage.d.ts.map +0 -1
  1750. package/dist/planmagnet/pages/TasksTasksPagePage.js.map +0 -1
  1751. package/dist/planmagnet/pages/TasksTimeEntriesPagePage.d.ts.map +0 -1
  1752. package/dist/planmagnet/pages/TasksTimeEntriesPagePage.js.map +0 -1
  1753. package/dist/planmagnet/pages/TasksTimesheetDetailPagePage.d.ts.map +0 -1
  1754. package/dist/planmagnet/pages/TasksTimesheetDetailPagePage.js.map +0 -1
  1755. package/dist/planmagnet/pages/TasksTimesheetsPagePage.d.ts.map +0 -1
  1756. package/dist/planmagnet/pages/TasksTimesheetsPagePage.js.map +0 -1
  1757. package/dist/planmagnet/pages/TeamCreateTeamPagePage.d.ts.map +0 -1
  1758. package/dist/planmagnet/pages/TeamCreateTeamPagePage.js.map +0 -1
  1759. package/dist/planmagnet/pages/TeamInviteMemberPagePage.d.ts.map +0 -1
  1760. package/dist/planmagnet/pages/TeamInviteMemberPagePage.js.map +0 -1
  1761. package/dist/planmagnet/pages/TeamTeamDetailPagePage.d.ts.map +0 -1
  1762. package/dist/planmagnet/pages/TeamTeamDetailPagePage.js.map +0 -1
  1763. package/dist/planmagnet/pages/TeamTeamEditPagePage.d.ts.map +0 -1
  1764. package/dist/planmagnet/pages/TeamTeamEditPagePage.js.map +0 -1
  1765. package/dist/planmagnet/pages/TeamTeamPagePage.d.ts.map +0 -1
  1766. package/dist/planmagnet/pages/TeamTeamPagePage.js.map +0 -1
  1767. package/dist/planmagnet/pages/TeamTeamsListPagePage.d.ts.map +0 -1
  1768. package/dist/planmagnet/pages/TeamTeamsListPagePage.js.map +0 -1
  1769. package/dist/planmagnet/pages/TemplatesEditTemplatePagePage.d.ts.map +0 -1
  1770. package/dist/planmagnet/pages/TemplatesEditTemplatePagePage.js.map +0 -1
  1771. package/dist/planmagnet/pages/TemplatesTemplatesPagePage.d.ts.map +0 -1
  1772. package/dist/planmagnet/pages/TemplatesTemplatesPagePage.js.map +0 -1
  1773. package/dist/planmagnet/pages/WorkspaceCreateWorkspacePagePage.d.ts.map +0 -1
  1774. package/dist/planmagnet/pages/WorkspaceCreateWorkspacePagePage.js.map +0 -1
  1775. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.d.ts.map +0 -1
  1776. package/dist/planmagnet/pages/analytics/DeliveryHealthCards.js.map +0 -1
  1777. package/dist/planmagnet/pages/analytics/DeliveryKpisCard.d.ts.map +0 -1
  1778. package/dist/planmagnet/pages/analytics/DeliveryKpisCard.js.map +0 -1
  1779. package/dist/planmagnet/pages/analytics/MetricsCard.d.ts.map +0 -1
  1780. package/dist/planmagnet/pages/analytics/MetricsCard.js.map +0 -1
  1781. package/dist/planmagnet/pages/analytics/QualityMetricsCard.d.ts.map +0 -1
  1782. package/dist/planmagnet/pages/analytics/QualityMetricsCard.js.map +0 -1
  1783. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.d.ts.map +0 -1
  1784. package/dist/planmagnet/pages/analytics/SprintDeliveryCards.js.map +0 -1
  1785. package/dist/planmagnet/pages/analytics/StatusFlowCard.d.ts.map +0 -1
  1786. package/dist/planmagnet/pages/analytics/StatusFlowCard.js.map +0 -1
  1787. package/dist/planmagnet/pages/analytics/ThroughputCard.d.ts.map +0 -1
  1788. package/dist/planmagnet/pages/analytics/ThroughputCard.js.map +0 -1
  1789. package/dist/planmagnet/pages/analytics/WorkBreakdownCard.d.ts.map +0 -1
  1790. package/dist/planmagnet/pages/analytics/WorkBreakdownCard.js.map +0 -1
  1791. package/dist/planmagnet/pages/analytics/analyticsRange.d.ts.map +0 -1
  1792. package/dist/planmagnet/pages/analytics/analyticsRange.js.map +0 -1
  1793. package/dist/planmagnet/people/People.d.ts.map +0 -1
  1794. package/dist/planmagnet/people/People.js.map +0 -1
  1795. package/dist/planmagnet/presence/PresenceAvatars.d.ts.map +0 -1
  1796. package/dist/planmagnet/presence/PresenceAvatars.js.map +0 -1
  1797. package/dist/planmagnet/product/FeatureLinkPanels.d.ts.map +0 -1
  1798. package/dist/planmagnet/product/FeatureLinkPanels.js.map +0 -1
  1799. package/dist/planmagnet/product/ProductControls.d.ts.map +0 -1
  1800. package/dist/planmagnet/product/ProductControls.js.map +0 -1
  1801. package/dist/planmagnet/product/ProductFeatureControls.d.ts.map +0 -1
  1802. package/dist/planmagnet/product/ProductFeatureControls.js.map +0 -1
  1803. package/dist/planmagnet/product/ProductFeatureLinkCard.d.ts.map +0 -1
  1804. package/dist/planmagnet/product/ProductFeatureLinkCard.js.map +0 -1
  1805. package/dist/planmagnet/product/ProductLineControls.d.ts.map +0 -1
  1806. package/dist/planmagnet/product/ProductLineControls.js.map +0 -1
  1807. package/dist/planmagnet/product/ProductTeamsPanel.d.ts.map +0 -1
  1808. package/dist/planmagnet/product/ProductTeamsPanel.js.map +0 -1
  1809. package/dist/planmagnet/product/WorkItemProductFeatureChip.d.ts.map +0 -1
  1810. package/dist/planmagnet/product/WorkItemProductFeatureChip.js.map +0 -1
  1811. package/dist/planmagnet/product/hierarchy.d.ts.map +0 -1
  1812. package/dist/planmagnet/product/hierarchy.js.map +0 -1
  1813. package/dist/planmagnet/product/hierarchyOperations.d.ts.map +0 -1
  1814. package/dist/planmagnet/product/hierarchyOperations.js.map +0 -1
  1815. package/dist/planmagnet/product/refusal.d.ts.map +0 -1
  1816. package/dist/planmagnet/product/refusal.js.map +0 -1
  1817. package/dist/planmagnet/product/routes.d.ts.map +0 -1
  1818. package/dist/planmagnet/product/routes.js.map +0 -1
  1819. package/dist/planmagnet/providers/PlanMagnetProvider.d.ts.map +0 -1
  1820. package/dist/planmagnet/providers/PlanMagnetProvider.js.map +0 -1
  1821. package/dist/planmagnet/releases/ReleaseChecklistCard.d.ts.map +0 -1
  1822. package/dist/planmagnet/releases/ReleaseChecklistCard.js.map +0 -1
  1823. package/dist/planmagnet/releases/ReleaseGatesCard.d.ts.map +0 -1
  1824. package/dist/planmagnet/releases/ReleaseGatesCard.js.map +0 -1
  1825. package/dist/planmagnet/releases/ReleaseNotesCard.d.ts.map +0 -1
  1826. package/dist/planmagnet/releases/ReleaseNotesCard.js.map +0 -1
  1827. package/dist/planmagnet/releases/ReleaseReadinessCard.d.ts.map +0 -1
  1828. package/dist/planmagnet/releases/ReleaseReadinessCard.js.map +0 -1
  1829. package/dist/planmagnet/releases/ReleaseWorkItemsCard.d.ts.map +0 -1
  1830. package/dist/planmagnet/releases/ReleaseWorkItemsCard.js.map +0 -1
  1831. package/dist/planmagnet/releases/useReleaseOptions.d.ts.map +0 -1
  1832. package/dist/planmagnet/releases/useReleaseOptions.js.map +0 -1
  1833. package/dist/planmagnet/reports/ExportMenu.d.ts.map +0 -1
  1834. package/dist/planmagnet/reports/ExportMenu.js.map +0 -1
  1835. package/dist/planmagnet/reports/PrintReportView.d.ts.map +0 -1
  1836. package/dist/planmagnet/reports/PrintReportView.js.map +0 -1
  1837. package/dist/planmagnet/reports/ReportBuilderCanvas.d.ts.map +0 -1
  1838. package/dist/planmagnet/reports/ReportBuilderCanvas.js.map +0 -1
  1839. package/dist/planmagnet/reports/ReportBuilderPage.d.ts.map +0 -1
  1840. package/dist/planmagnet/reports/ReportBuilderPage.js.map +0 -1
  1841. package/dist/planmagnet/reports/ReportRunHistory.d.ts.map +0 -1
  1842. package/dist/planmagnet/reports/ReportRunHistory.js.map +0 -1
  1843. package/dist/planmagnet/reports/ReportWidgetRenderer.d.ts.map +0 -1
  1844. package/dist/planmagnet/reports/ReportWidgetRenderer.js.map +0 -1
  1845. package/dist/planmagnet/reports/SchedulesPanel.d.ts.map +0 -1
  1846. package/dist/planmagnet/reports/SchedulesPanel.js.map +0 -1
  1847. package/dist/planmagnet/reports/ShareDialog.d.ts.map +0 -1
  1848. package/dist/planmagnet/reports/ShareDialog.js.map +0 -1
  1849. package/dist/planmagnet/reports/SharedReportPage.d.ts.map +0 -1
  1850. package/dist/planmagnet/reports/SharedReportPage.js.map +0 -1
  1851. package/dist/planmagnet/reports/WidgetEditorDialog.d.ts.map +0 -1
  1852. package/dist/planmagnet/reports/WidgetEditorDialog.js.map +0 -1
  1853. package/dist/planmagnet/reports/reportExportPptx.d.ts.map +0 -1
  1854. package/dist/planmagnet/reports/reportExportPptx.js.map +0 -1
  1855. package/dist/planmagnet/reports/reportExportXlsx.d.ts.map +0 -1
  1856. package/dist/planmagnet/reports/reportExportXlsx.js.map +0 -1
  1857. package/dist/planmagnet/reports/reportGraphql.d.ts.map +0 -1
  1858. package/dist/planmagnet/reports/reportGraphql.js.map +0 -1
  1859. package/dist/planmagnet/reports/reportModel.d.ts.map +0 -1
  1860. package/dist/planmagnet/reports/reportModel.js.map +0 -1
  1861. package/dist/planmagnet/reports/sharedReportRoute.d.ts.map +0 -1
  1862. package/dist/planmagnet/reports/sharedReportRoute.js.map +0 -1
  1863. package/dist/planmagnet/roadmaps/FeatureInitiativeCard.d.ts.map +0 -1
  1864. package/dist/planmagnet/roadmaps/FeatureInitiativeCard.js.map +0 -1
  1865. package/dist/planmagnet/roadmaps/RoadmapControls.d.ts.map +0 -1
  1866. package/dist/planmagnet/roadmaps/RoadmapControls.js.map +0 -1
  1867. package/dist/planmagnet/roadmaps/RoadmapNowNextLater.d.ts.map +0 -1
  1868. package/dist/planmagnet/roadmaps/RoadmapNowNextLater.js.map +0 -1
  1869. package/dist/planmagnet/roadmaps/RoadmapPresentation.d.ts.map +0 -1
  1870. package/dist/planmagnet/roadmaps/RoadmapPresentation.js.map +0 -1
  1871. package/dist/planmagnet/roadmaps/RoadmapReviewPanel.d.ts.map +0 -1
  1872. package/dist/planmagnet/roadmaps/RoadmapReviewPanel.js.map +0 -1
  1873. package/dist/planmagnet/roadmaps/RoadmapVersionsPanel.d.ts.map +0 -1
  1874. package/dist/planmagnet/roadmaps/RoadmapVersionsPanel.js.map +0 -1
  1875. package/dist/planmagnet/roadmaps/planningFocus.d.ts.map +0 -1
  1876. package/dist/planmagnet/roadmaps/planningFocus.js.map +0 -1
  1877. package/dist/planmagnet/satisfaction/DeliverySatisfactionSection.d.ts.map +0 -1
  1878. package/dist/planmagnet/satisfaction/DeliverySatisfactionSection.js.map +0 -1
  1879. package/dist/planmagnet/satisfaction/SatisfactionFigures.d.ts.map +0 -1
  1880. package/dist/planmagnet/satisfaction/SatisfactionFigures.js.map +0 -1
  1881. package/dist/planmagnet/satisfaction/SatisfactionImportDialog.d.ts.map +0 -1
  1882. package/dist/planmagnet/satisfaction/SatisfactionImportDialog.js.map +0 -1
  1883. package/dist/planmagnet/satisfaction/SatisfactionLinkFields.d.ts.map +0 -1
  1884. package/dist/planmagnet/satisfaction/SatisfactionLinkFields.js.map +0 -1
  1885. package/dist/planmagnet/satisfaction/SatisfactionReleaseSelect.d.ts.map +0 -1
  1886. package/dist/planmagnet/satisfaction/SatisfactionReleaseSelect.js.map +0 -1
  1887. package/dist/planmagnet/satisfaction/SatisfactionResponseDialog.d.ts.map +0 -1
  1888. package/dist/planmagnet/satisfaction/SatisfactionResponseDialog.js.map +0 -1
  1889. package/dist/planmagnet/satisfaction/SatisfactionResponsesTable.d.ts.map +0 -1
  1890. package/dist/planmagnet/satisfaction/SatisfactionResponsesTable.js.map +0 -1
  1891. package/dist/planmagnet/satisfaction/SatisfactionSummaryCard.d.ts.map +0 -1
  1892. package/dist/planmagnet/satisfaction/SatisfactionSummaryCard.js.map +0 -1
  1893. package/dist/planmagnet/satisfaction/SatisfactionWindowPicker.d.ts.map +0 -1
  1894. package/dist/planmagnet/satisfaction/SatisfactionWindowPicker.js.map +0 -1
  1895. package/dist/planmagnet/satisfaction/satisfaction.d.ts.map +0 -1
  1896. package/dist/planmagnet/satisfaction/satisfaction.js.map +0 -1
  1897. package/dist/planmagnet/satisfaction/satisfactionCsv.d.ts.map +0 -1
  1898. package/dist/planmagnet/satisfaction/satisfactionCsv.js.map +0 -1
  1899. package/dist/planmagnet/satisfaction/satisfactionForm.d.ts.map +0 -1
  1900. package/dist/planmagnet/satisfaction/satisfactionForm.js.map +0 -1
  1901. package/dist/planmagnet/satisfaction/satisfactionOperations.d.ts.map +0 -1
  1902. package/dist/planmagnet/satisfaction/satisfactionOperations.js.map +0 -1
  1903. package/dist/planmagnet/satisfaction/useSatisfactionAccess.d.ts.map +0 -1
  1904. package/dist/planmagnet/satisfaction/useSatisfactionAccess.js.map +0 -1
  1905. package/dist/planmagnet/skills/RequiredSkillsEditor.d.ts.map +0 -1
  1906. package/dist/planmagnet/skills/RequiredSkillsEditor.js.map +0 -1
  1907. package/dist/planmagnet/skills/SkillChips.d.ts.map +0 -1
  1908. package/dist/planmagnet/skills/SkillChips.js.map +0 -1
  1909. package/dist/planmagnet/skills/SkillCoverageCard.d.ts.map +0 -1
  1910. package/dist/planmagnet/skills/SkillCoverageCard.js.map +0 -1
  1911. package/dist/planmagnet/skills/WorkItemRequiredSkills.d.ts.map +0 -1
  1912. package/dist/planmagnet/skills/WorkItemRequiredSkills.js.map +0 -1
  1913. package/dist/planmagnet/skills/skillOperations.d.ts.map +0 -1
  1914. package/dist/planmagnet/skills/skillOperations.js.map +0 -1
  1915. package/dist/planmagnet/skills/skillTags.d.ts.map +0 -1
  1916. package/dist/planmagnet/skills/skillTags.js.map +0 -1
  1917. package/dist/planmagnet/skills/useRequiredSkillsDraft.d.ts.map +0 -1
  1918. package/dist/planmagnet/skills/useRequiredSkillsDraft.js.map +0 -1
  1919. package/dist/planmagnet/sprints/SprintControls.d.ts.map +0 -1
  1920. package/dist/planmagnet/sprints/SprintControls.js.map +0 -1
  1921. package/dist/planmagnet/sprints/SprintDates.d.ts.map +0 -1
  1922. package/dist/planmagnet/sprints/SprintDates.js.map +0 -1
  1923. package/dist/planmagnet/store/planmagnetStore.d.ts.map +0 -1
  1924. package/dist/planmagnet/store/planmagnetStore.js.map +0 -1
  1925. package/dist/planmagnet/team/PendingInvitations.d.ts.map +0 -1
  1926. package/dist/planmagnet/team/PendingInvitations.js.map +0 -1
  1927. package/dist/planmagnet/team/TeamControls.d.ts.map +0 -1
  1928. package/dist/planmagnet/team/TeamControls.js.map +0 -1
  1929. package/dist/planmagnet/team/UnmatchedCrewIdentities.d.ts.map +0 -1
  1930. package/dist/planmagnet/team/UnmatchedCrewIdentities.js.map +0 -1
  1931. package/dist/planmagnet/team/invitationEmail.d.ts.map +0 -1
  1932. package/dist/planmagnet/team/invitationEmail.js.map +0 -1
  1933. package/dist/planmagnet/time/TaskTimePanel.d.ts.map +0 -1
  1934. package/dist/planmagnet/time/TaskTimePanel.js.map +0 -1
  1935. package/dist/planmagnet/time/TimeEntryControls.d.ts.map +0 -1
  1936. package/dist/planmagnet/time/TimeEntryControls.js.map +0 -1
  1937. package/dist/planmagnet/time/TimesheetControls.d.ts.map +0 -1
  1938. package/dist/planmagnet/time/TimesheetControls.js.map +0 -1
  1939. package/dist/planmagnet/time/timeShared.d.ts.map +0 -1
  1940. package/dist/planmagnet/time/timeShared.js.map +0 -1
  1941. package/dist/planmagnet/types/index.d.ts.map +0 -1
  1942. package/dist/planmagnet/utils/cn.d.ts.map +0 -1
  1943. package/dist/planmagnet/utils/cn.js.map +0 -1
  1944. package/dist/planmagnet/utils/email.d.ts.map +0 -1
  1945. package/dist/planmagnet/utils/email.js.map +0 -1
  1946. package/dist/planmagnet/utils/formValidation.d.ts.map +0 -1
  1947. package/dist/planmagnet/utils/formValidation.js.map +0 -1
  1948. package/dist/planmagnet/utils/graphqlErrors.d.ts.map +0 -1
  1949. package/dist/planmagnet/utils/graphqlErrors.js.map +0 -1
  1950. package/dist/planmagnet/utils/lineDiff.d.ts.map +0 -1
  1951. package/dist/planmagnet/utils/lineDiff.js.map +0 -1
  1952. package/dist/planmagnet/utils/mutationResult.d.ts.map +0 -1
  1953. package/dist/planmagnet/utils/mutationResult.js.map +0 -1
  1954. package/dist/planmagnet/utils/navigation.d.ts.map +0 -1
  1955. package/dist/planmagnet/utils/navigation.js.map +0 -1
  1956. package/dist/planmagnet/utils/qualityGateCriteria.d.ts.map +0 -1
  1957. package/dist/planmagnet/utils/qualityGateCriteria.js.map +0 -1
  1958. package/dist/planmagnet/utils/rowNavigation.d.ts.map +0 -1
  1959. package/dist/planmagnet/utils/rowNavigation.js.map +0 -1
  1960. package/dist/planmagnet/utils/statusColor.d.ts.map +0 -1
  1961. package/dist/planmagnet/utils/statusColor.js.map +0 -1
  1962. package/dist/planmagnet/utils/urlParam.d.ts.map +0 -1
  1963. package/dist/planmagnet/utils/urlParam.js.map +0 -1
  1964. package/dist/planmagnet/webhooks/webhookTypes.d.ts.map +0 -1
  1965. package/dist/planmagnet/webhooks/webhookTypes.js.map +0 -1
  1966. package/dist/shared/hooks/useTr.d.ts.map +0 -1
  1967. package/dist/shared/hooks/useTr.js.map +0 -1
  1968. package/dist/shared/utils/i18n.d.ts.map +0 -1
  1969. package/dist/shared/utils/i18n.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"QualityMetricsCard.js","names":[],"sources":["../../../../src/planmagnet/dashboards/cards/QualityMetricsCard.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Bug } from 'lucide-react';\nimport { DashboardCard, StatTile, ratePercentLabel } from '../DashboardUI';\n\n/** Quality/defects (ANR-07): `planmagnetQualityMetrics` (ANR-20) for one project, over the trailing 30 days. */\nconst GET_QUALITY_METRICS = gql`\n query DashboardQualityMetrics(\n $workspaceId: ID!\n $projectId: ID\n $startDate: DateTime\n $endDate: DateTime\n ) {\n planmagnetQualityMetrics(\n workspaceId: $workspaceId\n projectId: $projectId\n startDate: $startDate\n endDate: $endDate\n ) {\n bugsOpened\n bugsResolved\n defectRatio\n openBugs\n gatePassRate\n meanTimeToResolveHours\n }\n }\n`;\n\ninterface QualityMetricsData {\n planmagnetQualityMetrics: {\n bugsOpened: number;\n bugsResolved: number;\n defectRatio: number | null;\n openBugs: number;\n gatePassRate: number | null;\n meanTimeToResolveHours: number | null;\n };\n}\n\nfunction formatResolveTime(hours: number | null): string {\n if (hours == null) return '—';\n if (hours < 48) return `${hours < 10 ? hours.toFixed(1) : Math.round(hours)} h`;\n return `${(hours / 24).toFixed(1)} d`;\n}\n\nexport function QualityMetricsCard({\n workspaceId,\n projectId,\n startDate,\n endDate,\n onDrillDown,\n}: {\n workspaceId?: string | null;\n projectId: string;\n startDate: string;\n endDate: string;\n onDrillDown: () => void;\n}) {\n const { t } = useI18n();\n const { data, loading, error } = useQuery<QualityMetricsData>(GET_QUALITY_METRICS, {\n variables: { workspaceId, projectId, startDate, endDate },\n skip: !workspaceId || !projectId,\n });\n const q = data?.planmagnetQualityMetrics;\n\n return (\n <DashboardCard\n icon={<Bug className=\"h-4 w-4\" />}\n title={t('planmagnet.dashboards.pm.quality.title', 'Quality & defects')}\n definition={t(\n 'planmagnet.dashboards.pm.quality.definition',\n 'Bugs opened/resolved and quality-gate pass rate for the selected project, last 30 days.'\n )}\n loading={loading && !data}\n error={error}\n empty={!projectId}\n emptyMessage={t('planmagnet.dashboards.pm.quality.noProject', 'Select a project above.')}\n drillDown={{\n label: t('planmagnet.dashboards.pm.quality.drillDown', 'Open quality gates'),\n onClick: onDrillDown,\n }}\n >\n {q ? (\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-2 gap-3\">\n <StatTile\n label={t('planmagnet.dashboards.pm.quality.opened', 'Bugs opened (30d)')}\n value={String(q.bugsOpened)}\n />\n <StatTile\n label={t('planmagnet.dashboards.pm.quality.resolved', 'Bugs resolved (30d)')}\n value={String(q.bugsResolved)}\n />\n <StatTile\n label={t('planmagnet.dashboards.pm.quality.open', 'Open bugs now')}\n value={String(q.openBugs)}\n />\n <StatTile\n label={t('planmagnet.dashboards.pm.quality.mttr', 'Mean time to resolve')}\n value={formatResolveTime(q.meanTimeToResolveHours)}\n />\n </div>\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span>{t('planmagnet.dashboards.pm.quality.defectRatio', 'Defect ratio')}</span>\n <span>\n {q.defectRatio == null\n ? t(\n 'planmagnet.dashboards.pm.quality.noNonBugWork',\n 'no non-bug work done in range'\n )\n : q.defectRatio.toFixed(2)}\n </span>\n </div>\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span>\n {t('planmagnet.dashboards.pm.quality.gatePassRate', 'Quality gate pass rate')}\n </span>\n <span>{ratePercentLabel(q.gatePassRate)}</span>\n </div>\n </div>\n ) : null}\n </DashboardCard>\n );\n}\n"],"mappings":";;;;;;;AAOA,IAAM,IAAsB,CAAG;;;;;;;;;;;;;;;;;;;;;;AAkC/B,SAAS,EAAkB,GAA8B;AAGvD,QAFI,KAAS,OAAa,MACtB,IAAQ,KAAW,GAAG,IAAQ,KAAK,EAAM,QAAQ,EAAE,GAAG,KAAK,MAAM,EAAM,CAAC,MACrE,IAAI,IAAQ,IAAI,QAAQ,EAAE,CAAC;;AAGpC,SAAgB,EAAmB,EACjC,gBACA,cACA,cACA,YACA,kBAOC;CACD,IAAM,EAAE,SAAM,GAAS,EACjB,EAAE,SAAM,YAAS,aAAU,EAA6B,GAAqB;EACjF,WAAW;GAAE;GAAa;GAAW;GAAW;GAAS;EACzD,MAAM,CAAC,KAAe,CAAC;EACxB,CAAC,EACI,IAAI,GAAM;AAEhB,QACE,kBAAC,GAAD;EACE,MAAM,kBAAC,GAAD,EAAK,WAAU,WAAY,CAAA;EACjC,OAAO,EAAE,0CAA0C,oBAAoB;EACvE,YAAY,EACV,+CACA,0FACD;EACD,SAAS,KAAW,CAAC;EACd;EACP,OAAO,CAAC;EACR,cAAc,EAAE,8CAA8C,0BAA0B;EACxF,WAAW;GACT,OAAO,EAAE,8CAA8C,qBAAqB;GAC5E,SAAS;GACV;YAEA,IACC,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,GAAD;OACE,OAAO,EAAE,2CAA2C,oBAAoB;OACxE,OAAO,OAAO,EAAE,WAAW;OAC3B,CAAA;MACF,kBAAC,GAAD;OACE,OAAO,EAAE,6CAA6C,sBAAsB;OAC5E,OAAO,OAAO,EAAE,aAAa;OAC7B,CAAA;MACF,kBAAC,GAAD;OACE,OAAO,EAAE,yCAAyC,gBAAgB;OAClE,OAAO,OAAO,EAAE,SAAS;OACzB,CAAA;MACF,kBAAC,GAAD;OACE,OAAO,EAAE,yCAAyC,uBAAuB;OACzE,OAAO,EAAkB,EAAE,uBAAuB;OAClD,CAAA;MACE;;IACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,QAAD,EAAA,UAAO,EAAE,gDAAgD,eAAe,EAAQ,CAAA,EAChF,kBAAC,QAAD,EAAA,UACG,EAAE,eAAe,OACd,EACE,iDACA,gCACD,GACD,EAAE,YAAY,QAAQ,EAAE,EACvB,CAAA,CACH;;IACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,QAAD,EAAA,UACG,EAAE,iDAAiD,yBAAyB,EACxE,CAAA,EACP,kBAAC,QAAD,EAAA,UAAO,EAAiB,EAAE,aAAa,EAAQ,CAAA,CAC3C;;IACF;OACJ;EACU,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RiskSeverityCard.d.ts","sourceRoot":"","sources":["../../../../src/planmagnet/dashboards/cards/RiskSeverityCard.tsx"],"names":[],"mappings":"AA8CA,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,SAAS,EACT,WAAW,GACZ,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,2CAyDA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RiskSeverityCard.js","names":[],"sources":["../../../../src/planmagnet/dashboards/cards/RiskSeverityCard.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Badge } from '@burdenoff/fe-libs/ui';\nimport { ShieldAlert } from 'lucide-react';\nimport { DashboardCard } from '../DashboardUI';\n\n/** Risk/issue tracking (ANR-07): open risks by severity for one project. `RiskStatus.ACCEPTED/RESOLVED/CLOSED`\n * are terminal — the same \"open\" definition `releases/ReleaseReadinessCard.tsx`'s CLOSED_RISK set uses. */\nconst GET_PROJECT_RISKS = gql`\n query DashboardProjectRisks($workspaceId: ID!, $projectId: String!) {\n planmagnetRisks(\n workspaceId: $workspaceId\n filter: { projectId: $projectId }\n pagination: { first: 100 }\n ) {\n items {\n id\n severity\n status\n }\n totalCount\n }\n }\n`;\n\ninterface RiskRow {\n id: string;\n severity: string;\n status: string;\n}\n\ninterface ProjectRisksData {\n planmagnetRisks: { items: RiskRow[]; totalCount: number };\n}\n\nconst CLOSED_STATUSES = new Set(['ACCEPTED', 'RESOLVED', 'CLOSED']);\nconst SEVERITY_ORDER = ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW', 'NEGLIGIBLE'] as const;\nconst SEVERITY_BADGE: Record<string, 'destructive' | 'warning' | 'secondary'> = {\n CRITICAL: 'destructive',\n HIGH: 'destructive',\n MEDIUM: 'warning',\n LOW: 'secondary',\n NEGLIGIBLE: 'secondary',\n};\n\nexport function RiskSeverityCard({\n workspaceId,\n projectId,\n onDrillDown,\n}: {\n workspaceId?: string | null;\n projectId: string;\n onDrillDown: () => void;\n}) {\n const { t } = useI18n();\n const { data, loading, error } = useQuery<ProjectRisksData>(GET_PROJECT_RISKS, {\n variables: { workspaceId, projectId },\n skip: !workspaceId || !projectId,\n });\n const items = data?.planmagnetRisks.items ?? [];\n const totalCount = data?.planmagnetRisks.totalCount ?? items.length;\n const open = items.filter((r) => !CLOSED_STATUSES.has(r.status));\n const bySeverity = new Map<string, number>();\n for (const r of open) bySeverity.set(r.severity, (bySeverity.get(r.severity) ?? 0) + 1);\n\n return (\n <DashboardCard\n icon={<ShieldAlert className=\"h-4 w-4\" />}\n title={t('planmagnet.dashboards.pm.risks.title', 'Risk & issue tracking')}\n definition={t(\n 'planmagnet.dashboards.pm.risks.definition',\n 'Open risks for the selected project, by severity.'\n )}\n loading={loading && !data}\n error={error}\n empty={!projectId}\n emptyMessage={t('planmagnet.dashboards.pm.risks.noProject', 'Select a project above.')}\n drillDown={{\n label: t('planmagnet.dashboards.pm.risks.drillDown', 'Open risk register'),\n onClick: onDrillDown,\n }}\n >\n {projectId ? (\n <div className=\"space-y-3\">\n {totalCount > items.length ? (\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'planmagnet.dashboards.pm.risks.capped',\n 'Counted from the first {{shown}} of {{total}} risks for this project.',\n { shown: items.length, total: totalCount }\n )}\n </p>\n ) : null}\n {open.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">\n {t('planmagnet.dashboards.pm.risks.noneOpen', 'No open risks for this project.')}\n </p>\n ) : (\n <div className=\"flex flex-wrap gap-2\">\n {SEVERITY_ORDER.filter((s) => bySeverity.has(s)).map((severity) => (\n <Badge key={severity} variant={SEVERITY_BADGE[severity]}>\n {severity.toLowerCase()}: {bySeverity.get(severity)}\n </Badge>\n ))}\n </div>\n )}\n </div>\n ) : null}\n </DashboardCard>\n );\n}\n"],"mappings":";;;;;;;;AASA,IAAM,IAAoB,CAAG;;;;;;;;;;;;;;;GA2BvB,IAAkB,IAAI,IAAI;CAAC;CAAY;CAAY;CAAS,CAAC,EAC7D,IAAiB;CAAC;CAAY;CAAQ;CAAU;CAAO;CAAa,EACpE,IAA0E;CAC9E,UAAU;CACV,MAAM;CACN,QAAQ;CACR,KAAK;CACL,YAAY;CACb;AAED,SAAgB,EAAiB,EAC/B,gBACA,cACA,kBAKC;CACD,IAAM,EAAE,SAAM,GAAS,EACjB,EAAE,SAAM,YAAS,aAAU,EAA2B,GAAmB;EAC7E,WAAW;GAAE;GAAa;GAAW;EACrC,MAAM,CAAC,KAAe,CAAC;EACxB,CAAC,EACI,IAAQ,GAAM,gBAAgB,SAAS,EAAE,EACzC,IAAa,GAAM,gBAAgB,cAAc,EAAM,QACvD,IAAO,EAAM,QAAQ,MAAM,CAAC,EAAgB,IAAI,EAAE,OAAO,CAAC,EAC1D,oBAAa,IAAI,KAAqB;AAC5C,MAAK,IAAM,KAAK,EAAM,GAAW,IAAI,EAAE,WAAW,EAAW,IAAI,EAAE,SAAS,IAAI,KAAK,EAAE;AAEvF,QACE,kBAAC,GAAD;EACE,MAAM,kBAAC,GAAD,EAAa,WAAU,WAAY,CAAA;EACzC,OAAO,EAAE,wCAAwC,wBAAwB;EACzE,YAAY,EACV,6CACA,oDACD;EACD,SAAS,KAAW,CAAC;EACd;EACP,OAAO,CAAC;EACR,cAAc,EAAE,4CAA4C,0BAA0B;EACtF,WAAW;GACT,OAAO,EAAE,4CAA4C,qBAAqB;GAC1E,SAAS;GACV;YAEA,IACC,kBAAC,OAAD;GAAK,WAAU;aAAf,CACG,IAAa,EAAM,SAClB,kBAAC,KAAD;IAAG,WAAU;cACV,EACC,yCACA,yEACA;KAAE,OAAO,EAAM;KAAQ,OAAO;KAAY,CAC3C;IACC,CAAA,GACF,MACH,EAAK,WAAW,IACf,kBAAC,KAAD;IAAG,WAAU;cACV,EAAE,2CAA2C,kCAAkC;IAC9E,CAAA,GAEJ,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAe,QAAQ,MAAM,EAAW,IAAI,EAAE,CAAC,CAAC,KAAK,MACpD,kBAAC,GAAD;KAAsB,SAAS,EAAe;eAA9C;MACG,EAAS,aAAa;MAAC;MAAG,EAAW,IAAI,EAAS;MAC7C;OAFI,EAEJ,CACR;IACE,CAAA,CAEJ;OACJ;EACU,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RoadmapHorizonCard.d.ts","sourceRoot":"","sources":["../../../../src/planmagnet/dashboards/cards/RoadmapHorizonCard.tsx"],"names":[],"mappings":"AAwLA,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,WAAW,GACZ,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,2CAoFA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RoadmapHorizonCard.js","names":[],"sources":["../../../../src/planmagnet/dashboards/cards/RoadmapHorizonCard.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Map } from 'lucide-react';\nimport { DashboardCard, cappedSubtitle } from '../DashboardUI';\n\n/**\n * Roadmap Now/Next/Later counts per roadmap (CWF-31's product-strategy section). Two requests total, however\n * many roadmaps exist: the roadmap list, then ONE query that reads every listed roadmap's three horizon\n * counts via GraphQL aliases (the same static-alias technique `hooks/useCounts.ts` uses for status counts) —\n * never one request per roadmap. `roadmapId` on `PlanmagnetRoadmapItemFilter` is a plain nullable String, so\n * an unused slot is padded with `\"\"`, which matches no roadmap and comes back as a harmless 0 rather than a\n * GraphQL error.\n */\nconst MAX_ROADMAPS = 6;\n\nconst LIST_ROADMAPS = gql`\n query DashboardRoadmapList($workspaceId: ID!) {\n planmagnetRoadmaps(workspaceId: $workspaceId, pagination: { first: 6 }) {\n items {\n id\n name\n }\n totalCount\n }\n }\n`;\n\nconst GET_ROADMAP_HORIZON_COUNTS = gql`\n query DashboardRoadmapHorizonCounts(\n $workspaceId: ID!\n $r0: String!\n $r1: String!\n $r2: String!\n $r3: String!\n $r4: String!\n $r5: String!\n ) {\n r0_now: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r0, horizon: NOW }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r0_next: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r0, horizon: NEXT }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r0_later: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r0, horizon: LATER }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r1_now: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r1, horizon: NOW }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r1_next: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r1, horizon: NEXT }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r1_later: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r1, horizon: LATER }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r2_now: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r2, horizon: NOW }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r2_next: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r2, horizon: NEXT }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r2_later: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r2, horizon: LATER }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r3_now: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r3, horizon: NOW }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r3_next: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r3, horizon: NEXT }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r3_later: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r3, horizon: LATER }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r4_now: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r4, horizon: NOW }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r4_next: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r4, horizon: NEXT }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r4_later: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r4, horizon: LATER }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r5_now: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r5, horizon: NOW }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r5_next: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r5, horizon: NEXT }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n r5_later: planmagnetRoadmapItems(\n workspaceId: $workspaceId\n filter: { roadmapId: $r5, horizon: LATER }\n pagination: { first: 1 }\n ) {\n totalCount\n }\n }\n`;\n\ninterface RoadmapRow {\n id: string;\n name: string;\n}\n\ninterface RoadmapListData {\n planmagnetRoadmaps: { items: RoadmapRow[]; totalCount: number };\n}\n\n/** One `{ totalCount }` result per aliased field — every slot in the horizon-counts query has this shape. */\ntype TotalCountResult = { totalCount: number } | null | undefined;\ntype RoadmapHorizonCountsData = Record<string, TotalCountResult>;\n\nfunction countOf(data: RoadmapHorizonCountsData | undefined, key: string): number {\n return data?.[key]?.totalCount ?? 0;\n}\n\nexport function RoadmapHorizonCard({\n workspaceId,\n onDrillDown,\n}: {\n workspaceId?: string | null;\n onDrillDown: () => void;\n}) {\n const { t } = useI18n();\n const list = useQuery<RoadmapListData>(LIST_ROADMAPS, {\n variables: { workspaceId },\n skip: !workspaceId,\n });\n const roadmaps = list.data?.planmagnetRoadmaps.items ?? [];\n const totalCount = list.data?.planmagnetRoadmaps.totalCount ?? roadmaps.length;\n const slots = Array.from({ length: MAX_ROADMAPS }, (_, i) => roadmaps[i]?.id ?? '');\n\n const counts = useQuery<RoadmapHorizonCountsData>(GET_ROADMAP_HORIZON_COUNTS, {\n variables: {\n workspaceId,\n r0: slots[0],\n r1: slots[1],\n r2: slots[2],\n r3: slots[3],\n r4: slots[4],\n r5: slots[5],\n },\n skip: !workspaceId || roadmaps.length === 0,\n });\n\n const loading = (list.loading && !list.data) || (counts.loading && !counts.data);\n const error = list.error ?? counts.error;\n\n return (\n <DashboardCard\n icon={<Map className=\"h-4 w-4\" />}\n title={t('planmagnet.dashboards.roadmaps.title', 'Roadmap horizons')}\n definition={t(\n 'planmagnet.dashboards.roadmaps.definition',\n 'Items placed in Now/Next/Later per roadmap.'\n )}\n loading={loading}\n error={error}\n empty={!loading && roadmaps.length === 0}\n emptyMessage={t('planmagnet.dashboards.roadmaps.empty', 'No roadmaps yet.')}\n drillDown={{\n label: t('planmagnet.dashboards.viewAll', 'View all roadmaps'),\n onClick: onDrillDown,\n }}\n >\n <div className=\"space-y-3\">\n <p className=\"text-xs text-muted-foreground\">\n {cappedSubtitle(roadmaps.length, totalCount, 'roadmap(s)')}\n </p>\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"text-left text-xs text-muted-foreground\">\n <th className=\"py-1 pr-2 font-normal\">\n {t('planmagnet.dashboards.roadmaps.name', 'Roadmap')}\n </th>\n <th className=\"py-1 pr-2 text-right font-normal\">\n {t('planmagnet.dashboards.roadmaps.now', 'Now')}\n </th>\n <th className=\"py-1 pr-2 text-right font-normal\">\n {t('planmagnet.dashboards.roadmaps.next', 'Next')}\n </th>\n <th className=\"py-1 text-right font-normal\">\n {t('planmagnet.dashboards.roadmaps.later', 'Later')}\n </th>\n </tr>\n </thead>\n <tbody>\n {roadmaps.map((r, i) => (\n <tr key={r.id} className=\"border-t\">\n <td className=\"py-1.5 pr-2 font-medium\">{r.name}</td>\n <td className=\"py-1.5 pr-2 text-right tabular-nums\">\n {countOf(counts.data, `r${i}_now`)}\n </td>\n <td className=\"py-1.5 pr-2 text-right tabular-nums\">\n {countOf(counts.data, `r${i}_next`)}\n </td>\n <td className=\"py-1.5 text-right tabular-nums\">\n {countOf(counts.data, `r${i}_later`)}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </DashboardCard>\n );\n}\n"],"mappings":";;;;;;;AAcA,IAAM,IAAe,GAEf,IAAgB,CAAG;;;;;;;;;;GAYnB,IAA6B,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwJtC,SAAS,EAAQ,GAA4C,GAAqB;AAChF,QAAO,IAAO,IAAM,cAAc;;AAGpC,SAAgB,EAAmB,EACjC,gBACA,kBAIC;CACD,IAAM,EAAE,SAAM,GAAS,EACjB,IAAO,EAA0B,GAAe;EACpD,WAAW,EAAE,gBAAa;EAC1B,MAAM,CAAC;EACR,CAAC,EACI,IAAW,EAAK,MAAM,mBAAmB,SAAS,EAAE,EACpD,IAAa,EAAK,MAAM,mBAAmB,cAAc,EAAS,QAClE,IAAQ,MAAM,KAAK,EAAE,QAAQ,GAAc,GAAG,GAAG,MAAM,EAAS,IAAI,MAAM,GAAG,EAE7E,IAAS,EAAmC,GAA4B;EAC5E,WAAW;GACT;GACA,IAAI,EAAM;GACV,IAAI,EAAM;GACV,IAAI,EAAM;GACV,IAAI,EAAM;GACV,IAAI,EAAM;GACV,IAAI,EAAM;GACX;EACD,MAAM,CAAC,KAAe,EAAS,WAAW;EAC3C,CAAC,EAEI,IAAW,EAAK,WAAW,CAAC,EAAK,QAAU,EAAO,WAAW,CAAC,EAAO,MACrE,IAAQ,EAAK,SAAS,EAAO;AAEnC,QACE,kBAAC,GAAD;EACE,MAAM,kBAAC,GAAD,EAAK,WAAU,WAAY,CAAA;EACjC,OAAO,EAAE,wCAAwC,mBAAmB;EACpE,YAAY,EACV,6CACA,8CACD;EACQ;EACF;EACP,OAAO,CAAC,KAAW,EAAS,WAAW;EACvC,cAAc,EAAE,wCAAwC,mBAAmB;EAC3E,WAAW;GACT,OAAO,EAAE,iCAAiC,oBAAoB;GAC9D,SAAS;GACV;YAED,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,KAAD;IAAG,WAAU;cACV,EAAe,EAAS,QAAQ,GAAY,aAAa;IACxD,CAAA,EACJ,kBAAC,SAAD;IAAO,WAAU;cAAjB,CACE,kBAAC,SAAD,EAAA,UACE,kBAAC,MAAD;KAAI,WAAU;eAAd;MACE,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAE,uCAAuC,UAAU;OACjD,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAE,sCAAsC,MAAM;OAC5C,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAE,uCAAuC,OAAO;OAC9C,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAE,wCAAwC,QAAQ;OAChD,CAAA;MACF;QACC,CAAA,EACR,kBAAC,SAAD,EAAA,UACG,EAAS,KAAK,GAAG,MAChB,kBAAC,MAAD;KAAe,WAAU;eAAzB;MACE,kBAAC,MAAD;OAAI,WAAU;iBAA2B,EAAE;OAAU,CAAA;MACrD,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAQ,EAAO,MAAM,IAAI,EAAE,MAAM;OAC/B,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAQ,EAAO,MAAM,IAAI,EAAE,OAAO;OAChC,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAQ,EAAO,MAAM,IAAI,EAAE,QAAQ;OACjC,CAAA;MACF;OAXI,EAAE,GAWN,CACL,EACI,CAAA,CACF;MACJ;;EACQ,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SprintCapacityCard.d.ts","sourceRoot":"","sources":["../../../../src/planmagnet/dashboards/cards/SprintCapacityCard.tsx"],"names":[],"mappings":"AA2DA,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,2CA0HA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SprintCapacityCard.js","names":[],"sources":["../../../../src/planmagnet/dashboards/cards/SprintCapacityCard.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Users } from 'lucide-react';\nimport { DashboardCard, DrillDownLink } from '../DashboardUI';\nimport { PersonAvatar } from '../../people/People';\nimport { usePlanMagnetNavigate } from '../../providers/PlanMagnetProvider';\nimport { MemberSkills } from '../../skills/SkillChips';\n\n/** Capacity (ANR-07): `planmagnetSprintCapacity` (BOFF-4444) of the active sprint — real CrewFoundry\n * allocation/availability per assignee, cross-layer. Capacity is hours and story points per person, never per\n * skill; each person's CrewFoundry skills are shown read-only (CrewFoundry owns them — the link edits them there),\n * and the dashboard's Skills coverage card matches them against the open work's required skills. `skills` rides on\n * this query rather than a second one: a second planmagnetSprintCapacity would page the whole CrewFoundry roster\n * again for every view. */\nconst GET_SPRINT_CAPACITY = gql`\n query DashboardSprintCapacity($sprintId: ID!) {\n planmagnetSprintCapacity(sprintId: $sprintId) {\n sprintId\n crewfoundryUnavailable\n unmatchedCount\n members {\n actorId\n employeeId\n employeeName\n skills\n position\n department\n allocatedHours\n billableHours\n utilizationPercent\n assignedWorkItemCount\n assignedStoryPoints\n }\n }\n }\n`;\n\ninterface SprintCapacityData {\n planmagnetSprintCapacity: {\n sprintId: string;\n crewfoundryUnavailable: boolean;\n unmatchedCount: number;\n members: {\n actorId: string;\n employeeId: string;\n employeeName: string;\n skills: string[];\n position: string;\n department: string;\n allocatedHours: number;\n billableHours: number;\n utilizationPercent: number | null;\n assignedWorkItemCount: number;\n assignedStoryPoints: number;\n }[];\n };\n}\n\nexport function SprintCapacityCard({\n sprintId,\n onDrillDown,\n}: {\n sprintId: string;\n onDrillDown: () => void;\n}) {\n const { t } = useI18n();\n const navigate = usePlanMagnetNavigate();\n const { data, loading, error } = useQuery<SprintCapacityData>(GET_SPRINT_CAPACITY, {\n variables: { sprintId },\n skip: !sprintId,\n });\n const capacity = data?.planmagnetSprintCapacity;\n\n return (\n <DashboardCard\n icon={<Users className=\"h-4 w-4\" />}\n title={t('planmagnet.dashboards.pm.capacity.title', 'Capacity')}\n definition={t(\n 'planmagnet.dashboards.pm.capacity.definition',\n \"Real CrewFoundry allocation for the active sprint's assignees — hours and story points, per person.\"\n )}\n loading={loading && !data}\n error={error}\n empty={\n !sprintId ||\n (!!capacity && capacity.members.length === 0 && !capacity.crewfoundryUnavailable)\n }\n emptyMessage={\n !sprintId\n ? t('planmagnet.dashboards.pm.capacity.noSprint', 'No active sprint for this project.')\n : t(\n 'planmagnet.dashboards.pm.capacity.noMembers',\n 'No CrewFoundry-matched assignees in this sprint.'\n )\n }\n drillDown={{\n label: t('planmagnet.dashboards.pm.capacity.drillDown', 'Open project'),\n onClick: onDrillDown,\n }}\n >\n {capacity ? (\n capacity.crewfoundryUnavailable ? (\n <p className=\"text-sm text-muted-foreground\">\n {t(\n 'planmagnet.dashboards.pm.capacity.crewfoundryUnavailable',\n 'CrewFoundry is temporarily unavailable, so capacity and skills can’t be shown right now. Try again shortly.'\n )}\n </p>\n ) : (\n <div className=\"space-y-2\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"text-left text-xs text-muted-foreground\">\n <th className=\"py-1 pr-2 font-normal\">\n {t('planmagnet.dashboards.pm.capacity.person', 'Person')}\n </th>\n <th className=\"py-1 pr-2 text-right font-normal\">\n {t('planmagnet.dashboards.pm.capacity.allocated', 'Allocated h')}\n </th>\n <th className=\"py-1 pr-2 text-right font-normal\">\n {t('planmagnet.dashboards.pm.capacity.utilization', 'Utilization')}\n </th>\n <th className=\"py-1 text-right font-normal\">\n {t('planmagnet.dashboards.pm.capacity.items', 'Items (pts)')}\n </th>\n </tr>\n </thead>\n <tbody>\n {capacity.members.map((m) => (\n <tr key={m.actorId} className=\"border-t\">\n <td className=\"py-1.5 pr-2\">\n <div className=\"flex items-center gap-2\">\n <PersonAvatar\n id={m.actorId}\n className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-primary/10 text-[10px] font-medium text-primary\"\n />\n <div>\n <div className=\"font-medium\">{m.employeeName}</div>\n <div className=\"text-xs text-muted-foreground\">\n {m.position} · {m.department}\n </div>\n <MemberSkills\n skills={m.skills}\n employeeId={m.employeeId}\n employeeName={m.employeeName}\n />\n </div>\n </div>\n </td>\n <td className=\"py-1.5 pr-2 text-right tabular-nums\">\n {m.allocatedHours.toFixed(1)}\n </td>\n <td className=\"py-1.5 pr-2 text-right tabular-nums\">\n {m.utilizationPercent == null ? '—' : `${m.utilizationPercent}%`}\n </td>\n <td className=\"py-1.5 text-right tabular-nums\">\n {m.assignedWorkItemCount} ({m.assignedStoryPoints})\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n {capacity.unmatchedCount > 0 ? (\n <div\n className=\"flex items-center justify-between gap-2\"\n data-testid=\"sprint-capacity-card-unmatched\"\n >\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'planmagnet.dashboards.pm.capacity.unmatched',\n '{{count}} sprint assignee(s) could not be matched to a CrewFoundry employee record.',\n { count: capacity.unmatchedCount }\n )}\n </p>\n {/* CWF-30: the admin remediation panel on the Members page. */}\n <DrillDownLink\n label={t('planmagnet.dashboards.pm.capacity.fixUnmatched', 'Fix')}\n onClick={() => navigate('/team/team-page?focus=unmatched-crew-identities')}\n />\n </div>\n ) : null}\n </div>\n )\n ) : null}\n </DashboardCard>\n );\n}\n"],"mappings":";;;;;;;;;;AAeA,IAAM,IAAsB,CAAG;;;;;;;;;;;;;;;;;;;;;;AA4C/B,SAAgB,EAAmB,EACjC,aACA,kBAIC;CACD,IAAM,EAAE,SAAM,GAAS,EACjB,IAAW,GAAuB,EAClC,EAAE,SAAM,YAAS,aAAU,EAA6B,GAAqB;EACjF,WAAW,EAAE,aAAU;EACvB,MAAM,CAAC;EACR,CAAC,EACI,IAAW,GAAM;AAEvB,QACE,kBAAC,GAAD;EACE,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;EACnC,OAAO,EAAE,2CAA2C,WAAW;EAC/D,YAAY,EACV,gDACA,sGACD;EACD,SAAS,KAAW,CAAC;EACd;EACP,OACE,CAAC,KACA,CAAC,CAAC,KAAY,EAAS,QAAQ,WAAW,KAAK,CAAC,EAAS;EAE5D,cACG,IAEG,EACE,+CACA,mDACD,GAJD,EAAE,8CAA8C,qCAAqC;EAM3F,WAAW;GACT,OAAO,EAAE,+CAA+C,eAAe;GACvE,SAAS;GACV;YAEA,IACC,EAAS,yBACP,kBAAC,KAAD;GAAG,WAAU;aACV,EACC,4DACA,8GACD;GACC,CAAA,GAEJ,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,SAAD;IAAO,WAAU;cAAjB,CACE,kBAAC,SAAD,EAAA,UACE,kBAAC,MAAD;KAAI,WAAU;eAAd;MACE,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAE,4CAA4C,SAAS;OACrD,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAE,+CAA+C,cAAc;OAC7D,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAE,iDAAiD,cAAc;OAC/D,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAE,2CAA2C,cAAc;OACzD,CAAA;MACF;QACC,CAAA,EACR,kBAAC,SAAD,EAAA,UACG,EAAS,QAAQ,KAAK,MACrB,kBAAC,MAAD;KAAoB,WAAU;eAA9B;MACE,kBAAC,MAAD;OAAI,WAAU;iBACZ,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,GAAD;SACE,IAAI,EAAE;SACN,WAAU;SACV,CAAA,EACF,kBAAC,OAAD,EAAA,UAAA;SACE,kBAAC,OAAD;UAAK,WAAU;oBAAe,EAAE;UAAmB,CAAA;SACnD,kBAAC,OAAD;UAAK,WAAU;oBAAf;WACG,EAAE;WAAS;WAAI,EAAE;WACd;;SACN,kBAAC,GAAD;UACE,QAAQ,EAAE;UACV,YAAY,EAAE;UACd,cAAc,EAAE;UAChB,CAAA;SACE,EAAA,CAAA,CACF;;OACH,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAE,eAAe,QAAQ,EAAE;OACzB,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAE,sBAAsB,OAAO,MAAM,GAAG,EAAE,mBAAmB;OAC3D,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBAAd;QACG,EAAE;QAAsB;QAAG,EAAE;QAAoB;QAC/C;;MACF;OA7BI,EAAE,QA6BN,CACL,EACI,CAAA,CACF;OACP,EAAS,iBAAiB,IACzB,kBAAC,OAAD;IACE,WAAU;IACV,eAAY;cAFd,CAIE,kBAAC,KAAD;KAAG,WAAU;eACV,EACC,+CACA,uFACA,EAAE,OAAO,EAAS,gBAAgB,CACnC;KACC,CAAA,EAEJ,kBAAC,GAAD;KACE,OAAO,EAAE,kDAAkD,MAAM;KACjE,eAAe,EAAS,kDAAkD;KAC1E,CAAA,CACE;QACJ,KACA;OAEN;EACU,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TaskCompletionCard.d.ts","sourceRoot":"","sources":["../../../../src/planmagnet/dashboards/cards/TaskCompletionCard.tsx"],"names":[],"mappings":"AA0CA,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,SAAS,EACT,WAAW,GACZ,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,2CA6DA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TaskCompletionCard.js","names":[],"sources":["../../../../src/planmagnet/dashboards/cards/TaskCompletionCard.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { CheckSquare } from 'lucide-react';\nimport { DashboardCard, PercentBar } from '../DashboardUI';\nimport { enumLabel } from '../../controls/WorkItemControls';\n\n/** Task completion (ANR-07): server-computed counts by status for one project — never a client-side count\n * over a loaded page (BOFF-7997's fix for the workspace-wide Analytics cards, reused here per project). */\nconst GET_PROJECT_WORK_ITEM_COUNTS = gql`\n query DashboardProjectWorkItemCounts($workspaceId: ID!, $projectId: String!) {\n planmagnetWorkItemCounts(workspaceId: $workspaceId, filter: { projectId: $projectId }) {\n total\n points\n blocked\n byStatus {\n status\n count\n }\n }\n }\n`;\n\ninterface WorkItemCountsData {\n planmagnetWorkItemCounts: {\n total: number;\n points: number;\n blocked: number;\n byStatus: { status: string; count: number }[];\n };\n}\n\nconst STATUS_ORDER = [\n 'BACKLOG',\n 'TODO',\n 'IN_PROGRESS',\n 'IN_REVIEW',\n 'TESTING',\n 'DONE',\n 'CANCELLED',\n];\n\nexport function TaskCompletionCard({\n workspaceId,\n projectId,\n onDrillDown,\n}: {\n workspaceId?: string | null;\n projectId: string;\n onDrillDown: () => void;\n}) {\n const { t } = useI18n();\n const { data, loading, error } = useQuery<WorkItemCountsData>(GET_PROJECT_WORK_ITEM_COUNTS, {\n variables: { workspaceId, projectId },\n skip: !workspaceId || !projectId,\n });\n const counts = data?.planmagnetWorkItemCounts;\n const byStatus = new Map((counts?.byStatus ?? []).map((s) => [s.status, s.count]));\n const cancelled = byStatus.get('CANCELLED') ?? 0;\n const done = byStatus.get('DONE') ?? 0;\n const live = (counts?.total ?? 0) - cancelled;\n const completionRate = live > 0 ? Math.round((done / live) * 100) : null;\n\n return (\n <DashboardCard\n icon={<CheckSquare className=\"h-4 w-4\" />}\n title={t('planmagnet.dashboards.pm.tasks.title', 'Task completion')}\n definition={t(\n 'planmagnet.dashboards.pm.tasks.definition',\n 'Work items by status for the selected project, and the share of live work that is Done.'\n )}\n loading={loading && !data}\n error={error}\n empty={!projectId}\n emptyMessage={t('planmagnet.dashboards.pm.tasks.noProject', 'Select a project above.')}\n drillDown={{\n label: t('planmagnet.dashboards.pm.tasks.drillDown', 'Open project'),\n onClick: onDrillDown,\n }}\n >\n {counts ? (\n <div className=\"space-y-3\">\n <PercentBar\n percent={completionRate}\n label={t('planmagnet.dashboards.pm.tasks.completionRate', 'Completion rate')}\n />\n {completionRate == null ? (\n <p className=\"text-xs text-muted-foreground\">\n {t('planmagnet.dashboards.pm.tasks.noWork', 'No live work items yet.')}\n </p>\n ) : null}\n <div className=\"grid grid-cols-2 gap-x-4 gap-y-1 text-sm\">\n {STATUS_ORDER.map((status) => (\n <div key={status} className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">{enumLabel(status)}</span>\n <span className=\"tabular-nums\">{byStatus.get(status) ?? 0}</span>\n </div>\n ))}\n </div>\n <p className=\"text-xs text-muted-foreground\">\n {t('planmagnet.dashboards.pm.tasks.points', '{{points}} story points total', {\n points: counts.points,\n })}\n {counts.blocked > 0\n ? ` · ${t('planmagnet.dashboards.pm.tasks.blocked', '{{count}} blocked by a dependency', { count: counts.blocked })}`\n : ''}\n </p>\n </div>\n ) : null}\n </DashboardCard>\n );\n}\n"],"mappings":";;;;;;;;AASA,IAAM,IAA+B,CAAG;;;;;;;;;;;;GAuBlC,IAAe;CACnB;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,SAAgB,EAAmB,EACjC,gBACA,cACA,kBAKC;CACD,IAAM,EAAE,SAAM,GAAS,EACjB,EAAE,SAAM,YAAS,aAAU,EAA6B,GAA8B;EAC1F,WAAW;GAAE;GAAa;GAAW;EACrC,MAAM,CAAC,KAAe,CAAC;EACxB,CAAC,EACI,IAAS,GAAM,0BACf,IAAW,IAAI,KAAK,GAAQ,YAAY,EAAE,EAAE,KAAK,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,EAC5E,IAAY,EAAS,IAAI,YAAY,IAAI,GACzC,IAAO,EAAS,IAAI,OAAO,IAAI,GAC/B,KAAQ,GAAQ,SAAS,KAAK,GAC9B,IAAiB,IAAO,IAAI,KAAK,MAAO,IAAO,IAAQ,IAAI,GAAG;AAEpE,QACE,kBAAC,GAAD;EACE,MAAM,kBAAC,GAAD,EAAa,WAAU,WAAY,CAAA;EACzC,OAAO,EAAE,wCAAwC,kBAAkB;EACnE,YAAY,EACV,6CACA,0FACD;EACD,SAAS,KAAW,CAAC;EACd;EACP,OAAO,CAAC;EACR,cAAc,EAAE,4CAA4C,0BAA0B;EACtF,WAAW;GACT,OAAO,EAAE,4CAA4C,eAAe;GACpE,SAAS;GACV;YAEA,IACC,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,GAAD;KACE,SAAS;KACT,OAAO,EAAE,iDAAiD,kBAAkB;KAC5E,CAAA;IACD,KAAkB,OACjB,kBAAC,KAAD;KAAG,WAAU;eACV,EAAE,yCAAyC,0BAA0B;KACpE,CAAA,GACF;IACJ,kBAAC,OAAD;KAAK,WAAU;eACZ,EAAa,KAAK,MACjB,kBAAC,OAAD;MAAkB,WAAU;gBAA5B,CACE,kBAAC,QAAD;OAAM,WAAU;iBAAyB,EAAU,EAAO;OAAQ,CAAA,EAClE,kBAAC,QAAD;OAAM,WAAU;iBAAgB,EAAS,IAAI,EAAO,IAAI;OAAS,CAAA,CAC7D;QAHI,EAGJ,CACN;KACE,CAAA;IACN,kBAAC,KAAD;KAAG,WAAU;eAAb,CACG,EAAE,yCAAyC,iCAAiC,EAC3E,QAAQ,EAAO,QAChB,CAAC,EACD,EAAO,UAAU,IACd,MAAM,EAAE,0CAA0C,qCAAqC,EAAE,OAAO,EAAO,SAAS,CAAC,KACjH,GACF;;IACA;OACJ;EACU,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TeamCapacityCard.d.ts","sourceRoot":"","sources":["../../../../src/planmagnet/dashboards/cards/TeamCapacityCard.tsx"],"names":[],"mappings":"AA6CA,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,KAAK,EACL,UAAU,EACV,WAAW,EACX,UAAU,GACX,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,gGAAgG;IAChG,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,2CAwFA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TeamCapacityCard.js","names":[],"sources":["../../../../src/planmagnet/dashboards/cards/TeamCapacityCard.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Gauge } from 'lucide-react';\nimport { DashboardCard, cappedSubtitle } from '../DashboardUI';\n\n/**\n * Team capacity (ANR-06 \"Resource utilization\", reused by CWF-31 \"Leadership\"'s team-utilization-summary\n * section). `Team.capacity` is the only workspace-wide resourcing number the schema exposes per team —\n * there is no `planmagnetWorkItemCounts`-style aggregate keyed by team (its filter takes `assigneeId`/\n * `projectId`, never `teamId`), so a live \"load against capacity\" figure would cost one query per team's\n * member list. Rather than looping over every team on the client (the thing every dashboard on this feature\n * was built to avoid), this card shows capacity only and sends the viewer to a chosen team's own live\n * breakdown on `dashboards/team-utilization-page` for open load. `first: 100` (same cap `Pickers.tsx`'s\n * `PICKER_TEAMS` and `TeamTeamsListPagePage.tsx` use for a workspace's team list) so the combined-capacity\n * total below — summed over this fetched batch, not `totalCount` — is the real workspace total for any\n * realistic team count rather than a silently-partial sample of it.\n */\nconst GET_TEAM_CAPACITY = gql`\n query DashboardTeamCapacity($workspaceId: ID!) {\n planmagnetTeams(workspaceId: $workspaceId, pagination: { first: 100 }) {\n items {\n id\n name\n capacity\n members {\n id\n }\n }\n totalCount\n }\n }\n`;\n\ninterface TeamRow {\n id: string;\n name: string;\n capacity: number | null;\n members: { id: string }[];\n}\n\ninterface TeamCapacityData {\n planmagnetTeams: { items: TeamRow[]; totalCount: number };\n}\n\nexport function TeamCapacityCard({\n workspaceId,\n title,\n definition,\n onDrillDown,\n onOpenTeam,\n}: {\n workspaceId?: string | null;\n title?: string;\n definition?: string;\n /** \"View all teams\" (Executive's Resource utilization). */\n onDrillDown: () => void;\n /** Opens a specific team's live workload breakdown (dashboards/team-utilization-page?team=). */\n onOpenTeam: (teamId: string) => void;\n}) {\n const { t } = useI18n();\n const { data, loading, error } = useQuery<TeamCapacityData>(GET_TEAM_CAPACITY, {\n variables: { workspaceId },\n skip: !workspaceId,\n });\n const teams = data?.planmagnetTeams.items ?? [];\n const totalCount = data?.planmagnetTeams.totalCount ?? teams.length;\n const totalCapacity = teams.reduce((sum, team) => sum + (team.capacity ?? 0), 0);\n const totalMembers = teams.reduce((sum, team) => sum + team.members.length, 0);\n\n return (\n <DashboardCard\n icon={<Gauge className=\"h-4 w-4\" />}\n title={title ?? t('planmagnet.dashboards.capacity.title', 'Resource utilization')}\n definition={\n definition ??\n t(\n 'planmagnet.dashboards.capacity.definition',\n \"Each team's story-point sprint capacity — the workspace has no single live utilization number.\"\n )\n }\n loading={loading && !data}\n error={error}\n empty={!loading && teams.length === 0}\n emptyMessage={t('planmagnet.dashboards.capacity.empty', 'No teams set up yet.')}\n drillDown={{\n label: t('planmagnet.dashboards.viewAll', 'View all teams'),\n onClick: onDrillDown,\n }}\n >\n <div className=\"space-y-3\">\n <p className=\"text-xs text-muted-foreground\">\n {cappedSubtitle(teams.length, totalCount, 'team(s)')} ·{' '}\n {t(\n 'planmagnet.dashboards.capacity.totals',\n '{{capacity}} pts combined capacity, {{members}} members',\n {\n capacity: totalCapacity,\n members: totalMembers,\n }\n )}\n </p>\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"text-left text-xs text-muted-foreground\">\n <th className=\"py-1 pr-2 font-normal\">\n {t('planmagnet.dashboards.capacity.team', 'Team')}\n </th>\n <th className=\"py-1 pr-2 text-right font-normal\">\n {t('planmagnet.dashboards.capacity.members', 'Members')}\n </th>\n <th className=\"py-1 pr-2 text-right font-normal\">\n {t('planmagnet.dashboards.capacity.capacity', 'Capacity (pts)')}\n </th>\n <th className=\"py-1 text-right font-normal\">\n {t('planmagnet.dashboards.capacity.load', 'Open load')}\n </th>\n </tr>\n </thead>\n <tbody>\n {teams.map((team) => (\n <tr key={team.id} className=\"border-t align-middle\">\n <td className=\"py-1.5 pr-2 font-medium\">{team.name}</td>\n <td className=\"py-1.5 pr-2 text-right tabular-nums\">{team.members.length}</td>\n <td className=\"py-1.5 pr-2 text-right tabular-nums\">{team.capacity ?? '—'}</td>\n <td className=\"py-1.5 text-right\">\n <button\n type=\"button\"\n onClick={() => onOpenTeam(team.id)}\n className=\"text-xs font-medium text-primary hover:underline\"\n >\n {t('planmagnet.dashboards.capacity.open', 'Open')}\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'planmagnet.dashboards.capacity.loadNote',\n 'Open load is not measured per team here — it would cost one query per team. Open a team above for its live, per-member breakdown.'\n )}\n </p>\n </div>\n </DashboardCard>\n );\n}\n"],"mappings":";;;;;;;AAkBA,IAAM,IAAoB,CAAG;;;;;;;;;;;;;;;AA2B7B,SAAgB,EAAiB,EAC/B,gBACA,UACA,eACA,gBACA,iBASC;CACD,IAAM,EAAE,SAAM,GAAS,EACjB,EAAE,SAAM,YAAS,aAAU,EAA2B,GAAmB;EAC7E,WAAW,EAAE,gBAAa;EAC1B,MAAM,CAAC;EACR,CAAC,EACI,IAAQ,GAAM,gBAAgB,SAAS,EAAE,EACzC,IAAa,GAAM,gBAAgB,cAAc,EAAM,QACvD,IAAgB,EAAM,QAAQ,GAAK,MAAS,KAAO,EAAK,YAAY,IAAI,EAAE,EAC1E,IAAe,EAAM,QAAQ,GAAK,MAAS,IAAM,EAAK,QAAQ,QAAQ,EAAE;AAE9E,QACE,kBAAC,GAAD;EACE,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;EACnC,OAAO,KAAS,EAAE,wCAAwC,uBAAuB;EACjF,YACE,KACA,EACE,6CACA,iGACD;EAEH,SAAS,KAAW,CAAC;EACd;EACP,OAAO,CAAC,KAAW,EAAM,WAAW;EACpC,cAAc,EAAE,wCAAwC,uBAAuB;EAC/E,WAAW;GACT,OAAO,EAAE,iCAAiC,iBAAiB;GAC3D,SAAS;GACV;YAED,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,KAAD;KAAG,WAAU;eAAb;MACG,EAAe,EAAM,QAAQ,GAAY,UAAU;MAAC;MAAG;MACvD,EACC,yCACA,2DACA;OACE,UAAU;OACV,SAAS;OACV,CACF;MACC;;IACJ,kBAAC,SAAD;KAAO,WAAU;eAAjB,CACE,kBAAC,SAAD,EAAA,UACE,kBAAC,MAAD;MAAI,WAAU;gBAAd;OACE,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAE,uCAAuC,OAAO;QAC9C,CAAA;OACL,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAE,0CAA0C,UAAU;QACpD,CAAA;OACL,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAE,2CAA2C,iBAAiB;QAC5D,CAAA;OACL,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAE,uCAAuC,YAAY;QACnD,CAAA;OACF;SACC,CAAA,EACR,kBAAC,SAAD,EAAA,UACG,EAAM,KAAK,MACV,kBAAC,MAAD;MAAkB,WAAU;gBAA5B;OACE,kBAAC,MAAD;QAAI,WAAU;kBAA2B,EAAK;QAAU,CAAA;OACxD,kBAAC,MAAD;QAAI,WAAU;kBAAuC,EAAK,QAAQ;QAAY,CAAA;OAC9E,kBAAC,MAAD;QAAI,WAAU;kBAAuC,EAAK,YAAY;QAAS,CAAA;OAC/E,kBAAC,MAAD;QAAI,WAAU;kBACZ,kBAAC,UAAD;SACE,MAAK;SACL,eAAe,EAAW,EAAK,GAAG;SAClC,WAAU;mBAET,EAAE,uCAAuC,OAAO;SAC1C,CAAA;QACN,CAAA;OACF;QAbI,EAAK,GAaT,CACL,EACI,CAAA,CACF;;IACR,kBAAC,KAAD;KAAG,WAAU;eACV,EACC,2CACA,oIACD;KACC,CAAA;IACA;;EACQ,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TeamOverviewCard.d.ts","sourceRoot":"","sources":["../../../../src/planmagnet/dashboards/cards/TeamOverviewCard.tsx"],"names":[],"mappings":"AAmCA,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,WAAW,GACZ,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,2CAqEA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TeamOverviewCard.js","names":[],"sources":["../../../../src/planmagnet/dashboards/cards/TeamOverviewCard.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Gauge } from 'lucide-react';\nimport { DashboardCard } from '../DashboardUI';\nimport { PersonName } from '../../people/People';\n\n/** Team capacity/allocation (ANR-28): the chosen team's own record — capacity, lead, and its full member\n * list (never truncated: a team's own membership is not the \"loop over every team\" the economy rule warns\n * against, it's exactly the chosen scope). */\nconst GET_TEAM_OVERVIEW = gql`\n query DashboardTeamOverview($id: ID!) {\n planmagnetTeam(id: $id) {\n id\n name\n capacity\n leadId\n members {\n id\n actorId\n }\n }\n }\n`;\n\ninterface TeamOverviewData {\n planmagnetTeam: {\n id: string;\n name: string;\n capacity: number | null;\n leadId: string | null;\n members: { id: string; actorId: string }[];\n } | null;\n}\n\nexport function TeamOverviewCard({\n teamId,\n onDrillDown,\n}: {\n teamId: string;\n onDrillDown: () => void;\n}) {\n const { t } = useI18n();\n const { data, loading, error } = useQuery<TeamOverviewData>(GET_TEAM_OVERVIEW, {\n variables: { id: teamId },\n skip: !teamId,\n });\n const team = data?.planmagnetTeam;\n\n return (\n <DashboardCard\n icon={<Gauge className=\"h-4 w-4\" />}\n title={t('planmagnet.dashboards.team.overview.title', 'Team capacity & allocation')}\n definition={t(\n 'planmagnet.dashboards.team.overview.definition',\n \"The chosen team's own sprint capacity and full membership.\"\n )}\n loading={loading && !data}\n error={error}\n empty={!teamId || (!loading && !team)}\n emptyMessage={\n teamId\n ? t('planmagnet.dashboards.team.overview.notFound', 'Team not found.')\n : t('planmagnet.dashboards.team.overview.noTeam', 'Select a team above.')\n }\n drillDown={{\n label: t('planmagnet.dashboards.team.overview.drillDown', 'Open team'),\n onClick: onDrillDown,\n }}\n >\n {team ? (\n <div className=\"space-y-2\">\n <div className=\"grid grid-cols-2 gap-3 text-sm\">\n <div>\n <p className=\"text-xs text-muted-foreground\">\n {t('planmagnet.dashboards.team.overview.capacity', 'Sprint capacity')}\n </p>\n <p className=\"text-lg font-semibold\">\n {team.capacity != null\n ? t('planmagnet.dashboards.team.overview.pts', '{{pts}} pts', {\n pts: team.capacity,\n })\n : '—'}\n </p>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">\n {t('planmagnet.dashboards.team.overview.lead', 'Lead')}\n </p>\n <p className=\"text-lg font-semibold\">\n <PersonName id={team.leadId} />\n </p>\n </div>\n </div>\n <div>\n <p className=\"text-xs text-muted-foreground\">\n {t('planmagnet.dashboards.team.overview.members', '{{count}} member(s)', {\n count: team.members.length,\n })}\n </p>\n <div className=\"mt-1 flex flex-wrap gap-x-3 gap-y-1 text-sm\">\n {team.members.map((m) => (\n <PersonName key={m.id} id={m.actorId} />\n ))}\n </div>\n </div>\n </div>\n ) : null}\n </DashboardCard>\n );\n}\n"],"mappings":";;;;;;;;AAUA,IAAM,IAAoB,CAAG;;;;;;;;;;;;;;AAyB7B,SAAgB,EAAiB,EAC/B,WACA,kBAIC;CACD,IAAM,EAAE,SAAM,GAAS,EACjB,EAAE,SAAM,YAAS,aAAU,EAA2B,GAAmB;EAC7E,WAAW,EAAE,IAAI,GAAQ;EACzB,MAAM,CAAC;EACR,CAAC,EACI,IAAO,GAAM;AAEnB,QACE,kBAAC,GAAD;EACE,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;EACnC,OAAO,EAAE,6CAA6C,6BAA6B;EACnF,YAAY,EACV,kDACA,6DACD;EACD,SAAS,KAAW,CAAC;EACd;EACP,OAAO,CAAC,KAAW,CAAC,KAAW,CAAC;EAChC,cACE,IACI,EAAE,gDAAgD,kBAAkB,GACpE,EAAE,8CAA8C,uBAAuB;EAE7E,WAAW;GACT,OAAO,EAAE,iDAAiD,YAAY;GACtE,SAAS;GACV;YAEA,IACC,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;KAAG,WAAU;eACV,EAAE,gDAAgD,kBAAkB;KACnE,CAAA,EACJ,kBAAC,KAAD;KAAG,WAAU;eACV,EAAK,YAAY,OAId,MAHA,EAAE,2CAA2C,eAAe,EAC1D,KAAK,EAAK,UACX,CAAC;KAEJ,CAAA,CACA,EAAA,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;KAAG,WAAU;eACV,EAAE,4CAA4C,OAAO;KACpD,CAAA,EACJ,kBAAC,KAAD;KAAG,WAAU;eACX,kBAAC,GAAD,EAAY,IAAI,EAAK,QAAU,CAAA;KAC7B,CAAA,CACA,EAAA,CAAA,CACF;OACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;IAAG,WAAU;cACV,EAAE,+CAA+C,uBAAuB,EACvE,OAAO,EAAK,QAAQ,QACrB,CAAC;IACA,CAAA,EACJ,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAK,QAAQ,KAAK,MACjB,kBAAC,GAAD,EAAuB,IAAI,EAAE,SAAW,EAAvB,EAAE,GAAqB,CACxC;IACE,CAAA,CACF,EAAA,CAAA,CACF;OACJ;EACU,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TeamWorkloadCard.d.ts","sourceRoot":"","sources":["../../../../src/planmagnet/dashboards/cards/TeamWorkloadCard.tsx"],"names":[],"mappings":"AAoSA,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,cAAc,EACd,QAAQ,EACR,KAAK,EACL,WAAW,GACZ,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,uFAAuF;IACvF,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,2CAmHA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TeamWorkloadCard.js","names":[],"sources":["../../../../src/planmagnet/dashboards/cards/TeamWorkloadCard.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { ListTodo } from 'lucide-react';\nimport { DashboardCard, cappedSubtitle } from '../DashboardUI';\nimport { PersonName } from '../../people/People';\n\n/**\n * Workload distribution + individual delivery (ANR-28), combined into one table: both bullets read the same\n * per-member data (open work items, items that reached Done), so one card avoids fetching it twice.\n *\n * ONE request for up to `MAX_MEMBERS` team members, via GraphQL aliases — never one request per member.\n * `assigneeId` on `PlanmagnetWorkItemFilter` is a plain nullable String, so an unused slot is padded with\n * `\"\"`, which matches no work item and comes back as a harmless 0/empty rather than a GraphQL error. A\n * member beyond the cap is simply not queried; the card says so rather than silently dropping them.\n *\n * \"Completed in the last {{weeks}} weeks\" reads `WorkItem.statusSince` on the member's DONE items — the\n * schema has no per-member, date-bounded completion count (`planmagnetMyDeliveryTrend` is scoped to the\n * CALLING actor only, never an arbitrary member). `statusSince` is when the item entered DONE, so it is the\n * right field to measure against, but the DONE list itself is capped at 50 items per member and not\n * ordered by recency by the API — a member who closed more than 50 items in the window is undercounted; the\n * card says so per row via the sampled/total note it shows in the table's caption.\n */\nconst MAX_MEMBERS = 12;\n\nconst GET_TEAM_WORKLOAD = gql`\n query TeamMemberWorkload(\n $workspaceId: ID!\n $m0: String!\n $m1: String!\n $m2: String!\n $m3: String!\n $m4: String!\n $m5: String!\n $m6: String!\n $m7: String!\n $m8: String!\n $m9: String!\n $m10: String!\n $m11: String!\n ) {\n m0_counts: planmagnetWorkItemCounts(workspaceId: $workspaceId, filter: { assigneeId: $m0 }) {\n total\n blocked\n byStatus {\n status\n count\n }\n }\n m0_done: planmagnetWorkItems(\n workspaceId: $workspaceId\n filter: { assigneeId: $m0, status: DONE }\n pagination: { first: 50 }\n ) {\n totalCount\n items {\n id\n statusSince\n }\n }\n m1_counts: planmagnetWorkItemCounts(workspaceId: $workspaceId, filter: { assigneeId: $m1 }) {\n total\n blocked\n byStatus {\n status\n count\n }\n }\n m1_done: planmagnetWorkItems(\n workspaceId: $workspaceId\n filter: { assigneeId: $m1, status: DONE }\n pagination: { first: 50 }\n ) {\n totalCount\n items {\n id\n statusSince\n }\n }\n m2_counts: planmagnetWorkItemCounts(workspaceId: $workspaceId, filter: { assigneeId: $m2 }) {\n total\n blocked\n byStatus {\n status\n count\n }\n }\n m2_done: planmagnetWorkItems(\n workspaceId: $workspaceId\n filter: { assigneeId: $m2, status: DONE }\n pagination: { first: 50 }\n ) {\n totalCount\n items {\n id\n statusSince\n }\n }\n m3_counts: planmagnetWorkItemCounts(workspaceId: $workspaceId, filter: { assigneeId: $m3 }) {\n total\n blocked\n byStatus {\n status\n count\n }\n }\n m3_done: planmagnetWorkItems(\n workspaceId: $workspaceId\n filter: { assigneeId: $m3, status: DONE }\n pagination: { first: 50 }\n ) {\n totalCount\n items {\n id\n statusSince\n }\n }\n m4_counts: planmagnetWorkItemCounts(workspaceId: $workspaceId, filter: { assigneeId: $m4 }) {\n total\n blocked\n byStatus {\n status\n count\n }\n }\n m4_done: planmagnetWorkItems(\n workspaceId: $workspaceId\n filter: { assigneeId: $m4, status: DONE }\n pagination: { first: 50 }\n ) {\n totalCount\n items {\n id\n statusSince\n }\n }\n m5_counts: planmagnetWorkItemCounts(workspaceId: $workspaceId, filter: { assigneeId: $m5 }) {\n total\n blocked\n byStatus {\n status\n count\n }\n }\n m5_done: planmagnetWorkItems(\n workspaceId: $workspaceId\n filter: { assigneeId: $m5, status: DONE }\n pagination: { first: 50 }\n ) {\n totalCount\n items {\n id\n statusSince\n }\n }\n m6_counts: planmagnetWorkItemCounts(workspaceId: $workspaceId, filter: { assigneeId: $m6 }) {\n total\n blocked\n byStatus {\n status\n count\n }\n }\n m6_done: planmagnetWorkItems(\n workspaceId: $workspaceId\n filter: { assigneeId: $m6, status: DONE }\n pagination: { first: 50 }\n ) {\n totalCount\n items {\n id\n statusSince\n }\n }\n m7_counts: planmagnetWorkItemCounts(workspaceId: $workspaceId, filter: { assigneeId: $m7 }) {\n total\n blocked\n byStatus {\n status\n count\n }\n }\n m7_done: planmagnetWorkItems(\n workspaceId: $workspaceId\n filter: { assigneeId: $m7, status: DONE }\n pagination: { first: 50 }\n ) {\n totalCount\n items {\n id\n statusSince\n }\n }\n m8_counts: planmagnetWorkItemCounts(workspaceId: $workspaceId, filter: { assigneeId: $m8 }) {\n total\n blocked\n byStatus {\n status\n count\n }\n }\n m8_done: planmagnetWorkItems(\n workspaceId: $workspaceId\n filter: { assigneeId: $m8, status: DONE }\n pagination: { first: 50 }\n ) {\n totalCount\n items {\n id\n statusSince\n }\n }\n m9_counts: planmagnetWorkItemCounts(workspaceId: $workspaceId, filter: { assigneeId: $m9 }) {\n total\n blocked\n byStatus {\n status\n count\n }\n }\n m9_done: planmagnetWorkItems(\n workspaceId: $workspaceId\n filter: { assigneeId: $m9, status: DONE }\n pagination: { first: 50 }\n ) {\n totalCount\n items {\n id\n statusSince\n }\n }\n m10_counts: planmagnetWorkItemCounts(workspaceId: $workspaceId, filter: { assigneeId: $m10 }) {\n total\n blocked\n byStatus {\n status\n count\n }\n }\n m10_done: planmagnetWorkItems(\n workspaceId: $workspaceId\n filter: { assigneeId: $m10, status: DONE }\n pagination: { first: 50 }\n ) {\n totalCount\n items {\n id\n statusSince\n }\n }\n m11_counts: planmagnetWorkItemCounts(workspaceId: $workspaceId, filter: { assigneeId: $m11 }) {\n total\n blocked\n byStatus {\n status\n count\n }\n }\n m11_done: planmagnetWorkItems(\n workspaceId: $workspaceId\n filter: { assigneeId: $m11, status: DONE }\n pagination: { first: 50 }\n ) {\n totalCount\n items {\n id\n statusSince\n }\n }\n }\n`;\n\ninterface CountsBlock {\n total: number;\n blocked: number;\n byStatus: { status: string; count: number }[];\n}\ninterface DoneBlock {\n totalCount: number;\n items: { id: string; statusSince: string | null }[];\n}\ntype WorkloadQueryData = Record<string, unknown>;\n\nfunction readCounts(data: WorkloadQueryData | undefined, key: string): CountsBlock {\n const raw = data?.[key] as Partial<CountsBlock> | undefined;\n return { total: raw?.total ?? 0, blocked: raw?.blocked ?? 0, byStatus: raw?.byStatus ?? [] };\n}\nfunction readDone(data: WorkloadQueryData | undefined, key: string): DoneBlock {\n const raw = data?.[key] as Partial<DoneBlock> | undefined;\n return { totalCount: raw?.totalCount ?? 0, items: raw?.items ?? [] };\n}\n\nexport function TeamWorkloadCard({\n workspaceId,\n memberActorIds,\n sinceIso,\n weeks,\n onDrillDown,\n}: {\n workspaceId?: string | null;\n memberActorIds: string[];\n /** Cutoff for \"completed recently\" — a WorkItem's statusSince on/after this counts. */\n sinceIso: string;\n weeks: number;\n onDrillDown: () => void;\n}) {\n const { t } = useI18n();\n const shown = memberActorIds.slice(0, MAX_MEMBERS);\n const slots = Array.from({ length: MAX_MEMBERS }, (_, i) => shown[i] ?? '');\n\n const { data, loading, error } = useQuery<WorkloadQueryData>(GET_TEAM_WORKLOAD, {\n variables: {\n workspaceId: workspaceId ?? '',\n m0: slots[0],\n m1: slots[1],\n m2: slots[2],\n m3: slots[3],\n m4: slots[4],\n m5: slots[5],\n m6: slots[6],\n m7: slots[7],\n m8: slots[8],\n m9: slots[9],\n m10: slots[10],\n m11: slots[11],\n },\n skip: !workspaceId || shown.length === 0,\n });\n\n const rows = shown.map((actorId, i) => {\n const counts = readCounts(data, `m${i}_counts`);\n const done = readDone(data, `m${i}_done`);\n const byStatus = new Map(counts.byStatus.map((s) => [s.status, s.count]));\n const cancelled = byStatus.get('CANCELLED') ?? 0;\n const doneCount = byStatus.get('DONE') ?? 0;\n const open = counts.total - cancelled - doneCount;\n const recentDone = done.items.filter(\n (item) => !!item.statusSince && item.statusSince >= sinceIso\n ).length;\n return {\n actorId,\n open,\n blocked: counts.blocked,\n recentDone,\n sampled: done.items.length,\n sampleTotal: done.totalCount,\n };\n });\n const anySampleCapped = rows.some((r) => r.sampleTotal > r.sampled);\n\n return (\n <DashboardCard\n icon={<ListTodo className=\"h-4 w-4\" />}\n title={t('planmagnet.dashboards.team.workload.title', 'Workload & delivery')}\n definition={t(\n 'planmagnet.dashboards.team.workload.definition',\n 'Open work items per member, and items each completed in the last {{weeks}} weeks.',\n { weeks }\n )}\n loading={loading && !data}\n error={error}\n empty={memberActorIds.length === 0}\n emptyMessage={t('planmagnet.dashboards.team.workload.empty', 'This team has no members yet.')}\n drillDown={{\n label: t('planmagnet.dashboards.team.workload.drillDown', 'Open team'),\n onClick: onDrillDown,\n }}\n >\n <div className=\"space-y-2\">\n <p className=\"text-xs text-muted-foreground\">\n {cappedSubtitle(shown.length, memberActorIds.length, 'member(s) shown')}\n </p>\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"text-left text-xs text-muted-foreground\">\n <th className=\"py-1 pr-2 font-normal\">\n {t('planmagnet.dashboards.team.workload.person', 'Person')}\n </th>\n <th className=\"py-1 pr-2 text-right font-normal\">\n {t('planmagnet.dashboards.team.workload.open', 'Open')}\n </th>\n <th className=\"py-1 pr-2 text-right font-normal\">\n {t('planmagnet.dashboards.team.workload.blocked', 'Blocked')}\n </th>\n <th className=\"py-1 text-right font-normal\">\n {t('planmagnet.dashboards.team.workload.recent', 'Done ({{weeks}}w)', { weeks })}\n </th>\n </tr>\n </thead>\n <tbody>\n {rows.map((row) => (\n <tr key={row.actorId} className=\"border-t\">\n <td className=\"py-1.5 pr-2\">\n <PersonName id={row.actorId} />\n </td>\n <td className=\"py-1.5 pr-2 text-right tabular-nums\">{row.open}</td>\n <td\n className={`py-1.5 pr-2 text-right tabular-nums ${row.blocked > 0 ? 'text-status-warning-text' : ''}`}\n >\n {row.blocked}\n </td>\n <td className=\"py-1.5 text-right tabular-nums\">\n {row.recentDone}\n {row.sampleTotal > row.sampled ? '*' : ''}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n {anySampleCapped ? (\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'planmagnet.dashboards.team.workload.sampledNote',\n '* Measured from the 50 most recently returned Done items — a member who closed more than that in the window may be undercounted.'\n )}\n </p>\n ) : null}\n </div>\n </DashboardCard>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimeLoggedCard.d.ts","sourceRoot":"","sources":["../../../../src/planmagnet/dashboards/cards/TimeLoggedCard.tsx"],"names":[],"mappings":"AAqLA,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,cAAc,EACd,QAAQ,EACR,KAAK,EACL,WAAW,GACZ,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,2CA0FA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimeLoggedCard.js","names":[],"sources":["../../../../src/planmagnet/dashboards/cards/TimeLoggedCard.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Clock } from 'lucide-react';\nimport { DashboardCard, cappedSubtitle, formatHours } from '../DashboardUI';\nimport { PersonName } from '../../people/People';\n\n/**\n * Time logged per member (ANR-28) — `planmagnetTimeEntries` is gated on `planmagnet-timetracking`, a\n * DIFFERENT RBAC resource from the workload card's `planmagnet-workitem`, so it is its own query and its\n * own card: a viewer who can see workload but not time entries (or vice versa) sees exactly one of the two\n * cards say \"you do not have access\", never both failing together or one silently hiding the other.\n *\n * Same aliased, ONE-request-for-up-to-12-members technique as `TeamWorkloadCard` — `userId` on\n * `PlanmagnetTimeEntryFilter` is a plain nullable String, so a padded empty slot returns 0 harmlessly.\n */\nconst MAX_MEMBERS = 12;\n\nconst GET_TEAM_TIME_LOGGED = gql`\n query TeamMemberTimeLogged(\n $workspaceId: ID!\n $since: DateTime!\n $m0: String!\n $m1: String!\n $m2: String!\n $m3: String!\n $m4: String!\n $m5: String!\n $m6: String!\n $m7: String!\n $m8: String!\n $m9: String!\n $m10: String!\n $m11: String!\n ) {\n m0_time: planmagnetTimeEntries(\n workspaceId: $workspaceId\n filter: { userId: $m0, dateFrom: $since }\n pagination: { first: 100 }\n ) {\n totalCount\n items {\n id\n durationMinutes\n }\n }\n m1_time: planmagnetTimeEntries(\n workspaceId: $workspaceId\n filter: { userId: $m1, dateFrom: $since }\n pagination: { first: 100 }\n ) {\n totalCount\n items {\n id\n durationMinutes\n }\n }\n m2_time: planmagnetTimeEntries(\n workspaceId: $workspaceId\n filter: { userId: $m2, dateFrom: $since }\n pagination: { first: 100 }\n ) {\n totalCount\n items {\n id\n durationMinutes\n }\n }\n m3_time: planmagnetTimeEntries(\n workspaceId: $workspaceId\n filter: { userId: $m3, dateFrom: $since }\n pagination: { first: 100 }\n ) {\n totalCount\n items {\n id\n durationMinutes\n }\n }\n m4_time: planmagnetTimeEntries(\n workspaceId: $workspaceId\n filter: { userId: $m4, dateFrom: $since }\n pagination: { first: 100 }\n ) {\n totalCount\n items {\n id\n durationMinutes\n }\n }\n m5_time: planmagnetTimeEntries(\n workspaceId: $workspaceId\n filter: { userId: $m5, dateFrom: $since }\n pagination: { first: 100 }\n ) {\n totalCount\n items {\n id\n durationMinutes\n }\n }\n m6_time: planmagnetTimeEntries(\n workspaceId: $workspaceId\n filter: { userId: $m6, dateFrom: $since }\n pagination: { first: 100 }\n ) {\n totalCount\n items {\n id\n durationMinutes\n }\n }\n m7_time: planmagnetTimeEntries(\n workspaceId: $workspaceId\n filter: { userId: $m7, dateFrom: $since }\n pagination: { first: 100 }\n ) {\n totalCount\n items {\n id\n durationMinutes\n }\n }\n m8_time: planmagnetTimeEntries(\n workspaceId: $workspaceId\n filter: { userId: $m8, dateFrom: $since }\n pagination: { first: 100 }\n ) {\n totalCount\n items {\n id\n durationMinutes\n }\n }\n m9_time: planmagnetTimeEntries(\n workspaceId: $workspaceId\n filter: { userId: $m9, dateFrom: $since }\n pagination: { first: 100 }\n ) {\n totalCount\n items {\n id\n durationMinutes\n }\n }\n m10_time: planmagnetTimeEntries(\n workspaceId: $workspaceId\n filter: { userId: $m10, dateFrom: $since }\n pagination: { first: 100 }\n ) {\n totalCount\n items {\n id\n durationMinutes\n }\n }\n m11_time: planmagnetTimeEntries(\n workspaceId: $workspaceId\n filter: { userId: $m11, dateFrom: $since }\n pagination: { first: 100 }\n ) {\n totalCount\n items {\n id\n durationMinutes\n }\n }\n }\n`;\n\ninterface TimeBlock {\n totalCount: number;\n items: { id: string; durationMinutes: number }[];\n}\ntype TimeQueryData = Record<string, unknown>;\n\nfunction readTime(data: TimeQueryData | undefined, key: string): TimeBlock {\n const raw = data?.[key] as Partial<TimeBlock> | undefined;\n return { totalCount: raw?.totalCount ?? 0, items: raw?.items ?? [] };\n}\n\nexport function TimeLoggedCard({\n workspaceId,\n memberActorIds,\n sinceIso,\n weeks,\n onDrillDown,\n}: {\n workspaceId?: string | null;\n memberActorIds: string[];\n sinceIso: string;\n weeks: number;\n onDrillDown: () => void;\n}) {\n const { t } = useI18n();\n const shown = memberActorIds.slice(0, MAX_MEMBERS);\n const slots = Array.from({ length: MAX_MEMBERS }, (_, i) => shown[i] ?? '');\n\n const { data, loading, error } = useQuery<TimeQueryData>(GET_TEAM_TIME_LOGGED, {\n variables: {\n workspaceId: workspaceId ?? '',\n since: sinceIso,\n m0: slots[0],\n m1: slots[1],\n m2: slots[2],\n m3: slots[3],\n m4: slots[4],\n m5: slots[5],\n m6: slots[6],\n m7: slots[7],\n m8: slots[8],\n m9: slots[9],\n m10: slots[10],\n m11: slots[11],\n },\n skip: !workspaceId || shown.length === 0,\n });\n\n const rows = shown.map((actorId, i) => {\n const block = readTime(data, `m${i}_time`);\n const minutes = block.items.reduce((sum, e) => sum + e.durationMinutes, 0);\n return { actorId, minutes, sampled: block.items.length, sampleTotal: block.totalCount };\n });\n const anySampleCapped = rows.some((r) => r.sampleTotal > r.sampled);\n\n return (\n <DashboardCard\n icon={<Clock className=\"h-4 w-4\" />}\n title={t('planmagnet.dashboards.team.time.title', 'Time logged')}\n definition={t(\n 'planmagnet.dashboards.team.time.definition',\n 'Hours logged per member in the last {{weeks}} weeks.',\n { weeks }\n )}\n loading={loading && !data}\n error={error}\n empty={memberActorIds.length === 0}\n emptyMessage={t('planmagnet.dashboards.team.time.empty', 'This team has no members yet.')}\n drillDown={{\n label: t('planmagnet.dashboards.team.time.drillDown', 'Open time entries'),\n onClick: onDrillDown,\n }}\n >\n <div className=\"space-y-2\">\n <p className=\"text-xs text-muted-foreground\">\n {cappedSubtitle(shown.length, memberActorIds.length, 'member(s) shown')}\n </p>\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"text-left text-xs text-muted-foreground\">\n <th className=\"py-1 pr-2 font-normal\">\n {t('planmagnet.dashboards.team.time.person', 'Person')}\n </th>\n <th className=\"py-1 text-right font-normal\">\n {t('planmagnet.dashboards.team.time.hours', 'Hours ({{weeks}}w)', { weeks })}\n </th>\n </tr>\n </thead>\n <tbody>\n {rows.map((row) => (\n <tr key={row.actorId} className=\"border-t\">\n <td className=\"py-1.5 pr-2\">\n <PersonName id={row.actorId} />\n </td>\n <td className=\"py-1.5 text-right tabular-nums\">\n {formatHours(row.minutes)}\n {row.sampleTotal > row.sampled ? '*' : ''}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n {anySampleCapped ? (\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'planmagnet.dashboards.team.time.sampledNote',\n '* Measured from the first 100 entries returned in this window — a member with more may be undercounted.'\n )}\n </p>\n ) : null}\n </div>\n </DashboardCard>\n );\n}\n"],"mappings":";;;;;;;;AAgBA,IAAM,IAAc,IAEd,IAAuB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8JhC,SAAS,EAAS,GAAiC,GAAwB;CACzE,IAAM,IAAM,IAAO;AACnB,QAAO;EAAE,YAAY,GAAK,cAAc;EAAG,OAAO,GAAK,SAAS,EAAE;EAAE;;AAGtE,SAAgB,EAAe,EAC7B,gBACA,mBACA,aACA,UACA,kBAOC;CACD,IAAM,EAAE,SAAM,GAAS,EACjB,IAAQ,EAAe,MAAM,GAAG,EAAY,EAC5C,IAAQ,MAAM,KAAK,EAAE,QAAQ,GAAa,GAAG,GAAG,MAAM,EAAM,MAAM,GAAG,EAErE,EAAE,SAAM,YAAS,aAAU,EAAwB,GAAsB;EAC7E,WAAW;GACT,aAAa,KAAe;GAC5B,OAAO;GACP,IAAI,EAAM;GACV,IAAI,EAAM;GACV,IAAI,EAAM;GACV,IAAI,EAAM;GACV,IAAI,EAAM;GACV,IAAI,EAAM;GACV,IAAI,EAAM;GACV,IAAI,EAAM;GACV,IAAI,EAAM;GACV,IAAI,EAAM;GACV,KAAK,EAAM;GACX,KAAK,EAAM;GACZ;EACD,MAAM,CAAC,KAAe,EAAM,WAAW;EACxC,CAAC,EAEI,IAAO,EAAM,KAAK,GAAS,MAAM;EACrC,IAAM,IAAQ,EAAS,GAAM,IAAI,EAAE,OAAO;AAE1C,SAAO;GAAE;GAAS,SADF,EAAM,MAAM,QAAQ,GAAK,MAAM,IAAM,EAAE,iBAAiB,EAAE;GAC/C,SAAS,EAAM,MAAM;GAAQ,aAAa,EAAM;GAAY;GACvF,EACI,IAAkB,EAAK,MAAM,MAAM,EAAE,cAAc,EAAE,QAAQ;AAEnE,QACE,kBAAC,GAAD;EACE,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;EACnC,OAAO,EAAE,yCAAyC,cAAc;EAChE,YAAY,EACV,8CACA,wDACA,EAAE,UAAO,CACV;EACD,SAAS,KAAW,CAAC;EACd;EACP,OAAO,EAAe,WAAW;EACjC,cAAc,EAAE,yCAAyC,gCAAgC;EACzF,WAAW;GACT,OAAO,EAAE,6CAA6C,oBAAoB;GAC1E,SAAS;GACV;YAED,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,KAAD;KAAG,WAAU;eACV,EAAe,EAAM,QAAQ,EAAe,QAAQ,kBAAkB;KACrE,CAAA;IACJ,kBAAC,SAAD;KAAO,WAAU;eAAjB,CACE,kBAAC,SAAD,EAAA,UACE,kBAAC,MAAD;MAAI,WAAU;gBAAd,CACE,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAE,0CAA0C,SAAS;OACnD,CAAA,EACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAE,yCAAyC,sBAAsB,EAAE,UAAO,CAAC;OACzE,CAAA,CACF;SACC,CAAA,EACR,kBAAC,SAAD,EAAA,UACG,EAAK,KAAK,MACT,kBAAC,MAAD;MAAsB,WAAU;gBAAhC,CACE,kBAAC,MAAD;OAAI,WAAU;iBACZ,kBAAC,GAAD,EAAY,IAAI,EAAI,SAAW,CAAA;OAC5B,CAAA,EACL,kBAAC,MAAD;OAAI,WAAU;iBAAd,CACG,EAAY,EAAI,QAAQ,EACxB,EAAI,cAAc,EAAI,UAAU,MAAM,GACpC;SACF;QARI,EAAI,QAQR,CACL,EACI,CAAA,CACF;;IACP,IACC,kBAAC,KAAD;KAAG,WAAU;eACV,EACC,+CACA,0GACD;KACC,CAAA,GACF;IACA;;EACQ,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DependencyGraph.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/dependency/DependencyGraph.tsx"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AAEH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,6FAA6F;IAC7F,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,2FAA2F;IAC3F,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAC;CACnB;AAWD,uGAAuG;AACvG,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAaxD;AAED,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAMjE;AA0CD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,YAAY,EACZ,SAAS,GACV,EAAE,oBAAoB,2CA6MtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DependencyGraph.js","names":[],"sources":["../../../src/planmagnet/dependency/DependencyGraph.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { enumLabel } from '../controls/WorkItemControls';\nimport { rowLinkProps } from '../utils/rowNavigation';\nimport { statusVisual, STATUS_LEGEND_ORDER } from '../utils/statusColor';\n\n/**\n * Reusable SVG dependency graph (PDM-27). Nodes are work items, edges are `WorkItemDependency` rows, laid out in\n * layers left-to-right by longest-path topological order. Two mount points share this component:\n * - the critical-path page's \"Graph\" view (the whole project — see useProjectWorkItemsGraph.ts)\n * - the task dependency panel's one-hop neighbourhood graph (this item, its predecessors, its successors)\n *\n * The existing text list stays the accessible/no-JS-heavy fallback at every call site — this component is an\n * additional view, never a replacement for it.\n */\n\nexport interface DependencyGraphNode {\n id: string;\n key: string | null;\n title: string | null;\n status: string;\n}\n\nexport interface DependencyGraphEdge {\n /** The WorkItemDependency's own id — stable per edge, used as the React key. */\n id: string;\n predecessorId: string;\n successorId: string;\n /** A DependencyType value. */\n type: string;\n lagMinutes: number | null;\n}\n\nexport interface DependencyGraphProps {\n nodes: DependencyGraphNode[];\n edges: DependencyGraphEdge[];\n /** Node ids on the critical path (CPM chain) — emphasised with a thicker primary outline. */\n criticalNodeIds?: ReadonlySet<string>;\n /** Edge ids that connect two consecutive critical-path nodes — emphasised the same way. */\n criticalEdgeIds?: ReadonlySet<string>;\n onActivateNode: (nodeId: string) => void;\n /** Shown instead of the graph when `nodes` is empty. */\n emptyMessage: string;\n /** Accessible name for the graph region — should say what project/item it scopes to. */\n ariaLabel: string;\n}\n\nconst NODE_WIDTH = 180;\nconst NODE_HEIGHT = 56;\nconst LAYER_GAP_X = 72;\nconst NODE_GAP_Y = 16;\nconst PADDING = 20;\nconst CHIP_R = 4;\nconst TITLE_MAX_CHARS = 24;\nconst KEY_MAX_CHARS = 16;\n\n/** Shared with GanttChart.tsx, which draws the same dependency edges between bars instead of nodes. */\nexport function truncate(text: string, maxChars: number): string {\n if (text.length <= maxChars) return text;\n return `${text.slice(0, Math.max(1, maxChars - 1))}…`;\n}\n\nexport function dependencyTypeLabel(type: string): string {\n switch (type) {\n case 'FINISH_TO_START':\n return 'Finish to start';\n case 'START_TO_START':\n return 'Start to start';\n case 'FINISH_TO_FINISH':\n return 'Finish to finish';\n case 'START_TO_FINISH':\n return 'Start to finish';\n default:\n return enumLabel(type);\n }\n}\n\nexport function lagLabel(lagMinutes: number | null): string | null {\n if (!lagMinutes) return null;\n const days = lagMinutes / (60 * 24);\n const verb = lagMinutes > 0 ? 'lag' : 'lead';\n if (Number.isInteger(days)) return `${Math.abs(days)}d ${verb}`;\n return `${Math.abs(Math.round((lagMinutes / 60) * 10) / 10)}h ${verb}`;\n}\n\n/**\n * Longest-path layering with a cycle guard. Every node ends up on the layer one past the FURTHEST-along of its\n * (in-graph) predecessors — never merely the first predecessor visited — so an edge never points backward across\n * layers except when a cycle forces it (the server refuses cycles; this is defensive, not the expected path).\n *\n * `resolving` tracks ids currently on the call stack: a predecessor already being resolved (a back-edge closing a\n * cycle) is treated as layer -1 (contributing 0) rather than recursed into again, so this always terminates —\n * every id is visited at most once per still-active ancestor chain, bounded by `nodeIds.length`.\n */\nfunction computeLayers(\n nodeIds: string[],\n edges: { predecessorId: string; successorId: string }[]\n): Map<string, number> {\n const predecessorsOf = new Map<string, string[]>(nodeIds.map((id) => [id, []]));\n for (const e of edges) {\n const preds = predecessorsOf.get(e.successorId);\n if (preds && predecessorsOf.has(e.predecessorId)) preds.push(e.predecessorId);\n }\n\n const layer = new Map<string, number>();\n const resolving = new Set<string>();\n\n function resolve(id: string, depth: number): number {\n const cached = layer.get(id);\n if (cached !== undefined) return cached;\n if (resolving.has(id) || depth > nodeIds.length) return -1;\n resolving.add(id);\n const preds = predecessorsOf.get(id) ?? [];\n let max = -1;\n for (const p of preds) max = Math.max(max, resolve(p, depth + 1));\n resolving.delete(id);\n const result = max + 1;\n layer.set(id, result);\n return result;\n }\n\n for (const id of nodeIds) resolve(id, 0);\n return layer;\n}\n\nexport function DependencyGraph({\n nodes,\n edges,\n criticalNodeIds,\n criticalEdgeIds,\n onActivateNode,\n emptyMessage,\n ariaLabel,\n}: DependencyGraphProps) {\n const layout = useMemo(() => {\n const nodeIds = nodes.map((n) => n.id);\n const nodeSet = new Set(nodeIds);\n // Cross-scope edges (e.g. a dependency on a work item outside this project, or outside this item's one-hop\n // neighbourhood) have no node to draw — drop them rather than crash on a missing endpoint.\n const inScopeEdges = edges.filter(\n (e) => nodeSet.has(e.predecessorId) && nodeSet.has(e.successorId)\n );\n const layerOf = computeLayers(nodeIds, inScopeEdges);\n\n const byLayer = new Map<number, string[]>();\n for (const id of nodeIds) {\n const l = layerOf.get(id) ?? 0;\n const list = byLayer.get(l);\n if (list) list.push(id);\n else byLayer.set(l, [id]);\n }\n const layerCount = byLayer.size === 0 ? 1 : Math.max(...byLayer.keys()) + 1;\n const maxPerLayer = Math.max(1, ...Array.from(byLayer.values(), (l) => l.length));\n\n const position = new Map<string, { x: number; y: number }>();\n for (const [l, ids] of byLayer) {\n const x = PADDING + l * (NODE_WIDTH + LAYER_GAP_X);\n // Centered vertically within the tallest layer, so a short layer doesn't hug the top.\n const layerHeight = ids.length * NODE_HEIGHT + (ids.length - 1) * NODE_GAP_Y;\n const fullHeight = maxPerLayer * NODE_HEIGHT + (maxPerLayer - 1) * NODE_GAP_Y;\n const yOffset = PADDING + Math.max(0, (fullHeight - layerHeight) / 2);\n ids.forEach((id, i) => {\n position.set(id, { x, y: yOffset + i * (NODE_HEIGHT + NODE_GAP_Y) });\n });\n }\n\n const width = PADDING * 2 + layerCount * NODE_WIDTH + Math.max(0, layerCount - 1) * LAYER_GAP_X;\n const height =\n PADDING * 2 + maxPerLayer * NODE_HEIGHT + Math.max(0, maxPerLayer - 1) * NODE_GAP_Y;\n\n return { position, inScopeEdges, width, height };\n }, [nodes, edges]);\n\n const presentStatuses = useMemo(\n () => STATUS_LEGEND_ORDER.filter((s) => nodes.some((n) => n.status === s)),\n [nodes]\n );\n\n if (nodes.length === 0) {\n return (\n <div data-testid=\"dependency-graph\" className=\"p-6 text-center text-sm text-muted-foreground\">\n {emptyMessage}\n </div>\n );\n }\n\n const nodesById = new Map(nodes.map((n) => [n.id, n]));\n\n return (\n <div data-testid=\"dependency-graph\" className=\"rounded-md border border-input bg-background\">\n <p className=\"sr-only\">\n Dependency graph with {nodes.length} work item{nodes.length === 1 ? '' : 's'} and{' '}\n {layout.inScopeEdges.length} dependenc{layout.inScopeEdges.length === 1 ? 'y' : 'ies'}.\n {criticalNodeIds && criticalNodeIds.size > 0\n ? ` ${criticalNodeIds.size} item${criticalNodeIds.size === 1 ? ' is' : 's are'} on the critical path.`\n : ''}{' '}\n The list above/below gives the same information as text.\n </p>\n <div className=\"overflow-x-auto p-3\">\n {/* No role=\"img\" here: each node below is its own focusable role=\"button\" descendant, and \"img\"\n semantics would tell assistive tech to treat the whole subtree as a single flattened image. */}\n <svg\n aria-label={ariaLabel}\n width={layout.width}\n height={layout.height}\n viewBox={`0 0 ${layout.width} ${layout.height}`}\n className=\"block\"\n >\n <defs>\n <marker\n id=\"dependency-graph-arrow\"\n viewBox=\"0 0 10 10\"\n refX=\"9\"\n refY=\"5\"\n markerWidth=\"6\"\n markerHeight=\"6\"\n orient=\"auto-start-reverse\"\n className=\"text-border-strong\"\n >\n <path d=\"M0,0 L10,5 L0,10 z\" fill=\"currentColor\" />\n </marker>\n <marker\n id=\"dependency-graph-arrow-critical\"\n viewBox=\"0 0 10 10\"\n refX=\"9\"\n refY=\"5\"\n markerWidth=\"6\"\n markerHeight=\"6\"\n orient=\"auto-start-reverse\"\n className=\"text-primary\"\n >\n <path d=\"M0,0 L10,5 L0,10 z\" fill=\"currentColor\" />\n </marker>\n </defs>\n\n {layout.inScopeEdges.map((edge) => {\n const from = layout.position.get(edge.predecessorId);\n const to = layout.position.get(edge.successorId);\n if (!from || !to) return null;\n const x1 = from.x + NODE_WIDTH;\n const y1 = from.y + NODE_HEIGHT / 2;\n const x2 = to.x;\n const y2 = to.y + NODE_HEIGHT / 2;\n const midX = (x1 + x2) / 2;\n const critical = criticalEdgeIds?.has(edge.id) ?? false;\n const typeLabel =\n edge.type === 'FINISH_TO_START' ? null : dependencyTypeLabel(edge.type);\n const lag = lagLabel(edge.lagMinutes);\n const label = [typeLabel, lag].filter((v): v is string => !!v).join(' · ');\n const predecessor = nodesById.get(edge.predecessorId);\n const successor = nodesById.get(edge.successorId);\n return (\n <g key={edge.id} data-testid=\"dependency-graph-edge\">\n <title>\n {predecessor?.key ?? edge.predecessorId} {dependencyTypeLabel(edge.type)}{' '}\n {successor?.key ?? edge.successorId}\n {lag ? ` (${lag})` : ''}\n </title>\n <path\n d={`M ${x1},${y1} C ${midX},${y1} ${midX},${y2} ${x2},${y2}`}\n fill=\"none\"\n strokeWidth={critical ? 2.5 : 1.5}\n className={critical ? 'text-primary' : 'text-border-strong'}\n stroke=\"currentColor\"\n markerEnd={`url(#${critical ? 'dependency-graph-arrow-critical' : 'dependency-graph-arrow'})`}\n />\n {label && (\n <text\n x={midX}\n y={(y1 + y2) / 2 - 4}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[9px]\"\n >\n {label}\n </text>\n )}\n </g>\n );\n })}\n\n {nodes.map((node) => {\n const pos = layout.position.get(node.id);\n if (!pos) return null;\n const critical = criticalNodeIds?.has(node.id) ?? false;\n const visual = statusVisual(node.status);\n const title = node.title ?? 'Untitled work item';\n const keyLabel = node.key ?? '';\n const accessibleLabel = `${keyLabel ? `${keyLabel} — ` : ''}${title} (${enumLabel(node.status)})${critical ? ', on critical path' : ''}`;\n // ROW_LINK_CLASS (in the rowLinkProps spread below) rings via box-shadow, which SVG elements\n // outside a <foreignObject> don't paint — the explicit className after the spread overrides it\n // with an outline-based focus style, which they do.\n return (\n <g\n key={node.id}\n data-testid=\"dependency-graph-node\"\n transform={`translate(${pos.x}, ${pos.y})`}\n {...rowLinkProps<SVGGElement>(() => onActivateNode(node.id), accessibleLabel)}\n className=\"cursor-pointer focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary focus-visible:outline-offset-2\"\n >\n <title>{accessibleLabel}</title>\n <rect\n width={NODE_WIDTH}\n height={NODE_HEIGHT}\n rx={8}\n className={`fill-background ${critical ? 'stroke-primary' : 'stroke-input'}`}\n strokeWidth={critical ? 2 : 1}\n />\n <circle cx={16} cy={NODE_HEIGHT / 2} r={CHIP_R} style={{ fill: visual.color }} />\n <text x={28} y={22} className=\"fill-muted-foreground text-[10px] font-medium\">\n {truncate(keyLabel, KEY_MAX_CHARS)}\n </text>\n <text x={28} y={38} className=\"fill-foreground text-[11px] font-medium\">\n {truncate(title, TITLE_MAX_CHARS)}\n </text>\n </g>\n );\n })}\n </svg>\n </div>\n <div className=\"flex flex-wrap items-center gap-x-4 gap-y-1 border-t border-input px-3 py-2 text-[11px] text-muted-foreground\">\n {presentStatuses.map((status) => (\n <span key={status} className=\"inline-flex items-center gap-1.5\">\n <span\n className=\"h-2.5 w-2.5 rounded-full\"\n style={{ backgroundColor: statusVisual(status).color }}\n />\n {enumLabel(status)}\n </span>\n ))}\n {criticalNodeIds && criticalNodeIds.size > 0 && (\n <span className=\"inline-flex items-center gap-1.5\">\n <span className=\"h-2.5 w-2.5 rounded-full border-2 border-primary bg-background\" />\n Critical path\n </span>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DependencyPanel.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/dependency/DependencyPanel.tsx"],"names":[],"mappings":"AAwSA,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,UAAU,EACV,SAAS,GACV,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,2CAmLA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DependencyPanel.js","names":[],"sources":["../../../src/planmagnet/dependency/DependencyPanel.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport { Button, Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { ArrowLeft, ArrowRight, Plus, X } from 'lucide-react';\nimport { WorkItemSearchSelect } from '../controls/Pickers';\nimport { enumLabel } from '../controls/WorkItemControls';\nimport { ErrorLine } from '../controls/ConfirmButton';\nimport { usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { throwOnError } from '../utils/mutationResult';\nimport { DependencyGraph } from './DependencyGraph';\n\n/**\n * Dependencies panel for the task detail page (BOFF-8047). `WorkItemDependency` is the CPM model only\n * (predecessor/successor + FINISH_TO_START/START_TO_START/FINISH_TO_FINISH/START_TO_FINISH + lagMinutes) — the\n * P0 architecture decision keeps issue-link verbs (blocks/relates-to) on the separate WorkItemLink type, out of\n * scope here. \"This blocks\" (this item is the predecessor) and \"Blocked by\" (this item is the successor) are the\n * two directions a FINISH_TO_START edge can be read in, which is the common case; the type select still shows all\n * four so a start-to-start or finish-to-finish constraint can be recorded correctly.\n */\n\nconst DEPENDENCY_TYPES = [\n 'FINISH_TO_START',\n 'START_TO_START',\n 'FINISH_TO_FINISH',\n 'START_TO_FINISH',\n] as const;\n\nconst GET_WORK_ITEM_DEPENDENCIES = gql`\n query GetWorkItemDependencies($workspaceId: ID!, $workItemId: String!) {\n blocks: planmagnetDependencies(\n workspaceId: $workspaceId\n filter: { predecessorId: $workItemId }\n pagination: { first: 50 }\n ) {\n items {\n id\n successorId\n lagMinutes\n type\n status\n description\n successor {\n id\n title\n key\n status\n }\n }\n totalCount\n }\n blockedBy: planmagnetDependencies(\n workspaceId: $workspaceId\n filter: { successorId: $workItemId }\n pagination: { first: 50 }\n ) {\n items {\n id\n predecessorId\n lagMinutes\n type\n status\n description\n predecessor {\n id\n title\n key\n status\n }\n }\n totalCount\n }\n }\n`;\n\n/**\n * The center node's own title/key/status for the neighbourhood graph below (PDM-27) — a separate query, not an\n * added root field on GET_WORK_ITEM_DEPENDENCIES above, because that query's `$workItemId` is typed `String!`\n * (matching `PlanmagnetDependencyFilter`'s `predecessorId`/`successorId: String`) while `planmagnetWorkItem`\n * takes `id: ID!`; reusing the same variable across both positions would fail schema-drift validation.\n */\nconst GET_DEPENDENCY_GRAPH_CENTER = gql`\n query GetDependencyGraphCenter($id: ID!) {\n planmagnetWorkItem(id: $id) {\n id\n key\n title\n status\n }\n }\n`;\n\nconst CREATE_DEPENDENCY = gql`\n mutation CreateWorkItemDependency($input: PlanmagnetCreateDependencyInput!) {\n planmagnetCreateDependency(input: $input) {\n id\n }\n }\n`;\n\nconst DELETE_DEPENDENCY = gql`\n mutation DeleteWorkItemDependency($id: ID!) {\n planmagnetDeleteDependency(id: $id)\n }\n`;\n\ninterface DependencyEdge {\n id: string;\n lagMinutes: number | null;\n type: string;\n status: string;\n description: string | null;\n}\ninterface BlockEdge extends DependencyEdge {\n successorId: string;\n successor: { id: string; title: string; key: string; status: string } | null;\n}\ninterface BlockedByEdge extends DependencyEdge {\n predecessorId: string;\n predecessor: { id: string; title: string; key: string; status: string } | null;\n}\n\nfunction lagLabel(lagMinutes: number | null): string | null {\n if (!lagMinutes) return null;\n const hours = lagMinutes / 60;\n const days = hours / 24;\n const verb = lagMinutes > 0 ? 'lag' : 'lead';\n if (Number.isInteger(days) && Math.abs(days) >= 1) return `${Math.abs(days)}d ${verb}`;\n if (Number.isInteger(hours)) return `${Math.abs(hours)}h ${verb}`;\n return `${Math.abs(lagMinutes)}m ${verb}`;\n}\n\nfunction EdgeRow({\n keyLabel,\n title,\n type,\n lagMinutes,\n onOpen,\n onRemove,\n removing,\n}: {\n keyLabel: string;\n title: string;\n type: string;\n lagMinutes: number | null;\n onOpen: () => void;\n onRemove: () => void;\n removing: boolean;\n}) {\n const lag = lagLabel(lagMinutes);\n return (\n <div className=\"flex items-center justify-between gap-3 rounded-md border border-input p-3\">\n <div className=\"min-w-0\">\n <button\n type=\"button\"\n className=\"block max-w-full truncate text-left text-sm font-medium hover:underline\"\n onClick={onOpen}\n >\n {keyLabel} <span className=\"font-normal\">{title}</span>\n </button>\n <p className=\"text-xs text-muted-foreground\">\n {enumLabel(type)}\n {lag ? ` · ${lag}` : ''}\n </p>\n </div>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n disabled={removing}\n onClick={onRemove}\n aria-label={`Remove dependency on ${title}`}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n );\n}\n\n/** The \"add dependency\" form: pick a direction, a work item, a type and an optional lag. */\nfunction AddDependencyForm({\n workItemId,\n projectId,\n excludeIds,\n onDone,\n}: {\n workItemId: string;\n projectId: string;\n excludeIds: string[];\n onDone: () => void;\n}) {\n const [direction, setDirection] = useState<'blocks' | 'blockedBy'>('blocks');\n const [otherId, setOtherId] = useState('');\n const [type, setType] = useState<(typeof DEPENDENCY_TYPES)[number]>('FINISH_TO_START');\n const [lagDays, setLagDays] = useState('');\n const [error, setError] = useState<string | null>(null);\n const [create, { loading }] = useMutation(CREATE_DEPENDENCY, {\n refetchQueries: ['GetWorkItemDependencies', 'GetProjectCriticalPath'],\n awaitRefetchQueries: true,\n });\n\n const submit = async () => {\n if (!otherId) return;\n setError(null);\n const lagTrimmed = lagDays.trim();\n const lagMinutes = lagTrimmed === '' ? undefined : Math.round(Number(lagTrimmed) * 24 * 60);\n if (lagTrimmed !== '' && !Number.isFinite(lagMinutes)) {\n setError('Lag must be a number of days.');\n return;\n }\n const input =\n direction === 'blocks'\n ? { predecessorId: workItemId, successorId: otherId, type, lagMinutes }\n : { predecessorId: otherId, successorId: workItemId, type, lagMinutes };\n try {\n await throwOnError(create({ variables: { input } }));\n setOtherId('');\n setLagDays('');\n onDone();\n } catch (e) {\n setError(e instanceof Error ? e.message : 'The dependency could not be created.');\n }\n };\n\n return (\n <div className=\"space-y-3 rounded-md border border-input p-3\">\n <div className=\"flex gap-1\">\n <button\n type=\"button\"\n data-testid=\"dependency-direction-blocks\"\n className={`px-3 py-1.5 text-xs rounded-md ${direction === 'blocks' ? 'bg-primary text-primary-foreground' : 'text-muted-foreground hover:bg-muted'}`}\n onClick={() => setDirection('blocks')}\n >\n This blocks…\n </button>\n <button\n type=\"button\"\n data-testid=\"dependency-direction-blockedby\"\n className={`px-3 py-1.5 text-xs rounded-md ${direction === 'blockedBy' ? 'bg-primary text-primary-foreground' : 'text-muted-foreground hover:bg-muted'}`}\n onClick={() => setDirection('blockedBy')}\n >\n Blocked by…\n </button>\n </div>\n <WorkItemSearchSelect\n id=\"dependency-other-work-item\"\n projectId={projectId}\n value={otherId}\n onChange={setOtherId}\n exclude={excludeIds}\n />\n <div className=\"grid grid-cols-2 gap-3\">\n <div>\n <label htmlFor=\"dependency-type\" className=\"text-xs font-medium text-muted-foreground\">\n Relationship\n </label>\n <select\n id=\"dependency-type\"\n className=\"mt-1 w-full rounded-md border border-input bg-background px-2 py-1.5 text-sm\"\n value={type}\n onChange={(e) => setType(e.target.value as (typeof DEPENDENCY_TYPES)[number])}\n >\n {DEPENDENCY_TYPES.map((t) => (\n <option key={t} value={t}>\n {enumLabel(t)}\n </option>\n ))}\n </select>\n </div>\n <div>\n <label htmlFor=\"dependency-lag\" className=\"text-xs font-medium text-muted-foreground\">\n Lag (days, optional)\n </label>\n <input\n id=\"dependency-lag\"\n type=\"number\"\n step=\"0.5\"\n className=\"mt-1 w-full rounded-md border border-input bg-background px-2 py-1.5 text-sm\"\n value={lagDays}\n placeholder=\"0\"\n onChange={(e) => setLagDays(e.target.value)}\n />\n </div>\n </div>\n {error && <ErrorLine message={error} />}\n <div className=\"flex justify-end gap-2\">\n <Button size=\"sm\" variant=\"ghost\" onClick={onDone}>\n Cancel\n </Button>\n <Button size=\"sm\" disabled={!otherId || loading} onClick={() => void submit()}>\n {loading ? 'Adding…' : 'Add dependency'}\n </Button>\n </div>\n </div>\n );\n}\n\nexport function DependencyPanel({\n workspaceId,\n workItemId,\n projectId,\n}: {\n workspaceId: string;\n workItemId: string;\n projectId: string;\n}) {\n const navigate = usePlanMagnetNavigate();\n const [isAdding, setIsAdding] = useState(false);\n const [removeError, setRemoveError] = useState<string | null>(null);\n const { data, loading, error, refetch } = useQuery<{\n blocks: { items: BlockEdge[]; totalCount: number };\n blockedBy: { items: BlockedByEdge[]; totalCount: number };\n }>(GET_WORK_ITEM_DEPENDENCIES, {\n variables: { workspaceId, workItemId },\n skip: !workspaceId || !workItemId,\n });\n // PDM-27: this item's own title/key/status, for the neighbourhood graph below — see\n // GET_DEPENDENCY_GRAPH_CENTER's doc comment for why this is a second query rather than a field added to the\n // one above.\n const { data: centerData, error: centerError } = useQuery<{\n planmagnetWorkItem: { id: string; key: string; title: string; status: string } | null;\n }>(GET_DEPENDENCY_GRAPH_CENTER, { variables: { id: workItemId }, skip: !workItemId });\n const [remove, { loading: removing }] = useMutation(DELETE_DEPENDENCY, {\n refetchQueries: ['GetWorkItemDependencies', 'GetProjectCriticalPath'],\n });\n\n const blocks = data?.blocks.items ?? [];\n const blockedBy = data?.blockedBy.items ?? [];\n const excludeIds = [\n workItemId,\n ...blocks.map((e) => e.successorId),\n ...blockedBy.map((e) => e.predecessorId),\n ];\n\n const center = centerData?.planmagnetWorkItem ?? null;\n const neighbourNodesById = new Map<\n string,\n { id: string; key: string | null; title: string | null; status: string }\n >();\n if (center) neighbourNodesById.set(center.id, center);\n for (const edge of blocks)\n if (edge.successor) neighbourNodesById.set(edge.successor.id, edge.successor);\n for (const edge of blockedBy) {\n if (edge.predecessor) neighbourNodesById.set(edge.predecessor.id, edge.predecessor);\n }\n const neighbourEdges = center\n ? [\n ...blocks.map((edge) => ({\n id: edge.id,\n predecessorId: center.id,\n successorId: edge.successorId,\n type: edge.type,\n lagMinutes: edge.lagMinutes,\n })),\n ...blockedBy.map((edge) => ({\n id: edge.id,\n predecessorId: edge.predecessorId,\n successorId: center.id,\n type: edge.type,\n lagMinutes: edge.lagMinutes,\n })),\n ]\n : [];\n\n const onRemove = async (id: string) => {\n setRemoveError(null);\n try {\n await throwOnError(remove({ variables: { id } }));\n } catch (e) {\n setRemoveError(e instanceof Error ? e.message : 'The dependency could not be removed.');\n }\n };\n\n return (\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0\">\n <CardTitle>Dependencies</CardTitle>\n {!isAdding && (\n <Button size=\"sm\" variant=\"outline\" onClick={() => setIsAdding(true)}>\n <Plus className=\"h-4 w-4 mr-1\" />\n Add dependency\n </Button>\n )}\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {isAdding && (\n <AddDependencyForm\n workItemId={workItemId}\n projectId={projectId}\n excludeIds={excludeIds}\n onDone={() => {\n setIsAdding(false);\n void refetch();\n }}\n />\n )}\n {loading && !data && <p className=\"text-sm text-muted-foreground\">Loading dependencies…</p>}\n {error && <p className=\"text-sm text-red-500\">Error: {error.message}</p>}\n {removeError && <ErrorLine message={removeError} />}\n\n <div>\n <p className=\"mb-2 flex items-center gap-1 text-xs font-medium text-muted-foreground uppercase\">\n <ArrowRight className=\"h-3 w-3\" />\n This blocks ({blocks.length})\n </p>\n <div className=\"space-y-2\">\n {blocks.map((edge) => (\n <EdgeRow\n key={edge.id}\n keyLabel={edge.successor?.key ?? ''}\n title={edge.successor?.title ?? 'Unknown work item'}\n type={edge.type}\n lagMinutes={edge.lagMinutes}\n removing={removing}\n onOpen={() =>\n edge.successor &&\n navigate(\n `/tasks/task-detail-page?taskId=${encodeURIComponent(edge.successor.id)}`\n )\n }\n onRemove={() => void onRemove(edge.id)}\n />\n ))}\n {!loading && blocks.length === 0 && (\n <p className=\"text-sm text-muted-foreground\">\n Nothing depends on this task finishing.\n </p>\n )}\n </div>\n </div>\n\n <div>\n <p className=\"mb-2 flex items-center gap-1 text-xs font-medium text-muted-foreground uppercase\">\n <ArrowLeft className=\"h-3 w-3\" />\n Blocked by ({blockedBy.length})\n </p>\n <div className=\"space-y-2\">\n {blockedBy.map((edge) => (\n <EdgeRow\n key={edge.id}\n keyLabel={edge.predecessor?.key ?? ''}\n title={edge.predecessor?.title ?? 'Unknown work item'}\n type={edge.type}\n lagMinutes={edge.lagMinutes}\n removing={removing}\n onOpen={() =>\n edge.predecessor &&\n navigate(\n `/tasks/task-detail-page?taskId=${encodeURIComponent(edge.predecessor.id)}`\n )\n }\n onRemove={() => void onRemove(edge.id)}\n />\n ))}\n {!loading && blockedBy.length === 0 && (\n <p className=\"text-sm text-muted-foreground\">This task has no upstream dependency.</p>\n )}\n </div>\n </div>\n\n {centerError && (blocks.length > 0 || blockedBy.length > 0) && (\n <p role=\"alert\" className=\"text-xs text-destructive\">\n The dependency graph could not be drawn: {centerError.message}\n </p>\n )}\n {center && (blocks.length > 0 || blockedBy.length > 0) && (\n <div>\n <p className=\"mb-2 text-xs font-medium text-muted-foreground uppercase\">\n Neighbourhood graph\n </p>\n <DependencyGraph\n nodes={Array.from(neighbourNodesById.values())}\n edges={neighbourEdges}\n onActivateNode={(id) =>\n navigate(`/tasks/task-detail-page?taskId=${encodeURIComponent(id)}`)\n }\n emptyMessage=\"No dependencies to graph yet.\"\n ariaLabel={`Dependency neighbourhood for ${center.key ?? center.title ?? 'this task'}`}\n />\n </div>\n )}\n </CardContent>\n </Card>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GanttChart.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/dependency/GanttChart.tsx"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,2GAA2G;IAC3G,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,IAAI,CAAC;CACd;AAsED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,eAAe,EACf,IAAI,EACJ,aAAa,EACb,KAAK,GACN,EAAE,eAAe,2CAmTjB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GanttChart.js","names":[],"sources":["../../../src/planmagnet/dependency/GanttChart.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { enumLabel } from '../controls/WorkItemControls';\nimport { statusVisual, STATUS_LEGEND_ORDER } from '../utils/statusColor';\nimport { dependencyTypeLabel, lagLabel, truncate } from './DependencyGraph';\n\n/**\n * Gantt timeline (ANR-24) for one project's work items. Plain SVG (recharts has no Gantt/timeline mark) — see\n * ProjectsGanttPagePage.tsx for data fetching, project choice, and the week/month zoom control this renders to.\n *\n * SCHEDULE SOURCE: `WorkItem` has no persisted start date in the current schema (`graphql/wspace.graphql` —\n * only `dueDate` and `estimateMinutes`). A bar's start is therefore DERIVED, backward from the due date, as\n * `dueDate - estimateMinutes`: an item with a due date AND a positive estimate draws as a bar; an item with a\n * due date but no (or a zero/negative) estimate draws as a milestone diamond, since there is no span to show; an\n * item with no due date at all has no anchor to place it on the axis and is counted in the unscheduled note\n * instead. This is called out again in the delivery notes — it is a real deviation from a literal \"has its own\n * start date\" reading, forced by the schema as it stands today.\n */\n\nexport interface GanttDependency {\n id: string;\n successorId: string;\n type: string;\n lagMinutes: number | null;\n}\n\nexport interface GanttWorkItem {\n id: string;\n key: string;\n title: string;\n status: string;\n dueDate: string | null;\n estimateMinutes: number | null;\n dependencies: GanttDependency[];\n}\n\nexport interface GanttChartProps {\n items: GanttWorkItem[];\n /** Work item ids on the critical path — their bars/diamonds are emphasised. */\n criticalIds?: ReadonlySet<string>;\n /** WorkItemDependency ids connecting two CONSECUTIVE critical-path items — their arrows are emphasised. */\n criticalEdgeIds?: ReadonlySet<string>;\n zoom: 'week' | 'month';\n onActivateRow: (id: string) => void;\n /** Injectable for predictable output; defaults to the real current time. */\n today?: Date;\n}\n\nconst MS_PER_DAY = 86_400_000;\nconst LABEL_COL_WIDTH = 224;\nconst ROW_HEIGHT = 28;\nconst ROW_GAP = 8;\nconst ROW_STEP = ROW_HEIGHT + ROW_GAP;\nconst AXIS_HEIGHT = 28;\nconst BAR_HEIGHT = 18;\nconst DIAMOND_SIZE = 12;\nconst SVG_PADDING = 12;\nconst DOMAIN_PAD_DAYS = 3;\n\nconst ZOOM_PX_PER_DAY: Record<GanttChartProps['zoom'], number> = { week: 28, month: 6 };\n\nfunction utcDayNumber(d: Date): number {\n return Math.floor(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()) / MS_PER_DAY);\n}\n\nfunction dayNumberFromIso(iso: string): number {\n return utcDayNumber(new Date(iso));\n}\n\nfunction formatShortDate(dayNum: number): string {\n const d = new Date(dayNum * MS_PER_DAY);\n return d.toLocaleDateString(undefined, { month: 'short', day: 'numeric', timeZone: 'UTC' });\n}\n\nfunction formatMonth(dayNum: number): string {\n const d = new Date(dayNum * MS_PER_DAY);\n return d.toLocaleDateString(undefined, { month: 'short', year: 'numeric', timeZone: 'UTC' });\n}\n\ntype ScheduledRow =\n | {\n kind: 'bar';\n item: GanttWorkItem;\n startDay: number;\n dueDay: number;\n sortDay: number;\n }\n | {\n kind: 'milestone';\n item: GanttWorkItem;\n dueDay: number;\n sortDay: number;\n };\n\nfunction scheduleItem(item: GanttWorkItem): ScheduledRow | null {\n if (!item.dueDate) return null;\n const dueDay = dayNumberFromIso(item.dueDate);\n if (item.estimateMinutes && item.estimateMinutes > 0) {\n const estimateDays = Math.max(1, Math.ceil(item.estimateMinutes / (60 * 24)));\n const startDay = dueDay - (estimateDays - 1);\n return { kind: 'bar', item, startDay, dueDay, sortDay: startDay };\n }\n return { kind: 'milestone', item, dueDay, sortDay: dueDay };\n}\n\n/**\n * Anchor x (in fractional day units, fed straight into `x()`) for one end of a row's mark. Must match the\n * geometry the row actually renders at: a bar spans a full day-width per day, so its true right edge sits one\n * day past `dueDay` (see `x2` at the bar render site below), and a milestone diamond is centered half a\n * day-width past `dueDay` (see `cx` at the milestone render site below) — not at `dueDay` itself either end.\n */\nfunction anchorDay(row: ScheduledRow, end: 'start' | 'end'): number {\n if (row.kind === 'milestone') return row.dueDay + 0.5;\n return end === 'start' ? row.startDay : row.dueDay + 1;\n}\n\nexport function GanttChart({\n items,\n criticalIds,\n criticalEdgeIds,\n zoom,\n onActivateRow,\n today,\n}: GanttChartProps) {\n const layout = useMemo(() => {\n const scheduled: ScheduledRow[] = [];\n const unscheduled: GanttWorkItem[] = [];\n for (const item of items) {\n const row = scheduleItem(item);\n if (row) scheduled.push(row);\n else unscheduled.push(item);\n }\n scheduled.sort((a, b) => a.sortDay - b.sortDay || a.item.key.localeCompare(b.item.key));\n\n const rowByItemId = new Map(scheduled.map((r, i) => [r.item.id, { row: r, index: i }]));\n const todayDay = utcDayNumber(today ?? new Date());\n\n const days = scheduled.flatMap((r) => (r.kind === 'bar' ? [r.startDay, r.dueDay] : [r.dueDay]));\n days.push(todayDay);\n const domainStart = Math.min(...days) - DOMAIN_PAD_DAYS;\n const domainEnd = Math.max(...days) + DOMAIN_PAD_DAYS;\n const pxPerDay = ZOOM_PX_PER_DAY[zoom];\n const x = (day: number) => SVG_PADDING + (day - domainStart) * pxPerDay;\n\n const plotWidth = SVG_PADDING * 2 + (domainEnd - domainStart + 1) * pxPerDay;\n const plotHeight = AXIS_HEIGHT + Math.max(1, scheduled.length) * ROW_STEP + SVG_PADDING;\n\n const ticks: { day: number; label: string }[] = [];\n for (let d = domainStart; d <= domainEnd; d++) {\n const date = new Date(d * MS_PER_DAY);\n if (zoom === 'week' && date.getUTCDay() === 1)\n ticks.push({ day: d, label: formatShortDate(d) });\n if (zoom === 'month' && date.getUTCDate() === 1)\n ticks.push({ day: d, label: formatMonth(d) });\n }\n\n const arrows = scheduled.flatMap(({ item: predecessorItem }) => {\n const from = rowByItemId.get(predecessorItem.id);\n if (!from) return [];\n return predecessorItem.dependencies.flatMap((dep) => {\n const to = rowByItemId.get(dep.successorId);\n if (!to) return [];\n const fromEnd =\n dep.type === 'START_TO_START' || dep.type === 'START_TO_FINISH' ? 'start' : 'end';\n const toEnd =\n dep.type === 'FINISH_TO_FINISH' || dep.type === 'START_TO_FINISH' ? 'end' : 'start';\n return [\n {\n id: dep.id,\n type: dep.type,\n lagMinutes: dep.lagMinutes,\n x1: x(anchorDay(from.row, fromEnd)),\n y1: AXIS_HEIGHT + from.index * ROW_STEP + ROW_HEIGHT / 2,\n x2: x(anchorDay(to.row, toEnd)),\n y2: AXIS_HEIGHT + to.index * ROW_STEP + ROW_HEIGHT / 2,\n },\n ];\n });\n });\n\n return {\n scheduled,\n unscheduled,\n todayX: x(todayDay),\n ticks,\n arrows,\n plotWidth,\n plotHeight,\n x,\n };\n }, [items, zoom, today]);\n\n const presentStatuses = useMemo(\n () => STATUS_LEGEND_ORDER.filter((s) => items.some((i) => i.status === s)),\n [items]\n );\n\n return (\n <div className=\"rounded-md border border-input bg-background\" data-testid=\"gantt-chart\">\n <p className=\"sr-only\">\n Gantt timeline with {layout.scheduled.length} scheduled work item\n {layout.scheduled.length === 1 ? '' : 's'}\n {layout.unscheduled.length > 0\n ? ` and ${layout.unscheduled.length} unscheduled item${layout.unscheduled.length === 1 ? '' : 's'} listed below the chart`\n : ''}\n . Row labels open the task detail page.\n </p>\n <div className=\"flex\">\n <div style={{ width: LABEL_COL_WIDTH }} className=\"shrink-0 border-r border-input\">\n <div style={{ height: AXIS_HEIGHT }} className=\"border-b border-input\" />\n {layout.scheduled.map((row) => {\n const critical = criticalIds?.has(row.item.id) ?? false;\n return (\n <div\n key={row.item.id}\n data-testid=\"gantt-row\"\n style={{ height: ROW_STEP }}\n className=\"flex items-center px-2\"\n >\n <button\n type=\"button\"\n onClick={() => onActivateRow(row.item.id)}\n className={`min-w-0 truncate text-left text-xs hover:underline focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary ${critical ? 'font-semibold text-primary' : 'text-foreground'}`}\n title={`${row.item.key} ${row.item.title}`}\n >\n {row.item.key} <span className=\"font-normal\">{truncate(row.item.title, 28)}</span>\n </button>\n </div>\n );\n })}\n {layout.scheduled.length === 0 && (\n <p className=\"px-2 py-3 text-xs text-muted-foreground\">No scheduled work items.</p>\n )}\n </div>\n\n <div className=\"overflow-x-auto\">\n <svg\n aria-label=\"Project timeline\"\n width={layout.plotWidth}\n height={layout.plotHeight}\n viewBox={`0 0 ${layout.plotWidth} ${layout.plotHeight}`}\n className=\"block\"\n >\n <defs>\n <marker\n id=\"gantt-arrow\"\n viewBox=\"0 0 10 10\"\n refX=\"9\"\n refY=\"5\"\n markerWidth=\"6\"\n markerHeight=\"6\"\n orient=\"auto-start-reverse\"\n className=\"text-border-strong\"\n >\n <path d=\"M0,0 L10,5 L0,10 z\" fill=\"currentColor\" />\n </marker>\n <marker\n id=\"gantt-arrow-critical\"\n viewBox=\"0 0 10 10\"\n refX=\"9\"\n refY=\"5\"\n markerWidth=\"6\"\n markerHeight=\"6\"\n orient=\"auto-start-reverse\"\n className=\"text-primary\"\n >\n <path d=\"M0,0 L10,5 L0,10 z\" fill=\"currentColor\" />\n </marker>\n </defs>\n\n {layout.ticks.map((tick) => (\n <g key={tick.day}>\n <line\n x1={layout.x(tick.day)}\n x2={layout.x(tick.day)}\n y1={0}\n y2={layout.plotHeight}\n style={{ color: 'var(--color-chart-grid)' }}\n stroke=\"currentColor\"\n strokeWidth={1}\n />\n <text\n x={layout.x(tick.day) + 3}\n y={AXIS_HEIGHT - 10}\n className=\"text-[10px]\"\n style={{ fill: 'var(--color-chart-axis)' }}\n >\n {tick.label}\n </text>\n </g>\n ))}\n\n <line\n x1={layout.todayX}\n x2={layout.todayX}\n y1={0}\n y2={layout.plotHeight}\n className=\"text-status-info-bg\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeDasharray=\"4 3\"\n />\n <text\n x={layout.todayX + 4}\n y={12}\n className=\"fill-status-info-text text-[10px] font-medium\"\n >\n Today\n </text>\n\n {layout.arrows.map((arrow) => {\n const midX = (arrow.x1 + arrow.x2) / 2;\n const critical = criticalEdgeIds?.has(arrow.id) ?? false;\n return (\n <path\n key={arrow.id}\n data-testid=\"gantt-arrow\"\n d={`M ${arrow.x1},${arrow.y1} C ${midX},${arrow.y1} ${midX},${arrow.y2} ${arrow.x2},${arrow.y2}`}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={critical ? 2 : 1.25}\n className={critical ? 'text-primary' : 'text-border-strong'}\n markerEnd={`url(#${critical ? 'gantt-arrow-critical' : 'gantt-arrow'})`}\n >\n <title>\n {dependencyTypeLabel(arrow.type)}\n {lagLabel(arrow.lagMinutes) ? ` (${lagLabel(arrow.lagMinutes)})` : ''}\n </title>\n </path>\n );\n })}\n\n {layout.scheduled.map((row, index) => {\n const y = AXIS_HEIGHT + index * ROW_STEP + ROW_HEIGHT / 2;\n const critical = criticalIds?.has(row.item.id) ?? false;\n const visual = statusVisual(row.item.status);\n const label = `${row.item.key} — ${row.item.title} (${enumLabel(row.item.status)})${critical ? ', on critical path' : ''}`;\n if (row.kind === 'milestone') {\n const cx = layout.x(row.dueDay) + ZOOM_PX_PER_DAY[zoom] / 2;\n const r = DIAMOND_SIZE / 2;\n return (\n <g key={row.item.id} data-testid=\"gantt-bar\">\n <title>{label} — milestone</title>\n <rect\n x={cx - r}\n y={y - r}\n width={DIAMOND_SIZE}\n height={DIAMOND_SIZE}\n transform={`rotate(45 ${cx} ${y})`}\n className={critical ? 'stroke-primary' : 'stroke-input'}\n style={{ fill: visual.color }}\n strokeWidth={critical ? 2 : 1}\n />\n </g>\n );\n }\n const x1 = layout.x(row.startDay);\n const x2 = layout.x(row.dueDay) + ZOOM_PX_PER_DAY[zoom];\n const width = Math.max(ZOOM_PX_PER_DAY[zoom], x2 - x1);\n return (\n <g key={row.item.id} data-testid=\"gantt-bar\">\n <title>{label}</title>\n <rect\n x={x1}\n y={y - BAR_HEIGHT / 2}\n width={width}\n height={BAR_HEIGHT}\n rx={4}\n className={critical ? 'stroke-primary' : 'stroke-input'}\n style={{ fill: visual.color }}\n strokeWidth={critical ? 2 : 1}\n />\n </g>\n );\n })}\n </svg>\n </div>\n </div>\n\n <div className=\"flex flex-wrap items-center gap-x-4 gap-y-1 border-t border-input px-3 py-2 text-[11px] text-muted-foreground\">\n {presentStatuses.map((status) => (\n <span key={status} className=\"inline-flex items-center gap-1.5\">\n <span\n className=\"h-2.5 w-2.5 rounded-full\"\n style={{ backgroundColor: statusVisual(status).color }}\n />\n {enumLabel(status)}\n </span>\n ))}\n <span className=\"inline-flex items-center gap-1.5\">\n <span className=\"h-2.5 w-2.5 rotate-45 border-2 border-muted-foreground bg-background\" />\n Milestone\n </span>\n {criticalIds && criticalIds.size > 0 && (\n <span className=\"inline-flex items-center gap-1.5\">\n <span className=\"h-2.5 w-2.5 rounded-full border-2 border-primary bg-background\" />\n Critical path\n </span>\n )}\n <span className=\"inline-flex items-center gap-1.5\">\n <span className=\"h-2.5 w-0.5 bg-status-info-bg\" />\n Today\n </span>\n </div>\n\n {layout.unscheduled.length > 0 && (\n <div\n data-testid=\"gantt-unscheduled\"\n className=\"border-t border-input px-3 py-2 text-xs text-muted-foreground\"\n >\n <p className=\"font-medium text-foreground\">\n {layout.unscheduled.length} item{layout.unscheduled.length === 1 ? '' : 's'} without a\n due date {layout.unscheduled.length === 1 ? \"isn't\" : \"aren't\"} shown above:\n </p>\n <div className=\"mt-1 flex flex-wrap gap-x-3 gap-y-1\">\n {layout.unscheduled.map((item) => (\n <button\n key={item.id}\n type=\"button\"\n onClick={() => onActivateRow(item.id)}\n className=\"hover:underline focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary\"\n >\n {item.key}\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useProjectWorkItemsGraph.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/dependency/useProjectWorkItemsGraph.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAkDrD,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,sBAAsB,EAAE,CAAC;CACxC;AAkBD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EACtB,KAAK,EAAE,oBAAoB,EAAE,GAC5B,GAAG,CAAC,MAAM,CAAC,CAYb;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,8EAA8E;IAC9E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kEAAkE;IAClE,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,mGAAmG;AACnG,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,8BAA8B,CAwDhC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useProjectWorkItemsGraph.js","names":[],"sources":["../../../src/planmagnet/dependency/useProjectWorkItemsGraph.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { gql, type ErrorLike } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { usePlanMagnet } from '../providers/PlanMagnetProvider';\n\n/**\n * Every work item in a project, each with its OWN outgoing dependencies inline (PDM-27's project graph view and\n * ANR-24's Gantt page both need this — see DependencyGraph.tsx / GanttChart.tsx). `WorkItemDependency` has no\n * `projectId` filter of its own (`PlanmagnetDependencyFilter` only takes predecessorId/successorId/status/type),\n * so pulling the full edge set for a project through `planmagnetDependencies` would mean paging the WHOLE\n * workspace's dependencies and filtering client-side. `WorkItem.dependencies` — \"dependencies where this item is\n * the source\" — sidesteps that: the union of every fetched item's outgoing edges already covers the project's\n * whole graph (any edge whose successor sits outside the project is dropped by DependencyGraph's own node-scope\n * filter, same as a cross-project WorkItemLink already is elsewhere).\n */\n\nconst GET_PROJECT_WORK_ITEMS_GRAPH = gql`\n query GetProjectWorkItemsGraph(\n $workspaceId: ID!\n $projectId: String\n $pagination: PlanmagnetPaginationInput\n ) {\n planmagnetWorkItems(\n workspaceId: $workspaceId\n filter: { projectId: $projectId }\n pagination: $pagination\n ) {\n items {\n id\n key\n title\n status\n dueDate\n estimateMinutes\n dependencies {\n id\n successorId\n type\n lagMinutes\n status\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n totalCount\n }\n }\n`;\n\nexport interface ProjectGraphDependency {\n id: string;\n successorId: string;\n type: string;\n lagMinutes: number | null;\n status: string;\n}\n\nexport interface ProjectGraphWorkItem {\n id: string;\n key: string;\n title: string;\n status: string;\n dueDate: string | null;\n estimateMinutes: number | null;\n dependencies: ProjectGraphDependency[];\n}\n\ninterface WorkItemsGraphPage {\n planmagnetWorkItems: {\n items: ProjectGraphWorkItem[];\n pageInfo: { hasNextPage: boolean; endCursor: string | null };\n totalCount: number;\n };\n}\n\nconst PAGE_SIZE = 100;\n/**\n * Stated cap: a project with more work items than this stops paging and says so (`truncated`) instead of\n * fetching indefinitely — same discipline as ExportWorkItemsButton's MAX_PAGES and ProjectSelect's\n * MAX_PROJECT_OPTIONS, just expressed as an item count since the caller needs that to size the cap message.\n */\nconst MAX_ITEMS = 2000;\n\n/**\n * The WorkItemDependency ids that connect two CONSECUTIVE nodes of a critical-path chain (as returned by\n * `planmagnetCriticalPath.path`), so the graph/Gantt views can emphasise those specific edges rather than every\n * edge touching a critical node (a critical item can also have a NON-critical dependency, e.g. to an item with\n * slack — only the chain's own edges are \"the critical path\" in the CPM sense).\n */\nexport function criticalEdgeIdsFromPath(\n path: { id: string }[],\n items: ProjectGraphWorkItem[]\n): Set<string> {\n const dependenciesByPredecessor = new Map(items.map((item) => [item.id, item.dependencies]));\n const edgeIds = new Set<string>();\n for (let i = 0; i < path.length - 1; i++) {\n const predecessorId = path[i].id;\n const successorId = path[i + 1].id;\n const edge = (dependenciesByPredecessor.get(predecessorId) ?? []).find(\n (d) => d.successorId === successorId\n );\n if (edge) edgeIds.add(edge.id);\n }\n return edgeIds;\n}\n\nexport interface UseProjectWorkItemsGraphResult {\n items: ProjectGraphWorkItem[];\n totalCount: number;\n loading: boolean;\n error: ErrorLike | undefined;\n /** A later page failed to load — the list already shown may be incomplete. */\n moreError: string | null;\n /** Paging stopped at MAX_ITEMS while more work items remained. */\n truncated: boolean;\n}\n\n/** Every work item (and its outgoing dependencies) in a project, paged in full up to MAX_ITEMS. */\nexport function useProjectWorkItemsGraph(\n projectId: string | null | undefined\n): UseProjectWorkItemsGraphResult {\n const { workspaceId } = usePlanMagnet();\n const { data, loading, error, fetchMore } = useQuery<WorkItemsGraphPage>(\n GET_PROJECT_WORK_ITEMS_GRAPH,\n {\n variables: { workspaceId: workspaceId ?? '', projectId, pagination: { first: PAGE_SIZE } },\n skip: !workspaceId || !projectId,\n }\n );\n\n const pageInfo = data?.planmagnetWorkItems.pageInfo;\n const loadedCount = data?.planmagnetWorkItems.items.length ?? 0;\n const [moreErrorState, setMoreErrorState] = useState<{\n projectId: string | null | undefined;\n error: string | null;\n }>({ projectId, error: null });\n // A different project must not keep a stale \"a later page failed\" flag from the last one. Reset during\n // render (React's documented \"adjusting state when a prop changes\" pattern) rather than in an effect, so\n // the reset lands in the SAME commit as the project change instead of one render later.\n if (moreErrorState.projectId !== projectId) {\n setMoreErrorState({ projectId, error: null });\n }\n const moreError = moreErrorState.projectId === projectId ? moreErrorState.error : null;\n\n useEffect(() => {\n if (moreError || !pageInfo?.hasNextPage || !pageInfo.endCursor || loadedCount >= MAX_ITEMS) {\n return;\n }\n const after = pageInfo.endCursor;\n fetchMore({\n variables: { pagination: { first: PAGE_SIZE, after } },\n updateQuery: (prev, { fetchMoreResult }) => ({\n planmagnetWorkItems: {\n ...fetchMoreResult.planmagnetWorkItems,\n items: [...prev.planmagnetWorkItems.items, ...fetchMoreResult.planmagnetWorkItems.items],\n },\n }),\n })\n .then((result) => {\n // fe-libs queries resolve with { error } instead of rejecting.\n const failure = (result as { error?: { message?: string } } | undefined)?.error;\n if (failure) setMoreErrorState({ projectId, error: failure.message ?? 'Unknown error' });\n })\n .catch((e: unknown) =>\n setMoreErrorState({ projectId, error: e instanceof Error ? e.message : String(e) })\n );\n }, [moreError, pageInfo?.hasNextPage, pageInfo?.endCursor, loadedCount, fetchMore, projectId]);\n\n return {\n items: data?.planmagnetWorkItems.items ?? [],\n totalCount: data?.planmagnetWorkItems.totalCount ?? 0,\n loading,\n error,\n moreError,\n truncated: loadedCount >= MAX_ITEMS && !!pageInfo?.hasNextPage,\n };\n}\n"],"mappings":";;;;;AAgBA,IAAM,IAA+B,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DlC,IAAY,KAMZ,IAAY;AAQlB,SAAgB,EACd,GACA,GACa;CACb,IAAM,IAA4B,IAAI,IAAI,EAAM,KAAK,MAAS,CAAC,EAAK,IAAI,EAAK,aAAa,CAAC,CAAC,EACtF,oBAAU,IAAI,KAAa;AACjC,MAAK,IAAI,IAAI,GAAG,IAAI,EAAK,SAAS,GAAG,KAAK;EACxC,IAAM,IAAgB,EAAK,GAAG,IACxB,IAAc,EAAK,IAAI,GAAG,IAC1B,KAAQ,EAA0B,IAAI,EAAc,IAAI,EAAE,EAAE,MAC/D,MAAM,EAAE,gBAAgB,EAC1B;AACD,EAAI,KAAM,EAAQ,IAAI,EAAK,GAAG;;AAEhC,QAAO;;AAeT,SAAgB,EACd,GACgC;CAChC,IAAM,EAAE,mBAAgB,GAAe,EACjC,EAAE,SAAM,YAAS,UAAO,iBAAc,EAC1C,GACA;EACE,WAAW;GAAE,aAAa,KAAe;GAAI;GAAW,YAAY,EAAE,OAAO,GAAW;GAAE;EAC1F,MAAM,CAAC,KAAe,CAAC;EACxB,CACF,EAEK,IAAW,GAAM,oBAAoB,UACrC,IAAc,GAAM,oBAAoB,MAAM,UAAU,GACxD,CAAC,GAAgB,KAAqB,EAGzC;EAAE;EAAW,OAAO;EAAM,CAAC;AAI9B,CAAI,EAAe,cAAc,KAC/B,EAAkB;EAAE;EAAW,OAAO;EAAM,CAAC;CAE/C,IAAM,IAAY,EAAe,cAAc,IAAY,EAAe,QAAQ;AA0BlF,QAxBA,QAAgB;AACd,MAAI,KAAa,CAAC,GAAU,eAAe,CAAC,EAAS,aAAa,KAAe,EAC/E;EAEF,IAAM,IAAQ,EAAS;AACvB,IAAU;GACR,WAAW,EAAE,YAAY;IAAE,OAAO;IAAW;IAAO,EAAE;GACtD,cAAc,GAAM,EAAE,0BAAuB,EAC3C,qBAAqB;IACnB,GAAG,EAAgB;IACnB,OAAO,CAAC,GAAG,EAAK,oBAAoB,OAAO,GAAG,EAAgB,oBAAoB,MAAM;IACzF,EACF;GACF,CAAC,CACC,MAAM,MAAW;GAEhB,IAAM,IAAW,GAAyD;AAC1E,GAAI,KAAS,EAAkB;IAAE;IAAW,OAAO,EAAQ,WAAW;IAAiB,CAAC;IACxF,CACD,OAAO,MACN,EAAkB;GAAE;GAAW,OAAO,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;GAAE,CAAC,CACpF;IACF;EAAC;EAAW,GAAU;EAAa,GAAU;EAAW;EAAa;EAAW;EAAU,CAAC,EAEvF;EACL,OAAO,GAAM,oBAAoB,SAAS,EAAE;EAC5C,YAAY,GAAM,oBAAoB,cAAc;EACpD;EACA;EACA;EACA,WAAW,KAAe,KAAa,CAAC,CAAC,GAAU;EACpD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WorkItemDiscussionPanel.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/discussion/WorkItemDiscussionPanel.tsx"],"names":[],"mappings":"AA2OA,wBAAgB,uBAAuB,CAAC,EACtC,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,wBAAwB,GACzB,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC,2CA6DA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WorkItemDiscussionPanel.js","names":[],"sources":["../../../src/planmagnet/discussion/WorkItemDiscussionPanel.tsx"],"sourcesContent":["import { useDeferredValue, useEffect, useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation } from '@apollo/client/react';\nimport {\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Checkbox,\n Input,\n ResponsiveDialog,\n ResponsiveDialogContent,\n ResponsiveDialogDescription,\n ResponsiveDialogFooter,\n ResponsiveDialogHeader,\n ResponsiveDialogTitle,\n ResponsiveDialogTrigger,\n} from '@burdenoff/fe-libs/ui';\nimport { useWorkspaceDirectory } from '@burdenoff/fe-libs/sharing';\nimport { ExternalLink, MessageCircle, MessagesSquare, Unlink as UnlinkIcon } from 'lucide-react';\nimport { usePlanMagnet } from '../providers/PlanMagnetProvider';\nimport { ErrorLine } from '../controls/ConfirmButton';\nimport { throwOnError } from '../utils/mutationResult';\nimport { isForbidden, mutationErrorMessage } from '../utils/graphqlErrors';\n\n/**\n * Discussion on a task (CWF-26): a link to a real group conversation in the platform Conversations product, not\n * a comment thread of its own. `WorkItem.discussionConversationId` only stores and validates the id — the\n * conversation itself is created HERE, as the signed-in user, through the Conversations subgraph's own\n * `createConversation` (a different subgraph than everything else on this page; see its schema doc comment).\n * Once created, `planmagnetSetWorkItemDiscussion` links it back to this item.\n *\n * \"Open discussion\" is a plain `<a>`, not this MFE's own `usePlanMagnetNavigate()` — that hook prepends THIS\n * microfrontend's basePath, and `/conversations/<id>` is a sibling app's own top-level route, not a planmagnet\n * page (there is, correctly, no such route in `PlanMagnetRoutes.tsx`).\n */\n\nconst SET_DISCUSSION = gql`\n mutation PlanmagnetSetWorkItemDiscussionLink($workItemId: ID!, $conversationId: ID) {\n planmagnetSetWorkItemDiscussion(workItemId: $workItemId, conversationId: $conversationId) {\n id\n discussionConversationId\n }\n }\n`;\n\nconst CREATE_DISCUSSION_CONVERSATION = gql`\n mutation CreateWorkItemDiscussionConversation($input: CreateConversationInput!) {\n createConversation(input: $input) {\n success\n conversation {\n id\n }\n }\n }\n`;\n\nconst DISCUSSION_REFETCH = { refetchQueries: ['GetWorkItemDetail'], awaitRefetchQueries: true };\n\n/** Create a group conversation for this task and link it — participants default to the assignee + the current\n * user, editable through the same search-then-checkbox workspace directory picker\n * `roadmaps/RoadmapReviewPanel.tsx`'s `RequestReviewDialog` uses for reviewers. */\nfunction StartDiscussionDialog({\n workItemId,\n workItemKey,\n workItemTitle,\n assigneeId,\n}: {\n workItemId: string;\n workItemKey: string;\n workItemTitle: string;\n assigneeId: string | null;\n}) {\n const { workspaceId, authToken, apiGatewayUrl, currentUser } = usePlanMagnet();\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const deferredSearch = useDeferredValue(search.trim());\n const [selected, setSelected] = useState<Set<string>>(new Set());\n const [error, setError] = useState<string | null>(null);\n\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 const [createConversation, createState] = useMutation<{\n createConversation: { success: boolean; conversation: { id: string } | null };\n }>(CREATE_DISCUSSION_CONVERSATION);\n const [setDiscussion, setDiscussionState] = useMutation(SET_DISCUSSION, DISCUSSION_REFETCH);\n const busy = createState.loading || setDiscussionState.loading;\n\n const toggle = (id: string, checked: boolean) =>\n setSelected((prev) => {\n const next = new Set(prev);\n if (checked) next.add(id);\n else next.delete(id);\n return next;\n });\n\n const submit = async () => {\n if (!workspaceId) return;\n setError(null);\n try {\n const created = await throwOnError(\n createConversation({\n variables: {\n input: {\n workspaceId,\n type: 'GROUP',\n title: `${workItemKey}: ${workItemTitle}`,\n participantIds: [...selected],\n },\n },\n })\n );\n const conversationId = created.data?.createConversation?.conversation?.id;\n if (!created.data?.createConversation?.success || !conversationId) {\n throw new Error('The conversation could not be created.');\n }\n await throwOnError(setDiscussion({ variables: { workItemId, conversationId } }));\n setOpen(false);\n setSearch('');\n } catch (e) {\n setError(\n isForbidden(e)\n ? 'Your role cannot start a conversation in this workspace.'\n : mutationErrorMessage(e, 'The discussion could not be started.')\n );\n }\n };\n\n return (\n <ResponsiveDialog\n open={open}\n onOpenChange={(next) => {\n setOpen(next);\n if (next) {\n // Default selection (assignee + self), recomputed on every open so an earlier session's manual picks\n // never leak into a later one.\n const defaults = new Set<string>();\n if (assigneeId) defaults.add(assigneeId);\n if (currentUser?.id) defaults.add(currentUser.id);\n setSelected(defaults);\n } else {\n setSearch('');\n setError(null);\n }\n }}\n >\n <ResponsiveDialogTrigger asChild>\n <Button size=\"sm\" data-testid=\"discussion-start\">\n <MessagesSquare className=\"mr-1 h-4 w-4\" aria-hidden=\"true\" />\n Discuss in Conversations\n </Button>\n </ResponsiveDialogTrigger>\n <ResponsiveDialogContent className=\"max-w-lg\">\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>Start a discussion</ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n Creates a group conversation for this task and links it back here. Add anyone else who\n should be in it.\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n <p className=\"text-sm font-medium\">\n {workItemKey}: {workItemTitle}\n </p>\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=\"max-h-64 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 = `discussion-participant-${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) => toggle(member.id, checked === true)}\n />\n <span className=\"min-w-0 flex-1 truncate\">\n {member.name}\n {member.id === currentUser?.id && (\n <span className=\"text-muted-foreground\"> (you)</span>\n )}\n {member.id === assigneeId && (\n <span className=\"text-muted-foreground\"> · assignee</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 {error && <ErrorLine message={error} />}\n <ResponsiveDialogFooter>\n <Button\n onClick={() => void submit()}\n disabled={selected.size === 0 || busy}\n data-testid=\"discussion-create-confirm\"\n >\n {busy ? 'Starting…' : `Start discussion (${selected.size})`}\n </Button>\n </ResponsiveDialogFooter>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n );\n}\n\nexport function WorkItemDiscussionPanel({\n workItemId,\n workItemKey,\n workItemTitle,\n assigneeId,\n discussionConversationId,\n}: {\n workItemId: string;\n workItemKey: string;\n workItemTitle: string;\n assigneeId: string | null;\n discussionConversationId: string | null;\n}) {\n const [unlink, unlinkState] = useMutation(SET_DISCUSSION, DISCUSSION_REFETCH);\n const [error, setError] = useState<string | null>(null);\n\n const doUnlink = async () => {\n setError(null);\n try {\n await throwOnError(unlink({ variables: { workItemId, conversationId: null } }));\n } catch (e) {\n setError(mutationErrorMessage(e, 'The discussion could not be unlinked.'));\n }\n };\n\n return (\n <Card data-testid=\"work-item-discussion\">\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <MessageCircle className=\"h-4 w-4\" aria-hidden=\"true\" />\n Discussion\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {error && <ErrorLine message={error} />}\n {discussionConversationId ? (\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <a\n href={`/conversations/${encodeURIComponent(discussionConversationId)}`}\n className=\"inline-flex items-center gap-1 text-sm font-medium text-primary hover:underline\"\n data-testid=\"discussion-open\"\n >\n Open discussion\n <ExternalLink className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n </a>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={unlinkState.loading}\n onClick={() => void doUnlink()}\n data-testid=\"discussion-unlink\"\n >\n <UnlinkIcon className=\"mr-1 h-3.5 w-3.5\" aria-hidden=\"true\" />\n Unlink\n </Button>\n </div>\n ) : (\n <div className=\"space-y-2\">\n <p className=\"text-sm text-muted-foreground\">\n Not linked to a conversation yet. Starting one creates a group chat for this task in\n Conversations.\n </p>\n <StartDiscussionDialog\n workItemId={workItemId}\n workItemKey={workItemKey}\n workItemTitle={workItemTitle}\n assigneeId={assigneeId}\n />\n </div>\n )}\n </CardContent>\n </Card>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DocDiffView.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/docs/DocDiffView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;;;;GAOG;AAEH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAgBD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,SAAS,EACT,YAAgC,EAChC,MAA2B,GAC5B,EAAE;IACD,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,2CA0BA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DocDiffView.js","names":[],"sources":["../../../src/planmagnet/docs/DocDiffView.tsx"],"sourcesContent":["import type { LineDiffKind } from '../utils/lineDiff';\n\n/**\n * Renders ADDED/REMOVED/UNCHANGED hunks (CWF-18 §2/§3) — shared by the suggestion diff preview\n * (`DocSuggestionsPanel`, a client-side `lineDiff`) and the version-compare panel (`DocVersionCompare`, the\n * server's `planmagnetDocRevisionDiff`); both produce the same `{kind, text}` shape.\n *\n * Colour is never the only signal: every line carries a leading `+`/`−`/` ` marker AND a screen-reader-only\n * \"Added:\"/\"Removed:\" prefix, not just a background tint.\n */\n\nexport interface DocDiffHunkLike {\n kind: LineDiffKind;\n text: string;\n}\n\nconst KIND_META: Record<LineDiffKind, { symbol: string; srLabel: string; className: string }> = {\n ADDED: {\n symbol: '+',\n srLabel: 'Added: ',\n className: 'bg-status-success-subtle text-status-success-text',\n },\n REMOVED: {\n symbol: '−',\n srLabel: 'Removed: ',\n className: 'bg-status-error-subtle text-status-error-text',\n },\n UNCHANGED: { symbol: ' ', srLabel: '', className: 'text-muted-foreground' },\n};\n\nexport function DocDiffHunks({\n hunks,\n truncated,\n emptyMessage = 'No differences.',\n testId = 'doc-version-diff',\n}: {\n hunks: readonly DocDiffHunkLike[];\n truncated?: boolean;\n emptyMessage?: string;\n /**\n * Overridable so two instances never collide on the same page. `DocVersionCompare` (one result at a time) keeps\n * the default `doc-version-diff`; `DocSuggestionsPanel` passes a per-suggestion id, since several suggestions'\n * previews can be expanded at once in the Open tab.\n */\n testId?: string;\n}) {\n if (hunks.length === 0) {\n return <p className=\"text-sm text-muted-foreground\">{emptyMessage}</p>;\n }\n return (\n <div\n className=\"max-h-96 space-y-0.5 overflow-y-auto rounded-md border border-border-default bg-muted/30 p-2 font-mono text-xs\"\n data-testid={testId}\n >\n {hunks.map((hunk, index) => {\n const meta = KIND_META[hunk.kind];\n return (\n <div key={index} className={`whitespace-pre-wrap rounded-sm px-1 ${meta.className}`}>\n <span aria-hidden=\"true\">{meta.symbol} </span>\n <span className=\"sr-only\">{meta.srLabel}</span>\n {hunk.text.length > 0 ? hunk.text : ' '}\n </div>\n );\n })}\n {truncated && (\n <p className=\"pt-1 text-[11px] italic text-muted-foreground\">\n Truncated — only the first part of the difference is shown.\n </p>\n )}\n </div>\n );\n}\n"],"mappings":";;AAgBA,IAAM,IAA0F;CAC9F,OAAO;EACL,QAAQ;EACR,SAAS;EACT,WAAW;EACZ;CACD,SAAS;EACP,QAAQ;EACR,SAAS;EACT,WAAW;EACZ;CACD,WAAW;EAAE,QAAQ;EAAK,SAAS;EAAI,WAAW;EAAyB;CAC5E;AAED,SAAgB,EAAa,EAC3B,UACA,cACA,kBAAe,mBACf,YAAS,sBAWR;AAID,QAHI,EAAM,WAAW,IACZ,kBAAC,KAAD;EAAG,WAAU;YAAiC;EAAiB,CAAA,GAGtE,kBAAC,OAAD;EACE,WAAU;EACV,eAAa;YAFf,CAIG,EAAM,KAAK,GAAM,MAAU;GAC1B,IAAM,IAAO,EAAU,EAAK;AAC5B,UACE,kBAAC,OAAD;IAAiB,WAAW,uCAAuC,EAAK;cAAxE;KACE,kBAAC,QAAD;MAAM,eAAY;gBAAlB,CAA0B,EAAK,QAAO,IAAQ;;KAC9C,kBAAC,QAAD;MAAM,WAAU;gBAAW,EAAK;MAAe,CAAA;KAC9C,EAAK,KAAK,SAAS,IAAI,EAAK,OAAO;KAChC;MAJI,EAIJ;IAER,EACD,KACC,kBAAC,KAAD;GAAG,WAAU;aAAgD;GAEzD,CAAA,CAEF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DocStatusBadge.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/docs/DocStatusBadge.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC;AAE3D,eAAO,MAAM,YAAY,EAAE,SAAS,SAAS,EAAuC,CAAC;AAErF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAItD,CAAC;AAEF,yDAAyD;AACzD,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,2CAkB5D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DocStatusBadge.js","names":[],"sources":["../../../src/planmagnet/docs/DocStatusBadge.tsx"],"sourcesContent":["import { Archive, CheckCircle2, PencilLine } from 'lucide-react';\n\nexport type DocStatus = 'DRAFT' | 'PUBLISHED' | 'ARCHIVED';\n\nexport const DOC_STATUSES: readonly DocStatus[] = ['DRAFT', 'PUBLISHED', 'ARCHIVED'];\n\nexport const DOC_STATUS_LABEL: Record<DocStatus, string> = {\n DRAFT: 'Draft',\n PUBLISHED: 'Published',\n ARCHIVED: 'Archived',\n};\n\n/** Status as an icon AND a label, never colour alone. */\nexport function DocStatusBadge({ status }: { status: string }) {\n if (status === 'PUBLISHED')\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\" /> Published\n </span>\n );\n if (status === 'ARCHIVED')\n return (\n <span className=\"inline-flex items-center gap-1 text-xs text-muted-foreground\">\n <Archive className=\"h-3.5 w-3.5\" /> Archived\n </span>\n );\n return (\n <span className=\"inline-flex items-center gap-1 text-xs text-status-warning-text\">\n <PencilLine className=\"h-3.5 w-3.5\" /> Draft\n </span>\n );\n}\n"],"mappings":";;;AAIA,IAAa,IAAqC;CAAC;CAAS;CAAa;CAAW,EAEvE,IAA8C;CACzD,OAAO;CACP,WAAW;CACX,UAAU;CACX;AAGD,SAAgB,EAAe,EAAE,aAA8B;AAa7D,QAZI,MAAW,cAEX,kBAAC,QAAD;EAAM,WAAU;YAAhB,CACE,kBAAC,GAAD,EAAc,WAAU,eAAgB,CAAA,EAAA,aACnC;MAEP,MAAW,aAEX,kBAAC,QAAD;EAAM,WAAU;YAAhB,CACE,kBAAC,GAAD,EAAS,WAAU,eAAgB,CAAA,EAAA,YAC9B;MAGT,kBAAC,QAAD;EAAM,WAAU;YAAhB,CACE,kBAAC,GAAD,EAAY,WAAU,eAAgB,CAAA,EAAA,SACjC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DocSuggestionsPanel.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/docs/DocSuggestionsPanel.tsx"],"names":[],"mappings":"AA2GA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AA0QD,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,UAAU,EACV,SAAS,EACT,aAAa,GACd,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACzC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC,2CAuCA"}