@powerhousedao/network-admin 1.0.0-dev.3 → 1.0.0-staging.4

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 (469) hide show
  1. package/dist/document-models/builders/actions.d.ts +14 -0
  2. package/dist/document-models/builders/actions.d.ts.map +1 -0
  3. package/dist/document-models/builders/actions.js +4 -0
  4. package/dist/document-models/builders/gen/actions.d.ts +4 -0
  5. package/dist/document-models/builders/gen/actions.d.ts.map +1 -0
  6. package/dist/document-models/builders/gen/actions.js +1 -0
  7. package/dist/document-models/builders/gen/builders/actions.d.ts +12 -0
  8. package/dist/document-models/builders/gen/builders/actions.d.ts.map +1 -0
  9. package/dist/document-models/builders/gen/builders/actions.js +1 -0
  10. package/dist/document-models/builders/gen/builders/creators.d.ts +5 -0
  11. package/dist/document-models/builders/gen/builders/creators.d.ts.map +1 -0
  12. package/dist/document-models/builders/gen/builders/creators.js +4 -0
  13. package/dist/document-models/builders/gen/builders/error.d.ts +2 -0
  14. package/dist/document-models/builders/gen/builders/error.d.ts.map +1 -0
  15. package/dist/document-models/builders/gen/builders/error.js +1 -0
  16. package/dist/document-models/builders/gen/builders/operations.d.ts +8 -0
  17. package/dist/document-models/builders/gen/builders/operations.d.ts.map +1 -0
  18. package/dist/document-models/builders/gen/builders/operations.js +1 -0
  19. package/dist/document-models/builders/gen/creators.d.ts +3 -0
  20. package/dist/document-models/builders/gen/creators.d.ts.map +1 -0
  21. package/dist/document-models/builders/gen/creators.js +2 -0
  22. package/dist/document-models/builders/gen/document-model.d.ts +3 -0
  23. package/dist/document-models/builders/gen/document-model.d.ts.map +1 -0
  24. package/dist/document-models/builders/gen/document-model.js +59 -0
  25. package/dist/document-models/builders/gen/document-schema.d.ts +44 -0
  26. package/dist/document-models/builders/gen/document-schema.d.ts.map +1 -0
  27. package/dist/document-models/builders/gen/document-schema.js +33 -0
  28. package/dist/document-models/builders/gen/document-type.d.ts +2 -0
  29. package/dist/document-models/builders/gen/document-type.d.ts.map +1 -0
  30. package/dist/document-models/builders/gen/document-type.js +1 -0
  31. package/dist/document-models/builders/gen/index.d.ts +12 -0
  32. package/dist/document-models/builders/gen/index.d.ts.map +1 -0
  33. package/dist/document-models/builders/gen/index.js +11 -0
  34. package/dist/document-models/builders/gen/ph-factories.d.ts +23 -0
  35. package/dist/document-models/builders/gen/ph-factories.d.ts.map +1 -0
  36. package/dist/document-models/builders/gen/ph-factories.js +47 -0
  37. package/dist/document-models/builders/gen/reducer.d.ts +3 -0
  38. package/dist/document-models/builders/gen/reducer.d.ts.map +1 -0
  39. package/dist/document-models/builders/gen/reducer.js +23 -0
  40. package/dist/document-models/builders/gen/schema/index.d.ts +3 -0
  41. package/dist/document-models/builders/gen/schema/index.d.ts.map +1 -0
  42. package/dist/document-models/builders/gen/schema/index.js +2 -0
  43. package/dist/document-models/builders/gen/schema/types.d.ts +158 -0
  44. package/dist/document-models/builders/gen/schema/types.d.ts.map +1 -0
  45. package/dist/document-models/builders/gen/schema/types.js +1 -0
  46. package/dist/document-models/builders/gen/schema/zod.d.ts +13 -0
  47. package/dist/document-models/builders/gen/schema/zod.d.ts.map +1 -0
  48. package/dist/document-models/builders/gen/schema/zod.js +21 -0
  49. package/dist/document-models/builders/gen/types.d.ts +12 -0
  50. package/dist/document-models/builders/gen/types.d.ts.map +1 -0
  51. package/dist/document-models/builders/gen/types.js +1 -0
  52. package/dist/document-models/builders/gen/utils.d.ts +15 -0
  53. package/dist/document-models/builders/gen/utils.d.ts.map +1 -0
  54. package/dist/document-models/builders/gen/utils.js +51 -0
  55. package/dist/document-models/builders/hooks.d.ts +14 -0
  56. package/dist/document-models/builders/hooks.d.ts.map +1 -0
  57. package/dist/document-models/builders/hooks.js +25 -0
  58. package/dist/document-models/builders/index.d.ts +6 -0
  59. package/dist/document-models/builders/index.d.ts.map +1 -0
  60. package/dist/document-models/builders/index.js +5 -0
  61. package/dist/document-models/builders/module.d.ts +5 -0
  62. package/dist/document-models/builders/module.d.ts.map +1 -0
  63. package/dist/document-models/builders/module.js +11 -0
  64. package/dist/document-models/builders/src/index.d.ts +2 -0
  65. package/dist/document-models/builders/src/index.d.ts.map +1 -0
  66. package/dist/document-models/builders/src/index.js +1 -0
  67. package/dist/document-models/builders/src/reducers/builders.d.ts +3 -0
  68. package/dist/document-models/builders/src/reducers/builders.d.ts.map +1 -0
  69. package/dist/document-models/builders/src/reducers/builders.js +8 -0
  70. package/dist/document-models/builders/src/tests/builders.test.d.ts +6 -0
  71. package/dist/document-models/builders/src/tests/builders.test.d.ts.map +1 -0
  72. package/dist/document-models/builders/src/tests/builders.test.js +29 -0
  73. package/dist/document-models/builders/src/tests/document-model.test.d.ts +10 -0
  74. package/dist/document-models/builders/src/tests/document-model.test.d.ts.map +1 -0
  75. package/dist/document-models/builders/src/tests/document-model.test.js +104 -0
  76. package/dist/document-models/builders/src/utils.d.ts +2 -0
  77. package/dist/document-models/builders/src/utils.d.ts.map +1 -0
  78. package/dist/document-models/builders/src/utils.js +1 -0
  79. package/dist/document-models/builders/tests/builders.test.d.ts +2 -0
  80. package/dist/document-models/builders/tests/builders.test.d.ts.map +1 -0
  81. package/dist/document-models/builders/tests/builders.test.js +25 -0
  82. package/dist/document-models/builders/tests/document-model.test.d.ts +10 -0
  83. package/dist/document-models/builders/tests/document-model.test.d.ts.map +1 -0
  84. package/dist/document-models/builders/tests/document-model.test.js +104 -0
  85. package/dist/document-models/builders/utils.d.ts +14 -0
  86. package/dist/document-models/builders/utils.d.ts.map +1 -0
  87. package/dist/document-models/builders/utils.js +7 -0
  88. package/dist/document-models/document-models.d.ts.map +1 -1
  89. package/dist/document-models/document-models.js +2 -0
  90. package/dist/document-models/index.d.ts +1 -0
  91. package/dist/document-models/index.d.ts.map +1 -1
  92. package/dist/document-models/index.js +1 -0
  93. package/dist/document-models/network-profile/gen/document-model.d.ts.map +1 -1
  94. package/dist/document-models/network-profile/gen/document-model.js +84 -84
  95. package/dist/document-models/network-profile/gen/document-schema.d.ts +80 -0
  96. package/dist/document-models/network-profile/gen/document-schema.d.ts.map +1 -0
  97. package/dist/document-models/network-profile/gen/ph-factories.d.ts.map +1 -1
  98. package/dist/document-models/network-profile/gen/ph-factories.js +2 -0
  99. package/dist/document-models/network-profile/gen/reducer.d.ts +1 -0
  100. package/dist/document-models/network-profile/gen/reducer.d.ts.map +1 -1
  101. package/dist/document-models/network-profile/gen/schema/types.d.ts +6 -2
  102. package/dist/document-models/network-profile/gen/schema/types.d.ts.map +1 -1
  103. package/dist/document-models/network-profile/gen/schema/zod.d.ts +8 -2
  104. package/dist/document-models/network-profile/gen/schema/zod.d.ts.map +1 -1
  105. package/dist/document-models/network-profile/gen/schema/zod.js +6 -2
  106. package/dist/document-models/network-profile/gen/utils.d.ts.map +1 -1
  107. package/dist/document-models/network-profile/gen/utils.js +3 -1
  108. package/dist/document-models/network-profile/hooks.d.ts +2 -2
  109. package/dist/document-models/network-profile/hooks.d.ts.map +1 -1
  110. package/dist/document-models/network-profile/src/reducers/network-profile-management.d.ts +0 -1
  111. package/dist/document-models/network-profile/src/reducers/network-profile-management.d.ts.map +1 -1
  112. package/dist/document-models/network-profile/src/reducers/network-profile-management.js +27 -18
  113. package/dist/document-models/network-profile/src/tests/document-model.test.d.ts +4 -0
  114. package/dist/document-models/network-profile/src/tests/document-model.test.d.ts.map +1 -1
  115. package/dist/document-models/network-profile/src/tests/document-model.test.js +92 -6
  116. package/dist/document-models/network-profile/src/tests/network-profile-management.test.js +69 -115
  117. package/dist/document-models/payment-terms/actions.d.ts +1 -2
  118. package/dist/document-models/payment-terms/actions.d.ts.map +1 -1
  119. package/dist/document-models/payment-terms/gen/clauses/error.d.ts +1 -40
  120. package/dist/document-models/payment-terms/gen/clauses/error.d.ts.map +1 -1
  121. package/dist/document-models/payment-terms/gen/clauses/error.js +1 -32
  122. package/dist/document-models/payment-terms/gen/document-model.d.ts.map +1 -1
  123. package/dist/document-models/payment-terms/gen/document-model.js +89 -180
  124. package/dist/document-models/payment-terms/gen/document-schema.d.ts +95 -0
  125. package/dist/document-models/payment-terms/gen/document-schema.d.ts.map +1 -0
  126. package/dist/document-models/payment-terms/gen/milestones/error.d.ts +1 -26
  127. package/dist/document-models/payment-terms/gen/milestones/error.d.ts.map +1 -1
  128. package/dist/document-models/payment-terms/gen/milestones/error.js +1 -18
  129. package/dist/document-models/payment-terms/gen/ph-factories.d.ts.map +1 -1
  130. package/dist/document-models/payment-terms/gen/ph-factories.js +1 -2
  131. package/dist/document-models/payment-terms/gen/reducer.d.ts +1 -0
  132. package/dist/document-models/payment-terms/gen/reducer.d.ts.map +1 -1
  133. package/dist/document-models/payment-terms/gen/reducer.js +4 -9
  134. package/dist/document-models/payment-terms/gen/schema/types.d.ts +14 -29
  135. package/dist/document-models/payment-terms/gen/schema/types.d.ts.map +1 -1
  136. package/dist/document-models/payment-terms/gen/schema/zod.d.ts +36 -12
  137. package/dist/document-models/payment-terms/gen/schema/zod.d.ts.map +1 -1
  138. package/dist/document-models/payment-terms/gen/schema/zod.js +29 -55
  139. package/dist/document-models/payment-terms/gen/terms/actions.d.ts +5 -9
  140. package/dist/document-models/payment-terms/gen/terms/actions.d.ts.map +1 -1
  141. package/dist/document-models/payment-terms/gen/terms/creators.d.ts +3 -4
  142. package/dist/document-models/payment-terms/gen/terms/creators.d.ts.map +1 -1
  143. package/dist/document-models/payment-terms/gen/terms/creators.js +2 -3
  144. package/dist/document-models/payment-terms/gen/terms/operations.d.ts +2 -3
  145. package/dist/document-models/payment-terms/gen/terms/operations.d.ts.map +1 -1
  146. package/dist/document-models/payment-terms/gen/utils.d.ts.map +1 -1
  147. package/dist/document-models/payment-terms/gen/utils.js +2 -3
  148. package/dist/document-models/payment-terms/hooks.d.ts +2 -2
  149. package/dist/document-models/payment-terms/hooks.d.ts.map +1 -1
  150. package/dist/document-models/payment-terms/src/reducers/clauses.d.ts +0 -1
  151. package/dist/document-models/payment-terms/src/reducers/clauses.d.ts.map +1 -1
  152. package/dist/document-models/payment-terms/src/reducers/clauses.js +13 -15
  153. package/dist/document-models/payment-terms/src/reducers/milestones.d.ts +0 -1
  154. package/dist/document-models/payment-terms/src/reducers/milestones.d.ts.map +1 -1
  155. package/dist/document-models/payment-terms/src/reducers/milestones.js +10 -12
  156. package/dist/document-models/payment-terms/src/reducers/terms.d.ts +0 -1
  157. package/dist/document-models/payment-terms/src/reducers/terms.d.ts.map +1 -1
  158. package/dist/document-models/payment-terms/src/reducers/terms.js +14 -24
  159. package/dist/document-models/payment-terms/src/tests/clauses.test.js +26 -21
  160. package/dist/document-models/payment-terms/src/tests/document-model.test.d.ts +4 -0
  161. package/dist/document-models/payment-terms/src/tests/document-model.test.d.ts.map +1 -1
  162. package/dist/document-models/payment-terms/src/tests/document-model.test.js +92 -6
  163. package/dist/document-models/payment-terms/src/tests/milestones.test.js +22 -19
  164. package/dist/document-models/payment-terms/src/tests/terms.test.js +24 -29
  165. package/dist/document-models/payment-terms/tests/terms.test.js +5 -15
  166. package/dist/document-models/request-for-proposals/gen/document-model.js +4 -4
  167. package/dist/document-models/request-for-proposals/gen/document-schema.d.ts +83 -0
  168. package/dist/document-models/request-for-proposals/gen/document-schema.d.ts.map +1 -0
  169. package/dist/document-models/request-for-proposals/gen/ph-factories.d.ts.map +1 -1
  170. package/dist/document-models/request-for-proposals/gen/ph-factories.js +6 -4
  171. package/dist/document-models/request-for-proposals/gen/reducer.d.ts +1 -0
  172. package/dist/document-models/request-for-proposals/gen/reducer.d.ts.map +1 -1
  173. package/dist/document-models/request-for-proposals/gen/schema/zod.d.ts +64 -9
  174. package/dist/document-models/request-for-proposals/gen/schema/zod.d.ts.map +1 -1
  175. package/dist/document-models/request-for-proposals/gen/utils.d.ts.map +1 -1
  176. package/dist/document-models/request-for-proposals/gen/utils.js +7 -5
  177. package/dist/document-models/request-for-proposals/hooks.d.ts +2 -2
  178. package/dist/document-models/request-for-proposals/hooks.d.ts.map +1 -1
  179. package/dist/document-models/request-for-proposals/src/reducers/contex-document.d.ts +0 -1
  180. package/dist/document-models/request-for-proposals/src/reducers/contex-document.d.ts.map +1 -1
  181. package/dist/document-models/request-for-proposals/src/reducers/contex-document.js +3 -4
  182. package/dist/document-models/request-for-proposals/src/reducers/proposals.d.ts +0 -1
  183. package/dist/document-models/request-for-proposals/src/reducers/proposals.d.ts.map +1 -1
  184. package/dist/document-models/request-for-proposals/src/reducers/proposals.js +4 -5
  185. package/dist/document-models/request-for-proposals/src/reducers/rfp-state.d.ts +0 -1
  186. package/dist/document-models/request-for-proposals/src/reducers/rfp-state.d.ts.map +1 -1
  187. package/dist/document-models/request-for-proposals/src/reducers/rfp-state.js +2 -3
  188. package/dist/document-models/request-for-proposals/src/tests/contex-document.test.d.ts +2 -1
  189. package/dist/document-models/request-for-proposals/src/tests/contex-document.test.d.ts.map +1 -1
  190. package/dist/document-models/request-for-proposals/src/tests/contex-document.test.js +24 -181
  191. package/dist/document-models/request-for-proposals/src/tests/document-model.test.d.ts +4 -0
  192. package/dist/document-models/request-for-proposals/src/tests/document-model.test.d.ts.map +1 -1
  193. package/dist/document-models/request-for-proposals/src/tests/document-model.test.js +92 -6
  194. package/dist/document-models/request-for-proposals/src/tests/proposals.test.d.ts +2 -1
  195. package/dist/document-models/request-for-proposals/src/tests/proposals.test.d.ts.map +1 -1
  196. package/dist/document-models/request-for-proposals/src/tests/proposals.test.js +33 -327
  197. package/dist/document-models/request-for-proposals/src/tests/rfp-state.test.d.ts +2 -1
  198. package/dist/document-models/request-for-proposals/src/tests/rfp-state.test.d.ts.map +1 -1
  199. package/dist/document-models/request-for-proposals/src/tests/rfp-state.test.js +15 -240
  200. package/dist/document-models/workstream/gen/document-model.d.ts.map +1 -1
  201. package/dist/document-models/workstream/gen/document-model.js +16 -16
  202. package/dist/document-models/workstream/gen/document-schema.d.ts +71 -0
  203. package/dist/document-models/workstream/gen/document-schema.d.ts.map +1 -0
  204. package/dist/document-models/workstream/gen/reducer.d.ts +1 -0
  205. package/dist/document-models/workstream/gen/reducer.d.ts.map +1 -1
  206. package/dist/document-models/workstream/gen/schema/types.d.ts +1 -1
  207. package/dist/document-models/workstream/gen/schema/types.d.ts.map +1 -1
  208. package/dist/document-models/workstream/gen/schema/zod.d.ts +35 -5
  209. package/dist/document-models/workstream/gen/schema/zod.d.ts.map +1 -1
  210. package/dist/document-models/workstream/gen/utils.js +1 -1
  211. package/dist/document-models/workstream/hooks.d.ts +2 -2
  212. package/dist/document-models/workstream/hooks.d.ts.map +1 -1
  213. package/dist/document-models/workstream/src/reducers/proposals.d.ts +0 -1
  214. package/dist/document-models/workstream/src/reducers/proposals.d.ts.map +1 -1
  215. package/dist/document-models/workstream/src/reducers/proposals.js +83 -6
  216. package/dist/document-models/workstream/src/reducers/workstream.d.ts +0 -1
  217. package/dist/document-models/workstream/src/reducers/workstream.d.ts.map +1 -1
  218. package/dist/document-models/workstream/src/reducers/workstream.js +6 -7
  219. package/dist/document-models/workstream/src/tests/document-model.test.d.ts +4 -0
  220. package/dist/document-models/workstream/src/tests/document-model.test.d.ts.map +1 -1
  221. package/dist/document-models/workstream/src/tests/document-model.test.js +89 -3
  222. package/dist/document-models/workstream/src/tests/proposals.test.js +26 -25
  223. package/dist/document-models/workstream/src/tests/workstream.test.js +34 -29
  224. package/dist/editors/builders/editor.d.ts +3 -0
  225. package/dist/editors/builders/editor.d.ts.map +1 -0
  226. package/dist/editors/builders/editor.js +285 -0
  227. package/dist/editors/builders/hooks/useRemoteBuilderProfiles.d.ts +20 -0
  228. package/dist/editors/builders/hooks/useRemoteBuilderProfiles.d.ts.map +1 -0
  229. package/dist/editors/builders/hooks/useRemoteBuilderProfiles.js +57 -0
  230. package/dist/editors/builders/module.d.ts +4 -0
  231. package/dist/editors/builders/module.d.ts.map +1 -0
  232. package/dist/editors/builders/module.js +10 -0
  233. package/dist/editors/builders/utils/graphql-client.d.ts +41 -0
  234. package/dist/editors/builders/utils/graphql-client.d.ts.map +1 -0
  235. package/dist/editors/builders/utils/graphql-client.js +189 -0
  236. package/dist/editors/editors.d.ts +3 -0
  237. package/dist/editors/editors.d.ts.map +1 -0
  238. package/dist/editors/editors.js +14 -0
  239. package/dist/editors/index.d.ts +6 -6
  240. package/dist/editors/index.d.ts.map +1 -1
  241. package/dist/editors/index.js +6 -6
  242. package/dist/editors/network-admin/components/CreateDocument.d.ts.map +1 -1
  243. package/dist/editors/network-admin/components/CreateDocument.js +8 -12
  244. package/dist/editors/network-admin/components/DriveContents.d.ts +3 -0
  245. package/dist/editors/network-admin/components/DriveContents.d.ts.map +1 -0
  246. package/dist/editors/network-admin/components/DriveContents.js +10 -0
  247. package/dist/editors/network-admin/components/DriveExplorer.d.ts +1 -1
  248. package/dist/editors/network-admin/components/DriveExplorer.d.ts.map +1 -1
  249. package/dist/editors/network-admin/components/DriveExplorer.js +53 -230
  250. package/dist/editors/network-admin/components/EmptyState.d.ts +3 -0
  251. package/dist/editors/network-admin/components/EmptyState.d.ts.map +1 -0
  252. package/dist/editors/network-admin/components/EmptyState.js +10 -0
  253. package/dist/editors/network-admin/components/Files.d.ts +3 -0
  254. package/dist/editors/network-admin/components/Files.d.ts.map +1 -0
  255. package/dist/editors/network-admin/components/Files.js +12 -0
  256. package/dist/editors/network-admin/components/FolderTree.d.ts +9 -1
  257. package/dist/editors/network-admin/components/FolderTree.d.ts.map +1 -1
  258. package/dist/editors/network-admin/components/FolderTree.js +216 -55
  259. package/dist/editors/network-admin/components/Folders.d.ts +3 -0
  260. package/dist/editors/network-admin/components/Folders.d.ts.map +1 -0
  261. package/dist/editors/network-admin/components/Folders.js +12 -0
  262. package/dist/editors/network-admin/components/NavigationBreadcrumbs.d.ts +3 -0
  263. package/dist/editors/network-admin/components/NavigationBreadcrumbs.d.ts.map +1 -0
  264. package/dist/editors/network-admin/components/NavigationBreadcrumbs.js +6 -0
  265. package/dist/editors/network-admin/components/icons/PaymentIcon.d.ts.map +1 -1
  266. package/dist/editors/network-admin/components/icons/RfpIcon.d.ts.map +1 -1
  267. package/dist/editors/network-admin/components/icons/SowIcon.d.ts.map +1 -1
  268. package/dist/editors/network-admin/components/icons/WorkstreamIcon.d.ts.map +1 -1
  269. package/dist/editors/network-admin/config.d.ts +1 -0
  270. package/dist/editors/network-admin/config.d.ts.map +1 -1
  271. package/dist/editors/network-admin/config.js +1 -1
  272. package/dist/editors/network-admin/editor.d.ts +2 -1
  273. package/dist/editors/network-admin/editor.d.ts.map +1 -1
  274. package/dist/editors/network-admin/editor.js +4 -1
  275. package/dist/editors/network-admin/module.d.ts +4 -0
  276. package/dist/editors/network-admin/module.d.ts.map +1 -0
  277. package/dist/editors/network-admin/module.js +10 -0
  278. package/dist/editors/network-profile/components/EditName.d.ts +3 -0
  279. package/dist/editors/network-profile/components/EditName.d.ts.map +1 -0
  280. package/dist/editors/network-profile/components/EditName.js +31 -0
  281. package/dist/editors/network-profile/editor.d.ts +1 -1
  282. package/dist/editors/network-profile/editor.d.ts.map +1 -1
  283. package/dist/editors/network-profile/editor.js +45 -13
  284. package/dist/editors/network-profile/module.d.ts +4 -0
  285. package/dist/editors/network-profile/module.d.ts.map +1 -0
  286. package/dist/editors/network-profile/module.js +10 -0
  287. package/dist/editors/payment-terms/components/clauses-section.d.ts +12 -0
  288. package/dist/editors/payment-terms/components/clauses-section.d.ts.map +1 -0
  289. package/dist/editors/payment-terms/components/clauses-section.js +269 -0
  290. package/dist/editors/payment-terms/components/escrow-section.d.ts +13 -0
  291. package/dist/editors/payment-terms/components/escrow-section.d.ts.map +1 -0
  292. package/dist/editors/payment-terms/components/escrow-section.js +72 -0
  293. package/dist/editors/payment-terms/components/evaluation-section.d.ts +13 -0
  294. package/dist/editors/payment-terms/components/evaluation-section.d.ts.map +1 -0
  295. package/dist/editors/payment-terms/components/evaluation-section.js +94 -0
  296. package/dist/editors/payment-terms/components/header-section.d.ts +16 -0
  297. package/dist/editors/payment-terms/components/header-section.d.ts.map +1 -0
  298. package/dist/editors/payment-terms/components/header-section.js +67 -0
  299. package/dist/editors/payment-terms/components/milestones-section.d.ts +11 -0
  300. package/dist/editors/payment-terms/components/milestones-section.d.ts.map +1 -0
  301. package/dist/editors/payment-terms/components/milestones-section.js +236 -0
  302. package/dist/editors/payment-terms/components/parties-section.d.ts +11 -0
  303. package/dist/editors/payment-terms/components/parties-section.d.ts.map +1 -0
  304. package/dist/editors/payment-terms/components/parties-section.js +36 -0
  305. package/dist/editors/payment-terms/components/payment-config-section.d.ts +11 -0
  306. package/dist/editors/payment-terms/components/payment-config-section.d.ts.map +1 -0
  307. package/dist/editors/payment-terms/components/payment-config-section.js +68 -0
  308. package/dist/editors/payment-terms/components/time-materials-section.d.ts +11 -0
  309. package/dist/editors/payment-terms/components/time-materials-section.d.ts.map +1 -0
  310. package/dist/editors/payment-terms/components/time-materials-section.js +68 -0
  311. package/dist/editors/payment-terms/editor.d.ts +0 -2
  312. package/dist/editors/payment-terms/editor.d.ts.map +1 -1
  313. package/dist/editors/payment-terms/editor.js +39 -55
  314. package/dist/editors/payment-terms/module.d.ts +4 -0
  315. package/dist/editors/payment-terms/module.d.ts.map +1 -0
  316. package/dist/editors/payment-terms/module.js +10 -0
  317. package/dist/editors/request-for-proposals/components/EditName.d.ts +3 -0
  318. package/dist/editors/request-for-proposals/components/EditName.d.ts.map +1 -0
  319. package/dist/editors/request-for-proposals/components/EditName.js +31 -0
  320. package/dist/editors/request-for-proposals/editor.d.ts.map +1 -1
  321. package/dist/editors/request-for-proposals/editor.js +4 -4
  322. package/dist/editors/request-for-proposals/markdown-editor.d.ts.map +1 -1
  323. package/dist/editors/request-for-proposals/markdown-editor.js +3 -3
  324. package/dist/editors/request-for-proposals/module.d.ts +4 -0
  325. package/dist/editors/request-for-proposals/module.d.ts.map +1 -0
  326. package/dist/editors/request-for-proposals/module.js +10 -0
  327. package/dist/editors/workstream/editor.d.ts.map +1 -1
  328. package/dist/editors/workstream/editor.js +290 -165
  329. package/dist/editors/workstream/module.d.ts +4 -0
  330. package/dist/editors/workstream/module.d.ts.map +1 -0
  331. package/dist/editors/workstream/module.js +10 -0
  332. package/dist/index.d.ts +2 -2
  333. package/dist/index.d.ts.map +1 -1
  334. package/dist/index.js +2 -4
  335. package/dist/powerhouse.manifest.json +27 -6
  336. package/dist/processors/factory.d.ts +1 -1
  337. package/dist/processors/factory.d.ts.map +1 -1
  338. package/dist/processors/factory.js +1 -1
  339. package/dist/processors/index.d.ts +1 -1
  340. package/dist/processors/index.d.ts.map +1 -1
  341. package/dist/processors/index.js +1 -1
  342. package/dist/processors/workstreams/factory.d.ts.map +1 -1
  343. package/dist/processors/workstreams/factory.js +4 -1
  344. package/dist/processors/workstreams/index.d.ts +4 -2
  345. package/dist/processors/workstreams/index.d.ts.map +1 -1
  346. package/dist/processors/workstreams/index.js +102 -43
  347. package/dist/processors/workstreams/migrations.d.ts.map +1 -1
  348. package/dist/processors/workstreams/migrations.js +12 -15
  349. package/dist/scripts/sow-mirror/mirror_sow_state.js +119 -114
  350. package/dist/style.css +6046 -6846
  351. package/dist/subgraphs/{payment-terms → builders-addon}/index.d.ts +1 -1
  352. package/dist/subgraphs/builders-addon/index.d.ts.map +1 -0
  353. package/dist/subgraphs/{workstream → builders-addon}/index.js +2 -2
  354. package/dist/subgraphs/builders-addon/resolvers.d.ts.map +1 -0
  355. package/dist/subgraphs/builders-addon/resolvers.js +442 -0
  356. package/dist/subgraphs/builders-addon/schema.d.ts.map +1 -0
  357. package/dist/subgraphs/builders-addon/schema.js +294 -0
  358. package/dist/subgraphs/index.d.ts +1 -5
  359. package/dist/subgraphs/index.d.ts.map +1 -1
  360. package/dist/subgraphs/index.js +1 -5
  361. package/dist/subgraphs/networks/resolvers.d.ts +2 -2
  362. package/dist/subgraphs/networks/resolvers.d.ts.map +1 -1
  363. package/dist/subgraphs/networks/resolvers.js +138 -8
  364. package/dist/subgraphs/networks/schema.d.ts.map +1 -1
  365. package/dist/subgraphs/networks/schema.js +66 -1
  366. package/dist/subgraphs/workstreams/index.d.ts +4 -1
  367. package/dist/subgraphs/workstreams/index.d.ts.map +1 -1
  368. package/dist/subgraphs/workstreams/index.js +6 -0
  369. package/dist/subgraphs/workstreams/resolvers.d.ts.map +1 -1
  370. package/dist/subgraphs/workstreams/resolvers.js +495 -30
  371. package/dist/subgraphs/workstreams/schema.d.ts.map +1 -1
  372. package/dist/subgraphs/workstreams/schema.js +228 -35
  373. package/dist/vite.config.d.ts.map +1 -1
  374. package/dist/vite.config.js +6 -1
  375. package/package.json +57 -56
  376. package/dist/document-models/workstream/src/tests/proposals-reducers.test.d.ts +0 -5
  377. package/dist/document-models/workstream/src/tests/proposals-reducers.test.d.ts.map +0 -1
  378. package/dist/document-models/workstream/src/tests/proposals-reducers.test.js +0 -318
  379. package/dist/document-models/workstream/src/tests/workstream-reducers.test.d.ts +0 -5
  380. package/dist/document-models/workstream/src/tests/workstream-reducers.test.d.ts.map +0 -1
  381. package/dist/document-models/workstream/src/tests/workstream-reducers.test.js +0 -210
  382. package/dist/editors/hooks/useNetworkProfileDocument.d.ts +0 -4
  383. package/dist/editors/hooks/useNetworkProfileDocument.d.ts.map +0 -1
  384. package/dist/editors/hooks/useNetworkProfileDocument.js +0 -8
  385. package/dist/editors/hooks/usePaymentTermsDocument.d.ts +0 -4
  386. package/dist/editors/hooks/usePaymentTermsDocument.d.ts.map +0 -1
  387. package/dist/editors/hooks/usePaymentTermsDocument.js +0 -8
  388. package/dist/editors/hooks/useRequestForProposalsDocument.d.ts +0 -4
  389. package/dist/editors/hooks/useRequestForProposalsDocument.d.ts.map +0 -1
  390. package/dist/editors/hooks/useRequestForProposalsDocument.js +0 -8
  391. package/dist/editors/hooks/useWorkstreamDocument.d.ts +0 -4
  392. package/dist/editors/hooks/useWorkstreamDocument.d.ts.map +0 -1
  393. package/dist/editors/hooks/useWorkstreamDocument.js +0 -8
  394. package/dist/editors/network-admin/index.d.ts +0 -3
  395. package/dist/editors/network-admin/index.d.ts.map +0 -1
  396. package/dist/editors/network-admin/index.js +0 -10
  397. package/dist/editors/network-profile/index.d.ts +0 -4
  398. package/dist/editors/network-profile/index.d.ts.map +0 -1
  399. package/dist/editors/network-profile/index.js +0 -10
  400. package/dist/editors/payment-terms/basic-terms-tab.d.ts +0 -10
  401. package/dist/editors/payment-terms/basic-terms-tab.d.ts.map +0 -1
  402. package/dist/editors/payment-terms/basic-terms-tab.js +0 -89
  403. package/dist/editors/payment-terms/clauses-tab.d.ts +0 -12
  404. package/dist/editors/payment-terms/clauses-tab.d.ts.map +0 -1
  405. package/dist/editors/payment-terms/clauses-tab.js +0 -213
  406. package/dist/editors/payment-terms/cost-materials-tab.d.ts +0 -10
  407. package/dist/editors/payment-terms/cost-materials-tab.d.ts.map +0 -1
  408. package/dist/editors/payment-terms/cost-materials-tab.js +0 -63
  409. package/dist/editors/payment-terms/escrow-tab.d.ts +0 -10
  410. package/dist/editors/payment-terms/escrow-tab.d.ts.map +0 -1
  411. package/dist/editors/payment-terms/escrow-tab.js +0 -57
  412. package/dist/editors/payment-terms/evaluation-tab.d.ts +0 -10
  413. package/dist/editors/payment-terms/evaluation-tab.d.ts.map +0 -1
  414. package/dist/editors/payment-terms/evaluation-tab.js +0 -63
  415. package/dist/editors/payment-terms/index.d.ts +0 -4
  416. package/dist/editors/payment-terms/index.d.ts.map +0 -1
  417. package/dist/editors/payment-terms/index.js +0 -10
  418. package/dist/editors/payment-terms/milestones-tab.d.ts +0 -10
  419. package/dist/editors/payment-terms/milestones-tab.d.ts.map +0 -1
  420. package/dist/editors/payment-terms/milestones-tab.js +0 -205
  421. package/dist/editors/payment-terms/retainer-tab.d.ts +0 -10
  422. package/dist/editors/payment-terms/retainer-tab.d.ts.map +0 -1
  423. package/dist/editors/payment-terms/retainer-tab.js +0 -91
  424. package/dist/editors/request-for-proposals/index.d.ts +0 -4
  425. package/dist/editors/request-for-proposals/index.d.ts.map +0 -1
  426. package/dist/editors/request-for-proposals/index.js +0 -10
  427. package/dist/editors/workstream/index.d.ts +0 -4
  428. package/dist/editors/workstream/index.d.ts.map +0 -1
  429. package/dist/editors/workstream/index.js +0 -10
  430. package/dist/editors/workstream/project-management-import.d.ts +0 -3
  431. package/dist/editors/workstream/project-management-import.d.ts.map +0 -1
  432. package/dist/editors/workstream/project-management-import.js +0 -5
  433. package/dist/subgraphs/network-profile/index.d.ts +0 -11
  434. package/dist/subgraphs/network-profile/index.d.ts.map +0 -1
  435. package/dist/subgraphs/network-profile/index.js +0 -11
  436. package/dist/subgraphs/network-profile/resolvers.d.ts.map +0 -1
  437. package/dist/subgraphs/network-profile/resolvers.js +0 -205
  438. package/dist/subgraphs/network-profile/schema.d.ts.map +0 -1
  439. package/dist/subgraphs/network-profile/schema.js +0 -139
  440. package/dist/subgraphs/payment-terms/index.d.ts.map +0 -1
  441. package/dist/subgraphs/payment-terms/index.js +0 -11
  442. package/dist/subgraphs/payment-terms/resolvers.d.ts +0 -3
  443. package/dist/subgraphs/payment-terms/resolvers.d.ts.map +0 -1
  444. package/dist/subgraphs/payment-terms/resolvers.js +0 -277
  445. package/dist/subgraphs/payment-terms/schema.d.ts +0 -3
  446. package/dist/subgraphs/payment-terms/schema.d.ts.map +0 -1
  447. package/dist/subgraphs/payment-terms/schema.js +0 -324
  448. package/dist/subgraphs/request-for-proposals/index.d.ts +0 -11
  449. package/dist/subgraphs/request-for-proposals/index.d.ts.map +0 -1
  450. package/dist/subgraphs/request-for-proposals/index.js +0 -11
  451. package/dist/subgraphs/request-for-proposals/resolvers.d.ts +0 -3
  452. package/dist/subgraphs/request-for-proposals/resolvers.d.ts.map +0 -1
  453. package/dist/subgraphs/request-for-proposals/resolvers.js +0 -145
  454. package/dist/subgraphs/request-for-proposals/schema.d.ts +0 -3
  455. package/dist/subgraphs/request-for-proposals/schema.d.ts.map +0 -1
  456. package/dist/subgraphs/request-for-proposals/schema.js +0 -232
  457. package/dist/subgraphs/workstream/index.d.ts +0 -11
  458. package/dist/subgraphs/workstream/index.d.ts.map +0 -1
  459. package/dist/subgraphs/workstream/resolvers.d.ts +0 -3
  460. package/dist/subgraphs/workstream/resolvers.d.ts.map +0 -1
  461. package/dist/subgraphs/workstream/resolvers.js +0 -181
  462. package/dist/subgraphs/workstream/schema.d.ts +0 -3
  463. package/dist/subgraphs/workstream/schema.d.ts.map +0 -1
  464. package/dist/subgraphs/workstream/schema.js +0 -206
  465. package/dist/vitest.config.d.ts +0 -3
  466. package/dist/vitest.config.d.ts.map +0 -1
  467. package/dist/vitest.config.js +0 -8
  468. /package/dist/subgraphs/{network-profile → builders-addon}/resolvers.d.ts +0 -0
  469. /package/dist/subgraphs/{network-profile → builders-addon}/schema.d.ts +0 -0
@@ -0,0 +1,67 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useRef, useEffect } from "react";
3
+ import { FileText, ChevronDown, Clock, Send, CheckCircle, XCircle, DollarSign, Target, TrendingUp, Wallet, } from "lucide-react";
4
+ import { toast } from "@powerhousedao/design-system/connect";
5
+ import {} from "../../../document-models/payment-terms/index.js";
6
+ const STATUS_CONFIG = {
7
+ DRAFT: {
8
+ label: "Draft",
9
+ icon: Clock,
10
+ badgeClass: "bg-slate-100 text-slate-600",
11
+ },
12
+ SUBMITTED: {
13
+ label: "Submitted",
14
+ icon: Send,
15
+ badgeClass: "bg-blue-100 text-blue-600",
16
+ },
17
+ ACCEPTED: {
18
+ label: "Accepted",
19
+ icon: CheckCircle,
20
+ badgeClass: "bg-emerald-100 text-emerald-600",
21
+ },
22
+ CANCELLED: {
23
+ label: "Cancelled",
24
+ icon: XCircle,
25
+ badgeClass: "bg-rose-100 text-rose-600",
26
+ },
27
+ };
28
+ export function HeaderSection({ state, dispatch, actions, progressPercentage, completedMilestones, totalMilestones, totalValue, paidValue, }) {
29
+ const [isStatusDropdownOpen, setIsStatusDropdownOpen] = useState(false);
30
+ const dropdownRef = useRef(null);
31
+ const statusConfig = STATUS_CONFIG[state.status];
32
+ const StatusIcon = statusConfig.icon;
33
+ // Close dropdown when clicking outside
34
+ useEffect(() => {
35
+ function handleClickOutside(event) {
36
+ if (dropdownRef.current &&
37
+ !dropdownRef.current.contains(event.target)) {
38
+ setIsStatusDropdownOpen(false);
39
+ }
40
+ }
41
+ document.addEventListener("mousedown", handleClickOutside);
42
+ return () => document.removeEventListener("mousedown", handleClickOutside);
43
+ }, []);
44
+ const handleStatusChange = (newStatus) => {
45
+ if (newStatus !== state.status) {
46
+ dispatch(actions.updateStatus({ status: newStatus }));
47
+ toast(`Status updated to ${STATUS_CONFIG[newStatus].label}`, {
48
+ type: "success",
49
+ });
50
+ }
51
+ setIsStatusDropdownOpen(false);
52
+ };
53
+ const formatCurrency = (value) => {
54
+ return new Intl.NumberFormat("en-US", {
55
+ style: "decimal",
56
+ minimumFractionDigits: 0,
57
+ maximumFractionDigits: 2,
58
+ }).format(value);
59
+ };
60
+ const remainingValue = totalValue - paidValue;
61
+ return (_jsxs("div", { className: "bg-white border border-gray-200 rounded-xl shadow-sm relative", children: [_jsxs("div", { className: "flex items-start justify-between p-6 gap-6", children: [_jsx("div", { className: "flex-1", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "w-12 h-12 rounded-xl bg-gradient-to-br from-blue-600 to-blue-500 flex items-center justify-center text-white", children: _jsx(FileText, { size: 24 }) }), _jsxs("div", { children: [_jsx("h1", { className: "text-2xl font-bold text-slate-800 tracking-tight", children: "Payment Terms" }), _jsxs("p", { className: "text-sm text-slate-500", children: [state.paymentModel === "MILESTONE"
62
+ ? "Milestone-based payment schedule"
63
+ : "Time & Materials billing", " • ", state.currency] })] })] }) }), _jsx("div", { className: "flex items-center gap-3", children: _jsxs("div", { className: "relative", ref: dropdownRef, children: [_jsxs("button", { className: `inline-flex items-center gap-1.5 px-3.5 py-2 rounded-full text-sm font-semibold uppercase tracking-wide transition-all cursor-pointer border-none hover:-translate-y-0.5 hover:shadow-md ${statusConfig.badgeClass}`, onClick: () => setIsStatusDropdownOpen(!isStatusDropdownOpen), type: "button", children: [_jsx(StatusIcon, { size: 14 }), statusConfig.label, _jsx(ChevronDown, { size: 14, className: `transition-transform duration-200 ${isStatusDropdownOpen ? "rotate-180" : ""}` })] }), isStatusDropdownOpen && (_jsx("div", { className: "absolute top-full right-0 mt-2 min-w-[200px] bg-white border border-gray-200 rounded-lg shadow-xl z-[9999] overflow-hidden animate-in fade-in slide-in-from-top-2 duration-150", children: Object.entries(STATUS_CONFIG).map(([statusKey, config]) => {
64
+ const Icon = config.icon;
65
+ return (_jsxs("button", { type: "button", className: `flex items-center gap-2.5 px-4 py-3 text-sm text-slate-800 bg-transparent border-none w-full text-left cursor-pointer transition-colors hover:bg-stone-100 ${state.status === statusKey ? "bg-stone-50" : ""}`, onClick: () => handleStatusChange(statusKey), children: [_jsx(Icon, { size: 16 }), config.label] }, statusKey));
66
+ }) }))] }) })] }), _jsxs("div", { className: "grid grid-cols-4 gap-px bg-gray-200 border-t border-gray-200", children: [_jsxs("div", { className: "flex flex-col items-center justify-center p-4 bg-white text-center", children: [_jsxs("div", { className: "text-xl font-bold text-slate-800", children: [_jsx(DollarSign, { size: 16, className: "inline align-middle mr-0.5 opacity-50" }), formatCurrency(totalValue)] }), _jsx("div", { className: "text-xs text-slate-400 mt-1 uppercase tracking-wider", children: "Total Value" })] }), _jsxs("div", { className: "flex flex-col items-center justify-center p-4 bg-white text-center", children: [_jsxs("div", { className: "text-xl font-bold text-emerald-600", children: [_jsx(Wallet, { size: 16, className: "inline align-middle mr-1 opacity-70" }), formatCurrency(paidValue)] }), _jsx("div", { className: "text-xs text-slate-400 mt-1 uppercase tracking-wider", children: "Paid Out" })] }), _jsxs("div", { className: "flex flex-col items-center justify-center p-4 bg-white text-center", children: [_jsxs("div", { className: "text-xl font-bold text-amber-600", children: [_jsx(TrendingUp, { size: 16, className: "inline align-middle mr-1 opacity-70" }), formatCurrency(remainingValue)] }), _jsx("div", { className: "text-xs text-slate-400 mt-1 uppercase tracking-wider", children: "Remaining" })] }), _jsxs("div", { className: "flex flex-col items-center justify-center p-4 bg-white text-center", children: [_jsxs("div", { className: "text-xl font-bold text-slate-800", children: [_jsx(Target, { size: 16, className: "inline align-middle mr-1 opacity-50" }), completedMilestones, " / ", totalMilestones] }), _jsx("div", { className: "text-xs text-slate-400 mt-1 uppercase tracking-wider", children: "Milestones" })] })] }), state.paymentModel === "MILESTONE" && totalMilestones > 0 && (_jsxs("div", { className: "p-4 px-6 bg-stone-50 border-t border-gray-200 rounded-b-xl", children: [_jsxs("div", { className: "flex items-center justify-between mb-2", children: [_jsx("span", { className: "text-sm font-medium text-slate-500", children: "Payment Progress" }), _jsxs("span", { className: "text-sm font-semibold text-slate-800", children: [progressPercentage, "%"] })] }), _jsx("div", { className: "h-1.5 bg-gray-200 rounded-full overflow-hidden", children: _jsx("div", { className: "h-full bg-gradient-to-r from-emerald-600 to-emerald-400 rounded-full transition-all duration-500", style: { width: `${progressPercentage}%` } }) })] }))] }));
67
+ }
@@ -0,0 +1,11 @@
1
+ import type { Milestone, PaymentTermsAction } from "../../../document-models/payment-terms/gen/types.js";
2
+ import { type actions as paymentTermsActions } from "../../../document-models/payment-terms/index.js";
3
+ interface MilestonesSectionProps {
4
+ milestones: Milestone[];
5
+ dispatch: (action: PaymentTermsAction) => void;
6
+ actions: typeof paymentTermsActions;
7
+ currency: string;
8
+ }
9
+ export declare function MilestonesSection({ milestones, dispatch, actions, currency, }: MilestonesSectionProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=milestones-section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"milestones-section.d.ts","sourceRoot":"","sources":["../../../../editors/payment-terms/components/milestones-section.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,SAAS,EAET,kBAAkB,EACnB,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EAAE,KAAK,OAAO,IAAI,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAEtG,UAAU,sBAAsB;IAC9B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,wBAAgB,iBAAiB,CAAC,EAChC,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,GACT,EAAE,sBAAsB,2CA8WxB"}
@@ -0,0 +1,236 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { Milestone as MilestoneIcon, Plus, } from "lucide-react";
4
+ import { ObjectSetTable, DatePicker, Checkbox, Select, } from "@powerhousedao/document-engineering";
5
+ import { toast } from "@powerhousedao/design-system/connect";
6
+ import { generateId } from "document-model/core";
7
+ import {} from "../../../document-models/payment-terms/index.js";
8
+ export function MilestonesSection({ milestones, dispatch, actions, currency, }) {
9
+ const columns = useMemo(() => [
10
+ {
11
+ field: "name",
12
+ title: "Milestone",
13
+ type: "string",
14
+ editable: true,
15
+ align: "left",
16
+ width: 280,
17
+ onSave: (newValue, context) => {
18
+ if (newValue !== context.row.name && newValue) {
19
+ dispatch(actions.updateMilestone({
20
+ id: context.row.id,
21
+ name: newValue,
22
+ }));
23
+ return true;
24
+ }
25
+ return false;
26
+ },
27
+ renderCell: (value, context) => {
28
+ // Use value from row data, fallback to context.row.name for empty rows
29
+ const displayValue = value || context.row.name || "";
30
+ if (!displayValue) {
31
+ return (_jsx("span", { className: "text-slate-400 italic", children: "+ Double-click to add milestone" }));
32
+ }
33
+ return _jsx("span", { className: "font-medium", children: displayValue });
34
+ },
35
+ },
36
+ {
37
+ field: "amount",
38
+ title: `Amount (${currency})`,
39
+ type: "number",
40
+ editable: true,
41
+ align: "right",
42
+ width: 120,
43
+ renderCell: (value, context) => {
44
+ // Hide for empty/new rows
45
+ if (!context.row.name) {
46
+ return null;
47
+ }
48
+ const numValue = context.row.amount?.value;
49
+ if (numValue === undefined || numValue === null) {
50
+ return _jsx("span", { className: "text-slate-400", children: "\u2014" });
51
+ }
52
+ return (_jsx("span", { className: "font-mono text-sm text-slate-700", children: _jsx("span", { children: numValue.toLocaleString() }) }));
53
+ },
54
+ renderCellEditor: (value, onChange, context) => {
55
+ // Extract numeric value from Amount object
56
+ const amountValue = context.row.amount?.value;
57
+ return (_jsx("input", { className: "w-full bg-white border border-gray-300 rounded-md p-2", name: `amount-${context.row.id}`, defaultValue: amountValue, step: "0.01", type: "number", onBlur: (e) => {
58
+ if (e.target.value !== undefined &&
59
+ e.target.value !== String(context.row.amount?.value)) {
60
+ dispatch(actions.updateMilestone({
61
+ id: context.row.id,
62
+ amount: {
63
+ value: parseFloat(e.target.value),
64
+ unit: currency,
65
+ },
66
+ }));
67
+ toast("Amount updated", { type: "success" });
68
+ }
69
+ } }));
70
+ },
71
+ onSave: () => {
72
+ return true;
73
+ },
74
+ },
75
+ {
76
+ field: "expectedCompletionDate",
77
+ title: "Due Date",
78
+ type: "date",
79
+ editable: true,
80
+ align: "center",
81
+ width: 160,
82
+ className: "bg-white ",
83
+ style: {
84
+ backgroundColor: "white",
85
+ },
86
+ renderCell: (value) => {
87
+ if (!value) {
88
+ return (_jsx("div", { className: "flex items-center justify-center w-full h-full", children: _jsx("span", { className: "text-slate-400" }) }));
89
+ }
90
+ try {
91
+ // Extract date parts using UTC methods to avoid timezone conversion
92
+ const date = new Date(value);
93
+ if (isNaN(date.getTime())) {
94
+ return (_jsx("div", { className: "flex items-center justify-center w-full h-full", children: _jsx("span", { className: "text-slate-400", children: "\u2014" }) }));
95
+ }
96
+ const year = date.getUTCFullYear();
97
+ const monthNames = [
98
+ "Jan",
99
+ "Feb",
100
+ "Mar",
101
+ "Apr",
102
+ "May",
103
+ "Jun",
104
+ "Jul",
105
+ "Aug",
106
+ "Sep",
107
+ "Oct",
108
+ "Nov",
109
+ "Dec",
110
+ ];
111
+ const month = monthNames[date.getUTCMonth()];
112
+ const day = date.getUTCDate();
113
+ return (_jsx("div", { className: "flex items-center justify-center w-full h-full", children: _jsx("span", { className: "text-slate-500", children: `${day} ${month} ${year}` }) }));
114
+ }
115
+ catch {
116
+ return (_jsx("div", { className: "flex items-center justify-center w-full h-full", children: _jsx("span", { className: "text-slate-400", children: "\u2014" }) }));
117
+ }
118
+ },
119
+ renderCellEditor: (value, onChange, context) => {
120
+ const dateValue = value
121
+ ? typeof value === "string"
122
+ ? new Date(value)
123
+ : value
124
+ : undefined;
125
+ return (_jsx(DatePicker, { className: "bg-white min-w-[160px]", name: `date-${context.row.id}`, value: dateValue instanceof Date ? dateValue : undefined, onChange: (e) => {
126
+ const date = e.target.value ? new Date(e.target.value) : null;
127
+ dispatch(actions.updateMilestone({
128
+ id: context.row.id,
129
+ expectedCompletionDate: date?.toISOString() || null,
130
+ }));
131
+ } }));
132
+ },
133
+ onSave: () => {
134
+ return true;
135
+ },
136
+ },
137
+ {
138
+ field: "requiresApproval",
139
+ title: "Approval",
140
+ type: "boolean",
141
+ editable: true,
142
+ align: "center",
143
+ width: 90,
144
+ onSave: () => {
145
+ return true;
146
+ },
147
+ renderCell: (value, context) => {
148
+ // Use context.row to get the latest state value
149
+ const requiresApproval = context.row.requiresApproval;
150
+ if (requiresApproval === undefined || requiresApproval === null) {
151
+ return (_jsx("div", { className: "flex items-center justify-center w-full h-full", children: _jsx("span", { className: "text-slate-400" }) }));
152
+ }
153
+ return (_jsx("div", { className: "flex items-center justify-center w-full h-full", children: requiresApproval === true ? (_jsx("span", { className: "text-emerald-600 font-medium", children: "Yes" })) : (_jsx("span", { className: "text-slate-400", children: "No" })) }));
154
+ },
155
+ renderCellEditor: (value, onChange, context) => {
156
+ const currentValue = context.row.requiresApproval ?? false;
157
+ return (_jsx(Checkbox, { className: "bg-white", name: `requiresApproval-${context.row.id}`, value: currentValue, onChange: (checked) => {
158
+ dispatch(actions.updateMilestone({
159
+ id: context.row.id,
160
+ requiresApproval: checked,
161
+ }));
162
+ toast("Approval requirement updated", { type: "success" });
163
+ } }));
164
+ },
165
+ },
166
+ {
167
+ field: "payoutStatus",
168
+ title: "Status",
169
+ type: "enum",
170
+ getCellValue: (row) => row.payoutStatus,
171
+ editable: true,
172
+ align: "center",
173
+ width: 140,
174
+ onSave: () => {
175
+ return true;
176
+ },
177
+ renderCell: (value) => {
178
+ const status = {
179
+ APPROVED: "Approved",
180
+ PAID: "Paid",
181
+ PENDING: "Pending",
182
+ READY_FOR_REVIEW: "Ready for Review",
183
+ REJECTED: "Rejected",
184
+ };
185
+ return (_jsx("div", { className: "flex items-center justify-center w-full h-full text-center", children: _jsx("span", { className: "text-slate-500", children: status[value] }) }));
186
+ },
187
+ renderCellEditor: (value, onChange, context) => {
188
+ return (_jsx(Select, { className: "bg-white min-w-[160px]", name: `payoutStatus-${context.row.id}`, value: value, options: [
189
+ { value: "APPROVED", label: "Approved" },
190
+ { value: "PAID", label: "Paid" },
191
+ { value: "PENDING", label: "Pending" },
192
+ { value: "READY_FOR_REVIEW", label: "Ready for Review" },
193
+ { value: "REJECTED", label: "Rejected" },
194
+ ], onChange: (e) => {
195
+ dispatch(actions.updateMilestoneStatus({
196
+ id: context.row.id,
197
+ payoutStatus: e,
198
+ }));
199
+ } }));
200
+ },
201
+ },
202
+ ], [actions, currency, dispatch]);
203
+ return (_jsxs("div", { className: "bg-white border border-gray-200 rounded-xl shadow-sm overflow-hidden transition-shadow hover:shadow-md", children: [_jsx("div", { className: "flex items-center justify-between px-5 py-4 border-b border-gray-200 bg-stone-50", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "flex items-center justify-center w-9 h-9 rounded-lg bg-blue-100", children: _jsx(MilestoneIcon, { size: 18, className: "text-blue-600" }) }), _jsxs("div", { children: [_jsx("h2", { className: "text-[15px] font-semibold text-slate-800", children: "Milestones" }), _jsxs("p", { className: "text-[13px] text-slate-400 mt-0.5", children: [milestones.length, " milestone", milestones.length !== 1 ? "s" : "", " ", "defined"] })] })] }) }), _jsx("div", { className: "p-5", children: milestones.length > 0 ? (_jsx(ObjectSetTable, { data: milestones, columns: columns, onAdd: (data) => {
204
+ const name = data.name || "";
205
+ if (name.trim()) {
206
+ const milestoneData = {
207
+ id: generateId(),
208
+ name: name.trim(),
209
+ amount: { value: 0, unit: currency },
210
+ requiresApproval: true,
211
+ expectedCompletionDate: null,
212
+ payoutStatus: "PENDING",
213
+ };
214
+ dispatch(actions.addMilestone(milestoneData));
215
+ toast("Milestone added", { type: "success" });
216
+ }
217
+ }, onDelete: (rows) => {
218
+ if (rows.length > 0) {
219
+ rows.forEach((row) => {
220
+ dispatch(actions.deleteMilestone({ id: row.id }));
221
+ });
222
+ toast(`${rows.length} milestone${rows.length > 1 ? "s" : ""} deleted`, { type: "success" });
223
+ }
224
+ }, allowRowSelection: true })) : (_jsxs("div", { className: "flex flex-col items-center justify-center py-10 text-center border-2 border-dashed border-gray-200 rounded-lg bg-stone-50", children: [_jsx(MilestoneIcon, { size: 48, className: "text-slate-400 mb-4" }), _jsx("p", { className: "text-[15px] font-semibold text-slate-800 mb-1", children: "No milestones yet" }), _jsx("p", { className: "text-sm text-slate-400 mb-4", children: "Add milestones to define your payment schedule" }), _jsxs("button", { type: "button", className: "inline-flex items-center gap-2 px-4 py-2 text-[13px] font-medium text-white bg-slate-800 border-none rounded-md cursor-pointer transition-colors hover:bg-slate-700", onClick: () => {
225
+ const milestoneData = {
226
+ id: generateId(),
227
+ name: "New Milestone",
228
+ amount: { value: 0, unit: currency },
229
+ requiresApproval: true,
230
+ expectedCompletionDate: null,
231
+ payoutStatus: "PENDING",
232
+ };
233
+ dispatch(actions.addMilestone(milestoneData));
234
+ toast("Milestone added", { type: "success" });
235
+ }, children: [_jsx(Plus, { size: 16 }), "Add First Milestone"] })] })) })] }));
236
+ }
@@ -0,0 +1,11 @@
1
+ import type { PaymentTermsState } from "../../../document-models/payment-terms/gen/types.js";
2
+ import type { PaymentTermsAction } from "../../../document-models/payment-terms/gen/actions.js";
3
+ import { type actions as paymentTermsActions } from "../../../document-models/payment-terms/index.js";
4
+ interface PartiesSectionProps {
5
+ state: PaymentTermsState;
6
+ dispatch: (action: PaymentTermsAction) => void;
7
+ actions: typeof paymentTermsActions;
8
+ }
9
+ export declare function PartiesSection({ state, dispatch, actions, }: PartiesSectionProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=parties-section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parties-section.d.ts","sourceRoot":"","sources":["../../../../editors/payment-terms/components/parties-section.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,KAAK,OAAO,IAAI,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAEtG,UAAU,mBAAmB;IAC3B,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,OAAO,mBAAmB,CAAC;CACrC;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,OAAO,GACR,EAAE,mBAAmB,2CAqIrB"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useCallback } from "react";
3
+ import { Users, UserCircle, Building2, Pencil, Check, X } from "lucide-react";
4
+ import { TextInput } from "@powerhousedao/document-engineering";
5
+ import { toast } from "@powerhousedao/design-system/connect";
6
+ import {} from "../../../document-models/payment-terms/index.js";
7
+ export function PartiesSection({ state, dispatch, actions, }) {
8
+ const [isEditing, setIsEditing] = useState(false);
9
+ const [formData, setFormData] = useState({
10
+ proposer: state.proposer || "",
11
+ payer: state.payer || "",
12
+ });
13
+ const handleSave = useCallback(() => {
14
+ if (!formData.proposer.trim() || !formData.payer.trim()) {
15
+ toast("Both proposer and payer are required", { type: "error" });
16
+ return;
17
+ }
18
+ dispatch(actions.setBasicTerms({
19
+ proposer: formData.proposer,
20
+ payer: formData.payer,
21
+ currency: state.currency,
22
+ paymentModel: state.paymentModel,
23
+ totalAmount: state.totalAmount || undefined,
24
+ }));
25
+ toast("Parties updated successfully", { type: "success" });
26
+ setIsEditing(false);
27
+ }, [formData, state, dispatch, actions]);
28
+ const handleCancel = useCallback(() => {
29
+ setFormData({
30
+ proposer: state.proposer || "",
31
+ payer: state.payer || "",
32
+ });
33
+ setIsEditing(false);
34
+ }, [state]);
35
+ return (_jsxs("div", { className: "bg-white border border-gray-200 rounded-xl shadow-sm overflow-hidden transition-shadow hover:shadow-md", children: [_jsxs("div", { className: "flex items-center justify-between px-5 py-4 border-b border-gray-200 bg-stone-50", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "flex items-center justify-center w-9 h-9 rounded-lg bg-white text-slate-500", children: _jsx(Users, { size: 18 }) }), _jsxs("div", { children: [_jsx("h2", { className: "text-[15px] font-semibold text-slate-800", children: "Parties" }), _jsx("p", { className: "text-[13px] text-slate-400 mt-0.5", children: "Contract participants" })] })] }), !isEditing ? (_jsxs("button", { type: "button", className: "inline-flex items-center gap-2 px-3 py-1.5 text-[13px] font-medium text-slate-500 bg-transparent border-none rounded-md cursor-pointer transition-colors hover:bg-stone-100 hover:text-slate-800", onClick: () => setIsEditing(true), children: [_jsx(Pencil, { size: 14 }), "Edit"] })) : (_jsxs("div", { className: "flex gap-2", children: [_jsxs("button", { type: "button", className: "inline-flex items-center gap-2 px-3 py-1.5 text-[13px] font-medium text-white bg-emerald-600 border-none rounded-md cursor-pointer transition-colors hover:bg-emerald-700", onClick: handleSave, children: [_jsx(Check, { size: 14 }), "Save"] }), _jsxs("button", { type: "button", className: "inline-flex items-center gap-2 px-3 py-1.5 text-[13px] font-medium text-slate-500 bg-transparent border-none rounded-md cursor-pointer transition-colors hover:bg-stone-100 hover:text-slate-800", onClick: handleCancel, children: [_jsx(X, { size: 14 }), "Cancel"] })] }))] }), _jsx("div", { className: "p-5", children: _jsxs("div", { className: "grid grid-cols-2 gap-4", children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsxs("label", { className: "text-[13px] font-medium text-slate-500", children: [_jsx(UserCircle, { size: 14, className: "inline align-middle mr-1.5" }), "Proposer"] }), isEditing ? (_jsx(TextInput, { value: formData.proposer, onChange: (e) => setFormData({ ...formData, proposer: e.target.value }), placeholder: "Enter proposer name or entity" })) : (_jsx("p", { className: `text-[15px] py-2.5 ${!state.proposer ? "text-slate-400 italic" : "text-slate-800"}`, children: state.proposer || "Not specified" }))] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsxs("label", { className: "text-[13px] font-medium text-slate-500", children: [_jsx(Building2, { size: 14, className: "inline align-middle mr-1.5" }), "Payer"] }), isEditing ? (_jsx(TextInput, { value: formData.payer, onChange: (e) => setFormData({ ...formData, payer: e.target.value }), placeholder: "Enter payer name or entity" })) : (_jsx("p", { className: `text-[15px] py-2.5 ${!state.payer ? "text-slate-400 italic" : "text-slate-800"}`, children: state.payer || "Not specified" }))] })] }) })] }));
36
+ }
@@ -0,0 +1,11 @@
1
+ import type { PaymentTermsState } from "../../../document-models/payment-terms/gen/types.js";
2
+ import type { PaymentTermsAction } from "../../../document-models/payment-terms/gen/actions.js";
3
+ import { type actions as paymentTermsActions } from "../../../document-models/payment-terms/index.js";
4
+ interface PaymentConfigSectionProps {
5
+ state: PaymentTermsState;
6
+ dispatch: (action: PaymentTermsAction) => void;
7
+ actions: typeof paymentTermsActions;
8
+ }
9
+ export declare function PaymentConfigSection({ state, dispatch, actions, }: PaymentConfigSectionProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=payment-config-section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-config-section.d.ts","sourceRoot":"","sources":["../../../../editors/payment-terms/components/payment-config-section.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,iBAAiB,EAGlB,MAAM,qDAAqD,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,KAAK,OAAO,IAAI,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAEtG,UAAU,yBAAyB;IACjC,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,OAAO,mBAAmB,CAAC;CACrC;AAaD,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,OAAO,GACR,EAAE,yBAAyB,2CA0L3B"}
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useCallback } from "react";
3
+ import { Settings, DollarSign, Milestone, Clock, Pencil, Check, X, } from "lucide-react";
4
+ import { TextInput, Select } from "@powerhousedao/document-engineering";
5
+ import { toast } from "@powerhousedao/design-system/connect";
6
+ import {} from "../../../document-models/payment-terms/index.js";
7
+ const CURRENCY_OPTIONS = [
8
+ { value: "USD", label: "USD - US Dollar" },
9
+ { value: "EUR", label: "EUR - Euro" },
10
+ { value: "GBP", label: "GBP - British Pound" },
11
+ ];
12
+ const PAYMENT_MODEL_OPTIONS = [
13
+ { value: "MILESTONE", label: "Milestone-Based" },
14
+ { value: "TIME_AND_MATERIALS", label: "Time & Materials" },
15
+ ];
16
+ export function PaymentConfigSection({ state, dispatch, actions, }) {
17
+ const [isEditing, setIsEditing] = useState(false);
18
+ const [formData, setFormData] = useState({
19
+ currency: state.currency || "USD",
20
+ paymentModel: state.paymentModel || "MILESTONE",
21
+ totalAmount: state.totalAmount?.value?.toString() || "",
22
+ });
23
+ const handleSave = useCallback(() => {
24
+ dispatch(actions.setBasicTerms({
25
+ proposer: state.proposer,
26
+ payer: state.payer,
27
+ currency: formData.currency,
28
+ paymentModel: formData.paymentModel,
29
+ totalAmount: formData.totalAmount
30
+ ? {
31
+ value: parseFloat(formData.totalAmount),
32
+ unit: formData.currency,
33
+ }
34
+ : undefined,
35
+ }));
36
+ toast("Payment configuration updated", { type: "success" });
37
+ setIsEditing(false);
38
+ }, [formData, state, dispatch, actions]);
39
+ const handleCancel = useCallback(() => {
40
+ setFormData({
41
+ currency: state.currency || "USD",
42
+ paymentModel: state.paymentModel || "MILESTONE",
43
+ totalAmount: state.totalAmount?.value?.toString() || "",
44
+ });
45
+ setIsEditing(false);
46
+ }, [state]);
47
+ const formatAmount = (value, currency) => {
48
+ if (!value)
49
+ return null;
50
+ return new Intl.NumberFormat("en-US", {
51
+ style: "currency",
52
+ currency: currency,
53
+ minimumFractionDigits: 0,
54
+ maximumFractionDigits: 2,
55
+ }).format(value);
56
+ };
57
+ const PaymentModelIcon = state.paymentModel === "MILESTONE" ? Milestone : Clock;
58
+ return (_jsxs("div", { className: "bg-white border border-gray-200 rounded-xl shadow-sm overflow-hidden transition-shadow hover:shadow-md", children: [_jsxs("div", { className: "flex items-center justify-between px-5 py-4 border-b border-gray-200 bg-stone-50", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "flex items-center justify-center w-9 h-9 rounded-lg bg-white text-slate-500", children: _jsx(Settings, { size: 18 }) }), _jsxs("div", { children: [_jsx("h2", { className: "text-[15px] font-semibold text-slate-800", children: "Payment Configuration" }), _jsx("p", { className: "text-[13px] text-slate-400 mt-0.5", children: "Currency, model, and total amount" })] })] }), !isEditing ? (_jsxs("button", { type: "button", className: "inline-flex items-center gap-2 px-3 py-1.5 text-[13px] font-medium text-slate-500 bg-transparent border-none rounded-md cursor-pointer transition-colors hover:bg-stone-100 hover:text-slate-800", onClick: () => setIsEditing(true), children: [_jsx(Pencil, { size: 14 }), "Edit"] })) : (_jsxs("div", { className: "flex gap-2", children: [_jsxs("button", { type: "button", className: "inline-flex items-center gap-2 px-3 py-1.5 text-[13px] font-medium text-white bg-emerald-600 border-none rounded-md cursor-pointer transition-colors hover:bg-emerald-700", onClick: handleSave, children: [_jsx(Check, { size: 14 }), "Save"] }), _jsxs("button", { type: "button", className: "inline-flex items-center gap-2 px-3 py-1.5 text-[13px] font-medium text-slate-500 bg-transparent border-none rounded-md cursor-pointer transition-colors hover:bg-stone-100 hover:text-slate-800", onClick: handleCancel, children: [_jsx(X, { size: 14 }), "Cancel"] })] }))] }), _jsx("div", { className: "p-5", children: _jsxs("div", { className: "grid grid-cols-3 gap-4", children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsxs("label", { className: "text-[13px] font-medium text-slate-500", children: [_jsx(DollarSign, { size: 14, className: "inline align-middle mr-1.5" }), "Currency"] }), isEditing ? (_jsx(Select, { value: formData.currency, onChange: (value) => setFormData({
59
+ ...formData,
60
+ currency: value,
61
+ }), options: CURRENCY_OPTIONS })) : (_jsx("p", { className: "text-[15px] py-2.5", children: _jsx("span", { className: "inline-flex items-center gap-1 px-2.5 py-1 text-xs font-medium rounded-full bg-stone-100 text-slate-500", children: state.currency }) }))] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsxs("label", { className: "text-[13px] font-medium text-slate-500", children: [_jsx(PaymentModelIcon, { size: 14, className: "inline align-middle mr-1.5" }), "Payment Model"] }), isEditing ? (_jsx(Select, { value: formData.paymentModel, onChange: (value) => setFormData({
62
+ ...formData,
63
+ paymentModel: value,
64
+ }), options: PAYMENT_MODEL_OPTIONS })) : (_jsx("p", { className: "text-[15px] py-2.5", children: _jsx("span", { className: `inline-flex items-center gap-1 px-2.5 py-1 text-xs font-medium rounded-full ${state.paymentModel === "MILESTONE" ? "bg-blue-100 text-blue-600" : "bg-amber-100 text-amber-600"}`, children: state.paymentModel === "MILESTONE"
65
+ ? "Milestone-Based"
66
+ : "Time & Materials" }) }))] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "text-[13px] font-medium text-slate-500", children: "Total Contract Value" }), isEditing ? (_jsx(TextInput, { type: "number", value: formData.totalAmount, onChange: (e) => setFormData({ ...formData, totalAmount: e.target.value }), placeholder: "0.00", step: "0.01" })) : (_jsx("p", { className: `text-lg font-mono font-semibold py-2.5 ${!state.totalAmount ? "text-slate-400 italic text-[15px] font-normal" : "text-slate-800"}`, children: formatAmount(state.totalAmount?.value, state.currency) ||
67
+ "Not set" }))] })] }) })] }));
68
+ }
@@ -0,0 +1,11 @@
1
+ import type { PaymentTermsState } from "../../../document-models/payment-terms/gen/types.js";
2
+ import type { PaymentTermsAction } from "../../../document-models/payment-terms/gen/actions.js";
3
+ import { type actions as paymentTermsActions } from "../../../document-models/payment-terms/index.js";
4
+ interface TimeAndMaterialsSectionProps {
5
+ state: PaymentTermsState;
6
+ dispatch: (action: PaymentTermsAction) => void;
7
+ actions: typeof paymentTermsActions;
8
+ }
9
+ export declare function TimeAndMaterialsSection({ state, dispatch, actions, }: TimeAndMaterialsSectionProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=time-materials-section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-materials-section.d.ts","sourceRoot":"","sources":["../../../../editors/payment-terms/components/time-materials-section.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,qDAAqD,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,KAAK,OAAO,IAAI,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAEtG,UAAU,4BAA4B;IACpC,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,OAAO,mBAAmB,CAAC;CACrC;AAQD,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,QAAQ,EACR,OAAO,GACR,EAAE,4BAA4B,2CA2S9B"}
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useCallback } from "react";
3
+ import { Clock, DollarSign, Calendar, FileSpreadsheet, Pencil, Check, X, TrendingUp, } from "lucide-react";
4
+ import { TextInput, Select } from "@powerhousedao/document-engineering";
5
+ import { toast } from "@powerhousedao/design-system/connect";
6
+ import {} from "../../../document-models/payment-terms/index.js";
7
+ const BILLING_FREQUENCY_OPTIONS = [
8
+ { value: "WEEKLY", label: "Weekly" },
9
+ { value: "BIWEEKLY", label: "Bi-weekly" },
10
+ { value: "MONTHLY", label: "Monthly" },
11
+ ];
12
+ export function TimeAndMaterialsSection({ state, dispatch, actions, }) {
13
+ const [isEditing, setIsEditing] = useState(false);
14
+ const [formData, setFormData] = useState({
15
+ hourlyRate: state.timeAndMaterials?.hourlyRate?.value?.toString() || "",
16
+ retainerAmount: state.timeAndMaterials?.retainerAmount?.value?.toString() || "",
17
+ variableCap: state.timeAndMaterials?.variableCap?.value?.toString() || "",
18
+ billingFrequency: state.timeAndMaterials?.billingFrequency || "MONTHLY",
19
+ timesheetRequired: state.timeAndMaterials?.timesheetRequired ?? true,
20
+ });
21
+ const handleSave = useCallback(() => {
22
+ dispatch(actions.setTimeAndMaterials({
23
+ hourlyRate: formData.hourlyRate
24
+ ? { value: parseFloat(formData.hourlyRate), unit: state.currency }
25
+ : undefined,
26
+ retainerAmount: formData.retainerAmount
27
+ ? { value: parseFloat(formData.retainerAmount), unit: state.currency }
28
+ : undefined,
29
+ variableCap: formData.variableCap
30
+ ? { value: parseFloat(formData.variableCap), unit: state.currency }
31
+ : undefined,
32
+ billingFrequency: formData.billingFrequency,
33
+ timesheetRequired: formData.timesheetRequired,
34
+ }));
35
+ toast("Time & Materials configuration saved", { type: "success" });
36
+ setIsEditing(false);
37
+ }, [formData, state.currency, dispatch, actions]);
38
+ const handleCancel = useCallback(() => {
39
+ setFormData({
40
+ hourlyRate: state.timeAndMaterials?.hourlyRate?.value?.toString() || "",
41
+ retainerAmount: state.timeAndMaterials?.retainerAmount?.value?.toString() || "",
42
+ variableCap: state.timeAndMaterials?.variableCap?.value?.toString() || "",
43
+ billingFrequency: state.timeAndMaterials?.billingFrequency || "MONTHLY",
44
+ timesheetRequired: state.timeAndMaterials?.timesheetRequired ?? true,
45
+ });
46
+ setIsEditing(false);
47
+ }, [state.timeAndMaterials]);
48
+ const formatCurrency = (value) => {
49
+ if (!value)
50
+ return null;
51
+ return new Intl.NumberFormat("en-US", {
52
+ style: "currency",
53
+ currency: state.currency,
54
+ minimumFractionDigits: 0,
55
+ maximumFractionDigits: 2,
56
+ }).format(value);
57
+ };
58
+ const frequencyLabel = BILLING_FREQUENCY_OPTIONS.find((o) => o.value === state.timeAndMaterials?.billingFrequency)?.label || "Monthly";
59
+ return (_jsxs("div", { className: "bg-white border border-gray-200 rounded-xl shadow-sm overflow-hidden transition-shadow hover:shadow-md", children: [_jsxs("div", { className: "flex items-center justify-between px-5 py-4 border-b border-gray-200 bg-stone-50", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "flex items-center justify-center w-9 h-9 rounded-lg bg-amber-100", children: _jsx(Clock, { size: 18, className: "text-amber-600" }) }), _jsxs("div", { children: [_jsx("h2", { className: "text-[15px] font-semibold text-slate-800", children: "Time & Materials" }), _jsx("p", { className: "text-[13px] text-slate-400 mt-0.5", children: "Rates, billing, and caps" })] })] }), !isEditing ? (_jsxs("button", { type: "button", className: "inline-flex items-center gap-2 px-3 py-1.5 text-[13px] font-medium text-slate-500 bg-transparent border-none rounded-md cursor-pointer transition-colors hover:bg-stone-100 hover:text-slate-800", onClick: () => setIsEditing(true), children: [_jsx(Pencil, { size: 14 }), "Edit"] })) : (_jsxs("div", { className: "flex gap-2", children: [_jsxs("button", { type: "button", className: "inline-flex items-center gap-2 px-3 py-1.5 text-[13px] font-medium text-white bg-emerald-600 border-none rounded-md cursor-pointer transition-colors hover:bg-emerald-700", onClick: handleSave, children: [_jsx(Check, { size: 14 }), "Save"] }), _jsxs("button", { type: "button", className: "inline-flex items-center gap-2 px-3 py-1.5 text-[13px] font-medium text-slate-500 bg-transparent border-none rounded-md cursor-pointer transition-colors hover:bg-stone-100 hover:text-slate-800", onClick: handleCancel, children: [_jsx(X, { size: 14 }), "Cancel"] })] }))] }), _jsx("div", { className: "p-5", children: isEditing ? (_jsxs("div", { className: "grid grid-cols-2 gap-4", children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsxs("label", { className: "text-[13px] font-medium text-slate-500", children: [_jsx(DollarSign, { size: 14, className: "inline align-middle mr-1.5" }), "Hourly Rate (", state.currency, ")"] }), _jsx(TextInput, { type: "number", value: formData.hourlyRate, onChange: (e) => setFormData({ ...formData, hourlyRate: e.target.value }), placeholder: "0.00", step: "0.01" })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsxs("label", { className: "text-[13px] font-medium text-slate-500", children: [_jsx(TrendingUp, { size: 14, className: "inline align-middle mr-1.5" }), "Retainer Amount (", state.currency, ")"] }), _jsx(TextInput, { type: "number", value: formData.retainerAmount, onChange: (e) => setFormData({ ...formData, retainerAmount: e.target.value }), placeholder: "0.00", step: "0.01" })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsxs("label", { className: "text-[13px] font-medium text-slate-500", children: ["Variable Cap (", state.currency, ")"] }), _jsx(TextInput, { type: "number", value: formData.variableCap, onChange: (e) => setFormData({ ...formData, variableCap: e.target.value }), placeholder: "0.00", step: "0.01" })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsxs("label", { className: "text-[13px] font-medium text-slate-500", children: [_jsx(Calendar, { size: 14, className: "inline align-middle mr-1.5" }), "Billing Frequency"] }), _jsx(Select, { value: formData.billingFrequency, onChange: (value) => setFormData({
60
+ ...formData,
61
+ billingFrequency: value,
62
+ }), options: BILLING_FREQUENCY_OPTIONS })] }), _jsx("div", { className: "col-span-2 flex flex-col gap-1.5", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { type: "checkbox", id: "timesheetRequired", className: "w-4 h-4 rounded border-gray-300 text-slate-800 focus:ring-slate-500", checked: formData.timesheetRequired, onChange: (e) => setFormData({
63
+ ...formData,
64
+ timesheetRequired: e.target.checked,
65
+ }) }), _jsxs("label", { htmlFor: "timesheetRequired", className: "text-[13px] font-medium text-slate-500 cursor-pointer", children: [_jsx(FileSpreadsheet, { size: 14, className: "inline align-middle mr-1.5" }), "Timesheet submission required for billing"] })] }) })] })) : state.timeAndMaterials ? (_jsxs("div", { className: "grid grid-cols-2 gap-4", children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsxs("label", { className: "text-[13px] font-medium text-slate-500", children: [_jsx(DollarSign, { size: 14, className: "inline align-middle mr-1.5" }), "Hourly Rate"] }), _jsx("p", { className: "text-[15px] font-mono font-semibold text-slate-800 py-2.5", children: formatCurrency(state.timeAndMaterials.hourlyRate?.value) || (_jsx("span", { className: "text-slate-400 italic font-normal font-sans", children: "Not set" })) })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsxs("label", { className: "text-[13px] font-medium text-slate-500", children: [_jsx(TrendingUp, { size: 14, className: "inline align-middle mr-1.5" }), "Retainer Amount"] }), _jsx("p", { className: "text-[15px] font-mono font-semibold text-slate-800 py-2.5", children: formatCurrency(state.timeAndMaterials.retainerAmount?.value) || (_jsx("span", { className: "text-slate-400 italic font-normal font-sans", children: "Not set" })) })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "text-[13px] font-medium text-slate-500", children: "Variable Cap" }), _jsx("p", { className: "text-[15px] font-mono font-semibold text-slate-800 py-2.5", children: formatCurrency(state.timeAndMaterials.variableCap?.value) || (_jsx("span", { className: "text-slate-400 italic font-normal font-sans", children: "No cap" })) })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsxs("label", { className: "text-[13px] font-medium text-slate-500", children: [_jsx(Calendar, { size: 14, className: "inline align-middle mr-1.5" }), "Billing Frequency"] }), _jsx("p", { className: "text-[15px] py-2.5", children: _jsx("span", { className: "inline-flex items-center gap-1 px-2.5 py-1 text-xs font-medium rounded-full bg-blue-100 text-blue-600", children: frequencyLabel }) })] }), _jsxs("div", { className: "col-span-2 flex flex-col gap-1.5", children: [_jsxs("label", { className: "text-[13px] font-medium text-slate-500", children: [_jsx(FileSpreadsheet, { size: 14, className: "inline align-middle mr-1.5" }), "Timesheet Required"] }), _jsx("p", { className: "text-[15px] py-2.5", children: _jsx("span", { className: `inline-flex items-center gap-1 px-2.5 py-1 text-xs font-medium rounded-full ${state.timeAndMaterials.timesheetRequired
66
+ ? "bg-emerald-100 text-emerald-600"
67
+ : "bg-stone-100 text-slate-500"}`, children: state.timeAndMaterials.timesheetRequired ? "Yes" : "No" }) })] })] })) : (_jsxs("div", { className: "flex flex-col items-center justify-center py-6 text-center", children: [_jsx(Clock, { size: 32, className: "text-slate-400 mb-3" }), _jsx("p", { className: "text-[15px] font-semibold text-slate-800 mb-1", children: "No configuration yet" }), _jsx("p", { className: "text-sm text-slate-400 mb-4", children: "Set up hourly rates and billing preferences" }), _jsx("button", { type: "button", className: "inline-flex items-center gap-2 px-4 py-2 text-[13px] font-medium text-white bg-slate-800 border-none rounded-md cursor-pointer transition-colors hover:bg-slate-700", onClick: () => setIsEditing(true), children: "Configure" })] })) })] }));
68
+ }
@@ -1,4 +1,2 @@
1
- import type { EditorProps } from "document-model";
2
- export type IProps = EditorProps;
3
1
  export default function Editor(): import("react/jsx-runtime").JSX.Element;
4
2
  //# sourceMappingURL=editor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/payment-terms/editor.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAU,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAgB1D,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC;AAEjC,MAAM,CAAC,OAAO,UAAU,MAAM,4CA+W7B"}
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/payment-terms/editor.tsx"],"names":[],"mappings":"AAwBA,MAAM,CAAC,OAAO,UAAU,MAAM,4CA6I7B"}