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,33 +0,0 @@
1
- """# FileBrowser
2
-
3
- """
4
- from pathlib import Path
5
- from typing import Optional, cast
6
-
7
- import solara
8
- from solara.website.utils import apidoc
9
-
10
-
11
- @solara.component
12
- def Page():
13
- file, set_file = solara.use_state(cast(Optional[Path], None))
14
- path, set_path = solara.use_state(cast(Optional[Path], None))
15
- directory, set_directory = solara.use_state(Path("~").expanduser())
16
-
17
- with solara.VBox() as main:
18
- can_select = solara.ui_checkbox("Enable select")
19
-
20
- def reset_path():
21
- set_path(None)
22
- set_file(None)
23
-
24
- # reset path and file when can_select changes
25
- solara.use_memo(reset_path, [can_select])
26
- solara.FileBrowser(directory, on_directory_change=set_directory, on_path_select=set_path, on_file_open=set_file, can_select=can_select)
27
- solara.Info(f"You are in directory: {directory}")
28
- solara.Info(f"You selected path: {path}")
29
- solara.Info(f"You opened file: {file}")
30
- return main
31
-
32
-
33
- __doc__ += apidoc(solara.FileBrowser.f) # type: ignore
@@ -1,75 +0,0 @@
1
- """
2
- # FileDrop components
3
-
4
- FileDrop comes in two flavours:
5
-
6
- * `FileDrop` for a single file upload
7
- * `FileDropMultiple` which allows for multiple file upload
8
-
9
-
10
- """
11
- import textwrap
12
- from typing import List, cast
13
-
14
- import solara
15
- from solara.components.file_drop import FileInfo
16
- from solara.website.utils import apidoc
17
-
18
-
19
- @solara.component
20
- def FileDropMultipleDemo():
21
- content, set_content = solara.use_state(cast(List[bytes], []))
22
- filename, set_filename = solara.use_state(cast(List[str], []))
23
- size, set_size = solara.use_state(cast(List[int], []))
24
-
25
- def on_file(files: List[FileInfo]):
26
- set_filename([f["name"] for f in files])
27
- set_size([f["size"] for f in files])
28
- set_content([f["file_obj"].read(100) for f in files])
29
-
30
- solara.FileDropMultiple(
31
- label="Drag and drop files(s) here to read the first 100 bytes.",
32
- on_file=on_file,
33
- lazy=True, # We will only read the first 100 bytes
34
- )
35
- if content:
36
- solara.Info(f"Number of uploaded files: {len(filename)}")
37
- for f, s, c in zip(filename, size, content):
38
- solara.Info(f"File {f} has total length: {s}\n, first 100 bytes:")
39
- solara.Preformatted("\n".join(textwrap.wrap(repr(c))))
40
-
41
-
42
- @solara.component
43
- def FileDropDemo():
44
- content, set_content = solara.use_state(b"")
45
- filename, set_filename = solara.use_state("")
46
- size, set_size = solara.use_state(0)
47
-
48
- def on_file(f: FileInfo):
49
- set_filename(f["name"])
50
- set_size(f["size"])
51
- set_content(f["file_obj"].read(100))
52
-
53
- solara.FileDrop(
54
- label="Drag and drop a file here to read the first 100 bytes.",
55
- on_file=on_file,
56
- lazy=True, # We will only read the first 100 bytes
57
- )
58
- if content:
59
- solara.Info(f"File {filename} has total length: {size}\n, first 100 bytes:")
60
- solara.Preformatted("\n".join(textwrap.wrap(repr(content))))
61
-
62
-
63
- @solara.component
64
- def Page():
65
- with solara.Row():
66
- with solara.Card(title="FileDrop"):
67
- FileDropDemo()
68
- with solara.Card(title="FileDropMultiple"):
69
- FileDropMultipleDemo()
70
-
71
-
72
- __doc__ += "# FileDrop"
73
- __doc__ += apidoc(solara.FileDrop.f) # type: ignore
74
- __doc__ += "# FileDropMultiple"
75
- __doc__ += apidoc(solara.FileDropMultiple.f) # type: ignore
@@ -1,18 +0,0 @@
1
- """# Input fields
2
-
3
- This page contains all the input fields available in Solara.
4
-
5
- # InputText
6
- """
7
- import solara
8
- from solara.website.components import NoPage
9
- from solara.website.utils import apidoc
10
-
11
- Page = NoPage
12
-
13
-
14
- __doc__ += apidoc(solara.InputText.f) # type: ignore
15
- __doc__ += "# InputFloat"
16
- __doc__ += apidoc(solara.InputFloat.f) # type: ignore
17
- __doc__ += "# InputInt"
18
- __doc__ += apidoc(solara.InputInt.f) # type: ignore
@@ -1,21 +0,0 @@
1
- """
2
- # Select components
3
-
4
- Select comes in two flavours:
5
-
6
- * `Select` for a singular selection
7
- * `SelectMultiple` which allows for multiple selections
8
-
9
-
10
- """
11
- import solara
12
- from solara.website.components import NoPage
13
- from solara.website.utils import apidoc
14
-
15
- Page = NoPage
16
-
17
-
18
- __doc__ += "# Select"
19
- __doc__ += apidoc(solara.Select.f) # type: ignore
20
- __doc__ += "# SelectMultiple"
21
- __doc__ += apidoc(solara.SelectMultiple.f) # type: ignore
@@ -1,28 +0,0 @@
1
- """
2
- # Sliders
3
-
4
- To support proper typechecks, we have multiple slider (all wrapping the ipyvuetify sliders).
5
-
6
-
7
- """
8
- import solara
9
- from solara.website.components import NoPage
10
- from solara.website.utils import apidoc
11
-
12
- Page = NoPage
13
-
14
- __doc__ += "# SliderInt"
15
- __doc__ += apidoc(solara.SliderInt.f) # type: ignore
16
- __doc__ += "# SliderRangeInt"
17
- __doc__ += apidoc(solara.SliderRangeInt.f) # type: ignore
18
-
19
- __doc__ += "# SliderFloat"
20
- __doc__ += apidoc(solara.SliderFloat.f) # type: ignore
21
- __doc__ += "# SliderRangeFloat"
22
- __doc__ += apidoc(solara.SliderRangeFloat.f) # type: ignore
23
-
24
- __doc__ += "# SliderValue"
25
- __doc__ += apidoc(solara.SliderValue.f) # type: ignore
26
-
27
- __doc__ += "# SliderDate"
28
- __doc__ += apidoc(solara.SliderDate.f) # type: ignore
@@ -1,12 +0,0 @@
1
- """# Switch
2
-
3
- """
4
-
5
- import solara
6
- from solara.website.components import NoPage
7
- from solara.website.utils import apidoc
8
-
9
- Page = NoPage
10
-
11
-
12
- __doc__ += apidoc(solara.Switch.f) # type: ignore
@@ -1,20 +0,0 @@
1
- """
2
- # ToggleButtons
3
-
4
- ToggleButtons are in two flavours, for single, and for multiple selections.
5
-
6
-
7
- """
8
- import solara
9
- from solara.website.components import NoPage
10
- from solara.website.utils import apidoc
11
-
12
- title = "ToggleButtons"
13
-
14
- Page = NoPage
15
-
16
-
17
- __doc__ += "# ToggleButtonsSingle"
18
- __doc__ += apidoc(solara.ToggleButtonsSingle.f) # type: ignore
19
- __doc__ += "# ToggleButtonsMultiple"
20
- __doc__ += apidoc(solara.ToggleButtonsMultiple.f) # type: ignore
@@ -1,9 +0,0 @@
1
- import solara
2
- from solara.website.components import NoPage, SubCategoryLayout
3
-
4
- Page = NoPage
5
-
6
-
7
- @solara.component
8
- def Layout(children=[]):
9
- SubCategoryLayout(children=children)
@@ -1,108 +0,0 @@
1
- """
2
- # Chat Components
3
-
4
- These are the components available in Solara to build chat interfaces.
5
- Although they can be used together to create a pre-built chat interface, inserting custom components is also possible.
6
- For an example of how to use a custom message component, see the bottom of the page.
7
-
8
- Also check out the [Chatbot](/documentation/examples/ai/chatbot) example.
9
-
10
- # ChatBox
11
- """
12
- import solara
13
- from solara.website.components import NoPage
14
- from solara.website.utils import apidoc
15
-
16
- title = "Chat Components"
17
-
18
-
19
- __doc__ += apidoc(solara.lab.components.chat.ChatBox.f) # type: ignore
20
- __doc__ += "# ChatInput"
21
- __doc__ += apidoc(solara.lab.components.chat.ChatInput.f) # type: ignore
22
- __doc__ += "# ChatMessage"
23
- __doc__ += apidoc(solara.lab.components.chat.ChatMessage.f) # type: ignore
24
- __doc__ += """## Different Message Styles
25
-
26
- The `ChatMessage` component has a few different styles available. These are shown below.
27
-
28
- ```solara
29
- import solara
30
-
31
- @solara.component
32
- def Page():
33
- with solara.Column():
34
- solara.lab.ChatMessage(["Default"])
35
- solara.lab.ChatMessage(["`color`"], color="#ff991f")
36
- solara.lab.ChatMessage(["`avatar_background_color`"], avatar_background_color="success")
37
- solara.lab.ChatMessage(["`border_radius='20px'`"], border_radius="20px")
38
- solara.lab.ChatMessage(["`notch=True`"], notch=True)
39
- ```
40
- """
41
-
42
- __doc__ += """
43
- # A Basic Example
44
-
45
-
46
- ```solara
47
- import solara
48
-
49
- messages = solara.reactive([])
50
- name = solara.reactive("User")
51
-
52
- def send(new_message):
53
- messages.set([
54
- *messages.value,
55
- {"user": True, "name": name.value, "message": new_message,},
56
- ])
57
-
58
- @solara.component
59
- def Page():
60
- solara.InputText("username", value=name)
61
- with solara.Column(style={"min-height": "50vh"}):
62
- with solara.lab.ChatBox():
63
- for item in messages.value:
64
- with solara.lab.ChatMessage(
65
- user=item["user"],
66
- name=item["name"],
67
- ):
68
- solara.Markdown(item["message"])
69
- solara.lab.ChatInput(send_callback=send)
70
- ```
71
-
72
- # A Custom Message Component
73
-
74
- ```solara
75
- import solara
76
-
77
- messages = solara.reactive([])
78
-
79
- def send(new_message):
80
- messages.set([
81
- *messages.value,
82
- {"name": "User", "message": new_message},
83
- ])
84
-
85
- @solara.component
86
- def CustomMessage(
87
- message,
88
- name = "User",
89
- ):
90
- with solara.Column(gap=0):
91
- with solara.Row():
92
- solara.Markdown(f"**{name}**: {message}")
93
- solara.v.Divider(style_="margin: 0;")
94
-
95
- @solara.component
96
- def Page():
97
- with solara.Column(style={"min-height": "50vh"}):
98
- with solara.lab.ChatBox():
99
- for item in messages.value:
100
- CustomMessage(
101
- message=item["message"],
102
- name=item["name"],
103
- )
104
- solara.lab.ChatInput(send_callback=send)
105
- ```
106
- """
107
-
108
- Page = NoPage
@@ -1,55 +0,0 @@
1
- """
2
- # ConfirmationDialog
3
-
4
- """
5
-
6
- from typing import Union
7
-
8
- import solara
9
- from solara.lab.components.confirmation_dialog import ConfirmationDialog
10
- from solara.website.utils import apidoc
11
-
12
- title = "ConfirmationDialog"
13
- users = solara.reactive("Alice Bob Cindy Dirk Eve Fred".split())
14
- user_to_be_deleted: solara.Reactive[Union[str, None]] = solara.reactive(None)
15
-
16
-
17
- def ask_to_delete_user(user):
18
- user_to_be_deleted.value = user
19
-
20
-
21
- def clear_user_to_be_deleted():
22
- user_to_be_deleted.value = None
23
-
24
-
25
- def delete_user():
26
- users.set([u for u in users.value if u != user_to_be_deleted.value])
27
- clear_user_to_be_deleted()
28
-
29
-
30
- @solara.component
31
- def Page():
32
- """Create a list of users with a button to delete them.
33
-
34
- A confirmation dialog will pop up first before deletion."""
35
- solara.Markdown("#### Users:")
36
- with solara.Column(style={"max-width": "300px"}):
37
- for user in users.value:
38
- with solara.Row(style={"align-items": "center"}):
39
- solara.Text(user)
40
- solara.v.Spacer()
41
- solara.Button(icon_name="mdi-delete", on_click=lambda user=user: ask_to_delete_user(user), icon=True)
42
- if not users.value:
43
- solara.Text("(no users left)")
44
-
45
- with ConfirmationDialog(
46
- user_to_be_deleted.value is not None,
47
- on_ok=delete_user,
48
- on_close=clear_user_to_be_deleted,
49
- ok="Ok, Delete",
50
- title="Delete user",
51
- ):
52
- solara.Markdown(f"Are you sure you want to delete user **{user_to_be_deleted.value}**?")
53
-
54
-
55
- __doc__ += apidoc(solara.lab.components.confirmation_dialog.ConfirmationDialog.f) # type: ignore
@@ -1,48 +0,0 @@
1
- """
2
- # Cookies and Headers
3
-
4
- ## Cookies
5
-
6
- Solara provides access to cookies through `solara.lab.cookies`.
7
-
8
- ```python
9
- cookies: Reactive[Optional[Dict[str, str]]] = reactive(cast(Optional[Dict[str, str]], None))
10
- ```
11
-
12
- This is a reactive object that can be used to read the cookies transferred with the the initial request sent to the server by the client.
13
- Thus it is possible to access also HTTPOnly cookies. The cookies will be updated whenever the client sends a new request to the server,
14
- i.e. only when the client connects to a kernel.
15
-
16
- The cookies are read into a dictionary with the cookie names as keys and the cookie values as values.
17
-
18
- ## Headers
19
-
20
- Solara provides access to headers in the form of `solara.lab.headers`.
21
-
22
- ```python
23
- headers: Reactive[Optional[Dict[str, List[str]]]] = reactive(cast(Optional[Dict[str, List[str]]], None))
24
- ```
25
-
26
- `headers` concatenates the values of multiple header fields with the same name into a list of strings. However, it is still possible that multiple
27
- values are present in one field already in the request, in which case one string will contain multiple values. Unfortunately reversing this is
28
- highly non-trivial.
29
-
30
- Note that the header field names are all lower-case.
31
-
32
- ```solara
33
- import solara
34
- from solara.lab import headers
35
-
36
-
37
- @solara.component
38
- def Page():
39
- solara.Markdown(f"Your 'user-agent' is: {headers.value['user-agent']}")
40
-
41
- ```
42
-
43
- """
44
-
45
- from solara.website.components import NoPage
46
-
47
- title = "Cookies and Headers"
48
- Page = NoPage
@@ -1,19 +0,0 @@
1
- """
2
- # InputDate
3
-
4
- This page contains the two variants of datepickers available in solara
5
-
6
- # InputDate
7
- """
8
- import solara
9
- from solara.website.components import NoPage
10
- from solara.website.utils import apidoc
11
-
12
- title = "InputDate"
13
-
14
-
15
- __doc__ += apidoc(solara.lab.components.input_date.InputDate.f) # type: ignore
16
- __doc__ += "# InputDateRange"
17
- __doc__ += apidoc(solara.lab.components.input_date.InputDateRange.f) # type: ignore
18
-
19
- Page = NoPage
@@ -1,21 +0,0 @@
1
- """
2
- # Menus
3
-
4
- This page contains the various kinds of menu elements available to use in solara
5
-
6
- # Menu
7
- """
8
- import solara
9
- from solara.website.components import NoPage
10
- from solara.website.utils import apidoc
11
-
12
- title = "Menus"
13
-
14
-
15
- __doc__ += apidoc(solara.lab.components.menu.Menu.f) # type: ignore
16
- __doc__ += "# ClickMenu"
17
- __doc__ += apidoc(solara.lab.components.menu.ClickMenu.f) # type: ignore
18
- __doc__ += "# ContextMenu"
19
- __doc__ += apidoc(solara.lab.components.menu.ContextMenu.f) # type: ignore
20
-
21
- Page = NoPage
@@ -1,24 +0,0 @@
1
- """
2
- # Tab
3
-
4
- """
5
- import solara
6
- import solara.lab
7
- from solara.website.utils import apidoc
8
-
9
- disabled = solara.reactive(False)
10
- icon = solara.reactive(True)
11
-
12
-
13
- @solara.component
14
- def Page():
15
- solara.Checkbox(label="Disable Tab 2", value=disabled)
16
- solara.Checkbox(label="Show icon", value=icon)
17
- with solara.lab.Tabs():
18
- with solara.lab.Tab("Tab 1"):
19
- solara.Markdown("Hello")
20
- with solara.lab.Tab("Tab 2", disabled=disabled.value, icon_name="mdi-home" if icon.value else None):
21
- solara.Markdown("World")
22
-
23
-
24
- __doc__ += apidoc(solara.lab.Tab.f) # type: ignore
@@ -1,44 +0,0 @@
1
- """
2
- # Tabs
3
-
4
- """
5
- import solara
6
- import solara.lab
7
- from solara.website.utils import apidoc
8
-
9
- disabled = solara.reactive(False)
10
- align = solara.reactive("center")
11
- grow = solara.reactive(False)
12
- vertical = solara.reactive(False)
13
- dark = solara.reactive(False)
14
-
15
-
16
- @solara.component
17
- def Page():
18
- with solara.Card("Controls"):
19
- with solara.Row():
20
- solara.Checkbox(label="Grow", value=grow)
21
- solara.Checkbox(label="Vertical", value=vertical)
22
- solara.Checkbox(label="Dark", value=dark)
23
- if vertical.value:
24
- align.value = "start"
25
- else:
26
- if not grow.value:
27
- with solara.Row(style={"align-items": "center"}):
28
- solara.Text("Align:")
29
- solara.ToggleButtonsSingle(value=align, values=["start", "center", "end"], dense=True)
30
- with solara.lab.Tabs(
31
- vertical=vertical.value,
32
- grow=grow.value,
33
- align=align.value,
34
- dark=dark.value,
35
- background_color="primary" if dark.value else None,
36
- slider_color="secondary" if dark.value else None,
37
- ):
38
- with solara.lab.Tab("Tab 1"):
39
- solara.Markdown("Hello")
40
- with solara.lab.Tab("Tab 2"):
41
- solara.Markdown("World")
42
-
43
-
44
- __doc__ += apidoc(solara.lab.Tabs.f) # type: ignore
@@ -1,12 +0,0 @@
1
- """# Task
2
-
3
- """
4
- import solara
5
- import solara.autorouting
6
- import solara.lab
7
- from solara.website.components import NoPage
8
- from solara.website.utils import apidoc
9
-
10
- title = "Task"
11
- Page = NoPage
12
- __doc__ += apidoc(solara.lab.task) # type: ignore
@@ -1,72 +0,0 @@
1
- """
2
- # Themes in Solara
3
-
4
- Theming is provided to Solara through the [`ipyvuetify`](https://solara.dev/docs/understanding/ipyvuetify) package.
5
- Two themes are provided by default: light and dark.
6
- Control over the theme variant (light, dark, or auto) can be provided to the user through the `ThemeToggle` component. Developers can
7
- control theming through the `solara.lab.theme` object.
8
-
9
- ## Themes
10
-
11
- The default themes can be customized through altering `solara.lab.theme`. The
12
- [theme options of vuetify](https://v2.vuetifyjs.com/en/features/theme/#customizing)
13
- are available as `solara.lab.theme.themes.light` and `solara.lab.theme.themes.dark`. The different properties of the theme can be set through, for example
14
-
15
- ```python
16
- solara.lab.theme.themes.light.primary = "#3f51b5"
17
- ```
18
-
19
- Dark theme can be enabled/disabled through `solara.lab.theme.dark = True` / `False` / `None`. When set to `None`, the theme is set to auto,
20
- which will follow the system theme if the user's browser supports detecting it.
21
-
22
- When using solara server, the default theme variant can be set in the server settings through the command line interface. See
23
- [here](https://solara.dev/docs/understanding/solara-server) for more information.
24
-
25
- The active theme can be detected through `solara.lab.theme.dark_effective`, which is set to `True` or `False` depending on
26
- whether dark theme is enabled or not.
27
-
28
- ## Example
29
-
30
- ```solara
31
- import solara
32
- import solara.lab
33
- from solara.lab import theme as theme
34
-
35
-
36
- def change_color(colors):
37
- if "purple" in colors:
38
- theme.themes.light.info = "#8617c2"
39
- else:
40
- theme.themes.light.info = "#2196f3"
41
-
42
- if "green" in colors:
43
- theme.themes.light.error = "#33bd65"
44
- else:
45
- theme.themes.light.error = "#ff5252"
46
-
47
-
48
- @solara.component
49
- def Page():
50
- solara.Info("Info message")
51
- solara.Error("Error message")
52
-
53
- with solara.ToggleButtonsMultiple(on_value=change_color):
54
- solara.Button("Change Info", value="purple")
55
- solara.Button("Change Error", value="green")
56
- ```
57
-
58
- A more advanced example can be found at [the scatter app demo](https://solara.dev/apps/scatter) where
59
- we set a plotly theme based on dark/light theme, and also set the app bar color to its default so it
60
- responds to the theme variant change.
61
-
62
- ## ThemeToggle
63
-
64
- """
65
-
66
- import solara
67
- from solara.website.components import NoPage
68
- from solara.website.utils import apidoc
69
-
70
- title = "Themes"
71
- Page = NoPage
72
- __doc__ += apidoc(solara.lab.ThemeToggle) # type: ignore
@@ -1,12 +0,0 @@
1
- """# use_task
2
-
3
- """
4
- import solara
5
- import solara.autorouting
6
- import solara.lab
7
- from solara.website.components import NoPage
8
- from solara.website.utils import apidoc
9
-
10
- title = "use_task"
11
- Page = NoPage
12
- __doc__ += apidoc(solara.lab.use_task) # type: ignore
@@ -1,9 +0,0 @@
1
- import solara
2
- from solara.website.components import NoPage, SubCategoryLayout
3
-
4
- Page = NoPage
5
-
6
-
7
- @solara.component
8
- def Layout(children=[]):
9
- SubCategoryLayout(children=children)
@@ -1,15 +0,0 @@
1
- """
2
- # AppBar
3
-
4
- """
5
- import solara
6
- import solara.lab
7
- from solara.website.components import NoPage
8
- from solara.website.utils import apidoc
9
-
10
- title = "AppBar"
11
-
12
- Page = NoPage
13
-
14
-
15
- __doc__ += apidoc(solara.AppBar.f) # type: ignore