@happyvertical/smrt-content 0.30.0

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 (291) hide show
  1. package/AGENTS.md +194 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +634 -0
  5. package/dist/__smrt-register__.d.ts +2 -0
  6. package/dist/__smrt-register__.d.ts.map +1 -0
  7. package/dist/asset-associable.d.ts +115 -0
  8. package/dist/asset-associable.d.ts.map +1 -0
  9. package/dist/body-format.d.ts +29 -0
  10. package/dist/body-format.d.ts.map +1 -0
  11. package/dist/body-format.js +604 -0
  12. package/dist/body-format.js.map +1 -0
  13. package/dist/content-asset.d.ts +17 -0
  14. package/dist/content-asset.d.ts.map +1 -0
  15. package/dist/content-assets.d.ts +10 -0
  16. package/dist/content-assets.d.ts.map +1 -0
  17. package/dist/content-chat-handlers.d.ts +115 -0
  18. package/dist/content-chat-handlers.d.ts.map +1 -0
  19. package/dist/content-chat-prompts.d.ts +3 -0
  20. package/dist/content-chat-prompts.d.ts.map +1 -0
  21. package/dist/content-chat-session.d.ts +26 -0
  22. package/dist/content-chat-session.d.ts.map +1 -0
  23. package/dist/content-contribution-attachment.d.ts +42 -0
  24. package/dist/content-contribution-attachment.d.ts.map +1 -0
  25. package/dist/content-contribution-attachments.d.ts +8 -0
  26. package/dist/content-contribution-attachments.d.ts.map +1 -0
  27. package/dist/content-contribution-config.d.ts +84 -0
  28. package/dist/content-contribution-config.d.ts.map +1 -0
  29. package/dist/content-contribution-revision.d.ts +38 -0
  30. package/dist/content-contribution-revision.d.ts.map +1 -0
  31. package/dist/content-contribution-revisions.d.ts +8 -0
  32. package/dist/content-contribution-revisions.d.ts.map +1 -0
  33. package/dist/content-contribution-type.d.ts +51 -0
  34. package/dist/content-contribution-type.d.ts.map +1 -0
  35. package/dist/content-contribution-types.d.ts +7 -0
  36. package/dist/content-contribution-types.d.ts.map +1 -0
  37. package/dist/content-contribution.d.ts +161 -0
  38. package/dist/content-contribution.d.ts.map +1 -0
  39. package/dist/content-contributions.d.ts +53 -0
  40. package/dist/content-contributions.d.ts.map +1 -0
  41. package/dist/content-contributor.d.ts +30 -0
  42. package/dist/content-contributor.d.ts.map +1 -0
  43. package/dist/content-contributors.d.ts +13 -0
  44. package/dist/content-contributors.d.ts.map +1 -0
  45. package/dist/content-correction.d.ts +39 -0
  46. package/dist/content-correction.d.ts.map +1 -0
  47. package/dist/content-corrections.d.ts +9 -0
  48. package/dist/content-corrections.d.ts.map +1 -0
  49. package/dist/content-editor-assistant.d.ts +68 -0
  50. package/dist/content-editor-assistant.d.ts.map +1 -0
  51. package/dist/content-editor-assistant.js +97 -0
  52. package/dist/content-editor-assistant.js.map +1 -0
  53. package/dist/content-feed-parser.d.ts +19 -0
  54. package/dist/content-feed-parser.d.ts.map +1 -0
  55. package/dist/content-feed-source.d.ts +52 -0
  56. package/dist/content-feed-source.d.ts.map +1 -0
  57. package/dist/content-feed-sources.d.ts +11 -0
  58. package/dist/content-feed-sources.d.ts.map +1 -0
  59. package/dist/content-feed-sync.d.ts +23 -0
  60. package/dist/content-feed-sync.d.ts.map +1 -0
  61. package/dist/content-governance-assignment.d.ts +42 -0
  62. package/dist/content-governance-assignment.d.ts.map +1 -0
  63. package/dist/content-governance-assignments.d.ts +11 -0
  64. package/dist/content-governance-assignments.d.ts.map +1 -0
  65. package/dist/content-governance-policies.d.ts +7 -0
  66. package/dist/content-governance-policies.d.ts.map +1 -0
  67. package/dist/content-governance-policy.d.ts +29 -0
  68. package/dist/content-governance-policy.d.ts.map +1 -0
  69. package/dist/content-governance-profile.d.ts +31 -0
  70. package/dist/content-governance-profile.d.ts.map +1 -0
  71. package/dist/content-governance-profiles.d.ts +7 -0
  72. package/dist/content-governance-profiles.d.ts.map +1 -0
  73. package/dist/content-governance.d.ts +188 -0
  74. package/dist/content-governance.d.ts.map +1 -0
  75. package/dist/content-prompts.d.ts +10 -0
  76. package/dist/content-prompts.d.ts.map +1 -0
  77. package/dist/content-reference.d.ts +17 -0
  78. package/dist/content-reference.d.ts.map +1 -0
  79. package/dist/content-references.d.ts +55 -0
  80. package/dist/content-references.d.ts.map +1 -0
  81. package/dist/content-review.d.ts +34 -0
  82. package/dist/content-review.d.ts.map +1 -0
  83. package/dist/content-reviews.d.ts +21 -0
  84. package/dist/content-reviews.d.ts.map +1 -0
  85. package/dist/content-transparency.d.ts +72 -0
  86. package/dist/content-transparency.d.ts.map +1 -0
  87. package/dist/content-types.d.ts +51 -0
  88. package/dist/content-types.d.ts.map +1 -0
  89. package/dist/content-version.d.ts +38 -0
  90. package/dist/content-version.d.ts.map +1 -0
  91. package/dist/content-versions.d.ts +16 -0
  92. package/dist/content-versions.d.ts.map +1 -0
  93. package/dist/content.d.ts +736 -0
  94. package/dist/content.d.ts.map +1 -0
  95. package/dist/contents.d.ts +292 -0
  96. package/dist/contents.d.ts.map +1 -0
  97. package/dist/database-utils.d.ts +3 -0
  98. package/dist/database-utils.d.ts.map +1 -0
  99. package/dist/index.d.ts +78 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +11602 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/manifest.json +12308 -0
  104. package/dist/mock-smrt-client.d.ts +493 -0
  105. package/dist/mock-smrt-client.d.ts.map +1 -0
  106. package/dist/mock-smrt-client.js +390 -0
  107. package/dist/mock-smrt-client.js.map +1 -0
  108. package/dist/playground.d.ts +2 -0
  109. package/dist/playground.d.ts.map +1 -0
  110. package/dist/playground.js +454 -0
  111. package/dist/playground.js.map +1 -0
  112. package/dist/publish-readiness.d.ts +30 -0
  113. package/dist/publish-readiness.d.ts.map +1 -0
  114. package/dist/publish-readiness.js +74 -0
  115. package/dist/publish-readiness.js.map +1 -0
  116. package/dist/safe-remote-url.d.ts +52 -0
  117. package/dist/safe-remote-url.d.ts.map +1 -0
  118. package/dist/serialization.d.ts +78 -0
  119. package/dist/serialization.d.ts.map +1 -0
  120. package/dist/smrt-knowledge.json +6130 -0
  121. package/dist/svelte/api.d.ts +3 -0
  122. package/dist/svelte/api.d.ts.map +1 -0
  123. package/dist/svelte/api.js +10 -0
  124. package/dist/svelte/components/ArticleCard.svelte +159 -0
  125. package/dist/svelte/components/ArticleCard.svelte.d.ts +17 -0
  126. package/dist/svelte/components/ArticleCard.svelte.d.ts.map +1 -0
  127. package/dist/svelte/components/ArticleList.svelte +75 -0
  128. package/dist/svelte/components/ArticleList.svelte.d.ts +21 -0
  129. package/dist/svelte/components/ArticleList.svelte.d.ts.map +1 -0
  130. package/dist/svelte/components/ContentAgentChat.svelte +652 -0
  131. package/dist/svelte/components/ContentAgentChat.svelte.d.ts +17 -0
  132. package/dist/svelte/components/ContentAgentChat.svelte.d.ts.map +1 -0
  133. package/dist/svelte/components/ContentBodyEditor.svelte +1446 -0
  134. package/dist/svelte/components/ContentBodyEditor.svelte.d.ts +25 -0
  135. package/dist/svelte/components/ContentBodyEditor.svelte.d.ts.map +1 -0
  136. package/dist/svelte/components/ContentBodyRenderer.svelte +152 -0
  137. package/dist/svelte/components/ContentBodyRenderer.svelte.d.ts +10 -0
  138. package/dist/svelte/components/ContentBodyRenderer.svelte.d.ts.map +1 -0
  139. package/dist/svelte/components/ContentClaimAuditTool.svelte +441 -0
  140. package/dist/svelte/components/ContentClaimAuditTool.svelte.d.ts +12 -0
  141. package/dist/svelte/components/ContentClaimAuditTool.svelte.d.ts.map +1 -0
  142. package/dist/svelte/components/ContentContributionForm.svelte +226 -0
  143. package/dist/svelte/components/ContentContributionForm.svelte.d.ts +23 -0
  144. package/dist/svelte/components/ContentContributionForm.svelte.d.ts.map +1 -0
  145. package/dist/svelte/components/ContentContributionInbox.svelte +322 -0
  146. package/dist/svelte/components/ContentContributionInbox.svelte.d.ts +22 -0
  147. package/dist/svelte/components/ContentContributionInbox.svelte.d.ts.map +1 -0
  148. package/dist/svelte/components/ContentContributionPortal.svelte +182 -0
  149. package/dist/svelte/components/ContentContributionPortal.svelte.d.ts +12 -0
  150. package/dist/svelte/components/ContentContributionPortal.svelte.d.ts.map +1 -0
  151. package/dist/svelte/components/ContentContributionTypeManager.svelte +281 -0
  152. package/dist/svelte/components/ContentContributionTypeManager.svelte.d.ts +10 -0
  153. package/dist/svelte/components/ContentContributionTypeManager.svelte.d.ts.map +1 -0
  154. package/dist/svelte/components/ContentContributorManager.svelte +140 -0
  155. package/dist/svelte/components/ContentContributorManager.svelte.d.ts +10 -0
  156. package/dist/svelte/components/ContentContributorManager.svelte.d.ts.map +1 -0
  157. package/dist/svelte/components/ContentCorrectionsTool.svelte +361 -0
  158. package/dist/svelte/components/ContentCorrectionsTool.svelte.d.ts +11 -0
  159. package/dist/svelte/components/ContentCorrectionsTool.svelte.d.ts.map +1 -0
  160. package/dist/svelte/components/ContentEditor.svelte +2166 -0
  161. package/dist/svelte/components/ContentEditor.svelte.d.ts +26 -0
  162. package/dist/svelte/components/ContentEditor.svelte.d.ts.map +1 -0
  163. package/dist/svelte/components/ContentGovernanceAssignmentEditor.svelte +199 -0
  164. package/dist/svelte/components/ContentGovernanceAssignmentEditor.svelte.d.ts +11 -0
  165. package/dist/svelte/components/ContentGovernanceAssignmentEditor.svelte.d.ts.map +1 -0
  166. package/dist/svelte/components/ContentGovernanceManager.svelte +340 -0
  167. package/dist/svelte/components/ContentGovernanceManager.svelte.d.ts +11 -0
  168. package/dist/svelte/components/ContentGovernanceManager.svelte.d.ts.map +1 -0
  169. package/dist/svelte/components/ContentGovernancePanel.svelte +2244 -0
  170. package/dist/svelte/components/ContentGovernancePanel.svelte.d.ts +26 -0
  171. package/dist/svelte/components/ContentGovernancePanel.svelte.d.ts.map +1 -0
  172. package/dist/svelte/components/ContentGovernancePolicyEditor.svelte +110 -0
  173. package/dist/svelte/components/ContentGovernancePolicyEditor.svelte.d.ts +10 -0
  174. package/dist/svelte/components/ContentGovernancePolicyEditor.svelte.d.ts.map +1 -0
  175. package/dist/svelte/components/ContentGovernanceProfileEditor.svelte +185 -0
  176. package/dist/svelte/components/ContentGovernanceProfileEditor.svelte.d.ts +11 -0
  177. package/dist/svelte/components/ContentGovernanceProfileEditor.svelte.d.ts.map +1 -0
  178. package/dist/svelte/components/ContentGovernanceTool.svelte +56 -0
  179. package/dist/svelte/components/ContentGovernanceTool.svelte.d.ts +13 -0
  180. package/dist/svelte/components/ContentGovernanceTool.svelte.d.ts.map +1 -0
  181. package/dist/svelte/components/ContentImageBrowser.svelte +243 -0
  182. package/dist/svelte/components/ContentImageBrowser.svelte.d.ts +18 -0
  183. package/dist/svelte/components/ContentImageBrowser.svelte.d.ts.map +1 -0
  184. package/dist/svelte/components/ContentImageChooser.svelte +134 -0
  185. package/dist/svelte/components/ContentImageChooser.svelte.d.ts +11 -0
  186. package/dist/svelte/components/ContentImageChooser.svelte.d.ts.map +1 -0
  187. package/dist/svelte/components/ContentList.svelte +906 -0
  188. package/dist/svelte/components/ContentList.svelte.d.ts +16 -0
  189. package/dist/svelte/components/ContentList.svelte.d.ts.map +1 -0
  190. package/dist/svelte/components/ContentMetadataFields.svelte +107 -0
  191. package/dist/svelte/components/ContentMetadataFields.svelte.d.ts +8 -0
  192. package/dist/svelte/components/ContentMetadataFields.svelte.d.ts.map +1 -0
  193. package/dist/svelte/components/ContentReferencesPanel.svelte +221 -0
  194. package/dist/svelte/components/ContentReferencesPanel.svelte.d.ts +20 -0
  195. package/dist/svelte/components/ContentReferencesPanel.svelte.d.ts.map +1 -0
  196. package/dist/svelte/components/ContentReviewStatusTray.svelte +151 -0
  197. package/dist/svelte/components/ContentReviewStatusTray.svelte.d.ts +20 -0
  198. package/dist/svelte/components/ContentReviewStatusTray.svelte.d.ts.map +1 -0
  199. package/dist/svelte/components/ContentStatusFields.svelte +85 -0
  200. package/dist/svelte/components/ContentStatusFields.svelte.d.ts +8 -0
  201. package/dist/svelte/components/ContentStatusFields.svelte.d.ts.map +1 -0
  202. package/dist/svelte/components/ContentTitleField.svelte +54 -0
  203. package/dist/svelte/components/ContentTitleField.svelte.d.ts +10 -0
  204. package/dist/svelte/components/ContentTitleField.svelte.d.ts.map +1 -0
  205. package/dist/svelte/components/ContentTransparencyReport.svelte +322 -0
  206. package/dist/svelte/components/ContentTransparencyReport.svelte.d.ts +10 -0
  207. package/dist/svelte/components/ContentTransparencyReport.svelte.d.ts.map +1 -0
  208. package/dist/svelte/components/ContentTransparencyTool.svelte +314 -0
  209. package/dist/svelte/components/ContentTransparencyTool.svelte.d.ts +10 -0
  210. package/dist/svelte/components/ContentTransparencyTool.svelte.d.ts.map +1 -0
  211. package/dist/svelte/components/ContentVersionsTool.svelte +291 -0
  212. package/dist/svelte/components/ContentVersionsTool.svelte.d.ts +10 -0
  213. package/dist/svelte/components/ContentVersionsTool.svelte.d.ts.map +1 -0
  214. package/dist/svelte/components/GovernedContentEditor.svelte +409 -0
  215. package/dist/svelte/components/GovernedContentEditor.svelte.d.ts +35 -0
  216. package/dist/svelte/components/GovernedContentEditor.svelte.d.ts.map +1 -0
  217. package/dist/svelte/components/ImageThumbnail.cache.d.ts +14 -0
  218. package/dist/svelte/components/ImageThumbnail.cache.d.ts.map +1 -0
  219. package/dist/svelte/components/ImageThumbnail.cache.js +36 -0
  220. package/dist/svelte/components/ImageThumbnail.svelte +159 -0
  221. package/dist/svelte/components/ImageThumbnail.svelte.d.ts +8 -0
  222. package/dist/svelte/components/ImageThumbnail.svelte.d.ts.map +1 -0
  223. package/dist/svelte/components/Markdown.svelte +125 -0
  224. package/dist/svelte/components/Markdown.svelte.d.ts +11 -0
  225. package/dist/svelte/components/Markdown.svelte.d.ts.map +1 -0
  226. package/dist/svelte/content-editor-form.d.ts +63 -0
  227. package/dist/svelte/content-editor-form.d.ts.map +1 -0
  228. package/dist/svelte/content-editor-form.js +94 -0
  229. package/dist/svelte/content-editor-media.d.ts +12 -0
  230. package/dist/svelte/content-editor-media.d.ts.map +1 -0
  231. package/dist/svelte/content-editor-media.js +84 -0
  232. package/dist/svelte/content-editor-state.svelte.d.ts +35 -0
  233. package/dist/svelte/content-editor-state.svelte.d.ts.map +1 -0
  234. package/dist/svelte/content-editor-state.svelte.js +141 -0
  235. package/dist/svelte/governance-manager-client.d.ts +22 -0
  236. package/dist/svelte/governance-manager-client.d.ts.map +1 -0
  237. package/dist/svelte/governance-manager-client.js +1 -0
  238. package/dist/svelte/i18n.contribution.d.ts +57 -0
  239. package/dist/svelte/i18n.contribution.d.ts.map +1 -0
  240. package/dist/svelte/i18n.contribution.js +64 -0
  241. package/dist/svelte/i18n.editor.d.ts +71 -0
  242. package/dist/svelte/i18n.editor.d.ts.map +1 -0
  243. package/dist/svelte/i18n.editor.js +87 -0
  244. package/dist/svelte/i18n.governance.d.ts +66 -0
  245. package/dist/svelte/i18n.governance.d.ts.map +1 -0
  246. package/dist/svelte/i18n.governance.js +66 -0
  247. package/dist/svelte/i18n.routes.d.ts +66 -0
  248. package/dist/svelte/i18n.routes.d.ts.map +1 -0
  249. package/dist/svelte/i18n.routes.js +75 -0
  250. package/dist/svelte/i18n.tools.d.ts +81 -0
  251. package/dist/svelte/i18n.tools.d.ts.map +1 -0
  252. package/dist/svelte/i18n.tools.js +90 -0
  253. package/dist/svelte/index.d.ts +101 -0
  254. package/dist/svelte/index.d.ts.map +1 -0
  255. package/dist/svelte/index.js +63 -0
  256. package/dist/svelte/playground.d.ts +281 -0
  257. package/dist/svelte/playground.d.ts.map +1 -0
  258. package/dist/svelte/playground.js +438 -0
  259. package/dist/svelte/routes/ContentContributionsRoute.svelte +809 -0
  260. package/dist/svelte/routes/ContentContributionsRoute.svelte.d.ts +10 -0
  261. package/dist/svelte/routes/ContentContributionsRoute.svelte.d.ts.map +1 -0
  262. package/dist/svelte/routes/ContentFactsRoute.svelte +612 -0
  263. package/dist/svelte/routes/ContentFactsRoute.svelte.d.ts +11 -0
  264. package/dist/svelte/routes/ContentFactsRoute.svelte.d.ts.map +1 -0
  265. package/dist/svelte/routes/ContentGovernanceRoute.svelte +218 -0
  266. package/dist/svelte/routes/ContentGovernanceRoute.svelte.d.ts +10 -0
  267. package/dist/svelte/routes/ContentGovernanceRoute.svelte.d.ts.map +1 -0
  268. package/dist/svelte/routes/ContentWorkspaceRoute.svelte +431 -0
  269. package/dist/svelte/routes/ContentWorkspaceRoute.svelte.d.ts +12 -0
  270. package/dist/svelte/routes/ContentWorkspaceRoute.svelte.d.ts.map +1 -0
  271. package/dist/svelte/routes/PublishedArticleRoute.svelte +194 -0
  272. package/dist/svelte/routes/PublishedArticleRoute.svelte.d.ts +10 -0
  273. package/dist/svelte/routes/PublishedArticleRoute.svelte.d.ts.map +1 -0
  274. package/dist/svelte/routes/index.d.ts +8 -0
  275. package/dist/svelte/routes/index.d.ts.map +1 -0
  276. package/dist/svelte/routes/index.js +6 -0
  277. package/dist/svelte/routes/shared.d.ts +90 -0
  278. package/dist/svelte/routes/shared.d.ts.map +1 -0
  279. package/dist/svelte/routes/shared.js +104 -0
  280. package/dist/svelte/types.d.ts +69 -0
  281. package/dist/svelte/types.d.ts.map +1 -0
  282. package/dist/svelte/types.js +6 -0
  283. package/dist/thumbnail-generator.d.ts +174 -0
  284. package/dist/thumbnail-generator.d.ts.map +1 -0
  285. package/dist/ui.d.ts +10 -0
  286. package/dist/ui.d.ts.map +1 -0
  287. package/dist/ui.js +42 -0
  288. package/dist/ui.js.map +1 -0
  289. package/dist/utils.d.ts +18 -0
  290. package/dist/utils.d.ts.map +1 -0
  291. package/package.json +119 -0
@@ -0,0 +1,26 @@
1
+ import type { ContentEditorAssistantContextChange, ContentEditorAssistantFieldUpdateAllowList } from '../../content-editor-assistant';
2
+ import type { FactAuditStateData } from '../../mock-smrt-client';
3
+ export interface Props {
4
+ apiBaseUrl?: string;
5
+ content?: any;
6
+ contentId?: string;
7
+ factAudit?: FactAuditStateData | null;
8
+ saveDisabled?: boolean;
9
+ saveNotice?: string | null;
10
+ agentChatEnabled?: boolean;
11
+ agentChatNotice?: string | null;
12
+ hideActions?: boolean;
13
+ hideChat?: boolean;
14
+ assistantFieldAllowList?: ContentEditorAssistantFieldUpdateAllowList;
15
+ onAssistantContextChange?: ContentEditorAssistantContextChange;
16
+ onChange?: (data: any) => void;
17
+ onFactAuditChange?: (state: FactAuditStateData | null) => void;
18
+ onSave: (data: any) => void;
19
+ onCancel: () => void;
20
+ }
21
+ declare const ContentEditor: import("svelte").Component<Props, {
22
+ triggerSave: () => void;
23
+ }, "">;
24
+ type ContentEditor = ReturnType<typeof ContentEditor>;
25
+ export default ContentEditor;
26
+ //# sourceMappingURL=ContentEditor.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentEditor.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/ContentEditor.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAEV,mCAAmC,EACnC,0CAA0C,EAE3C,MAAM,gCAAgC,CAAC;AAKxC,OAAO,KAAK,EAEV,kBAAkB,EAEnB,MAAM,wBAAwB,CAAC;AAiBhC,MAAM,WAAW,KAAK;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB,CAAC,EAAE,0CAA0C,CAAC;IACrE,wBAAwB,CAAC,EAAE,mCAAmC,CAAC;IAC/D,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/D,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAmtCD,QAAA,MAAM,aAAa;;MAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -0,0 +1,199 @@
1
+ <script lang="ts">
2
+ import { useI18n } from '@happyvertical/smrt-ui/i18n';
3
+ import type {
4
+ ContentGovernanceAssignmentData,
5
+ ContentGovernanceProfileData,
6
+ } from '../../mock-smrt-client';
7
+ import { M } from '../i18n.tools.js';
8
+
9
+ const { t } = useI18n();
10
+
11
+ export interface Props {
12
+ assignment?: Partial<ContentGovernanceAssignmentData>;
13
+ profiles?: ContentGovernanceProfileData[];
14
+ onSave: (assignment: Partial<ContentGovernanceAssignmentData>) => void;
15
+ onCancel?: () => void;
16
+ }
17
+
18
+ let {
19
+ assignment = {},
20
+ profiles = [],
21
+ onSave,
22
+ onCancel = undefined,
23
+ }: Props = $props();
24
+
25
+ function resolveProfileKey(
26
+ preferredKey: string | null | undefined,
27
+ availableProfiles: ContentGovernanceProfileData[],
28
+ fallbackKey?: string,
29
+ ) {
30
+ if (
31
+ preferredKey &&
32
+ availableProfiles.some((profile) => profile.key === preferredKey)
33
+ ) {
34
+ return preferredKey;
35
+ }
36
+
37
+ if (
38
+ fallbackKey &&
39
+ availableProfiles.some((profile) => profile.key === fallbackKey)
40
+ ) {
41
+ return fallbackKey;
42
+ }
43
+
44
+ return availableProfiles[0]?.key || '';
45
+ }
46
+
47
+ function createDraft(
48
+ sourceAssignment: Partial<ContentGovernanceAssignmentData>,
49
+ availableProfiles: ContentGovernanceProfileData[],
50
+ ) {
51
+ return {
52
+ label: sourceAssignment.label || '',
53
+ contentType: sourceAssignment.contentType || 'article',
54
+ contentVariant: sourceAssignment.contentVariant || '',
55
+ enabled: sourceAssignment.enabled ?? true,
56
+ factLinkingEnabled: sourceAssignment.factLinkingEnabled ?? true,
57
+ transparencyEnabled: sourceAssignment.transparencyEnabled ?? true,
58
+ publicationProfileKey: resolveProfileKey(
59
+ sourceAssignment.publicationProfileKey,
60
+ availableProfiles,
61
+ 'publication',
62
+ ),
63
+ correctionProfileKey: resolveProfileKey(
64
+ sourceAssignment.correctionProfileKey,
65
+ availableProfiles,
66
+ 'correction',
67
+ ),
68
+ enforcePublishReadiness: sourceAssignment.enforcePublishReadiness ?? false,
69
+ defaultFactRelationship:
70
+ sourceAssignment.defaultFactRelationship || 'supports',
71
+ };
72
+ }
73
+
74
+ let draft = $state(createDraft({}, []));
75
+
76
+ $effect(() => {
77
+ draft = createDraft(assignment, profiles);
78
+ });
79
+
80
+ function handleSubmit() {
81
+ onSave({
82
+ ...assignment,
83
+ label: draft.label,
84
+ contentType: draft.contentType,
85
+ contentVariant: draft.contentVariant || null,
86
+ enabled: draft.enabled,
87
+ factLinkingEnabled: draft.factLinkingEnabled,
88
+ transparencyEnabled: draft.transparencyEnabled,
89
+ publicationProfileKey: draft.publicationProfileKey || null,
90
+ correctionProfileKey: draft.correctionProfileKey || null,
91
+ enforcePublishReadiness: draft.enforcePublishReadiness,
92
+ defaultFactRelationship: draft.defaultFactRelationship,
93
+ });
94
+ }
95
+ </script>
96
+
97
+ <form class="governance-editor" onsubmit={(event) => {
98
+ event.preventDefault();
99
+ handleSubmit();
100
+ }}>
101
+ <label>
102
+ Label
103
+ <input type="text" bind:value={draft.label} />
104
+ </label>
105
+ <label>
106
+ {t(M['content.governance_assignment_editor.content_type'])}
107
+ <input type="text" bind:value={draft.contentType} required />
108
+ </label>
109
+ <label>
110
+ {t(M['content.governance_assignment_editor.content_variant'])}
111
+ <input type="text" bind:value={draft.contentVariant} />
112
+ </label>
113
+ <label>
114
+ {t(M['content.governance_assignment_editor.publication_profile'])}
115
+ <select bind:value={draft.publicationProfileKey}>
116
+ <option value="" disabled={profiles.length > 0}>{t(M['content.governance_assignment_editor.select_a_profile'])}</option>
117
+ {#each profiles as profile (profile.key)}
118
+ <option value={profile.key}>{profile.label}</option>
119
+ {/each}
120
+ </select>
121
+ </label>
122
+ <label>
123
+ {t(M['content.governance_assignment_editor.correction_profile'])}
124
+ <select bind:value={draft.correctionProfileKey}>
125
+ <option value="" disabled={profiles.length > 0}>{t(M['content.governance_assignment_editor.select_a_profile'])}</option>
126
+ {#each profiles as profile (profile.key)}
127
+ <option value={profile.key}>{profile.label}</option>
128
+ {/each}
129
+ </select>
130
+ </label>
131
+ <label>
132
+ {t(M['content.governance_assignment_editor.default_fact_relationship'])}
133
+ <select bind:value={draft.defaultFactRelationship}>
134
+ <option value="supports">supports</option>
135
+ <option value="referenced_in">referenced_in</option>
136
+ <option value="contradicts">contradicts</option>
137
+ <option value="related">related</option>
138
+ </select>
139
+ </label>
140
+
141
+ <div class="checkbox-grid">
142
+ <label class="checkbox">
143
+ <input type="checkbox" bind:checked={draft.enabled} />
144
+ Enabled
145
+ </label>
146
+ <label class="checkbox">
147
+ <input type="checkbox" bind:checked={draft.factLinkingEnabled} />
148
+ {t(M['content.governance_assignment_editor.fact_linking'])}
149
+ </label>
150
+ <label class="checkbox">
151
+ <input type="checkbox" bind:checked={draft.transparencyEnabled} />
152
+ Transparency
153
+ </label>
154
+ <label class="checkbox">
155
+ <input type="checkbox" bind:checked={draft.enforcePublishReadiness} />
156
+ {t(M['content.governance_assignment_editor.enforce_publish_readiness'])}
157
+ </label>
158
+ </div>
159
+
160
+ <div class="actions">
161
+ <button type="submit">{t(M['content.governance_assignment_editor.save_assignment'])}</button>
162
+ {#if onCancel}
163
+ <button type="button" class="secondary" onclick={() => onCancel?.()}>
164
+ Cancel
165
+ </button>
166
+ {/if}
167
+ </div>
168
+ </form>
169
+
170
+ <style>
171
+ .governance-editor {
172
+ display: grid;
173
+ gap: 0.75rem;
174
+ }
175
+
176
+ label {
177
+ display: grid;
178
+ gap: 0.35rem;
179
+ font-size: var(--smrt-typography-label-large-size, 0.9rem);
180
+ }
181
+
182
+ input,
183
+ select {
184
+ width: 100%;
185
+ }
186
+
187
+ .checkbox-grid,
188
+ .actions {
189
+ display: flex;
190
+ gap: 0.75rem;
191
+ flex-wrap: wrap;
192
+ }
193
+
194
+ .checkbox {
195
+ display: flex;
196
+ align-items: center;
197
+ gap: 0.5rem;
198
+ }
199
+ </style>
@@ -0,0 +1,11 @@
1
+ import type { ContentGovernanceAssignmentData, ContentGovernanceProfileData } from '../../mock-smrt-client';
2
+ export interface Props {
3
+ assignment?: Partial<ContentGovernanceAssignmentData>;
4
+ profiles?: ContentGovernanceProfileData[];
5
+ onSave: (assignment: Partial<ContentGovernanceAssignmentData>) => void;
6
+ onCancel?: () => void;
7
+ }
8
+ declare const ContentGovernanceAssignmentEditor: import("svelte").Component<Props, {}, "">;
9
+ type ContentGovernanceAssignmentEditor = ReturnType<typeof ContentGovernanceAssignmentEditor>;
10
+ export default ContentGovernanceAssignmentEditor;
11
+ //# sourceMappingURL=ContentGovernanceAssignmentEditor.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentGovernanceAssignmentEditor.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/ContentGovernanceAssignmentEditor.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,+BAA+B,EAC/B,4BAA4B,EAC7B,MAAM,wBAAwB,CAAC;AAIhC,MAAM,WAAW,KAAK;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC,+BAA+B,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,4BAA4B,EAAE,CAAC;IAC1C,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,+BAA+B,CAAC,KAAK,IAAI,CAAC;IACvE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAqKD,QAAA,MAAM,iCAAiC,2CAAwC,CAAC;AAChF,KAAK,iCAAiC,GAAG,UAAU,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAC9F,eAAe,iCAAiC,CAAC"}
@@ -0,0 +1,340 @@
1
+ <script lang="ts">
2
+ import { useI18n } from '@happyvertical/smrt-ui/i18n';
3
+ import { onMount } from 'svelte';
4
+ import {
5
+ type ContentGovernanceAssignmentData,
6
+ type ContentGovernanceDefinitionsData,
7
+ type ContentGovernanceProfileData,
8
+ type ContentReviewPolicyData,
9
+ createClient,
10
+ } from '../../mock-smrt-client';
11
+ import { normalizeApiBaseUrl } from '../api';
12
+ import type { ContentGovernanceManagerClient } from '../governance-manager-client';
13
+ import { M } from '../i18n.tools.js';
14
+ import ContentGovernanceAssignmentEditor from './ContentGovernanceAssignmentEditor.svelte';
15
+ import ContentGovernancePolicyEditor from './ContentGovernancePolicyEditor.svelte';
16
+ import ContentGovernanceProfileEditor from './ContentGovernanceProfileEditor.svelte';
17
+
18
+ type EditMode = 'policy' | 'profile' | 'assignment' | null;
19
+
20
+ export interface Props {
21
+ apiBaseUrl?: string;
22
+ client?: ContentGovernanceManagerClient;
23
+ onChange?: (definitions: ContentGovernanceDefinitionsData | null) => void;
24
+ }
25
+
26
+ let {
27
+ apiBaseUrl = '/api/v1',
28
+ client = undefined,
29
+ onChange = undefined,
30
+ }: Props = $props();
31
+
32
+ const { t } = useI18n();
33
+
34
+ const governanceClient = $derived(
35
+ client ?? createClient(normalizeApiBaseUrl(apiBaseUrl)),
36
+ );
37
+
38
+ let definitions = $state<ContentGovernanceDefinitionsData | null>(null);
39
+ let loading = $state(true);
40
+ let error = $state<string | null>(null);
41
+ let editMode = $state<EditMode>(null);
42
+ let editingPolicy = $state<ContentReviewPolicyData | null>(null);
43
+ let editingProfile = $state<ContentGovernanceProfileData | null>(null);
44
+ let editingAssignment = $state<ContentGovernanceAssignmentData | null>(null);
45
+
46
+ onMount(async () => {
47
+ await loadDefinitions();
48
+ });
49
+
50
+ async function loadDefinitions() {
51
+ loading = true;
52
+ error = null;
53
+
54
+ try {
55
+ const response = await governanceClient.contents.getGovernanceDefinitions();
56
+ definitions = response.data;
57
+ onChange?.(response.data);
58
+ } catch (err: any) {
59
+ error = err.message || 'Failed to load governance definitions';
60
+ } finally {
61
+ loading = false;
62
+ }
63
+ }
64
+
65
+ async function savePolicy(policy: Partial<ContentReviewPolicyData>) {
66
+ if (editingPolicy?.id) {
67
+ await governanceClient.contentGovernancePolicies.update(
68
+ editingPolicy.id,
69
+ policy,
70
+ );
71
+ } else {
72
+ await governanceClient.contentGovernancePolicies.create(policy);
73
+ }
74
+
75
+ editMode = null;
76
+ editingPolicy = null;
77
+ await loadDefinitions();
78
+ }
79
+
80
+ async function saveProfile(profile: Partial<ContentGovernanceProfileData>) {
81
+ if (editingProfile?.id) {
82
+ await governanceClient.contentGovernanceProfiles.update(
83
+ editingProfile.id,
84
+ profile,
85
+ );
86
+ } else {
87
+ await governanceClient.contentGovernanceProfiles.create(profile);
88
+ }
89
+
90
+ editMode = null;
91
+ editingProfile = null;
92
+ await loadDefinitions();
93
+ }
94
+
95
+ async function saveAssignment(
96
+ assignment: Partial<ContentGovernanceAssignmentData>,
97
+ ) {
98
+ if (editingAssignment?.id) {
99
+ await governanceClient.contentGovernanceAssignments.update(
100
+ editingAssignment.id,
101
+ assignment,
102
+ );
103
+ } else {
104
+ await governanceClient.contentGovernanceAssignments.create(assignment);
105
+ }
106
+
107
+ editMode = null;
108
+ editingAssignment = null;
109
+ await loadDefinitions();
110
+ }
111
+
112
+ async function deletePolicy(id?: string) {
113
+ if (!id) return;
114
+ await governanceClient.contentGovernancePolicies.delete(id);
115
+ await loadDefinitions();
116
+ }
117
+
118
+ async function deleteProfile(id?: string) {
119
+ if (!id) return;
120
+ await governanceClient.contentGovernanceProfiles.delete(id);
121
+ await loadDefinitions();
122
+ }
123
+
124
+ async function deleteAssignment(id?: string) {
125
+ if (!id) return;
126
+ await governanceClient.contentGovernanceAssignments.delete(id);
127
+ await loadDefinitions();
128
+ }
129
+
130
+ function cancelEditing() {
131
+ editMode = null;
132
+ editingPolicy = null;
133
+ editingProfile = null;
134
+ editingAssignment = null;
135
+ }
136
+ </script>
137
+
138
+ <div class="governance-manager">
139
+ <div class="governance-manager__header">
140
+ <div>
141
+ <h3>{t(M['content.governance_manager.content_governance'])}</h3>
142
+ <p>{t(M['content.governance_manager.manage_governed_content'])}</p>
143
+ </div>
144
+ <button type="button" class="secondary" onclick={() => void loadDefinitions()}>
145
+ Refresh
146
+ </button>
147
+ </div>
148
+
149
+ {#if loading}
150
+ <p>{t(M['content.governance_manager.loading_governance_definitions'])}</p>
151
+ {:else if error}
152
+ <p class="error">{error}</p>
153
+ {:else if definitions}
154
+ <div class="governance-manager__grid">
155
+ <section>
156
+ <div class="section-header">
157
+ <h4>Policies</h4>
158
+ <button type="button" onclick={() => {
159
+ editMode = 'policy';
160
+ editingPolicy = null;
161
+ }}>
162
+ {t(M['content.governance_manager.add_policy'])}
163
+ </button>
164
+ </div>
165
+ {#if editMode === 'policy'}
166
+ {#key editingPolicy?.id ?? editingPolicy?.key ?? 'new-policy'}
167
+ <ContentGovernancePolicyEditor
168
+ policy={editingPolicy || {}}
169
+ onSave={savePolicy}
170
+ onCancel={cancelEditing}
171
+ />
172
+ {/key}
173
+ {/if}
174
+ <div class="list">
175
+ {#each definitions.effective.policies as policy (policy.key)}
176
+ <article class="card">
177
+ <div>
178
+ <strong>{policy.label}</strong>
179
+ <span>{policy.key} · {policy.kind}</span>
180
+ </div>
181
+ <div class="actions">
182
+ <button type="button" class="secondary" onclick={() => {
183
+ editMode = 'policy';
184
+ editingPolicy = policy;
185
+ }}>
186
+ Edit
187
+ </button>
188
+ {#if definitions.persisted.policies.some((item) => item.key === policy.key)}
189
+ <button type="button" class="secondary" onclick={() => void deletePolicy(policy.id)}>
190
+ {t(M['content.governance_manager.delete_override'])}
191
+ </button>
192
+ {/if}
193
+ </div>
194
+ </article>
195
+ {/each}
196
+ </div>
197
+ </section>
198
+
199
+ <section>
200
+ <div class="section-header">
201
+ <h4>Profiles</h4>
202
+ <button type="button" onclick={() => {
203
+ editMode = 'profile';
204
+ editingProfile = null;
205
+ }}>
206
+ {t(M['content.governance_manager.add_profile'])}
207
+ </button>
208
+ </div>
209
+ {#if editMode === 'profile'}
210
+ {#key editingProfile?.id ?? editingProfile?.key ?? 'new-profile'}
211
+ <ContentGovernanceProfileEditor
212
+ profile={editingProfile || {}}
213
+ policies={definitions.effective.policies}
214
+ onSave={saveProfile}
215
+ onCancel={cancelEditing}
216
+ />
217
+ {/key}
218
+ {/if}
219
+ <div class="list">
220
+ {#each definitions.effective.profiles as profile (profile.key)}
221
+ <article class="card">
222
+ <div>
223
+ <strong>{profile.label}</strong>
224
+ <span>{profile.key} · {profile.requirements.length} requirement(s)</span>
225
+ </div>
226
+ <div class="actions">
227
+ <button type="button" class="secondary" onclick={() => {
228
+ editMode = 'profile';
229
+ editingProfile = profile;
230
+ }}>
231
+ Edit
232
+ </button>
233
+ {#if definitions.persisted.profiles.some((item) => item.key === profile.key)}
234
+ <button type="button" class="secondary" onclick={() => void deleteProfile(profile.id)}>
235
+ {t(M['content.governance_manager.delete_override'])}
236
+ </button>
237
+ {/if}
238
+ </div>
239
+ </article>
240
+ {/each}
241
+ </div>
242
+ </section>
243
+
244
+ <section>
245
+ <div class="section-header">
246
+ <h4>Assignments</h4>
247
+ <button type="button" onclick={() => {
248
+ editMode = 'assignment';
249
+ editingAssignment = null;
250
+ }}>
251
+ {t(M['content.governance_manager.add_assignment'])}
252
+ </button>
253
+ </div>
254
+ {#if editMode === 'assignment'}
255
+ {#key editingAssignment?.id ?? editingAssignment?.key ?? 'new-assignment'}
256
+ <ContentGovernanceAssignmentEditor
257
+ assignment={editingAssignment || {}}
258
+ profiles={definitions.effective.profiles}
259
+ onSave={saveAssignment}
260
+ onCancel={cancelEditing}
261
+ />
262
+ {/key}
263
+ {/if}
264
+ <div class="list">
265
+ {#each definitions.effective.assignments as assignment (assignment.key)}
266
+ <article class="card">
267
+ <div>
268
+ <strong>{assignment.label || assignment.contentType}</strong>
269
+ <span>
270
+ {assignment.contentType}
271
+ {assignment.contentVariant ? ` · ${assignment.contentVariant}` : ''}
272
+ </span>
273
+ </div>
274
+ <div class="actions">
275
+ <button type="button" class="secondary" onclick={() => {
276
+ editMode = 'assignment';
277
+ editingAssignment = assignment;
278
+ }}>
279
+ Edit
280
+ </button>
281
+ {#if assignment.id}
282
+ <button type="button" class="secondary" onclick={() => void deleteAssignment(assignment.id)}>
283
+ Delete
284
+ </button>
285
+ {/if}
286
+ </div>
287
+ </article>
288
+ {/each}
289
+ </div>
290
+ </section>
291
+ </div>
292
+ {/if}
293
+ </div>
294
+
295
+ <style>
296
+ .governance-manager {
297
+ display: grid;
298
+ gap: 1rem;
299
+ }
300
+
301
+ .governance-manager__header,
302
+ .section-header,
303
+ .actions {
304
+ display: flex;
305
+ justify-content: space-between;
306
+ align-items: center;
307
+ gap: 0.75rem;
308
+ flex-wrap: wrap;
309
+ }
310
+
311
+ .governance-manager__grid {
312
+ display: grid;
313
+ gap: 1rem;
314
+ }
315
+
316
+ .list {
317
+ display: grid;
318
+ gap: 0.75rem;
319
+ margin-top: 0.75rem;
320
+ }
321
+
322
+ .card {
323
+ border: 1px solid var(--smrt-color-outline-variant);
324
+ border-radius: 0.75rem;
325
+ padding: 0.85rem;
326
+ display: flex;
327
+ justify-content: space-between;
328
+ gap: 0.75rem;
329
+ flex-wrap: wrap;
330
+ }
331
+
332
+ .card div:first-child {
333
+ display: grid;
334
+ gap: 0.35rem;
335
+ }
336
+
337
+ .error {
338
+ color: var(--smrt-color-error);
339
+ }
340
+ </style>
@@ -0,0 +1,11 @@
1
+ import { type ContentGovernanceDefinitionsData } from '../../mock-smrt-client';
2
+ import type { ContentGovernanceManagerClient } from '../governance-manager-client';
3
+ export interface Props {
4
+ apiBaseUrl?: string;
5
+ client?: ContentGovernanceManagerClient;
6
+ onChange?: (definitions: ContentGovernanceDefinitionsData | null) => void;
7
+ }
8
+ declare const ContentGovernanceManager: import("svelte").Component<Props, {}, "">;
9
+ type ContentGovernanceManager = ReturnType<typeof ContentGovernanceManager>;
10
+ export default ContentGovernanceManager;
11
+ //# sourceMappingURL=ContentGovernanceManager.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentGovernanceManager.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/ContentGovernanceManager.svelte.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,gCAAgC,EAItC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AASnF,MAAM,WAAW,KAAK;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,8BAA8B,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,gCAAgC,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3E;AAiRD,QAAA,MAAM,wBAAwB,2CAAwC,CAAC;AACvE,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC5E,eAAe,wBAAwB,CAAC"}