octocms 0.4.13 → 0.4.16

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 (796) hide show
  1. package/dist/admin/AdminApp.d.ts +1 -1
  2. package/dist/admin/AdminApp.js +2 -2
  3. package/dist/admin/AdminApp.js.map +1 -1
  4. package/dist/admin/actions/agent.d.ts +3 -3
  5. package/dist/admin/actions/agent.js.map +1 -1
  6. package/dist/admin/actions/media.d.ts.map +1 -1
  7. package/dist/admin/actions/media.js +3 -1
  8. package/dist/admin/actions/media.js.map +1 -1
  9. package/dist/admin/pages/AdminErrorView.d.ts.map +1 -1
  10. package/dist/admin/pages/AdminErrorView.js +9 -9
  11. package/dist/admin/pages/AdminErrorView.js.map +1 -1
  12. package/dist/admin/pages/AdminLayout.d.ts +1 -1
  13. package/dist/admin/pages/AdminLayout.d.ts.map +1 -1
  14. package/dist/admin/pages/AdminLayout.js +2 -2
  15. package/dist/admin/pages/AdminLayout.js.map +1 -1
  16. package/dist/admin/pages/ChatPage.d.ts +3 -3
  17. package/dist/admin/pages/ChatPage.d.ts.map +1 -1
  18. package/dist/admin/pages/ChatPage.js +8 -5
  19. package/dist/admin/pages/ChatPage.js.map +1 -1
  20. package/dist/admin/pages/CollectionPage.d.ts.map +1 -1
  21. package/dist/admin/pages/CollectionPage.js +5 -1
  22. package/dist/admin/pages/CollectionPage.js.map +1 -1
  23. package/dist/admin/pages/ContentModelPage.d.ts.map +1 -1
  24. package/dist/admin/pages/ContentModelPage.js +5 -1
  25. package/dist/admin/pages/ContentModelPage.js.map +1 -1
  26. package/dist/admin/pages/ContentPage.d.ts.map +1 -1
  27. package/dist/admin/pages/ContentPage.js +5 -1
  28. package/dist/admin/pages/ContentPage.js.map +1 -1
  29. package/dist/admin/pages/ContentTypePage.d.ts.map +1 -1
  30. package/dist/admin/pages/ContentTypePage.js +6 -2
  31. package/dist/admin/pages/ContentTypePage.js.map +1 -1
  32. package/dist/admin/pages/EntryPage.d.ts.map +1 -1
  33. package/dist/admin/pages/EntryPage.js +5 -1
  34. package/dist/admin/pages/EntryPage.js.map +1 -1
  35. package/dist/admin/pages/MediaAssetPage.d.ts.map +1 -1
  36. package/dist/admin/pages/MediaAssetPage.js +6 -2
  37. package/dist/admin/pages/MediaAssetPage.js.map +1 -1
  38. package/dist/admin/pages/MediaPage.d.ts.map +1 -1
  39. package/dist/admin/pages/MediaPage.js +6 -2
  40. package/dist/admin/pages/MediaPage.js.map +1 -1
  41. package/dist/admin/theme/toggle.d.ts.map +1 -1
  42. package/dist/admin/theme/toggle.js +27 -27
  43. package/dist/admin/theme/toggle.js.map +1 -1
  44. package/dist/agent/chatSetup.d.ts +19 -0
  45. package/dist/agent/chatSetup.d.ts.map +1 -0
  46. package/dist/agent/chatSetup.js +119 -0
  47. package/dist/agent/chatSetup.js.map +1 -0
  48. package/dist/agent/featureFlag.d.ts +3 -3
  49. package/dist/agent/featureFlag.js.map +1 -1
  50. package/dist/agent/index.cjs +75 -5309
  51. package/dist/agent/index.cjs.map +1 -1
  52. package/dist/{agentDocs-M3R2CPUQ.js → agentDocs-QZ4NOQVH.js} +2 -2
  53. package/dist/{chunk-DCDFWNC6.js → chunk-I7VNI2IG.js} +4 -7
  54. package/dist/{chunk-DCDFWNC6.js.map → chunk-I7VNI2IG.js.map} +1 -1
  55. package/dist/chunk-TOUAHFDW.js +7 -0
  56. package/dist/{chunk-NAHOP7TG.js.map → chunk-TOUAHFDW.js.map} +1 -1
  57. package/dist/cli/index.js +4 -4
  58. package/dist/cli/lib/templates.js +3 -6
  59. package/dist/cli/lib/templates.js.map +1 -1
  60. package/dist/components/Chat/ChatAgentSetup.d.ts +7 -0
  61. package/dist/components/Chat/ChatAgentSetup.d.ts.map +1 -0
  62. package/dist/components/Chat/ChatAgentSetup.js +37 -0
  63. package/dist/components/Chat/ChatAgentSetup.js.map +1 -0
  64. package/dist/components/Chat/ChatPage.d.ts +6 -1
  65. package/dist/components/Chat/ChatPage.d.ts.map +1 -1
  66. package/dist/components/Chat/ChatPage.js +123 -128
  67. package/dist/components/Chat/ChatPage.js.map +1 -1
  68. package/dist/components/Chat/ChatSidebar.d.ts +10 -0
  69. package/dist/components/Chat/ChatSidebar.d.ts.map +1 -0
  70. package/dist/components/Chat/ChatSidebar.js +45 -0
  71. package/dist/components/Chat/ChatSidebar.js.map +1 -0
  72. package/dist/components/Chat/Composer.d.ts.map +1 -1
  73. package/dist/components/Chat/Composer.js +28 -45
  74. package/dist/components/Chat/Composer.js.map +1 -1
  75. package/dist/components/Chat/Message.d.ts.map +1 -1
  76. package/dist/components/Chat/Message.js +40 -39
  77. package/dist/components/Chat/Message.js.map +1 -1
  78. package/dist/components/Chat/ProposalCard.d.ts.map +1 -1
  79. package/dist/components/Chat/ProposalCard.js +56 -67
  80. package/dist/components/Chat/ProposalCard.js.map +1 -1
  81. package/dist/components/Chat/ToolCallCard.d.ts.map +1 -1
  82. package/dist/components/Chat/ToolCallCard.js +29 -38
  83. package/dist/components/Chat/ToolCallCard.js.map +1 -1
  84. package/dist/components/Chat/chatStorage.d.ts +64 -0
  85. package/dist/components/Chat/chatStorage.d.ts.map +1 -0
  86. package/dist/components/Chat/chatStorage.js +154 -0
  87. package/dist/components/Chat/chatStorage.js.map +1 -0
  88. package/dist/components/Chat/useChatHistory.d.ts +12 -0
  89. package/dist/components/Chat/useChatHistory.d.ts.map +1 -0
  90. package/dist/components/Chat/useChatHistory.js +196 -0
  91. package/dist/components/Chat/useChatHistory.js.map +1 -0
  92. package/dist/components/Chat/useChatStream.d.ts +6 -0
  93. package/dist/components/Chat/useChatStream.d.ts.map +1 -1
  94. package/dist/components/Chat/useChatStream.js +31 -2
  95. package/dist/components/Chat/useChatStream.js.map +1 -1
  96. package/dist/components/CommandK/CommandK.d.ts +1 -1
  97. package/dist/components/CommandK/CommandK.d.ts.map +1 -1
  98. package/dist/components/CommandK/CommandK.js +100 -116
  99. package/dist/components/CommandK/CommandK.js.map +1 -1
  100. package/dist/components/CommandK/parts.d.ts.map +1 -1
  101. package/dist/components/CommandK/parts.js +9 -11
  102. package/dist/components/CommandK/parts.js.map +1 -1
  103. package/dist/components/ContentModel/ConditionalBranchesEditor.d.ts.map +1 -1
  104. package/dist/components/ContentModel/ConditionalBranchesEditor.js +40 -45
  105. package/dist/components/ContentModel/ConditionalBranchesEditor.js.map +1 -1
  106. package/dist/components/ContentModel/ContentModelList.d.ts.map +1 -1
  107. package/dist/components/ContentModel/ContentModelList.js +65 -80
  108. package/dist/components/ContentModel/ContentModelList.js.map +1 -1
  109. package/dist/components/ContentModel/ContentTypeDetail.d.ts.map +1 -1
  110. package/dist/components/ContentModel/ContentTypeDetail.js +253 -280
  111. package/dist/components/ContentModel/ContentTypeDetail.js.map +1 -1
  112. package/dist/components/ContentModel/CreateContentTypeDialog.d.ts.map +1 -1
  113. package/dist/components/ContentModel/CreateContentTypeDialog.js +42 -30
  114. package/dist/components/ContentModel/CreateContentTypeDialog.js.map +1 -1
  115. package/dist/components/ContentModel/DeleteContentTypeDialog.d.ts.map +1 -1
  116. package/dist/components/ContentModel/DeleteContentTypeDialog.js +14 -15
  117. package/dist/components/ContentModel/DeleteContentTypeDialog.js.map +1 -1
  118. package/dist/components/ContentModel/DeleteFieldDialog.d.ts.map +1 -1
  119. package/dist/components/ContentModel/DeleteFieldDialog.js +27 -20
  120. package/dist/components/ContentModel/DeleteFieldDialog.js.map +1 -1
  121. package/dist/components/ContentModel/EditContentTypeDialog.d.ts.map +1 -1
  122. package/dist/components/ContentModel/EditContentTypeDialog.js +46 -34
  123. package/dist/components/ContentModel/EditContentTypeDialog.js.map +1 -1
  124. package/dist/components/ContentModel/FieldDialog.d.ts.map +1 -1
  125. package/dist/components/ContentModel/FieldDialog.js +95 -84
  126. package/dist/components/ContentModel/FieldDialog.js.map +1 -1
  127. package/dist/components/ContentModel/RichTextOptionsEditor.d.ts.map +1 -1
  128. package/dist/components/ContentModel/RichTextOptionsEditor.js +90 -81
  129. package/dist/components/ContentModel/RichTextOptionsEditor.js.map +1 -1
  130. package/dist/components/ContentModel/SchemaImpactList.d.ts.map +1 -1
  131. package/dist/components/ContentModel/SchemaImpactList.js +19 -36
  132. package/dist/components/ContentModel/SchemaImpactList.js.map +1 -1
  133. package/dist/components/ContentModel/SchemaOptionFieldInput.d.ts.map +1 -1
  134. package/dist/components/ContentModel/SchemaOptionFieldInput.js +63 -84
  135. package/dist/components/ContentModel/SchemaOptionFieldInput.js.map +1 -1
  136. package/dist/components/ContentModel/skeletons/ContentModelListPageSkeleton.d.ts +3 -0
  137. package/dist/components/ContentModel/skeletons/ContentModelListPageSkeleton.d.ts.map +1 -0
  138. package/dist/components/ContentModel/skeletons/ContentModelListPageSkeleton.js +15 -0
  139. package/dist/components/ContentModel/skeletons/ContentModelListPageSkeleton.js.map +1 -0
  140. package/dist/components/ContentModel/skeletons/ContentTypeDetailPageSkeleton.d.ts +3 -0
  141. package/dist/components/ContentModel/skeletons/ContentTypeDetailPageSkeleton.d.ts.map +1 -0
  142. package/dist/components/ContentModel/skeletons/ContentTypeDetailPageSkeleton.js +11 -0
  143. package/dist/components/ContentModel/skeletons/ContentTypeDetailPageSkeleton.js.map +1 -0
  144. package/dist/components/ContentModel/skeletons/FieldTableSkeleton.js +3 -3
  145. package/dist/components/ContentModel/skeletons/FieldTableSkeleton.js.map +1 -1
  146. package/dist/components/ContentModel/skeletons/SchemaTableSkeleton.d.ts.map +1 -1
  147. package/dist/components/ContentModel/skeletons/SchemaTableSkeleton.js +4 -12
  148. package/dist/components/ContentModel/skeletons/SchemaTableSkeleton.js.map +1 -1
  149. package/dist/components/Dashboard/DashboardContent.d.ts.map +1 -1
  150. package/dist/components/Dashboard/DashboardContent.js +87 -114
  151. package/dist/components/Dashboard/DashboardContent.js.map +1 -1
  152. package/dist/components/Dashboard/RecentPullRequests.d.ts.map +1 -1
  153. package/dist/components/Dashboard/RecentPullRequests.js +33 -45
  154. package/dist/components/Dashboard/RecentPullRequests.js.map +1 -1
  155. package/dist/components/Dashboard/skeletons/ContentPageChromeSkeleton.d.ts +2 -7
  156. package/dist/components/Dashboard/skeletons/ContentPageChromeSkeleton.d.ts.map +1 -1
  157. package/dist/components/Dashboard/skeletons/ContentPageChromeSkeleton.js +5 -20
  158. package/dist/components/Dashboard/skeletons/ContentPageChromeSkeleton.js.map +1 -1
  159. package/dist/components/Dashboard/skeletons/ContentTableSkeleton.js +9 -9
  160. package/dist/components/Dashboard/skeletons/ContentTableSkeleton.js.map +1 -1
  161. package/dist/components/Dashboard/skeletons/DashboardCollectionPageSkeleton.d.ts +3 -0
  162. package/dist/components/Dashboard/skeletons/DashboardCollectionPageSkeleton.d.ts.map +1 -0
  163. package/dist/components/Dashboard/skeletons/DashboardCollectionPageSkeleton.js +10 -0
  164. package/dist/components/Dashboard/skeletons/DashboardCollectionPageSkeleton.js.map +1 -0
  165. package/dist/components/Dashboard/skeletons/DashboardPageSkeleton.d.ts +9 -0
  166. package/dist/components/Dashboard/skeletons/DashboardPageSkeleton.d.ts.map +1 -0
  167. package/dist/components/Dashboard/skeletons/DashboardPageSkeleton.js +16 -0
  168. package/dist/components/Dashboard/skeletons/DashboardPageSkeleton.js.map +1 -0
  169. package/dist/components/Dashboard/skeletons/LeftPanelSkeleton.d.ts.map +1 -1
  170. package/dist/components/Dashboard/skeletons/LeftPanelSkeleton.js +7 -18
  171. package/dist/components/Dashboard/skeletons/LeftPanelSkeleton.js.map +1 -1
  172. package/dist/components/DiffView/DiffHunk.d.ts.map +1 -1
  173. package/dist/components/DiffView/DiffHunk.js +12 -40
  174. package/dist/components/DiffView/DiffHunk.js.map +1 -1
  175. package/dist/components/DiffView/DiffView.d.ts.map +1 -1
  176. package/dist/components/DiffView/DiffView.js +33 -52
  177. package/dist/components/DiffView/DiffView.js.map +1 -1
  178. package/dist/components/EditPost/EditPost.d.ts.map +1 -1
  179. package/dist/components/EditPost/EditPost.js +139 -200
  180. package/dist/components/EditPost/EditPost.js.map +1 -1
  181. package/dist/components/EditPost/skeletons/EditPostPageSkeleton.d.ts +3 -0
  182. package/dist/components/EditPost/skeletons/EditPostPageSkeleton.d.ts.map +1 -0
  183. package/dist/components/EditPost/skeletons/EditPostPageSkeleton.js +21 -0
  184. package/dist/components/EditPost/skeletons/EditPostPageSkeleton.js.map +1 -0
  185. package/dist/components/EditPost/skeletons/EntryFormSkeleton.d.ts.map +1 -1
  186. package/dist/components/EditPost/skeletons/EntryFormSkeleton.js +1 -9
  187. package/dist/components/EditPost/skeletons/EntryFormSkeleton.js.map +1 -1
  188. package/dist/components/EditPost/skeletons/EntrySidebarSkeleton.d.ts.map +1 -1
  189. package/dist/components/EditPost/skeletons/EntrySidebarSkeleton.js +12 -20
  190. package/dist/components/EditPost/skeletons/EntrySidebarSkeleton.js.map +1 -1
  191. package/dist/components/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
  192. package/dist/components/{ErrorBoundary.js → ErrorBoundary/ErrorBoundary.js} +15 -21
  193. package/dist/components/ErrorBoundary/ErrorBoundary.js.map +1 -0
  194. package/dist/components/HistorySection/HistorySection.d.ts.map +1 -1
  195. package/dist/components/HistorySection/HistorySection.js +23 -42
  196. package/dist/components/HistorySection/HistorySection.js.map +1 -1
  197. package/dist/components/InlineEntryEditor/InlineEntryEditor.d.ts.map +1 -1
  198. package/dist/components/InlineEntryEditor/InlineEntryEditor.js +120 -123
  199. package/dist/components/InlineEntryEditor/InlineEntryEditor.js.map +1 -1
  200. package/dist/components/Layout/BranchSelectorDialog.d.ts +9 -0
  201. package/dist/components/Layout/BranchSelectorDialog.d.ts.map +1 -0
  202. package/dist/components/Layout/BranchSelectorDialog.js +130 -0
  203. package/dist/components/Layout/BranchSelectorDialog.js.map +1 -0
  204. package/dist/components/Layout/CreateBranchDialog.d.ts.map +1 -0
  205. package/dist/components/{CreateBranchDialog.js → Layout/CreateBranchDialog.js} +16 -16
  206. package/dist/components/Layout/CreateBranchDialog.js.map +1 -0
  207. package/dist/components/Layout/Layout.d.ts.map +1 -1
  208. package/dist/components/Layout/Layout.js +18 -26
  209. package/dist/components/Layout/Layout.js.map +1 -1
  210. package/dist/components/Layout/LeftNavItem.d.ts.map +1 -1
  211. package/dist/components/Layout/LeftNavItem.js +7 -7
  212. package/dist/components/Layout/LeftNavItem.js.map +1 -1
  213. package/dist/components/Layout/Page.d.ts +16 -0
  214. package/dist/components/Layout/Page.d.ts.map +1 -0
  215. package/dist/components/Layout/Page.js +47 -0
  216. package/dist/components/Layout/Page.js.map +1 -0
  217. package/dist/components/Layout/TopHeader.d.ts +1 -1
  218. package/dist/components/Layout/TopHeader.d.ts.map +1 -1
  219. package/dist/components/Layout/TopHeader.js +70 -165
  220. package/dist/components/Layout/TopHeader.js.map +1 -1
  221. package/dist/components/Layout/UserAccountDialog.d.ts +12 -0
  222. package/dist/components/Layout/UserAccountDialog.d.ts.map +1 -0
  223. package/dist/components/Layout/UserAccountDialog.js +48 -0
  224. package/dist/components/Layout/UserAccountDialog.js.map +1 -0
  225. package/dist/components/Layout/skeletons/AgentNavSkeleton.js +1 -1
  226. package/dist/components/Layout/skeletons/AgentNavSkeleton.js.map +1 -1
  227. package/dist/components/Layout/skeletons/BranchChipSkeleton.d.ts.map +1 -1
  228. package/dist/components/Layout/skeletons/BranchChipSkeleton.js +1 -8
  229. package/dist/components/Layout/skeletons/BranchChipSkeleton.js.map +1 -1
  230. package/dist/components/Layout/skeletons/NeutralPageSkeleton.d.ts +3 -0
  231. package/dist/components/Layout/skeletons/NeutralPageSkeleton.d.ts.map +1 -0
  232. package/dist/components/Layout/skeletons/NeutralPageSkeleton.js +11 -0
  233. package/dist/components/Layout/skeletons/NeutralPageSkeleton.js.map +1 -0
  234. package/dist/components/Layout/skeletons/PageChromeSkeleton.d.ts +19 -0
  235. package/dist/components/Layout/skeletons/PageChromeSkeleton.d.ts.map +1 -0
  236. package/dist/components/Layout/skeletons/PageChromeSkeleton.js +31 -0
  237. package/dist/components/Layout/skeletons/PageChromeSkeleton.js.map +1 -0
  238. package/dist/components/Layout/skeletons/RouteMainSlotSkeleton.d.ts +9 -0
  239. package/dist/components/Layout/skeletons/RouteMainSlotSkeleton.d.ts.map +1 -0
  240. package/dist/components/Layout/skeletons/RouteMainSlotSkeleton.js +15 -0
  241. package/dist/components/Layout/skeletons/RouteMainSlotSkeleton.js.map +1 -0
  242. package/dist/components/Layout/skeletons/TopHeaderSkeleton.d.ts.map +1 -1
  243. package/dist/components/Layout/skeletons/TopHeaderSkeleton.js +10 -17
  244. package/dist/components/Layout/skeletons/TopHeaderSkeleton.js.map +1 -1
  245. package/dist/components/Layout/skeletons/routeSkeletons.d.ts +16 -0
  246. package/dist/components/Layout/skeletons/routeSkeletons.d.ts.map +1 -0
  247. package/dist/components/Layout/skeletons/routeSkeletons.js +48 -0
  248. package/dist/components/Layout/skeletons/routeSkeletons.js.map +1 -0
  249. package/dist/components/LinkedBySection/LinkedBySection.js +13 -13
  250. package/dist/components/LinkedBySection/LinkedBySection.js.map +1 -1
  251. package/dist/components/MediaAsset/MediaAsset.d.ts +1 -1
  252. package/dist/components/MediaAsset/MediaAsset.d.ts.map +1 -1
  253. package/dist/components/MediaAsset/MediaAsset.js +126 -136
  254. package/dist/components/MediaAsset/MediaAsset.js.map +1 -1
  255. package/dist/components/MediaAsset/skeletons/MediaAssetPageSkeleton.d.ts +3 -0
  256. package/dist/components/MediaAsset/skeletons/MediaAssetPageSkeleton.d.ts.map +1 -0
  257. package/dist/components/MediaAsset/skeletons/MediaAssetPageSkeleton.js +21 -0
  258. package/dist/components/MediaAsset/skeletons/MediaAssetPageSkeleton.js.map +1 -0
  259. package/dist/components/MediaAsset/skeletons/MediaMetadataFormSkeleton.d.ts.map +1 -1
  260. package/dist/components/MediaAsset/skeletons/MediaMetadataFormSkeleton.js +26 -22
  261. package/dist/components/MediaAsset/skeletons/MediaMetadataFormSkeleton.js.map +1 -1
  262. package/dist/components/MediaAsset/skeletons/MediaPreviewSkeleton.d.ts.map +1 -1
  263. package/dist/components/MediaAsset/skeletons/MediaPreviewSkeleton.js +1 -9
  264. package/dist/components/MediaAsset/skeletons/MediaPreviewSkeleton.js.map +1 -1
  265. package/dist/components/MediaManager/CreateFolderDialog.d.ts.map +1 -1
  266. package/dist/components/MediaManager/CreateFolderDialog.js +15 -8
  267. package/dist/components/MediaManager/CreateFolderDialog.js.map +1 -1
  268. package/dist/components/MediaManager/DeleteFolderDialog.d.ts.map +1 -1
  269. package/dist/components/MediaManager/DeleteFolderDialog.js +1 -2
  270. package/dist/components/MediaManager/DeleteFolderDialog.js.map +1 -1
  271. package/dist/components/MediaManager/MarkdownImageEditToolbar.d.ts.map +1 -1
  272. package/dist/components/MediaManager/MarkdownImageEditToolbar.js +7 -9
  273. package/dist/components/MediaManager/MarkdownImageEditToolbar.js.map +1 -1
  274. package/dist/components/MediaManager/MarkdownInsertImageDialog.d.ts.map +1 -1
  275. package/dist/components/MediaManager/MarkdownInsertImageDialog.js +6 -9
  276. package/dist/components/MediaManager/MarkdownInsertImageDialog.js.map +1 -1
  277. package/dist/components/MediaManager/MediaLeftPanel.d.ts.map +1 -1
  278. package/dist/components/MediaManager/MediaLeftPanel.js +21 -23
  279. package/dist/components/MediaManager/MediaLeftPanel.js.map +1 -1
  280. package/dist/components/MediaManager/MediaListTable.d.ts.map +1 -1
  281. package/dist/components/MediaManager/MediaListTable.js +15 -21
  282. package/dist/components/MediaManager/MediaListTable.js.map +1 -1
  283. package/dist/components/MediaManager/MediaManager.d.ts.map +1 -1
  284. package/dist/components/MediaManager/MediaManager.js +101 -151
  285. package/dist/components/MediaManager/MediaManager.js.map +1 -1
  286. package/dist/components/MediaManager/MediaSelectDialog.js +22 -64
  287. package/dist/components/MediaManager/MediaSelectDialog.js.map +1 -1
  288. package/dist/components/MediaManager/MediaUploadBar.d.ts.map +1 -1
  289. package/dist/components/MediaManager/MediaUploadBar.js +9 -10
  290. package/dist/components/MediaManager/MediaUploadBar.js.map +1 -1
  291. package/dist/components/MediaManager/MediaUploadDialog.d.ts.map +1 -1
  292. package/dist/components/MediaManager/MediaUploadDialog.js +18 -11
  293. package/dist/components/MediaManager/MediaUploadDialog.js.map +1 -1
  294. package/dist/components/MediaManager/MediaViewModeSwitcher.d.ts +8 -0
  295. package/dist/components/MediaManager/MediaViewModeSwitcher.d.ts.map +1 -0
  296. package/dist/components/MediaManager/MediaViewModeSwitcher.js +14 -0
  297. package/dist/components/MediaManager/MediaViewModeSwitcher.js.map +1 -0
  298. package/dist/components/MediaManager/skeletons/MediaGridSkeleton.d.ts.map +1 -1
  299. package/dist/components/MediaManager/skeletons/MediaGridSkeleton.js +4 -12
  300. package/dist/components/MediaManager/skeletons/MediaGridSkeleton.js.map +1 -1
  301. package/dist/components/MediaManager/skeletons/MediaLeftPanelSkeleton.d.ts.map +1 -1
  302. package/dist/components/MediaManager/skeletons/MediaLeftPanelSkeleton.js +5 -13
  303. package/dist/components/MediaManager/skeletons/MediaLeftPanelSkeleton.js.map +1 -1
  304. package/dist/components/MediaManager/skeletons/MediaListTableSkeleton.d.ts.map +1 -1
  305. package/dist/components/MediaManager/skeletons/MediaListTableSkeleton.js +7 -15
  306. package/dist/components/MediaManager/skeletons/MediaListTableSkeleton.js.map +1 -1
  307. package/dist/components/MediaManager/skeletons/MediaManagerMainSkeleton.d.ts +3 -0
  308. package/dist/components/MediaManager/skeletons/MediaManagerMainSkeleton.d.ts.map +1 -0
  309. package/dist/components/MediaManager/skeletons/MediaManagerMainSkeleton.js +15 -0
  310. package/dist/components/MediaManager/skeletons/MediaManagerMainSkeleton.js.map +1 -0
  311. package/dist/components/MediaManager/skeletons/MediaManagerPageSkeleton.d.ts +3 -0
  312. package/dist/components/MediaManager/skeletons/MediaManagerPageSkeleton.d.ts.map +1 -0
  313. package/dist/components/MediaManager/skeletons/MediaManagerPageSkeleton.js +21 -0
  314. package/dist/components/MediaManager/skeletons/MediaManagerPageSkeleton.js.map +1 -0
  315. package/dist/components/public/MarkdownContent.d.ts.map +1 -1
  316. package/dist/components/public/MarkdownContent.js +1 -2
  317. package/dist/components/public/MarkdownContent.js.map +1 -1
  318. package/dist/components/public/RichTextContent.d.ts.map +1 -1
  319. package/dist/components/public/RichTextContent.js +19 -8
  320. package/dist/components/public/RichTextContent.js.map +1 -1
  321. package/dist/components/public/SearchBox.d.ts.map +1 -1
  322. package/dist/components/public/SearchBox.js +32 -60
  323. package/dist/components/public/SearchBox.js.map +1 -1
  324. package/dist/components/public/index.cjs +6 -413
  325. package/dist/components/public/index.cjs.map +1 -1
  326. package/dist/components/skeletons/MainSlotSkeleton.d.ts +0 -7
  327. package/dist/components/skeletons/MainSlotSkeleton.d.ts.map +1 -1
  328. package/dist/components/skeletons/MainSlotSkeleton.js +4 -17
  329. package/dist/components/skeletons/MainSlotSkeleton.js.map +1 -1
  330. package/dist/components/skeletons/blocks.d.ts.map +1 -1
  331. package/dist/components/skeletons/blocks.js +15 -7
  332. package/dist/components/skeletons/blocks.js.map +1 -1
  333. package/dist/components/skeletons/index.d.ts +4 -4
  334. package/dist/components/skeletons/index.d.ts.map +1 -1
  335. package/dist/components/skeletons/index.js +1 -2
  336. package/dist/components/skeletons/index.js.map +1 -1
  337. package/dist/components/skeletons/primitives.d.ts +2 -2
  338. package/dist/components/skeletons/primitives.d.ts.map +1 -1
  339. package/dist/components/skeletons/primitives.js +3 -3
  340. package/dist/components/skeletons/primitives.js.map +1 -1
  341. package/dist/components/test/dndTestUtils.d.ts +7 -0
  342. package/dist/components/test/dndTestUtils.d.ts.map +1 -0
  343. package/dist/components/test/dndTestUtils.js +15 -0
  344. package/dist/components/test/dndTestUtils.js.map +1 -0
  345. package/dist/components/ui/Avatar/Avatar.d.ts +5 -0
  346. package/dist/components/ui/Avatar/Avatar.d.ts.map +1 -0
  347. package/dist/components/ui/Avatar/Avatar.js +63 -0
  348. package/dist/components/ui/Avatar/Avatar.js.map +1 -0
  349. package/dist/components/ui/{branch-chip.d.ts → BranchChip/BranchChip.d.ts} +2 -5
  350. package/dist/components/ui/BranchChip/BranchChip.d.ts.map +1 -0
  351. package/dist/components/ui/BranchChip/BranchChip.js +47 -0
  352. package/dist/components/ui/BranchChip/BranchChip.js.map +1 -0
  353. package/dist/components/ui/Button/Button.d.ts +15 -0
  354. package/dist/components/ui/Button/Button.d.ts.map +1 -0
  355. package/dist/components/ui/Button/Button.js +49 -0
  356. package/dist/components/ui/Button/Button.js.map +1 -0
  357. package/dist/components/ui/Card/Card.d.ts +6 -0
  358. package/dist/components/ui/Card/Card.d.ts.map +1 -0
  359. package/dist/components/ui/{card.js → Card/Card.js} +12 -22
  360. package/dist/components/ui/Card/Card.js.map +1 -0
  361. package/dist/components/ui/{chip.d.ts → Chip/Chip.d.ts} +1 -1
  362. package/dist/components/ui/Chip/Chip.d.ts.map +1 -0
  363. package/dist/components/ui/Chip/Chip.js +24 -0
  364. package/dist/components/ui/Chip/Chip.js.map +1 -0
  365. package/dist/components/ui/Dialog/Dialog.d.ts +32 -0
  366. package/dist/components/ui/Dialog/Dialog.d.ts.map +1 -0
  367. package/dist/components/ui/Dialog/Dialog.js +194 -0
  368. package/dist/components/ui/Dialog/Dialog.js.map +1 -0
  369. package/dist/components/ui/DropdownMenu/DropdownMenu.d.ts +66 -0
  370. package/dist/components/ui/DropdownMenu/DropdownMenu.d.ts.map +1 -0
  371. package/dist/components/ui/DropdownMenu/DropdownMenu.js +308 -0
  372. package/dist/components/ui/DropdownMenu/DropdownMenu.js.map +1 -0
  373. package/dist/components/ui/{field.d.ts → FormField/Field.d.ts} +1 -1
  374. package/dist/components/ui/FormField/Field.d.ts.map +1 -0
  375. package/dist/components/ui/FormField/Field.js +41 -0
  376. package/dist/components/ui/FormField/Field.js.map +1 -0
  377. package/dist/components/{FieldShell.d.ts → ui/FormField/FieldShell.d.ts} +2 -2
  378. package/dist/components/ui/FormField/FieldShell.d.ts.map +1 -0
  379. package/dist/components/ui/FormField/FieldShell.js +29 -0
  380. package/dist/components/ui/FormField/FieldShell.js.map +1 -0
  381. package/dist/components/ui/FormField/FormBooleanField.d.ts.map +1 -0
  382. package/dist/components/ui/FormField/FormBooleanField.js +56 -0
  383. package/dist/components/ui/FormField/FormBooleanField.js.map +1 -0
  384. package/dist/components/ui/FormField/FormColorField.d.ts.map +1 -0
  385. package/dist/components/{FormColorField.js → ui/FormField/FormColorField.js} +10 -13
  386. package/dist/components/ui/FormField/FormColorField.js.map +1 -0
  387. package/dist/components/{FormConditionalField.d.ts → ui/FormField/FormConditionalField.d.ts} +1 -1
  388. package/dist/components/ui/FormField/FormConditionalField.d.ts.map +1 -0
  389. package/dist/components/{FormConditionalField.js → ui/FormField/FormConditionalField.js} +61 -58
  390. package/dist/components/ui/FormField/FormConditionalField.js.map +1 -0
  391. package/dist/components/ui/FormField/FormDatetimeField.d.ts.map +1 -0
  392. package/dist/components/ui/FormField/FormDatetimeField.js +48 -0
  393. package/dist/components/ui/FormField/FormDatetimeField.js.map +1 -0
  394. package/dist/components/{FormFields.d.ts → ui/FormField/FormFields.d.ts} +1 -1
  395. package/dist/components/ui/FormField/FormFields.d.ts.map +1 -0
  396. package/dist/components/{FormFields.js → ui/FormField/FormFields.js} +6 -6
  397. package/dist/components/ui/FormField/FormFields.js.map +1 -0
  398. package/dist/components/{FormImageField.d.ts → ui/FormField/FormImageField.d.ts} +1 -1
  399. package/dist/components/ui/FormField/FormImageField.d.ts.map +1 -0
  400. package/dist/components/{FormImageField.js → ui/FormField/FormImageField.js} +25 -30
  401. package/dist/components/ui/FormField/FormImageField.js.map +1 -0
  402. package/dist/components/ui/FormField/FormJsonField.d.ts.map +1 -0
  403. package/dist/components/{FormJsonField.js → ui/FormField/FormJsonField.js} +7 -10
  404. package/dist/components/ui/FormField/FormJsonField.js.map +1 -0
  405. package/dist/components/ui/FormField/FormMarkdownField.d.ts.map +1 -0
  406. package/dist/components/{FormMarkdownField.js → ui/FormField/FormMarkdownField.js} +11 -20
  407. package/dist/components/ui/FormField/FormMarkdownField.js.map +1 -0
  408. package/dist/components/ui/FormField/FormNumberField.d.ts.map +1 -0
  409. package/dist/components/ui/FormField/FormNumberField.js +38 -0
  410. package/dist/components/ui/FormField/FormNumberField.js.map +1 -0
  411. package/dist/components/{FormReferenceField.d.ts → ui/FormField/FormReferenceField.d.ts} +1 -1
  412. package/dist/components/ui/FormField/FormReferenceField.d.ts.map +1 -0
  413. package/dist/components/{FormReferenceField.js → ui/FormField/FormReferenceField.js} +109 -118
  414. package/dist/components/ui/FormField/FormReferenceField.js.map +1 -0
  415. package/dist/components/{FormRichTextField.d.ts → ui/FormField/FormRichTextField.d.ts} +1 -1
  416. package/dist/components/ui/FormField/FormRichTextField.d.ts.map +1 -0
  417. package/dist/components/{FormRichTextField.js → ui/FormField/FormRichTextField.js} +28 -33
  418. package/dist/components/ui/FormField/FormRichTextField.js.map +1 -0
  419. package/dist/components/{FormSelectField.d.ts → ui/FormField/FormSelectField.d.ts} +1 -1
  420. package/dist/components/ui/FormField/FormSelectField.d.ts.map +1 -0
  421. package/dist/components/{FormSelectField.js → ui/FormField/FormSelectField.js} +11 -23
  422. package/dist/components/ui/FormField/FormSelectField.js.map +1 -0
  423. package/dist/components/ui/FormField/FormSlugField.d.ts.map +1 -0
  424. package/dist/components/{FormSlugField.js → ui/FormField/FormSlugField.js} +21 -26
  425. package/dist/components/ui/FormField/FormSlugField.js.map +1 -0
  426. package/dist/components/ui/FormField/FormStringField.d.ts.map +1 -0
  427. package/dist/components/ui/FormField/FormStringField.js +23 -0
  428. package/dist/components/ui/FormField/FormStringField.js.map +1 -0
  429. package/dist/components/ui/FormField/FormStringListField.d.ts.map +1 -0
  430. package/dist/components/{FormStringListField.js → ui/FormField/FormStringListField.js} +14 -25
  431. package/dist/components/ui/FormField/FormStringListField.js.map +1 -0
  432. package/dist/components/ui/FormField/FormTextField.d.ts.map +1 -0
  433. package/dist/components/ui/FormField/FormTextField.js +35 -0
  434. package/dist/components/ui/FormField/FormTextField.js.map +1 -0
  435. package/dist/components/ui/FormField/FormUrlField.d.ts.map +1 -0
  436. package/dist/components/ui/FormField/FormUrlField.js +26 -0
  437. package/dist/components/ui/FormField/FormUrlField.js.map +1 -0
  438. package/dist/components/{richtext → ui/FormField/richtext}/ComponentEmbedEditor.d.ts +1 -1
  439. package/dist/components/ui/FormField/richtext/ComponentEmbedEditor.d.ts.map +1 -0
  440. package/dist/components/ui/FormField/richtext/ComponentEmbedEditor.js +165 -0
  441. package/dist/components/ui/FormField/richtext/ComponentEmbedEditor.js.map +1 -0
  442. package/dist/components/ui/FormField/richtext/ConditionEmbedEditor.d.ts.map +1 -0
  443. package/dist/components/{richtext → ui/FormField/richtext}/ConditionEmbedEditor.js +25 -39
  444. package/dist/components/ui/FormField/richtext/ConditionEmbedEditor.js.map +1 -0
  445. package/dist/components/ui/FormField/richtext/ImageEmbedEditor.d.ts.map +1 -0
  446. package/dist/components/{richtext → ui/FormField/richtext}/ImageEmbedEditor.js +77 -56
  447. package/dist/components/ui/FormField/richtext/ImageEmbedEditor.js.map +1 -0
  448. package/dist/components/ui/FormField/richtext/ReferenceEmbedEditor.d.ts.map +1 -0
  449. package/dist/components/{richtext → ui/FormField/richtext}/ReferenceEmbedEditor.js +55 -43
  450. package/dist/components/ui/FormField/richtext/ReferenceEmbedEditor.js.map +1 -0
  451. package/dist/components/ui/FormField/richtext/SlashCommandMenu.d.ts.map +1 -0
  452. package/dist/components/{richtext → ui/FormField/richtext}/SlashCommandMenu.js +21 -33
  453. package/dist/components/ui/FormField/richtext/SlashCommandMenu.js.map +1 -0
  454. package/dist/components/ui/FormField/richtext/VariableEmbedEditor.d.ts.map +1 -0
  455. package/dist/components/ui/FormField/richtext/VariableEmbedEditor.js +61 -0
  456. package/dist/components/ui/FormField/richtext/VariableEmbedEditor.js.map +1 -0
  457. package/dist/components/ui/Icon/Icon.d.ts +77 -0
  458. package/dist/components/ui/Icon/Icon.d.ts.map +1 -0
  459. package/dist/components/ui/Icon/Icon.js +618 -0
  460. package/dist/components/ui/Icon/Icon.js.map +1 -0
  461. package/dist/components/ui/{input.d.ts → Input/Input.d.ts} +1 -1
  462. package/dist/components/ui/Input/Input.d.ts.map +1 -0
  463. package/dist/components/ui/Input/Input.js +25 -0
  464. package/dist/components/ui/Input/Input.js.map +1 -0
  465. package/dist/components/ui/{kbd.d.ts → Kbd/Kbd.d.ts} +1 -1
  466. package/dist/components/ui/Kbd/Kbd.d.ts.map +1 -0
  467. package/dist/components/ui/Kbd/Kbd.js +19 -0
  468. package/dist/components/ui/Kbd/Kbd.js.map +1 -0
  469. package/dist/components/ui/Label/Label.d.ts +3 -0
  470. package/dist/components/ui/Label/Label.d.ts.map +1 -0
  471. package/dist/components/ui/Label/Label.js +20 -0
  472. package/dist/components/ui/Label/Label.js.map +1 -0
  473. package/dist/components/ui/Portal/Portal.d.ts +8 -0
  474. package/dist/components/ui/Portal/Portal.d.ts.map +1 -0
  475. package/dist/components/ui/Portal/Portal.js +14 -0
  476. package/dist/components/ui/Portal/Portal.js.map +1 -0
  477. package/dist/components/ui/Select/Select.d.ts +33 -0
  478. package/dist/components/ui/Select/Select.d.ts.map +1 -0
  479. package/dist/components/ui/Select/Select.js +280 -0
  480. package/dist/components/ui/Select/Select.js.map +1 -0
  481. package/dist/components/ui/Slot/Slot.d.ts +6 -0
  482. package/dist/components/ui/Slot/Slot.d.ts.map +1 -0
  483. package/dist/components/ui/Slot/Slot.js +39 -0
  484. package/dist/components/ui/Slot/Slot.js.map +1 -0
  485. package/dist/components/ui/{status-badge.d.ts → StatusBadge/StatusBadge.d.ts} +2 -2
  486. package/dist/components/ui/StatusBadge/StatusBadge.d.ts.map +1 -0
  487. package/dist/components/ui/{status-badge.js → StatusBadge/StatusBadge.js} +8 -9
  488. package/dist/components/ui/StatusBadge/StatusBadge.js.map +1 -0
  489. package/dist/components/ui/Switcher/Switcher.d.ts +9 -0
  490. package/dist/components/ui/Switcher/Switcher.d.ts.map +1 -0
  491. package/dist/components/ui/Switcher/Switcher.js +75 -0
  492. package/dist/components/ui/Switcher/Switcher.js.map +1 -0
  493. package/dist/components/ui/{table.d.ts → Table/Table.d.ts} +1 -1
  494. package/dist/components/ui/Table/Table.d.ts.map +1 -0
  495. package/dist/components/ui/{table.js → Table/Table.js} +11 -29
  496. package/dist/components/ui/Table/Table.js.map +1 -0
  497. package/dist/components/ui/Tabs/Tabs.d.ts +16 -0
  498. package/dist/components/ui/Tabs/Tabs.d.ts.map +1 -0
  499. package/dist/components/ui/Tabs/Tabs.js +96 -0
  500. package/dist/components/ui/Tabs/Tabs.js.map +1 -0
  501. package/dist/components/ui/{textarea.d.ts → Textarea/Textarea.d.ts} +1 -1
  502. package/dist/components/ui/Textarea/Textarea.d.ts.map +1 -0
  503. package/dist/components/ui/Textarea/Textarea.js +16 -0
  504. package/dist/components/ui/Textarea/Textarea.js.map +1 -0
  505. package/dist/components/ui/Toast/Toast.d.ts +21 -0
  506. package/dist/components/ui/Toast/Toast.d.ts.map +1 -0
  507. package/dist/components/ui/Toast/Toast.js +98 -0
  508. package/dist/components/ui/Toast/Toast.js.map +1 -0
  509. package/dist/components/ui/{toaster.d.ts → Toaster/Toaster.d.ts} +1 -1
  510. package/dist/components/ui/Toaster/Toaster.d.ts.map +1 -0
  511. package/dist/components/ui/Toaster/Toaster.js +27 -0
  512. package/dist/components/ui/Toaster/Toaster.js.map +1 -0
  513. package/dist/components/ui/index.d.ts +45 -31
  514. package/dist/components/ui/index.d.ts.map +1 -1
  515. package/dist/components/ui/index.js +76 -36
  516. package/dist/components/ui/index.js.map +1 -1
  517. package/dist/config.cjs +4 -99
  518. package/dist/config.cjs.map +1 -1
  519. package/dist/defineConfig.cjs +0 -2
  520. package/dist/defineConfig.cjs.map +1 -1
  521. package/dist/globals.css +9648 -430
  522. package/dist/hooks/useComposedRefs.d.ts +5 -0
  523. package/dist/hooks/useComposedRefs.d.ts.map +1 -0
  524. package/dist/hooks/useComposedRefs.js +23 -0
  525. package/dist/hooks/useComposedRefs.js.map +1 -0
  526. package/dist/hooks/useControllableState.d.ts +8 -0
  527. package/dist/hooks/useControllableState.d.ts.map +1 -0
  528. package/dist/hooks/useControllableState.js +28 -0
  529. package/dist/hooks/useControllableState.js.map +1 -0
  530. package/dist/hooks/usePopoverContent.d.ts +26 -0
  531. package/dist/hooks/usePopoverContent.d.ts.map +1 -0
  532. package/dist/hooks/usePopoverContent.js +44 -0
  533. package/dist/hooks/usePopoverContent.js.map +1 -0
  534. package/dist/hooks/useToast.d.ts +4 -4
  535. package/dist/hooks/useToast.d.ts.map +1 -1
  536. package/dist/hooks/useToast.js +1 -3
  537. package/dist/hooks/useToast.js.map +1 -1
  538. package/dist/index.cjs +11 -9506
  539. package/dist/index.cjs.map +1 -1
  540. package/dist/{init-KWH66PKY.js → init-KNIWQGJL.js} +3 -18
  541. package/dist/init-KNIWQGJL.js.map +1 -0
  542. package/dist/lib/configStore.cjs +1 -3
  543. package/dist/lib/configStore.cjs.map +1 -1
  544. package/dist/lib/slugField.d.ts.map +1 -1
  545. package/dist/lib/slugField.js +3 -3
  546. package/dist/lib/slugField.js.map +1 -1
  547. package/dist/lib/slugify.d.ts +13 -0
  548. package/dist/lib/slugify.d.ts.map +1 -0
  549. package/dist/lib/slugify.js +8 -0
  550. package/dist/lib/slugify.js.map +1 -0
  551. package/dist/lib/utils.d.ts +5 -9
  552. package/dist/lib/utils.d.ts.map +1 -1
  553. package/dist/lib/utils.js +29 -3
  554. package/dist/lib/utils.js.map +1 -1
  555. package/dist/query.cjs +58 -9011
  556. package/dist/query.cjs.map +1 -1
  557. package/dist/types.cjs +0 -2
  558. package/dist/types.cjs.map +1 -1
  559. package/dist/types.d.ts +3 -1
  560. package/dist/types.d.ts.map +1 -1
  561. package/dist/{update-QNJRYPMC.js → update-QALIQG76.js} +2 -2
  562. package/dist/withOctoCMS.cjs +2 -36
  563. package/dist/withOctoCMS.cjs.map +1 -1
  564. package/globals.css +9648 -430
  565. package/package.json +1 -16
  566. package/dist/chunk-NAHOP7TG.js +0 -7
  567. package/dist/components/ContentModel/ContentModelList.skeleton.d.ts +0 -5
  568. package/dist/components/ContentModel/ContentModelList.skeleton.d.ts.map +0 -1
  569. package/dist/components/ContentModel/ContentModelList.skeleton.js +0 -16
  570. package/dist/components/ContentModel/ContentModelList.skeleton.js.map +0 -1
  571. package/dist/components/ContentModel/ContentTypeDetail.skeleton.d.ts +0 -5
  572. package/dist/components/ContentModel/ContentTypeDetail.skeleton.d.ts.map +0 -1
  573. package/dist/components/ContentModel/ContentTypeDetail.skeleton.js +0 -22
  574. package/dist/components/ContentModel/ContentTypeDetail.skeleton.js.map +0 -1
  575. package/dist/components/ContentTypes.d.ts +0 -7
  576. package/dist/components/ContentTypes.d.ts.map +0 -1
  577. package/dist/components/ContentTypes.js +0 -132
  578. package/dist/components/ContentTypes.js.map +0 -1
  579. package/dist/components/CreateBranchDialog.d.ts.map +0 -1
  580. package/dist/components/CreateBranchDialog.js.map +0 -1
  581. package/dist/components/Dashboard/DashboardContent.collection.skeleton.d.ts +0 -3
  582. package/dist/components/Dashboard/DashboardContent.collection.skeleton.d.ts.map +0 -1
  583. package/dist/components/Dashboard/DashboardContent.collection.skeleton.js +0 -10
  584. package/dist/components/Dashboard/DashboardContent.collection.skeleton.js.map +0 -1
  585. package/dist/components/Dashboard/DashboardContent.list.skeleton.d.ts +0 -7
  586. package/dist/components/Dashboard/DashboardContent.list.skeleton.d.ts.map +0 -1
  587. package/dist/components/Dashboard/DashboardContent.list.skeleton.js +0 -22
  588. package/dist/components/Dashboard/DashboardContent.list.skeleton.js.map +0 -1
  589. package/dist/components/Dashboard/DashboardContent.skeleton.d.ts +0 -2
  590. package/dist/components/Dashboard/DashboardContent.skeleton.d.ts.map +0 -1
  591. package/dist/components/Dashboard/DashboardContent.skeleton.js +0 -13
  592. package/dist/components/Dashboard/DashboardContent.skeleton.js.map +0 -1
  593. package/dist/components/EditPost/EditPost.skeleton.d.ts +0 -5
  594. package/dist/components/EditPost/EditPost.skeleton.d.ts.map +0 -1
  595. package/dist/components/EditPost/EditPost.skeleton.js +0 -34
  596. package/dist/components/EditPost/EditPost.skeleton.js.map +0 -1
  597. package/dist/components/ErrorBoundary.d.ts.map +0 -1
  598. package/dist/components/ErrorBoundary.js.map +0 -1
  599. package/dist/components/FieldHintAndError.d.ts +0 -8
  600. package/dist/components/FieldHintAndError.d.ts.map +0 -1
  601. package/dist/components/FieldHintAndError.js +0 -14
  602. package/dist/components/FieldHintAndError.js.map +0 -1
  603. package/dist/components/FieldLabel.d.ts +0 -11
  604. package/dist/components/FieldLabel.d.ts.map +0 -1
  605. package/dist/components/FieldLabel.js +0 -17
  606. package/dist/components/FieldLabel.js.map +0 -1
  607. package/dist/components/FieldShell.d.ts.map +0 -1
  608. package/dist/components/FieldShell.js +0 -29
  609. package/dist/components/FieldShell.js.map +0 -1
  610. package/dist/components/FileExplorer/FileExplorer.d.ts +0 -8
  611. package/dist/components/FileExplorer/FileExplorer.d.ts.map +0 -1
  612. package/dist/components/FileExplorer/FileExplorer.js +0 -68
  613. package/dist/components/FileExplorer/FileExplorer.js.map +0 -1
  614. package/dist/components/FormBooleanField.d.ts.map +0 -1
  615. package/dist/components/FormBooleanField.js +0 -52
  616. package/dist/components/FormBooleanField.js.map +0 -1
  617. package/dist/components/FormColorField.d.ts.map +0 -1
  618. package/dist/components/FormColorField.js.map +0 -1
  619. package/dist/components/FormConditionalField.d.ts.map +0 -1
  620. package/dist/components/FormConditionalField.js.map +0 -1
  621. package/dist/components/FormDatetimeField.d.ts.map +0 -1
  622. package/dist/components/FormDatetimeField.js +0 -42
  623. package/dist/components/FormDatetimeField.js.map +0 -1
  624. package/dist/components/FormFields.d.ts.map +0 -1
  625. package/dist/components/FormFields.js.map +0 -1
  626. package/dist/components/FormImageField.d.ts.map +0 -1
  627. package/dist/components/FormImageField.js.map +0 -1
  628. package/dist/components/FormJsonField.d.ts.map +0 -1
  629. package/dist/components/FormJsonField.js.map +0 -1
  630. package/dist/components/FormMarkdownField.d.ts.map +0 -1
  631. package/dist/components/FormMarkdownField.js.map +0 -1
  632. package/dist/components/FormNumberField.d.ts.map +0 -1
  633. package/dist/components/FormNumberField.js +0 -43
  634. package/dist/components/FormNumberField.js.map +0 -1
  635. package/dist/components/FormReferenceField.d.ts.map +0 -1
  636. package/dist/components/FormReferenceField.js.map +0 -1
  637. package/dist/components/FormRichTextField.d.ts.map +0 -1
  638. package/dist/components/FormRichTextField.js.map +0 -1
  639. package/dist/components/FormSelectField.d.ts.map +0 -1
  640. package/dist/components/FormSelectField.js.map +0 -1
  641. package/dist/components/FormSlugField.d.ts.map +0 -1
  642. package/dist/components/FormSlugField.js.map +0 -1
  643. package/dist/components/FormStringField.d.ts.map +0 -1
  644. package/dist/components/FormStringField.js +0 -28
  645. package/dist/components/FormStringField.js.map +0 -1
  646. package/dist/components/FormStringListField.d.ts.map +0 -1
  647. package/dist/components/FormStringListField.js.map +0 -1
  648. package/dist/components/FormTextField.d.ts.map +0 -1
  649. package/dist/components/FormTextField.js +0 -40
  650. package/dist/components/FormTextField.js.map +0 -1
  651. package/dist/components/FormUrlField.d.ts.map +0 -1
  652. package/dist/components/FormUrlField.js +0 -31
  653. package/dist/components/FormUrlField.js.map +0 -1
  654. package/dist/components/Layout/PageBar.d.ts +0 -10
  655. package/dist/components/Layout/PageBar.d.ts.map +0 -1
  656. package/dist/components/Layout/PageBar.js +0 -43
  657. package/dist/components/Layout/PageBar.js.map +0 -1
  658. package/dist/components/Layout/PageShell.d.ts +0 -30
  659. package/dist/components/Layout/PageShell.d.ts.map +0 -1
  660. package/dist/components/Layout/PageShell.js +0 -33
  661. package/dist/components/Layout/PageShell.js.map +0 -1
  662. package/dist/components/MediaAsset/MediaAsset.skeleton.d.ts +0 -3
  663. package/dist/components/MediaAsset/MediaAsset.skeleton.d.ts.map +0 -1
  664. package/dist/components/MediaAsset/MediaAsset.skeleton.js +0 -42
  665. package/dist/components/MediaAsset/MediaAsset.skeleton.js.map +0 -1
  666. package/dist/components/MediaManager/MediaManager.skeleton.d.ts +0 -3
  667. package/dist/components/MediaManager/MediaManager.skeleton.d.ts.map +0 -1
  668. package/dist/components/MediaManager/MediaManager.skeleton.js +0 -30
  669. package/dist/components/MediaManager/MediaManager.skeleton.js.map +0 -1
  670. package/dist/components/StatusBadge.d.ts +0 -2
  671. package/dist/components/StatusBadge.d.ts.map +0 -1
  672. package/dist/components/StatusBadge.js +0 -7
  673. package/dist/components/StatusBadge.js.map +0 -1
  674. package/dist/components/richtext/ComponentEmbedEditor.d.ts.map +0 -1
  675. package/dist/components/richtext/ComponentEmbedEditor.js +0 -153
  676. package/dist/components/richtext/ComponentEmbedEditor.js.map +0 -1
  677. package/dist/components/richtext/ConditionEmbedEditor.d.ts.map +0 -1
  678. package/dist/components/richtext/ConditionEmbedEditor.js.map +0 -1
  679. package/dist/components/richtext/ImageEmbedEditor.d.ts.map +0 -1
  680. package/dist/components/richtext/ImageEmbedEditor.js.map +0 -1
  681. package/dist/components/richtext/ReferenceEmbedEditor.d.ts.map +0 -1
  682. package/dist/components/richtext/ReferenceEmbedEditor.js.map +0 -1
  683. package/dist/components/richtext/SlashCommandMenu.d.ts.map +0 -1
  684. package/dist/components/richtext/SlashCommandMenu.js.map +0 -1
  685. package/dist/components/richtext/VariableEmbedEditor.d.ts.map +0 -1
  686. package/dist/components/richtext/VariableEmbedEditor.js +0 -58
  687. package/dist/components/richtext/VariableEmbedEditor.js.map +0 -1
  688. package/dist/components/ui/avatar-stack.d.ts +0 -13
  689. package/dist/components/ui/avatar-stack.d.ts.map +0 -1
  690. package/dist/components/ui/avatar-stack.js +0 -27
  691. package/dist/components/ui/avatar-stack.js.map +0 -1
  692. package/dist/components/ui/avatar.d.ts +0 -7
  693. package/dist/components/ui/avatar.d.ts.map +0 -1
  694. package/dist/components/ui/avatar.js +0 -45
  695. package/dist/components/ui/avatar.js.map +0 -1
  696. package/dist/components/ui/banner.d.ts +0 -13
  697. package/dist/components/ui/banner.d.ts.map +0 -1
  698. package/dist/components/ui/banner.js +0 -24
  699. package/dist/components/ui/banner.js.map +0 -1
  700. package/dist/components/ui/branch-chip.d.ts.map +0 -1
  701. package/dist/components/ui/branch-chip.js +0 -58
  702. package/dist/components/ui/branch-chip.js.map +0 -1
  703. package/dist/components/ui/button.d.ts +0 -14
  704. package/dist/components/ui/button.d.ts.map +0 -1
  705. package/dist/components/ui/button.js +0 -65
  706. package/dist/components/ui/button.js.map +0 -1
  707. package/dist/components/ui/card.d.ts +0 -7
  708. package/dist/components/ui/card.d.ts.map +0 -1
  709. package/dist/components/ui/card.js.map +0 -1
  710. package/dist/components/ui/chip.d.ts.map +0 -1
  711. package/dist/components/ui/chip.js +0 -44
  712. package/dist/components/ui/chip.js.map +0 -1
  713. package/dist/components/ui/dialog.d.ts +0 -20
  714. package/dist/components/ui/dialog.d.ts.map +0 -1
  715. package/dist/components/ui/dialog.js +0 -93
  716. package/dist/components/ui/dialog.js.map +0 -1
  717. package/dist/components/ui/dropdown-menu.d.ts +0 -28
  718. package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
  719. package/dist/components/ui/dropdown-menu.js +0 -165
  720. package/dist/components/ui/dropdown-menu.js.map +0 -1
  721. package/dist/components/ui/empty.d.ts +0 -11
  722. package/dist/components/ui/empty.d.ts.map +0 -1
  723. package/dist/components/ui/empty.js +0 -24
  724. package/dist/components/ui/empty.js.map +0 -1
  725. package/dist/components/ui/field.d.ts.map +0 -1
  726. package/dist/components/ui/field.js +0 -52
  727. package/dist/components/ui/field.js.map +0 -1
  728. package/dist/components/ui/input.d.ts.map +0 -1
  729. package/dist/components/ui/input.js +0 -51
  730. package/dist/components/ui/input.js.map +0 -1
  731. package/dist/components/ui/kbd.d.ts.map +0 -1
  732. package/dist/components/ui/kbd.js +0 -30
  733. package/dist/components/ui/kbd.js.map +0 -1
  734. package/dist/components/ui/label.d.ts +0 -6
  735. package/dist/components/ui/label.d.ts.map +0 -1
  736. package/dist/components/ui/label.js +0 -20
  737. package/dist/components/ui/label.js.map +0 -1
  738. package/dist/components/ui/publish-button.d.ts +0 -7
  739. package/dist/components/ui/publish-button.d.ts.map +0 -1
  740. package/dist/components/ui/publish-button.js +0 -50
  741. package/dist/components/ui/publish-button.js.map +0 -1
  742. package/dist/components/ui/select.d.ts +0 -14
  743. package/dist/components/ui/select.d.ts.map +0 -1
  744. package/dist/components/ui/select.js +0 -132
  745. package/dist/components/ui/select.js.map +0 -1
  746. package/dist/components/ui/sonner.d.ts +0 -6
  747. package/dist/components/ui/sonner.d.ts.map +0 -1
  748. package/dist/components/ui/sonner.js +0 -37
  749. package/dist/components/ui/sonner.js.map +0 -1
  750. package/dist/components/ui/status-badge.d.ts.map +0 -1
  751. package/dist/components/ui/status-badge.js.map +0 -1
  752. package/dist/components/ui/table.d.ts.map +0 -1
  753. package/dist/components/ui/table.js.map +0 -1
  754. package/dist/components/ui/tabs-pill.d.ts +0 -17
  755. package/dist/components/ui/tabs-pill.d.ts.map +0 -1
  756. package/dist/components/ui/tabs-pill.js +0 -67
  757. package/dist/components/ui/tabs-pill.js.map +0 -1
  758. package/dist/components/ui/tabs.d.ts +0 -8
  759. package/dist/components/ui/tabs.d.ts.map +0 -1
  760. package/dist/components/ui/tabs.js +0 -59
  761. package/dist/components/ui/tabs.js.map +0 -1
  762. package/dist/components/ui/textarea.d.ts.map +0 -1
  763. package/dist/components/ui/textarea.js +0 -25
  764. package/dist/components/ui/textarea.js.map +0 -1
  765. package/dist/components/ui/toast-card.d.ts +0 -15
  766. package/dist/components/ui/toast-card.d.ts.map +0 -1
  767. package/dist/components/ui/toast-card.js +0 -90
  768. package/dist/components/ui/toast-card.js.map +0 -1
  769. package/dist/components/ui/toast.d.ts +0 -16
  770. package/dist/components/ui/toast.d.ts.map +0 -1
  771. package/dist/components/ui/toast.js +0 -95
  772. package/dist/components/ui/toast.js.map +0 -1
  773. package/dist/components/ui/toaster.d.ts.map +0 -1
  774. package/dist/components/ui/toaster.js +0 -30
  775. package/dist/components/ui/toaster.js.map +0 -1
  776. package/dist/init-KWH66PKY.js.map +0 -1
  777. /package/dist/{agentDocs-M3R2CPUQ.js.map → agentDocs-QZ4NOQVH.js.map} +0 -0
  778. /package/dist/components/{ErrorBoundary.d.ts → ErrorBoundary/ErrorBoundary.d.ts} +0 -0
  779. /package/dist/components/{CreateBranchDialog.d.ts → Layout/CreateBranchDialog.d.ts} +0 -0
  780. /package/dist/components/{FormBooleanField.d.ts → ui/FormField/FormBooleanField.d.ts} +0 -0
  781. /package/dist/components/{FormColorField.d.ts → ui/FormField/FormColorField.d.ts} +0 -0
  782. /package/dist/components/{FormDatetimeField.d.ts → ui/FormField/FormDatetimeField.d.ts} +0 -0
  783. /package/dist/components/{FormJsonField.d.ts → ui/FormField/FormJsonField.d.ts} +0 -0
  784. /package/dist/components/{FormMarkdownField.d.ts → ui/FormField/FormMarkdownField.d.ts} +0 -0
  785. /package/dist/components/{FormNumberField.d.ts → ui/FormField/FormNumberField.d.ts} +0 -0
  786. /package/dist/components/{FormSlugField.d.ts → ui/FormField/FormSlugField.d.ts} +0 -0
  787. /package/dist/components/{FormStringField.d.ts → ui/FormField/FormStringField.d.ts} +0 -0
  788. /package/dist/components/{FormStringListField.d.ts → ui/FormField/FormStringListField.d.ts} +0 -0
  789. /package/dist/components/{FormTextField.d.ts → ui/FormField/FormTextField.d.ts} +0 -0
  790. /package/dist/components/{FormUrlField.d.ts → ui/FormField/FormUrlField.d.ts} +0 -0
  791. /package/dist/components/{richtext → ui/FormField/richtext}/ConditionEmbedEditor.d.ts +0 -0
  792. /package/dist/components/{richtext → ui/FormField/richtext}/ImageEmbedEditor.d.ts +0 -0
  793. /package/dist/components/{richtext → ui/FormField/richtext}/ReferenceEmbedEditor.d.ts +0 -0
  794. /package/dist/components/{richtext → ui/FormField/richtext}/SlashCommandMenu.d.ts +0 -0
  795. /package/dist/components/{richtext → ui/FormField/richtext}/VariableEmbedEditor.d.ts +0 -0
  796. /package/dist/{update-QNJRYPMC.js.map → update-QALIQG76.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../../components/Chat/Message.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1D,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrD,CAAC;AAEF,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,EAAE,KAAK,2CAoCtF"}
1
+ {"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../../components/Chat/Message.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1D,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrD,CAAC;AAEF,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,EAAE,KAAK,2CA2CtF"}
@@ -1,54 +1,55 @@
1
1
  "use client";
2
2
  import "../../chunk-B5LE2OEC.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
- import { Bot, Info, Paperclip, User } from "lucide-react";
4
+ import { Icon } from "../ui";
5
5
  import { cn } from "../../lib/utils";
6
6
  import { ProposalCard } from "./ProposalCard";
7
7
  import { ToolCallCard } from "./ToolCallCard";
8
8
  function Message({ entry, proposals, onAcceptProposal, onRejectProposal }) {
9
9
  if (entry.kind === "system") {
10
- return /* @__PURE__ */ jsxs("div", { className: "my-3 flex items-start gap-2 rounded-md border border-border bg-muted/30 px-3 py-2 text-xs text-muted-foreground", children: [
11
- /* @__PURE__ */ jsx(Info, { className: "mt-0.5 h-3.5 w-3.5 shrink-0" }),
12
- /* @__PURE__ */ jsx("span", { className: "whitespace-pre-wrap", children: entry.text })
10
+ return /* @__PURE__ */ jsxs("div", { className: "octo-chat-msg octo-chat-msg--system", children: [
11
+ /* @__PURE__ */ jsx(Icon.Info, { className: "octo-chat-msg__system-icon octo-icon-sm octo-u-shrink-0" }),
12
+ /* @__PURE__ */ jsx("span", { className: "octo-u-whitespace-pre-wrap", children: entry.text })
13
13
  ] });
14
14
  }
15
15
  const isUser = entry.kind === "user";
16
- return /* @__PURE__ */ jsxs("div", { className: cn("flex gap-3 py-3", isUser ? "flex-row-reverse" : "flex-row"), children: [
17
- /* @__PURE__ */ jsx("div", { className: "mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-muted", children: isUser ? /* @__PURE__ */ jsx(User, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx(Bot, { className: "h-4 w-4" }) }),
18
- /* @__PURE__ */ jsx("div", { className: cn("flex-1 min-w-0 max-w-[760px]", isUser && "text-right"), children: /* @__PURE__ */ jsx(
19
- "div",
20
- {
21
- className: cn(
22
- "inline-block rounded-2xl px-4 py-2.5 text-sm whitespace-pre-wrap break-words",
23
- isUser ? "bg-blue-600 text-white text-left" : "bg-muted text-foreground border border-border/50"
24
- ),
25
- children: entry.kind === "assistant" ? /* @__PURE__ */ jsx(
26
- AssistantBody,
16
+ return /* @__PURE__ */ jsxs(
17
+ "div",
18
+ {
19
+ className: cn(
20
+ "octo-chat-msg",
21
+ isUser ? "octo-chat-msg octo-chat-msg--user" : "octo-chat-msg octo-chat-msg--assistant"
22
+ ),
23
+ children: [
24
+ /* @__PURE__ */ jsx("div", { className: "octo-chat-msg__avatar", children: isUser ? /* @__PURE__ */ jsx(Icon.User, { className: "octo-icon-md" }) : /* @__PURE__ */ jsx(Icon.Bot, { className: "octo-icon-md" }) }),
25
+ /* @__PURE__ */ jsx("div", { className: cn("octo-chat-msg__body", isUser && "octo-chat-msg__body octo-chat-msg__body--user"), children: /* @__PURE__ */ jsx(
26
+ "div",
27
27
  {
28
- entry,
29
- proposals,
30
- onAcceptProposal,
31
- onRejectProposal
28
+ className: cn(
29
+ "octo-chat-msg__bubble",
30
+ isUser ? "octo-chat-msg__bubble octo-chat-msg__bubble--user" : "octo-chat-msg__bubble octo-chat-msg__bubble--assistant"
31
+ ),
32
+ children: entry.kind === "assistant" ? /* @__PURE__ */ jsx(
33
+ AssistantBody,
34
+ {
35
+ entry,
36
+ proposals,
37
+ onAcceptProposal,
38
+ onRejectProposal
39
+ }
40
+ ) : /* @__PURE__ */ jsx(UserBody, { entry })
32
41
  }
33
- ) : /* @__PURE__ */ jsx(UserBody, { entry })
34
- }
35
- ) })
36
- ] });
42
+ ) })
43
+ ]
44
+ }
45
+ );
37
46
  }
38
47
  function UserBody({ entry }) {
39
- return /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
40
- entry.attachmentNames && entry.attachmentNames.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1.5", children: entry.attachmentNames.map((name, i) => /* @__PURE__ */ jsxs(
41
- "span",
42
- {
43
- className: "inline-flex items-center gap-1 rounded-full bg-blue-700/40 px-2 py-0.5 text-xs",
44
- "data-testid": "user-attachment-name",
45
- children: [
46
- /* @__PURE__ */ jsx(Paperclip, { className: "h-3 w-3" }),
47
- /* @__PURE__ */ jsx("span", { className: "max-w-[180px] truncate", children: name })
48
- ]
49
- },
50
- `${name}-${i}`
51
- )) }),
48
+ return /* @__PURE__ */ jsxs("div", { className: "octo-chat-msg__user-body", children: [
49
+ entry.attachmentNames && entry.attachmentNames.length > 0 && /* @__PURE__ */ jsx("div", { className: "octo-chat-msg__attach-names", children: entry.attachmentNames.map((name, i) => /* @__PURE__ */ jsxs("span", { className: "octo-chat-msg__attach-chip", "data-testid": "user-attachment-name", children: [
50
+ /* @__PURE__ */ jsx(Icon.Paperclip, { className: "octo-icon-xs" }),
51
+ /* @__PURE__ */ jsx("span", { className: "octo-chat-msg__attach-chip-name", children: name })
52
+ ] }, `${name}-${i}`)) }),
52
53
  entry.text && /* @__PURE__ */ jsx("div", { children: entry.text })
53
54
  ] });
54
55
  }
@@ -59,12 +60,12 @@ function AssistantBody({
59
60
  onRejectProposal
60
61
  }) {
61
62
  const isEmpty = !entry.text && entry.toolCalls.length === 0 && entry.proposalIds.length === 0;
62
- return /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
63
- isEmpty && entry.streaming && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Thinking\u2026" }),
63
+ return /* @__PURE__ */ jsxs("div", { className: "octo-chat-msg__assistant-body", children: [
64
+ isEmpty && entry.streaming && /* @__PURE__ */ jsx("span", { className: "octo-chat-msg__thinking", children: "Thinking\u2026" }),
64
65
  entry.toolCalls.map((tc) => /* @__PURE__ */ jsx(ToolCallCard, { call: tc }, tc.id)),
65
66
  entry.proposalIds.map((id) => proposals[id]).filter((p) => Boolean(p)).map((p) => /* @__PURE__ */ jsx(ProposalCard, { state: p, onAccept: onAcceptProposal, onReject: onRejectProposal }, p.proposal.id)),
66
67
  entry.text && /* @__PURE__ */ jsx("div", { children: entry.text }),
67
- entry.streaming && entry.text && /* @__PURE__ */ jsx("span", { className: "ml-1 inline-block h-3 w-1.5 animate-pulse bg-current align-baseline" })
68
+ entry.streaming && entry.text && /* @__PURE__ */ jsx("span", { className: "octo-chat-msg__cursor" })
68
69
  ] });
69
70
  }
70
71
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/Chat/Message.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { Bot, Info, Paperclip, User } from 'lucide-react';\n\nimport { cn } from '../../lib/utils';\n\nimport { ProposalCard } from './ProposalCard';\nimport { ToolCallCard } from './ToolCallCard';\nimport type { ChatEntry, ProposalUiState } from './types';\n\ntype Props = {\n entry: ChatEntry;\n proposals: Record<string, ProposalUiState>;\n onAcceptProposal(id: string): void;\n onRejectProposal(id: string, reason?: string): void;\n};\n\nexport function Message({ entry, proposals, onAcceptProposal, onRejectProposal }: Props) {\n if (entry.kind === 'system') {\n return (\n <div className=\"my-3 flex items-start gap-2 rounded-md border border-border bg-muted/30 px-3 py-2 text-xs text-muted-foreground\">\n <Info className=\"mt-0.5 h-3.5 w-3.5 shrink-0\" />\n <span className=\"whitespace-pre-wrap\">{entry.text}</span>\n </div>\n );\n }\n const isUser = entry.kind === 'user';\n return (\n <div className={cn('flex gap-3 py-3', isUser ? 'flex-row-reverse' : 'flex-row')}>\n <div className=\"mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-muted\">\n {isUser ? <User className=\"h-4 w-4\" /> : <Bot className=\"h-4 w-4\" />}\n </div>\n <div className={cn('flex-1 min-w-0 max-w-[760px]', isUser && 'text-right')}>\n <div\n className={cn(\n 'inline-block rounded-2xl px-4 py-2.5 text-sm whitespace-pre-wrap break-words',\n isUser ? 'bg-blue-600 text-white text-left' : 'bg-muted text-foreground border border-border/50',\n )}\n >\n {entry.kind === 'assistant' ? (\n <AssistantBody\n entry={entry}\n proposals={proposals}\n onAcceptProposal={onAcceptProposal}\n onRejectProposal={onRejectProposal}\n />\n ) : (\n <UserBody entry={entry} />\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction UserBody({ entry }: { entry: Extract<ChatEntry, { kind: 'user' }> }) {\n return (\n <div className=\"space-y-1.5\">\n {entry.attachmentNames && entry.attachmentNames.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {entry.attachmentNames.map((name, i) => (\n <span\n key={`${name}-${i}`}\n className=\"inline-flex items-center gap-1 rounded-full bg-blue-700/40 px-2 py-0.5 text-xs\"\n data-testid=\"user-attachment-name\"\n >\n <Paperclip className=\"h-3 w-3\" />\n <span className=\"max-w-[180px] truncate\">{name}</span>\n </span>\n ))}\n </div>\n )}\n {entry.text && <div>{entry.text}</div>}\n </div>\n );\n}\n\nfunction AssistantBody({\n entry,\n proposals,\n onAcceptProposal,\n onRejectProposal,\n}: {\n entry: Extract<ChatEntry, { kind: 'assistant' }>;\n proposals: Record<string, ProposalUiState>;\n onAcceptProposal(id: string): void;\n onRejectProposal(id: string, reason?: string): void;\n}) {\n const isEmpty = !entry.text && entry.toolCalls.length === 0 && entry.proposalIds.length === 0;\n return (\n <div className=\"space-y-1\">\n {isEmpty && entry.streaming && <span className=\"text-muted-foreground\">Thinking…</span>}\n {entry.toolCalls.map((tc) => (\n <ToolCallCard key={tc.id} call={tc} />\n ))}\n {entry.proposalIds\n .map((id) => proposals[id])\n .filter((p): p is ProposalUiState => Boolean(p))\n .map((p) => (\n <ProposalCard key={p.proposal.id} state={p} onAccept={onAcceptProposal} onReject={onRejectProposal} />\n ))}\n {entry.text && <div>{entry.text}</div>}\n {entry.streaming && entry.text && (\n <span className=\"ml-1 inline-block h-3 w-1.5 animate-pulse bg-current align-baseline\" />\n )}\n </div>\n );\n}\n"],"mappings":";;AAqBM,SACE,KADF;AAlBN,SAAS,KAAK,MAAM,WAAW,YAAY;AAE3C,SAAS,UAAU;AAEnB,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB;AAUtB,SAAS,QAAQ,EAAE,OAAO,WAAW,kBAAkB,iBAAiB,GAAU;AACvF,MAAI,MAAM,SAAS,UAAU;AAC3B,WACE,qBAAC,SAAI,WAAU,mHACb;AAAA,0BAAC,QAAK,WAAU,+BAA8B;AAAA,MAC9C,oBAAC,UAAK,WAAU,uBAAuB,gBAAM,MAAK;AAAA,OACpD;AAAA,EAEJ;AACA,QAAM,SAAS,MAAM,SAAS;AAC9B,SACE,qBAAC,SAAI,WAAW,GAAG,mBAAmB,SAAS,qBAAqB,UAAU,GAC5E;AAAA,wBAAC,SAAI,WAAU,kFACZ,mBAAS,oBAAC,QAAK,WAAU,WAAU,IAAK,oBAAC,OAAI,WAAU,WAAU,GACpE;AAAA,IACA,oBAAC,SAAI,WAAW,GAAG,gCAAgC,UAAU,YAAY,GACvE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,SAAS,qCAAqC;AAAA,QAChD;AAAA,QAEC,gBAAM,SAAS,cACd;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF,IAEA,oBAAC,YAAS,OAAc;AAAA;AAAA,IAE5B,GACF;AAAA,KACF;AAEJ;AAEA,SAAS,SAAS,EAAE,MAAM,GAAoD;AAC5E,SACE,qBAAC,SAAI,WAAU,eACZ;AAAA,UAAM,mBAAmB,MAAM,gBAAgB,SAAS,KACvD,oBAAC,SAAI,WAAU,0BACZ,gBAAM,gBAAgB,IAAI,CAAC,MAAM,MAChC;AAAA,MAAC;AAAA;AAAA,QAEC,WAAU;AAAA,QACV,eAAY;AAAA,QAEZ;AAAA,8BAAC,aAAU,WAAU,WAAU;AAAA,UAC/B,oBAAC,UAAK,WAAU,0BAA0B,gBAAK;AAAA;AAAA;AAAA,MAL1C,GAAG,IAAI,IAAI,CAAC;AAAA,IAMnB,CACD,GACH;AAAA,IAED,MAAM,QAAQ,oBAAC,SAAK,gBAAM,MAAK;AAAA,KAClC;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,QAAM,UAAU,CAAC,MAAM,QAAQ,MAAM,UAAU,WAAW,KAAK,MAAM,YAAY,WAAW;AAC5F,SACE,qBAAC,SAAI,WAAU,aACZ;AAAA,eAAW,MAAM,aAAa,oBAAC,UAAK,WAAU,yBAAwB,4BAAS;AAAA,IAC/E,MAAM,UAAU,IAAI,CAAC,OACpB,oBAAC,gBAAyB,MAAM,MAAb,GAAG,EAAc,CACrC;AAAA,IACA,MAAM,YACJ,IAAI,CAAC,OAAO,UAAU,EAAE,CAAC,EACzB,OAAO,CAAC,MAA4B,QAAQ,CAAC,CAAC,EAC9C,IAAI,CAAC,MACJ,oBAAC,gBAAiC,OAAO,GAAG,UAAU,kBAAkB,UAAU,oBAA/D,EAAE,SAAS,EAAsE,CACrG;AAAA,IACF,MAAM,QAAQ,oBAAC,SAAK,gBAAM,MAAK;AAAA,IAC/B,MAAM,aAAa,MAAM,QACxB,oBAAC,UAAK,WAAU,uEAAsE;AAAA,KAE1F;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../components/Chat/Message.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { Icon } from '../ui';\n\nimport { cn } from '../../lib/utils';\n\nimport { ProposalCard } from './ProposalCard';\nimport { ToolCallCard } from './ToolCallCard';\nimport type { ChatEntry, ProposalUiState } from './types';\n\ntype Props = {\n entry: ChatEntry;\n proposals: Record<string, ProposalUiState>;\n onAcceptProposal(id: string): void;\n onRejectProposal(id: string, reason?: string): void;\n};\n\nexport function Message({ entry, proposals, onAcceptProposal, onRejectProposal }: Props) {\n if (entry.kind === 'system') {\n return (\n <div className=\"octo-chat-msg octo-chat-msg--system\">\n <Icon.Info className=\"octo-chat-msg__system-icon octo-icon-sm octo-u-shrink-0\" />\n <span className=\"octo-u-whitespace-pre-wrap\">{entry.text}</span>\n </div>\n );\n }\n const isUser = entry.kind === 'user';\n return (\n <div\n className={cn(\n 'octo-chat-msg',\n isUser ? 'octo-chat-msg octo-chat-msg--user' : 'octo-chat-msg octo-chat-msg--assistant',\n )}\n >\n <div className=\"octo-chat-msg__avatar\">\n {isUser ? <Icon.User className=\"octo-icon-md\" /> : <Icon.Bot className=\"octo-icon-md\" />}\n </div>\n <div className={cn('octo-chat-msg__body', isUser && 'octo-chat-msg__body octo-chat-msg__body--user')}>\n <div\n className={cn(\n 'octo-chat-msg__bubble',\n isUser\n ? 'octo-chat-msg__bubble octo-chat-msg__bubble--user'\n : 'octo-chat-msg__bubble octo-chat-msg__bubble--assistant',\n )}\n >\n {entry.kind === 'assistant' ? (\n <AssistantBody\n entry={entry}\n proposals={proposals}\n onAcceptProposal={onAcceptProposal}\n onRejectProposal={onRejectProposal}\n />\n ) : (\n <UserBody entry={entry} />\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction UserBody({ entry }: { entry: Extract<ChatEntry, { kind: 'user' }> }) {\n return (\n <div className=\"octo-chat-msg__user-body\">\n {entry.attachmentNames && entry.attachmentNames.length > 0 && (\n <div className=\"octo-chat-msg__attach-names\">\n {entry.attachmentNames.map((name, i) => (\n <span key={`${name}-${i}`} className=\"octo-chat-msg__attach-chip\" data-testid=\"user-attachment-name\">\n <Icon.Paperclip className=\"octo-icon-xs\" />\n <span className=\"octo-chat-msg__attach-chip-name\">{name}</span>\n </span>\n ))}\n </div>\n )}\n {entry.text && <div>{entry.text}</div>}\n </div>\n );\n}\n\nfunction AssistantBody({\n entry,\n proposals,\n onAcceptProposal,\n onRejectProposal,\n}: {\n entry: Extract<ChatEntry, { kind: 'assistant' }>;\n proposals: Record<string, ProposalUiState>;\n onAcceptProposal(id: string): void;\n onRejectProposal(id: string, reason?: string): void;\n}) {\n const isEmpty = !entry.text && entry.toolCalls.length === 0 && entry.proposalIds.length === 0;\n return (\n <div className=\"octo-chat-msg__assistant-body\">\n {isEmpty && entry.streaming && <span className=\"octo-chat-msg__thinking\">Thinking…</span>}\n {entry.toolCalls.map((tc) => (\n <ToolCallCard key={tc.id} call={tc} />\n ))}\n {entry.proposalIds\n .map((id) => proposals[id])\n .filter((p): p is ProposalUiState => Boolean(p))\n .map((p) => (\n <ProposalCard key={p.proposal.id} state={p} onAccept={onAcceptProposal} onReject={onRejectProposal} />\n ))}\n {entry.text && <div>{entry.text}</div>}\n {entry.streaming && entry.text && <span className=\"octo-chat-msg__cursor\" />}\n </div>\n );\n}\n"],"mappings":";;AAqBM,SACE,KADF;AAlBN,SAAS,YAAY;AAErB,SAAS,UAAU;AAEnB,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB;AAUtB,SAAS,QAAQ,EAAE,OAAO,WAAW,kBAAkB,iBAAiB,GAAU;AACvF,MAAI,MAAM,SAAS,UAAU;AAC3B,WACE,qBAAC,SAAI,WAAU,uCACb;AAAA,0BAAC,KAAK,MAAL,EAAU,WAAU,2DAA0D;AAAA,MAC/E,oBAAC,UAAK,WAAU,8BAA8B,gBAAM,MAAK;AAAA,OAC3D;AAAA,EAEJ;AACA,QAAM,SAAS,MAAM,SAAS;AAC9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,SAAS,sCAAsC;AAAA,MACjD;AAAA,MAEA;AAAA,4BAAC,SAAI,WAAU,yBACZ,mBAAS,oBAAC,KAAK,MAAL,EAAU,WAAU,gBAAe,IAAK,oBAAC,KAAK,KAAL,EAAS,WAAU,gBAAe,GACxF;AAAA,QACA,oBAAC,SAAI,WAAW,GAAG,uBAAuB,UAAU,+CAA+C,GACjG;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,SACI,sDACA;AAAA,YACN;AAAA,YAEC,gBAAM,SAAS,cACd;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA;AAAA,YACF,IAEA,oBAAC,YAAS,OAAc;AAAA;AAAA,QAE5B,GACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,SAAS,EAAE,MAAM,GAAoD;AAC5E,SACE,qBAAC,SAAI,WAAU,4BACZ;AAAA,UAAM,mBAAmB,MAAM,gBAAgB,SAAS,KACvD,oBAAC,SAAI,WAAU,+BACZ,gBAAM,gBAAgB,IAAI,CAAC,MAAM,MAChC,qBAAC,UAA0B,WAAU,8BAA6B,eAAY,wBAC5E;AAAA,0BAAC,KAAK,WAAL,EAAe,WAAU,gBAAe;AAAA,MACzC,oBAAC,UAAK,WAAU,mCAAmC,gBAAK;AAAA,SAF/C,GAAG,IAAI,IAAI,CAAC,EAGvB,CACD,GACH;AAAA,IAED,MAAM,QAAQ,oBAAC,SAAK,gBAAM,MAAK;AAAA,KAClC;AAEJ;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,QAAM,UAAU,CAAC,MAAM,QAAQ,MAAM,UAAU,WAAW,KAAK,MAAM,YAAY,WAAW;AAC5F,SACE,qBAAC,SAAI,WAAU,iCACZ;AAAA,eAAW,MAAM,aAAa,oBAAC,UAAK,WAAU,2BAA0B,4BAAS;AAAA,IACjF,MAAM,UAAU,IAAI,CAAC,OACpB,oBAAC,gBAAyB,MAAM,MAAb,GAAG,EAAc,CACrC;AAAA,IACA,MAAM,YACJ,IAAI,CAAC,OAAO,UAAU,EAAE,CAAC,EACzB,OAAO,CAAC,MAA4B,QAAQ,CAAC,CAAC,EAC9C,IAAI,CAAC,MACJ,oBAAC,gBAAiC,OAAO,GAAG,UAAU,kBAAkB,UAAU,oBAA/D,EAAE,SAAS,EAAsE,CACrG;AAAA,IACF,MAAM,QAAQ,oBAAC,SAAK,gBAAM,MAAK;AAAA,IAC/B,MAAM,aAAa,MAAM,QAAQ,oBAAC,UAAK,WAAU,yBAAwB;AAAA,KAC5E;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ProposalCard.d.ts","sourceRoot":"","sources":["../../../components/Chat/ProposalCard.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAY,eAAe,EAAE,MAAM,SAAS,CAAC;AAEzD,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAoHhE"}
1
+ {"version":3,"file":"ProposalCard.d.ts","sourceRoot":"","sources":["../../../components/Chat/ProposalCard.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAY,eAAe,EAAE,MAAM,SAAS,CAAC;AAEzD,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,KAAK,2CA0GhE"}
@@ -2,11 +2,10 @@
2
2
  import "../../chunk-B5LE2OEC.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  import { useState } from "react";
5
- import { AlertCircle, Check, CheckCircle2, FilePen, FilePlus, Loader2, X } from "lucide-react";
5
+ import { Button, Icon } from "../ui";
6
6
  import { useEntry } from "../../admin/query/hooks/useEntry";
7
7
  import { useConfig } from "../../hooks/useConfig";
8
8
  import { cn } from "../../lib/utils";
9
- import { Button } from "../ui/button";
10
9
  import { DiffHunk } from "../DiffView/DiffHunk";
11
10
  function ProposalCard({ state, onAccept, onReject }) {
12
11
  const { proposal, status } = state;
@@ -19,56 +18,55 @@ function ProposalCard({ state, onAccept, onReject }) {
19
18
  "div",
20
19
  {
21
20
  className: cn(
22
- "my-3 rounded-md border bg-card text-foreground",
23
- status.kind === "error" ? "border-destructive/50" : "border-border",
24
- status.kind === "accepted" && "opacity-80",
25
- status.kind === "rejected" && "opacity-60"
21
+ "octo-proposal-card",
22
+ status.kind === "error" && "octo-proposal-card octo-proposal-card--error",
23
+ status.kind === "accepted" && "octo-proposal-card octo-proposal-card--accepted",
24
+ status.kind === "rejected" && "octo-proposal-card octo-proposal-card--rejected"
26
25
  ),
27
26
  children: [
28
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 border-b border-border/50 px-3 py-2", children: [
29
- isEdit ? /* @__PURE__ */ jsx(FilePen, { className: "h-3.5 w-3.5 text-muted-foreground" }) : /* @__PURE__ */ jsx(FilePlus, { className: "h-3.5 w-3.5 text-muted-foreground" }),
30
- /* @__PURE__ */ jsx("span", { className: "text-xs font-semibold", children: isEdit ? "Proposed edit" : "Proposed new entry" }),
31
- /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground truncate flex-1", children: proposal.summary }),
27
+ /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__header", children: [
28
+ isEdit ? /* @__PURE__ */ jsx(Icon.FilePen, { className: "octo-icon-sm octo-proposal-card__header-icon" }) : /* @__PURE__ */ jsx(Icon.FilePlus, { className: "octo-icon-sm octo-proposal-card__header-icon" }),
29
+ /* @__PURE__ */ jsx("span", { className: "octo-proposal-card__kind", children: isEdit ? "Proposed edit" : "Proposed new entry" }),
30
+ /* @__PURE__ */ jsx("span", { className: "octo-proposal-card__summary", children: proposal.summary }),
32
31
  /* @__PURE__ */ jsx(StatusBadge, { status })
33
32
  ] }),
34
- proposal.reasoning && /* @__PURE__ */ jsxs("div", { className: "px-3 py-2 text-xs text-muted-foreground italic border-b border-border/50", children: [
33
+ proposal.reasoning && /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__reasoning", children: [
35
34
  "\u201C",
36
35
  proposal.reasoning,
37
36
  "\u201D"
38
37
  ] }),
39
- /* @__PURE__ */ jsx("div", { className: "px-3 py-3 space-y-3", children: isEdit ? /* @__PURE__ */ jsx(EditProposalBody, { proposal }) : /* @__PURE__ */ jsx(CreateProposalBody, { proposal }) }),
40
- status.kind === "error" && /* @__PURE__ */ jsxs("div", { className: "border-t border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive", children: [
41
- /* @__PURE__ */ jsxs("div", { className: "font-semibold", children: [
38
+ /* @__PURE__ */ jsx("div", { className: "octo-proposal-card__body", children: isEdit ? /* @__PURE__ */ jsx(EditProposalBody, { proposal }) : /* @__PURE__ */ jsx(CreateProposalBody, { proposal }) }),
39
+ status.kind === "error" && /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__error-box", children: [
40
+ /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__error-title", children: [
42
41
  "Could not save: ",
43
42
  status.message
44
43
  ] }),
45
- status.fieldErrors && Object.keys(status.fieldErrors).length > 0 && /* @__PURE__ */ jsx("ul", { className: "mt-1 list-disc pl-4", children: Object.entries(status.fieldErrors).map(([k, msg]) => /* @__PURE__ */ jsxs("li", { children: [
46
- /* @__PURE__ */ jsx("code", { className: "font-mono", children: k }),
44
+ status.fieldErrors && Object.keys(status.fieldErrors).length > 0 && /* @__PURE__ */ jsx("ul", { className: "octo-proposal-card__error-list", children: Object.entries(status.fieldErrors).map(([k, msg]) => /* @__PURE__ */ jsxs("li", { children: [
45
+ /* @__PURE__ */ jsx("code", { className: "octo-u-mono", children: k }),
47
46
  ": ",
48
47
  msg
49
48
  ] }, k)) })
50
49
  ] }),
51
- isPending && !showRejectInput && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 border-t border-border/50 px-3 py-2", children: [
52
- /* @__PURE__ */ jsxs(Button, { size: "sm", onClick: () => onAccept(proposal.id), disabled: isBusy, className: "gap-1.5", children: [
53
- /* @__PURE__ */ jsx(Check, { className: "h-3.5 w-3.5" }),
50
+ isPending && !showRejectInput && /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__actions", children: [
51
+ /* @__PURE__ */ jsxs(Button, { onClick: () => onAccept(proposal.id), disabled: isBusy, className: "octo-u-gap-1-5", children: [
52
+ /* @__PURE__ */ jsx(Icon.Check, { className: "octo-icon-sm" }),
54
53
  "Accept"
55
54
  ] }),
56
55
  /* @__PURE__ */ jsxs(
57
56
  Button,
58
57
  {
59
- size: "sm",
60
58
  variant: "outline",
61
59
  onClick: () => setShowRejectInput(true),
62
60
  disabled: isBusy,
63
- className: "gap-1.5",
61
+ className: "octo-u-gap-1-5",
64
62
  children: [
65
- /* @__PURE__ */ jsx(X, { className: "h-3.5 w-3.5" }),
63
+ /* @__PURE__ */ jsx(Icon.X, { className: "octo-icon-sm" }),
66
64
  "Reject"
67
65
  ]
68
66
  }
69
67
  )
70
68
  ] }),
71
- isPending && showRejectInput && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 border-t border-border/50 px-3 py-2", children: [
69
+ isPending && showRejectInput && /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__actions", children: [
72
70
  /* @__PURE__ */ jsx(
73
71
  "input",
74
72
  {
@@ -77,7 +75,7 @@ function ProposalCard({ state, onAccept, onReject }) {
77
75
  onChange: (e) => setRejectReason(e.target.value),
78
76
  placeholder: "Optional reason (helps the agent learn)",
79
77
  "aria-label": "Reason for rejecting",
80
- className: "flex-1 rounded border border-input bg-background px-2 py-1 text-xs focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
78
+ className: "octo-proposal-card__reject-input",
81
79
  onKeyDown: (e) => {
82
80
  if (e.key === "Enter") {
83
81
  onReject(proposal.id, rejectReason.trim() || void 0);
@@ -85,19 +83,10 @@ function ProposalCard({ state, onAccept, onReject }) {
85
83
  }
86
84
  }
87
85
  ),
86
+ /* @__PURE__ */ jsx(Button, { variant: "destructive", onClick: () => onReject(proposal.id, rejectReason.trim() || void 0), children: "Confirm reject" }),
88
87
  /* @__PURE__ */ jsx(
89
88
  Button,
90
89
  {
91
- size: "sm",
92
- variant: "destructive",
93
- onClick: () => onReject(proposal.id, rejectReason.trim() || void 0),
94
- children: "Confirm reject"
95
- }
96
- ),
97
- /* @__PURE__ */ jsx(
98
- Button,
99
- {
100
- size: "sm",
101
90
  variant: "ghost",
102
91
  onClick: () => {
103
92
  setShowRejectInput(false);
@@ -107,9 +96,9 @@ function ProposalCard({ state, onAccept, onReject }) {
107
96
  }
108
97
  )
109
98
  ] }),
110
- isBusy && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 border-t border-border/50 px-3 py-2 text-xs text-muted-foreground", children: [
111
- /* @__PURE__ */ jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin" }),
112
- status.kind === "accepting" ? "Saving entry\u2026" : "Rejecting\u2026"
99
+ isBusy && /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__busy", children: [
100
+ /* @__PURE__ */ jsx(Icon.Loader2, { className: "octo-icon-sm octo-u-animate-spin" }),
101
+ status.kind === "accepting" ? "Saving entry..." : "Rejecting..."
113
102
  ] })
114
103
  ]
115
104
  }
@@ -118,20 +107,20 @@ function ProposalCard({ state, onAccept, onReject }) {
118
107
  function StatusBadge({ status }) {
119
108
  switch (status.kind) {
120
109
  case "pending":
121
- return /* @__PURE__ */ jsx("span", { className: "text-[11px] text-muted-foreground", children: "Awaiting approval" });
110
+ return /* @__PURE__ */ jsx("span", { className: "octo-proposal-card__status", children: "Awaiting approval" });
122
111
  case "accepting":
123
112
  case "rejecting":
124
- return /* @__PURE__ */ jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin text-muted-foreground" });
113
+ return /* @__PURE__ */ jsx(Icon.Loader2, { className: "octo-icon-sm octo-u-animate-spin octo-proposal-card__status" });
125
114
  case "accepted":
126
- return /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 text-[11px] text-emerald-400 light:text-emerald-700", children: [
127
- /* @__PURE__ */ jsx(CheckCircle2, { className: "h-3.5 w-3.5" }),
115
+ return /* @__PURE__ */ jsxs("span", { className: "octo-proposal-card__status octo-proposal-card__status--accepted", children: [
116
+ /* @__PURE__ */ jsx(Icon.CheckCircle2, { className: "octo-icon-sm" }),
128
117
  "Accepted"
129
118
  ] });
130
119
  case "rejected":
131
- return /* @__PURE__ */ jsx("span", { className: "text-[11px] text-muted-foreground", children: "Rejected" });
120
+ return /* @__PURE__ */ jsx("span", { className: "octo-proposal-card__status", children: "Rejected" });
132
121
  case "error":
133
- return /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 text-[11px] text-destructive", children: [
134
- /* @__PURE__ */ jsx(AlertCircle, { className: "h-3.5 w-3.5" }),
122
+ return /* @__PURE__ */ jsxs("span", { className: "octo-proposal-card__status octo-proposal-card__status--error", children: [
123
+ /* @__PURE__ */ jsx(Icon.AlertCircle, { className: "octo-icon-sm" }),
135
124
  "Error"
136
125
  ] });
137
126
  }
@@ -144,17 +133,17 @@ function EditProposalBody({ proposal }) {
144
133
  const entryQuery = useEntry(proposal.entryPath);
145
134
  const before = (_c = (_b = entryQuery.data) == null ? void 0 : _b.fields) != null ? _c : null;
146
135
  if (entryQuery.isPending && entryQuery.data === void 0) {
147
- return /* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", children: "Loading current entry\u2026" });
136
+ return /* @__PURE__ */ jsx("div", { className: "octo-proposal-card__loading", children: "Loading current entry..." });
148
137
  }
149
138
  if (entryQuery.isError) {
150
- return /* @__PURE__ */ jsxs("div", { className: "text-xs text-destructive", children: [
139
+ return /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__load-error", children: [
151
140
  "Could not load ",
152
- /* @__PURE__ */ jsx("code", { className: "font-mono", children: proposal.entryPath }),
141
+ /* @__PURE__ */ jsx("code", { className: "octo-u-mono", children: proposal.entryPath }),
153
142
  " to compute the diff."
154
143
  ] });
155
144
  }
156
- return /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
157
- /* @__PURE__ */ jsx("div", { className: "text-[11px] text-muted-foreground", children: /* @__PURE__ */ jsx("span", { className: "font-mono", children: proposal.entryPath }) }),
145
+ return /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__changes", children: [
146
+ /* @__PURE__ */ jsx("div", { className: "octo-proposal-card__entry-path", children: /* @__PURE__ */ jsx("span", { className: "octo-u-mono", children: proposal.entryPath }) }),
158
147
  Object.entries(proposal.fieldChanges).map(([key, afterVal]) => {
159
148
  var _a2;
160
149
  const def = fields[key];
@@ -163,23 +152,23 @@ function EditProposalBody({ proposal }) {
163
152
  const isLong = beforeStr.length + afterStr.length > 80 || beforeStr.includes("\n") || afterStr.includes("\n");
164
153
  const showLineNumbers = (def == null ? void 0 : def.format) === "markdown" || (def == null ? void 0 : def.format) === "richtext" || (def == null ? void 0 : def.format) === "text";
165
154
  return /* @__PURE__ */ jsxs("div", { children: [
166
- /* @__PURE__ */ jsxs("div", { className: "mb-1 flex items-center gap-2 text-[11px] uppercase tracking-wide text-muted-foreground", children: [
167
- /* @__PURE__ */ jsx("span", { className: "font-semibold", children: (_a2 = def == null ? void 0 : def.label) != null ? _a2 : key }),
168
- /* @__PURE__ */ jsx("code", { className: "font-mono normal-case text-muted-foreground/70", children: key }),
169
- (def == null ? void 0 : def.format) && /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground/60", children: [
155
+ /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__field-label", children: [
156
+ /* @__PURE__ */ jsx("span", { className: "octo-u-font-semibold", children: (_a2 = def == null ? void 0 : def.label) != null ? _a2 : key }),
157
+ /* @__PURE__ */ jsx("code", { className: "octo-u-mono octo-proposal-card__field-key", children: key }),
158
+ (def == null ? void 0 : def.format) && /* @__PURE__ */ jsxs("span", { className: "octo-proposal-card__field-format", children: [
170
159
  "(",
171
160
  def.format,
172
161
  ")"
173
162
  ] })
174
163
  ] }),
175
- isLong ? /* @__PURE__ */ jsx(DiffHunk, { before: beforeStr, after: afterStr, showLineNumbers }) : /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-1 text-xs sm:grid-cols-2", children: [
176
- /* @__PURE__ */ jsxs("div", { className: "rounded border border-red-900/40 bg-red-950/40 px-2 py-1 font-mono text-red-200 light:border-red-200 light:bg-red-50 light:text-red-900", children: [
164
+ isLong ? /* @__PURE__ */ jsx(DiffHunk, { before: beforeStr, after: afterStr, showLineNumbers }) : /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__inline-diff", children: [
165
+ /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__inline-before", children: [
177
166
  "\u2212 ",
178
- beforeStr || /* @__PURE__ */ jsx("span", { className: "italic text-muted-foreground/70", children: "empty" })
167
+ beforeStr || /* @__PURE__ */ jsx("span", { className: "octo-proposal-card__empty-val", children: "empty" })
179
168
  ] }),
180
- /* @__PURE__ */ jsxs("div", { className: "rounded border border-emerald-900/40 bg-emerald-950/40 px-2 py-1 font-mono text-emerald-200 light:border-emerald-200 light:bg-emerald-50 light:text-emerald-900", children: [
169
+ /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__inline-after", children: [
181
170
  "+ ",
182
- afterStr || /* @__PURE__ */ jsx("span", { className: "italic text-muted-foreground/70", children: "empty" })
171
+ afterStr || /* @__PURE__ */ jsx("span", { className: "octo-proposal-card__empty-val", children: "empty" })
183
172
  ] })
184
173
  ] })
185
174
  ] }, key);
@@ -191,20 +180,20 @@ function CreateProposalBody({ proposal }) {
191
180
  const config = useConfig();
192
181
  const collection = config.collections[proposal.collection];
193
182
  const fields = (_a = collection == null ? void 0 : collection.fields) != null ? _a : {};
194
- return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
195
- /* @__PURE__ */ jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
183
+ return /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__create", children: [
184
+ /* @__PURE__ */ jsxs("div", { className: "octo-proposal-card__create-meta", children: [
196
185
  "New entry in ",
197
- /* @__PURE__ */ jsx("span", { className: "font-mono", children: proposal.collection }),
186
+ /* @__PURE__ */ jsx("span", { className: "octo-u-mono", children: proposal.collection }),
198
187
  (collection == null ? void 0 : collection.label) ? ` (${collection.label})` : ""
199
188
  ] }),
200
- /* @__PURE__ */ jsx("table", { className: "w-full text-xs", children: /* @__PURE__ */ jsx("tbody", { children: Object.entries(fields).map(([key, def]) => {
189
+ /* @__PURE__ */ jsx("table", { className: "octo-proposal-card__create-table", children: /* @__PURE__ */ jsx("tbody", { children: Object.entries(fields).map(([key, def]) => {
201
190
  const value = proposal.fields[key];
202
- return /* @__PURE__ */ jsxs("tr", { className: "border-t border-border/40 first:border-t-0", children: [
203
- /* @__PURE__ */ jsxs("td", { className: "w-1/3 py-1.5 pr-2 align-top", children: [
204
- /* @__PURE__ */ jsx("span", { className: "font-semibold", children: def.label }),
205
- /* @__PURE__ */ jsx("span", { className: "ml-2 font-mono text-[10px] text-muted-foreground/70", children: def.format })
191
+ return /* @__PURE__ */ jsxs("tr", { className: "octo-proposal-card__create-row", children: [
192
+ /* @__PURE__ */ jsxs("td", { className: "octo-proposal-card__create-key", children: [
193
+ /* @__PURE__ */ jsx("span", { className: "octo-u-font-semibold", children: def.label }),
194
+ /* @__PURE__ */ jsx("span", { className: "octo-proposal-card__create-format", children: def.format })
206
195
  ] }),
207
- /* @__PURE__ */ jsx("td", { className: "py-1.5 align-top", children: value == null || value === "" ? /* @__PURE__ */ jsx("span", { className: "italic text-muted-foreground/70", children: "unset" }) : /* @__PURE__ */ jsx("pre", { className: "whitespace-pre-wrap break-words font-mono text-[11px]", children: stringify(value) }) })
196
+ /* @__PURE__ */ jsx("td", { className: "octo-proposal-card__create-val", children: value == null || value === "" ? /* @__PURE__ */ jsx("span", { className: "octo-proposal-card__empty-val", children: "unset" }) : /* @__PURE__ */ jsx("pre", { className: "octo-proposal-card__create-pre", children: stringify(value) }) })
208
197
  ] }, key);
209
198
  }) }) })
210
199
  ] });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../components/Chat/ProposalCard.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState } from 'react';\nimport { AlertCircle, Check, CheckCircle2, FilePen, FilePlus, Loader2, X } from 'lucide-react';\n\nimport { useEntry } from '../../admin/query/hooks/useEntry';\nimport { useConfig } from '../../hooks/useConfig';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { DiffHunk } from '../DiffView/DiffHunk';\n\nimport type { Proposal, ProposalUiState } from './types';\n\ntype Props = {\n state: ProposalUiState;\n onAccept(id: string): void;\n onReject(id: string, reason?: string): void;\n};\n\nexport function ProposalCard({ state, onAccept, onReject }: Props) {\n const { proposal, status } = state;\n const isEdit = proposal.kind === 'edit';\n const [showRejectInput, setShowRejectInput] = useState(false);\n const [rejectReason, setRejectReason] = useState('');\n\n const isPending = status.kind === 'pending';\n const isBusy = status.kind === 'accepting' || status.kind === 'rejecting';\n\n return (\n <div\n className={cn(\n 'my-3 rounded-md border bg-card text-foreground',\n status.kind === 'error' ? 'border-destructive/50' : 'border-border',\n status.kind === 'accepted' && 'opacity-80',\n status.kind === 'rejected' && 'opacity-60',\n )}\n >\n <div className=\"flex items-center gap-2 border-b border-border/50 px-3 py-2\">\n {isEdit ? (\n <FilePen className=\"h-3.5 w-3.5 text-muted-foreground\" />\n ) : (\n <FilePlus className=\"h-3.5 w-3.5 text-muted-foreground\" />\n )}\n <span className=\"text-xs font-semibold\">{isEdit ? 'Proposed edit' : 'Proposed new entry'}</span>\n <span className=\"text-xs text-muted-foreground truncate flex-1\">{proposal.summary}</span>\n <StatusBadge status={status} />\n </div>\n\n {proposal.reasoning && (\n <div className=\"px-3 py-2 text-xs text-muted-foreground italic border-b border-border/50\">\n “{proposal.reasoning}”\n </div>\n )}\n\n <div className=\"px-3 py-3 space-y-3\">\n {isEdit ? <EditProposalBody proposal={proposal} /> : <CreateProposalBody proposal={proposal} />}\n </div>\n\n {status.kind === 'error' && (\n <div className=\"border-t border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive\">\n <div className=\"font-semibold\">Could not save: {status.message}</div>\n {status.fieldErrors && Object.keys(status.fieldErrors).length > 0 && (\n <ul className=\"mt-1 list-disc pl-4\">\n {Object.entries(status.fieldErrors).map(([k, msg]) => (\n <li key={k}>\n <code className=\"font-mono\">{k}</code>: {msg}\n </li>\n ))}\n </ul>\n )}\n </div>\n )}\n\n {isPending && !showRejectInput && (\n <div className=\"flex items-center gap-2 border-t border-border/50 px-3 py-2\">\n <Button size=\"sm\" onClick={() => onAccept(proposal.id)} disabled={isBusy} className=\"gap-1.5\">\n <Check className=\"h-3.5 w-3.5\" />\n Accept\n </Button>\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => setShowRejectInput(true)}\n disabled={isBusy}\n className=\"gap-1.5\"\n >\n <X className=\"h-3.5 w-3.5\" />\n Reject\n </Button>\n </div>\n )}\n\n {isPending && showRejectInput && (\n <div className=\"flex items-center gap-2 border-t border-border/50 px-3 py-2\">\n <input\n type=\"text\"\n value={rejectReason}\n onChange={(e) => setRejectReason(e.target.value)}\n placeholder=\"Optional reason (helps the agent learn)\"\n aria-label=\"Reason for rejecting\"\n className=\"flex-1 rounded border border-input bg-background px-2 py-1 text-xs focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n onReject(proposal.id, rejectReason.trim() || undefined);\n }\n }}\n />\n <Button\n size=\"sm\"\n variant=\"destructive\"\n onClick={() => onReject(proposal.id, rejectReason.trim() || undefined)}\n >\n Confirm reject\n </Button>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => {\n setShowRejectInput(false);\n setRejectReason('');\n }}\n >\n Cancel\n </Button>\n </div>\n )}\n\n {isBusy && (\n <div className=\"flex items-center gap-2 border-t border-border/50 px-3 py-2 text-xs text-muted-foreground\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n {status.kind === 'accepting' ? 'Saving entry…' : 'Rejecting…'}\n </div>\n )}\n </div>\n );\n}\n\nfunction StatusBadge({ status }: { status: ProposalUiState['status'] }) {\n switch (status.kind) {\n case 'pending':\n return <span className=\"text-[11px] text-muted-foreground\">Awaiting approval</span>;\n case 'accepting':\n case 'rejecting':\n return <Loader2 className=\"h-3.5 w-3.5 animate-spin text-muted-foreground\" />;\n case 'accepted':\n return (\n <span className=\"flex items-center gap-1 text-[11px] text-emerald-400 light:text-emerald-700\">\n <CheckCircle2 className=\"h-3.5 w-3.5\" />\n Accepted\n </span>\n );\n case 'rejected':\n return <span className=\"text-[11px] text-muted-foreground\">Rejected</span>;\n case 'error':\n return (\n <span className=\"flex items-center gap-1 text-[11px] text-destructive\">\n <AlertCircle className=\"h-3.5 w-3.5\" />\n Error\n </span>\n );\n }\n}\n\n/**\n * Render the edit proposal as per-field \"before vs after\" hunks. The \"before\"\n * comes from the live entry on disk (fetched lazily); the \"after\" merges the\n * proposed `fieldChanges` over the existing fields.\n */\nfunction EditProposalBody({ proposal }: { proposal: Extract<Proposal, { kind: 'edit' }> }) {\n const config = useConfig();\n const collection = (\n config.collections as Record<string, { fields: Record<string, { label: string; format: string }> }>\n )[proposal.collection];\n const fields = collection?.fields ?? {};\n const entryQuery = useEntry(proposal.entryPath);\n const before = (entryQuery.data?.fields ?? null) as Record<string, unknown> | null;\n\n if (entryQuery.isPending && entryQuery.data === undefined) {\n return <div className=\"text-xs text-muted-foreground\">Loading current entry…</div>;\n }\n if (entryQuery.isError) {\n return (\n <div className=\"text-xs text-destructive\">\n Could not load <code className=\"font-mono\">{proposal.entryPath}</code> to compute the diff.\n </div>\n );\n }\n\n return (\n <div className=\"space-y-3\">\n <div className=\"text-[11px] text-muted-foreground\">\n <span className=\"font-mono\">{proposal.entryPath}</span>\n </div>\n {Object.entries(proposal.fieldChanges).map(([key, afterVal]) => {\n const def = fields[key];\n const beforeStr = stringify(before?.[key]);\n const afterStr = stringify(afterVal);\n const isLong = beforeStr.length + afterStr.length > 80 || beforeStr.includes('\\n') || afterStr.includes('\\n');\n const showLineNumbers = def?.format === 'markdown' || def?.format === 'richtext' || def?.format === 'text';\n return (\n <div key={key}>\n <div className=\"mb-1 flex items-center gap-2 text-[11px] uppercase tracking-wide text-muted-foreground\">\n <span className=\"font-semibold\">{def?.label ?? key}</span>\n <code className=\"font-mono normal-case text-muted-foreground/70\">{key}</code>\n {def?.format && <span className=\"text-muted-foreground/60\">({def.format})</span>}\n </div>\n {isLong ? (\n <DiffHunk before={beforeStr} after={afterStr} showLineNumbers={showLineNumbers} />\n ) : (\n <div className=\"grid grid-cols-1 gap-1 text-xs sm:grid-cols-2\">\n <div className=\"rounded border border-red-900/40 bg-red-950/40 px-2 py-1 font-mono text-red-200 light:border-red-200 light:bg-red-50 light:text-red-900\">\n − {beforeStr || <span className=\"italic text-muted-foreground/70\">empty</span>}\n </div>\n <div className=\"rounded border border-emerald-900/40 bg-emerald-950/40 px-2 py-1 font-mono text-emerald-200 light:border-emerald-200 light:bg-emerald-50 light:text-emerald-900\">\n + {afterStr || <span className=\"italic text-muted-foreground/70\">empty</span>}\n </div>\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction CreateProposalBody({ proposal }: { proposal: Extract<Proposal, { kind: 'create' }> }) {\n const config = useConfig();\n const collection = (\n config.collections as Record<string, { label: string; fields: Record<string, { label: string; format: string }> }>\n )[proposal.collection];\n const fields = collection?.fields ?? {};\n return (\n <div className=\"space-y-2\">\n <div className=\"text-[11px] text-muted-foreground\">\n New entry in <span className=\"font-mono\">{proposal.collection}</span>\n {collection?.label ? ` (${collection.label})` : ''}\n </div>\n <table className=\"w-full text-xs\">\n <tbody>\n {Object.entries(fields).map(([key, def]) => {\n const value = proposal.fields[key];\n return (\n <tr key={key} className=\"border-t border-border/40 first:border-t-0\">\n <td className=\"w-1/3 py-1.5 pr-2 align-top\">\n <span className=\"font-semibold\">{def.label}</span>\n <span className=\"ml-2 font-mono text-[10px] text-muted-foreground/70\">{def.format}</span>\n </td>\n <td className=\"py-1.5 align-top\">\n {value == null || value === '' ? (\n <span className=\"italic text-muted-foreground/70\">unset</span>\n ) : (\n <pre className=\"whitespace-pre-wrap break-words font-mono text-[11px]\">{stringify(value)}</pre>\n )}\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction stringify(v: unknown): string {\n if (v == null) return '';\n if (typeof v === 'string') return v;\n try {\n return JSON.stringify(v, null, 2);\n } catch {\n return String(v);\n }\n}\n"],"mappings":"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","names":["_a"]}
1
+ {"version":3,"sources":["../../../components/Chat/ProposalCard.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState } from 'react';\nimport { Button, Icon } from '../ui';\n\nimport { useEntry } from '../../admin/query/hooks/useEntry';\nimport { useConfig } from '../../hooks/useConfig';\nimport { cn } from '../../lib/utils';\nimport { DiffHunk } from '../DiffView/DiffHunk';\n\nimport type { Proposal, ProposalUiState } from './types';\n\ntype Props = {\n state: ProposalUiState;\n onAccept(id: string): void;\n onReject(id: string, reason?: string): void;\n};\n\nexport function ProposalCard({ state, onAccept, onReject }: Props) {\n const { proposal, status } = state;\n const isEdit = proposal.kind === 'edit';\n const [showRejectInput, setShowRejectInput] = useState(false);\n const [rejectReason, setRejectReason] = useState('');\n\n const isPending = status.kind === 'pending';\n const isBusy = status.kind === 'accepting' || status.kind === 'rejecting';\n\n return (\n <div\n className={cn(\n 'octo-proposal-card',\n status.kind === 'error' && 'octo-proposal-card octo-proposal-card--error',\n status.kind === 'accepted' && 'octo-proposal-card octo-proposal-card--accepted',\n status.kind === 'rejected' && 'octo-proposal-card octo-proposal-card--rejected',\n )}\n >\n <div className=\"octo-proposal-card__header\">\n {isEdit ? (\n <Icon.FilePen className=\"octo-icon-sm octo-proposal-card__header-icon\" />\n ) : (\n <Icon.FilePlus className=\"octo-icon-sm octo-proposal-card__header-icon\" />\n )}\n <span className=\"octo-proposal-card__kind\">{isEdit ? 'Proposed edit' : 'Proposed new entry'}</span>\n <span className=\"octo-proposal-card__summary\">{proposal.summary}</span>\n <StatusBadge status={status} />\n </div>\n\n {proposal.reasoning && <div className=\"octo-proposal-card__reasoning\">&ldquo;{proposal.reasoning}&rdquo;</div>}\n\n <div className=\"octo-proposal-card__body\">\n {isEdit ? <EditProposalBody proposal={proposal} /> : <CreateProposalBody proposal={proposal} />}\n </div>\n\n {status.kind === 'error' && (\n <div className=\"octo-proposal-card__error-box\">\n <div className=\"octo-proposal-card__error-title\">Could not save: {status.message}</div>\n {status.fieldErrors && Object.keys(status.fieldErrors).length > 0 && (\n <ul className=\"octo-proposal-card__error-list\">\n {Object.entries(status.fieldErrors).map(([k, msg]) => (\n <li key={k}>\n <code className=\"octo-u-mono\">{k}</code>: {msg}\n </li>\n ))}\n </ul>\n )}\n </div>\n )}\n\n {isPending && !showRejectInput && (\n <div className=\"octo-proposal-card__actions\">\n <Button onClick={() => onAccept(proposal.id)} disabled={isBusy} className=\"octo-u-gap-1-5\">\n <Icon.Check className=\"octo-icon-sm\" />\n Accept\n </Button>\n <Button\n variant=\"outline\"\n onClick={() => setShowRejectInput(true)}\n disabled={isBusy}\n className=\"octo-u-gap-1-5\"\n >\n <Icon.X className=\"octo-icon-sm\" />\n Reject\n </Button>\n </div>\n )}\n\n {isPending && showRejectInput && (\n <div className=\"octo-proposal-card__actions\">\n <input\n type=\"text\"\n value={rejectReason}\n onChange={(e) => setRejectReason(e.target.value)}\n placeholder=\"Optional reason (helps the agent learn)\"\n aria-label=\"Reason for rejecting\"\n className=\"octo-proposal-card__reject-input\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n onReject(proposal.id, rejectReason.trim() || undefined);\n }\n }}\n />\n <Button variant=\"destructive\" onClick={() => onReject(proposal.id, rejectReason.trim() || undefined)}>\n Confirm reject\n </Button>\n <Button\n variant=\"ghost\"\n onClick={() => {\n setShowRejectInput(false);\n setRejectReason('');\n }}\n >\n Cancel\n </Button>\n </div>\n )}\n\n {isBusy && (\n <div className=\"octo-proposal-card__busy\">\n <Icon.Loader2 className=\"octo-icon-sm octo-u-animate-spin\" />\n {status.kind === 'accepting' ? 'Saving entry...' : 'Rejecting...'}\n </div>\n )}\n </div>\n );\n}\n\nfunction StatusBadge({ status }: { status: ProposalUiState['status'] }) {\n switch (status.kind) {\n case 'pending':\n return <span className=\"octo-proposal-card__status\">Awaiting approval</span>;\n case 'accepting':\n case 'rejecting':\n return <Icon.Loader2 className=\"octo-icon-sm octo-u-animate-spin octo-proposal-card__status\" />;\n case 'accepted':\n return (\n <span className=\"octo-proposal-card__status octo-proposal-card__status--accepted\">\n <Icon.CheckCircle2 className=\"octo-icon-sm\" />\n Accepted\n </span>\n );\n case 'rejected':\n return <span className=\"octo-proposal-card__status\">Rejected</span>;\n case 'error':\n return (\n <span className=\"octo-proposal-card__status octo-proposal-card__status--error\">\n <Icon.AlertCircle className=\"octo-icon-sm\" />\n Error\n </span>\n );\n }\n}\n\n/**\n * Render the edit proposal as per-field \"before vs after\" hunks. The \"before\"\n * comes from the live entry on disk (fetched lazily); the \"after\" merges the\n * proposed `fieldChanges` over the existing fields.\n */\nfunction EditProposalBody({ proposal }: { proposal: Extract<Proposal, { kind: 'edit' }> }) {\n const config = useConfig();\n const collection = (\n config.collections as Record<string, { fields: Record<string, { label: string; format: string }> }>\n )[proposal.collection];\n const fields = collection?.fields ?? {};\n const entryQuery = useEntry(proposal.entryPath);\n const before = (entryQuery.data?.fields ?? null) as Record<string, unknown> | null;\n\n if (entryQuery.isPending && entryQuery.data === undefined) {\n return <div className=\"octo-proposal-card__loading\">Loading current entry...</div>;\n }\n if (entryQuery.isError) {\n return (\n <div className=\"octo-proposal-card__load-error\">\n Could not load <code className=\"octo-u-mono\">{proposal.entryPath}</code> to compute the diff.\n </div>\n );\n }\n\n return (\n <div className=\"octo-proposal-card__changes\">\n <div className=\"octo-proposal-card__entry-path\">\n <span className=\"octo-u-mono\">{proposal.entryPath}</span>\n </div>\n {Object.entries(proposal.fieldChanges).map(([key, afterVal]) => {\n const def = fields[key];\n const beforeStr = stringify(before?.[key]);\n const afterStr = stringify(afterVal);\n const isLong = beforeStr.length + afterStr.length > 80 || beforeStr.includes('\\n') || afterStr.includes('\\n');\n const showLineNumbers = def?.format === 'markdown' || def?.format === 'richtext' || def?.format === 'text';\n return (\n <div key={key}>\n <div className=\"octo-proposal-card__field-label\">\n <span className=\"octo-u-font-semibold\">{def?.label ?? key}</span>\n <code className=\"octo-u-mono octo-proposal-card__field-key\">{key}</code>\n {def?.format && <span className=\"octo-proposal-card__field-format\">({def.format})</span>}\n </div>\n {isLong ? (\n <DiffHunk before={beforeStr} after={afterStr} showLineNumbers={showLineNumbers} />\n ) : (\n <div className=\"octo-proposal-card__inline-diff\">\n <div className=\"octo-proposal-card__inline-before\">\n − {beforeStr || <span className=\"octo-proposal-card__empty-val\">empty</span>}\n </div>\n <div className=\"octo-proposal-card__inline-after\">\n + {afterStr || <span className=\"octo-proposal-card__empty-val\">empty</span>}\n </div>\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction CreateProposalBody({ proposal }: { proposal: Extract<Proposal, { kind: 'create' }> }) {\n const config = useConfig();\n const collection = (\n config.collections as Record<string, { label: string; fields: Record<string, { label: string; format: string }> }>\n )[proposal.collection];\n const fields = collection?.fields ?? {};\n return (\n <div className=\"octo-proposal-card__create\">\n <div className=\"octo-proposal-card__create-meta\">\n New entry in <span className=\"octo-u-mono\">{proposal.collection}</span>\n {collection?.label ? ` (${collection.label})` : ''}\n </div>\n <table className=\"octo-proposal-card__create-table\">\n <tbody>\n {Object.entries(fields).map(([key, def]) => {\n const value = proposal.fields[key];\n return (\n <tr key={key} className=\"octo-proposal-card__create-row\">\n <td className=\"octo-proposal-card__create-key\">\n <span className=\"octo-u-font-semibold\">{def.label}</span>\n <span className=\"octo-proposal-card__create-format\">{def.format}</span>\n </td>\n <td className=\"octo-proposal-card__create-val\">\n {value == null || value === '' ? (\n <span className=\"octo-proposal-card__empty-val\">unset</span>\n ) : (\n <pre className=\"octo-proposal-card__create-pre\">{stringify(value)}</pre>\n )}\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction stringify(v: unknown): string {\n if (v == null) return '';\n if (typeof v === 'string') return v;\n try {\n return JSON.stringify(v, null, 2);\n } catch {\n return String(v);\n }\n}\n"],"mappings":";;AAoCM,SAEI,KAFJ;AAlCN,SAAgB,gBAAgB;AAChC,SAAS,QAAQ,YAAY;AAE7B,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAC1B,SAAS,UAAU;AACnB,SAAS,gBAAgB;AAUlB,SAAS,aAAa,EAAE,OAAO,UAAU,SAAS,GAAU;AACjE,QAAM,EAAE,UAAU,OAAO,IAAI;AAC7B,QAAM,SAAS,SAAS,SAAS;AACjC,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,KAAK;AAC5D,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,EAAE;AAEnD,QAAM,YAAY,OAAO,SAAS;AAClC,QAAM,SAAS,OAAO,SAAS,eAAe,OAAO,SAAS;AAE9D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,OAAO,SAAS,WAAW;AAAA,QAC3B,OAAO,SAAS,cAAc;AAAA,QAC9B,OAAO,SAAS,cAAc;AAAA,MAChC;AAAA,MAEA;AAAA,6BAAC,SAAI,WAAU,8BACZ;AAAA,mBACC,oBAAC,KAAK,SAAL,EAAa,WAAU,gDAA+C,IAEvE,oBAAC,KAAK,UAAL,EAAc,WAAU,gDAA+C;AAAA,UAE1E,oBAAC,UAAK,WAAU,4BAA4B,mBAAS,kBAAkB,sBAAqB;AAAA,UAC5F,oBAAC,UAAK,WAAU,+BAA+B,mBAAS,SAAQ;AAAA,UAChE,oBAAC,eAAY,QAAgB;AAAA,WAC/B;AAAA,QAEC,SAAS,aAAa,qBAAC,SAAI,WAAU,iCAAgC;AAAA;AAAA,UAAQ,SAAS;AAAA,UAAU;AAAA,WAAO;AAAA,QAExG,oBAAC,SAAI,WAAU,4BACZ,mBAAS,oBAAC,oBAAiB,UAAoB,IAAK,oBAAC,sBAAmB,UAAoB,GAC/F;AAAA,QAEC,OAAO,SAAS,WACf,qBAAC,SAAI,WAAU,iCACb;AAAA,+BAAC,SAAI,WAAU,mCAAkC;AAAA;AAAA,YAAiB,OAAO;AAAA,aAAQ;AAAA,UAChF,OAAO,eAAe,OAAO,KAAK,OAAO,WAAW,EAAE,SAAS,KAC9D,oBAAC,QAAG,WAAU,kCACX,iBAAO,QAAQ,OAAO,WAAW,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,MAC9C,qBAAC,QACC;AAAA,gCAAC,UAAK,WAAU,eAAe,aAAE;AAAA,YAAO;AAAA,YAAG;AAAA,eADpC,CAET,CACD,GACH;AAAA,WAEJ;AAAA,QAGD,aAAa,CAAC,mBACb,qBAAC,SAAI,WAAU,+BACb;AAAA,+BAAC,UAAO,SAAS,MAAM,SAAS,SAAS,EAAE,GAAG,UAAU,QAAQ,WAAU,kBACxE;AAAA,gCAAC,KAAK,OAAL,EAAW,WAAU,gBAAe;AAAA,YAAE;AAAA,aAEzC;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,SAAQ;AAAA,cACR,SAAS,MAAM,mBAAmB,IAAI;AAAA,cACtC,UAAU;AAAA,cACV,WAAU;AAAA,cAEV;AAAA,oCAAC,KAAK,GAAL,EAAO,WAAU,gBAAe;AAAA,gBAAE;AAAA;AAAA;AAAA,UAErC;AAAA,WACF;AAAA,QAGD,aAAa,mBACZ,qBAAC,SAAI,WAAU,+BACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAO;AAAA,cACP,UAAU,CAAC,MAAM,gBAAgB,EAAE,OAAO,KAAK;AAAA,cAC/C,aAAY;AAAA,cACZ,cAAW;AAAA,cACX,WAAU;AAAA,cACV,WAAW,CAAC,MAAM;AAChB,oBAAI,EAAE,QAAQ,SAAS;AACrB,2BAAS,SAAS,IAAI,aAAa,KAAK,KAAK,MAAS;AAAA,gBACxD;AAAA,cACF;AAAA;AAAA,UACF;AAAA,UACA,oBAAC,UAAO,SAAQ,eAAc,SAAS,MAAM,SAAS,SAAS,IAAI,aAAa,KAAK,KAAK,MAAS,GAAG,4BAEtG;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,SAAQ;AAAA,cACR,SAAS,MAAM;AACb,mCAAmB,KAAK;AACxB,gCAAgB,EAAE;AAAA,cACpB;AAAA,cACD;AAAA;AAAA,UAED;AAAA,WACF;AAAA,QAGD,UACC,qBAAC,SAAI,WAAU,4BACb;AAAA,8BAAC,KAAK,SAAL,EAAa,WAAU,oCAAmC;AAAA,UAC1D,OAAO,SAAS,cAAc,oBAAoB;AAAA,WACrD;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,SAAS,YAAY,EAAE,OAAO,GAA0C;AACtE,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,oBAAC,UAAK,WAAU,8BAA6B,+BAAiB;AAAA,IACvE,KAAK;AAAA,IACL,KAAK;AACH,aAAO,oBAAC,KAAK,SAAL,EAAa,WAAU,+DAA8D;AAAA,IAC/F,KAAK;AACH,aACE,qBAAC,UAAK,WAAU,mEACd;AAAA,4BAAC,KAAK,cAAL,EAAkB,WAAU,gBAAe;AAAA,QAAE;AAAA,SAEhD;AAAA,IAEJ,KAAK;AACH,aAAO,oBAAC,UAAK,WAAU,8BAA6B,sBAAQ;AAAA,IAC9D,KAAK;AACH,aACE,qBAAC,UAAK,WAAU,gEACd;AAAA,4BAAC,KAAK,aAAL,EAAiB,WAAU,gBAAe;AAAA,QAAE;AAAA,SAE/C;AAAA,EAEN;AACF;AAOA,SAAS,iBAAiB,EAAE,SAAS,GAAsD;AA7J3F;AA8JE,QAAM,SAAS,UAAU;AACzB,QAAM,aACJ,OAAO,YACP,SAAS,UAAU;AACrB,QAAM,UAAS,8CAAY,WAAZ,YAAsB,CAAC;AACtC,QAAM,aAAa,SAAS,SAAS,SAAS;AAC9C,QAAM,UAAU,sBAAW,SAAX,mBAAiB,WAAjB,YAA2B;AAE3C,MAAI,WAAW,aAAa,WAAW,SAAS,QAAW;AACzD,WAAO,oBAAC,SAAI,WAAU,+BAA8B,sCAAwB;AAAA,EAC9E;AACA,MAAI,WAAW,SAAS;AACtB,WACE,qBAAC,SAAI,WAAU,kCAAiC;AAAA;AAAA,MAC/B,oBAAC,UAAK,WAAU,eAAe,mBAAS,WAAU;AAAA,MAAO;AAAA,OAC1E;AAAA,EAEJ;AAEA,SACE,qBAAC,SAAI,WAAU,+BACb;AAAA,wBAAC,SAAI,WAAU,kCACb,8BAAC,UAAK,WAAU,eAAe,mBAAS,WAAU,GACpD;AAAA,IACC,OAAO,QAAQ,SAAS,YAAY,EAAE,IAAI,CAAC,CAAC,KAAK,QAAQ,MAAM;AAtLtE,UAAAA;AAuLQ,YAAM,MAAM,OAAO,GAAG;AACtB,YAAM,YAAY,UAAU,iCAAS,IAAI;AACzC,YAAM,WAAW,UAAU,QAAQ;AACnC,YAAM,SAAS,UAAU,SAAS,SAAS,SAAS,MAAM,UAAU,SAAS,IAAI,KAAK,SAAS,SAAS,IAAI;AAC5G,YAAM,mBAAkB,2BAAK,YAAW,eAAc,2BAAK,YAAW,eAAc,2BAAK,YAAW;AACpG,aACE,qBAAC,SACC;AAAA,6BAAC,SAAI,WAAU,mCACb;AAAA,8BAAC,UAAK,WAAU,wBAAwB,WAAAA,MAAA,2BAAK,UAAL,OAAAA,MAAc,KAAI;AAAA,UAC1D,oBAAC,UAAK,WAAU,6CAA6C,eAAI;AAAA,WAChE,2BAAK,WAAU,qBAAC,UAAK,WAAU,oCAAmC;AAAA;AAAA,YAAE,IAAI;AAAA,YAAO;AAAA,aAAC;AAAA,WACnF;AAAA,QACC,SACC,oBAAC,YAAS,QAAQ,WAAW,OAAO,UAAU,iBAAkC,IAEhF,qBAAC,SAAI,WAAU,mCACb;AAAA,+BAAC,SAAI,WAAU,qCAAoC;AAAA;AAAA,YAC9C,aAAa,oBAAC,UAAK,WAAU,iCAAgC,mBAAK;AAAA,aACvE;AAAA,UACA,qBAAC,SAAI,WAAU,oCAAmC;AAAA;AAAA,YAC7C,YAAY,oBAAC,UAAK,WAAU,iCAAgC,mBAAK;AAAA,aACtE;AAAA,WACF;AAAA,WAhBM,GAkBV;AAAA,IAEJ,CAAC;AAAA,KACH;AAEJ;AAEA,SAAS,mBAAmB,EAAE,SAAS,GAAwD;AAtN/F;AAuNE,QAAM,SAAS,UAAU;AACzB,QAAM,aACJ,OAAO,YACP,SAAS,UAAU;AACrB,QAAM,UAAS,8CAAY,WAAZ,YAAsB,CAAC;AACtC,SACE,qBAAC,SAAI,WAAU,8BACb;AAAA,yBAAC,SAAI,WAAU,mCAAkC;AAAA;AAAA,MAClC,oBAAC,UAAK,WAAU,eAAe,mBAAS,YAAW;AAAA,OAC/D,yCAAY,SAAQ,KAAK,WAAW,KAAK,MAAM;AAAA,OAClD;AAAA,IACA,oBAAC,WAAM,WAAU,oCACf,8BAAC,WACE,iBAAO,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM;AAC1C,YAAM,QAAQ,SAAS,OAAO,GAAG;AACjC,aACE,qBAAC,QAAa,WAAU,kCACtB;AAAA,6BAAC,QAAG,WAAU,kCACZ;AAAA,8BAAC,UAAK,WAAU,wBAAwB,cAAI,OAAM;AAAA,UAClD,oBAAC,UAAK,WAAU,qCAAqC,cAAI,QAAO;AAAA,WAClE;AAAA,QACA,oBAAC,QAAG,WAAU,kCACX,mBAAS,QAAQ,UAAU,KAC1B,oBAAC,UAAK,WAAU,iCAAgC,mBAAK,IAErD,oBAAC,SAAI,WAAU,kCAAkC,oBAAU,KAAK,GAAE,GAEtE;AAAA,WAXO,GAYT;AAAA,IAEJ,CAAC,GACH,GACF;AAAA,KACF;AAEJ;AAEA,SAAS,UAAU,GAAoB;AACrC,MAAI,KAAK,KAAM,QAAO;AACtB,MAAI,OAAO,MAAM,SAAU,QAAO;AAClC,MAAI;AACF,WAAO,KAAK,UAAU,GAAG,MAAM,CAAC;AAAA,EAClC,SAAQ;AACN,WAAO,OAAO,CAAC;AAAA,EACjB;AACF;","names":["_a"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolCallCard.d.ts","sourceRoot":"","sources":["../../../components/Chat/ToolCallCard.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,2CA+C3C"}
1
+ {"version":3,"file":"ToolCallCard.d.ts","sourceRoot":"","sources":["../../../components/Chat/ToolCallCard.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,2CAyC3C"}
@@ -2,51 +2,42 @@
2
2
  import "../../chunk-B5LE2OEC.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  import { useState } from "react";
5
- import { ChevronRight, Wrench, AlertCircle, CheckCircle2 } from "lucide-react";
5
+ import { Icon } from "../ui";
6
6
  import { cn } from "../../lib/utils";
7
7
  function ToolCallCard({ call }) {
8
8
  const [expanded, setExpanded] = useState(false);
9
9
  const status = call.result ? call.result.isError ? "error" : "ok" : "pending";
10
10
  const inputPreview = formatInputPreview(call.parsedInput, call.inputJson);
11
11
  const resultPreview = call.result ? truncate(call.result.content, 280) : "Running\u2026";
12
- return /* @__PURE__ */ jsxs(
13
- "div",
14
- {
15
- className: cn(
16
- "my-2 rounded-md border bg-muted/40 text-xs",
17
- status === "error" ? "border-destructive/40" : "border-border"
12
+ return /* @__PURE__ */ jsxs("div", { className: cn("octo-tool-call-card", status === "error" && "octo-tool-call-card octo-tool-call-card--error"), children: [
13
+ /* @__PURE__ */ jsxs("button", { type: "button", onClick: () => setExpanded((v) => !v), className: "octo-tool-call-card__toggle", children: [
14
+ /* @__PURE__ */ jsx(
15
+ Icon.ChevronRight,
16
+ {
17
+ className: cn(
18
+ "octo-tool-call-card__chevron octo-icon-xs",
19
+ expanded && "octo-tool-call-card__chevron octo-tool-call-card__chevron--open"
20
+ )
21
+ }
18
22
  ),
19
- children: [
20
- /* @__PURE__ */ jsxs(
21
- "button",
22
- {
23
- type: "button",
24
- onClick: () => setExpanded((v) => !v),
25
- className: "flex w-full items-center gap-2 px-3 py-2 text-left bg-transparent border-0 cursor-pointer",
26
- children: [
27
- /* @__PURE__ */ jsx(ChevronRight, { className: cn("h-3 w-3 transition-transform", expanded && "rotate-90") }),
28
- /* @__PURE__ */ jsx(Wrench, { className: "h-3 w-3 text-muted-foreground" }),
29
- /* @__PURE__ */ jsx("span", { className: "font-mono font-semibold", children: call.name }),
30
- /* @__PURE__ */ jsx("span", { className: "text-muted-foreground truncate flex-1", children: inputPreview }),
31
- status === "pending" && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "\u2026" }),
32
- status === "ok" && /* @__PURE__ */ jsx(CheckCircle2, { className: "h-3 w-3 text-green-600" }),
33
- status === "error" && /* @__PURE__ */ jsx(AlertCircle, { className: "h-3 w-3 text-destructive" })
34
- ]
35
- }
36
- ),
37
- expanded && /* @__PURE__ */ jsxs("div", { className: "border-t border-border/50 px-3 py-2 space-y-2", children: [
38
- /* @__PURE__ */ jsxs("div", { children: [
39
- /* @__PURE__ */ jsx("div", { className: "text-muted-foreground mb-1 text-[11px] uppercase tracking-wide", children: "Input" }),
40
- /* @__PURE__ */ jsx("pre", { className: "whitespace-pre-wrap break-words font-mono text-[11px] text-foreground/80", children: prettyJson(call.parsedInput, call.inputJson) })
41
- ] }),
42
- call.result && /* @__PURE__ */ jsxs("div", { children: [
43
- /* @__PURE__ */ jsx("div", { className: "text-muted-foreground mb-1 text-[11px] uppercase tracking-wide", children: "Result" }),
44
- /* @__PURE__ */ jsx("pre", { className: "whitespace-pre-wrap break-words font-mono text-[11px] text-foreground/80", children: prettyResult(resultPreview, call.result.content) })
45
- ] })
46
- ] })
47
- ]
48
- }
49
- );
23
+ /* @__PURE__ */ jsx(Icon.Wrench, { className: "octo-tool-call-card__icon octo-icon-xs" }),
24
+ /* @__PURE__ */ jsx("span", { className: "octo-tool-call-card__name", children: call.name }),
25
+ /* @__PURE__ */ jsx("span", { className: "octo-tool-call-card__preview", children: inputPreview }),
26
+ status === "pending" && /* @__PURE__ */ jsx("span", { className: "octo-tool-call-card__status", children: "\u2026" }),
27
+ status === "ok" && /* @__PURE__ */ jsx(Icon.CheckCircle2, { className: "octo-icon-xs octo-tool-call-card__status octo-u-text-ok" }),
28
+ status === "error" && /* @__PURE__ */ jsx(Icon.AlertCircle, { className: "octo-icon-xs octo-tool-call-card__status octo-u-text-danger" })
29
+ ] }),
30
+ expanded && /* @__PURE__ */ jsxs("div", { className: "octo-tool-call-card__body", children: [
31
+ /* @__PURE__ */ jsxs("div", { children: [
32
+ /* @__PURE__ */ jsx("div", { className: "octo-tool-call-card__section-label", children: "Input" }),
33
+ /* @__PURE__ */ jsx("pre", { className: "octo-tool-call-card__pre", children: prettyJson(call.parsedInput, call.inputJson) })
34
+ ] }),
35
+ call.result && /* @__PURE__ */ jsxs("div", { children: [
36
+ /* @__PURE__ */ jsx("div", { className: "octo-tool-call-card__section-label", children: "Result" }),
37
+ /* @__PURE__ */ jsx("pre", { className: "octo-tool-call-card__pre", children: prettyResult(resultPreview, call.result.content) })
38
+ ] })
39
+ ] })
40
+ ] });
50
41
  }
51
42
  function formatInputPreview(parsed, raw) {
52
43
  if (parsed && typeof parsed === "object") {