@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
@@ -0,0 +1,1288 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState, useEffect, useRef } from "react";
3
+ import { generateId } from "document-model/core";
4
+ import { updateTemplateInfo, updateTemplateStatus, setOperator, addTargetAudience, removeTargetAudience, setSetupServices, setRecurringServices, } from "../../../document-models/resource-template/gen/creators.js";
5
+ const STATUS_OPTIONS = [
6
+ { value: "DRAFT", label: "Draft", color: "slate" },
7
+ { value: "COMING_SOON", label: "Coming Soon", color: "sky" },
8
+ { value: "ACTIVE", label: "Active", color: "emerald" },
9
+ { value: "DEPRECATED", label: "Deprecated", color: "rose" },
10
+ ];
11
+ const AUDIENCE_PRESETS = [
12
+ { label: "Founders", color: "#8b5cf6" },
13
+ { label: "SNO Governors", color: "#f43f5e" },
14
+ { label: "Builders", color: "#0ea5e9" },
15
+ { label: "Operators", color: "#f97316" },
16
+ { label: "Contributors", color: "#10b981" },
17
+ { label: "Investors", color: "#6366f1" },
18
+ ];
19
+ const SETUP_SERVICE_TEMPLATES = {
20
+ "Entity Formation": [
21
+ {
22
+ title: "Entity Formation",
23
+ description: "Legal entity registration and setup",
24
+ icon: "🏛️",
25
+ },
26
+ {
27
+ title: "Registered Agent",
28
+ description: "Registered agent designation for one year",
29
+ icon: "📋",
30
+ },
31
+ {
32
+ title: "Operating Agreement",
33
+ description: "Custom operating agreement drafting",
34
+ icon: "📜",
35
+ },
36
+ {
37
+ title: "EIN Application",
38
+ description: "Federal tax ID number application",
39
+ icon: "🔢",
40
+ },
41
+ {
42
+ title: "Banking Resolution",
43
+ description: "Corporate banking resolution preparation",
44
+ icon: "🏦",
45
+ },
46
+ ],
47
+ "Initial Setup": [
48
+ {
49
+ title: "Corporate Seal & Kit",
50
+ description: "Official corporate seal and documentation kit",
51
+ icon: "🔏",
52
+ },
53
+ {
54
+ title: "Initial Minutes",
55
+ description: "Organizational meeting minutes preparation",
56
+ icon: "📝",
57
+ },
58
+ {
59
+ title: "Bylaws Drafting",
60
+ description: "Corporate bylaws and governance documents",
61
+ icon: "⚖️",
62
+ },
63
+ {
64
+ title: "Stock Certificates",
65
+ description: "Initial stock certificate issuance",
66
+ icon: "📃",
67
+ },
68
+ {
69
+ title: "Compliance Calendar",
70
+ description: "Annual compliance calendar setup",
71
+ icon: "📅",
72
+ },
73
+ ],
74
+ };
75
+ const RECURRING_SERVICE_TEMPLATES = {
76
+ "Compliance & Governance": [
77
+ {
78
+ title: "Annual Compliance Review",
79
+ description: "Yearly compliance status check and filings",
80
+ icon: "✓",
81
+ },
82
+ {
83
+ title: "Board Meeting Minutes",
84
+ description: "Quarterly board meeting documentation",
85
+ icon: "📋",
86
+ },
87
+ {
88
+ title: "Regulatory Filing Support",
89
+ description: "Ongoing regulatory submission assistance",
90
+ icon: "📊",
91
+ },
92
+ {
93
+ title: "Corporate Record Maintenance",
94
+ description: "Continuous corporate record keeping",
95
+ icon: "🗄️",
96
+ },
97
+ ],
98
+ "Accounting & Finance": [
99
+ {
100
+ title: "Bookkeeping",
101
+ description: "Monthly bookkeeping and reconciliation",
102
+ icon: "📚",
103
+ },
104
+ {
105
+ title: "Financial Reporting",
106
+ description: "Quarterly financial statement preparation",
107
+ icon: "📈",
108
+ },
109
+ {
110
+ title: "Tax Preparation",
111
+ description: "Annual tax return preparation and filing",
112
+ icon: "💰",
113
+ },
114
+ {
115
+ title: "Payroll Processing",
116
+ description: "Bi-weekly payroll management",
117
+ icon: "💵",
118
+ },
119
+ ],
120
+ "Advisory & Support": [
121
+ {
122
+ title: "Dedicated Account Manager",
123
+ description: "Personal point of contact for all needs",
124
+ icon: "👤",
125
+ },
126
+ {
127
+ title: "Priority Support",
128
+ description: "Fast-track support response times",
129
+ icon: "⚡",
130
+ },
131
+ {
132
+ title: "Strategic Consulting",
133
+ description: "Quarterly business strategy sessions",
134
+ icon: "🎯",
135
+ },
136
+ {
137
+ title: "Legal Document Review",
138
+ description: "Contract and document review services",
139
+ icon: "🔍",
140
+ },
141
+ ],
142
+ };
143
+ export function TemplateInfo({ document, dispatch }) {
144
+ const { state } = document;
145
+ const globalState = state.global;
146
+ const [formData, setFormData] = useState({
147
+ title: globalState.title || "",
148
+ summary: globalState.summary || "",
149
+ description: globalState.description || "",
150
+ operatorId: globalState.operatorId || "",
151
+ thumbnailUrl: globalState.thumbnailUrl || "",
152
+ infoLink: globalState.infoLink || "",
153
+ status: globalState.status,
154
+ });
155
+ const [newSetupService, setNewSetupService] = useState("");
156
+ const [newRecurringService, setNewRecurringService] = useState("");
157
+ const [newAudienceLabel, setNewAudienceLabel] = useState("");
158
+ const [showAudienceInput, setShowAudienceInput] = useState(false);
159
+ const [showSetupTemplates, setShowSetupTemplates] = useState(false);
160
+ const [showRecurringTemplates, setShowRecurringTemplates] = useState(false);
161
+ const setupServiceInputRef = useRef(null);
162
+ const recurringServiceInputRef = useRef(null);
163
+ useEffect(() => {
164
+ setFormData({
165
+ title: globalState.title || "",
166
+ summary: globalState.summary || "",
167
+ description: globalState.description || "",
168
+ operatorId: globalState.operatorId || "",
169
+ thumbnailUrl: globalState.thumbnailUrl || "",
170
+ infoLink: globalState.infoLink || "",
171
+ status: globalState.status,
172
+ });
173
+ }, [
174
+ globalState.title,
175
+ globalState.summary,
176
+ globalState.description,
177
+ globalState.operatorId,
178
+ globalState.thumbnailUrl,
179
+ globalState.infoLink,
180
+ globalState.status,
181
+ ]);
182
+ const handleFieldChange = (field, value) => {
183
+ setFormData((prev) => ({ ...prev, [field]: value }));
184
+ };
185
+ const handleInfoBlur = () => {
186
+ const changes = {};
187
+ let hasChanges = false;
188
+ if (formData.title !== globalState.title) {
189
+ changes.title = formData.title;
190
+ hasChanges = true;
191
+ }
192
+ if (formData.summary !== globalState.summary) {
193
+ changes.summary = formData.summary;
194
+ hasChanges = true;
195
+ }
196
+ if (formData.description !== (globalState.description || "")) {
197
+ changes.description = formData.description || null;
198
+ hasChanges = true;
199
+ }
200
+ if (formData.thumbnailUrl !== (globalState.thumbnailUrl || "")) {
201
+ changes.thumbnailUrl = formData.thumbnailUrl || null;
202
+ hasChanges = true;
203
+ }
204
+ if (formData.infoLink !== (globalState.infoLink || "")) {
205
+ changes.infoLink = formData.infoLink || null;
206
+ hasChanges = true;
207
+ }
208
+ if (hasChanges) {
209
+ dispatch(updateTemplateInfo({
210
+ ...changes,
211
+ lastModified: new Date().toISOString(),
212
+ }));
213
+ }
214
+ };
215
+ const handleOperatorBlur = () => {
216
+ if (formData.operatorId !== globalState.operatorId) {
217
+ dispatch(setOperator({
218
+ operatorId: formData.operatorId,
219
+ lastModified: new Date().toISOString(),
220
+ }));
221
+ }
222
+ };
223
+ const handleStatusChange = (value) => {
224
+ const status = value;
225
+ setFormData((prev) => ({ ...prev, status }));
226
+ dispatch(updateTemplateStatus({
227
+ status,
228
+ lastModified: new Date().toISOString(),
229
+ }));
230
+ };
231
+ const handleAddAudience = (label, color) => {
232
+ if (!label.trim())
233
+ return;
234
+ dispatch(addTargetAudience({
235
+ id: generateId(),
236
+ label: label.trim(),
237
+ color: color || null,
238
+ lastModified: new Date().toISOString(),
239
+ }));
240
+ setNewAudienceLabel("");
241
+ setShowAudienceInput(false);
242
+ };
243
+ const handleRemoveAudience = (id) => {
244
+ dispatch(removeTargetAudience({
245
+ id,
246
+ lastModified: new Date().toISOString(),
247
+ }));
248
+ };
249
+ const handleAddSetupService = () => {
250
+ if (!newSetupService.trim())
251
+ return;
252
+ const updatedServices = [
253
+ ...globalState.setupServices,
254
+ newSetupService.trim(),
255
+ ];
256
+ dispatch(setSetupServices({
257
+ services: updatedServices,
258
+ lastModified: new Date().toISOString(),
259
+ }));
260
+ setNewSetupService("");
261
+ setupServiceInputRef.current?.focus();
262
+ };
263
+ const handleRemoveSetupService = (index) => {
264
+ const updatedServices = globalState.setupServices.filter((_, i) => i !== index);
265
+ dispatch(setSetupServices({
266
+ services: updatedServices,
267
+ lastModified: new Date().toISOString(),
268
+ }));
269
+ };
270
+ const handleAddRecurringService = () => {
271
+ if (!newRecurringService.trim())
272
+ return;
273
+ const updatedServices = [
274
+ ...globalState.recurringServices,
275
+ newRecurringService.trim(),
276
+ ];
277
+ dispatch(setRecurringServices({
278
+ services: updatedServices,
279
+ lastModified: new Date().toISOString(),
280
+ }));
281
+ setNewRecurringService("");
282
+ recurringServiceInputRef.current?.focus();
283
+ };
284
+ const handleRemoveRecurringService = (index) => {
285
+ const updatedServices = globalState.recurringServices.filter((_, i) => i !== index);
286
+ dispatch(setRecurringServices({
287
+ services: updatedServices,
288
+ lastModified: new Date().toISOString(),
289
+ }));
290
+ };
291
+ const handleAddSetupFromTemplate = (template) => {
292
+ if (globalState.setupServices.includes(template.title))
293
+ return;
294
+ const updatedServices = [...globalState.setupServices, template.title];
295
+ dispatch(setSetupServices({
296
+ services: updatedServices,
297
+ lastModified: new Date().toISOString(),
298
+ }));
299
+ };
300
+ const handleAddRecurringFromTemplate = (template) => {
301
+ if (globalState.recurringServices.includes(template.title))
302
+ return;
303
+ const updatedServices = [...globalState.recurringServices, template.title];
304
+ dispatch(setRecurringServices({
305
+ services: updatedServices,
306
+ lastModified: new Date().toISOString(),
307
+ }));
308
+ };
309
+ const currentStatus = STATUS_OPTIONS.find((s) => s.value === formData.status);
310
+ const availablePresets = AUDIENCE_PRESETS.filter((preset) => !globalState.targetAudiences.some((a) => a.label === preset.label));
311
+ return (_jsxs(_Fragment, { children: [_jsx("style", { children: styles }), _jsxs("div", { className: "template-editor", children: [_jsxs("section", { className: "template-editor__hero", children: [_jsxs("div", { className: "template-editor__thumbnail-area", children: [_jsxs("div", { className: "template-editor__thumbnail", style: {
312
+ backgroundImage: formData.thumbnailUrl
313
+ ? `url(${formData.thumbnailUrl})`
314
+ : undefined,
315
+ }, children: [!formData.thumbnailUrl && (_jsxs("div", { className: "template-editor__thumbnail-placeholder", children: [_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: [_jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }), _jsx("circle", { cx: "8.5", cy: "8.5", r: "1.5" }), _jsx("path", { d: "M21 15l-5-5L5 21" })] }), _jsx("span", { children: "Add Thumbnail" })] })), formData.thumbnailUrl && (_jsx("div", { className: `template-editor__status-badge template-editor__status-badge--${currentStatus?.color}`, children: currentStatus?.label }))] }), _jsx("div", { className: "template-editor__thumbnail-input", children: _jsx("input", { type: "text", value: formData.thumbnailUrl, onChange: (e) => handleFieldChange("thumbnailUrl", e.target.value), onBlur: handleInfoBlur, placeholder: "https://example.com/image.jpg", className: "template-editor__input template-editor__input--sm" }) })] }), _jsxs("div", { className: "template-editor__identity", children: [_jsxs("div", { className: "template-editor__title-row", children: [_jsx("input", { type: "text", value: formData.title, onChange: (e) => handleFieldChange("title", e.target.value), onBlur: handleInfoBlur, className: "template-editor__title-input", placeholder: "Resource Template Title" }), _jsxs("div", { className: "template-editor__status-select", children: [_jsx("select", { value: formData.status, onChange: (e) => handleStatusChange(e.target.value), className: "template-editor__select", "data-status": currentStatus?.color, children: STATUS_OPTIONS.map((option) => (_jsx("option", { value: option.value, children: option.label }, option.value))) }), _jsx("span", { className: `template-editor__status-indicator template-editor__status-indicator--${currentStatus?.color}` })] })] }), _jsxs("div", { className: "template-editor__audiences", children: [globalState.targetAudiences.map((audience) => (_jsxs("span", { className: "template-editor__audience-tag", style: audience.color
316
+ ? {
317
+ backgroundColor: `${audience.color}15`,
318
+ borderColor: `${audience.color}40`,
319
+ color: audience.color,
320
+ }
321
+ : undefined, children: [audience.label, _jsx("button", { type: "button", onClick: () => handleRemoveAudience(audience.id), className: "template-editor__audience-remove", children: _jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: _jsx("path", { d: "M18 6L6 18M6 6l12 12", strokeWidth: "2" }) }) })] }, audience.id))), showAudienceInput ? (_jsxs("div", { className: "template-editor__audience-input-wrap", children: [_jsx("input", { type: "text", value: newAudienceLabel, onChange: (e) => setNewAudienceLabel(e.target.value), onKeyDown: (e) => {
322
+ if (e.key === "Enter")
323
+ handleAddAudience(newAudienceLabel);
324
+ if (e.key === "Escape")
325
+ setShowAudienceInput(false);
326
+ }, placeholder: "Audience name...", className: "template-editor__audience-input", autoFocus: true }), _jsx("button", { type: "button", onClick: () => handleAddAudience(newAudienceLabel), className: "template-editor__audience-add-btn", children: "Add" })] })) : (_jsxs("button", { type: "button", onClick: () => setShowAudienceInput(true), className: "template-editor__add-audience-btn", children: [_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: _jsx("path", { d: "M12 5v14M5 12h14", strokeWidth: "2" }) }), "Add Audience"] }))] }), availablePresets.length > 0 && (_jsxs("div", { className: "template-editor__audience-presets", children: [_jsx("span", { className: "template-editor__presets-label", children: "Quick add:" }), availablePresets.slice(0, 4).map((preset) => (_jsx("button", { type: "button", onClick: () => handleAddAudience(preset.label, preset.color), className: "template-editor__preset-btn", style: { color: preset.color }, children: preset.label }, preset.label)))] })), _jsx("textarea", { value: formData.summary, onChange: (e) => handleFieldChange("summary", e.target.value), onBlur: handleInfoBlur, className: "template-editor__summary", placeholder: "Brief summary of your resource template...", rows: 2 })] })] }), _jsxs("section", { className: "template-editor__card template-editor__card--full", children: [_jsxs("div", { className: "template-editor__card-header", children: [_jsx("div", { className: "template-editor__card-icon template-editor__card-icon--violet", children: _jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.75", children: _jsx("path", { d: "M4 6h16M4 12h16M4 18h10" }) }) }), _jsxs("div", { children: [_jsx("h3", { className: "template-editor__card-title", children: "Description" }), _jsx("p", { className: "template-editor__card-subtitle", children: "Detailed description of your resource template" })] })] }), _jsx("textarea", { value: formData.description, onChange: (e) => handleFieldChange("description", e.target.value), onBlur: handleInfoBlur, className: "template-editor__textarea", placeholder: "Provide a comprehensive description of your resource template, including what makes it unique and valuable...", rows: 4 })] }), _jsxs("div", { className: "template-editor__grid", children: [_jsxs("section", { className: "template-editor__card", children: [_jsxs("div", { className: "template-editor__card-header", children: [_jsx("div", { className: "template-editor__card-icon template-editor__card-icon--emerald", children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.75", children: [_jsx("path", { d: "M12 2L2 7l10 5 10-5-10-5z" }), _jsx("path", { d: "M2 17l10 5 10-5" }), _jsx("path", { d: "M2 12l10 5 10-5" })] }) }), _jsxs("div", { children: [_jsx("h3", { className: "template-editor__card-title", children: "Formation & Setup" }), _jsx("p", { className: "template-editor__card-subtitle", children: "One-time setup services" })] }), _jsxs("button", { type: "button", onClick: () => setShowSetupTemplates(!showSetupTemplates), className: `template-editor__templates-toggle ${showSetupTemplates ? "template-editor__templates-toggle--active" : ""}`, children: [_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M4 4h6v6H4zM14 4h6v6h-6zM4 14h6v6H4zM14 14h6v6h-6z" }) }), "Templates"] })] }), showSetupTemplates && (_jsx("div", { className: "template-editor__templates-panel", children: Object.entries(SETUP_SERVICE_TEMPLATES).map(([category, templates]) => (_jsxs("div", { className: "template-editor__template-category", children: [_jsx("span", { className: "template-editor__template-category-label", children: category }), _jsx("div", { className: "template-editor__template-items", children: templates.map((template) => {
327
+ const isAdded = globalState.setupServices.includes(template.title);
328
+ return (_jsxs("button", { type: "button", onClick: () => handleAddSetupFromTemplate(template), disabled: isAdded, className: `template-editor__template-item ${isAdded ? "template-editor__template-item--added" : ""}`, title: template.description, children: [_jsx("span", { className: "template-editor__template-icon", children: template.icon }), _jsx("span", { className: "template-editor__template-title", children: template.title }), isAdded && (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", className: "template-editor__template-check", children: _jsx("path", { d: "M5 12l5 5L20 7" }) }))] }, template.title));
329
+ }) })] }, category))) })), _jsxs("div", { className: "template-editor__services", children: [globalState.setupServices.map((service, index) => (_jsxs("div", { className: "template-editor__service", children: [_jsx("span", { className: "template-editor__service-bullet" }), _jsx("span", { className: "template-editor__service-text", children: service }), _jsx("button", { type: "button", onClick: () => handleRemoveSetupService(index), className: "template-editor__service-remove", children: _jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: _jsx("path", { d: "M18 6L6 18M6 6l12 12", strokeWidth: "2" }) }) })] }, index))), _jsxs("div", { className: "template-editor__add-service", children: [_jsx("span", { className: "template-editor__service-bullet template-editor__service-bullet--ghost" }), _jsx("input", { ref: setupServiceInputRef, type: "text", value: newSetupService, onChange: (e) => setNewSetupService(e.target.value), onKeyDown: (e) => {
330
+ if (e.key === "Enter")
331
+ handleAddSetupService();
332
+ }, placeholder: "Add a setup service...", className: "template-editor__service-new-input" }), newSetupService && (_jsx("button", { type: "button", onClick: handleAddSetupService, className: "template-editor__service-add-btn", children: _jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: _jsx("path", { d: "M12 5v14M5 12h14", strokeWidth: "2" }) }) }))] })] })] }), _jsxs("section", { className: "template-editor__card", children: [_jsxs("div", { className: "template-editor__card-header", children: [_jsx("div", { className: "template-editor__card-icon template-editor__card-icon--amber", children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.75", children: [_jsx("path", { d: "M12 8v4l3 3" }), _jsx("circle", { cx: "12", cy: "12", r: "9" })] }) }), _jsxs("div", { children: [_jsx("h3", { className: "template-editor__card-title", children: "Recurring Services" }), _jsx("p", { className: "template-editor__card-subtitle", children: "Ongoing services included" })] }), _jsxs("button", { type: "button", onClick: () => setShowRecurringTemplates(!showRecurringTemplates), className: `template-editor__templates-toggle template-editor__templates-toggle--amber ${showRecurringTemplates ? "template-editor__templates-toggle--active" : ""}`, children: [_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M4 4h6v6H4zM14 4h6v6h-6zM4 14h6v6H4zM14 14h6v6h-6z" }) }), "Templates"] })] }), showRecurringTemplates && (_jsx("div", { className: "template-editor__templates-panel template-editor__templates-panel--amber", children: Object.entries(RECURRING_SERVICE_TEMPLATES).map(([category, templates]) => (_jsxs("div", { className: "template-editor__template-category", children: [_jsx("span", { className: "template-editor__template-category-label", children: category }), _jsx("div", { className: "template-editor__template-items", children: templates.map((template) => {
333
+ const isAdded = globalState.recurringServices.includes(template.title);
334
+ return (_jsxs("button", { type: "button", onClick: () => handleAddRecurringFromTemplate(template), disabled: isAdded, className: `template-editor__template-item template-editor__template-item--amber ${isAdded ? "template-editor__template-item--added" : ""}`, title: template.description, children: [_jsx("span", { className: "template-editor__template-icon", children: template.icon }), _jsx("span", { className: "template-editor__template-title", children: template.title }), isAdded && (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", className: "template-editor__template-check", children: _jsx("path", { d: "M5 12l5 5L20 7" }) }))] }, template.title));
335
+ }) })] }, category))) })), _jsxs("div", { className: "template-editor__services", children: [globalState.recurringServices.map((service, index) => (_jsxs("div", { className: "template-editor__service", children: [_jsx("span", { className: "template-editor__service-bullet template-editor__service-bullet--recurring" }), _jsx("span", { className: "template-editor__service-text", children: service }), _jsx("button", { type: "button", onClick: () => handleRemoveRecurringService(index), className: "template-editor__service-remove", children: _jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: _jsx("path", { d: "M18 6L6 18M6 6l12 12", strokeWidth: "2" }) }) })] }, index))), _jsxs("div", { className: "template-editor__add-service", children: [_jsx("span", { className: "template-editor__service-bullet template-editor__service-bullet--ghost" }), _jsx("input", { ref: recurringServiceInputRef, type: "text", value: newRecurringService, onChange: (e) => setNewRecurringService(e.target.value), onKeyDown: (e) => {
336
+ if (e.key === "Enter")
337
+ handleAddRecurringService();
338
+ }, placeholder: "Add a recurring service...", className: "template-editor__service-new-input" }), newRecurringService && (_jsx("button", { type: "button", onClick: handleAddRecurringService, className: "template-editor__service-add-btn", children: _jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: _jsx("path", { d: "M12 5v14M5 12h14", strokeWidth: "2" }) }) }))] })] })] })] }), _jsxs("section", { className: "template-editor__metadata", children: [_jsxs("div", { className: "template-editor__meta-field", children: [_jsx("label", { className: "template-editor__label", children: "Operator ID" }), _jsx("input", { type: "text", value: formData.operatorId, onChange: (e) => handleFieldChange("operatorId", e.target.value), onBlur: handleOperatorBlur, className: "template-editor__input template-editor__input--mono", placeholder: "operator-123" })] }), _jsxs("div", { className: "template-editor__meta-field", children: [_jsx("label", { className: "template-editor__label", children: "More Info Link" }), _jsx("input", { type: "text", value: formData.infoLink, onChange: (e) => handleFieldChange("infoLink", e.target.value), onBlur: handleInfoBlur, className: "template-editor__input", placeholder: "https://example.com/more-info" })] })] })] })] }));
339
+ }
340
+ const styles = `
341
+ @import url('https://fonts.googleapis.com/css2?family=Instrument+Sans:wght@400;500;600;700&display=swap');
342
+
343
+ .template-editor {
344
+ --te-font: 'Instrument Sans', system-ui, sans-serif;
345
+ --te-mono: 'DM Mono', 'SF Mono', monospace;
346
+
347
+ --te-ink: #1a1f36;
348
+ --te-ink-light: #4a5578;
349
+ --te-ink-muted: #8792a8;
350
+ --te-surface: #ffffff;
351
+ --te-surface-raised: #fafbfc;
352
+ --te-border: #e4e8f0;
353
+ --te-border-light: #f0f2f7;
354
+
355
+ --te-violet: #7c5cff;
356
+ --te-violet-light: #f4f1ff;
357
+ --te-amber: #f59e0b;
358
+ --te-amber-light: #fef7e6;
359
+ --te-emerald: #10b981;
360
+ --te-emerald-light: #e8faf3;
361
+ --te-sky: #0ea5e9;
362
+ --te-sky-light: #e8f7fc;
363
+ --te-rose: #f43f5e;
364
+ --te-rose-light: #fef1f3;
365
+ --te-slate: #64748b;
366
+ --te-slate-light: #f1f5f9;
367
+ --te-teal: #14b8a6;
368
+ --te-teal-light: #ccfbf1;
369
+
370
+ font-family: var(--te-font);
371
+ display: flex;
372
+ flex-direction: column;
373
+ gap: 24px;
374
+ }
375
+
376
+ /* Hero Section */
377
+ .template-editor__hero {
378
+ display: grid;
379
+ grid-template-columns: 160px 1fr;
380
+ gap: 28px;
381
+ background: var(--te-surface);
382
+ border-radius: 16px;
383
+ padding: 24px;
384
+ box-shadow: 0 1px 3px rgba(26, 31, 54, 0.04), 0 4px 16px rgba(26, 31, 54, 0.06);
385
+ border-left: 4px solid var(--te-teal);
386
+ }
387
+
388
+ .template-editor__thumbnail-area {
389
+ display: flex;
390
+ flex-direction: column;
391
+ gap: 12px;
392
+ }
393
+
394
+ .template-editor__thumbnail {
395
+ width: 160px;
396
+ height: 120px;
397
+ border-radius: 12px;
398
+ background: linear-gradient(135deg, var(--te-border-light) 0%, var(--te-border) 100%);
399
+ background-size: cover;
400
+ background-position: center;
401
+ position: relative;
402
+ overflow: hidden;
403
+ transition: transform 0.2s ease;
404
+ }
405
+
406
+ .template-editor__thumbnail:hover {
407
+ transform: scale(1.02);
408
+ }
409
+
410
+ .template-editor__thumbnail-placeholder {
411
+ position: absolute;
412
+ inset: 0;
413
+ display: flex;
414
+ flex-direction: column;
415
+ align-items: center;
416
+ justify-content: center;
417
+ gap: 8px;
418
+ color: var(--te-ink-muted);
419
+ font-size: 0.75rem;
420
+ font-weight: 500;
421
+ }
422
+
423
+ .template-editor__thumbnail-placeholder svg {
424
+ width: 32px;
425
+ height: 32px;
426
+ opacity: 0.5;
427
+ }
428
+
429
+ .template-editor__status-badge {
430
+ position: absolute;
431
+ top: 8px;
432
+ left: 8px;
433
+ padding: 4px 10px;
434
+ font-size: 0.625rem;
435
+ font-weight: 700;
436
+ text-transform: uppercase;
437
+ letter-spacing: 0.05em;
438
+ border-radius: 100px;
439
+ backdrop-filter: blur(8px);
440
+ }
441
+
442
+ .template-editor__status-badge--emerald {
443
+ background: rgba(16, 185, 129, 0.9);
444
+ color: white;
445
+ }
446
+
447
+ .template-editor__status-badge--sky {
448
+ background: rgba(14, 165, 233, 0.9);
449
+ color: white;
450
+ }
451
+
452
+ .template-editor__status-badge--slate {
453
+ background: rgba(100, 116, 139, 0.9);
454
+ color: white;
455
+ }
456
+
457
+ .template-editor__status-badge--rose {
458
+ background: rgba(244, 63, 94, 0.9);
459
+ color: white;
460
+ }
461
+
462
+ .template-editor__thumbnail-input {
463
+ width: 100%;
464
+ }
465
+
466
+ .template-editor__identity {
467
+ display: flex;
468
+ flex-direction: column;
469
+ gap: 16px;
470
+ }
471
+
472
+ .template-editor__title-row {
473
+ display: flex;
474
+ align-items: center;
475
+ gap: 16px;
476
+ }
477
+
478
+ .template-editor__title-input {
479
+ flex: 1;
480
+ font-family: var(--te-font);
481
+ font-size: 1.75rem;
482
+ font-weight: 700;
483
+ color: var(--te-ink);
484
+ background: transparent;
485
+ border: none;
486
+ outline: none;
487
+ padding: 0;
488
+ letter-spacing: -0.02em;
489
+ }
490
+
491
+ .template-editor__title-input::placeholder {
492
+ color: var(--te-ink-muted);
493
+ }
494
+
495
+ .template-editor__status-select {
496
+ position: relative;
497
+ display: flex;
498
+ align-items: center;
499
+ }
500
+
501
+ .template-editor__select {
502
+ appearance: none;
503
+ font-family: var(--te-font);
504
+ font-size: 0.8125rem;
505
+ font-weight: 600;
506
+ padding: 8px 32px 8px 28px;
507
+ border-radius: 100px;
508
+ border: 1.5px solid var(--te-border);
509
+ background: var(--te-surface-raised);
510
+ color: var(--te-ink-light);
511
+ cursor: pointer;
512
+ transition: all 0.15s ease;
513
+ }
514
+
515
+ .template-editor__select:hover {
516
+ border-color: var(--te-ink-muted);
517
+ }
518
+
519
+ .template-editor__select:focus {
520
+ outline: none;
521
+ border-color: var(--te-teal);
522
+ box-shadow: 0 0 0 3px var(--te-teal-light);
523
+ }
524
+
525
+ .template-editor__status-indicator {
526
+ position: absolute;
527
+ left: 10px;
528
+ width: 8px;
529
+ height: 8px;
530
+ border-radius: 50%;
531
+ pointer-events: none;
532
+ }
533
+
534
+ .template-editor__status-indicator--emerald { background: var(--te-emerald); }
535
+ .template-editor__status-indicator--sky { background: var(--te-sky); }
536
+ .template-editor__status-indicator--slate { background: var(--te-slate); }
537
+ .template-editor__status-indicator--rose { background: var(--te-rose); }
538
+
539
+ /* Audiences */
540
+ .template-editor__audiences {
541
+ display: flex;
542
+ flex-wrap: wrap;
543
+ align-items: center;
544
+ gap: 8px;
545
+ }
546
+
547
+ .template-editor__audience-tag {
548
+ display: inline-flex;
549
+ align-items: center;
550
+ gap: 6px;
551
+ padding: 6px 12px;
552
+ font-size: 0.8125rem;
553
+ font-weight: 600;
554
+ border-radius: 100px;
555
+ background: var(--te-teal-light);
556
+ border: 1px solid rgba(20, 184, 166, 0.2);
557
+ color: var(--te-teal);
558
+ transition: all 0.15s ease;
559
+ }
560
+
561
+ .template-editor__audience-remove {
562
+ display: flex;
563
+ align-items: center;
564
+ justify-content: center;
565
+ width: 16px;
566
+ height: 16px;
567
+ padding: 0;
568
+ background: transparent;
569
+ border: none;
570
+ cursor: pointer;
571
+ opacity: 0.6;
572
+ transition: opacity 0.15s ease;
573
+ }
574
+
575
+ .template-editor__audience-remove:hover {
576
+ opacity: 1;
577
+ }
578
+
579
+ .template-editor__audience-remove svg {
580
+ width: 12px;
581
+ height: 12px;
582
+ }
583
+
584
+ .template-editor__add-audience-btn {
585
+ display: inline-flex;
586
+ align-items: center;
587
+ gap: 4px;
588
+ padding: 6px 12px;
589
+ font-family: var(--te-font);
590
+ font-size: 0.8125rem;
591
+ font-weight: 500;
592
+ color: var(--te-ink-muted);
593
+ background: transparent;
594
+ border: 1.5px dashed var(--te-border);
595
+ border-radius: 100px;
596
+ cursor: pointer;
597
+ transition: all 0.15s ease;
598
+ }
599
+
600
+ .template-editor__add-audience-btn:hover {
601
+ border-color: var(--te-ink-muted);
602
+ color: var(--te-ink-light);
603
+ }
604
+
605
+ .template-editor__add-audience-btn svg {
606
+ width: 14px;
607
+ height: 14px;
608
+ }
609
+
610
+ .template-editor__audience-input-wrap {
611
+ display: flex;
612
+ align-items: center;
613
+ gap: 6px;
614
+ }
615
+
616
+ .template-editor__audience-input {
617
+ width: 140px;
618
+ padding: 6px 12px;
619
+ font-family: var(--te-font);
620
+ font-size: 0.8125rem;
621
+ border: 1.5px solid var(--te-teal);
622
+ border-radius: 100px;
623
+ outline: none;
624
+ background: var(--te-surface);
625
+ }
626
+
627
+ .template-editor__audience-add-btn {
628
+ padding: 6px 12px;
629
+ font-family: var(--te-font);
630
+ font-size: 0.75rem;
631
+ font-weight: 600;
632
+ color: white;
633
+ background: var(--te-teal);
634
+ border: none;
635
+ border-radius: 100px;
636
+ cursor: pointer;
637
+ transition: background 0.15s ease;
638
+ }
639
+
640
+ .template-editor__audience-add-btn:hover {
641
+ background: #0d9488;
642
+ }
643
+
644
+ .template-editor__audience-presets {
645
+ display: flex;
646
+ align-items: center;
647
+ gap: 8px;
648
+ padding-top: 4px;
649
+ }
650
+
651
+ .template-editor__presets-label {
652
+ font-size: 0.75rem;
653
+ color: var(--te-ink-muted);
654
+ }
655
+
656
+ .template-editor__preset-btn {
657
+ font-family: var(--te-font);
658
+ font-size: 0.75rem;
659
+ font-weight: 500;
660
+ padding: 4px 8px;
661
+ background: transparent;
662
+ border: none;
663
+ cursor: pointer;
664
+ opacity: 0.7;
665
+ transition: opacity 0.15s ease;
666
+ }
667
+
668
+ .template-editor__preset-btn:hover {
669
+ opacity: 1;
670
+ }
671
+
672
+ .template-editor__summary {
673
+ width: 100%;
674
+ font-family: var(--te-font);
675
+ font-size: 0.9375rem;
676
+ line-height: 1.6;
677
+ color: var(--te-ink-light);
678
+ background: transparent;
679
+ border: none;
680
+ outline: none;
681
+ resize: none;
682
+ padding: 0;
683
+ }
684
+
685
+ .template-editor__summary::placeholder {
686
+ color: var(--te-ink-muted);
687
+ }
688
+
689
+ /* Grid Cards */
690
+ .template-editor__grid {
691
+ display: grid;
692
+ grid-template-columns: 1fr 1fr;
693
+ gap: 20px;
694
+ }
695
+
696
+ .template-editor__card {
697
+ background: var(--te-surface);
698
+ border-radius: 16px;
699
+ padding: 24px;
700
+ box-shadow: 0 1px 3px rgba(26, 31, 54, 0.04), 0 4px 16px rgba(26, 31, 54, 0.06);
701
+ }
702
+
703
+ .template-editor__card-header {
704
+ display: flex;
705
+ align-items: flex-start;
706
+ gap: 14px;
707
+ margin-bottom: 20px;
708
+ }
709
+
710
+ .template-editor__card-icon {
711
+ width: 40px;
712
+ height: 40px;
713
+ border-radius: 10px;
714
+ display: flex;
715
+ align-items: center;
716
+ justify-content: center;
717
+ flex-shrink: 0;
718
+ }
719
+
720
+ .template-editor__card-icon svg {
721
+ width: 20px;
722
+ height: 20px;
723
+ }
724
+
725
+ .template-editor__card-icon--violet {
726
+ background: var(--te-violet-light);
727
+ color: var(--te-violet);
728
+ }
729
+
730
+ .template-editor__card-icon--amber {
731
+ background: var(--te-amber-light);
732
+ color: var(--te-amber);
733
+ }
734
+
735
+ .template-editor__card-icon--emerald {
736
+ background: var(--te-emerald-light);
737
+ color: var(--te-emerald);
738
+ }
739
+
740
+ .template-editor__card--full {
741
+ grid-column: 1 / -1;
742
+ }
743
+
744
+ .template-editor__card-title {
745
+ font-size: 1rem;
746
+ font-weight: 600;
747
+ color: var(--te-ink);
748
+ margin: 0 0 2px;
749
+ }
750
+
751
+ .template-editor__card-subtitle {
752
+ font-size: 0.8125rem;
753
+ color: var(--te-ink-muted);
754
+ margin: 0;
755
+ }
756
+
757
+ .template-editor__textarea {
758
+ width: 100%;
759
+ font-family: var(--te-font);
760
+ font-size: 0.9375rem;
761
+ line-height: 1.7;
762
+ color: var(--te-ink);
763
+ background: var(--te-surface-raised);
764
+ border: 1.5px solid var(--te-border-light);
765
+ border-radius: 12px;
766
+ padding: 16px;
767
+ resize: vertical;
768
+ transition: all 0.15s ease;
769
+ }
770
+
771
+ .template-editor__textarea:hover {
772
+ border-color: var(--te-border);
773
+ }
774
+
775
+ .template-editor__textarea:focus {
776
+ outline: none;
777
+ border-color: var(--te-teal);
778
+ box-shadow: 0 0 0 3px var(--te-teal-light);
779
+ }
780
+
781
+ .template-editor__textarea::placeholder {
782
+ color: var(--te-ink-muted);
783
+ }
784
+
785
+ /* Services */
786
+ .template-editor__services {
787
+ display: flex;
788
+ flex-direction: column;
789
+ gap: 8px;
790
+ }
791
+
792
+ .template-editor__service {
793
+ display: flex;
794
+ align-items: center;
795
+ gap: 10px;
796
+ padding: 10px 12px;
797
+ background: var(--te-surface-raised);
798
+ border-radius: 8px;
799
+ transition: background 0.15s ease;
800
+ }
801
+
802
+ .template-editor__service:hover {
803
+ background: var(--te-border-light);
804
+ }
805
+
806
+ .template-editor__service-bullet {
807
+ width: 6px;
808
+ height: 6px;
809
+ border-radius: 50%;
810
+ background: var(--te-emerald);
811
+ flex-shrink: 0;
812
+ }
813
+
814
+ .template-editor__service-bullet--recurring {
815
+ background: var(--te-amber);
816
+ }
817
+
818
+ .template-editor__service-bullet--ghost {
819
+ background: var(--te-border);
820
+ }
821
+
822
+ .template-editor__service-text {
823
+ flex: 1;
824
+ font-size: 0.875rem;
825
+ color: var(--te-ink);
826
+ }
827
+
828
+ .template-editor__service-remove {
829
+ display: flex;
830
+ align-items: center;
831
+ justify-content: center;
832
+ width: 24px;
833
+ height: 24px;
834
+ padding: 0;
835
+ background: transparent;
836
+ border: none;
837
+ border-radius: 6px;
838
+ cursor: pointer;
839
+ color: var(--te-ink-muted);
840
+ opacity: 0;
841
+ transition: all 0.15s ease;
842
+ }
843
+
844
+ .template-editor__service:hover .template-editor__service-remove {
845
+ opacity: 1;
846
+ }
847
+
848
+ .template-editor__service-remove:hover {
849
+ background: var(--te-rose-light);
850
+ color: var(--te-rose);
851
+ }
852
+
853
+ .template-editor__service-remove svg {
854
+ width: 14px;
855
+ height: 14px;
856
+ }
857
+
858
+ .template-editor__add-service {
859
+ display: flex;
860
+ align-items: center;
861
+ gap: 10px;
862
+ padding: 10px 12px;
863
+ background: transparent;
864
+ border: 1.5px dashed var(--te-border);
865
+ border-radius: 8px;
866
+ transition: all 0.15s ease;
867
+ }
868
+
869
+ .template-editor__add-service:focus-within {
870
+ border-color: var(--te-teal);
871
+ border-style: solid;
872
+ }
873
+
874
+ .template-editor__service-new-input {
875
+ flex: 1;
876
+ font-family: var(--te-font);
877
+ font-size: 0.875rem;
878
+ background: transparent;
879
+ border: none;
880
+ outline: none;
881
+ color: var(--te-ink);
882
+ }
883
+
884
+ .template-editor__service-new-input::placeholder {
885
+ color: var(--te-ink-muted);
886
+ }
887
+
888
+ .template-editor__service-add-btn {
889
+ display: flex;
890
+ align-items: center;
891
+ justify-content: center;
892
+ width: 28px;
893
+ height: 28px;
894
+ padding: 0;
895
+ background: var(--te-teal);
896
+ border: none;
897
+ border-radius: 6px;
898
+ cursor: pointer;
899
+ color: white;
900
+ transition: background 0.15s ease;
901
+ }
902
+
903
+ .template-editor__service-add-btn:hover {
904
+ background: #0d9488;
905
+ }
906
+
907
+ .template-editor__service-add-btn svg {
908
+ width: 16px;
909
+ height: 16px;
910
+ }
911
+
912
+ /* Metadata */
913
+ .template-editor__metadata {
914
+ display: grid;
915
+ grid-template-columns: 1fr 1fr;
916
+ gap: 20px;
917
+ background: var(--te-surface);
918
+ border-radius: 16px;
919
+ padding: 24px;
920
+ box-shadow: 0 1px 3px rgba(26, 31, 54, 0.04), 0 4px 16px rgba(26, 31, 54, 0.06);
921
+ }
922
+
923
+ .template-editor__meta-field {
924
+ display: flex;
925
+ flex-direction: column;
926
+ gap: 8px;
927
+ }
928
+
929
+ .template-editor__label {
930
+ font-size: 0.6875rem;
931
+ font-weight: 700;
932
+ text-transform: uppercase;
933
+ letter-spacing: 0.06em;
934
+ color: var(--te-ink-muted);
935
+ }
936
+
937
+ .template-editor__input {
938
+ width: 100%;
939
+ font-family: var(--te-font);
940
+ font-size: 0.9375rem;
941
+ padding: 12px 16px;
942
+ background: var(--te-surface-raised);
943
+ border: 1.5px solid var(--te-border-light);
944
+ border-radius: 10px;
945
+ color: var(--te-ink);
946
+ transition: all 0.15s ease;
947
+ }
948
+
949
+ .template-editor__input:hover {
950
+ border-color: var(--te-border);
951
+ }
952
+
953
+ .template-editor__input:focus {
954
+ outline: none;
955
+ border-color: var(--te-teal);
956
+ box-shadow: 0 0 0 3px var(--te-teal-light);
957
+ }
958
+
959
+ .template-editor__input::placeholder {
960
+ color: var(--te-ink-muted);
961
+ }
962
+
963
+ .template-editor__input--sm {
964
+ font-size: 0.8125rem;
965
+ padding: 8px 12px;
966
+ }
967
+
968
+ .template-editor__input--mono {
969
+ font-family: var(--te-mono);
970
+ font-size: 0.875rem;
971
+ }
972
+
973
+ /* Facet Targeting */
974
+ .template-editor__facets {
975
+ background: var(--te-surface);
976
+ border-radius: 16px;
977
+ padding: 24px;
978
+ box-shadow: 0 1px 3px rgba(26, 31, 54, 0.04), 0 4px 16px rgba(26, 31, 54, 0.06);
979
+ }
980
+
981
+ .template-editor__facets-header {
982
+ display: flex;
983
+ align-items: flex-start;
984
+ gap: 14px;
985
+ margin-bottom: 20px;
986
+ }
987
+
988
+ .template-editor__card-icon--sky {
989
+ background: var(--te-sky-light);
990
+ color: var(--te-sky);
991
+ }
992
+
993
+ .template-editor__facets-grid {
994
+ display: grid;
995
+ grid-template-columns: repeat(2, 1fr);
996
+ gap: 16px;
997
+ }
998
+
999
+ .template-editor__facet-card {
1000
+ background: var(--te-surface-raised);
1001
+ border: 1px solid var(--te-border-light);
1002
+ border-radius: 12px;
1003
+ padding: 16px;
1004
+ transition: border-color 0.15s ease;
1005
+ }
1006
+
1007
+ .template-editor__facet-card:hover {
1008
+ border-color: var(--te-border);
1009
+ }
1010
+
1011
+ .template-editor__facet-header {
1012
+ display: flex;
1013
+ align-items: center;
1014
+ justify-content: space-between;
1015
+ margin-bottom: 6px;
1016
+ }
1017
+
1018
+ .template-editor__facet-label {
1019
+ font-size: 0.875rem;
1020
+ font-weight: 600;
1021
+ color: var(--te-ink);
1022
+ }
1023
+
1024
+ .template-editor__facet-clear {
1025
+ font-family: var(--te-font);
1026
+ font-size: 0.75rem;
1027
+ font-weight: 500;
1028
+ padding: 4px 8px;
1029
+ background: transparent;
1030
+ border: none;
1031
+ color: var(--te-ink-muted);
1032
+ cursor: pointer;
1033
+ transition: color 0.15s ease;
1034
+ }
1035
+
1036
+ .template-editor__facet-clear:hover {
1037
+ color: var(--te-rose);
1038
+ }
1039
+
1040
+ .template-editor__facet-desc {
1041
+ font-size: 0.75rem;
1042
+ color: var(--te-ink-muted);
1043
+ margin: 0 0 12px;
1044
+ }
1045
+
1046
+ .template-editor__facet-options {
1047
+ display: flex;
1048
+ flex-direction: column;
1049
+ gap: 6px;
1050
+ }
1051
+
1052
+ .template-editor__facet-option {
1053
+ display: flex;
1054
+ align-items: center;
1055
+ gap: 10px;
1056
+ padding: 8px 12px;
1057
+ font-family: var(--te-font);
1058
+ font-size: 0.8125rem;
1059
+ color: var(--te-ink-light);
1060
+ background: var(--te-surface);
1061
+ border: 1.5px solid var(--te-border-light);
1062
+ border-radius: 8px;
1063
+ cursor: pointer;
1064
+ transition: all 0.15s ease;
1065
+ }
1066
+
1067
+ .template-editor__facet-option:hover {
1068
+ border-color: var(--te-border);
1069
+ background: var(--te-surface);
1070
+ }
1071
+
1072
+ .template-editor__facet-option--selected {
1073
+ border-color: var(--te-teal);
1074
+ background: var(--te-teal-light);
1075
+ color: var(--te-ink);
1076
+ }
1077
+
1078
+ .template-editor__facet-option--selected:hover {
1079
+ border-color: var(--te-teal);
1080
+ background: var(--te-teal-light);
1081
+ }
1082
+
1083
+ .template-editor__facet-checkbox {
1084
+ display: flex;
1085
+ align-items: center;
1086
+ justify-content: center;
1087
+ width: 18px;
1088
+ height: 18px;
1089
+ border-radius: 4px;
1090
+ background: var(--te-surface);
1091
+ border: 1.5px solid var(--te-border);
1092
+ transition: all 0.15s ease;
1093
+ }
1094
+
1095
+ .template-editor__facet-option--selected .template-editor__facet-checkbox {
1096
+ background: var(--te-teal);
1097
+ border-color: var(--te-teal);
1098
+ }
1099
+
1100
+ .template-editor__facet-checkbox svg {
1101
+ width: 12px;
1102
+ height: 12px;
1103
+ color: white;
1104
+ }
1105
+
1106
+ /* Templates Panel */
1107
+ .template-editor__templates-toggle {
1108
+ display: inline-flex;
1109
+ align-items: center;
1110
+ gap: 6px;
1111
+ margin-left: auto;
1112
+ padding: 6px 12px;
1113
+ font-family: var(--te-font);
1114
+ font-size: 0.75rem;
1115
+ font-weight: 600;
1116
+ color: var(--te-emerald);
1117
+ background: var(--te-emerald-light);
1118
+ border: 1.5px solid transparent;
1119
+ border-radius: 100px;
1120
+ cursor: pointer;
1121
+ transition: all 0.15s ease;
1122
+ }
1123
+
1124
+ .template-editor__templates-toggle svg {
1125
+ width: 14px;
1126
+ height: 14px;
1127
+ }
1128
+
1129
+ .template-editor__templates-toggle:hover {
1130
+ border-color: var(--te-emerald);
1131
+ }
1132
+
1133
+ .template-editor__templates-toggle--active {
1134
+ background: var(--te-emerald);
1135
+ color: white;
1136
+ }
1137
+
1138
+ .template-editor__templates-toggle--amber {
1139
+ color: var(--te-amber);
1140
+ background: var(--te-amber-light);
1141
+ }
1142
+
1143
+ .template-editor__templates-toggle--amber:hover {
1144
+ border-color: var(--te-amber);
1145
+ }
1146
+
1147
+ .template-editor__templates-toggle--amber.template-editor__templates-toggle--active {
1148
+ background: var(--te-amber);
1149
+ color: white;
1150
+ }
1151
+
1152
+ .template-editor__templates-panel {
1153
+ background: var(--te-emerald-light);
1154
+ border: 1px solid rgba(16, 185, 129, 0.2);
1155
+ border-radius: 12px;
1156
+ padding: 16px;
1157
+ margin-bottom: 16px;
1158
+ animation: templatesPanelSlide 0.2s ease-out;
1159
+ }
1160
+
1161
+ .template-editor__templates-panel--amber {
1162
+ background: var(--te-amber-light);
1163
+ border-color: rgba(245, 158, 11, 0.2);
1164
+ }
1165
+
1166
+ @keyframes templatesPanelSlide {
1167
+ from {
1168
+ opacity: 0;
1169
+ transform: translateY(-8px);
1170
+ }
1171
+ to {
1172
+ opacity: 1;
1173
+ transform: translateY(0);
1174
+ }
1175
+ }
1176
+
1177
+ .template-editor__template-category {
1178
+ margin-bottom: 12px;
1179
+ }
1180
+
1181
+ .template-editor__template-category:last-child {
1182
+ margin-bottom: 0;
1183
+ }
1184
+
1185
+ .template-editor__template-category-label {
1186
+ display: block;
1187
+ font-size: 0.6875rem;
1188
+ font-weight: 700;
1189
+ text-transform: uppercase;
1190
+ letter-spacing: 0.05em;
1191
+ color: var(--te-ink-muted);
1192
+ margin-bottom: 8px;
1193
+ }
1194
+
1195
+ .template-editor__template-items {
1196
+ display: flex;
1197
+ flex-wrap: wrap;
1198
+ gap: 6px;
1199
+ }
1200
+
1201
+ .template-editor__template-item {
1202
+ display: inline-flex;
1203
+ align-items: center;
1204
+ gap: 6px;
1205
+ padding: 6px 10px;
1206
+ font-family: var(--te-font);
1207
+ font-size: 0.8125rem;
1208
+ font-weight: 500;
1209
+ color: var(--te-ink);
1210
+ background: var(--te-surface);
1211
+ border: 1.5px solid var(--te-border-light);
1212
+ border-radius: 8px;
1213
+ cursor: pointer;
1214
+ transition: all 0.15s ease;
1215
+ }
1216
+
1217
+ .template-editor__template-item:hover:not(:disabled) {
1218
+ border-color: var(--te-emerald);
1219
+ background: white;
1220
+ transform: translateY(-1px);
1221
+ box-shadow: 0 2px 8px rgba(16, 185, 129, 0.15);
1222
+ }
1223
+
1224
+ .template-editor__template-item--amber:hover:not(:disabled) {
1225
+ border-color: var(--te-amber);
1226
+ box-shadow: 0 2px 8px rgba(245, 158, 11, 0.15);
1227
+ }
1228
+
1229
+ .template-editor__template-item--added {
1230
+ background: var(--te-emerald-light);
1231
+ border-color: var(--te-emerald);
1232
+ color: var(--te-emerald);
1233
+ cursor: default;
1234
+ }
1235
+
1236
+ .template-editor__template-item--amber.template-editor__template-item--added {
1237
+ background: var(--te-amber-light);
1238
+ border-color: var(--te-amber);
1239
+ color: var(--te-amber);
1240
+ }
1241
+
1242
+ .template-editor__template-icon {
1243
+ font-size: 0.875rem;
1244
+ }
1245
+
1246
+ .template-editor__template-title {
1247
+ white-space: nowrap;
1248
+ }
1249
+
1250
+ .template-editor__template-check {
1251
+ width: 14px;
1252
+ height: 14px;
1253
+ margin-left: 2px;
1254
+ }
1255
+
1256
+ /* Responsive */
1257
+ @media (max-width: 900px) {
1258
+ .template-editor__hero {
1259
+ grid-template-columns: 1fr;
1260
+ }
1261
+
1262
+ .template-editor__thumbnail-area {
1263
+ flex-direction: row;
1264
+ align-items: flex-start;
1265
+ }
1266
+
1267
+ .template-editor__thumbnail {
1268
+ width: 120px;
1269
+ height: 90px;
1270
+ }
1271
+
1272
+ .template-editor__thumbnail-input {
1273
+ flex: 1;
1274
+ }
1275
+
1276
+ .template-editor__grid {
1277
+ grid-template-columns: 1fr;
1278
+ }
1279
+
1280
+ .template-editor__metadata {
1281
+ grid-template-columns: 1fr;
1282
+ }
1283
+
1284
+ .template-editor__facets-grid {
1285
+ grid-template-columns: 1fr;
1286
+ }
1287
+ }
1288
+ `;