@marimo-team/islands 0.25.2-dev14 → 0.25.2-dev140

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 (404) hide show
  1. package/dist/{ConnectedDataExplorerComponent-CqhQmp74.js → ConnectedDataExplorerComponent-CNSxdKyJ.js} +15 -15
  2. package/dist/{ErrorBoundary-M1CN91UQ.js → ErrorBoundary-BkQSYCZo.js} +12 -12
  3. package/dist/{ImageComparisonComponent-Cpfz30OZ.js → ImageComparisonComponent-uU8FSKZE.js} +3 -3
  4. package/dist/{Plot-CTyjbQDT.js → Plot-DdYOe1UK.js} +2 -2
  5. package/dist/{abnfDiagram-VCTEODGH-aLGD44M7.js → abnfDiagram-VCTEODGH-DQDjNXt3.js} +3 -3
  6. package/dist/{any-language-editor-dqxlUDlT.js → any-language-editor-B9REGlD9.js} +8 -8
  7. package/dist/{apl-BYaaig9_.js → apl-GEW9-ZP1.js} +1 -1
  8. package/dist/{architectureDiagram-5GKGNRK7-BGL5P81u.js → architectureDiagram-5GKGNRK7-Nmls7Wxn.js} +5 -5
  9. package/dist/{asciiarmor-GKQFJXQG.js → asciiarmor-BWNxzkG7.js} +1 -1
  10. package/dist/{asn1-BsSb7HP5.js → asn1-Bcn2QutK.js} +1 -1
  11. package/dist/assets/__vite-browser-external-BXYkiFsk.js +1 -0
  12. package/dist/assets/worker-HPY9fbhz.js +114 -0
  13. package/dist/{asterisk-B3I8SNb5.js → asterisk-lE36-hJK.js} +1 -1
  14. package/dist/{blockDiagram-I7D4REHJ-CvBmppdy.js → blockDiagram-I7D4REHJ-Cg25UrxT.js} +9 -9
  15. package/dist/{brainfuck-DXjk3bQe.js → brainfuck-BQCYDheZ.js} +1 -1
  16. package/dist/{button-B0Xgl-Qn.js → button-CvjkwdSk.js} +304 -287
  17. package/dist/{c4Diagram-7LVT6UL2-EceL4_jH.js → c4Diagram-7LVT6UL2-BxFgrnNV.js} +7 -7
  18. package/dist/{capabilities-D7Ad8-zw.js → capabilities-CQ5IjhzL.js} +1 -1
  19. package/dist/{cells-5ppES-Un.js → cells-C8iCYvLU.js} +5949 -4892
  20. package/dist/{channel-z7HZXHwv.js → channel-CPObtJXj.js} +1 -1
  21. package/dist/{chat-ui-Dv2V95k6.js → chat-ui-BDpymeoe.js} +1595 -1402
  22. package/dist/{check-DGZ74tV2.js → check-EDwSwP89.js} +1 -1
  23. package/dist/{chunk-4HAMMTFA-BPTTOOC5.js → chunk-4HAMMTFA-D4eFPyFh.js} +5 -5
  24. package/dist/{chunk-75Z2AOVW-C4AOleKf.js → chunk-75Z2AOVW-D7gxIs2Q.js} +1 -1
  25. package/dist/{chunk-DU6HZSFF-1TwWR6gh.js → chunk-DU6HZSFF-BwiyaNpg.js} +2 -2
  26. package/dist/{chunk-F27PBJKO-DMI1PBe4.js → chunk-F27PBJKO-ufseIn5y.js} +1 -1
  27. package/dist/{chunk-GMAD6QVW-vStrMz2P.js → chunk-GMAD6QVW-BhaJx0X3.js} +3 -3
  28. package/dist/{chunk-GVQU2GXP-2HwWgs4u.js → chunk-GVQU2GXP-Cwbt-lF0.js} +2 -2
  29. package/dist/{chunk-IMKFNOWR-Cm3RgLDj.js → chunk-IMKFNOWR-CoIFEo-1.js} +6 -6
  30. package/dist/{chunk-L3NEJ4N5-RhC7i0I2.js → chunk-L3NEJ4N5-n-zgIVSy.js} +5 -5
  31. package/dist/{chunk-OSK3NFVY-CZV09N-U.js → chunk-OSK3NFVY-DXa-Cxbn.js} +6 -6
  32. package/dist/{chunk-P2QGCYS3-0TAWai9C.js → chunk-P2QGCYS3-B_Zd3-X0.js} +1 -1
  33. package/dist/{chunk-POPQ4Y6H-Cc3_56GX.js → chunk-POPQ4Y6H-hYOXbYH_.js} +1 -1
  34. package/dist/{chunk-PWAF6VOD-lNxB9k8z.js → chunk-PWAF6VOD-CQw5qATZ.js} +1 -1
  35. package/dist/{chunk-SHT3W25Y-DedDYSP5.js → chunk-SHT3W25Y-lHiGx3ZC.js} +8 -8
  36. package/dist/{chunk-SVP7TREG-B2SFkCAL.js → chunk-SVP7TREG-BvsHIrY_.js} +2 -2
  37. package/dist/{chunk-TICWLB2K-DB6hjNOL.js → chunk-TICWLB2K-BC8YIm_n.js} +6 -6
  38. package/dist/{chunk-YOKDWASO-DrWbKnxA.js → chunk-YOKDWASO-DPZk8vhS.js} +6 -6
  39. package/dist/classDiagram-ZZMXUADV-Bt98lkkv.js +30 -0
  40. package/dist/classDiagram-v2-VYDZK3BY-D9bfbcC3.js +30 -0
  41. package/dist/{clike-E2lFbGVj.js → clike-CxK9W55Z.js} +1 -1
  42. package/dist/{clojure-Dn_K4RlK.js → clojure-Dzcvwpxk.js} +1 -1
  43. package/dist/{cmake-DpN2Top5.js → cmake-DYr-71zp.js} +1 -1
  44. package/dist/{cobol-Chf22-GM.js → cobol-DC3g37Kq.js} +1 -1
  45. package/dist/{code-visibility-Clbu601l.js → code-visibility-DSbYTcxC.js} +8 -8
  46. package/dist/{coffeescript-BVe1OiD9.js → coffeescript-C-eFwH5N.js} +1 -1
  47. package/dist/{common-DnmYjCVM.js → common-CZoGPEDT.js} +13579 -14584
  48. package/dist/{commonlisp-DxoBG7fU.js → commonlisp-CyaNXrJR.js} +1 -1
  49. package/dist/{compiler-runtime-Cj8ZWiNS.js → compiler-runtime-CldRdSsv.js} +2 -2
  50. package/dist/{copy-icon-qmRg_VTX.js → copy-icon-Ft7t9bqz.js} +6 -6
  51. package/dist/{crystal-DCM3yc4r.js → crystal-ih5ax5tQ.js} +1 -1
  52. package/dist/{css-DkZ9mMyI.js → css-CN_wP7_R.js} +1 -1
  53. package/dist/{cynefinDiagram-5FMLGOSQ-DzaZEqgD.js → cynefinDiagram-5FMLGOSQ-CgWra7wt.js} +3 -3
  54. package/dist/{cypher-Drw_8U5I.js → cypher-CqGRcmZo.js} +1 -1
  55. package/dist/{d-CsVGcKMF.js → d-Cj0sOW2z.js} +1 -1
  56. package/dist/{dagre-GXQ25YYZ-Cjf5GjU3.js → dagre-GXQ25YYZ-CFZ8-35c.js} +10 -10
  57. package/dist/{data-grid-overlay-editor-CYhrcE4X.js → data-grid-overlay-editor-Bahjo5W-.js} +7 -7
  58. package/dist/{data-grid-types-BucVmDDp.js → data-grid-types-BH_r7g7l.js} +1 -1
  59. package/dist/{diagram-S7CK7UJ4-IhLt_khx.js → diagram-S7CK7UJ4-lCNQrW7d.js} +4 -4
  60. package/dist/{diagram-UQ7AKVKN-CQc6KLPB.js → diagram-UQ7AKVKN-CQPQ6pP_.js} +3 -3
  61. package/dist/{diagram-VSXAHHWV-CR7BJygZ.js → diagram-VSXAHHWV-BJWcVVJY.js} +2 -2
  62. package/dist/{diagram-VX7I27RA-DHmW9N1T.js → diagram-VX7I27RA-Cf3b0llz.js} +5 -5
  63. package/dist/{diagram-Z3DM3KII-zVKsg-Ty.js → diagram-Z3DM3KII-Bt4QLrpn.js} +3 -3
  64. package/dist/{dialog-CILKhbsG.js → dialog-CEBFZNyc.js} +29 -29
  65. package/dist/{diff-CBikYCUF.js → diff-B_hUkiat.js} +1 -1
  66. package/dist/{dist-Df0wKI0F.js → dist-BK4Oj99o.js} +1 -1
  67. package/dist/{dist-BVGtK7Ht.js → dist-BLfKmR-l.js} +1 -1
  68. package/dist/{dist-B8D7McG3.js → dist-BMQf5zIS.js} +46 -46
  69. package/dist/{dist-C2KzV-vf.js → dist-BorMD-uX.js} +2 -2
  70. package/dist/{dist-Cs2FijYk.js → dist-BuaRHxOc.js} +2 -2
  71. package/dist/{dist-DPcEtqmG.js → dist-Bvs24R_E.js} +47 -47
  72. package/dist/{dist-lA1Cttkb.js → dist-C8fAKSH1.js} +41 -41
  73. package/dist/{dist-DszxuxS1.js → dist-CLdpGQVr.js} +2 -2
  74. package/dist/{dist-CO1AwwG_.js → dist-CN8zI-XC.js} +209 -209
  75. package/dist/{dist-D1PpnuZB.js → dist-CN_BeG2I.js} +1 -1
  76. package/dist/{dist-CPGxfVGX.js → dist-CSJ0MDRw.js} +1 -1
  77. package/dist/{dist-Cm3iAFMD.js → dist-CSbh1PNP.js} +3 -3
  78. package/dist/{dist-9x1ZRe-e.js → dist-Cg7gzw-a.js} +2 -2
  79. package/dist/{dist-B1vYLK28.js → dist-CkTTIdBe.js} +345 -345
  80. package/dist/{dist-BRxfaJgs.js → dist-CrSP_H1M.js} +296 -296
  81. package/dist/{dist-C2wDlYdD.js → dist-D-wwqlzJ.js} +2 -2
  82. package/dist/{dist-BtKIs9N-.js → dist-D6d86eNJ.js} +1 -1
  83. package/dist/{dist-DHOTQar0.js → dist-DBtSl3sf.js} +1 -1
  84. package/dist/{dist-KzZ7WELx.js → dist-DiDibOYr.js} +120 -120
  85. package/dist/{dist-Kxgjxakw.js → dist-DoE4XJBC.js} +1277 -1222
  86. package/dist/{dist-CcyKTBTF.js → dist-DpBpA_n1.js} +2 -2
  87. package/dist/{dist-BHCHt1NI.js → dist-F8Ep36rk.js} +1 -1
  88. package/dist/{dist-C8xMLVYi.js → dist-OR1OnN-y.js} +44 -44
  89. package/dist/{dist-1HDa70oE.js → dist-PXYI_yuP.js} +3 -3
  90. package/dist/{dist-CMh_W4y4.js → dist-diIx5qJW.js} +2 -2
  91. package/dist/{dockerfile-DJnSntVB.js → dockerfile-D0VKN500.js} +2 -2
  92. package/dist/dropdown-menu-CP_qCYHC.js +4678 -0
  93. package/dist/{dtd-BHa4v0Bn.js → dtd-B8FGSWWe.js} +1 -1
  94. package/dist/{dylan-BypL2Zz8.js → dylan-DbIBYIrw.js} +1 -1
  95. package/dist/{ebnf-5guncNu-.js → ebnf-D-YbYLdk.js} +1 -1
  96. package/dist/{ebnfDiagram-PWID7BFC-DDd5hCRC.js → ebnfDiagram-PWID7BFC-D3NAyPFY.js} +3 -3
  97. package/dist/{ecl-iRcVIKYZ.js → ecl-DBmkdWAd.js} +1 -1
  98. package/dist/{eiffel-BEqF9aU4.js → eiffel-CcWSDDzK.js} +1 -1
  99. package/dist/{elm-DYcfNE9c.js → elm-MC-b8a6C.js} +1 -1
  100. package/dist/{erDiagram-RLTQ6QDP-D10NP0eI.js → erDiagram-RLTQ6QDP-Tlu09_Nm.js} +12 -12
  101. package/dist/{erlang-BtAuIoF0.js → erlang-AdO1-xtV.js} +1 -1
  102. package/dist/error-banner-Da600cwz.js +362 -0
  103. package/dist/{error-entries-B2Ux3Z2X.js → error-entries-CzoYkIQZ.js} +2 -2
  104. package/dist/{esm-h8f7-1CJ.js → esm-AMFssoNp.js} +380 -374
  105. package/dist/{esm-BElI3qKH.js → esm-D2gTsXEV.js} +579 -579
  106. package/dist/{factor-3nzOwLuN.js → factor-Ys-13HOP.js} +2 -2
  107. package/dist/{fcl-C90TGnJJ.js → fcl-DnwditDr.js} +1 -1
  108. package/dist/{feedback-button-DQUXhzxG.js → feedback-button-DzW23W2G.js} +13 -13
  109. package/dist/flowDiagram-HODETNUW-CAYbpJmV.js +16 -0
  110. package/dist/{formats-Q9gwlLyD.js → formats-BGh2thRc.js} +6 -6
  111. package/dist/{forth-DEaRrLUi.js → forth-DiMuIXFe.js} +1 -1
  112. package/dist/{fortran-Bv6JRUjY.js → fortran-hkrF2eM4.js} +1 -1
  113. package/dist/{ganttDiagram-EL5Y4UJY-cRRaDt88.js → ganttDiagram-EL5Y4UJY-BQT16JSc.js} +2 -2
  114. package/dist/{gas-JNerWj3-.js → gas-DlhqN9k8.js} +1 -1
  115. package/dist/{gherkin-CSrl-H70.js → gherkin-0SlhEZ3t.js} +1 -1
  116. package/dist/{gitGraphDiagram-WWUBYQGX-Pox5k9-Y.js → gitGraphDiagram-WWUBYQGX-D5nSIzdE.js} +2 -2
  117. package/dist/{glide-data-editor-B4sl2a3f.js → glide-data-editor-VRZlRc-O.js} +60 -60
  118. package/dist/{glide-utils-CzzWU59p.js → glide-utils-DJyqh0EM.js} +4 -4
  119. package/dist/{globals-DZ0cKrtp.js → globals-FYJ8OxBd.js} +3 -3
  120. package/dist/{groovy-X7euO_vE.js → groovy-YhcTMyvX.js} +1 -1
  121. package/dist/{haskell-C48Z70Az.js → haskell-CodLxrtT.js} +1 -1
  122. package/dist/{haxe-CAUWMmwR.js → haxe-CiRWNFkH.js} +1 -1
  123. package/dist/{highlighted-body-KPVGNVTW-Ad3MKZ18.js → highlighted-body-KPVGNVTW-zwjq21tf.js} +4 -4
  124. package/dist/{html-to-image-BZBwkkDG.js → html-to-image-CZY1pIZH.js} +547 -569
  125. package/dist/{http-BrSBnhDH.js → http-Bh6HhdNR.js} +1 -1
  126. package/dist/{idl-BXuPleZv.js → idl-DZgBq75I.js} +1 -1
  127. package/dist/{infoDiagram-27XIBGKW-DrYu3UZC.js → infoDiagram-27XIBGKW-XrDxhr0x.js} +2 -2
  128. package/dist/{ishikawaDiagram-5VMMS53U-pmkGQJsA.js → ishikawaDiagram-5VMMS53U-CD1muzov.js} +3 -3
  129. package/dist/{javascript-B4EPWJf_.js → javascript-BfNytHiM.js} +1 -1
  130. package/dist/{journeyDiagram-3NMN7TZE-EPJDPlt0.js → journeyDiagram-3NMN7TZE-BaLqn-dZ.js} +2 -2
  131. package/dist/{jsx-runtime-DgDPJV9S.js → jsx-runtime-3BD1kT0s.js} +1 -1
  132. package/dist/{julia-ke9Kh8b7.js → julia--tLIAG7q.js} +1 -1
  133. package/dist/{kanban-definition-UXKFOSKX-wWGD9VLW.js → kanban-definition-UXKFOSKX-Dg9W142_.js} +9 -9
  134. package/dist/{katex-BNCmKUol.js → katex-BIdZGsyO.js} +141 -116
  135. package/dist/label-BDKF3Afc.js +281 -0
  136. package/dist/{livescript-Ce4uqGAC.js → livescript-CVPfYnY_.js} +1 -1
  137. package/dist/{loader-C9OUkMrj.js → loader-BQOfjTIJ.js} +1 -1
  138. package/dist/{lua-D6fti_Jk.js → lua-4Fa-T-qq.js} +1 -1
  139. package/dist/main.js +7059 -6908
  140. package/dist/{mathematica-DcEpZ3Vj.js → mathematica-CtYAy6GG.js} +1 -1
  141. package/dist/{mbox-DFBbOu0X.js → mbox-D0w9Ah1C.js} +1 -1
  142. package/dist/{mermaid-Dfvntf3s.js → mermaid-CiAXjLpA.js} +57 -57
  143. package/dist/mermaid-HWGCJPDP-ByCsZnYF.js +2 -0
  144. package/dist/{mhchem-BEc7A1or.js → mhchem-CdWPJK6g.js} +1 -1
  145. package/dist/{mindmap-definition-YA3MSWOX-C2f1VIBR.js → mindmap-definition-YA3MSWOX-DgCidgYJ.js} +11 -11
  146. package/dist/{mirc-CqeibO3N.js → mirc-De9aSAZM.js} +1 -1
  147. package/dist/{mllike-D54QZYTP.js → mllike-BbugeaY_.js} +1 -1
  148. package/dist/{modelica-DuML2-8V.js → modelica-BjJwWw1F.js} +1 -1
  149. package/dist/{mscgen-CJmKwp3b.js → mscgen-DwiRH5ma.js} +1 -1
  150. package/dist/{mumps-DaVgFtkd.js → mumps--plbDM9o.js} +1 -1
  151. package/dist/{nginx-BXN1rqI0.js → nginx-C4Df7REc.js} +1 -1
  152. package/dist/{nsis-CMfRqf0V.js → nsis-fiiOqLc3.js} +7 -7
  153. package/dist/{ntriples-BiOGlMDR.js → ntriples-jV77I4k8.js} +1 -1
  154. package/dist/{number-overlay-editor-CbKIioUo.js → number-overlay-editor-BZVTQDVj.js} +5 -5
  155. package/dist/{octave-CgVnzxKk.js → octave-Cztd01tF.js} +1 -1
  156. package/dist/{oz-B2mky97X.js → oz-Bl8o3BDl.js} +1 -1
  157. package/dist/{pascal-BoZhBf6s.js → pascal-BO5JqysR.js} +1 -1
  158. package/dist/{pegDiagram-XKGWAZYB-D6v5dz4M.js → pegDiagram-XKGWAZYB-coOYYKB6.js} +3 -3
  159. package/dist/{perl-DjzMqXtt.js → perl-Drlh9s6m.js} +1 -1
  160. package/dist/{pieDiagram-E7YTZNPT-BwFAhpYD.js → pieDiagram-E7YTZNPT-BnXTc3bj.js} +3 -3
  161. package/dist/{pig-B2mB-01d.js → pig-BWGR8wZw.js} +1 -1
  162. package/dist/{powershell-D0zT88Aj.js → powershell-DT99xlz_.js} +1 -1
  163. package/dist/{process-output-BSsWzfnY.js → process-output-e4jj9Ijt.js} +4 -4
  164. package/dist/{properties-3_5qCgOj.js → properties-Q-rkxld0.js} +1 -1
  165. package/dist/{protobuf-Dgoxfi1H.js → protobuf-DKyWZbs7.js} +1 -1
  166. package/dist/{pug-CNRdd8oG.js → pug-42ZJUbEC.js} +2 -2
  167. package/dist/{puppet-DzILxZfz.js → puppet-B4UozHhh.js} +1 -1
  168. package/dist/purify.es-DMv5zIkJ.js +866 -0
  169. package/dist/{python-AfVdMn_l.js → python-DREjAV__.js} +1 -1
  170. package/dist/{q-C6p-CGWh.js → q-Bi63IpBO.js} +1 -1
  171. package/dist/{quadrantDiagram-AXDQQJYC--kqzFC3w.js → quadrantDiagram-AXDQQJYC-Ccw0xMjN.js} +1 -1
  172. package/dist/{r-CzKF1D2X.js → r-DSwXWKMR.js} +1 -1
  173. package/dist/{railroadDiagram-O6MQD6OU-D6eOFr6Z.js → railroadDiagram-O6MQD6OU-B28-u83n.js} +3 -3
  174. package/dist/{react-dom-BUgJ-ab_.js → react-dom-DUmH0GXv.js} +29 -21
  175. package/dist/{react-ofJbxM4x.js → react-sHtZdjeP.js} +103 -94
  176. package/dist/{react-vega-ewj7q_U5.js → react-vega-BED0DjiB.js} +3 -3
  177. package/dist/{requirementDiagram-BXWQKSXE-CHYsMgDR.js → requirementDiagram-BXWQKSXE-CdYCTMu0.js} +11 -11
  178. package/dist/{reveal-component-CSChrj7R.js → reveal-component-BU1x-Q6a.js} +906 -878
  179. package/dist/{rpm-Bx7FkjTO.js → rpm-DPb1DeKM.js} +1 -1
  180. package/dist/{ruby-BMzgq2bf.js → ruby-U7fZA4DP.js} +2 -2
  181. package/dist/{sankeyDiagram-P5KCCOFB-BdzhT0BM.js → sankeyDiagram-P5KCCOFB-ELvOcnZH.js} +1 -1
  182. package/dist/{sas-ClGVnK3F.js → sas-CLk1JpTn.js} +1 -1
  183. package/dist/{scheme-C0MXqXep.js → scheme-CT-2k2Tl.js} +1 -1
  184. package/dist/select-BButFi-d.js +1344 -0
  185. package/dist/{sequenceDiagram-WJ2MYXX4-BPAknhBp.js → sequenceDiagram-WJ2MYXX4-CM3aRAe_.js} +4 -4
  186. package/dist/{shell-CiQZv6oG.js → shell-BLO7fcsk.js} +1 -1
  187. package/dist/{sieve-BiIMePvV.js → sieve-nG3C7WNH.js} +1 -1
  188. package/dist/{simple-mode-8ETW2RS6.js → simple-mode-C683Q7or.js} +1 -1
  189. package/dist/{smalltalk-9-llftyG.js → smalltalk-BROcZybA.js} +1 -1
  190. package/dist/{solr-CxCKEuwq.js → solr-mVltHNc5.js} +1 -1
  191. package/dist/{sparql-BRmy7pzx.js → sparql-Cv1Ksr4v.js} +1 -1
  192. package/dist/{spec-D62vWpMT.js → spec-BwarBpUJ.js} +116 -135
  193. package/dist/{spreadsheet-UCNUIGsn.js → spreadsheet-BwTnp5K_.js} +1 -1
  194. package/dist/{sql-D0hSGZ-H.js → sql-CjLt0122.js} +1 -1
  195. package/dist/{stateDiagram-D77RDMKH-Cq249IQ4.js → stateDiagram-D77RDMKH-DOZUMVj8.js} +13 -13
  196. package/dist/stateDiagram-v2-MP3YSRHH-CISYxma6.js +30 -0
  197. package/dist/{stex-UeT_Aofp.js → stex-Btf3omL8.js} +1 -1
  198. package/dist/style.css +1 -1
  199. package/dist/{stylus-Fi4waA2H.js → stylus-Dt4VvLXL.js} +1 -1
  200. package/dist/{swift-NqPyaBye.js → swift-DHsn_CVI.js} +1 -1
  201. package/dist/{swimlanes-42K2YHIH-Bh_S_HKD.js → swimlanes-42K2YHIH-BkSppxp8.js} +10 -10
  202. package/dist/swimlanesDiagram-VR7AAH4N-c8G5pGxC.js +30 -0
  203. package/dist/{swiper-component-DkV7T44B.js → swiper-component-DKntyn8p.js} +5 -5
  204. package/dist/{tcl-B4f0xfmM.js → tcl-CV0OLBOl.js} +1 -1
  205. package/dist/{textile-CnNbnPTe.js → textile-D320oKVM.js} +1 -1
  206. package/dist/{tiddlywiki-CSGSOg38.js → tiddlywiki-BVVNvfy4.js} +1 -1
  207. package/dist/{tiki-9F02WBA6.js → tiki-BF2aDPlB.js} +1 -1
  208. package/dist/{timeline-definition-24CTP7MA-ByNMgBE7.js → timeline-definition-24CTP7MA-CaMQayqK.js} +3 -3
  209. package/dist/{toDate-DWVp6uE1.js → toDate-BNJf01u1.js} +8 -9
  210. package/dist/{toast-DcoJGS3-.js → toast-B9UMEi8u.js} +161 -165
  211. package/dist/{toml-AesZ6RBt.js → toml-CaUN7UHo.js} +1 -1
  212. package/dist/{tooltip-Bi36DgYh.js → tooltip-BO1REbqs.js} +548 -584
  213. package/dist/{troff-DlfvveK1.js → troff-DQUFcClZ.js} +1 -1
  214. package/dist/{ttcn--YVSkGs_.js → ttcn-CQL1duJS.js} +1 -1
  215. package/dist/{ttcn-cfg-Bb1Knl_J.js → ttcn-cfg-BMmEFJPu.js} +1 -1
  216. package/dist/{turtle-DC24v1bz.js → turtle-C3esgsRr.js} +1 -1
  217. package/dist/{use-restore-focus-ZgG5Br63.js → use-restore-focus-BEM7sFWl.js} +2430 -2007
  218. package/dist/{use-vega-container-remeasure-4DwJbPWu.js → use-vega-container-remeasure-Bz4PZMtt.js} +2 -2
  219. package/dist/{useAsyncData-BD7NLQ3_.js → useAsyncData-Deh5kszT.js} +3 -3
  220. package/dist/{useDateFormatter-D8XWr8lL.js → useDateFormatter-D8XruNGG.js} +53 -32
  221. package/dist/{useDeepCompareMemoize-CawMGSRU.js → useDeepCompareMemoize-DXwzRINI.js} +2 -2
  222. package/dist/{useIframeCapabilities-BUMBOpsM.js → useIframeCapabilities-DBETvvPl.js} +2 -2
  223. package/dist/{useLifecycle-3vGhRa1o.js → useLifecycle-j7D9uD1o.js} +6 -6
  224. package/dist/{useTheme-BOw801nZ.js → useTheme-CRnjkku0.js} +7 -7
  225. package/dist/{vb-Dpc8vhvF.js → vb-RK1eDXRl.js} +1 -1
  226. package/dist/{vbscript-B-Y1XnZe.js → vbscript-BCOeM0de.js} +1 -1
  227. package/dist/{vega-component-9siY74NS.js → vega-component-DG29TAB7.js} +14 -14
  228. package/dist/{vega-embed-container-sSR5hAsy.js → vega-embed-container-BNHE18G9.js} +5 -5
  229. package/dist/{velocity-DHMu9kc-.js → velocity-CZKOFbOI.js} +1 -1
  230. package/dist/{vennDiagram-4TSXK5OY-DY8CySdO.js → vennDiagram-4TSXK5OY-CF8pfaK3.js} +3 -3
  231. package/dist/{verilog-DhiEaoUl.js → verilog-DqQTzVn8.js} +1 -1
  232. package/dist/{vhdl-D4X23YKO.js → vhdl-vQr2bfmi.js} +1 -1
  233. package/dist/{wardleyDiagram-VM6X3IG4-DYC1AFni.js → wardleyDiagram-VM6X3IG4-dGPu39d-.js} +3 -3
  234. package/dist/{webidl-SyzNxWpJ.js → webidl-DzX7N40e.js} +1 -1
  235. package/dist/{xquery-BC2R4Hk6.js → xquery-Cw_Q_hGR.js} +1 -1
  236. package/dist/{xychartDiagram-S5SC5T6Z-Df8LLnuY.js → xychartDiagram-S5SC5T6Z-CP6-9q56.js} +5 -5
  237. package/dist/{yacas-DLNXPMmH.js → yacas-DiC4jJBE.js} +1 -1
  238. package/dist/{z80-CDXWHOO6.js → z80-CUOQDEJO.js} +1 -1
  239. package/package.json +38 -37
  240. package/src/__tests__/mount.test.ts +6 -6
  241. package/src/components/chat/__tests__/chat-history-popover.test.tsx +157 -0
  242. package/src/components/chat/chat-history-popover.tsx +98 -17
  243. package/src/components/chat/chat-panel.tsx +29 -0
  244. package/src/components/chat/tool-call/__tests__/tool-result.test.tsx +56 -0
  245. package/src/components/chat/tool-call/tool-result.tsx +3 -3
  246. package/src/components/data-table/TableTopBar.tsx +4 -0
  247. package/src/components/data-table/__tests__/column_formatting.test.ts +30 -0
  248. package/src/components/data-table/__tests__/columns.test.tsx +70 -0
  249. package/src/components/data-table/__tests__/export-actions.test.tsx +1111 -14
  250. package/src/components/data-table/__tests__/pagination.test.tsx +85 -1
  251. package/src/components/data-table/__tests__/schemas.test.ts +57 -0
  252. package/src/components/data-table/charts/__tests__/schemas.test.ts +25 -0
  253. package/src/components/data-table/charts/__tests__/slider-field.test.tsx +54 -0
  254. package/src/components/data-table/charts/__tests__/spec.test.ts +26 -23
  255. package/src/components/data-table/charts/components/form-fields.tsx +3 -1
  256. package/src/components/data-table/charts/constants.ts +11 -10
  257. package/src/components/data-table/charts/types.ts +1 -0
  258. package/src/components/data-table/column-formatting/feature.ts +20 -1
  259. package/src/components/data-table/columns.tsx +25 -18
  260. package/src/components/data-table/data-table.tsx +3 -0
  261. package/src/components/data-table/export-actions.tsx +365 -81
  262. package/src/components/data-table/pagination.tsx +16 -2
  263. package/src/components/data-table/schemas.ts +90 -14
  264. package/src/components/editor/actions/__tests__/pair-with-agent-commands.test.ts +32 -46
  265. package/src/components/editor/actions/__tests__/pair-with-agent-modal.test.tsx +29 -40
  266. package/src/components/editor/actions/pair-with-agent-commands.ts +3 -4
  267. package/src/components/editor/actions/pair-with-agent-modal.tsx +4 -7
  268. package/src/components/editor/actions/useRestartKernel.tsx +2 -2
  269. package/src/components/editor/alerts/__tests__/connection-notice.test.tsx +224 -17
  270. package/src/components/editor/alerts/connection-details.tsx +61 -0
  271. package/src/components/editor/alerts/connection-notice.tsx +46 -53
  272. package/src/components/editor/alerts/startup-progress.tsx +73 -129
  273. package/src/components/editor/app-container.tsx +2 -2
  274. package/src/components/editor/boundary/__tests__/ErrorBoundary.test.tsx +2 -2
  275. package/src/components/editor/cell/CreateCellButton.tsx +2 -2
  276. package/src/components/editor/cell/DeleteButton.tsx +2 -2
  277. package/src/components/editor/cell/RunButton.tsx +3 -3
  278. package/src/components/editor/cell/StopButton.tsx +2 -2
  279. package/src/components/editor/chrome/components/__tests__/feedback-button.test.tsx +4 -4
  280. package/src/components/editor/chrome/components/feedback-button.tsx +3 -3
  281. package/src/components/editor/chrome/panels/__tests__/packages-panel.test.tsx +8 -8
  282. package/src/components/editor/chrome/panels/__tests__/{sandbox-details.test.tsx → runtime-details.test.tsx} +94 -22
  283. package/src/components/editor/chrome/panels/__tests__/sandbox-recovery.test.tsx +4 -4
  284. package/src/components/editor/chrome/panels/packages-panel.tsx +8 -29
  285. package/src/components/editor/chrome/panels/{sandbox-details-state.ts → runtime-details-state.ts} +1 -1
  286. package/src/components/editor/chrome/panels/{sandbox-panel.tsx → runtime-panel.tsx} +38 -66
  287. package/src/components/editor/chrome/panels/runtime-status-toggle.tsx +56 -0
  288. package/src/components/editor/chrome/panels/sandbox-controller.tsx +2 -2
  289. package/src/components/editor/chrome/wrapper/app-chrome.tsx +3 -3
  290. package/src/components/editor/chrome/wrapper/footer-items/machine-stats.tsx +2 -2
  291. package/src/components/editor/controls/Controls.tsx +3 -3
  292. package/src/components/editor/controls/__tests__/notebook-menu-dropdown.test.tsx +6 -5
  293. package/src/components/editor/header/__tests__/status.test.tsx +4 -4
  294. package/src/components/editor/header/app-header.tsx +2 -2
  295. package/src/components/editor/header/status.tsx +3 -3
  296. package/src/components/editor/navigation/__tests__/navigation.test.ts +8 -8
  297. package/src/components/editor/output/console/ConsoleOutput.tsx +5 -3
  298. package/src/components/editor/output/console/__tests__/ConsoleOutput.test.tsx +18 -0
  299. package/src/components/storage/__tests__/storage-file-viewer.test.tsx +2 -1
  300. package/src/components/ui/__tests__/slider.test.tsx +37 -0
  301. package/src/components/ui/progress-stages.tsx +114 -0
  302. package/src/components/ui/slider.tsx +2 -0
  303. package/src/core/ai/__tests__/state.test.ts +120 -0
  304. package/src/core/ai/state.ts +36 -10
  305. package/src/core/cells/__tests__/document-roundtrip.test.ts +16 -0
  306. package/src/core/codemirror/copilot/__tests__/completion-integration.test.ts +447 -0
  307. package/src/core/codemirror/copilot/__tests__/inline-completion.test.ts +395 -0
  308. package/src/core/codemirror/copilot/__tests__/language-server.test.ts +511 -2
  309. package/src/core/codemirror/copilot/__tests__/rpc-cancellation.test.ts +201 -0
  310. package/src/core/codemirror/copilot/extension.ts +22 -11
  311. package/src/core/codemirror/copilot/language-server.ts +109 -60
  312. package/src/core/codemirror/language/__tests__/sql.test.ts +4 -3
  313. package/src/core/codemirror/language/embedded/__tests__/embedded-python.test.ts +138 -26
  314. package/src/core/codemirror/language/embedded/embedded-python.ts +47 -13
  315. package/src/core/codemirror/language/embedded/latex.ts +20 -13
  316. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +106 -5
  317. package/src/core/codemirror/lsp/notebook-lsp.ts +16 -2
  318. package/src/core/codemirror/readonly/__tests__/extension.test.ts +6 -6
  319. package/src/core/codemirror/readonly/extension.ts +2 -2
  320. package/src/core/config/pair.ts +0 -1
  321. package/src/core/datasets/__tests__/data-source-discovery.test.ts +20 -13
  322. package/src/core/edit-app.tsx +5 -1
  323. package/src/core/export/hooks.ts +2 -2
  324. package/src/core/islands/bootstrap.ts +1 -0
  325. package/src/core/islands/bridge.ts +2 -2
  326. package/src/core/kernel/messages.ts +4 -7
  327. package/src/core/kernel/session.ts +9 -0
  328. package/src/core/network/__tests__/api.test.ts +114 -1
  329. package/src/core/network/__tests__/connection.test.ts +3 -3
  330. package/src/core/network/api.ts +3 -2
  331. package/src/core/network/connection-notice.ts +5 -5
  332. package/src/core/network/connection.ts +9 -9
  333. package/src/core/network/requests-lazy.ts +2 -2
  334. package/src/core/packages/__tests__/useSandboxController.test.tsx +2 -2
  335. package/src/core/packages/useSandboxController.ts +6 -6
  336. package/src/core/runtime/__tests__/adapter.test.ts +6 -6
  337. package/src/core/runtime/adapter.ts +7 -7
  338. package/src/core/runtime/config.ts +2 -2
  339. package/src/core/saving/filename.ts +2 -2
  340. package/src/core/saving/save-component.tsx +5 -5
  341. package/src/core/saving/useAutoSave.ts +2 -2
  342. package/src/core/wasm/__tests__/bootstrap.test.ts +33 -1
  343. package/src/core/wasm/bridge.ts +2 -2
  344. package/src/core/wasm/worker/bootstrap.ts +22 -3
  345. package/src/core/wasm/worker/types.ts +2 -2
  346. package/src/core/websocket/__tests__/useMarimoKernelConnection.hook.test.tsx +30 -25
  347. package/src/core/websocket/__tests__/useMarimoKernelConnection.test.ts +5 -5
  348. package/src/core/websocket/connection-utils.ts +21 -21
  349. package/src/core/websocket/types.ts +8 -9
  350. package/src/core/websocket/useMarimoKernelConnection.tsx +33 -22
  351. package/src/css/katex-css.test.ts +166 -0
  352. package/src/css/katex.min.css +175 -169
  353. package/src/hooks/__tests__/useEventListener.test.tsx +45 -1
  354. package/src/hooks/useEventListener.ts +6 -1
  355. package/src/mount.tsx +2 -2
  356. package/src/plugins/core/__test__/registerReactComponent.test.ts +55 -0
  357. package/src/plugins/core/registerReactComponent.tsx +3 -1
  358. package/src/plugins/impl/CheckboxPlugin.tsx +1 -1
  359. package/src/plugins/impl/DataTablePlugin.tsx +23 -2
  360. package/src/plugins/impl/DatePickerPlugin.tsx +5 -3
  361. package/src/plugins/impl/DateRangePlugin.tsx +5 -3
  362. package/src/plugins/impl/DateTimePickerPlugin.tsx +5 -3
  363. package/src/plugins/impl/DropdownPlugin.tsx +1 -1
  364. package/src/plugins/impl/MultiselectPlugin.tsx +1 -1
  365. package/src/plugins/impl/NumberPlugin.tsx +21 -4
  366. package/src/plugins/impl/RadioPlugin.tsx +5 -1
  367. package/src/plugins/impl/RangeSliderPlugin.tsx +1 -1
  368. package/src/plugins/impl/SearchableSelect.tsx +1 -1
  369. package/src/plugins/impl/SliderPlugin.tsx +5 -1
  370. package/src/plugins/impl/SwitchPlugin.tsx +6 -1
  371. package/src/plugins/impl/TextAreaPlugin.tsx +23 -4
  372. package/src/plugins/impl/TextInputPlugin.tsx +10 -2
  373. package/src/plugins/impl/__test__/slider-labels.test.tsx +136 -0
  374. package/src/plugins/impl/__test__/text-labels.test.tsx +141 -0
  375. package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +65 -8
  376. package/src/plugins/impl/__tests__/NumberPlugin.test.tsx +159 -1
  377. package/src/plugins/impl/__tests__/widget-labels.test.tsx +122 -0
  378. package/src/plugins/impl/chat/ChatPlugin.tsx +1 -1
  379. package/src/plugins/impl/common/labeled.tsx +9 -3
  380. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +15 -3
  381. package/src/plugins/impl/data-frames/forms/__tests__/__snapshots__/form.test.tsx.snap +0 -22
  382. package/src/stories/cell.stories.tsx +2 -2
  383. package/src/stories/dataframe.stories.tsx +7 -0
  384. package/src/stories/layout/vertical/one-column.stories.tsx +5 -5
  385. package/src/stories/progress-stages.stories.tsx +62 -0
  386. package/src/stories/runtime-existing.stories.tsx +44 -0
  387. package/src/stories/runtime-maintenance.stories.tsx +40 -0
  388. package/src/stories/runtime-pixi.stories.tsx +28 -0
  389. package/src/stories/{sandbox.stories.tsx → runtime-story.tsx} +191 -152
  390. package/src/stories/runtime-uv.stories.tsx +56 -0
  391. package/dist/assets/__vite-browser-external-C9iR87Zl.js +0 -1
  392. package/dist/assets/worker-D7hWi02M.js +0 -109
  393. package/dist/classDiagram-ZZMXUADV-BwYhrSEX.js +0 -30
  394. package/dist/classDiagram-v2-VYDZK3BY-HecM04TM.js +0 -30
  395. package/dist/dropdown-menu-BaqM0t4N.js +0 -4502
  396. package/dist/error-banner-DzAmP0AQ.js +0 -391
  397. package/dist/flowDiagram-HODETNUW-DgcjSdPV.js +0 -16
  398. package/dist/label-MNhNNoN6.js +0 -278
  399. package/dist/mermaid-HWGCJPDP-DYCzSILp.js +0 -2
  400. package/dist/purify.es-DgKyQviY.js +0 -805
  401. package/dist/select-BcObMjGz.js +0 -970
  402. package/dist/stateDiagram-v2-MP3YSRHH-Dk5QgdXF.js +0 -30
  403. package/dist/swimlanesDiagram-VR7AAH4N-CbztusY8.js +0 -30
  404. package/src/components/editor/chrome/panels/sandbox-toggle.tsx +0 -52
@@ -0,0 +1,122 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { render } from "@testing-library/react";
4
+ import { beforeEach, describe, expect, it, vi } from "vitest";
5
+ import { initialModeAtom } from "@/core/mode";
6
+ import { store } from "@/core/state/jotai";
7
+ import { DatePickerPlugin } from "../DatePickerPlugin";
8
+ import { DateRangePickerPlugin } from "../DateRangePlugin";
9
+ import { DateTimePickerPlugin } from "../DateTimePickerPlugin";
10
+
11
+ const sharedProps = () => ({
12
+ host: document.createElement("div"),
13
+ setValue: vi.fn(),
14
+ functions: {},
15
+ });
16
+
17
+ const widgets = [
18
+ {
19
+ name: "date",
20
+ role: "group",
21
+ fallback: "date picker",
22
+ render: (label: string | null, disabled = false) =>
23
+ new DatePickerPlugin().render({
24
+ ...sharedProps(),
25
+ value: "2026-10-02",
26
+ data: {
27
+ label,
28
+ disabled,
29
+ start: "2026-01-01",
30
+ stop: "2026-12-31",
31
+ fullWidth: false,
32
+ },
33
+ }),
34
+ },
35
+ {
36
+ name: "datetime",
37
+ role: "group",
38
+ fallback: "date time picker",
39
+ render: (label: string | null, disabled = false) =>
40
+ new DateTimePickerPlugin().render({
41
+ ...sharedProps(),
42
+ value: "2026-10-02T12:00:00",
43
+ data: {
44
+ label,
45
+ disabled,
46
+ start: "2026-01-01T00:00:00",
47
+ stop: "2026-12-31T23:59:59",
48
+ precision: "minute",
49
+ fullWidth: false,
50
+ },
51
+ }),
52
+ },
53
+ {
54
+ name: "date range",
55
+ role: "group",
56
+ fallback: "date range picker",
57
+ render: (label: string | null, disabled = false) =>
58
+ new DateRangePickerPlugin().render({
59
+ ...sharedProps(),
60
+ value: ["2026-10-02", "2026-10-03"],
61
+ data: {
62
+ label,
63
+ disabled,
64
+ start: "2026-01-01",
65
+ stop: "2026-12-31",
66
+ fullWidth: false,
67
+ },
68
+ }),
69
+ },
70
+ ];
71
+
72
+ beforeEach(() => store.set(initialModeAtom, "edit"));
73
+
74
+ describe.each(widgets)("$name accessible labels", (widget) => {
75
+ it("uses rendered formatting and decoded entities, and follows label updates", () => {
76
+ const { getByRole, rerender } = render(
77
+ widget.render("<span>Visit <strong>date</strong> &amp; time</span>"),
78
+ );
79
+ expect(getByRole(widget.role, { name: "Visit date & time" })).toBeTruthy();
80
+ rerender(widget.render("<span>Updated <em>label</em></span>"));
81
+ expect(getByRole(widget.role, { name: "Updated label" })).toBeTruthy();
82
+ rerender(widget.render(null));
83
+ expect(getByRole(widget.role, { name: widget.fallback })).toBeTruthy();
84
+ });
85
+
86
+ it.each([null, ""])("uses the fallback when label is %s", (label) => {
87
+ const { getByRole } = render(widget.render(label));
88
+ expect(getByRole(widget.role, { name: widget.fallback })).toBeTruthy();
89
+ });
90
+
91
+ it("names the calendar button and every editable segment", () => {
92
+ const { getByRole, getAllByRole } = render(
93
+ widget.render("<strong>Visit</strong> &amp; time"),
94
+ );
95
+ expect(getByRole("button", { name: "Calendar Visit & time" })).toBeTruthy();
96
+ for (const segment of getAllByRole("spinbutton")) {
97
+ expect(segment).toHaveAccessibleName(/Visit & time/);
98
+ }
99
+ });
100
+
101
+ it("preserves disabled controls with a formatted label", () => {
102
+ const { getByRole, getAllByRole } = render(
103
+ widget.render("<strong>Visit</strong>", true),
104
+ );
105
+ expect(getByRole("button", { name: "Calendar Visit" })).toBeDisabled();
106
+ for (const segment of getAllByRole("spinbutton")) {
107
+ expect(segment).toHaveAttribute("aria-disabled", "true");
108
+ }
109
+ });
110
+
111
+ it("keeps labels distinct for multiple widgets", () => {
112
+ const { getByRole } = render(
113
+ <>
114
+ {widget.render("First")}
115
+ {widget.render("Second")}
116
+ </>,
117
+ );
118
+ expect(getByRole(widget.role, { name: "First" })).not.toBe(
119
+ getByRole(widget.role, { name: "Second" }),
120
+ );
121
+ });
122
+ });
@@ -27,7 +27,7 @@ const messageSchema = z.array(
27
27
  role: z.enum(["system", "user", "assistant"]),
28
28
  content: z.string().nullable(),
29
29
  parts: z.array(z.any()),
30
- metadata: z.any().nullable(),
30
+ metadata: z.any().optional(),
31
31
  }),
32
32
  );
33
33
 
@@ -9,7 +9,8 @@ interface Props {
9
9
  label: string | null | undefined;
10
10
  className?: string;
11
11
  labelClassName?: string;
12
- id?: string;
12
+ labelId?: string;
13
+ controlId?: string;
13
14
  fullWidth?: boolean;
14
15
  /**
15
16
  * Align the label to the top, left, or right of the component.
@@ -27,8 +28,9 @@ export const Labeled: React.FC<PropsWithChildren<Props>> = ({
27
28
  align = "left",
28
29
  className,
29
30
  labelClassName,
31
+ labelId,
30
32
  fullWidth,
31
- id,
33
+ controlId,
32
34
  }) => {
33
35
  // If fullWidth is true, force align to be "top"
34
36
  if (fullWidth) {
@@ -45,7 +47,11 @@ export const Labeled: React.FC<PropsWithChildren<Props>> = ({
45
47
 
46
48
  const labelElement = (
47
49
  <div part="label" className="inline-flex items-center m-0 p-0">
48
- <Label htmlFor={id} className={cn("font-prose", labelClassName)}>
50
+ <Label
51
+ id={labelId}
52
+ htmlFor={controlId}
53
+ className={cn("font-prose", labelClassName)}
54
+ >
49
55
  {renderHTML({ html: label })}
50
56
  </Label>
51
57
  </div>
@@ -12,8 +12,12 @@ import {
12
12
  } from "react";
13
13
  import { z } from "zod";
14
14
  import {
15
- type DownloadAsArgs,
15
+ type DownloadAsFunction,
16
16
  DownloadAsSchema,
17
+ type DownloadGeoJSON,
18
+ DownloadGeoJSONSchema,
19
+ type GetExportMetadata,
20
+ GetExportMetadataSchema,
17
21
  } from "@/components/data-table/schemas";
18
22
  import type { FieldTypesWithExternalType } from "@/components/data-table/types";
19
23
  import { ReadonlyCode } from "@/components/editor/code/readonly-python-code";
@@ -82,7 +86,9 @@ type PluginFunctions = {
82
86
  data: TableData<T>;
83
87
  total_rows: number;
84
88
  }>;
85
- download_as: DownloadAsArgs;
89
+ download_as: DownloadAsFunction;
90
+ download_geojson: DownloadGeoJSON;
91
+ get_export_metadata: GetExportMetadata;
86
92
  get_size_bytes: (opts: Record<string, never>) => Promise<{
87
93
  size_bytes?: number | null;
88
94
  }>;
@@ -153,6 +159,8 @@ export const DataFramePlugin = createPlugin<S>("marimo-dataframe")
153
159
  }),
154
160
  ),
155
161
  download_as: DownloadAsSchema,
162
+ download_geojson: DownloadGeoJSONSchema,
163
+ get_export_metadata: GetExportMetadataSchema,
156
164
  get_size_bytes: rpc
157
165
  .input(z.object({}))
158
166
  .output(z.object({ size_bytes: z.number().nullish() })),
@@ -174,7 +182,7 @@ interface DataTableProps extends Data, PluginFunctions {
174
182
  setValue: (value: S) => void;
175
183
  host: HTMLElement;
176
184
  showDownload: boolean;
177
- download_as: DownloadAsArgs;
185
+ download_as: DownloadAsFunction;
178
186
  }
179
187
 
180
188
  const EMPTY: Transformations = {
@@ -194,6 +202,8 @@ export const DataFrameComponent = memo(
194
202
  get_column_values,
195
203
  search,
196
204
  download_as,
205
+ download_geojson,
206
+ get_export_metadata,
197
207
  get_size_bytes,
198
208
  host,
199
209
  }: DataTableProps): JSX.Element => {
@@ -337,6 +347,8 @@ export const DataFrameComponent = memo(
337
347
  rowHeaders={row_headers || Arrays.EMPTY}
338
348
  showDownload={showDownload}
339
349
  download_as={download_as}
350
+ download_geojson={download_geojson}
351
+ get_export_metadata={get_export_metadata}
340
352
  get_size_bytes={get_size_bytes}
341
353
  showSearch={false}
342
354
  showFilters={false}
@@ -28,7 +28,6 @@ exports[`renderZodSchema > should render a form aggregate 1`] = `
28
28
  class="relative"
29
29
  >
30
30
  <button
31
- aria-controls="radix-_r_27_"
32
31
  aria-disabled="false"
33
32
  aria-expanded="false"
34
33
  aria-haspopup="dialog"
@@ -84,7 +83,6 @@ exports[`renderZodSchema > should render a form aggregate 1`] = `
84
83
  class="relative"
85
84
  >
86
85
  <button
87
- aria-controls="radix-_r_29_"
88
86
  aria-disabled="false"
89
87
  aria-expanded="false"
90
88
  aria-haspopup="dialog"
@@ -153,7 +151,6 @@ exports[`renderZodSchema > should render a form column_conversion 1`] = `
153
151
  >
154
152
  <button
155
153
  aria-autocomplete="none"
156
- aria-controls="radix-_r_e_"
157
154
  aria-expanded="false"
158
155
  class="flex h-6 w-fit items-center justify-between rounded-sm bg-background px-2 text-sm font-prose ring-offset-background placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer forced-color-adjust-none forced-colors:bg-[ButtonFace] forced-colors:text-[ButtonText] forced-colors:disabled:text-[GrayText] shadow-xs-solid border border-input hover:shadow-sm-solid focus-visible:border-primary focus-visible:shadow-md-solid disabled:hover:shadow-xs-solid forced-colors:border-[ButtonText] forced-colors:disabled:border-[GrayText] mb-0 min-w-[180px]"
159
156
  data-placeholder=""
@@ -202,7 +199,6 @@ exports[`renderZodSchema > should render a form column_conversion 1`] = `
202
199
  </label>
203
200
  <button
204
201
  aria-autocomplete="none"
205
- aria-controls="radix-_r_g_"
206
202
  aria-expanded="false"
207
203
  class="flex h-6 w-fit items-center justify-between rounded-sm bg-background px-2 text-sm font-prose ring-offset-background placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer forced-color-adjust-none forced-colors:bg-[ButtonFace] forced-colors:text-[ButtonText] forced-colors:disabled:text-[GrayText] shadow-xs-solid border border-input hover:shadow-sm-solid focus-visible:border-primary focus-visible:shadow-md-solid disabled:hover:shadow-xs-solid forced-colors:border-[ButtonText] forced-colors:disabled:border-[GrayText] mb-0 min-w-[180px]"
208
204
  data-placeholder=""
@@ -335,7 +331,6 @@ exports[`renderZodSchema > should render a form expand_dict 1`] = `
335
331
  >
336
332
  <button
337
333
  aria-autocomplete="none"
338
- aria-controls="radix-_r_2r_"
339
334
  aria-expanded="false"
340
335
  class="flex h-6 w-fit items-center justify-between rounded-sm bg-background px-2 text-sm font-prose ring-offset-background placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer forced-color-adjust-none forced-colors:bg-[ButtonFace] forced-colors:text-[ButtonText] forced-colors:disabled:text-[GrayText] shadow-xs-solid border border-input hover:shadow-sm-solid focus-visible:border-primary focus-visible:shadow-md-solid disabled:hover:shadow-xs-solid forced-colors:border-[ButtonText] forced-colors:disabled:border-[GrayText] mb-0 min-w-[180px]"
341
336
  data-placeholder=""
@@ -402,7 +397,6 @@ exports[`renderZodSchema > should render a form explode_columns 1`] = `
402
397
  class="relative"
403
398
  >
404
399
  <button
405
- aria-controls="radix-_r_2p_"
406
400
  aria-disabled="false"
407
401
  aria-expanded="false"
408
402
  aria-haspopup="dialog"
@@ -600,7 +594,6 @@ exports[`renderZodSchema > should render a form group_by 1`] = `
600
594
  class="relative"
601
595
  >
602
596
  <button
603
- aria-controls="radix-_r_1p_"
604
597
  aria-disabled="false"
605
598
  aria-expanded="false"
606
599
  aria-haspopup="dialog"
@@ -656,7 +649,6 @@ exports[`renderZodSchema > should render a form group_by 1`] = `
656
649
  class="relative"
657
650
  >
658
651
  <button
659
- aria-controls="radix-_r_1r_"
660
652
  aria-disabled="false"
661
653
  aria-expanded="false"
662
654
  aria-haspopup="dialog"
@@ -708,7 +700,6 @@ exports[`renderZodSchema > should render a form group_by 1`] = `
708
700
  </label>
709
701
  <button
710
702
  aria-autocomplete="none"
711
- aria-controls="radix-_r_1t_"
712
703
  aria-expanded="false"
713
704
  class="flex h-6 w-fit items-center justify-between rounded-sm bg-background px-2 text-sm font-prose ring-offset-background placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer forced-color-adjust-none forced-colors:bg-[ButtonFace] forced-colors:text-[ButtonText] forced-colors:disabled:text-[GrayText] shadow-xs-solid border border-input hover:shadow-sm-solid focus-visible:border-primary focus-visible:shadow-md-solid disabled:hover:shadow-xs-solid forced-colors:border-[ButtonText] forced-colors:disabled:border-[GrayText] mb-0 min-w-[180px]"
714
705
  data-placeholder=""
@@ -808,7 +799,6 @@ exports[`renderZodSchema > should render a form pivot 1`] = `
808
799
  class="relative"
809
800
  >
810
801
  <button
811
- aria-controls="radix-_r_3b_"
812
802
  aria-disabled="false"
813
803
  aria-expanded="false"
814
804
  aria-haspopup="dialog"
@@ -864,7 +854,6 @@ exports[`renderZodSchema > should render a form pivot 1`] = `
864
854
  class="relative"
865
855
  >
866
856
  <button
867
- aria-controls="radix-_r_3d_"
868
857
  aria-disabled="false"
869
858
  aria-expanded="false"
870
859
  aria-haspopup="dialog"
@@ -920,7 +909,6 @@ exports[`renderZodSchema > should render a form pivot 1`] = `
920
909
  class="relative"
921
910
  >
922
911
  <button
923
- aria-controls="radix-_r_3f_"
924
912
  aria-disabled="false"
925
913
  aria-expanded="false"
926
914
  aria-haspopup="dialog"
@@ -972,7 +960,6 @@ exports[`renderZodSchema > should render a form pivot 1`] = `
972
960
  </label>
973
961
  <button
974
962
  aria-autocomplete="none"
975
- aria-controls="radix-_r_3h_"
976
963
  aria-expanded="false"
977
964
  class="flex h-6 w-fit items-center justify-between rounded-sm bg-background px-2 text-sm font-prose ring-offset-background placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer forced-color-adjust-none forced-colors:bg-[ButtonFace] forced-colors:text-[ButtonText] forced-colors:disabled:text-[GrayText] shadow-xs-solid border border-input hover:shadow-sm-solid focus-visible:border-primary focus-visible:shadow-md-solid disabled:hover:shadow-xs-solid forced-colors:border-[ButtonText] forced-colors:disabled:border-[GrayText] mb-0 min-w-[180px]"
978
965
  data-placeholder=""
@@ -1037,7 +1024,6 @@ exports[`renderZodSchema > should render a form rename_column 1`] = `
1037
1024
  >
1038
1025
  <button
1039
1026
  aria-autocomplete="none"
1040
- aria-controls="radix-_r_6_"
1041
1027
  aria-expanded="false"
1042
1028
  class="flex h-6 w-fit items-center justify-between rounded-sm bg-background px-2 text-sm font-prose ring-offset-background placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer forced-color-adjust-none forced-colors:bg-[ButtonFace] forced-colors:text-[ButtonText] forced-colors:disabled:text-[GrayText] shadow-xs-solid border border-input hover:shadow-sm-solid focus-visible:border-primary focus-visible:shadow-md-solid disabled:hover:shadow-xs-solid forced-colors:border-[ButtonText] forced-colors:disabled:border-[GrayText] mb-0 min-w-[180px]"
1043
1029
  data-placeholder=""
@@ -1315,7 +1301,6 @@ exports[`renderZodSchema > should render a form select_columns 1`] = `
1315
1301
  class="relative"
1316
1302
  >
1317
1303
  <button
1318
- aria-controls="radix-_r_4_"
1319
1304
  aria-disabled="false"
1320
1305
  aria-expanded="false"
1321
1306
  aria-haspopup="dialog"
@@ -1434,7 +1419,6 @@ exports[`renderZodSchema > should render a form sort_column 1`] = `
1434
1419
  >
1435
1420
  <button
1436
1421
  aria-autocomplete="none"
1437
- aria-controls="radix-_r_1e_"
1438
1422
  aria-expanded="false"
1439
1423
  class="flex h-6 w-fit items-center justify-between rounded-sm bg-background px-2 text-sm font-prose ring-offset-background placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer forced-color-adjust-none forced-colors:bg-[ButtonFace] forced-colors:text-[ButtonText] forced-colors:disabled:text-[GrayText] shadow-xs-solid border border-input hover:shadow-sm-solid focus-visible:border-primary focus-visible:shadow-md-solid disabled:hover:shadow-xs-solid forced-colors:border-[ButtonText] forced-colors:disabled:border-[GrayText] mb-0 min-w-[180px]"
1440
1424
  data-placeholder=""
@@ -1603,7 +1587,6 @@ exports[`renderZodSchema > should render a form unique 1`] = `
1603
1587
  class="relative"
1604
1588
  >
1605
1589
  <button
1606
- aria-controls="radix-_r_32_"
1607
1590
  aria-disabled="false"
1608
1591
  aria-expanded="false"
1609
1592
  aria-haspopup="dialog"
@@ -1655,7 +1638,6 @@ exports[`renderZodSchema > should render a form unique 1`] = `
1655
1638
  </label>
1656
1639
  <button
1657
1640
  aria-autocomplete="none"
1658
- aria-controls="radix-_r_34_"
1659
1641
  aria-expanded="false"
1660
1642
  class="flex h-6 w-fit items-center justify-between rounded-sm bg-background px-2 text-sm font-prose ring-offset-background placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer forced-color-adjust-none forced-colors:bg-[ButtonFace] forced-colors:text-[ButtonText] forced-colors:disabled:text-[GrayText] shadow-xs-solid border border-input hover:shadow-sm-solid focus-visible:border-primary focus-visible:shadow-md-solid disabled:hover:shadow-xs-solid forced-colors:border-[ButtonText] forced-colors:disabled:border-[GrayText] mb-0 min-w-[180px]"
1661
1643
  data-placeholder=""
@@ -1709,7 +1691,6 @@ exports[`renders custom forms column_id 1`] = `
1709
1691
  >
1710
1692
  <button
1711
1693
  aria-autocomplete="none"
1712
- aria-controls="radix-_r_3q_"
1713
1694
  aria-expanded="false"
1714
1695
  class="flex h-6 w-fit items-center justify-between rounded-sm bg-background px-2 text-sm font-prose ring-offset-background placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer forced-color-adjust-none forced-colors:bg-[ButtonFace] forced-colors:text-[ButtonText] forced-colors:disabled:text-[GrayText] shadow-xs-solid border border-input hover:shadow-sm-solid focus-visible:border-primary focus-visible:shadow-md-solid disabled:hover:shadow-xs-solid forced-colors:border-[ButtonText] forced-colors:disabled:border-[GrayText] mb-0 min-w-[180px]"
1715
1696
  data-placeholder=""
@@ -1763,7 +1744,6 @@ exports[`renders custom forms column_id_array 1`] = `
1763
1744
  class="relative"
1764
1745
  >
1765
1746
  <button
1766
- aria-controls="radix-_r_41_"
1767
1747
  aria-disabled="false"
1768
1748
  aria-expanded="false"
1769
1749
  aria-haspopup="dialog"
@@ -1814,7 +1794,6 @@ exports[`renders custom forms column_id_dot_array 1`] = `
1814
1794
  class="relative"
1815
1795
  >
1816
1796
  <button
1817
- aria-controls="radix-_r_43_"
1818
1797
  aria-disabled="false"
1819
1798
  aria-expanded="false"
1820
1799
  aria-haspopup="dialog"
@@ -1870,7 +1849,6 @@ exports[`renders custom forms column_id_optional 1`] = `
1870
1849
  >
1871
1850
  <button
1872
1851
  aria-autocomplete="none"
1873
- aria-controls="radix-_r_45_"
1874
1852
  aria-expanded="false"
1875
1853
  class="flex h-6 w-fit items-center justify-between rounded-sm bg-background px-2 text-sm font-prose ring-offset-background placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer forced-color-adjust-none forced-colors:bg-[ButtonFace] forced-colors:text-[ButtonText] forced-colors:disabled:text-[GrayText] shadow-xs-solid border border-input hover:shadow-sm-solid focus-visible:border-primary focus-visible:shadow-md-solid disabled:hover:shadow-xs-solid forced-colors:border-[ButtonText] forced-colors:disabled:border-[GrayText] mb-0 min-w-[180px]"
1876
1854
  data-placeholder=""
@@ -14,7 +14,7 @@ import { connectionAtom } from "@/core/network/connection";
14
14
  import { requestClientAtom } from "@/core/network/requests";
15
15
  import { resolveRequestClient } from "@/core/network/resolve";
16
16
  import type { CellConfig } from "@/core/network/types";
17
- import { WebSocketState } from "@/core/websocket/types";
17
+ import { ConnectionState } from "@/core/websocket/types";
18
18
  import { MultiColumn } from "@/utils/id-tree";
19
19
  import type { Milliseconds, Seconds } from "@/utils/time";
20
20
  import { Cell as EditorCell } from "../components/editor/notebook-cell";
@@ -84,7 +84,7 @@ const Cell: React.FC<{
84
84
 
85
85
  const store = createStore();
86
86
  store.set(notebookAtom, notebook);
87
- store.set(connectionAtom, { state: WebSocketState.OPEN });
87
+ store.set(connectionAtom, { state: ConnectionState.OPEN });
88
88
  store.set(requestClientAtom, resolveRequestClient());
89
89
  return (
90
90
  <Provider store={store}>
@@ -42,6 +42,13 @@ export const DataFrame: StoryObj = {
42
42
  host={document.body}
43
43
  showDownload={false}
44
44
  download_as={async () => ({ url: "", filename: "" })}
45
+ download_geojson={async () => ({ url: "", filename: "" })}
46
+ get_export_metadata={async () => ({
47
+ geometry_columns: [],
48
+ primary_geometry_column: null,
49
+ default_geometry_column: null,
50
+ formats: {},
51
+ })}
45
52
  get_size_bytes={async () => ({ size_bytes: null })}
46
53
  lazy={false}
47
54
  />
@@ -11,7 +11,7 @@ import { showCodeInRunModeAtom } from "@/core/meta/state";
11
11
  import { connectionAtom } from "@/core/network/connection";
12
12
  import { requestClientAtom } from "@/core/network/requests";
13
13
  import { resolveRequestClient } from "@/core/network/resolve";
14
- import { WebSocketState } from "@/core/websocket/types";
14
+ import { ConnectionState } from "@/core/websocket/types";
15
15
  import { MultiColumn } from "@/utils/id-tree";
16
16
  import type { Milliseconds, Seconds } from "@/utils/time";
17
17
  import { CellArray } from "../../../components/editor/renderers/cell-array";
@@ -105,7 +105,7 @@ const EditModeCodeShown = () => {
105
105
 
106
106
  const store = createStore();
107
107
  store.set(notebookAtom, notebook);
108
- store.set(connectionAtom, { state: WebSocketState.OPEN });
108
+ store.set(connectionAtom, { state: ConnectionState.OPEN });
109
109
  store.set(requestClientAtom, resolveRequestClient());
110
110
  store.set(showCodeInRunModeAtom, true);
111
111
 
@@ -130,7 +130,7 @@ const EditModeCodeHidden = () => {
130
130
 
131
131
  const store = createStore();
132
132
  store.set(notebookAtom, notebook);
133
- store.set(connectionAtom, { state: WebSocketState.OPEN });
133
+ store.set(connectionAtom, { state: ConnectionState.OPEN });
134
134
  store.set(requestClientAtom, resolveRequestClient());
135
135
  store.set(showCodeInRunModeAtom, true);
136
136
 
@@ -155,7 +155,7 @@ const ReadModeCodeShown = () => {
155
155
 
156
156
  const store = createStore();
157
157
  store.set(notebookAtom, notebook);
158
- store.set(connectionAtom, { state: WebSocketState.OPEN });
158
+ store.set(connectionAtom, { state: ConnectionState.OPEN });
159
159
  store.set(requestClientAtom, resolveRequestClient());
160
160
  store.set(showCodeInRunModeAtom, true);
161
161
 
@@ -174,7 +174,7 @@ const ReadModeCodeHidden = () => {
174
174
 
175
175
  const store = createStore();
176
176
  store.set(notebookAtom, notebook);
177
- store.set(connectionAtom, { state: WebSocketState.OPEN });
177
+ store.set(connectionAtom, { state: ConnectionState.OPEN });
178
178
  store.set(requestClientAtom, resolveRequestClient());
179
179
  store.set(showCodeInRunModeAtom, true);
180
180
 
@@ -0,0 +1,62 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+ import type { Meta, StoryObj } from "@storybook/react-vite";
3
+ import {
4
+ ProgressStages,
5
+ type ProgressState,
6
+ } from "@/components/ui/progress-stages";
7
+
8
+ function ProgressStagesStory({
9
+ state,
10
+ completedStage,
11
+ }: {
12
+ state: ProgressState;
13
+ completedStage: boolean;
14
+ }) {
15
+ return (
16
+ <div className="w-80 space-y-6">
17
+ <p className="text-sm text-muted-foreground">
18
+ Isolated stage styling. For the actual notebook and sidebar, use the
19
+ walkthroughs under Runtime.
20
+ </p>
21
+ <ProgressStages
22
+ label="Example stages"
23
+ stages={[
24
+ ...(completedStage
25
+ ? [
26
+ {
27
+ id: "previous",
28
+ state: "succeeded" as const,
29
+ title: "Previous stage",
30
+ description: "This stage has finished.",
31
+ },
32
+ ]
33
+ : []),
34
+ {
35
+ id: "current",
36
+ state,
37
+ title: "Current stage",
38
+ description: "Change the state using the Storybook controls.",
39
+ },
40
+ ]}
41
+ />
42
+ </div>
43
+ );
44
+ }
45
+
46
+ const meta = {
47
+ title: "UI Primitives/ProgressStages",
48
+ component: ProgressStagesStory,
49
+ parameters: { layout: "centered" },
50
+ args: { state: "running", completedStage: true },
51
+ argTypes: {
52
+ state: {
53
+ control: "radio",
54
+ options: ["waiting", "running", "succeeded", "failed"],
55
+ },
56
+ },
57
+ } satisfies Meta<typeof ProgressStagesStory>;
58
+ export default meta;
59
+ type Story = StoryObj<typeof meta>;
60
+
61
+ export const MultipleStages: Story = {};
62
+ export const SingleStage: Story = { args: { completedStage: false } };
@@ -0,0 +1,44 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+ import type { Meta, StoryObj } from "@storybook/react-vite";
3
+ import { type RuntimeStory, runtimeStoryMeta } from "./runtime-story";
4
+
5
+ const meta = {
6
+ ...runtimeStoryMeta,
7
+ title: "Runtime/Existing environment",
8
+ args: { ...runtimeStoryMeta.args, backend: null, phase: "starting" },
9
+ } satisfies Meta<typeof RuntimeStory>;
10
+ export default meta;
11
+ type Story = StoryObj<typeof meta>;
12
+
13
+ export const Walkthrough: Story = {
14
+ name: "Walkthrough",
15
+ args: { manual: true, detailsOpen: true },
16
+ };
17
+ export const NotebookConnecting: Story = {
18
+ name: "Notebook — connecting",
19
+ args: {},
20
+ };
21
+ export const NotebookFailed: Story = {
22
+ name: "Notebook — failure and retry",
23
+ args: { phase: "failed" },
24
+ };
25
+ export const EmptyNotebook: Story = {
26
+ name: "Empty notebook — connecting",
27
+ args: { existingCells: false },
28
+ };
29
+ export const DetailsConnecting: Story = {
30
+ name: "Sidebar — connecting",
31
+ args: { surface: "packages" },
32
+ };
33
+ export const DetailsFailed: Story = {
34
+ name: "Sidebar — failure details",
35
+ args: { surface: "packages", phase: "failed" },
36
+ };
37
+ export const Ready: Story = {
38
+ name: "Sidebar — ready",
39
+ args: { surface: "packages", phase: "ready" },
40
+ };
41
+ export const Completion: Story = {
42
+ name: "Automatic completion",
43
+ args: { interactive: true },
44
+ };
@@ -0,0 +1,40 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+ import type { Meta, StoryObj } from "@storybook/react-vite";
3
+ import { type RuntimeStory, runtimeStoryMeta } from "./runtime-story";
4
+
5
+ const meta = {
6
+ ...runtimeStoryMeta,
7
+ title: "Runtime/Sandbox maintenance",
8
+ args: { ...runtimeStoryMeta.args, backend: "uv", surface: "packages" },
9
+ } satisfies Meta<typeof RuntimeStory>;
10
+ export default meta;
11
+ type Story = StoryObj<typeof meta>;
12
+
13
+ export const Syncing: Story = {
14
+ name: "Sync — in progress",
15
+ args: { phase: "syncing" },
16
+ };
17
+ export const SyncFailed: Story = {
18
+ name: "Sync — failed",
19
+ args: { phase: "sync-failed" },
20
+ };
21
+ export const Synced: Story = {
22
+ name: "Sync — completed",
23
+ args: { phase: "synced" },
24
+ };
25
+ export const RestartRequired: Story = {
26
+ name: "Sync — restart required",
27
+ args: { phase: "restart-required" },
28
+ };
29
+ export const ManifestEditor: Story = {
30
+ name: "Manifest — edit",
31
+ args: { surface: "manifest", phase: "failed" },
32
+ };
33
+ export const ManifestSyncFailed: Story = {
34
+ name: "Manifest — sync failed",
35
+ args: { surface: "manifest", phase: "failed", saveResult: "failure" },
36
+ };
37
+ export const ManifestChanged: Story = {
38
+ name: "Manifest — changed on disk",
39
+ args: { surface: "manifest", phase: "failed", saveResult: "stale" },
40
+ };
@@ -0,0 +1,28 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+ import type { Meta, StoryObj } from "@storybook/react-vite";
3
+ import { type RuntimeStory, runtimeStoryMeta } from "./runtime-story";
4
+
5
+ const meta = {
6
+ ...runtimeStoryMeta,
7
+ title: "Runtime/pixi sandbox",
8
+ args: { ...runtimeStoryMeta.args, backend: "pixi" },
9
+ } satisfies Meta<typeof RuntimeStory>;
10
+ export default meta;
11
+ type Story = StoryObj<typeof meta>;
12
+
13
+ export const Walkthrough: Story = {
14
+ name: "Walkthrough",
15
+ args: { manual: true, detailsOpen: true },
16
+ };
17
+ export const Ready: Story = {
18
+ name: "Sidebar — ready",
19
+ args: { surface: "packages", phase: "ready" },
20
+ };
21
+ export const Completion: Story = {
22
+ name: "Notebook — automatic completion",
23
+ args: { interactive: true },
24
+ };
25
+ export const EmptyCompletion: Story = {
26
+ name: "Empty notebook — automatic completion",
27
+ args: { interactive: true, existingCells: false },
28
+ };