@lostgradient/cinder 0.8.0 → 0.11.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 (371) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +2 -2
  3. package/components.json +140 -18
  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 +435 -218
  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/builders.d.ts +17 -8
  20. package/dist/components/chat/chat.schema.js +44 -2
  21. package/dist/components/chat/chat.svelte.d.ts +4 -2
  22. package/dist/components/chat/chat.types.d.ts +34 -3
  23. package/dist/components/chat/container/chat.svelte.d.ts +4 -2
  24. package/dist/components/chat/conversation-model.d.ts +1 -1
  25. package/dist/components/chat/index.d.ts +4 -4
  26. package/dist/components/chat/index.js +2767 -6278
  27. package/dist/components/chat/input/chat-attachment-serialization.d.ts +9 -0
  28. package/dist/components/chat/input/chat-input.svelte.d.ts +22 -1
  29. package/dist/components/chat/input/index.d.ts +1 -0
  30. package/dist/components/chat/utilities/conversation.d.ts +6 -6
  31. package/dist/components/chat-composer-popover/chat-composer-popover-filter.d.ts +11 -0
  32. package/dist/components/chat-composer-popover/chat-composer-popover.css +7 -0
  33. package/dist/components/chat-composer-popover/chat-composer-popover.css.d.ts +1 -0
  34. package/dist/components/chat-composer-popover/chat-composer-popover.schema.d.ts +3 -0
  35. package/dist/components/chat-composer-popover/chat-composer-popover.schema.js +150 -0
  36. package/dist/components/chat-composer-popover/chat-composer-popover.svelte.d.ts +46 -0
  37. package/dist/components/chat-composer-popover/chat-composer-popover.types.d.ts +77 -0
  38. package/dist/components/chat-composer-popover/chat-composer-popover.variables.d.ts +2 -0
  39. package/dist/components/chat-composer-popover/chat-composer-popover.variables.js +61 -0
  40. package/dist/components/chat-composer-popover/index.d.ts +6 -0
  41. package/dist/components/chat-composer-popover/index.js +3285 -0
  42. package/dist/components/chat-conversation-header/index.js +577 -4537
  43. package/dist/components/chat-conversation-list/index.js +24 -3984
  44. package/dist/components/code-block/code-block.schema.js +5 -1
  45. package/dist/components/code-block/code-block.types.d.ts +6 -0
  46. package/dist/components/code-block/index.js +4 -4
  47. package/dist/components/command-item/index.js +7 -6
  48. package/dist/components/command-menu/command-menu.schema.js +5 -1
  49. package/dist/components/command-menu/command-menu.types.d.ts +2 -0
  50. package/dist/components/command-menu/index.js +48 -19
  51. package/dist/components/command-palette/index.js +40 -14
  52. package/dist/components/connection-indicator/connection-indicator.css +136 -0
  53. package/dist/components/connection-indicator/connection-indicator.css.d.ts +1 -0
  54. package/dist/components/connection-indicator/connection-indicator.schema.d.ts +3 -0
  55. package/dist/components/connection-indicator/connection-indicator.schema.js +89 -0
  56. package/dist/components/connection-indicator/connection-indicator.svelte.d.ts +21 -0
  57. package/dist/components/connection-indicator/connection-indicator.types.d.ts +46 -0
  58. package/dist/components/connection-indicator/connection-indicator.variables.d.ts +2 -0
  59. package/dist/components/connection-indicator/connection-indicator.variables.js +61 -0
  60. package/dist/components/connection-indicator/index.d.ts +5 -0
  61. package/dist/components/connection-indicator/index.js +409 -0
  62. package/dist/components/container/container.schema.js +4 -4
  63. package/dist/components/event-stream-viewer/index.js +44 -44
  64. package/dist/components/experimental/json-viewer/index.js +44 -44
  65. package/dist/components/invocation-rule-builder/index.d.ts +1 -1
  66. package/dist/components/invocation-rule-builder/index.js +305 -150
  67. package/dist/components/invocation-rule-builder/invocation-rule-builder.css +28 -0
  68. package/dist/components/invocation-rule-builder/invocation-rule-builder.schema.js +89 -5
  69. package/dist/components/invocation-rule-builder/invocation-rule-builder.svelte.d.ts +2 -1
  70. package/dist/components/invocation-rule-builder/invocation-rule-builder.types.d.ts +114 -16
  71. package/dist/components/json-schema-editor/index.js +5 -2
  72. package/dist/components/json-viewer/index.js +44 -44
  73. package/dist/components/json-viewer/json-viewer.css +10 -6
  74. package/dist/components/payload-inspector/index.d.ts +1 -1
  75. package/dist/components/payload-inspector/index.js +306 -1422
  76. package/dist/components/payload-inspector/payload-inspector.css +15 -75
  77. package/dist/components/payload-inspector/payload-inspector.schema.js +5 -41
  78. package/dist/components/payload-inspector/payload-inspector.svelte.d.ts +5 -5
  79. package/dist/components/payload-inspector/payload-inspector.types.d.ts +10 -56
  80. package/dist/components/run-step-timeline/index.d.ts +1 -1
  81. package/dist/components/run-step-timeline/index.js +992 -559
  82. package/dist/components/run-step-timeline/run-step-branch-disclosure.svelte.d.ts +17 -0
  83. package/dist/components/run-step-timeline/run-step-timeline.css +124 -0
  84. package/dist/components/run-step-timeline/run-step-timeline.schema.js +873 -350
  85. package/dist/components/run-step-timeline/run-step-timeline.svelte.d.ts +1 -15
  86. package/dist/components/run-step-timeline/run-step-timeline.types.d.ts +182 -5
  87. package/dist/components/run-step-timeline/run-step-timeline.utilities.d.ts +52 -0
  88. package/dist/components/schedule-builder/index.d.ts +5 -0
  89. package/dist/components/schedule-builder/index.js +3176 -0
  90. package/dist/components/schedule-builder/schedule-builder.css +121 -0
  91. package/dist/components/schedule-builder/schedule-builder.css.d.ts +1 -0
  92. package/dist/components/schedule-builder/schedule-builder.schema.d.ts +3 -0
  93. package/dist/components/schedule-builder/schedule-builder.schema.js +141 -0
  94. package/dist/components/schedule-builder/schedule-builder.svelte.d.ts +22 -0
  95. package/dist/components/schedule-builder/schedule-builder.types.d.ts +130 -0
  96. package/dist/components/schedule-builder/schedule-builder.utilities.d.ts +78 -0
  97. package/dist/components/schedule-builder/schedule-builder.variables.d.ts +2 -0
  98. package/dist/components/schedule-builder/schedule-builder.variables.js +61 -0
  99. package/dist/components/tab/index.js +5 -2
  100. package/dist/components/tab/tab.schema.js +7 -3
  101. package/dist/components/tab/tab.svelte.d.ts +2 -1
  102. package/dist/components/tab/tab.types.d.ts +8 -2
  103. package/dist/components/tabs/index.js +5 -2
  104. package/dist/components/tag-input/index.js +22 -4
  105. package/dist/components/tag-input/tag-input.schema.js +5 -1
  106. package/dist/components/tag-input/tag-input.types.d.ts +4 -0
  107. package/dist/components/team-section/index.js +2 -1
  108. package/dist/components/testimonial-section/index.js +2 -1
  109. package/dist/index.d.ts +10 -4
  110. package/dist/index.js +28577 -30168
  111. package/dist/server/components/access-gate/index.js +3 -1
  112. package/dist/server/components/accordion/index.js +2 -2
  113. package/dist/server/components/alert-dialog/index.js +2 -2
  114. package/dist/server/components/approval-card/index.js +15 -19
  115. package/dist/server/components/autocomplete/index.js +7 -7
  116. package/dist/server/components/avatar-group/index.js +5 -5
  117. package/dist/server/components/button-group/index.js +3 -5
  118. package/dist/server/components/card/index.js +2 -2
  119. package/dist/server/components/chat/index.js +15 -12
  120. package/dist/server/components/chat-composer-popover/index.js +26 -0
  121. package/dist/server/components/chat-conversation-header/index.js +10 -11
  122. package/dist/server/components/chat-conversation-list/index.js +4 -5
  123. package/dist/server/components/checkbox/index.js +3 -3
  124. package/dist/server/components/choice-grid/index.js +2 -2
  125. package/dist/server/components/code-block/index.js +2 -2
  126. package/dist/server/components/color-field/index.js +3 -3
  127. package/dist/server/components/combobox/index.js +6 -6
  128. package/dist/server/components/command-item/index.js +5 -3
  129. package/dist/server/components/command-menu/index.js +6 -4
  130. package/dist/server/components/command-palette/index.js +2 -2
  131. package/dist/server/components/confirm-dialog/index.js +2 -2
  132. package/dist/server/components/connection-indicator/index.js +16 -0
  133. package/dist/server/components/context-menu/index.js +5 -5
  134. package/dist/server/components/data-table/index.js +5 -5
  135. package/dist/server/components/date-picker/index.js +6 -6
  136. package/dist/server/components/date-range-field/index.js +7 -7
  137. package/dist/server/components/description-list/index.js +3 -5
  138. package/dist/server/components/diff-viewer/index.js +9 -8
  139. package/dist/server/components/drawer/index.js +3 -3
  140. package/dist/server/components/dropdown/index.js +4 -4
  141. package/dist/server/components/event-stream-viewer/index.js +2 -2
  142. package/dist/server/components/experimental/json-viewer/index.js +2 -2
  143. package/dist/server/components/faceted-filter-bar/index.js +1 -1
  144. package/dist/server/components/hover-card/index.js +1 -1
  145. package/dist/server/components/input/index.js +3 -3
  146. package/dist/server/components/invocation-rule-builder/index.js +1 -1
  147. package/dist/server/components/json-schema-editor/index.js +24 -23
  148. package/dist/server/components/json-viewer/index.js +2 -2
  149. package/dist/server/components/markdown-editor/index.js +13 -13
  150. package/dist/server/components/modal/index.js +1 -1
  151. package/dist/server/components/multi-select/index.js +1 -1
  152. package/dist/server/components/newsletter-section/index.js +3 -3
  153. package/dist/server/components/payload-inspector/index.js +4 -16
  154. package/dist/server/components/popover/index.js +5 -5
  155. package/dist/server/components/review-editor/index.js +27 -26
  156. package/dist/server/components/run-step-timeline/index.js +2 -2
  157. package/dist/server/components/schedule-builder/index.js +30 -0
  158. package/dist/server/components/schema-form/index.js +4 -4
  159. package/dist/server/components/secret-value-field/index.js +3 -5
  160. package/dist/server/components/segment/index.js +3 -3
  161. package/dist/server/components/segmented-control/index.js +4 -4
  162. package/dist/server/components/selection-popover/index.js +4 -4
  163. package/dist/server/components/sheet/index.js +2 -2
  164. package/dist/server/components/side-navigation/index.js +2 -2
  165. package/dist/server/components/sidebar/index.js +3 -3
  166. package/dist/server/components/tab/index.js +2 -2
  167. package/dist/server/components/table/index.js +3 -3
  168. package/dist/server/components/tabs/index.js +4 -4
  169. package/dist/server/components/tag-input/index.js +3 -3
  170. package/dist/server/components/team-section/index.js +8 -8
  171. package/dist/server/components/testimonial-section/index.js +2 -2
  172. package/dist/server/components/time-field/index.js +5 -3
  173. package/dist/server/components/toggle/index.js +2 -2
  174. package/dist/server/components/tooltip/index.js +1 -1
  175. package/dist/server/index.js +235 -211
  176. package/dist/server/{index.server-20y4mdhm.js → index.server-0chhpkg7.js} +40 -14
  177. package/dist/server/index.server-0sx92swg.js +9 -0
  178. package/dist/server/{index.server-ecm1vs3g.js → index.server-1nq7z1qw.js} +1 -1
  179. package/dist/server/{index.server-s9khh4ry.js → index.server-2bbwajb2.js} +3 -5
  180. package/dist/server/index.server-2hqrv7ca.js +9 -0
  181. package/dist/server/{index.server-69epaape.js → index.server-2qj6s2mh.js} +1 -1
  182. package/dist/server/{index.server-gxf0d1p5.js → index.server-2s5h1d05.js} +2 -2
  183. package/dist/server/{index.server-qfa2rxzx.js → index.server-2zdbz3rj.js} +3 -5
  184. package/dist/server/{index.server-pt8b65mt.js → index.server-38aywdk1.js} +1 -1
  185. package/dist/server/{index.server-0jhra85x.js → index.server-3w72dxz7.js} +4 -4
  186. package/dist/server/{index.server-rermas0k.js → index.server-47v2fhp4.js} +4 -4
  187. package/dist/server/{index.server-v4zabrsx.js → index.server-4x4hgvqe.js} +434 -26
  188. package/dist/server/{index.server-9j5sym59.js → index.server-4x91gzy1.js} +2 -2
  189. package/dist/server/{index.server-q48q15g7.js → index.server-4y2jtvv1.js} +4 -2
  190. package/dist/server/{index.server-j3ddzcaa.js → index.server-5gzyqv78.js} +6 -6
  191. package/dist/server/index.server-67qgdypc.js +9 -0
  192. package/dist/server/index.server-6hnfzc7f.js +263 -0
  193. package/dist/server/{index.server-9jete4xx.js → index.server-6sh11ap6.js} +4 -4
  194. package/dist/server/{index.server-4ztq565m.js → index.server-85p4ydph.js} +1 -1
  195. package/dist/server/{index.server-4nk7gy0q.js → index.server-894t97kv.js} +1 -1
  196. package/dist/server/{index.server-1vscnped.js → index.server-8dt36sdm.js} +2 -1
  197. package/dist/server/{index.server-bfsbp9dz.js → index.server-8xvc73zh.js} +4 -4
  198. package/dist/server/{index.server-cvnw3hw9.js → index.server-9kz37z89.js} +1 -1
  199. package/dist/server/{index.server-kc1k02tk.js → index.server-9ykk1kbg.js} +1 -1
  200. package/dist/server/{index.server-g789yep6.js → index.server-aqethy0w.js} +2 -2
  201. package/dist/server/index.server-be9bpqeh.js +93 -0
  202. package/dist/server/{index.server-wc9aggfz.js → index.server-bmxbsk4y.js} +7 -7
  203. package/dist/server/{index.server-f3z7tpxr.js → index.server-c42b462p.js} +2 -4
  204. package/dist/server/{index.server-7vyzen5x.js → index.server-c5qv3p61.js} +171 -63
  205. package/dist/server/index.server-cch0eed5.js +144 -0
  206. package/dist/server/{index.server-q89dz8h1.js → index.server-d3pqthtp.js} +4 -3
  207. package/dist/server/{index.server-jk4rx4aa.js → index.server-dmmvwy6p.js} +1 -1
  208. package/dist/server/{index.server-hcfnae5y.js → index.server-dwwqssey.js} +4 -4
  209. package/dist/server/{index.server-e8x1hgw6.js → index.server-dz1r9xw5.js} +4 -4
  210. package/dist/server/{index.server-wm7mk5kw.js → index.server-ez5hp0ya.js} +1 -1
  211. package/dist/server/{index.server-wc8dbm5e.js → index.server-g95bk8rc.js} +4 -2
  212. package/dist/server/index.server-gkazv439.js +576 -0
  213. package/dist/server/index.server-gmh5ar16.js +2 -0
  214. package/dist/server/{index.server-dp9j2kkr.js → index.server-h0cvwvhy.js} +1 -1
  215. package/dist/server/{index.server-cbtg8rq5.js → index.server-h89zk5ev.js} +8 -8
  216. package/dist/server/{index.server-pacrqvyz.js → index.server-h90pjrez.js} +1 -1
  217. package/dist/server/{index.server-p8d04em5.js → index.server-hcsd5gdb.js} +6 -2
  218. package/dist/server/{index.server-n39drzes.js → index.server-hpeavvnq.js} +1 -1
  219. package/dist/server/{index.server-1p3patnj.js → index.server-hx91ng7z.js} +1 -1
  220. package/dist/server/{index.server-mehav5vs.js → index.server-jdcq5zza.js} +7 -7
  221. package/dist/server/{index.server-jync915v.js → index.server-jfrssta6.js} +25 -25
  222. package/dist/server/{index.server-jtj3r53y.js → index.server-jgb8yh5k.js} +1 -1
  223. package/dist/server/{index.server-ejyf7e48.js → index.server-jj76374p.js} +1 -1
  224. package/dist/server/{index.server-w1g5q9j9.js → index.server-jtgw9d23.js} +4 -2
  225. package/dist/server/{index.server-hd8gpehd.js → index.server-jxseyx33.js} +1 -1
  226. package/dist/server/{index.server-kg2sepsr.js → index.server-krqvnt6p.js} +14 -15
  227. package/dist/server/{index.server-0e1m3agz.js → index.server-ks49bprh.js} +1 -1
  228. package/dist/server/{index.server-f0hma3jp.js → index.server-kt0ncrqs.js} +1 -1
  229. package/dist/server/index.server-m0ezemav.js +170 -0
  230. package/dist/server/index.server-m191rm44.js +79 -0
  231. package/dist/server/{index.server-z721a5gp.js → index.server-n82rcv0m.js} +4 -4
  232. package/dist/server/{index.server-rhhmdxtz.js → index.server-np3c7kx0.js} +4 -4
  233. package/dist/server/{index.server-hpcs7tmh.js → index.server-p56xxef1.js} +1 -1
  234. package/dist/server/{index.server-w83kmcrx.js → index.server-pag862vz.js} +10 -10
  235. package/dist/server/index.server-qbkxz7r2.js +750 -0
  236. package/dist/server/{index.server-sh2rxejg.js → index.server-qke3ekjt.js} +1 -1
  237. package/dist/server/{index.server-73x2d3j3.js → index.server-rbpvcrr3.js} +1 -1
  238. package/dist/server/{index.server-8cxs4kya.js → index.server-rga8sc7j.js} +41 -44
  239. package/dist/server/{index.server-e3fnv1g6.js → index.server-sedjxt36.js} +5 -5
  240. package/dist/server/{index.server-pen9pxt6.js → index.server-sf3nk3j2.js} +2 -2
  241. package/dist/server/{index.server-f23vtaw4.js → index.server-tcay903b.js} +8 -7
  242. package/dist/server/{index.server-7fp0epev.js → index.server-veastatv.js} +4 -4
  243. package/dist/server/{index.server-jeqg2d22.js → index.server-xeqtpv61.js} +1 -1
  244. package/dist/server/{index.server-9s4na701.js → index.server-xjnge1yw.js} +4 -4
  245. package/dist/server/index.server-xtjjmsyq.js +315 -0
  246. package/dist/server/{index.server-hhxjaeen.js → index.server-xz99aed4.js} +4 -4
  247. package/dist/server/{index.server-vne4rzfa.js → index.server-y4n8vc08.js} +1 -1
  248. package/dist/server/{index.server-5d01cn4f.js → index.server-y83kqayt.js} +4 -4
  249. package/dist/server/{index.server-1nh09ck7.js → index.server-yhzydqxe.js} +5 -5
  250. package/dist/server/index.server-z38bxms8.js +734 -0
  251. package/dist/server/{index.server-atjc1qcq.js → index.server-z7hxtqs1.js} +1 -1
  252. package/dist/server/{index.server-w6k62afr.js → index.server-ze1ymmbw.js} +2 -2
  253. package/dist/server/{index.server-914v805w.js → index.server-zgd1g8mk.js} +1 -1
  254. package/dist/server/{index.server-aeexcxdp.js → index.server-zh3r8vfd.js} +1 -1
  255. package/dist/server/{index.server-10jb2jzm.js → index.server-zsjf8enc.js} +4 -4
  256. package/package.json +102 -5
  257. package/src/components/_internal/command-list-context.ts +3 -3
  258. package/src/components/_internal/create-command-list-state.svelte.ts +39 -13
  259. package/src/components/approval-card/approval-card-actions.svelte +168 -0
  260. package/src/components/approval-card/approval-card-state.ts +152 -1
  261. package/src/components/approval-card/approval-card.css +269 -92
  262. package/src/components/approval-card/approval-card.examples.json +3 -3
  263. package/src/components/approval-card/approval-card.schema.json +9 -30
  264. package/src/components/approval-card/approval-card.schema.ts +13 -31
  265. package/src/components/approval-card/approval-card.svelte +176 -470
  266. package/src/components/approval-card/approval-card.types.ts +15 -28
  267. package/src/components/approval-card/index.ts +1 -0
  268. package/src/components/card/card.css +5 -0
  269. package/src/components/card/card.schema.json +1 -1
  270. package/src/components/card/card.schema.ts +1 -1
  271. package/src/components/card/card.svelte +1 -0
  272. package/src/components/card/card.types.ts +2 -2
  273. package/src/components/chat/builders.ts +445 -14
  274. package/src/components/chat/chat.schema.json +36 -1
  275. package/src/components/chat/chat.schema.ts +44 -1
  276. package/src/components/chat/chat.svelte +12 -0
  277. package/src/components/chat/chat.types.ts +35 -3
  278. package/src/components/chat/container/chat.svelte +73 -3
  279. package/src/components/chat/conversation-model.ts +1 -0
  280. package/src/components/chat/index.ts +16 -3
  281. package/src/components/chat/input/chat-attachment-serialization.ts +63 -0
  282. package/src/components/chat/input/chat-input.svelte +22 -5
  283. package/src/components/chat/input/index.ts +5 -0
  284. package/src/components/chat/utilities/conversation.ts +33 -15
  285. package/src/components/chat-composer-popover/chat-composer-popover-filter.ts +68 -0
  286. package/src/components/chat-composer-popover/chat-composer-popover.css +7 -0
  287. package/src/components/chat-composer-popover/chat-composer-popover.examples.json +13 -0
  288. package/src/components/chat-composer-popover/chat-composer-popover.schema.json +90 -0
  289. package/src/components/chat-composer-popover/chat-composer-popover.schema.ts +95 -0
  290. package/src/components/chat-composer-popover/chat-composer-popover.svelte +234 -0
  291. package/src/components/chat-composer-popover/chat-composer-popover.types.ts +88 -0
  292. package/src/components/chat-composer-popover/chat-composer-popover.variables.json +1 -0
  293. package/src/components/chat-composer-popover/chat-composer-popover.variables.ts +3 -0
  294. package/src/components/chat-composer-popover/index.ts +19 -0
  295. package/src/components/code-block/code-block.schema.json +4 -0
  296. package/src/components/code-block/code-block.schema.ts +5 -0
  297. package/src/components/code-block/code-block.svelte +3 -3
  298. package/src/components/code-block/code-block.types.ts +6 -0
  299. package/src/components/command-item/command-item.svelte +7 -6
  300. package/src/components/command-menu/command-menu.schema.json +4 -0
  301. package/src/components/command-menu/command-menu.schema.ts +4 -0
  302. package/src/components/command-menu/command-menu.svelte +16 -5
  303. package/src/components/command-menu/command-menu.types.ts +2 -0
  304. package/src/components/connection-indicator/connection-indicator.css +136 -0
  305. package/src/components/connection-indicator/connection-indicator.examples.json +31 -0
  306. package/src/components/connection-indicator/connection-indicator.schema.json +29 -0
  307. package/src/components/connection-indicator/connection-indicator.schema.ts +36 -0
  308. package/src/components/connection-indicator/connection-indicator.svelte +63 -0
  309. package/src/components/connection-indicator/connection-indicator.types.ts +58 -0
  310. package/src/components/connection-indicator/connection-indicator.variables.json +1 -0
  311. package/src/components/connection-indicator/connection-indicator.variables.ts +3 -0
  312. package/src/components/connection-indicator/index.ts +10 -0
  313. package/src/components/container/container.schema.json +3 -3
  314. package/src/components/container/container.schema.ts +3 -3
  315. package/src/components/invocation-rule-builder/index.ts +4 -0
  316. package/src/components/invocation-rule-builder/invocation-rule-builder.css +28 -0
  317. package/src/components/invocation-rule-builder/invocation-rule-builder.examples.json +6 -0
  318. package/src/components/invocation-rule-builder/invocation-rule-builder.schema.json +76 -3
  319. package/src/components/invocation-rule-builder/invocation-rule-builder.schema.ts +83 -3
  320. package/src/components/invocation-rule-builder/invocation-rule-builder.svelte +326 -113
  321. package/src/components/invocation-rule-builder/invocation-rule-builder.types.ts +157 -43
  322. package/src/components/json-viewer/_json-viewer-node.svelte +15 -1
  323. package/src/components/json-viewer/json-viewer.css +10 -6
  324. package/src/components/payload-inspector/index.ts +0 -2
  325. package/src/components/payload-inspector/payload-inspector.css +15 -75
  326. package/src/components/payload-inspector/payload-inspector.examples.json +5 -5
  327. package/src/components/payload-inspector/payload-inspector.schema.json +3 -31
  328. package/src/components/payload-inspector/payload-inspector.schema.ts +3 -36
  329. package/src/components/payload-inspector/payload-inspector.svelte +46 -239
  330. package/src/components/payload-inspector/payload-inspector.types.ts +10 -58
  331. package/src/components/run-step-timeline/index.ts +8 -0
  332. package/src/components/run-step-timeline/run-step-branch-disclosure.svelte +16 -0
  333. package/src/components/run-step-timeline/run-step-timeline.css +124 -0
  334. package/src/components/run-step-timeline/run-step-timeline.examples.json +18 -0
  335. package/src/components/run-step-timeline/run-step-timeline.schema.json +872 -349
  336. package/src/components/run-step-timeline/run-step-timeline.schema.ts +931 -349
  337. package/src/components/run-step-timeline/run-step-timeline.svelte +387 -268
  338. package/src/components/run-step-timeline/run-step-timeline.types.ts +192 -5
  339. package/src/components/run-step-timeline/run-step-timeline.utilities.ts +242 -0
  340. package/src/components/schedule-builder/index.ts +14 -0
  341. package/src/components/schedule-builder/schedule-builder.css +121 -0
  342. package/src/components/schedule-builder/schedule-builder.examples.json +31 -0
  343. package/src/components/schedule-builder/schedule-builder.schema.json +78 -0
  344. package/src/components/schedule-builder/schedule-builder.schema.ts +86 -0
  345. package/src/components/schedule-builder/schedule-builder.svelte +629 -0
  346. package/src/components/schedule-builder/schedule-builder.types.ts +137 -0
  347. package/src/components/schedule-builder/schedule-builder.utilities.ts +344 -0
  348. package/src/components/schedule-builder/schedule-builder.variables.json +1 -0
  349. package/src/components/schedule-builder/schedule-builder.variables.ts +3 -0
  350. package/src/components/tab/tab.schema.json +6 -2
  351. package/src/components/tab/tab.schema.ts +8 -2
  352. package/src/components/tab/tab.svelte +9 -5
  353. package/src/components/tab/tab.types.ts +8 -2
  354. package/src/components/tag-input/tag-input.schema.json +4 -0
  355. package/src/components/tag-input/tag-input.schema.ts +4 -0
  356. package/src/components/tag-input/tag-input.svelte +20 -3
  357. package/src/components/tag-input/tag-input.types.ts +4 -0
  358. package/src/index.ts +41 -5
  359. package/src/styles/components.css +3 -0
  360. package/dist/server/index-49we2xfs.js +0 -344
  361. package/dist/server/index-8fhvxk30.js +0 -265
  362. package/dist/server/index-x2ysg8ds.js +0 -388
  363. package/dist/server/index.server-20j0jh30.js +0 -9
  364. package/dist/server/index.server-dc35kh7d.js +0 -1835
  365. package/dist/server/index.server-kd4b0342.js +0 -607
  366. package/dist/server/index.server-n5cdmsz4.js +0 -30
  367. package/dist/server/index.server-pxg74pyp.js +0 -393
  368. package/dist/server/index.server-rjap4k7y.js +0 -1389
  369. package/dist/server/index.server-vt6sn9y4.js +0 -447
  370. package/dist/server/index.server-w63n618v.js +0 -9
  371. package/dist/server/index.server-y2pa1k46.js +0 -9
@@ -48,6 +48,27 @@ export type InvocationRule = {
48
48
  actions: InvocationRuleAction[];
49
49
  };
50
50
 
51
+ /**
52
+ * The value type a condition field represents. Determines which typed value
53
+ * control renders for that field in conditions-only mode (`mode="conditions"`).
54
+ * Ignored in full mode, where the condition value is always a free-text input.
55
+ */
56
+ export type InvocationRuleFieldType = 'string' | 'number' | 'boolean' | 'enum';
57
+
58
+ /**
59
+ * A single selectable choice for an `'enum'`-typed field's value, rendered as
60
+ * a select in conditions-only mode. A flat value/label pair — enum choices do
61
+ * not nest further.
62
+ *
63
+ * @schemaObject
64
+ */
65
+ export type InvocationRuleValueChoice = {
66
+ /** The value stored on the condition. */
67
+ value: string;
68
+ /** The human-readable label shown in the select. */
69
+ label: string;
70
+ };
71
+
51
72
  /**
52
73
  * An option in a field, operator, or action-target select list.
53
74
  *
@@ -58,8 +79,41 @@ export type InvocationRuleOption = {
58
79
  value: string;
59
80
  /** The human-readable label shown in the select. */
60
81
  label: string;
82
+ /**
83
+ * The value type this option represents when used as a field option in
84
+ * conditions-only mode (`mode="conditions"`). Defaults to `'string'` when
85
+ * omitted. Ignored for operator and action-target options, and ignored
86
+ * entirely in full mode.
87
+ */
88
+ type?: InvocationRuleFieldType;
89
+ /**
90
+ * Enum choices for this field's value, rendered as a select in
91
+ * conditions-only mode when `type` is `'enum'`. Provide these for an enum
92
+ * field; if omitted or empty, the value select renders with no choices.
93
+ * Ignored for non-enum field types.
94
+ */
95
+ options?: InvocationRuleValueChoice[];
61
96
  };
62
97
 
98
+ /**
99
+ * Rendering mode for InvocationRuleBuilder.
100
+ *
101
+ * - `'full'` (default) renders both conditions and actions, matching the
102
+ * component's original behavior exactly.
103
+ * - `'conditions'` renders conditions only: action controls are hidden
104
+ * entirely, rules never emit action descriptors, the operator set is
105
+ * fixed to {@link InvocationRuleConditionsOnlyOperator}, and condition
106
+ * value controls are inferred from each field option's `type`.
107
+ */
108
+ export type InvocationRuleBuilderMode = 'full' | 'conditions';
109
+
110
+ /**
111
+ * The fixed operator vocabulary used in conditions-only mode
112
+ * (`mode="conditions"`). Cinder supplies these five operators with default
113
+ * labels; the `operatorOptions` prop is not accepted in this mode.
114
+ */
115
+ export type InvocationRuleConditionsOnlyOperator = 'eq' | 'gt' | 'lt' | 'gte' | 'lte';
116
+
63
117
  /**
64
118
  * Describes the change that caused an `onchange` call.
65
119
  * Consumers use the type to determine what to persist.
@@ -105,6 +159,34 @@ type InvocationRuleBuilderBaseProps = Omit<
105
159
  */
106
160
  fieldOptions: InvocationRuleOption[];
107
161
 
162
+ /**
163
+ * Label for the "Add rule" button. Defaults to "Add rule".
164
+ */
165
+ addRuleLabel?: string;
166
+
167
+ /**
168
+ * Label for the "Add condition" button. Defaults to "Add condition".
169
+ */
170
+ addConditionLabel?: string;
171
+
172
+ /** Accessible label for the entire rule builder region. */
173
+ label?: string;
174
+
175
+ /** Additional CSS classes applied to the root element. */
176
+ class?: string;
177
+ };
178
+
179
+ /**
180
+ * Mode-specific props for `mode="full"` (the default). Behavior and prop
181
+ * shape are unchanged from before conditions-only mode existed.
182
+ */
183
+ type InvocationRuleBuilderFullModeProps = {
184
+ /**
185
+ * Rendering mode. Omit or pass `'full'` to render both conditions and
186
+ * actions — the component's original, unchanged behavior.
187
+ */
188
+ mode?: 'full';
189
+
108
190
  /**
109
191
  * Options for the condition operator selector. Consumer-provided list
110
192
  * of operators, e.g. "matches", "is", "is-not", "contains".
@@ -118,61 +200,78 @@ type InvocationRuleBuilderBaseProps = Omit<
118
200
  actionOptions: InvocationRuleOption[];
119
201
 
120
202
  /**
121
- * Label for the "Add rule" button. Defaults to "Add rule".
203
+ * Label for the "Add action" button. Defaults to "Add action".
122
204
  */
123
- addRuleLabel?: string;
205
+ addActionLabel?: string;
206
+ };
124
207
 
208
+ /**
209
+ * Mode-specific props for `mode="conditions"`. Actions are not rendered, so
210
+ * action-related props are not accepted — cinder owns the operator
211
+ * vocabulary and there is nothing to configure for actions.
212
+ */
213
+ type InvocationRuleBuilderConditionsOnlyModeProps = {
125
214
  /**
126
- * Label for the "Add condition" button. Defaults to "Add condition".
215
+ * Renders conditions only: action controls are hidden entirely and rules
216
+ * never emit action descriptors.
127
217
  */
128
- addConditionLabel?: string;
218
+ mode: 'conditions';
129
219
 
130
220
  /**
131
- * Label for the "Add action" button. Defaults to "Add action".
221
+ * Not accepted in conditions-only mode. Cinder supplies the fixed
222
+ * eq/gt/lt/gte/lte operator set internally; see
223
+ * {@link InvocationRuleConditionsOnlyOperator}.
132
224
  */
133
- addActionLabel?: string;
225
+ operatorOptions?: never;
134
226
 
135
- /** Accessible label for the entire rule builder region. */
136
- label?: string;
227
+ /** Not accepted in conditions-only mode action controls are not rendered. */
228
+ actionOptions?: never;
137
229
 
138
- /** Additional CSS classes applied to the root element. */
139
- class?: string;
230
+ /** Not accepted in conditions-only mode action controls are not rendered. */
231
+ addActionLabel?: never;
140
232
  };
141
233
 
234
+ type InvocationRuleBuilderModeProps =
235
+ | InvocationRuleBuilderFullModeProps
236
+ | InvocationRuleBuilderConditionsOnlyModeProps;
237
+
142
238
  type InvocationRuleBuilderChangeHandler = (
143
239
  nextRules: InvocationRule[],
144
240
  change: InvocationRuleChange,
145
241
  ) => void;
146
242
 
147
- export type InvocationRuleBuilderProps =
148
- | (InvocationRuleBuilderBaseProps & {
149
- /**
150
- * Called whenever the user makes any edit. Required for editable runtime
151
- * usage because editable controls must commit controlled state changes.
152
- * Receives the next rule array (pure, not mutated) and a change descriptor.
153
- * Consumer owns persistence, validation, and execution.
154
- */
155
- onchange: InvocationRuleBuilderChangeHandler;
156
-
157
- /**
158
- * When false or omitted, renders editable controls. Editable mode requires
159
- * `onchange` so controls cannot become interactive-but-no-op.
160
- */
161
- readonly?: false;
162
- })
163
- | (InvocationRuleBuilderBaseProps & {
164
- /**
165
- * Optional in readonly usage because no edit controls are rendered.
166
- * Runtime consumers may still pass it when sharing props between modes.
167
- */
168
- onchange?: InvocationRuleBuilderChangeHandler;
169
-
170
- /**
171
- * When true, renders a readonly summary of each rule instead of editable
172
- * controls.
173
- */
174
- readonly: true;
175
- });
243
+ export type InvocationRuleBuilderProps = InvocationRuleBuilderBaseProps &
244
+ InvocationRuleBuilderModeProps &
245
+ (
246
+ | {
247
+ /**
248
+ * Called whenever the user makes any edit. Required for editable runtime
249
+ * usage because editable controls must commit controlled state changes.
250
+ * Receives the next rule array (pure, not mutated) and a change descriptor.
251
+ * Consumer owns persistence, validation, and execution.
252
+ */
253
+ onchange: InvocationRuleBuilderChangeHandler;
254
+
255
+ /**
256
+ * When false or omitted, renders editable controls. Editable mode requires
257
+ * `onchange` so controls cannot become interactive-but-no-op.
258
+ */
259
+ readonly?: false;
260
+ }
261
+ | {
262
+ /**
263
+ * Optional in readonly usage because no edit controls are rendered.
264
+ * Runtime consumers may still pass it when sharing props between modes.
265
+ */
266
+ onchange?: InvocationRuleBuilderChangeHandler;
267
+
268
+ /**
269
+ * When true, renders a readonly summary of each rule instead of editable
270
+ * controls.
271
+ */
272
+ readonly: true;
273
+ }
274
+ );
176
275
 
177
276
  /**
178
277
  * Cinder-specific schema surface for InvocationRuleBuilder.
@@ -193,17 +292,32 @@ export type InvocationRuleBuilderSchemaProps = {
193
292
  */
194
293
  fieldOptions: InvocationRuleOption[];
195
294
 
295
+ /**
296
+ * Rendering mode. Omit or pass `'full'` for the original conditions +
297
+ * actions behavior; pass `'conditions'` to render conditions only. Not
298
+ * expressible as a schema-driven discriminant here because JSON Schema
299
+ * validation of this component is documented, not enforced at runtime
300
+ * against `operatorOptions`/`actionOptions` presence; see the component
301
+ * types for the full mode-discriminated prop shape.
302
+ */
303
+ mode?: InvocationRuleBuilderMode;
304
+
196
305
  /**
197
306
  * Options for the condition operator selector. Consumer-provided list
198
- * of operators, e.g. "matches", "is", "is-not", "contains".
307
+ * of operators, e.g. "matches", "is", "is-not", "contains". Required in
308
+ * full mode; optional (and ignored) when `mode` is `'conditions'`, since
309
+ * cinder supplies a fixed operator set in that mode — so a conditions-only
310
+ * configuration validates without it.
199
311
  */
200
- operatorOptions: InvocationRuleOption[];
312
+ operatorOptions?: InvocationRuleOption[];
201
313
 
202
314
  /**
203
315
  * Options for the action target selector. Consumer-provided list of
204
- * targets, e.g. review-agent slugs or step identifiers.
316
+ * targets, e.g. review-agent slugs or step identifiers. Required in full
317
+ * mode; optional (and ignored) when `mode` is `'conditions'`, since actions
318
+ * are not rendered — so a conditions-only configuration validates without it.
205
319
  */
206
- actionOptions: InvocationRuleOption[];
320
+ actionOptions?: InvocationRuleOption[];
207
321
 
208
322
  /**
209
323
  * Must be true for schema-driven usage because editable mode requires
@@ -62,7 +62,21 @@ function valueClass(v) {
62
62
  {#if keyName !== undefined}
63
63
  <span class="cinder-json-viewer__key">{keyName}:</span>
64
64
  {/if}
65
- <span class="cinder-json-viewer__caret" data-cinder-collapsed={collapsed || undefined}></span>
65
+ <svg
66
+ class="cinder-json-viewer__caret"
67
+ data-cinder-collapsed={collapsed || undefined}
68
+ xmlns="http://www.w3.org/2000/svg"
69
+ viewBox="0 0 20 20"
70
+ fill="currentColor"
71
+ aria-hidden="true"
72
+ focusable="false"
73
+ >
74
+ <path
75
+ fill-rule="evenodd"
76
+ d="M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06z"
77
+ clip-rule="evenodd"
78
+ ></path>
79
+ </svg>
66
80
  <span class="cinder-json-viewer__brace">
67
81
  {isArray ? '[' : '{'}
68
82
  </span>
@@ -80,12 +80,10 @@
80
80
  }
81
81
 
82
82
  .cinder-json-viewer__caret {
83
- display: inline-block;
84
- width: 0;
85
- height: 0;
86
- border-inline-start: 0.25rem solid transparent;
87
- border-inline-end: 0.25rem solid transparent;
88
- border-top: 0.375rem solid currentColor;
83
+ flex: 0 0 auto;
84
+ width: 0.75rem;
85
+ height: 0.75rem;
86
+ color: var(--cinder-text-muted);
89
87
  transition: transform var(--cinder-duration-fast) var(--cinder-ease-standard);
90
88
  }
91
89
 
@@ -93,6 +91,12 @@
93
91
  transform: rotate(-90deg);
94
92
  }
95
93
 
94
+ @media (prefers-reduced-motion: reduce) {
95
+ .cinder-json-viewer__caret {
96
+ transition: none;
97
+ }
98
+ }
99
+
96
100
  .cinder-json-viewer__brace {
97
101
  color: var(--cinder-text-muted);
98
102
  }
@@ -3,10 +3,8 @@ import PayloadInspector from './payload-inspector.svelte';
3
3
 
4
4
  export default PayloadInspector;
5
5
  export type {
6
- PayloadInspectorMeta,
7
6
  PayloadInspectorProps,
8
7
  PayloadInspectorSchemaProps,
9
8
  PayloadInspectorSchemaValue,
10
- PayloadInspectorView,
11
9
  } from './payload-inspector.types.ts';
12
10
  export { PayloadInspector };
@@ -1,16 +1,12 @@
1
1
  @layer cinder.tokens, cinder.foundation, cinder.components, cinder.utilities;
2
2
  @import '../badge/badge.css';
3
- @import '../code-block/code-block.css';
4
3
  @import '../copy-button/copy-button.css';
5
- @import '../description-list/description-list.css';
6
4
  @import '../json-viewer/json-viewer.css';
7
- @import '../tabs/tabs.css';
8
5
 
9
6
  @layer cinder.components {
10
7
  .cinder-payload-inspector {
11
8
  display: flex;
12
9
  flex-direction: column;
13
- gap: var(--cinder-space-0);
14
10
  border: 1px solid var(--cinder-border-muted);
15
11
  border-radius: var(--cinder-radius-md);
16
12
  overflow: hidden;
@@ -27,7 +23,7 @@
27
23
  align-items: center;
28
24
  justify-content: space-between;
29
25
  gap: var(--cinder-space-2);
30
- padding: var(--cinder-space-2) var(--cinder-space-3);
26
+ padding: var(--cinder-space-1) var(--cinder-space-2) var(--cinder-space-1) var(--cinder-space-3);
31
27
  background: var(--cinder-surface-raised);
32
28
  border-bottom: 1px solid var(--cinder-border-muted);
33
29
  flex-wrap: wrap;
@@ -55,71 +51,29 @@
55
51
  }
56
52
 
57
53
  /* ----------------------------------------
58
- * Tab list within inspector
59
- * ---------------------------------------- */
60
-
61
- .cinder-payload-inspector__tabs {
62
- display: flex;
63
- flex-direction: column;
64
- flex: 1;
65
- min-block-size: 0;
66
- }
67
-
68
- /* ----------------------------------------
69
- * Panel content areas
54
+ * Panel content
70
55
  * ---------------------------------------- */
71
56
 
72
57
  .cinder-payload-inspector__panel {
73
- padding: var(--cinder-space-4);
74
- overflow: auto;
75
- }
76
-
77
- .cinder-payload-inspector__panel--code {
78
- padding: var(--cinder-space-0);
79
- }
80
-
81
- /* ----------------------------------------
82
- * Raw view (CodeBlock wrapper)
83
- * ---------------------------------------- */
84
-
85
- .cinder-payload-inspector__raw {
86
- /* Remove the built-in CodeBlock rounded corners so the block sits flush
87
- inside the panel. Border radius is handled by the outer inspector. */
88
- border-radius: 0;
89
- }
90
-
91
- /* ----------------------------------------
92
- * Summary view
93
- * ---------------------------------------- */
94
-
95
- .cinder-payload-inspector__summary {
96
- display: flex;
97
- flex-direction: column;
98
- gap: var(--cinder-space-4);
99
- }
100
-
101
- .cinder-payload-inspector__summary-badges {
102
- display: flex;
103
- align-items: center;
104
- gap: var(--cinder-space-2);
105
- flex-wrap: wrap;
106
- }
107
-
108
- .cinder-payload-inspector__summary-value {
109
58
  display: flex;
110
59
  flex-direction: column;
111
60
  gap: var(--cinder-space-2);
61
+ padding: var(--cinder-space-2);
62
+ overflow: auto;
112
63
  }
113
64
 
114
- .cinder-payload-inspector__summary-value-label {
115
- font-size: var(--cinder-text-xs);
116
- font-weight: var(--cinder-font-medium);
117
- color: var(--cinder-text-muted);
118
- text-transform: uppercase;
119
- letter-spacing: 0.04em;
65
+ /* JsonViewer carries its own border/background/padding for standalone use,
66
+ but nested here it would double the framing this component's own header
67
+ bar + outer border already provide — strip it back to flush content. */
68
+ .cinder-payload-inspector__panel .cinder-json-viewer {
69
+ padding: 0;
70
+ border: none;
71
+ border-radius: 0;
72
+ background: transparent;
120
73
  }
121
74
 
122
75
  .cinder-payload-inspector__primitive {
76
+ margin: 0;
123
77
  font-family: var(--cinder-font-mono);
124
78
  font-size: var(--cinder-text-sm);
125
79
  color: var(--cinder-text);
@@ -127,6 +81,7 @@
127
81
  padding: var(--cinder-space-2) var(--cinder-space-3);
128
82
  border-radius: var(--cinder-radius-sm);
129
83
  border: 1px solid var(--cinder-border-muted);
84
+ white-space: pre-wrap;
130
85
  word-break: break-all;
131
86
  }
132
87
 
@@ -156,24 +111,9 @@
156
111
  display: flex;
157
112
  align-items: center;
158
113
  justify-content: center;
159
- padding: var(--cinder-space-8) var(--cinder-space-4);
114
+ padding: var(--cinder-space-4);
160
115
  color: var(--cinder-text-disabled);
161
116
  font-size: var(--cinder-text-sm);
162
117
  font-style: italic;
163
118
  }
164
-
165
- /* ----------------------------------------
166
- * Focus ring on focusable elements we own
167
- * ---------------------------------------- */
168
-
169
- .cinder-payload-inspector:focus-visible {
170
- outline: var(--cinder-ring-width) solid transparent;
171
- box-shadow: var(--_cinder-focus-ring-shadow);
172
- }
173
-
174
- @media (forced-colors: active) {
175
- .cinder-payload-inspector:focus-visible {
176
- outline: var(--cinder-ring-width) solid ButtonText;
177
- }
178
- }
179
119
  }
@@ -6,26 +6,26 @@
6
6
  {
7
7
  "id": "basic",
8
8
  "title": "Basic payload inspector",
9
- "description": "Inspect a structured object payload with summary metadata, interactive tree, and raw JSON views.",
10
- "code": "<script lang=\"ts\">\n import { PayloadInspector } from '@lostgradient/cinder/payload-inspector';\n\n const payload = {\n userId: 'u_8f2a3b',\n action: 'checkout',\n cart: {\n items: [\n { id: 'p_001', name: 'Widget', qty: 2, price: 19.99 },\n { id: 'p_002', name: 'Gadget', qty: 1, price: 49.95 },\n ],\n total: 89.93,\n },\n timestamp: '2026-06-11T14:22:00Z',\n flags: { guestCheckout: false, promoApplied: true },\n };\n</script>\n\n<PayloadInspector\n value={payload}\n meta={{\n contentType: 'application/json',\n source: 'checkout-workflow',\n timestamp: '2026-06-11T14:22:00Z',\n }}\n/>\n"
9
+ "description": "Inspect a structured object payload as an interactive tree with a copy action and byte size.",
10
+ "code": "<script lang=\"ts\">\n import { PayloadInspector } from '@lostgradient/cinder/payload-inspector';\n\n const payload = {\n userId: 'u_8f2a3b',\n action: 'checkout',\n cart: {\n items: [\n { id: 'p_001', name: 'Widget', qty: 2, price: 19.99 },\n { id: 'p_002', name: 'Gadget', qty: 1, price: 49.95 },\n ],\n total: 89.93,\n },\n timestamp: '2026-06-11T14:22:00Z',\n flags: { guestCheckout: false, promoApplied: true },\n };\n</script>\n\n<PayloadInspector value={payload} label=\"Checkout payload\" />\n"
11
11
  },
12
12
  {
13
13
  "id": "edge-cases",
14
14
  "title": "Edge cases",
15
15
  "description": "Demonstrates null, invalid JSON, and empty payload states in the inspector.",
16
- "code": "<script lang=\"ts\">\n import { Button } from '@lostgradient/cinder/button';\n import { PayloadInspector } from '@lostgradient/cinder/payload-inspector';\n\n type Scenario = 'empty' | 'null' | 'invalid-json' | 'truncated' | 'primitive';\n\n let scenario = $state<Scenario>('empty');\n\n const scenarios: Record<Scenario, { value?: unknown; truncated?: boolean; label: string }> = {\n empty: { value: undefined, label: 'No payload' },\n null: { value: null, label: 'Null value' },\n 'invalid-json': { value: '{ not valid json at all', label: 'Invalid JSON string' },\n truncated: { value: { partial: 'data', more: '...' }, truncated: true, label: 'Truncated' },\n primitive: { value: 42, label: 'Number primitive' },\n };\n\n const current = $derived(scenarios[scenario]);\n</script>\n\n<div style=\"display: flex; flex-direction: column; gap: 1rem;\">\n <div style=\"display: flex; gap: 0.5rem; flex-wrap: wrap;\">\n {#each Object.keys(scenarios) as key (key)}\n <Button\n variant={scenario === key ? 'primary' : 'secondary'}\n size=\"sm\"\n onclick={() => (scenario = key as Scenario)}\n >\n {scenarios[key as Scenario].label}\n </Button>\n {/each}\n </div>\n\n <PayloadInspector\n value={current.value}\n truncated={current.truncated ?? false}\n meta={{ source: 'edge-case-demo' }}\n />\n</div>\n"
16
+ "code": "<script lang=\"ts\">\n import { Button } from '@lostgradient/cinder/button';\n import { PayloadInspector } from '@lostgradient/cinder/payload-inspector';\n\n type Scenario = 'empty' | 'null' | 'invalid-json' | 'truncated' | 'primitive';\n\n let scenario = $state<Scenario>('empty');\n\n const scenarios: Record<Scenario, { value?: unknown; truncated?: boolean; label: string }> = {\n empty: { value: undefined, label: 'No payload' },\n null: { value: null, label: 'Null value' },\n 'invalid-json': { value: '{ not valid json at all', label: 'Invalid JSON string' },\n truncated: { value: { partial: 'data', more: '...' }, truncated: true, label: 'Truncated' },\n primitive: { value: 42, label: 'Number primitive' },\n };\n\n const current = $derived(scenarios[scenario]);\n</script>\n\n<div style=\"display: flex; flex-direction: column; gap: 1rem;\">\n <div style=\"display: flex; gap: 0.5rem; flex-wrap: wrap;\">\n {#each Object.keys(scenarios) as key (key)}\n <Button\n variant={scenario === key ? 'primary' : 'secondary'}\n size=\"sm\"\n onclick={() => (scenario = key as Scenario)}\n >\n {scenarios[key as Scenario].label}\n </Button>\n {/each}\n </div>\n\n <PayloadInspector value={current.value} truncated={current.truncated ?? false} />\n</div>\n"
17
17
  },
18
18
  {
19
19
  "id": "signal-payload",
20
20
  "title": "Signal payload",
21
21
  "description": "Inspect a workflow signal payload — a common pattern in activity result dashboards.",
22
- "code": "<script lang=\"ts\">\n import { PayloadInspector } from '@lostgradient/cinder/payload-inspector';\n\n const signalPayload = {\n signalName: 'PaymentConfirmed',\n data: {\n transactionId: 'txn_5e8b2a',\n amount: 89.93,\n currency: 'USD',\n provider: 'stripe',\n confirmedAt: '2026-06-11T14:23:01Z',\n metadata: {\n statementDescriptor: 'ACME STORE',\n riskScore: 0.12,\n },\n },\n sentAt: '2026-06-11T14:23:01.543Z',\n correlationId: 'ord_9c4e1f',\n };\n</script>\n\n<PayloadInspector\n value={signalPayload}\n meta={{\n contentType: 'application/json',\n source: 'payment-service',\n timestamp: '2026-06-11T14:23:01Z',\n }}\n/>\n"
22
+ "code": "<script lang=\"ts\">\n import { PayloadInspector } from '@lostgradient/cinder/payload-inspector';\n\n const signalPayload = {\n signalName: 'PaymentConfirmed',\n data: {\n transactionId: 'txn_5e8b2a',\n amount: 89.93,\n currency: 'USD',\n provider: 'stripe',\n confirmedAt: '2026-06-11T14:23:01Z',\n metadata: {\n statementDescriptor: 'ACME STORE',\n riskScore: 0.12,\n },\n },\n sentAt: '2026-06-11T14:23:01.543Z',\n correlationId: 'ord_9c4e1f',\n };\n</script>\n\n<PayloadInspector value={signalPayload} label=\"Signal payload\" />\n"
23
23
  },
24
24
  {
25
25
  "id": "workflow-input",
26
26
  "title": "Workflow input",
27
27
  "description": "Inspecting a workflow launch payload with signal input, retry policy, and schedule metadata.",
28
- "code": "<script lang=\"ts\">\n import { PayloadInspector } from '@lostgradient/cinder/payload-inspector';\n\n const workflowInput = {\n workflowType: 'OrderFulfillment',\n input: {\n orderId: 'ord_9c4e1f',\n customerId: 'cust_221a',\n priority: 'express',\n items: ['sku-100', 'sku-201', 'sku-303'],\n shipTo: {\n name: 'Alex Rivera',\n address: '42 Elm St',\n city: 'Springfield',\n zip: '12345',\n },\n },\n retryPolicy: {\n maximumAttempts: 3,\n initialInterval: '1s',\n maximumInterval: '30s',\n backoffCoefficient: 2,\n },\n searchAttributes: {\n OrderStatus: 'pending',\n CustomerId: 'cust_221a',\n },\n };\n</script>\n\n<PayloadInspector\n value={workflowInput}\n meta={{\n contentType: 'application/json',\n source: 'order-service',\n timestamp: '2026-06-11T09:15:42Z',\n }}\n/>\n"
28
+ "code": "<script lang=\"ts\">\n import { PayloadInspector } from '@lostgradient/cinder/payload-inspector';\n\n const workflowInput = {\n workflowType: 'OrderFulfillment',\n input: {\n orderId: 'ord_9c4e1f',\n customerId: 'cust_221a',\n priority: 'express',\n items: ['sku-100', 'sku-201', 'sku-303'],\n shipTo: {\n name: 'Alex Rivera',\n address: '42 Elm St',\n city: 'Springfield',\n zip: '12345',\n },\n },\n retryPolicy: {\n maximumAttempts: 3,\n initialInterval: '1s',\n maximumInterval: '30s',\n backoffCoefficient: 2,\n },\n searchAttributes: {\n OrderStatus: 'pending',\n CustomerId: 'cust_221a',\n },\n };\n</script>\n\n<PayloadInspector value={workflowInput} label=\"Workflow input\" />\n"
29
29
  }
30
30
  ]
31
31
  }
@@ -7,38 +7,15 @@
7
7
  },
8
8
  "truncated": {
9
9
  "type": "boolean",
10
- "description": "When true, the payload has been truncated by the producer (e.g. because it\nexceeded a wire size limit). The inspector renders a truncation badge in the\nsummary and a notice above the raw view."
10
+ "description": "When true, the payload has been truncated by the producer (e.g. because it\nexceeded a wire size limit). The inspector renders a truncation badge in\nthe header."
11
11
  },
12
12
  "maxBytes": {
13
13
  "type": "number",
14
- "description": "Maximum byte size before the tree view is replaced with an oversize\nplaceholder. Defaults to 1,048,576 (1 MB). Does not affect the raw view."
15
- },
16
- "meta": {
17
- "type": "object",
18
- "properties": {
19
- "contentType": {
20
- "type": "string",
21
- "description": "Content type or serializer label, e.g. \"application/json\" or \"Protobuf\"."
22
- },
23
- "source": {
24
- "type": "string",
25
- "description": "Optional source label, e.g. a workflow name, activity name, or endpoint path."
26
- },
27
- "timestamp": {
28
- "type": "string",
29
- "description": "Optional ISO 8601 timestamp string rendered in the summary."
30
- }
31
- },
32
- "additionalProperties": false,
33
- "description": "Structured metadata shown in the summary panel. Pass contentType, source,\nand/or timestamp to populate the description list rows."
34
- },
35
- "activeView": {
36
- "enum": ["summary", "tree", "raw"],
37
- "description": "Initially active view tab. Defaults to \"summary\". Bind to control\nthe active tab from outside."
14
+ "description": "Maximum byte size before the tree view is replaced with an oversize\nplaceholder. Defaults to 1,048,576 (1 MB)."
38
15
  },
39
16
  "label": {
40
17
  "type": "string",
41
- "description": "Label for the inspector region, used as the accessible name for the\ncontaining section. Defaults to \"Payload inspector\"."
18
+ "description": "Visible header label for the inspector. Defaults to \"Payload inspector\"."
42
19
  },
43
20
  "class": {
44
21
  "type": "string",
@@ -48,11 +25,6 @@
48
25
  "additionalProperties": false,
49
26
  "metadata": {
50
27
  "unsupportedProps": [
51
- {
52
- "name": "format",
53
- "reason": "function-or-snippet",
54
- "description": "Custom serializer for the Raw view display text. Receives the parsed value\nand must return a string. Defaults to JSON.stringify with 2-space\nindentation. Use this to customize key ordering, indentation, or\nalternative serialization formats. Does not affect the Summary or Tree\nviews, or the copy buttons. For redaction, transform the value upstream and\npass the already-redacted value as `value`."
55
- },
56
28
  {
57
29
  "name": "parse",
58
30
  "reason": "function-or-snippet",
@@ -11,43 +11,16 @@ const schema = {
11
11
  truncated: {
12
12
  type: 'boolean',
13
13
  description:
14
- 'When true, the payload has been truncated by the producer (e.g. because it\nexceeded a wire size limit). The inspector renders a truncation badge in the\nsummary and a notice above the raw view.',
14
+ 'When true, the payload has been truncated by the producer (e.g. because it\nexceeded a wire size limit). The inspector renders a truncation badge in\nthe header.',
15
15
  },
16
16
  maxBytes: {
17
17
  type: 'number',
18
18
  description:
19
- 'Maximum byte size before the tree view is replaced with an oversize\nplaceholder. Defaults to 1,048,576 (1 MB). Does not affect the raw view.',
20
- },
21
- meta: {
22
- type: 'object',
23
- properties: {
24
- contentType: {
25
- type: 'string',
26
- description: 'Content type or serializer label, e.g. "application/json" or "Protobuf".',
27
- },
28
- source: {
29
- type: 'string',
30
- description:
31
- 'Optional source label, e.g. a workflow name, activity name, or endpoint path.',
32
- },
33
- timestamp: {
34
- type: 'string',
35
- description: 'Optional ISO 8601 timestamp string rendered in the summary.',
36
- },
37
- },
38
- additionalProperties: false,
39
- description:
40
- 'Structured metadata shown in the summary panel. Pass contentType, source,\nand/or timestamp to populate the description list rows.',
41
- },
42
- activeView: {
43
- enum: ['summary', 'tree', 'raw'],
44
- description:
45
- 'Initially active view tab. Defaults to "summary". Bind to control\nthe active tab from outside.',
19
+ 'Maximum byte size before the tree view is replaced with an oversize\nplaceholder. Defaults to 1,048,576 (1 MB).',
46
20
  },
47
21
  label: {
48
22
  type: 'string',
49
- description:
50
- 'Label for the inspector region, used as the accessible name for the\ncontaining section. Defaults to "Payload inspector".',
23
+ description: 'Visible header label for the inspector. Defaults to "Payload inspector".',
51
24
  },
52
25
  class: {
53
26
  type: 'string',
@@ -57,12 +30,6 @@ const schema = {
57
30
  additionalProperties: false,
58
31
  metadata: {
59
32
  unsupportedProps: [
60
- {
61
- name: 'format',
62
- reason: 'function-or-snippet',
63
- description:
64
- 'Custom serializer for the Raw view display text. Receives the parsed value\nand must return a string. Defaults to JSON.stringify with 2-space\nindentation. Use this to customize key ordering, indentation, or\nalternative serialization formats. Does not affect the Summary or Tree\nviews, or the copy buttons. For redaction, transform the value upstream and\npass the already-redacted value as `value`.',
65
- },
66
33
  {
67
34
  name: 'parse',
68
35
  reason: 'function-or-snippet',