solara-ui 1.45.0__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 (464) hide show
  1. prefix/etc/jupyter/jupyter_notebook_config.d/solara.json +7 -0
  2. prefix/etc/jupyter/jupyter_server_config.d/solara.json +7 -0
  3. solara/__init__.py +124 -0
  4. solara/__main__.py +765 -0
  5. solara/_stores.py +297 -0
  6. solara/alias.py +6 -0
  7. solara/autorouting.py +555 -0
  8. solara/cache.py +305 -0
  9. solara/checks.html +71 -0
  10. solara/checks.py +227 -0
  11. solara/comm.py +28 -0
  12. solara/components/__init__.py +77 -0
  13. solara/components/alert.py +155 -0
  14. solara/components/applayout.py +397 -0
  15. solara/components/button.py +85 -0
  16. solara/components/card.py +87 -0
  17. solara/components/checkbox.py +50 -0
  18. solara/components/code_highlight_css.py +11 -0
  19. solara/components/code_highlight_css.vue +63 -0
  20. solara/components/columns.py +159 -0
  21. solara/components/component_vue.py +134 -0
  22. solara/components/cross_filter.py +335 -0
  23. solara/components/dataframe.py +546 -0
  24. solara/components/datatable.py +214 -0
  25. solara/components/datatable.vue +175 -0
  26. solara/components/details.py +56 -0
  27. solara/components/download.vue +35 -0
  28. solara/components/echarts.py +86 -0
  29. solara/components/echarts.vue +139 -0
  30. solara/components/figure_altair.py +39 -0
  31. solara/components/file_browser.py +181 -0
  32. solara/components/file_download.py +199 -0
  33. solara/components/file_drop.py +159 -0
  34. solara/components/file_drop.vue +83 -0
  35. solara/components/file_list_widget.vue +78 -0
  36. solara/components/head.py +27 -0
  37. solara/components/head_tag.py +49 -0
  38. solara/components/head_tag.vue +60 -0
  39. solara/components/image.py +173 -0
  40. solara/components/input.py +456 -0
  41. solara/components/input_text_area.py +86 -0
  42. solara/components/link.py +55 -0
  43. solara/components/markdown.py +441 -0
  44. solara/components/markdown_editor.py +33 -0
  45. solara/components/markdown_editor.vue +359 -0
  46. solara/components/matplotlib.py +74 -0
  47. solara/components/meta.py +47 -0
  48. solara/components/misc.py +333 -0
  49. solara/components/pivot_table.py +258 -0
  50. solara/components/pivot_table.vue +158 -0
  51. solara/components/progress.py +47 -0
  52. solara/components/select.py +182 -0
  53. solara/components/select.vue +27 -0
  54. solara/components/slider.py +442 -0
  55. solara/components/slider_date.vue +56 -0
  56. solara/components/spinner-solara.vue +105 -0
  57. solara/components/spinner.py +45 -0
  58. solara/components/sql_code.py +41 -0
  59. solara/components/sql_code.vue +125 -0
  60. solara/components/style.py +105 -0
  61. solara/components/switch.py +71 -0
  62. solara/components/tab_navigation.py +37 -0
  63. solara/components/title.py +90 -0
  64. solara/components/title.vue +38 -0
  65. solara/components/togglebuttons.py +200 -0
  66. solara/components/tooltip.py +61 -0
  67. solara/core.py +42 -0
  68. solara/datatypes.py +143 -0
  69. solara/express.py +241 -0
  70. solara/hooks/__init__.py +4 -0
  71. solara/hooks/dataframe.py +99 -0
  72. solara/hooks/misc.py +263 -0
  73. solara/hooks/use_reactive.py +151 -0
  74. solara/hooks/use_thread.py +129 -0
  75. solara/kitchensink.py +8 -0
  76. solara/lab/__init__.py +34 -0
  77. solara/lab/components/__init__.py +7 -0
  78. solara/lab/components/chat.py +215 -0
  79. solara/lab/components/confirmation_dialog.py +163 -0
  80. solara/lab/components/cross_filter.py +7 -0
  81. solara/lab/components/input_date.py +339 -0
  82. solara/lab/components/input_time.py +133 -0
  83. solara/lab/components/menu.py +181 -0
  84. solara/lab/components/menu.vue +38 -0
  85. solara/lab/components/tabs.py +274 -0
  86. solara/lab/components/theming.py +98 -0
  87. solara/lab/components/theming.vue +72 -0
  88. solara/lab/hooks/__init__.py +0 -0
  89. solara/lab/hooks/dataframe.py +2 -0
  90. solara/lab/toestand.py +3 -0
  91. solara/lab/utils/__init__.py +2 -0
  92. solara/lab/utils/cookies.py +5 -0
  93. solara/lab/utils/dataframe.py +165 -0
  94. solara/lab/utils/headers.py +5 -0
  95. solara/layout.py +44 -0
  96. solara/lifecycle.py +46 -0
  97. solara/minisettings.py +141 -0
  98. solara/py.typed +0 -0
  99. solara/reactive.py +99 -0
  100. solara/routing.py +268 -0
  101. solara/scope/__init__.py +88 -0
  102. solara/scope/types.py +55 -0
  103. solara/server/__init__.py +0 -0
  104. solara/server/app.py +527 -0
  105. solara/server/assets/custom.css +1 -0
  106. solara/server/assets/custom.js +1 -0
  107. solara/server/assets/favicon.png +0 -0
  108. solara/server/assets/favicon.svg +5 -0
  109. solara/server/assets/style.css +1681 -0
  110. solara/server/assets/theme-dark.css +437 -0
  111. solara/server/assets/theme-light.css +420 -0
  112. solara/server/assets/theme.js +3 -0
  113. solara/server/cdn_helper.py +91 -0
  114. solara/server/esm.py +71 -0
  115. solara/server/fastapi.py +5 -0
  116. solara/server/flask.py +297 -0
  117. solara/server/jupyter/__init__.py +2 -0
  118. solara/server/jupyter/cdn_handler.py +28 -0
  119. solara/server/jupyter/server_extension.py +40 -0
  120. solara/server/jupyter/solara.py +91 -0
  121. solara/server/jupytertools.py +46 -0
  122. solara/server/kernel.py +388 -0
  123. solara/server/kernel_context.py +467 -0
  124. solara/server/patch.py +564 -0
  125. solara/server/pyinstaller/__init__.py +9 -0
  126. solara/server/pyinstaller/hook-ipyreact.py +5 -0
  127. solara/server/pyinstaller/hook-ipyvuetify.py +5 -0
  128. solara/server/pyinstaller/hook-solara.py +9 -0
  129. solara/server/qt.py +113 -0
  130. solara/server/reload.py +251 -0
  131. solara/server/server.py +484 -0
  132. solara/server/settings.py +249 -0
  133. solara/server/shell.py +269 -0
  134. solara/server/starlette.py +770 -0
  135. solara/server/static/ansi.js +270 -0
  136. solara/server/static/highlight-dark.css +82 -0
  137. solara/server/static/highlight.css +43 -0
  138. solara/server/static/main-vuetify.js +272 -0
  139. solara/server/static/main.js +163 -0
  140. solara/server/static/solara_bootstrap.py +129 -0
  141. solara/server/static/sun.svg +23 -0
  142. solara/server/static/webworker.js +42 -0
  143. solara/server/telemetry.py +212 -0
  144. solara/server/templates/index.html.j2 +1 -0
  145. solara/server/templates/loader-plain.css +11 -0
  146. solara/server/templates/loader-plain.html +20 -0
  147. solara/server/templates/loader-solara.css +111 -0
  148. solara/server/templates/loader-solara.html +40 -0
  149. solara/server/templates/plain.html +82 -0
  150. solara/server/templates/solara.html.j2 +486 -0
  151. solara/server/threaded.py +84 -0
  152. solara/server/utils.py +44 -0
  153. solara/server/websocket.py +45 -0
  154. solara/settings.py +86 -0
  155. solara/tasks.py +893 -0
  156. solara/template/button.py +16 -0
  157. solara/template/markdown.py +42 -0
  158. solara/template/portal/.flake8 +6 -0
  159. solara/template/portal/.pre-commit-config.yaml +28 -0
  160. solara/template/portal/LICENSE +21 -0
  161. solara/template/portal/Procfile +7 -0
  162. solara/template/portal/mypy.ini +3 -0
  163. solara/template/portal/pyproject.toml +26 -0
  164. solara/template/portal/solara_portal/__init__.py +4 -0
  165. solara/template/portal/solara_portal/components/__init__.py +2 -0
  166. solara/template/portal/solara_portal/components/article.py +28 -0
  167. solara/template/portal/solara_portal/components/data.py +28 -0
  168. solara/template/portal/solara_portal/components/header.py +6 -0
  169. solara/template/portal/solara_portal/components/layout.py +6 -0
  170. solara/template/portal/solara_portal/content/articles/equis-in-vidi.md +85 -0
  171. solara/template/portal/solara_portal/content/articles/substiterat-vati.md +70 -0
  172. solara/template/portal/solara_portal/data.py +60 -0
  173. solara/template/portal/solara_portal/pages/__init__.py +67 -0
  174. solara/template/portal/solara_portal/pages/article/__init__.py +26 -0
  175. solara/template/portal/solara_portal/pages/tabular.py +29 -0
  176. solara/template/portal/solara_portal/pages/viz/__init__.py +70 -0
  177. solara/template/portal/solara_portal/pages/viz/overview.py +14 -0
  178. solara/test/__init__.py +0 -0
  179. solara/test/pytest_plugin.py +783 -0
  180. solara/toestand.py +998 -0
  181. solara/util.py +348 -0
  182. solara/validate_hooks.py +258 -0
  183. solara/website/__init__.py +0 -0
  184. solara/website/assets/custom.css +444 -0
  185. solara/website/assets/images/logo-small.png +0 -0
  186. solara/website/assets/images/logo.svg +17 -0
  187. solara/website/assets/images/logo_white.svg +50 -0
  188. solara/website/assets/theme.js +8 -0
  189. solara/website/components/__init__.py +5 -0
  190. solara/website/components/algolia.py +6 -0
  191. solara/website/components/algolia.vue +24 -0
  192. solara/website/components/algolia_api.vue +202 -0
  193. solara/website/components/breadcrumbs.py +28 -0
  194. solara/website/components/contact.py +144 -0
  195. solara/website/components/docs.py +143 -0
  196. solara/website/components/header.py +75 -0
  197. solara/website/components/mailchimp.py +12 -0
  198. solara/website/components/mailchimp.vue +47 -0
  199. solara/website/components/markdown.py +99 -0
  200. solara/website/components/markdown_nav.vue +34 -0
  201. solara/website/components/notebook.py +171 -0
  202. solara/website/components/sidebar.py +105 -0
  203. solara/website/pages/__init__.py +370 -0
  204. solara/website/pages/about/__init__.py +9 -0
  205. solara/website/pages/about/about.md +3 -0
  206. solara/website/pages/apps/__init__.py +16 -0
  207. solara/website/pages/apps/authorization/__init__.py +119 -0
  208. solara/website/pages/apps/authorization/admin.py +12 -0
  209. solara/website/pages/apps/authorization/users.py +12 -0
  210. solara/website/pages/apps/jupyter-dashboard-1.py +116 -0
  211. solara/website/pages/apps/layout-demo.py +40 -0
  212. solara/website/pages/apps/multipage/__init__.py +38 -0
  213. solara/website/pages/apps/multipage/page1.py +26 -0
  214. solara/website/pages/apps/multipage/page2.py +34 -0
  215. solara/website/pages/apps/scatter.py +136 -0
  216. solara/website/pages/apps/scrolling.py +63 -0
  217. solara/website/pages/apps/tutorial-streamlit.py +18 -0
  218. solara/website/pages/careers/__init__.py +27 -0
  219. solara/website/pages/changelog/__init__.py +10 -0
  220. solara/website/pages/changelog/changelog.md +372 -0
  221. solara/website/pages/contact/__init__.py +34 -0
  222. solara/website/pages/doc_use_download.py +85 -0
  223. solara/website/pages/documentation/__init__.py +90 -0
  224. solara/website/pages/documentation/advanced/__init__.py +9 -0
  225. solara/website/pages/documentation/advanced/content/00-overview.md +1 -0
  226. solara/website/pages/documentation/advanced/content/10-howto/00-overview.md +6 -0
  227. solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md +196 -0
  228. solara/website/pages/documentation/advanced/content/10-howto/20-layout.md +125 -0
  229. solara/website/pages/documentation/advanced/content/10-howto/30-testing.md +417 -0
  230. solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md +69 -0
  231. solara/website/pages/documentation/advanced/content/10-howto/40-embed.md +50 -0
  232. solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md +124 -0
  233. solara/website/pages/documentation/advanced/content/15-reference/00-overview.md +3 -0
  234. solara/website/pages/documentation/advanced/content/15-reference/40-static_files.md +31 -0
  235. solara/website/pages/documentation/advanced/content/15-reference/41-asset-files.md +72 -0
  236. solara/website/pages/documentation/advanced/content/15-reference/60-static-site-generation.md +59 -0
  237. solara/website/pages/documentation/advanced/content/15-reference/70-search.md +34 -0
  238. solara/website/pages/documentation/advanced/content/15-reference/80-reloading.md +34 -0
  239. solara/website/pages/documentation/advanced/content/15-reference/90-notebook-support.md +7 -0
  240. solara/website/pages/documentation/advanced/content/15-reference/95-caching.md +148 -0
  241. solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md +10 -0
  242. solara/website/pages/documentation/advanced/content/20-understanding/05-ipywidgets.md +35 -0
  243. solara/website/pages/documentation/advanced/content/20-understanding/06-ipyvuetify.md +42 -0
  244. solara/website/pages/documentation/advanced/content/20-understanding/10-reacton.md +28 -0
  245. solara/website/pages/documentation/advanced/content/20-understanding/12-reacton-basics.md +108 -0
  246. solara/website/pages/documentation/advanced/content/20-understanding/15-anatomy.md +23 -0
  247. solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md +192 -0
  248. solara/website/pages/documentation/advanced/content/20-understanding/18-containers.md +166 -0
  249. solara/website/pages/documentation/advanced/content/20-understanding/20-solara.md +18 -0
  250. solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md +256 -0
  251. solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md +108 -0
  252. solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md +12 -0
  253. solara/website/pages/documentation/advanced/content/30-enterprise/00-overview.md +7 -0
  254. solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md +187 -0
  255. solara/website/pages/documentation/advanced/content/40-development/00-overview.md +0 -0
  256. solara/website/pages/documentation/advanced/content/40-development/01-contribute.md +45 -0
  257. solara/website/pages/documentation/advanced/content/40-development/10-setup.md +76 -0
  258. solara/website/pages/documentation/api/__init__.py +19 -0
  259. solara/website/pages/documentation/api/cross_filter/__init__.py +9 -0
  260. solara/website/pages/documentation/api/cross_filter/cross_filter_dataframe.py +22 -0
  261. solara/website/pages/documentation/api/cross_filter/cross_filter_report.py +20 -0
  262. solara/website/pages/documentation/api/cross_filter/cross_filter_select.py +20 -0
  263. solara/website/pages/documentation/api/cross_filter/cross_filter_slider.py +20 -0
  264. solara/website/pages/documentation/api/hooks/__init__.py +9 -0
  265. solara/website/pages/documentation/api/hooks/use_cross_filter.py +23 -0
  266. solara/website/pages/documentation/api/hooks/use_dark_effective.py +12 -0
  267. solara/website/pages/documentation/api/hooks/use_effect.md +43 -0
  268. solara/website/pages/documentation/api/hooks/use_effect.py +9 -0
  269. solara/website/pages/documentation/api/hooks/use_exception.py +31 -0
  270. solara/website/pages/documentation/api/hooks/use_memo.md +16 -0
  271. solara/website/pages/documentation/api/hooks/use_memo.py +9 -0
  272. solara/website/pages/documentation/api/hooks/use_previous.py +30 -0
  273. solara/website/pages/documentation/api/hooks/use_reactive.py +16 -0
  274. solara/website/pages/documentation/api/hooks/use_state.py +10 -0
  275. solara/website/pages/documentation/api/hooks/use_state_or_update.py +66 -0
  276. solara/website/pages/documentation/api/hooks/use_thread.md +64 -0
  277. solara/website/pages/documentation/api/hooks/use_thread.py +42 -0
  278. solara/website/pages/documentation/api/hooks/use_trait_observe.py +12 -0
  279. solara/website/pages/documentation/api/routing/__init__.py +9 -0
  280. solara/website/pages/documentation/api/routing/generate_routes.py +10 -0
  281. solara/website/pages/documentation/api/routing/generate_routes_directory.py +10 -0
  282. solara/website/pages/documentation/api/routing/resolve_path.py +35 -0
  283. solara/website/pages/documentation/api/routing/route.py +29 -0
  284. solara/website/pages/documentation/api/routing/use_route.py +76 -0
  285. solara/website/pages/documentation/api/routing/use_router.py +16 -0
  286. solara/website/pages/documentation/api/utilities/__init__.py +9 -0
  287. solara/website/pages/documentation/api/utilities/component_vue.py +10 -0
  288. solara/website/pages/documentation/api/utilities/computed.py +16 -0
  289. solara/website/pages/documentation/api/utilities/display.py +16 -0
  290. solara/website/pages/documentation/api/utilities/get_kernel_id.py +16 -0
  291. solara/website/pages/documentation/api/utilities/get_session_id.py +16 -0
  292. solara/website/pages/documentation/api/utilities/memoize.py +35 -0
  293. solara/website/pages/documentation/api/utilities/on_kernel_start.py +44 -0
  294. solara/website/pages/documentation/api/utilities/reactive.py +16 -0
  295. solara/website/pages/documentation/api/utilities/widget.py +104 -0
  296. solara/website/pages/documentation/components/__init__.py +12 -0
  297. solara/website/pages/documentation/components/advanced/__init__.py +9 -0
  298. solara/website/pages/documentation/components/advanced/link.py +25 -0
  299. solara/website/pages/documentation/components/advanced/meta.py +17 -0
  300. solara/website/pages/documentation/components/advanced/style.py +43 -0
  301. solara/website/pages/documentation/components/common.py +9 -0
  302. solara/website/pages/documentation/components/data/__init__.py +9 -0
  303. solara/website/pages/documentation/components/data/dataframe.py +44 -0
  304. solara/website/pages/documentation/components/data/pivot_table.py +81 -0
  305. solara/website/pages/documentation/components/enterprise/__init__.py +9 -0
  306. solara/website/pages/documentation/components/enterprise/avatar.py +24 -0
  307. solara/website/pages/documentation/components/enterprise/avatar_menu.py +25 -0
  308. solara/website/pages/documentation/components/input/__init__.py +9 -0
  309. solara/website/pages/documentation/components/input/button.py +23 -0
  310. solara/website/pages/documentation/components/input/checkbox.py +10 -0
  311. solara/website/pages/documentation/components/input/file_browser.py +30 -0
  312. solara/website/pages/documentation/components/input/file_drop.py +76 -0
  313. solara/website/pages/documentation/components/input/input.py +43 -0
  314. solara/website/pages/documentation/components/input/select.py +22 -0
  315. solara/website/pages/documentation/components/input/slider.py +29 -0
  316. solara/website/pages/documentation/components/input/switch.py +10 -0
  317. solara/website/pages/documentation/components/input/togglebuttons.py +21 -0
  318. solara/website/pages/documentation/components/lab/__init__.py +9 -0
  319. solara/website/pages/documentation/components/lab/chat.py +109 -0
  320. solara/website/pages/documentation/components/lab/confirmation_dialog.py +55 -0
  321. solara/website/pages/documentation/components/lab/cookies_headers.py +48 -0
  322. solara/website/pages/documentation/components/lab/input_date.py +20 -0
  323. solara/website/pages/documentation/components/lab/input_time.py +15 -0
  324. solara/website/pages/documentation/components/lab/menu.py +22 -0
  325. solara/website/pages/documentation/components/lab/tab.py +25 -0
  326. solara/website/pages/documentation/components/lab/tabs.py +45 -0
  327. solara/website/pages/documentation/components/lab/task.py +11 -0
  328. solara/website/pages/documentation/components/lab/theming.py +74 -0
  329. solara/website/pages/documentation/components/lab/use_task.py +11 -0
  330. solara/website/pages/documentation/components/layout/__init__.py +9 -0
  331. solara/website/pages/documentation/components/layout/app_bar.py +16 -0
  332. solara/website/pages/documentation/components/layout/app_bar_title.py +16 -0
  333. solara/website/pages/documentation/components/layout/app_layout.py +24 -0
  334. solara/website/pages/documentation/components/layout/card.py +15 -0
  335. solara/website/pages/documentation/components/layout/card_actions.py +16 -0
  336. solara/website/pages/documentation/components/layout/column.py +30 -0
  337. solara/website/pages/documentation/components/layout/columns.py +27 -0
  338. solara/website/pages/documentation/components/layout/columns_responsive.py +66 -0
  339. solara/website/pages/documentation/components/layout/details.py +13 -0
  340. solara/website/pages/documentation/components/layout/griddraggable.py +62 -0
  341. solara/website/pages/documentation/components/layout/gridfixed.py +19 -0
  342. solara/website/pages/documentation/components/layout/hbox.py +18 -0
  343. solara/website/pages/documentation/components/layout/row.py +30 -0
  344. solara/website/pages/documentation/components/layout/sidebar.py +24 -0
  345. solara/website/pages/documentation/components/layout/vbox.py +19 -0
  346. solara/website/pages/documentation/components/output/__init__.py +9 -0
  347. solara/website/pages/documentation/components/output/file_download.py +11 -0
  348. solara/website/pages/documentation/components/output/html.py +19 -0
  349. solara/website/pages/documentation/components/output/image.py +11 -0
  350. solara/website/pages/documentation/components/output/markdown.py +57 -0
  351. solara/website/pages/documentation/components/output/markdown_editor.py +51 -0
  352. solara/website/pages/documentation/components/output/sql_code.py +83 -0
  353. solara/website/pages/documentation/components/output/tooltip.py +11 -0
  354. solara/website/pages/documentation/components/page/__init__.py +9 -0
  355. solara/website/pages/documentation/components/page/head.py +15 -0
  356. solara/website/pages/documentation/components/page/title.py +25 -0
  357. solara/website/pages/documentation/components/status/__init__.py +9 -0
  358. solara/website/pages/documentation/components/status/error.py +39 -0
  359. solara/website/pages/documentation/components/status/info.py +39 -0
  360. solara/website/pages/documentation/components/status/progress.py +10 -0
  361. solara/website/pages/documentation/components/status/spinner.py +11 -0
  362. solara/website/pages/documentation/components/status/success.py +40 -0
  363. solara/website/pages/documentation/components/status/warning.py +47 -0
  364. solara/website/pages/documentation/components/viz/__init__.py +9 -0
  365. solara/website/pages/documentation/components/viz/altair.py +42 -0
  366. solara/website/pages/documentation/components/viz/echarts.py +77 -0
  367. solara/website/pages/documentation/components/viz/matplotlib.py +30 -0
  368. solara/website/pages/documentation/components/viz/plotly.py +63 -0
  369. solara/website/pages/documentation/components/viz/plotly_express.py +41 -0
  370. solara/website/pages/documentation/examples/__init__.py +54 -0
  371. solara/website/pages/documentation/examples/ai/__init__.py +11 -0
  372. solara/website/pages/documentation/examples/ai/chatbot.py +113 -0
  373. solara/website/pages/documentation/examples/ai/tokenizer.py +107 -0
  374. solara/website/pages/documentation/examples/basics/__init__.py +10 -0
  375. solara/website/pages/documentation/examples/basics/sine.py +28 -0
  376. solara/website/pages/documentation/examples/fullscreen/__init__.py +10 -0
  377. solara/website/pages/documentation/examples/fullscreen/authorization.py +3 -0
  378. solara/website/pages/documentation/examples/fullscreen/layout_demo.py +3 -0
  379. solara/website/pages/documentation/examples/fullscreen/multipage.py +3 -0
  380. solara/website/pages/documentation/examples/fullscreen/scatter.py +3 -0
  381. solara/website/pages/documentation/examples/fullscreen/scrolling.py +3 -0
  382. solara/website/pages/documentation/examples/fullscreen/tutorial_streamlit.py +3 -0
  383. solara/website/pages/documentation/examples/general/__init__.py +10 -0
  384. solara/website/pages/documentation/examples/general/custom_storage.py +70 -0
  385. solara/website/pages/documentation/examples/general/deploy_model.py +115 -0
  386. solara/website/pages/documentation/examples/general/live_update.py +32 -0
  387. solara/website/pages/documentation/examples/general/login_oauth.py +81 -0
  388. solara/website/pages/documentation/examples/general/mycard.vue +58 -0
  389. solara/website/pages/documentation/examples/general/pokemon_search.py +51 -0
  390. solara/website/pages/documentation/examples/general/vue_component.py +50 -0
  391. solara/website/pages/documentation/examples/ipycanvas.py +49 -0
  392. solara/website/pages/documentation/examples/libraries/__init__.py +10 -0
  393. solara/website/pages/documentation/examples/libraries/altair.py +65 -0
  394. solara/website/pages/documentation/examples/libraries/bqplot.py +39 -0
  395. solara/website/pages/documentation/examples/libraries/ipyleaflet.py +33 -0
  396. solara/website/pages/documentation/examples/libraries/ipyleaflet_advanced.py +66 -0
  397. solara/website/pages/documentation/examples/utilities/__init__.py +10 -0
  398. solara/website/pages/documentation/examples/utilities/calculator.py +157 -0
  399. solara/website/pages/documentation/examples/utilities/countdown_timer.py +62 -0
  400. solara/website/pages/documentation/examples/utilities/todo.py +196 -0
  401. solara/website/pages/documentation/examples/visualization/__init__.py +6 -0
  402. solara/website/pages/documentation/examples/visualization/annotator.py +67 -0
  403. solara/website/pages/documentation/examples/visualization/linked_views.py +81 -0
  404. solara/website/pages/documentation/examples/visualization/plotly.py +44 -0
  405. solara/website/pages/documentation/faq/__init__.py +12 -0
  406. solara/website/pages/documentation/faq/content/99-faq.md +112 -0
  407. solara/website/pages/documentation/getting_started/__init__.py +9 -0
  408. solara/website/pages/documentation/getting_started/content/00-quickstart.md +107 -0
  409. solara/website/pages/documentation/getting_started/content/01-introduction.md +125 -0
  410. solara/website/pages/documentation/getting_started/content/02-installing.md +134 -0
  411. solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md +14 -0
  412. solara/website/pages/documentation/getting_started/content/04-tutorials/10_data_science.py +13 -0
  413. solara/website/pages/documentation/getting_started/content/04-tutorials/20-web-app.md +89 -0
  414. solara/website/pages/documentation/getting_started/content/04-tutorials/30-ipywidgets.md +124 -0
  415. solara/website/pages/documentation/getting_started/content/04-tutorials/40-streamlit.md +146 -0
  416. solara/website/pages/documentation/getting_started/content/04-tutorials/50-dash.md +144 -0
  417. solara/website/pages/documentation/getting_started/content/04-tutorials/60-jupyter-dashboard-part1.py +65 -0
  418. solara/website/pages/documentation/getting_started/content/04-tutorials/SF_crime_sample.csv.gz +0 -0
  419. solara/website/pages/documentation/getting_started/content/04-tutorials/_data_science.ipynb +445 -0
  420. solara/website/pages/documentation/getting_started/content/04-tutorials/_jupyter_dashboard_1.ipynb +1021 -0
  421. solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md +11 -0
  422. solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md +228 -0
  423. solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md +278 -0
  424. solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md +7 -0
  425. solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md +305 -0
  426. solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md +80 -0
  427. solara/website/pages/documentation/getting_started/content/80-what-is-lab.md +7 -0
  428. solara/website/pages/documentation/getting_started/content/90-troubleshoot.md +26 -0
  429. solara/website/pages/docutils.py +38 -0
  430. solara/website/pages/home.vue +1199 -0
  431. solara/website/pages/our_team/__init__.py +83 -0
  432. solara/website/pages/pricing/__init__.py +31 -0
  433. solara/website/pages/roadmap/__init__.py +11 -0
  434. solara/website/pages/roadmap/roadmap.md +47 -0
  435. solara/website/pages/scale_ipywidgets.py +45 -0
  436. solara/website/pages/showcase/__init__.py +105 -0
  437. solara/website/pages/showcase/domino_code_assist.py +60 -0
  438. solara/website/pages/showcase/planeto_tessa.py +19 -0
  439. solara/website/pages/showcase/solara_dev.py +54 -0
  440. solara/website/pages/showcase/solarathon_2023_team_2.py +22 -0
  441. solara/website/pages/showcase/solarathon_2023_team_4.py +22 -0
  442. solara/website/pages/showcase/solarathon_2023_team_5.py +23 -0
  443. solara/website/pages/showcase/solarathon_2023_team_6.py +34 -0
  444. solara/website/pages/showcase/wanderlust.py +27 -0
  445. solara/website/public/beach.jpeg +0 -0
  446. solara/website/public/logo.svg +6 -0
  447. solara/website/public/social/discord.svg +1 -0
  448. solara/website/public/social/github.svg +1 -0
  449. solara/website/public/social/twitter.svg +3 -0
  450. solara/website/public/success.html +25 -0
  451. solara/website/templates/index.html.j2 +117 -0
  452. solara/website/utils.py +51 -0
  453. solara/widgets/__init__.py +1 -0
  454. solara/widgets/vue/gridlayout.vue +107 -0
  455. solara/widgets/vue/html.vue +4 -0
  456. solara/widgets/vue/navigator.vue +134 -0
  457. solara/widgets/vue/vegalite.vue +130 -0
  458. solara/widgets/widgets.py +74 -0
  459. solara_ui-1.45.0.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json +7 -0
  460. solara_ui-1.45.0.data/data/etc/jupyter/jupyter_server_config.d/solara.json +7 -0
  461. solara_ui-1.45.0.dist-info/METADATA +162 -0
  462. solara_ui-1.45.0.dist-info/RECORD +464 -0
  463. solara_ui-1.45.0.dist-info/WHEEL +4 -0
  464. solara_ui-1.45.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,22 @@
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
+
12
+ import solara
13
+ from solara.website.components import NoPage
14
+ from solara.website.utils import apidoc
15
+
16
+ Page = NoPage
17
+
18
+
19
+ __doc__ += "# Select"
20
+ __doc__ += apidoc(solara.Select.f) # type: ignore
21
+ __doc__ += "# SelectMultiple"
22
+ __doc__ += apidoc(solara.SelectMultiple.f) # type: ignore
@@ -0,0 +1,29 @@
1
+ """
2
+ # Sliders
3
+
4
+ To support proper typechecks, we have multiple slider (all wrapping the ipyvuetify sliders).
5
+
6
+
7
+ """
8
+
9
+ import solara
10
+ from solara.website.components import NoPage
11
+ from solara.website.utils import apidoc
12
+
13
+ Page = NoPage
14
+
15
+ __doc__ += "# SliderInt"
16
+ __doc__ += apidoc(solara.SliderInt.f) # type: ignore
17
+ __doc__ += "# SliderRangeInt"
18
+ __doc__ += apidoc(solara.SliderRangeInt.f) # type: ignore
19
+
20
+ __doc__ += "# SliderFloat"
21
+ __doc__ += apidoc(solara.SliderFloat.f) # type: ignore
22
+ __doc__ += "# SliderRangeFloat"
23
+ __doc__ += apidoc(solara.SliderRangeFloat.f) # type: ignore
24
+
25
+ __doc__ += "# SliderValue"
26
+ __doc__ += apidoc(solara.SliderValue.f) # type: ignore
27
+
28
+ __doc__ += "# SliderDate"
29
+ __doc__ += apidoc(solara.SliderDate.f) # type: ignore
@@ -0,0 +1,10 @@
1
+ """# Switch"""
2
+
3
+ import solara
4
+ from solara.website.components import NoPage
5
+ from solara.website.utils import apidoc
6
+
7
+ Page = NoPage
8
+
9
+
10
+ __doc__ += apidoc(solara.Switch.f) # type: ignore
@@ -0,0 +1,21 @@
1
+ """
2
+ # ToggleButtons
3
+
4
+ ToggleButtons are in two flavours, for single, and for multiple selections.
5
+
6
+
7
+ """
8
+
9
+ import solara
10
+ from solara.website.components import NoPage
11
+ from solara.website.utils import apidoc
12
+
13
+ title = "ToggleButtons"
14
+
15
+ Page = NoPage
16
+
17
+
18
+ __doc__ += "# ToggleButtonsSingle"
19
+ __doc__ += apidoc(solara.ToggleButtonsSingle.f) # type: ignore
20
+ __doc__ += "# ToggleButtonsMultiple"
21
+ __doc__ += apidoc(solara.ToggleButtonsMultiple.f) # type: ignore
@@ -0,0 +1,9 @@
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)
@@ -0,0 +1,109 @@
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
+
13
+ import solara
14
+ from solara.website.components import NoPage
15
+ from solara.website.utils import apidoc
16
+
17
+ title = "Chat Components"
18
+
19
+
20
+ __doc__ += apidoc(solara.lab.components.chat.ChatBox.f) # type: ignore
21
+ __doc__ += "# ChatInput"
22
+ __doc__ += apidoc(solara.lab.components.chat.ChatInput.f) # type: ignore
23
+ __doc__ += "# ChatMessage"
24
+ __doc__ += apidoc(solara.lab.components.chat.ChatMessage.f) # type: ignore
25
+ __doc__ += """## Different Message Styles
26
+
27
+ The `ChatMessage` component has a few different styles available. These are shown below.
28
+
29
+ ```solara
30
+ import solara
31
+
32
+ @solara.component
33
+ def Page():
34
+ with solara.Column():
35
+ solara.lab.ChatMessage(["Default"])
36
+ solara.lab.ChatMessage(["`color`"], color="#ff991f")
37
+ solara.lab.ChatMessage(["`avatar_background_color`"], avatar_background_color="success")
38
+ solara.lab.ChatMessage(["`border_radius='20px'`"], border_radius="20px")
39
+ solara.lab.ChatMessage(["`notch=True`"], notch=True)
40
+ ```
41
+ """
42
+
43
+ __doc__ += """
44
+ # A Basic Example
45
+
46
+
47
+ ```solara
48
+ import solara
49
+
50
+ messages = solara.reactive([])
51
+ name = solara.reactive("User")
52
+
53
+ def send(new_message):
54
+ messages.set([
55
+ *messages.value,
56
+ {"user": True, "name": name.value, "message": new_message,},
57
+ ])
58
+
59
+ @solara.component
60
+ def Page():
61
+ solara.InputText("username", value=name)
62
+ with solara.Column(style={"min-height": "50vh"}):
63
+ with solara.lab.ChatBox():
64
+ for item in messages.value:
65
+ with solara.lab.ChatMessage(
66
+ user=item["user"],
67
+ name=item["name"],
68
+ ):
69
+ solara.Markdown(item["message"])
70
+ solara.lab.ChatInput(send_callback=send)
71
+ ```
72
+
73
+ # A Custom Message Component
74
+
75
+ ```solara
76
+ import solara
77
+
78
+ messages = solara.reactive([])
79
+
80
+ def send(new_message):
81
+ messages.set([
82
+ *messages.value,
83
+ {"name": "User", "message": new_message},
84
+ ])
85
+
86
+ @solara.component
87
+ def CustomMessage(
88
+ message,
89
+ name = "User",
90
+ ):
91
+ with solara.Column(gap=0):
92
+ with solara.Row():
93
+ solara.Markdown(f"**{name}**: {message}")
94
+ solara.v.Divider(style_="margin: 0;")
95
+
96
+ @solara.component
97
+ def Page():
98
+ with solara.Column(style={"min-height": "50vh"}):
99
+ with solara.lab.ChatBox():
100
+ for item in messages.value:
101
+ CustomMessage(
102
+ message=item["message"],
103
+ name=item["name"],
104
+ )
105
+ solara.lab.ChatInput(send_callback=send)
106
+ ```
107
+ """
108
+
109
+ Page = NoPage
@@ -0,0 +1,55 @@
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
@@ -0,0 +1,48 @@
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
@@ -0,0 +1,20 @@
1
+ """
2
+ # InputDate
3
+
4
+ This page contains the two variants of datepickers available in solara
5
+
6
+ # InputDate
7
+ """
8
+
9
+ import solara
10
+ from solara.website.components import NoPage
11
+ from solara.website.utils import apidoc
12
+
13
+ title = "InputDate"
14
+
15
+
16
+ __doc__ += apidoc(solara.lab.components.input_date.InputDate.f) # type: ignore
17
+ __doc__ += "# InputDateRange"
18
+ __doc__ += apidoc(solara.lab.components.input_date.InputDateRange.f) # type: ignore
19
+
20
+ Page = NoPage
@@ -0,0 +1,15 @@
1
+ """
2
+ # InputTime
3
+ """
4
+
5
+ import solara
6
+ from solara.website.components import NoPage
7
+ from solara.website.utils import apidoc
8
+
9
+ title = "InputTime"
10
+
11
+
12
+ __doc__ += apidoc(solara.lab.components.input_time.InputTime.f) # type: ignore
13
+
14
+
15
+ Page = NoPage
@@ -0,0 +1,22 @@
1
+ """
2
+ # Menus
3
+
4
+ This page contains the various kinds of menu elements available to use in solara
5
+
6
+ # Menu
7
+ """
8
+
9
+ import solara
10
+ from solara.website.components import NoPage
11
+ from solara.website.utils import apidoc
12
+
13
+ title = "Menus"
14
+
15
+
16
+ __doc__ += apidoc(solara.lab.components.menu.Menu.f) # type: ignore
17
+ __doc__ += "# ClickMenu"
18
+ __doc__ += apidoc(solara.lab.components.menu.ClickMenu.f) # type: ignore
19
+ __doc__ += "# ContextMenu"
20
+ __doc__ += apidoc(solara.lab.components.menu.ContextMenu.f) # type: ignore
21
+
22
+ Page = NoPage
@@ -0,0 +1,25 @@
1
+ """
2
+ # Tab
3
+
4
+ """
5
+
6
+ import solara
7
+ import solara.lab
8
+ from solara.website.utils import apidoc
9
+
10
+ disabled = solara.reactive(False)
11
+ icon = solara.reactive(True)
12
+
13
+
14
+ @solara.component
15
+ def Page():
16
+ solara.Checkbox(label="Disable Tab 2", value=disabled)
17
+ solara.Checkbox(label="Show icon", value=icon)
18
+ with solara.lab.Tabs():
19
+ with solara.lab.Tab("Tab 1"):
20
+ solara.Markdown("Hello")
21
+ with solara.lab.Tab("Tab 2", disabled=disabled.value, icon_name="mdi-home" if icon.value else None):
22
+ solara.Markdown("World")
23
+
24
+
25
+ __doc__ += apidoc(solara.lab.Tab.f) # type: ignore
@@ -0,0 +1,45 @@
1
+ """
2
+ # Tabs
3
+
4
+ """
5
+
6
+ import solara
7
+ import solara.lab
8
+ from solara.website.utils import apidoc
9
+
10
+ disabled = solara.reactive(False)
11
+ align = solara.reactive("center")
12
+ grow = solara.reactive(False)
13
+ vertical = solara.reactive(False)
14
+ dark = solara.reactive(False)
15
+
16
+
17
+ @solara.component
18
+ def Page():
19
+ with solara.Card("Controls"):
20
+ with solara.Row():
21
+ solara.Checkbox(label="Grow", value=grow)
22
+ solara.Checkbox(label="Vertical", value=vertical)
23
+ solara.Checkbox(label="Dark", value=dark)
24
+ if vertical.value:
25
+ align.value = "start"
26
+ else:
27
+ if not grow.value:
28
+ with solara.Row(style={"align-items": "center"}):
29
+ solara.Text("Align:")
30
+ solara.ToggleButtonsSingle(value=align, values=["start", "center", "end"], dense=True)
31
+ with solara.lab.Tabs(
32
+ vertical=vertical.value,
33
+ grow=grow.value,
34
+ align=align.value,
35
+ dark=dark.value,
36
+ background_color="primary" if dark.value else None,
37
+ slider_color="secondary" if dark.value else None,
38
+ ):
39
+ with solara.lab.Tab("Tab 1"):
40
+ solara.Markdown("Hello")
41
+ with solara.lab.Tab("Tab 2"):
42
+ solara.Markdown("World")
43
+
44
+
45
+ __doc__ += apidoc(solara.lab.Tabs.f) # type: ignore
@@ -0,0 +1,11 @@
1
+ """# Task"""
2
+
3
+ import solara
4
+ import solara.autorouting
5
+ import solara.lab
6
+ from solara.website.components import NoPage
7
+ from solara.website.utils import apidoc
8
+
9
+ title = "Task"
10
+ Page = NoPage
11
+ __doc__ += apidoc(solara.lab.task) # type: ignore
@@ -0,0 +1,74 @@
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
+ **Note**: Light and dark theme colors have to be set separately.
31
+
32
+ ```solara
33
+ import solara
34
+ import solara.lab
35
+ from solara.lab import theme as theme
36
+
37
+
38
+ def change_color(colors):
39
+ if "purple" in colors:
40
+ theme.themes.light.info = theme.themes.dark.info = "#8617c2"
41
+ else:
42
+ theme.themes.light.info = theme.themes.dark.info = "#2196f3"
43
+
44
+ if "green" in colors:
45
+ theme.themes.light.error = theme.themes.dark.error = "#33bd65"
46
+ else:
47
+ theme.themes.light.error = theme.themes.dark.error = "#ff5252"
48
+
49
+
50
+ @solara.component
51
+ def Page():
52
+ solara.Info("Info message")
53
+ solara.Error("Error message")
54
+
55
+ with solara.ToggleButtonsMultiple(on_value=change_color):
56
+ solara.Button("Change Info", value="purple")
57
+ solara.Button("Change Error", value="green")
58
+ ```
59
+
60
+ A more advanced example can be found at [the scatter app demo](https://solara.dev/apps/scatter) where
61
+ we set a plotly theme based on dark/light theme, and also set the app bar color to its default so it
62
+ responds to the theme variant change.
63
+
64
+ ## ThemeToggle
65
+
66
+ """
67
+
68
+ import solara
69
+ from solara.website.components import NoPage
70
+ from solara.website.utils import apidoc
71
+
72
+ title = "Themes"
73
+ Page = NoPage
74
+ __doc__ += apidoc(solara.lab.ThemeToggle) # type: ignore
@@ -0,0 +1,11 @@
1
+ """# use_task"""
2
+
3
+ import solara
4
+ import solara.autorouting
5
+ import solara.lab
6
+ from solara.website.components import NoPage
7
+ from solara.website.utils import apidoc
8
+
9
+ title = "use_task"
10
+ Page = NoPage
11
+ __doc__ += apidoc(solara.lab.use_task) # type: ignore
@@ -0,0 +1,9 @@
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)
@@ -0,0 +1,16 @@
1
+ """
2
+ # AppBar
3
+
4
+ """
5
+
6
+ import solara
7
+ import solara.lab
8
+ from solara.website.components import NoPage
9
+ from solara.website.utils import apidoc
10
+
11
+ title = "AppBar"
12
+
13
+ Page = NoPage
14
+
15
+
16
+ __doc__ += apidoc(solara.AppBar.f) # type: ignore
@@ -0,0 +1,16 @@
1
+ """
2
+ # AppBarTitle
3
+
4
+ """
5
+
6
+ import solara
7
+ import solara.lab
8
+ from solara.website.components import NoPage
9
+ from solara.website.utils import apidoc
10
+
11
+ title = "AppBarTitle"
12
+
13
+ Page = NoPage
14
+
15
+
16
+ __doc__ += apidoc(solara.AppBarTitle.f) # type: ignore
@@ -0,0 +1,24 @@
1
+ """
2
+ # AppLayout
3
+
4
+ """
5
+
6
+ import solara
7
+ import solara.lab
8
+ from solara.website.utils import apidoc
9
+
10
+ title = "AppLayout"
11
+
12
+
13
+ @solara.component
14
+ def Page():
15
+ return solara.Markdown(
16
+ """
17
+ An example cannot be shown embedded in this page, Visit the [AppLayout page](/apps/scatter) to see an example.
18
+
19
+ [![AppLayout screenshot](https://dxhl76zpt6fap.cloudfront.net/public/docs/app-layout.webp)](/apps/scatter)
20
+ """
21
+ )
22
+
23
+
24
+ __doc__ += apidoc(solara.AppLayout.f) # type: ignore
@@ -0,0 +1,15 @@
1
+ """
2
+ # Card
3
+
4
+ """
5
+
6
+ import solara
7
+ import solara.lab
8
+ from solara.website.components import NoPage
9
+ from solara.website.utils import apidoc
10
+
11
+ title = "Card"
12
+
13
+ Page = NoPage
14
+
15
+ __doc__ += apidoc(solara.Card.f) # type: ignore
@@ -0,0 +1,16 @@
1
+ """
2
+ # CardActions
3
+
4
+ """
5
+
6
+ import solara
7
+ import solara.lab
8
+ from solara.website.components import NoPage
9
+ from solara.website.utils import apidoc
10
+
11
+ title = "CardActions"
12
+
13
+ Page = NoPage
14
+
15
+
16
+ __doc__ += apidoc(solara.CardActions.f) # type: ignore
@@ -0,0 +1,30 @@
1
+ """
2
+ # Column
3
+ """
4
+
5
+ import solara
6
+ import solara.lab
7
+ from solara.website.utils import apidoc
8
+
9
+ gap_size = solara.reactive("12px")
10
+ align = solara.reactive("stretch")
11
+
12
+
13
+ @solara.component
14
+ def Page():
15
+ with solara.Card("Column demo") as main:
16
+ with solara.Column():
17
+ solara.Text("Align:")
18
+ solara.ToggleButtonsSingle(align, values=["start", "center", "end", "stretch"])
19
+ solara.Select(
20
+ label="Gap size",
21
+ values=["0px", "4px", "8px", "12px", "16px", "20px", "24px"],
22
+ ).connect(gap_size)
23
+ with solara.Column(gap=gap_size.value, align=align.value):
24
+ colors = "green red orange brown yellow pink".split()
25
+ for color in colors:
26
+ solara.Button("Solara", color=color)
27
+ return main
28
+
29
+
30
+ __doc__ += apidoc(solara.Column.f) # type: ignore