@powerhousedao/builder-team-admin 0.0.1

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 (438) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +179 -0
  3. package/dist/document-models/builders/actions.d.ts +14 -0
  4. package/dist/document-models/builders/actions.d.ts.map +1 -0
  5. package/dist/document-models/builders/actions.js +4 -0
  6. package/dist/document-models/builders/gen/actions.d.ts +4 -0
  7. package/dist/document-models/builders/gen/actions.d.ts.map +1 -0
  8. package/dist/document-models/builders/gen/actions.js +1 -0
  9. package/dist/document-models/builders/gen/builders/actions.d.ts +12 -0
  10. package/dist/document-models/builders/gen/builders/actions.d.ts.map +1 -0
  11. package/dist/document-models/builders/gen/builders/actions.js +1 -0
  12. package/dist/document-models/builders/gen/builders/creators.d.ts +5 -0
  13. package/dist/document-models/builders/gen/builders/creators.d.ts.map +1 -0
  14. package/dist/document-models/builders/gen/builders/creators.js +4 -0
  15. package/dist/document-models/builders/gen/builders/error.d.ts +2 -0
  16. package/dist/document-models/builders/gen/builders/error.d.ts.map +1 -0
  17. package/dist/document-models/builders/gen/builders/error.js +1 -0
  18. package/dist/document-models/builders/gen/builders/operations.d.ts +8 -0
  19. package/dist/document-models/builders/gen/builders/operations.d.ts.map +1 -0
  20. package/dist/document-models/builders/gen/builders/operations.js +3 -0
  21. package/dist/document-models/builders/gen/creators.d.ts +3 -0
  22. package/dist/document-models/builders/gen/creators.d.ts.map +1 -0
  23. package/dist/document-models/builders/gen/creators.js +2 -0
  24. package/dist/document-models/builders/gen/document-model.d.ts +3 -0
  25. package/dist/document-models/builders/gen/document-model.d.ts.map +1 -0
  26. package/dist/document-models/builders/gen/document-model.js +59 -0
  27. package/dist/document-models/builders/gen/document-schema.d.ts +142 -0
  28. package/dist/document-models/builders/gen/document-schema.d.ts.map +1 -0
  29. package/dist/document-models/builders/gen/document-schema.js +33 -0
  30. package/dist/document-models/builders/gen/document-type.d.ts +2 -0
  31. package/dist/document-models/builders/gen/document-type.d.ts.map +1 -0
  32. package/dist/document-models/builders/gen/document-type.js +1 -0
  33. package/dist/document-models/builders/gen/index.d.ts +12 -0
  34. package/dist/document-models/builders/gen/index.d.ts.map +1 -0
  35. package/dist/document-models/builders/gen/index.js +11 -0
  36. package/dist/document-models/builders/gen/ph-factories.d.ts +23 -0
  37. package/dist/document-models/builders/gen/ph-factories.d.ts.map +1 -0
  38. package/dist/document-models/builders/gen/ph-factories.js +47 -0
  39. package/dist/document-models/builders/gen/reducer.d.ts +3 -0
  40. package/dist/document-models/builders/gen/reducer.d.ts.map +1 -0
  41. package/dist/document-models/builders/gen/reducer.js +21 -0
  42. package/dist/document-models/builders/gen/schema/index.d.ts +3 -0
  43. package/dist/document-models/builders/gen/schema/index.d.ts.map +1 -0
  44. package/dist/document-models/builders/gen/schema/index.js +2 -0
  45. package/dist/document-models/builders/gen/schema/types.d.ts +146 -0
  46. package/dist/document-models/builders/gen/schema/types.d.ts.map +1 -0
  47. package/dist/document-models/builders/gen/schema/types.js +1 -0
  48. package/dist/document-models/builders/gen/schema/zod.d.ts +13 -0
  49. package/dist/document-models/builders/gen/schema/zod.d.ts.map +1 -0
  50. package/dist/document-models/builders/gen/schema/zod.js +21 -0
  51. package/dist/document-models/builders/gen/types.d.ts +12 -0
  52. package/dist/document-models/builders/gen/types.d.ts.map +1 -0
  53. package/dist/document-models/builders/gen/types.js +1 -0
  54. package/dist/document-models/builders/gen/utils.d.ts +15 -0
  55. package/dist/document-models/builders/gen/utils.d.ts.map +1 -0
  56. package/dist/document-models/builders/gen/utils.js +51 -0
  57. package/dist/document-models/builders/hooks.d.ts +11 -0
  58. package/dist/document-models/builders/hooks.d.ts.map +1 -0
  59. package/dist/document-models/builders/hooks.js +26 -0
  60. package/dist/document-models/builders/index.d.ts +10 -0
  61. package/dist/document-models/builders/index.d.ts.map +1 -0
  62. package/dist/document-models/builders/index.js +9 -0
  63. package/dist/document-models/builders/module.d.ts +5 -0
  64. package/dist/document-models/builders/module.d.ts.map +1 -0
  65. package/dist/document-models/builders/module.js +10 -0
  66. package/dist/document-models/builders/src/index.d.ts +2 -0
  67. package/dist/document-models/builders/src/index.d.ts.map +1 -0
  68. package/dist/document-models/builders/src/index.js +1 -0
  69. package/dist/document-models/builders/src/reducers/builders.d.ts +3 -0
  70. package/dist/document-models/builders/src/reducers/builders.d.ts.map +1 -0
  71. package/dist/document-models/builders/src/reducers/builders.js +8 -0
  72. package/dist/document-models/builders/src/tests/builders.test.d.ts +6 -0
  73. package/dist/document-models/builders/src/tests/builders.test.d.ts.map +1 -0
  74. package/dist/document-models/builders/src/tests/builders.test.js +29 -0
  75. package/dist/document-models/builders/src/tests/document-model.test.d.ts +10 -0
  76. package/dist/document-models/builders/src/tests/document-model.test.d.ts.map +1 -0
  77. package/dist/document-models/builders/src/tests/document-model.test.js +104 -0
  78. package/dist/document-models/builders/src/utils.d.ts +2 -0
  79. package/dist/document-models/builders/src/utils.d.ts.map +1 -0
  80. package/dist/document-models/builders/src/utils.js +1 -0
  81. package/dist/document-models/builders/utils.d.ts +14 -0
  82. package/dist/document-models/builders/utils.d.ts.map +1 -0
  83. package/dist/document-models/builders/utils.js +7 -0
  84. package/dist/document-models/document-models.d.ts +3 -0
  85. package/dist/document-models/document-models.d.ts.map +1 -0
  86. package/dist/document-models/document-models.js +6 -0
  87. package/dist/document-models/expense-report/actions.d.ts +27 -0
  88. package/dist/document-models/expense-report/actions.d.ts.map +1 -0
  89. package/dist/document-models/expense-report/actions.js +4 -0
  90. package/dist/document-models/expense-report/gen/actions.d.ts +4 -0
  91. package/dist/document-models/expense-report/gen/actions.d.ts.map +1 -0
  92. package/dist/document-models/expense-report/gen/actions.js +1 -0
  93. package/dist/document-models/expense-report/gen/creators.d.ts +3 -0
  94. package/dist/document-models/expense-report/gen/creators.d.ts.map +1 -0
  95. package/dist/document-models/expense-report/gen/creators.js +2 -0
  96. package/dist/document-models/expense-report/gen/document-model.d.ts +3 -0
  97. package/dist/document-models/expense-report/gen/document-model.d.ts.map +1 -0
  98. package/dist/document-models/expense-report/gen/document-model.js +202 -0
  99. package/dist/document-models/expense-report/gen/document-schema.d.ts +199 -0
  100. package/dist/document-models/expense-report/gen/document-schema.d.ts.map +1 -0
  101. package/dist/document-models/expense-report/gen/document-schema.js +33 -0
  102. package/dist/document-models/expense-report/gen/document-type.d.ts +2 -0
  103. package/dist/document-models/expense-report/gen/document-type.d.ts.map +1 -0
  104. package/dist/document-models/expense-report/gen/document-type.js +1 -0
  105. package/dist/document-models/expense-report/gen/index.d.ts +12 -0
  106. package/dist/document-models/expense-report/gen/index.d.ts.map +1 -0
  107. package/dist/document-models/expense-report/gen/index.js +11 -0
  108. package/dist/document-models/expense-report/gen/ph-factories.d.ts +23 -0
  109. package/dist/document-models/expense-report/gen/ph-factories.d.ts.map +1 -0
  110. package/dist/document-models/expense-report/gen/ph-factories.js +186 -0
  111. package/dist/document-models/expense-report/gen/reducer.d.ts +3 -0
  112. package/dist/document-models/expense-report/gen/reducer.d.ts.map +1 -0
  113. package/dist/document-models/expense-report/gen/reducer.js +73 -0
  114. package/dist/document-models/expense-report/gen/schema/index.d.ts +3 -0
  115. package/dist/document-models/expense-report/gen/schema/index.d.ts.map +1 -0
  116. package/dist/document-models/expense-report/gen/schema/index.js +2 -0
  117. package/dist/document-models/expense-report/gen/schema/types.d.ts +258 -0
  118. package/dist/document-models/expense-report/gen/schema/types.d.ts.map +1 -0
  119. package/dist/document-models/expense-report/gen/schema/types.js +1 -0
  120. package/dist/document-models/expense-report/gen/schema/zod.d.ts +32 -0
  121. package/dist/document-models/expense-report/gen/schema/zod.d.ts.map +1 -0
  122. package/dist/document-models/expense-report/gen/schema/zod.js +200 -0
  123. package/dist/document-models/expense-report/gen/types.d.ts +12 -0
  124. package/dist/document-models/expense-report/gen/types.d.ts.map +1 -0
  125. package/dist/document-models/expense-report/gen/types.js +1 -0
  126. package/dist/document-models/expense-report/gen/utils.d.ts +15 -0
  127. package/dist/document-models/expense-report/gen/utils.d.ts.map +1 -0
  128. package/dist/document-models/expense-report/gen/utils.js +190 -0
  129. package/dist/document-models/expense-report/gen/wallet/actions.d.ts +64 -0
  130. package/dist/document-models/expense-report/gen/wallet/actions.d.ts.map +1 -0
  131. package/dist/document-models/expense-report/gen/wallet/actions.js +1 -0
  132. package/dist/document-models/expense-report/gen/wallet/creators.d.ts +18 -0
  133. package/dist/document-models/expense-report/gen/wallet/creators.d.ts.map +1 -0
  134. package/dist/document-models/expense-report/gen/wallet/creators.js +17 -0
  135. package/dist/document-models/expense-report/gen/wallet/error.d.ts +2 -0
  136. package/dist/document-models/expense-report/gen/wallet/error.d.ts.map +1 -0
  137. package/dist/document-models/expense-report/gen/wallet/error.js +1 -0
  138. package/dist/document-models/expense-report/gen/wallet/operations.d.ts +21 -0
  139. package/dist/document-models/expense-report/gen/wallet/operations.d.ts.map +1 -0
  140. package/dist/document-models/expense-report/gen/wallet/operations.js +3 -0
  141. package/dist/document-models/expense-report/hooks.d.ts +11 -0
  142. package/dist/document-models/expense-report/hooks.d.ts.map +1 -0
  143. package/dist/document-models/expense-report/hooks.js +26 -0
  144. package/dist/document-models/expense-report/index.d.ts +10 -0
  145. package/dist/document-models/expense-report/index.d.ts.map +1 -0
  146. package/dist/document-models/expense-report/index.js +9 -0
  147. package/dist/document-models/expense-report/module.d.ts +5 -0
  148. package/dist/document-models/expense-report/module.d.ts.map +1 -0
  149. package/dist/document-models/expense-report/module.js +10 -0
  150. package/dist/document-models/expense-report/src/index.d.ts +2 -0
  151. package/dist/document-models/expense-report/src/index.d.ts.map +1 -0
  152. package/dist/document-models/expense-report/src/index.js +1 -0
  153. package/dist/document-models/expense-report/src/reducers/wallet.d.ts +3 -0
  154. package/dist/document-models/expense-report/src/reducers/wallet.d.ts.map +1 -0
  155. package/dist/document-models/expense-report/src/reducers/wallet.js +196 -0
  156. package/dist/document-models/expense-report/src/tests/document-model.test.d.ts +10 -0
  157. package/dist/document-models/expense-report/src/tests/document-model.test.d.ts.map +1 -0
  158. package/dist/document-models/expense-report/src/tests/document-model.test.js +104 -0
  159. package/dist/document-models/expense-report/src/tests/wallet.test.d.ts +6 -0
  160. package/dist/document-models/expense-report/src/tests/wallet.test.d.ts.map +1 -0
  161. package/dist/document-models/expense-report/src/tests/wallet.test.js +159 -0
  162. package/dist/document-models/expense-report/src/utils.d.ts +2 -0
  163. package/dist/document-models/expense-report/src/utils.d.ts.map +1 -0
  164. package/dist/document-models/expense-report/src/utils.js +1 -0
  165. package/dist/document-models/expense-report/utils.d.ts +14 -0
  166. package/dist/document-models/expense-report/utils.d.ts.map +1 -0
  167. package/dist/document-models/expense-report/utils.js +7 -0
  168. package/dist/document-models/index.d.ts +3 -0
  169. package/dist/document-models/index.d.ts.map +1 -0
  170. package/dist/document-models/index.js +2 -0
  171. package/dist/document-models/service-subscriptions/actions.d.ts +25 -0
  172. package/dist/document-models/service-subscriptions/actions.d.ts.map +1 -0
  173. package/dist/document-models/service-subscriptions/actions.js +9 -0
  174. package/dist/document-models/service-subscriptions/gen/actions.d.ts +8 -0
  175. package/dist/document-models/service-subscriptions/gen/actions.d.ts.map +1 -0
  176. package/dist/document-models/service-subscriptions/gen/actions.js +3 -0
  177. package/dist/document-models/service-subscriptions/gen/categories/actions.d.ts +16 -0
  178. package/dist/document-models/service-subscriptions/gen/categories/actions.d.ts.map +1 -0
  179. package/dist/document-models/service-subscriptions/gen/categories/actions.js +1 -0
  180. package/dist/document-models/service-subscriptions/gen/categories/creators.d.ts +6 -0
  181. package/dist/document-models/service-subscriptions/gen/categories/creators.d.ts.map +1 -0
  182. package/dist/document-models/service-subscriptions/gen/categories/creators.js +5 -0
  183. package/dist/document-models/service-subscriptions/gen/categories/error.d.ts +2 -0
  184. package/dist/document-models/service-subscriptions/gen/categories/error.d.ts.map +1 -0
  185. package/dist/document-models/service-subscriptions/gen/categories/error.js +1 -0
  186. package/dist/document-models/service-subscriptions/gen/categories/operations.d.ts +9 -0
  187. package/dist/document-models/service-subscriptions/gen/categories/operations.d.ts.map +1 -0
  188. package/dist/document-models/service-subscriptions/gen/categories/operations.js +3 -0
  189. package/dist/document-models/service-subscriptions/gen/creators.d.ts +7 -0
  190. package/dist/document-models/service-subscriptions/gen/creators.d.ts.map +1 -0
  191. package/dist/document-models/service-subscriptions/gen/creators.js +6 -0
  192. package/dist/document-models/service-subscriptions/gen/document-model.d.ts +3 -0
  193. package/dist/document-models/service-subscriptions/gen/document-model.d.ts.map +1 -0
  194. package/dist/document-models/service-subscriptions/gen/document-model.js +194 -0
  195. package/dist/document-models/service-subscriptions/gen/document-schema.d.ts +180 -0
  196. package/dist/document-models/service-subscriptions/gen/document-schema.d.ts.map +1 -0
  197. package/dist/document-models/service-subscriptions/gen/document-schema.js +33 -0
  198. package/dist/document-models/service-subscriptions/gen/document-type.d.ts +2 -0
  199. package/dist/document-models/service-subscriptions/gen/document-type.d.ts.map +1 -0
  200. package/dist/document-models/service-subscriptions/gen/document-type.js +1 -0
  201. package/dist/document-models/service-subscriptions/gen/index.d.ts +14 -0
  202. package/dist/document-models/service-subscriptions/gen/index.d.ts.map +1 -0
  203. package/dist/document-models/service-subscriptions/gen/index.js +13 -0
  204. package/dist/document-models/service-subscriptions/gen/ph-factories.d.ts +23 -0
  205. package/dist/document-models/service-subscriptions/gen/ph-factories.d.ts.map +1 -0
  206. package/dist/document-models/service-subscriptions/gen/ph-factories.js +45 -0
  207. package/dist/document-models/service-subscriptions/gen/reducer.d.ts +3 -0
  208. package/dist/document-models/service-subscriptions/gen/reducer.d.ts.map +1 -0
  209. package/dist/document-models/service-subscriptions/gen/reducer.js +67 -0
  210. package/dist/document-models/service-subscriptions/gen/schema/index.d.ts +3 -0
  211. package/dist/document-models/service-subscriptions/gen/schema/index.d.ts.map +1 -0
  212. package/dist/document-models/service-subscriptions/gen/schema/index.js +2 -0
  213. package/dist/document-models/service-subscriptions/gen/schema/types.d.ts +274 -0
  214. package/dist/document-models/service-subscriptions/gen/schema/types.d.ts.map +1 -0
  215. package/dist/document-models/service-subscriptions/gen/schema/types.js +1 -0
  216. package/dist/document-models/service-subscriptions/gen/schema/zod.d.ts +31 -0
  217. package/dist/document-models/service-subscriptions/gen/schema/zod.d.ts.map +1 -0
  218. package/dist/document-models/service-subscriptions/gen/schema/zod.js +199 -0
  219. package/dist/document-models/service-subscriptions/gen/subscriptions/actions.d.ts +32 -0
  220. package/dist/document-models/service-subscriptions/gen/subscriptions/actions.d.ts.map +1 -0
  221. package/dist/document-models/service-subscriptions/gen/subscriptions/actions.js +1 -0
  222. package/dist/document-models/service-subscriptions/gen/subscriptions/creators.d.ts +10 -0
  223. package/dist/document-models/service-subscriptions/gen/subscriptions/creators.d.ts.map +1 -0
  224. package/dist/document-models/service-subscriptions/gen/subscriptions/creators.js +9 -0
  225. package/dist/document-models/service-subscriptions/gen/subscriptions/error.d.ts +2 -0
  226. package/dist/document-models/service-subscriptions/gen/subscriptions/error.d.ts.map +1 -0
  227. package/dist/document-models/service-subscriptions/gen/subscriptions/error.js +1 -0
  228. package/dist/document-models/service-subscriptions/gen/subscriptions/operations.d.ts +13 -0
  229. package/dist/document-models/service-subscriptions/gen/subscriptions/operations.d.ts.map +1 -0
  230. package/dist/document-models/service-subscriptions/gen/subscriptions/operations.js +3 -0
  231. package/dist/document-models/service-subscriptions/gen/types.d.ts +12 -0
  232. package/dist/document-models/service-subscriptions/gen/types.d.ts.map +1 -0
  233. package/dist/document-models/service-subscriptions/gen/types.js +1 -0
  234. package/dist/document-models/service-subscriptions/gen/utils.d.ts +15 -0
  235. package/dist/document-models/service-subscriptions/gen/utils.d.ts.map +1 -0
  236. package/dist/document-models/service-subscriptions/gen/utils.js +53 -0
  237. package/dist/document-models/service-subscriptions/gen/vendors/actions.d.ts +16 -0
  238. package/dist/document-models/service-subscriptions/gen/vendors/actions.d.ts.map +1 -0
  239. package/dist/document-models/service-subscriptions/gen/vendors/actions.js +1 -0
  240. package/dist/document-models/service-subscriptions/gen/vendors/creators.d.ts +6 -0
  241. package/dist/document-models/service-subscriptions/gen/vendors/creators.d.ts.map +1 -0
  242. package/dist/document-models/service-subscriptions/gen/vendors/creators.js +5 -0
  243. package/dist/document-models/service-subscriptions/gen/vendors/error.d.ts +2 -0
  244. package/dist/document-models/service-subscriptions/gen/vendors/error.d.ts.map +1 -0
  245. package/dist/document-models/service-subscriptions/gen/vendors/error.js +1 -0
  246. package/dist/document-models/service-subscriptions/gen/vendors/operations.d.ts +9 -0
  247. package/dist/document-models/service-subscriptions/gen/vendors/operations.d.ts.map +1 -0
  248. package/dist/document-models/service-subscriptions/gen/vendors/operations.js +3 -0
  249. package/dist/document-models/service-subscriptions/hooks.d.ts +11 -0
  250. package/dist/document-models/service-subscriptions/hooks.d.ts.map +1 -0
  251. package/dist/document-models/service-subscriptions/hooks.js +26 -0
  252. package/dist/document-models/service-subscriptions/index.d.ts +10 -0
  253. package/dist/document-models/service-subscriptions/index.d.ts.map +1 -0
  254. package/dist/document-models/service-subscriptions/index.js +9 -0
  255. package/dist/document-models/service-subscriptions/module.d.ts +5 -0
  256. package/dist/document-models/service-subscriptions/module.d.ts.map +1 -0
  257. package/dist/document-models/service-subscriptions/module.js +10 -0
  258. package/dist/document-models/service-subscriptions/src/index.d.ts +2 -0
  259. package/dist/document-models/service-subscriptions/src/index.d.ts.map +1 -0
  260. package/dist/document-models/service-subscriptions/src/index.js +1 -0
  261. package/dist/document-models/service-subscriptions/src/reducers/categories.d.ts +3 -0
  262. package/dist/document-models/service-subscriptions/src/reducers/categories.d.ts.map +1 -0
  263. package/dist/document-models/service-subscriptions/src/reducers/categories.js +24 -0
  264. package/dist/document-models/service-subscriptions/src/reducers/subscriptions.d.ts +3 -0
  265. package/dist/document-models/service-subscriptions/src/reducers/subscriptions.d.ts.map +1 -0
  266. package/dist/document-models/service-subscriptions/src/reducers/subscriptions.js +114 -0
  267. package/dist/document-models/service-subscriptions/src/reducers/vendors.d.ts +3 -0
  268. package/dist/document-models/service-subscriptions/src/reducers/vendors.d.ts.map +1 -0
  269. package/dist/document-models/service-subscriptions/src/reducers/vendors.js +30 -0
  270. package/dist/document-models/service-subscriptions/src/tests/categories.test.d.ts +6 -0
  271. package/dist/document-models/service-subscriptions/src/tests/categories.test.d.ts.map +1 -0
  272. package/dist/document-models/service-subscriptions/src/tests/categories.test.js +39 -0
  273. package/dist/document-models/service-subscriptions/src/tests/document-model.test.d.ts +10 -0
  274. package/dist/document-models/service-subscriptions/src/tests/document-model.test.d.ts.map +1 -0
  275. package/dist/document-models/service-subscriptions/src/tests/document-model.test.js +104 -0
  276. package/dist/document-models/service-subscriptions/src/tests/subscriptions.test.d.ts +6 -0
  277. package/dist/document-models/service-subscriptions/src/tests/subscriptions.test.d.ts.map +1 -0
  278. package/dist/document-models/service-subscriptions/src/tests/subscriptions.test.js +79 -0
  279. package/dist/document-models/service-subscriptions/src/tests/vendors.test.d.ts +6 -0
  280. package/dist/document-models/service-subscriptions/src/tests/vendors.test.d.ts.map +1 -0
  281. package/dist/document-models/service-subscriptions/src/tests/vendors.test.js +39 -0
  282. package/dist/document-models/service-subscriptions/src/utils.d.ts +2 -0
  283. package/dist/document-models/service-subscriptions/src/utils.d.ts.map +1 -0
  284. package/dist/document-models/service-subscriptions/src/utils.js +1 -0
  285. package/dist/document-models/service-subscriptions/utils.d.ts +14 -0
  286. package/dist/document-models/service-subscriptions/utils.d.ts.map +1 -0
  287. package/dist/document-models/service-subscriptions/utils.js +7 -0
  288. package/dist/editors/builder-team-admin/components/CreateDocument.d.ts +6 -0
  289. package/dist/editors/builder-team-admin/components/CreateDocument.d.ts.map +1 -0
  290. package/dist/editors/builder-team-admin/components/CreateDocument.js +18 -0
  291. package/dist/editors/builder-team-admin/components/DriveContents.d.ts +6 -0
  292. package/dist/editors/builder-team-admin/components/DriveContents.d.ts.map +1 -0
  293. package/dist/editors/builder-team-admin/components/DriveContents.js +38 -0
  294. package/dist/editors/builder-team-admin/components/DriveExplorer.d.ts +7 -0
  295. package/dist/editors/builder-team-admin/components/DriveExplorer.d.ts.map +1 -0
  296. package/dist/editors/builder-team-admin/components/DriveExplorer.js +45 -0
  297. package/dist/editors/builder-team-admin/components/EmptyState.d.ts +3 -0
  298. package/dist/editors/builder-team-admin/components/EmptyState.d.ts.map +1 -0
  299. package/dist/editors/builder-team-admin/components/EmptyState.js +10 -0
  300. package/dist/editors/builder-team-admin/components/ExpenseReportsStats.d.ts +11 -0
  301. package/dist/editors/builder-team-admin/components/ExpenseReportsStats.d.ts.map +1 -0
  302. package/dist/editors/builder-team-admin/components/ExpenseReportsStats.js +137 -0
  303. package/dist/editors/builder-team-admin/components/Files.d.ts +3 -0
  304. package/dist/editors/builder-team-admin/components/Files.d.ts.map +1 -0
  305. package/dist/editors/builder-team-admin/components/Files.js +12 -0
  306. package/dist/editors/builder-team-admin/components/FolderTree.d.ts +14 -0
  307. package/dist/editors/builder-team-admin/components/FolderTree.d.ts.map +1 -0
  308. package/dist/editors/builder-team-admin/components/FolderTree.js +209 -0
  309. package/dist/editors/builder-team-admin/components/Folders.d.ts +3 -0
  310. package/dist/editors/builder-team-admin/components/Folders.d.ts.map +1 -0
  311. package/dist/editors/builder-team-admin/components/Folders.js +12 -0
  312. package/dist/editors/builder-team-admin/components/NavigationBreadcrumbs.d.ts +3 -0
  313. package/dist/editors/builder-team-admin/components/NavigationBreadcrumbs.d.ts.map +1 -0
  314. package/dist/editors/builder-team-admin/components/NavigationBreadcrumbs.js +6 -0
  315. package/dist/editors/builder-team-admin/components/expense-reports.d.ts +2 -0
  316. package/dist/editors/builder-team-admin/components/expense-reports.d.ts.map +1 -0
  317. package/dist/editors/builder-team-admin/components/expense-reports.js +250 -0
  318. package/dist/editors/builder-team-admin/components/overview/ProfileHeader.d.ts +10 -0
  319. package/dist/editors/builder-team-admin/components/overview/ProfileHeader.d.ts.map +1 -0
  320. package/dist/editors/builder-team-admin/components/overview/ProfileHeader.js +24 -0
  321. package/dist/editors/builder-team-admin/components/overview/SubscriptionsStats.d.ts +15 -0
  322. package/dist/editors/builder-team-admin/components/overview/SubscriptionsStats.d.ts.map +1 -0
  323. package/dist/editors/builder-team-admin/components/overview/SubscriptionsStats.js +61 -0
  324. package/dist/editors/builder-team-admin/components/overview/TeamMembersOverview.d.ts +10 -0
  325. package/dist/editors/builder-team-admin/components/overview/TeamMembersOverview.d.ts.map +1 -0
  326. package/dist/editors/builder-team-admin/components/overview/TeamMembersOverview.js +97 -0
  327. package/dist/editors/builder-team-admin/components/team-members.d.ts +2 -0
  328. package/dist/editors/builder-team-admin/components/team-members.d.ts.map +1 -0
  329. package/dist/editors/builder-team-admin/components/team-members.js +200 -0
  330. package/dist/editors/builder-team-admin/config.d.ts +4 -0
  331. package/dist/editors/builder-team-admin/config.d.ts.map +1 -0
  332. package/dist/editors/builder-team-admin/config.js +10 -0
  333. package/dist/editors/builder-team-admin/editor.d.ts +4 -0
  334. package/dist/editors/builder-team-admin/editor.d.ts.map +1 -0
  335. package/dist/editors/builder-team-admin/editor.js +11 -0
  336. package/dist/editors/builder-team-admin/module.d.ts +3 -0
  337. package/dist/editors/builder-team-admin/module.d.ts.map +1 -0
  338. package/dist/editors/builder-team-admin/module.js +10 -0
  339. package/dist/editors/builders/editor.d.ts +3 -0
  340. package/dist/editors/builders/editor.d.ts.map +1 -0
  341. package/dist/editors/builders/editor.js +204 -0
  342. package/dist/editors/builders/module.d.ts +4 -0
  343. package/dist/editors/builders/module.d.ts.map +1 -0
  344. package/dist/editors/builders/module.js +10 -0
  345. package/dist/editors/editors.d.ts +3 -0
  346. package/dist/editors/editors.d.ts.map +1 -0
  347. package/dist/editors/editors.js +8 -0
  348. package/dist/editors/expense-report/components/AddBillingStatementModal.d.ts +11 -0
  349. package/dist/editors/expense-report/components/AddBillingStatementModal.d.ts.map +1 -0
  350. package/dist/editors/expense-report/components/AddBillingStatementModal.js +195 -0
  351. package/dist/editors/expense-report/components/AggregatedExpensesTable.d.ts +11 -0
  352. package/dist/editors/expense-report/components/AggregatedExpensesTable.d.ts.map +1 -0
  353. package/dist/editors/expense-report/components/AggregatedExpensesTable.js +388 -0
  354. package/dist/editors/expense-report/components/ExpenseReportPDF.d.ts +10 -0
  355. package/dist/editors/expense-report/components/ExpenseReportPDF.d.ts.map +1 -0
  356. package/dist/editors/expense-report/components/ExpenseReportPDF.js +287 -0
  357. package/dist/editors/expense-report/components/ExpenseReportTransactionsTable.d.ts +14 -0
  358. package/dist/editors/expense-report/components/ExpenseReportTransactionsTable.d.ts.map +1 -0
  359. package/dist/editors/expense-report/components/ExpenseReportTransactionsTable.js +64 -0
  360. package/dist/editors/expense-report/components/WalletsTable.d.ts +12 -0
  361. package/dist/editors/expense-report/components/WalletsTable.d.ts.map +1 -0
  362. package/dist/editors/expense-report/components/WalletsTable.js +456 -0
  363. package/dist/editors/expense-report/config.d.ts +3 -0
  364. package/dist/editors/expense-report/config.d.ts.map +1 -0
  365. package/dist/editors/expense-report/config.js +3 -0
  366. package/dist/editors/expense-report/editor.d.ts +2 -0
  367. package/dist/editors/expense-report/editor.d.ts.map +1 -0
  368. package/dist/editors/expense-report/editor.js +107 -0
  369. package/dist/editors/expense-report/hooks/useSyncWallet.d.ts +5 -0
  370. package/dist/editors/expense-report/hooks/useSyncWallet.d.ts.map +1 -0
  371. package/dist/editors/expense-report/hooks/useSyncWallet.js +150 -0
  372. package/dist/editors/expense-report/hooks/useWalletSync.d.ts +9 -0
  373. package/dist/editors/expense-report/hooks/useWalletSync.d.ts.map +1 -0
  374. package/dist/editors/expense-report/hooks/useWalletSync.js +78 -0
  375. package/dist/editors/expense-report/module.d.ts +3 -0
  376. package/dist/editors/expense-report/module.d.ts.map +1 -0
  377. package/dist/editors/expense-report/module.js +9 -0
  378. package/dist/editors/index.d.ts +4 -0
  379. package/dist/editors/index.d.ts.map +1 -0
  380. package/dist/editors/index.js +3 -0
  381. package/dist/editors/service-subscriptions-editor/components/AddCategoryModal.d.ts +7 -0
  382. package/dist/editors/service-subscriptions-editor/components/AddCategoryModal.d.ts.map +1 -0
  383. package/dist/editors/service-subscriptions-editor/components/AddCategoryModal.js +39 -0
  384. package/dist/editors/service-subscriptions-editor/components/AddSubscriptionModal.d.ts +10 -0
  385. package/dist/editors/service-subscriptions-editor/components/AddSubscriptionModal.d.ts.map +1 -0
  386. package/dist/editors/service-subscriptions-editor/components/AddSubscriptionModal.js +64 -0
  387. package/dist/editors/service-subscriptions-editor/components/AddVendorModal.d.ts +7 -0
  388. package/dist/editors/service-subscriptions-editor/components/AddVendorModal.d.ts.map +1 -0
  389. package/dist/editors/service-subscriptions-editor/components/AddVendorModal.js +43 -0
  390. package/dist/editors/service-subscriptions-editor/components/CategoriesList.d.ts +8 -0
  391. package/dist/editors/service-subscriptions-editor/components/CategoriesList.d.ts.map +1 -0
  392. package/dist/editors/service-subscriptions-editor/components/CategoriesList.js +23 -0
  393. package/dist/editors/service-subscriptions-editor/components/EditName.d.ts +3 -0
  394. package/dist/editors/service-subscriptions-editor/components/EditName.d.ts.map +1 -0
  395. package/dist/editors/service-subscriptions-editor/components/EditName.js +31 -0
  396. package/dist/editors/service-subscriptions-editor/components/StatsOverview.d.ts +8 -0
  397. package/dist/editors/service-subscriptions-editor/components/StatsOverview.d.ts.map +1 -0
  398. package/dist/editors/service-subscriptions-editor/components/StatsOverview.js +32 -0
  399. package/dist/editors/service-subscriptions-editor/components/SubscriptionsList.d.ts +10 -0
  400. package/dist/editors/service-subscriptions-editor/components/SubscriptionsList.d.ts.map +1 -0
  401. package/dist/editors/service-subscriptions-editor/components/SubscriptionsList.js +88 -0
  402. package/dist/editors/service-subscriptions-editor/components/VendorsList.d.ts +8 -0
  403. package/dist/editors/service-subscriptions-editor/components/VendorsList.d.ts.map +1 -0
  404. package/dist/editors/service-subscriptions-editor/components/VendorsList.js +23 -0
  405. package/dist/editors/service-subscriptions-editor/editor.d.ts +2 -0
  406. package/dist/editors/service-subscriptions-editor/editor.d.ts.map +1 -0
  407. package/dist/editors/service-subscriptions-editor/editor.js +60 -0
  408. package/dist/editors/service-subscriptions-editor/module.d.ts +4 -0
  409. package/dist/editors/service-subscriptions-editor/module.d.ts.map +1 -0
  410. package/dist/editors/service-subscriptions-editor/module.js +10 -0
  411. package/dist/index.d.ts +5 -0
  412. package/dist/index.d.ts.map +1 -0
  413. package/dist/index.js +6 -0
  414. package/dist/package.json +119 -0
  415. package/dist/powerhouse.manifest.json +27 -0
  416. package/dist/processors/index.d.ts +2 -0
  417. package/dist/processors/index.d.ts.map +1 -0
  418. package/dist/processors/index.js +1 -0
  419. package/dist/style.css +3948 -0
  420. package/dist/subgraphs/index.d.ts +2 -0
  421. package/dist/subgraphs/index.d.ts.map +1 -0
  422. package/dist/subgraphs/index.js +1 -0
  423. package/dist/subgraphs/service-subscriptions/index.d.ts +11 -0
  424. package/dist/subgraphs/service-subscriptions/index.d.ts.map +1 -0
  425. package/dist/subgraphs/service-subscriptions/index.js +11 -0
  426. package/dist/subgraphs/service-subscriptions/resolvers.d.ts +3 -0
  427. package/dist/subgraphs/service-subscriptions/resolvers.d.ts.map +1 -0
  428. package/dist/subgraphs/service-subscriptions/resolvers.js +228 -0
  429. package/dist/subgraphs/service-subscriptions/schema.d.ts +3 -0
  430. package/dist/subgraphs/service-subscriptions/schema.d.ts.map +1 -0
  431. package/dist/subgraphs/service-subscriptions/schema.js +193 -0
  432. package/dist/vite.config.d.ts +3 -0
  433. package/dist/vite.config.d.ts.map +1 -0
  434. package/dist/vite.config.js +13 -0
  435. package/dist/vitest.config.d.ts +3 -0
  436. package/dist/vitest.config.d.ts.map +1 -0
  437. package/dist/vitest.config.js +15 -0
  438. package/package.json +119 -0
@@ -0,0 +1,388 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useState, useRef, useEffect } from "react";
3
+ import React from "react";
4
+ import { actions } from "../../../document-models/expense-report/index.js";
5
+ import { Textarea, Select, Button } from "@powerhousedao/document-engineering";
6
+ import { Plus, Trash2 } from "lucide-react";
7
+ import { generateId } from "document-model";
8
+ export function AggregatedExpensesTable({ wallets, groups, periodStart, periodEnd, dispatch, }) {
9
+ // State for active tab (selected wallet)
10
+ const [activeWalletIndex, setActiveWalletIndex] = useState(0);
11
+ // State for editing comments
12
+ const [editingGroupId, setEditingGroupId] = useState(null);
13
+ const [editingComment, setEditingComment] = useState("");
14
+ const [originalComment, setOriginalComment] = useState("");
15
+ // State for editing numeric fields
16
+ const [editingField, setEditingField] = useState(null);
17
+ const [editingValue, setEditingValue] = useState("");
18
+ // State for adding new line item
19
+ const [isAddingLineItem, setIsAddingLineItem] = useState(false);
20
+ const [selectedGroupId, setSelectedGroupId] = useState("");
21
+ const [duplicateCategoryError, setDuplicateCategoryError] = useState("");
22
+ // State for delete confirmation modal
23
+ const [deleteModalOpen, setDeleteModalOpen] = useState(false);
24
+ const [lineItemToDelete, setLineItemToDelete] = useState(null);
25
+ // Ref for line item editor to scroll into view
26
+ const lineItemEditorRef = useRef(null);
27
+ // Scroll to bottom of page when editor opens
28
+ useEffect(() => {
29
+ if (isAddingLineItem && lineItemEditorRef.current) {
30
+ // Use a slight delay to ensure the editor is rendered
31
+ setTimeout(() => {
32
+ // Find the scrollable container by traversing up from the ref
33
+ let element = lineItemEditorRef.current?.parentElement;
34
+ while (element) {
35
+ const style = window.getComputedStyle(element);
36
+ const isScrollable = style.overflow === "auto" ||
37
+ style.overflow === "scroll" ||
38
+ style.overflowY === "auto" ||
39
+ style.overflowY === "scroll";
40
+ if (isScrollable && element.scrollHeight > element.clientHeight) {
41
+ // Found the scrollable container, scroll to bottom
42
+ element.scrollTo({ top: element.scrollHeight, behavior: "smooth" });
43
+ break;
44
+ }
45
+ element = element.parentElement;
46
+ }
47
+ }, 150);
48
+ }
49
+ }, [isAddingLineItem]);
50
+ // Get existing category IDs for the active wallet
51
+ const existingCategoryIds = useMemo(() => {
52
+ const wallet = wallets[activeWalletIndex];
53
+ if (!wallet || !wallet.lineItems)
54
+ return new Set();
55
+ return new Set(wallet.lineItems
56
+ .filter((item) => item !== null && item !== undefined)
57
+ .map((item) => item.group)
58
+ .filter((group) => !!group));
59
+ }, [wallets, activeWalletIndex]);
60
+ // Create group options for Select component
61
+ const groupOptions = useMemo(() => {
62
+ return groups.map((group) => ({
63
+ value: group.id,
64
+ label: group.label || group.id,
65
+ }));
66
+ }, [groups]);
67
+ // Handle category selection with duplicate check
68
+ const handleCategoryChange = (value) => {
69
+ setSelectedGroupId(value);
70
+ // Check if category already exists
71
+ if (existingCategoryIds.has(value)) {
72
+ const categoryLabel = groups.find((g) => g.id === value)?.label || value;
73
+ setDuplicateCategoryError(`"${categoryLabel}" already exists in this wallet. Please select a different category.`);
74
+ }
75
+ else {
76
+ setDuplicateCategoryError("");
77
+ }
78
+ };
79
+ // Handle saving new line item
80
+ const handleSaveLineItem = () => {
81
+ const wallet = wallets[activeWalletIndex];
82
+ if (!wallet || !wallet.wallet || !selectedGroupId)
83
+ return;
84
+ // Prevent saving if duplicate
85
+ if (existingCategoryIds.has(selectedGroupId)) {
86
+ return;
87
+ }
88
+ const newLineItem = {
89
+ id: generateId(),
90
+ label: groups.find((g) => g.id === selectedGroupId)?.label || "",
91
+ group: selectedGroupId,
92
+ budget: 0,
93
+ actuals: 0,
94
+ forecast: 0,
95
+ payments: 0,
96
+ comments: "",
97
+ };
98
+ dispatch(actions.addLineItem({
99
+ wallet: wallet.wallet,
100
+ lineItem: newLineItem,
101
+ }));
102
+ // Reset state
103
+ setIsAddingLineItem(false);
104
+ setSelectedGroupId("");
105
+ setDuplicateCategoryError("");
106
+ };
107
+ // Handle canceling new line item
108
+ const handleCancelLineItem = () => {
109
+ setIsAddingLineItem(false);
110
+ setSelectedGroupId("");
111
+ setDuplicateCategoryError("");
112
+ };
113
+ // Handle opening delete confirmation modal
114
+ const handleDeleteLineItem = (lineItemId, lineItemLabel) => {
115
+ setLineItemToDelete({ id: lineItemId, label: lineItemLabel });
116
+ setDeleteModalOpen(true);
117
+ };
118
+ // Handle confirming deletion
119
+ const handleConfirmDelete = () => {
120
+ const wallet = wallets[activeWalletIndex];
121
+ if (!wallet || !wallet.wallet || !lineItemToDelete)
122
+ return;
123
+ dispatch(actions.removeLineItem({
124
+ wallet: wallet.wallet,
125
+ lineItemId: lineItemToDelete.id,
126
+ }));
127
+ // Close modal and reset state
128
+ setDeleteModalOpen(false);
129
+ setLineItemToDelete(null);
130
+ };
131
+ // Handle canceling deletion
132
+ const handleCancelDelete = () => {
133
+ setDeleteModalOpen(false);
134
+ setLineItemToDelete(null);
135
+ };
136
+ // Format period for title
137
+ const periodTitle = useMemo(() => {
138
+ if (!periodStart)
139
+ return "Breakdown";
140
+ const date = new Date(periodStart);
141
+ const month = date.toLocaleDateString("en-US", { month: "short" });
142
+ const year = date.getFullYear();
143
+ return `${month} ${year} Breakdown`;
144
+ }, [periodStart]);
145
+ // Create a map of groups with their parent info
146
+ const groupsMap = useMemo(() => {
147
+ const map = new Map();
148
+ groups.forEach((group) => {
149
+ map.set(group.id, { group });
150
+ });
151
+ // Add parent references
152
+ groups.forEach((group) => {
153
+ if (group.parentId) {
154
+ const entry = map.get(group.id);
155
+ const parentEntry = map.get(group.parentId);
156
+ if (entry && parentEntry) {
157
+ entry.parent = parentEntry.group;
158
+ }
159
+ }
160
+ });
161
+ return map;
162
+ }, [groups]);
163
+ // Get line items for the active wallet with group information
164
+ // Line items are now already aggregated by category
165
+ const walletLineItems = useMemo(() => {
166
+ if (!wallets[activeWalletIndex])
167
+ return [];
168
+ const wallet = wallets[activeWalletIndex];
169
+ const lineItems = wallet.lineItems || [];
170
+ return lineItems
171
+ .filter((item) => item !== null && item !== undefined)
172
+ .map((item) => {
173
+ const groupInfo = item.group ? groupsMap.get(item.group) : undefined;
174
+ return {
175
+ ...item,
176
+ groupLabel: groupInfo?.group.label || item.label || undefined,
177
+ parentGroupId: groupInfo?.parent?.id || null,
178
+ parentGroupLabel: groupInfo?.parent?.label || undefined,
179
+ };
180
+ });
181
+ }, [wallets, activeWalletIndex, groupsMap]);
182
+ // Group line items by parent category
183
+ // Line items are already aggregated by category, so we just need to group them by parent
184
+ const groupedAndAggregatedItems = useMemo(() => {
185
+ const grouped = new Map();
186
+ walletLineItems.forEach((item) => {
187
+ if (!item)
188
+ return;
189
+ const parentKey = item.parentGroupId || "uncategorized";
190
+ const items = grouped.get(parentKey) || [];
191
+ items.push({
192
+ lineItemId: item.id || "",
193
+ groupId: item.group || "uncategorized",
194
+ groupLabel: item.groupLabel || "Uncategorised",
195
+ parentGroupId: item.parentGroupId,
196
+ parentGroupLabel: item.parentGroupLabel,
197
+ budget: item.budget || 0,
198
+ forecast: item.forecast || 0,
199
+ actuals: item.actuals || 0,
200
+ payments: item.payments || 0,
201
+ comment: item.comments || "",
202
+ });
203
+ grouped.set(parentKey, items);
204
+ });
205
+ return grouped;
206
+ }, [walletLineItems]);
207
+ // Calculate subtotals for each parent group
208
+ const calculateSubtotal = (items) => {
209
+ return items.reduce((acc, item) => ({
210
+ budget: acc.budget + item.budget,
211
+ forecast: acc.forecast + item.forecast,
212
+ actuals: acc.actuals + item.actuals,
213
+ difference: acc.difference + (item.forecast - item.actuals),
214
+ payments: acc.payments + item.payments,
215
+ }), { budget: 0, forecast: 0, actuals: 0, difference: 0, payments: 0 });
216
+ };
217
+ // Calculate grand totals
218
+ const grandTotals = useMemo(() => {
219
+ return walletLineItems.reduce((acc, item) => ({
220
+ budget: acc.budget + (item?.budget || 0),
221
+ forecast: acc.forecast + (item?.forecast || 0),
222
+ actuals: acc.actuals + (item?.actuals || 0),
223
+ difference: acc.difference + ((item?.forecast || 0) - (item?.actuals || 0)),
224
+ payments: acc.payments + (item?.payments || 0),
225
+ }), { budget: 0, forecast: 0, actuals: 0, difference: 0, payments: 0 });
226
+ }, [walletLineItems]);
227
+ const formatNumber = (value) => {
228
+ return new Intl.NumberFormat("en-US", {
229
+ minimumFractionDigits: 2,
230
+ maximumFractionDigits: 2,
231
+ }).format(value);
232
+ };
233
+ const formatWalletAddress = (address) => {
234
+ if (!address || address.length < 13)
235
+ return address;
236
+ return `${address.substring(0, 6)}...${address.substring(address.length - 6)}`;
237
+ };
238
+ // Handle starting comment edit
239
+ const handleStartEdit = (lineItemId, currentComment) => {
240
+ setEditingGroupId(lineItemId);
241
+ setEditingComment(currentComment);
242
+ setOriginalComment(currentComment);
243
+ };
244
+ // Handle saving comment for a single line item
245
+ const handleSaveComment = () => {
246
+ const wallet = wallets[activeWalletIndex];
247
+ if (!wallet || !wallet.wallet || !editingGroupId)
248
+ return;
249
+ // Only dispatch if the comment has actually changed
250
+ if (editingComment !== originalComment) {
251
+ dispatch(actions.updateLineItem({
252
+ wallet: wallet.wallet,
253
+ lineItemId: editingGroupId,
254
+ comments: editingComment,
255
+ }));
256
+ }
257
+ // Reset editing state
258
+ setEditingGroupId(null);
259
+ setEditingComment("");
260
+ setOriginalComment("");
261
+ };
262
+ // Handle canceling comment edit
263
+ const handleCancelEdit = () => {
264
+ setEditingGroupId(null);
265
+ setEditingComment("");
266
+ setOriginalComment("");
267
+ };
268
+ // Handle starting numeric field edit
269
+ const handleStartFieldEdit = (lineItemId, field, currentValue) => {
270
+ setEditingField({ lineItemId, field, originalValue: currentValue });
271
+ setEditingValue(currentValue.toString());
272
+ };
273
+ // Handle saving numeric field
274
+ const handleSaveField = () => {
275
+ const wallet = wallets[activeWalletIndex];
276
+ if (!wallet || !wallet.wallet || !editingField)
277
+ return;
278
+ const numericValue = parseFloat(editingValue);
279
+ if (isNaN(numericValue)) {
280
+ // Invalid number, cancel edit
281
+ handleCancelFieldEdit();
282
+ return;
283
+ }
284
+ // Only dispatch if the value has actually changed
285
+ if (numericValue !== editingField.originalValue) {
286
+ dispatch(actions.updateLineItem({
287
+ wallet: wallet.wallet,
288
+ lineItemId: editingField.lineItemId,
289
+ [editingField.field]: numericValue,
290
+ }));
291
+ }
292
+ // Reset editing state
293
+ setEditingField(null);
294
+ setEditingValue("");
295
+ };
296
+ // Handle canceling numeric field edit
297
+ const handleCancelFieldEdit = () => {
298
+ setEditingField(null);
299
+ setEditingValue("");
300
+ };
301
+ // Sort parent groups: Headcount first, then Non-Headcount, then others, then uncategorized
302
+ const sortedParentKeys = useMemo(() => {
303
+ const keys = Array.from(groupedAndAggregatedItems.keys());
304
+ // Find Headcount and Non-Headcount group IDs
305
+ const headcountGroup = groups.find((g) => g.label === "Headcount Expenses");
306
+ const nonHeadcountGroup = groups.find((g) => g.label === "Non-Headcount Expenses");
307
+ return keys.sort((a, b) => {
308
+ // Uncategorized always goes last
309
+ if (a === "uncategorized")
310
+ return 1;
311
+ if (b === "uncategorized")
312
+ return -1;
313
+ // Headcount Expenses always first
314
+ if (a === headcountGroup?.id)
315
+ return -1;
316
+ if (b === headcountGroup?.id)
317
+ return 1;
318
+ // Non-Headcount Expenses always second
319
+ if (a === nonHeadcountGroup?.id)
320
+ return -1;
321
+ if (b === nonHeadcountGroup?.id)
322
+ return 1;
323
+ // For other groups, maintain their original order
324
+ return 0;
325
+ });
326
+ }, [groupedAndAggregatedItems, groups]);
327
+ if (wallets.length === 0) {
328
+ return null;
329
+ }
330
+ return (_jsxs("div", { className: "space-y-4", children: [_jsx("div", { className: "border-b border-gray-200 dark:border-gray-700", children: _jsx("nav", { className: "-mb-px flex space-x-8", "aria-label": "Tabs", children: wallets.map((wallet, index) => {
331
+ const isActive = index === activeWalletIndex;
332
+ return (_jsx("button", { onClick: () => setActiveWalletIndex(index), className: `
333
+ whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm transition-colors
334
+ ${isActive
335
+ ? "border-green-500 text-green-600 dark:text-green-400"
336
+ : "border-transparent text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 hover:border-gray-300 dark:hover:border-gray-600"}
337
+ `, children: wallet.name || formatWalletAddress(wallet.wallet || "") }, wallet.wallet || index));
338
+ }) }) }), _jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "min-w-full divide-y divide-gray-200 dark:divide-gray-700", children: [_jsx("thead", { className: "bg-gray-50 dark:bg-gray-800", children: _jsxs("tr", { children: [_jsx("th", { className: "pl-6 pr-3 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { onClick: () => setIsAddingLineItem(true), className: "inline-flex items-center justify-center w-6 h-6 text-blue-600 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-300 bg-blue-50 dark:bg-blue-900/20 hover:bg-blue-100 dark:hover:bg-blue-900/30 rounded-md transition-colors", children: _jsx(Plus, { size: 14 }) }), _jsx("span", { children: "Expense Category" })] }) }), _jsx("th", { className: "px-3 py-3 text-right text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider", children: "Mthly Budget" }), _jsx("th", { className: "px-3 py-3 text-right text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider", children: "Forecast" }), _jsx("th", { className: "px-3 py-3 text-right text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider", children: "Actuals" }), _jsx("th", { className: "px-3 py-3 text-right text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider", children: "Difference" }), _jsx("th", { className: "px-3 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider w-96", children: "Comments" }), _jsx("th", { className: "px-3 py-3 text-right text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider w-32", children: "Payments" }), _jsx("th", { className: "px-2 py-3 text-center text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider w-16", children: "Actions" })] }) }), _jsxs("tbody", { className: "divide-y divide-gray-200 dark:divide-gray-700", children: [sortedParentKeys.map((parentKey) => {
339
+ const items = groupedAndAggregatedItems.get(parentKey) || [];
340
+ if (items.length === 0)
341
+ return null;
342
+ const subtotals = calculateSubtotal(items);
343
+ const parentLabel = parentKey === "uncategorized"
344
+ ? "Uncategorised"
345
+ : items[0]?.parentGroupLabel || "Other";
346
+ return (_jsxs(React.Fragment, { children: [_jsx("tr", { className: "bg-gray-100 dark:bg-gray-800", children: _jsx("td", { colSpan: 8, className: "px-6 py-3 text-sm font-bold text-gray-900 dark:text-white", children: parentLabel }) }), items.map((item) => {
347
+ if (!item)
348
+ return null;
349
+ const difference = item.forecast - item.actuals;
350
+ const isEditingComment = editingGroupId === item.lineItemId;
351
+ // Helper function to render editable numeric cell
352
+ const renderEditableCell = (field, value) => {
353
+ const isEditingThis = editingField?.lineItemId === item.lineItemId &&
354
+ editingField?.field === field;
355
+ if (isEditingThis) {
356
+ return (_jsx("div", { className: "flex items-center gap-1", children: _jsx("input", { type: "number", step: "0.01", value: editingValue, onChange: (e) => setEditingValue(e.target.value), onKeyDown: (e) => {
357
+ if (e.key === "Enter") {
358
+ handleSaveField();
359
+ }
360
+ else if (e.key === "Escape") {
361
+ handleCancelFieldEdit();
362
+ }
363
+ }, onBlur: handleSaveField, autoFocus: true, className: "w-full px-2 py-1 text-right text-sm border border-blue-500 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 bg-white dark:bg-gray-800 text-gray-900 dark:text-white" }) }));
364
+ }
365
+ return (_jsx("div", { className: "group cursor-pointer text-right", onClick: () => handleStartFieldEdit(item.lineItemId, field, value), children: _jsx("span", { className: "group-hover:bg-blue-50 dark:group-hover:bg-blue-900/20 inline-block px-1 py-0.5 rounded transition-colors min-w-[4rem]", children: formatNumber(value) }) }));
366
+ };
367
+ return (_jsxs("tr", { className: "bg-white dark:bg-gray-900 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors align-top", children: [_jsx("td", { className: "pl-6 pr-3 py-3 whitespace-nowrap text-sm text-gray-900 dark:text-white", children: item.groupLabel }), _jsx("td", { className: "px-3 py-3 whitespace-nowrap text-right text-sm text-gray-900 dark:text-white", children: renderEditableCell("budget", item.budget) }), _jsx("td", { className: "px-3 py-3 whitespace-nowrap text-right text-sm text-gray-900 dark:text-white", children: renderEditableCell("forecast", item.forecast) }), _jsx("td", { className: "px-3 py-3 whitespace-nowrap text-right text-sm text-gray-900 dark:text-white", children: renderEditableCell("actuals", item.actuals) }), _jsx("td", { className: `px-3 py-3 whitespace-nowrap text-right text-sm font-medium ${difference < 0
368
+ ? "text-red-600 dark:text-red-400"
369
+ : "text-gray-900 dark:text-white"}`, children: formatNumber(difference) }), _jsx("td", { className: "px-3 py-3 text-sm w-96", children: isEditingComment ? (_jsx(Textarea, { value: editingComment, onChange: (e) => setEditingComment(e.target.value), placeholder: "Add comment...", autoExpand: true, multiline: true, onKeyDown: (e) => {
370
+ if (e.key === "Enter" && !e.shiftKey) {
371
+ e.preventDefault();
372
+ handleSaveComment();
373
+ }
374
+ else if (e.key === "Escape") {
375
+ handleCancelEdit();
376
+ }
377
+ else if (e.key === "Tab") {
378
+ e.preventDefault();
379
+ handleSaveComment();
380
+ }
381
+ }, onBlur: handleSaveComment, autoFocus: true, className: "w-full px-2 py-1 text-sm border border-blue-500 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 bg-white dark:bg-gray-800 text-gray-900 dark:text-white max-h-32 overflow-y-auto" })) : (_jsx("div", { className: "group cursor-pointer w-full max-h-20 overflow-hidden", onClick: () => handleStartEdit(item.lineItemId, item.comment), title: item.comment || "No comments", children: _jsx("span", { className: "group-hover:bg-blue-50 dark:group-hover:bg-blue-900/20 px-1 py-0.5 rounded transition-colors block text-gray-600 dark:text-gray-400 break-words", children: item.comment || "No comments" }) })) }), _jsx("td", { className: "px-3 py-3 whitespace-nowrap text-right text-sm text-gray-900 dark:text-white w-32", children: renderEditableCell("payments", item.payments) }), _jsx("td", { className: "px-2 py-3 whitespace-nowrap text-center w-16", children: _jsx("button", { onClick: () => handleDeleteLineItem(item.lineItemId, item.groupLabel), className: "inline-flex items-center justify-center p-0.5 text-red-600 dark:text-red-400 hover:text-red-800 dark:hover:text-red-300 hover:bg-red-50 dark:hover:bg-red-900/20 rounded transition-colors", title: "Delete line item", children: _jsx(Trash2, { size: 14 }) }) })] }, item.lineItemId));
382
+ }), _jsxs("tr", { className: "bg-gray-50 dark:bg-gray-800/50 font-semibold align-top", children: [_jsx("td", { className: "pl-6 pr-3 py-3 whitespace-nowrap text-sm text-gray-900 dark:text-white", children: "Subtotal" }), _jsx("td", { className: "px-3 py-3 whitespace-nowrap text-right text-sm text-gray-900 dark:text-white", children: _jsx("div", { className: "text-right", children: _jsx("span", { className: "inline-block px-1 py-0.5 min-w-[4rem]", children: formatNumber(subtotals.budget) }) }) }), _jsx("td", { className: "px-3 py-3 whitespace-nowrap text-right text-sm text-gray-900 dark:text-white", children: _jsx("div", { className: "text-right", children: _jsx("span", { className: "inline-block px-1 py-0.5 min-w-[4rem]", children: formatNumber(subtotals.forecast) }) }) }), _jsx("td", { className: "px-3 py-3 whitespace-nowrap text-right text-sm text-gray-900 dark:text-white", children: _jsx("div", { className: "text-right", children: _jsx("span", { className: "inline-block px-1 py-0.5 min-w-[4rem]", children: formatNumber(subtotals.actuals) }) }) }), _jsx("td", { className: `px-3 py-3 whitespace-nowrap text-right text-sm font-bold ${subtotals.difference < 0
383
+ ? "text-red-600 dark:text-red-400"
384
+ : "text-gray-900 dark:text-white"}`, children: formatNumber(subtotals.difference) }), _jsx("td", { className: "px-3 py-3" }), _jsx("td", { className: "px-3 py-3 whitespace-nowrap text-right text-sm text-gray-900 dark:text-white w-32", children: _jsx("div", { className: "text-right", children: _jsx("span", { className: "inline-block px-1 py-0.5 min-w-[4rem]", children: formatNumber(subtotals.payments) }) }) }), _jsx("td", { className: "px-2 py-3" })] })] }, parentKey));
385
+ }), _jsxs("tr", { className: "bg-gray-100 dark:bg-gray-800 font-bold align-top", children: [_jsx("td", { className: "pl-6 pr-3 py-4 whitespace-nowrap text-sm text-gray-900 dark:text-white", children: "Total" }), _jsx("td", { className: "px-3 py-4 whitespace-nowrap text-right text-sm text-gray-900 dark:text-white", children: _jsx("div", { className: "text-right", children: _jsx("span", { className: "inline-block px-1 py-0.5 min-w-[4rem]", children: formatNumber(grandTotals.budget) }) }) }), _jsx("td", { className: "px-3 py-4 whitespace-nowrap text-right text-sm text-gray-900 dark:text-white", children: _jsx("div", { className: "text-right", children: _jsx("span", { className: "inline-block px-1 py-0.5 min-w-[4rem]", children: formatNumber(grandTotals.forecast) }) }) }), _jsx("td", { className: "px-3 py-4 whitespace-nowrap text-right text-sm text-gray-900 dark:text-white", children: _jsx("div", { className: "text-right", children: _jsx("span", { className: "inline-block px-1 py-0.5 min-w-[4rem]", children: formatNumber(grandTotals.actuals) }) }) }), _jsx("td", { className: `px-3 py-4 whitespace-nowrap text-right text-sm ${grandTotals.difference < 0
386
+ ? "text-red-600 dark:text-red-400"
387
+ : "text-gray-900 dark:text-white"}`, children: formatNumber(grandTotals.difference) }), _jsx("td", { className: "px-3 py-4" }), _jsx("td", { className: "px-3 py-4 whitespace-nowrap text-right text-sm text-gray-900 dark:text-white w-32", children: _jsx("div", { className: "text-right", children: _jsx("span", { className: "inline-block px-1 py-0.5 min-w-[4rem]", children: formatNumber(grandTotals.payments) }) }) }), _jsx("td", { className: "px-2 py-4" })] }), isAddingLineItem && (_jsx("tr", { ref: lineItemEditorRef, className: "bg-white dark:bg-gray-900 border-t border-gray-900 dark:border-gray-100", children: _jsx("td", { colSpan: 8, className: "px-6 py-4", children: _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex items-end gap-4", children: [_jsxs("div", { className: "flex-1", children: [_jsx("label", { className: "block text-xs font-medium text-gray-700 dark:text-gray-300 mb-2", children: "Select Category" }), _jsx(Select, { name: "category", searchable: true, value: selectedGroupId, onChange: (value) => handleCategoryChange(value), options: groupOptions, placeholder: "Choose a category...", className: "w-full" })] }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { onClick: handleSaveLineItem, disabled: !selectedGroupId || !!duplicateCategoryError, className: "bg-green-600 hover:bg-green-700 text-white", children: "SAVE" }), _jsx(Button, { onClick: handleCancelLineItem, variant: "secondary", children: "CANCEL" })] })] }), duplicateCategoryError && (_jsx("div", { className: "flex items-start gap-2 p-3 bg-amber-50 dark:bg-amber-900/20 border border-amber-200 dark:border-amber-800 rounded-md", children: _jsx("span", { className: "text-sm text-amber-800 dark:text-amber-200", children: duplicateCategoryError }) }))] }) }) }))] })] }) }), deleteModalOpen && lineItemToDelete && (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center", children: [_jsx("div", { className: "absolute inset-0 bg-black/50 backdrop-blur-sm", onClick: handleCancelDelete }), _jsxs("div", { className: "relative bg-white dark:bg-gray-800 rounded-lg shadow-xl max-w-md w-full mx-4 overflow-hidden", children: [_jsx("div", { className: "px-6 py-4 border-b border-gray-200 dark:border-gray-700", children: _jsx("h3", { className: "text-lg font-semibold text-gray-900 dark:text-white", children: "Delete Line Item" }) }), _jsx("div", { className: "px-6 py-4", children: _jsxs("p", { className: "text-sm text-gray-600 dark:text-gray-400", children: ["Are you sure you want to delete the line item", " ", _jsxs("span", { className: "font-semibold text-gray-900 dark:text-white", children: ["\"", lineItemToDelete.label, "\""] }), "? This action cannot be undone."] }) }), _jsxs("div", { className: "px-6 py-4 bg-gray-50 dark:bg-gray-800/50 border-t border-gray-200 dark:border-gray-700 flex justify-end gap-3", children: [_jsx(Button, { onClick: handleCancelDelete, variant: "secondary", children: "CANCEL" }), _jsx(Button, { onClick: handleConfirmDelete, className: "bg-red-600 hover:bg-red-700 text-white", children: "DELETE" })] })] })] }))] }));
388
+ }
@@ -0,0 +1,10 @@
1
+ import type { Wallet, LineItemGroup } from "../../../document-models/expense-report/gen/types.js";
2
+ interface ExpenseReportPDFProps {
3
+ periodStart?: string | null;
4
+ periodEnd?: string | null;
5
+ wallets: Wallet[];
6
+ groups: LineItemGroup[];
7
+ }
8
+ export declare function ExpenseReportPDF({ periodStart, periodEnd, wallets, groups, }: ExpenseReportPDFProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=ExpenseReportPDF.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpenseReportPDF.d.ts","sourceRoot":"","sources":["../../../../editors/expense-report/components/ExpenseReportPDF.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,MAAM,EACN,aAAa,EAEd,MAAM,sDAAsD,CAAC;AAE9D,UAAU,qBAAqB;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAmKD,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,GACP,EAAE,qBAAqB,2CAoVvB"}