@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":"ProductsEditProductPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsEditProductPagePage.tsx"],"sourcesContent":["import { useState, useMemo } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery, useMutation } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Button, Input } from '@burdenoff/fe-libs/ui';\nimport { Save, ArrowLeft, Package, Loader2 } from 'lucide-react';\nimport { throwOnError } from '../utils/mutationResult';\nimport { usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { useEntityId } from '../hooks/useEntityId';\nimport { detailPath } from '../utils/rowNavigation';\nimport { PersonName } from '../people/People';\nimport { enumLabel } from '../controls/WorkItemControls';\nimport { ProductHeaderActions } from '../product/ProductControls';\n\n/**\n * Edit a Product's own fields (BOFF-8045): name, description, vision, lifecycle stage,\n * owner and North Star metric. Archive/unarchive and delete live in ProductHeaderActions\n * (shared with the detail page). Lifecycle stage has no enforced transition graph β€” any\n * stage to any stage is a valid save, deliberately (the owner decision only asks for the\n * field, not a workflow).\n */\n\nconst PRODUCT_LIFECYCLE_STAGES = [\n 'CONCEPT',\n 'DEVELOPMENT',\n 'BETA',\n 'LAUNCHED',\n 'MATURE',\n 'DEPRECATED',\n] as const;\ntype ProductLifecycleStage = (typeof PRODUCT_LIFECYCLE_STAGES)[number];\n\nconst GET_PRODUCT = gql`\n query GetProductForEdit($id: ID!) {\n planmagnetProduct(id: $id) {\n id\n workspaceId\n name\n description\n vision\n lifecycleStage\n ownerId\n archivedAt\n northStar {\n name\n unit\n target\n current\n window\n }\n createdAt\n updatedAt\n }\n }\n`;\n\nconst UPDATE_PRODUCT = gql`\n mutation UpdateProduct($id: ID!, $input: PlanmagnetUpdateProductInput!) {\n planmagnetUpdateProduct(id: $id, input: $input) {\n id\n name\n description\n vision\n lifecycleStage\n ownerId\n northStar {\n name\n unit\n target\n current\n window\n }\n updatedAt\n }\n }\n`;\n\ninterface ProductNorthStarFull {\n name: string;\n unit: string;\n target: number;\n current: number;\n window: string;\n}\n\ninterface ProductForEdit {\n id: string;\n workspaceId: string;\n name: string;\n description: string | null;\n vision: string;\n lifecycleStage: string;\n ownerId: string;\n archivedAt: string | null;\n northStar: ProductNorthStarFull | null;\n createdAt: string;\n updatedAt: string;\n}\n\ninterface EditProductForm {\n name: string;\n description: string;\n vision: string;\n lifecycleStage: ProductLifecycleStage;\n}\n\ninterface NorthStarForm {\n name: string;\n unit: string;\n target: string;\n current: string;\n window: string;\n}\n\nconst EMPTY_NORTH_STAR: NorthStarForm = { name: '', unit: '', target: '', current: '', window: '' };\n\nexport function ProductsEditProductPagePage() {\n const navigate = usePlanMagnetNavigate();\n const productId = useEntityId('productId') ?? '';\n\n const { data, loading, error } = useQuery<{ planmagnetProduct: ProductForEdit | null }>(\n GET_PRODUCT,\n { variables: { id: productId }, skip: !productId }\n );\n\n const [updateProduct, { loading: saving }] = useMutation(UPDATE_PRODUCT, {\n refetchQueries: ['GetProducts', 'GetProductForEdit', 'GetProductDetail'],\n awaitRefetchQueries: true,\n });\n const [saveError, setSaveError] = useState<string | null>(null);\n const [saved, setSaved] = useState(false);\n\n const product = data?.planmagnetProduct;\n\n const defaultForm = useMemo<EditProductForm>(\n () => ({\n name: product?.name ?? '',\n description: product?.description ?? '',\n vision: product?.vision ?? '',\n lifecycleStage: (product?.lifecycleStage ?? 'CONCEPT') as ProductLifecycleStage,\n }),\n [product]\n );\n const defaultNorthStar = useMemo<NorthStarForm>(\n () =>\n product?.northStar\n ? {\n name: product.northStar.name,\n unit: product.northStar.unit,\n target: String(product.northStar.target),\n current: String(product.northStar.current),\n window: product.northStar.window,\n }\n : EMPTY_NORTH_STAR,\n [product]\n );\n\n const [formOverrides, setFormOverrides] = useState<Partial<EditProductForm>>({});\n const form: EditProductForm = { ...defaultForm, ...formOverrides };\n const setForm = (val: EditProductForm) => setFormOverrides(val);\n\n const [northStarOverrides, setNorthStarOverrides] = useState<Partial<NorthStarForm>>({});\n const northStar: NorthStarForm = { ...defaultNorthStar, ...northStarOverrides };\n const setNorthStar = (val: NorthStarForm) => setNorthStarOverrides(val);\n\n const northStarStarted = Object.values(northStar).some((v) => v.trim() !== '');\n const northStarComplete =\n northStar.name.trim() &&\n northStar.unit.trim() &&\n northStar.window.trim() &&\n northStar.target.trim() !== '' &&\n !Number.isNaN(Number(northStar.target)) &&\n northStar.current.trim() !== '' &&\n !Number.isNaN(Number(northStar.current));\n\n // Name and vision are required by the service (product.service assertProductInput). A product\n // created by the BOFF-8045 roadmap backfill starts with an empty vision, so gate Save here and say\n // why, instead of letting the first edit bounce off \"vision required\".\n const visionMissing = form.vision.trim() === '';\n const canSave =\n form.name.trim() !== '' && !visionMissing && (!northStarStarted || northStarComplete);\n\n // An emptied description is cleared (null), not silently kept; success is confirmed.\n const handleSave = async () => {\n setSaveError(null);\n setSaved(false);\n try {\n await throwOnError(\n updateProduct({\n variables: {\n id: productId,\n input: {\n name: form.name,\n description: form.description.trim() || null,\n vision: form.vision,\n lifecycleStage: form.lifecycleStage,\n ...(northStarComplete\n ? {\n northStar: {\n name: northStar.name,\n unit: northStar.unit,\n target: Number(northStar.target),\n current: Number(northStar.current),\n window: northStar.window,\n },\n }\n : {}),\n },\n },\n })\n );\n setSaved(true);\n } catch (e) {\n setSaveError(e instanceof Error ? e.message : 'The product could not be saved.');\n }\n };\n\n // Only before the first load: a refetch must not blank the page (it\n // unmounts every component on it and loses their state).\n if (loading && !data) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n );\n }\n\n if (error) {\n return <div className=\"p-6 text-destructive\">Failed to load product: {error.message}</div>;\n }\n\n if (!product) {\n return <div className=\"p-6 text-muted-foreground\">No product found.</div>;\n }\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => navigate(detailPath('/products/product-detail-page', product.id))}\n >\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <div>\n <h1 className=\"text-2xl font-semibold\">Edit Product</h1>\n <p className=\"text-sm text-muted-foreground\">Editing {product.name}</p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button size=\"sm\" onClick={() => void handleSave()} disabled={saving || !canSave}>\n {saving ? (\n <Loader2 className=\"mr-1 h-4 w-4 animate-spin\" />\n ) : (\n <Save className=\"mr-1 h-4 w-4\" />\n )}\n Save Changes\n </Button>\n <ProductHeaderActions\n productId={product.id}\n name={product.name}\n archivedAt={product.archivedAt}\n />\n </div>\n </div>\n\n {saved && (\n <div role=\"status\" className=\"p-3 bg-muted text-status-success-text rounded-md text-sm\">\n Changes saved.\n </div>\n )}\n {saveError && (\n <div role=\"alert\" className=\"p-3 rounded-md bg-destructive/10 text-destructive text-sm\">\n {saveError}\n </div>\n )}\n\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2 space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Basic Information</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <label className=\"text-sm font-medium\">Product Name</label>\n <Input\n value={form.name}\n onChange={(e) => setForm({ ...form, name: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Description</label>\n <textarea\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[60px]\"\n value={form.description}\n onChange={(e) => setForm({ ...form, description: e.target.value })}\n />\n </div>\n <div>\n <label htmlFor=\"product-edit-vision\" className=\"text-sm font-medium\">\n Vision *\n </label>\n <textarea\n id=\"product-edit-vision\"\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[80px]\"\n value={form.vision}\n aria-invalid={visionMissing}\n aria-describedby={visionMissing ? 'product-edit-vision-hint' : undefined}\n onChange={(e) => setForm({ ...form, vision: e.target.value })}\n />\n {visionMissing && (\n <p id=\"product-edit-vision-hint\" className=\"mt-1 text-xs text-muted-foreground\">\n Add a vision to save changes.\n </p>\n )}\n </div>\n <div>\n <label className=\"text-sm font-medium\">Lifecycle Stage</label>\n <select\n aria-label=\"Lifecycle stage\"\n data-testid=\"product-lifecycle-stage\"\n className=\"mt-1 w-full rounded-md border border-input bg-background px-2 py-1.5 text-sm\"\n value={form.lifecycleStage}\n onChange={(e) =>\n setForm({ ...form, lifecycleStage: e.target.value as ProductLifecycleStage })\n }\n >\n {PRODUCT_LIFECYCLE_STAGES.map((stage) => (\n <option key={stage} value={stage}>\n {enumLabel(stage)}\n </option>\n ))}\n </select>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>North Star metric</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label className=\"text-sm font-medium\">Metric name</label>\n <Input\n value={northStar.name}\n onChange={(e) => setNorthStar({ ...northStar, name: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Unit</label>\n <Input\n value={northStar.unit}\n onChange={(e) => setNorthStar({ ...northStar, unit: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Target</label>\n <Input\n type=\"number\"\n value={northStar.target}\n onChange={(e) => setNorthStar({ ...northStar, target: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Current</label>\n <Input\n type=\"number\"\n value={northStar.current}\n onChange={(e) => setNorthStar({ ...northStar, current: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n <div className=\"col-span-2\">\n <label className=\"text-sm font-medium\">Window</label>\n <Input\n value={northStar.window}\n onChange={(e) => setNorthStar({ ...northStar, window: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n </div>\n {northStarStarted && !northStarComplete && (\n <p className=\"text-xs text-destructive\">\n Fill in every North Star field (or clear them all) β€” name, unit, target, current\n and window are all required together.\n </p>\n )}\n </CardContent>\n </Card>\n </div>\n\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Product Info</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3 text-sm\">\n <div className=\"flex items-center gap-2\">\n <Package className=\"h-4 w-4 text-primary\" />\n <span className=\"font-medium\">{product.name}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Lifecycle stage</span>\n <span className=\"font-medium capitalize\">{enumLabel(product.lifecycleStage)}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Status</span>\n <span className=\"font-medium\">{product.archivedAt ? 'Archived' : 'Active'}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Owner</span>\n <span className=\"font-medium\">\n <PersonName id={product.ownerId} />\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Created</span>\n <span>{new Date(product.createdAt).toLocaleDateString()}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Updated</span>\n <span>{new Date(product.updatedAt).toLocaleDateString()}</span>\n </div>\n </CardContent>\n </Card>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsEditReleasePagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsEditReleasePagePage.tsx"],"names":[],"mappings":"AA8CA,wBAAgB,2BAA2B,4CAiO1C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsEditReleasePagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsEditReleasePagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { useState, useMemo } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery, useMutation } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Button, Input } from '@burdenoff/fe-libs/ui';\nimport { Save, ArrowLeft, Loader2 } from 'lucide-react';\nimport { MarkdownEditor } from '#src/components/MarkdownEditor';\nimport { throwOnError } from '../utils/mutationResult';\nimport { RELEASE_STATUSES } from '../controls/ReleaseControls';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { useParams } from 'react-router';\n\nconst GET_RELEASE = gql`\n query GetReleaseForEdit($id: ID!) {\n planmagnetRelease(id: $id) {\n id\n name\n description\n version\n status\n plannedDate\n releasedAt\n releaseNotes\n ownerId\n tags\n }\n }\n`;\n\nconst UPDATE_RELEASE = gql`\n mutation UpdateRelease($id: ID!, $input: PlanmagnetUpdateReleaseInput!) {\n planmagnetUpdateRelease(id: $id, input: $input) {\n id\n name\n description\n version\n status\n plannedDate\n releaseNotes\n tags\n updatedAt\n }\n }\n`;\n\nexport function ProductsEditReleasePagePage() {\n const { workspaceId } = usePlanMagnet();\n const navigate = usePlanMagnetNavigate();\n const params = useParams<{ id: string }>();\n const releaseId = params.id ?? '';\n\n const {\n data,\n loading,\n error,\n } = // eslint-disable-next-line @typescript-eslint/no-explicit-any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useQuery<Record<string, any>>(GET_RELEASE, {\n variables: { id: releaseId },\n skip: !releaseId,\n });\n\n const [updateRelease, { loading: saving }] = useMutation(UPDATE_RELEASE, {\n refetchQueries: ['ListReleases', 'GetReleaseForEdit', 'GetRelease', 'ReleaseReadiness'],\n awaitRefetchQueries: true,\n });\n const [saveError, setSaveError] = useState<string | null>(null);\n const [saved, setSaved] = useState(false);\n\n const release = data?.planmagnetRelease;\n\n const defaultForm = useMemo(\n () => ({\n version: release?.version ?? '',\n name: release?.name ?? '',\n description: release?.description ?? '',\n status: release?.status ?? 'DRAFT',\n plannedDate: release?.plannedDate\n ? new Date(release.plannedDate).toISOString().split('T')[0]\n : '',\n releaseNotes: release?.releaseNotes ?? '',\n tags: release?.tags?.join(', ') ?? '',\n }),\n [release]\n );\n\n const [formOverrides, setFormOverrides] = useState<Record<string, string>>({});\n const form = { ...defaultForm, ...formOverrides };\n const setForm = (val: Record<string, string>) => setFormOverrides(val);\n\n // Every ReleaseStatus: STAGING was missing, so a staging release showed as \"draft\" (BOFF-7985).\n const statuses = (RELEASE_STATUSES as readonly string[]).includes(form.status)\n ? RELEASE_STATUSES\n : [form.status, ...RELEASE_STATUSES];\n\n // BOFF-7979: only changed fields are sent, an emptied optional field is cleared (it used to be omitted, so the\n // old value stayed), and success is confirmed.\n const handleSave = async () => {\n if (!form.version.trim() || !form.name.trim()) {\n setSaveError('Version and name are required.');\n return;\n }\n const tagList = (v: string) =>\n v\n .split(',')\n .map((t) => t.trim())\n .filter(Boolean);\n const next: Record<string, unknown> = {\n version: form.version.trim(),\n name: form.name.trim(),\n description: form.description.trim() || null,\n status: form.status,\n plannedDate: form.plannedDate || null,\n releaseNotes: form.releaseNotes.trim() ? form.releaseNotes : null,\n tags: tagList(form.tags),\n };\n const before: Record<string, unknown> = {\n version: defaultForm.version,\n name: defaultForm.name,\n description: defaultForm.description.trim() || null,\n status: defaultForm.status,\n plannedDate: defaultForm.plannedDate || null,\n releaseNotes: defaultForm.releaseNotes.trim() ? defaultForm.releaseNotes : null,\n tags: tagList(defaultForm.tags),\n };\n const input = Object.fromEntries(\n Object.entries(next).filter(([k, v]) => JSON.stringify(v) !== JSON.stringify(before[k]))\n );\n setSaveError(null);\n setSaved(false);\n if (Object.keys(input).length === 0) {\n setSaved(true);\n return;\n }\n try {\n await throwOnError(updateRelease({ variables: { id: releaseId, input } }));\n setSaved(true);\n } catch (e) {\n setSaveError(e instanceof Error ? e.message : 'The release could not be saved.');\n }\n };\n\n // Only before the first load: a refetch must not blank the page (it\n\n // unmounts every component on it and loses their state).\n\n if (loading && !data) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n );\n }\n\n if (error) {\n return <div className=\"p-6 text-destructive\">Failed to load release: {error.message}</div>;\n }\n\n if (!release) return <div className=\"p-6 text-muted-foreground\">Release not found.</div>;\n\n return (\n <div className=\"space-y-6 p-6 max-w-4xl\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Button variant=\"ghost\" size=\"sm\" onClick={() => navigate('/products/releases-page')}>\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <div>\n <h1 className=\"text-2xl font-semibold\">Edit Release</h1>\n <p className=\"text-sm text-muted-foreground\">\n {release.version} - {release.name}\n </p>\n </div>\n </div>\n <Button size=\"sm\" onClick={handleSave} disabled={saving}>\n {saving ? (\n <Loader2 className=\"mr-1 h-4 w-4 animate-spin\" />\n ) : (\n <Save className=\"mr-1 h-4 w-4\" />\n )}\n Save Changes\n </Button>\n </div>\n\n {saved && (\n <div role=\"status\" className=\"p-3 bg-muted text-status-success-text rounded-md text-sm\">\n Changes saved.\n </div>\n )}\n {saveError && (\n <div role=\"alert\" className=\"p-3 rounded-md bg-destructive/10 text-destructive text-sm\">\n {saveError}\n </div>\n )}\n\n <Card>\n <CardHeader>\n <CardTitle>Release Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label className=\"text-sm font-medium\">Version</label>\n <Input\n value={form.version}\n onChange={(e) => setForm({ ...form, version: e.target.value })}\n className=\"mt-1\"\n placeholder=\"v1.0.0\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Name</label>\n <Input\n value={form.name}\n onChange={(e) => setForm({ ...form, name: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n </div>\n <MarkdownEditor\n label=\"Description\"\n value={form.description}\n onChange={(value) => setForm({ ...form, description: value })}\n minHeight={80}\n />\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label className=\"text-sm font-medium\">Status</label>\n <select\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"\n value={form.status}\n onChange={(e) => setForm({ ...form, status: e.target.value })}\n >\n {statuses.map((s) => (\n <option key={s} value={s} className=\"capitalize\">\n {s.toLowerCase().replace('_', ' ')}\n </option>\n ))}\n </select>\n </div>\n <div>\n <label className=\"text-sm font-medium\">Planned Date</label>\n <Input\n type=\"date\"\n value={form.plannedDate}\n onChange={(e) => setForm({ ...form, plannedDate: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n </div>\n <div>\n <label className=\"text-sm font-medium\">Tags (comma-separated)</label>\n <Input\n value={form.tags}\n onChange={(e) => setForm({ ...form, tags: e.target.value })}\n className=\"mt-1\"\n placeholder=\"e.g. critical, security, performance\"\n />\n </div>\n <MarkdownEditor\n label=\"Release Notes\"\n value={form.releaseNotes}\n onChange={(value) => setForm({ ...form, releaseNotes: value })}\n placeholder=\"Describe what changed in this release...\"\n minHeight={120}\n />\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsEditRoadmapPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsEditRoadmapPagePage.tsx"],"names":[],"mappings":"AA2FA,wBAAgB,2BAA2B,4CA8O1C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsEditRoadmapPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsEditRoadmapPagePage.tsx"],"sourcesContent":["import { useState, useMemo } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery, useMutation } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Button, Input } from '@burdenoff/fe-libs/ui';\nimport { Save, ArrowLeft, Map, Loader2, Trash2 } from 'lucide-react';\nimport { throwOnError, LEAVES_PAGE_CONTEXT } from '../utils/mutationResult';\nimport { ConfirmButton } from '../controls/ConfirmButton';\nimport { usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { useEntityId } from '../hooks/useEntityId';\nimport { detailPath } from '../utils/rowNavigation';\nimport { PersonName } from '../people/People';\nimport {\n PlanningFocusBadge,\n PlanningFocusSelect,\n type PlanningFocus,\n} from '../roadmaps/planningFocus';\n\n/**\n * Edit a Roadmap's own fields (BOFF-8045). Split out of what used to be\n * ProductsEditProductPagePage.tsx: before the Product entity existed, \"Products\"\n * WERE roadmaps and this same form lived at /products/edit-product-page. Now\n * that edit-product-page edits a real Product (name, vision, lifecycle stage,\n * North Star β€” see ProductsEditProductPagePage.tsx), roadmap editing needs its\n * own home so RoadmapControls.tsx's \"Edit\" button (used from the real Roadmap\n * detail page) has somewhere correct to go instead of a Product it does not\n * own the fields of.\n */\n\nconst GET_ROADMAP = gql`\n query GetRoadmapForRoadmapEdit($id: ID!) {\n planmagnetRoadmap(id: $id) {\n id\n workspaceId\n name\n description\n type\n planningFocus\n isPublic\n ownerId\n createdAt\n updatedAt\n items {\n id\n status\n }\n }\n }\n`;\n\nconst UPDATE_ROADMAP = gql`\n mutation UpdateRoadmapFromRoadmapEdit($id: ID!, $input: PlanmagnetUpdateRoadmapInput!) {\n planmagnetUpdateRoadmap(id: $id, input: $input) {\n id\n name\n description\n type\n planningFocus\n isPublic\n ownerId\n updatedAt\n }\n }\n`;\n\nconst DELETE_ROADMAP = gql`\n mutation DeleteRoadmapFromRoadmapEdit($id: ID!) {\n planmagnetDeleteRoadmap(id: $id)\n }\n`;\n\ninterface RoadmapForEdit {\n id: string;\n workspaceId: string;\n name: string;\n description: string | null;\n type: string;\n planningFocus: string | null;\n isPublic: boolean;\n ownerId: string;\n createdAt: string;\n updatedAt: string;\n items: { id: string; status: string }[];\n}\n\ninterface EditRoadmapForm {\n name: string;\n description: string;\n planningFocus: PlanningFocus | null;\n isPublic: boolean;\n}\n\nexport function ProductsEditRoadmapPagePage() {\n const navigate = usePlanMagnetNavigate();\n const roadmapId = useEntityId('roadmapId') ?? '';\n\n const { data, loading, error } = useQuery<{ planmagnetRoadmap: RoadmapForEdit | null }>(\n GET_ROADMAP,\n { variables: { id: roadmapId }, skip: !roadmapId }\n );\n\n const [updateRoadmap, { loading: saving }] = useMutation(UPDATE_ROADMAP, {\n refetchQueries: [\n 'ListRoadmaps',\n 'ListRoadmapsPage',\n 'GetRoadmapForRoadmapEdit',\n 'GetRoadmapDetail',\n 'GetRoadmapDetailPage',\n ],\n awaitRefetchQueries: true,\n });\n // BOFF-7980: the button said \"Archive\" but deleted, on the first click, without awaiting β€” a refusal showed nothing.\n const [deleteRoadmap, { loading: deleting }] = useMutation(DELETE_ROADMAP, {\n refetchQueries: ['ListRoadmaps', 'ListRoadmapsPage'],\n context: LEAVES_PAGE_CONTEXT,\n });\n const [saveError, setSaveError] = useState<string | null>(null);\n const [saved, setSaved] = useState(false);\n\n const roadmap = data?.planmagnetRoadmap;\n\n const defaultForm = useMemo<EditRoadmapForm>(\n () => ({\n name: roadmap?.name ?? '',\n description: roadmap?.description ?? '',\n planningFocus: (roadmap?.planningFocus ?? null) as PlanningFocus | null,\n isPublic: roadmap?.isPublic ?? false,\n }),\n [roadmap]\n );\n\n const [formOverrides, setFormOverrides] = useState<Partial<EditRoadmapForm>>({});\n const form: EditRoadmapForm = { ...defaultForm, ...formOverrides };\n const setForm = (val: EditRoadmapForm) => setFormOverrides(val);\n\n // BOFF-7979: an emptied description is cleared (null), not silently kept; success is confirmed.\n const handleSave = async () => {\n setSaveError(null);\n setSaved(false);\n try {\n await throwOnError(\n updateRoadmap({\n variables: {\n id: roadmapId,\n input: {\n name: form.name,\n description: form.description.trim() || null,\n // The display is not editable: the page has one layout (BOFF-7934).\n // null clears a focus that was set by mistake.\n planningFocus: form.planningFocus,\n isPublic: form.isPublic,\n },\n },\n })\n );\n setSaved(true);\n } catch (e) {\n setSaveError(e instanceof Error ? e.message : 'The roadmap could not be saved.');\n }\n };\n\n const handleDelete = async () => {\n setSaveError(null);\n try {\n await throwOnError(deleteRoadmap({ variables: { id: roadmapId } }));\n navigate('/products/roadmaps-page');\n } catch (e) {\n setSaveError(e instanceof Error ? e.message : 'The roadmap could not be deleted.');\n }\n };\n\n // Only before the first load: a refetch must not blank the page (it\n // unmounts every component on it and loses their state).\n if (loading && !data) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n );\n }\n\n if (error) {\n return <div className=\"p-6 text-destructive\">Failed to load roadmap: {error.message}</div>;\n }\n\n if (!roadmap) {\n return <div className=\"p-6 text-muted-foreground\">No roadmap found.</div>;\n }\n\n const backTarget = detailPath('/products/roadmap-detail-page', roadmap.id);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Button variant=\"ghost\" size=\"sm\" onClick={() => navigate(backTarget)}>\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <div>\n <h1 className=\"text-2xl font-semibold\">Edit Roadmap</h1>\n <p className=\"text-sm text-muted-foreground\">Editing {roadmap.name}</p>\n </div>\n </div>\n <Button size=\"sm\" onClick={handleSave} disabled={saving}>\n {saving ? (\n <Loader2 className=\"mr-1 h-4 w-4 animate-spin\" />\n ) : (\n <Save className=\"mr-1 h-4 w-4\" />\n )}\n Save Changes\n </Button>\n </div>\n\n {saved && (\n <div role=\"status\" className=\"p-3 bg-muted text-status-success-text rounded-md text-sm\">\n Changes saved.\n </div>\n )}\n {saveError && (\n <div role=\"alert\" className=\"p-3 rounded-md bg-destructive/10 text-destructive text-sm\">\n {saveError}\n </div>\n )}\n\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2 space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Basic Information</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <label className=\"text-sm font-medium\">Roadmap Name</label>\n <Input\n value={form.name}\n onChange={(e) => setForm({ ...form, name: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Description</label>\n <textarea\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[80px]\"\n value={form.description}\n onChange={(e) => setForm({ ...form, description: e.target.value })}\n />\n </div>\n <PlanningFocusSelect\n value={form.planningFocus}\n onChange={(planningFocus) => setForm({ ...form, planningFocus })}\n />\n <div>\n <label className=\"text-sm font-medium\">Visibility</label>\n <div className=\"mt-1 flex gap-2\">\n {[false, true].map((pub) => (\n <button\n key={String(pub)}\n onClick={() => setForm({ ...form, isPublic: pub })}\n className={`rounded-md px-3 py-1.5 text-sm ${form.isPublic === pub ? 'bg-primary text-primary-foreground' : 'bg-muted text-muted-foreground'}`}\n >\n {pub ? 'Public' : 'Private'}\n </button>\n ))}\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Roadmap Info</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3 text-sm\">\n <div className=\"flex items-center gap-2\">\n <Map className=\"h-4 w-4 text-primary\" />\n <span className=\"font-medium\">{roadmap.name}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Items</span>\n <span className=\"font-medium\">{roadmap.items?.length ?? 0}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Planning focus</span>\n <PlanningFocusBadge focus={roadmap.planningFocus} />\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Visibility</span>\n <span className=\"font-medium\">{roadmap.isPublic ? 'Public' : 'Private'}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Owner</span>\n <span className=\"font-medium\">\n <PersonName id={roadmap.ownerId} />\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Created</span>\n <span>{new Date(roadmap.createdAt).toLocaleDateString()}</span>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Updated</span>\n <span>{new Date(roadmap.updatedAt).toLocaleDateString()}</span>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Danger Zone</CardTitle>\n </CardHeader>\n <CardContent>\n <ConfirmButton\n label={deleting ? 'Deleting…' : 'Delete roadmap'}\n variant=\"outline\"\n icon={<Trash2 className=\"mr-1 h-4 w-4\" />}\n title={`Delete ${roadmap.name}?`}\n description=\"The roadmap and its items are deleted. This cannot be undone here.\"\n confirmLabel=\"Delete roadmap\"\n destructive\n disabled={deleting}\n onConfirm={() => void handleDelete()}\n />\n </CardContent>\n </Card>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsFeatureAnalyticsPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsFeatureAnalyticsPagePage.tsx"],"names":[],"mappings":"AAgDA,wBAAgB,gCAAgC,4CAiP/C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsFeatureAnalyticsPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsFeatureAnalyticsPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { TrendingUp, ThumbsUp, Users, BarChart3, Target, Loader2 } from 'lucide-react';\nimport { useParams } from 'react-router';\nimport { countLabel, useFeatureCounts } from '../hooks/useCounts';\n\nconst GET_FEATURE_REQUEST_ANALYTICS = gql`\n query GetFeatureRequestAnalytics($id: ID!) {\n planmagnetFeatureRequest(id: $id) {\n id\n title\n description\n status\n businessValue\n effortEstimate\n priorityScore\n voteCount\n voteRank\n submittedBy\n tags\n createdAt\n updatedAt\n votes {\n id\n voterId\n weight\n comment\n createdAt\n }\n competitors {\n id\n name\n }\n }\n }\n`;\n\ninterface VoteNode {\n id: string;\n voterId: string;\n weight: number;\n comment: string | null;\n createdAt: string;\n}\n\nexport function ProductsFeatureAnalyticsPagePage() {\n const params = useParams<{ id: string }>();\n const featureId = params.id ?? '';\n\n const {\n data,\n loading,\n error,\n } = // eslint-disable-next-line @typescript-eslint/no-explicit-any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useQuery<Record<string, any>>(GET_FEATURE_REQUEST_ANALYTICS, {\n variables: { id: featureId },\n skip: !featureId,\n });\n\n // Rank and distribution cover EVERY request, from the server (BOFF-7995: both were computed over the 100\n // newest in the browser, so a workspace with more read \"of 100\", and an older request had no rank).\n const featureCounts = useFeatureCounts();\n\n // Only before the first load: a refetch must not blank the page (it\n\n // unmounts every component on it and loses their state).\n\n if (loading && !data) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n );\n }\n\n if (error) {\n return <div className=\"p-6 text-destructive\">Failed to load analytics: {error.message}</div>;\n }\n\n const feature = data?.planmagnetFeatureRequest;\n if (!feature) return <div className=\"p-6 text-muted-foreground\">Feature request not found.</div>;\n\n const votes: VoteNode[] = feature.votes ?? [];\n const competitorCount = feature.competitors?.length ?? 0;\n\n // Vote distribution by weight\n const votesByWeight: Record<number, number> = {};\n for (const v of votes) {\n votesByWeight[v.weight] = (votesByWeight[v.weight] || 0) + 1;\n }\n const maxVoteWeight = Math.max(...Object.values(votesByWeight), 1);\n\n // Vote timeline - group by creation date\n const voteTimeline: { date: string; count: number }[] = [];\n const voteDateMap: Record<string, number> = {};\n for (const v of votes) {\n const date = new Date(v.createdAt).toLocaleDateString();\n voteDateMap[date] = (voteDateMap[date] || 0) + 1;\n }\n for (const [date, count] of Object.entries(voteDateMap)) {\n voteTimeline.push({ date, count });\n }\n voteTimeline.sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime());\n const maxTimelineCount = Math.max(...voteTimeline.map((d) => d.count), 1);\n\n const statusDistribution: Record<string, number> = featureCounts\n ? Object.fromEntries(Object.entries(featureCounts.byStatus).filter(([, n]) => n > 0))\n : {};\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Feature request analytics</h1>\n <p className=\"text-sm text-muted-foreground\">\n {feature.title} - {feature.status.toLowerCase().replace('_', ' ')}\n </p>\n </div>\n\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-muted-foreground text-xs\">\n <Target className=\"h-4 w-4\" />\n Priority Score\n </div>\n <p className=\"text-2xl font-bold mt-1\">{feature.priorityScore ?? 0}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-muted-foreground text-xs\">\n <ThumbsUp className=\"h-4 w-4\" />\n Total Votes\n </div>\n <p className=\"text-2xl font-bold mt-1\">{feature.voteCount}</p>\n <p className=\"text-xs text-green-600 mt-1\">\n Rank #{feature.voteRank} of {countLabel(featureCounts?.all)}\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-muted-foreground text-xs\">\n <Users className=\"h-4 w-4\" />\n Competitors\n </div>\n <p className=\"text-2xl font-bold mt-1\">{competitorCount}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-muted-foreground text-xs\">\n <TrendingUp className=\"h-4 w-4\" />\n Business Value\n </div>\n <p className=\"text-2xl font-bold mt-1\">{feature.businessValue ?? 0}</p>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <BarChart3 className=\"h-4 w-4\" />\n Vote Timeline\n </CardTitle>\n </CardHeader>\n <CardContent>\n {voteTimeline.length === 0 ? (\n <p className=\"text-sm text-muted-foreground text-center py-8\">\n No vote data available\n </p>\n ) : (\n <div className=\"flex items-end gap-1 h-48\">\n {voteTimeline.map((d) => (\n <div key={d.date} className=\"flex-1 flex flex-col items-center gap-1\">\n <div className=\"w-full flex justify-center\">\n <div\n className=\"w-5 bg-primary rounded-t transition-all\"\n style={{ height: `${(d.count / maxTimelineCount) * 160}px` }}\n />\n </div>\n <span className=\"text-[10px] text-muted-foreground truncate max-w-[40px]\">\n {d.date}\n </span>\n </div>\n ))}\n </div>\n )}\n <p className=\"text-xs text-muted-foreground text-center mt-2\">Votes over time</p>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Vote Weight Distribution</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {Object.entries(votesByWeight).length === 0 ? (\n <p className=\"text-sm text-muted-foreground text-center py-8\">No votes recorded</p>\n ) : (\n Object.entries(votesByWeight)\n .sort(([a], [b]) => Number(a) - Number(b))\n .map(([weight, count]) => (\n <div key={weight}>\n <div className=\"flex justify-between text-sm mb-1\">\n <span>Weight {weight}</span>\n <span className=\"font-semibold\">{count} votes</span>\n </div>\n <div className=\"w-full h-3 rounded-full bg-muted overflow-hidden\">\n <div\n className=\"h-full rounded-full bg-primary\"\n style={{ width: `${(count / maxVoteWeight) * 100}%` }}\n />\n </div>\n </div>\n ))\n )}\n </CardContent>\n </Card>\n </div>\n\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <Card>\n <CardHeader>\n <CardTitle>All feature requests - status distribution</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {Object.entries(statusDistribution).map(([status, count]) => {\n const total = featureCounts?.all ?? 0;\n const pct = total > 0 ? Math.round((count / total) * 100) : 0;\n const colors: Record<string, string> = {\n SUBMITTED: 'bg-gray-400',\n UNDER_REVIEW: 'bg-yellow-400',\n PLANNED: 'bg-blue-400',\n IN_PROGRESS: 'bg-purple-400',\n COMPLETED: 'bg-green-400',\n DECLINED: 'bg-red-400',\n DUPLICATE: 'bg-orange-400',\n };\n return (\n <div key={status}>\n <div className=\"flex justify-between text-sm mb-1\">\n <span className=\"capitalize\">{status.toLowerCase().replace('_', ' ')}</span>\n <span className=\"font-medium\">\n {count} ({pct}%)\n </span>\n </div>\n <div className=\"w-full h-2 rounded-full bg-muted overflow-hidden\">\n <div\n className={`h-full rounded-full ${colors[status] ?? 'bg-gray-300'}`}\n style={{ width: `${pct}%` }}\n />\n </div>\n </div>\n );\n })}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Request impact</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <div className=\"text-center p-4 bg-muted rounded-md\">\n <p className=\"text-3xl font-bold text-primary\">{feature.voteCount}</p>\n <p className=\"text-sm text-muted-foreground\">total votes received</p>\n </div>\n <div className=\"grid grid-cols-2 gap-2 text-center\">\n <div className=\"p-3 border rounded-md\">\n <p className=\"text-lg font-semibold\">{feature.businessValue ?? 0}</p>\n <p className=\"text-xs text-muted-foreground\">business value</p>\n </div>\n <div className=\"p-3 border rounded-md\">\n <p className=\"text-lg font-semibold\">{feature.priorityScore ?? 0}</p>\n <p className=\"text-xs text-muted-foreground\">priority score</p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AASA,IAAM,IAAgC,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCzC,SAAgB,IAAmC;CAEjD,IAAM,IADS,GAA2B,CACjB,MAAM,IAEzB,EACJ,SACA,YACA,aAGA,EAA8B,GAA+B;EAC3D,WAAW,EAAE,IAAI,GAAW;EAC5B,MAAM,CAAC;EACR,CAAC,EAIE,IAAgB,GAAkB;AAMxC,KAAI,KAAW,CAAC,EACd,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD,EAAS,WAAU,8CAA+C,CAAA;EAC9D,CAAA;AAIV,KAAI,EACF,QAAO,kBAAC,OAAD;EAAK,WAAU;YAAf,CAAsC,8BAA2B,EAAM,QAAc;;CAG9F,IAAM,IAAU,GAAM;AACtB,KAAI,CAAC,EAAS,QAAO,kBAAC,OAAD;EAAK,WAAU;YAA4B;EAAgC,CAAA;CAEhG,IAAM,IAAoB,EAAQ,SAAS,EAAE,EACvC,IAAkB,EAAQ,aAAa,UAAU,GAGjD,IAAwC,EAAE;AAChD,MAAK,IAAM,KAAK,EACd,GAAc,EAAE,WAAW,EAAc,EAAE,WAAW,KAAK;CAE7D,IAAM,IAAgB,KAAK,IAAI,GAAG,OAAO,OAAO,EAAc,EAAE,EAAE,EAG5D,IAAkD,EAAE,EACpD,IAAsC,EAAE;AAC9C,MAAK,IAAM,KAAK,GAAO;EACrB,IAAM,IAAO,IAAI,KAAK,EAAE,UAAU,CAAC,oBAAoB;AACvD,IAAY,MAAS,EAAY,MAAS,KAAK;;AAEjD,MAAK,IAAM,CAAC,GAAM,MAAU,OAAO,QAAQ,EAAY,CACrD,GAAa,KAAK;EAAE;EAAM;EAAO,CAAC;AAEpC,GAAa,MAAM,GAAG,MAAM,IAAI,KAAK,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACpF,IAAM,IAAmB,KAAK,IAAI,GAAG,EAAa,KAAK,MAAM,EAAE,MAAM,EAAE,EAAE,EAEnE,IAA6C,IAC/C,OAAO,YAAY,OAAO,QAAQ,EAAc,SAAS,CAAC,QAAQ,GAAG,OAAO,IAAI,EAAE,CAAC,GACnF,EAAE;AAEN,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,WAAU;cAAyB;IAA8B,CAAA,EACrE,kBAAC,KAAD;IAAG,WAAU;cAAb;KACG,EAAQ;KAAM;KAAI,EAAQ,OAAO,aAAa,CAAC,QAAQ,KAAK,IAAI;KAC/D;MACA,EAAA,CAAA;GAEN,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;MAAa,WAAU;gBAAvB,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,GAAD,EAAQ,WAAU,WAAY,CAAA,EAAA,iBAE1B;UACN,kBAAC,KAAD;OAAG,WAAU;iBAA2B,EAAQ,iBAAiB;OAAM,CAAA,CAC3D;SACT,CAAA;KACP,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;MAAa,WAAU;gBAAvB;OACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA,EAAA,cAE5B;;OACN,kBAAC,KAAD;QAAG,WAAU;kBAA2B,EAAQ;QAAc,CAAA;OAC9D,kBAAC,KAAD;QAAG,WAAU;kBAAb;SAA2C;SAClC,EAAQ;SAAS;SAAK,EAAW,GAAe,IAAI;SACzD;;OACQ;SACT,CAAA;KACP,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;MAAa,WAAU;gBAAvB,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA,EAAA,cAEzB;UACN,kBAAC,KAAD;OAAG,WAAU;iBAA2B;OAAoB,CAAA,CAChD;SACT,CAAA;KACP,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;MAAa,WAAU;gBAAvB,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,GAAD,EAAY,WAAU,WAAY,CAAA,EAAA,iBAE9B;UACN,kBAAC,KAAD;OAAG,WAAU;iBAA2B,EAAQ,iBAAiB;OAAM,CAAA,CAC3D;SACT,CAAA;KACH;;GAEN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;KAAW,WAAU;eAArB,CACE,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA,EAAA,gBAEvB;QACD,CAAA,EACb,kBAAC,GAAD,EAAA,UAAA,CACG,EAAa,WAAW,IACvB,kBAAC,KAAD;KAAG,WAAU;eAAiD;KAE1D,CAAA,GAEJ,kBAAC,OAAD;KAAK,WAAU;eACZ,EAAa,KAAK,MACjB,kBAAC,OAAD;MAAkB,WAAU;gBAA5B,CACE,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,OAAD;QACE,WAAU;QACV,OAAO,EAAE,QAAQ,GAAI,EAAE,QAAQ,IAAoB,IAAI,KAAK;QAC5D,CAAA;OACE,CAAA,EACN,kBAAC,QAAD;OAAM,WAAU;iBACb,EAAE;OACE,CAAA,CACH;QAVI,EAAE,KAUN,CACN;KACE,CAAA,EAER,kBAAC,KAAD;KAAG,WAAU;eAAiD;KAAmB,CAAA,CACrE,EAAA,CAAA,CACT,EAAA,CAAA,EAEP,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAW,4BAAoC,CAAA,EACpC,CAAA,EACb,kBAAC,GAAD;KAAa,WAAU;eACpB,OAAO,QAAQ,EAAc,CAAC,WAAW,IACxC,kBAAC,KAAD;MAAG,WAAU;gBAAiD;MAAqB,CAAA,GAEnF,OAAO,QAAQ,EAAc,CAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CACzC,KAAK,CAAC,GAAQ,OACb,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD,EAAA,UAAA,CAAM,WAAQ,EAAc,EAAA,CAAA,EAC5B,kBAAC,QAAD;OAAM,WAAU;iBAAhB,CAAiC,GAAM,SAAa;SAChD;SACN,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,OAAD;OACE,WAAU;OACV,OAAO,EAAE,OAAO,GAAI,IAAQ,IAAiB,IAAI,IAAI;OACrD,CAAA;MACE,CAAA,CACF,EAAA,EAXI,EAWJ,CACN;KAEM,CAAA,CACT,EAAA,CAAA,CACH;;GAEN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAW,8CAAsD,CAAA,EACtD,CAAA,EACb,kBAAC,GAAD;KAAa,WAAU;eACpB,OAAO,QAAQ,EAAmB,CAAC,KAAK,CAAC,GAAQ,OAAW;MAC3D,IAAM,IAAQ,GAAe,OAAO,GAC9B,IAAM,IAAQ,IAAI,KAAK,MAAO,IAAQ,IAAS,IAAI,GAAG;AAU5D,aACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,QAAD;QAAM,WAAU;kBAAc,EAAO,aAAa,CAAC,QAAQ,KAAK,IAAI;QAAQ,CAAA,EAC5E,kBAAC,QAAD;QAAM,WAAU;kBAAhB;SACG;SAAM;SAAG;SAAI;SACT;UACH;UACN,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,OAAD;QACE,WAAW,uBAnBoB;SACrC,WAAW;SACX,cAAc;SACd,SAAS;SACT,aAAa;SACb,WAAW;SACX,UAAU;SACV,WAAW;SACZ,CAWgD,MAAW;QACpD,OAAO,EAAE,OAAO,GAAG,EAAI,IAAI;QAC3B,CAAA;OACE,CAAA,CACF,EAAA,EAbI,EAaJ;OAER;KACU,CAAA,CACT,EAAA,CAAA,EAEP,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAW,kBAA0B,CAAA,EAC1B,CAAA,EACb,kBAAC,GAAD;KAAa,WAAU;eAAvB,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,KAAD;OAAG,WAAU;iBAAmC,EAAQ;OAAc,CAAA,EACtE,kBAAC,KAAD;OAAG,WAAU;iBAAgC;OAAwB,CAAA,CACjE;SACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,KAAD;QAAG,WAAU;kBAAyB,EAAQ,iBAAiB;QAAM,CAAA,EACrE,kBAAC,KAAD;QAAG,WAAU;kBAAgC;QAAkB,CAAA,CAC3D;UACN,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,KAAD;QAAG,WAAU;kBAAyB,EAAQ,iBAAiB;QAAM,CAAA,EACrE,kBAAC,KAAD;QAAG,WAAU;kBAAgC;QAAkB,CAAA,CAC3D;SACF;QACM;OACT,EAAA,CAAA,CACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsFeatureDetailPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsFeatureDetailPagePage.tsx"],"names":[],"mappings":"AAsGA,wBAAgB,6BAA6B,4CA8R5C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsFeatureDetailPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsFeatureDetailPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Badge } from '@burdenoff/fe-libs/ui';\nimport { Star, ThumbsUp, MessageSquare, Target, Loader2 } from 'lucide-react';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { detailPath } from '../utils/rowNavigation';\nimport { FeatureTriageActions, isOpenRequest, isSnoozed } from '../controls/FeatureTriage';\nimport { useParams } from 'react-router';\nimport { PersonName } from '../people/People';\nimport {\n FeatureHeaderActions,\n FeaturePrioritizationCard,\n FeatureVoteButton,\n} from '../controls/FeatureControls';\nimport { CompetitorLinkCard } from '../controls/CompetitorControls';\nimport { FeatureInitiativeCard } from '../roadmaps/FeatureInitiativeCard';\nimport { CategoryBadge, RatingDisplay } from '../controls/FeedbackControls';\nimport { ProductFeatureLinkCard } from '../product/ProductFeatureLinkCard';\n\nconst GET_FEATURE_REQUEST = gql`\n query GetFeatureRequest($id: ID!) {\n planmagnetFeatureRequest(id: $id) {\n id\n workspaceId\n projectId\n title\n description\n status\n businessValue\n effortEstimate\n priorityScore\n voteCount\n submittedBy\n workItemId\n tags\n snoozedUntil\n rating\n category\n isAnonymous\n moscow\n kano\n valueScore\n effortScore\n valueEffortQuadrant\n reach\n impact\n confidence\n riceScore\n declineReason\n duplicateOfId\n duplicateOf {\n id\n title\n }\n triagedAt\n triagedBy\n createdAt\n updatedAt\n productId\n roadmapItem {\n id\n title\n roadmap {\n id\n name\n }\n }\n votes {\n id\n voterId\n weight\n comment\n createdAt\n }\n competitors {\n id\n name\n description\n website\n }\n }\n }\n`;\n\ninterface FeatureVoteNode {\n id: string;\n voterId: string;\n weight: number;\n comment: string | null;\n createdAt: string;\n}\n\ninterface CompetitorNode {\n id: string;\n name: string;\n description: string | null;\n website: string | null;\n}\n\nexport function ProductsFeatureDetailPagePage() {\n const { workspaceId, currentUser } = usePlanMagnet();\n const navigate = usePlanMagnetNavigate();\n // Snooze state is read against the moment the page opened (Date.now() may not run during render).\n const [now] = useState(() => Date.now());\n const params = useParams<{ id: string }>();\n const featureId = params.id ?? '';\n\n const {\n data,\n loading,\n error,\n } = // eslint-disable-next-line @typescript-eslint/no-explicit-any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useQuery<Record<string, any>>(GET_FEATURE_REQUEST, {\n variables: { id: featureId },\n skip: !featureId,\n });\n\n // Only before the first load: a refetch must not blank the page (it\n\n // unmounts every component on it and loses their state).\n\n if (loading && !data) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"p-6 text-destructive\">Failed to load feature request: {error.message}</div>\n );\n }\n\n const feature = data?.planmagnetFeatureRequest;\n if (!feature) return <div className=\"p-6 text-muted-foreground\">Feature request not found.</div>;\n\n const votes: FeatureVoteNode[] = feature.votes ?? [];\n const competitors: CompetitorNode[] = feature.competitors ?? [];\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">{feature.title}</h1>\n <p className=\"text-sm text-muted-foreground\">\n Submitted by: <PersonName id={feature.submittedBy} /> &middot; Effort:{' '}\n {feature.effortEstimate ?? 'N/A'}\n </p>\n </div>\n {/* Vote, status, Edit and Delete (BOFF-7951): the request was read-only. */}\n <div className=\"flex flex-col items-end gap-2\">\n <FeatureVoteButton\n key={feature.id}\n featureId={feature.id}\n voted={votes.some((v) => v.voterId === currentUser?.id)}\n />\n <FeatureHeaderActions feature={feature} />\n </div>\n </div>\n\n {/* Triage (P1.3): an undecided request is accepted, declined, snoozed or merged from here. */}\n {isOpenRequest(feature.status) && (\n <Card data-testid=\"triage-card\">\n <CardHeader>\n <CardTitle>Triage</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n <p className=\"text-sm text-muted-foreground\">\n {isSnoozed(feature.snoozedUntil, now)\n ? `Snoozed until ${new Date(feature.snoozedUntil).toLocaleString()} β€” it returns to the triage queue then.`\n : feature.status === 'SUBMITTED'\n ? 'Waiting for a decision.'\n : 'Under review: accept it as planned, decline it, or merge it into its original.'}\n </p>\n <FeatureTriageActions feature={feature} now={now} />\n </CardContent>\n </Card>\n )}\n {feature.status === 'DECLINED' && feature.declineReason && (\n <Card data-testid=\"decline-reason\">\n <CardContent className=\"pt-4 text-sm\">\n <span className=\"font-medium\">Declined: </span>\n {feature.declineReason}\n </CardContent>\n </Card>\n )}\n {feature.status === 'DUPLICATE' && feature.duplicateOfId && (\n <Card data-testid=\"duplicate-of\">\n <CardContent className=\"pt-4 text-sm\">\n <span className=\"font-medium\">Duplicate of </span>\n {feature.duplicateOf ? (\n <button\n type=\"button\"\n className=\"text-primary underline-offset-2 hover:underline\"\n onClick={() =>\n navigate(detailPath('/products/feature-detail-page', feature.duplicateOf.id))\n }\n >\n {feature.duplicateOf.title}\n </button>\n ) : (\n <span className=\"text-muted-foreground\">a request that has since been deleted</span>\n )}{' '}\n β€” its votes were moved there.\n </CardContent>\n </Card>\n )}\n\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\n <Card>\n <CardContent className=\"pt-4 text-center\">\n <Target className=\"h-5 w-5 mx-auto text-primary\" />\n <p className=\"text-2xl font-bold mt-1\">{feature.priorityScore ?? 0}</p>\n <p className=\"text-xs text-muted-foreground\">Priority Score</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4 text-center\">\n <ThumbsUp className=\"h-5 w-5 mx-auto text-green-500\" />\n <p className=\"text-2xl font-bold mt-1\">{feature.voteCount}</p>\n <p className=\"text-xs text-muted-foreground\">Votes</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4 text-center\">\n <Star className=\"h-5 w-5 mx-auto text-yellow-500\" />\n <p className=\"text-2xl font-bold mt-1\">{feature.businessValue ?? 0}</p>\n <p className=\"text-xs text-muted-foreground\">Business Value</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4 text-center\">\n <MessageSquare className=\"h-5 w-5 mx-auto text-blue-500\" />\n <p className=\"text-2xl font-bold mt-1\">{competitors.length}</p>\n <p className=\"text-xs text-muted-foreground\">Competitors</p>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <div className=\"lg:col-span-2 space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle>Description</CardTitle>\n </CardHeader>\n <CardContent>\n <p className=\"text-sm\">{feature.description ?? 'No description provided.'}</p>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Votes ({votes.length})</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {votes.length === 0 && <p className=\"text-sm text-muted-foreground\">No votes yet.</p>}\n {votes.map((vote) => (\n <div\n key={vote.id}\n className=\"flex items-start justify-between border rounded-md p-3\"\n >\n <div>\n <p className=\"text-sm font-medium\">\n Voter: <PersonName id={vote.voterId} />\n </p>\n {vote.comment && (\n <p className=\"text-xs text-muted-foreground mt-1\">{vote.comment}</p>\n )}\n </div>\n <div className=\"flex items-center gap-1\">\n <ThumbsUp className=\"h-3 w-3 text-green-500\" />\n <span className=\"text-sm font-bold\">{vote.weight}</span>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n\n {/* Competitor tracking (BOFF-8047): add, remove and browse to the competitors linked here. */}\n <Card>\n <CardHeader>\n <CardTitle>Competitors ({competitors.length})</CardTitle>\n </CardHeader>\n <CardContent>\n <CompetitorLinkCard featureRequestId={feature.id} competitors={competitors} />\n </CardContent>\n </Card>\n </div>\n\n <div className=\"space-y-6\">\n {/* PRM-01: the product feature (a capability the team builds) that answers this request. */}\n <ProductFeatureLinkCard featureRequestId={feature.id} />\n {/* PRM-24: the roadmap initiative that addresses this request. */}\n <FeatureInitiativeCard\n featureId={feature.id}\n productId={feature.productId ?? null}\n initiative={feature.roadmapItem ?? null}\n />\n {/* PRM-27: MoSCoW/Kano/Value-Effort scoring, edited in place with the computed quadrant read back\n from the save's own response. */}\n <FeaturePrioritizationCard feature={feature} />\n <Card>\n <CardHeader>\n <CardTitle>Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3 text-sm\">\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Status</span>\n <Badge variant=\"secondary\" className=\"capitalize\">\n {feature.status.toLowerCase().replace('_', ' ')}\n </Badge>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Priority Score</span>\n <Badge variant=\"outline\">{feature.priorityScore ?? 'N/A'}</Badge>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Effort</span>\n <Badge variant=\"outline\" className=\"capitalize\">\n {feature.effortEstimate ?? 'N/A'}\n </Badge>\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Business Value</span>\n <span className=\"font-medium\">{feature.businessValue ?? 'N/A'}</span>\n </div>\n {/* CWF-15 */}\n <div className=\"flex justify-between items-center\">\n <span className=\"text-muted-foreground\">Rating</span>\n <RatingDisplay rating={feature.rating ?? null} />\n </div>\n <div className=\"flex justify-between items-center\">\n <span className=\"text-muted-foreground\">Category</span>\n {feature.category ? (\n <CategoryBadge category={feature.category} />\n ) : (\n <span className=\"text-sm text-muted-foreground\">Not set</span>\n )}\n </div>\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Submitted By</span>\n <PersonName id={feature.submittedBy} />\n </div>\n {feature.triagedAt && (\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Decided</span>\n <span>\n {new Date(feature.triagedAt).toLocaleDateString()}\n {feature.triagedBy && (\n <>\n {' by '}\n <PersonName id={feature.triagedBy} />\n </>\n )}\n </span>\n </div>\n )}\n <div className=\"flex justify-between\">\n <span className=\"text-muted-foreground\">Updated</span>\n <span>{new Date(feature.updatedAt).toLocaleDateString()}</span>\n </div>\n </CardContent>\n </Card>\n\n {feature.tags?.length > 0 && (\n <Card>\n <CardHeader>\n <CardTitle>Tags</CardTitle>\n </CardHeader>\n <CardContent className=\"flex flex-wrap gap-1\">\n {feature.tags.map((tag: string) => (\n <Badge key={tag} variant=\"outline\" className=\"text-xs\">\n {tag}\n </Badge>\n ))}\n </CardContent>\n </Card>\n )}\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsFeaturesPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsFeaturesPagePage.tsx"],"names":[],"mappings":"AA8GA,wBAAgB,wBAAwB,4CAsXvC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsFeaturesPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsFeaturesPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Badge, Button } from '@burdenoff/fe-libs/ui';\nimport {\n Star,\n Plus,\n ThumbsUp,\n MessageSquare,\n Target,\n Filter,\n ArrowUpDown,\n Loader2,\n Gauge,\n} from 'lucide-react';\nimport { countLabel, useFeatureCounts } from '../hooks/useCounts';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { rowLinkProps, detailPath } from '../utils/rowNavigation';\nimport { PersonName } from '../people/People';\nimport { FeatureTriageActions, isSnoozed } from '../controls/FeatureTriage';\nimport { CategoryBadge, RatingDisplay } from '../controls/FeedbackControls';\nimport {\n MOSCOW_VALUES,\n MOSCOW_META,\n KANO_VALUES,\n KANO_META,\n QUADRANT_VALUES,\n QUADRANT_META,\n QuadrantBadge,\n riceScoreMissingHint,\n} from '../controls/PrioritizationControls';\n\nconst LIST_FEATURE_REQUESTS = gql`\n query ListFeatureRequests(\n $workspaceId: ID!\n $filter: PlanmagnetFeatureRequestFilter\n $pagination: PlanmagnetPaginationInput\n $orderBy: PlanmagnetFeatureOrder\n ) {\n planmagnetFeatureRequests(\n workspaceId: $workspaceId\n filter: $filter\n pagination: $pagination\n orderBy: $orderBy\n ) {\n items {\n id\n title\n description\n status\n businessValue\n effortEstimate\n priorityScore\n voteCount\n submittedBy\n tags\n projectId\n snoozedUntil\n moscow\n kano\n valueEffortQuadrant\n reach\n impact\n confidence\n effortScore\n riceScore\n rating\n category\n createdAt\n updatedAt\n }\n totalCount\n }\n }\n`;\n\ninterface FeatureRequestNode {\n id: string;\n title: string;\n description: string | null;\n status: string;\n businessValue: number | null;\n effortEstimate: string | null;\n priorityScore: number | null;\n voteCount: number;\n submittedBy: string;\n tags: string[];\n reach: number | null;\n impact: number | null;\n confidence: number | null;\n effortScore: number | null;\n riceScore: number | null;\n rating: number | null;\n category: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nconst statusColor: Record<string, string> = {\n SUBMITTED: 'bg-gray-100 text-gray-800',\n UNDER_REVIEW: 'bg-yellow-100 text-yellow-800',\n PLANNED: 'bg-blue-100 text-blue-800',\n IN_PROGRESS: 'bg-purple-100 text-purple-800',\n COMPLETED: 'bg-green-100 text-green-800',\n DECLINED: 'bg-red-100 text-red-800',\n DUPLICATE: 'bg-orange-100 text-orange-800',\n};\n\nexport function ProductsFeaturesPagePage() {\n const navigate = usePlanMagnetNavigate();\n const { workspaceId } = usePlanMagnet();\n const [statusFilter, setStatusFilter] = useState<string>('all');\n // Snooze state is read against the moment the page opened (Date.now() may not run during render).\n const [now] = useState(() => Date.now());\n // Sorting happens on the server over every request (BOFF-7965: it re-sorted only the 50 loaded rows).\n const [sortBy, setSortBy] = useState<'NEWEST' | 'MOST_VOTED'>('NEWEST');\n // PRM-26: riceScore is computed, not a stored column (utils/prioritization.ts#computeRiceScore) β€” there is\n // no server `orderBy` value for it (PlanmagnetFeatureOrder only has NEWEST/MOST_VOTED), so this can only ever\n // re-sort the page already loaded above, never every matching request. Kept as its own toggle, independent\n // of `sortBy`, specifically so it is never confused for a third server-side order β€” the BOFF-7965 regression\n // this file's own comment above warns about.\n const [riceSort, setRiceSort] = useState(false);\n // PRM-27: MoSCoW/Kano/quadrant are server filters too, combined with the status tabs above β€” not a\n // client-side re-filter of the 50 loaded rows (same reasoning as BOFF-7965 for sorting).\n const [moscowFilter, setMoscowFilter] = useState('');\n const [kanoFilter, setKanoFilter] = useState('');\n const [quadrantFilter, setQuadrantFilter] = useState('');\n const counts = useFeatureCounts();\n\n const baseFilter =\n statusFilter === 'TRIAGE'\n ? { triage: true }\n : statusFilter === 'SNOOZED'\n ? { snoozed: true }\n : statusFilter !== 'all'\n ? { status: statusFilter }\n : {};\n const filter = {\n ...baseFilter,\n ...(moscowFilter ? { moscow: moscowFilter } : {}),\n ...(kanoFilter ? { kano: kanoFilter } : {}),\n ...(quadrantFilter ? { quadrant: quadrantFilter } : {}),\n };\n\n const {\n data,\n loading,\n error,\n } = // eslint-disable-next-line @typescript-eslint/no-explicit-any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useQuery<Record<string, any>>(LIST_FEATURE_REQUESTS, {\n variables: {\n workspaceId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: { first: 50 },\n orderBy: sortBy,\n },\n skip: !workspaceId,\n });\n\n // Only before the first load: a refetch must not blank the page (it\n\n // unmounts every component on it and loses their state).\n\n if (loading && !data) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"p-6 text-destructive\">Failed to load feature requests: {error.message}</div>\n );\n }\n\n const features: FeatureRequestNode[] = data?.planmagnetFeatureRequests?.items ?? [];\n const totalCount = data?.planmagnetFeatureRequests?.totalCount ?? 0;\n\n // PRM-26 β€” client-side only (see the `riceSort` state comment above): never claims to be a full re-sort of\n // every matching request, only of the up-to-50 rows the server already returned in `sortBy` order. Unscored\n // (null) rows sort last either way, never first as if they scored 0.\n const sorted = riceSort\n ? [...features].sort((a, b) => {\n if (a.riceScore == null && b.riceScore == null) return 0;\n if (a.riceScore == null) return 1;\n if (b.riceScore == null) return -1;\n return b.riceScore - a.riceScore;\n })\n : features;\n\n const statuses = [\n 'all',\n 'TRIAGE',\n 'SNOOZED',\n 'SUBMITTED',\n 'UNDER_REVIEW',\n 'PLANNED',\n 'IN_PROGRESS',\n 'COMPLETED',\n 'DECLINED',\n 'DUPLICATE',\n ];\n\n // Tiles are unfiltered server counts; the tabs change only the list (BOFF-7965).\n const stats = {\n total: countLabel(counts?.all),\n open: countLabel(counts?.open),\n inProgress: countLabel(counts?.byStatus.IN_PROGRESS),\n completed: countLabel(counts?.byStatus.COMPLETED),\n };\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n {/* PRM-01: these are feature REQUESTS (customer/user feedback); a product's own features β€”\n capabilities the team builds β€” live on each product's page. Path and name unchanged. */}\n <h1 className=\"text-2xl font-semibold\">Feature requests</h1>\n {/* Under a tab, the count is of what matches it (BOFF-7990). */}\n <p className=\"text-sm text-muted-foreground\">\n {statusFilter === 'all'\n ? `${stats.total} feature requests`\n : statusFilter === 'TRIAGE'\n ? `${totalCount} waiting for triage`\n : `${totalCount} ${statusFilter.toLowerCase().replace('_', ' ')} match`}\n </p>\n </div>\n <Button size=\"sm\" onClick={() => navigate('/products/new-feature-page')}>\n <Plus className=\"mr-1 h-4 w-4\" />\n New feature request\n </Button>\n </div>\n\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\n <Card>\n <CardContent className=\"pt-4\">\n <p className=\"text-xs text-muted-foreground\">Total feature requests</p>\n <p className=\"text-xl font-bold\">{stats.total}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <p className=\"text-xs text-muted-foreground\">In Progress</p>\n <p className=\"text-xl font-bold\">{stats.inProgress}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <p className=\"text-xs text-muted-foreground\">Completed</p>\n <p className=\"text-xl font-bold\">{stats.completed}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <p className=\"text-xs text-muted-foreground\">Open</p>\n <p className=\"text-xl font-bold\">{stats.open}</p>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"flex items-center justify-between flex-wrap gap-2\">\n <div className=\"flex items-center gap-2\">\n <Filter className=\"h-4 w-4 text-muted-foreground\" />\n {statuses.map((s) => (\n <button\n key={s}\n onClick={() => setStatusFilter(s)}\n className={`px-2 py-1 text-xs rounded-md capitalize ${statusFilter === s ? 'bg-primary text-primary-foreground' : 'bg-muted text-muted-foreground'}`}\n >\n {s === 'all'\n ? 'All'\n : s === 'TRIAGE'\n ? `Triage (${countLabel(counts?.triage)})`\n : s === 'SNOOZED'\n ? `Snoozed (${countLabel(counts?.snoozed)})`\n : s.toLowerCase().replace('_', ' ')}\n </button>\n ))}\n </div>\n <div className=\"flex items-center gap-2\">\n <ArrowUpDown className=\"h-4 w-4 text-muted-foreground\" />\n {(['NEWEST', 'MOST_VOTED'] as const).map((s) => (\n <button\n key={s}\n onClick={() => setSortBy(s)}\n className={`px-2 py-1 text-xs rounded-md ${!riceSort && sortBy === s ? 'bg-primary text-primary-foreground' : 'bg-muted text-muted-foreground'}`}\n >\n {s === 'NEWEST' ? 'Newest' : 'Most voted'}\n </button>\n ))}\n {/* PRM-26 β€” see the `riceSort` state comment: re-sorts only the rows already loaded above, never a\n server-side order (PlanmagnetFeatureOrder has no RICE value). */}\n <button\n type=\"button\"\n aria-pressed={riceSort}\n data-testid=\"feature-sort-rice\"\n onClick={() => setRiceSort((v) => !v)}\n className={`px-2 py-1 text-xs rounded-md ${riceSort ? 'bg-primary text-primary-foreground' : 'bg-muted text-muted-foreground'}`}\n >\n RICE score\n </button>\n </div>\n </div>\n {riceSort && (\n <p className=\"text-xs text-muted-foreground\" data-testid=\"feature-sort-rice-note\">\n Sorted by RICE score within the {sorted.length} loaded results above β€” not a server-wide\n sort.\n </p>\n )}\n\n {/* PRM-27: MoSCoW/Kano/Value-Effort quadrant filters β€” server-side, combined with the status tabs above. */}\n <div className=\"flex flex-wrap items-center gap-3\">\n <div className=\"flex items-center gap-1\">\n <label htmlFor=\"feature-filter-moscow\" className=\"text-xs text-muted-foreground\">\n MoSCoW\n </label>\n <select\n id=\"feature-filter-moscow\"\n data-testid=\"feature-filter-moscow\"\n className=\"rounded-md border border-input bg-background px-2 py-1 text-xs\"\n value={moscowFilter}\n onChange={(e) => setMoscowFilter(e.target.value)}\n >\n <option value=\"\">All</option>\n {MOSCOW_VALUES.map((v) => (\n <option key={v} value={v}>\n {MOSCOW_META[v].label}\n </option>\n ))}\n </select>\n </div>\n <div className=\"flex items-center gap-1\">\n <label htmlFor=\"feature-filter-kano\" className=\"text-xs text-muted-foreground\">\n Kano\n </label>\n <select\n id=\"feature-filter-kano\"\n data-testid=\"feature-filter-kano\"\n className=\"rounded-md border border-input bg-background px-2 py-1 text-xs\"\n value={kanoFilter}\n onChange={(e) => setKanoFilter(e.target.value)}\n >\n <option value=\"\">All</option>\n {KANO_VALUES.map((v) => (\n <option key={v} value={v}>\n {KANO_META[v].label}\n </option>\n ))}\n </select>\n </div>\n <div className=\"flex items-center gap-1\">\n <label htmlFor=\"feature-filter-quadrant\" className=\"text-xs text-muted-foreground\">\n Quadrant\n </label>\n <select\n id=\"feature-filter-quadrant\"\n data-testid=\"feature-filter-quadrant\"\n className=\"rounded-md border border-input bg-background px-2 py-1 text-xs\"\n value={quadrantFilter}\n onChange={(e) => setQuadrantFilter(e.target.value)}\n >\n <option value=\"\">All</option>\n {QUADRANT_VALUES.map((v) => (\n <option key={v} value={v}>\n {QUADRANT_META[v].label}\n </option>\n ))}\n </select>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n {sorted.map((feature) => (\n <Card\n key={feature.id}\n {...rowLinkProps(\n () => navigate(detailPath('/products/feature-detail-page', feature.id)),\n feature.title\n )}\n >\n <CardContent className=\"py-4\">\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1 space-y-2\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">{feature.title}</span>\n <span\n className={`text-[10px] px-1.5 py-0.5 rounded-full capitalize ${statusColor[feature.status] ?? 'bg-gray-100'}`}\n >\n {feature.status.toLowerCase().replace('_', ' ')}\n </span>\n {/* PRM-27 β€” hidden when unscored so most cards (not yet prioritized) stay uncluttered. */}\n <QuadrantBadge quadrant={feature.valueEffortQuadrant} hideWhenUnscored />\n </div>\n <p className=\"text-xs text-muted-foreground\">{feature.description}</p>\n <div className=\"flex items-center gap-4 text-xs text-muted-foreground\">\n <span>Effort: {feature.effortEstimate ?? 'N/A'}</span>\n {/* By name, not user UUID (BOFF-7950). */}\n <span>\n Submitted by: <PersonName id={feature.submittedBy} />\n </span>\n <span>{new Date(feature.updatedAt).toLocaleDateString()}</span>\n </div>\n {/* CWF-15: structured feedback β€” rating/category, hidden when neither is set. */}\n {(feature.rating != null || feature.category) && (\n <div className=\"flex items-center gap-2\">\n {feature.rating != null && <RatingDisplay rating={feature.rating} />}\n <CategoryBadge category={feature.category} />\n </div>\n )}\n {isSnoozed(feature.snoozedUntil, now) && (\n <p className=\"text-xs text-muted-foreground\">\n Snoozed until {new Date(feature.snoozedUntil).toLocaleDateString()}\n </p>\n )}\n <FeatureTriageActions feature={feature} now={now} />\n {feature.tags.length > 0 && (\n <div className=\"flex gap-1\">\n {feature.tags.map((tag) => (\n <Badge key={tag} variant=\"outline\" className=\"text-[10px]\">\n {tag}\n </Badge>\n ))}\n </div>\n )}\n </div>\n <div className=\"flex items-center gap-4 shrink-0\">\n <div className=\"text-center\">\n <div className=\"flex items-center gap-1\">\n <Target className=\"h-3 w-3 text-primary\" />\n <span className=\"text-sm font-bold\">{feature.priorityScore ?? 0}</span>\n </div>\n <p className=\"text-[10px] text-muted-foreground\">Priority</p>\n </div>\n <div className=\"text-center\">\n <div className=\"flex items-center gap-1\">\n <ThumbsUp className=\"h-3 w-3 text-green-500\" />\n <span className=\"text-sm font-bold\">{feature.voteCount}</span>\n </div>\n <p className=\"text-[10px] text-muted-foreground\">Votes</p>\n </div>\n <div className=\"text-center\">\n <div className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-yellow-500\" />\n <span className=\"text-sm font-bold\">{feature.businessValue ?? 0}</span>\n </div>\n <p className=\"text-[10px] text-muted-foreground\">Value</p>\n </div>\n {/* PRM-26 */}\n <div\n className=\"text-center\"\n title={\n feature.riceScore == null\n ? (riceScoreMissingHint(feature) ?? undefined)\n : undefined\n }\n >\n <div className=\"flex items-center gap-1\">\n <Gauge className=\"h-3 w-3 text-primary\" />\n <span className=\"text-sm font-bold\" data-testid=\"feature-rice-score-cell\">\n {feature.riceScore == null ? 'β€”' : feature.riceScore.toFixed(1)}\n </span>\n </div>\n <p className=\"text-[10px] text-muted-foreground\">RICE</p>\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n {sorted.length === 0 && (\n <p className=\"text-center text-muted-foreground py-8\">\n {statusFilter === 'TRIAGE'\n ? 'Nothing waits for triage.'\n : 'No feature requests match the selected filters.'}\n </p>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsNewFeaturePagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsNewFeaturePagePage.tsx"],"names":[],"mappings":"AA4CA,wBAAgB,0BAA0B,4CAsUzC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsNewFeaturePagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsNewFeaturePagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Button, Input } from '@burdenoff/fe-libs/ui';\nimport { Save, X, Star, Loader2 } from 'lucide-react';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { throwOnError } from '../utils/mutationResult';\nimport { parseIntField } from '../utils/formValidation';\nimport { ProjectSelect, WorkItemSearchSelect } from '../controls/Pickers';\nimport {\n EMPTY_PRIORITIZATION_FORM,\n EMPTY_RICE_FORM,\n PrioritizationScoreFields,\n RiceScoreFields,\n prioritizationScoresValid,\n riceInputsValid,\n type PrioritizationFormValues,\n type RiceFormValues,\n} from '../controls/PrioritizationControls';\nimport {\n AnonymousSubmissionCheckbox,\n EMPTY_FEEDBACK_FORM,\n FeedbackFields,\n type FeedbackFormValues,\n} from '../controls/FeedbackControls';\n\nconst CREATE_FEATURE_REQUEST = gql`\n mutation CreateFeatureRequest($input: PlanmagnetCreateFeatureRequestInput!) {\n planmagnetCreateFeatureRequest(input: $input) {\n id\n title\n status\n businessValue\n effortEstimate\n priorityScore\n rating\n category\n isAnonymous\n }\n }\n`;\n\nexport function ProductsNewFeaturePagePage() {\n const { workspaceId } = usePlanMagnet();\n const navigate = usePlanMagnetNavigate();\n\n const [form, setForm] = useState({\n title: '',\n description: '',\n status: 'SUBMITTED' as string,\n businessValue: '50',\n effortEstimate: 'medium',\n tags: '',\n projectId: '',\n workItemId: '',\n });\n // PRM-27: MoSCoW/Kano/value/effort scoring, set at creation just like at edit time.\n const [prioritization, setPrioritization] =\n useState<PrioritizationFormValues>(EMPTY_PRIORITIZATION_FORM);\n // PRM-26: RICE, next to the value/effort scores above β€” effortScore is riceScore's own divisor.\n const [rice, setRice] = useState<RiceFormValues>(EMPTY_RICE_FORM);\n // CWF-15: structured feedback β€” rating, category, and whether to hide the requester.\n const [feedback, setFeedback] = useState<FeedbackFormValues>(EMPTY_FEEDBACK_FORM);\n const [isAnonymous, setIsAnonymous] = useState(false);\n\n // Navigate only once the service has accepted the feature: with fe-libs' errorPolicy 'all' a refused\n // mutation resolves, so the old onCompleted navigation could leave the form as if it had saved.\n const [createFeature, { loading: saving }] = useMutation(CREATE_FEATURE_REQUEST, {\n refetchQueries: ['ListFeatureRequests'],\n });\n const [saveError, setSaveError] = useState<string | null>(null);\n // Business value is a whole number from 0 to 100 (BOFF-7833: prod had stored 150).\n const businessValue = parseIntField(form.businessValue, { min: 0, max: 100 });\n const prioritizationValid = prioritizationScoresValid(prioritization);\n const value = parseIntField(prioritization.valueScore, { min: 1, max: 10 });\n const effort = parseIntField(prioritization.effortScore, { min: 1, max: 10 });\n const riceValid = riceInputsValid(rice);\n const reach = parseIntField(rice.reach, { min: 1, max: 10 });\n const impact = parseIntField(rice.impact, { min: 1, max: 10 });\n const confidence = parseIntField(rice.confidence, { min: 1, max: 10 });\n // CWF-15: 1-5, empty means \"not set\".\n const rating = parseIntField(feedback.rating, { min: 1, max: 5 });\n\n const statusOptions = [\n 'SUBMITTED',\n 'UNDER_REVIEW',\n 'PLANNED',\n 'IN_PROGRESS',\n 'COMPLETED',\n ] as const;\n const efforts = ['small', 'medium', 'large', 'epic'] as const;\n\n const handleCreate = async () => {\n if (\n !form.title.trim() ||\n businessValue.invalid ||\n !prioritizationValid ||\n !riceValid ||\n rating.invalid\n )\n return;\n setSaveError(null);\n try {\n await throwOnError(\n createFeature({\n variables: {\n input: {\n title: form.title,\n description: form.description || undefined,\n status: form.status,\n businessValue: businessValue.value,\n effortEstimate: form.effortEstimate,\n projectId: form.projectId || undefined,\n workItemId: form.workItemId || undefined,\n tags: form.tags\n ? form.tags\n .split(',')\n .map((t) => t.trim())\n .filter(Boolean)\n : undefined,\n moscow: prioritization.moscow || undefined,\n kano: prioritization.kano || undefined,\n valueScore: value.value,\n effortScore: effort.value,\n reach: reach.value,\n impact: impact.value,\n confidence: confidence.value,\n rating: rating.value,\n category: feedback.category.trim() || undefined,\n isAnonymous,\n },\n },\n })\n );\n navigate('/products/features-page');\n } catch (e) {\n setSaveError(e instanceof Error ? e.message : 'The feature request could not be created.');\n }\n };\n\n return (\n <div className=\"space-y-6 p-6 max-w-4xl\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">New feature request</h1>\n <p className=\"text-sm text-muted-foreground\">\n Define a new feature request with business value metrics.\n </p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => navigate('/products/features-page')}>\n <X className=\"mr-1 h-4 w-4\" />\n Cancel\n </Button>\n <Button\n size=\"sm\"\n onClick={handleCreate}\n disabled={\n saving ||\n !form.title.trim() ||\n businessValue.invalid ||\n !prioritizationValid ||\n !riceValid ||\n rating.invalid\n }\n >\n {saving ? (\n <Loader2 className=\"mr-1 h-4 w-4 animate-spin\" />\n ) : (\n <Save className=\"mr-1 h-4 w-4\" />\n )}\n Create feature request\n </Button>\n </div>\n </div>\n\n {saveError && (\n <div role=\"alert\" className=\"p-3 rounded-md bg-destructive/10 text-destructive text-sm\">\n Failed to create feature request: {saveError}\n </div>\n )}\n\n <Card>\n <CardHeader>\n <CardTitle>Request details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <label className=\"text-sm font-medium\">Title</label>\n <Input\n value={form.title}\n onChange={(e) => setForm({ ...form, title: e.target.value })}\n className=\"mt-1\"\n placeholder=\"e.g. Advanced Search Filters\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Description</label>\n <textarea\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[100px]\"\n value={form.description}\n onChange={(e) => setForm({ ...form, description: e.target.value })}\n placeholder=\"Describe what is being asked for and why it matters...\"\n />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label className=\"text-sm font-medium\">Status</label>\n <select\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm capitalize\"\n value={form.status}\n onChange={(e) => setForm({ ...form, status: e.target.value })}\n >\n {statusOptions.map((s) => (\n <option key={s} value={s}>\n {s.toLowerCase().replace('_', ' ')}\n </option>\n ))}\n </select>\n </div>\n <div>\n <label className=\"text-sm font-medium\">Effort Estimate</label>\n <select\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm capitalize\"\n value={form.effortEstimate}\n onChange={(e) => setForm({ ...form, effortEstimate: e.target.value })}\n >\n {efforts.map((e) => (\n <option key={e} value={e}>\n {e}\n </option>\n ))}\n </select>\n </div>\n </div>\n {/* BOFF-7966: a request could not be tied to a project or to the work item that delivers it, so the\n release readiness card's \"customer requests riding on unfinished work\" could never fill. */}\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label htmlFor=\"feature-project\" className=\"text-sm font-medium\">\n Project\n </label>\n <div className=\"mt-1\">\n <ProjectSelect\n id=\"feature-project\"\n value={form.projectId}\n noneLabel=\"No project\"\n onChange={(projectId) => setForm({ ...form, projectId, workItemId: '' })}\n />\n </div>\n </div>\n <div>\n <label htmlFor=\"feature-work-item\" className=\"text-sm font-medium\">\n Delivered by work item\n </label>\n <div className=\"mt-1\">\n <WorkItemSearchSelect\n id=\"feature-work-item\"\n projectId={form.projectId || undefined}\n value={form.workItemId}\n onChange={(workItemId) => setForm({ ...form, workItemId })}\n />\n </div>\n </div>\n </div>\n <div>\n <label className=\"text-sm font-medium\">Tags (comma-separated)</label>\n <Input\n value={form.tags}\n onChange={(e) => setForm({ ...form, tags: e.target.value })}\n className=\"mt-1\"\n placeholder=\"e.g. search, ux, performance\"\n />\n </div>\n </CardContent>\n </Card>\n\n {/* PRM-27: MoSCoW, Kano and Value-vs-Effort scoring β€” an alternative to the Business Value card below. */}\n <Card>\n <CardHeader>\n <CardTitle>Prioritization</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <PrioritizationScoreFields\n idPrefix=\"feature-new\"\n values={prioritization}\n onChange={setPrioritization}\n />\n {/* PRM-26: RICE, next to the value/effort scores above. */}\n <div className=\"border-t pt-3\">\n <p className=\"text-sm font-medium mb-1\">RICE</p>\n <RiceScoreFields\n idPrefix=\"feature-new\"\n values={rice}\n onChange={setRice}\n effortScoreMissing={effort.value == null}\n />\n </div>\n </CardContent>\n </Card>\n\n {/* CWF-15: structured feedback β€” rating, category and whether to hide the requester. */}\n <Card>\n <CardHeader>\n <CardTitle>Feedback</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <FeedbackFields idPrefix=\"feature-new\" values={feedback} onChange={setFeedback} />\n {rating.invalid && (\n <p role=\"alert\" className=\"text-xs text-destructive\">\n Rating is a whole number from 1 to 5.\n </p>\n )}\n <AnonymousSubmissionCheckbox\n idPrefix=\"feature-new\"\n checked={isAnonymous}\n onChange={setIsAnonymous}\n />\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Star className=\"h-4 w-4\" />\n Business Value\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <label htmlFor=\"feature-business-value\" className=\"text-sm font-medium\">\n Business Value (0-100)\n </label>\n <Input\n id=\"feature-business-value\"\n type=\"number\"\n min={0}\n max={100}\n step={1}\n value={form.businessValue}\n onChange={(e) => setForm({ ...form, businessValue: e.target.value })}\n aria-invalid={businessValue.invalid}\n className=\"mt-1\"\n />\n {businessValue.invalid ? (\n <p role=\"alert\" className=\"text-xs text-destructive mt-1\">\n Business value must be a whole number from 0 to 100.\n </p>\n ) : (\n <p className=\"text-xs text-muted-foreground mt-1\">\n How much business value does this feature deliver?\n </p>\n )}\n </div>\n\n <div className=\"p-4 bg-muted rounded-md text-center\">\n <p className=\"text-xs text-muted-foreground\">Business Value Score</p>\n <p className=\"text-3xl font-bold text-primary mt-2\">\n {businessValue.invalid || businessValue.value === undefined\n ? 'β€”'\n : businessValue.value}\n </p>\n <p className=\"text-xs text-muted-foreground\">out of 100</p>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsPrioritizationPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsPrioritizationPagePage.tsx"],"names":[],"mappings":"AAyQA,wBAAgB,8BAA8B,4CA0M7C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsPrioritizationPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsPrioritizationPagePage.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { useState, type ReactNode } from 'react';\nimport {\n Badge,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from '@burdenoff/fe-libs/ui';\nimport { Gauge, Loader2 } from 'lucide-react';\nimport { usePlanMagnet, usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { detailPath } from '../utils/rowNavigation';\nimport { readUrlParam, writeUrlParam } from '../utils/urlParam';\nimport { ProductSelect, RoadmapSelect } from '../controls/Pickers';\nimport { enumLabel } from '../controls/WorkItemControls';\nimport {\n KANO_META,\n KANO_VALUES,\n MOSCOW_META,\n MOSCOW_VALUES,\n QuadrantBadge,\n} from '../controls/PrioritizationControls';\n\n/**\n * Prioritization (PRM-27): MoSCoW, Kano and Value-vs-Effort views over either feature requests or roadmap\n * initiatives, each scoped by an optional product/roadmap. Two distinct queries back this page β€”\n * `planmagnetFeaturePrioritizationMatrix` / `planmagnetRoadmapPrioritizationMatrix` β€” because the server gates\n * them on different RBAC resources (`planmagnet-feature` vs `planmagnet-roadmap`); the page fetches whichever\n * one the source toggle selects and skips the other.\n *\n * Every bucket the server returns is already the FULL set for its method (even empty ones, all zero) β€” the\n * column/cell order below is still driven by this file's own MOSCOW_VALUES/KANO_VALUES/QUADRANT_VALUES so a\n * bucket always renders in the same place even if the server ever changed its own array order.\n */\n\nconst BUCKET_FIELDS = `\n bucket\n count\n truncated\n`;\n\nconst FEATURE_MATRIX = gql`\n query FeaturePrioritizationMatrix($workspaceId: ID!, $productId: ID, $roadmapId: ID) {\n planmagnetFeaturePrioritizationMatrix(\n workspaceId: $workspaceId\n productId: $productId\n roadmapId: $roadmapId\n ) {\n source\n moscow {\n method\n unscored\n buckets {\n ${BUCKET_FIELDS}\n featureRequests {\n id\n title\n status\n }\n }\n }\n kano {\n method\n unscored\n buckets {\n ${BUCKET_FIELDS}\n featureRequests {\n id\n title\n status\n }\n }\n }\n valueEffort {\n method\n unscored\n buckets {\n ${BUCKET_FIELDS}\n featureRequests {\n id\n title\n status\n }\n }\n }\n }\n }\n`;\n\nconst ROADMAP_MATRIX = gql`\n query RoadmapPrioritizationMatrix($workspaceId: ID!, $productId: ID, $roadmapId: ID) {\n planmagnetRoadmapPrioritizationMatrix(\n workspaceId: $workspaceId\n productId: $productId\n roadmapId: $roadmapId\n ) {\n source\n moscow {\n method\n unscored\n buckets {\n ${BUCKET_FIELDS}\n roadmapItems {\n id\n title\n status\n roadmapId\n }\n }\n }\n kano {\n method\n unscored\n buckets {\n ${BUCKET_FIELDS}\n roadmapItems {\n id\n title\n status\n roadmapId\n }\n }\n }\n valueEffort {\n method\n unscored\n buckets {\n ${BUCKET_FIELDS}\n roadmapItems {\n id\n title\n status\n roadmapId\n }\n }\n }\n }\n }\n`;\n\ntype Source = 'FEATURE_REQUEST' | 'ROADMAP_ITEM';\ntype Method = 'moscow' | 'kano' | 'valueEffort';\n\nconst VALUE_EFFORT_GRID: readonly (readonly [string, string])[] = [\n ['QUICK_WIN', 'MAJOR_PROJECT'],\n ['FILL_IN', 'TIME_SINK'],\n];\n\n/**\n * One item in a bucket. The two queries below select only one of `featureRequests`/`roadmapItems` each (never\n * both), but both shapes are folded into this single interface β€” same \"populated only for one branch\" contract\n * the server's own `PlanmagnetPrioritizationBucket` documents β€” so `BucketCard`/`findBucket` need only one type.\n */\ninterface PrioritizationItem {\n id: string;\n title: string;\n status: string;\n roadmapId?: string;\n}\n\ninterface PrioritizationBucket {\n bucket: string;\n count: number;\n truncated: boolean;\n featureRequests?: PrioritizationItem[] | null;\n roadmapItems?: PrioritizationItem[] | null;\n}\n\ninterface PrioritizationMethodResult {\n method: string;\n unscored: number;\n buckets: PrioritizationBucket[];\n}\n\ninterface PrioritizationMatrix {\n source: string;\n moscow: PrioritizationMethodResult;\n kano: PrioritizationMethodResult;\n valueEffort: PrioritizationMethodResult;\n}\n\ninterface FeatureMatrixData {\n planmagnetFeaturePrioritizationMatrix: PrioritizationMatrix;\n}\n\ninterface RoadmapMatrixData {\n planmagnetRoadmapPrioritizationMatrix: PrioritizationMatrix;\n}\n\nfunction findBucket(\n buckets: PrioritizationBucket[] | undefined,\n value: string\n): PrioritizationBucket {\n return buckets?.find((b) => b.bucket === value) ?? { bucket: value, count: 0, truncated: false };\n}\n\n/** One bucket's items, capped by the server and marked truncated β€” link each to its own detail page. */\nfunction BucketCard({\n header,\n bucket,\n source,\n navigate,\n}: {\n header: ReactNode;\n bucket: PrioritizationBucket;\n source: Source;\n navigate: (path: string) => void;\n}) {\n const items = bucket.featureRequests ?? bucket.roadmapItems ?? [];\n const linkFor = (item: { id: string; roadmapId?: string }) =>\n source === 'FEATURE_REQUEST'\n ? detailPath('/products/feature-detail-page', item.id)\n : detailPath('/products/roadmap-detail-page', item.roadmapId);\n\n return (\n <Card data-testid=\"prio-bucket\" className=\"flex-1 min-w-[220px]\">\n <CardHeader className=\"pb-2\">\n <div className=\"flex items-center justify-between gap-2\">\n {header}\n <Badge variant=\"outline\">{bucket.count}</Badge>\n </div>\n </CardHeader>\n <CardContent className=\"space-y-1\">\n {items.length === 0 && <p className=\"text-xs text-muted-foreground\">No items</p>}\n <ul className=\"space-y-1\">\n {items.map((item) => (\n <li key={item.id}>\n <button\n type=\"button\"\n className=\"w-full rounded-md border p-2 text-left text-xs hover:bg-muted\"\n onClick={() => navigate(linkFor(item))}\n >\n <span className=\"block truncate font-medium\">{item.title}</span>\n <span className=\"text-[10px] text-muted-foreground capitalize\">\n {enumLabel(item.status)}\n </span>\n </button>\n </li>\n ))}\n </ul>\n {bucket.truncated && (\n <p className=\"pt-1 text-xs text-muted-foreground\">\n +{Math.max(bucket.count - items.length, 0)} more\n </p>\n )}\n </CardContent>\n </Card>\n );\n}\n\nfunction UnscoredHint({ count, method }: { count: number; method: string }) {\n if (!count) return null;\n return (\n <p className=\"rounded-md border border-dashed p-2 text-xs text-muted-foreground\">\n {count} item{count === 1 ? '' : 's'} not yet scored for {method} β€” set it from the item&apos;s\n edit form to see it grouped here.\n </p>\n );\n}\n\nexport function ProductsPrioritizationPagePage() {\n const { workspaceId } = usePlanMagnet();\n const navigate = usePlanMagnetNavigate();\n\n const [source, setSourceState] = useState<Source>(() =>\n readUrlParam('source') === 'ROADMAP_ITEM' ? 'ROADMAP_ITEM' : 'FEATURE_REQUEST'\n );\n const setSource = (next: Source) => {\n setSourceState(next);\n writeUrlParam('source', next === 'FEATURE_REQUEST' ? null : next);\n };\n\n const [method, setMethodState] = useState<Method>(() => {\n const fromUrl = readUrlParam('method');\n return fromUrl === 'kano' || fromUrl === 'valueEffort' ? fromUrl : 'moscow';\n });\n const setMethod = (next: Method) => {\n setMethodState(next);\n writeUrlParam('method', next === 'moscow' ? null : next);\n };\n\n const [productId, setProductId] = useState('');\n const [roadmapId, setRoadmapId] = useState('');\n\n const variables = {\n workspaceId: workspaceId ?? '',\n productId: productId || undefined,\n roadmapId: roadmapId || undefined,\n };\n const featureResult = useQuery<FeatureMatrixData>(FEATURE_MATRIX, {\n variables,\n skip: !workspaceId || source !== 'FEATURE_REQUEST',\n });\n const roadmapResult = useQuery<RoadmapMatrixData>(ROADMAP_MATRIX, {\n variables,\n skip: !workspaceId || source !== 'ROADMAP_ITEM',\n });\n const loading = source === 'FEATURE_REQUEST' ? featureResult.loading : roadmapResult.loading;\n const error = source === 'FEATURE_REQUEST' ? featureResult.error : roadmapResult.error;\n const data = source === 'FEATURE_REQUEST' ? featureResult.data : roadmapResult.data;\n\n // Only before the first load: a refetch must not blank the page (it\n // unmounts every component on it and loses their state).\n if (loading && !data) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"p-6 text-destructive\">\n Failed to load the prioritization matrix: {error.message}\n </div>\n );\n }\n\n const matrix: PrioritizationMatrix | undefined =\n source === 'FEATURE_REQUEST'\n ? featureResult.data?.planmagnetFeaturePrioritizationMatrix\n : roadmapResult.data?.planmagnetRoadmapPrioritizationMatrix;\n\n return (\n <div className=\"space-y-6 p-6\" data-testid=\"prio-page\">\n <div className=\"flex items-center gap-2\">\n <Gauge className=\"h-5 w-5 text-primary\" />\n <div>\n <h1 className=\"text-2xl font-semibold\">Prioritization</h1>\n <p className=\"text-sm text-muted-foreground\">\n MoSCoW, Kano and Value-vs-Effort, over feature requests or roadmap initiatives.\n </p>\n </div>\n </div>\n\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\n <div\n className=\"flex items-center gap-2\"\n role=\"group\"\n aria-label=\"Prioritization source\"\n data-testid=\"prio-source\"\n >\n {(['FEATURE_REQUEST', 'ROADMAP_ITEM'] as const).map((s) => (\n <button\n key={s}\n type=\"button\"\n aria-pressed={source === s}\n onClick={() => setSource(s)}\n className={`px-3 py-1.5 text-sm rounded-md ${source === s ? 'bg-primary text-primary-foreground' : 'bg-muted text-muted-foreground'}`}\n >\n {s === 'FEATURE_REQUEST' ? 'Feature requests' : 'Roadmap initiatives'}\n </button>\n ))}\n </div>\n\n <div className=\"flex flex-wrap items-end gap-3\">\n <div>\n <label htmlFor=\"prio-product\" className=\"text-xs text-muted-foreground\">\n Product\n </label>\n <div className=\"mt-1\">\n <ProductSelect\n id=\"prio-product\"\n value={productId}\n noneLabel=\"All products\"\n onChange={(next) => {\n setProductId(next);\n setRoadmapId('');\n }}\n />\n </div>\n </div>\n <div>\n <label htmlFor=\"prio-roadmap\" className=\"text-xs text-muted-foreground\">\n Roadmap\n </label>\n <div className=\"mt-1\">\n <RoadmapSelect\n id=\"prio-roadmap\"\n value={roadmapId}\n noneLabel=\"All roadmaps\"\n productId={productId || undefined}\n onChange={setRoadmapId}\n />\n </div>\n </div>\n </div>\n </div>\n\n <Tabs value={method} onValueChange={(next) => setMethod(next as Method)}>\n <TabsList>\n <TabsTrigger value=\"moscow\" data-testid=\"prio-method-moscow\">\n MoSCoW\n </TabsTrigger>\n <TabsTrigger value=\"kano\" data-testid=\"prio-method-kano\">\n Kano\n </TabsTrigger>\n <TabsTrigger value=\"valueEffort\" data-testid=\"prio-value-effort\">\n Value vs Effort\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"moscow\" className=\"mt-4 space-y-3\">\n <UnscoredHint count={matrix?.moscow.unscored ?? 0} method=\"MoSCoW\" />\n <div className=\"flex flex-wrap gap-4\">\n {MOSCOW_VALUES.map((v) => (\n <BucketCard\n key={v}\n header={<CardTitle className=\"text-sm\">{MOSCOW_META[v].label}</CardTitle>}\n bucket={findBucket(matrix?.moscow.buckets, v)}\n source={source}\n navigate={navigate}\n />\n ))}\n </div>\n </TabsContent>\n\n <TabsContent value=\"kano\" className=\"mt-4 space-y-3\">\n <UnscoredHint count={matrix?.kano.unscored ?? 0} method=\"Kano\" />\n <div className=\"flex flex-wrap gap-4\">\n {KANO_VALUES.map((v) => (\n <BucketCard\n key={v}\n header={<CardTitle className=\"text-sm\">{KANO_META[v].label}</CardTitle>}\n bucket={findBucket(matrix?.kano.buckets, v)}\n source={source}\n navigate={navigate}\n />\n ))}\n </div>\n </TabsContent>\n\n <TabsContent value=\"valueEffort\" className=\"mt-4 space-y-3\">\n <UnscoredHint count={matrix?.valueEffort.unscored ?? 0} method=\"Value vs Effort\" />\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-2 text-center text-xs text-muted-foreground\">\n <span>High value</span>\n <span />\n </div>\n <div className=\"space-y-4\">\n {VALUE_EFFORT_GRID.map((row, rowIndex) => (\n <div key={rowIndex} className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n {row.map((v) => (\n <BucketCard\n key={v}\n header={<QuadrantBadge quadrant={v} />}\n bucket={findBucket(matrix?.valueEffort.buckets, v)}\n source={source}\n navigate={navigate}\n />\n ))}\n </div>\n ))}\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-2 text-center text-xs text-muted-foreground\">\n <span>Low effort</span>\n <span>High effort</span>\n </div>\n </TabsContent>\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsProductDetailPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsProductDetailPagePage.tsx"],"names":[],"mappings":"AAkIA,wBAAgB,6BAA6B,4CA6N5C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsProductDetailPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsProductDetailPagePage.tsx"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Badge, Button } from '@burdenoff/fe-libs/ui';\nimport { Package, Target, Users, Calendar, Loader2, Pencil, ListTree } from 'lucide-react';\nimport { usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { useEntityId } from '../hooks/useEntityId';\nimport { detailPath } from '../utils/rowNavigation';\nimport { PersonName } from '../people/People';\nimport { enumLabel } from '../controls/WorkItemControls';\nimport { PlanMagnetNotFoundPage } from './NotFoundPage';\nimport {\n ProductHeaderActions,\n ProductRoadmapsPanel,\n ProductReleasesPanel,\n ProductFeatureRequestsPanel,\n ProductObjectivesPanel,\n ProductAboutPanel,\n ProductCompetitorsPanel,\n type ProductRoadmapRef,\n type ProductReleaseRef,\n type ProductFeatureRequestRef,\n type ProductObjectiveRef,\n type ProductCompetitorRef,\n} from '../product/ProductControls';\nimport { ProductLinePicker } from '../product/ProductLineControls';\nimport { ProductTeamsPanel } from '../product/ProductTeamsPanel';\nimport { ProductFeaturesPanel } from '../product/ProductFeatureControls';\nimport { SatisfactionSummaryCard } from '../satisfaction/SatisfactionSummaryCard';\n\n/**\n * Product detail (BOFF-8045): the product's own fields, its North Star, and a Links\n * management panel for roadmaps/releases/feature requests/OKR objectives. Every relation\n * is selected directly off `planmagnetProduct(id)` rather than a separate workspace-wide\n * query β€” before this rewrite the page queried EVERY feature request/release in the\n * workspace regardless of product, which is the pre-existing bug this fixes (there was no\n * productId to filter on until now).\n *\n * PRM-01 adds the product's place in the hierarchy: its product line, the teams that own it\n * (a link that grants no access), and its features β€” capabilities the team builds, distinct\n * from the feature requests below. Each of those sections runs its own query, so a field the\n * gateway does not serve yet fails that card, never this page's GetProductDetail.\n */\n\nconst GET_PRODUCT_DETAIL = gql`\n query GetProductDetail($id: ID!) {\n planmagnetProduct(id: $id) {\n id\n workspaceId\n name\n description\n vision\n lifecycleStage\n ownerId\n archivedAt\n mission\n valueProposition\n businessModel\n targetSegments\n competitors {\n id\n name\n description\n website\n }\n northStar {\n name\n unit\n target\n current\n window\n measuredAt\n progressRatio\n }\n roadmaps {\n id\n name\n }\n releases {\n id\n name\n version\n status\n }\n featureRequests {\n id\n title\n status\n }\n objectives {\n id\n title\n status\n }\n createdAt\n updatedAt\n }\n }\n`;\n\ninterface ProductDetail {\n id: string;\n workspaceId: string;\n name: string;\n description: string | null;\n vision: string;\n lifecycleStage: string;\n ownerId: string;\n archivedAt: string | null;\n mission: string | null;\n valueProposition: string | null;\n businessModel: string | null;\n targetSegments: string[];\n competitors: ProductCompetitorRef[];\n northStar: {\n name: string;\n unit: string;\n target: number;\n current: number;\n window: string;\n measuredAt: string | null;\n progressRatio: number | null;\n } | null;\n roadmaps: ProductRoadmapRef[];\n releases: ProductReleaseRef[];\n featureRequests: ProductFeatureRequestRef[];\n objectives: ProductObjectiveRef[];\n createdAt: string;\n updatedAt: string;\n}\n\nexport function ProductsProductDetailPagePage() {\n const navigate = usePlanMagnetNavigate();\n const productId = useEntityId('productId') ?? '';\n\n const { data, loading, error } = useQuery<{ planmagnetProduct: ProductDetail | null }>(\n GET_PRODUCT_DETAIL,\n { variables: { id: productId }, skip: !productId }\n );\n\n if (!productId) {\n return (\n <div className=\"p-6 text-muted-foreground\">No product selected. Open one from the list.</div>\n );\n }\n\n // Only before the first load: a refetch must not blank the page (it\n // unmounts every component on it and loses their state).\n if (loading && !data) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n );\n }\n\n if (error) {\n return <div className=\"p-6 text-destructive\">Failed to load product: {error.message}</div>;\n }\n\n const product = data?.planmagnetProduct;\n // Deleted, unauthorized or an unknown id all read back the same way (no cross-tenant\n // existence leak) β€” the real 404 page, not an inline message.\n if (!product) return <PlanMagnetNotFoundPage />;\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-start justify-between gap-4\">\n <div>\n <div className=\"flex items-center gap-2\">\n <Package className=\"h-5 w-5 text-primary\" />\n <h1 className=\"text-2xl font-semibold\">{product.name}</h1>\n {product.archivedAt && <Badge variant=\"outline\">Archived</Badge>}\n <Badge variant=\"secondary\" className=\"capitalize\">\n {enumLabel(product.lifecycleStage)}\n </Badge>\n </div>\n <p className=\"text-sm text-muted-foreground mt-1\">{product.vision || 'No vision set'}</p>\n </div>\n <div className=\"flex flex-col items-end gap-2\">\n <div className=\"flex gap-2\">\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => navigate(detailPath('/products/edit-product-page', product.id))}\n >\n <Pencil className=\"mr-1 h-4 w-4\" />\n Edit\n </Button>\n <ProductHeaderActions\n productId={product.id}\n name={product.name}\n archivedAt={product.archivedAt}\n />\n </div>\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-muted-foreground text-xs\">\n <Target className=\"h-4 w-4\" />\n North Star\n </div>\n {product.northStar ? (\n <p className=\"text-sm font-bold mt-1 truncate\">\n {product.northStar.current} / {product.northStar.target} {product.northStar.unit}\n {product.northStar.progressRatio != null\n ? ` (${Math.round(product.northStar.progressRatio * 100)}%)`\n : ''}\n </p>\n ) : (\n <p className=\"text-sm font-medium mt-1 text-muted-foreground\">Not set</p>\n )}\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-muted-foreground text-xs\">\n <Users className=\"h-4 w-4\" />\n Owner\n </div>\n <p className=\"text-sm font-bold mt-1 truncate\">\n <PersonName id={product.ownerId} />\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-muted-foreground text-xs\">\n <Calendar className=\"h-4 w-4\" />\n Created\n </div>\n <p className=\"text-xl font-bold mt-1\">\n {new Date(product.createdAt).toLocaleDateString()}\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-muted-foreground text-xs\">\n <Calendar className=\"h-4 w-4\" />\n Updated\n </div>\n <p className=\"text-xl font-bold mt-1\">\n {new Date(product.updatedAt).toLocaleDateString()}\n </p>\n </CardContent>\n </Card>\n </div>\n\n {product.description && (\n <Card>\n <CardContent className=\"pt-4 text-sm text-muted-foreground\">\n {product.description}\n </CardContent>\n </Card>\n )}\n\n {/* PRM-01: Product line > Product > Feature > Epic > Story. */}\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\n <Card>\n <CardHeader>\n <CardTitle>Product line</CardTitle>\n </CardHeader>\n <CardContent>\n <ProductLinePicker productId={product.id} />\n </CardContent>\n </Card>\n <Card className=\"lg:col-span-2\">\n <CardHeader>\n <CardTitle>Teams</CardTitle>\n </CardHeader>\n <CardContent>\n <ProductTeamsPanel productId={product.id} />\n </CardContent>\n </Card>\n </div>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between gap-2\">\n <CardTitle>Features</CardTitle>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => navigate('/products/product-hierarchy-page')}\n data-testid=\"product-view-hierarchy\"\n >\n <ListTree className=\"mr-1 h-4 w-4\" />\n View hierarchy\n </Button>\n </CardHeader>\n <CardContent>\n <ProductFeaturesPanel productId={product.id} productArchived={!!product.archivedAt} />\n </CardContent>\n </Card>\n\n {/* ANR-21: CSAT and NPS from responses about this product (its own query β€” a failure stays in the card). */}\n <SatisfactionSummaryCard scope={{ productId: product.id }} />\n\n {/* PRM-02: strategy narrative + competitive landscape. */}\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <ProductAboutPanel product={product} />\n <Card>\n <CardHeader>\n <CardTitle>Competitive landscape</CardTitle>\n </CardHeader>\n <CardContent>\n <ProductCompetitorsPanel productId={product.id} competitors={product.competitors} />\n </CardContent>\n </Card>\n </div>\n\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n <Card>\n <CardHeader>\n <CardTitle>Roadmaps</CardTitle>\n </CardHeader>\n <CardContent>\n <ProductRoadmapsPanel productId={product.id} roadmaps={product.roadmaps} />\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Releases</CardTitle>\n </CardHeader>\n <CardContent>\n <ProductReleasesPanel productId={product.id} releases={product.releases} />\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Feature requests</CardTitle>\n </CardHeader>\n <CardContent>\n <ProductFeatureRequestsPanel\n productId={product.id}\n featureRequests={product.featureRequests}\n />\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>OKR Objectives</CardTitle>\n </CardHeader>\n <CardContent>\n <ProductObjectivesPanel productId={product.id} objectives={product.objectives} />\n </CardContent>\n </Card>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsProductFeatureDetailPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsProductFeatureDetailPagePage.tsx"],"names":[],"mappings":"AA4CA,wBAAgB,oCAAoC,4CAwOnD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsProductFeatureDetailPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProductsProductFeatureDetailPagePage.tsx"],"sourcesContent":["import { useQuery } from '@apollo/client/react';\nimport { Badge, Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { ChevronRight, Loader2, MessageSquare, Milestone, Puzzle, Users } from 'lucide-react';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { usePlanMagnetNavigate } from '../providers/PlanMagnetProvider';\nimport { useEntityId } from '../hooks/useEntityId';\nimport { detailPath } from '../utils/rowNavigation';\nimport { PersonName } from '../people/People';\nimport { ErrorLine } from '../controls/ConfirmButton';\nimport { PlanMagnetNotFoundPage } from './NotFoundPage';\nimport { PRODUCT_FEATURE_DETAIL } from '../product/hierarchyOperations';\nimport { parseServerDate } from '../product/hierarchy';\nimport {\n ProductFeatureHeaderActions,\n ProductFeatureStatusBadge,\n type ProductFeatureValues,\n} from '../product/ProductFeatureControls';\nimport {\n FeatureEpicsPanel,\n FeatureRequestsPanel,\n type FeatureEpic,\n type FeatureLinkedRequest,\n} from '../product/FeatureLinkPanels';\n\n/**\n * A product feature (PRM-01): a capability the team decided to build, under one product. Edit its name,\n * description, status and owner; archive or delete it; link the EPIC work items that deliver it (each shown with\n * its stories) and the feature requests it answers. Not a feature request β€” those are customer feedback, and keep\n * their own page.\n */\n\ninterface FeatureDetail extends ProductFeatureValues {\n createdAt: string;\n updatedAt: string;\n product: {\n id: string;\n name: string;\n archivedAt: string | null;\n productLine: { id: string; name: string } | null;\n } | null;\n epics: FeatureEpic[];\n featureRequests: FeatureLinkedRequest[];\n}\n\nexport function ProductsProductFeatureDetailPagePage() {\n const tr = useTr();\n const navigate = usePlanMagnetNavigate();\n const featureId = useEntityId('productFeatureId') ?? '';\n\n const { data, loading, error } = useQuery<{ planmagnetProductFeature: FeatureDetail | null }>(\n PRODUCT_FEATURE_DETAIL,\n { variables: { id: featureId }, skip: !featureId }\n );\n\n if (!featureId) {\n return (\n <div className=\"p-6 text-muted-foreground\">\n {tr(\n 'planmagnet.productFeatures.detail.noneSelected',\n 'No feature selected. Open one from its product’s page.'\n )}\n </div>\n );\n }\n\n // Only before the first load: a refetch must not blank the page (it unmounts every component on it).\n if (loading && !data) {\n return (\n <div className=\"flex items-center justify-center p-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n );\n }\n\n if (error && !data) {\n return (\n <div className=\"p-6 text-destructive\">\n {tr(\n 'planmagnet.productFeatures.detail.loadError',\n 'Failed to load the feature: {{message}}',\n {\n message: error.message,\n }\n )}\n </div>\n );\n }\n\n const feature = data?.planmagnetProductFeature;\n // Deleted, another workspace's or an unknown id all read back as null β€” the real 404 page.\n if (!feature) return <PlanMagnetNotFoundPage />;\n\n const archived = !!feature.archivedAt;\n const updated = parseServerDate(feature.updatedAt);\n const created = parseServerDate(feature.createdAt);\n\n return (\n <div className=\"space-y-6 p-6\">\n <nav\n aria-label={tr('planmagnet.productFeatures.detail.breadcrumb', 'Breadcrumb')}\n className=\"flex flex-wrap items-center gap-1 text-xs text-muted-foreground\"\n >\n {feature.product?.productLine && (\n <>\n <button\n type=\"button\"\n className=\"hover:underline\"\n onClick={() => navigate('/products/product-lines-page')}\n >\n {feature.product.productLine.name}\n </button>\n <ChevronRight className=\"h-3 w-3\" />\n </>\n )}\n {feature.product ? (\n <button\n type=\"button\"\n className=\"hover:underline\"\n onClick={() =>\n feature.product &&\n navigate(detailPath('/products/product-detail-page', feature.product.id))\n }\n >\n {feature.product.name}\n </button>\n ) : (\n <span>{tr('planmagnet.productFeatures.detail.productGone', 'Deleted product')}</span>\n )}\n <ChevronRight className=\"h-3 w-3\" />\n <span className=\"text-foreground\">{feature.name}</span>\n </nav>\n\n <div className=\"flex flex-wrap items-start justify-between gap-4\">\n <div className=\"min-w-0\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <Puzzle className=\"h-5 w-5 text-primary\" />\n <h1 className=\"text-2xl font-semibold\">{feature.name}</h1>\n <ProductFeatureStatusBadge status={feature.status} />\n {archived && (\n <Badge variant=\"outline\">\n {tr('planmagnet.productFeatures.archived', 'Archived')}\n </Badge>\n )}\n </div>\n <p className=\"mt-1 text-sm text-muted-foreground\">\n {tr(\n 'planmagnet.productFeatures.detail.subtitle',\n 'A product feature β€” what the team is building. Feature requests are the feedback it answers.'\n )}\n </p>\n </div>\n <ProductFeatureHeaderActions\n feature={feature}\n epicCount={feature.epics.length}\n requestCount={feature.featureRequests.length}\n />\n </div>\n\n {error && (\n <ErrorLine\n message={tr(\n 'planmagnet.productFeatures.detail.refreshError',\n 'The feature could not be refreshed: {{message}}',\n { message: error.message }\n )}\n />\n )}\n {archived && (\n <p className=\"rounded-md bg-muted p-3 text-sm text-muted-foreground\">\n {tr(\n 'planmagnet.productFeatures.detail.archivedNote',\n 'This feature is archived. It keeps its epics and requests, but takes no new links until it is unarchived.'\n )}\n </p>\n )}\n\n <div className=\"grid grid-cols-2 gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"pt-4\">\n <p className=\"text-xs text-muted-foreground\">\n {tr('planmagnet.productFeatures.fields.status', 'Status')}\n </p>\n <div className=\"mt-1\">\n <ProductFeatureStatusBadge status={feature.status} />\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <Users className=\"h-4 w-4\" />\n {tr('planmagnet.productFeatures.fields.owner', 'Owner')}\n </div>\n <p className=\"mt-1 truncate text-sm font-bold\">\n {feature.ownerId ? (\n <PersonName id={feature.ownerId} />\n ) : (\n tr('planmagnet.productFeatures.fields.noOwner', 'No owner')\n )}\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <Milestone className=\"h-4 w-4\" />\n {tr('planmagnet.productFeatures.detail.epics', 'Epics')}\n </div>\n <p className=\"mt-1 text-xl font-bold\">{feature.epics.length}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-4\">\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <MessageSquare className=\"h-4 w-4\" />\n {tr('planmagnet.productFeatures.detail.requests', 'Feature requests')}\n </div>\n <p className=\"mt-1 text-xl font-bold\">{feature.featureRequests.length}</p>\n </CardContent>\n </Card>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>\n {tr('planmagnet.productFeatures.fields.description', 'Description')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n <p className=\"whitespace-pre-wrap text-sm\">\n {feature.description ||\n tr('planmagnet.productFeatures.detail.noDescription', 'No description yet.')}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {created &&\n tr('planmagnet.productFeatures.detail.created', 'Created {{date}}', {\n date: created.toLocaleDateString(),\n })}\n {created && updated && ' Β· '}\n {updated &&\n tr('planmagnet.productFeatures.detail.updated', 'Updated {{date}}', {\n date: updated.toLocaleDateString(),\n })}\n </p>\n </CardContent>\n </Card>\n\n <div className=\"grid grid-cols-1 gap-6 lg:grid-cols-2\">\n <Card>\n <CardHeader>\n <CardTitle>\n {tr('planmagnet.productFeatures.detail.epicsTitle', 'Epics and stories')}\n </CardTitle>\n </CardHeader>\n <CardContent>\n <FeatureEpicsPanel featureId={feature.id} archived={archived} epics={feature.epics} />\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>\n {tr('planmagnet.productFeatures.detail.requestsTitle', 'Feature requests')}\n </CardTitle>\n </CardHeader>\n <CardContent>\n <FeatureRequestsPanel\n featureId={feature.id}\n productId={feature.productId}\n archived={archived}\n requests={feature.featureRequests}\n />\n </CardContent>\n </Card>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductsProductHierarchyPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProductsProductHierarchyPagePage.tsx"],"names":[],"mappings":"AAkEA,wBAAgB,gCAAgC,4CA2N/C"}