@lostgradient/cinder 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +7 -2
  3. package/components.json +59 -15
  4. package/dist/components/_internal/command-list-context.d.ts +3 -3
  5. package/dist/components/_internal/create-command-list-state.svelte.d.ts +11 -11
  6. package/dist/components/access-gate/index.js +201 -126
  7. package/dist/components/approval-card/approval-card-actions.svelte.d.ts +16 -0
  8. package/dist/components/approval-card/approval-card-state.d.ts +65 -0
  9. package/dist/components/approval-card/approval-card.css +269 -92
  10. package/dist/components/approval-card/approval-card.schema.js +10 -31
  11. package/dist/components/approval-card/approval-card.svelte.d.ts +3 -3
  12. package/dist/components/approval-card/approval-card.types.d.ts +14 -28
  13. package/dist/components/approval-card/index.d.ts +1 -1
  14. package/dist/components/approval-card/index.js +4268 -2884
  15. package/dist/components/card/card.css +5 -0
  16. package/dist/components/card/card.schema.js +2 -2
  17. package/dist/components/card/card.types.d.ts +2 -2
  18. package/dist/components/card/index.js +2 -1
  19. package/dist/components/chat/chat.schema.js +48 -1
  20. package/dist/components/chat/chat.svelte.d.ts +6 -2
  21. package/dist/components/chat/chat.types.d.ts +37 -0
  22. package/dist/components/chat/container/chat.svelte.d.ts +6 -2
  23. package/dist/components/chat/index.d.ts +3 -3
  24. package/dist/components/chat/index.js +1099 -4865
  25. package/dist/components/chat/input/chat-attachment-serialization.d.ts +9 -0
  26. package/dist/components/chat/input/chat-input.svelte.d.ts +24 -0
  27. package/dist/components/chat/input/index.d.ts +1 -0
  28. package/dist/components/chat-composer-popover/chat-composer-popover-filter.d.ts +11 -0
  29. package/dist/components/chat-composer-popover/chat-composer-popover.css +7 -0
  30. package/dist/components/chat-composer-popover/chat-composer-popover.css.d.ts +1 -0
  31. package/dist/components/chat-composer-popover/chat-composer-popover.schema.d.ts +3 -0
  32. package/dist/components/chat-composer-popover/chat-composer-popover.schema.js +150 -0
  33. package/dist/components/chat-composer-popover/chat-composer-popover.svelte.d.ts +46 -0
  34. package/dist/components/chat-composer-popover/chat-composer-popover.types.d.ts +77 -0
  35. package/dist/components/chat-composer-popover/chat-composer-popover.variables.d.ts +2 -0
  36. package/dist/components/chat-composer-popover/chat-composer-popover.variables.js +61 -0
  37. package/dist/components/chat-composer-popover/index.d.ts +6 -0
  38. package/dist/components/chat-composer-popover/index.js +3285 -0
  39. package/dist/components/chat-conversation-header/index.js +1627 -5600
  40. package/dist/components/chat-conversation-list/index.js +15 -3988
  41. package/dist/components/code-block/code-block.schema.js +5 -1
  42. package/dist/components/code-block/code-block.types.d.ts +6 -0
  43. package/dist/components/code-block/index.js +4 -4
  44. package/dist/components/command-item/index.js +7 -6
  45. package/dist/components/command-menu/command-menu.schema.js +5 -1
  46. package/dist/components/command-menu/command-menu.types.d.ts +2 -0
  47. package/dist/components/command-menu/index.js +48 -19
  48. package/dist/components/command-palette/index.js +40 -14
  49. package/dist/components/event-stream-viewer/index.js +44 -44
  50. package/dist/components/experimental/json-viewer/index.js +44 -44
  51. package/dist/components/json-schema-editor/index.js +5 -2
  52. package/dist/components/json-viewer/index.js +44 -44
  53. package/dist/components/json-viewer/json-viewer.css +10 -6
  54. package/dist/components/navigation-bar/index.js +44 -6
  55. package/dist/components/payload-inspector/index.d.ts +1 -1
  56. package/dist/components/payload-inspector/index.js +306 -1422
  57. package/dist/components/payload-inspector/payload-inspector.css +15 -75
  58. package/dist/components/payload-inspector/payload-inspector.schema.js +5 -41
  59. package/dist/components/payload-inspector/payload-inspector.svelte.d.ts +5 -5
  60. package/dist/components/payload-inspector/payload-inspector.types.d.ts +10 -56
  61. package/dist/components/sidebar/index.js +6 -3
  62. package/dist/components/sidebar/sidebar.css +4 -0
  63. package/dist/components/tab/index.js +5 -2
  64. package/dist/components/tab/tab.schema.js +7 -3
  65. package/dist/components/tab/tab.svelte.d.ts +2 -1
  66. package/dist/components/tab/tab.types.d.ts +8 -2
  67. package/dist/components/tabs/index.js +5 -2
  68. package/dist/components/team-section/index.js +2 -1
  69. package/dist/components/testimonial-section/index.js +2 -1
  70. package/dist/index.d.ts +4 -2
  71. package/dist/index.js +24169 -27821
  72. package/dist/server/components/access-gate/index.js +2 -1
  73. package/dist/server/components/accordion/index.js +2 -2
  74. package/dist/server/components/alert-dialog/index.js +2 -2
  75. package/dist/server/components/approval-card/index.js +15 -19
  76. package/dist/server/components/autocomplete/index.js +7 -7
  77. package/dist/server/components/avatar-group/index.js +5 -5
  78. package/dist/server/components/button-group/index.js +3 -5
  79. package/dist/server/components/card/index.js +2 -2
  80. package/dist/server/components/chat/index.js +14 -11
  81. package/dist/server/components/chat-composer-popover/index.js +26 -0
  82. package/dist/server/components/chat-conversation-header/index.js +9 -10
  83. package/dist/server/components/chat-conversation-list/index.js +4 -5
  84. package/dist/server/components/checkbox/index.js +3 -3
  85. package/dist/server/components/choice-grid/index.js +2 -2
  86. package/dist/server/components/code-block/index.js +2 -2
  87. package/dist/server/components/color-field/index.js +3 -3
  88. package/dist/server/components/combobox/index.js +6 -6
  89. package/dist/server/components/command-item/index.js +5 -3
  90. package/dist/server/components/command-menu/index.js +6 -4
  91. package/dist/server/components/command-palette/index.js +2 -2
  92. package/dist/server/components/confirm-dialog/index.js +2 -2
  93. package/dist/server/components/context-menu/index.js +5 -5
  94. package/dist/server/components/data-table/index.js +5 -5
  95. package/dist/server/components/date-picker/index.js +6 -6
  96. package/dist/server/components/date-range-field/index.js +7 -7
  97. package/dist/server/components/description-list/index.js +3 -5
  98. package/dist/server/components/diff-viewer/index.js +7 -7
  99. package/dist/server/components/drawer/index.js +3 -3
  100. package/dist/server/components/dropdown/index.js +4 -4
  101. package/dist/server/components/event-stream-viewer/index.js +2 -2
  102. package/dist/server/components/experimental/json-viewer/index.js +2 -2
  103. package/dist/server/components/faceted-filter-bar/index.js +1 -1
  104. package/dist/server/components/hover-card/index.js +1 -1
  105. package/dist/server/components/input/index.js +3 -3
  106. package/dist/server/components/json-schema-editor/index.js +22 -22
  107. package/dist/server/components/json-viewer/index.js +2 -2
  108. package/dist/server/components/markdown-editor/index.js +13 -13
  109. package/dist/server/components/modal/index.js +1 -1
  110. package/dist/server/components/multi-select/index.js +1 -1
  111. package/dist/server/components/navigation-bar/index.js +1 -1
  112. package/dist/server/components/newsletter-section/index.js +3 -3
  113. package/dist/server/components/payload-inspector/index.js +4 -16
  114. package/dist/server/components/popover/index.js +5 -5
  115. package/dist/server/components/review-editor/index.js +25 -25
  116. package/dist/server/components/run-step-timeline/index.js +2 -2
  117. package/dist/server/components/schema-form/index.js +4 -4
  118. package/dist/server/components/secret-value-field/index.js +3 -5
  119. package/dist/server/components/segment/index.js +3 -3
  120. package/dist/server/components/segmented-control/index.js +4 -4
  121. package/dist/server/components/selection-popover/index.js +4 -4
  122. package/dist/server/components/sheet/index.js +2 -2
  123. package/dist/server/components/sidebar/index.js +3 -3
  124. package/dist/server/components/tab/index.js +2 -2
  125. package/dist/server/components/table/index.js +3 -3
  126. package/dist/server/components/tabs/index.js +4 -4
  127. package/dist/server/components/tag-input/index.js +3 -3
  128. package/dist/server/components/team-section/index.js +8 -8
  129. package/dist/server/components/testimonial-section/index.js +2 -2
  130. package/dist/server/components/toggle/index.js +2 -2
  131. package/dist/server/components/tooltip/index.js +1 -1
  132. package/dist/server/index.js +160 -149
  133. package/dist/server/{index.server-cbtg8rq5.js → index.server-0atyznp7.js} +5 -5
  134. package/dist/server/{index.server-20y4mdhm.js → index.server-0chhpkg7.js} +40 -14
  135. package/dist/server/{index.server-ecm1vs3g.js → index.server-1nq7z1qw.js} +1 -1
  136. package/dist/server/{index.server-jync915v.js → index.server-2dga5yzr.js} +25 -25
  137. package/dist/server/index.server-2hqrv7ca.js +9 -0
  138. package/dist/server/{index.server-qwknp759.js → index.server-2qj6s2mh.js} +7 -4
  139. package/dist/server/{index.server-pt8b65mt.js → index.server-38aywdk1.js} +1 -1
  140. package/dist/server/{index.server-rermas0k.js → index.server-47v2fhp4.js} +4 -4
  141. package/dist/server/{index.server-9j5sym59.js → index.server-4x91gzy1.js} +2 -2
  142. package/dist/server/{index.server-q48q15g7.js → index.server-4y2jtvv1.js} +4 -2
  143. package/dist/server/{index.server-zeqv7nrz.js → index.server-5tf22d6e.js} +43 -6
  144. package/dist/server/index.server-67qgdypc.js +9 -0
  145. package/dist/server/{index.server-9jete4xx.js → index.server-6sh11ap6.js} +4 -4
  146. package/dist/server/{index.server-4ztq565m.js → index.server-85p4ydph.js} +1 -1
  147. package/dist/server/{index.server-4nk7gy0q.js → index.server-894t97kv.js} +1 -1
  148. package/dist/server/{index.server-1vscnped.js → index.server-8dt36sdm.js} +2 -1
  149. package/dist/server/{index.server-bfsbp9dz.js → index.server-8xvc73zh.js} +4 -4
  150. package/dist/server/{index.server-cvnw3hw9.js → index.server-9kz37z89.js} +1 -1
  151. package/dist/server/{index.server-kc1k02tk.js → index.server-9ykk1kbg.js} +1 -1
  152. package/dist/server/{index.server-g789yep6.js → index.server-aqethy0w.js} +2 -2
  153. package/dist/server/{index.server-wc9aggfz.js → index.server-bmxbsk4y.js} +7 -7
  154. package/dist/server/{index.server-j3ddzcaa.js → index.server-c6pe4kaf.js} +6 -6
  155. package/dist/server/{index.server-q89dz8h1.js → index.server-d3pqthtp.js} +4 -3
  156. package/dist/server/{index.server-qfa2rxzx.js → index.server-dg83ke3k.js} +3 -5
  157. package/dist/server/{index.server-jk4rx4aa.js → index.server-dmmvwy6p.js} +1 -1
  158. package/dist/server/{index.server-hcfnae5y.js → index.server-dwwqssey.js} +4 -4
  159. package/dist/server/{index.server-e8x1hgw6.js → index.server-dz1r9xw5.js} +4 -4
  160. package/dist/server/{index.server-wm7mk5kw.js → index.server-ez5hp0ya.js} +1 -1
  161. package/dist/server/{index.server-ejyf7e48.js → index.server-fy068yne.js} +1 -1
  162. package/dist/server/{index.server-wc8dbm5e.js → index.server-g95bk8rc.js} +4 -2
  163. package/dist/server/index.server-gkazv439.js +576 -0
  164. package/dist/server/{index.server-dp9j2kkr.js → index.server-h0cvwvhy.js} +1 -1
  165. package/dist/server/{index.server-pacrqvyz.js → index.server-h90pjrez.js} +1 -1
  166. package/dist/server/{index.server-p8d04em5.js → index.server-hcsd5gdb.js} +6 -2
  167. package/dist/server/{index.server-n39drzes.js → index.server-hpeavvnq.js} +1 -1
  168. package/dist/server/{index.server-1p3patnj.js → index.server-hx91ng7z.js} +1 -1
  169. package/dist/server/{index.server-jtj3r53y.js → index.server-jgb8yh5k.js} +1 -1
  170. package/dist/server/{index.server-w1g5q9j9.js → index.server-jtgw9d23.js} +4 -2
  171. package/dist/server/{index.server-mehav5vs.js → index.server-jxg42jpz.js} +4 -4
  172. package/dist/server/{index.server-hd8gpehd.js → index.server-jxseyx33.js} +1 -1
  173. package/dist/server/{index.server-kg2sepsr.js → index.server-krqvnt6p.js} +14 -15
  174. package/dist/server/{index.server-0e1m3agz.js → index.server-ks49bprh.js} +1 -1
  175. package/dist/server/{index.server-f0hma3jp.js → index.server-kt0ncrqs.js} +1 -1
  176. package/dist/server/index.server-m0ezemav.js +170 -0
  177. package/dist/server/index.server-m191rm44.js +79 -0
  178. package/dist/server/{index.server-f23vtaw4.js → index.server-marjz8ps.js} +6 -6
  179. package/dist/server/index.server-mqt1ngqw.js +250 -0
  180. package/dist/server/{index.server-s9khh4ry.js → index.server-mzzb7dnm.js} +3 -5
  181. package/dist/server/{index.server-z721a5gp.js → index.server-n82rcv0m.js} +4 -4
  182. package/dist/server/{index.server-rhhmdxtz.js → index.server-np3c7kx0.js} +4 -4
  183. package/dist/server/{index.server-hpcs7tmh.js → index.server-p56xxef1.js} +1 -1
  184. package/dist/server/{index.server-w83kmcrx.js → index.server-pag862vz.js} +10 -10
  185. package/dist/server/{index.server-gxf0d1p5.js → index.server-q7w4jw89.js} +2 -2
  186. package/dist/server/{index.server-bvmwnjx6.js → index.server-qh9qzd5t.js} +186 -23
  187. package/dist/server/{index.server-pxg74pyp.js → index.server-qk1h0n02.js} +4 -4
  188. package/dist/server/{index.server-sh2rxejg.js → index.server-qke3ekjt.js} +1 -1
  189. package/dist/server/{index.server-73x2d3j3.js → index.server-rbpvcrr3.js} +1 -1
  190. package/dist/server/{index.server-8cxs4kya.js → index.server-rga8sc7j.js} +41 -44
  191. package/dist/server/{index.server-e3fnv1g6.js → index.server-sedjxt36.js} +5 -5
  192. package/dist/server/{index.server-pen9pxt6.js → index.server-sf3nk3j2.js} +2 -2
  193. package/dist/server/{index.server-7fp0epev.js → index.server-veastatv.js} +4 -4
  194. package/dist/server/{index.server-jeqg2d22.js → index.server-xeqtpv61.js} +1 -1
  195. package/dist/server/{index.server-9s4na701.js → index.server-xjnge1yw.js} +4 -4
  196. package/dist/server/index.server-xtjjmsyq.js +315 -0
  197. package/dist/server/{index.server-hhxjaeen.js → index.server-xz99aed4.js} +4 -4
  198. package/dist/server/{index.server-vne4rzfa.js → index.server-y4n8vc08.js} +1 -1
  199. package/dist/server/{index.server-5d01cn4f.js → index.server-y83kqayt.js} +4 -4
  200. package/dist/server/{index.server-1nh09ck7.js → index.server-yhzydqxe.js} +5 -5
  201. package/dist/server/{index.server-atjc1qcq.js → index.server-yz4k36cw.js} +1 -1
  202. package/dist/server/{index.server-w6k62afr.js → index.server-ze1ymmbw.js} +2 -2
  203. package/dist/server/{index.server-914v805w.js → index.server-zgd1g8mk.js} +1 -1
  204. package/dist/server/{index.server-aeexcxdp.js → index.server-zh3r8vfd.js} +1 -1
  205. package/dist/server/{index.server-10jb2jzm.js → index.server-zsjf8enc.js} +4 -4
  206. package/package.json +42 -6
  207. package/src/components/_internal/command-list-context.ts +3 -3
  208. package/src/components/_internal/create-command-list-state.svelte.ts +39 -13
  209. package/src/components/approval-card/approval-card-actions.svelte +168 -0
  210. package/src/components/approval-card/approval-card-state.ts +152 -1
  211. package/src/components/approval-card/approval-card.css +269 -92
  212. package/src/components/approval-card/approval-card.examples.json +3 -3
  213. package/src/components/approval-card/approval-card.schema.json +9 -30
  214. package/src/components/approval-card/approval-card.schema.ts +13 -31
  215. package/src/components/approval-card/approval-card.svelte +176 -470
  216. package/src/components/approval-card/approval-card.types.ts +15 -28
  217. package/src/components/approval-card/index.ts +1 -0
  218. package/src/components/card/card.css +5 -0
  219. package/src/components/card/card.schema.json +1 -1
  220. package/src/components/card/card.schema.ts +1 -1
  221. package/src/components/card/card.svelte +1 -0
  222. package/src/components/card/card.types.ts +2 -2
  223. package/src/components/chat/chat.schema.json +40 -0
  224. package/src/components/chat/chat.schema.ts +49 -0
  225. package/src/components/chat/chat.svelte +20 -0
  226. package/src/components/chat/chat.types.ts +38 -0
  227. package/src/components/chat/container/chat.svelte +82 -3
  228. package/src/components/chat/index.ts +15 -3
  229. package/src/components/chat/input/chat-attachment-serialization.ts +63 -0
  230. package/src/components/chat/input/chat-input.svelte +30 -3
  231. package/src/components/chat/input/index.ts +5 -0
  232. package/src/components/chat-composer-popover/chat-composer-popover-filter.ts +68 -0
  233. package/src/components/chat-composer-popover/chat-composer-popover.css +7 -0
  234. package/src/components/chat-composer-popover/chat-composer-popover.examples.json +13 -0
  235. package/src/components/chat-composer-popover/chat-composer-popover.schema.json +90 -0
  236. package/src/components/chat-composer-popover/chat-composer-popover.schema.ts +95 -0
  237. package/src/components/chat-composer-popover/chat-composer-popover.svelte +234 -0
  238. package/src/components/chat-composer-popover/chat-composer-popover.types.ts +88 -0
  239. package/src/components/chat-composer-popover/chat-composer-popover.variables.json +1 -0
  240. package/src/components/chat-composer-popover/chat-composer-popover.variables.ts +3 -0
  241. package/src/components/chat-composer-popover/index.ts +19 -0
  242. package/src/components/code-block/code-block.schema.json +4 -0
  243. package/src/components/code-block/code-block.schema.ts +5 -0
  244. package/src/components/code-block/code-block.svelte +3 -3
  245. package/src/components/code-block/code-block.types.ts +6 -0
  246. package/src/components/command-item/command-item.svelte +7 -6
  247. package/src/components/command-menu/command-menu.schema.json +4 -0
  248. package/src/components/command-menu/command-menu.schema.ts +4 -0
  249. package/src/components/command-menu/command-menu.svelte +16 -5
  250. package/src/components/command-menu/command-menu.types.ts +2 -0
  251. package/src/components/json-viewer/_json-viewer-node.svelte +15 -1
  252. package/src/components/json-viewer/json-viewer.css +10 -6
  253. package/src/components/navigation-bar/navigation-bar.svelte +49 -7
  254. package/src/components/payload-inspector/index.ts +0 -2
  255. package/src/components/payload-inspector/payload-inspector.css +15 -75
  256. package/src/components/payload-inspector/payload-inspector.examples.json +5 -5
  257. package/src/components/payload-inspector/payload-inspector.schema.json +3 -31
  258. package/src/components/payload-inspector/payload-inspector.schema.ts +3 -36
  259. package/src/components/payload-inspector/payload-inspector.svelte +46 -239
  260. package/src/components/payload-inspector/payload-inspector.types.ts +10 -58
  261. package/src/components/sidebar/sidebar.css +4 -0
  262. package/src/components/sidebar/sidebar.svelte +6 -3
  263. package/src/components/tab/tab.schema.json +6 -2
  264. package/src/components/tab/tab.schema.ts +8 -2
  265. package/src/components/tab/tab.svelte +9 -5
  266. package/src/components/tab/tab.types.ts +8 -2
  267. package/src/index.ts +18 -5
  268. package/src/styles/components.css +1 -0
  269. package/dist/server/index-49we2xfs.js +0 -344
  270. package/dist/server/index-8fhvxk30.js +0 -265
  271. package/dist/server/index-x2ysg8ds.js +0 -388
  272. package/dist/server/index.server-20j0jh30.js +0 -9
  273. package/dist/server/index.server-dc35kh7d.js +0 -1835
  274. package/dist/server/index.server-kd4b0342.js +0 -607
  275. package/dist/server/index.server-n5cdmsz4.js +0 -30
  276. package/dist/server/index.server-rjap4k7y.js +0 -1389
  277. package/dist/server/index.server-vt6sn9y4.js +0 -447
  278. package/dist/server/index.server-w63n618v.js +0 -9
  279. package/dist/server/index.server-y2pa1k46.js +0 -9
@@ -7,12 +7,12 @@ import { untrack } from 'svelte';
7
7
  import { rovingTabIndex } from '../../_internal/collection.ts';
8
8
  import { getTabsContext } from '../tabs/tabs-context.ts';
9
9
  import { classNames } from '../../utilities/class-names.ts';
10
- let { value, id, disabled = false, class: className, children, trailing } = $props();
10
+ let { value, id, controls, disabled = false, class: className, children, trailing, } = $props();
11
11
  const tabs = getTabsContext();
12
12
  // Derive both ids from the root's baseId and the tab's value so that two
13
- // Tabs instances sharing the same value produce distinct DOM ids. The panel
14
- // id is always computed from baseId and value; it does not track a custom
15
- // `id` prop on this Tab.
13
+ // Tabs instances sharing the same value produce distinct DOM ids. The default
14
+ // panel id does not track a custom `id` prop on this Tab. `controls` can
15
+ // intentionally override the controlled panel id for caller-owned panels.
16
16
  //
17
17
  // ⚠️ Custom-id wiring: if you supply a custom `id` prop to override this
18
18
  // Tab's element id, the paired TabPanel's default `aria-labelledby` still
@@ -21,7 +21,11 @@ const tabs = getTabsContext();
21
21
  // to the paired TabPanel's `ariaLabelledby` prop. Removing the custom `id`
22
22
  // override restores fully automatic wiring.
23
23
  const tabId = $derived(id ?? `${tabs.baseId}-tab-${value}`);
24
- const panelId = $derived(`${tabs.baseId}-panel-${value}`);
24
+ const panelId = $derived.by(() => {
25
+ // Caller-owned panels can provide a non-empty aria-controls override.
26
+ const controlsId = controls?.trim();
27
+ return controlsId ? controlsId : `${tabs.baseId}-panel-${value}`;
28
+ });
25
29
  const isActive = $derived(tabs.isActive(value));
26
30
  const isFocusable = $derived(tabs.isFocusable(value));
27
31
  let buttonElement = $state();
@@ -1,10 +1,16 @@
1
1
  import type { Snippet } from 'svelte';
2
2
  export type TabProps = {
3
- /** Identifier matches the value of the corresponding TabPanel. */
3
+ /** Stable identifier used for tab selection; matches TabPanel in the default pattern. */
4
4
  value: string;
5
5
  /** Optional explicit id override; auto-generated otherwise for ARIA wiring. */
6
6
  id?: string;
7
- /** Disables this single tab. The panel content is hidden but its DOM stays. */
7
+ /**
8
+ * Optional non-empty `aria-controls` target for caller-owned panels. Empty or
9
+ * whitespace-only strings are treated as omitted. By default, Cinder points
10
+ * at the matching TabPanel id (`${baseId}-panel-${value}`).
11
+ */
12
+ controls?: string;
13
+ /** Disables this single tab and removes it from keyboard activation. */
8
14
  disabled?: boolean;
9
15
  /** Additional class names merged with `.cinder-tab`. */
10
16
  class?: string;
package/src/index.ts CHANGED
@@ -24,6 +24,7 @@ export type { AlertDialogProps } from './components/alert-dialog/index.ts';
24
24
  export { default as ApprovalCard } from './components/approval-card/index.ts';
25
25
  export type {
26
26
  ApprovalCardCallbacks,
27
+ ApprovalCardHeadingLevel,
27
28
  ApprovalCardProps,
28
29
  ApprovalCardSchemaProps,
29
30
  ApprovalOperation,
@@ -155,6 +156,22 @@ export type {
155
156
  export { default as Chat } from './components/chat/index.ts';
156
157
  export type { ChatProps } from './components/chat/index.ts';
157
158
 
159
+ export {
160
+ default as ChatComposerPopover,
161
+ filterFuzzySubsequence,
162
+ fuzzySubsequenceScore,
163
+ } from './components/chat-composer-popover/index.ts';
164
+ export type {
165
+ ChatComposerPopoverComposerProps,
166
+ ChatComposerPopoverItem,
167
+ ChatComposerPopoverItemSnippetContext,
168
+ ChatComposerPopoverProps,
169
+ ChatComposerPopoverSelection,
170
+ ChatComposerPopoverTriggerMatch,
171
+ FuzzyFilterItem,
172
+ FuzzyFilterResult,
173
+ } from './components/chat-composer-popover/index.ts';
174
+
158
175
  export { default as ChatConversationHeader } from './components/chat-conversation-header/index.ts';
159
176
  export type {
160
177
  ChatConversationHeaderHeadingLevel,
@@ -629,11 +646,7 @@ export { default as PageHeader } from './components/page-header/index.ts';
629
646
  export type { PageHeaderProps } from './components/page-header/index.ts';
630
647
 
631
648
  export { default as PayloadInspector } from './components/payload-inspector/index.ts';
632
- export type {
633
- PayloadInspectorMeta,
634
- PayloadInspectorProps,
635
- PayloadInspectorView,
636
- } from './components/payload-inspector/index.ts';
649
+ export type { PayloadInspectorProps } from './components/payload-inspector/index.ts';
637
650
 
638
651
  export { default as PermissionMatrix } from './components/permission-matrix/index.ts';
639
652
  export type {
@@ -38,6 +38,7 @@
38
38
  @import '../components/capability-gate/capability-gate.css';
39
39
  @import '../components/chat-conversation-header/chat-conversation-header.css';
40
40
  @import '../components/chat-conversation-list/chat-conversation-list.css';
41
+ @import '../components/chat-composer-popover/chat-composer-popover.css';
41
42
  @import '../components/chat/chat.css';
42
43
  @import '../components/chip/chip.css';
43
44
  @import '../components/choice-grid/choice-grid.css';
@@ -1,344 +0,0 @@
1
- import {
2
- isCanonicalToolResultPayload,
3
- toJSONValue
4
- } from "./index.server-n5cdmsz4.js";
5
- import {
6
- appendMessages,
7
- assertConversationSafe,
8
- createConversationHistory,
9
- getOrderedMessages,
10
- isStreamingMessage
11
- } from "./index.server-rjap4k7y.js";
12
- import"./index.server-0v6na3yp.js";
13
-
14
- // ../../node_modules/conversationalist/dist/adapters/gemini/index.js
15
- var DEFAULT_FILE_MIME_TYPE = "application/octet-stream";
16
- var MIME_TYPE_BY_EXTENSION = {
17
- bmp: "image/bmp",
18
- gif: "image/gif",
19
- heic: "image/heic",
20
- heif: "image/heif",
21
- jpeg: "image/jpeg",
22
- jpg: "image/jpeg",
23
- png: "image/png",
24
- svg: "image/svg+xml",
25
- webp: "image/webp"
26
- };
27
- function inferMimeType(url) {
28
- const trimmed = url.split("#")[0]?.split("?")[0] ?? "";
29
- const dotIndex = trimmed.lastIndexOf(".");
30
- if (dotIndex === -1)
31
- return;
32
- return MIME_TYPE_BY_EXTENSION[trimmed.slice(dotIndex + 1).toLowerCase()];
33
- }
34
- function resolveMimeType(url, explicit) {
35
- return explicit ?? inferMimeType(url) ?? DEFAULT_FILE_MIME_TYPE;
36
- }
37
- function normalizeGeminiResponse(toolResult) {
38
- if (toolResult.outcome === "success") {
39
- if (toolResult.content !== null && typeof toolResult.content === "object")
40
- return toolResult.content;
41
- return { result: toolResult.content };
42
- }
43
- return {
44
- outcome: toolResult.outcome,
45
- content: toolResult.content,
46
- ...toolResult.error ? { error: toolResult.error } : {},
47
- ...toolResult.action ? { action: toolResult.action } : {}
48
- };
49
- }
50
- function toGeminiParts(content) {
51
- if (typeof content === "string")
52
- return content ? [{ text: content }] : [];
53
- const parts = [];
54
- for (const part of content)
55
- if (part.type === "text") {
56
- if (part.text)
57
- parts.push({ text: part.text });
58
- } else if (part.type === "image") {
59
- const url = part.url ?? "";
60
- if (url.startsWith("data:")) {
61
- const matches = url.match(/^data:([^;]+);base64,(.+)$/);
62
- if (matches)
63
- parts.push({ inlineData: {
64
- mimeType: matches[1],
65
- data: matches[2]
66
- } });
67
- } else {
68
- const fileData = {
69
- fileUri: url,
70
- mimeType: resolveMimeType(url, part.mimeType)
71
- };
72
- parts.push({ fileData });
73
- }
74
- }
75
- return parts;
76
- }
77
- function toFunctionCallPart(toolCall) {
78
- let args;
79
- if (typeof toolCall.arguments === "string")
80
- try {
81
- const parsed = JSON.parse(toolCall.arguments);
82
- if (parsed && typeof parsed === "object" && !Array.isArray(parsed))
83
- args = parsed;
84
- else
85
- args = { _value: parsed };
86
- } catch {
87
- args = { _raw: toolCall.arguments };
88
- }
89
- else if (toolCall.arguments && typeof toolCall.arguments === "object" && !Array.isArray(toolCall.arguments))
90
- args = toolCall.arguments;
91
- else
92
- args = { _value: toolCall.arguments };
93
- return { functionCall: {
94
- name: toolCall.name,
95
- args
96
- } };
97
- }
98
- function toFunctionResponsePart(toolResult, functionName) {
99
- return { functionResponse: {
100
- name: functionName,
101
- response: normalizeGeminiResponse(toolResult)
102
- } };
103
- }
104
- function extractSystemInstruction(messages) {
105
- const systemMessages = messages.filter((m) => (m.role === "system" || m.role === "developer") && !m.hidden && !isStreamingMessage(m));
106
- if (systemMessages.length === 0)
107
- return;
108
- const parts = [];
109
- for (const msg of systemMessages)
110
- parts.push(...toGeminiParts(msg.content));
111
- if (parts.length === 0)
112
- return;
113
- return {
114
- role: "user",
115
- parts
116
- };
117
- }
118
- function toGeminiMessages(conversation) {
119
- assertConversationSafe(conversation);
120
- const ordered = getOrderedMessages(conversation);
121
- const systemInstruction = extractSystemInstruction(ordered);
122
- const toolCallNames = /* @__PURE__ */ new Map;
123
- for (const message of ordered)
124
- if (message.role === "tool-call" && message.toolCall)
125
- toolCallNames.set(message.toolCall.id, message.toolCall.name);
126
- const contents = [];
127
- let currentRole = null;
128
- let currentParts = [];
129
- const flushCurrent = () => {
130
- if (currentRole && currentParts.length > 0) {
131
- contents.push({
132
- role: currentRole,
133
- parts: currentParts
134
- });
135
- currentParts = [];
136
- }
137
- currentRole = null;
138
- };
139
- for (const message of ordered) {
140
- if (message.hidden)
141
- continue;
142
- if (isStreamingMessage(message))
143
- continue;
144
- if (message.role === "system" || message.role === "developer")
145
- continue;
146
- if (message.role === "snapshot")
147
- continue;
148
- let targetRole;
149
- let parts;
150
- if (message.role === "user") {
151
- targetRole = "user";
152
- parts = toGeminiParts(message.content);
153
- } else if (message.role === "assistant") {
154
- targetRole = "model";
155
- parts = toGeminiParts(message.content);
156
- } else if (message.role === "tool-call" && message.toolCall) {
157
- targetRole = "model";
158
- parts = [toFunctionCallPart(message.toolCall)];
159
- } else if (message.role === "tool-result" && message.toolResult) {
160
- targetRole = "user";
161
- const functionName = toolCallNames.get(message.toolResult.callId) ?? "unknown";
162
- parts = [toFunctionResponsePart(message.toolResult, functionName)];
163
- } else
164
- continue;
165
- if (parts.length === 0)
166
- continue;
167
- if (currentRole === targetRole)
168
- currentParts.push(...parts);
169
- else {
170
- flushCurrent();
171
- currentRole = targetRole;
172
- currentParts = parts;
173
- }
174
- }
175
- flushCurrent();
176
- const result = { contents };
177
- if (systemInstruction !== undefined)
178
- result.systemInstruction = systemInstruction;
179
- return result;
180
- }
181
- function parseFunctionArguments(args) {
182
- if (Object.keys(args).length === 1 && Object.hasOwn(args, "_value"))
183
- return toJSONValue(args["_value"]);
184
- if (Object.keys(args).length === 1 && Object.hasOwn(args, "_raw") && typeof args["_raw"] === "string")
185
- return args["_raw"];
186
- return toJSONValue(args);
187
- }
188
- function parseFunctionResponse(callId, response) {
189
- const value = toJSONValue(response);
190
- if (isCanonicalToolResultPayload(value))
191
- return {
192
- callId,
193
- outcome: value.outcome,
194
- content: value.content,
195
- ...value.error ? { error: value.error } : {},
196
- ...value.action ? { action: value.action } : {},
197
- ...typeof value.inputDigest === "string" ? { inputDigest: value.inputDigest } : {},
198
- ...typeof value.outputDigest === "string" ? { outputDigest: value.outputDigest } : {}
199
- };
200
- if (value && typeof value === "object" && !Array.isArray(value) && Object.keys(value).length === 1 && Object.hasOwn(value, "result"))
201
- return {
202
- callId,
203
- outcome: "success",
204
- content: toJSONValue(value.result)
205
- };
206
- return {
207
- callId,
208
- outcome: "success",
209
- content: value
210
- };
211
- }
212
- function toContentFromGeminiPart(part) {
213
- if ("text" in part)
214
- return part.text;
215
- if ("inlineData" in part)
216
- return [{
217
- type: "image",
218
- url: `data:${part.inlineData.mimeType};base64,${part.inlineData.data}`,
219
- mimeType: part.inlineData.mimeType
220
- }];
221
- return [{
222
- type: "image",
223
- url: part.fileData.fileUri,
224
- mimeType: part.fileData.mimeType
225
- }];
226
- }
227
- function toSystemInstructionContent(parts) {
228
- const contentParts = [];
229
- for (const part of parts)
230
- if ("text" in part)
231
- contentParts.push({
232
- type: "text",
233
- text: part.text
234
- });
235
- else if ("inlineData" in part)
236
- contentParts.push({
237
- type: "image",
238
- url: `data:${part.inlineData.mimeType};base64,${part.inlineData.data}`,
239
- mimeType: part.inlineData.mimeType
240
- });
241
- else if ("fileData" in part)
242
- contentParts.push({
243
- type: "image",
244
- url: part.fileData.fileUri,
245
- mimeType: part.fileData.mimeType
246
- });
247
- if (contentParts.length === 0)
248
- return;
249
- if (contentParts.length === 1 && contentParts[0]?.type === "text")
250
- return contentParts[0].text ?? "";
251
- return contentParts;
252
- }
253
- function toMessageInputs(payload) {
254
- const inputs = [];
255
- let syntheticToolCallCount = 0;
256
- const pendingToolCalls = /* @__PURE__ */ new Map;
257
- const queueToolCall = (name, callId) => {
258
- const queued = pendingToolCalls.get(name) ?? [];
259
- queued.push(callId);
260
- pendingToolCalls.set(name, queued);
261
- };
262
- const dequeueToolCall = (name) => {
263
- const queued = pendingToolCalls.get(name);
264
- if (!queued || queued.length === 0)
265
- return;
266
- const [callId, ...rest] = queued;
267
- if (rest.length === 0)
268
- pendingToolCalls.delete(name);
269
- else
270
- pendingToolCalls.set(name, rest);
271
- return callId;
272
- };
273
- const systemContent = payload.systemInstruction ? toSystemInstructionContent(payload.systemInstruction.parts) : undefined;
274
- if (systemContent !== undefined)
275
- inputs.push({
276
- role: "system",
277
- content: systemContent
278
- });
279
- for (const content of payload.contents) {
280
- const role = content.role === "model" ? "assistant" : "user";
281
- for (const part of content.parts) {
282
- if ("functionCall" in part) {
283
- const callId = `gemini-call-${++syntheticToolCallCount}`;
284
- queueToolCall(part.functionCall.name, callId);
285
- inputs.push({
286
- role: "tool-call",
287
- content: "",
288
- toolCall: {
289
- id: callId,
290
- name: part.functionCall.name,
291
- arguments: parseFunctionArguments(part.functionCall.args)
292
- }
293
- });
294
- continue;
295
- }
296
- if ("functionResponse" in part) {
297
- const callId = dequeueToolCall(part.functionResponse.name) ?? `gemini-call-${++syntheticToolCallCount}`;
298
- inputs.push({
299
- role: "tool-result",
300
- content: "",
301
- toolResult: parseFunctionResponse(callId, part.functionResponse.response)
302
- });
303
- continue;
304
- }
305
- inputs.push({
306
- role,
307
- content: toContentFromGeminiPart(part)
308
- });
309
- }
310
- }
311
- return inputs;
312
- }
313
- function fromGeminiMessages(payload) {
314
- let conversation = createConversationHistory();
315
- const inputs = toMessageInputs(payload);
316
- if (inputs.length > 0)
317
- conversation = appendMessages(conversation, ...inputs);
318
- return conversation;
319
- }
320
- function appendGeminiMessages(conversation, payload) {
321
- const inputs = toMessageInputs(payload);
322
- if (inputs.length === 0)
323
- return conversation;
324
- return appendMessages(conversation, ...inputs);
325
- }
326
- var geminiConversationAdapter = {
327
- export(conversation) {
328
- return toGeminiMessages(conversation);
329
- },
330
- import(payload) {
331
- return fromGeminiMessages(payload);
332
- },
333
- append(conversation, payload) {
334
- return appendGeminiMessages(conversation, payload);
335
- }
336
- };
337
- export {
338
- toGeminiMessages,
339
- geminiConversationAdapter,
340
- fromGeminiMessages,
341
- appendGeminiMessages
342
- };
343
-
344
- //# debugId=A9243EAE4BC9430164756E2164756E21