solara 1.30.0__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 (439) hide show
  1. {solara-1.30.0.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.0.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 -554
  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 -109
  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 -87
  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 -393
  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/notebook.py +0 -172
  187. solara/website/pages/__init__.py +0 -564
  188. solara/website/pages/apps/__init__.py +0 -16
  189. solara/website/pages/apps/authorization/__init__.py +0 -118
  190. solara/website/pages/apps/authorization/admin.py +0 -12
  191. solara/website/pages/apps/authorization/users.py +0 -12
  192. solara/website/pages/apps/jupyter-dashboard-1.py +0 -116
  193. solara/website/pages/apps/layout-demo.py +0 -40
  194. solara/website/pages/apps/multipage/__init__.py +0 -38
  195. solara/website/pages/apps/multipage/page1.py +0 -26
  196. solara/website/pages/apps/multipage/page2.py +0 -34
  197. solara/website/pages/apps/scatter.py +0 -136
  198. solara/website/pages/apps/scrolling.py +0 -63
  199. solara/website/pages/apps/tutorial-streamlit.py +0 -18
  200. solara/website/pages/changelog/__init__.py +0 -8
  201. solara/website/pages/changelog/changelog.md +0 -180
  202. solara/website/pages/contact/__init__.py +0 -8
  203. solara/website/pages/contact/contact.md +0 -17
  204. solara/website/pages/doc_use_download.py +0 -85
  205. solara/website/pages/documentation/__init__.py +0 -184
  206. solara/website/pages/documentation/advanced/__init__.py +0 -36
  207. solara/website/pages/documentation/advanced/content/00-overview.md +0 -1
  208. solara/website/pages/documentation/advanced/content/10-howto/00-overview.md +0 -1
  209. solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md +0 -191
  210. solara/website/pages/documentation/advanced/content/10-howto/20-layout.md +0 -120
  211. solara/website/pages/documentation/advanced/content/10-howto/30-testing.md +0 -149
  212. solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md +0 -66
  213. solara/website/pages/documentation/advanced/content/10-howto/40-embed.md +0 -43
  214. solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md +0 -120
  215. solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md +0 -4
  216. solara/website/pages/documentation/advanced/content/20-understanding/05-ipywidgets.md +0 -30
  217. solara/website/pages/documentation/advanced/content/20-understanding/06-ipyvuetify.md +0 -38
  218. solara/website/pages/documentation/advanced/content/20-understanding/10-reacton.md +0 -24
  219. solara/website/pages/documentation/advanced/content/20-understanding/12-reacton-basics.md +0 -104
  220. solara/website/pages/documentation/advanced/content/20-understanding/15-anatomy.md +0 -19
  221. solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md +0 -3
  222. solara/website/pages/documentation/advanced/content/20-understanding/18-containers.md +0 -160
  223. solara/website/pages/documentation/advanced/content/20-understanding/20-solara.md +0 -13
  224. solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md +0 -236
  225. solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md +0 -81
  226. solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md +0 -7
  227. solara/website/pages/documentation/advanced/content/30-enterprise/00-overview.md +0 -1
  228. solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md +0 -167
  229. solara/website/pages/documentation/advanced/content/40-development/00-overview.md +0 -0
  230. solara/website/pages/documentation/advanced/content/40-development/01-contribute.md +0 -41
  231. solara/website/pages/documentation/advanced/content/40-development/10-setup.md +0 -72
  232. solara/website/pages/documentation/advanced/content/__init__.py +0 -0
  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 -11
  379. solara/website/pages/documentation/faq/content/99-faq.md +0 -73
  380. solara/website/pages/documentation/getting_started/__init__.py +0 -15
  381. solara/website/pages/documentation/getting_started/content/00-quickstart.md +0 -84
  382. solara/website/pages/documentation/getting_started/content/01-introduction.md +0 -121
  383. solara/website/pages/documentation/getting_started/content/02-installing.md +0 -81
  384. solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md +0 -9
  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 -84
  387. solara/website/pages/documentation/getting_started/content/04-tutorials/30-ipywidgets.md +0 -120
  388. solara/website/pages/documentation/getting_started/content/04-tutorials/40-streamlit.md +0 -141
  389. solara/website/pages/documentation/getting_started/content/04-tutorials/50-dash.md +0 -140
  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 -7
  395. solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md +0 -218
  396. solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md +0 -83
  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 -27
  399. solara/website/pages/documentation/getting_started/content/06-reference/41-asset-files.md +0 -32
  400. solara/website/pages/documentation/getting_started/content/06-reference/60-static-site-generation.md +0 -55
  401. solara/website/pages/documentation/getting_started/content/06-reference/70-search.md +0 -30
  402. solara/website/pages/documentation/getting_started/content/06-reference/80-reloading.md +0 -30
  403. solara/website/pages/documentation/getting_started/content/06-reference/90-notebook-support.md +0 -4
  404. solara/website/pages/documentation/getting_started/content/06-reference/95-caching.md +0 -143
  405. solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md +0 -3
  406. solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md +0 -269
  407. solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md +0 -76
  408. solara/website/pages/documentation/getting_started/content/08-lab/00-what-is-lab.md +0 -3
  409. solara/website/pages/documentation/getting_started/content/90-troubleshoot.md +0 -22
  410. solara/website/pages/documentation/getting_started/content/__init__.py +0 -0
  411. solara/website/pages/docutils.py +0 -38
  412. solara/website/pages/showcase/__init__.py +0 -105
  413. solara/website/pages/showcase/domino_code_assist.py +0 -60
  414. solara/website/pages/showcase/planeto_tessa.py +0 -19
  415. solara/website/pages/showcase/solara_dev.py +0 -54
  416. solara/website/pages/showcase/solarathon_2023_team_2.py +0 -22
  417. solara/website/pages/showcase/solarathon_2023_team_4.py +0 -22
  418. solara/website/pages/showcase/solarathon_2023_team_5.py +0 -23
  419. solara/website/pages/showcase/solarathon_2023_team_6.py +0 -34
  420. solara/website/pages/showcase/wanderlust.py +0 -27
  421. solara/website/public/beach.jpeg +0 -0
  422. solara/website/public/logo.svg +0 -6
  423. solara/website/public/social/discord.svg +0 -1
  424. solara/website/public/social/github.svg +0 -1
  425. solara/website/public/social/twitter.svg +0 -3
  426. solara/website/public/success.html +0 -25
  427. solara/website/templates/index.html.j2 +0 -117
  428. solara/website/utils.py +0 -51
  429. solara/widgets/__init__.py +0 -1
  430. solara/widgets/vue/gridlayout.vue +0 -110
  431. solara/widgets/vue/html.vue +0 -4
  432. solara/widgets/vue/navigator.vue +0 -104
  433. solara/widgets/vue/vegalite.vue +0 -115
  434. solara/widgets/widgets.py +0 -65
  435. solara-1.30.0.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json +0 -7
  436. solara-1.30.0.data/data/etc/jupyter/jupyter_server_config.d/solara.json +0 -7
  437. solara-1.30.0.dist-info/RECORD +0 -438
  438. solara-1.30.0.dist-info/entry_points.txt +0 -5
  439. /solara-1.30.0.dist-info/licenses/LICENSE → /LICENSE +0 -0
@@ -1,564 +0,0 @@
1
- import contextlib
2
-
3
- import solara
4
- from solara.alias import rv
5
- from solara.components.title import Title
6
- from solara.server import server
7
-
8
- from ..components import Header, Hero
9
- from ..components.mailchimp import MailChimp
10
-
11
- title = "Home"
12
-
13
- route_order = ["/", "showcase", "documentation", "apps", "contact", "changelog"]
14
-
15
-
16
- server._redirects = {
17
- "/docs": "/documentation/getting_started/introduction",
18
- "/docs/installing": "/documentation/getting_started/installing",
19
- "/docs/quickstart": "/documentation/getting_started",
20
- "/docs/tutorial": "/documentation/getting_started/tutorials",
21
- "/docs/tutorial/data-science": "/documentation/getting_started/tutorials/data-science",
22
- "/docs/tutorial/web-app": "/documentation/getting_started/tutorials/web-app",
23
- "/docs/tutorial/ipywidgets": "/documentation/getting_started/tutorials/ipywidgets",
24
- "/docs/tutorial/streamlit": "/documentation/getting_started/tutorials/streamlit",
25
- "/docs/tutorial/dash": "/documentation/getting_started/tutorials/dash",
26
- "/docs/tutorial/jupyter-dashboard-part1": "/documentation/getting_started/tutorials/jupyter-dashboard-part1",
27
- "/docs/fundamentals": "/documentation/getting_started/fundamentals",
28
- "/docs/fundamentals/components": "/documentation/getting_started/fundamentals/components",
29
- "/docs/fundamentals/state-management": "/documentation/getting_started/fundamentals/state-management",
30
- "/docs/howto": "/documentation/advanced/howto",
31
- "/docs/howto/contribute": "/documentation/advanced/development/contribute",
32
- "/docs/howto/multipage": "/documentation/advanced/howto/multipage",
33
- "/docs/howto/layout": "/documentation/advanced/howto/layout",
34
- "/docs/howto/testing": "/documentation/advanced/howto/testing",
35
- "/docs/howto/debugging": "/documentation/advanced/howto/debugging",
36
- "/docs/howto/embed": "/documentation/advanced/howto/embed",
37
- "/docs/howto/ipywidget-libraries": "/documentation/advanced/howto/ipywidget-libraries",
38
- "/docs/reference": "/documentation/getting_started/reference",
39
- "/docs/reference/static-files": "/documentation/getting_started/reference/static-files",
40
- "/docs/reference/asset-files": "/documentation/getting_started/reference/asset-files",
41
- "/docs/reference/static-site-generation": "/documentation/getting_started/reference/static-site-generation",
42
- "/docs/reference/search": "/documentation/getting_started/reference/search",
43
- "/docs/reference/reloading": "/documentation/getting_started/reference/reloading",
44
- "/docs/reference/notebook-support": "/documentation/getting_started/reference/notebook-support",
45
- "/docs/reference/caching": "/documentation/getting_started/reference/caching",
46
- "/docs/understanding": "/documentation/advanced/understanding",
47
- "/docs/understanding/ipywidgets": "/documentation/advanced/understanding/ipywidgets",
48
- "/docs/understanding/ipyvuetify": "/documentation/advanced/understanding/ipyvuetify",
49
- "/docs/understanding/reacton": "/documentation/advanced/understanding/reacton",
50
- "/docs/understanding/reacton-basics": "/documentation/advanced/understanding/reacton-basics",
51
- "/docs/understanding/anatomy": "/documentation/advanced/understanding/anatomy",
52
- "/docs/understanding/rules-of-hooks": "/documentation/advanced/understanding/rules-of-hooks",
53
- "/docs/understanding/containers": "/documentation/advanced/understanding/containers",
54
- "/docs/understanding/solara": "/documentation/advanced/understanding/solara",
55
- "/docs/understanding/routing": "/documentation/advanced/understanding/routing",
56
- "/docs/understanding/solara-server": "/documentation/advanced/understanding/solara-server",
57
- "/docs/understanding/voila": "/documentation/advanced/understanding/voila",
58
- "/docs/deploying": "/documentation/getting_started/deploying",
59
- "/docs/deploying/self-hosted": "/documentation/getting_started/deploying/self-hosted",
60
- "/docs/deploying/cloud-hosted": "/documentation/getting_started/deploying/cloud-hosted",
61
- "/docs/enterprise": "/documentation/advanced/enterprise",
62
- "/docs/enterprise/oauth": "/documentation/advanced/enterprise/oauth",
63
- "/docs/development": "/documentation/advanced/development/setup",
64
- "/docs/troubleshoot": "/documentation/getting_started/troubleshoot",
65
- "/docs/changelog": "/changelog",
66
- "/docs/contact": "/contact",
67
- "/docs/faq": "/documentation/faq",
68
- "/docs/lab": "/documentation/getting_started/lab",
69
- "/api": "/documentation/api",
70
- "/api/altair": "/documentation/components/viz/altair",
71
- "/api/app_bar": "/documentation/components/layout/app_bar",
72
- "/api/app_bar_title": "/documentation/components/layout/app_bar_title",
73
- "/api/app_layout": "/documentation/components/layout/app_layout",
74
- "/api/avatar": "/documentation/components/enterprise/avatar",
75
- "/api/avatar_menu": "/documentation/components/enterprise/avatar_menu",
76
- "/api/card": "/documentation/components/layout/card",
77
- "/api/card_actions": "/documentation/components/layout/card_actions",
78
- "/api/column": "/documentation/components/layout/column",
79
- "/api/columns": "/documentation/components/layout/columns",
80
- "/api/columns_responsive": "/documentation/components/layout/columns_responsive",
81
- "/api/cross_filter_dataframe": "/documentation/api/cross_filter/cross_filter_dataframe",
82
- "/api/cross_filter_report": "/documentation/api/cross_filter/cross_filter_report",
83
- "/api/cross_filter_select": "/documentation/api/cross_filter/cross_filter_select",
84
- "/api/cross_filter_slider": "/documentation/api/cross_filter/cross_filter_slider",
85
- "/api/generate_routes": "/documentation/api/routing/generate_routes",
86
- "/api/generate_routes_directory": "/documentation/api/routing/generate_routes_directory",
87
- "/api/resolve_path": "/documentation/api/routing/resolve_path",
88
- "/api/resolve_path/kiwi": "/documentation/api/routing/resolve_path/kiwi",
89
- "/api/resolve_path/banana": "/documentation/api/routing/resolve_path/banana",
90
- "/api/resolve_path/apple": "/documentation/api/routing/resolve_path/apple",
91
- "/api/link": "/documentation/components/advanced/link",
92
- "/api/link/kiwi": "/documentation/components/advanced/link/kiwi",
93
- "/api/link/banana": "/documentation/components/advanced/link/banana",
94
- "/api/link/apple": "/documentation/components/advanced/link/apple",
95
- "/api/use_route": "/documentation/api/routing/use_route",
96
- "/api/use_route/fruit": "/documentation/api/routing/use_route/fruit",
97
- "/api/use_route/fruit/kiwi": "/documentation/api/routing/use_route/fruit/kiwi",
98
- "/api/use_route/fruit/banana": "/documentation/api/routing/use_route/fruit/banana",
99
- "/api/use_route/fruit/apple": "/documentation/api/routing/use_route/fruit/apple",
100
- "/api/use_router": "/documentation/api/routing/use_router",
101
- "/api/use_cross_filter": "/documentation/api/hooks/use_cross_filter",
102
- "/api/use_dark_effective": "/documentation/api/hooks/use_dark_effective",
103
- "/api/use_effect": "/documentation/api/hooks/use_effect",
104
- "/api/use_exception": "/documentation/api/hooks/use_exception",
105
- "/api/use_memo": "/documentation/api/hooks/use_memo",
106
- "/api/use_previous": "/documentation/api/hooks/use_previous",
107
- "/api/use_reactive": "/documentation/api/hooks/use_reactive",
108
- "/api/use_state": "/documentation/api/hooks/use_state",
109
- "/api/use_state_or_update": "/documentation/api/hooks/use_state_or_update",
110
- "/api/use_task": "/documentation/components/lab/use_task",
111
- "/api/use_thread": "/documentation/api/hooks/use_thread",
112
- "/api/use_trait_observe": "/documentation/api/hooks/use_trait_observe",
113
- "/examples/fullscreen": "/documentation/examples/fullscreen",
114
- "/examples/fullscreen/authorization": "/documentation/examples/fullscreen/authorization",
115
- "/examples/fullscreen/layout_demo": "/documentation/examples/fullscreen/layout_demo",
116
- "/examples/fullscreen/multipage": "/documentation/examples/fullscreen/multipage",
117
- "/examples/fullscreen/scatter": "/documentation/examples/fullscreen/scatter",
118
- "/examples/fullscreen/scrolling": "/documentation/examples/fullscreen/scrolling",
119
- "/examples/fullscreen/tutorial_streamlit": "/documentation/examples/fullscreen/tutorial_streamlit",
120
- "/api/route": "/documentation/api/routing/route",
121
- "/api/route/kiwi": "/documentation/api/routing/route/kiwi",
122
- "/api/route/banana": "/documentation/api/routing/route/banana",
123
- "/api/route/apple": "/documentation/api/routing/route/apple",
124
- "/examples/libraries": "/documentation/examples/libraries",
125
- "/examples/libraries/altair": "/documentation/examples/libraries/altair",
126
- "/examples/libraries/bqplot": "/documentation/examples/libraries/bqplot",
127
- "/examples/libraries/ipyleaflet": "/documentation/examples/libraries/ipyleaflet",
128
- "/examples/libraries/ipyleaflet_advanced": "/documentation/examples/libraries/ipyleaflet_advanced",
129
- "/examples/utilities": "/documentation/examples/utilities",
130
- "/examples/utilities/calculator": "/documentation/examples/utilities/calculator",
131
- "/examples/utilities/countdown_timer": "/documentation/examples/utilities/countdown_timer",
132
- "/examples/utilities/todo": "/documentation/examples/utilities/todo",
133
- "/examples/visualization": "/documentation/examples/visualization",
134
- "/examples/visualization/annotator": "/documentation/examples/visualization/annotator",
135
- "/examples/visualization/linked_views": "/documentation/examples/visualization/linked_views",
136
- "/examples/visualization/plotly": "/documentation/examples/visualization/plotly",
137
- "/examples/general": "/documentation/examples/general",
138
- "/examples/general/custom_storage": "/documentation/examples/general/custom_storage",
139
- "/examples/general/deploy_model": "/documentation/examples/general/deploy_model",
140
- "/examples/general/live_update": "/documentation/examples/general/live_update",
141
- "/examples/general/login_oauth": "/documentation/examples/general/login_oauth",
142
- "/examples/general/pokemon_search": "/documentation/examples/general/pokemon_search",
143
- "/examples/general/vue_component": "/documentation/examples/general/vue_component",
144
- "/examples": "/documentation/examples",
145
- "/examples/ai": "/documentation/examples/ai",
146
- "/examples/ai/chatbot": "/documentation/examples/ai/chatbot",
147
- "/examples/ai/tokenizer": "/documentation/examples/ai/tokenizer",
148
- "/examples/basics": "/documentation/examples/basics",
149
- "/examples/basics/sine": "/documentation/examples/basics/sine",
150
- "/api/get_kernel_id": "/documentation/api/utilities/get_kernel_id",
151
- "/api/get_session_id": "/documentation/api/utilities/get_session_id",
152
- "/api/on_kernel_start": "/documentation/api/utilities/on_kernel_start",
153
- "/api/component_vue": "/documentation/api/utilities/component_vue",
154
- "/api/plotly": "/documentation/components/viz/plotly",
155
- "/api/plotly_express": "/documentation/components/viz/plotly_express",
156
- "/api/tab": "/documentation/components/lab/tab",
157
- "/api/tabs": "/documentation/components/lab/tabs",
158
- "/api/task": "/documentation/components/lab/task",
159
- "/api/computed": "/documentation/api/utilities/computed",
160
- "/api/markdown": "/documentation/components/output/markdown",
161
- "/api/markdown_editor": "/documentation/components/output/markdown_editor",
162
- "/api/matplotlib": "/documentation/components/viz/matplotlib",
163
- "/api/echarts": "/documentation/components/viz/echarts",
164
- "/api/theming": "/documentation/components/lab/theming",
165
- "/api/griddraggable": "/documentation/components/layout/griddraggable",
166
- "/api/gridfixed": "/documentation/components/layout/gridfixed",
167
- "/api/html": "/documentation/components/output/html",
168
- "/api/file_download": "/documentation/components/output/file_download",
169
- "/api/hbox": "/documentation/components/layout/hbox",
170
- "/api/vbox": "/documentation/components/layout/vbox",
171
- "/api/sidebar": "/documentation/components/layout/sidebar",
172
- "/api/row": "/documentation/components/layout/row",
173
- "/api/error": "/documentation/components/status/error",
174
- "/api/info": "/documentation/components/status/info",
175
- "/api/progress": "/documentation/components/status/progress",
176
- "/api/spinner": "/documentation/components/status/spinner",
177
- "/api/success": "/documentation/components/status/success",
178
- "/api/warning": "/documentation/components/status/warning",
179
- "/api/image": "/documentation/components/output/image",
180
- "/api/sql_code": "/documentation/components/output/sql_code",
181
- "/api/tooltip": "/documentation/components/output/tooltip",
182
- "/api/chat": "/documentation/components/lab/chat",
183
- "/api/confirmation_dialog": "/documentation/components/lab/confirmation_dialog",
184
- "/api/cookies_headers": "/documentation/components/lab/cookies_headers",
185
- "/api/input_date": "/documentation/components/lab/input_date",
186
- "/api/button": "/documentation/components/input/button",
187
- "/api/checkbox": "/documentation/components/input/checkbox",
188
- "/api/file_browser": "/documentation/components/input/file_browser",
189
- "/api/file_drop": "/documentation/components/input/file_drop",
190
- "/api/meta": "/documentation/components/advanced/meta",
191
- "/api/style": "/documentation/components/advanced/style",
192
- "/api/menu": "/documentation/components/lab/menu",
193
- "/api/head": "/documentation/components/page/head",
194
- "/api/input": "/documentation/components/input/input",
195
- "/api/select": "/documentation/components/input/select",
196
- "/api/slider": "/documentation/components/input/slider",
197
- "/api/switch": "/documentation/components/input/switch",
198
- "/api/togglebuttons": "/documentation/components/input/togglebuttons",
199
- "/api/dataframe": "/documentation/components/data/dataframe",
200
- "/api/pivot_table": "/documentation/components/data/pivot_table",
201
- "/api/display": "/documentation/api/utilities/display",
202
- "/api/memoize": "/documentation/api/utilities/memoize",
203
- "/api/reactive": "/documentation/api/utilities/reactive",
204
- "/api/widget": "/documentation/api/utilities/widget",
205
- "/api/default_layout": "/documentation/components/layout",
206
- "/api/title": "/documentation/components/page/title",
207
- }
208
-
209
-
210
- @solara.component
211
- def Page():
212
- solara.Markdown("should not see me")
213
-
214
-
215
- @solara.component
216
- def SimpleListItem(text=None, children=[], class_: str = None, icon_name=None):
217
- if icon_name is not None:
218
- children = [rv.Icon(children=[icon_name])] + children
219
- if text is not None:
220
- children = [text] + children
221
- return rv.Html(tag="li", children=children, attributes={"class": class_})
222
-
223
-
224
- @solara.component
225
- def List(children=[], class_: str = None):
226
- return rv.Html(tag="ul", children=children, attributes={"class": class_})
227
-
228
-
229
- @solara.component
230
- def Sidebar():
231
- route_current, all_routes = solara.use_route()
232
- router = solara.use_router()
233
- selected = router.path
234
- with rv.Col(tag="aside", md=4, lg=3, class_="sidebar bg-grey d-none d-md-block") as main:
235
- with List():
236
- for route in all_routes:
237
- if route.children and route.data is None:
238
- path = solara.resolve_path(route.children[0])
239
- path = getattr(route.module, "redirect", path)
240
- path = getattr(route.children[0].module, "redirect", path)
241
- with solara.Link(path) if path is not None else contextlib.nullcontext():
242
- with SimpleListItem(route.label, class_="active" if path == selected else None):
243
- with List():
244
- for child in route.children[1:]:
245
- path = solara.resolve_path(child)
246
- path = getattr(child.module, "redirect", path)
247
- with solara.Link(path) if path is not None else contextlib.nullcontext():
248
- title = child.label or "no label"
249
- if callable(title):
250
- title = "Error: dynamic title"
251
- SimpleListItem(title, class_="active" if path == selected else None)
252
- else:
253
- path = solara.resolve_path(route)
254
- path = getattr(route.module, "redirect", path)
255
- if route.children:
256
- path = getattr(route.children[0].module, "redirect", path)
257
- with solara.Link(path) if path is not None else contextlib.nullcontext():
258
- SimpleListItem(route.label, class_="active" if path == selected else None)
259
- return main
260
-
261
-
262
- @solara.component
263
- def Layout(children=[]):
264
- router = solara.use_router()
265
- route_current, all_routes = solara.use_route()
266
- route_sidebar_current, all_routes_sidebar = solara.use_route(1)
267
-
268
- show_left_menu, set_show_left_menu = solara.use_state(False)
269
- show_right_menu, set_show_right_menu = solara.use_state(False)
270
-
271
- target, set_target = solara.use_state(0)
272
-
273
- if route_current and route_current.path == "apps":
274
- return children[0]
275
- with solara.VBox(grow=False) as main:
276
- Title(title="Solara documentation")
277
- solara.Meta(name="twitter:card", content="summary_large_image")
278
- solara.Meta(name="twitter:site", content="@solara_dev")
279
- solara.Meta(name="twitter:image", content="https://solara.dev/static/assets/images/logo-small.png")
280
- solara.Meta(property="og:url", content="https://solara.dev" + router.path)
281
- solara.Meta(property="og:image", content="https://solara.dev/static/assets/images/logo-small.png")
282
- solara.Meta(property="og:type", content="website")
283
- Header(
284
- on_toggle_left_menu=lambda: set_show_left_menu(not show_left_menu),
285
- on_toggle_right_menu=lambda: set_show_right_menu(not show_right_menu),
286
- )
287
- if route_current is not None and route_current.path == "/":
288
- Hero(
289
- title="A pure Python, React-style web framework",
290
- sub_title="Solara helps you build powerful & scalable Jupyter and web apps <b>faster</b> and <b>easier</b>.",
291
- button_text="Quickstart",
292
- )
293
-
294
- with rv.Container(tag="section", fluid=True, ma_0=True, pa_0=True, class_="fill-height solara-content-main"):
295
- if route_current is None:
296
- return solara.Error("Page not found")
297
- elif route_current.path == "/":
298
- description = "Use ipywidgets with Solara to build powerful and scalable web apps for Jupyter and production in Python."
299
- # both tags in one
300
- solara.Meta(name="description", property="og:description", content=description)
301
- solara.Meta(name="twitter:description", content=description)
302
- solara.Meta(property="og:title", content="Solara documentation")
303
- solara.Meta(name="twitter:title", content="Solara documentation")
304
-
305
- with rv.Row(class_="ma-2"):
306
- with rv.Col(md=6, offset_md=3, sm=8, offset_sm=2):
307
- solara.Markdown(
308
- """
309
- # What is Solara?
310
-
311
- Solara lets you build web apps from pure Python using ipywidgets or a React-like API on
312
- top of ipywidgets.
313
- These apps work both inside the Jupyter Notebook and as standalone web apps with frameworks like FastAPI.
314
-
315
- With Solara, you benefit from a paradigm that promotes component-based code and simplifies state management,
316
- making your development process more efficient and your applications more maintainable.
317
-
318
- Solara provides you with access to the full strength of the Python ecosystem.
319
- This means you can continue using your favorite libraries while expanding your web development capabilities.
320
- """
321
- )
322
- with solara.HBox():
323
- with solara.Link("/documentation"):
324
- solara.Button(label="Read more", class_="ma-1 homepage-button", href="/documentation", color="primary", dark=True)
325
- with solara.Link("/documentation/getting_started"):
326
- solara.Button(label="Quickstart", class_="ma-1 homepage-button", color="primary", dark=True)
327
- # with rv.Col(md=4, sm=5):
328
- # rv.Img(src="https://dxhl76zpt6fap.cloudfront.net/public/landing/what.webp", style_="width:900px")
329
-
330
- with solara.Column(style={"width": "100%"}, gap="2.5em", classes=["pt-10", "mt-8"], align="center"):
331
- with solara.Row(justify="center", gap="2.5em", classes=["ma-2", "row-container"]):
332
- rv.Img(src="https://dxhl76zpt6fap.cloudfront.net/public/landing/complexity.webp", contain=True)
333
- solara.Markdown(
334
- """
335
- # Build **large** apps with **low** code complexity
336
-
337
- With Solara, you can build large scale apps without hitting a complexity wall.
338
-
339
- With other tools you may hit a dead end due to missing features or implementing features
340
- adds too much complexity to your code base.
341
-
342
- Solara offers the **flexibility** to build complex apps, but keeps the **simplicity** of a small code base.
343
- """
344
- )
345
- with solara.Row(justify="center", gap="2.5em", classes=["ma-2", "row-container"]):
346
- solara.Markdown(
347
- """
348
- # The trustworthiness of React
349
-
350
- Using the same API as React, but ported to Python, Solara lets you build apps with the same
351
- trustworthiness as React.
352
-
353
- With a decade of experience, React is battle-tested and proven to be
354
- a reliable and robust framework to build large scale apps.
355
- """
356
- )
357
- with solara.Row(justify="center", style={"width": "500px"}):
358
- rv.Img(src="https://dxhl76zpt6fap.cloudfront.net/public/landing/python-love-react.webp", style_="max-width:300px", contain=True)
359
- with solara.Row(justify="center", gap="2.5em", classes=["ma-2", "row-container"]):
360
- with solara.Column():
361
- if target == 0:
362
- solara.Markdown("#### Running in: Jupyter notebook")
363
- solara.Image(
364
- "https://global.discourse-cdn.com/standard11/uploads/jupyter/original/2X/8/8bc875c0c3845ae077168575a4f8a49cf1b35bc6.gif"
365
- )
366
- else:
367
- solara.Markdown("#### Running in: FastAPI")
368
- solara.Image(
369
- "https://global.discourse-cdn.com/standard11/uploads/jupyter/original/2X/9/9442fc70e2a1fcd201f4f900fa073698a1f8c937.gif"
370
- )
371
- import solara.website.pages.apps.scatter as scatter
372
-
373
- github_url = solara.util.github_url(scatter.__file__)
374
- solara.Button(
375
- label="View source",
376
- icon_name="mdi-github-circle",
377
- attributes={"href": github_url, "target": "_blank"},
378
- text=True,
379
- outlined=False,
380
- )
381
- with solara.Link("/documentation/examples"):
382
- with solara.Column(style="width: 100%;"):
383
- solara.Button(
384
- label="More examples",
385
- icon_name="mdi-brain",
386
- text=True,
387
- outlined=False,
388
- )
389
- with solara.Column():
390
- solara.Markdown(
391
- """
392
- ## Create apps
393
-
394
- In Jupyter or standalone, and run them in production
395
- using FastAPI or starlette.
396
-
397
- Get more inspiration from our [examples](/documentation/examples).
398
- """
399
- )
400
- with rv.ExpansionPanels(v_model=target, on_v_model=set_target, mandatory=True, flat=True):
401
- with rv.ExpansionPanel():
402
- rv.ExpansionPanelHeader(children=["Jupyter notebook"])
403
- with rv.ExpansionPanelContent():
404
- solara.Markdown("Build on top of ipywidgets, solara components work in all Jupyter notebook environments.")
405
- with rv.ExpansionPanel():
406
- rv.ExpansionPanelHeader(children=["FastAPI"])
407
- with rv.ExpansionPanelContent():
408
- solara.Markdown(
409
- """Using [solara-server](documentation/advanced/understanding/solara-server),
410
- we can run our app in production using FastAPI."""
411
- )
412
-
413
- with solara.Column(style={"width": "100%"}):
414
- solara.v.Divider()
415
-
416
- with solara.Column(align="center", gap="2.5em", style={"width": "100%", "padding-bottom": "50px"}):
417
- solara.Markdown("# Testimonials", style="text-align:center")
418
- with solara.Row(justify="center", gap="2.5em", style={"align-items": "stretch", "flex-wrap": "wrap", "row-gap": "2.5em"}):
419
- Testimonial(
420
- "Solara is like streamlit, but for Jupyter. I am really excited to see where this goes!",
421
- "Jack Parmer",
422
- "Former CEO and Co-Founder of Plotly",
423
- "https://dxhl76zpt6fap.cloudfront.net/public/avatar/jack-parmer.jpg",
424
- )
425
- Testimonial(
426
- "Solara has been transformative, allowing us to rapidly create a Jupyter app and iterate with impressive speed.",
427
- "Nick Elprin",
428
- "CEO and Co-Founder of Domino Data Lab",
429
- "https://dxhl76zpt6fap.cloudfront.net/public/avatar/nick-elprin.jpg",
430
- )
431
- Testimonial(
432
- "Solara allows us to go from prototype to production with the same stack.",
433
- "Jonathan Chambers",
434
- "Co-founder of Planeto",
435
- "https://dxhl76zpt6fap.cloudfront.net/public/avatar/jonathan-chambers.jpg",
436
- )
437
-
438
- with solara.Column(style={"width": "100%"}):
439
- solara.v.Divider()
440
-
441
- with solara.Column(align="center", gap="2.5em", style={"width": "100%", "padding-bottom": "50px"}):
442
- solara.Markdown("# Sponsors", style="text-align:center")
443
- with solara.Row(justify="center", gap="2.5em", style={"align-items": "stretch"}):
444
- with solara.v.Html(tag="a", attributes={"href": "https://www.dominodatalab.com/", "target": "_blank"}):
445
- solara.Image("https://dxhl76zpt6fap.cloudfront.net/public/sponsors/domino.png", width="300px")
446
-
447
- with solara.Column(style={"width": "100%"}):
448
- solara.v.Divider()
449
-
450
- with solara.Row(justify="center", gap="2.5em", classes=["footer-wrapper"]):
451
- with solara.Column(align="center", style={"min-width": "300px"}):
452
- solara.Markdown(
453
- """
454
- #### For any consulting, training or support needs
455
- [contact@solara.dev](mailto:contact@solara.dev)
456
- """
457
- )
458
- solara.v.Divider(vertical=True)
459
- with solara.Column(align="center", style={"min-width": "300px"}):
460
- solara.Markdown("#### Join our Mailing list to get the latest news")
461
- with solara.Div(style={"width": "80%"}):
462
- MailChimp(location=router.path)
463
- else:
464
- with rv.Row(
465
- style_="flex-wrap: nowrap; margin: 0; min-height: calc(100vh - 215.5px);",
466
- justify="center" if route_current is not None and route_current.path in ["documentation", "showcase"] else "start",
467
- ):
468
- if route_current is not None and hasattr(route_current.module, "Sidebar"):
469
- route_current.module.Sidebar() # type: ignore
470
- else:
471
- if route_current is not None and route_current.path not in ["documentation", "showcase", "contact", "changelog"]:
472
- Sidebar()
473
- with rv.Col(
474
- tag="main",
475
- md=True,
476
- class_="pa-0",
477
- style_=f"""max-width: {'1024px' if route_current.path not in ['documentation', 'contact', 'changelog']
478
- else 'unset'}; overflow: hidden auto;""",
479
- ):
480
- if route_current is not None and route_current.path == "/":
481
- with rv.Row(align="center"):
482
- pass
483
- with solara.Row(
484
- children=children,
485
- justify="center",
486
- classes=["solara-page-content-search"],
487
- style=f"height: {'100%' if route_current.path == 'documentation' else 'unset'};",
488
- ):
489
- pass
490
-
491
- # absolute = True prevents the drawer from being below the overlay it generates
492
- # Drawer navigation for top menu
493
- with rv.NavigationDrawer(
494
- v_model=show_right_menu,
495
- on_v_model=set_show_right_menu,
496
- fixed=True,
497
- absolute=True,
498
- right=True,
499
- hide_overlay=False,
500
- overlay_color="#000000",
501
- overlay_opacity=0.5,
502
- style_="height: 100vh",
503
- ):
504
- with rv.List(nav=True):
505
- with rv.ListItemGroup(active_class="text--primary"):
506
- for route in all_routes:
507
- if route.path == "apps":
508
- continue
509
- with solara.Link(route):
510
- solara.ListItem(route.label)
511
-
512
- # Drawer navigation for sidebar
513
- with rv.NavigationDrawer(
514
- v_model=show_left_menu,
515
- on_v_model=set_show_left_menu,
516
- fixed=True,
517
- absolute=True,
518
- hide_overlay=False,
519
- overlay_color="#000000",
520
- overlay_opacity=0.5,
521
- style_="height: 100vh",
522
- ):
523
- with rv.List(nav=True):
524
- current_path = router.path
525
- with rv.ListItemGroup(active_class="text--primary", v_model=current_path):
526
- for route in all_routes_sidebar:
527
- # this gets rid of the api/link child routes
528
- if len([k for k in route.children if k.label]) == 0:
529
- with solara.Link(route):
530
- solara.ListItem(route.label, value=solara.resolve_path(route))
531
- else:
532
- with solara.ListItem(route.label or "no-title", value=solara.resolve_path(route) + "_no_select"):
533
- for subroute in route.children:
534
- if subroute.label:
535
- with solara.Link(subroute):
536
- with solara.ListItem(subroute.label, value=solara.resolve_path(subroute)):
537
- pass
538
-
539
- return main
540
-
541
-
542
- @solara.component
543
- def Testimonial(text, name, position, img):
544
- max_width = "300px"
545
- with rv.Card(
546
- elevation=2,
547
- dark=False,
548
- max_width=max_width,
549
- class_="testimonial-card",
550
- ):
551
- with rv.CardActions():
552
- with rv.ListItem(class_="grow"):
553
- with rv.ListItemAvatar(color="grey darken-3"):
554
- rv.Img(
555
- class_="elevation-6",
556
- src=img,
557
- )
558
- with rv.ListItemContent():
559
- rv.ListItemTitle(children=[name])
560
- rv.ListItemSubtitle(children=[position], style_="white-space: unset;")
561
- rv.CardText(
562
- children=[text],
563
- style_="font-style: italic; padding-top: 0px",
564
- )
@@ -1,16 +0,0 @@
1
- import solara
2
-
3
-
4
- @solara.component
5
- def Page():
6
- solara.Markdown(
7
- """
8
- Hi there 👋! All fullscreen apps are linked from [the examples page](/examples).
9
- """
10
- )
11
-
12
-
13
- @solara.component
14
- def Layout(children):
15
- route, routes = solara.use_route()
16
- return children[0]