@lostgradient/cinder 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +7 -2
  3. package/components.json +59 -15
  4. package/dist/components/_internal/command-list-context.d.ts +3 -3
  5. package/dist/components/_internal/create-command-list-state.svelte.d.ts +11 -11
  6. package/dist/components/access-gate/index.js +201 -126
  7. package/dist/components/approval-card/approval-card-actions.svelte.d.ts +16 -0
  8. package/dist/components/approval-card/approval-card-state.d.ts +65 -0
  9. package/dist/components/approval-card/approval-card.css +269 -92
  10. package/dist/components/approval-card/approval-card.schema.js +10 -31
  11. package/dist/components/approval-card/approval-card.svelte.d.ts +3 -3
  12. package/dist/components/approval-card/approval-card.types.d.ts +14 -28
  13. package/dist/components/approval-card/index.d.ts +1 -1
  14. package/dist/components/approval-card/index.js +4268 -2884
  15. package/dist/components/card/card.css +5 -0
  16. package/dist/components/card/card.schema.js +2 -2
  17. package/dist/components/card/card.types.d.ts +2 -2
  18. package/dist/components/card/index.js +2 -1
  19. package/dist/components/chat/chat.schema.js +48 -1
  20. package/dist/components/chat/chat.svelte.d.ts +6 -2
  21. package/dist/components/chat/chat.types.d.ts +37 -0
  22. package/dist/components/chat/container/chat.svelte.d.ts +6 -2
  23. package/dist/components/chat/index.d.ts +3 -3
  24. package/dist/components/chat/index.js +1099 -4865
  25. package/dist/components/chat/input/chat-attachment-serialization.d.ts +9 -0
  26. package/dist/components/chat/input/chat-input.svelte.d.ts +24 -0
  27. package/dist/components/chat/input/index.d.ts +1 -0
  28. package/dist/components/chat-composer-popover/chat-composer-popover-filter.d.ts +11 -0
  29. package/dist/components/chat-composer-popover/chat-composer-popover.css +7 -0
  30. package/dist/components/chat-composer-popover/chat-composer-popover.css.d.ts +1 -0
  31. package/dist/components/chat-composer-popover/chat-composer-popover.schema.d.ts +3 -0
  32. package/dist/components/chat-composer-popover/chat-composer-popover.schema.js +150 -0
  33. package/dist/components/chat-composer-popover/chat-composer-popover.svelte.d.ts +46 -0
  34. package/dist/components/chat-composer-popover/chat-composer-popover.types.d.ts +77 -0
  35. package/dist/components/chat-composer-popover/chat-composer-popover.variables.d.ts +2 -0
  36. package/dist/components/chat-composer-popover/chat-composer-popover.variables.js +61 -0
  37. package/dist/components/chat-composer-popover/index.d.ts +6 -0
  38. package/dist/components/chat-composer-popover/index.js +3285 -0
  39. package/dist/components/chat-conversation-header/index.js +1627 -5600
  40. package/dist/components/chat-conversation-list/index.js +15 -3988
  41. package/dist/components/code-block/code-block.schema.js +5 -1
  42. package/dist/components/code-block/code-block.types.d.ts +6 -0
  43. package/dist/components/code-block/index.js +4 -4
  44. package/dist/components/command-item/index.js +7 -6
  45. package/dist/components/command-menu/command-menu.schema.js +5 -1
  46. package/dist/components/command-menu/command-menu.types.d.ts +2 -0
  47. package/dist/components/command-menu/index.js +48 -19
  48. package/dist/components/command-palette/index.js +40 -14
  49. package/dist/components/event-stream-viewer/index.js +44 -44
  50. package/dist/components/experimental/json-viewer/index.js +44 -44
  51. package/dist/components/json-schema-editor/index.js +5 -2
  52. package/dist/components/json-viewer/index.js +44 -44
  53. package/dist/components/json-viewer/json-viewer.css +10 -6
  54. package/dist/components/navigation-bar/index.js +44 -6
  55. package/dist/components/payload-inspector/index.d.ts +1 -1
  56. package/dist/components/payload-inspector/index.js +306 -1422
  57. package/dist/components/payload-inspector/payload-inspector.css +15 -75
  58. package/dist/components/payload-inspector/payload-inspector.schema.js +5 -41
  59. package/dist/components/payload-inspector/payload-inspector.svelte.d.ts +5 -5
  60. package/dist/components/payload-inspector/payload-inspector.types.d.ts +10 -56
  61. package/dist/components/sidebar/index.js +6 -3
  62. package/dist/components/sidebar/sidebar.css +4 -0
  63. package/dist/components/tab/index.js +5 -2
  64. package/dist/components/tab/tab.schema.js +7 -3
  65. package/dist/components/tab/tab.svelte.d.ts +2 -1
  66. package/dist/components/tab/tab.types.d.ts +8 -2
  67. package/dist/components/tabs/index.js +5 -2
  68. package/dist/components/team-section/index.js +2 -1
  69. package/dist/components/testimonial-section/index.js +2 -1
  70. package/dist/index.d.ts +4 -2
  71. package/dist/index.js +24169 -27821
  72. package/dist/server/components/access-gate/index.js +2 -1
  73. package/dist/server/components/accordion/index.js +2 -2
  74. package/dist/server/components/alert-dialog/index.js +2 -2
  75. package/dist/server/components/approval-card/index.js +15 -19
  76. package/dist/server/components/autocomplete/index.js +7 -7
  77. package/dist/server/components/avatar-group/index.js +5 -5
  78. package/dist/server/components/button-group/index.js +3 -5
  79. package/dist/server/components/card/index.js +2 -2
  80. package/dist/server/components/chat/index.js +14 -11
  81. package/dist/server/components/chat-composer-popover/index.js +26 -0
  82. package/dist/server/components/chat-conversation-header/index.js +9 -10
  83. package/dist/server/components/chat-conversation-list/index.js +4 -5
  84. package/dist/server/components/checkbox/index.js +3 -3
  85. package/dist/server/components/choice-grid/index.js +2 -2
  86. package/dist/server/components/code-block/index.js +2 -2
  87. package/dist/server/components/color-field/index.js +3 -3
  88. package/dist/server/components/combobox/index.js +6 -6
  89. package/dist/server/components/command-item/index.js +5 -3
  90. package/dist/server/components/command-menu/index.js +6 -4
  91. package/dist/server/components/command-palette/index.js +2 -2
  92. package/dist/server/components/confirm-dialog/index.js +2 -2
  93. package/dist/server/components/context-menu/index.js +5 -5
  94. package/dist/server/components/data-table/index.js +5 -5
  95. package/dist/server/components/date-picker/index.js +6 -6
  96. package/dist/server/components/date-range-field/index.js +7 -7
  97. package/dist/server/components/description-list/index.js +3 -5
  98. package/dist/server/components/diff-viewer/index.js +7 -7
  99. package/dist/server/components/drawer/index.js +3 -3
  100. package/dist/server/components/dropdown/index.js +4 -4
  101. package/dist/server/components/event-stream-viewer/index.js +2 -2
  102. package/dist/server/components/experimental/json-viewer/index.js +2 -2
  103. package/dist/server/components/faceted-filter-bar/index.js +1 -1
  104. package/dist/server/components/hover-card/index.js +1 -1
  105. package/dist/server/components/input/index.js +3 -3
  106. package/dist/server/components/json-schema-editor/index.js +22 -22
  107. package/dist/server/components/json-viewer/index.js +2 -2
  108. package/dist/server/components/markdown-editor/index.js +13 -13
  109. package/dist/server/components/modal/index.js +1 -1
  110. package/dist/server/components/multi-select/index.js +1 -1
  111. package/dist/server/components/navigation-bar/index.js +1 -1
  112. package/dist/server/components/newsletter-section/index.js +3 -3
  113. package/dist/server/components/payload-inspector/index.js +4 -16
  114. package/dist/server/components/popover/index.js +5 -5
  115. package/dist/server/components/review-editor/index.js +25 -25
  116. package/dist/server/components/run-step-timeline/index.js +2 -2
  117. package/dist/server/components/schema-form/index.js +4 -4
  118. package/dist/server/components/secret-value-field/index.js +3 -5
  119. package/dist/server/components/segment/index.js +3 -3
  120. package/dist/server/components/segmented-control/index.js +4 -4
  121. package/dist/server/components/selection-popover/index.js +4 -4
  122. package/dist/server/components/sheet/index.js +2 -2
  123. package/dist/server/components/sidebar/index.js +3 -3
  124. package/dist/server/components/tab/index.js +2 -2
  125. package/dist/server/components/table/index.js +3 -3
  126. package/dist/server/components/tabs/index.js +4 -4
  127. package/dist/server/components/tag-input/index.js +3 -3
  128. package/dist/server/components/team-section/index.js +8 -8
  129. package/dist/server/components/testimonial-section/index.js +2 -2
  130. package/dist/server/components/toggle/index.js +2 -2
  131. package/dist/server/components/tooltip/index.js +1 -1
  132. package/dist/server/index.js +160 -149
  133. package/dist/server/{index.server-cbtg8rq5.js → index.server-0atyznp7.js} +5 -5
  134. package/dist/server/{index.server-20y4mdhm.js → index.server-0chhpkg7.js} +40 -14
  135. package/dist/server/{index.server-ecm1vs3g.js → index.server-1nq7z1qw.js} +1 -1
  136. package/dist/server/{index.server-jync915v.js → index.server-2dga5yzr.js} +25 -25
  137. package/dist/server/index.server-2hqrv7ca.js +9 -0
  138. package/dist/server/{index.server-qwknp759.js → index.server-2qj6s2mh.js} +7 -4
  139. package/dist/server/{index.server-pt8b65mt.js → index.server-38aywdk1.js} +1 -1
  140. package/dist/server/{index.server-rermas0k.js → index.server-47v2fhp4.js} +4 -4
  141. package/dist/server/{index.server-9j5sym59.js → index.server-4x91gzy1.js} +2 -2
  142. package/dist/server/{index.server-q48q15g7.js → index.server-4y2jtvv1.js} +4 -2
  143. package/dist/server/{index.server-zeqv7nrz.js → index.server-5tf22d6e.js} +43 -6
  144. package/dist/server/index.server-67qgdypc.js +9 -0
  145. package/dist/server/{index.server-9jete4xx.js → index.server-6sh11ap6.js} +4 -4
  146. package/dist/server/{index.server-4ztq565m.js → index.server-85p4ydph.js} +1 -1
  147. package/dist/server/{index.server-4nk7gy0q.js → index.server-894t97kv.js} +1 -1
  148. package/dist/server/{index.server-1vscnped.js → index.server-8dt36sdm.js} +2 -1
  149. package/dist/server/{index.server-bfsbp9dz.js → index.server-8xvc73zh.js} +4 -4
  150. package/dist/server/{index.server-cvnw3hw9.js → index.server-9kz37z89.js} +1 -1
  151. package/dist/server/{index.server-kc1k02tk.js → index.server-9ykk1kbg.js} +1 -1
  152. package/dist/server/{index.server-g789yep6.js → index.server-aqethy0w.js} +2 -2
  153. package/dist/server/{index.server-wc9aggfz.js → index.server-bmxbsk4y.js} +7 -7
  154. package/dist/server/{index.server-j3ddzcaa.js → index.server-c6pe4kaf.js} +6 -6
  155. package/dist/server/{index.server-q89dz8h1.js → index.server-d3pqthtp.js} +4 -3
  156. package/dist/server/{index.server-qfa2rxzx.js → index.server-dg83ke3k.js} +3 -5
  157. package/dist/server/{index.server-jk4rx4aa.js → index.server-dmmvwy6p.js} +1 -1
  158. package/dist/server/{index.server-hcfnae5y.js → index.server-dwwqssey.js} +4 -4
  159. package/dist/server/{index.server-e8x1hgw6.js → index.server-dz1r9xw5.js} +4 -4
  160. package/dist/server/{index.server-wm7mk5kw.js → index.server-ez5hp0ya.js} +1 -1
  161. package/dist/server/{index.server-ejyf7e48.js → index.server-fy068yne.js} +1 -1
  162. package/dist/server/{index.server-wc8dbm5e.js → index.server-g95bk8rc.js} +4 -2
  163. package/dist/server/index.server-gkazv439.js +576 -0
  164. package/dist/server/{index.server-dp9j2kkr.js → index.server-h0cvwvhy.js} +1 -1
  165. package/dist/server/{index.server-pacrqvyz.js → index.server-h90pjrez.js} +1 -1
  166. package/dist/server/{index.server-p8d04em5.js → index.server-hcsd5gdb.js} +6 -2
  167. package/dist/server/{index.server-n39drzes.js → index.server-hpeavvnq.js} +1 -1
  168. package/dist/server/{index.server-1p3patnj.js → index.server-hx91ng7z.js} +1 -1
  169. package/dist/server/{index.server-jtj3r53y.js → index.server-jgb8yh5k.js} +1 -1
  170. package/dist/server/{index.server-w1g5q9j9.js → index.server-jtgw9d23.js} +4 -2
  171. package/dist/server/{index.server-mehav5vs.js → index.server-jxg42jpz.js} +4 -4
  172. package/dist/server/{index.server-hd8gpehd.js → index.server-jxseyx33.js} +1 -1
  173. package/dist/server/{index.server-kg2sepsr.js → index.server-krqvnt6p.js} +14 -15
  174. package/dist/server/{index.server-0e1m3agz.js → index.server-ks49bprh.js} +1 -1
  175. package/dist/server/{index.server-f0hma3jp.js → index.server-kt0ncrqs.js} +1 -1
  176. package/dist/server/index.server-m0ezemav.js +170 -0
  177. package/dist/server/index.server-m191rm44.js +79 -0
  178. package/dist/server/{index.server-f23vtaw4.js → index.server-marjz8ps.js} +6 -6
  179. package/dist/server/index.server-mqt1ngqw.js +250 -0
  180. package/dist/server/{index.server-s9khh4ry.js → index.server-mzzb7dnm.js} +3 -5
  181. package/dist/server/{index.server-z721a5gp.js → index.server-n82rcv0m.js} +4 -4
  182. package/dist/server/{index.server-rhhmdxtz.js → index.server-np3c7kx0.js} +4 -4
  183. package/dist/server/{index.server-hpcs7tmh.js → index.server-p56xxef1.js} +1 -1
  184. package/dist/server/{index.server-w83kmcrx.js → index.server-pag862vz.js} +10 -10
  185. package/dist/server/{index.server-gxf0d1p5.js → index.server-q7w4jw89.js} +2 -2
  186. package/dist/server/{index.server-bvmwnjx6.js → index.server-qh9qzd5t.js} +186 -23
  187. package/dist/server/{index.server-pxg74pyp.js → index.server-qk1h0n02.js} +4 -4
  188. package/dist/server/{index.server-sh2rxejg.js → index.server-qke3ekjt.js} +1 -1
  189. package/dist/server/{index.server-73x2d3j3.js → index.server-rbpvcrr3.js} +1 -1
  190. package/dist/server/{index.server-8cxs4kya.js → index.server-rga8sc7j.js} +41 -44
  191. package/dist/server/{index.server-e3fnv1g6.js → index.server-sedjxt36.js} +5 -5
  192. package/dist/server/{index.server-pen9pxt6.js → index.server-sf3nk3j2.js} +2 -2
  193. package/dist/server/{index.server-7fp0epev.js → index.server-veastatv.js} +4 -4
  194. package/dist/server/{index.server-jeqg2d22.js → index.server-xeqtpv61.js} +1 -1
  195. package/dist/server/{index.server-9s4na701.js → index.server-xjnge1yw.js} +4 -4
  196. package/dist/server/index.server-xtjjmsyq.js +315 -0
  197. package/dist/server/{index.server-hhxjaeen.js → index.server-xz99aed4.js} +4 -4
  198. package/dist/server/{index.server-vne4rzfa.js → index.server-y4n8vc08.js} +1 -1
  199. package/dist/server/{index.server-5d01cn4f.js → index.server-y83kqayt.js} +4 -4
  200. package/dist/server/{index.server-1nh09ck7.js → index.server-yhzydqxe.js} +5 -5
  201. package/dist/server/{index.server-atjc1qcq.js → index.server-yz4k36cw.js} +1 -1
  202. package/dist/server/{index.server-w6k62afr.js → index.server-ze1ymmbw.js} +2 -2
  203. package/dist/server/{index.server-914v805w.js → index.server-zgd1g8mk.js} +1 -1
  204. package/dist/server/{index.server-aeexcxdp.js → index.server-zh3r8vfd.js} +1 -1
  205. package/dist/server/{index.server-10jb2jzm.js → index.server-zsjf8enc.js} +4 -4
  206. package/package.json +42 -6
  207. package/src/components/_internal/command-list-context.ts +3 -3
  208. package/src/components/_internal/create-command-list-state.svelte.ts +39 -13
  209. package/src/components/approval-card/approval-card-actions.svelte +168 -0
  210. package/src/components/approval-card/approval-card-state.ts +152 -1
  211. package/src/components/approval-card/approval-card.css +269 -92
  212. package/src/components/approval-card/approval-card.examples.json +3 -3
  213. package/src/components/approval-card/approval-card.schema.json +9 -30
  214. package/src/components/approval-card/approval-card.schema.ts +13 -31
  215. package/src/components/approval-card/approval-card.svelte +176 -470
  216. package/src/components/approval-card/approval-card.types.ts +15 -28
  217. package/src/components/approval-card/index.ts +1 -0
  218. package/src/components/card/card.css +5 -0
  219. package/src/components/card/card.schema.json +1 -1
  220. package/src/components/card/card.schema.ts +1 -1
  221. package/src/components/card/card.svelte +1 -0
  222. package/src/components/card/card.types.ts +2 -2
  223. package/src/components/chat/chat.schema.json +40 -0
  224. package/src/components/chat/chat.schema.ts +49 -0
  225. package/src/components/chat/chat.svelte +20 -0
  226. package/src/components/chat/chat.types.ts +38 -0
  227. package/src/components/chat/container/chat.svelte +82 -3
  228. package/src/components/chat/index.ts +15 -3
  229. package/src/components/chat/input/chat-attachment-serialization.ts +63 -0
  230. package/src/components/chat/input/chat-input.svelte +30 -3
  231. package/src/components/chat/input/index.ts +5 -0
  232. package/src/components/chat-composer-popover/chat-composer-popover-filter.ts +68 -0
  233. package/src/components/chat-composer-popover/chat-composer-popover.css +7 -0
  234. package/src/components/chat-composer-popover/chat-composer-popover.examples.json +13 -0
  235. package/src/components/chat-composer-popover/chat-composer-popover.schema.json +90 -0
  236. package/src/components/chat-composer-popover/chat-composer-popover.schema.ts +95 -0
  237. package/src/components/chat-composer-popover/chat-composer-popover.svelte +234 -0
  238. package/src/components/chat-composer-popover/chat-composer-popover.types.ts +88 -0
  239. package/src/components/chat-composer-popover/chat-composer-popover.variables.json +1 -0
  240. package/src/components/chat-composer-popover/chat-composer-popover.variables.ts +3 -0
  241. package/src/components/chat-composer-popover/index.ts +19 -0
  242. package/src/components/code-block/code-block.schema.json +4 -0
  243. package/src/components/code-block/code-block.schema.ts +5 -0
  244. package/src/components/code-block/code-block.svelte +3 -3
  245. package/src/components/code-block/code-block.types.ts +6 -0
  246. package/src/components/command-item/command-item.svelte +7 -6
  247. package/src/components/command-menu/command-menu.schema.json +4 -0
  248. package/src/components/command-menu/command-menu.schema.ts +4 -0
  249. package/src/components/command-menu/command-menu.svelte +16 -5
  250. package/src/components/command-menu/command-menu.types.ts +2 -0
  251. package/src/components/json-viewer/_json-viewer-node.svelte +15 -1
  252. package/src/components/json-viewer/json-viewer.css +10 -6
  253. package/src/components/navigation-bar/navigation-bar.svelte +49 -7
  254. package/src/components/payload-inspector/index.ts +0 -2
  255. package/src/components/payload-inspector/payload-inspector.css +15 -75
  256. package/src/components/payload-inspector/payload-inspector.examples.json +5 -5
  257. package/src/components/payload-inspector/payload-inspector.schema.json +3 -31
  258. package/src/components/payload-inspector/payload-inspector.schema.ts +3 -36
  259. package/src/components/payload-inspector/payload-inspector.svelte +46 -239
  260. package/src/components/payload-inspector/payload-inspector.types.ts +10 -58
  261. package/src/components/sidebar/sidebar.css +4 -0
  262. package/src/components/sidebar/sidebar.svelte +6 -3
  263. package/src/components/tab/tab.schema.json +6 -2
  264. package/src/components/tab/tab.schema.ts +8 -2
  265. package/src/components/tab/tab.svelte +9 -5
  266. package/src/components/tab/tab.types.ts +8 -2
  267. package/src/index.ts +18 -5
  268. package/src/styles/components.css +1 -0
  269. package/dist/server/index-49we2xfs.js +0 -344
  270. package/dist/server/index-8fhvxk30.js +0 -265
  271. package/dist/server/index-x2ysg8ds.js +0 -388
  272. package/dist/server/index.server-20j0jh30.js +0 -9
  273. package/dist/server/index.server-dc35kh7d.js +0 -1835
  274. package/dist/server/index.server-kd4b0342.js +0 -607
  275. package/dist/server/index.server-n5cdmsz4.js +0 -30
  276. package/dist/server/index.server-rjap4k7y.js +0 -1389
  277. package/dist/server/index.server-vt6sn9y4.js +0 -447
  278. package/dist/server/index.server-w63n618v.js +0 -9
  279. package/dist/server/index.server-y2pa1k46.js +0 -9
@@ -5,21 +5,17 @@
5
5
  * between `src/` and generated `dist/`. */
6
6
  @import '../badge/badge.css';
7
7
  @import '../button/button.css';
8
- @import '../button-group/button-group.css';
9
8
  @import '../card/card.css';
10
9
  @import '../code-block/code-block.css';
10
+ @import '../collapsible/collapsible.css';
11
11
  @import '../copy-button/copy-button.css';
12
- @import '../description-list/description-list.css';
13
12
  @import '../json-viewer/json-viewer.css';
14
13
  @import '../payload-inspector/payload-inspector.css';
15
- @import '../secret-value-field/secret-value-field.css';
16
14
  @import '../status-dot/status-dot.css';
17
- @import '../tabs/tabs.css';
15
+ @import '../tooltip/tooltip.css';
18
16
 
19
17
  @layer cinder.components {
20
18
  .cinder-approval-card {
21
- container-type: inline-size;
22
- container-name: cinder-approval-card;
23
19
  display: block;
24
20
  }
25
21
 
@@ -27,35 +23,37 @@
27
23
  overflow: hidden;
28
24
  }
29
25
 
26
+ /* ----------------------------------------
27
+ * Header
28
+ * ---------------------------------------- */
29
+
30
30
  .cinder-approval-card__header {
31
31
  display: flex;
32
+ flex-wrap: wrap;
32
33
  align-items: flex-start;
33
34
  justify-content: space-between;
34
- gap: var(--cinder-space-4);
35
+ gap: var(--cinder-space-2) var(--cinder-space-4);
35
36
  padding: var(--cinder-space-4);
36
- border-block-end: 1px solid var(--cinder-border-muted);
37
37
  background: var(--cinder-surface-inset);
38
38
  }
39
39
 
40
+ .cinder-approval-card[data-cinder-risk='high'] .cinder-approval-card__header {
41
+ background: var(--cinder-color-danger-bg);
42
+ }
43
+
44
+ /* Title and badges stay on one row whenever they both fit — `flex-wrap`
45
+ reacts to the actual rendered width of this title (which varies with the
46
+ tool name) instead of guessing a fixed container breakpoint. Below
47
+ `min-inline-size`, the title wraps its own text first; badges only drop
48
+ to their own row once nothing more can give. On that solo-item row,
49
+ `justify-content: space-between` on the header collapses to flex-start,
50
+ so no separate narrow-container override is needed. */
40
51
  .cinder-approval-card__title-group {
41
52
  display: flex;
42
53
  flex-direction: column;
54
+ flex: 1 1 14rem;
43
55
  gap: var(--cinder-space-1);
44
- min-inline-size: 0;
45
- }
46
-
47
- .cinder-approval-card__eyebrow,
48
- .cinder-approval-card__description,
49
- .cinder-approval-card__muted {
50
- margin: 0;
51
- color: var(--cinder-text-muted);
52
- font-size: var(--cinder-text-sm);
53
- }
54
-
55
- .cinder-approval-card__eyebrow {
56
- font-size: var(--cinder-text-xs);
57
- font-weight: var(--cinder-font-semibold);
58
- text-transform: uppercase;
56
+ min-inline-size: 10rem;
59
57
  }
60
58
 
61
59
  .cinder-approval-card__title {
@@ -66,23 +64,63 @@
66
64
  line-height: var(--cinder-leading-tight);
67
65
  }
68
66
 
69
- .cinder-approval-card__badges,
70
- .cinder-approval-card__section-heading,
71
- .cinder-approval-card__editor-actions {
67
+ .cinder-approval-card__title-tool {
68
+ font-family: var(--cinder-font-mono);
69
+ }
70
+
71
+ .cinder-approval-card__badges {
72
72
  display: flex;
73
+ flex: 0 1 auto;
73
74
  align-items: center;
74
75
  flex-wrap: wrap;
76
+ justify-content: flex-end;
75
77
  gap: var(--cinder-space-2);
76
78
  }
77
79
 
78
- .cinder-approval-card__badges {
79
- justify-content: flex-end;
80
+ /* StatusDot and Badge each define their own type scale per size step, and
81
+ those scales don't line up 1:1 (StatusDot's "sm" label text is larger
82
+ than Badge's "sm" text). Force every status/risk/expiry indicator in this
83
+ row to the same font-size so the row reads as one cohesive unit. */
84
+ .cinder-approval-card__badges .cinder-status-dot[data-cinder-size='sm'],
85
+ .cinder-approval-card__badges .cinder-badge[data-cinder-size='sm'] {
86
+ font-size: var(--cinder-text-xs);
80
87
  }
81
88
 
89
+ .cinder-approval-card__risk-icon {
90
+ display: inline-flex;
91
+ align-items: center;
92
+ border-radius: var(--cinder-radius-sm);
93
+ }
94
+
95
+ .cinder-approval-card__risk-icon[data-cinder-risk='low'] {
96
+ color: var(--cinder-success);
97
+ }
98
+
99
+ .cinder-approval-card__risk-icon[data-cinder-risk='medium'] {
100
+ color: var(--cinder-warning);
101
+ }
102
+
103
+ .cinder-approval-card__risk-icon[data-cinder-risk='high'] {
104
+ color: var(--cinder-danger);
105
+ }
106
+
107
+ .cinder-approval-card__risk-icon:focus-visible {
108
+ /* cinder-focus-ring-owner: parent — the trigger self-owns its box-shadow
109
+ ring; the outline is intentionally suppressed. */
110
+ outline: none;
111
+ box-shadow:
112
+ 0 0 0 var(--cinder-ring-offset, 1px) var(--cinder-ring-offset-color),
113
+ 0 0 0 calc(var(--cinder-ring-offset, 1px) + var(--cinder-ring-width)) var(--cinder-ring-color);
114
+ }
115
+
116
+ /* ----------------------------------------
117
+ * Body sections
118
+ * ---------------------------------------- */
119
+
82
120
  .cinder-approval-card__body {
83
121
  display: flex;
84
122
  flex-direction: column;
85
- gap: var(--cinder-space-4);
123
+ gap: var(--cinder-space-3);
86
124
  padding: var(--cinder-space-4);
87
125
  }
88
126
 
@@ -92,57 +130,33 @@
92
130
  gap: var(--cinder-space-2);
93
131
  }
94
132
 
95
- .cinder-approval-card__section-title,
96
- .cinder-approval-card__subsection-title {
133
+ .cinder-approval-card__section-heading {
134
+ display: flex;
135
+ align-items: center;
136
+ flex-wrap: wrap;
137
+ gap: var(--cinder-space-2);
138
+ }
139
+
140
+ .cinder-approval-card__section-title {
97
141
  margin: 0;
98
142
  color: var(--cinder-text);
99
143
  font-size: var(--cinder-text-sm);
100
144
  font-weight: var(--cinder-font-semibold);
101
145
  }
102
146
 
103
- .cinder-approval-card__subsection-title {
104
- font-size: var(--cinder-text-xs);
105
- }
106
-
107
- .cinder-approval-card__metadata {
108
- display: grid;
109
- grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
110
- gap: var(--cinder-space-2);
147
+ .cinder-approval-card__muted {
111
148
  margin: 0;
112
- }
113
-
114
- .cinder-approval-card__metadata--compact {
115
- grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
116
- }
117
-
118
- .cinder-approval-card__metadata-item {
119
- min-inline-size: 0;
120
- }
121
-
122
- .cinder-approval-card__metadata-item dt {
123
149
  color: var(--cinder-text-muted);
124
- font-size: var(--cinder-text-xs);
125
- font-weight: var(--cinder-font-medium);
126
- }
127
-
128
- .cinder-approval-card__metadata-item dd {
129
- margin: 0;
130
- overflow-wrap: anywhere;
131
- color: var(--cinder-text);
132
- font-family: var(--cinder-font-mono);
133
- font-size: var(--cinder-text-xs);
150
+ font-size: var(--cinder-text-sm);
134
151
  }
135
152
 
136
- .cinder-approval-card__files {
137
- display: flex;
138
- flex-direction: column;
139
- gap: var(--cinder-space-2);
140
- }
153
+ /* ----------------------------------------
154
+ * Files touched
155
+ * ---------------------------------------- */
141
156
 
142
157
  .cinder-approval-card__file-list {
143
158
  display: flex;
144
159
  flex-direction: column;
145
- gap: var(--cinder-space-1);
146
160
  max-block-size: 14rem;
147
161
  overflow-y: auto;
148
162
  margin: 0;
@@ -150,49 +164,76 @@
150
164
  list-style: none;
151
165
  }
152
166
 
153
- .cinder-approval-card__file-list li {
167
+ .cinder-approval-card__file {
168
+ display: flex;
169
+ align-items: center;
170
+ justify-content: space-between;
171
+ gap: var(--cinder-space-2);
172
+ }
173
+
174
+ .cinder-approval-card__file-path {
154
175
  overflow-wrap: anywhere;
155
- border: 1px solid var(--cinder-border-muted);
156
- border-radius: var(--cinder-radius-sm);
157
- padding: var(--cinder-space-1) var(--cinder-space-2);
158
- background: var(--cinder-surface-inset);
159
176
  color: var(--cinder-text);
160
177
  font-family: var(--cinder-font-mono);
161
178
  font-size: var(--cinder-text-xs);
162
179
  }
163
180
 
181
+ .cinder-approval-card__file .cinder-approval-card__file-copy {
182
+ flex: 0 0 auto;
183
+ padding: var(--cinder-space-1);
184
+ border: none;
185
+ }
186
+
187
+ /* ----------------------------------------
188
+ * Environment names
189
+ * ---------------------------------------- */
190
+
164
191
  .cinder-approval-card__environment-list {
165
- display: grid;
166
- grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
192
+ display: flex;
193
+ flex-wrap: wrap;
167
194
  gap: var(--cinder-space-2);
195
+ margin: 0;
196
+ padding: 0;
197
+ list-style: none;
168
198
  }
169
199
 
170
- .cinder-approval-card__actions-section {
171
- gap: var(--cinder-space-3);
172
- }
200
+ /* ----------------------------------------
201
+ * Resolution controls and actions
202
+ * ---------------------------------------- */
173
203
 
174
- .cinder-approval-card__resolution-controls {
204
+ .cinder-approval-card__actions {
175
205
  display: flex;
176
206
  flex-direction: column;
177
- gap: var(--cinder-space-2);
207
+ gap: var(--cinder-space-3);
178
208
  }
179
209
 
180
- .cinder-approval-card__editor {
210
+ .cinder-approval-card__resolution-controls {
181
211
  display: flex;
182
212
  flex-direction: column;
183
213
  gap: var(--cinder-space-2);
184
- border: 1px solid var(--cinder-border-muted);
185
- border-radius: var(--cinder-radius-md);
186
- padding: var(--cinder-space-3);
187
- background: var(--cinder-surface-inset);
188
214
  }
189
215
 
190
- .cinder-approval-card__editor-label {
216
+ .cinder-approval-card__control-label {
191
217
  color: var(--cinder-text);
192
218
  font-size: var(--cinder-text-sm);
193
219
  font-weight: var(--cinder-font-semibold);
194
220
  }
195
221
 
222
+ .cinder-approval-card__action-row {
223
+ display: flex;
224
+ align-items: center;
225
+ flex-wrap: wrap;
226
+ gap: var(--cinder-space-3);
227
+ }
228
+
229
+ .cinder-approval-card__action-buttons {
230
+ display: flex;
231
+ align-items: center;
232
+ flex-wrap: wrap;
233
+ gap: var(--cinder-space-2);
234
+ margin-inline-start: auto;
235
+ }
236
+
196
237
  .cinder-approval-card__textarea {
197
238
  min-block-size: 10rem;
198
239
  resize: vertical;
@@ -206,7 +247,7 @@
206
247
  }
207
248
 
208
249
  .cinder-approval-card__textarea--reason {
209
- min-block-size: 5rem;
250
+ min-block-size: 3.5rem;
210
251
  font-family: var(--cinder-font-sans);
211
252
  }
212
253
 
@@ -233,12 +274,33 @@
233
274
  box-shadow: var(--_cinder-focus-ring-shadow);
234
275
  }
235
276
 
277
+ .cinder-approval-card__editor {
278
+ display: flex;
279
+ flex-direction: column;
280
+ gap: var(--cinder-space-2);
281
+ border: 1px solid var(--cinder-border-muted);
282
+ border-radius: var(--cinder-radius-md);
283
+ padding: var(--cinder-space-3);
284
+ background: var(--cinder-surface-inset);
285
+ }
286
+
287
+ .cinder-approval-card__editor-actions {
288
+ display: flex;
289
+ align-items: center;
290
+ flex-wrap: wrap;
291
+ gap: var(--cinder-space-2);
292
+ }
293
+
236
294
  .cinder-approval-card__error {
237
295
  margin: 0;
238
296
  color: var(--cinder-danger);
239
297
  font-size: var(--cinder-text-sm);
240
298
  }
241
299
 
300
+ /* ----------------------------------------
301
+ * Read-only summary for terminal states
302
+ * ---------------------------------------- */
303
+
242
304
  .cinder-approval-card__readonly-summary {
243
305
  margin: 0;
244
306
  border: 1px solid var(--cinder-border-muted);
@@ -249,17 +311,132 @@
249
311
  font-size: var(--cinder-text-sm);
250
312
  }
251
313
 
252
- @container cinder-approval-card (max-width: 40rem) {
253
- .cinder-approval-card__header {
254
- flex-direction: column;
255
- }
314
+ .cinder-approval-card__readonly-summary[data-cinder-state='approved'],
315
+ .cinder-approval-card__readonly-summary[data-cinder-state='approved_with_edits'] {
316
+ border-color: var(--cinder-color-success-border);
317
+ background: var(--cinder-color-success-bg);
318
+ color: var(--cinder-color-success-fg);
319
+ }
256
320
 
257
- .cinder-approval-card__badges {
258
- justify-content: flex-start;
259
- }
321
+ .cinder-approval-card__readonly-summary[data-cinder-state='denied'] {
322
+ border-color: var(--cinder-color-danger-border);
323
+ background: var(--cinder-color-danger-bg);
324
+ color: var(--cinder-color-danger-fg);
325
+ }
326
+
327
+ /* ----------------------------------------
328
+ * Details disclosure (sandbox, environment, request metadata)
329
+ * ---------------------------------------- */
330
+
331
+ .cinder-approval-card__details {
332
+ border: 1px solid var(--cinder-border);
333
+ border-radius: var(--cinder-radius-md);
334
+ background: var(--cinder-surface);
335
+ overflow: hidden;
336
+ }
337
+
338
+ .cinder-approval-card__details .cinder-collapsible__trigger {
339
+ border-radius: 0;
340
+ padding: var(--cinder-space-2) var(--cinder-space-3);
341
+ background: var(--cinder-surface-raised);
342
+ font-size: var(--cinder-text-sm);
343
+ color: var(--cinder-text-muted);
344
+ }
345
+
346
+ .cinder-approval-card__details[data-cinder-expanded] .cinder-collapsible__trigger {
347
+ border-block-end: 1px solid var(--cinder-border);
348
+ }
349
+
350
+ .cinder-approval-card__details .cinder-collapsible__panel-inner {
351
+ padding: var(--cinder-space-3);
352
+ font-size: var(--cinder-text-sm);
353
+ }
354
+
355
+ .cinder-approval-card__details-content {
356
+ display: flex;
357
+ flex-direction: column;
358
+ gap: var(--cinder-space-3);
359
+ }
360
+
361
+ .cinder-approval-card__details-group {
362
+ display: flex;
363
+ flex-direction: column;
364
+ gap: var(--cinder-space-1);
260
365
  }
261
366
 
367
+ .cinder-approval-card__details-label {
368
+ display: flex;
369
+ align-items: baseline;
370
+ flex-wrap: wrap;
371
+ gap: var(--cinder-space-2);
372
+ margin: 0;
373
+ color: var(--cinder-text);
374
+ font-size: var(--cinder-text-xs);
375
+ font-weight: var(--cinder-font-semibold);
376
+ text-transform: uppercase;
377
+ letter-spacing: 0.04em;
378
+ }
379
+
380
+ .cinder-approval-card__details-label .cinder-approval-card__muted {
381
+ font-size: var(--cinder-text-xs);
382
+ font-weight: var(--cinder-font-normal);
383
+ text-transform: none;
384
+ letter-spacing: normal;
385
+ }
386
+
387
+ .cinder-approval-card__metadata {
388
+ display: grid;
389
+ grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
390
+ gap: var(--cinder-space-3);
391
+ margin: 0;
392
+ }
393
+
394
+ .cinder-approval-card__metadata--compact {
395
+ gap: var(--cinder-space-2);
396
+ }
397
+
398
+ .cinder-approval-card__metadata-item {
399
+ min-inline-size: 0;
400
+ }
401
+
402
+ .cinder-approval-card__metadata-item dt {
403
+ color: var(--cinder-text-muted);
404
+ font-size: var(--cinder-text-xs);
405
+ font-weight: var(--cinder-font-medium);
406
+ }
407
+
408
+ .cinder-approval-card__metadata-item dd {
409
+ display: flex;
410
+ flex-direction: column;
411
+ gap: var(--cinder-space-1);
412
+ margin: 0;
413
+ overflow-wrap: anywhere;
414
+ color: var(--cinder-text);
415
+ font-family: var(--cinder-font-mono);
416
+ font-size: var(--cinder-text-xs);
417
+ }
418
+
419
+ .cinder-approval-card__metadata-help {
420
+ color: var(--cinder-text-muted);
421
+ font-family: var(--cinder-font-sans);
422
+ font-size: var(--cinder-text-xs);
423
+ }
424
+
425
+ /* ----------------------------------------
426
+ * Forced colors
427
+ * ---------------------------------------- */
428
+
262
429
  @media (forced-colors: active) {
430
+ .cinder-approval-card__risk-icon {
431
+ color: CanvasText;
432
+ }
433
+
434
+ .cinder-approval-card__risk-icon:focus-visible {
435
+ outline: 2px solid CanvasText;
436
+ outline-offset: 2px;
437
+ box-shadow: none;
438
+ }
439
+
263
440
  .cinder-approval-card__textarea:focus-visible,
264
441
  .cinder-approval-card__remember-control input:focus-visible {
265
442
  outline: var(--cinder-ring-width) solid ButtonText;
@@ -6,7 +6,7 @@
6
6
  {
7
7
  "id": "basic",
8
8
  "title": "Command approval",
9
- "description": "A pending command approval with sandbox, policy, arguments, and masked environment names.",
9
+ "description": "A pending command approval with sandbox context, arguments, environment names, and editable arguments.",
10
10
  "code": "<script lang=\"ts\">\n import { ApprovalCard } from '@lostgradient/cinder/approval-card';\n\n const expiresAt = new Date(Date.now() + 30 * 60 * 1000).toISOString();\n</script>\n\n<ApprovalCard\n tool={{ name: 'deploy-cloud', risk: 'medium' }}\n sandbox={{\n provider: 'codex',\n name: 'workspace-write',\n workingDir: '/workspace/project',\n }}\n operation={{\n kind: 'command',\n command: 'bun run --filter=@lostgradient/cinder validate',\n filesTouched: ['packages/components/src/components/approval-card/approval-card.svelte'],\n argsPreview: {\n package: '@lostgradient/cinder',\n dryRun: false,\n },\n }}\n env={['DATABASE_URL', 'OPENAI_API_KEY']}\n snapshotId=\"snapshot-01JZ8\"\n policyVersion=\"policy-2026-06\"\n idempotencyKey=\"approval-command-01\"\n {expiresAt}\n state=\"pending\"\n editableArgs={true}\n onresolve={() => undefined}\n/>\n"
11
11
  },
12
12
  {
@@ -18,8 +18,8 @@
18
18
  {
19
19
  "id": "patch",
20
20
  "title": "Patch approval",
21
- "description": "A high-risk patch approval that previews touched files, arguments, and the proposed diff.",
22
- "code": "<script lang=\"ts\">\n import { ApprovalCard } from '@lostgradient/cinder/approval-card';\n</script>\n\n<ApprovalCard\n tool={{ name: 'apply_patch', risk: 'high' }}\n sandbox={{\n provider: 'codex',\n name: 'workspace-write',\n workingDir: '/workspace/project',\n }}\n operation={{\n kind: 'patch',\n filesTouched: [\n 'packages/components/src/components/run-step-timeline/run-step-timeline.svelte',\n 'packages/components/src/components/run-step-timeline/run-step-timeline.types.ts',\n ],\n argsPreview: {\n strip: 0,\n files: 2,\n },\n diff: `--- a/run-step-timeline.types.ts\n+++ b/run-step-timeline.types.ts\n+@@\n+ export type RunStepStatus =\n+ | 'running'\n++ | 'waiting_approval'\n+ | 'succeeded';`,\n }}\n env={['CINDER_RELEASE_TOKEN']}\n snapshotId=\"snapshot-patch-01\"\n policyVersion=\"policy-2026-06\"\n idempotencyKey=\"approval-patch-01\"\n state=\"pending\"\n onapprove={() => undefined}\n ondeny={() => undefined}\n onremember={() => undefined}\n oncancel={() => undefined}\n/>\n"
21
+ "description": "A high-risk patch approval that previews the proposed diff, touched files, and arguments.",
22
+ "code": "<script lang=\"ts\">\n import { ApprovalCard } from '@lostgradient/cinder/approval-card';\n</script>\n\n<ApprovalCard\n tool={{ name: 'apply_patch', risk: 'high' }}\n sandbox={{\n provider: 'codex',\n name: 'workspace-write',\n workingDir: '/workspace/project',\n }}\n operation={{\n kind: 'patch',\n filesTouched: [\n 'packages/components/src/components/run-step-timeline/run-step-timeline.svelte',\n 'packages/components/src/components/run-step-timeline/run-step-timeline.types.ts',\n ],\n argsPreview: {\n strip: 0,\n files: 2,\n },\n diff: `--- a/run-step-timeline.types.ts\n+++ b/run-step-timeline.types.ts\n+@@\n+ export type RunStepStatus =\n+ | 'running'\n++ | 'waiting_approval'\n+ | 'succeeded';`,\n }}\n env={['CINDER_RELEASE_TOKEN']}\n snapshotId=\"snapshot-patch-01\"\n policyVersion=\"policy-2026-06\"\n idempotencyKey=\"approval-patch-01\"\n state=\"pending\"\n onresolve={() => undefined}\n/>\n"
23
23
  }
24
24
  ]
25
25
  }
@@ -56,7 +56,7 @@
56
56
  "items": {
57
57
  "type": "string"
58
58
  },
59
- "description": "File paths that the operation may read or write."
59
+ "description": "File paths that the operation may read or write. Duplicate paths are collapsed for display."
60
60
  },
61
61
  "argsPreview": {
62
62
  "description": "JSON-like argument preview shown to the approver."
@@ -77,7 +77,7 @@
77
77
  "items": {
78
78
  "type": "string"
79
79
  },
80
- "description": "File paths that the operation may read or write. File-write approvals require at least one path.",
80
+ "description": "File paths that the operation may read or write. File-write approvals require at least one path. Duplicate paths are collapsed for display.",
81
81
  "minItems": 1
82
82
  },
83
83
  "argsPreview": {
@@ -99,7 +99,7 @@
99
99
  "items": {
100
100
  "type": "string"
101
101
  },
102
- "description": "File paths that the operation may read or write."
102
+ "description": "File paths that the operation may read or write. Duplicate paths are collapsed for display."
103
103
  },
104
104
  "argsPreview": {
105
105
  "description": "JSON-like argument preview shown to the approver."
@@ -124,7 +124,7 @@
124
124
  "items": {
125
125
  "type": "string"
126
126
  },
127
- "description": "File paths that the operation may read or write."
127
+ "description": "File paths that the operation may read or write. Duplicate paths are collapsed for display."
128
128
  },
129
129
  "argsPreview": {
130
130
  "description": "JSON-like argument preview shown to the approver."
@@ -167,6 +167,10 @@
167
167
  "type": "boolean",
168
168
  "description": "Whether approving with edited JSON arguments is available. Default `false`."
169
169
  },
170
+ "headingLevel": {
171
+ "enum": [2, 3, 4, 5, 6],
172
+ "description": "Heading level for the card title; section headings render one level deeper. Default `3`."
173
+ },
170
174
  "class": {
171
175
  "type": "string",
172
176
  "description": "Additional CSS classes applied to the root element."
@@ -176,35 +180,10 @@
176
180
  "required": ["idempotencyKey", "operation", "policyVersion", "state", "tool"],
177
181
  "metadata": {
178
182
  "unsupportedProps": [
179
- {
180
- "name": "onapprove",
181
- "reason": "function-or-snippet",
182
- "description": "Called when the approver accepts the operation as presented."
183
- },
184
- {
185
- "name": "onapprovewithedits",
186
- "reason": "function-or-snippet",
187
- "description": "Called with parsed JSON arguments when the approver accepts edited arguments."
188
- },
189
- {
190
- "name": "oncancel",
191
- "reason": "function-or-snippet",
192
- "description": "Called when the approver cancels the approval prompt."
193
- },
194
- {
195
- "name": "ondeny",
196
- "reason": "function-or-snippet",
197
- "description": "Called when the approver denies the operation."
198
- },
199
- {
200
- "name": "onremember",
201
- "reason": "function-or-snippet",
202
- "description": "Called when the approver asks the host application to remember the decision."
203
- },
204
183
  {
205
184
  "name": "onresolve",
206
185
  "reason": "function-or-snippet",
207
- "description": "Called for approve, approve-with-edits, deny, and cancel with the complete resolution payload."
186
+ "description": "Called for approve, approve-with-edits, deny, and dismiss with the complete resolution payload."
208
187
  }
209
188
  ]
210
189
  }
@@ -58,7 +58,8 @@ const schema = {
58
58
  items: {
59
59
  type: 'string',
60
60
  },
61
- description: 'File paths that the operation may read or write.',
61
+ description:
62
+ 'File paths that the operation may read or write. Duplicate paths are collapsed for display.',
62
63
  },
63
64
  argsPreview: {
64
65
  description: 'JSON-like argument preview shown to the approver.',
@@ -80,7 +81,7 @@ const schema = {
80
81
  type: 'string',
81
82
  },
82
83
  description:
83
- 'File paths that the operation may read or write. File-write approvals require at least one path.',
84
+ 'File paths that the operation may read or write. File-write approvals require at least one path. Duplicate paths are collapsed for display.',
84
85
  minItems: 1,
85
86
  },
86
87
  argsPreview: {
@@ -102,7 +103,8 @@ const schema = {
102
103
  items: {
103
104
  type: 'string',
104
105
  },
105
- description: 'File paths that the operation may read or write.',
106
+ description:
107
+ 'File paths that the operation may read or write. Duplicate paths are collapsed for display.',
106
108
  },
107
109
  argsPreview: {
108
110
  description: 'JSON-like argument preview shown to the approver.',
@@ -127,7 +129,8 @@ const schema = {
127
129
  items: {
128
130
  type: 'string',
129
131
  },
130
- description: 'File paths that the operation may read or write.',
132
+ description:
133
+ 'File paths that the operation may read or write. Duplicate paths are collapsed for display.',
131
134
  },
132
135
  argsPreview: {
133
136
  description: 'JSON-like argument preview shown to the approver.',
@@ -171,6 +174,11 @@ const schema = {
171
174
  type: 'boolean',
172
175
  description: 'Whether approving with edited JSON arguments is available. Default `false`.',
173
176
  },
177
+ headingLevel: {
178
+ enum: [2, 3, 4, 5, 6],
179
+ description:
180
+ 'Heading level for the card title; section headings render one level deeper. Default `3`.',
181
+ },
174
182
  class: {
175
183
  type: 'string',
176
184
  description: 'Additional CSS classes applied to the root element.',
@@ -180,37 +188,11 @@ const schema = {
180
188
  required: ['idempotencyKey', 'operation', 'policyVersion', 'state', 'tool'],
181
189
  metadata: {
182
190
  unsupportedProps: [
183
- {
184
- name: 'onapprove',
185
- reason: 'function-or-snippet',
186
- description: 'Called when the approver accepts the operation as presented.',
187
- },
188
- {
189
- name: 'onapprovewithedits',
190
- reason: 'function-or-snippet',
191
- description:
192
- 'Called with parsed JSON arguments when the approver accepts edited arguments.',
193
- },
194
- {
195
- name: 'oncancel',
196
- reason: 'function-or-snippet',
197
- description: 'Called when the approver cancels the approval prompt.',
198
- },
199
- {
200
- name: 'ondeny',
201
- reason: 'function-or-snippet',
202
- description: 'Called when the approver denies the operation.',
203
- },
204
- {
205
- name: 'onremember',
206
- reason: 'function-or-snippet',
207
- description: 'Called when the approver asks the host application to remember the decision.',
208
- },
209
191
  {
210
192
  name: 'onresolve',
211
193
  reason: 'function-or-snippet',
212
194
  description:
213
- 'Called for approve, approve-with-edits, deny, and cancel with the complete resolution payload.',
195
+ 'Called for approve, approve-with-edits, deny, and dismiss with the complete resolution payload.',
214
196
  },
215
197
  ],
216
198
  },