@powerhousedao/contributor-billing 0.1.40 → 0.1.41

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 (255) hide show
  1. package/dist/document-models/index.d.ts +1 -0
  2. package/dist/document-models/index.d.ts.map +1 -1
  3. package/dist/document-models/index.js +1 -0
  4. package/dist/document-models/resource-template/actions.d.ts +32 -0
  5. package/dist/document-models/resource-template/actions.d.ts.map +1 -0
  6. package/dist/document-models/resource-template/actions.js +12 -0
  7. package/dist/document-models/resource-template/gen/actions.d.ts +14 -0
  8. package/dist/document-models/resource-template/gen/actions.d.ts.map +1 -0
  9. package/dist/document-models/resource-template/gen/actions.js +6 -0
  10. package/dist/document-models/resource-template/gen/audience-management/actions.d.ts +12 -0
  11. package/dist/document-models/resource-template/gen/audience-management/actions.d.ts.map +1 -0
  12. package/dist/document-models/resource-template/gen/audience-management/actions.js +1 -0
  13. package/dist/document-models/resource-template/gen/audience-management/creators.d.ts +5 -0
  14. package/dist/document-models/resource-template/gen/audience-management/creators.d.ts.map +1 -0
  15. package/dist/document-models/resource-template/gen/audience-management/creators.js +4 -0
  16. package/dist/document-models/resource-template/gen/audience-management/error.d.ts +21 -0
  17. package/dist/document-models/resource-template/gen/audience-management/error.d.ts.map +1 -0
  18. package/dist/document-models/resource-template/gen/audience-management/error.js +20 -0
  19. package/dist/document-models/resource-template/gen/audience-management/operations.d.ts +8 -0
  20. package/dist/document-models/resource-template/gen/audience-management/operations.d.ts.map +1 -0
  21. package/dist/document-models/resource-template/gen/audience-management/operations.js +3 -0
  22. package/dist/document-models/resource-template/gen/creators.d.ts +13 -0
  23. package/dist/document-models/resource-template/gen/creators.d.ts.map +1 -0
  24. package/dist/document-models/resource-template/gen/creators.js +12 -0
  25. package/dist/document-models/resource-template/gen/document-model.d.ts +3 -0
  26. package/dist/document-models/resource-template/gen/document-model.d.ts.map +1 -0
  27. package/dist/document-models/resource-template/gen/document-model.js +410 -0
  28. package/dist/document-models/resource-template/gen/document-schema.d.ts +408 -0
  29. package/dist/document-models/resource-template/gen/document-schema.d.ts.map +1 -0
  30. package/dist/document-models/resource-template/gen/document-schema.js +33 -0
  31. package/dist/document-models/resource-template/gen/document-type.d.ts +2 -0
  32. package/dist/document-models/resource-template/gen/document-type.d.ts.map +1 -0
  33. package/dist/document-models/resource-template/gen/document-type.js +1 -0
  34. package/dist/document-models/resource-template/gen/facet-targeting/actions.d.ts +20 -0
  35. package/dist/document-models/resource-template/gen/facet-targeting/actions.d.ts.map +1 -0
  36. package/dist/document-models/resource-template/gen/facet-targeting/actions.js +1 -0
  37. package/dist/document-models/resource-template/gen/facet-targeting/creators.d.ts +7 -0
  38. package/dist/document-models/resource-template/gen/facet-targeting/creators.d.ts.map +1 -0
  39. package/dist/document-models/resource-template/gen/facet-targeting/creators.js +6 -0
  40. package/dist/document-models/resource-template/gen/facet-targeting/error.d.ts +28 -0
  41. package/dist/document-models/resource-template/gen/facet-targeting/error.d.ts.map +1 -0
  42. package/dist/document-models/resource-template/gen/facet-targeting/error.js +29 -0
  43. package/dist/document-models/resource-template/gen/facet-targeting/operations.d.ts +10 -0
  44. package/dist/document-models/resource-template/gen/facet-targeting/operations.d.ts.map +1 -0
  45. package/dist/document-models/resource-template/gen/facet-targeting/operations.js +3 -0
  46. package/dist/document-models/resource-template/gen/index.d.ts +17 -0
  47. package/dist/document-models/resource-template/gen/index.d.ts.map +1 -0
  48. package/dist/document-models/resource-template/gen/index.js +16 -0
  49. package/dist/document-models/resource-template/gen/option-group-management/actions.d.ts +16 -0
  50. package/dist/document-models/resource-template/gen/option-group-management/actions.d.ts.map +1 -0
  51. package/dist/document-models/resource-template/gen/option-group-management/actions.js +1 -0
  52. package/dist/document-models/resource-template/gen/option-group-management/creators.d.ts +6 -0
  53. package/dist/document-models/resource-template/gen/option-group-management/creators.d.ts.map +1 -0
  54. package/dist/document-models/resource-template/gen/option-group-management/creators.js +5 -0
  55. package/dist/document-models/resource-template/gen/option-group-management/error.d.ts +28 -0
  56. package/dist/document-models/resource-template/gen/option-group-management/error.d.ts.map +1 -0
  57. package/dist/document-models/resource-template/gen/option-group-management/error.js +29 -0
  58. package/dist/document-models/resource-template/gen/option-group-management/operations.d.ts +9 -0
  59. package/dist/document-models/resource-template/gen/option-group-management/operations.d.ts.map +1 -0
  60. package/dist/document-models/resource-template/gen/option-group-management/operations.js +3 -0
  61. package/dist/document-models/resource-template/gen/ph-factories.d.ts +23 -0
  62. package/dist/document-models/resource-template/gen/ph-factories.d.ts.map +1 -0
  63. package/dist/document-models/resource-template/gen/ph-factories.js +61 -0
  64. package/dist/document-models/resource-template/gen/reducer.d.ts +3 -0
  65. package/dist/document-models/resource-template/gen/reducer.d.ts.map +1 -0
  66. package/dist/document-models/resource-template/gen/reducer.js +98 -0
  67. package/dist/document-models/resource-template/gen/schema/index.d.ts +3 -0
  68. package/dist/document-models/resource-template/gen/schema/index.d.ts.map +1 -0
  69. package/dist/document-models/resource-template/gen/schema/index.js +2 -0
  70. package/dist/document-models/resource-template/gen/schema/types.d.ts +305 -0
  71. package/dist/document-models/resource-template/gen/schema/types.d.ts.map +1 -0
  72. package/dist/document-models/resource-template/gen/schema/types.js +1 -0
  73. package/dist/document-models/resource-template/gen/schema/zod.d.ts +37 -0
  74. package/dist/document-models/resource-template/gen/schema/zod.d.ts.map +1 -0
  75. package/dist/document-models/resource-template/gen/schema/zod.js +236 -0
  76. package/dist/document-models/resource-template/gen/service-category-management/actions.d.ts +12 -0
  77. package/dist/document-models/resource-template/gen/service-category-management/actions.d.ts.map +1 -0
  78. package/dist/document-models/resource-template/gen/service-category-management/actions.js +1 -0
  79. package/dist/document-models/resource-template/gen/service-category-management/creators.d.ts +5 -0
  80. package/dist/document-models/resource-template/gen/service-category-management/creators.d.ts.map +1 -0
  81. package/dist/document-models/resource-template/gen/service-category-management/creators.js +4 -0
  82. package/dist/document-models/resource-template/gen/service-category-management/error.d.ts +2 -0
  83. package/dist/document-models/resource-template/gen/service-category-management/error.d.ts.map +1 -0
  84. package/dist/document-models/resource-template/gen/service-category-management/error.js +1 -0
  85. package/dist/document-models/resource-template/gen/service-category-management/operations.d.ts +8 -0
  86. package/dist/document-models/resource-template/gen/service-category-management/operations.d.ts.map +1 -0
  87. package/dist/document-models/resource-template/gen/service-category-management/operations.js +3 -0
  88. package/dist/document-models/resource-template/gen/service-management/actions.d.ts +24 -0
  89. package/dist/document-models/resource-template/gen/service-management/actions.d.ts.map +1 -0
  90. package/dist/document-models/resource-template/gen/service-management/actions.js +1 -0
  91. package/dist/document-models/resource-template/gen/service-management/creators.d.ts +8 -0
  92. package/dist/document-models/resource-template/gen/service-management/creators.d.ts.map +1 -0
  93. package/dist/document-models/resource-template/gen/service-management/creators.js +7 -0
  94. package/dist/document-models/resource-template/gen/service-management/error.d.ts +52 -0
  95. package/dist/document-models/resource-template/gen/service-management/error.d.ts.map +1 -0
  96. package/dist/document-models/resource-template/gen/service-management/error.js +61 -0
  97. package/dist/document-models/resource-template/gen/service-management/operations.d.ts +11 -0
  98. package/dist/document-models/resource-template/gen/service-management/operations.d.ts.map +1 -0
  99. package/dist/document-models/resource-template/gen/service-management/operations.js +3 -0
  100. package/dist/document-models/resource-template/gen/template-management/actions.d.ts +20 -0
  101. package/dist/document-models/resource-template/gen/template-management/actions.d.ts.map +1 -0
  102. package/dist/document-models/resource-template/gen/template-management/actions.js +1 -0
  103. package/dist/document-models/resource-template/gen/template-management/creators.d.ts +7 -0
  104. package/dist/document-models/resource-template/gen/template-management/creators.d.ts.map +1 -0
  105. package/dist/document-models/resource-template/gen/template-management/creators.js +6 -0
  106. package/dist/document-models/resource-template/gen/template-management/error.d.ts +2 -0
  107. package/dist/document-models/resource-template/gen/template-management/error.d.ts.map +1 -0
  108. package/dist/document-models/resource-template/gen/template-management/error.js +1 -0
  109. package/dist/document-models/resource-template/gen/template-management/operations.d.ts +10 -0
  110. package/dist/document-models/resource-template/gen/template-management/operations.d.ts.map +1 -0
  111. package/dist/document-models/resource-template/gen/template-management/operations.js +3 -0
  112. package/dist/document-models/resource-template/gen/types.d.ts +12 -0
  113. package/dist/document-models/resource-template/gen/types.d.ts.map +1 -0
  114. package/dist/document-models/resource-template/gen/types.js +1 -0
  115. package/dist/document-models/resource-template/gen/utils.d.ts +15 -0
  116. package/dist/document-models/resource-template/gen/utils.d.ts.map +1 -0
  117. package/dist/document-models/resource-template/gen/utils.js +65 -0
  118. package/dist/document-models/resource-template/hooks.d.ts +11 -0
  119. package/dist/document-models/resource-template/hooks.d.ts.map +1 -0
  120. package/dist/document-models/resource-template/hooks.js +26 -0
  121. package/dist/document-models/resource-template/index.d.ts +10 -0
  122. package/dist/document-models/resource-template/index.d.ts.map +1 -0
  123. package/dist/document-models/resource-template/index.js +9 -0
  124. package/dist/document-models/resource-template/module.d.ts +5 -0
  125. package/dist/document-models/resource-template/module.d.ts.map +1 -0
  126. package/dist/document-models/resource-template/module.js +10 -0
  127. package/dist/document-models/resource-template/src/index.d.ts +2 -0
  128. package/dist/document-models/resource-template/src/index.d.ts.map +1 -0
  129. package/dist/document-models/resource-template/src/index.js +1 -0
  130. package/dist/document-models/resource-template/src/reducers/audience-management.d.ts +3 -0
  131. package/dist/document-models/resource-template/src/reducers/audience-management.d.ts.map +1 -0
  132. package/dist/document-models/resource-template/src/reducers/audience-management.js +17 -0
  133. package/dist/document-models/resource-template/src/reducers/facet-targeting.d.ts +3 -0
  134. package/dist/document-models/resource-template/src/reducers/facet-targeting.d.ts.map +1 -0
  135. package/dist/document-models/resource-template/src/reducers/facet-targeting.js +46 -0
  136. package/dist/document-models/resource-template/src/reducers/option-group-management.d.ts +3 -0
  137. package/dist/document-models/resource-template/src/reducers/option-group-management.d.ts.map +1 -0
  138. package/dist/document-models/resource-template/src/reducers/option-group-management.js +42 -0
  139. package/dist/document-models/resource-template/src/reducers/service-category-management.d.ts +3 -0
  140. package/dist/document-models/resource-template/src/reducers/service-category-management.d.ts.map +1 -0
  141. package/dist/document-models/resource-template/src/reducers/service-category-management.js +10 -0
  142. package/dist/document-models/resource-template/src/reducers/service-management.d.ts +3 -0
  143. package/dist/document-models/resource-template/src/reducers/service-management.d.ts.map +1 -0
  144. package/dist/document-models/resource-template/src/reducers/service-management.js +68 -0
  145. package/dist/document-models/resource-template/src/reducers/template-management.d.ts +3 -0
  146. package/dist/document-models/resource-template/src/reducers/template-management.d.ts.map +1 -0
  147. package/dist/document-models/resource-template/src/reducers/template-management.js +32 -0
  148. package/dist/document-models/resource-template/src/tests/audience-management.test.d.ts +6 -0
  149. package/dist/document-models/resource-template/src/tests/audience-management.test.d.ts.map +1 -0
  150. package/dist/document-models/resource-template/src/tests/audience-management.test.js +29 -0
  151. package/dist/document-models/resource-template/src/tests/document-model.test.d.ts +10 -0
  152. package/dist/document-models/resource-template/src/tests/document-model.test.d.ts.map +1 -0
  153. package/dist/document-models/resource-template/src/tests/document-model.test.js +104 -0
  154. package/dist/document-models/resource-template/src/tests/facet-targeting.test.d.ts +6 -0
  155. package/dist/document-models/resource-template/src/tests/facet-targeting.test.d.ts.map +1 -0
  156. package/dist/document-models/resource-template/src/tests/facet-targeting.test.js +49 -0
  157. package/dist/document-models/resource-template/src/tests/option-group-management.test.d.ts +6 -0
  158. package/dist/document-models/resource-template/src/tests/option-group-management.test.d.ts.map +1 -0
  159. package/dist/document-models/resource-template/src/tests/option-group-management.test.js +39 -0
  160. package/dist/document-models/resource-template/src/tests/service-category-management.test.d.ts +6 -0
  161. package/dist/document-models/resource-template/src/tests/service-category-management.test.d.ts.map +1 -0
  162. package/dist/document-models/resource-template/src/tests/service-category-management.test.js +29 -0
  163. package/dist/document-models/resource-template/src/tests/service-management.test.d.ts +6 -0
  164. package/dist/document-models/resource-template/src/tests/service-management.test.d.ts.map +1 -0
  165. package/dist/document-models/resource-template/src/tests/service-management.test.js +59 -0
  166. package/dist/document-models/resource-template/src/tests/template-management.test.d.ts +6 -0
  167. package/dist/document-models/resource-template/src/tests/template-management.test.d.ts.map +1 -0
  168. package/dist/document-models/resource-template/src/tests/template-management.test.js +49 -0
  169. package/dist/document-models/resource-template/src/utils.d.ts +2 -0
  170. package/dist/document-models/resource-template/src/utils.d.ts.map +1 -0
  171. package/dist/document-models/resource-template/src/utils.js +1 -0
  172. package/dist/document-models/resource-template/utils.d.ts +14 -0
  173. package/dist/document-models/resource-template/utils.d.ts.map +1 -0
  174. package/dist/document-models/resource-template/utils.js +7 -0
  175. package/dist/document-models/service-offering/actions.d.ts +2 -0
  176. package/dist/document-models/service-offering/actions.d.ts.map +1 -1
  177. package/dist/document-models/service-offering/gen/document-model.d.ts.map +1 -1
  178. package/dist/document-models/service-offering/gen/document-model.js +47 -2
  179. package/dist/document-models/service-offering/gen/document-schema.d.ts +35 -16
  180. package/dist/document-models/service-offering/gen/document-schema.d.ts.map +1 -1
  181. package/dist/document-models/service-offering/gen/offering-management/actions.d.ts +10 -2
  182. package/dist/document-models/service-offering/gen/offering-management/actions.d.ts.map +1 -1
  183. package/dist/document-models/service-offering/gen/offering-management/creators.d.ts +4 -2
  184. package/dist/document-models/service-offering/gen/offering-management/creators.d.ts.map +1 -1
  185. package/dist/document-models/service-offering/gen/offering-management/creators.js +3 -1
  186. package/dist/document-models/service-offering/gen/offering-management/error.d.ts +20 -1
  187. package/dist/document-models/service-offering/gen/offering-management/error.d.ts.map +1 -1
  188. package/dist/document-models/service-offering/gen/offering-management/error.js +25 -0
  189. package/dist/document-models/service-offering/gen/offering-management/operations.d.ts +3 -1
  190. package/dist/document-models/service-offering/gen/offering-management/operations.d.ts.map +1 -1
  191. package/dist/document-models/service-offering/gen/ph-factories.d.ts.map +1 -1
  192. package/dist/document-models/service-offering/gen/ph-factories.js +1 -0
  193. package/dist/document-models/service-offering/gen/reducer.d.ts +1 -1
  194. package/dist/document-models/service-offering/gen/reducer.d.ts.map +1 -1
  195. package/dist/document-models/service-offering/gen/reducer.js +9 -1
  196. package/dist/document-models/service-offering/gen/schema/types.d.ts +21 -11
  197. package/dist/document-models/service-offering/gen/schema/types.d.ts.map +1 -1
  198. package/dist/document-models/service-offering/gen/schema/zod.d.ts +3 -1
  199. package/dist/document-models/service-offering/gen/schema/zod.d.ts.map +1 -1
  200. package/dist/document-models/service-offering/gen/schema/zod.js +14 -0
  201. package/dist/document-models/service-offering/gen/utils.d.ts.map +1 -1
  202. package/dist/document-models/service-offering/gen/utils.js +1 -0
  203. package/dist/document-models/service-offering/src/reducers/offering-management.d.ts.map +1 -1
  204. package/dist/document-models/service-offering/src/reducers/offering-management.js +22 -4
  205. package/dist/document-models/service-offering/src/reducers/option-group-management.d.ts.map +1 -1
  206. package/dist/document-models/service-offering/src/reducers/option-group-management.js +8 -11
  207. package/dist/document-models/service-offering/src/reducers/service-management.d.ts.map +1 -1
  208. package/dist/document-models/service-offering/src/reducers/service-management.js +12 -15
  209. package/dist/document-models/service-offering/src/reducers/tier-management.d.ts.map +1 -1
  210. package/dist/document-models/service-offering/src/reducers/tier-management.js +19 -21
  211. package/dist/document-models/service-offering/src/tests/offering-management.test.js +1 -81
  212. package/dist/document-models/service-offering/src/tests/tier-management.test.d.ts +4 -0
  213. package/dist/document-models/service-offering/src/tests/tier-management.test.d.ts.map +1 -1
  214. package/dist/document-models/service-offering/src/tests/tier-management.test.js +109 -1
  215. package/dist/editors/builder-team-admin/components/DriveExplorer.d.ts.map +1 -1
  216. package/dist/editors/builder-team-admin/components/DriveExplorer.js +4 -0
  217. package/dist/editors/builder-team-admin/components/FolderTree.d.ts +1 -1
  218. package/dist/editors/builder-team-admin/components/FolderTree.d.ts.map +1 -1
  219. package/dist/editors/builder-team-admin/components/FolderTree.js +134 -9
  220. package/dist/editors/builder-team-admin/components/ResourcesServices.d.ts +8 -0
  221. package/dist/editors/builder-team-admin/components/ResourcesServices.d.ts.map +1 -0
  222. package/dist/editors/builder-team-admin/components/ResourcesServices.js +76 -0
  223. package/dist/editors/builder-team-admin/hooks/useResourcesServicesAutoPlacement.d.ts +27 -0
  224. package/dist/editors/builder-team-admin/hooks/useResourcesServicesAutoPlacement.d.ts.map +1 -0
  225. package/dist/editors/builder-team-admin/hooks/useResourcesServicesAutoPlacement.js +123 -0
  226. package/dist/editors/index.d.ts +1 -0
  227. package/dist/editors/index.d.ts.map +1 -1
  228. package/dist/editors/index.js +1 -0
  229. package/dist/editors/resource-template-editor/components/FacetTargeting.d.ts +9 -0
  230. package/dist/editors/resource-template-editor/components/FacetTargeting.d.ts.map +1 -0
  231. package/dist/editors/resource-template-editor/components/FacetTargeting.js +451 -0
  232. package/dist/editors/resource-template-editor/components/TemplateInfo.d.ts +9 -0
  233. package/dist/editors/resource-template-editor/components/TemplateInfo.d.ts.map +1 -0
  234. package/dist/editors/resource-template-editor/components/TemplateInfo.js +988 -0
  235. package/dist/editors/resource-template-editor/editor.d.ts +2 -0
  236. package/dist/editors/resource-template-editor/editor.d.ts.map +1 -0
  237. package/dist/editors/resource-template-editor/editor.js +149 -0
  238. package/dist/editors/resource-template-editor/module.d.ts +4 -0
  239. package/dist/editors/resource-template-editor/module.d.ts.map +1 -0
  240. package/dist/editors/resource-template-editor/module.js +10 -0
  241. package/dist/editors/service-offering-editor/components/ResourceTemplateSelector.d.ts +9 -0
  242. package/dist/editors/service-offering-editor/components/ResourceTemplateSelector.d.ts.map +1 -0
  243. package/dist/editors/service-offering-editor/components/ResourceTemplateSelector.js +1050 -0
  244. package/dist/editors/service-offering-editor/components/ServicesList.d.ts.map +1 -1
  245. package/dist/editors/service-offering-editor/components/ServicesList.js +1 -1
  246. package/dist/editors/service-offering-editor/components/TabNavigation.d.ts.map +1 -1
  247. package/dist/editors/service-offering-editor/components/TabNavigation.js +17 -3
  248. package/dist/editors/service-offering-editor/components/TheMatrix.d.ts.map +1 -1
  249. package/dist/editors/service-offering-editor/components/TheMatrix.js +284 -25
  250. package/dist/editors/service-offering-editor/editor.d.ts.map +1 -1
  251. package/dist/editors/service-offering-editor/editor.js +2 -2
  252. package/dist/index.d.ts +1 -1
  253. package/dist/index.d.ts.map +1 -1
  254. package/dist/style.css +25 -0
  255. package/package.json +1 -1
@@ -0,0 +1,76 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { FileItem } from "@powerhousedao/design-system/connect";
3
+ import { FolderItem } from "@powerhousedao/design-system/connect";
4
+ import { isFolderNodeKind, isFileNodeKind, setSelectedNode, useSelectedNodePath, useNodesInSelectedDriveOrFolder, useUserPermissions, showCreateDocumentModal, } from "@powerhousedao/reactor-browser";
5
+ import { useEffect, useRef, useState } from "react";
6
+ import { Plus, FileText, Package } from "lucide-react";
7
+ import { useResourcesServicesAutoPlacement } from "../hooks/useResourcesServicesAutoPlacement.js";
8
+ const RESOURCE_TEMPLATES_FOLDER_NAME = "Resource Templates";
9
+ const SERVICE_OFFERINGS_FOLDER_NAME = "Service Offerings";
10
+ /**
11
+ * Component for the Resources & Services custom view.
12
+ * Shows two auto-generated folders: Resource Templates and Service Offerings.
13
+ * Users can create powerhouse/resource-template docs in Resource Templates
14
+ * and powerhouse/service-offering docs in Service Offerings.
15
+ */
16
+ export function ResourcesServices() {
17
+ const hasNavigatedToFolder = useRef(false);
18
+ const selectedNodePath = useSelectedNodePath();
19
+ const nodesInCurrentFolder = useNodesInSelectedDriveOrFolder();
20
+ const { isAllowedToCreateDocuments } = useUserPermissions();
21
+ // Use the shared auto-placement hook - this handles:
22
+ // 1. Creating the "Resource Templates" folder if it doesn't exist
23
+ // 2. Creating the "Service Offerings" folder if it doesn't exist
24
+ const { resourceTemplatesFolder, serviceOfferingsFolder, resourceTemplateDocuments, serviceOfferingDocuments, } = useResourcesServicesAutoPlacement();
25
+ // Determine which folder we're currently in (if any)
26
+ const currentFolderId = selectedNodePath.at(-1)?.id;
27
+ const isInResourceTemplates = currentFolderId === resourceTemplatesFolder?.id;
28
+ const isInServiceOfferings = currentFolderId === serviceOfferingsFolder?.id;
29
+ const isInRootView = !isInResourceTemplates && !isInServiceOfferings;
30
+ // Navigate to root view initially (deselect any node)
31
+ useEffect(() => {
32
+ if (resourceTemplatesFolder &&
33
+ serviceOfferingsFolder &&
34
+ !hasNavigatedToFolder.current) {
35
+ hasNavigatedToFolder.current = true;
36
+ // Don't select any node so we show the root view with both folders
37
+ setSelectedNode("");
38
+ }
39
+ }, [resourceTemplatesFolder, serviceOfferingsFolder]);
40
+ // Show loading state while folders are being created
41
+ if (!resourceTemplatesFolder || !serviceOfferingsFolder) {
42
+ return (_jsx("div", { className: "flex items-center justify-center h-64", children: _jsx("div", { className: "text-gray-500", children: "Setting up Resources & Services folders..." }) }));
43
+ }
44
+ // Handler for creating new documents
45
+ const handleCreateDocument = (documentType, folderId) => {
46
+ setSelectedNode(folderId);
47
+ // Small delay to ensure the folder is selected before showing modal
48
+ setTimeout(() => {
49
+ showCreateDocumentModal(documentType);
50
+ }, 100);
51
+ };
52
+ // Get folder and file nodes from current selection
53
+ const folderNodes = nodesInCurrentFolder.filter((n) => isFolderNodeKind(n));
54
+ const fileNodes = nodesInCurrentFolder.filter((n) => isFileNodeKind(n));
55
+ // Render the root view with both folder cards
56
+ if (isInRootView) {
57
+ return (_jsxs("div", { children: [_jsx("div", { className: "text-2xl font-bold text-center mb-6", children: "Resources & Services" }), _jsxs("div", { className: "space-y-6 px-6", children: [_jsx("p", { className: "text-gray-600 text-center mb-8", children: "Manage your resource templates and service offerings. Click on a folder to view or create documents." }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "border border-gray-200 rounded-lg p-6 hover:border-blue-400 hover:shadow-md transition-all cursor-pointer", onClick: () => setSelectedNode(resourceTemplatesFolder.id), children: [_jsxs("div", { className: "flex items-center gap-3 mb-4", children: [_jsx("div", { className: "p-2 bg-blue-50 rounded-lg", children: _jsx(FileText, { className: "w-6 h-6 text-blue-600" }) }), _jsx("h3", { className: "text-lg font-semibold", children: RESOURCE_TEMPLATES_FOLDER_NAME })] }), _jsx("p", { className: "text-gray-600 text-sm mb-4", children: "Define resource templates that can be used across service offerings." }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("span", { className: "text-sm text-gray-500", children: [resourceTemplateDocuments.length, " template", resourceTemplateDocuments.length !== 1 ? "s" : ""] }), isAllowedToCreateDocuments && (_jsxs("button", { type: "button", className: "flex items-center gap-1 text-sm text-blue-600 hover:text-blue-800", onClick: (e) => {
58
+ e.stopPropagation();
59
+ handleCreateDocument("powerhouse/resource-template", resourceTemplatesFolder.id);
60
+ }, children: [_jsx(Plus, { size: 14 }), "Add new"] }))] })] }), _jsxs("div", { className: "border border-gray-200 rounded-lg p-6 hover:border-indigo-400 hover:shadow-md transition-all cursor-pointer", onClick: () => setSelectedNode(serviceOfferingsFolder.id), children: [_jsxs("div", { className: "flex items-center gap-3 mb-4", children: [_jsx("div", { className: "p-2 bg-indigo-50 rounded-lg", children: _jsx(Package, { className: "w-6 h-6 text-indigo-600" }) }), _jsx("h3", { className: "text-lg font-semibold", children: SERVICE_OFFERINGS_FOLDER_NAME })] }), _jsx("p", { className: "text-gray-600 text-sm mb-4", children: "Create and manage service offerings with pricing tiers and options." }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("span", { className: "text-sm text-gray-500", children: [serviceOfferingDocuments.length, " offering", serviceOfferingDocuments.length !== 1 ? "s" : ""] }), isAllowedToCreateDocuments && (_jsxs("button", { type: "button", className: "flex items-center gap-1 text-sm text-indigo-600 hover:text-indigo-800", onClick: (e) => {
61
+ e.stopPropagation();
62
+ handleCreateDocument("powerhouse/service-offering", serviceOfferingsFolder.id);
63
+ }, children: [_jsx(Plus, { size: 14 }), "Add new"] }))] })] })] })] })] }));
64
+ }
65
+ // Render folder contents view (Resource Templates or Service Offerings)
66
+ const currentFolderName = isInResourceTemplates
67
+ ? RESOURCE_TEMPLATES_FOLDER_NAME
68
+ : SERVICE_OFFERINGS_FOLDER_NAME;
69
+ const documentType = isInResourceTemplates
70
+ ? "powerhouse/resource-template"
71
+ : "powerhouse/service-offering";
72
+ const hasFolders = folderNodes.length > 0;
73
+ const hasFiles = fileNodes.length > 0;
74
+ const isEmpty = !hasFolders && !hasFiles;
75
+ return (_jsxs("div", { children: [_jsx("div", { className: "text-2xl font-bold text-center mb-4", children: currentFolderName }), _jsxs("div", { className: "space-y-6 px-6", children: [_jsxs("div", { className: "flex h-9 flex-row items-center gap-2 text-gray-500 border-b border-gray-200 pb-3", children: [_jsx("div", { className: "transition-colors hover:text-gray-800 cursor-pointer", onClick: () => setSelectedNode(""), role: "button", children: "Resources & Services" }), _jsx("span", { children: "/" }), _jsx("div", { className: "text-gray-800", children: currentFolderName }), _jsx("span", { children: "/" }), isAllowedToCreateDocuments && (_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: () => showCreateDocumentModal(documentType), children: [_jsx(Plus, { size: 14 }), "Add new"] }))] }), 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: isInResourceTemplates ? (_jsx(FileText, { className: "w-16 h-16 mx-auto" })) : (_jsx(Package, { className: "w-16 h-16 mx-auto" })) }), _jsxs("p", { className: "text-gray-500 text-sm", children: ["No ", currentFolderName.toLowerCase(), " yet.", isAllowedToCreateDocuments && (_jsxs(_Fragment, { children: [" ", "Click \"Add new\" to create your first", " ", isInResourceTemplates ? "resource template" : "service offering", "."] }))] })] }))] })] }));
76
+ }
@@ -0,0 +1,27 @@
1
+ import type { FolderNode, FileNode } from "document-drive";
2
+ interface UseResourcesServicesAutoPlacementResult {
3
+ /** The Resource Templates folder node, or null if it doesn't exist yet */
4
+ resourceTemplatesFolder: FolderNode | null;
5
+ /** The Service Offerings folder node, or null if it doesn't exist yet */
6
+ serviceOfferingsFolder: FolderNode | null;
7
+ /** Set of all node IDs within the Resource Templates folder tree */
8
+ resourceTemplatesNodeIds: Set<string>;
9
+ /** Set of all node IDs within the Service Offerings folder tree */
10
+ serviceOfferingsNodeIds: Set<string>;
11
+ /** All resource template documents within the Resource Templates folder */
12
+ resourceTemplateDocuments: FileNode[];
13
+ /** All service offering documents within the Service Offerings folder */
14
+ serviceOfferingDocuments: FileNode[];
15
+ }
16
+ /**
17
+ * Hook that handles automatic creation of "Resource Templates" and "Service Offerings" folders
18
+ * for the Resources & Services section.
19
+ *
20
+ * This hook:
21
+ * 1. Creates the "Resource Templates" folder if it doesn't exist
22
+ * 2. Creates the "Service Offerings" folder if it doesn't exist
23
+ * 3. Provides access to documents within each folder
24
+ */
25
+ export declare function useResourcesServicesAutoPlacement(): UseResourcesServicesAutoPlacementResult;
26
+ export {};
27
+ //# sourceMappingURL=useResourcesServicesAutoPlacement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResourcesServicesAutoPlacement.d.ts","sourceRoot":"","sources":["../../../../editors/builder-team-admin/hooks/useResourcesServicesAutoPlacement.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAQ,MAAM,gBAAgB,CAAC;AAKjE,UAAU,uCAAuC;IAC/C,0EAA0E;IAC1E,uBAAuB,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3C,yEAAyE;IACzE,sBAAsB,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1C,oEAAoE;IACpE,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,mEAAmE;IACnE,uBAAuB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,2EAA2E;IAC3E,yBAAyB,EAAE,QAAQ,EAAE,CAAC;IACtC,yEAAyE;IACzE,wBAAwB,EAAE,QAAQ,EAAE,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,IAAI,uCAAuC,CAiJ3F"}
@@ -0,0 +1,123 @@
1
+ import { useEffect, useMemo, useRef } from "react";
2
+ import { isFolderNodeKind, isFileNodeKind, addFolder, useSelectedDrive, useDocumentsInSelectedDrive, } from "@powerhousedao/reactor-browser";
3
+ const RESOURCE_TEMPLATES_FOLDER_NAME = "Resource Templates";
4
+ const SERVICE_OFFERINGS_FOLDER_NAME = "Service Offerings";
5
+ /**
6
+ * Hook that handles automatic creation of "Resource Templates" and "Service Offerings" folders
7
+ * for the Resources & Services section.
8
+ *
9
+ * This hook:
10
+ * 1. Creates the "Resource Templates" folder if it doesn't exist
11
+ * 2. Creates the "Service Offerings" folder if it doesn't exist
12
+ * 3. Provides access to documents within each folder
13
+ */
14
+ export function useResourcesServicesAutoPlacement() {
15
+ const [driveDocument] = useSelectedDrive();
16
+ const documentsInDrive = useDocumentsInSelectedDrive();
17
+ // Track folder creation to prevent duplicates
18
+ const hasCreatedResourceTemplatesFolder = useRef(false);
19
+ const hasCreatedServiceOfferingsFolder = useRef(false);
20
+ // Find the "Resource Templates" folder in the drive
21
+ const resourceTemplatesFolder = useMemo(() => {
22
+ if (!driveDocument)
23
+ return null;
24
+ const nodes = driveDocument.state.global.nodes;
25
+ return (nodes.find((node) => isFolderNodeKind(node) &&
26
+ node.name === RESOURCE_TEMPLATES_FOLDER_NAME) ?? null);
27
+ }, [driveDocument]);
28
+ // Find the "Service Offerings" folder in the drive
29
+ const serviceOfferingsFolder = useMemo(() => {
30
+ if (!driveDocument)
31
+ return null;
32
+ const nodes = driveDocument.state.global.nodes;
33
+ return (nodes.find((node) => isFolderNodeKind(node) && node.name === SERVICE_OFFERINGS_FOLDER_NAME) ?? null);
34
+ }, [driveDocument]);
35
+ // Build a set of all node IDs within the Resource Templates folder tree
36
+ const resourceTemplatesNodeIds = useMemo(() => {
37
+ const nodeIds = new Set();
38
+ if (!resourceTemplatesFolder || !driveDocument)
39
+ return nodeIds;
40
+ const allNodes = driveDocument.state.global.nodes;
41
+ const collectNodeIds = (parentId) => {
42
+ nodeIds.add(parentId);
43
+ for (const node of allNodes) {
44
+ if (isFolderNodeKind(node) && node.parentFolder === parentId) {
45
+ collectNodeIds(node.id);
46
+ }
47
+ else if (isFileNodeKind(node) &&
48
+ node.parentFolder === parentId &&
49
+ node.documentType === "powerhouse/resource-template") {
50
+ nodeIds.add(node.id);
51
+ }
52
+ }
53
+ };
54
+ collectNodeIds(resourceTemplatesFolder.id);
55
+ return nodeIds;
56
+ }, [resourceTemplatesFolder, driveDocument]);
57
+ // Build a set of all node IDs within the Service Offerings folder tree
58
+ const serviceOfferingsNodeIds = useMemo(() => {
59
+ const nodeIds = new Set();
60
+ if (!serviceOfferingsFolder || !driveDocument)
61
+ return nodeIds;
62
+ const allNodes = driveDocument.state.global.nodes;
63
+ const collectNodeIds = (parentId) => {
64
+ nodeIds.add(parentId);
65
+ for (const node of allNodes) {
66
+ if (isFolderNodeKind(node) && node.parentFolder === parentId) {
67
+ collectNodeIds(node.id);
68
+ }
69
+ else if (isFileNodeKind(node) &&
70
+ node.parentFolder === parentId &&
71
+ node.documentType === "powerhouse/service-offering") {
72
+ nodeIds.add(node.id);
73
+ }
74
+ }
75
+ };
76
+ collectNodeIds(serviceOfferingsFolder.id);
77
+ return nodeIds;
78
+ }, [serviceOfferingsFolder, driveDocument]);
79
+ // Get resource template documents within the Resource Templates folder
80
+ const resourceTemplateDocuments = useMemo(() => {
81
+ if (!driveDocument)
82
+ return [];
83
+ return driveDocument.state.global.nodes.filter((node) => isFileNodeKind(node) &&
84
+ node.documentType === "powerhouse/resource-template" &&
85
+ resourceTemplatesNodeIds.has(node.id));
86
+ }, [driveDocument, resourceTemplatesNodeIds]);
87
+ // Get service offering documents within the Service Offerings folder
88
+ const serviceOfferingDocuments = useMemo(() => {
89
+ if (!driveDocument)
90
+ return [];
91
+ return driveDocument.state.global.nodes.filter((node) => isFileNodeKind(node) &&
92
+ node.documentType === "powerhouse/service-offering" &&
93
+ serviceOfferingsNodeIds.has(node.id));
94
+ }, [driveDocument, serviceOfferingsNodeIds]);
95
+ // Create Resource Templates folder if it doesn't exist
96
+ useEffect(() => {
97
+ if (!driveDocument ||
98
+ resourceTemplatesFolder ||
99
+ hasCreatedResourceTemplatesFolder.current)
100
+ return;
101
+ hasCreatedResourceTemplatesFolder.current = true;
102
+ const driveId = driveDocument.header.id;
103
+ void addFolder(driveId, RESOURCE_TEMPLATES_FOLDER_NAME);
104
+ }, [driveDocument, resourceTemplatesFolder]);
105
+ // Create Service Offerings folder if it doesn't exist
106
+ useEffect(() => {
107
+ if (!driveDocument ||
108
+ serviceOfferingsFolder ||
109
+ hasCreatedServiceOfferingsFolder.current)
110
+ return;
111
+ hasCreatedServiceOfferingsFolder.current = true;
112
+ const driveId = driveDocument.header.id;
113
+ void addFolder(driveId, SERVICE_OFFERINGS_FOLDER_NAME);
114
+ }, [driveDocument, serviceOfferingsFolder]);
115
+ return {
116
+ resourceTemplatesFolder,
117
+ serviceOfferingsFolder,
118
+ resourceTemplatesNodeIds,
119
+ serviceOfferingsNodeIds,
120
+ resourceTemplateDocuments,
121
+ serviceOfferingDocuments,
122
+ };
123
+ }
@@ -8,4 +8,5 @@ export { SnapshotReportEditor } from "./snapshot-report-editor/module.js";
8
8
  export { ExpenseReport } from "./expense-report/module.js";
9
9
  export { ServiceSubscriptionsEditor } from "./service-subscriptions-editor/module.js";
10
10
  export { ServiceOfferingEditor } from "./service-offering-editor/module.js";
11
+ export { ResourceTemplateEditor } from "./resource-template-editor/module.js";
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../editors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../editors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC"}
@@ -8,3 +8,4 @@ export { SnapshotReportEditor } from "./snapshot-report-editor/module.js";
8
8
  export { ExpenseReport } from "./expense-report/module.js";
9
9
  export { ServiceSubscriptionsEditor } from "./service-subscriptions-editor/module.js";
10
10
  export { ServiceOfferingEditor } from "./service-offering-editor/module.js";
11
+ export { ResourceTemplateEditor } from "./resource-template-editor/module.js";
@@ -0,0 +1,9 @@
1
+ import type { DocumentDispatch } from "@powerhousedao/reactor-browser";
2
+ import type { ResourceTemplateDocument, ResourceTemplateAction } from "../../../document-models/resource-template/gen/types.js";
3
+ interface FacetTargetingProps {
4
+ document: ResourceTemplateDocument;
5
+ dispatch: DocumentDispatch<ResourceTemplateAction>;
6
+ }
7
+ export declare function FacetTargeting({ document, dispatch }: FacetTargetingProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=FacetTargeting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacetTargeting.d.ts","sourceRoot":"","sources":["../../../../editors/resource-template-editor/components/FacetTargeting.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EACV,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,yDAAyD,CAAC;AAQjE,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,wBAAwB,CAAC;IACnC,QAAQ,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;CACpD;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAyTzE"}