solara 1.30.1__py2.py3-none-any.whl → 1.31.0__py2.py3-none-any.whl

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 (438) hide show
  1. {solara-1.30.1.dist-info → solara-1.31.0.dist-info}/METADATA +7 -42
  2. solara-1.31.0.dist-info/RECORD +5 -0
  3. {solara-1.30.1.dist-info → solara-1.31.0.dist-info}/WHEEL +1 -1
  4. {solara/template/portal → solara-1.31.0.dist-info/licenses}/LICENSE +1 -1
  5. solara/__init__.py +0 -123
  6. solara/__main__.py +0 -734
  7. solara/alias.py +0 -6
  8. solara/autorouting.py +0 -545
  9. solara/cache.py +0 -294
  10. solara/checks.html +0 -71
  11. solara/checks.py +0 -224
  12. solara/comm.py +0 -28
  13. solara/components/__init__.py +0 -59
  14. solara/components/alert.py +0 -155
  15. solara/components/applayout.py +0 -393
  16. solara/components/button.py +0 -85
  17. solara/components/card.py +0 -87
  18. solara/components/checkbox.py +0 -50
  19. solara/components/code_highlight_css.py +0 -11
  20. solara/components/code_highlight_css.vue +0 -63
  21. solara/components/columns.py +0 -159
  22. solara/components/component_vue.py +0 -110
  23. solara/components/cross_filter.py +0 -335
  24. solara/components/dataframe.py +0 -546
  25. solara/components/datatable.py +0 -221
  26. solara/components/datatable.vue +0 -175
  27. solara/components/details.py +0 -21
  28. solara/components/download.vue +0 -35
  29. solara/components/echarts.py +0 -75
  30. solara/components/echarts.vue +0 -128
  31. solara/components/figure_altair.py +0 -39
  32. solara/components/file_browser.py +0 -182
  33. solara/components/file_download.py +0 -199
  34. solara/components/file_drop.py +0 -139
  35. solara/components/file_drop.vue +0 -83
  36. solara/components/file_list_widget.vue +0 -78
  37. solara/components/head.py +0 -27
  38. solara/components/head_tag.py +0 -49
  39. solara/components/head_tag.vue +0 -60
  40. solara/components/image.py +0 -173
  41. solara/components/input.py +0 -440
  42. solara/components/link.py +0 -55
  43. solara/components/markdown.py +0 -371
  44. solara/components/markdown_editor.py +0 -25
  45. solara/components/markdown_editor.vue +0 -362
  46. solara/components/matplotlib.py +0 -74
  47. solara/components/meta.py +0 -47
  48. solara/components/misc.py +0 -333
  49. solara/components/pivot_table.py +0 -258
  50. solara/components/pivot_table.vue +0 -158
  51. solara/components/progress.py +0 -47
  52. solara/components/select.py +0 -186
  53. solara/components/select.vue +0 -27
  54. solara/components/slider.py +0 -442
  55. solara/components/slider_date.vue +0 -56
  56. solara/components/spinner-solara.vue +0 -105
  57. solara/components/spinner.py +0 -30
  58. solara/components/sql_code.py +0 -33
  59. solara/components/sql_code.vue +0 -128
  60. solara/components/style.py +0 -105
  61. solara/components/switch.py +0 -68
  62. solara/components/tab_navigation.py +0 -37
  63. solara/components/title.py +0 -90
  64. solara/components/title.vue +0 -38
  65. solara/components/togglebuttons.py +0 -202
  66. solara/components/tooltip.py +0 -61
  67. solara/datatypes.py +0 -143
  68. solara/express.py +0 -241
  69. solara/hooks/__init__.py +0 -4
  70. solara/hooks/dataframe.py +0 -99
  71. solara/hooks/misc.py +0 -263
  72. solara/hooks/use_reactive.py +0 -129
  73. solara/hooks/use_thread.py +0 -129
  74. solara/kitchensink.py +0 -8
  75. solara/lab/__init__.py +0 -34
  76. solara/lab/components/__init__.py +0 -6
  77. solara/lab/components/chat.py +0 -203
  78. solara/lab/components/confirmation_dialog.py +0 -165
  79. solara/lab/components/cross_filter.py +0 -7
  80. solara/lab/components/input_date.py +0 -298
  81. solara/lab/components/menu.py +0 -181
  82. solara/lab/components/menu.vue +0 -38
  83. solara/lab/components/tabs.py +0 -274
  84. solara/lab/components/theming.py +0 -98
  85. solara/lab/components/theming.vue +0 -72
  86. solara/lab/hooks/__init__.py +0 -0
  87. solara/lab/hooks/dataframe.py +0 -12
  88. solara/lab/toestand.py +0 -3
  89. solara/lab/utils/__init__.py +0 -2
  90. solara/lab/utils/cookies.py +0 -5
  91. solara/lab/utils/dataframe.py +0 -115
  92. solara/lab/utils/headers.py +0 -5
  93. solara/layout.py +0 -44
  94. solara/minisettings.py +0 -133
  95. solara/py.typed +0 -0
  96. solara/reactive.py +0 -93
  97. solara/routing.py +0 -268
  98. solara/scope/__init__.py +0 -88
  99. solara/scope/types.py +0 -55
  100. solara/server/__init__.py +0 -0
  101. solara/server/app.py +0 -490
  102. solara/server/assets/custom.css +0 -1
  103. solara/server/assets/custom.js +0 -1
  104. solara/server/assets/favicon.png +0 -0
  105. solara/server/assets/favicon.svg +0 -5
  106. solara/server/assets/style.css +0 -1665
  107. solara/server/assets/theme-dark.css +0 -437
  108. solara/server/assets/theme-light.css +0 -420
  109. solara/server/assets/theme.js +0 -3
  110. solara/server/cdn_helper.py +0 -77
  111. solara/server/esm.py +0 -69
  112. solara/server/fastapi.py +0 -5
  113. solara/server/flask.py +0 -286
  114. solara/server/jupyter/__init__.py +0 -2
  115. solara/server/jupyter/cdn_handler.py +0 -28
  116. solara/server/jupyter/server_extension.py +0 -29
  117. solara/server/jupytertools.py +0 -46
  118. solara/server/kernel.py +0 -319
  119. solara/server/kernel_context.py +0 -396
  120. solara/server/patch.py +0 -552
  121. solara/server/reload.py +0 -242
  122. solara/server/server.py +0 -437
  123. solara/server/settings.py +0 -212
  124. solara/server/shell.py +0 -240
  125. solara/server/starlette.py +0 -597
  126. solara/server/static/ansi.js +0 -270
  127. solara/server/static/highlight-dark.css +0 -82
  128. solara/server/static/highlight.css +0 -43
  129. solara/server/static/main-vuetify.js +0 -260
  130. solara/server/static/main.js +0 -163
  131. solara/server/static/solara_bootstrap.py +0 -129
  132. solara/server/static/sun.svg +0 -23
  133. solara/server/static/webworker.js +0 -42
  134. solara/server/telemetry.py +0 -212
  135. solara/server/templates/index.html.j2 +0 -1
  136. solara/server/templates/loader-plain.css +0 -11
  137. solara/server/templates/loader-plain.html +0 -20
  138. solara/server/templates/loader-solara.css +0 -111
  139. solara/server/templates/loader-solara.html +0 -40
  140. solara/server/templates/plain.html +0 -82
  141. solara/server/templates/solara.html.j2 +0 -446
  142. solara/server/threaded.py +0 -75
  143. solara/server/utils.py +0 -30
  144. solara/server/websocket.py +0 -44
  145. solara/settings.py +0 -56
  146. solara/tasks.py +0 -847
  147. solara/template/button.py +0 -16
  148. solara/template/markdown.py +0 -42
  149. solara/template/portal/.flake8 +0 -6
  150. solara/template/portal/.pre-commit-config.yaml +0 -28
  151. solara/template/portal/Procfile +0 -7
  152. solara/template/portal/mypy.ini +0 -3
  153. solara/template/portal/pyproject.toml +0 -26
  154. solara/template/portal/solara_portal/__init__.py +0 -3
  155. solara/template/portal/solara_portal/components/__init__.py +0 -2
  156. solara/template/portal/solara_portal/components/article.py +0 -28
  157. solara/template/portal/solara_portal/components/data.py +0 -28
  158. solara/template/portal/solara_portal/components/header.py +0 -6
  159. solara/template/portal/solara_portal/components/layout.py +0 -6
  160. solara/template/portal/solara_portal/content/articles/equis-in-vidi.md +0 -85
  161. solara/template/portal/solara_portal/content/articles/substiterat-vati.md +0 -70
  162. solara/template/portal/solara_portal/data.py +0 -60
  163. solara/template/portal/solara_portal/pages/__init__.py +0 -67
  164. solara/template/portal/solara_portal/pages/article/__init__.py +0 -26
  165. solara/template/portal/solara_portal/pages/tabular.py +0 -29
  166. solara/template/portal/solara_portal/pages/viz/__init__.py +0 -69
  167. solara/template/portal/solara_portal/pages/viz/overview.py +0 -14
  168. solara/test/__init__.py +0 -0
  169. solara/test/pytest_plugin.py +0 -698
  170. solara/toestand.py +0 -772
  171. solara/util.py +0 -308
  172. solara/website/__init__.py +0 -0
  173. solara/website/assets/custom.css +0 -462
  174. solara/website/assets/images/logo-small.png +0 -0
  175. solara/website/assets/images/logo.svg +0 -17
  176. solara/website/assets/images/logo_white.svg +0 -50
  177. solara/website/assets/theme.js +0 -8
  178. solara/website/components/__init__.py +0 -5
  179. solara/website/components/algolia.vue +0 -24
  180. solara/website/components/algolia_api.vue +0 -157
  181. solara/website/components/docs.py +0 -118
  182. solara/website/components/header.py +0 -72
  183. solara/website/components/hero.py +0 -15
  184. solara/website/components/mailchimp.py +0 -12
  185. solara/website/components/mailchimp.vue +0 -47
  186. solara/website/components/markdown.py +0 -30
  187. solara/website/components/notebook.py +0 -172
  188. solara/website/pages/__init__.py +0 -575
  189. solara/website/pages/apps/__init__.py +0 -16
  190. solara/website/pages/apps/authorization/__init__.py +0 -118
  191. solara/website/pages/apps/authorization/admin.py +0 -12
  192. solara/website/pages/apps/authorization/users.py +0 -12
  193. solara/website/pages/apps/jupyter-dashboard-1.py +0 -116
  194. solara/website/pages/apps/layout-demo.py +0 -40
  195. solara/website/pages/apps/multipage/__init__.py +0 -38
  196. solara/website/pages/apps/multipage/page1.py +0 -26
  197. solara/website/pages/apps/multipage/page2.py +0 -34
  198. solara/website/pages/apps/scatter.py +0 -136
  199. solara/website/pages/apps/scrolling.py +0 -63
  200. solara/website/pages/apps/tutorial-streamlit.py +0 -18
  201. solara/website/pages/changelog/__init__.py +0 -8
  202. solara/website/pages/changelog/changelog.md +0 -195
  203. solara/website/pages/contact/__init__.py +0 -8
  204. solara/website/pages/contact/contact.md +0 -17
  205. solara/website/pages/doc_use_download.py +0 -85
  206. solara/website/pages/documentation/__init__.py +0 -184
  207. solara/website/pages/documentation/advanced/__init__.py +0 -9
  208. solara/website/pages/documentation/advanced/content/00-overview.md +0 -1
  209. solara/website/pages/documentation/advanced/content/10-howto/00-overview.md +0 -6
  210. solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md +0 -196
  211. solara/website/pages/documentation/advanced/content/10-howto/20-layout.md +0 -125
  212. solara/website/pages/documentation/advanced/content/10-howto/30-testing.md +0 -154
  213. solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md +0 -69
  214. solara/website/pages/documentation/advanced/content/10-howto/40-embed.md +0 -49
  215. solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md +0 -124
  216. solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md +0 -10
  217. solara/website/pages/documentation/advanced/content/20-understanding/05-ipywidgets.md +0 -35
  218. solara/website/pages/documentation/advanced/content/20-understanding/06-ipyvuetify.md +0 -42
  219. solara/website/pages/documentation/advanced/content/20-understanding/10-reacton.md +0 -28
  220. solara/website/pages/documentation/advanced/content/20-understanding/12-reacton-basics.md +0 -108
  221. solara/website/pages/documentation/advanced/content/20-understanding/15-anatomy.md +0 -23
  222. solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md +0 -7
  223. solara/website/pages/documentation/advanced/content/20-understanding/18-containers.md +0 -166
  224. solara/website/pages/documentation/advanced/content/20-understanding/20-solara.md +0 -18
  225. solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md +0 -240
  226. solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md +0 -86
  227. solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md +0 -12
  228. solara/website/pages/documentation/advanced/content/30-enterprise/00-overview.md +0 -1
  229. solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md +0 -171
  230. solara/website/pages/documentation/advanced/content/40-development/00-overview.md +0 -0
  231. solara/website/pages/documentation/advanced/content/40-development/01-contribute.md +0 -45
  232. solara/website/pages/documentation/advanced/content/40-development/10-setup.md +0 -76
  233. solara/website/pages/documentation/api/__init__.py +0 -19
  234. solara/website/pages/documentation/api/cross_filter/__init__.py +0 -9
  235. solara/website/pages/documentation/api/cross_filter/cross_filter_dataframe.py +0 -23
  236. solara/website/pages/documentation/api/cross_filter/cross_filter_report.py +0 -22
  237. solara/website/pages/documentation/api/cross_filter/cross_filter_select.py +0 -22
  238. solara/website/pages/documentation/api/cross_filter/cross_filter_slider.py +0 -22
  239. solara/website/pages/documentation/api/hooks/__init__.py +0 -9
  240. solara/website/pages/documentation/api/hooks/use_cross_filter.py +0 -25
  241. solara/website/pages/documentation/api/hooks/use_dark_effective.py +0 -13
  242. solara/website/pages/documentation/api/hooks/use_effect.md +0 -43
  243. solara/website/pages/documentation/api/hooks/use_effect.py +0 -9
  244. solara/website/pages/documentation/api/hooks/use_exception.py +0 -33
  245. solara/website/pages/documentation/api/hooks/use_memo.md +0 -16
  246. solara/website/pages/documentation/api/hooks/use_memo.py +0 -9
  247. solara/website/pages/documentation/api/hooks/use_previous.py +0 -32
  248. solara/website/pages/documentation/api/hooks/use_reactive.py +0 -15
  249. solara/website/pages/documentation/api/hooks/use_state.py +0 -11
  250. solara/website/pages/documentation/api/hooks/use_state_or_update.py +0 -68
  251. solara/website/pages/documentation/api/hooks/use_thread.md +0 -58
  252. solara/website/pages/documentation/api/hooks/use_thread.py +0 -44
  253. solara/website/pages/documentation/api/hooks/use_trait_observe.py +0 -13
  254. solara/website/pages/documentation/api/routing/__init__.py +0 -9
  255. solara/website/pages/documentation/api/routing/generate_routes.py +0 -11
  256. solara/website/pages/documentation/api/routing/generate_routes_directory.py +0 -11
  257. solara/website/pages/documentation/api/routing/resolve_path.py +0 -36
  258. solara/website/pages/documentation/api/routing/route.py +0 -32
  259. solara/website/pages/documentation/api/routing/use_route.py +0 -80
  260. solara/website/pages/documentation/api/routing/use_router.py +0 -15
  261. solara/website/pages/documentation/api/utilities/__init__.py +0 -9
  262. solara/website/pages/documentation/api/utilities/component_vue.py +0 -11
  263. solara/website/pages/documentation/api/utilities/computed.py +0 -16
  264. solara/website/pages/documentation/api/utilities/display.py +0 -15
  265. solara/website/pages/documentation/api/utilities/get_kernel_id.py +0 -16
  266. solara/website/pages/documentation/api/utilities/get_session_id.py +0 -16
  267. solara/website/pages/documentation/api/utilities/memoize.py +0 -36
  268. solara/website/pages/documentation/api/utilities/on_kernel_start.py +0 -27
  269. solara/website/pages/documentation/api/utilities/reactive.py +0 -15
  270. solara/website/pages/documentation/api/utilities/widget.py +0 -104
  271. solara/website/pages/documentation/components/__init__.py +0 -12
  272. solara/website/pages/documentation/components/advanced/__init__.py +0 -9
  273. solara/website/pages/documentation/components/advanced/link.py +0 -28
  274. solara/website/pages/documentation/components/advanced/meta.py +0 -21
  275. solara/website/pages/documentation/components/advanced/style.py +0 -44
  276. solara/website/pages/documentation/components/common.py +0 -9
  277. solara/website/pages/documentation/components/data/__init__.py +0 -9
  278. solara/website/pages/documentation/components/data/dataframe.py +0 -44
  279. solara/website/pages/documentation/components/data/pivot_table.py +0 -81
  280. solara/website/pages/documentation/components/enterprise/__init__.py +0 -9
  281. solara/website/pages/documentation/components/enterprise/avatar.py +0 -19
  282. solara/website/pages/documentation/components/enterprise/avatar_menu.py +0 -20
  283. solara/website/pages/documentation/components/input/__init__.py +0 -9
  284. solara/website/pages/documentation/components/input/button.py +0 -22
  285. solara/website/pages/documentation/components/input/checkbox.py +0 -12
  286. solara/website/pages/documentation/components/input/file_browser.py +0 -33
  287. solara/website/pages/documentation/components/input/file_drop.py +0 -75
  288. solara/website/pages/documentation/components/input/input.py +0 -18
  289. solara/website/pages/documentation/components/input/select.py +0 -21
  290. solara/website/pages/documentation/components/input/slider.py +0 -28
  291. solara/website/pages/documentation/components/input/switch.py +0 -12
  292. solara/website/pages/documentation/components/input/togglebuttons.py +0 -20
  293. solara/website/pages/documentation/components/lab/__init__.py +0 -9
  294. solara/website/pages/documentation/components/lab/chat.py +0 -108
  295. solara/website/pages/documentation/components/lab/confirmation_dialog.py +0 -55
  296. solara/website/pages/documentation/components/lab/cookies_headers.py +0 -48
  297. solara/website/pages/documentation/components/lab/input_date.py +0 -19
  298. solara/website/pages/documentation/components/lab/menu.py +0 -21
  299. solara/website/pages/documentation/components/lab/tab.py +0 -24
  300. solara/website/pages/documentation/components/lab/tabs.py +0 -44
  301. solara/website/pages/documentation/components/lab/task.py +0 -12
  302. solara/website/pages/documentation/components/lab/theming.py +0 -72
  303. solara/website/pages/documentation/components/lab/use_task.py +0 -12
  304. solara/website/pages/documentation/components/layout/__init__.py +0 -9
  305. solara/website/pages/documentation/components/layout/app_bar.py +0 -15
  306. solara/website/pages/documentation/components/layout/app_bar_title.py +0 -15
  307. solara/website/pages/documentation/components/layout/app_layout.py +0 -23
  308. solara/website/pages/documentation/components/layout/card.py +0 -14
  309. solara/website/pages/documentation/components/layout/card_actions.py +0 -15
  310. solara/website/pages/documentation/components/layout/column.py +0 -29
  311. solara/website/pages/documentation/components/layout/columns.py +0 -26
  312. solara/website/pages/documentation/components/layout/columns_responsive.py +0 -67
  313. solara/website/pages/documentation/components/layout/griddraggable.py +0 -61
  314. solara/website/pages/documentation/components/layout/gridfixed.py +0 -21
  315. solara/website/pages/documentation/components/layout/hbox.py +0 -17
  316. solara/website/pages/documentation/components/layout/row.py +0 -29
  317. solara/website/pages/documentation/components/layout/sidebar.py +0 -23
  318. solara/website/pages/documentation/components/layout/vbox.py +0 -19
  319. solara/website/pages/documentation/components/output/__init__.py +0 -9
  320. solara/website/pages/documentation/components/output/file_download.py +0 -12
  321. solara/website/pages/documentation/components/output/html.py +0 -22
  322. solara/website/pages/documentation/components/output/image.py +0 -12
  323. solara/website/pages/documentation/components/output/markdown.py +0 -59
  324. solara/website/pages/documentation/components/output/markdown_editor.py +0 -53
  325. solara/website/pages/documentation/components/output/sql_code.py +0 -84
  326. solara/website/pages/documentation/components/output/tooltip.py +0 -12
  327. solara/website/pages/documentation/components/page/__init__.py +0 -9
  328. solara/website/pages/documentation/components/page/head.py +0 -19
  329. solara/website/pages/documentation/components/page/title.py +0 -28
  330. solara/website/pages/documentation/components/status/__init__.py +0 -9
  331. solara/website/pages/documentation/components/status/error.py +0 -40
  332. solara/website/pages/documentation/components/status/info.py +0 -40
  333. solara/website/pages/documentation/components/status/progress.py +0 -10
  334. solara/website/pages/documentation/components/status/spinner.py +0 -10
  335. solara/website/pages/documentation/components/status/success.py +0 -40
  336. solara/website/pages/documentation/components/status/warning.py +0 -47
  337. solara/website/pages/documentation/components/viz/__init__.py +0 -9
  338. solara/website/pages/documentation/components/viz/altair.py +0 -44
  339. solara/website/pages/documentation/components/viz/echarts.py +0 -78
  340. solara/website/pages/documentation/components/viz/matplotlib.py +0 -32
  341. solara/website/pages/documentation/components/viz/plotly.py +0 -63
  342. solara/website/pages/documentation/components/viz/plotly_express.py +0 -41
  343. solara/website/pages/documentation/examples/__init__.py +0 -52
  344. solara/website/pages/documentation/examples/ai/__init__.py +0 -10
  345. solara/website/pages/documentation/examples/ai/chatbot.py +0 -96
  346. solara/website/pages/documentation/examples/ai/tokenizer.py +0 -106
  347. solara/website/pages/documentation/examples/basics/__init__.py +0 -2
  348. solara/website/pages/documentation/examples/basics/sine.py +0 -28
  349. solara/website/pages/documentation/examples/fullscreen/__init__.py +0 -9
  350. solara/website/pages/documentation/examples/fullscreen/authorization.py +0 -3
  351. solara/website/pages/documentation/examples/fullscreen/layout_demo.py +0 -3
  352. solara/website/pages/documentation/examples/fullscreen/multipage.py +0 -3
  353. solara/website/pages/documentation/examples/fullscreen/scatter.py +0 -3
  354. solara/website/pages/documentation/examples/fullscreen/scrolling.py +0 -3
  355. solara/website/pages/documentation/examples/fullscreen/tutorial_streamlit.py +0 -3
  356. solara/website/pages/documentation/examples/general/__init__.py +0 -9
  357. solara/website/pages/documentation/examples/general/custom_storage.py +0 -69
  358. solara/website/pages/documentation/examples/general/deploy_model.py +0 -114
  359. solara/website/pages/documentation/examples/general/live_update.py +0 -38
  360. solara/website/pages/documentation/examples/general/login_oauth.py +0 -76
  361. solara/website/pages/documentation/examples/general/mycard.vue +0 -58
  362. solara/website/pages/documentation/examples/general/pokemon_search.py +0 -51
  363. solara/website/pages/documentation/examples/general/vue_component.py +0 -50
  364. solara/website/pages/documentation/examples/ipycanvas.py +0 -49
  365. solara/website/pages/documentation/examples/libraries/__init__.py +0 -9
  366. solara/website/pages/documentation/examples/libraries/altair.py +0 -63
  367. solara/website/pages/documentation/examples/libraries/bqplot.py +0 -39
  368. solara/website/pages/documentation/examples/libraries/ipyleaflet.py +0 -32
  369. solara/website/pages/documentation/examples/libraries/ipyleaflet_advanced.py +0 -65
  370. solara/website/pages/documentation/examples/utilities/__init__.py +0 -9
  371. solara/website/pages/documentation/examples/utilities/calculator.py +0 -157
  372. solara/website/pages/documentation/examples/utilities/countdown_timer.py +0 -64
  373. solara/website/pages/documentation/examples/utilities/todo.py +0 -195
  374. solara/website/pages/documentation/examples/visualization/__init__.py +0 -6
  375. solara/website/pages/documentation/examples/visualization/annotator.py +0 -68
  376. solara/website/pages/documentation/examples/visualization/linked_views.py +0 -84
  377. solara/website/pages/documentation/examples/visualization/plotly.py +0 -43
  378. solara/website/pages/documentation/faq/__init__.py +0 -12
  379. solara/website/pages/documentation/faq/content/99-faq.md +0 -76
  380. solara/website/pages/documentation/getting_started/__init__.py +0 -9
  381. solara/website/pages/documentation/getting_started/content/00-quickstart.md +0 -89
  382. solara/website/pages/documentation/getting_started/content/01-introduction.md +0 -125
  383. solara/website/pages/documentation/getting_started/content/02-installing.md +0 -85
  384. solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md +0 -14
  385. solara/website/pages/documentation/getting_started/content/04-tutorials/10_data_science.py +0 -13
  386. solara/website/pages/documentation/getting_started/content/04-tutorials/20-web-app.md +0 -89
  387. solara/website/pages/documentation/getting_started/content/04-tutorials/30-ipywidgets.md +0 -124
  388. solara/website/pages/documentation/getting_started/content/04-tutorials/40-streamlit.md +0 -146
  389. solara/website/pages/documentation/getting_started/content/04-tutorials/50-dash.md +0 -144
  390. solara/website/pages/documentation/getting_started/content/04-tutorials/60-jupyter-dashboard-part1.py +0 -64
  391. solara/website/pages/documentation/getting_started/content/04-tutorials/SF_crime_sample.csv.gz +0 -0
  392. solara/website/pages/documentation/getting_started/content/04-tutorials/_data_science.ipynb +0 -445
  393. solara/website/pages/documentation/getting_started/content/04-tutorials/_jupyter_dashboard_1.ipynb +0 -1000
  394. solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md +0 -11
  395. solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md +0 -223
  396. solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md +0 -88
  397. solara/website/pages/documentation/getting_started/content/06-reference/00-overview.md +0 -3
  398. solara/website/pages/documentation/getting_started/content/06-reference/40-static_files.md +0 -31
  399. solara/website/pages/documentation/getting_started/content/06-reference/41-asset-files.md +0 -36
  400. solara/website/pages/documentation/getting_started/content/06-reference/60-static-site-generation.md +0 -59
  401. solara/website/pages/documentation/getting_started/content/06-reference/70-search.md +0 -34
  402. solara/website/pages/documentation/getting_started/content/06-reference/80-reloading.md +0 -34
  403. solara/website/pages/documentation/getting_started/content/06-reference/90-notebook-support.md +0 -7
  404. solara/website/pages/documentation/getting_started/content/06-reference/95-caching.md +0 -148
  405. solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md +0 -7
  406. solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md +0 -273
  407. solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md +0 -80
  408. solara/website/pages/documentation/getting_started/content/80-what-is-lab.md +0 -7
  409. solara/website/pages/documentation/getting_started/content/90-troubleshoot.md +0 -26
  410. solara/website/pages/docutils.py +0 -38
  411. solara/website/pages/showcase/__init__.py +0 -105
  412. solara/website/pages/showcase/domino_code_assist.py +0 -60
  413. solara/website/pages/showcase/planeto_tessa.py +0 -19
  414. solara/website/pages/showcase/solara_dev.py +0 -54
  415. solara/website/pages/showcase/solarathon_2023_team_2.py +0 -22
  416. solara/website/pages/showcase/solarathon_2023_team_4.py +0 -22
  417. solara/website/pages/showcase/solarathon_2023_team_5.py +0 -23
  418. solara/website/pages/showcase/solarathon_2023_team_6.py +0 -34
  419. solara/website/pages/showcase/wanderlust.py +0 -27
  420. solara/website/public/beach.jpeg +0 -0
  421. solara/website/public/logo.svg +0 -6
  422. solara/website/public/social/discord.svg +0 -1
  423. solara/website/public/social/github.svg +0 -1
  424. solara/website/public/social/twitter.svg +0 -3
  425. solara/website/public/success.html +0 -25
  426. solara/website/templates/index.html.j2 +0 -117
  427. solara/website/utils.py +0 -51
  428. solara/widgets/__init__.py +0 -1
  429. solara/widgets/vue/gridlayout.vue +0 -110
  430. solara/widgets/vue/html.vue +0 -4
  431. solara/widgets/vue/navigator.vue +0 -104
  432. solara/widgets/vue/vegalite.vue +0 -115
  433. solara/widgets/widgets.py +0 -65
  434. solara-1.30.1.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json +0 -7
  435. solara-1.30.1.data/data/etc/jupyter/jupyter_server_config.d/solara.json +0 -7
  436. solara-1.30.1.dist-info/RECORD +0 -437
  437. solara-1.30.1.dist-info/entry_points.txt +0 -5
  438. /solara-1.30.1.dist-info/licenses/LICENSE → /LICENSE +0 -0
@@ -1,155 +0,0 @@
1
- from typing import List, Optional, Union
2
-
3
- import reacton.ipyvuetify as v
4
-
5
- import solara
6
- from solara.util import _combine_classes
7
-
8
-
9
- @solara.component
10
- def Success(
11
- label: Optional[str] = None,
12
- icon: Union[bool, str, None] = True,
13
- dense=False,
14
- outlined=True,
15
- text=True,
16
- children=[],
17
- classes: List[str] = [],
18
- **kwargs,
19
- ):
20
- """Display a success message (green color).
21
-
22
- ## Arguments
23
-
24
- * `label`: the message to display
25
- * `icon`: if True, display a check icon, if False, don't display an icon, if a string,
26
- display the icon with that name ([Overview of available icons](https://pictogrammers.github.io/@mdi/font/4.9.95/)).
27
- * `dense`: if True, display the message in a dense format, using less vertical height.
28
- * `outlined`: if True (default), display the message in an outlined border, instead of a filled box.
29
- * `text`: if True (default), display the message in a text format, which applies a semi-transparent background.
30
- * `classes`: additional CSS classes to apply.
31
- """
32
- # vuetify doesn't accept True, but is ok with None for a default icon
33
- if icon is True:
34
- icon = None
35
- return v.Alert(
36
- type="success",
37
- text=text,
38
- outlined=outlined,
39
- dense=dense,
40
- icon=icon,
41
- children=[*([label] if label is not None else []), *children],
42
- class_=_combine_classes(classes),
43
- **kwargs,
44
- )
45
-
46
-
47
- @solara.component
48
- def Info(
49
- label: Optional[str] = None,
50
- icon: Union[bool, str, None] = True,
51
- dense=False,
52
- outlined=True,
53
- text=True,
54
- children=[],
55
- classes: List[str] = [],
56
- **kwargs,
57
- ):
58
- """Display a info message (blue color).
59
-
60
- ## Arguments
61
-
62
- * `label`: the message to display
63
- * `icon`: if True, display a info icon, if False, don't display an icon, if a string,
64
- display the icon with that name ([Overview of available icons](https://pictogrammers.github.io/@mdi/font/4.9.95/)).
65
- * `dense`: if True, display the message in a dense format, using less vertical height.
66
- * `outlined`: if True (default), display the message in an outlined border, instead of a filled box.
67
- * `text`: if True (default), display the message in a text format, which applies a semi-transparent background.
68
- * `classes`: additional CSS classes to apply.
69
- """
70
- if icon is True:
71
- icon = None
72
- return v.Alert(
73
- type="info",
74
- text=text,
75
- outlined=outlined,
76
- dense=dense,
77
- icon=icon,
78
- children=[*([label] if label is not None else []), *children],
79
- class_=_combine_classes(classes),
80
- **kwargs,
81
- )
82
-
83
-
84
- @solara.component
85
- def Warning(
86
- label: Optional[str] = None,
87
- icon: Union[bool, str, None] = True,
88
- dense=False,
89
- outlined=True,
90
- text=True,
91
- children=[],
92
- classes: List[str] = [],
93
- **kwargs,
94
- ):
95
- """Display a warning message (orange color).
96
-
97
- ## Arguments
98
-
99
- * `label`: the message to display
100
- * `icon`: if True, display a exclamation icon, if False, don't display an icon, if a string,
101
- display the icon with that name ([Overview of available icons](https://pictogrammers.github.io/@mdi/font/4.9.95/)).
102
- * `dense`: if True, display the message in a dense format, using less vertical height.
103
- * `outlined`: if True (default), display the message in an outlined border, instead of a filled box.
104
- * `text`: if True (default), display the message in a text format, which applies a semi-transparent background.
105
- * `classes`: additional CSS classes to apply.
106
- """
107
- if icon is True:
108
- icon = None
109
- return v.Alert(
110
- type="warning",
111
- text=text,
112
- outlined=outlined,
113
- dense=dense,
114
- icon=icon,
115
- children=[*([label] if label is not None else []), *children],
116
- class_=_combine_classes(classes),
117
- **kwargs,
118
- )
119
-
120
-
121
- @solara.component
122
- def Error(
123
- label: Optional[str] = None,
124
- icon: Union[bool, str, None] = True,
125
- dense=False,
126
- outlined=True,
127
- text=True,
128
- children=[],
129
- classes: List[str] = [],
130
- **kwargs,
131
- ):
132
- """Display an error message (red color).
133
-
134
- ## Arguments
135
-
136
- * `label`: the message to display
137
- * `icon`: if True, display a exclamation in a red triangle icon, if False, don't display an icon, if a string,
138
- display the icon with that name ([Overview of available icons](https://pictogrammers.github.io/@mdi/font/4.9.95/)).
139
- * `dense`: if True, display the message in a dense format, using less vertical height.
140
- * `outlined`: if True (default), display the message in an outlined border, instead of a filled box.
141
- * `text`: if True (default), display the message in a text format, which applies a semi-transparent background.
142
- * `classes`: additional CSS classes to apply.
143
- """
144
- if icon is True:
145
- icon = None
146
- return v.Alert(
147
- type="error",
148
- text=text,
149
- outlined=outlined,
150
- dense=dense,
151
- icon=icon,
152
- children=[*([label] if label is not None else []), *children],
153
- class_=_combine_classes(classes),
154
- **kwargs,
155
- )
@@ -1,393 +0,0 @@
1
- from typing import Callable, Dict, List, Optional, Tuple, Union, cast
2
-
3
- import reacton
4
- import reacton.core
5
- import reacton.ipyvuetify as v
6
- import reacton.utils
7
- from reacton.core import Element
8
-
9
- import solara
10
- import solara.lab
11
-
12
- from . import title as t
13
-
14
-
15
- @solara.component
16
- def AppIcon(open=False, on_click=None, **kwargs):
17
- def click(*ignore):
18
- on_click()
19
-
20
- icon = v.AppBarNavIcon(**kwargs)
21
- v.use_event(icon, "click", click)
22
- return icon
23
-
24
-
25
- should_use_embed = solara.create_context(False)
26
- PortalElements = Dict[str, List[Tuple[int, Element]]]
27
-
28
-
29
- def _set_sidebar_default(updater: Callable[[PortalElements], PortalElements]):
30
- pass
31
-
32
-
33
- class ElementPortal:
34
- def __init__(self):
35
- self.context = solara.create_context(_set_sidebar_default)
36
-
37
- # TODO: can we generalize the use of 'portals' ? (i.e. transporting elements from one place to another)
38
- def use_portal(self) -> List[Element]:
39
- portal_elements, set_portal_elements = solara.use_state(cast(PortalElements, {}))
40
- self.context.provide(set_portal_elements) # type: ignore
41
-
42
- portal_elements_flat: List[Tuple[int, Element]] = []
43
- for uuid, value in portal_elements.items():
44
- portal_elements_flat.extend(value)
45
- portal_elements_flat.sort(key=lambda x: x[0])
46
- return [e[1] for e in portal_elements_flat]
47
-
48
- def use_portal_add(self, children: List[Element], offset: int):
49
- key = solara.use_unique_key(prefix="portal-")
50
- set_portal_elements = solara.use_context(self.context)
51
- values: List[Tuple[int, Element]] = []
52
- for i, child in enumerate(children):
53
- values.append((offset + i, child))
54
-
55
- # updates we do when children/offset changes
56
- def add():
57
- # we use the update function method, to avoid stale data
58
- def update_dict(portal_elements):
59
- portal_elements_updated = portal_elements.copy()
60
- portal_elements_updated[key] = values
61
- return portal_elements_updated
62
-
63
- set_portal_elements(update_dict)
64
-
65
- solara.use_effect(add, [values])
66
-
67
- # cleanup we only need to do after component removal
68
- def add_cleanup():
69
- def cleanup():
70
- def without(portal_elements):
71
- portal_elements_restored = portal_elements.copy()
72
- portal_elements_restored.pop(key, None)
73
- return portal_elements_restored
74
-
75
- set_portal_elements(without)
76
-
77
- return cleanup
78
-
79
- solara.use_effect(add_cleanup, [])
80
-
81
-
82
- sidebar_portal = ElementPortal()
83
- appbar_portal = ElementPortal()
84
- apptitle_portal = ElementPortal()
85
-
86
-
87
- @solara.component
88
- def AppBar(children=[]):
89
- """Puts its children in the app bar of the AppLayout (or any layout that supports it).
90
-
91
- This component does not need to be a direct child of the AppLayout, it can be at any level in your component tree.
92
-
93
- If a [Tabs](/documentation/components/lab/tabs) component is used as direct child of the app bar, it will be shown under the app bar.
94
-
95
- ## Example showing an app bar
96
- ```solara
97
- import solara
98
-
99
- @solara.component
100
- def Page():
101
- logged_in, set_logged_in = solara.use_state(False)
102
- def toggle_login():
103
- set_logged_in(not logged_in)
104
-
105
- with solara.AppBar():
106
- icon_name = "mdi-logout" if logged_in else "mdi-login"
107
- solara.Button(icon_name=icon_name , on_click=toggle_login, icon=True)
108
- with solara.Column():
109
- if logged_in:
110
- solara.Info("You are logged in")
111
- else:
112
- solara.Error("You are logged out")
113
- ```
114
- """
115
- # TODO: generalize this, this is also used in title
116
- level = 0
117
- rc = reacton.core.get_render_context()
118
- context = rc.context
119
- while context and context.parent:
120
- level += 1
121
- context = context.parent
122
- offset = 2**level
123
- appbar_portal.use_portal_add(children, offset)
124
-
125
- return solara.Div(style="display; none")
126
-
127
-
128
- @solara.component
129
- def AppBarTitle(children=[]):
130
- """Puts its children in the title section of the AppBar (or any layout that supports it).
131
-
132
- This component does not need to be a direct child of the AppBar, it can be at any level in your component tree.
133
-
134
- ## Example
135
-
136
- ```solara
137
- import solara
138
-
139
- @solara.component
140
- def Page():
141
- with solara.AppBarTitle():
142
- solara.Text("Hi there")
143
- solara.Button("Click me", outlined=True, classes=["mx-2"])
144
- ```
145
- """
146
- level = 0
147
- rc = reacton.core.get_render_context()
148
- context = rc.context
149
- while context and context.parent:
150
- level += 1
151
- context = context.parent
152
- offset = 2**level
153
- apptitle_portal.use_portal_add(children, offset)
154
-
155
- return solara.Div(style="display; none")
156
-
157
-
158
- @solara.component
159
- def Sidebar(children=[]):
160
- """Puts its children in the sidebar of the AppLayout (or any layout that supports it).
161
- This component does not need to be a direct child of the AppLayout, it can be at any level in your component tree.
162
-
163
- On the solara.dev website and in the Jupyter notebook, the sidebar is shown in a dialog instead (embedded mode)
164
-
165
- ## Example showing a sidebar (embedded mode)
166
- ```solara
167
- import solara
168
-
169
- @solara.component
170
- def Page():
171
- with solara.Column() as main:
172
- with solara.Sidebar():
173
- solara.Markdown("## I am in the sidebar")
174
- solara.SliderInt(label="Ideal for placing controls")
175
- solara.Info("I'm in the main content area, put your main content here")
176
- return main
177
- ```
178
-
179
-
180
- """
181
- # TODO: generalize this, this is also used in title
182
- level = 0
183
- rc = reacton.core.get_render_context()
184
- context = rc.context
185
- while context and context.parent:
186
- level += 1
187
- context = context.parent
188
- offset = 2**level
189
- sidebar_portal.use_portal_add(children, offset)
190
-
191
- return solara.Div(style="display; none")
192
-
193
-
194
- @solara.component
195
- def AppLayout(
196
- children=[],
197
- sidebar_open=True,
198
- title=None,
199
- navigation=True,
200
- toolbar_dark=True,
201
- color: Optional[str] = "primary",
202
- classes: List[str] = [],
203
- style: Optional[Union[str, Dict[str, str]]] = None,
204
- ):
205
- """The default layout for Solara apps. It consists of an toolbar bar, a sidebar and a main content area.
206
-
207
- * The title of the app is set using the [Title](/documentation/components/page/title) component.
208
- * The sidebar content is set using the [Sidebar](/documentation/components/layout/sidebar) component.
209
- * The content is set by the `Page` component provided by the user.
210
-
211
- This component is usually not used directly, but rather through via the [Layout system](/documentation/advanced/howto/layout).
212
-
213
- The sidebar is only added when the AppLayout has more than one child.
214
-
215
- ```python
216
- with AppLayout(title="My App"):
217
- with v.Card():
218
- ... # sidebar content
219
- with v.Card():
220
- ... # main content
221
- ```
222
-
223
- # Arguments
224
-
225
- * `children`: The children of the AppLayout. The first child is used as the sidebar content, the rest as the main content.
226
- * `sidebar_open`: Whether the sidebar is open or not.
227
- * `title`: The title of the app shown in the app bar, can also be set using the [Title](/documentation/components/page/title) component.
228
- * `toolbar_dark`: Whether the toolbar should be dark or not.
229
- * `navigation`: Whether the navigation tabs based on routing should be shown.
230
- * `color`: The color of the toolbar.
231
- * `classes`: List of CSS classes to apply to the direct parent of the childred.
232
- * `style`: CSS style to apply to the direct parent of the children. If style is None we use a default style of "height: 100%; overflow: auto;"
233
- and add 12px of padding when the sidebar of titlebar is visible. This will make sure your app gets scrollbars when need.
234
- """
235
- route, routes = solara.use_route()
236
- paths = [solara.resolve_path(r, level=0) for r in routes]
237
- location = solara.use_context(solara.routing._location_context)
238
- embedded_mode = solara.use_context(should_use_embed)
239
- fullscreen, set_fullscreen = solara.use_state(False)
240
- # we cannot nest AppLayouts, so we can use the context to set the embedded mode
241
- should_use_embed.provide(True)
242
- index = routes.index(route) if route else None
243
-
244
- sidebar_open, set_sidebar_open = solara.use_state_or_update(sidebar_open)
245
- # remove the appbar from the children
246
- children_without_portal_sources = [c for c in children if c.component != AppBar]
247
- use_drawer = len(children_without_portal_sources) > 1
248
- children_content = children
249
- children_sidebar = []
250
- if use_drawer:
251
- child_sidebar = children_without_portal_sources.pop(0)
252
- children_sidebar = [child_sidebar]
253
- children_content = [c for c in children if c is not child_sidebar]
254
- children_sidebar = children_sidebar + sidebar_portal.use_portal()
255
- children_appbar = appbar_portal.use_portal()
256
- if children_sidebar:
257
- use_drawer = True
258
- title = t.use_title_get() or title
259
- children_appbartitle = apptitle_portal.use_portal()
260
- show_app_bar = (title and (len(routes) > 1 and navigation)) or children_appbar or use_drawer or children_appbartitle
261
-
262
- if style is None:
263
- style = {"height": "100%", "max-height": "100%", "overflow": "auto"}
264
- # if style is None, we choose a default style based on whether we are seeing the appbar, etc
265
- if show_app_bar or children_sidebar or len(children) != 1:
266
- style["padding"] = "12px"
267
-
268
- def set_path(index):
269
- path = paths[index]
270
- location.pathname = path
271
-
272
- v_slots = []
273
-
274
- tabs = None
275
- for child_appbar in children_appbar.copy():
276
- if child_appbar.component == solara.lab.Tabs:
277
- if tabs is not None:
278
- raise ValueError("Only one Tabs component is allowed in the AppBar")
279
- tabs = child_appbar
280
- children_appbar.remove(tabs)
281
-
282
- if (tabs is None) and routes and navigation and (len(routes) > 1):
283
- with solara.lab.Tabs(value=index, on_value=set_path, align="center") as tabs:
284
- for route in routes:
285
- name = route.path if route.path != "/" else "Home"
286
- solara.lab.Tab(name)
287
- # with v.Tabs(v_model=index, on_v_model=set_path, centered=True) as tabs:
288
- # for route in routes:
289
- # name = route.path if route.path != "/" else "Home"
290
- # v.Tab(children=[name])
291
- if tabs is not None:
292
- v_slots = [{"name": "extension", "children": tabs}]
293
- if embedded_mode and not fullscreen:
294
- # this version doesn't need to run fullscreen
295
- # also ideal in jupyter notebooks
296
- with v.Html(tag="div") as main:
297
- if show_app_bar or use_drawer:
298
- with v.AppBar(color=color, dark=toolbar_dark, v_slots=v_slots):
299
- if use_drawer:
300
- icon = AppIcon(sidebar_open, on_click=lambda: set_sidebar_open(not sidebar_open), v_on="x.on")
301
- with v.Menu(
302
- offset_y=True,
303
- nudge_left="50px",
304
- left=True,
305
- v_slots=[{"name": "activator", "variable": "x", "children": [icon]}],
306
- close_on_content_click=False,
307
- ):
308
- pass
309
- v.Sheet(children=children_sidebar, style_="padding: 12px; min-width: 400px")
310
- if title or children_appbartitle:
311
- v.ToolbarTitle(children=children_appbartitle or [title])
312
- v.Spacer()
313
- for child in children_appbar:
314
- solara.display(child)
315
- solara.Button(icon_name="mdi-fullscreen", on_click=lambda: set_fullscreen(True), icon=True, dark=False)
316
- with v.Row(no_gutters=False, class_="solara-content-main"):
317
- v.Col(cols=12, children=children_content)
318
- else:
319
- # this limits the height of the app to the height of the screen
320
- # and further down we use overflow: auto to add scrollbars to the main content
321
- # the navigation drawer adds it own scrollbars
322
- # NOTE: while developing this we added overflow: hidden, but this does not seem
323
- # to be necessary anymore
324
- with v.Html(tag="div", style_="height: 100vh") as main:
325
- with solara.HBox():
326
- if use_drawer:
327
- with v.NavigationDrawer(
328
- width="min-content",
329
- v_model=sidebar_open,
330
- on_v_model=set_sidebar_open,
331
- style_="min-width: 400px; max-width: 600px",
332
- clipped=True,
333
- app=True,
334
- # disable_resize_watcher=True,
335
- disable_route_watcher=True,
336
- mobile_break_point="960",
337
- class_="solara-content-main",
338
- ):
339
- if not show_app_bar:
340
- AppIcon(sidebar_open, on_click=lambda: set_sidebar_open(not sidebar_open))
341
- v.Html(tag="div", children=children_sidebar, style_="padding: 12px;").meta(ref="sidebar-content")
342
- if show_app_bar:
343
- # if hide_on_scroll is True, and we have a little bit of scrolling, vuetify seems to act strangely
344
- # when scrolling (on @mariobuikhuizen/vuetify v2.2.26-rc.0
345
- with v.AppBar(color=color, dark=toolbar_dark, app=True, clipped_left=True, hide_on_scroll=False, v_slots=v_slots).key("app-layout-appbar"):
346
- if use_drawer:
347
- AppIcon(sidebar_open, on_click=lambda: set_sidebar_open(not sidebar_open))
348
- if title or children_appbartitle:
349
- v.ToolbarTitle(children=children_appbartitle or [title])
350
- v.Spacer()
351
- for i, child in enumerate(children_appbar):
352
- # if the user already provided a key, don't override it
353
- if child._key is None:
354
- solara.display(child.key(f"app-layout-appbar-user-child-{i}"))
355
- else:
356
- solara.display(child)
357
- if fullscreen:
358
- solara.Button(icon_name="mdi-fullscreen-exit", on_click=lambda: set_fullscreen(False), icon=True, dark=False)
359
- # in vue2 is was v-content, in vue3 it is v-main
360
- MainComponent = v.Main if solara.util.ipyvuetify_major_version == 3 else v.Content # type: ignore
361
- with MainComponent(class_="solara-content-main", style_="height: 100%;").key("app-layout-content"):
362
- # make sure the scrollbar does no go under the appbar by adding overflow: auto
363
- # to a child of content, because content has padding-top: 64px (set by vuetify)
364
- # the padding: 12px is needed for backward compatibility with the previously used
365
- # v.Col which has this by default. If we do not use this, a solara.Column will
366
- # use a margin: -12px which will make a horizontal scrollbar appear
367
- solara.Div(style=style, classes=classes, children=children_content)
368
- if fullscreen:
369
- with v.Dialog(v_model=True, children=[], fullscreen=True, hide_overlay=True, persistent=True, no_click_animation=True) as dialog:
370
- v.Sheet(class_="overflow-y-auto overflow-x-auto", children=[main])
371
- pass
372
- return dialog
373
- return main
374
-
375
-
376
- @solara.component
377
- def _AppLayoutEmbed(children=[], sidebar_open=True, title=None):
378
- """Forces the embed more for a AppLayout. This is used by default in Jupyter."""
379
- should_use_embed.provide(True)
380
-
381
- if solara.checks.should_perform_jupyter_check():
382
- children = [solara.Column(children=children + [solara.checks.JupyterCheck()])]
383
-
384
- def once():
385
- import solara.server.telemetry
386
-
387
- solara.server.telemetry.jupyter_start()
388
-
389
- solara.use_effect(once, [])
390
- return AppLayout(children=children, sidebar_open=sidebar_open, title=title)
391
-
392
-
393
- reacton.core.jupyter_decorator_components.append(_AppLayoutEmbed)
@@ -1,85 +0,0 @@
1
- from typing import Callable, Dict, List, Optional, Union
2
-
3
- import solara
4
- import solara.util
5
- from reacton import ipyvue
6
- from reacton import ipyvuetify as v
7
-
8
-
9
- @solara.component
10
- def Button(
11
- label: str = None,
12
- on_click: Callable[[], None] = None,
13
- icon_name: str = None,
14
- children: list = [],
15
- disabled=False,
16
- text=False,
17
- outlined=False,
18
- color: Optional[str] = None,
19
- click_event="click",
20
- classes: List[str] = [],
21
- style: Union[str, Dict[str, str], None] = None,
22
- value=None,
23
- **kwargs,
24
- ):
25
- """A button that can be clicked to trigger an event.
26
-
27
- ## Example
28
-
29
- ```solara
30
- import solara
31
-
32
-
33
- @solara.component
34
- def Page():
35
- with solara.Row():
36
- solara.Button(label="Default")
37
- solara.Button(label="Default+color", color="primary")
38
- solara.Button(label="Text", text=True)
39
- solara.Button(label="Outlined", outlined=True)
40
- solara.Button(label="Outlined+color", outlined=True, color="primary")
41
- ```
42
-
43
-
44
- ## Arguments
45
-
46
- - `label`: The text to display on the button.
47
- - `on_click`: A callback function that is called when the button is clicked.
48
- - `icon_name`: The name of the icon to display on the button ([Overview of available icons](https://pictogrammers.github.io/@mdi/font/4.9.95/)).
49
- - `children`: A list of child elements to display on the button.
50
- - `disabled`: Whether the button is disabled.
51
- - `text`: Whether the button should be displayed as text, it has no shadow and no background.
52
- - `outlined`: Whether the button should be displayed as outlined, it has no background.
53
- - `value`: (Optional) When used as a child of a ToggleButtons component, the value of the selected button, see
54
- [ToggleButtons](/documentation/components/input/togglebuttons).
55
- - `classes`: Additional CSS classes to apply.
56
- - `style`: CSS style to apply.
57
-
58
- ### Deprecated arguments
59
- - click_event: (Deprecated/export option: The event that triggers the on_click callback, which can include vue event modifiers).
60
-
61
- """
62
- if label:
63
- children = [label] + children
64
- if icon_name:
65
- children = [v.Icon(left=bool(label), children=[icon_name])] + children
66
- if "class_" in kwargs:
67
- kwargs = kwargs.copy()
68
- class_ = solara.util._combine_classes([*classes, kwargs.pop("class_")])
69
- else:
70
- class_ = solara.util._combine_classes(classes)
71
- kwargs = kwargs.copy()
72
- style_flat = solara.util._flatten_style(style)
73
- if "style_" in kwargs:
74
- style_flat += kwargs.pop("style_")
75
- if solara.util.ipyvuetify_major_version == 3:
76
- variant = "elevated"
77
- if text:
78
- variant = "text"
79
- elif outlined:
80
- variant = "outlined"
81
- btn = solara.v.Btn(children=children, **kwargs, disabled=disabled, class_=class_, style_=style_flat, color=color, variant=variant)
82
- else:
83
- btn = solara.v.Btn(children=children, **kwargs, disabled=disabled, text=text, class_=class_, style_=style_flat, outlined=outlined, color=color)
84
- ipyvue.use_event(btn, click_event, lambda *_ignore: on_click and on_click())
85
- return btn