@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":"MetricsCard.js","names":[],"sources":["../../../../src/planmagnet/pages/analytics/MetricsCard.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Activity, Info } from 'lucide-react';\nimport { formatDuration, StatTile } from './DeliveryHealthCards';\n\n/**\n * ANR-18 / ANR-19: the generic Metric/Analytics framework. `planmagnetMetrics` (workspace-wide) and\n * `planmagnetAnalytics.projectMetrics`/`.teamMetrics` (one project) are both a THIN composition over the\n * narrow analytics queries the rest of this page already renders (velocity, cycle time, throughput,\n * cumulative flow, delivery KPIs) into one generic `{category, value, unit, trend, target}` row shape — never\n * a second computation engine. Both are TTL-cached (60s) server-side (see analytics.gql's own doc comment),\n * so a reading here can be up to a minute stale — said plainly below rather than implied as live.\n * `trend`/`target` are only ever rendered when the server actually sets them: no metric sets them today (see\n * PlanmagnetMetric's own field doc), so they never show as a fabricated value.\n */\n\nconst GET_WORKSPACE_METRICS = gql`\n query GetWorkspaceMetrics($workspaceId: ID!, $timeRange: PlanmagnetTimeRangeInput) {\n planmagnetMetrics(workspaceId: $workspaceId, timeRange: $timeRange) {\n category\n value\n unit\n trend\n target\n calculatedAt\n }\n }\n`;\n\nconst GET_PROJECT_ANALYTICS_METRICS = gql`\n query GetProjectAnalyticsMetrics(\n $workspaceId: ID!\n $projectId: ID\n $timeRange: PlanmagnetTimeRangeInput\n ) {\n planmagnetAnalytics(workspaceId: $workspaceId, projectId: $projectId, timeRange: $timeRange) {\n projectMetrics {\n category\n value\n unit\n trend\n target\n calculatedAt\n }\n teamMetrics {\n category\n value\n unit\n trend\n target\n calculatedAt\n }\n }\n }\n`;\n\ninterface MetricRow {\n category: string;\n value: number;\n unit: string;\n trend: number | null;\n target: number | null;\n calculatedAt: string;\n}\n\ninterface WorkspaceMetricsData {\n planmagnetMetrics: MetricRow[];\n}\n\ninterface ProjectAnalyticsData {\n planmagnetAnalytics: {\n projectMetrics: MetricRow[];\n teamMetrics: MetricRow[];\n };\n}\n\n// Every category AnalyticsService.metrics()/composeProjectMetrics()/composeTeamMetrics() can actually emit\n// today (see wspace-planmagnet-svc analytics.service.ts) — kept as a lookup, not re-derived, so a category the\n// server adds later still renders (falls back to itself) instead of disappearing.\nconst METRIC_LABELS: Record<string, string> = {\n sprintOnTimeRate: 'Sprint on-time rate',\n releaseOnTimeRate: 'Release on-time rate',\n milestoneOnTimeRate: 'Milestone on-time rate',\n scopeAdherenceRate: 'Scope adherence rate',\n velocity: 'Velocity',\n throughput: 'Throughput',\n cycleTime: 'Cycle time',\n wip: 'Work in progress',\n sprintRemainingPoints: 'Sprint remaining points',\n teamVelocity: 'Team velocity',\n};\n\nfunction metricLabel(category: string): string {\n return METRIC_LABELS[category] ?? category;\n}\n\nfunction formatMetricValue(m: MetricRow): string {\n if (m.unit === '%') return `${Math.round(m.value)}%`;\n if (m.unit === 'hours') return formatDuration(m.value);\n const rounded = Math.round(m.value * 100) / 100;\n return `${rounded} ${m.unit}`;\n}\n\nfunction MetricTile({ metric }: { metric: MetricRow }) {\n const hints: string[] = [];\n // Neither is set by the server today (see the module doc above) — kept so a future source for either shows\n // up here with no UI change needed.\n if (metric.trend != null) hints.push(`Trend ${metric.trend > 0 ? '+' : ''}${metric.trend}`);\n if (metric.target != null) {\n hints.push(`Target ${metric.target}${metric.unit === '%' ? '%' : ` ${metric.unit}`}`);\n }\n return (\n <StatTile\n label={metricLabel(metric.category)}\n value={formatMetricValue(metric)}\n hint={hints.length > 0 ? hints.join(' · ') : undefined}\n />\n );\n}\n\nexport function MetricsSection({\n workspaceId,\n projectId,\n startDate,\n endDate,\n}: {\n workspaceId?: string | null;\n /** Omitted = no project selected (ANR-09 scope set to \"All projects\") — nothing project-scoped to show. */\n projectId?: string;\n startDate: string;\n endDate: string;\n}) {\n const { t } = useI18n();\n const timeRange = { startDate, endDate };\n const { data, loading, error } = useQuery<WorkspaceMetricsData>(GET_WORKSPACE_METRICS, {\n variables: { workspaceId, timeRange },\n skip: !workspaceId,\n });\n const {\n data: projectData,\n loading: projectLoading,\n error: projectError,\n } = useQuery<ProjectAnalyticsData>(GET_PROJECT_ANALYTICS_METRICS, {\n variables: { workspaceId, projectId, timeRange },\n skip: !workspaceId || !projectId,\n });\n\n const metrics = data?.planmagnetMetrics ?? [];\n const projectMetrics = projectData?.planmagnetAnalytics.projectMetrics ?? [];\n const teamMetrics = projectData?.planmagnetAnalytics.teamMetrics ?? [];\n const projectRows = [...projectMetrics, ...teamMetrics];\n\n return (\n <Card data-testid=\"metrics-card\">\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Activity className=\"h-4 w-4\" />\n {t('planmagnet.analytics.metrics.title', 'Metrics')}\n </CardTitle>\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'planmagnet.analytics.metrics.subtitle',\n \"Workspace-wide KPIs, plus the selected project's own metrics, composed from the queries above into one generic shape.\"\n )}\n </p>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <h3 className=\"text-sm font-medium mb-1\">\n {t('planmagnet.analytics.metrics.workspaceTitle', 'Workspace')}\n </h3>\n {loading ? (\n <p className=\"text-sm text-muted-foreground\">\n {t('planmagnet.analytics.loading', 'Loading…')}\n </p>\n ) : error ? (\n <p className=\"text-sm text-status-error-text\">\n {t('planmagnet.analytics.metrics.error', 'Metrics could not be loaded')}:{' '}\n {error.message}\n </p>\n ) : metrics.length === 0 ? (\n <p className=\"text-sm text-muted-foreground py-2\">\n {t(\n 'planmagnet.analytics.metrics.workspaceEmpty',\n 'Nothing to show in this range yet.'\n )}\n </p>\n ) : (\n <div\n className=\"grid grid-cols-2 gap-3 sm:grid-cols-4\"\n data-testid=\"metrics-workspace-tiles\"\n >\n {metrics.map((m) => (\n <MetricTile key={m.category} metric={m} />\n ))}\n </div>\n )}\n </div>\n\n <div className=\"border-t pt-3\">\n <h3 className=\"text-sm font-medium mb-1\">\n {t('planmagnet.analytics.metrics.projectTitle', 'Selected project')}\n </h3>\n {!projectId ? (\n <p className=\"text-sm text-muted-foreground py-2\">\n {t(\n 'planmagnet.analytics.metrics.noProject',\n 'Pick a project above to see its own metrics.'\n )}\n </p>\n ) : projectLoading ? (\n <p className=\"text-sm text-muted-foreground\">\n {t('planmagnet.analytics.loading', 'Loading…')}\n </p>\n ) : projectError ? (\n <p className=\"text-sm text-status-error-text\">\n {t(\n 'planmagnet.analytics.metrics.projectError',\n 'Project metrics could not be loaded'\n )}\n : {projectError.message}\n </p>\n ) : projectRows.length === 0 ? (\n <p className=\"text-sm text-muted-foreground py-2\">\n {t(\n 'planmagnet.analytics.metrics.projectEmpty',\n 'Nothing to show for this project in this range yet.'\n )}\n </p>\n ) : (\n <div\n className=\"grid grid-cols-2 gap-3 sm:grid-cols-4\"\n data-testid=\"metrics-project-tiles\"\n >\n {projectRows.map((m) => (\n <MetricTile key={m.category} metric={m} />\n ))}\n </div>\n )}\n </div>\n\n <p\n className=\"flex items-start gap-1.5 text-xs text-muted-foreground border-t pt-2\"\n data-testid=\"metrics-cache-note\"\n >\n <Info className=\"h-3.5 w-3.5 shrink-0 mt-0.5\" aria-hidden={true} />\n {t(\n 'planmagnet.analytics.metrics.cacheNote',\n 'Updated within the last minute — these metrics are cached for 60 seconds.'\n )}\n </p>\n </CardContent>\n </Card>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"QualityMetricsCard.d.ts","sourceRoot":"","sources":["../../../../src/planmagnet/pages/analytics/QualityMetricsCard.tsx"],"names":[],"mappings":"AAmFA,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,SAAS,EACT,SAAS,EACT,OAAO,GACR,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,2CA2JA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"QualityMetricsCard.js","names":[],"sources":["../../../../src/planmagnet/pages/analytics/QualityMetricsCard.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Bug } from 'lucide-react';\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Cell,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from 'recharts';\nimport { enumLabel } from '../../controls/WorkItemControls';\nimport { StatTile, formatDuration } from './DeliveryHealthCards';\n\n/**\n * ANR-20: quality / defect metrics for the workspace or one project, over the page's date range. Every figure\n * comes straight from `planmagnetQualityMetrics` (see graphql/wspace.graphql for the exact server semantics) —\n * nothing here re-derives a rate the server already computed, and every rate the server can hand back `null`\n * (nothing to divide by) renders \"—\" with the reason, never a fabricated 0%.\n */\n\nconst GET_QUALITY_METRICS = gql`\n query GetAnalyticsQualityMetrics(\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 openBugs\n openBugsByPriority {\n priority\n count\n }\n defectRatio\n meanTimeToResolveHours\n qualityGatesReviewed\n qualityGatesPassed\n gatePassRate\n }\n }\n`;\n\ninterface QualityMetricsData {\n planmagnetQualityMetrics: {\n bugsOpened: number;\n bugsResolved: number;\n openBugs: number;\n openBugsByPriority: Array<{ priority: string; count: number }>;\n defectRatio: number | null;\n meanTimeToResolveHours: number | null;\n qualityGatesReviewed: number;\n qualityGatesPassed: number;\n gatePassRate: number | null;\n };\n}\n\n// Fixed severity order — never re-derived from whichever priorities happen to appear (same rule\n// utils/statusColor.ts documents for status colors: a categorical/ordinal dimension keeps one fixed order).\nconst PRIORITY_ORDER = ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW', 'NONE'] as const;\n// recharts' `fill` prop is a literal SVG paint attribute, not a Tailwind className, so it reads the fe-libs chart\n// token ramp through a CSS var rather than a `fill-chart-N` utility class (same constraint the page-level charts\n// document; this card additionally maps severity to var(--color-status-*) for the two worst priorities, since\n// \"priority\" IS the severity dimension here, not an arbitrary identity one).\nconst PRIORITY_COLOR: Record<(typeof PRIORITY_ORDER)[number], string> = {\n CRITICAL: 'var(--color-status-error-bg)',\n HIGH: 'var(--color-status-warning-bg)',\n MEDIUM: 'var(--color-chart-1)',\n LOW: 'var(--color-chart-6)',\n NONE: 'var(--color-chart-axis)',\n};\n\nexport function QualityMetricsCard({\n workspaceId,\n projectId,\n startDate,\n endDate,\n}: {\n workspaceId?: string | null;\n /** Omitted = every project in the workspace (ANR-09 project scope set to \"All projects\"). */\n projectId?: string;\n startDate: string;\n endDate: string;\n}) {\n const { t } = useI18n();\n const { data, loading, error } = useQuery<QualityMetricsData>(GET_QUALITY_METRICS, {\n variables: { workspaceId, projectId, startDate, endDate },\n skip: !workspaceId,\n });\n const q = data?.planmagnetQualityMetrics;\n\n const byPriority = new Map(q?.openBugsByPriority.map((p) => [p.priority, p.count]) ?? []);\n const priorityChartData = PRIORITY_ORDER.filter((p) => (byPriority.get(p) ?? 0) > 0).map((p) => ({\n priority: enumLabel(p),\n count: byPriority.get(p) ?? 0,\n fill: PRIORITY_COLOR[p],\n }));\n\n return (\n <Card data-testid=\"quality-card\">\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Bug className=\"h-4 w-4\" />\n {t('planmagnet.analytics.quality.title', 'Quality')}\n </CardTitle>\n <p className=\"text-xs text-muted-foreground\">\n {projectId\n ? t(\n 'planmagnet.analytics.quality.subtitleProject',\n 'Bug and quality-gate activity for the selected project, in the selected range.'\n )\n : t(\n 'planmagnet.analytics.quality.subtitle',\n 'Bug and quality-gate activity across the workspace, in the selected range.'\n )}\n </p>\n </CardHeader>\n <CardContent>\n {loading ? (\n <p className=\"text-sm text-muted-foreground\">\n {t('planmagnet.analytics.loading', 'Loading…')}\n </p>\n ) : error ? (\n <p className=\"text-sm text-status-error-text\">\n {t('planmagnet.analytics.quality.error', 'Quality metrics could not be loaded')}:{' '}\n {error.message}\n </p>\n ) : !q ? null : (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-3 sm:grid-cols-3\">\n <StatTile\n label={t('planmagnet.analytics.quality.bugsOpened', 'Bugs opened')}\n value={String(q.bugsOpened)}\n hint={t(\n 'planmagnet.analytics.quality.bugsOpenedHint',\n 'BUG items created in the range'\n )}\n />\n <StatTile\n label={t('planmagnet.analytics.quality.bugsResolved', 'Bugs resolved')}\n value={String(q.bugsResolved)}\n hint={t(\n 'planmagnet.analytics.quality.bugsResolvedHint',\n 'BUG items that reached Done in the range'\n )}\n />\n <StatTile\n label={t('planmagnet.analytics.quality.openBugs', 'Open bugs (now)')}\n value={String(q.openBugs)}\n hint={t(\n 'planmagnet.analytics.quality.openBugsHint',\n 'Not Done or Cancelled, as of now — not range-bound'\n )}\n />\n <StatTile\n label={t('planmagnet.analytics.quality.defectRatio', 'Defect ratio')}\n value={q.defectRatio === null ? '—' : q.defectRatio.toFixed(2)}\n hint={\n q.defectRatio === null\n ? t(\n 'planmagnet.analytics.quality.defectRatioHintEmpty',\n 'No non-bug work completed in this range to compare against'\n )\n : t(\n 'planmagnet.analytics.quality.defectRatioHint',\n 'Bugs opened ÷ non-bug items completed, in range'\n )\n }\n />\n <StatTile\n label={t('planmagnet.analytics.quality.mttr', 'Mean time to resolve')}\n value={formatDuration(q.meanTimeToResolveHours)}\n hint={t(\n 'planmagnet.analytics.quality.mttrHint',\n 'Bug creation to Done, averaged over bugs resolved in range'\n )}\n />\n <StatTile\n label={t('planmagnet.analytics.quality.gatePassRate', 'Gate pass rate')}\n value={q.gatePassRate === null ? '—' : `${Math.round(q.gatePassRate * 100)}%`}\n hint={\n q.gatePassRate === null\n ? t(\n 'planmagnet.analytics.quality.gatePassRateHintEmpty',\n 'No quality gate was reviewed in this range'\n )\n : t(\n 'planmagnet.analytics.quality.gatePassRateHint',\n '{{passed}} of {{reviewed}} gates reviewed in range passed',\n { passed: q.qualityGatesPassed, reviewed: q.qualityGatesReviewed }\n )\n }\n />\n </div>\n\n <div>\n <h3 className=\"text-sm font-medium mb-1\">\n {t('planmagnet.analytics.quality.openByPriority', 'Open bugs by priority')}\n </h3>\n {priorityChartData.length === 0 ? (\n <p className=\"text-sm text-muted-foreground py-4 text-center\">\n {t('planmagnet.analytics.quality.openByPriorityEmpty', 'No open bugs right now.')}\n </p>\n ) : (\n <>\n {/* Accessible text restatement of the chart, for screen readers and at-a-glance scanning. */}\n <p className=\"text-xs text-muted-foreground mb-2\">\n {priorityChartData.map((p) => `${p.priority}: ${p.count}`).join(' · ')}\n </p>\n <ResponsiveContainer width=\"100%\" height={160}>\n <BarChart data={priorityChartData} layout=\"vertical\">\n <CartesianGrid strokeDasharray=\"3 3\" opacity={0.2} horizontal={false} />\n <XAxis type=\"number\" tick={{ fontSize: 11 }} allowDecimals={false} />\n <YAxis\n type=\"category\"\n dataKey=\"priority\"\n tick={{ fontSize: 11 }}\n width={70}\n />\n <Tooltip />\n <Bar\n dataKey=\"count\"\n name={t('planmagnet.analytics.quality.openBugs', 'Open bugs (now)')}\n >\n {priorityChartData.map((p) => (\n <Cell key={p.priority} fill={p.fill} />\n ))}\n </Bar>\n </BarChart>\n </ResponsiveContainer>\n </>\n )}\n </div>\n </div>\n )}\n </CardContent>\n </Card>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SprintDeliveryCards.d.ts","sourceRoot":"","sources":["../../../../src/planmagnet/pages/analytics/SprintDeliveryCards.tsx"],"names":[],"mappings":"AA0GA,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,QAAQ,GACT,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB,2CA2EA;AAED,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,SAAS,EACT,mBAAuB,GACxB,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,2CAgIA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SprintDeliveryCards.js","names":[],"sources":["../../../../src/planmagnet/pages/analytics/SprintDeliveryCards.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { BarChart3, TrendingUp } from 'lucide-react';\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n Line,\n LineChart,\n ReferenceArea,\n ReferenceLine,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from 'recharts';\n\n/**\n * Sprint burndown and velocity, as their own cards (BOFF-4447's server-computed\n * `planmagnetSprintBurndown` / `planmagnetVelocity`). Extracted out of\n * `pages/AnalyticsAnalyticsPagePage.tsx`, where this same chart code lived inline, so the\n * role dashboards (`dashboards/project-manager-page`) can import the chart rather than\n * duplicating it — same reasoning as `CycleTimeCard`/`BudgetPerformanceCard` alongside\n * them in `DeliveryHealthCards.tsx`. Each card owns its query, so neither can land a hook\n * after an early return in the host page.\n *\n * recharts' `stroke`/`fill` render as literal SVG paint attributes, not Tailwind\n * classNames — they cannot consume semantic `bg-*`/`text-*` tokens, the same documented\n * exception `AnalyticsAnalyticsPagePage.tsx`'s cumulative-flow chart carries.\n */\n\nconst GET_SPRINT_BURNDOWN = gql`\n query DashboardSprintBurndown($workspaceId: ID!, $sprintId: ID!) {\n planmagnetSprintBurndown(workspaceId: $workspaceId, sprintId: $sprintId) {\n sprintId\n totalPoints\n totalCount\n points {\n date\n remainingPoints\n completedPoints\n }\n }\n }\n`;\n\nconst GET_VELOCITY = gql`\n query DashboardVelocity($workspaceId: ID!, $projectId: ID!, $trailingSprintCount: Int) {\n planmagnetVelocity(\n workspaceId: $workspaceId\n projectId: $projectId\n trailingSprintCount: $trailingSprintCount\n ) {\n projectId\n averageVelocity\n forecastNextSprintPoints\n forecastRange {\n p15\n p85\n }\n insufficientHistory\n sprints {\n sprintId\n sprintName\n sequenceNumber\n completedPoints\n plannedPoints\n }\n }\n }\n`;\n\ninterface BurndownData {\n planmagnetSprintBurndown: {\n sprintId: string;\n totalPoints: number;\n totalCount: number;\n points: { date: string; remainingPoints: number; completedPoints: number }[];\n } | null;\n}\n\ninterface VelocityData {\n planmagnetVelocity: {\n projectId: string;\n averageVelocity: number;\n forecastNextSprintPoints: number;\n forecastRange: { p15: number; p85: number } | null;\n insufficientHistory: boolean;\n sprints: {\n sprintId: string;\n sprintName: string;\n sequenceNumber: number;\n completedPoints: number;\n plannedPoints: number | null;\n }[];\n };\n}\n\nfunction formatDay(iso: string): string {\n const d = new Date(iso);\n return `${d.getUTCMonth() + 1}/${d.getUTCDate()}`;\n}\n\nexport function SprintBurndownCard({\n workspaceId,\n sprintId,\n}: {\n workspaceId?: string | null;\n sprintId: string;\n}) {\n const { t } = useI18n();\n const { data, loading, error } = useQuery<BurndownData>(GET_SPRINT_BURNDOWN, {\n variables: { workspaceId, sprintId },\n skip: !workspaceId || !sprintId,\n });\n const points = data?.planmagnetSprintBurndown?.points ?? [];\n const chartData = points.map((p) => ({\n day: formatDay(p.date),\n remaining: p.remainingPoints,\n completed: p.completedPoints,\n }));\n\n return (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <BarChart3 className=\"h-4 w-4\" />\n {t('planmagnet.dashboards.burndown.title', 'Sprint burndown')}\n </CardTitle>\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'planmagnet.dashboards.burndown.subtitle',\n 'Remaining vs. completed story points, by day of the sprint.'\n )}\n </p>\n </CardHeader>\n <CardContent>\n {!sprintId ? (\n <p className=\"text-sm text-muted-foreground\">\n {t('planmagnet.dashboards.burndown.noSprint', 'No active sprint for this project.')}\n </p>\n ) : loading && !data ? (\n <p className=\"text-sm text-muted-foreground\">\n {t('planmagnet.dashboards.loading', 'Loading…')}\n </p>\n ) : error ? (\n <p className=\"text-sm text-status-error-text\">\n {t('planmagnet.dashboards.burndown.error', 'Burndown could not be loaded')}:{' '}\n {error.message}\n </p>\n ) : chartData.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">\n {t('planmagnet.dashboards.burndown.empty', 'The active sprint has no work items yet.')}\n </p>\n ) : (\n <ResponsiveContainer width=\"100%\" height={220}>\n <LineChart data={chartData}>\n <CartesianGrid strokeDasharray=\"3 3\" opacity={0.2} />\n <XAxis dataKey=\"day\" tick={{ fontSize: 11 }} />\n <YAxis tick={{ fontSize: 11 }} allowDecimals={false} />\n <Tooltip />\n <Legend wrapperStyle={{ fontSize: 12 }} />\n <Line\n type=\"monotone\"\n dataKey=\"remaining\"\n name={t('planmagnet.dashboards.burndown.remaining', 'Remaining points')}\n stroke=\"#f59e0b\"\n strokeWidth={2}\n dot={{ r: 2 }}\n />\n <Line\n type=\"monotone\"\n dataKey=\"completed\"\n name={t('planmagnet.dashboards.burndown.completed', 'Completed points')}\n stroke=\"#22c55e\"\n strokeWidth={2}\n dot={{ r: 2 }}\n />\n </LineChart>\n </ResponsiveContainer>\n )}\n </CardContent>\n </Card>\n );\n}\n\nexport function SprintVelocityCard({\n workspaceId,\n projectId,\n trailingSprintCount = 6,\n}: {\n workspaceId?: string | null;\n projectId: string;\n trailingSprintCount?: number;\n}) {\n const { t } = useI18n();\n const { data, loading, error } = useQuery<VelocityData>(GET_VELOCITY, {\n variables: { workspaceId, projectId, trailingSprintCount },\n skip: !workspaceId || !projectId,\n });\n const velocity = data?.planmagnetVelocity;\n const chartData =\n velocity?.sprints.map((s) => ({\n name: s.sprintName,\n completed: s.completedPoints,\n planned: s.plannedPoints ?? undefined,\n })) ?? [];\n const avgVelocity = velocity ? Math.round(velocity.averageVelocity) : 0;\n const forecastNextSprint = velocity ? Math.round(velocity.forecastNextSprintPoints) : 0;\n const forecastRange = velocity?.forecastRange ?? null;\n const insufficientHistory = velocity?.insufficientHistory ?? false;\n\n return (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <TrendingUp className=\"h-4 w-4\" />\n {t('planmagnet.dashboards.velocity.title', 'Sprint velocity')}\n </CardTitle>\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'planmagnet.dashboards.velocity.subtitle',\n 'Completed story points per sprint, across the trailing {{count}} completed sprints.',\n { count: trailingSprintCount }\n )}\n </p>\n </CardHeader>\n <CardContent>\n {!projectId ? (\n <p className=\"text-sm text-muted-foreground\">\n {t('planmagnet.dashboards.velocity.noProject', 'Select a project to see its velocity.')}\n </p>\n ) : loading && !data ? (\n <p className=\"text-sm text-muted-foreground\">\n {t('planmagnet.dashboards.loading', 'Loading…')}\n </p>\n ) : error ? (\n <p className=\"text-sm text-status-error-text\">\n {t('planmagnet.dashboards.velocity.error', 'Velocity could not be loaded')}:{' '}\n {error.message}\n </p>\n ) : chartData.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">\n {t(\n 'planmagnet.dashboards.velocity.empty',\n 'No completed sprints yet for this project.'\n )}\n </p>\n ) : (\n <>\n <ResponsiveContainer width=\"100%\" height={190}>\n <BarChart data={chartData}>\n <CartesianGrid strokeDasharray=\"3 3\" opacity={0.2} />\n <XAxis dataKey=\"name\" tick={{ fontSize: 11 }} />\n <YAxis tick={{ fontSize: 11 }} allowDecimals={false} />\n <Tooltip />\n <Legend wrapperStyle={{ fontSize: 12 }} />\n {/* ANR-02: the empirical p15-p85 band around next sprint's forecast — full-width (no\n x1/x2) since it isn't tied to any historical sprint's x position. */}\n {forecastRange && (\n <ReferenceArea\n y1={forecastRange.p15}\n y2={forecastRange.p85}\n fill=\"var(--color-chart-2)\"\n fillOpacity={0.12}\n stroke=\"none\"\n />\n )}\n <Bar\n dataKey=\"planned\"\n name={t('planmagnet.dashboards.velocity.planned', 'Planned')}\n fill=\"#cbd5e1\"\n />\n <Bar\n dataKey=\"completed\"\n name={t('planmagnet.dashboards.velocity.completed', 'Completed')}\n fill=\"#6366f1\"\n />\n <ReferenceLine\n y={avgVelocity}\n stroke=\"#22c55e\"\n strokeDasharray=\"4 4\"\n label={{\n value: t('planmagnet.dashboards.velocity.avgLabel', 'avg'),\n fontSize: 10,\n }}\n />\n </BarChart>\n </ResponsiveContainer>\n {/* Accessible text restatement of the shaded band, for screen readers. */}\n <p className=\"mt-2 text-center text-xs text-muted-foreground\">\n {t(\n 'planmagnet.dashboards.velocity.trailingAverage',\n 'Median of the last {{count}} completed sprints: {{points}} pts per sprint',\n { count: chartData.length, points: forecastNextSprint }\n )}\n {forecastRange &&\n ` · ${t(\n 'planmagnet.dashboards.velocity.range',\n 'likely range (p15–p85): {{low}}–{{high}} pts',\n { low: Math.round(forecastRange.p15), high: Math.round(forecastRange.p85) }\n )}`}\n </p>\n {insufficientHistory && (\n <p className=\"mt-1 text-center text-xs text-status-warning-text\">\n {t(\n 'planmagnet.dashboards.velocity.insufficientHistory',\n 'Fewer than 3 sprints with completed points — this forecast is low-confidence.'\n )}\n </p>\n )}\n <p className=\"mt-1 text-center text-xs text-muted-foreground\">\n {t(\n 'planmagnet.dashboards.velocity.methodLabel',\n 'Statistical forecast (not AI-generated).'\n )}\n </p>\n </>\n )}\n </CardContent>\n </Card>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatusFlowCard.d.ts","sourceRoot":"","sources":["../../../../src/planmagnet/pages/analytics/StatusFlowCard.tsx"],"names":[],"mappings":"AAoLA,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,SAAS,EACT,SAAS,EACT,OAAO,GACR,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,6GAA6G;IAC7G,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,2CAuJA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatusFlowCard.js","names":[],"sources":["../../../../src/planmagnet/pages/analytics/StatusFlowCard.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Workflow } from 'lucide-react';\nimport { ResponsiveContainer, Sankey, Tooltip } from 'recharts';\nimport { WORK_ITEM_STATUSES, enumLabel } from '../../controls/WorkItemControls';\nimport { statusVisual } from '../../utils/statusColor';\nimport { isForbidden } from '../../utils/graphqlErrors';\n\n/**\n * ANR-24: status-flow Sankey (wspace-planmagnet-svc#65 `planmagnetStatusFlow`) — aggregated status-to-status\n * transition counts for one project, over a date window capped server-side at 366 days.\n *\n * recharts' Sankey lays its nodes out by depth, walked outward from every node with no incoming link\n * (`getNodesTree` in recharts' own source), with NO cycle guard — a real transition graph almost always has\n * cycles (e.g. IN_REVIEW -> IN_PROGRESS -> IN_REVIEW, a change request), which would recurse forever. The fix:\n * every status becomes TWO Sankey nodes, a \"from\" one and a \"to\" one, so every link only ever points from the\n * \"from\" column to the \"to\" column — a strict two-level DAG by construction, however tangled the underlying\n * status graph is. This is a display transform only; it does not change what the data means (every link is\n * still exactly one observed fromStatus -> toStatus edge, whichever status is on which side of the column).\n */\n\ntype WorkItemStatusValue = (typeof WORK_ITEM_STATUSES)[number];\n\nconst GET_STATUS_FLOW = gql`\n query GetAnalyticsStatusFlow(\n $workspaceId: ID!\n $projectId: ID!\n $from: DateTime!\n $to: DateTime!\n ) {\n planmagnetStatusFlow(workspaceId: $workspaceId, projectId: $projectId, from: $from, to: $to) {\n fromStatus\n toStatus\n count\n }\n }\n`;\n\ninterface StatusFlowEdge {\n fromStatus: WorkItemStatusValue;\n toStatus: WorkItemStatusValue;\n count: number;\n}\n\ninterface StatusFlowData {\n planmagnetStatusFlow: StatusFlowEdge[];\n}\n\ninterface FlowNodeDatum {\n name: string;\n status: WorkItemStatusValue;\n side: 'from' | 'to';\n}\n\ninterface FlowLinkDatum {\n source: number;\n target: number;\n value: number;\n}\n\ninterface FlowLinkPayload {\n source: FlowNodeDatum;\n target: FlowNodeDatum;\n value: number;\n}\n\n/** The server's own cap (see the field's doc comment in graphql/wspace.graphql) — the UI never sends a wider\n * window, and says so when the page's own range would have asked for one. */\nconst MAX_WINDOW_DAYS = 366;\nconst MAX_WINDOW_MS = MAX_WINDOW_DAYS * 86_400_000;\n\nfunction clampWindow(\n startDate: string,\n endDate: string\n): { from: string; to: string; clamped: boolean } {\n const startMs = Date.parse(startDate);\n const endMs = Date.parse(endDate);\n if (!Number.isFinite(startMs) || !Number.isFinite(endMs) || endMs - startMs <= MAX_WINDOW_MS) {\n return { from: startDate, to: endDate, clamped: false };\n }\n return { from: new Date(endMs - MAX_WINDOW_MS).toISOString(), to: endDate, clamped: true };\n}\n\n/** Every status that actually appears becomes a \"from\" node (left column) and/or a \"to\" node (right column), in\n * the app's canonical status order — never in whatever order the API happened to return edges. */\nfunction buildFlow(edges: StatusFlowEdge[]): { nodes: FlowNodeDatum[]; links: FlowLinkDatum[] } {\n const fromStatuses = WORK_ITEM_STATUSES.filter((s) => edges.some((e) => e.fromStatus === s));\n const toStatuses = WORK_ITEM_STATUSES.filter((s) => edges.some((e) => e.toStatus === s));\n const fromIndex = new Map(fromStatuses.map((s, i) => [s, i]));\n const toIndex = new Map(toStatuses.map((s, i) => [s, fromStatuses.length + i]));\n\n const nodes: FlowNodeDatum[] = [\n ...fromStatuses.map((s) => ({ name: enumLabel(s), status: s, side: 'from' as const })),\n ...toStatuses.map((s) => ({ name: enumLabel(s), status: s, side: 'to' as const })),\n ];\n\n const links: FlowLinkDatum[] = edges.flatMap((e) => {\n const source = fromIndex.get(e.fromStatus);\n const target = toIndex.get(e.toStatus);\n // Every edge's statuses come straight from fromStatuses/toStatuses above, so this can never actually miss —\n // the check just keeps the result type honest without a non-null assertion.\n return source === undefined || target === undefined ? [] : [{ source, target, value: e.count }];\n });\n\n return { nodes, links };\n}\n\ninterface FlowNodeProps {\n x: number;\n y: number;\n width: number;\n height: number;\n payload: FlowNodeDatum;\n}\n\nfunction FlowNode({ x, y, width, height, payload }: FlowNodeProps) {\n const visual = statusVisual(payload.status);\n const isFrom = payload.side === 'from';\n return (\n <g>\n <rect\n x={x}\n y={y}\n width={width}\n height={height}\n rx={2}\n style={{ fill: visual.color, stroke: visual.color }}\n strokeWidth={1}\n />\n <text\n x={isFrom ? x - 6 : x + width + 6}\n y={y + height / 2}\n dy=\"0.32em\"\n textAnchor={isFrom ? 'end' : 'start'}\n className=\"fill-foreground text-[11px]\"\n >\n {payload.name}\n </text>\n </g>\n );\n}\n\ninterface FlowLinkProps {\n sourceX: number;\n sourceY: number;\n targetX: number;\n targetY: number;\n sourceControlX: number;\n targetControlX: number;\n linkWidth: number;\n payload: FlowLinkPayload;\n}\n\nfunction FlowLink({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n targetControlX,\n linkWidth,\n payload,\n}: FlowLinkProps) {\n // Colored by the transition's origin status — the same fixed status->color mapping every other visualization\n // in this app (Gantt, dependency graph) uses, read via statusVisual rather than a second color table.\n const visual = statusVisual(payload.source.status);\n return (\n <path\n d={`M${sourceX},${sourceY} C${sourceControlX},${sourceY} ${targetControlX},${targetY} ${targetX},${targetY}`}\n style={{ stroke: visual.color }}\n strokeWidth={Math.max(linkWidth, 1)}\n strokeOpacity={0.45}\n fill=\"none\"\n />\n );\n}\n\nexport function StatusFlowCard({\n workspaceId,\n projectId,\n startDate,\n endDate,\n}: {\n workspaceId?: string | null;\n /** Status flow is always one project (`projectId: ID!` on the server) — same convention as CycleTimeCard. */\n projectId: string;\n startDate: string;\n endDate: string;\n}) {\n const { t } = useI18n();\n const clamp = useMemo(() => clampWindow(startDate, endDate), [startDate, endDate]);\n const { data, loading, error } = useQuery<StatusFlowData>(GET_STATUS_FLOW, {\n variables: { workspaceId, projectId, from: clamp.from, to: clamp.to },\n skip: !workspaceId || !projectId,\n });\n // Recomputed straight from `data` on every render rather than behind its own useMemo: at most a handful of\n // statuses and edges, and `?? []` below would hand memoization a fresh array identity every render anyway —\n // same call this page's own project/sprint default-picking makes for a similarly small list.\n const edges = data?.planmagnetStatusFlow ?? [];\n const { nodes, links } = buildFlow(edges);\n const sortedEdges = [...edges].sort((a, b) => b.count - a.count);\n\n return (\n <Card data-testid=\"status-flow-card\">\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Workflow className=\"h-4 w-4\" />\n {t('planmagnet.analytics.statusFlow.title', 'Status flow')}\n </CardTitle>\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'planmagnet.analytics.statusFlow.subtitle',\n 'How work items moved between statuses in the selected range.'\n )}\n </p>\n {clamp.clamped && (\n <p className=\"text-xs text-status-warning-text\">\n {t(\n 'planmagnet.analytics.statusFlow.clamped',\n 'Status flow is capped at a {{days}}-day window — showing the most recent {{days}} days of the selected range (from {{from}}).',\n { days: MAX_WINDOW_DAYS, from: clamp.from.slice(0, 10) }\n )}\n </p>\n )}\n </CardHeader>\n <CardContent>\n {!projectId ? (\n <p className=\"text-sm text-muted-foreground\">\n {t(\n 'planmagnet.analytics.statusFlow.noProject',\n 'Select a project to see its status flow.'\n )}\n </p>\n ) : loading && !data ? (\n <div className=\"flex justify-center py-12\">\n <div className=\"animate-spin h-6 w-6 border-2 border-primary border-t-transparent rounded-full\" />\n </div>\n ) : error ? (\n <p className=\"text-sm text-status-error-text\">\n {isForbidden(error)\n ? t(\n 'planmagnet.analytics.statusFlow.forbidden',\n 'You do not have access to status flow for this project.'\n )\n : `${t('planmagnet.analytics.statusFlow.error', 'Status flow could not be loaded')}: ${error.message}`}\n </p>\n ) : edges.length === 0 ? (\n <p className=\"text-sm text-muted-foreground py-8 text-center\">\n {t(\n 'planmagnet.analytics.statusFlow.empty',\n 'No status changes recorded for this project in the selected range.'\n )}\n </p>\n ) : (\n <div className=\"space-y-4\">\n <div data-testid=\"viz-status-flow\">\n <ResponsiveContainer width=\"100%\" height={Math.max(260, nodes.length * 24)}>\n <Sankey\n data={{ nodes, links }}\n node={FlowNode}\n link={FlowLink}\n nodeWidth={10}\n nodePadding={16}\n linkCurvature={0.5}\n margin={{ top: 8, right: 90, bottom: 8, left: 90 }}\n >\n <Tooltip\n content={({ active, payload }) => {\n if (!active || !payload || payload.length === 0) return null;\n // recharts types a Sankey tooltip payload's inner `.payload` as `any` — it nests our own\n // node/link datum one level below recharts' own node/link render-props wrapper. Narrowed\n // here, once, rather than threading `any` through the render below.\n const el = payload[0]?.payload as\n | { payload?: FlowNodeDatum | FlowLinkPayload }\n | undefined;\n const inner = el?.payload;\n if (!inner) return null;\n if ('source' in inner) {\n return (\n <div className=\"rounded-md border border-border bg-popover px-2.5 py-1.5 text-xs shadow-md\">\n <p className=\"font-medium text-popover-foreground\">\n {inner.source.name} → {inner.target.name}\n </p>\n <p className=\"text-muted-foreground\">\n {t(\n 'planmagnet.analytics.statusFlow.tooltipCount',\n '{{count}} item(s)',\n {\n count: inner.value,\n }\n )}\n </p>\n </div>\n );\n }\n return (\n <div className=\"rounded-md border border-border bg-popover px-2.5 py-1.5 text-xs shadow-md\">\n <p className=\"font-medium text-popover-foreground\">{inner.name}</p>\n </div>\n );\n }}\n />\n </Sankey>\n </ResponsiveContainer>\n </div>\n\n {/* Accessible table alternative — every edge the Sankey draws, in the same data. */}\n <table className=\"w-full text-sm\" data-testid=\"viz-status-flow-table\">\n <caption className=\"mb-2 text-left text-xs text-muted-foreground\">\n {t('planmagnet.analytics.statusFlow.tableCaption', 'Status transitions')}\n </caption>\n <thead>\n <tr className=\"text-left text-xs text-muted-foreground\">\n <th className=\"py-1 pr-2 font-normal\">\n {t('planmagnet.analytics.statusFlow.from', 'From')}\n </th>\n <th className=\"py-1 pr-2 font-normal\">\n {t('planmagnet.analytics.statusFlow.to', 'To')}\n </th>\n <th className=\"py-1 text-right font-normal\">\n {t('planmagnet.analytics.statusFlow.count', 'Count')}\n </th>\n </tr>\n </thead>\n <tbody>\n {sortedEdges.map((e) => (\n <tr key={`${e.fromStatus}-${e.toStatus}`} className=\"border-t\">\n <td className=\"py-1.5 pr-2\">{enumLabel(e.fromStatus)}</td>\n <td className=\"py-1.5 pr-2\">{enumLabel(e.toStatus)}</td>\n <td className=\"py-1.5 text-right tabular-nums\">{e.count}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </CardContent>\n </Card>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThroughputCard.d.ts","sourceRoot":"","sources":["../../../../src/planmagnet/pages/analytics/ThroughputCard.tsx"],"names":[],"mappings":"AA6DA,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,SAAS,EACT,SAAS,EACT,OAAO,GACR,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,2CAiHA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThroughputCard.js","names":[],"sources":["../../../../src/planmagnet/pages/analytics/ThroughputCard.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { BarChart3 } from 'lucide-react';\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from 'recharts';\n\n/**\n * ANR-09: throughput on the Analytics page, with a day/week group-by — the group-by control the page's other\n * data doesn't otherwise support (a bucketed series is the one shape here that has more than one valid grouping).\n * `planmagnetThroughput` already existed for Reports (BOFF-8048); this reads the SAME field with the page's\n * shared date range instead of Reports' fixed trailing-12-weeks default.\n */\n\nconst GET_THROUGHPUT = gql`\n query GetAnalyticsThroughput(\n $workspaceId: ID!\n $projectId: ID!\n $bucket: PlanmagnetThroughputBucket\n $startDate: DateTime\n $endDate: DateTime\n ) {\n planmagnetThroughput(\n workspaceId: $workspaceId\n projectId: $projectId\n bucket: $bucket\n startDate: $startDate\n endDate: $endDate\n ) {\n bucket\n points {\n periodStart\n completedCount\n completedPoints\n }\n }\n }\n`;\n\ninterface ThroughputData {\n planmagnetThroughput: {\n bucket: 'DAY' | 'WEEK';\n points: Array<{ periodStart: string; completedCount: number; completedPoints: number }>;\n };\n}\n\nfunction formatPeriod(iso: string): string {\n const d = new Date(iso);\n return `${d.getUTCMonth() + 1}/${d.getUTCDate()}`;\n}\n\nexport function ThroughputCard({\n workspaceId,\n projectId,\n startDate,\n endDate,\n}: {\n workspaceId?: string | null;\n projectId: string;\n startDate: string;\n endDate: string;\n}) {\n const { t } = useI18n();\n const [bucket, setBucket] = useState<'DAY' | 'WEEK'>('WEEK');\n const { data, loading, error } = useQuery<ThroughputData>(GET_THROUGHPUT, {\n variables: { workspaceId, projectId, bucket, startDate, endDate },\n skip: !workspaceId || !projectId,\n });\n\n const points = data?.planmagnetThroughput.points ?? [];\n const chartData = points.map((p) => ({\n period: formatPeriod(p.periodStart),\n count: p.completedCount,\n points: p.completedPoints,\n }));\n const totalItems = points.reduce((sum, p) => sum + p.completedCount, 0);\n const totalPoints = points.reduce((sum, p) => sum + p.completedPoints, 0);\n\n return (\n <Card data-testid=\"analytics-throughput\">\n <CardHeader>\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <CardTitle className=\"flex items-center gap-2\">\n <BarChart3 className=\"h-4 w-4\" />\n {t('planmagnet.analytics.throughput.title', 'Throughput')}\n </CardTitle>\n <div\n className=\"flex items-center gap-1 rounded-md border p-0.5\"\n role=\"group\"\n aria-label={t('planmagnet.analytics.throughput.bucketLabel', 'Group by')}\n data-testid=\"analytics-throughput-bucket\"\n >\n {(['DAY', 'WEEK'] as const).map((b) => (\n <button\n key={b}\n type=\"button\"\n aria-pressed={bucket === b}\n onClick={() => setBucket(b)}\n className={`px-2 py-1 text-xs rounded ${\n bucket === b\n ? 'bg-primary text-primary-foreground'\n : 'text-muted-foreground hover:bg-muted'\n }`}\n >\n {b === 'DAY'\n ? t('planmagnet.analytics.throughput.day', 'Day')\n : t('planmagnet.analytics.throughput.week', 'Week')}\n </button>\n ))}\n </div>\n </div>\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'planmagnet.analytics.throughput.subtitle',\n 'Work items completed per {{bucket}}, in the selected range.',\n {\n bucket:\n bucket === 'DAY'\n ? t('planmagnet.analytics.throughput.day', 'Day').toLowerCase()\n : t('planmagnet.analytics.throughput.week', 'Week').toLowerCase(),\n }\n )}\n </p>\n </CardHeader>\n <CardContent>\n {loading && !data ? (\n <div className=\"flex justify-center py-12\">\n <div className=\"animate-spin h-6 w-6 border-2 border-primary border-t-transparent rounded-full\" />\n </div>\n ) : error ? (\n <p className=\"text-sm text-muted-foreground py-8 text-center\">\n {t(\n 'planmagnet.analytics.throughput.unavailable',\n 'Throughput is not available for this project.'\n )}\n </p>\n ) : chartData.length > 0 ? (\n <>\n {/* Accessible text restatement of the chart. */}\n <p className=\"text-xs text-muted-foreground mb-2\">\n {t(\n 'planmagnet.analytics.throughput.summary',\n '{{items}} item(s), {{points}} point(s) completed across {{periods}} period(s).',\n { items: totalItems, points: totalPoints, periods: chartData.length }\n )}\n </p>\n <ResponsiveContainer width=\"100%\" height={200}>\n <BarChart data={chartData}>\n <CartesianGrid strokeDasharray=\"3 3\" opacity={0.2} />\n <XAxis dataKey=\"period\" tick={{ fontSize: 11 }} />\n <YAxis tick={{ fontSize: 11 }} allowDecimals={false} />\n <Tooltip />\n <Legend wrapperStyle={{ fontSize: 12 }} />\n <Bar\n dataKey=\"count\"\n name={t('planmagnet.analytics.throughput.items', 'Items done')}\n fill=\"var(--color-chart-1)\"\n />\n <Bar\n dataKey=\"points\"\n name={t('planmagnet.analytics.throughput.points', 'Points done')}\n fill=\"var(--color-chart-3)\"\n />\n </BarChart>\n </ResponsiveContainer>\n </>\n ) : (\n <p className=\"text-sm text-muted-foreground py-8 text-center\">\n {t('planmagnet.analytics.throughput.empty', 'No work completed in this range.')}\n </p>\n )}\n </CardContent>\n </Card>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAwBA,IAAM,IAAiB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;AAgC1B,SAAS,EAAa,GAAqB;CACzC,IAAM,IAAI,IAAI,KAAK,EAAI;AACvB,QAAO,GAAG,EAAE,aAAa,GAAG,EAAE,GAAG,EAAE,YAAY;;AAGjD,SAAgB,EAAe,EAC7B,gBACA,cACA,cACA,cAMC;CACD,IAAM,EAAE,SAAM,GAAS,EACjB,CAAC,GAAQ,KAAa,EAAyB,OAAO,EACtD,EAAE,SAAM,YAAS,aAAU,EAAyB,GAAgB;EACxE,WAAW;GAAE;GAAa;GAAW;GAAQ;GAAW;GAAS;EACjE,MAAM,CAAC,KAAe,CAAC;EACxB,CAAC,EAEI,IAAS,GAAM,qBAAqB,UAAU,EAAE,EAChD,IAAY,EAAO,KAAK,OAAO;EACnC,QAAQ,EAAa,EAAE,YAAY;EACnC,OAAO,EAAE;EACT,QAAQ,EAAE;EACX,EAAE,EACG,IAAa,EAAO,QAAQ,GAAK,MAAM,IAAM,EAAE,gBAAgB,EAAE,EACjE,IAAc,EAAO,QAAQ,GAAK,MAAM,IAAM,EAAE,iBAAiB,EAAE;AAEzE,QACE,kBAAC,GAAD;EAAM,eAAY;YAAlB,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,GAAD;IAAW,WAAU;cAArB,CACE,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA,EAChC,EAAE,yCAAyC,aAAa,CAC/C;OACZ,kBAAC,OAAD;IACE,WAAU;IACV,MAAK;IACL,cAAY,EAAE,+CAA+C,WAAW;IACxE,eAAY;cAEV,CAAC,OAAO,OAAO,CAAW,KAAK,MAC/B,kBAAC,UAAD;KAEE,MAAK;KACL,gBAAc,MAAW;KACzB,eAAe,EAAU,EAAE;KAC3B,WAAW,6BACT,MAAW,IACP,uCACA;eAGL,MAAM,QACH,EAAE,uCAAuC,MAAM,GAC/C,EAAE,wCAAwC,OAAO;KAC9C,EAbF,EAaE,CACT;IACE,CAAA,CACF;MACN,kBAAC,KAAD;GAAG,WAAU;aACV,EACC,4CACA,+DACA,EACE,QACE,MAAW,QACP,EAAE,uCAAuC,MAAM,CAAC,aAAa,GAC7D,EAAE,wCAAwC,OAAO,CAAC,aAAa,EACtE,CACF;GACC,CAAA,CACO,EAAA,CAAA,EACb,kBAAC,GAAD,EAAA,UACG,KAAW,CAAC,IACX,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,OAAD,EAAK,WAAU,kFAAmF,CAAA;GAC9F,CAAA,GACJ,IACF,kBAAC,KAAD;GAAG,WAAU;aACV,EACC,+CACA,gDACD;GACC,CAAA,GACF,EAAU,SAAS,IACrB,kBAAA,GAAA,EAAA,UAAA,CAEE,kBAAC,KAAD;GAAG,WAAU;aACV,EACC,2CACA,kFACA;IAAE,OAAO;IAAY,QAAQ;IAAa,SAAS,EAAU;IAAQ,CACtE;GACC,CAAA,EACJ,kBAAC,GAAD;GAAqB,OAAM;GAAO,QAAQ;aACxC,kBAAC,GAAD;IAAU,MAAM;cAAhB;KACE,kBAAC,GAAD;MAAe,iBAAgB;MAAM,SAAS;MAAO,CAAA;KACrD,kBAAC,GAAD;MAAO,SAAQ;MAAS,MAAM,EAAE,UAAU,IAAI;MAAI,CAAA;KAClD,kBAAC,GAAD;MAAO,MAAM,EAAE,UAAU,IAAI;MAAE,eAAe;MAAS,CAAA;KACvD,kBAAC,GAAD,EAAW,CAAA;KACX,kBAAC,GAAD,EAAQ,cAAc,EAAE,UAAU,IAAI,EAAI,CAAA;KAC1C,kBAAC,GAAD;MACE,SAAQ;MACR,MAAM,EAAE,yCAAyC,aAAa;MAC9D,MAAK;MACL,CAAA;KACF,kBAAC,GAAD;MACE,SAAQ;MACR,MAAM,EAAE,0CAA0C,cAAc;MAChE,MAAK;MACL,CAAA;KACO;;GACS,CAAA,CACrB,EAAA,CAAA,GAEH,kBAAC,KAAD;GAAG,WAAU;aACV,EAAE,yCAAyC,mCAAmC;GAC7E,CAAA,EAEM,CAAA,CACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WorkBreakdownCard.d.ts","sourceRoot":"","sources":["../../../../src/planmagnet/pages/analytics/WorkBreakdownCard.tsx"],"names":[],"mappings":"AAoVA,wBAAgB,iBAAiB,CAAC,EAChC,WAAW,EACX,SAAS,GACV,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wGAAwG;IACxG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAwNA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WorkBreakdownCard.js","names":[],"sources":["../../../../src/planmagnet/pages/analytics/WorkBreakdownCard.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { LayoutGrid } from 'lucide-react';\nimport { ResponsiveContainer, Tooltip, Treemap } from 'recharts';\nimport { usePlanMagnetNavigate } from '../../providers/PlanMagnetProvider';\nimport { rowLinkProps } from '../../utils/rowNavigation';\nimport { isForbidden } from '../../utils/graphqlErrors';\nimport { truncate } from '../../dependency/DependencyGraph';\n\n/**\n * ANR-24: work breakdown Treemap (wspace-planmagnet-svc#65 `planmagnetWorkBreakdown`) — live (not date-ranged;\n * see the field's own doc comment) open/done counts grouped project -> epic, with a \"No epic\" bucket per\n * project for items an epic rollup doesn't reach (see PlanmagnetNoEpicWorkBreakdown's doc comment: direct\n * children only, same as PlanmagnetEpicWorkBreakdown — a sub-task nested two levels under an epic falls here\n * too, not under its grandparent epic).\n *\n * recharts' Treemap computes a node's own size as the SUM of its children's sizes when `node.children` is set\n * (see `computeNode` in recharts' source) — so each project's own cell size, and its done-ratio color, both\n * come from summing this card's own visualized epic + \"No epic\" leaves, not from the server's separate\n * project-level totals (which include every live item in the project, not only the ones a leaf here\n * represents — see PlanmagnetProjectWorkBreakdown's doc comment). What the treemap draws and what the table\n * below it lists are therefore always the same numbers.\n */\n\ntype BreakdownMetric = 'items' | 'points';\n\nconst GET_WORK_BREAKDOWN = gql`\n query GetAnalyticsWorkBreakdown($workspaceId: ID!, $projectIds: [ID!]) {\n planmagnetWorkBreakdown(workspaceId: $workspaceId, projectIds: $projectIds) {\n truncatedProjects\n projects {\n projectId\n projectName\n truncatedEpics\n epics {\n epicId\n epicTitle\n openCount\n doneCount\n openPoints\n donePoints\n }\n noEpic {\n openCount\n doneCount\n openPoints\n donePoints\n }\n }\n }\n }\n`;\n\ninterface EpicBreakdown {\n epicId: string;\n epicTitle: string;\n openCount: number;\n doneCount: number;\n openPoints: number;\n donePoints: number;\n}\n\ninterface NoEpicBreakdown {\n openCount: number;\n doneCount: number;\n openPoints: number;\n donePoints: number;\n}\n\ninterface ProjectBreakdown {\n projectId: string;\n projectName: string;\n truncatedEpics: boolean;\n epics: EpicBreakdown[];\n noEpic: NoEpicBreakdown;\n}\n\ninterface WorkBreakdownData {\n planmagnetWorkBreakdown: {\n truncatedProjects: boolean;\n projects: ProjectBreakdown[];\n };\n}\n\ninterface CountsLike {\n openCount: number;\n doneCount: number;\n openPoints: number;\n donePoints: number;\n}\n\nfunction metricTotals(c: CountsLike, metric: BreakdownMetric): { size: number; done: number } {\n return metric === 'items'\n ? { size: c.openCount + c.doneCount, done: c.doneCount }\n : { size: c.openPoints + c.donePoints, done: c.donePoints };\n}\n\nfunction doneRatioOf(c: CountsLike, metric: BreakdownMetric): number | null {\n const { size, done } = metricTotals(c, metric);\n return size > 0 ? done / size : null;\n}\n\ninterface BreakdownLeafDatum extends CountsLike {\n name: string;\n size: number;\n doneRatio: number | null;\n /** null = not an individually openable work item (the project-group frame, or the \"No epic\" bucket). */\n epicId: string | null;\n isNoEpic: boolean;\n isHeader: boolean;\n projectId: string;\n projectName: string;\n}\n\ninterface BreakdownGroupDatum {\n name: string;\n projectId: string;\n children: BreakdownLeafDatum[];\n}\n\n/** A label cell reserves this share of each project's own area (never less than HEADER_MIN_SIZE). Small relative\n * to its real epic siblings so it barely affects the epics' own visual weight, but consistently sized so every\n * project's header reads the same size. */\nconst HEADER_FRACTION = 0.14;\nconst HEADER_MIN_SIZE = 1;\n\nfunction buildBreakdownGroups(\n projects: ProjectBreakdown[],\n metric: BreakdownMetric,\n noEpicLabel: string\n): BreakdownGroupDatum[] {\n const groups: BreakdownGroupDatum[] = [];\n\n for (const project of projects) {\n const epicLeaves: BreakdownLeafDatum[] = project.epics\n .map((epic) => ({\n name: epic.epicTitle,\n size: metricTotals(epic, metric).size,\n doneRatio: doneRatioOf(epic, metric),\n epicId: epic.epicId,\n isNoEpic: false,\n isHeader: false,\n projectId: project.projectId,\n projectName: project.projectName,\n openCount: epic.openCount,\n doneCount: epic.doneCount,\n openPoints: epic.openPoints,\n donePoints: epic.donePoints,\n }))\n .filter((leaf) => leaf.size > 0);\n\n const noEpicSize = metricTotals(project.noEpic, metric).size;\n if (noEpicSize > 0) {\n epicLeaves.push({\n name: noEpicLabel,\n size: noEpicSize,\n doneRatio: doneRatioOf(project.noEpic, metric),\n epicId: null,\n isNoEpic: true,\n isHeader: false,\n projectId: project.projectId,\n projectName: project.projectName,\n openCount: project.noEpic.openCount,\n doneCount: project.noEpic.doneCount,\n openPoints: project.noEpic.openPoints,\n donePoints: project.noEpic.donePoints,\n });\n }\n\n const totalSize = epicLeaves.reduce((sum, leaf) => sum + leaf.size, 0);\n if (totalSize <= 0) continue;\n\n // A small leading child in a list of much-larger siblings reliably becomes its own single-item row under\n // squarify's row-packing (recharts' Treemap layout): adding the next, much bigger sibling to that same row\n // would immediately worsen the row's aspect ratio, so squarify closes the row after just this one item —\n // which a single-item row always stretches to the full width (or height) of its parent rect. That makes\n // this synthetic \"header\" leaf a reliable label strip across the top (or side) of each project's own area,\n // without needing a second, hand-rolled layout pass. See WorkBreakdownCell's `isHeader` branch for the\n // render side of this.\n const headerLeaf: BreakdownLeafDatum = {\n name: project.projectName,\n size: Math.max(Math.round(totalSize * HEADER_FRACTION), HEADER_MIN_SIZE),\n doneRatio: null,\n epicId: null,\n isNoEpic: false,\n isHeader: true,\n projectId: project.projectId,\n projectName: project.projectName,\n openCount: 0,\n doneCount: 0,\n openPoints: 0,\n donePoints: 0,\n };\n\n groups.push({\n name: project.projectName,\n projectId: project.projectId,\n children: [headerLeaf, ...epicLeaves],\n });\n }\n\n return groups;\n}\n\nfunction ratioToFillOpacity(doneRatio: number | null): number {\n // Sequential, single-hue encoding on DONE's own chart color (the same hue statusVisual.ts assigns to the DONE\n // status everywhere else in this app): lighter = mostly open, darker = mostly done. Never fully transparent,\n // so a 0%-done cell still reads as a populated cell rather than empty space — and the exact ratio is always\n // available in the tooltip and the table below, so this fill is a supplementary channel, never the only way\n // to read it.\n if (doneRatio === null) return 0.12;\n return 0.18 + doneRatio * 0.72;\n}\n\ninterface WorkBreakdownCellProps {\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n depth?: number;\n name?: string;\n isHeader?: boolean;\n isNoEpic?: boolean;\n epicId?: string | null;\n doneRatio?: number | null;\n onOpenEpic: (epicId: string) => void;\n noEpicLabel: string;\n}\n\nfunction WorkBreakdownCell(props: WorkBreakdownCellProps) {\n const {\n x = 0,\n y = 0,\n width = 0,\n height = 0,\n depth = 0,\n name = '',\n isHeader = false,\n isNoEpic = false,\n epicId = null,\n doneRatio = null,\n onOpenEpic,\n noEpicLabel,\n } = props;\n\n if (width <= 0 || height <= 0) return null;\n\n if (depth === 0) {\n // recharts wraps the ENTIRE `data` array (every project combined) in one synthetic root at depth 0\n // (see `computeNode` / `getDerivedStateFromProps` in recharts' own Treemap source) — this fires exactly\n // once for the whole chart area, never once per project. It has no boundary of its own to draw (a rect\n // here would be one border around every project combined, not a per-project frame), so render nothing.\n return null;\n }\n\n if (depth === 1) {\n // The real per-project frame: recharts assigns depth 1 to each top-level entry of `data` — i.e. one\n // `BreakdownGroupDatum` per project — so this branch fires once per project, at that project's own\n // bounds. Drawn first (recharts renders a non-leaf node's own content, then its children, in that\n // order), so the header + epic leaves at depth 2 paint on top of it within the same bounds.\n // Never filled: fill is reserved for done-ratio below, so the frame reads purely as a boundary.\n return (\n <rect\n x={x}\n y={y}\n width={width}\n height={height}\n rx={4}\n className=\"fill-none stroke-border\"\n strokeWidth={1}\n />\n );\n }\n\n const label = isNoEpic ? noEpicLabel : name;\n const showLabel = width > 28 && height > 14;\n const fitChars = Math.max(1, Math.floor((width - 8) / 6));\n const displayLabel = truncate(label, fitChars);\n\n if (isHeader) {\n return (\n <g>\n <rect x={x} y={y} width={width} height={height} className=\"fill-muted\" />\n {showLabel && (\n <text\n x={x + 4}\n y={y + height / 2}\n dy=\"0.32em\"\n className=\"fill-foreground text-[11px] font-medium\"\n >\n {displayLabel}\n </text>\n )}\n </g>\n );\n }\n\n const cellRect = (\n <rect\n x={x}\n y={y}\n width={width}\n height={height}\n className=\"stroke-background\"\n style={{ fill: 'var(--color-chart-2)', fillOpacity: ratioToFillOpacity(doneRatio) }}\n strokeWidth={2}\n />\n );\n const cellLabel = showLabel && (\n <text x={x + 4} y={y + height / 2} dy=\"0.32em\" className=\"fill-foreground text-[11px]\">\n {displayLabel}\n </text>\n );\n\n if (!epicId) {\n // \"No epic\" bucket — an aggregate of several work items, not one item, so there is nothing to navigate to.\n return (\n <g>\n {cellRect}\n {cellLabel}\n </g>\n );\n }\n\n const accessibleLabel = `${name} — ${Math.round((doneRatio ?? 0) * 100)}% done`;\n return (\n <g\n {...rowLinkProps<SVGGElement>(() => onOpenEpic(epicId), 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 {cellRect}\n {cellLabel}\n </g>\n );\n}\n\nexport function WorkBreakdownCard({\n workspaceId,\n projectId,\n}: {\n workspaceId?: string | null;\n /** ANR-09 project scope. Omitted/undefined = every project (up to 50 — see truncatedProjects below). */\n projectId?: string;\n}) {\n const { t } = useI18n();\n const navigate = usePlanMagnetNavigate();\n const [metric, setMetric] = useState<BreakdownMetric>('items');\n const { data, loading, error } = useQuery<WorkBreakdownData>(GET_WORK_BREAKDOWN, {\n variables: { workspaceId, projectIds: projectId ? [projectId] : undefined },\n skip: !workspaceId,\n });\n\n const noEpicLabel = t('planmagnet.analytics.workBreakdown.noEpic', 'No epic');\n const breakdown = data?.planmagnetWorkBreakdown;\n const projects = breakdown?.projects ?? [];\n const groups = buildBreakdownGroups(projects, metric, noEpicLabel);\n const truncatedProjectNames = projects.filter((p) => p.truncatedEpics).map((p) => p.projectName);\n\n function openEpic(epicId: string) {\n navigate(`/tasks/task-detail-page?taskId=${encodeURIComponent(epicId)}`);\n }\n\n return (\n <Card data-testid=\"work-breakdown-card\">\n <CardHeader>\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <CardTitle className=\"flex items-center gap-2\">\n <LayoutGrid className=\"h-4 w-4\" />\n {t('planmagnet.analytics.workBreakdown.title', 'Work breakdown')}\n </CardTitle>\n <div\n className=\"flex items-center gap-1 rounded-md border p-0.5\"\n role=\"group\"\n aria-label={t('planmagnet.analytics.workBreakdown.metricLabel', 'Size by')}\n data-testid=\"viz-breakdown-metric\"\n >\n {(['items', 'points'] as const).map((m) => (\n <button\n key={m}\n type=\"button\"\n aria-pressed={metric === m}\n onClick={() => setMetric(m)}\n className={`px-2 py-1 text-xs rounded ${\n metric === m\n ? 'bg-primary text-primary-foreground'\n : 'text-muted-foreground hover:bg-muted'\n }`}\n >\n {m === 'items'\n ? t('planmagnet.analytics.workBreakdown.items', 'Items')\n : t('planmagnet.analytics.workBreakdown.points', 'Story points')}\n </button>\n ))}\n </div>\n </div>\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'planmagnet.analytics.workBreakdown.subtitle',\n 'Live open/done work, by project and epic — current state, not limited by the date range above.'\n )}\n </p>\n </CardHeader>\n <CardContent>\n {loading && !data ? (\n <div className=\"flex justify-center py-12\">\n <div className=\"animate-spin h-6 w-6 border-2 border-primary border-t-transparent rounded-full\" />\n </div>\n ) : error ? (\n <p className=\"text-sm text-status-error-text\">\n {isForbidden(error)\n ? t(\n 'planmagnet.analytics.workBreakdown.forbidden',\n 'You do not have access to the work breakdown for this scope.'\n )\n : `${t('planmagnet.analytics.workBreakdown.error', 'Work breakdown could not be loaded')}: ${error.message}`}\n </p>\n ) : groups.length === 0 ? (\n <p className=\"text-sm text-muted-foreground py-8 text-center\">\n {t(\n 'planmagnet.analytics.workBreakdown.empty',\n 'No live work items found for this scope.'\n )}\n </p>\n ) : (\n <div className=\"space-y-3\">\n {breakdown?.truncatedProjects && (\n <p className=\"text-xs text-status-warning-text\">\n {t(\n 'planmagnet.analytics.workBreakdown.truncatedProjects',\n 'Showing the first 50 projects with live work. Narrow by project above to see a specific one.'\n )}\n </p>\n )}\n {truncatedProjectNames.length > 0 && (\n <p className=\"text-xs text-status-warning-text\">\n {t(\n 'planmagnet.analytics.workBreakdown.truncatedEpics',\n 'Showing at most 200 epics for: {{projects}}.',\n { projects: truncatedProjectNames.join(', ') }\n )}\n </p>\n )}\n\n <div data-testid=\"viz-work-breakdown\">\n <ResponsiveContainer width=\"100%\" height={360}>\n <Treemap\n data={groups}\n dataKey=\"size\"\n type=\"flat\"\n aspectRatio={4 / 3}\n content={<WorkBreakdownCell onOpenEpic={openEpic} noEpicLabel={noEpicLabel} />}\n >\n <Tooltip\n content={({ active, payload }) => {\n if (!active || !payload || payload.length === 0) return null;\n // Treemap hands back our own leaf datum directly as `payload.payload` (recharts types it\n // as `any`); narrowed here, once.\n const node = payload[0]?.payload as BreakdownLeafDatum | undefined;\n if (!node || node.isHeader) return null;\n const label = node.isNoEpic ? noEpicLabel : node.name;\n return (\n <div className=\"rounded-md border border-border bg-popover px-2.5 py-1.5 text-xs shadow-md\">\n <p className=\"font-medium text-popover-foreground\">{label}</p>\n {!node.isNoEpic && (\n <p className=\"text-muted-foreground\">{node.projectName}</p>\n )}\n <p className=\"mt-1\">\n {t('planmagnet.analytics.workBreakdown.tooltipOpen', 'Open')}:{' '}\n {node.openCount} ({node.openPoints}{' '}\n {t('planmagnet.analytics.workBreakdown.pts', 'pts')}) ·{' '}\n {t('planmagnet.analytics.workBreakdown.tooltipDone', 'Done')}:{' '}\n {node.doneCount} ({node.donePoints}{' '}\n {t('planmagnet.analytics.workBreakdown.pts', 'pts')})\n </p>\n <p>\n {t('planmagnet.analytics.workBreakdown.doneRatio', 'Done ratio')}:{' '}\n {node.doneRatio === null ? '—' : `${Math.round(node.doneRatio * 100)}%`}\n </p>\n </div>\n );\n }}\n />\n </Treemap>\n </ResponsiveContainer>\n </div>\n <p className=\"text-xs text-muted-foreground\">\n {t(\n 'planmagnet.analytics.workBreakdown.legend',\n 'Shade = share done (lighter → more open, darker → more done). Click an epic to open it.'\n )}\n </p>\n\n {/* Accessible table alternative — every group/epic the treemap draws, in the same data. */}\n <table className=\"w-full text-sm\" data-testid=\"viz-work-breakdown-table\">\n <caption className=\"mb-2 text-left text-xs text-muted-foreground\">\n {t(\n 'planmagnet.analytics.workBreakdown.tableCaption',\n 'Work breakdown by project and epic'\n )}\n </caption>\n <thead>\n <tr className=\"text-left text-xs text-muted-foreground\">\n <th className=\"py-1 pr-2 font-normal\">\n {t('planmagnet.analytics.workBreakdown.project', 'Project')}\n </th>\n <th className=\"py-1 pr-2 font-normal\">\n {t('planmagnet.analytics.workBreakdown.epic', 'Epic')}\n </th>\n <th className=\"py-1 text-right font-normal\">\n {t('planmagnet.analytics.workBreakdown.tooltipOpen', 'Open')}\n </th>\n <th className=\"py-1 text-right font-normal\">\n {t('planmagnet.analytics.workBreakdown.tooltipDone', 'Done')}\n </th>\n <th className=\"py-1 text-right font-normal\">\n {t('planmagnet.analytics.workBreakdown.doneRatio', 'Done ratio')}\n </th>\n </tr>\n </thead>\n <tbody>\n {groups.flatMap((g) =>\n g.children\n .filter((leaf) => !leaf.isHeader)\n .map((leaf) => {\n const epicId = leaf.epicId;\n const open = metric === 'items' ? leaf.openCount : leaf.openPoints;\n const done = metric === 'items' ? leaf.doneCount : leaf.donePoints;\n return (\n <tr key={`${g.projectId}-${epicId ?? 'no-epic'}`} className=\"border-t\">\n <td className=\"py-1.5 pr-2\">{g.name}</td>\n <td className=\"py-1.5 pr-2\">\n {epicId ? (\n <button\n type=\"button\"\n className=\"text-left text-primary hover:underline focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary\"\n onClick={() => openEpic(epicId)}\n >\n {leaf.name}\n </button>\n ) : (\n noEpicLabel\n )}\n </td>\n <td className=\"py-1.5 text-right tabular-nums\">{open}</td>\n <td className=\"py-1.5 text-right tabular-nums\">{done}</td>\n <td className=\"py-1.5 text-right tabular-nums\">\n {leaf.doneRatio === null ? '—' : `${Math.round(leaf.doneRatio * 100)}%`}\n </td>\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n )}\n </CardContent>\n </Card>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyticsRange.d.ts","sourceRoot":"","sources":["../../../../src/planmagnet/pages/analytics/analyticsRange.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5C,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAAsB,CAAC;AAEvE,MAAM,WAAW,SAAS;IACxB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;CACZ;AAID,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAEzC;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAI1D;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAI9D;AAED;oFACoF;AACpF,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAMrE;AAED,iGAAiG;AACjG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAKzF;AAED,eAAO,MAAM,aAAa,EAAE,SAA6B,CAAC;AAE1D;wGACwG;AACxG,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAInF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyticsRange.js","names":[],"sources":["../../../../src/planmagnet/pages/analytics/analyticsRange.ts"],"sourcesContent":["/**\n * Date-range + project-scope helpers for Analytics (ANR-09), the Dashboard tiles that\n * link into it, and My dashboard (ANR-08). Dates are plain \"YYYY-MM-DD\" strings in the\n * UI and the URL — the DateTime scalar wants a full ISO instant, so `toRangeVariables`\n * converts at the query boundary only, once, so every query sends the same UTC day\n * boundaries instead of each caller rolling its own.\n *\n * Kept framework-free (no React) so it is trivially unit-testable and importable from\n * any page without pulling in a component tree.\n */\n\nexport type RangePreset = '7' | '30' | '90';\nexport const RANGE_PRESETS: readonly RangePreset[] = ['7', '30', '90'];\n\nexport interface DateRange {\n /** YYYY-MM-DD, inclusive. */\n from: string;\n /** YYYY-MM-DD, inclusive. */\n to: string;\n}\n\nconst ISO_DATE = /^\\d{4}-\\d{2}-\\d{2}$/;\n\nexport function toIsoDate(d: Date): string {\n return d.toISOString().slice(0, 10);\n}\n\n/** The trailing N days up to and including today, both ends as plain UTC dates. */\nexport function presetRange(preset: RangePreset): DateRange {\n const to = new Date();\n const from = new Date(to.getTime() - (Number(preset) - 1) * 86_400_000);\n return { from: toIsoDate(from), to: toIsoDate(to) };\n}\n\n/** Well-formed dates with `from` on or before `to`. Never throws on garbage input. */\nexport function isValidRange(from: string, to: string): boolean {\n if (!ISO_DATE.test(from) || !ISO_DATE.test(to)) return false;\n // ISO \"YYYY-MM-DD\" strings compare lexicographically in the same order as chronologically.\n return from <= to;\n}\n\n/** Which preset (if any) a range currently matches — recomputed every call, never cached, so it can never drift\n * out of sync with a range that moved for some other reason (e.g. a URL paste). */\nexport function activePreset(range: DateRange): RangePreset | 'custom' {\n for (const p of RANGE_PRESETS) {\n const r = presetRange(p);\n if (r.from === range.from && r.to === range.to) return p;\n }\n return 'custom';\n}\n\n/** DateTime query variables for a range: UTC start-of-day .. end-of-day, inclusive both ends. */\nexport function toRangeVariables(range: DateRange): { startDate: string; endDate: string } {\n return {\n startDate: `${range.from}T00:00:00.000Z`,\n endDate: `${range.to}T23:59:59.999Z`,\n };\n}\n\nexport const DEFAULT_RANGE: DateRange = presetRange('30');\n\n/** Sentinel value for \"every project\" in a scope <select> — GraphQL project-scoped args are optional/omitted,\n * never an empty string, so this never leaks into a query variable itself (see `scopeToProjectId`). */\nexport const ALL_PROJECTS = 'all';\n\nexport function scopeToProjectId(scope: string): string | undefined {\n return scope && scope !== ALL_PROJECTS ? scope : undefined;\n}\n\n/**\n * The query string Analytics reads back (`?from=&to=&project=`), so a view stays linkable and a Dashboard tile\n * can deep-link into it pre-filtered (ANR-09). `projectId` omitted or falsy means \"every project\".\n */\nexport function analyticsSearch(range: DateRange, projectId?: string | null): string {\n const params = new URLSearchParams({ from: range.from, to: range.to });\n if (projectId) params.set('project', projectId);\n return `?${params.toString()}`;\n}\n"],"mappings":";AAYA,IAAa,IAAwC;CAAC;CAAK;CAAM;CAAK,EAShE,IAAW;AAEjB,SAAgB,EAAU,GAAiB;AACzC,QAAO,EAAE,aAAa,CAAC,MAAM,GAAG,GAAG;;AAIrC,SAAgB,EAAY,GAAgC;CAC1D,IAAM,oBAAK,IAAI,MAAM;AAErB,QAAO;EAAE,MAAM,kBADF,IAAI,KAAK,EAAG,SAAS,IAAI,OAAO,EAAO,GAAG,KAAK,MAAW,CACzC;EAAE,IAAI,EAAU,EAAG;EAAE;;AAIrD,SAAgB,EAAa,GAAc,GAAqB;AAG9D,QAFI,CAAC,EAAS,KAAK,EAAK,IAAI,CAAC,EAAS,KAAK,EAAG,GAAS,KAEhD,KAAQ;;AAKjB,SAAgB,EAAa,GAA0C;AACrE,MAAK,IAAM,KAAK,GAAe;EAC7B,IAAM,IAAI,EAAY,EAAE;AACxB,MAAI,EAAE,SAAS,EAAM,QAAQ,EAAE,OAAO,EAAM,GAAI,QAAO;;AAEzD,QAAO;;AAIT,SAAgB,EAAiB,GAA0D;AACzF,QAAO;EACL,WAAW,GAAG,EAAM,KAAK;EACzB,SAAS,GAAG,EAAM,GAAG;EACtB;;AAGqC,EAAY,KAAK;AAMzD,SAAgB,EAAiB,GAAmC;AAClE,QAAO,KAAS,MAAA,QAAyB,IAAQ,KAAA;;AAOnD,SAAgB,EAAgB,GAAkB,GAAmC;CACnF,IAAM,IAAS,IAAI,gBAAgB;EAAE,MAAM,EAAM;EAAM,IAAI,EAAM;EAAI,CAAC;AAEtE,QADI,KAAW,EAAO,IAAI,WAAW,EAAU,EACxC,IAAI,EAAO,UAAU"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"People.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/people/People.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EAElB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AA4Cf;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEzE;AAED;8GAC8G;AAC9G,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAMnE;AAID,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,QAAQ,GACT,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAkBA;AAED,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CA2BnF;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,eAAe,2CAW5D;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ/C;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,iBAAiB,2CAahE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"People.js","names":[],"sources":["../../../src/planmagnet/people/People.tsx"],"sourcesContent":["import {\n buildActorFallback,\n useActorProfiles,\n type ActorInput,\n type ActorProfile,\n type ActorProfileMap,\n} from '@burdenoff/fe-libs/shared';\nimport { Badge } from '@burdenoff/fe-libs/ui';\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\n\n/**\n * Show people by name, not by UUID.\n *\n * Until 2026-09-24, 21 places in this MFE rendered a raw user id where a\n * person belonged — project owners, roadmap owners, assignees, the team lead.\n * fe-libs already resolves ids to workspace-member identities\n * (`useActorProfiles`, with a 5-minute cache), but it batches per CALL and\n * does not dedupe across calls, so calling it from every row would fire a\n * burst of lookups on the first render of each list.\n *\n * So there is exactly one call, here. Every `<PersonName id>` on screen\n * registers its id with the provider; ids registered during the same render\n * land in one state update, and the provider resolves them together. A\n * growing list costs one request for the NEW ids only — already-resolved ids\n * come from the fe-libs cache.\n *\n * An id that cannot be resolved (not a member of this workspace, lookup\n * failed) renders fe-libs' short fallback, \"User 1a2b3c\", rather than the full\n * UUID: still identifiable, never a wall of hex.\n */\n\ninterface PeopleContextValue {\n request: (id: string) => void;\n profiles: ActorProfileMap;\n}\n\n/**\n * The automation engine's own actor identities (BOFF-8047 follow-up) — never a real workspace member's id, so\n * they are mapped explicitly rather than sent through `useActorProfiles` (which would only ever resolve them to\n * its generic \"not a member\" fallback). Sourced directly from wspace-planmagnet-svc, not guessed:\n * - `automation-engine.ts`'s `AUTOMATION_COMMENT_AUTHOR_ID` (`'automation:engine'`) — the fixed author of every\n * comment a POST_COMMENT action posts, regardless of which trigger or actor caused the run.\n * - `automation-scheduler.ts`'s `AUTOMATION_SCHEDULER_ACTOR_ID` (`'automation:scheduler'`) — the actor behind a\n * SCHEDULE-triggered run (threaded through as `updatedBy` on that run's other actions).\n * No real actor id can ever collide with the `automation:` prefix (workspace-member ids are uuids) — see that\n * constant's own doc comment in the engine.\n */\nconst AUTOMATION_ACTOR_NAMES: Record<string, string> = {\n 'automation:engine': 'Automation',\n 'automation:scheduler': 'Automation',\n};\n\n/**\n * CWF-15's redaction sentinel: `FeatureRequest.submittedBy`/`createdBy`/`updatedBy` and `FeatureVote.voterId`\n * read back this literal string, instead of the real actor id, for a non-moderator caller when the record (or,\n * for a vote, that vote) is flagged `isAnonymous`. Never a real actor id — those are workspace-member uuids —\n * so, like the `automation:` actor ids above, it must never be sent through `useActorProfiles`: that would only\n * ever resolve to the generic \"not a member\" fallback, and would burn a wasted slot in every batch lookup.\n */\nexport const ANONYMOUS_ACTOR_ID = 'anonymous';\n\nexport function isAnonymousActorId(id: string | null | undefined): boolean {\n return id === ANONYMOUS_ACTOR_ID;\n}\n\n/** The literal \"Anonymous\" badge CWF-15 asks for everywhere a redacted actor id would otherwise show — see\n * `PersonName` below, which is the one place `submittedBy`/`createdBy`/`updatedBy`/`voterId` ever render. */\nexport function AnonymousBadge({ className }: { className?: string }) {\n return (\n <Badge variant=\"secondary\" className={className ?? 'text-xs'} data-testid=\"anonymous-badge\">\n Anonymous\n </Badge>\n );\n}\n\nconst PeopleContext = createContext<PeopleContextValue | null>(null);\n\nexport function PeopleProvider({\n workspaceId,\n children,\n}: {\n workspaceId?: string;\n children: ReactNode;\n}) {\n const [ids, setIds] = useState<readonly string[]>([]);\n\n const request = useCallback((id: string) => {\n setIds((previous) => (previous.includes(id) ? previous : [...previous, id]));\n }, []);\n\n const actors = useMemo<ActorInput[]>(\n () => ids.map((actorId) => ({ actorId, actorType: 'user' })),\n [ids]\n );\n\n // No apiGatewayUrl on purpose: this MFE is handed the WORKSPACE gateway, and\n // the hook resolves the right gateways from the hostname itself.\n const profiles = useActorProfiles(actors, { workspaceId });\n\n const value = useMemo(() => ({ request, profiles }), [request, profiles]);\n return <PeopleContext.Provider value={value}>{children}</PeopleContext.Provider>;\n}\n\nexport interface PersonNameProps {\n /** A user id. Empty or missing renders an em dash. */\n id: string | null | undefined;\n className?: string;\n}\n\n/**\n * Inline text on purpose. fe-libs' `ActorIdentity` is a block (avatar plus two\n * stacked paragraphs); every place this replaces is an inline label —\n * \"Owner: …\", a table cell, a <span> inside a <p> — where a block would break\n * the layout and nest a <div> inside a <p>. The email, when known, is the\n * hover title, so two people with the same name stay distinguishable.\n */\n/**\n * Register an id with the provider and return its profile: the resolved identity, or fe-libs' short fallback\n * (\"User 1a2b3c\", `resolved: false`) until and unless it resolves. `null` for an empty id.\n */\nexport function usePersonProfile(id: string | null | undefined): ActorProfile | null {\n const context = useContext(PeopleContext);\n const request = context?.request;\n const automationName = id ? AUTOMATION_ACTOR_NAMES[id] : undefined;\n const anonymous = isAnonymousActorId(id);\n\n useEffect(() => {\n // An automation identity is never a real workspace member, and the CWF-15 \"anonymous\" sentinel is never an\n // actor id at all — registering either with the provider would only ever come back as the generic \"not a\n // member\" fallback, and would cost a wasted slot in every batch lookup.\n if (id && request && !automationName && !anonymous) request(id);\n }, [id, request, automationName, anonymous]);\n\n if (!id) return null;\n if (automationName) {\n return {\n actorId: id,\n actorType: 'service',\n displayName: automationName,\n secondaryLabel: 'Automation',\n resolved: true,\n };\n }\n // CWF-15: \"anonymous\" is a redaction sentinel, never a real actor id — PersonName/PersonAvatar below render it\n // specially rather than resolving it (which would only ever land on the generic \"not a member\" fallback).\n if (anonymous) return null;\n return context?.profiles[id] ?? buildActorFallback({ actorId: id, actorType: 'user' });\n}\n\nexport function PersonName({ id, className }: PersonNameProps) {\n const profile = usePersonProfile(id);\n // CWF-15: the literal \"anonymous\" sentinel renders as the Anonymous badge everywhere a person's name would\n // otherwise show — never resolved as, or displayed like, a real user id.\n if (isAnonymousActorId(id)) return <AnonymousBadge className={className} />;\n if (!profile) return <span className={className ?? 'text-muted-foreground'}>—</span>;\n return (\n <span className={className} title={profile.email ?? undefined}>\n {profile.displayName}\n </span>\n );\n}\n\n/** Up to two initials from a display name (\"Ada Lovelace\" → \"AL\", \"ada\" → \"A\"). */\nexport function initialsOf(name: string): string {\n return name\n .trim()\n .split(/\\s+/)\n .filter(Boolean)\n .slice(0, 2)\n .map((word) => word[0]!.toUpperCase())\n .join('');\n}\n\nexport interface PersonAvatarProps {\n id: string | null | undefined;\n className?: string;\n}\n\n/**\n * An initials bubble for a user id. Initials come from the RESOLVED name; until the id resolves (or when it never\n * does) the bubble shows a neutral \"?\" rather than letters cut from the UUID, which matched nobody (BOFF-7977,\n * BOFF-8000). The tooltip is the name, plus the email when known.\n */\nexport function PersonAvatar({ id, className }: PersonAvatarProps) {\n const profile = usePersonProfile(id);\n const label = profile\n ? profile.email\n ? `${profile.displayName} (${profile.email})`\n : profile.displayName\n : undefined;\n const initials = profile?.resolved ? initialsOf(profile.displayName) : '';\n return (\n <span className={className} title={label} aria-label={label}>\n {initials || '?'}\n </span>\n );\n}\n"],"mappings":";;;;;AAuDA,IAAM,IAAiD;CACrD,qBAAqB;CACrB,wBAAwB;CACzB,EASY,IAAqB;AAElC,SAAgB,EAAmB,GAAwC;AACzE,QAAO,MAAO;;AAKhB,SAAgB,EAAe,EAAE,gBAAqC;AACpE,QACE,kBAAC,GAAD;EAAO,SAAQ;EAAY,WAAW,KAAa;EAAW,eAAY;YAAkB;EAEpF,CAAA;;AAIZ,IAAM,IAAgB,EAAyC,KAAK;AAEpE,SAAgB,EAAe,EAC7B,gBACA,eAIC;CACD,IAAM,CAAC,GAAK,KAAU,EAA4B,EAAE,CAAC,EAE/C,IAAU,GAAa,MAAe;AAC1C,KAAQ,MAAc,EAAS,SAAS,EAAG,GAAG,IAAW,CAAC,GAAG,GAAU,EAAG,CAAE;IAC3E,EAAE,CAAC,EASA,IAAW,EAPF,QACP,EAAI,KAAK,OAAa;EAAE;EAAS,WAAW;EAAQ,EAAE,EAC5D,CAAC,EAAI,CACN,EAIyC,EAAE,gBAAa,CAAC,EAEpD,IAAQ,SAAe;EAAE;EAAS;EAAU,GAAG,CAAC,GAAS,EAAS,CAAC;AACzE,QAAO,kBAAC,EAAc,UAAf;EAA+B;EAAQ;EAAkC,CAAA;;AAoBlF,SAAgB,EAAiB,GAAoD;CACnF,IAAM,IAAU,EAAW,EAAc,EACnC,IAAU,GAAS,SACnB,IAAiB,IAAK,EAAuB,KAAM,KAAA,GACnD,IAAY,EAAmB,EAAG;AAsBxC,QApBA,QAAgB;AAId,EAAI,KAAM,KAAW,CAAC,KAAkB,CAAC,KAAW,EAAQ,EAAG;IAC9D;EAAC;EAAI;EAAS;EAAgB;EAAU,CAAC,EAEvC,IACD,IACK;EACL,SAAS;EACT,WAAW;EACX,aAAa;EACb,gBAAgB;EAChB,UAAU;EACX,GAIC,IAAkB,OACf,GAAS,SAAS,MAAO,EAAmB;EAAE,SAAS;EAAI,WAAW;EAAQ,CAAC,GAbtE;;AAgBlB,SAAgB,EAAW,EAAE,OAAI,gBAA8B;CAC7D,IAAM,IAAU,EAAiB,EAAG;AAKpC,QAFI,EAAmB,EAAG,GAAS,kBAAC,GAAD,EAA2B,cAAa,CAAA,GACtE,IAEH,kBAAC,QAAD;EAAiB;EAAW,OAAO,EAAQ,SAAS,KAAA;YACjD,EAAQ;EACJ,CAAA,GAJY,kBAAC,QAAD;EAAM,WAAW,KAAa;YAAyB;EAAQ,CAAA;;AAStF,SAAgB,EAAW,GAAsB;AAC/C,QAAO,EACJ,MAAM,CACN,MAAM,MAAM,CACZ,OAAO,QAAQ,CACf,MAAM,GAAG,EAAE,CACX,KAAK,MAAS,EAAK,GAAI,aAAa,CAAC,CACrC,KAAK,GAAG;;AAab,SAAgB,EAAa,EAAE,OAAI,gBAAgC;CACjE,IAAM,IAAU,EAAiB,EAAG,EAC9B,IAAQ,IACV,EAAQ,QACN,GAAG,EAAQ,YAAY,IAAI,EAAQ,MAAM,KACzC,EAAQ,cACV,KAAA;AAEJ,QACE,kBAAC,QAAD;EAAiB;EAAW,OAAO;EAAO,cAAY;aAFvC,GAAS,WAAW,EAAW,EAAQ,YAAY,GAAG,OAGtD;EACR,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PresenceAvatars.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/presence/PresenceAvatars.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAe1D,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,kDA6B/E;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE;IAAE,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,2CAsBnF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PresenceAvatars.js","names":[],"sources":["../../../src/planmagnet/presence/PresenceAvatars.tsx"],"sourcesContent":["import { Fragment } from 'react';\nimport { PersonAvatar, PersonName } from '../people/People';\nimport type { PresenceOther } from '../hooks/usePresence';\n\n/**\n * \"Also here: …\" (CWF-24) — everyone else currently present on a task/doc/roadmap/project, up to 5 initials\n * bubbles plus a \"+N\" overflow count. `others` is expected to already exclude the caller — `usePresence` does\n * that — so this never needs its own id to filter against. Renders nothing when nobody else is here: an empty\n * \"Also here:\" row would be noise, not information.\n *\n * Each bubble is a `PersonAvatar`, which already carries its own resolved-name `aria-label`/tooltip (People.tsx),\n * so wrapping this in `role=\"group\"` with a visible label is enough for the set to read sensibly to a screen\n * reader — there is no second, separately-maintained list of names to keep in sync with the bubbles.\n */\n\nconst MAX_SHOWN = 5;\n\nexport function PresenceAvatars({ others }: { others: readonly PresenceOther[] }) {\n if (others.length === 0) return null;\n const shown = others.slice(0, MAX_SHOWN);\n const overflow = others.length - shown.length;\n\n return (\n <div\n role=\"group\"\n aria-label={`Also here: ${others.length} other${others.length === 1 ? '' : 's'}`}\n data-testid=\"presence-avatars\"\n className=\"flex items-center gap-1.5\"\n >\n <span className=\"text-xs text-muted-foreground\">Also here:</span>\n <div className=\"flex -space-x-2\">\n {shown.map((entry) => (\n <PersonAvatar\n key={entry.actorId}\n id={entry.actorId}\n className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-full border-2 border-bg-surface bg-muted text-[10px] font-medium text-foreground\"\n />\n ))}\n </div>\n {overflow > 0 && (\n <span className=\"text-xs text-muted-foreground\" data-testid=\"presence-avatars-overflow\">\n +{overflow}\n </span>\n )}\n </div>\n );\n}\n\n/**\n * \"Ada is typing…\" (CWF-24), inside a comment thread. A live region (polite — a typing flip is not urgent enough\n * to interrupt) so the line appearing/disappearing/changing names is announced without extra chrome. Renders an\n * (invisible-to-sighted-users but still present) empty live region rather than nothing at all when no one is\n * typing, so the region already exists in the accessibility tree before the first announcement — inserting a\n * brand-new `aria-live` node right as it needs to speak is unreliable across screen readers.\n */\nexport function TypingLine({ typingActorIds }: { typingActorIds: readonly string[] }) {\n const [first, second] = typingActorIds;\n return (\n <p\n role=\"status\"\n aria-live=\"polite\"\n data-testid=\"presence-typing\"\n className=\"min-h-[1rem] text-xs italic text-muted-foreground\"\n >\n {typingActorIds.length === 1 && (\n <Fragment>\n <PersonName id={first} /> is typing…\n </Fragment>\n )}\n {typingActorIds.length === 2 && (\n <Fragment>\n <PersonName id={first} /> and <PersonName id={second} /> are typing…\n </Fragment>\n )}\n {typingActorIds.length > 2 && `${typingActorIds.length} people are typing…`}\n </p>\n );\n}\n"],"mappings":";;;;AAeA,IAAM,IAAY;AAElB,SAAgB,EAAgB,EAAE,aAAgD;AAChF,KAAI,EAAO,WAAW,EAAG,QAAO;CAChC,IAAM,IAAQ,EAAO,MAAM,GAAG,EAAU,EAClC,IAAW,EAAO,SAAS,EAAM;AAEvC,QACE,kBAAC,OAAD;EACE,MAAK;EACL,cAAY,cAAc,EAAO,OAAO,QAAQ,EAAO,WAAW,IAAI,KAAK;EAC3E,eAAY;EACZ,WAAU;YAJZ;GAME,kBAAC,QAAD;IAAM,WAAU;cAAgC;IAAiB,CAAA;GACjE,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAM,KAAK,MACV,kBAAC,GAAD;KAEE,IAAI,EAAM;KACV,WAAU;KACV,EAHK,EAAM,QAGX,CACF;IACE,CAAA;GACL,IAAW,KACV,kBAAC,QAAD;IAAM,WAAU;IAAgC,eAAY;cAA5D,CAAwF,KACpF,EACG;;GAEL;;;AAWV,SAAgB,EAAW,EAAE,qBAAyD;CACpF,IAAM,CAAC,GAAO,KAAU;AACxB,QACE,kBAAC,KAAD;EACE,MAAK;EACL,aAAU;EACV,eAAY;EACZ,WAAU;YAJZ;GAMG,EAAe,WAAW,KACzB,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAY,IAAI,GAAS,CAAA,EAAA,cAChB,EAAA,CAAA;GAEZ,EAAe,WAAW,KACzB,kBAAC,GAAD,EAAA,UAAA;IACE,kBAAC,GAAD,EAAY,IAAI,GAAS,CAAA;;IAAK,kBAAC,GAAD,EAAY,IAAI,GAAU,CAAA;;IAC/C,EAAA,CAAA;GAEZ,EAAe,SAAS,KAAK,GAAG,EAAe,OAAO;GACrD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureLinkPanels.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/product/FeatureLinkPanels.tsx"],"names":[],"mappings":"AAgDA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAUD,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,QAAQ,EACR,KAAK,GACN,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB,2CAuHA;AAoID,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAeD,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC,2CA0GA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureLinkPanels.js","names":[],"sources":["../../../src/planmagnet/product/FeatureLinkPanels.tsx"],"sourcesContent":["import { useDeferredValue, useState } from 'react';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport { Badge, Button, Input } from '@burdenoff/fe-libs/ui';\nimport { Link2, ThumbsUp, X } from 'lucide-react';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { ErrorLine } from '../controls/ConfirmButton';\nimport { enumLabel } from '../controls/WorkItemControls';\nimport { throwOnError } from '../utils/mutationResult';\nimport { detailPath } from '../utils/rowNavigation';\nimport { linkableRequests } from './hierarchy';\nimport {\n LINK_EPIC_TO_PRODUCT_FEATURE,\n LINK_FEATURE_REQUEST_TO_PRODUCT_FEATURE,\n PRODUCT_FEATURE_EPIC_CANDIDATES,\n PRODUCT_FEATURE_QUERIES,\n PRODUCT_FEATURE_REQUEST_CANDIDATES,\n UNLINK_EPIC_FROM_PRODUCT_FEATURE,\n UNLINK_FEATURE_REQUEST_FROM_PRODUCT_FEATURE,\n} from './hierarchyOperations';\nimport { refusalMessage } from './refusal';\n\n/**\n * The feature detail page's two link panels (PRM-01): the EPIC work items that deliver the feature (each with the\n * stories under it, through the existing parent/child relation) and the feature requests it answers. Linking and\n * unlinking only ever writes the link — the epic, its stories and the request are never changed — and a link the\n * service refuses (not an epic, another product's request, an archived feature) shows the service's own reason.\n */\n\nconst selectClass =\n 'w-full rounded-md border border-input bg-background px-3 py-2 text-sm disabled:opacity-60';\n\nconst writeOptions = { refetchQueries: PRODUCT_FEATURE_QUERIES, awaitRefetchQueries: true };\n\nfunction taskPath(id: string) {\n return `/tasks/task-detail-page?taskId=${encodeURIComponent(id)}`;\n}\n\nfunction useForbiddenText() {\n const tr = useTr();\n return tr(\n 'planmagnet.productFeatures.errors.forbiddenLinks',\n 'Your role cannot change what this feature is linked to.'\n );\n}\n\n// ─── Epics ──────────────────────────────────────────────────────────────────\n\nexport interface FeatureEpicChild {\n id: string;\n key: string;\n title: string;\n type: string;\n status: string;\n}\n\nexport interface FeatureEpic extends FeatureEpicChild {\n children: FeatureEpicChild[];\n}\n\ninterface EpicCandidate {\n id: string;\n key: string;\n title: string;\n type: string;\n productFeature: { id: string; name: string } | null;\n}\n\nexport function FeatureEpicsPanel({\n featureId,\n archived,\n epics,\n}: {\n featureId: string;\n archived: boolean;\n epics: FeatureEpic[];\n}) {\n const tr = useTr();\n const forbidden = useForbiddenText();\n const navigate = usePlanMagnetNavigate();\n const [unlink, unlinkState] = useMutation(UNLINK_EPIC_FROM_PRODUCT_FEATURE, writeOptions);\n const [removingId, setRemovingId] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n\n const onUnlink = async (workItemId: string) => {\n setError(null);\n setRemovingId(workItemId);\n try {\n await throwOnError(unlink({ variables: { productFeatureId: featureId, workItemId } }));\n } catch (e) {\n setError(\n refusalMessage(\n e,\n tr('planmagnet.productFeatures.epics.errors.unlink', 'The epic could not be unlinked.'),\n forbidden\n )\n );\n } finally {\n setRemovingId(null);\n }\n };\n\n return (\n <div className=\"space-y-3\" data-testid=\"product-feature-epics\">\n <p className=\"text-sm text-muted-foreground\">\n {tr(\n 'planmagnet.productFeatures.epics.subtitle',\n 'Epics that deliver this feature. Stories reach it through their epic; unlinking an epic changes nothing about the epic or its stories.'\n )}\n </p>\n {epics.length === 0 ? (\n <p className=\"py-2 text-center text-sm text-muted-foreground\">\n {tr('planmagnet.productFeatures.epics.empty', 'No epics linked to this feature yet.')}\n </p>\n ) : (\n <ul className=\"space-y-2\">\n {epics.map((epic) => (\n <li key={epic.id} className=\"rounded-md border p-2 text-sm\" data-testid=\"feature-epic\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <button\n type=\"button\"\n className=\"min-w-0 truncate text-left font-medium hover:underline\"\n onClick={() => navigate(taskPath(epic.id))}\n >\n <span className=\"mr-2 text-muted-foreground\">{epic.key}</span>\n {epic.title}\n </button>\n <div className=\"flex shrink-0 items-center gap-2\">\n <Badge variant=\"outline\" className=\"text-xs\">\n {enumLabel(epic.status)}\n </Badge>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n aria-label={tr(\n 'planmagnet.productFeatures.epics.unlinkNamed',\n 'Unlink {{key}}',\n {\n key: epic.key,\n }\n )}\n disabled={unlinkState.loading}\n onClick={() => void onUnlink(epic.id)}\n data-testid=\"feature-epic-unlink\"\n >\n {removingId === epic.id ? '…' : <X className=\"h-4 w-4\" />}\n </Button>\n </div>\n </div>\n {epic.children.length === 0 ? (\n <p className=\"mt-1 pl-4 text-xs text-muted-foreground\">\n {tr(\n 'planmagnet.productFeatures.epics.noStories',\n 'No stories under this epic yet.'\n )}\n </p>\n ) : (\n <ul className=\"mt-1 space-y-1 border-l pl-4\" data-testid=\"feature-epic-stories\">\n {epic.children.map((child) => (\n <li\n key={child.id}\n className=\"flex flex-wrap items-center justify-between gap-x-2 text-xs\"\n >\n <button\n type=\"button\"\n className=\"min-w-0 truncate text-left hover:underline\"\n onClick={() => navigate(taskPath(child.id))}\n >\n <span className=\"mr-2 text-muted-foreground\">{child.key}</span>\n {child.title}\n </button>\n <span className=\"shrink-0 text-muted-foreground\">\n {enumLabel(child.type)} · {enumLabel(child.status)}\n </span>\n </li>\n ))}\n </ul>\n )}\n </li>\n ))}\n </ul>\n )}\n {error && <ErrorLine message={error} />}\n {archived ? (\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n 'planmagnet.productFeatures.archivedNoLinks',\n 'This feature is archived — unarchive it to link more.'\n )}\n </p>\n ) : (\n <LinkEpicControl featureId={featureId} linkedIds={epics.map((e) => e.id)} />\n )}\n </div>\n );\n}\n\n/** Search EPIC work items only (the service refuses any other type) and link one. */\nfunction LinkEpicControl({ featureId, linkedIds }: { featureId: string; linkedIds: string[] }) {\n const tr = useTr();\n const forbidden = useForbiddenText();\n const { workspaceId } = usePlanMagnet();\n const [search, setSearch] = useState('');\n const deferred = useDeferredValue(search.trim());\n const [selectedId, setSelectedId] = useState('');\n const [error, setError] = useState<string | null>(null);\n const {\n data,\n loading,\n error: loadError,\n } = useQuery<{\n planmagnetWorkItems: { items: EpicCandidate[]; totalCount: number };\n }>(PRODUCT_FEATURE_EPIC_CANDIDATES, {\n variables: {\n workspaceId: workspaceId ?? '',\n filter: {\n type: 'EPIC',\n ...(deferred ? { search: deferred } : {}),\n ...(linkedIds.length ? { excludeIds: linkedIds } : {}),\n },\n },\n skip: !workspaceId,\n });\n const [link, linkState] = useMutation(LINK_EPIC_TO_PRODUCT_FEATURE, writeOptions);\n const candidates = data?.planmagnetWorkItems.items ?? [];\n const total = data?.planmagnetWorkItems.totalCount ?? 0;\n const selected = candidates.find((c) => c.id === selectedId) ?? null;\n\n const onLink = async () => {\n if (!selectedId) return;\n setError(null);\n try {\n await throwOnError(\n link({ variables: { productFeatureId: featureId, workItemId: selectedId } })\n );\n setSelectedId('');\n setSearch('');\n } catch (e) {\n setError(\n refusalMessage(\n e,\n tr('planmagnet.productFeatures.epics.errors.link', 'The epic could not be linked.'),\n forbidden\n )\n );\n }\n };\n\n return (\n <div className=\"space-y-2 border-t pt-3\" data-testid=\"feature-epic-link\">\n <label htmlFor={`feature-epic-select-${featureId}`} className=\"text-sm font-medium\">\n {tr('planmagnet.productFeatures.epics.linkLabel', 'Link an epic')}\n </label>\n <Input\n aria-label={tr('planmagnet.productFeatures.epics.search', 'Search epics')}\n placeholder={tr(\n 'planmagnet.productFeatures.epics.searchPlaceholder',\n 'Search epics by key or title'\n )}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n />\n <div className=\"flex items-start gap-2\">\n <select\n id={`feature-epic-select-${featureId}`}\n className={selectClass}\n value={selectedId}\n onChange={(e) => setSelectedId(e.target.value)}\n data-testid=\"feature-epic-select\"\n >\n <option value=\"\">\n {loading && !data\n ? tr('planmagnet.productFeatures.searching', 'Searching…')\n : candidates.length\n ? tr('planmagnet.productFeatures.epics.choose', 'Choose an epic')\n : tr('planmagnet.productFeatures.epics.noMatch', 'No epic matches')}\n </option>\n {candidates.map((c) => (\n <option key={c.id} value={c.id}>\n {c.key} — {c.title}\n </option>\n ))}\n </select>\n <Button\n size=\"sm\"\n disabled={!selectedId || linkState.loading}\n onClick={() => void onLink()}\n data-testid=\"feature-epic-link-confirm\"\n >\n <Link2 className=\"mr-1 h-4 w-4\" />\n {tr('planmagnet.productFeatures.epics.link', 'Link')}\n </Button>\n </div>\n {selected?.productFeature && (\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n 'planmagnet.productFeatures.epics.moves',\n '{{key}} is linked to \"{{feature}}\" — an epic belongs to one feature, so linking moves it here.',\n { key: selected.key, feature: selected.productFeature.name }\n )}\n </p>\n )}\n {loadError && (\n <ErrorLine\n message={tr(\n 'planmagnet.productFeatures.epics.errors.load',\n 'Epics could not be searched: {{message}}',\n { message: loadError.message }\n )}\n />\n )}\n {total > candidates.length && (\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n 'planmagnet.productFeatures.narrow',\n 'Showing {{shown}} of {{total}} — type to narrow the list.',\n { shown: candidates.length, total }\n )}\n </p>\n )}\n {error && <ErrorLine message={error} />}\n </div>\n );\n}\n\n// ─── Feature requests ───────────────────────────────────────────────────────\n\nexport interface FeatureLinkedRequest {\n id: string;\n title: string;\n status: string;\n voteCount: number;\n productId: string | null;\n}\n\ninterface RequestCandidate {\n id: string;\n title: string;\n status: string;\n productId: string | null;\n productFeature: { id: string; name: string } | null;\n}\n\ninterface RequestCandidateList {\n items: RequestCandidate[];\n totalCount: number;\n}\n\nexport function FeatureRequestsPanel({\n featureId,\n productId,\n archived,\n requests,\n}: {\n featureId: string;\n productId: string;\n archived: boolean;\n requests: FeatureLinkedRequest[];\n}) {\n const tr = useTr();\n const forbidden = useForbiddenText();\n const navigate = usePlanMagnetNavigate();\n const [unlink, unlinkState] = useMutation(\n UNLINK_FEATURE_REQUEST_FROM_PRODUCT_FEATURE,\n writeOptions\n );\n const [removingId, setRemovingId] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n\n const onUnlink = async (featureRequestId: string) => {\n setError(null);\n setRemovingId(featureRequestId);\n try {\n await throwOnError(unlink({ variables: { featureRequestId, productFeatureId: featureId } }));\n } catch (e) {\n setError(\n refusalMessage(\n e,\n tr(\n 'planmagnet.productFeatures.requests.errors.unlink',\n 'The feature request could not be unlinked.'\n ),\n forbidden\n )\n );\n } finally {\n setRemovingId(null);\n }\n };\n\n return (\n <div className=\"space-y-3\" data-testid=\"product-feature-requests\">\n <p className=\"text-sm text-muted-foreground\">\n {tr(\n 'planmagnet.productFeatures.requests.subtitle',\n 'Customer and user feedback this feature answers. A request stays a request — linking never converts or changes it.'\n )}\n </p>\n {requests.length === 0 ? (\n <p className=\"py-2 text-center text-sm text-muted-foreground\">\n {tr(\n 'planmagnet.productFeatures.requests.empty',\n 'No feature requests linked to this feature yet.'\n )}\n </p>\n ) : (\n <ul className=\"space-y-1\">\n {requests.map((request) => (\n <li\n key={request.id}\n className=\"flex flex-wrap items-center justify-between gap-2 rounded-md border p-2 text-sm\"\n data-testid=\"feature-request-row\"\n >\n <button\n type=\"button\"\n className=\"min-w-0 truncate text-left hover:underline\"\n onClick={() => navigate(detailPath('/products/feature-detail-page', request.id))}\n >\n {request.title}\n </button>\n <div className=\"flex shrink-0 items-center gap-2\">\n <span className=\"flex items-center gap-1 text-xs text-muted-foreground\">\n <ThumbsUp className=\"h-3 w-3\" />\n {request.voteCount}\n </span>\n <Badge variant=\"secondary\" className=\"text-xs\">\n {enumLabel(request.status)}\n </Badge>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n aria-label={tr(\n 'planmagnet.productFeatures.requests.unlinkNamed',\n 'Unlink {{title}}',\n { title: request.title }\n )}\n disabled={unlinkState.loading}\n onClick={() => void onUnlink(request.id)}\n data-testid=\"feature-request-unlink\"\n >\n {removingId === request.id ? '…' : <X className=\"h-4 w-4\" />}\n </Button>\n </div>\n </li>\n ))}\n </ul>\n )}\n {error && <ErrorLine message={error} />}\n {archived ? (\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n 'planmagnet.productFeatures.archivedNoLinks',\n 'This feature is archived — unarchive it to link more.'\n )}\n </p>\n ) : (\n <LinkRequestControl\n featureId={featureId}\n productId={productId}\n linkedIds={requests.map((r) => r.id)}\n />\n )}\n </div>\n );\n}\n\n/**\n * Search, then link one request. Offered: this product's requests, then requests with no product — the two kinds\n * the service accepts. A request of another product is never offered (the service would refuse it: link it to a\n * feature of its own product instead), and if the service still refuses a link — say the request moved product\n * meanwhile — its reason is shown as is.\n */\nfunction LinkRequestControl({\n featureId,\n productId,\n linkedIds,\n}: {\n featureId: string;\n productId: string;\n linkedIds: string[];\n}) {\n const tr = useTr();\n const forbidden = useForbiddenText();\n const { workspaceId } = usePlanMagnet();\n const [search, setSearch] = useState('');\n const deferred = useDeferredValue(search.trim());\n const [selectedId, setSelectedId] = useState('');\n const [error, setError] = useState<string | null>(null);\n const {\n data,\n loading,\n error: loadError,\n } = useQuery<{\n sameProduct: RequestCandidateList;\n anyProduct: RequestCandidateList;\n }>(PRODUCT_FEATURE_REQUEST_CANDIDATES, {\n variables: {\n workspaceId: workspaceId ?? '',\n sameProduct: { productId, ...(deferred ? { search: deferred } : {}) },\n anyProduct: deferred ? { search: deferred } : undefined,\n },\n skip: !workspaceId,\n });\n const [link, linkState] = useMutation(LINK_FEATURE_REQUEST_TO_PRODUCT_FEATURE, writeOptions);\n const sameProduct = data?.sameProduct.items ?? [];\n // The service has no \"no product\" filter: requests without one come from the workspace-wide search, so\n // only that page is checked — and the note below says when there is more to narrow down.\n const unassigned = (data?.anyProduct.items ?? []).filter((r) => r.productId === null);\n const candidates = linkableRequests(sameProduct, unassigned, productId, linkedIds);\n const selected = candidates.find((c) => c.id === selectedId) ?? null;\n const truncated =\n !!data &&\n (data.sameProduct.totalCount > data.sameProduct.items.length ||\n data.anyProduct.totalCount > data.anyProduct.items.length);\n\n const onLink = async () => {\n if (!selectedId) return;\n setError(null);\n try {\n await throwOnError(\n link({ variables: { featureRequestId: selectedId, productFeatureId: featureId } })\n );\n setSelectedId('');\n setSearch('');\n } catch (e) {\n setError(\n refusalMessage(\n e,\n tr(\n 'planmagnet.productFeatures.requests.errors.link',\n 'The feature request could not be linked.'\n ),\n forbidden\n )\n );\n }\n };\n\n const own = candidates.filter((c) => c.productId === productId);\n const none = candidates.filter((c) => c.productId === null);\n\n return (\n <div className=\"space-y-2 border-t pt-3\" data-testid=\"feature-request-link\">\n <label htmlFor={`feature-request-select-${featureId}`} className=\"text-sm font-medium\">\n {tr('planmagnet.productFeatures.requests.linkLabel', 'Link a feature request')}\n </label>\n <Input\n aria-label={tr('planmagnet.productFeatures.requests.search', 'Search feature requests')}\n placeholder={tr(\n 'planmagnet.productFeatures.requests.searchPlaceholder',\n 'Search feature requests by title'\n )}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n />\n <div className=\"flex items-start gap-2\">\n <select\n id={`feature-request-select-${featureId}`}\n className={selectClass}\n value={selectedId}\n onChange={(e) => setSelectedId(e.target.value)}\n data-testid=\"feature-request-select\"\n >\n <option value=\"\">\n {loading && !data\n ? tr('planmagnet.productFeatures.searching', 'Searching…')\n : candidates.length\n ? tr('planmagnet.productFeatures.requests.choose', 'Choose a feature request')\n : tr('planmagnet.productFeatures.requests.noMatch', 'No feature request matches')}\n </option>\n {own.length > 0 && (\n <optgroup\n label={tr('planmagnet.productFeatures.requests.groupOwn', 'From this product')}\n >\n {own.map((c) => (\n <option key={c.id} value={c.id}>\n {c.title}\n </option>\n ))}\n </optgroup>\n )}\n {none.length > 0 && (\n <optgroup\n label={tr('planmagnet.productFeatures.requests.groupNone', 'Without a product')}\n >\n {none.map((c) => (\n <option key={c.id} value={c.id}>\n {c.title}\n </option>\n ))}\n </optgroup>\n )}\n </select>\n <Button\n size=\"sm\"\n disabled={!selectedId || linkState.loading}\n onClick={() => void onLink()}\n data-testid=\"feature-request-link-confirm\"\n >\n <Link2 className=\"mr-1 h-4 w-4\" />\n {tr('planmagnet.productFeatures.requests.link', 'Link')}\n </Button>\n </div>\n {selected?.productFeature && (\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n 'planmagnet.productFeatures.requests.moves',\n 'This request points at \"{{feature}}\" — a request points at one feature, so linking moves it here.',\n { feature: selected.productFeature.name }\n )}\n </p>\n )}\n {selected && selected.productId === null && (\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n 'planmagnet.productFeatures.requests.noProduct',\n 'This request has no product. Linking does not set one.'\n )}\n </p>\n )}\n {loadError && (\n <ErrorLine\n message={tr(\n 'planmagnet.productFeatures.requests.errors.load',\n 'Feature requests could not be searched: {{message}}',\n { message: loadError.message }\n )}\n />\n )}\n {truncated && (\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n 'planmagnet.productFeatures.requests.narrow',\n 'Only the first matches are listed — type to narrow the list.'\n )}\n </p>\n )}\n {error && <ErrorLine message={error} />}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductControls.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/product/ProductControls.tsx"],"names":[],"mappings":"AA6BA;;;;;;;GAOG;AAIH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,yEAAyE;AACzE,eAAO,MAAM,eAAe,UAA2D,CAAC;AA0BxF,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,IAAI,EACJ,UAAU,GACX,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,2CAyEA;AA8BD,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B,2CA+DA;AA0JD,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B,2CAqEA;AAkKD,wBAAgB,2BAA2B,CAAC,EAC1C,SAAS,EACT,eAAe,GAChB,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,wBAAwB,EAAE,CAAC;CAC7C,2CAuEA;AAyJD,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,UAAU,GACX,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC,2CAuEA;AA6ID,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AA4FD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,kBAAkB,CAAA;CAAE,2CA0J7E;AAiBD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,SAAS,EACT,WAAW,GACZ,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC,2CA4FA"}