@lostgradient/cinder 0.8.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 (271) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +2 -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 +44 -2
  20. package/dist/components/chat/chat.svelte.d.ts +4 -2
  21. package/dist/components/chat/chat.types.d.ts +34 -3
  22. package/dist/components/chat/container/chat.svelte.d.ts +4 -2
  23. package/dist/components/chat/index.d.ts +3 -3
  24. package/dist/components/chat/index.js +2485 -6279
  25. package/dist/components/chat/input/chat-attachment-serialization.d.ts +9 -0
  26. package/dist/components/chat/input/chat-input.svelte.d.ts +22 -1
  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/payload-inspector/index.d.ts +1 -1
  55. package/dist/components/payload-inspector/index.js +306 -1422
  56. package/dist/components/payload-inspector/payload-inspector.css +15 -75
  57. package/dist/components/payload-inspector/payload-inspector.schema.js +5 -41
  58. package/dist/components/payload-inspector/payload-inspector.svelte.d.ts +5 -5
  59. package/dist/components/payload-inspector/payload-inspector.types.d.ts +10 -56
  60. package/dist/components/tab/index.js +5 -2
  61. package/dist/components/tab/tab.schema.js +7 -3
  62. package/dist/components/tab/tab.svelte.d.ts +2 -1
  63. package/dist/components/tab/tab.types.d.ts +8 -2
  64. package/dist/components/tabs/index.js +5 -2
  65. package/dist/components/team-section/index.js +2 -1
  66. package/dist/components/testimonial-section/index.js +2 -1
  67. package/dist/index.d.ts +4 -2
  68. package/dist/index.js +23711 -27432
  69. package/dist/server/components/access-gate/index.js +2 -1
  70. package/dist/server/components/accordion/index.js +2 -2
  71. package/dist/server/components/alert-dialog/index.js +2 -2
  72. package/dist/server/components/approval-card/index.js +15 -19
  73. package/dist/server/components/autocomplete/index.js +7 -7
  74. package/dist/server/components/avatar-group/index.js +5 -5
  75. package/dist/server/components/button-group/index.js +3 -5
  76. package/dist/server/components/card/index.js +2 -2
  77. package/dist/server/components/chat/index.js +14 -11
  78. package/dist/server/components/chat-composer-popover/index.js +26 -0
  79. package/dist/server/components/chat-conversation-header/index.js +9 -10
  80. package/dist/server/components/chat-conversation-list/index.js +4 -5
  81. package/dist/server/components/checkbox/index.js +3 -3
  82. package/dist/server/components/choice-grid/index.js +2 -2
  83. package/dist/server/components/code-block/index.js +2 -2
  84. package/dist/server/components/color-field/index.js +3 -3
  85. package/dist/server/components/combobox/index.js +6 -6
  86. package/dist/server/components/command-item/index.js +5 -3
  87. package/dist/server/components/command-menu/index.js +6 -4
  88. package/dist/server/components/command-palette/index.js +2 -2
  89. package/dist/server/components/confirm-dialog/index.js +2 -2
  90. package/dist/server/components/context-menu/index.js +5 -5
  91. package/dist/server/components/data-table/index.js +5 -5
  92. package/dist/server/components/date-picker/index.js +6 -6
  93. package/dist/server/components/date-range-field/index.js +7 -7
  94. package/dist/server/components/description-list/index.js +3 -5
  95. package/dist/server/components/diff-viewer/index.js +7 -7
  96. package/dist/server/components/drawer/index.js +3 -3
  97. package/dist/server/components/dropdown/index.js +4 -4
  98. package/dist/server/components/event-stream-viewer/index.js +2 -2
  99. package/dist/server/components/experimental/json-viewer/index.js +2 -2
  100. package/dist/server/components/faceted-filter-bar/index.js +1 -1
  101. package/dist/server/components/hover-card/index.js +1 -1
  102. package/dist/server/components/input/index.js +3 -3
  103. package/dist/server/components/json-schema-editor/index.js +22 -22
  104. package/dist/server/components/json-viewer/index.js +2 -2
  105. package/dist/server/components/markdown-editor/index.js +13 -13
  106. package/dist/server/components/modal/index.js +1 -1
  107. package/dist/server/components/multi-select/index.js +1 -1
  108. package/dist/server/components/newsletter-section/index.js +3 -3
  109. package/dist/server/components/payload-inspector/index.js +4 -16
  110. package/dist/server/components/popover/index.js +5 -5
  111. package/dist/server/components/review-editor/index.js +25 -25
  112. package/dist/server/components/run-step-timeline/index.js +2 -2
  113. package/dist/server/components/schema-form/index.js +4 -4
  114. package/dist/server/components/secret-value-field/index.js +3 -5
  115. package/dist/server/components/segment/index.js +3 -3
  116. package/dist/server/components/segmented-control/index.js +4 -4
  117. package/dist/server/components/selection-popover/index.js +4 -4
  118. package/dist/server/components/sheet/index.js +2 -2
  119. package/dist/server/components/sidebar/index.js +3 -3
  120. package/dist/server/components/tab/index.js +2 -2
  121. package/dist/server/components/table/index.js +3 -3
  122. package/dist/server/components/tabs/index.js +4 -4
  123. package/dist/server/components/tag-input/index.js +3 -3
  124. package/dist/server/components/team-section/index.js +8 -8
  125. package/dist/server/components/testimonial-section/index.js +2 -2
  126. package/dist/server/components/toggle/index.js +2 -2
  127. package/dist/server/components/tooltip/index.js +1 -1
  128. package/dist/server/index.js +159 -148
  129. package/dist/server/{index.server-cbtg8rq5.js → index.server-0atyznp7.js} +5 -5
  130. package/dist/server/{index.server-20y4mdhm.js → index.server-0chhpkg7.js} +40 -14
  131. package/dist/server/{index.server-ecm1vs3g.js → index.server-1nq7z1qw.js} +1 -1
  132. package/dist/server/{index.server-jync915v.js → index.server-2dga5yzr.js} +25 -25
  133. package/dist/server/index.server-2hqrv7ca.js +9 -0
  134. package/dist/server/{index.server-69epaape.js → index.server-2qj6s2mh.js} +1 -1
  135. package/dist/server/{index.server-pt8b65mt.js → index.server-38aywdk1.js} +1 -1
  136. package/dist/server/{index.server-rermas0k.js → index.server-47v2fhp4.js} +4 -4
  137. package/dist/server/{index.server-9j5sym59.js → index.server-4x91gzy1.js} +2 -2
  138. package/dist/server/{index.server-q48q15g7.js → index.server-4y2jtvv1.js} +4 -2
  139. package/dist/server/index.server-67qgdypc.js +9 -0
  140. package/dist/server/{index.server-9jete4xx.js → index.server-6sh11ap6.js} +4 -4
  141. package/dist/server/{index.server-4ztq565m.js → index.server-85p4ydph.js} +1 -1
  142. package/dist/server/{index.server-4nk7gy0q.js → index.server-894t97kv.js} +1 -1
  143. package/dist/server/{index.server-1vscnped.js → index.server-8dt36sdm.js} +2 -1
  144. package/dist/server/{index.server-bfsbp9dz.js → index.server-8xvc73zh.js} +4 -4
  145. package/dist/server/{index.server-cvnw3hw9.js → index.server-9kz37z89.js} +1 -1
  146. package/dist/server/{index.server-kc1k02tk.js → index.server-9ykk1kbg.js} +1 -1
  147. package/dist/server/{index.server-g789yep6.js → index.server-aqethy0w.js} +2 -2
  148. package/dist/server/{index.server-wc9aggfz.js → index.server-bmxbsk4y.js} +7 -7
  149. package/dist/server/{index.server-j3ddzcaa.js → index.server-c6pe4kaf.js} +6 -6
  150. package/dist/server/{index.server-q89dz8h1.js → index.server-d3pqthtp.js} +4 -3
  151. package/dist/server/{index.server-qfa2rxzx.js → index.server-dg83ke3k.js} +3 -5
  152. package/dist/server/{index.server-jk4rx4aa.js → index.server-dmmvwy6p.js} +1 -1
  153. package/dist/server/{index.server-hcfnae5y.js → index.server-dwwqssey.js} +4 -4
  154. package/dist/server/{index.server-e8x1hgw6.js → index.server-dz1r9xw5.js} +4 -4
  155. package/dist/server/{index.server-wm7mk5kw.js → index.server-ez5hp0ya.js} +1 -1
  156. package/dist/server/{index.server-ejyf7e48.js → index.server-fy068yne.js} +1 -1
  157. package/dist/server/{index.server-wc8dbm5e.js → index.server-g95bk8rc.js} +4 -2
  158. package/dist/server/index.server-gkazv439.js +576 -0
  159. package/dist/server/{index.server-dp9j2kkr.js → index.server-h0cvwvhy.js} +1 -1
  160. package/dist/server/{index.server-pacrqvyz.js → index.server-h90pjrez.js} +1 -1
  161. package/dist/server/{index.server-p8d04em5.js → index.server-hcsd5gdb.js} +6 -2
  162. package/dist/server/{index.server-n39drzes.js → index.server-hpeavvnq.js} +1 -1
  163. package/dist/server/{index.server-1p3patnj.js → index.server-hx91ng7z.js} +1 -1
  164. package/dist/server/{index.server-jtj3r53y.js → index.server-jgb8yh5k.js} +1 -1
  165. package/dist/server/{index.server-w1g5q9j9.js → index.server-jtgw9d23.js} +4 -2
  166. package/dist/server/{index.server-mehav5vs.js → index.server-jxg42jpz.js} +4 -4
  167. package/dist/server/{index.server-hd8gpehd.js → index.server-jxseyx33.js} +1 -1
  168. package/dist/server/{index.server-kg2sepsr.js → index.server-krqvnt6p.js} +14 -15
  169. package/dist/server/{index.server-0e1m3agz.js → index.server-ks49bprh.js} +1 -1
  170. package/dist/server/{index.server-f0hma3jp.js → index.server-kt0ncrqs.js} +1 -1
  171. package/dist/server/index.server-m0ezemav.js +170 -0
  172. package/dist/server/index.server-m191rm44.js +79 -0
  173. package/dist/server/{index.server-f23vtaw4.js → index.server-marjz8ps.js} +6 -6
  174. package/dist/server/index.server-mqt1ngqw.js +250 -0
  175. package/dist/server/{index.server-s9khh4ry.js → index.server-mzzb7dnm.js} +3 -5
  176. package/dist/server/{index.server-z721a5gp.js → index.server-n82rcv0m.js} +4 -4
  177. package/dist/server/{index.server-rhhmdxtz.js → index.server-np3c7kx0.js} +4 -4
  178. package/dist/server/{index.server-hpcs7tmh.js → index.server-p56xxef1.js} +1 -1
  179. package/dist/server/{index.server-w83kmcrx.js → index.server-pag862vz.js} +10 -10
  180. package/dist/server/{index.server-gxf0d1p5.js → index.server-q7w4jw89.js} +2 -2
  181. package/dist/server/{index.server-v4zabrsx.js → index.server-qh9qzd5t.js} +163 -25
  182. package/dist/server/{index.server-pxg74pyp.js → index.server-qk1h0n02.js} +4 -4
  183. package/dist/server/{index.server-sh2rxejg.js → index.server-qke3ekjt.js} +1 -1
  184. package/dist/server/{index.server-73x2d3j3.js → index.server-rbpvcrr3.js} +1 -1
  185. package/dist/server/{index.server-8cxs4kya.js → index.server-rga8sc7j.js} +41 -44
  186. package/dist/server/{index.server-e3fnv1g6.js → index.server-sedjxt36.js} +5 -5
  187. package/dist/server/{index.server-pen9pxt6.js → index.server-sf3nk3j2.js} +2 -2
  188. package/dist/server/{index.server-7fp0epev.js → index.server-veastatv.js} +4 -4
  189. package/dist/server/{index.server-jeqg2d22.js → index.server-xeqtpv61.js} +1 -1
  190. package/dist/server/{index.server-9s4na701.js → index.server-xjnge1yw.js} +4 -4
  191. package/dist/server/index.server-xtjjmsyq.js +315 -0
  192. package/dist/server/{index.server-hhxjaeen.js → index.server-xz99aed4.js} +4 -4
  193. package/dist/server/{index.server-vne4rzfa.js → index.server-y4n8vc08.js} +1 -1
  194. package/dist/server/{index.server-5d01cn4f.js → index.server-y83kqayt.js} +4 -4
  195. package/dist/server/{index.server-1nh09ck7.js → index.server-yhzydqxe.js} +5 -5
  196. package/dist/server/{index.server-atjc1qcq.js → index.server-yz4k36cw.js} +1 -1
  197. package/dist/server/{index.server-w6k62afr.js → index.server-ze1ymmbw.js} +2 -2
  198. package/dist/server/{index.server-914v805w.js → index.server-zgd1g8mk.js} +1 -1
  199. package/dist/server/{index.server-aeexcxdp.js → index.server-zh3r8vfd.js} +1 -1
  200. package/dist/server/{index.server-10jb2jzm.js → index.server-zsjf8enc.js} +4 -4
  201. package/package.json +40 -6
  202. package/src/components/_internal/command-list-context.ts +3 -3
  203. package/src/components/_internal/create-command-list-state.svelte.ts +39 -13
  204. package/src/components/approval-card/approval-card-actions.svelte +168 -0
  205. package/src/components/approval-card/approval-card-state.ts +152 -1
  206. package/src/components/approval-card/approval-card.css +269 -92
  207. package/src/components/approval-card/approval-card.examples.json +3 -3
  208. package/src/components/approval-card/approval-card.schema.json +9 -30
  209. package/src/components/approval-card/approval-card.schema.ts +13 -31
  210. package/src/components/approval-card/approval-card.svelte +176 -470
  211. package/src/components/approval-card/approval-card.types.ts +15 -28
  212. package/src/components/approval-card/index.ts +1 -0
  213. package/src/components/card/card.css +5 -0
  214. package/src/components/card/card.schema.json +1 -1
  215. package/src/components/card/card.schema.ts +1 -1
  216. package/src/components/card/card.svelte +1 -0
  217. package/src/components/card/card.types.ts +2 -2
  218. package/src/components/chat/chat.schema.json +36 -1
  219. package/src/components/chat/chat.schema.ts +44 -1
  220. package/src/components/chat/chat.svelte +12 -0
  221. package/src/components/chat/chat.types.ts +35 -3
  222. package/src/components/chat/container/chat.svelte +73 -3
  223. package/src/components/chat/index.ts +15 -3
  224. package/src/components/chat/input/chat-attachment-serialization.ts +63 -0
  225. package/src/components/chat/input/chat-input.svelte +22 -5
  226. package/src/components/chat/input/index.ts +5 -0
  227. package/src/components/chat-composer-popover/chat-composer-popover-filter.ts +68 -0
  228. package/src/components/chat-composer-popover/chat-composer-popover.css +7 -0
  229. package/src/components/chat-composer-popover/chat-composer-popover.examples.json +13 -0
  230. package/src/components/chat-composer-popover/chat-composer-popover.schema.json +90 -0
  231. package/src/components/chat-composer-popover/chat-composer-popover.schema.ts +95 -0
  232. package/src/components/chat-composer-popover/chat-composer-popover.svelte +234 -0
  233. package/src/components/chat-composer-popover/chat-composer-popover.types.ts +88 -0
  234. package/src/components/chat-composer-popover/chat-composer-popover.variables.json +1 -0
  235. package/src/components/chat-composer-popover/chat-composer-popover.variables.ts +3 -0
  236. package/src/components/chat-composer-popover/index.ts +19 -0
  237. package/src/components/code-block/code-block.schema.json +4 -0
  238. package/src/components/code-block/code-block.schema.ts +5 -0
  239. package/src/components/code-block/code-block.svelte +3 -3
  240. package/src/components/code-block/code-block.types.ts +6 -0
  241. package/src/components/command-item/command-item.svelte +7 -6
  242. package/src/components/command-menu/command-menu.schema.json +4 -0
  243. package/src/components/command-menu/command-menu.schema.ts +4 -0
  244. package/src/components/command-menu/command-menu.svelte +16 -5
  245. package/src/components/command-menu/command-menu.types.ts +2 -0
  246. package/src/components/json-viewer/_json-viewer-node.svelte +15 -1
  247. package/src/components/json-viewer/json-viewer.css +10 -6
  248. package/src/components/payload-inspector/index.ts +0 -2
  249. package/src/components/payload-inspector/payload-inspector.css +15 -75
  250. package/src/components/payload-inspector/payload-inspector.examples.json +5 -5
  251. package/src/components/payload-inspector/payload-inspector.schema.json +3 -31
  252. package/src/components/payload-inspector/payload-inspector.schema.ts +3 -36
  253. package/src/components/payload-inspector/payload-inspector.svelte +46 -239
  254. package/src/components/payload-inspector/payload-inspector.types.ts +10 -58
  255. package/src/components/tab/tab.schema.json +6 -2
  256. package/src/components/tab/tab.schema.ts +8 -2
  257. package/src/components/tab/tab.svelte +9 -5
  258. package/src/components/tab/tab.types.ts +8 -2
  259. package/src/index.ts +18 -5
  260. package/src/styles/components.css +1 -0
  261. package/dist/server/index-49we2xfs.js +0 -344
  262. package/dist/server/index-8fhvxk30.js +0 -265
  263. package/dist/server/index-x2ysg8ds.js +0 -388
  264. package/dist/server/index.server-20j0jh30.js +0 -9
  265. package/dist/server/index.server-dc35kh7d.js +0 -1835
  266. package/dist/server/index.server-kd4b0342.js +0 -607
  267. package/dist/server/index.server-n5cdmsz4.js +0 -30
  268. package/dist/server/index.server-rjap4k7y.js +0 -1389
  269. package/dist/server/index.server-vt6sn9y4.js +0 -447
  270. package/dist/server/index.server-w63n618v.js +0 -9
  271. 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;
@@ -110,7 +110,7 @@ var schema = {
110
110
  items: {
111
111
  type: "string"
112
112
  },
113
- description: "File paths that the operation may read or write."
113
+ description: "File paths that the operation may read or write. Duplicate paths are collapsed for display."
114
114
  },
115
115
  argsPreview: {
116
116
  description: "JSON-like argument preview shown to the approver."
@@ -131,7 +131,7 @@ var schema = {
131
131
  items: {
132
132
  type: "string"
133
133
  },
134
- description: "File paths that the operation may read or write. File-write approvals require at least one path.",
134
+ description: "File paths that the operation may read or write. File-write approvals require at least one path. Duplicate paths are collapsed for display.",
135
135
  minItems: 1
136
136
  },
137
137
  argsPreview: {
@@ -153,7 +153,7 @@ var schema = {
153
153
  items: {
154
154
  type: "string"
155
155
  },
156
- description: "File paths that the operation may read or write."
156
+ description: "File paths that the operation may read or write. Duplicate paths are collapsed for display."
157
157
  },
158
158
  argsPreview: {
159
159
  description: "JSON-like argument preview shown to the approver."
@@ -178,7 +178,7 @@ var schema = {
178
178
  items: {
179
179
  type: "string"
180
180
  },
181
- description: "File paths that the operation may read or write."
181
+ description: "File paths that the operation may read or write. Duplicate paths are collapsed for display."
182
182
  },
183
183
  argsPreview: {
184
184
  description: "JSON-like argument preview shown to the approver."
@@ -221,6 +221,10 @@ var schema = {
221
221
  type: "boolean",
222
222
  description: "Whether approving with edited JSON arguments is available. Default `false`."
223
223
  },
224
+ headingLevel: {
225
+ enum: [2, 3, 4, 5, 6],
226
+ description: "Heading level for the card title; section headings render one level deeper. Default `3`."
227
+ },
224
228
  class: {
225
229
  type: "string",
226
230
  description: "Additional CSS classes applied to the root element."
@@ -230,35 +234,10 @@ var schema = {
230
234
  required: ["idempotencyKey", "operation", "policyVersion", "state", "tool"],
231
235
  metadata: {
232
236
  unsupportedProps: [
233
- {
234
- name: "onapprove",
235
- reason: "function-or-snippet",
236
- description: "Called when the approver accepts the operation as presented."
237
- },
238
- {
239
- name: "onapprovewithedits",
240
- reason: "function-or-snippet",
241
- description: "Called with parsed JSON arguments when the approver accepts edited arguments."
242
- },
243
- {
244
- name: "oncancel",
245
- reason: "function-or-snippet",
246
- description: "Called when the approver cancels the approval prompt."
247
- },
248
- {
249
- name: "ondeny",
250
- reason: "function-or-snippet",
251
- description: "Called when the approver denies the operation."
252
- },
253
- {
254
- name: "onremember",
255
- reason: "function-or-snippet",
256
- description: "Called when the approver asks the host application to remember the decision."
257
- },
258
237
  {
259
238
  name: "onresolve",
260
239
  reason: "function-or-snippet",
261
- description: "Called for approve, approve-with-edits, deny, and cancel with the complete resolution payload."
240
+ description: "Called for approve, approve-with-edits, deny, and dismiss with the complete resolution payload."
262
241
  }
263
242
  ]
264
243
  }
@@ -268,4 +247,4 @@ export {
268
247
  approval_card_schema_default as default
269
248
  };
270
249
 
271
- //# debugId=DE9CF2D6E8C966C664756E2164756E21
250
+ //# debugId=40434452BFE017FD64756E2164756E21
@@ -10,11 +10,11 @@
10
10
  * @useWhen Showing policy, sandbox, idempotency, environment-name, and argument context for an approval request.
11
11
  * @avoidWhen The action has already completed and only needs historical display — use event-stream-viewer or run-step-timeline instead.
12
12
  * @avoidWhen Collecting arbitrary form input for a workflow — compose form controls directly instead.
13
- * @related card, badge, status-dot, payload-inspector, secret-value-field, code-block
14
- * @a11yNote Uses a named region and native button controls so approval actions are discoverable by assistive technology.
13
+ * @related card, badge, status-dot, payload-inspector, code-block, collapsible
14
+ * @a11yNote Renders as an article with native button controls so approval actions are discoverable without polluting the landmark list.
15
15
  * @a11yNote Expiration changes update the visible state but do not fire approval callbacks automatically.
16
16
  */
17
- export type { ApprovalCardCallbacks, ApprovalCardProps, ApprovalCardSchemaProps, ApprovalOperation, ApprovalOperationKind, ApprovalResolution, ApprovalResolutionDecision, ApprovalSandbox, ApprovalState, ApprovalTool, ApprovalToolRisk, } from './approval-card.types.ts';
17
+ export type { ApprovalCardCallbacks, ApprovalCardHeadingLevel, ApprovalCardProps, ApprovalCardSchemaProps, ApprovalOperation, ApprovalOperationKind, ApprovalResolution, ApprovalResolutionDecision, ApprovalSandbox, ApprovalState, ApprovalTool, ApprovalToolRisk, } from './approval-card.types.ts';
18
18
  import type { ApprovalCardProps } from './approval-card.types.ts';
19
19
  declare const ApprovalCard: import("svelte").Component<ApprovalCardProps, {}, "">;
20
20
  type ApprovalCard = ReturnType<typeof ApprovalCard>;