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