@powerhousedao/contributor-billing 0.1.40 → 0.1.42

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 (307) hide show
  1. package/dist/document-models/document-models.d.ts.map +1 -1
  2. package/dist/document-models/document-models.js +2 -0
  3. package/dist/document-models/index.d.ts +1 -0
  4. package/dist/document-models/index.d.ts.map +1 -1
  5. package/dist/document-models/index.js +1 -0
  6. package/dist/document-models/resource-template/actions.d.ts +32 -0
  7. package/dist/document-models/resource-template/actions.d.ts.map +1 -0
  8. package/dist/document-models/resource-template/actions.js +12 -0
  9. package/dist/document-models/resource-template/gen/actions.d.ts +14 -0
  10. package/dist/document-models/resource-template/gen/actions.d.ts.map +1 -0
  11. package/dist/document-models/resource-template/gen/actions.js +6 -0
  12. package/dist/document-models/resource-template/gen/audience-management/actions.d.ts +12 -0
  13. package/dist/document-models/resource-template/gen/audience-management/actions.d.ts.map +1 -0
  14. package/dist/document-models/resource-template/gen/audience-management/actions.js +1 -0
  15. package/dist/document-models/resource-template/gen/audience-management/creators.d.ts +5 -0
  16. package/dist/document-models/resource-template/gen/audience-management/creators.d.ts.map +1 -0
  17. package/dist/document-models/resource-template/gen/audience-management/creators.js +4 -0
  18. package/dist/document-models/resource-template/gen/audience-management/error.d.ts +21 -0
  19. package/dist/document-models/resource-template/gen/audience-management/error.d.ts.map +1 -0
  20. package/dist/document-models/resource-template/gen/audience-management/error.js +20 -0
  21. package/dist/document-models/resource-template/gen/audience-management/operations.d.ts +8 -0
  22. package/dist/document-models/resource-template/gen/audience-management/operations.d.ts.map +1 -0
  23. package/dist/document-models/resource-template/gen/audience-management/operations.js +3 -0
  24. package/dist/document-models/resource-template/gen/creators.d.ts +13 -0
  25. package/dist/document-models/resource-template/gen/creators.d.ts.map +1 -0
  26. package/dist/document-models/resource-template/gen/creators.js +12 -0
  27. package/dist/document-models/resource-template/gen/document-model.d.ts +3 -0
  28. package/dist/document-models/resource-template/gen/document-model.d.ts.map +1 -0
  29. package/dist/document-models/resource-template/gen/document-model.js +410 -0
  30. package/dist/document-models/resource-template/gen/document-schema.d.ts +408 -0
  31. package/dist/document-models/resource-template/gen/document-schema.d.ts.map +1 -0
  32. package/dist/document-models/resource-template/gen/document-schema.js +33 -0
  33. package/dist/document-models/resource-template/gen/document-type.d.ts +2 -0
  34. package/dist/document-models/resource-template/gen/document-type.d.ts.map +1 -0
  35. package/dist/document-models/resource-template/gen/document-type.js +1 -0
  36. package/dist/document-models/resource-template/gen/facet-targeting/actions.d.ts +20 -0
  37. package/dist/document-models/resource-template/gen/facet-targeting/actions.d.ts.map +1 -0
  38. package/dist/document-models/resource-template/gen/facet-targeting/actions.js +1 -0
  39. package/dist/document-models/resource-template/gen/facet-targeting/creators.d.ts +7 -0
  40. package/dist/document-models/resource-template/gen/facet-targeting/creators.d.ts.map +1 -0
  41. package/dist/document-models/resource-template/gen/facet-targeting/creators.js +6 -0
  42. package/dist/document-models/resource-template/gen/facet-targeting/error.d.ts +28 -0
  43. package/dist/document-models/resource-template/gen/facet-targeting/error.d.ts.map +1 -0
  44. package/dist/document-models/resource-template/gen/facet-targeting/error.js +29 -0
  45. package/dist/document-models/resource-template/gen/facet-targeting/operations.d.ts +10 -0
  46. package/dist/document-models/resource-template/gen/facet-targeting/operations.d.ts.map +1 -0
  47. package/dist/document-models/resource-template/gen/facet-targeting/operations.js +3 -0
  48. package/dist/document-models/resource-template/gen/index.d.ts +17 -0
  49. package/dist/document-models/resource-template/gen/index.d.ts.map +1 -0
  50. package/dist/document-models/resource-template/gen/index.js +16 -0
  51. package/dist/document-models/resource-template/gen/option-group-management/actions.d.ts +16 -0
  52. package/dist/document-models/resource-template/gen/option-group-management/actions.d.ts.map +1 -0
  53. package/dist/document-models/resource-template/gen/option-group-management/actions.js +1 -0
  54. package/dist/document-models/resource-template/gen/option-group-management/creators.d.ts +6 -0
  55. package/dist/document-models/resource-template/gen/option-group-management/creators.d.ts.map +1 -0
  56. package/dist/document-models/resource-template/gen/option-group-management/creators.js +5 -0
  57. package/dist/document-models/resource-template/gen/option-group-management/error.d.ts +28 -0
  58. package/dist/document-models/resource-template/gen/option-group-management/error.d.ts.map +1 -0
  59. package/dist/document-models/resource-template/gen/option-group-management/error.js +29 -0
  60. package/dist/document-models/resource-template/gen/option-group-management/operations.d.ts +9 -0
  61. package/dist/document-models/resource-template/gen/option-group-management/operations.d.ts.map +1 -0
  62. package/dist/document-models/resource-template/gen/option-group-management/operations.js +3 -0
  63. package/dist/document-models/resource-template/gen/ph-factories.d.ts +23 -0
  64. package/dist/document-models/resource-template/gen/ph-factories.d.ts.map +1 -0
  65. package/dist/document-models/resource-template/gen/ph-factories.js +61 -0
  66. package/dist/document-models/resource-template/gen/reducer.d.ts +3 -0
  67. package/dist/document-models/resource-template/gen/reducer.d.ts.map +1 -0
  68. package/dist/document-models/resource-template/gen/reducer.js +98 -0
  69. package/dist/document-models/resource-template/gen/schema/index.d.ts +3 -0
  70. package/dist/document-models/resource-template/gen/schema/index.d.ts.map +1 -0
  71. package/dist/document-models/resource-template/gen/schema/index.js +2 -0
  72. package/dist/document-models/resource-template/gen/schema/types.d.ts +305 -0
  73. package/dist/document-models/resource-template/gen/schema/types.d.ts.map +1 -0
  74. package/dist/document-models/resource-template/gen/schema/types.js +1 -0
  75. package/dist/document-models/resource-template/gen/schema/zod.d.ts +37 -0
  76. package/dist/document-models/resource-template/gen/schema/zod.d.ts.map +1 -0
  77. package/dist/document-models/resource-template/gen/schema/zod.js +236 -0
  78. package/dist/document-models/resource-template/gen/service-category-management/actions.d.ts +12 -0
  79. package/dist/document-models/resource-template/gen/service-category-management/actions.d.ts.map +1 -0
  80. package/dist/document-models/resource-template/gen/service-category-management/actions.js +1 -0
  81. package/dist/document-models/resource-template/gen/service-category-management/creators.d.ts +5 -0
  82. package/dist/document-models/resource-template/gen/service-category-management/creators.d.ts.map +1 -0
  83. package/dist/document-models/resource-template/gen/service-category-management/creators.js +4 -0
  84. package/dist/document-models/resource-template/gen/service-category-management/error.d.ts +2 -0
  85. package/dist/document-models/resource-template/gen/service-category-management/error.d.ts.map +1 -0
  86. package/dist/document-models/resource-template/gen/service-category-management/error.js +1 -0
  87. package/dist/document-models/resource-template/gen/service-category-management/operations.d.ts +8 -0
  88. package/dist/document-models/resource-template/gen/service-category-management/operations.d.ts.map +1 -0
  89. package/dist/document-models/resource-template/gen/service-category-management/operations.js +3 -0
  90. package/dist/document-models/resource-template/gen/service-management/actions.d.ts +24 -0
  91. package/dist/document-models/resource-template/gen/service-management/actions.d.ts.map +1 -0
  92. package/dist/document-models/resource-template/gen/service-management/actions.js +1 -0
  93. package/dist/document-models/resource-template/gen/service-management/creators.d.ts +8 -0
  94. package/dist/document-models/resource-template/gen/service-management/creators.d.ts.map +1 -0
  95. package/dist/document-models/resource-template/gen/service-management/creators.js +7 -0
  96. package/dist/document-models/resource-template/gen/service-management/error.d.ts +52 -0
  97. package/dist/document-models/resource-template/gen/service-management/error.d.ts.map +1 -0
  98. package/dist/document-models/resource-template/gen/service-management/error.js +61 -0
  99. package/dist/document-models/resource-template/gen/service-management/operations.d.ts +11 -0
  100. package/dist/document-models/resource-template/gen/service-management/operations.d.ts.map +1 -0
  101. package/dist/document-models/resource-template/gen/service-management/operations.js +3 -0
  102. package/dist/document-models/resource-template/gen/template-management/actions.d.ts +20 -0
  103. package/dist/document-models/resource-template/gen/template-management/actions.d.ts.map +1 -0
  104. package/dist/document-models/resource-template/gen/template-management/actions.js +1 -0
  105. package/dist/document-models/resource-template/gen/template-management/creators.d.ts +7 -0
  106. package/dist/document-models/resource-template/gen/template-management/creators.d.ts.map +1 -0
  107. package/dist/document-models/resource-template/gen/template-management/creators.js +6 -0
  108. package/dist/document-models/resource-template/gen/template-management/error.d.ts +2 -0
  109. package/dist/document-models/resource-template/gen/template-management/error.d.ts.map +1 -0
  110. package/dist/document-models/resource-template/gen/template-management/error.js +1 -0
  111. package/dist/document-models/resource-template/gen/template-management/operations.d.ts +10 -0
  112. package/dist/document-models/resource-template/gen/template-management/operations.d.ts.map +1 -0
  113. package/dist/document-models/resource-template/gen/template-management/operations.js +3 -0
  114. package/dist/document-models/resource-template/gen/types.d.ts +12 -0
  115. package/dist/document-models/resource-template/gen/types.d.ts.map +1 -0
  116. package/dist/document-models/resource-template/gen/types.js +1 -0
  117. package/dist/document-models/resource-template/gen/utils.d.ts +15 -0
  118. package/dist/document-models/resource-template/gen/utils.d.ts.map +1 -0
  119. package/dist/document-models/resource-template/gen/utils.js +65 -0
  120. package/dist/document-models/resource-template/hooks.d.ts +11 -0
  121. package/dist/document-models/resource-template/hooks.d.ts.map +1 -0
  122. package/dist/document-models/resource-template/hooks.js +26 -0
  123. package/dist/document-models/resource-template/index.d.ts +10 -0
  124. package/dist/document-models/resource-template/index.d.ts.map +1 -0
  125. package/dist/document-models/resource-template/index.js +9 -0
  126. package/dist/document-models/resource-template/module.d.ts +5 -0
  127. package/dist/document-models/resource-template/module.d.ts.map +1 -0
  128. package/dist/document-models/resource-template/module.js +10 -0
  129. package/dist/document-models/resource-template/reducers/audience-management.d.ts +3 -0
  130. package/dist/document-models/resource-template/reducers/audience-management.d.ts.map +1 -0
  131. package/dist/document-models/resource-template/reducers/audience-management.js +17 -0
  132. package/dist/document-models/resource-template/reducers/facet-preset-management.d.ts +59 -0
  133. package/dist/document-models/resource-template/reducers/facet-preset-management.d.ts.map +1 -0
  134. package/dist/document-models/resource-template/reducers/facet-preset-management.js +52 -0
  135. package/dist/document-models/resource-template/reducers/facet-targeting.d.ts +3 -0
  136. package/dist/document-models/resource-template/reducers/facet-targeting.d.ts.map +1 -0
  137. package/dist/document-models/resource-template/reducers/facet-targeting.js +47 -0
  138. package/dist/document-models/resource-template/reducers/option-group-management.d.ts +3 -0
  139. package/dist/document-models/resource-template/reducers/option-group-management.d.ts.map +1 -0
  140. package/dist/document-models/resource-template/reducers/option-group-management.js +44 -0
  141. package/dist/document-models/resource-template/reducers/service-category-management.d.ts +3 -0
  142. package/dist/document-models/resource-template/reducers/service-category-management.d.ts.map +1 -0
  143. package/dist/document-models/resource-template/reducers/service-category-management.js +10 -0
  144. package/dist/document-models/resource-template/reducers/service-management.d.ts +3 -0
  145. package/dist/document-models/resource-template/reducers/service-management.d.ts.map +1 -0
  146. package/dist/document-models/resource-template/reducers/service-management.js +71 -0
  147. package/dist/document-models/resource-template/reducers/template-management.d.ts +3 -0
  148. package/dist/document-models/resource-template/reducers/template-management.d.ts.map +1 -0
  149. package/dist/document-models/resource-template/reducers/template-management.js +32 -0
  150. package/dist/document-models/resource-template/src/index.d.ts +2 -0
  151. package/dist/document-models/resource-template/src/index.d.ts.map +1 -0
  152. package/dist/document-models/resource-template/src/index.js +1 -0
  153. package/dist/document-models/resource-template/src/reducers/audience-management.d.ts +3 -0
  154. package/dist/document-models/resource-template/src/reducers/audience-management.d.ts.map +1 -0
  155. package/dist/document-models/resource-template/src/reducers/audience-management.js +17 -0
  156. package/dist/document-models/resource-template/src/reducers/facet-targeting.d.ts +3 -0
  157. package/dist/document-models/resource-template/src/reducers/facet-targeting.d.ts.map +1 -0
  158. package/dist/document-models/resource-template/src/reducers/facet-targeting.js +46 -0
  159. package/dist/document-models/resource-template/src/reducers/option-group-management.d.ts +3 -0
  160. package/dist/document-models/resource-template/src/reducers/option-group-management.d.ts.map +1 -0
  161. package/dist/document-models/resource-template/src/reducers/option-group-management.js +42 -0
  162. package/dist/document-models/resource-template/src/reducers/service-category-management.d.ts +3 -0
  163. package/dist/document-models/resource-template/src/reducers/service-category-management.d.ts.map +1 -0
  164. package/dist/document-models/resource-template/src/reducers/service-category-management.js +10 -0
  165. package/dist/document-models/resource-template/src/reducers/service-management.d.ts +3 -0
  166. package/dist/document-models/resource-template/src/reducers/service-management.d.ts.map +1 -0
  167. package/dist/document-models/resource-template/src/reducers/service-management.js +68 -0
  168. package/dist/document-models/resource-template/src/reducers/template-management.d.ts +3 -0
  169. package/dist/document-models/resource-template/src/reducers/template-management.d.ts.map +1 -0
  170. package/dist/document-models/resource-template/src/reducers/template-management.js +32 -0
  171. package/dist/document-models/resource-template/src/tests/audience-management.test.d.ts +6 -0
  172. package/dist/document-models/resource-template/src/tests/audience-management.test.d.ts.map +1 -0
  173. package/dist/document-models/resource-template/src/tests/audience-management.test.js +29 -0
  174. package/dist/document-models/resource-template/src/tests/document-model.test.d.ts +10 -0
  175. package/dist/document-models/resource-template/src/tests/document-model.test.d.ts.map +1 -0
  176. package/dist/document-models/resource-template/src/tests/document-model.test.js +104 -0
  177. package/dist/document-models/resource-template/src/tests/facet-targeting.test.d.ts +6 -0
  178. package/dist/document-models/resource-template/src/tests/facet-targeting.test.d.ts.map +1 -0
  179. package/dist/document-models/resource-template/src/tests/facet-targeting.test.js +49 -0
  180. package/dist/document-models/resource-template/src/tests/option-group-management.test.d.ts +6 -0
  181. package/dist/document-models/resource-template/src/tests/option-group-management.test.d.ts.map +1 -0
  182. package/dist/document-models/resource-template/src/tests/option-group-management.test.js +39 -0
  183. package/dist/document-models/resource-template/src/tests/service-category-management.test.d.ts +6 -0
  184. package/dist/document-models/resource-template/src/tests/service-category-management.test.d.ts.map +1 -0
  185. package/dist/document-models/resource-template/src/tests/service-category-management.test.js +29 -0
  186. package/dist/document-models/resource-template/src/tests/service-management.test.d.ts +6 -0
  187. package/dist/document-models/resource-template/src/tests/service-management.test.d.ts.map +1 -0
  188. package/dist/document-models/resource-template/src/tests/service-management.test.js +59 -0
  189. package/dist/document-models/resource-template/src/tests/template-management.test.d.ts +6 -0
  190. package/dist/document-models/resource-template/src/tests/template-management.test.d.ts.map +1 -0
  191. package/dist/document-models/resource-template/src/tests/template-management.test.js +49 -0
  192. package/dist/document-models/resource-template/src/utils.d.ts +2 -0
  193. package/dist/document-models/resource-template/src/utils.d.ts.map +1 -0
  194. package/dist/document-models/resource-template/src/utils.js +1 -0
  195. package/dist/document-models/resource-template/utils.d.ts +14 -0
  196. package/dist/document-models/resource-template/utils.d.ts.map +1 -0
  197. package/dist/document-models/resource-template/utils.js +7 -0
  198. package/dist/document-models/service-offering/actions.d.ts +2 -0
  199. package/dist/document-models/service-offering/actions.d.ts.map +1 -1
  200. package/dist/document-models/service-offering/gen/document-model.d.ts.map +1 -1
  201. package/dist/document-models/service-offering/gen/document-model.js +51 -6
  202. package/dist/document-models/service-offering/gen/document-schema.d.ts +35 -16
  203. package/dist/document-models/service-offering/gen/document-schema.d.ts.map +1 -1
  204. package/dist/document-models/service-offering/gen/offering-management/actions.d.ts +10 -2
  205. package/dist/document-models/service-offering/gen/offering-management/actions.d.ts.map +1 -1
  206. package/dist/document-models/service-offering/gen/offering-management/creators.d.ts +4 -2
  207. package/dist/document-models/service-offering/gen/offering-management/creators.d.ts.map +1 -1
  208. package/dist/document-models/service-offering/gen/offering-management/creators.js +3 -1
  209. package/dist/document-models/service-offering/gen/offering-management/error.d.ts +20 -1
  210. package/dist/document-models/service-offering/gen/offering-management/error.d.ts.map +1 -1
  211. package/dist/document-models/service-offering/gen/offering-management/error.js +25 -0
  212. package/dist/document-models/service-offering/gen/offering-management/operations.d.ts +3 -1
  213. package/dist/document-models/service-offering/gen/offering-management/operations.d.ts.map +1 -1
  214. package/dist/document-models/service-offering/gen/ph-factories.d.ts.map +1 -1
  215. package/dist/document-models/service-offering/gen/ph-factories.js +1 -0
  216. package/dist/document-models/service-offering/gen/reducer.d.ts.map +1 -1
  217. package/dist/document-models/service-offering/gen/reducer.js +9 -1
  218. package/dist/document-models/service-offering/gen/schema/types.d.ts +24 -11
  219. package/dist/document-models/service-offering/gen/schema/types.d.ts.map +1 -1
  220. package/dist/document-models/service-offering/gen/schema/zod.d.ts +3 -1
  221. package/dist/document-models/service-offering/gen/schema/zod.d.ts.map +1 -1
  222. package/dist/document-models/service-offering/gen/schema/zod.js +17 -0
  223. package/dist/document-models/service-offering/gen/utils.d.ts.map +1 -1
  224. package/dist/document-models/service-offering/gen/utils.js +1 -0
  225. package/dist/document-models/service-offering/src/reducers/offering-management.d.ts.map +1 -1
  226. package/dist/document-models/service-offering/src/reducers/offering-management.js +22 -4
  227. package/dist/document-models/service-offering/src/reducers/service-management.d.ts.map +1 -1
  228. package/dist/document-models/service-offering/src/reducers/service-management.js +5 -0
  229. package/dist/document-models/service-offering/src/tests/offering-management.test.js +1 -81
  230. package/dist/document-models/service-offering/src/tests/tier-management.test.d.ts +4 -0
  231. package/dist/document-models/service-offering/src/tests/tier-management.test.d.ts.map +1 -1
  232. package/dist/document-models/service-offering/src/tests/tier-management.test.js +109 -1
  233. package/dist/editors/builder-team-admin/components/DriveExplorer.d.ts.map +1 -1
  234. package/dist/editors/builder-team-admin/components/DriveExplorer.js +4 -0
  235. package/dist/editors/builder-team-admin/components/FolderTree.d.ts +1 -1
  236. package/dist/editors/builder-team-admin/components/FolderTree.d.ts.map +1 -1
  237. package/dist/editors/builder-team-admin/components/FolderTree.js +134 -9
  238. package/dist/editors/builder-team-admin/components/ResourcesServices.d.ts +8 -0
  239. package/dist/editors/builder-team-admin/components/ResourcesServices.d.ts.map +1 -0
  240. package/dist/editors/builder-team-admin/components/ResourcesServices.js +76 -0
  241. package/dist/editors/builder-team-admin/hooks/useResourcesServicesAutoPlacement.d.ts +27 -0
  242. package/dist/editors/builder-team-admin/hooks/useResourcesServicesAutoPlacement.d.ts.map +1 -0
  243. package/dist/editors/builder-team-admin/hooks/useResourcesServicesAutoPlacement.js +123 -0
  244. package/dist/editors/index.d.ts +1 -0
  245. package/dist/editors/index.d.ts.map +1 -1
  246. package/dist/editors/index.js +1 -0
  247. package/dist/editors/resource-template-editor/components/FacetTargeting.d.ts +9 -0
  248. package/dist/editors/resource-template-editor/components/FacetTargeting.d.ts.map +1 -0
  249. package/dist/editors/resource-template-editor/components/FacetTargeting.js +958 -0
  250. package/dist/editors/resource-template-editor/components/TemplateInfo.d.ts +9 -0
  251. package/dist/editors/resource-template-editor/components/TemplateInfo.d.ts.map +1 -0
  252. package/dist/editors/resource-template-editor/components/TemplateInfo.js +1288 -0
  253. package/dist/editors/resource-template-editor/editor.d.ts +2 -0
  254. package/dist/editors/resource-template-editor/editor.d.ts.map +1 -0
  255. package/dist/editors/resource-template-editor/editor.js +149 -0
  256. package/dist/editors/resource-template-editor/module.d.ts +4 -0
  257. package/dist/editors/resource-template-editor/module.d.ts.map +1 -0
  258. package/dist/editors/resource-template-editor/module.js +10 -0
  259. package/dist/editors/service-offering-editor/components/EditName.js +1 -1
  260. package/dist/editors/service-offering-editor/components/OfferingInfo.d.ts +1 -1
  261. package/dist/editors/service-offering-editor/components/OfferingInfo.d.ts.map +1 -1
  262. package/dist/editors/service-offering-editor/components/OfferingProgress.d.ts +10 -0
  263. package/dist/editors/service-offering-editor/components/OfferingProgress.d.ts.map +1 -0
  264. package/dist/editors/service-offering-editor/components/OfferingProgress.js +240 -0
  265. package/dist/editors/service-offering-editor/components/ResourceTemplateSelector.d.ts +9 -0
  266. package/dist/editors/service-offering-editor/components/ResourceTemplateSelector.d.ts.map +1 -0
  267. package/dist/editors/service-offering-editor/components/ResourceTemplateSelector.js +1157 -0
  268. package/dist/editors/service-offering-editor/components/ScopeAndFacets.d.ts +1 -1
  269. package/dist/editors/service-offering-editor/components/ScopeAndFacets.d.ts.map +1 -1
  270. package/dist/editors/service-offering-editor/components/ServiceCatalog.d.ts +1 -1
  271. package/dist/editors/service-offering-editor/components/ServiceCatalog.d.ts.map +1 -1
  272. package/dist/editors/service-offering-editor/components/ServiceCatalog.js +318 -1
  273. package/dist/editors/service-offering-editor/components/ServicesList.d.ts +1 -1
  274. package/dist/editors/service-offering-editor/components/ServicesList.d.ts.map +1 -1
  275. package/dist/editors/service-offering-editor/components/TabNavigation.d.ts.map +1 -1
  276. package/dist/editors/service-offering-editor/components/TabNavigation.js +17 -3
  277. package/dist/editors/service-offering-editor/components/TheMatrix.d.ts +1 -1
  278. package/dist/editors/service-offering-editor/components/TheMatrix.d.ts.map +1 -1
  279. package/dist/editors/service-offering-editor/components/TheMatrix.js +823 -29
  280. package/dist/editors/service-offering-editor/components/TierDefinition.d.ts +1 -1
  281. package/dist/editors/service-offering-editor/components/TierDefinition.d.ts.map +1 -1
  282. package/dist/editors/service-offering-editor/components/TierDefinition.js +406 -4
  283. package/dist/editors/service-offering-editor/components/TiersList.d.ts +1 -1
  284. package/dist/editors/service-offering-editor/components/TiersList.d.ts.map +1 -1
  285. package/dist/editors/service-offering-editor/editor.d.ts.map +1 -1
  286. package/dist/editors/service-offering-editor/editor.js +4 -4
  287. package/dist/index.d.ts +1 -1
  288. package/dist/index.d.ts.map +1 -1
  289. package/dist/powerhouse.manifest.json +18 -0
  290. package/dist/style.css +25 -0
  291. package/dist/subgraphs/index.d.ts +1 -0
  292. package/dist/subgraphs/index.d.ts.map +1 -1
  293. package/dist/subgraphs/index.js +1 -0
  294. package/dist/subgraphs/resource-template/index.d.ts +11 -0
  295. package/dist/subgraphs/resource-template/index.d.ts.map +1 -0
  296. package/dist/subgraphs/resource-template/index.js +11 -0
  297. package/dist/subgraphs/resource-template/resolvers.d.ts +3 -0
  298. package/dist/subgraphs/resource-template/resolvers.d.ts.map +1 -0
  299. package/dist/subgraphs/resource-template/resolvers.js +312 -0
  300. package/dist/subgraphs/resource-template/schema.d.ts +3 -0
  301. package/dist/subgraphs/resource-template/schema.d.ts.map +1 -0
  302. package/dist/subgraphs/resource-template/schema.js +262 -0
  303. package/dist/subgraphs/service-offering/resolvers.d.ts.map +1 -1
  304. package/dist/subgraphs/service-offering/resolvers.js +24 -0
  305. package/dist/subgraphs/service-offering/schema.d.ts.map +1 -1
  306. package/dist/subgraphs/service-offering/schema.js +21 -0
  307. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import type { DocumentDispatch } from "@powerhousedao/reactor-browser";
2
- import type { ServiceOfferingDocument, ServiceOfferingAction } from "../../../document-models/service-offering/gen/types.js";
2
+ import type { ServiceOfferingDocument, ServiceOfferingAction } from "@powerhousedao/contributor-billing/document-models/service-offering";
3
3
  interface TierDefinitionProps {
4
4
  document: ServiceOfferingDocument;
5
5
  dispatch: DocumentDispatch<ServiceOfferingAction>;
@@ -1 +1 @@
1
- {"version":3,"file":"TierDefinition.d.ts","sourceRoot":"","sources":["../../../../editors/service-offering-editor/components/TierDefinition.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EAGtB,MAAM,wDAAwD,CAAC;AAQhE,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,uBAAuB,CAAC;IAClC,QAAQ,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;CACnD;AAkiBD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAgOzE"}
1
+ {"version":3,"file":"TierDefinition.d.ts","sourceRoot":"","sources":["../../../../editors/service-offering-editor/components/TierDefinition.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EAGtB,MAAM,qEAAqE,CAAC;AAQ7E,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,uBAAuB,CAAC;IAClC,QAAQ,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;CACnD;AAi7BD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CA+RzE"}
@@ -2,6 +2,57 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useState } from "react";
3
3
  import { generateId } from "document-model/core";
4
4
  import { addTier, updateTier, updateTierPricing, deleteTier, } from "../../../document-models/service-offering/gen/creators.js";
5
+ // Calculate price per day for mental accounting display
6
+ const BILLING_CYCLE_DAYS = {
7
+ MONTHLY: 30,
8
+ QUARTERLY: 90,
9
+ SEMI_ANNUAL: 180,
10
+ ANNUAL: 365,
11
+ ONE_TIME: 1,
12
+ };
13
+ function getPricePerDay(amount, billingCycle) {
14
+ if (billingCycle === "ONE_TIME")
15
+ return "";
16
+ const perDay = amount / BILLING_CYCLE_DAYS[billingCycle];
17
+ return perDay.toFixed(2);
18
+ }
19
+ // Determine which tier should show "Most Popular" badge
20
+ // Uses middle-tier heuristic (Good-Better-Best psychology)
21
+ function getRecommendedTierIndex(tiers) {
22
+ if (tiers.length < 2)
23
+ return -1;
24
+ if (tiers.length === 2)
25
+ return 1; // Second tier for 2-tier setup
26
+ // For 3+ tiers, recommend the middle tier (or middle-right for even counts)
27
+ return Math.floor(tiers.length / 2);
28
+ }
29
+ // Charm Pricing - Left-digit bias pricing suggestions
30
+ // Convert any price to nearest charm prices (ending in .99 or .97)
31
+ function getCharmPriceSuggestions(currentPrice) {
32
+ if (currentPrice <= 0)
33
+ return [9.99, 19.99, 29.99];
34
+ const suggestions = [];
35
+ const roundedDown = Math.floor(currentPrice);
36
+ const roundedUp = Math.ceil(currentPrice);
37
+ // Lower charm price (X9.99 below current)
38
+ const lowerCharm = Math.max(0, roundedDown - (roundedDown % 10) - 1) + 9.99;
39
+ if (lowerCharm > 0 && lowerCharm !== currentPrice) {
40
+ suggestions.push(lowerCharm);
41
+ }
42
+ // Nearest .99 at current level
43
+ const nearestCharm = roundedUp - 0.01;
44
+ if (nearestCharm > 0 &&
45
+ nearestCharm !== currentPrice &&
46
+ !suggestions.includes(nearestCharm)) {
47
+ suggestions.push(nearestCharm);
48
+ }
49
+ // Higher charm price (X9.99 above current)
50
+ const higherCharm = roundedUp + (10 - (roundedUp % 10)) - 0.01;
51
+ if (higherCharm !== currentPrice && !suggestions.includes(higherCharm)) {
52
+ suggestions.push(higherCharm);
53
+ }
54
+ return suggestions.slice(0, 3).sort((a, b) => a - b);
55
+ }
5
56
  const BILLING_CYCLES = [
6
57
  { value: "MONTHLY", label: "Month" },
7
58
  { value: "QUARTERLY", label: "Quarter" },
@@ -20,6 +71,102 @@ const TIER_ACCENTS = [
20
71
  { color: "var(--so-sky-500)", bg: "var(--so-sky-50)", name: "sky" },
21
72
  { color: "var(--so-rose-500)", bg: "var(--so-rose-50)", name: "rose" },
22
73
  ];
74
+ const TIER_PRESETS = [
75
+ {
76
+ name: "Standard 3-Tier",
77
+ description: "Basic → Professional → Enterprise",
78
+ icon: "📊",
79
+ tiers: [
80
+ {
81
+ name: "Basic",
82
+ amount: 99,
83
+ billingCycle: "MONTHLY",
84
+ isCustomPricing: false,
85
+ },
86
+ {
87
+ name: "Professional",
88
+ amount: 299,
89
+ billingCycle: "MONTHLY",
90
+ isCustomPricing: false,
91
+ },
92
+ {
93
+ name: "Enterprise",
94
+ amount: null,
95
+ billingCycle: "MONTHLY",
96
+ isCustomPricing: true,
97
+ },
98
+ ],
99
+ },
100
+ {
101
+ name: "Freemium Model",
102
+ description: "Free → Pro → Business",
103
+ icon: "🚀",
104
+ tiers: [
105
+ {
106
+ name: "Free",
107
+ amount: 0,
108
+ billingCycle: "MONTHLY",
109
+ isCustomPricing: false,
110
+ },
111
+ {
112
+ name: "Pro",
113
+ amount: 49,
114
+ billingCycle: "MONTHLY",
115
+ isCustomPricing: false,
116
+ },
117
+ {
118
+ name: "Business",
119
+ amount: 149,
120
+ billingCycle: "MONTHLY",
121
+ isCustomPricing: false,
122
+ },
123
+ ],
124
+ },
125
+ {
126
+ name: "Simple 2-Tier",
127
+ description: "Starter → Growth",
128
+ icon: "⚡",
129
+ tiers: [
130
+ {
131
+ name: "Starter",
132
+ amount: 79,
133
+ billingCycle: "MONTHLY",
134
+ isCustomPricing: false,
135
+ },
136
+ {
137
+ name: "Growth",
138
+ amount: 199,
139
+ billingCycle: "MONTHLY",
140
+ isCustomPricing: false,
141
+ },
142
+ ],
143
+ },
144
+ {
145
+ name: "Annual Focus",
146
+ description: "Annual pricing with discounts",
147
+ icon: "📅",
148
+ tiers: [
149
+ {
150
+ name: "Essential",
151
+ amount: 990,
152
+ billingCycle: "ANNUAL",
153
+ isCustomPricing: false,
154
+ },
155
+ {
156
+ name: "Professional",
157
+ amount: 2990,
158
+ billingCycle: "ANNUAL",
159
+ isCustomPricing: false,
160
+ },
161
+ {
162
+ name: "Enterprise",
163
+ amount: null,
164
+ billingCycle: "ANNUAL",
165
+ isCustomPricing: true,
166
+ },
167
+ ],
168
+ },
169
+ ];
23
170
  const tierStyles = `
24
171
  .tier-def {
25
172
  display: flex;
@@ -42,6 +189,7 @@ const tierStyles = `
42
189
  overflow: hidden;
43
190
  transition: var(--so-transition-base);
44
191
  animation: tier-slide-up 0.3s ease-out;
192
+ position: relative;
45
193
  }
46
194
 
47
195
  .tier-card:hover {
@@ -49,6 +197,42 @@ const tierStyles = `
49
197
  transform: translateY(-2px);
50
198
  }
51
199
 
200
+ /* Popular/Recommended Tier - Social Proof */
201
+ .tier-card--popular {
202
+ border: 2px solid var(--so-violet-300);
203
+ transform: scale(1.02);
204
+ z-index: 1;
205
+ }
206
+
207
+ .tier-card--popular:hover {
208
+ transform: scale(1.02) translateY(-2px);
209
+ }
210
+
211
+ .tier-card__popular-banner {
212
+ position: absolute;
213
+ top: -1px;
214
+ left: 50%;
215
+ transform: translateX(-50%);
216
+ display: flex;
217
+ align-items: center;
218
+ gap: 0.25rem;
219
+ padding: 0.25rem 0.875rem;
220
+ background: linear-gradient(135deg, var(--so-violet-600) 0%, var(--so-violet-700) 100%);
221
+ color: white;
222
+ font-size: 0.6875rem;
223
+ font-weight: 600;
224
+ text-transform: uppercase;
225
+ letter-spacing: 0.05em;
226
+ border-radius: 0 0 8px 8px;
227
+ box-shadow: 0 2px 8px rgba(124, 58, 237, 0.3);
228
+ z-index: 2;
229
+ }
230
+
231
+ .tier-card__popular-banner svg {
232
+ width: 0.875rem;
233
+ height: 0.875rem;
234
+ }
235
+
52
236
  @keyframes tier-slide-up {
53
237
  from {
54
238
  opacity: 0;
@@ -221,6 +405,97 @@ const tierStyles = `
221
405
  background-size: 1rem;
222
406
  }
223
407
 
408
+ /* Price Per Day Breakdown - Mental Accounting */
409
+ .tier-card__price-breakdown {
410
+ margin-top: 0.625rem;
411
+ padding-top: 0.625rem;
412
+ border-top: 1px dashed var(--so-slate-200);
413
+ display: flex;
414
+ align-items: center;
415
+ justify-content: space-between;
416
+ }
417
+
418
+ .tier-card__per-day {
419
+ display: flex;
420
+ align-items: baseline;
421
+ gap: 0.25rem;
422
+ }
423
+
424
+ .tier-card__per-day-amount {
425
+ font-family: var(--so-font-mono);
426
+ font-size: 0.875rem;
427
+ font-weight: 600;
428
+ color: var(--so-emerald-600);
429
+ }
430
+
431
+ .tier-card__per-day-label {
432
+ font-size: 0.6875rem;
433
+ color: var(--so-slate-500);
434
+ }
435
+
436
+ .tier-card__comparison {
437
+ font-size: 0.625rem;
438
+ color: var(--so-slate-400);
439
+ font-style: italic;
440
+ display: flex;
441
+ align-items: center;
442
+ gap: 0.25rem;
443
+ }
444
+
445
+ /* Charm Pricing Suggestions */
446
+ .tier-card__charm-pricing {
447
+ margin-top: 0.625rem;
448
+ padding-top: 0.625rem;
449
+ border-top: 1px dashed var(--so-slate-200);
450
+ }
451
+
452
+ .tier-card__charm-label {
453
+ display: flex;
454
+ align-items: center;
455
+ gap: 0.375rem;
456
+ font-size: 0.625rem;
457
+ font-weight: 500;
458
+ color: var(--so-violet-600);
459
+ margin-bottom: 0.5rem;
460
+ text-transform: uppercase;
461
+ letter-spacing: 0.04em;
462
+ }
463
+
464
+ .tier-card__charm-label svg {
465
+ width: 0.75rem;
466
+ height: 0.75rem;
467
+ }
468
+
469
+ .tier-card__charm-options {
470
+ display: flex;
471
+ gap: 0.375rem;
472
+ }
473
+
474
+ .tier-card__charm-btn {
475
+ padding: 0.25rem 0.625rem;
476
+ font-family: var(--so-font-mono);
477
+ font-size: 0.75rem;
478
+ font-weight: 500;
479
+ color: var(--so-slate-600);
480
+ background: var(--so-slate-100);
481
+ border: 1px solid var(--so-slate-200);
482
+ border-radius: var(--so-radius-sm);
483
+ cursor: pointer;
484
+ transition: all var(--so-transition-fast);
485
+ }
486
+
487
+ .tier-card__charm-btn:hover {
488
+ background: var(--so-violet-50);
489
+ border-color: var(--so-violet-300);
490
+ color: var(--so-violet-700);
491
+ }
492
+
493
+ .tier-card__charm-btn--active {
494
+ background: var(--so-violet-100);
495
+ border-color: var(--so-violet-400);
496
+ color: var(--so-violet-700);
497
+ }
498
+
224
499
  /* Description */
225
500
  .tier-card__description {
226
501
  margin-top: 1rem;
@@ -506,6 +781,109 @@ const tierStyles = `
506
781
  background: var(--so-slate-200);
507
782
  }
508
783
 
784
+ /* Tier Presets - Quick Start Templates */
785
+ .tier-presets {
786
+ background: linear-gradient(135deg, var(--so-violet-50) 0%, var(--so-sky-50) 100%);
787
+ border-radius: var(--so-radius-lg);
788
+ padding: 1.5rem;
789
+ margin-bottom: 1.5rem;
790
+ border: 1px solid var(--so-violet-100);
791
+ }
792
+
793
+ .tier-presets__header {
794
+ margin-bottom: 1.25rem;
795
+ }
796
+
797
+ .tier-presets__title {
798
+ font-family: var(--so-font-sans);
799
+ font-size: 1.125rem;
800
+ font-weight: 700;
801
+ color: var(--so-slate-800);
802
+ margin: 0 0 0.375rem;
803
+ display: flex;
804
+ align-items: center;
805
+ gap: 0.5rem;
806
+ }
807
+
808
+ .tier-presets__title::before {
809
+ content: '⚡';
810
+ }
811
+
812
+ .tier-presets__subtitle {
813
+ font-size: 0.875rem;
814
+ color: var(--so-slate-600);
815
+ margin: 0;
816
+ }
817
+
818
+ .tier-presets__grid {
819
+ display: grid;
820
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
821
+ gap: 1rem;
822
+ }
823
+
824
+ .tier-preset-card {
825
+ display: flex;
826
+ flex-direction: column;
827
+ gap: 0.75rem;
828
+ padding: 1.25rem;
829
+ background: white;
830
+ border: 2px solid var(--so-slate-200);
831
+ border-radius: var(--so-radius-md);
832
+ cursor: pointer;
833
+ transition: all 0.15s ease;
834
+ text-align: left;
835
+ }
836
+
837
+ .tier-preset-card:hover {
838
+ border-color: var(--so-violet-400);
839
+ box-shadow: 0 4px 12px rgba(124, 58, 237, 0.15);
840
+ transform: translateY(-2px);
841
+ }
842
+
843
+ .tier-preset-card__icon {
844
+ font-size: 1.5rem;
845
+ }
846
+
847
+ .tier-preset-card__content {
848
+ flex: 1;
849
+ }
850
+
851
+ .tier-preset-card__name {
852
+ font-family: var(--so-font-sans);
853
+ font-size: 1rem;
854
+ font-weight: 600;
855
+ color: var(--so-slate-800);
856
+ margin: 0 0 0.25rem;
857
+ }
858
+
859
+ .tier-preset-card__desc {
860
+ font-size: 0.8125rem;
861
+ color: var(--so-slate-500);
862
+ margin: 0;
863
+ }
864
+
865
+ .tier-preset-card__preview {
866
+ display: flex;
867
+ flex-wrap: wrap;
868
+ gap: 0.5rem;
869
+ padding-top: 0.75rem;
870
+ border-top: 1px solid var(--so-slate-100);
871
+ }
872
+
873
+ .tier-preset-card__tier {
874
+ font-family: var(--so-font-mono);
875
+ font-size: 0.6875rem;
876
+ padding: 0.25rem 0.5rem;
877
+ background: var(--so-slate-100);
878
+ color: var(--so-slate-600);
879
+ border-radius: var(--so-radius-sm);
880
+ }
881
+
882
+ .tier-preset-card:hover .tier-preset-card__tier {
883
+ background: var(--so-violet-100);
884
+ color: var(--so-violet-700);
885
+ }
886
+
509
887
  /* Info Notice */
510
888
  .tier-notice {
511
889
  display: flex;
@@ -585,8 +963,26 @@ export function TierDefinition({ document, dispatch }) {
585
963
  lastModified: new Date().toISOString(),
586
964
  }));
587
965
  };
966
+ // Apply a preset tier configuration - Default Effect
967
+ const handleApplyPreset = (preset) => {
968
+ const now = new Date().toISOString();
969
+ preset.tiers.forEach((tierConfig) => {
970
+ dispatch(addTier({
971
+ id: generateId(),
972
+ name: tierConfig.name,
973
+ amount: tierConfig.isCustomPricing
974
+ ? undefined
975
+ : (tierConfig.amount ?? undefined),
976
+ currency: "USD",
977
+ billingCycle: tierConfig.billingCycle,
978
+ isCustomPricing: tierConfig.isCustomPricing,
979
+ lastModified: now,
980
+ }));
981
+ });
982
+ };
588
983
  const getTierAccent = (index) => TIER_ACCENTS[index % TIER_ACCENTS.length];
589
- return (_jsxs(_Fragment, { children: [_jsx("style", { children: tierStyles }), _jsxs("div", { className: "tier-def", children: [_jsxs("div", { className: "tier-def__grid", children: [tiers.map((tier, index) => (_jsx(TierCard, { tier: tier, accent: getTierAccent(index), dispatch: dispatch, onDelete: () => handleDeleteTier(tier.id) }, tier.id))), isAddingTier ? (_jsxs("div", { className: "tier-form-card", children: [_jsx("h3", { className: "tier-form-card__title", children: "New Subscription Tier" }), _jsxs("div", { className: "tier-form-card__field", children: [_jsx("label", { className: "tier-form-card__label", children: "Tier Name" }), _jsx("input", { type: "text", value: newTier.name, onChange: (e) => setNewTier({ ...newTier, name: e.target.value }), placeholder: "e.g., Basic, Professional", className: "tier-form-card__input", autoFocus: true })] }), _jsxs("label", { className: "tier-form-card__toggle", children: [_jsx("input", { type: "checkbox", checked: newTier.isCustomPricing, onChange: (e) => setNewTier({
984
+ const recommendedTierIndex = getRecommendedTierIndex(tiers);
985
+ return (_jsxs(_Fragment, { children: [_jsx("style", { children: tierStyles }), _jsxs("div", { className: "tier-def", children: [tiers.length === 0 && (_jsxs("div", { className: "tier-presets", children: [_jsxs("div", { className: "tier-presets__header", children: [_jsx("h3", { className: "tier-presets__title", children: "Quick Start with a Template" }), _jsx("p", { className: "tier-presets__subtitle", children: "Choose a pricing structure to get started quickly, or create custom tiers below" })] }), _jsx("div", { className: "tier-presets__grid", children: TIER_PRESETS.map((preset) => (_jsxs("button", { onClick: () => handleApplyPreset(preset), className: "tier-preset-card", children: [_jsx("span", { className: "tier-preset-card__icon", children: preset.icon }), _jsxs("div", { className: "tier-preset-card__content", children: [_jsx("h4", { className: "tier-preset-card__name", children: preset.name }), _jsx("p", { className: "tier-preset-card__desc", children: preset.description })] }), _jsx("div", { className: "tier-preset-card__preview", children: preset.tiers.map((t, i) => (_jsxs("span", { className: "tier-preset-card__tier", children: [t.name, t.isCustomPricing ? "" : ` $${t.amount}`] }, i))) })] }, preset.name))) })] })), _jsxs("div", { className: "tier-def__grid", children: [tiers.map((tier, index) => (_jsx(TierCard, { tier: tier, accent: getTierAccent(index), dispatch: dispatch, onDelete: () => handleDeleteTier(tier.id), isRecommended: index === recommendedTierIndex }, tier.id))), isAddingTier ? (_jsxs("div", { className: "tier-form-card", children: [_jsx("h3", { className: "tier-form-card__title", children: "New Subscription Tier" }), _jsxs("div", { className: "tier-form-card__field", children: [_jsx("label", { className: "tier-form-card__label", children: "Tier Name" }), _jsx("input", { type: "text", value: newTier.name, onChange: (e) => setNewTier({ ...newTier, name: e.target.value }), placeholder: "e.g., Basic, Professional", className: "tier-form-card__input", autoFocus: true })] }), _jsxs("label", { className: "tier-form-card__toggle", children: [_jsx("input", { type: "checkbox", checked: newTier.isCustomPricing, onChange: (e) => setNewTier({
590
986
  ...newTier,
591
987
  isCustomPricing: e.target.checked,
592
988
  amount: "",
@@ -605,7 +1001,7 @@ export function TierDefinition({ document, dispatch }) {
605
1001
  });
606
1002
  }, className: "tier-form-card__btn tier-form-card__btn--secondary", children: "Cancel" })] })] })) : (_jsxs("button", { onClick: () => setIsAddingTier(true), className: "tier-add-card", children: [_jsx("div", { className: "tier-add-card__icon-wrap", children: _jsx("svg", { className: "tier-add-card__icon", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 4v16m8-8H4" }) }) }), _jsx("span", { className: "tier-add-card__text", children: "Add Subscription Tier" })] }))] }), _jsxs("div", { className: "tier-notice", children: [_jsx("svg", { className: "tier-notice__icon", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }), _jsxs("div", { className: "tier-notice__content", children: [_jsx("p", { className: "tier-notice__title", children: "Setup fees are managed at the service group level" }), _jsx("p", { className: "tier-notice__text", children: "Configure setup fees for \"Setup & Formation\" service groups in the Service Catalog. The setup fee applies to all tiers when those services are included." })] })] })] })] }));
607
1003
  }
608
- function TierCard({ tier, accent, dispatch, onDelete }) {
1004
+ function TierCard({ tier, accent, dispatch, onDelete, isRecommended, }) {
609
1005
  const [localName, setLocalName] = useState(tier.name);
610
1006
  const [localAmount, setLocalAmount] = useState(tier.pricing.amount?.toString() || "");
611
1007
  const [localBillingCycle, setLocalBillingCycle] = useState(tier.pricing.billingCycle);
@@ -645,9 +1041,15 @@ function TierCard({ tier, accent, dispatch, onDelete }) {
645
1041
  lastModified: new Date().toISOString(),
646
1042
  }));
647
1043
  };
648
- return (_jsxs("div", { className: "tier-card", children: [_jsx("div", { className: "tier-card__accent", style: { background: accent.color } }), _jsxs("div", { className: "tier-card__body", children: [_jsxs("div", { className: "tier-card__header", children: [_jsxs("div", { className: "tier-card__name-group", children: [_jsx("span", { className: "tier-card__label", children: "Tier Name" }), _jsx("input", { type: "text", value: localName, onChange: (e) => setLocalName(e.target.value), onBlur: handleNameBlur, className: "tier-card__name-input" })] }), _jsx("button", { onClick: onDelete, className: "tier-card__delete-btn", children: _jsx("svg", { width: "20", height: "20", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })] }), isCustomPricing && (_jsxs("div", { className: "tier-card__custom-badge", children: [_jsx("svg", { className: "tier-card__custom-icon", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }), _jsxs("div", { className: "tier-card__custom-text", children: [_jsx("span", { className: "tier-card__custom-title", children: "Custom Pricing" }), _jsx("span", { className: "tier-card__custom-desc", children: "Price varies per client" })] })] })), !isCustomPricing && (_jsxs("div", { className: "tier-card__pricing", children: [_jsx("span", { className: "tier-card__label", children: "Recurring Price" }), _jsxs("div", { className: "tier-card__pricing-box", children: [_jsx("span", { className: "tier-card__currency", children: "$" }), _jsx("input", { type: "number", value: localAmount, onChange: (e) => setLocalAmount(e.target.value), onBlur: () => handlePricingChange(localAmount), className: "tier-card__amount-input", step: "0.01" }), _jsx("span", { className: "tier-card__divider", children: "/" }), _jsx("select", { value: localBillingCycle, onChange: (e) => {
1044
+ return (_jsxs("div", { className: `tier-card ${isRecommended ? "tier-card--popular" : ""}`, children: [isRecommended && (_jsxs("div", { className: "tier-card__popular-banner", children: [_jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: _jsx("path", { d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" }) }), "Most Popular"] })), _jsx("div", { className: "tier-card__accent", style: { background: accent.color } }), _jsxs("div", { className: "tier-card__body", children: [_jsxs("div", { className: "tier-card__header", children: [_jsxs("div", { className: "tier-card__name-group", children: [_jsx("span", { className: "tier-card__label", children: "Tier Name" }), _jsx("input", { type: "text", value: localName, onChange: (e) => setLocalName(e.target.value), onBlur: handleNameBlur, className: "tier-card__name-input" })] }), _jsx("button", { onClick: onDelete, className: "tier-card__delete-btn", children: _jsx("svg", { width: "20", height: "20", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })] }), isCustomPricing && (_jsxs("div", { className: "tier-card__custom-badge", children: [_jsx("svg", { className: "tier-card__custom-icon", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }), _jsxs("div", { className: "tier-card__custom-text", children: [_jsx("span", { className: "tier-card__custom-title", children: "Custom Pricing" }), _jsx("span", { className: "tier-card__custom-desc", children: "Price varies per client" })] })] })), !isCustomPricing && (_jsxs("div", { className: "tier-card__pricing", children: [_jsx("span", { className: "tier-card__label", children: "Recurring Price" }), _jsxs("div", { className: "tier-card__pricing-box", children: [_jsx("span", { className: "tier-card__currency", children: "$" }), _jsx("input", { type: "number", value: localAmount, onChange: (e) => setLocalAmount(e.target.value), onBlur: () => handlePricingChange(localAmount), className: "tier-card__amount-input", step: "0.01" }), _jsx("span", { className: "tier-card__divider", children: "/" }), _jsx("select", { value: localBillingCycle, onChange: (e) => {
649
1045
  const newCycle = e.target.value;
650
1046
  setLocalBillingCycle(newCycle);
651
1047
  handlePricingChange(undefined, newCycle);
652
- }, className: "tier-card__cycle-select", children: BILLING_CYCLES.map((cycle) => (_jsx("option", { value: cycle.value, children: cycle.label }, cycle.value))) })] })] })), _jsxs("div", { className: "tier-card__description", children: [_jsx("span", { className: "tier-card__label", children: "Description" }), _jsx("textarea", { value: localDescription, onChange: (e) => setLocalDescription(e.target.value), onBlur: handleDescriptionBlur, placeholder: "Add a description...", rows: 2, className: "tier-card__desc-textarea" })] })] }), _jsxs("div", { className: "tier-card__footer", children: [_jsx("svg", { className: "tier-card__footer-icon", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }), _jsx("span", { className: "tier-card__footer-text", children: "Configure service levels in the Matrix view" })] })] }));
1048
+ }, className: "tier-card__cycle-select", children: BILLING_CYCLES.map((cycle) => (_jsx("option", { value: cycle.value, children: cycle.label }, cycle.value))) })] }), localAmount &&
1049
+ parseFloat(localAmount) > 0 &&
1050
+ localBillingCycle !== "ONE_TIME" && (_jsxs("div", { className: "tier-card__price-breakdown", children: [_jsxs("div", { className: "tier-card__per-day", children: [_jsxs("span", { className: "tier-card__per-day-amount", children: ["$", getPricePerDay(parseFloat(localAmount), localBillingCycle)] }), _jsx("span", { className: "tier-card__per-day-label", children: "/day" })] }), parseFloat(localAmount) > 0 &&
1051
+ parseFloat(getPricePerDay(parseFloat(localAmount), localBillingCycle)) < 10 && (_jsx("span", { className: "tier-card__comparison", children: "Less than a coffee" }))] })), localAmount && parseFloat(localAmount) > 0 && (_jsxs("div", { className: "tier-card__charm-pricing", children: [_jsxs("span", { className: "tier-card__charm-label", children: [_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M13 10V3L4 14h7v7l9-11h-7z" }) }), "Charm prices:"] }), _jsx("div", { className: "tier-card__charm-options", children: getCharmPriceSuggestions(parseFloat(localAmount)).map((price) => (_jsxs("button", { type: "button", onClick: () => {
1052
+ setLocalAmount(price.toFixed(2));
1053
+ handlePricingChange(price.toFixed(2));
1054
+ }, className: `tier-card__charm-btn ${parseFloat(localAmount) === price ? "tier-card__charm-btn--active" : ""}`, children: ["$", price.toFixed(2).replace(/\.00$/, "")] }, price))) })] }))] })), _jsxs("div", { className: "tier-card__description", children: [_jsx("span", { className: "tier-card__label", children: "Description" }), _jsx("textarea", { value: localDescription, onChange: (e) => setLocalDescription(e.target.value), onBlur: handleDescriptionBlur, placeholder: "Add a description...", rows: 2, className: "tier-card__desc-textarea" })] })] }), _jsxs("div", { className: "tier-card__footer", children: [_jsx("svg", { className: "tier-card__footer-icon", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }), _jsx("span", { className: "tier-card__footer-text", children: "Configure service levels in the Matrix view" })] })] }));
653
1055
  }
@@ -1,5 +1,5 @@
1
1
  import type { DocumentDispatch } from "@powerhousedao/reactor-browser";
2
- import type { ServiceOfferingDocument, ServiceOfferingAction } from "../../../document-models/service-offering/gen/types.js";
2
+ import type { ServiceOfferingDocument, ServiceOfferingAction } from "@powerhousedao/contributor-billing/document-models/service-offering";
3
3
  interface TiersListProps {
4
4
  document: ServiceOfferingDocument;
5
5
  dispatch: DocumentDispatch<ServiceOfferingAction>;
@@ -1 +1 @@
1
- {"version":3,"file":"TiersList.d.ts","sourceRoot":"","sources":["../../../../editors/service-offering-editor/components/TiersList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EAKtB,MAAM,wDAAwD,CAAC;AAchE,UAAU,cAAc;IACtB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,QAAQ,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;CACnD;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAue/D"}
1
+ {"version":3,"file":"TiersList.d.ts","sourceRoot":"","sources":["../../../../editors/service-offering-editor/components/TiersList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EAKtB,MAAM,qEAAqE,CAAC;AAc7E,UAAU,cAAc;IACtB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,QAAQ,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;CACnD;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAue/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/service-offering-editor/editor.tsx"],"names":[],"mappings":"AAYA,MAAM,CAAC,OAAO,UAAU,qBAAqB,4CAqF5C"}
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/service-offering-editor/editor.tsx"],"names":[],"mappings":"AAaA,MAAM,CAAC,OAAO,UAAU,qBAAqB,4CA6F5C"}
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from "react";
3
3
  import { DocumentToolbar } from "@powerhousedao/design-system/connect";
4
4
  import { useSelectedServiceOfferingDocument } from "../../document-models/service-offering/hooks.js";
5
- import { TabNavigation } from "./components/TabNavigation.js";
6
- import { ScopeAndFacets } from "./components/ScopeAndFacets.js";
5
+ import { OfferingProgress } from "./components/OfferingProgress.js";
6
+ import { ResourceTemplateSelector } from "./components/ResourceTemplateSelector.js";
7
7
  import { ServiceCatalog, } from "./components/ServiceCatalog.js";
8
8
  import { TierDefinition } from "./components/TierDefinition.js";
9
9
  import { TheMatrix } from "./components/TheMatrix.js";
@@ -25,7 +25,7 @@ export default function ServiceOfferingEditor() {
25
25
  const renderTabContent = () => {
26
26
  switch (activeTab) {
27
27
  case "scope-facets":
28
- return _jsx(ScopeAndFacets, { document: document, dispatch: dispatch });
28
+ return (_jsx(ResourceTemplateSelector, { document: document, dispatch: dispatch }));
29
29
  case "service-catalog":
30
30
  return (_jsx(ServiceCatalog, { document: document, dispatch: dispatch, groupMetadata: groupMetadata, setGroupMetadata: setGroupMetadata }));
31
31
  case "tier-definition":
@@ -36,7 +36,7 @@ export default function ServiceOfferingEditor() {
36
36
  return null;
37
37
  }
38
38
  };
39
- return (_jsxs("div", { className: "so-editor", children: [_jsx("style", { children: editorStyles }), _jsx(DocumentToolbar, {}), _jsxs("div", { className: "so-editor__container", children: [_jsx(TabNavigation, { activeTab: activeTab, onTabChange: setActiveTab }), _jsx("div", { className: "so-editor__content", children: renderTabContent() })] })] }));
39
+ return (_jsxs("div", { className: "so-editor", children: [_jsx("style", { children: editorStyles }), _jsx(DocumentToolbar, {}), _jsxs("div", { className: "so-editor__container", children: [_jsx(OfferingProgress, { document: document, activeTab: activeTab, onTabChange: setActiveTab }), _jsx("div", { className: "so-editor__content", children: renderTabContent() })] })] }));
40
40
  }
41
41
  const editorStyles = `
42
42
  @import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=DM+Mono:wght@400;500&display=swap');
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Manifest } from "document-model";
2
2
  export declare const manifest: Manifest;
3
- export declare const documentModels: (import("document-model").DocumentModelModule<import("./document-models/account-transactions/index.js").AccountTransactionsPHState> | import("document-model").DocumentModelModule<import("./document-models/accounts/index.js").AccountsPHState> | import("document-model").DocumentModelModule<import("./document-models/billing-statement/index.js").BillingStatementPHState> | import("document-model").DocumentModelModule<import("./document-models/expense-report/index.js").ExpenseReportPHState> | import("document-model").DocumentModelModule<import("./document-models/invoice/index.js").InvoicePHState> | import("document-model").DocumentModelModule<import("./document-models/snapshot-report/index.js").SnapshotReportPHState> | import("document-model").DocumentModelModule<import("./document-models/service-subscriptions/index.js").ServiceSubscriptionsPHState> | import("document-model").DocumentModelModule<import("./document-models/service-offering/index.js").ServiceOfferingPHState>)[];
3
+ export declare const documentModels: (import("document-model").DocumentModelModule<import("./document-models/account-transactions/index.js").AccountTransactionsPHState> | import("document-model").DocumentModelModule<import("./document-models/accounts/index.js").AccountsPHState> | import("document-model").DocumentModelModule<import("./document-models/billing-statement/index.js").BillingStatementPHState> | import("document-model").DocumentModelModule<import("./document-models/expense-report/index.js").ExpenseReportPHState> | import("document-model").DocumentModelModule<import("./document-models/invoice/index.js").InvoicePHState> | import("document-model").DocumentModelModule<import("./document-models/snapshot-report/index.js").SnapshotReportPHState> | import("document-model").DocumentModelModule<import("./document-models/service-subscriptions/index.js").ServiceSubscriptionsPHState> | import("document-model").DocumentModelModule<import("./document-models/service-offering/index.js").ServiceOfferingPHState> | import("document-model").DocumentModelModule<import("./document-models/resource-template/index.js").ResourceTemplatePHState>)[];
4
4
  export declare const editors: import("document-model").EditorModule[];
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,eAAO,MAAM,QAAQ,EAAE,QAAuB,CAAC;AAC/C,eAAO,MAAM,cAAc,y9BAAuC,CAAC;AACnE,eAAO,MAAM,OAAO,yCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,eAAO,MAAM,QAAQ,EAAE,QAAuB,CAAC;AAC/C,eAAO,MAAM,cAAc,wlCAAuC,CAAC;AACnE,eAAO,MAAM,OAAO,yCAAgC,CAAC"}
@@ -38,6 +38,10 @@
38
38
  {
39
39
  "id": "powerhouse/service-offering",
40
40
  "name": "ServiceOffering"
41
+ },
42
+ {
43
+ "id": "powerhouse/resource-template",
44
+ "name": "ResourceTemplate"
41
45
  }
42
46
  ],
43
47
  "editors": [
@@ -82,6 +86,20 @@
82
86
  "documentTypes": [
83
87
  "powerhouse/snapshot-report"
84
88
  ]
89
+ },
90
+ {
91
+ "id": "powerhouse-service-offering-editor",
92
+ "name": "Service Offering",
93
+ "documentTypes": [
94
+ "powerhouse/service-offering"
95
+ ]
96
+ },
97
+ {
98
+ "id": "powerhouse-resource-template-editor",
99
+ "name": "Resource Template",
100
+ "documentTypes": [
101
+ "powerhouse/resource-template"
102
+ ]
85
103
  }
86
104
  ],
87
105
  "apps": [
package/dist/style.css CHANGED
@@ -80,6 +80,7 @@
80
80
  --color-indigo-500: oklch(58.5% 0.233 277.117);
81
81
  --color-indigo-600: oklch(51.1% 0.262 276.966);
82
82
  --color-indigo-700: oklch(45.7% 0.24 277.023);
83
+ --color-indigo-800: oklch(39.8% 0.195 277.366);
83
84
  --color-violet-50: oklch(96.9% 0.016 293.756);
84
85
  --color-violet-500: oklch(60.6% 0.25 292.717);
85
86
  --color-violet-600: oklch(54.1% 0.281 293.009);
@@ -1309,6 +1310,9 @@
1309
1310
  .bg-green-600 {
1310
1311
  background-color: var(--color-green-600);
1311
1312
  }
1313
+ .bg-indigo-50 {
1314
+ background-color: var(--color-indigo-50);
1315
+ }
1312
1316
  .bg-indigo-100 {
1313
1317
  background-color: var(--color-indigo-100);
1314
1318
  }
@@ -2311,6 +2315,13 @@
2311
2315
  }
2312
2316
  }
2313
2317
  }
2318
+ .hover\:border-blue-400 {
2319
+ &:hover {
2320
+ @media (hover: hover) {
2321
+ border-color: var(--color-blue-400);
2322
+ }
2323
+ }
2324
+ }
2314
2325
  .hover\:border-gray-300 {
2315
2326
  &:hover {
2316
2327
  @media (hover: hover) {
@@ -2318,6 +2329,13 @@
2318
2329
  }
2319
2330
  }
2320
2331
  }
2332
+ .hover\:border-indigo-400 {
2333
+ &:hover {
2334
+ @media (hover: hover) {
2335
+ border-color: var(--color-indigo-400);
2336
+ }
2337
+ }
2338
+ }
2321
2339
  .hover\:border-indigo-500 {
2322
2340
  &:hover {
2323
2341
  @media (hover: hover) {
@@ -2625,6 +2643,13 @@
2625
2643
  }
2626
2644
  }
2627
2645
  }
2646
+ .hover\:text-indigo-800 {
2647
+ &:hover {
2648
+ @media (hover: hover) {
2649
+ color: var(--color-indigo-800);
2650
+ }
2651
+ }
2652
+ }
2628
2653
  .hover\:text-red-600 {
2629
2654
  &:hover {
2630
2655
  @media (hover: hover) {
@@ -9,4 +9,5 @@ export * as AccTxsAddonSubgraph from "./acc-txs-addon/index.js";
9
9
  export * as ServiceSubscriptionsSubgraph from "./service-subscriptions/index.js";
10
10
  export * as ServiceOfferingSubgraph from "./service-offering/index.js";
11
11
  export * as BudgetStatementsSubgraph from "./budget-statements/index.js";
12
+ export * as ResourceTemplateSubgraph from "./resource-template/index.js";
12
13
  //# sourceMappingURL=index.d.ts.map