@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
@@ -0,0 +1,3 @@
1
+ const variables: readonly string[] = [];
2
+
3
+ export default variables;
@@ -0,0 +1,19 @@
1
+ import './chat-composer-popover.css';
2
+ import ChatComposerPopover from './chat-composer-popover.svelte';
3
+
4
+ export default ChatComposerPopover;
5
+ export {
6
+ filterFuzzySubsequence,
7
+ fuzzySubsequenceScore,
8
+ type FuzzyFilterItem,
9
+ type FuzzyFilterResult,
10
+ } from './chat-composer-popover-filter.ts';
11
+ export type {
12
+ ChatComposerPopoverComposerProps,
13
+ ChatComposerPopoverItem,
14
+ ChatComposerPopoverItemSnippetContext,
15
+ ChatComposerPopoverProps,
16
+ ChatComposerPopoverSelection,
17
+ ChatComposerPopoverTriggerMatch,
18
+ } from './chat-composer-popover.types.ts';
19
+ export { ChatComposerPopover };
@@ -18,6 +18,10 @@
18
18
  "type": "boolean",
19
19
  "description": "When true, render a copy button in the header."
20
20
  },
21
+ "showLanguageLabel": {
22
+ "type": "boolean",
23
+ "description": "Whether to render the language label in the header. Default `true`.\nPass `false` to keep `language`-driven highlighting without the visible\nheader chip; with `copyable` also unset, no header renders at all."
24
+ },
21
25
  "class": {
22
26
  "type": "string",
23
27
  "description": "Additional class names merged with `.cinder-code-block`."
@@ -22,6 +22,11 @@ const schema = {
22
22
  type: 'boolean',
23
23
  description: 'When true, render a copy button in the header.',
24
24
  },
25
+ showLanguageLabel: {
26
+ type: 'boolean',
27
+ description:
28
+ 'Whether to render the language label in the header. Default `true`.\nPass `false` to keep `language`-driven highlighting without the visible\nheader chip; with `copyable` also unset, no header renders at all.',
29
+ },
25
30
  class: {
26
31
  type: 'string',
27
32
  description: 'Additional class names merged with `.cinder-code-block`.',
@@ -7,7 +7,7 @@ import { loadDefaultHighlighter } from './code-block-default-highlighter.ts';
7
7
  import { classNames } from '../../utilities/class-names.ts';
8
8
  import { devWarn } from '../../utilities/dev-warn.ts';
9
9
  import CopyButton from '../copy-button/copy-button.svelte';
10
- let { code, language, highlight, highlighter, copyable = false, class: className, } = $props();
10
+ let { code, language, highlight, highlighter, copyable = false, showLanguageLabel = true, class: className, } = $props();
11
11
  let highlighted = $state(null);
12
12
  // Two-phase render contract: the server (and the first client paint) emits
13
13
  // the plain `<pre><code>` fallback because `$effect` never runs during SSR.
@@ -70,9 +70,9 @@ $effect(() => {
70
70
  </script>
71
71
 
72
72
  <div class={classNames('cinder-code-block', className)}>
73
- {#if language || copyable}
73
+ {#if (language && showLanguageLabel) || copyable}
74
74
  <header class="cinder-code-block__header">
75
- {#if language}
75
+ {#if language && showLanguageLabel}
76
76
  <span class="cinder-code-block__language">{language}</span>
77
77
  {/if}
78
78
  {#if copyable}
@@ -49,6 +49,12 @@ export type CodeBlockProps = {
49
49
  highlighter?: Highlighter;
50
50
  /** When true, render a copy button in the header. */
51
51
  copyable?: boolean;
52
+ /**
53
+ * Whether to render the language label in the header. Default `true`.
54
+ * Pass `false` to keep `language`-driven highlighting without the visible
55
+ * header chip; with `copyable` also unset, no header renders at all.
56
+ */
57
+ showLanguageLabel?: boolean;
52
58
  /** Additional class names merged with `.cinder-code-block`. */
53
59
  class?: string;
54
60
  };
@@ -15,8 +15,9 @@ const commandList = getCommandListContext();
15
15
  // CommandMenu items can opt into parent-owned activation. Read untracked
16
16
  // because this is a one-time discard, not a reactive dependency.
17
17
  void untrack(() => selectionMode);
18
- // Stable id assigned by the palette on registration.
19
- let itemId = $state(null);
18
+ // Live id assigned by the parent command list on registration.
19
+ let registrationHandle = $state(null);
20
+ const itemId = $derived(registrationHandle?.id ?? null);
20
21
  // Register with the palette at attach time, unregister on detach. Using an
21
22
  // attachment (rather than onMount) means the DOM node is available at
22
23
  // registration, so the palette can sort items by document order for
@@ -26,15 +27,15 @@ const registerWithPalette = (node) => {
26
27
  // call mutates the palette's $state registrations list, which feeds derived
27
28
  // values the attachment indirectly depends on — producing an update cycle.
28
29
  return untrack(() => {
29
- const { id, unregister } = commandList.register({
30
+ const registeredItem = commandList.register({
30
31
  getValue: () => value,
31
32
  getOnselect: () => onselect,
32
33
  getDisabled: () => disabled,
33
34
  }, node);
34
- itemId = id;
35
+ registrationHandle = registeredItem;
35
36
  return () => {
36
- unregister();
37
- itemId = null;
37
+ registeredItem.unregister();
38
+ registrationHandle = null;
38
39
  };
39
40
  });
40
41
  };
@@ -2,6 +2,10 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "type": "object",
4
4
  "properties": {
5
+ "listboxId": {
6
+ "type": "string",
7
+ "description": "Stable listbox id. Defaults to a generated component id."
8
+ },
5
9
  "open": {
6
10
  "type": "boolean",
7
11
  "description": "Open state. Bindable. Default `false`."
@@ -4,6 +4,10 @@ const schema = {
4
4
  $schema: 'https://json-schema.org/draft/2020-12/schema',
5
5
  type: 'object',
6
6
  properties: {
7
+ listboxId: {
8
+ type: 'string',
9
+ description: 'Stable listbox id. Defaults to a generated component id.',
10
+ },
7
11
  open: {
8
12
  type: 'boolean',
9
13
  description: 'Open state. Bindable. Default `false`.',
@@ -10,8 +10,8 @@ import { classNames } from '../../utilities/class-names.ts';
10
10
  import { setCommandListContext } from '../_internal/command-list-context.ts';
11
11
  import { createCommandListState } from '../_internal/create-command-list-state.svelte.ts';
12
12
  import { createPortalAttachment } from '../portal/index.ts';
13
- const listboxId = $props.id();
14
- let { open = $bindable(false), anchor, caretIndex, query = $bindable(''), items, empty, placement = 'bottom-start', offset = 6, label = 'Commands', onselect, ondismiss, onstatechange, class: className, } = $props();
13
+ const fallbackListboxId = $props.id();
14
+ let { listboxId = fallbackListboxId, open = $bindable(false), anchor, caretIndex, query = $bindable(''), items, empty, placement = 'bottom-start', offset = 6, label = 'Commands', onselect, ondismiss, onstatechange, class: className, } = $props();
15
15
  const portalAttachment = createPortalAttachment({
16
16
  target: () => document.body,
17
17
  inheritAttributes: true,
@@ -19,7 +19,7 @@ const portalAttachment = createPortalAttachment({
19
19
  });
20
20
  let mounted = $state(false);
21
21
  let listElement = $state();
22
- const commandList = createCommandListState(listboxId);
22
+ const commandList = createCommandListState(() => listboxId);
23
23
  const showEmpty = $derived(mounted && open && commandList.registrationsReady && commandList.registrations.length === 0);
24
24
  const caretAnchor = $derived.by(() => {
25
25
  const anchorElement = anchor;
@@ -43,6 +43,9 @@ const anchoredOverlay = createAnchoredOverlay({
43
43
  $effect(() => {
44
44
  mounted = true;
45
45
  });
46
+ $effect(() => {
47
+ commandList.syncListboxId(listboxId);
48
+ });
46
49
  $effect(() => {
47
50
  if (!open) {
48
51
  commandList.resetActiveItem();
@@ -54,7 +57,10 @@ $effect(() => {
54
57
  commandList.refreshRegistrationsReady();
55
58
  });
56
59
  $effect(() => {
57
- onstatechange?.({ listboxId, activeItemId: open ? commandList.activeItemId : null });
60
+ onstatechange?.({
61
+ listboxId: commandList.listboxId,
62
+ activeItemId: open ? commandList.activeItemId : null,
63
+ });
58
64
  });
59
65
  $effect(() => {
60
66
  commandList.scrollActiveItemIntoView();
@@ -117,7 +123,12 @@ $effect(() => {
117
123
  data-cinder-position-ready={anchoredOverlay.positionReady}
118
124
  style={anchoredOverlay.positionStyle}
119
125
  >
120
- <ul id={listboxId} role="listbox" aria-label={label} class="cinder-command-menu__listbox">
126
+ <ul
127
+ id={commandList.listboxId}
128
+ role="listbox"
129
+ aria-label={label}
130
+ class="cinder-command-menu__listbox"
131
+ >
121
132
  {@render items({ query })}
122
133
  </ul>
123
134
  {#if showEmpty && empty}
@@ -20,6 +20,8 @@ export type CommandMenuState = {
20
20
  };
21
21
 
22
22
  export type CommandMenuProps = {
23
+ /** Stable listbox id. Defaults to a generated component id. */
24
+ listboxId?: string;
23
25
  /** Open state. Bindable. Default `false`. */
24
26
  open?: boolean;
25
27
  /** Text field used as the caret-position anchor. */
@@ -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',