@marimo-team/frontend 0.18.5-dev168 → 0.18.5-dev171

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 (140) hide show
  1. package/dist/assets/{CellStatus-C5QfWAQj.js → CellStatus-ClrYbUob.js} +1 -1
  2. package/dist/assets/{ConnectedDataExplorerComponent-B0tKPs5t.js → ConnectedDataExplorerComponent-KlUs_Sz3.js} +1 -1
  3. package/dist/assets/{ErrorBoundary-BYCO3_zw.js → ErrorBoundary-Drf1manw.js} +1 -1
  4. package/dist/assets/{ImperativeModal-7Thr73Oo.js → ImperativeModal-q6QlC2aZ.js} +1 -1
  5. package/dist/assets/{JsonOutput-NOfbbuUx.js → JsonOutput-CkeISXrs.js} +9 -9
  6. package/dist/assets/{LazyAnyLanguageCodeMirror-DIbHWNF6.js → LazyAnyLanguageCodeMirror-jpEDlD0M.js} +2 -2
  7. package/dist/assets/{MarimoErrorOutput-usFICLUe.js → MarimoErrorOutput-CO8cm8-0.js} +2 -2
  8. package/dist/assets/{RenderHTML-LxV1eecf.js → RenderHTML-D6fh5YLC.js} +1 -1
  9. package/dist/assets/{VisuallyHidden-BLp5kXtE.js → VisuallyHidden-BodIky8L.js} +1 -1
  10. package/dist/assets/{add-cell-with-ai-CEKGThxQ.js → add-cell-with-ai-B3V6Mgb9.js} +12 -12
  11. package/dist/assets/{add-database-form-DQyrphh9.js → add-database-form-C-K88iSC.js} +1 -1
  12. package/dist/assets/{agent-panel-CnTn12AW.js → agent-panel-BvLqBe3U.js} +6 -6
  13. package/dist/assets/{ai-model-dropdown-CxRols0L.js → ai-model-dropdown-D1nEKS8b.js} +1 -1
  14. package/dist/assets/{alert-dialog-B3T1GCoD.js → alert-dialog-k5KxevGr.js} +1 -1
  15. package/dist/assets/any-language-editor-DQu1Tt2N.js +3 -0
  16. package/dist/assets/{app-config-button-DtMP2_j5.js → app-config-button-BD5l-v4I.js} +1 -1
  17. package/dist/assets/{button-C9TEIJJh.js → button-DuYGqRtX.js} +1 -1
  18. package/dist/assets/{cache-panel-C-YLXsti.js → cache-panel-C1So4Zu3.js} +1 -1
  19. package/dist/assets/{capabilities-h9_pyvFv.js → capabilities-BmAOeMOK.js} +1 -1
  20. package/dist/assets/{capitalize-D4JsDDXI.js → capitalize-DQeWKRGx.js} +1 -1
  21. package/dist/assets/{cell-actions-DCZqhhwF.js → cell-actions-CJiaF9Tu.js} +1 -1
  22. package/dist/assets/cell-link-Hwo1QbqQ.js +1 -0
  23. package/dist/assets/{cells-DAR6V-0d.js → cells-rr1jjvJk.js} +33 -33
  24. package/dist/assets/{chat-components-CyY2c7cG.js → chat-components-DXJsXOD8.js} +1 -1
  25. package/dist/assets/{chat-display-BgCCmGdz.js → chat-display-C08N0rx5.js} +1 -1
  26. package/dist/assets/{chat-panel-ByuXM3gc.js → chat-panel-CNL6ANh8.js} +2 -2
  27. package/dist/assets/client-SMzMTiO_.js +4 -0
  28. package/dist/assets/{column-preview-DBqi4KCj.js → column-preview-BzvHnhPG.js} +1 -1
  29. package/dist/assets/command-palette-B_md1fzh.js +1 -0
  30. package/dist/assets/{command-BXWdrTY9.js → command-xU8ykulh.js} +1 -1
  31. package/dist/assets/{common-D10A9aix.js → common-_RAkDTpe.js} +1 -1
  32. package/dist/assets/{config-D3ojpe3F.js → config-cCkBQ_ER.js} +1 -1
  33. package/dist/assets/{copy-Bmkr29w4.js → copy-DRhpWiOq.js} +1 -1
  34. package/dist/assets/{copy-icon-qVgCqhII.js → copy-icon-B69c-352.js} +1 -1
  35. package/dist/assets/{createReducer-CaezzNVH.js → createReducer-DDa-hVe3.js} +1 -1
  36. package/dist/assets/{datasource-CW2RMV2e.js → datasource-DHbNHnua.js} +2 -2
  37. package/dist/assets/{dates-B2_O0-if.js → dates-CdsE1R40.js} +1 -1
  38. package/dist/assets/{dependency-graph-panel-CtlDdK0s.js → dependency-graph-panel-BGp5UzmZ.js} +3 -3
  39. package/dist/assets/{dialog-DIUTtzeB.js → dialog-DUEuLcT2.js} +1 -1
  40. package/dist/assets/{dist-vrNOUnFF.js → dist-DOFFh6Ii.js} +1 -1
  41. package/dist/assets/{documentation-panel-Cup0ghBs.js → documentation-panel-CuPlvIjJ.js} +1 -1
  42. package/dist/assets/{download-D3Uujsn_.js → download-DKRxBkYD.js} +1 -1
  43. package/dist/assets/edit-page-DAFshpgY.js +13 -0
  44. package/dist/assets/{error-banner-D2-5vgE4.js → error-banner-DU5Qb8a8.js} +1 -1
  45. package/dist/assets/{error-panel-DcRvXIwA.js → error-panel-CoYFpNUd.js} +1 -1
  46. package/dist/assets/{es-DCqUUmrq.js → es-YVwBDiDw.js} +1 -1
  47. package/dist/assets/{field-D2_0r7wT.js → field-DDKGFzpC.js} +1 -1
  48. package/dist/assets/{file-explorer-panel-9Bt20tRi.js → file-explorer-panel-BcpntT7Q.js} +1 -1
  49. package/dist/assets/{floating-outline-BTc4L5BF.js → floating-outline-CHprSkP6.js} +1 -1
  50. package/dist/assets/{focus-6-St0ai2.js → focus-D3ygI6Sy.js} +1 -1
  51. package/dist/assets/{form-1WOcPtE8.js → form-B_zRT4QS.js} +2 -2
  52. package/dist/assets/{formats-nh-sPUUZ.js → formats-B9CrBoaO.js} +1 -1
  53. package/dist/assets/{glide-data-editor-EdMWe-iv.js → glide-data-editor-Brckuic5.js} +1 -1
  54. package/dist/assets/{globals-CJb4gcmW.js → globals-D46Vbo5D.js} +1 -1
  55. package/dist/assets/{home-page-Lqy9A89-.js → home-page-DuPzZzUf.js} +2 -2
  56. package/dist/assets/hotkeys-uKX61F1_.js +1 -0
  57. package/dist/assets/{index-CIoUDThG.js → index-CQBtzy-J.js} +9 -9
  58. package/dist/assets/index-G6ss-VDT.css +2 -0
  59. package/dist/assets/{input-DP44ewsS.js → input-CaEtLL8p.js} +1 -1
  60. package/dist/assets/{kiosk-mode-C3lS9kUL.js → kiosk-mode-CTjr_Jn4.js} +1 -1
  61. package/dist/assets/{label-DJo0Eeb3.js → label-qwandMoh.js} +1 -1
  62. package/dist/assets/{layout-F63rlsGg.js → layout-CprHgyfx.js} +4 -4
  63. package/dist/assets/links-Cw9RjHIY.js +1 -0
  64. package/dist/assets/{logs-panel-fnMYUf4-.js → logs-panel-CFM-1lMP.js} +1 -1
  65. package/dist/assets/{maps-DELIOfTw.js → maps-s2pQkyf5.js} +1 -1
  66. package/dist/assets/{markdown-renderer-B9gYLzJX.js → markdown-renderer-DecoaRsV.js} +1 -1
  67. package/dist/assets/{mermaid-BUMgiGGr.js → mermaid-BPkO79lo.js} +1 -1
  68. package/dist/assets/{mode-D4GlAyEq.js → mode-BYulXE3t.js} +1 -1
  69. package/dist/assets/{multi-map-TecGBFLS.js → multi-map-fjX9ImVF.js} +1 -1
  70. package/dist/assets/{name-cell-input-BMtblyo6.js → name-cell-input-BGJDnv5Z.js} +1 -1
  71. package/dist/assets/{numbers-Ckcn6C-H.js → numbers-C9_R_vlY.js} +1 -1
  72. package/dist/assets/outline-panel-C-__7mIh.js +1 -0
  73. package/dist/assets/{packages-panel-DyC7zUxG.js → packages-panel-B4bQCG8Y.js} +1 -1
  74. package/dist/assets/{cell-editor-DJ1tY3mU.js → panel-context-Bee798AZ.js} +13 -13
  75. package/dist/assets/{panels-wYHy1fpG.js → panels-CuLZ4Xjj.js} +1 -1
  76. package/dist/assets/{process-output-D1GR6Ero.js → process-output-2gz8Uri2.js} +1 -1
  77. package/dist/assets/{readonly-python-code-CGnOB_RP.js → readonly-python-code-ihKi3Mrq.js} +1 -1
  78. package/dist/assets/{renderShortcut-CV_tqoEI.js → renderShortcut-D0Pei-OA.js} +1 -1
  79. package/dist/assets/{run-page-BLnJcKtg.js → run-page-Q1ifcEUY.js} +1 -1
  80. package/dist/assets/{runs-BbV5uZz6.js → runs-yuOchwkU.js} +1 -1
  81. package/dist/assets/scratchpad-panel-B75Qsjwz.js +1 -0
  82. package/dist/assets/{secrets-panel-K7EccfRa.js → secrets-panel-CDWmmmBS.js} +1 -1
  83. package/dist/assets/{select-BJ18Dxpd.js → select-D0g5GnIs.js} +1 -1
  84. package/dist/assets/{session-panel-C3rDPyig.js → session-panel-Bn5_JmbT.js} +1 -1
  85. package/dist/assets/{share-0dWXMs9M.js → share-CXQVxivL.js} +1 -1
  86. package/dist/assets/{slides-component-CZ76zal6.js → slides-component-DUIqQih1.js} +1 -1
  87. package/dist/assets/{snippets-panel-s0p4CCoa.js → snippets-panel-CVBBnX9H.js} +1 -1
  88. package/dist/assets/{spec-D9TFI5I_.js → spec-qp_XZeSS.js} +1 -1
  89. package/dist/assets/{state-DwSzcmzL.js → state-BHFBtWym.js} +1 -1
  90. package/dist/assets/{state-CGq6kn1k.js → state-CIznbe1J.js} +1 -1
  91. package/dist/assets/{state-BK5o1KAL.js → state-DNwec0Uj.js} +1 -1
  92. package/dist/assets/{switch-C8yab1pC.js → switch-iJj-D3dz.js} +1 -1
  93. package/dist/assets/{terminal-CA6CqpuO.js → terminal-CRIGvHBN.js} +1 -1
  94. package/dist/assets/{textarea-DBFtOima.js → textarea-DmNrZcLR.js} +1 -1
  95. package/dist/assets/{tooltip-BNPhCMFo.js → tooltip-CrRUCOBw.js} +1 -1
  96. package/dist/assets/tracing-D9h130fg.js +1 -0
  97. package/dist/assets/{tracing-panel-C-o1Db4W.js → tracing-panel-DaDvGMEN.js} +2 -2
  98. package/dist/assets/{type-drzC-SxF.js → type-BdyvjzTI.js} +1 -1
  99. package/dist/assets/{types-Bt3U-XJV.js → types-4-l_7Ws2.js} +1 -1
  100. package/dist/assets/{useAddCell-CNI3pgez.js → useAddCell-BpMe5DB-.js} +1 -1
  101. package/dist/assets/{useBoolean-C_vQizET.js → useBoolean-BDG41CyP.js} +1 -1
  102. package/dist/assets/{useCellActionButton-BbfiHu5s.js → useCellActionButton-Dh4wbVPA.js} +1 -1
  103. package/dist/assets/{useDeleteCell-B_jFiS1Y.js → useDeleteCell-DBzN8QcP.js} +1 -1
  104. package/dist/assets/{useIframeCapabilities-ZISlVepl.js → useIframeCapabilities-CU-WWxnz.js} +1 -1
  105. package/dist/assets/{useInstallPackage-CBvG269f.js → useInstallPackage-RldLPyJs.js} +1 -1
  106. package/dist/assets/{useLifecycle-BX7GmOQ5.js → useLifecycle-CmDXEyIC.js} +1 -1
  107. package/dist/assets/{useNotebookActions-BeM5fet2.js → useNotebookActions-DKyQBNlS.js} +1 -1
  108. package/dist/assets/useRunCells-BGzo-QMk.js +1 -0
  109. package/dist/assets/{useSplitCell-COPg5dJw.js → useSplitCell-CvKAuKQ_.js} +1 -1
  110. package/dist/assets/{useTheme-CuOCKnyR.js → useTheme-DfP1CWaW.js} +1 -1
  111. package/dist/assets/{utilities.esm-B7XtzwiJ.js → utilities.esm-CT3NbLA9.js} +2 -2
  112. package/dist/assets/{utils-Cxqw03y3.js → utils-CJJIceVn.js} +1 -1
  113. package/dist/assets/{vega-component-arPQXQS8.js → vega-component-CLrcy81y.js} +1 -1
  114. package/dist/assets/{write-secret-modal-CIbhcoWF.js → write-secret-modal-CLm48gMe.js} +1 -1
  115. package/dist/index.html +68 -68
  116. package/package.json +1 -1
  117. package/src/components/editor/actions/useNotebookActions.tsx +1 -1
  118. package/src/components/editor/chrome/panels/panel-context.tsx +34 -0
  119. package/src/components/editor/chrome/state.ts +30 -15
  120. package/src/components/editor/chrome/types.ts +67 -77
  121. package/src/components/editor/chrome/wrapper/app-chrome.tsx +216 -139
  122. package/src/components/editor/chrome/wrapper/sidebar.tsx +76 -43
  123. package/src/components/scratchpad/scratchpad.tsx +17 -4
  124. package/src/components/ui/reorderable-list.tsx +190 -31
  125. package/src/core/codemirror/cells/extensions.ts +7 -4
  126. package/src/core/hotkeys/__tests__/shortcuts.test.ts +61 -4
  127. package/src/core/hotkeys/shortcuts.ts +34 -2
  128. package/dist/assets/any-language-editor-CTAS1EXW.js +0 -3
  129. package/dist/assets/cell-link-DjST51KF.js +0 -1
  130. package/dist/assets/client-BQowSjqE.js +0 -4
  131. package/dist/assets/command-palette-CjFiCjws.js +0 -1
  132. package/dist/assets/edit-page-fJ4hHm67.js +0 -13
  133. package/dist/assets/hotkeys-D3ICc8RW.js +0 -1
  134. package/dist/assets/index-D-BWugLn.css +0 -2
  135. package/dist/assets/links-ZVVAwqm7.js +0 -1
  136. package/dist/assets/outline-panel-Blq76m9b.js +0 -1
  137. package/dist/assets/scratchpad-panel-CTJDEy90.js +0 -1
  138. package/dist/assets/tracing-VZVj-gEo.js +0 -1
  139. package/dist/assets/useRunCells-oeY0TrS1.js +0 -1
  140. /package/dist/assets/{cell-editor-Iey559K_.css → panel-context-Iey559K_.css} +0 -0
package/dist/index.html CHANGED
@@ -66,15 +66,15 @@
66
66
  <marimo-server-token data-token="{{ server_token }}" hidden></marimo-server-token>
67
67
  <!-- /TODO -->
68
68
  <title>{{ title }}</title>
69
- <script type="module" crossorigin src="./assets/index-CIoUDThG.js"></script>
69
+ <script type="module" crossorigin src="./assets/index-CQBtzy-J.js"></script>
70
70
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-BW0IMuFq.js">
71
- <link rel="modulepreload" crossorigin href="./assets/hotkeys-D3ICc8RW.js">
71
+ <link rel="modulepreload" crossorigin href="./assets/hotkeys-uKX61F1_.js">
72
72
  <link rel="modulepreload" crossorigin href="./assets/defaultLocale-BLUna9fQ.js">
73
73
  <link rel="modulepreload" crossorigin href="./assets/precisionRound-Cl9k9ZmS.js">
74
74
  <link rel="modulepreload" crossorigin href="./assets/defaultLocale-DzliDDTm.js">
75
75
  <link rel="modulepreload" crossorigin href="./assets/vega-loader.browser-C8wT63Va.js">
76
76
  <link rel="modulepreload" crossorigin href="./assets/_Uint8Array-BGESiCQL.js">
77
- <link rel="modulepreload" crossorigin href="./assets/tooltip-BNPhCMFo.js">
77
+ <link rel="modulepreload" crossorigin href="./assets/tooltip-CrRUCOBw.js">
78
78
  <link rel="modulepreload" crossorigin href="./assets/clsx-D0MtrJOx.js">
79
79
  <link rel="modulepreload" crossorigin href="./assets/cn-C1rgT0yh.js">
80
80
  <link rel="modulepreload" crossorigin href="./assets/chunk-LvLJmgfZ.js">
@@ -83,14 +83,14 @@
83
83
  <link rel="modulepreload" crossorigin href="./assets/jsx-runtime-DN_bIXfG.js">
84
84
  <link rel="modulepreload" crossorigin href="./assets/badge-DAnNhy3O.js">
85
85
  <link rel="modulepreload" crossorigin href="./assets/useEventListener-COkmyg1v.js">
86
- <link rel="modulepreload" crossorigin href="./assets/button-C9TEIJJh.js">
86
+ <link rel="modulepreload" crossorigin href="./assets/button-DuYGqRtX.js">
87
87
  <link rel="modulepreload" crossorigin href="./assets/react-dom-C9fstfnp.js">
88
88
  <link rel="modulepreload" crossorigin href="./assets/Combination-D1TsGrBC.js">
89
89
  <link rel="modulepreload" crossorigin href="./assets/menu-items-9PZrU2e0.js">
90
90
  <link rel="modulepreload" crossorigin href="./assets/dist-CBrDuocE.js">
91
91
  <link rel="modulepreload" crossorigin href="./assets/createLucideIcon-CW2xpJ57.js">
92
92
  <link rel="modulepreload" crossorigin href="./assets/check-CrAQug3q.js">
93
- <link rel="modulepreload" crossorigin href="./assets/select-BJ18Dxpd.js">
93
+ <link rel="modulepreload" crossorigin href="./assets/select-D0g5GnIs.js">
94
94
  <link rel="modulepreload" crossorigin href="./assets/tooltip-CvjcEpZC.js">
95
95
  <link rel="modulepreload" crossorigin href="./assets/use-toast-Bzf3rpev.js">
96
96
  <link rel="modulepreload" crossorigin href="./assets/_getTag-BWqNuuwU.js">
@@ -100,22 +100,22 @@
100
100
  <link rel="modulepreload" crossorigin href="./assets/_baseFor-Duhs3RiJ.js">
101
101
  <link rel="modulepreload" crossorigin href="./assets/merge-BBX6ug-N.js">
102
102
  <link rel="modulepreload" crossorigin href="./assets/zod-Cg4WLWh2.js">
103
- <link rel="modulepreload" crossorigin href="./assets/utils-Cxqw03y3.js">
103
+ <link rel="modulepreload" crossorigin href="./assets/utils-CJJIceVn.js">
104
104
  <link rel="modulepreload" crossorigin href="./assets/constants-Bkp4R3bQ.js">
105
105
  <link rel="modulepreload" crossorigin href="./assets/Deferred-DzyBMRsy.js">
106
- <link rel="modulepreload" crossorigin href="./assets/config-D3ojpe3F.js">
106
+ <link rel="modulepreload" crossorigin href="./assets/config-cCkBQ_ER.js">
107
107
  <link rel="modulepreload" crossorigin href="./assets/uuid-ClFZlR7U.js">
108
108
  <link rel="modulepreload" crossorigin href="./assets/DeferredRequestRegistry-B3BENoUa.js">
109
109
  <link rel="modulepreload" crossorigin href="./assets/requests-C0HaHO6a.js">
110
110
  <link rel="modulepreload" crossorigin href="./assets/isSymbol-BGkTcW3U.js">
111
111
  <link rel="modulepreload" crossorigin href="./assets/toString-DlRqgfqz.js">
112
112
  <link rel="modulepreload" crossorigin href="./assets/_hasUnicode-zBEpxwYe.js">
113
- <link rel="modulepreload" crossorigin href="./assets/useLifecycle-BX7GmOQ5.js">
113
+ <link rel="modulepreload" crossorigin href="./assets/useLifecycle-CmDXEyIC.js">
114
114
  <link rel="modulepreload" crossorigin href="./assets/useNonce-EAuSVK-5.js">
115
- <link rel="modulepreload" crossorigin href="./assets/useTheme-CuOCKnyR.js">
115
+ <link rel="modulepreload" crossorigin href="./assets/useTheme-DfP1CWaW.js">
116
116
  <link rel="modulepreload" crossorigin href="./assets/once-CTiSlR1m.js">
117
- <link rel="modulepreload" crossorigin href="./assets/capabilities-h9_pyvFv.js">
118
- <link rel="modulepreload" crossorigin href="./assets/createReducer-CaezzNVH.js">
117
+ <link rel="modulepreload" crossorigin href="./assets/capabilities-BmAOeMOK.js">
118
+ <link rel="modulepreload" crossorigin href="./assets/createReducer-DDa-hVe3.js">
119
119
  <link rel="modulepreload" crossorigin href="./assets/dist-CAcX026F.js">
120
120
  <link rel="modulepreload" crossorigin href="./assets/dist-DKNOF5xd.js">
121
121
  <link rel="modulepreload" crossorigin href="./assets/dist-CI6_zMIl.js">
@@ -129,119 +129,119 @@
129
129
  <link rel="modulepreload" crossorigin href="./assets/toDate-5JckKRQn.js">
130
130
  <link rel="modulepreload" crossorigin href="./assets/cjs-Bj40p_Np.js">
131
131
  <link rel="modulepreload" crossorigin href="./assets/_arrayReduce-bZBYsK-u.js">
132
- <link rel="modulepreload" crossorigin href="./assets/type-drzC-SxF.js">
132
+ <link rel="modulepreload" crossorigin href="./assets/type-BdyvjzTI.js">
133
133
  <link rel="modulepreload" crossorigin href="./assets/_baseProperty-DuoFhI7N.js">
134
134
  <link rel="modulepreload" crossorigin href="./assets/now-6sUe0ZdD.js">
135
135
  <link rel="modulepreload" crossorigin href="./assets/debounce-BbFlGgjv.js">
136
136
  <link rel="modulepreload" crossorigin href="./assets/toInteger-CDcO32Gx.js">
137
137
  <link rel="modulepreload" crossorigin href="./assets/database-zap-CaVvnK_o.js">
138
138
  <link rel="modulepreload" crossorigin href="./assets/main-CwSdzVhm.js">
139
- <link rel="modulepreload" crossorigin href="./assets/cells-DAR6V-0d.js">
140
- <link rel="modulepreload" crossorigin href="./assets/ErrorBoundary-BYCO3_zw.js">
139
+ <link rel="modulepreload" crossorigin href="./assets/cells-rr1jjvJk.js">
140
+ <link rel="modulepreload" crossorigin href="./assets/ErrorBoundary-Drf1manw.js">
141
141
  <link rel="modulepreload" crossorigin href="./assets/kbd-Czc5z_04.js">
142
- <link rel="modulepreload" crossorigin href="./assets/useInstallPackage-CBvG269f.js">
143
- <link rel="modulepreload" crossorigin href="./assets/alert-dialog-B3T1GCoD.js">
144
- <link rel="modulepreload" crossorigin href="./assets/dialog-DIUTtzeB.js">
142
+ <link rel="modulepreload" crossorigin href="./assets/useInstallPackage-RldLPyJs.js">
143
+ <link rel="modulepreload" crossorigin href="./assets/alert-dialog-k5KxevGr.js">
144
+ <link rel="modulepreload" crossorigin href="./assets/dialog-DUEuLcT2.js">
145
145
  <link rel="modulepreload" crossorigin href="./assets/useDebounce-em3gna-v.js">
146
- <link rel="modulepreload" crossorigin href="./assets/numbers-Ckcn6C-H.js">
146
+ <link rel="modulepreload" crossorigin href="./assets/numbers-C9_R_vlY.js">
147
147
  <link rel="modulepreload" crossorigin href="./assets/SSRProvider-DD7JA3RM.js">
148
148
  <link rel="modulepreload" crossorigin href="./assets/context-BAYdLMF_.js">
149
149
  <link rel="modulepreload" crossorigin href="./assets/useNumberFormatter-D8ks3oPN.js">
150
150
  <link rel="modulepreload" crossorigin href="./assets/usePress-C2LPFxyv.js">
151
- <link rel="modulepreload" crossorigin href="./assets/input-DP44ewsS.js">
152
- <link rel="modulepreload" crossorigin href="./assets/ImperativeModal-7Thr73Oo.js">
153
- <link rel="modulepreload" crossorigin href="./assets/cell-link-DjST51KF.js">
154
- <link rel="modulepreload" crossorigin href="./assets/multi-map-TecGBFLS.js">
151
+ <link rel="modulepreload" crossorigin href="./assets/input-CaEtLL8p.js">
152
+ <link rel="modulepreload" crossorigin href="./assets/ImperativeModal-q6QlC2aZ.js">
153
+ <link rel="modulepreload" crossorigin href="./assets/cell-link-Hwo1QbqQ.js">
154
+ <link rel="modulepreload" crossorigin href="./assets/multi-map-fjX9ImVF.js">
155
155
  <link rel="modulepreload" crossorigin href="./assets/alert-BEdExd6A.js">
156
156
  <link rel="modulepreload" crossorigin href="./assets/chevron-right-CqEd11Di.js">
157
157
  <link rel="modulepreload" crossorigin href="./assets/dropdown-menu-BP4_BZLr.js">
158
158
  <link rel="modulepreload" crossorigin href="./assets/links-DNmjkr65.js">
159
- <link rel="modulepreload" crossorigin href="./assets/datasource-CW2RMV2e.js">
160
- <link rel="modulepreload" crossorigin href="./assets/state-DwSzcmzL.js">
161
- <link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-usFICLUe.js">
162
- <link rel="modulepreload" crossorigin href="./assets/copy-Bmkr29w4.js">
159
+ <link rel="modulepreload" crossorigin href="./assets/datasource-DHbNHnua.js">
160
+ <link rel="modulepreload" crossorigin href="./assets/state-BHFBtWym.js">
161
+ <link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-CO8cm8-0.js">
162
+ <link rel="modulepreload" crossorigin href="./assets/copy-DRhpWiOq.js">
163
163
  <link rel="modulepreload" crossorigin href="./assets/copy-gBVL4NN-.js">
164
- <link rel="modulepreload" crossorigin href="./assets/copy-icon-qVgCqhII.js">
164
+ <link rel="modulepreload" crossorigin href="./assets/copy-icon-B69c-352.js">
165
165
  <link rel="modulepreload" crossorigin href="./assets/spinner-C1czjtp7.js">
166
- <link rel="modulepreload" crossorigin href="./assets/es-DCqUUmrq.js">
167
- <link rel="modulepreload" crossorigin href="./assets/focus-6-St0ai2.js">
168
- <link rel="modulepreload" crossorigin href="./assets/LazyAnyLanguageCodeMirror-DIbHWNF6.js">
166
+ <link rel="modulepreload" crossorigin href="./assets/es-YVwBDiDw.js">
167
+ <link rel="modulepreload" crossorigin href="./assets/focus-D3ygI6Sy.js">
168
+ <link rel="modulepreload" crossorigin href="./assets/LazyAnyLanguageCodeMirror-jpEDlD0M.js">
169
169
  <link rel="modulepreload" crossorigin href="./assets/katex-AwOI3EvM.js">
170
170
  <link rel="modulepreload" crossorigin href="./assets/marked.esm-CHnOtnr3.js">
171
171
  <link rel="modulepreload" crossorigin href="./assets/chunk-OGVTOU66-CjNLT2C3.js">
172
- <link rel="modulepreload" crossorigin href="./assets/markdown-renderer-B9gYLzJX.js">
173
- <link rel="modulepreload" crossorigin href="./assets/dist-vrNOUnFF.js">
174
- <link rel="modulepreload" crossorigin href="./assets/command-BXWdrTY9.js">
172
+ <link rel="modulepreload" crossorigin href="./assets/markdown-renderer-DecoaRsV.js">
173
+ <link rel="modulepreload" crossorigin href="./assets/dist-DOFFh6Ii.js">
174
+ <link rel="modulepreload" crossorigin href="./assets/command-xU8ykulh.js">
175
175
  <link rel="modulepreload" crossorigin href="./assets/popover-DtnzNVk-.js">
176
- <link rel="modulepreload" crossorigin href="./assets/useRunCells-oeY0TrS1.js">
177
- <link rel="modulepreload" crossorigin href="./assets/mode-D4GlAyEq.js">
176
+ <link rel="modulepreload" crossorigin href="./assets/useRunCells-BGzo-QMk.js">
177
+ <link rel="modulepreload" crossorigin href="./assets/mode-BYulXE3t.js">
178
178
  <link rel="modulepreload" crossorigin href="./assets/purify.es-N-2faAGj.js">
179
- <link rel="modulepreload" crossorigin href="./assets/RenderHTML-LxV1eecf.js">
179
+ <link rel="modulepreload" crossorigin href="./assets/RenderHTML-D6fh5YLC.js">
180
180
  <link rel="modulepreload" crossorigin href="./assets/table--_20dwBZ.js">
181
181
  <link rel="modulepreload" crossorigin href="./assets/tabs-Ctk4D03n.js">
182
182
  <link rel="modulepreload" crossorigin href="./assets/useAsyncData-BJJJOr9W.js">
183
- <link rel="modulepreload" crossorigin href="./assets/useIframeCapabilities-ZISlVepl.js">
184
- <link rel="modulepreload" crossorigin href="./assets/error-banner-D2-5vgE4.js">
185
- <link rel="modulepreload" crossorigin href="./assets/formats-nh-sPUUZ.js">
183
+ <link rel="modulepreload" crossorigin href="./assets/useIframeCapabilities-CU-WWxnz.js">
184
+ <link rel="modulepreload" crossorigin href="./assets/error-banner-DU5Qb8a8.js">
185
+ <link rel="modulepreload" crossorigin href="./assets/formats-B9CrBoaO.js">
186
186
  <link rel="modulepreload" crossorigin href="./assets/en-US-DhMN8sxe.js">
187
187
  <link rel="modulepreload" crossorigin href="./assets/isValid-DhzaK-Y1.js">
188
- <link rel="modulepreload" crossorigin href="./assets/dates-B2_O0-if.js">
189
- <link rel="modulepreload" crossorigin href="./assets/download-D3Uujsn_.js">
190
- <link rel="modulepreload" crossorigin href="./assets/maps-DELIOfTw.js">
188
+ <link rel="modulepreload" crossorigin href="./assets/dates-CdsE1R40.js">
189
+ <link rel="modulepreload" crossorigin href="./assets/download-DKRxBkYD.js">
190
+ <link rel="modulepreload" crossorigin href="./assets/maps-s2pQkyf5.js">
191
191
  <link rel="modulepreload" crossorigin href="./assets/extends-B9D0JO9U.js">
192
192
  <link rel="modulepreload" crossorigin href="./assets/emotion-is-prop-valid.esm-lG8j6oqk.js">
193
193
  <link rel="modulepreload" crossorigin href="./assets/useDateFormatter-CV0QXb5P.js">
194
194
  <link rel="modulepreload" crossorigin href="./assets/range-sshwVRcP.js">
195
- <link rel="modulepreload" crossorigin href="./assets/capitalize-D4JsDDXI.js">
195
+ <link rel="modulepreload" crossorigin href="./assets/capitalize-DQeWKRGx.js">
196
196
  <link rel="modulepreload" crossorigin href="./assets/table-BLx7B_us.js">
197
- <link rel="modulepreload" crossorigin href="./assets/JsonOutput-NOfbbuUx.js">
197
+ <link rel="modulepreload" crossorigin href="./assets/JsonOutput-CkeISXrs.js">
198
198
  <link rel="modulepreload" crossorigin href="./assets/file-BnFXtaZZ.js">
199
199
  <link rel="modulepreload" crossorigin href="./assets/play-BJDBXApx.js">
200
- <link rel="modulepreload" crossorigin href="./assets/chat-components-CyY2c7cG.js">
200
+ <link rel="modulepreload" crossorigin href="./assets/chat-components-DXJsXOD8.js">
201
201
  <link rel="modulepreload" crossorigin href="./assets/isEmpty-DIxUV1UR.js">
202
202
  <link rel="modulepreload" crossorigin href="./assets/circle-check-big-OIMTUpe6.js">
203
- <link rel="modulepreload" crossorigin href="./assets/chat-display-BgCCmGdz.js">
204
- <link rel="modulepreload" crossorigin href="./assets/ai-model-dropdown-CxRols0L.js">
205
- <link rel="modulepreload" crossorigin href="./assets/renderShortcut-CV_tqoEI.js">
206
- <link rel="modulepreload" crossorigin href="./assets/useDeleteCell-B_jFiS1Y.js">
203
+ <link rel="modulepreload" crossorigin href="./assets/chat-display-C08N0rx5.js">
204
+ <link rel="modulepreload" crossorigin href="./assets/ai-model-dropdown-D1nEKS8b.js">
205
+ <link rel="modulepreload" crossorigin href="./assets/renderShortcut-D0Pei-OA.js">
206
+ <link rel="modulepreload" crossorigin href="./assets/useDeleteCell-DBzN8QcP.js">
207
207
  <link rel="modulepreload" crossorigin href="./assets/icons-D4lB4En9.js">
208
- <link rel="modulepreload" crossorigin href="./assets/process-output-D1GR6Ero.js">
208
+ <link rel="modulepreload" crossorigin href="./assets/process-output-2gz8Uri2.js">
209
209
  <link rel="modulepreload" crossorigin href="./assets/blob-Dg_vNTSs.js">
210
210
  <link rel="modulepreload" crossorigin href="./assets/objectWithoutPropertiesLoose-CboCOq4o.js">
211
211
  <link rel="modulepreload" crossorigin href="./assets/esm-B3JckBtM.js">
212
- <link rel="modulepreload" crossorigin href="./assets/add-cell-with-ai-CEKGThxQ.js">
212
+ <link rel="modulepreload" crossorigin href="./assets/add-cell-with-ai-B3V6Mgb9.js">
213
213
  <link rel="modulepreload" crossorigin href="./assets/chart-no-axes-column-D42sFB6d.js">
214
214
  <link rel="modulepreload" crossorigin href="./assets/square-function-DxXFdbn8.js">
215
- <link rel="modulepreload" crossorigin href="./assets/spec-D9TFI5I_.js">
216
- <link rel="modulepreload" crossorigin href="./assets/column-preview-DBqi4KCj.js">
217
- <link rel="modulepreload" crossorigin href="./assets/switch-C8yab1pC.js">
215
+ <link rel="modulepreload" crossorigin href="./assets/spec-qp_XZeSS.js">
216
+ <link rel="modulepreload" crossorigin href="./assets/column-preview-BzvHnhPG.js">
217
+ <link rel="modulepreload" crossorigin href="./assets/switch-iJj-D3dz.js">
218
218
  <link rel="modulepreload" crossorigin href="./assets/toggle-G1t0cQyf.js">
219
- <link rel="modulepreload" crossorigin href="./assets/globals-CJb4gcmW.js">
220
- <link rel="modulepreload" crossorigin href="./assets/share-0dWXMs9M.js">
219
+ <link rel="modulepreload" crossorigin href="./assets/globals-D46Vbo5D.js">
220
+ <link rel="modulepreload" crossorigin href="./assets/share-CXQVxivL.js">
221
221
  <link rel="modulepreload" crossorigin href="./assets/memoize-DN0TMY36.js">
222
222
  <link rel="modulepreload" crossorigin href="./assets/get-CyLJYAfP.js">
223
223
  <link rel="modulepreload" crossorigin href="./assets/_baseSet-6FYvpjrm.js">
224
224
  <link rel="modulepreload" crossorigin href="./assets/react-resizable-panels.browser.esm-BqxQegSf.js">
225
- <link rel="modulepreload" crossorigin href="./assets/utilities.esm-B7XtzwiJ.js">
226
- <link rel="modulepreload" crossorigin href="./assets/floating-outline-BTc4L5BF.js">
227
- <link rel="modulepreload" crossorigin href="./assets/useAddCell-CNI3pgez.js">
225
+ <link rel="modulepreload" crossorigin href="./assets/utilities.esm-CT3NbLA9.js">
226
+ <link rel="modulepreload" crossorigin href="./assets/floating-outline-CHprSkP6.js">
227
+ <link rel="modulepreload" crossorigin href="./assets/useAddCell-BpMe5DB-.js">
228
228
  <link rel="modulepreload" crossorigin href="./assets/eye-off-D9zAYqG9.js">
229
229
  <link rel="modulepreload" crossorigin href="./assets/plus-CHesBJpY.js">
230
- <link rel="modulepreload" crossorigin href="./assets/readonly-python-code-CGnOB_RP.js">
230
+ <link rel="modulepreload" crossorigin href="./assets/readonly-python-code-ihKi3Mrq.js">
231
231
  <link rel="modulepreload" crossorigin href="./assets/file-video-camera-CZUg-nFA.js">
232
- <link rel="modulepreload" crossorigin href="./assets/types-Bt3U-XJV.js">
233
- <link rel="modulepreload" crossorigin href="./assets/label-DJo0Eeb3.js">
234
- <link rel="modulepreload" crossorigin href="./assets/textarea-DBFtOima.js">
232
+ <link rel="modulepreload" crossorigin href="./assets/types-4-l_7Ws2.js">
233
+ <link rel="modulepreload" crossorigin href="./assets/label-qwandMoh.js">
234
+ <link rel="modulepreload" crossorigin href="./assets/textarea-DmNrZcLR.js">
235
235
  <link rel="modulepreload" crossorigin href="./assets/refresh-ccw-DbW1_PHb.js">
236
236
  <link rel="modulepreload" crossorigin href="./assets/trash-2-C-lF7BNB.js">
237
- <link rel="modulepreload" crossorigin href="./assets/form-1WOcPtE8.js">
238
- <link rel="modulepreload" crossorigin href="./assets/field-D2_0r7wT.js">
239
- <link rel="modulepreload" crossorigin href="./assets/useBoolean-C_vQizET.js">
237
+ <link rel="modulepreload" crossorigin href="./assets/form-B_zRT4QS.js">
238
+ <link rel="modulepreload" crossorigin href="./assets/field-DDKGFzpC.js">
239
+ <link rel="modulepreload" crossorigin href="./assets/useBoolean-BDG41CyP.js">
240
240
  <link rel="modulepreload" crossorigin href="./assets/useDeepCompareMemoize-gzLRYatP.js">
241
241
  <link rel="modulepreload" crossorigin href="./assets/types-B42u_5hF.js">
242
242
  <link rel="modulepreload" crossorigin href="./assets/prop-types-C638SUfx.js">
243
243
  <link rel="modulepreload" crossorigin href="./assets/es-FiXEquL2.js">
244
- <link rel="modulepreload" crossorigin href="./assets/VisuallyHidden-BLp5kXtE.js">
244
+ <link rel="modulepreload" crossorigin href="./assets/VisuallyHidden-BodIky8L.js">
245
245
  <link rel="modulepreload" crossorigin href="./assets/hasIn-DydgU7lx.js">
246
246
  <link rel="modulepreload" crossorigin href="./assets/_baseFlatten-CLPh0yMf.js">
247
247
  <link rel="modulepreload" crossorigin href="./assets/flatten-Buk63LQO.js">
@@ -257,7 +257,7 @@
257
257
  <link rel="stylesheet" crossorigin href="./assets/cells-jmgGt1lS.css">
258
258
  <link rel="stylesheet" crossorigin href="./assets/markdown-renderer-DdDKmWlR.css">
259
259
  <link rel="stylesheet" crossorigin href="./assets/JsonOutput-B7vuddcd.css">
260
- <link rel="stylesheet" crossorigin href="./assets/index-D-BWugLn.css">
260
+ <link rel="stylesheet" crossorigin href="./assets/index-G6ss-VDT.css">
261
261
  </head>
262
262
  <body>
263
263
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/frontend",
3
- "version": "0.18.5-dev168",
3
+ "version": "0.18.5-dev171",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -269,7 +269,7 @@ export function useNotebookActions() {
269
269
  label: "Helper panel",
270
270
  redundant: true,
271
271
  handle: NOOP_HANDLER,
272
- dropdown: PANELS.flatMap(({ id, Icon, hidden }) => {
272
+ dropdown: PANELS.flatMap(({ type: id, Icon, hidden }) => {
273
273
  if (hidden) {
274
274
  return [];
275
275
  }
@@ -0,0 +1,34 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { createContext, useContext } from "react";
4
+ import { invariant } from "@/utils/invariant";
5
+
6
+ export type PanelSection = "sidebar" | "developer-panel";
7
+
8
+ const PanelSectionContext = createContext<PanelSection | null>(null);
9
+
10
+ export const PanelSectionProvider = PanelSectionContext.Provider;
11
+
12
+ /**
13
+ * Hook to get the current panel section context.
14
+ * Returns "sidebar" or "developer-panel" depending on where the panel is rendered.
15
+ * Throws if used outside of a panel context.
16
+ */
17
+ export function usePanelSection(): PanelSection {
18
+ const section = useContext(PanelSectionContext);
19
+ invariant(
20
+ section !== null,
21
+ "usePanelSection must be used within a PanelSectionProvider",
22
+ );
23
+ return section;
24
+ }
25
+
26
+ /**
27
+ * Hook to get the preferred orientation based on the panel section.
28
+ * - Sidebar panels should use vertical layouts (stacked)
29
+ * - Developer panel should use horizontal layouts (side-by-side)
30
+ */
31
+ export function usePanelOrientation(): "horizontal" | "vertical" {
32
+ const section = usePanelSection();
33
+ return section === "sidebar" ? "vertical" : "horizontal";
34
+ }
@@ -6,16 +6,41 @@ import { z } from "zod";
6
6
  import { createReducerAndAtoms } from "@/utils/createReducer";
7
7
  import { jotaiJsonStorage } from "@/utils/storage/jotai";
8
8
  import { ZodLocalStorage } from "@/utils/storage/typed";
9
- import type { DeveloperPanelTabType, PanelType } from "./types";
9
+ import type { PanelType } from "./types";
10
10
  import { PANELS } from "./types";
11
11
 
12
12
  export interface ChromeState {
13
13
  selectedPanel: PanelType | undefined;
14
14
  isSidebarOpen: boolean;
15
15
  isDeveloperPanelOpen: boolean;
16
- selectedDeveloperPanelTab: DeveloperPanelTabType;
16
+ selectedDeveloperPanelTab: PanelType;
17
17
  }
18
18
 
19
+ /**
20
+ * Layout configuration for panels in sidebar and developer panel.
21
+ * Each array contains the ordered list of visible panel IDs for that section.
22
+ */
23
+ export interface PanelLayout {
24
+ sidebar: PanelType[];
25
+ developerPanel: PanelType[];
26
+ }
27
+
28
+ const DEFAULT_PANEL_LAYOUT: PanelLayout = {
29
+ sidebar: PANELS.filter(
30
+ (p) => !p.hidden && p.defaultSection === "sidebar",
31
+ ).map((p) => p.type),
32
+ developerPanel: PANELS.filter(
33
+ (p) => !p.hidden && p.defaultSection === "developer-panel",
34
+ ).map((p) => p.type),
35
+ };
36
+
37
+ export const panelLayoutAtom = atomWithStorage<PanelLayout>(
38
+ "marimo:panel-layout",
39
+ DEFAULT_PANEL_LAYOUT,
40
+ jotaiJsonStorage,
41
+ { getOnInit: true },
42
+ );
43
+
19
44
  const KEY = "marimo:sidebar";
20
45
  const storage = new ZodLocalStorage<ChromeState>(
21
46
  z.object({
@@ -29,7 +54,7 @@ const storage = new ZodLocalStorage<ChromeState>(
29
54
  .string()
30
55
  .optional()
31
56
  .default("terminal")
32
- .transform((v) => v as DeveloperPanelTabType),
57
+ .transform((v) => v as PanelType),
33
58
  }),
34
59
  initialState,
35
60
  );
@@ -81,11 +106,11 @@ const {
81
106
  ...state,
82
107
  isDeveloperPanelOpen: isOpen,
83
108
  }),
84
- setSelectedDeveloperPanelTab: (state, tab: DeveloperPanelTabType) => ({
109
+ setSelectedDeveloperPanelTab: (state, tab: PanelType) => ({
85
110
  ...state,
86
111
  selectedDeveloperPanelTab: tab,
87
112
  }),
88
- openDeveloperPanelTab: (state, tab: DeveloperPanelTabType) => ({
113
+ openDeveloperPanelTab: (state, tab: PanelType) => ({
89
114
  ...state,
90
115
  isDeveloperPanelOpen: true,
91
116
  selectedDeveloperPanelTab: tab,
@@ -119,13 +144,3 @@ export const exportedForTesting = {
119
144
  createActions,
120
145
  initialState,
121
146
  };
122
-
123
- // TODO: probably merge this with the chrome state
124
- export const sidebarOrderAtom = atomWithStorage<PanelType[]>(
125
- "marimo:sidebar-order",
126
- PANELS.filter(
127
- (p) => !p.hidden && !p.defaultHidden && p.position === "sidebar",
128
- ).map((p) => p.id),
129
- jotaiJsonStorage,
130
- { getOnInit: true },
131
- );
@@ -21,7 +21,11 @@ import {
21
21
  import { getFeatureFlag } from "@/core/config/feature-flag";
22
22
  import { isWasm } from "@/core/wasm/utils";
23
23
 
24
+ /**
25
+ * Unified panel ID for all panels in sidebar and developer panel
26
+ */
24
27
  export type PanelType =
28
+ // Sidebar defaults
25
29
  | "files"
26
30
  | "variables"
27
31
  | "outline"
@@ -30,160 +34,146 @@ export type PanelType =
30
34
  | "documentation"
31
35
  | "snippets"
32
36
  | "ai"
37
+ // Developer panel defaults
38
+ | "errors"
39
+ | "scratchpad"
40
+ | "tracing"
41
+ | "secrets"
42
+ | "logs"
43
+ | "terminal"
33
44
  | "cache";
34
45
 
46
+ export type PanelSection = "sidebar" | "developer-panel";
47
+
35
48
  export interface PanelDescriptor {
36
- id: PanelType;
49
+ type: PanelType;
37
50
  Icon: LucideIcon;
51
+ /** Short label for developer panel tabs */
52
+ label: string;
53
+ /** Descriptive tooltip for sidebar icons */
54
+ tooltip: string;
38
55
  /** If true, the panel is completely unavailable */
39
56
  hidden?: boolean;
40
- /** If true, the panel is available but not shown by default */
41
- defaultHidden?: boolean;
42
- tooltip: string;
43
- position: "sidebar" | "footer";
57
+ /** Which section this panel belongs to by default */
58
+ defaultSection: PanelSection;
44
59
  }
45
60
 
46
- /* Panels are ordered in roughly decreasing order of importance as well as
47
- * logically grouped.
48
- *
49
- * 1. Must-have panels first.
50
- * 2. Panels that can add cells to the editor.
51
- * 3. Nice-to-have observability panels.
61
+ /**
62
+ * All panels in the application.
63
+ * Panels can be in either sidebar or developer panel, configurable by user.
52
64
  */
53
65
  export const PANELS: PanelDescriptor[] = [
54
- // 1. Must-have panels.
55
- //
56
- // The files panel is at the top to orient
57
- // users within their filesystem and give
58
- // them a quick glance at their project structure,
59
- // without having to leave their editor.
66
+ // Sidebar defaults
60
67
  {
61
- id: "files",
68
+ type: "files",
62
69
  Icon: FolderTreeIcon,
70
+ label: "Files",
63
71
  tooltip: "View files",
64
- position: "sidebar",
72
+ defaultSection: "sidebar",
65
73
  },
66
- // Because notebooks uniquely have data in RAM,
67
- // it's important to give humans visibility into
68
- // what that data is.
69
74
  {
70
- id: "variables",
75
+ type: "variables",
71
76
  Icon: VariableIcon,
77
+ label: "Variables",
72
78
  tooltip: "Explore variables and data sources",
73
- position: "sidebar",
79
+ defaultSection: "sidebar",
74
80
  },
75
- // Every notebook has a package environment that must
76
- // be managed.
77
81
  {
78
- id: "packages",
82
+ type: "packages",
79
83
  Icon: BoxIcon,
84
+ label: "Packages",
80
85
  tooltip: "Manage packages",
81
- position: "sidebar",
86
+ defaultSection: "sidebar",
82
87
  },
83
- // 2. "AI" panel.
84
- //
85
- // The AI panel holds both agents and in-editor chat.
86
88
  {
87
- id: "ai",
89
+ type: "ai",
88
90
  Icon: BotIcon,
91
+ label: "AI",
89
92
  tooltip: "Chat & Agents",
90
- position: "sidebar",
93
+ defaultSection: "sidebar",
91
94
  },
92
95
  {
93
- id: "snippets",
96
+ type: "snippets",
94
97
  Icon: SquareDashedBottomCodeIcon,
98
+ label: "Snippets",
95
99
  tooltip: "Snippets",
96
- position: "sidebar",
97
- defaultHidden: true,
100
+ defaultSection: "developer-panel",
98
101
  },
99
- // 3. Nice-to-have observability panels.
100
- //
101
- // Utility panels that provide observability
102
- // into the state or structure of the notebook. These
103
- // observability panels are less crucial than variables
104
- // or datasets, so they are positioned at the end of the
105
- // sidebar.
106
102
  {
107
- id: "outline",
103
+ type: "outline",
108
104
  Icon: ScrollTextIcon,
105
+ label: "Outline",
109
106
  tooltip: "View outline",
110
- position: "sidebar",
107
+ defaultSection: "sidebar",
111
108
  },
112
109
  {
113
- id: "documentation",
110
+ type: "documentation",
114
111
  Icon: TextSearchIcon,
112
+ label: "Docs",
115
113
  tooltip: "View live docs",
116
- position: "sidebar",
114
+ defaultSection: "sidebar",
117
115
  },
118
116
  {
119
- // TODO(akshayka): Consider making dependencies
120
- // default off; the minimap is a more effective
121
- // overview.
122
- id: "dependencies",
117
+ type: "dependencies",
123
118
  Icon: NetworkIcon,
119
+ label: "Dependencies",
124
120
  tooltip: "Explore dependencies",
125
- position: "sidebar",
121
+ defaultSection: "sidebar",
126
122
  },
127
- ];
128
-
129
- export const PANEL_MAP = new Map<PanelType, PanelDescriptor>(
130
- PANELS.map((p) => [p.id, p]),
131
- );
132
-
133
- export type DeveloperPanelTabType =
134
- | "errors"
135
- | "scratchpad"
136
- | "tracing"
137
- | "secrets"
138
- | "logs"
139
- | "terminal"
140
- | "cache";
141
-
142
- export interface DeveloperPanelTabDescriptor {
143
- type: DeveloperPanelTabType;
144
- Icon: LucideIcon;
145
- label: string;
146
- hidden?: boolean;
147
- }
148
-
149
- export const DEVELOPER_PANEL_TABS: DeveloperPanelTabDescriptor[] = [
123
+ // Developer panel defaults
150
124
  {
151
125
  type: "errors",
152
126
  Icon: XCircleIcon,
153
127
  label: "Errors",
128
+ tooltip: "View errors",
129
+ defaultSection: "developer-panel",
154
130
  },
155
131
  {
156
132
  type: "scratchpad",
157
133
  Icon: NotebookPenIcon,
158
134
  label: "Scratchpad",
135
+ tooltip: "Scratchpad",
136
+ defaultSection: "developer-panel",
159
137
  },
160
138
  {
161
139
  type: "tracing",
162
140
  Icon: ActivityIcon,
163
141
  label: "Tracing",
142
+ tooltip: "View tracing",
143
+ defaultSection: "developer-panel",
164
144
  },
165
145
  {
166
146
  type: "secrets",
167
147
  Icon: KeyRoundIcon,
168
148
  label: "Secrets",
149
+ tooltip: "Manage secrets",
150
+ defaultSection: "developer-panel",
169
151
  hidden: isWasm(),
170
152
  },
171
153
  {
172
154
  type: "logs",
173
155
  Icon: FileTextIcon,
174
156
  label: "Logs",
157
+ tooltip: "View logs",
158
+ defaultSection: "developer-panel",
175
159
  },
176
160
  {
177
161
  type: "terminal",
178
162
  Icon: TerminalSquareIcon,
179
163
  label: "Terminal",
164
+ tooltip: "Terminal",
165
+ defaultSection: "developer-panel",
180
166
  },
181
- // TODO(akshayka): The cache panel should not be default shown,
182
- // even when it's out of feature flag. (User config to turn it on.)
183
167
  {
184
168
  type: "cache",
185
169
  Icon: DatabaseZapIcon,
186
170
  label: "Cache",
171
+ tooltip: "View cache",
172
+ defaultSection: "developer-panel",
187
173
  hidden: !getFeatureFlag("cache_panel"),
188
174
  },
189
175
  ];
176
+
177
+ export const PANEL_MAP = new Map<PanelType, PanelDescriptor>(
178
+ PANELS.map((p) => [p.type, p]),
179
+ );