@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,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { FileItem } from "@powerhousedao/design-system/connect";
3
+ import { useNodesInSelectedDriveOrFolder, isFileNodeKind, } from "@powerhousedao/reactor-browser";
4
+ /** Shows the files in the selected drive or folder */
5
+ export function Files() {
6
+ const nodes = useNodesInSelectedDriveOrFolder();
7
+ const fileNodes = nodes.filter((n) => isFileNodeKind(n));
8
+ const hasFiles = fileNodes.length > 0;
9
+ if (!hasFiles)
10
+ return null;
11
+ return (_jsxs("div", { children: [_jsx("h3", { className: "mb-2 text-sm font-semibold text-gray-600", children: "Documents" }), _jsx("div", { className: "flex flex-wrap gap-4", children: fileNodes.map((fileNode) => (_jsx(FileItem, { fileNode: fileNode }, fileNode.id))) })] }));
12
+ }
@@ -0,0 +1,14 @@
1
+ /** Custom view types that don't correspond to document models */
2
+ export type CustomView = "team-members" | "expense-reports" | null;
3
+ type FolderTreeProps = {
4
+ onCustomViewChange?: (view: CustomView) => void;
5
+ };
6
+ /**
7
+ * Sidebar navigation component with hardcoded navigation sections.
8
+ * Displays Builder Profile, Team Members, Service Subscriptions, and Expense Reports.
9
+ * Clicking a section navigates to an existing document or creates one if none exists.
10
+ * The Expense Reports section dynamically shows folder contents as child nodes.
11
+ */
12
+ export declare function FolderTree({ onCustomViewChange }: FolderTreeProps): import("react/jsx-runtime").JSX.Element | null;
13
+ export {};
14
+ //# sourceMappingURL=FolderTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FolderTree.d.ts","sourceRoot":"","sources":["../../../../editors/builder-team-admin/components/FolderTree.tsx"],"names":[],"mappings":"AAoBA,iEAAiE;AACjE,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,iBAAiB,GAAG,IAAI,CAAC;AA4FnE,KAAK,eAAe,GAAG;IACrB,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,kBAAkB,EAAE,EAAE,eAAe,kDAmKjE"}
@@ -0,0 +1,209 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Sidebar, SidebarProvider, } from "@powerhousedao/document-engineering";
3
+ import { setSelectedNode, showCreateDocumentModal, useDocumentsInSelectedDrive, useSelectedDrive, isFolderNodeKind, isFileNodeKind, } from "@powerhousedao/reactor-browser";
4
+ import { CreditCard, FileText, User, Users, Folder } from "lucide-react";
5
+ import { useMemo, useState } from "react";
6
+ const ICON_SIZE = 16;
7
+ const EXPENSE_REPORTS_FOLDER_NAME = "Expense Reports";
8
+ /**
9
+ * Maps navigation section IDs to their corresponding document types.
10
+ * When a section is clicked, the corresponding document type will be created or navigated to.
11
+ * A null value indicates the section uses a custom view instead.
12
+ */
13
+ const SECTION_TO_DOCUMENT_TYPE = {
14
+ "builder-profile": "powerhouse/builder-profile",
15
+ "team-members": null, // Uses custom TeamMembers component
16
+ "service-subscriptions": "powerhouse/service-subscriptions",
17
+ "expense-reports": null, // Uses custom ExpenseReports component
18
+ };
19
+ /**
20
+ * Maps navigation section IDs to custom view identifiers.
21
+ */
22
+ const SECTION_TO_CUSTOM_VIEW = {
23
+ "team-members": "team-members",
24
+ "expense-reports": "expense-reports",
25
+ };
26
+ /**
27
+ * Base navigation sections for the Builder Team Admin drive.
28
+ * The expense-reports section will have dynamic children added based on folder contents.
29
+ */
30
+ const BASE_NAVIGATION_SECTIONS = [
31
+ {
32
+ id: "builder-profile",
33
+ title: "Builder Profile",
34
+ icon: _jsx(User, { size: ICON_SIZE }),
35
+ },
36
+ {
37
+ id: "team-members",
38
+ title: "Team Members",
39
+ icon: _jsx(Users, { size: ICON_SIZE }),
40
+ },
41
+ {
42
+ id: "service-subscriptions",
43
+ title: "Service Subscriptions",
44
+ icon: _jsx(CreditCard, { size: ICON_SIZE }),
45
+ },
46
+ {
47
+ id: "expense-reports",
48
+ title: "Expense Reports",
49
+ icon: _jsx(FileText, { size: ICON_SIZE }),
50
+ },
51
+ ];
52
+ /**
53
+ * Recursively builds SidebarNode children from folder contents.
54
+ * Folders get folder icons, files get document icons.
55
+ */
56
+ function buildSidebarNodesFromFolder(parentId, allNodes) {
57
+ // Find all nodes that are direct children of the parent folder
58
+ const childNodes = allNodes.filter((node) => {
59
+ if (isFolderNodeKind(node)) {
60
+ return node.parentFolder === parentId;
61
+ }
62
+ if (isFileNodeKind(node)) {
63
+ return node.parentFolder === parentId;
64
+ }
65
+ return false;
66
+ });
67
+ return childNodes.map((node) => {
68
+ const isFolder = isFolderNodeKind(node);
69
+ const sidebarNode = {
70
+ id: node.id,
71
+ title: node.name,
72
+ icon: isFolder ? (_jsx(Folder, { size: ICON_SIZE })) : (_jsx(FileText, { size: ICON_SIZE })),
73
+ };
74
+ // Recursively add children for folders
75
+ if (isFolder) {
76
+ const children = buildSidebarNodesFromFolder(node.id, allNodes);
77
+ if (children.length > 0) {
78
+ sidebarNode.children = children;
79
+ }
80
+ }
81
+ return sidebarNode;
82
+ });
83
+ }
84
+ /**
85
+ * Sidebar navigation component with hardcoded navigation sections.
86
+ * Displays Builder Profile, Team Members, Service Subscriptions, and Expense Reports.
87
+ * Clicking a section navigates to an existing document or creates one if none exists.
88
+ * The Expense Reports section dynamically shows folder contents as child nodes.
89
+ */
90
+ export function FolderTree({ onCustomViewChange }) {
91
+ const [activeNodeId, setActiveNodeId] = useState(BASE_NAVIGATION_SECTIONS[0].id);
92
+ const documentsInDrive = useDocumentsInSelectedDrive();
93
+ const [driveDocument] = useSelectedDrive();
94
+ // Find the "Expense Reports" folder in the drive
95
+ const expenseReportsFolder = useMemo(() => {
96
+ if (!driveDocument)
97
+ return null;
98
+ const nodes = driveDocument.state.global.nodes;
99
+ return nodes.find((node) => isFolderNodeKind(node) && node.name === EXPENSE_REPORTS_FOLDER_NAME);
100
+ }, [driveDocument]);
101
+ // Build a set of all node IDs that are within the Expense Reports folder tree
102
+ const expenseReportsNodeIds = useMemo(() => {
103
+ const nodeIds = new Set();
104
+ if (!expenseReportsFolder || !driveDocument)
105
+ return nodeIds;
106
+ const allNodes = driveDocument.state.global.nodes;
107
+ // Recursively collect all node IDs within the Expense Reports folder
108
+ const collectNodeIds = (parentId) => {
109
+ nodeIds.add(parentId);
110
+ for (const node of allNodes) {
111
+ if (isFolderNodeKind(node) && node.parentFolder === parentId) {
112
+ collectNodeIds(node.id);
113
+ }
114
+ else if (isFileNodeKind(node) && node.parentFolder === parentId) {
115
+ nodeIds.add(node.id);
116
+ }
117
+ }
118
+ };
119
+ collectNodeIds(expenseReportsFolder.id);
120
+ return nodeIds;
121
+ }, [expenseReportsFolder, driveDocument]);
122
+ // Build navigation sections with dynamic expense reports children
123
+ const navigationSections = useMemo(() => {
124
+ if (!expenseReportsFolder || !driveDocument) {
125
+ return BASE_NAVIGATION_SECTIONS;
126
+ }
127
+ const allNodes = driveDocument.state.global.nodes;
128
+ const expenseReportsChildren = buildSidebarNodesFromFolder(expenseReportsFolder.id, allNodes);
129
+ // Replace the expense-reports section with one that has children
130
+ return BASE_NAVIGATION_SECTIONS.map((section) => {
131
+ if (section.id === "expense-reports" &&
132
+ expenseReportsChildren.length > 0) {
133
+ return {
134
+ ...section,
135
+ children: expenseReportsChildren,
136
+ };
137
+ }
138
+ return section;
139
+ });
140
+ }, [expenseReportsFolder, driveDocument]);
141
+ // Check if builder profile document exists - don't show sidebar if it doesn't
142
+ const hasBuilderProfile = useMemo(() => {
143
+ if (!documentsInDrive)
144
+ return false;
145
+ return documentsInDrive.some((doc) => doc.header.documentType === "powerhouse/builder-profile");
146
+ }, [documentsInDrive]);
147
+ // Create a map of document type to existing document (first one found)
148
+ const existingDocumentsByType = useMemo(() => {
149
+ const map = {};
150
+ if (!documentsInDrive)
151
+ return map;
152
+ for (const doc of documentsInDrive) {
153
+ const docType = doc.header.documentType;
154
+ // Only store the first document of each type (singleton pattern)
155
+ if (!map[docType]) {
156
+ map[docType] = doc.header.id;
157
+ }
158
+ }
159
+ return map;
160
+ }, [documentsInDrive]);
161
+ // Don't render if no builder profile exists
162
+ if (!hasBuilderProfile) {
163
+ return null;
164
+ }
165
+ const handleActiveNodeChange = (node) => {
166
+ setActiveNodeId(node.id);
167
+ // Check if this is a child node within the Expense Reports folder
168
+ if (expenseReportsNodeIds.has(node.id)) {
169
+ // Check if it's a folder or a document
170
+ const driveNode = driveDocument?.state.global.nodes.find((n) => n.id === node.id);
171
+ if (driveNode && isFolderNodeKind(driveNode)) {
172
+ // It's a folder - navigate to it within the expense reports view
173
+ onCustomViewChange?.("expense-reports");
174
+ setSelectedNode(node.id);
175
+ }
176
+ else if (driveNode && isFileNodeKind(driveNode)) {
177
+ // It's a document - open the document editor
178
+ onCustomViewChange?.(null);
179
+ setSelectedNode(node.id);
180
+ }
181
+ return;
182
+ }
183
+ // Check if this section has a custom view
184
+ const customView = SECTION_TO_CUSTOM_VIEW[node.id];
185
+ if (customView) {
186
+ onCustomViewChange?.(customView);
187
+ setSelectedNode(""); // Deselect any document so custom view can render
188
+ return;
189
+ }
190
+ // Clear custom view when navigating to a document
191
+ onCustomViewChange?.(null);
192
+ const documentType = SECTION_TO_DOCUMENT_TYPE[node.id];
193
+ if (!documentType)
194
+ return;
195
+ const existingDocId = existingDocumentsByType[documentType];
196
+ if (existingDocId) {
197
+ // Navigate to the existing document
198
+ setSelectedNode(existingDocId);
199
+ }
200
+ else {
201
+ // Create a new document
202
+ showCreateDocumentModal(documentType);
203
+ }
204
+ };
205
+ return (_jsx(SidebarProvider, { nodes: navigationSections, children: _jsx(Sidebar, { className: "pt-1", nodes: navigationSections, activeNodeId: activeNodeId, onActiveNodeChange: handleActiveNodeChange, sidebarTitle: "Builder Team Admin", showSearchBar: false, resizable: true, allowPinning: false, showStatusFilter: false, initialWidth: 256, defaultLevel: 2, handleOnTitleClick: () => {
206
+ onCustomViewChange?.(null);
207
+ setSelectedNode("");
208
+ } }) }));
209
+ }
@@ -0,0 +1,3 @@
1
+ /** Shows the folders in the selected drive or folder */
2
+ export declare function Folders(): import("react/jsx-runtime").JSX.Element | null;
3
+ //# sourceMappingURL=Folders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Folders.d.ts","sourceRoot":"","sources":["../../../../editors/builder-team-admin/components/Folders.tsx"],"names":[],"mappings":"AAMA,wDAAwD;AACxD,wBAAgB,OAAO,mDAgBtB"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { FolderItem } from "@powerhousedao/design-system/connect";
3
+ import { useNodesInSelectedDriveOrFolder, isFolderNodeKind, } from "@powerhousedao/reactor-browser";
4
+ /** Shows the folders in the selected drive or folder */
5
+ export function Folders() {
6
+ const nodes = useNodesInSelectedDriveOrFolder();
7
+ const folderNodes = nodes.filter((n) => isFolderNodeKind(n));
8
+ const hasFolders = folderNodes.length > 0;
9
+ if (!hasFolders)
10
+ return null;
11
+ return (_jsxs("div", { children: [_jsx("h3", { className: "mb-2 text-sm font-bold text-gray-600", children: "Folders" }), _jsx("div", { className: "flex flex-wrap gap-4", children: folderNodes.map((folderNode) => (_jsx(FolderItem, { folderNode: folderNode }, folderNode.id))) })] }));
12
+ }
@@ -0,0 +1,3 @@
1
+ /** Shows the navigation breadcrumbs for the selected drive or folder */
2
+ export declare function NavigationBreadcrumbs(): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=NavigationBreadcrumbs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavigationBreadcrumbs.d.ts","sourceRoot":"","sources":["../../../../editors/builder-team-admin/components/NavigationBreadcrumbs.tsx"],"names":[],"mappings":"AAEA,wEAAwE;AACxE,wBAAgB,qBAAqB,4CAMpC"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Breadcrumbs } from "@powerhousedao/design-system/connect";
3
+ /** Shows the navigation breadcrumbs for the selected drive or folder */
4
+ export function NavigationBreadcrumbs() {
5
+ return (_jsx("div", { className: "border-b border-gray-200 pb-3 space-y-3", children: _jsx(Breadcrumbs, {}) }));
6
+ }
@@ -0,0 +1,2 @@
1
+ export declare function ExpenseReports(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=expense-reports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expense-reports.d.ts","sourceRoot":"","sources":["../../../../editors/builder-team-admin/components/expense-reports.tsx"],"names":[],"mappings":"AAqJA,wBAAgB,cAAc,4CAiS7B"}
@@ -0,0 +1,250 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { FileItem } from "@powerhousedao/design-system/connect";
3
+ import { FolderItem } from "@powerhousedao/design-system/connect";
4
+ import { isFolderNodeKind, isFileNodeKind, addFolder, useSelectedDrive, setSelectedNode, useSelectedNodePath, useNodesInSelectedDriveOrFolder, useSelectedDriveId, useUserPermissions, useDocumentsInSelectedDrive, useNodeActions, } from "@powerhousedao/reactor-browser";
5
+ import { useMemo, useEffect, useRef, useState, Fragment } from "react";
6
+ import { Plus } from "lucide-react";
7
+ import { ExpenseReportsStats } from "./ExpenseReportsStats.js";
8
+ const EXPENSE_REPORTS_FOLDER_NAME = "Expense Reports";
9
+ /**
10
+ * Simple inline input for creating new folders.
11
+ */
12
+ function FolderNameInput({ onSubmit, onCancel, }) {
13
+ const [value, setValue] = useState("New Folder");
14
+ const inputRef = useRef(null);
15
+ useEffect(() => {
16
+ inputRef.current?.focus();
17
+ inputRef.current?.select();
18
+ }, []);
19
+ const handleKeyDown = (e) => {
20
+ if (e.key === "Enter") {
21
+ e.preventDefault();
22
+ if (value.trim()) {
23
+ onSubmit(value.trim());
24
+ }
25
+ }
26
+ else if (e.key === "Escape") {
27
+ onCancel();
28
+ }
29
+ };
30
+ return (_jsx("input", { ref: inputRef, type: "text", value: value, onChange: (e) => setValue(e.target.value), onKeyDown: handleKeyDown, onBlur: () => {
31
+ if (value.trim()) {
32
+ onSubmit(value.trim());
33
+ }
34
+ else {
35
+ onCancel();
36
+ }
37
+ }, className: "text-gray-800 bg-transparent border-b border-gray-400 outline-none px-1 py-0.5 text-sm min-w-[100px]", placeholder: "New Folder" }));
38
+ }
39
+ /**
40
+ * Custom breadcrumbs component that treats "Expense Reports" folder as the root.
41
+ * Only shows path from "Expense Reports" folder onwards.
42
+ * Includes folder creation functionality.
43
+ */
44
+ function ExpenseReportsBreadcrumbs({ rootFolderId }) {
45
+ const selectedNodePath = useSelectedNodePath();
46
+ const selectedDriveId = useSelectedDriveId();
47
+ const { isAllowedToCreateDocuments } = useUserPermissions();
48
+ const [isCreating, setIsCreating] = useState(false);
49
+ // Find the index of the root folder in the path
50
+ const rootIndex = selectedNodePath.findIndex((node) => node.id === rootFolderId);
51
+ // Get the path starting from (and including) the root folder
52
+ const visiblePath = rootIndex >= 0 ? selectedNodePath.slice(rootIndex) : selectedNodePath;
53
+ const handleAddNew = () => {
54
+ setIsCreating(true);
55
+ };
56
+ const handleSubmit = (name) => {
57
+ if (!isAllowedToCreateDocuments || !selectedDriveId)
58
+ return;
59
+ const parentFolderId = selectedNodePath.at(-1)?.id;
60
+ addFolder(selectedDriveId, name, parentFolderId)
61
+ .then((node) => {
62
+ if (node) {
63
+ setSelectedNode(node);
64
+ }
65
+ })
66
+ .catch((error) => {
67
+ console.error(error);
68
+ })
69
+ .finally(() => {
70
+ setIsCreating(false);
71
+ });
72
+ };
73
+ const handleCancel = () => {
74
+ setIsCreating(false);
75
+ };
76
+ return (_jsxs("div", { className: "flex h-9 flex-row items-center gap-2 text-gray-500 border-b border-gray-200 pb-3", children: [visiblePath.map((node) => (_jsxs(Fragment, { children: [_jsx("div", { className: "transition-colors last-of-type:text-gray-800 hover:text-gray-800 cursor-pointer", onClick: () => setSelectedNode(node.id), role: "button", children: node.name }), _jsx("span", { children: "/" })] }, node.id))), isAllowedToCreateDocuments &&
77
+ (isCreating ? (_jsx(FolderNameInput, { onSubmit: handleSubmit, onCancel: handleCancel })) : (_jsxs("button", { type: "button", className: "ml-1 flex items-center justify-center gap-2 rounded-md bg-gray-50 px-2 py-1.5 transition-colors hover:bg-gray-200 hover:text-gray-800", onClick: handleAddNew, children: [_jsx(Plus, { size: 14 }), "Add new"] })))] }));
78
+ }
79
+ export function ExpenseReports() {
80
+ const [driveDocument] = useSelectedDrive();
81
+ const hasCreatedFolder = useRef(false);
82
+ const hasNavigatedToFolder = useRef(false);
83
+ const selectedNodePath = useSelectedNodePath();
84
+ const nodesInCurrentFolder = useNodesInSelectedDriveOrFolder();
85
+ const documentsInDrive = useDocumentsInSelectedDrive();
86
+ // Find the "Expense Reports" folder in the drive
87
+ const expenseReportsFolder = useMemo(() => {
88
+ if (!driveDocument)
89
+ return null;
90
+ const nodes = driveDocument.state.global.nodes;
91
+ return nodes.find((node) => isFolderNodeKind(node) && node.name === EXPENSE_REPORTS_FOLDER_NAME);
92
+ }, [driveDocument]);
93
+ // Build a set of all node IDs within the Expense Reports folder tree
94
+ const expenseReportsFolderNodeIds = useMemo(() => {
95
+ const nodeIds = new Set();
96
+ if (!expenseReportsFolder || !driveDocument)
97
+ return nodeIds;
98
+ const allNodes = driveDocument.state.global.nodes;
99
+ // Recursively collect all node IDs within the Expense Reports folder
100
+ const collectNodeIds = (parentId) => {
101
+ nodeIds.add(parentId);
102
+ for (const node of allNodes) {
103
+ if (isFolderNodeKind(node) && node.parentFolder === parentId) {
104
+ collectNodeIds(node.id);
105
+ }
106
+ else if (isFileNodeKind(node) && node.parentFolder === parentId) {
107
+ nodeIds.add(node.id);
108
+ }
109
+ }
110
+ };
111
+ collectNodeIds(expenseReportsFolder.id);
112
+ return nodeIds;
113
+ }, [expenseReportsFolder, driveDocument]);
114
+ // Filter expense report documents that are inside the Expense Reports folder
115
+ const expenseReportDocuments = useMemo(() => {
116
+ if (!documentsInDrive || !driveDocument)
117
+ return [];
118
+ // Get file nodes for expense reports in the Expense Reports folder
119
+ const expenseReportFileNodes = driveDocument.state.global.nodes.filter((node) => isFileNodeKind(node) &&
120
+ node.documentType === "powerhouse/expense-report" &&
121
+ expenseReportsFolderNodeIds.has(node.id));
122
+ // Map file node IDs to their documents
123
+ const fileNodeIds = new Set(expenseReportFileNodes.map((n) => n.id));
124
+ return documentsInDrive.filter((doc) => doc.header.documentType === "powerhouse/expense-report" &&
125
+ fileNodeIds.has(doc.header.id));
126
+ }, [documentsInDrive, driveDocument, expenseReportsFolderNodeIds]);
127
+ // Create folder if it doesn't exist
128
+ useEffect(() => {
129
+ if (!driveDocument || expenseReportsFolder || hasCreatedFolder.current)
130
+ return;
131
+ hasCreatedFolder.current = true;
132
+ const driveId = driveDocument.header.id;
133
+ void addFolder(driveId, EXPENSE_REPORTS_FOLDER_NAME);
134
+ }, [driveDocument, expenseReportsFolder]);
135
+ // Navigate to the folder when it exists (only once on mount)
136
+ useEffect(() => {
137
+ if (expenseReportsFolder && !hasNavigatedToFolder.current) {
138
+ hasNavigatedToFolder.current = true;
139
+ setSelectedNode(expenseReportsFolder.id);
140
+ }
141
+ }, [expenseReportsFolder]);
142
+ // Check if we're currently within the Expense Reports folder tree
143
+ const isWithinExpenseReports = useMemo(() => {
144
+ if (!expenseReportsFolder)
145
+ return false;
146
+ return selectedNodePath.some((node) => node.id === expenseReportsFolder.id);
147
+ }, [selectedNodePath, expenseReportsFolder]);
148
+ // If user navigated outside Expense Reports folder, bring them back
149
+ useEffect(() => {
150
+ if (expenseReportsFolder &&
151
+ !isWithinExpenseReports &&
152
+ hasNavigatedToFolder.current) {
153
+ setSelectedNode(expenseReportsFolder.id);
154
+ }
155
+ }, [expenseReportsFolder, isWithinExpenseReports]);
156
+ // Track which documents have been processed for auto-placement
157
+ const processedDocsRef = useRef(new Set());
158
+ // Get node actions for moving files
159
+ const { onMoveNode } = useNodeActions();
160
+ // Get year folders that exist directly under the Expense Reports folder
161
+ const yearFolders = useMemo(() => {
162
+ if (!driveDocument || !expenseReportsFolder)
163
+ return new Map();
164
+ const folders = new Map(); // year string -> folder node
165
+ for (const node of driveDocument.state.global.nodes) {
166
+ if (isFolderNodeKind(node) &&
167
+ node.parentFolder === expenseReportsFolder.id &&
168
+ /^\d{4}$/.test(node.name) // folder name is a 4-digit year
169
+ ) {
170
+ folders.set(node.name, node);
171
+ }
172
+ }
173
+ return folders;
174
+ }, [driveDocument, expenseReportsFolder]);
175
+ // Auto-place expense reports into year folders based on periodStart
176
+ useEffect(() => {
177
+ if (!driveDocument || !expenseReportsFolder || !documentsInDrive)
178
+ return;
179
+ const driveId = driveDocument.header.id;
180
+ const allNodes = driveDocument.state.global.nodes;
181
+ // Find expense report file nodes that are directly in the Expense Reports root folder
182
+ const expenseReportNodesInRoot = allNodes.filter((node) => isFileNodeKind(node) &&
183
+ node.documentType === "powerhouse/expense-report" &&
184
+ node.parentFolder === expenseReportsFolder.id);
185
+ // Process each expense report in the root folder
186
+ for (const fileNode of expenseReportNodesInRoot) {
187
+ // Skip if already processed
188
+ if (processedDocsRef.current.has(fileNode.id))
189
+ continue;
190
+ // Find the corresponding document to get periodStart
191
+ const doc = documentsInDrive.find((d) => d.header.documentType === "powerhouse/expense-report" &&
192
+ d.header.id === fileNode.id);
193
+ if (!doc)
194
+ continue;
195
+ const periodStart = doc.state.global.periodStart;
196
+ if (!periodStart) {
197
+ // No period defined - leave in root folder (this signals something is wrong)
198
+ processedDocsRef.current.add(fileNode.id);
199
+ continue;
200
+ }
201
+ // Extract year from periodStart
202
+ const year = new Date(periodStart).getFullYear().toString();
203
+ // Mark as processed immediately to prevent duplicate processing
204
+ processedDocsRef.current.add(fileNode.id);
205
+ // Check if year folder exists
206
+ const existingYearFolder = yearFolders.get(year);
207
+ if (existingYearFolder) {
208
+ // Year folder exists - move the document there
209
+ onMoveNode(fileNode, existingYearFolder).catch((error) => {
210
+ console.error(`Failed to move expense report to ${year} folder:`, error);
211
+ // Remove from processed so it can be retried
212
+ processedDocsRef.current.delete(fileNode.id);
213
+ });
214
+ }
215
+ else {
216
+ // Create year folder first, then move the document
217
+ addFolder(driveId, year, expenseReportsFolder.id)
218
+ .then((newFolder) => {
219
+ if (newFolder) {
220
+ // Move the document to the new year folder
221
+ return onMoveNode(fileNode, newFolder);
222
+ }
223
+ })
224
+ .catch((error) => {
225
+ console.error(`Failed to create ${year} folder or move expense report:`, error);
226
+ // Remove from processed so it can be retried
227
+ processedDocsRef.current.delete(fileNode.id);
228
+ });
229
+ }
230
+ }
231
+ }, [
232
+ driveDocument,
233
+ expenseReportsFolder,
234
+ documentsInDrive,
235
+ yearFolders,
236
+ onMoveNode,
237
+ ]);
238
+ // Show loading state while folder is being created
239
+ if (!expenseReportsFolder) {
240
+ return (_jsx("div", { className: "flex items-center justify-center h-64", children: _jsx("div", { className: "text-gray-500", children: "Setting up Expense Reports folder..." }) }));
241
+ }
242
+ // Get folder and file nodes from current selection
243
+ const folderNodes = nodesInCurrentFolder.filter((n) => isFolderNodeKind(n));
244
+ const fileNodes = nodesInCurrentFolder.filter((n) => isFileNodeKind(n));
245
+ const hasFolders = folderNodes.length > 0;
246
+ const hasFiles = fileNodes.length > 0;
247
+ const isEmpty = !hasFolders && !hasFiles;
248
+ const hasExpenseReports = expenseReportDocuments.length > 0;
249
+ return (_jsxs("div", { children: [_jsx("div", { className: "text-2xl font-bold text-center mb-4", children: "Expense Reports" }), _jsxs("div", { className: "space-y-6 px-6", children: [hasExpenseReports && (_jsx(ExpenseReportsStats, { expenseReportDocuments: expenseReportDocuments })), _jsx(ExpenseReportsBreadcrumbs, { rootFolderId: expenseReportsFolder.id }), hasFolders && (_jsxs("div", { children: [_jsx("h3", { className: "mb-2 text-sm font-bold text-gray-600", children: "Folders" }), _jsx("div", { className: "flex flex-wrap gap-4", children: folderNodes.map((folderNode) => (_jsx(FolderItem, { folderNode: folderNode }, folderNode.id))) })] })), hasFiles && (_jsxs("div", { children: [_jsx("h3", { className: "mb-2 text-sm font-semibold text-gray-600", children: "Documents" }), _jsx("div", { className: "flex flex-wrap gap-4", children: fileNodes.map((fileNode) => (_jsx(FileItem, { fileNode: fileNode }, fileNode.id))) })] })), isEmpty && (_jsxs("div", { className: "flex flex-col items-center justify-center py-12 text-center", children: [_jsx("div", { className: "text-gray-400 mb-2", children: _jsx("svg", { className: "w-16 h-16 mx-auto", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1, d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }) }) }), _jsx("p", { className: "text-gray-500 text-sm", children: "No expense reports yet. Add documents to this folder to get started." })] }))] })] }));
250
+ }
@@ -0,0 +1,10 @@
1
+ import type { BuilderProfileDocument } from "@powerhousedao/builder-profile/document-models/builder-profile";
2
+ type ProfileHeaderProps = {
3
+ builderProfileDoc: BuilderProfileDocument | null;
4
+ };
5
+ /**
6
+ * Hero section displaying the builder team profile with avatar and name.
7
+ */
8
+ export declare function ProfileHeader({ builderProfileDoc }: ProfileHeaderProps): import("react/jsx-runtime").JSX.Element | null;
9
+ export {};
10
+ //# sourceMappingURL=ProfileHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfileHeader.d.ts","sourceRoot":"","sources":["../../../../../editors/builder-team-admin/components/overview/ProfileHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAC;AAE7G,KAAK,kBAAkB,GAAG;IACxB,iBAAiB,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,iBAAiB,EAAE,EAAE,kBAAkB,kDA2DtE"}
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Hero section displaying the builder team profile with avatar and name.
4
+ */
5
+ export function ProfileHeader({ builderProfileDoc }) {
6
+ if (!builderProfileDoc) {
7
+ return null;
8
+ }
9
+ const { name, icon, slug } = builderProfileDoc.state.global;
10
+ const displayName = name || "Unnamed Team";
11
+ const initials = displayName
12
+ .split(" ")
13
+ .map((word) => word[0])
14
+ .join("")
15
+ .slice(0, 2)
16
+ .toUpperCase();
17
+ return (_jsxs("div", { className: "relative overflow-hidden rounded-2xl bg-gradient-to-br from-slate-50 via-indigo-50/40 to-blue-50/30 p-8 border border-slate-200/60", children: [_jsx("div", { className: "absolute -right-16 -top-16 h-48 w-48 rounded-full bg-gradient-to-br from-indigo-200/30 to-blue-200/30 blur-2xl" }), _jsx("div", { className: "absolute -bottom-12 -left-12 h-32 w-32 rounded-full bg-gradient-to-br from-slate-200/40 to-indigo-200/30 blur-xl" }), _jsxs("div", { className: "relative z-10 flex items-center gap-6", children: [_jsxs("div", { className: "relative", children: [icon ? (_jsx("img", { src: icon, alt: displayName, className: "h-20 w-20 rounded-2xl object-cover shadow-lg shadow-slate-300/50 ring-4 ring-white/80", onError: (e) => {
18
+ e.currentTarget.style.display = "none";
19
+ const fallback = e.currentTarget.nextElementSibling;
20
+ if (fallback) {
21
+ fallback.style.display = "flex";
22
+ }
23
+ } })) : null, _jsx("div", { className: `h-20 w-20 rounded-2xl bg-gradient-to-br from-indigo-500 to-blue-600 shadow-lg shadow-indigo-400/30 ring-4 ring-white/80 ${icon ? "hidden" : "flex"} items-center justify-center`, children: _jsx("span", { className: "text-2xl font-bold text-white", children: initials }) })] }), _jsxs("div", { children: [_jsx("h1", { className: "text-3xl font-bold tracking-tight text-slate-900", children: displayName }), slug && (_jsxs("p", { className: "mt-1 text-base font-medium text-slate-500", children: ["@", slug] }))] })] })] }));
24
+ }
@@ -0,0 +1,15 @@
1
+ import type { ServiceSubscription } from "@powerhousedao/builder-team-admin/document-models/service-subscriptions";
2
+ type SubscriptionsStatsProps = {
3
+ subscriptions: ServiceSubscription[];
4
+ };
5
+ /**
6
+ * Displays subscription statistics in a 4-column card grid.
7
+ * Shows: Active count, Trial count, Monthly cost estimate, Seats usage.
8
+ */
9
+ export declare function SubscriptionsStats({ subscriptions }: SubscriptionsStatsProps): import("react/jsx-runtime").JSX.Element;
10
+ /**
11
+ * Empty state placeholder when no subscriptions document exists.
12
+ */
13
+ export declare function SubscriptionsEmptyState(): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=SubscriptionsStats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriptionsStats.d.ts","sourceRoot":"","sources":["../../../../../editors/builder-team-admin/components/overview/SubscriptionsStats.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yEAAyE,CAAC;AAEnH,KAAK,uBAAuB,GAAG;IAC7B,aAAa,EAAE,mBAAmB,EAAE,CAAC;CACtC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,aAAa,EAAE,EAAE,uBAAuB,2CA+E5E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,4CA6BtC"}