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,27 @@
1
+ """
2
+ # Columns
3
+
4
+ """
5
+
6
+ import solara
7
+ import solara.lab
8
+ from solara.website.utils import apidoc
9
+
10
+ gutters = solara.reactive(True)
11
+ gutters_dense = solara.reactive(True)
12
+
13
+
14
+ @solara.component
15
+ def Page():
16
+ with solara.Columns([1, 2, 1], gutters=gutters.value, gutters_dense=gutters_dense.value) as main:
17
+ with solara.Card("Left", margin=0):
18
+ solara.Checkbox(label="Gutters").connect(gutters)
19
+ solara.Checkbox(label="Dense gutters").connect(gutters_dense)
20
+ with solara.Card("Middle", margin=0):
21
+ solara.Markdown("This column has a relative width of 2, the columns to the left and right have a relative width of 1.")
22
+ with solara.Card("Right", margin=0):
23
+ solara.Markdown("This column has a relative width of 1, the columns to the left has a relative width of 2.")
24
+ return main
25
+
26
+
27
+ __doc__ += apidoc(solara.Columns.f) # type: ignore
@@ -0,0 +1,66 @@
1
+ """
2
+ # ColumnsResponsive
3
+
4
+ """
5
+
6
+ import solara
7
+ import solara.lab
8
+ from solara.website.utils import apidoc
9
+
10
+ title = "ColumnsResponsive"
11
+
12
+ gutters = solara.reactive(True)
13
+ gutters_dense = solara.reactive(True)
14
+ wrap = solara.reactive(True)
15
+
16
+ children_count = solara.reactive(12)
17
+ columns_default = solara.reactive(6)
18
+ columns_small = solara.reactive(4)
19
+ columns_medium = solara.reactive(3)
20
+ columns_large = solara.reactive(2)
21
+ columns_xlarge = solara.reactive(1)
22
+
23
+
24
+ @solara.component
25
+ def Page():
26
+ with solara.Card("Controls"):
27
+ solara.Checkbox(label="Wrap").connect(wrap)
28
+ solara.Checkbox(label="Gutters").connect(gutters)
29
+ solara.Checkbox(label="Dense gutters").connect(gutters_dense)
30
+ solara.IntSlider("Children", max=20).connect(children_count)
31
+
32
+ solara.Select("columns default", values=[1, 2, 3, 4, 6, 12]).connect(columns_default) # type: ignore
33
+ solara.Select("columns small", values=[1, 2, 3, 4, 6, 12]).connect(columns_small) # type: ignore
34
+ solara.Select("columns medium", values=[1, 2, 3, 4, 6, 12]).connect(columns_medium) # type: ignore
35
+ solara.Select("columns large", values=[1, 2, 3, 4, 6, 12]).connect(columns_large) # type: ignore
36
+ solara.Select("columns xlarge", values=[1, 2, 3, 4, 6, 12]).connect(columns_xlarge) # type: ignore
37
+ # taken from https://v2.vuetifyjs.com/en/styles/display/#display
38
+ solara.HTML(
39
+ "h2", unsafe_innerHTML=f"Current screensize is xsmall/default, each child is {columns_default.value} points wide", class_="ma-2 d-flex d-sm-none ma"
40
+ )
41
+ solara.HTML(
42
+ "h2", unsafe_innerHTML=f"Current screensize is small, each child is {columns_small.value} points wide", class_="ma-2 d-none d-sm-flex d-md-none"
43
+ )
44
+ solara.HTML(
45
+ "h2", unsafe_innerHTML=f"Current screensize is medium, each child is {columns_medium.value} points wide", class_="ma-2 d-none d-md-flex d-lg-none"
46
+ )
47
+ solara.HTML(
48
+ "h2", unsafe_innerHTML=f"Current screensize is large, each child is {columns_large.value} points wide", class_="ma-2 d-none d-lg-flex d-xl-none"
49
+ )
50
+ solara.HTML("h2", unsafe_innerHTML=f"Current screensize is xlarge, each child is {columns_xlarge.value} points wide", class_="ma-2 d-none d-xl-flex")
51
+ solara.Markdown("Change the screen size to see the effect of the different columns sizes.")
52
+ with solara.ColumnsResponsive(
53
+ default=columns_default.value,
54
+ small=columns_small.value,
55
+ medium=columns_medium.value,
56
+ large=columns_large.value,
57
+ xlarge=columns_xlarge.value,
58
+ wrap=wrap.value,
59
+ gutters=gutters.value,
60
+ gutters_dense=gutters_dense.value,
61
+ ):
62
+ for i in range(children_count.value):
63
+ solara.Text(f"{i}")
64
+
65
+
66
+ __doc__ += apidoc(solara.ColumnsResponsive.f) # type: ignore
@@ -0,0 +1,13 @@
1
+ """
2
+ # Details
3
+ """
4
+
5
+ import solara
6
+ from solara.website.components import NoPage
7
+ from solara.website.utils import apidoc
8
+
9
+ title = "Details"
10
+
11
+ Page = NoPage
12
+
13
+ __doc__ += apidoc(solara.Details.f) # type: ignore
@@ -0,0 +1,62 @@
1
+ """
2
+ # GridDraggable
3
+
4
+ Child components are laid out on a grid, which can be dragged and resized.
5
+ """
6
+
7
+ import pprint
8
+ import textwrap
9
+
10
+ import solara
11
+
12
+ from ..common import ColorCard
13
+
14
+ title = "GridDraggable"
15
+
16
+
17
+ @solara.component
18
+ def Page():
19
+ grid_layout_initial = [
20
+ {"h": 5, "i": "0", "moved": False, "w": 3, "x": 0, "y": 0},
21
+ {"h": 5, "i": "1", "moved": False, "w": 5, "x": 3, "y": 0},
22
+ {"h": 11, "i": "2", "moved": False, "w": 4, "x": 8, "y": 0},
23
+ {"h": 12, "i": "3", "moved": False, "w": 5, "x": 0, "y": 5},
24
+ {"h": 6, "i": "4", "moved": False, "w": 3, "x": 5, "y": 5},
25
+ {"h": 6, "i": "5", "moved": False, "w": 7, "x": 5, "y": 11},
26
+ ]
27
+
28
+ colors = "green red orange brown yellow pink".split()
29
+
30
+ # we need to store the state of the grid_layout ourselves, otherwise it will 'reset'
31
+ # each time we change resizable or draggable
32
+ grid_layout, set_grid_layout = solara.use_state(grid_layout_initial)
33
+
34
+ # some placeholders
35
+ items = [ColorCard(title=f"Child {i}", color=colors[i]) for i in range(len(grid_layout))]
36
+ with solara.VBox() as main:
37
+ resizable = solara.ui_checkbox("Allow resizing", value=True)
38
+ draggable = solara.ui_checkbox("Allow dragging", value=True)
39
+
40
+ def reset_layout():
41
+ set_grid_layout(grid_layout_initial)
42
+
43
+ solara.Button("Reset to initial layout", on_click=reset_layout)
44
+
45
+ solara.GridDraggable(items=items, grid_layout=grid_layout, resizable=resizable, draggable=draggable, on_grid_layout=set_grid_layout)
46
+
47
+ # some string kung fu to make this print nicely
48
+ grid_layout_formatted = pprint.pformat(grid_layout, indent=4)
49
+ grid_layout_formatted = textwrap.indent(grid_layout_formatted, " " * len("grid_layout = "))
50
+ grid_layout_formatted = grid_layout_formatted[len("grid_layout = ") :]
51
+ solara.Markdown(
52
+ f"""
53
+ # Resulting layout
54
+
55
+ This layout can be copy pasted to put in your code as an initial layout:
56
+
57
+ ```python
58
+ grid_layout = {grid_layout_formatted}
59
+ ```
60
+ """
61
+ )
62
+ return main
@@ -0,0 +1,19 @@
1
+ """
2
+ # GridFixed
3
+
4
+ Lays out children in a grid with a fixed number of columns.
5
+ """
6
+
7
+ import solara
8
+
9
+ from ..common import ColorCard
10
+
11
+ title = "GridFixed"
12
+
13
+
14
+ @solara.component
15
+ def Page():
16
+ colors = "green red orange brown yellow pink".split()
17
+ with solara.GridFixed(columns=3):
18
+ for color in colors:
19
+ ColorCard(color, color)
@@ -0,0 +1,18 @@
1
+ """
2
+ # HBox
3
+ Lays out children in horizontal direction.
4
+ """
5
+
6
+ import solara
7
+
8
+ from ..common import ColorCard
9
+
10
+
11
+ @solara.component
12
+ def Page():
13
+ with solara.VBox() as main:
14
+ colors = "green red orange brown yellow pink".split()
15
+ with solara.HBox():
16
+ for color in colors:
17
+ ColorCard(color, color)
18
+ return main
@@ -0,0 +1,30 @@
1
+ """
2
+ # Row
3
+ """
4
+
5
+ import solara
6
+ import solara.lab
7
+ from solara.website.utils import apidoc
8
+
9
+ gap_size = solara.reactive("12px")
10
+ justify = solara.reactive("space-around")
11
+
12
+
13
+ @solara.component
14
+ def Page():
15
+ with solara.Card("Row demo") as main:
16
+ with solara.Column():
17
+ solara.Text("Justify:")
18
+ solara.ToggleButtonsSingle(justify, values=["start", "center", "end", "space-around", "space-between", "space-evenly"])
19
+ solara.Select(
20
+ label="Gap size",
21
+ values=["0px", "4px", "8px", "12px", "16px", "20px", "24px"],
22
+ ).connect(gap_size)
23
+ with solara.Row(gap=gap_size.value, justify=justify.value):
24
+ colors = "green red orange brown yellow pink".split()
25
+ for color in colors:
26
+ solara.Button(label="Solara", color=color)
27
+ return main
28
+
29
+
30
+ __doc__ += apidoc(solara.Row.f) # type: ignore
@@ -0,0 +1,24 @@
1
+ """
2
+ # Sidebar
3
+
4
+ """
5
+
6
+ import solara
7
+ import solara.lab
8
+ from solara.website.utils import apidoc
9
+
10
+
11
+ @solara.component
12
+ def Page():
13
+ return solara.Markdown(
14
+ """
15
+
16
+ The sidebar can only be shown in embedded mode on this page.
17
+ Visit the [Scatter app demo](/apps/scatter) to see an example of a full sidebar used in Soalra server.
18
+
19
+ [![AppLayout screenshot](https://dxhl76zpt6fap.cloudfront.net/public/docs/app-layout.webp)](/apps/scatter)
20
+ """
21
+ )
22
+
23
+
24
+ __doc__ += apidoc(solara.Sidebar.f) # type: ignore
@@ -0,0 +1,19 @@
1
+ """
2
+ # VBox
3
+
4
+ Lays out children in a vertical direction.
5
+ """
6
+
7
+ import solara
8
+
9
+ from ..common import ColorCard
10
+
11
+
12
+ @solara.component
13
+ def Page():
14
+ with solara.VBox() as main:
15
+ colors = "green red orange brown yellow pink".split()
16
+ with solara.VBox():
17
+ for color in colors:
18
+ ColorCard(color, color)
19
+ return main
@@ -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,11 @@
1
+ """# FileDownload"""
2
+
3
+ import solara
4
+ from solara.website.components import NoPage
5
+ from solara.website.utils import apidoc
6
+
7
+ Page = NoPage
8
+ title = "FileDownload"
9
+
10
+
11
+ __doc__ += apidoc(solara.FileDownload.f) # type: ignore
@@ -0,0 +1,19 @@
1
+ """# HTML"""
2
+
3
+ import solara
4
+ from solara.website.utils import apidoc
5
+
6
+
7
+ @solara.component
8
+ def Page():
9
+ html = """
10
+ <h1>Custom html</h1>
11
+ <ul>
12
+ <li>Item 1
13
+ <li>Item 2
14
+ </ul>
15
+ """
16
+ solara.HTML(tag="div", unsafe_innerHTML=html)
17
+
18
+
19
+ __doc__ += apidoc(solara.HTML.f) # type: ignore
@@ -0,0 +1,11 @@
1
+ """# Image"""
2
+
3
+ import solara
4
+ from solara.website.components import NoPage
5
+ from solara.website.utils import apidoc
6
+
7
+ Page = NoPage
8
+ title = "Image"
9
+
10
+
11
+ __doc__ += apidoc(solara.Image.f) # type: ignore
@@ -0,0 +1,57 @@
1
+ """# Markdown"""
2
+
3
+ import solara
4
+ from solara.alias import rv
5
+ from solara.website.utils import apidoc
6
+
7
+
8
+ @solara.component
9
+ def Page():
10
+ markdown_initial = """
11
+ # Large
12
+ ## Smaller
13
+
14
+ ## List items
15
+
16
+ * item 1
17
+ * item 2
18
+
19
+
20
+ ## Code highlight support
21
+ ```python
22
+ code = "formatted" and "supports highlighting"
23
+ ```
24
+
25
+
26
+ ## Mermaid support!
27
+ See [Mermaid docs](https://mermaid-js.github.io/)
28
+
29
+ ```mermaid
30
+ graph TD;
31
+ A-->B;
32
+ A-->C;
33
+ B-->D;
34
+ C-->D;
35
+ ```
36
+
37
+
38
+ """.strip()
39
+
40
+ markdown_text, set_markdown_text = solara.use_state(markdown_initial)
41
+ # with solara.GridFixed(columns=2) as main:
42
+ with solara.HBox(grow=True) as main:
43
+ with solara.VBox():
44
+ solara.Markdown("# Input text")
45
+ with solara.Padding(2):
46
+ with rv.Sheet(elevation=2):
47
+ rv.Textarea(v_model=markdown_text, on_v_model=set_markdown_text, rows=30)
48
+ with solara.VBox():
49
+ solara.Markdown("# Renders like")
50
+ with solara.Padding(2):
51
+ with rv.Sheet(elevation=2):
52
+ solara.Markdown(markdown_text)
53
+
54
+ return main
55
+
56
+
57
+ __doc__ += apidoc(solara.Markdown.f) # type: ignore
@@ -0,0 +1,51 @@
1
+ """# MarkdownEditor"""
2
+
3
+ import solara
4
+ from solara.alias import rv
5
+ from solara.website.utils import apidoc
6
+
7
+
8
+ @solara.component
9
+ def Page():
10
+ markdown_initial = """
11
+ # Large heading
12
+ ## Medium heading
13
+ ### Small heading
14
+
15
+
16
+ ## List items
17
+
18
+ * item 1
19
+ * item 2
20
+
21
+ ## Numbered items
22
+
23
+ 1. item 1
24
+ 2. item 2
25
+
26
+
27
+ **bold** and *italic*, [GitHub link](https://github.com/widgetti/solara/)
28
+
29
+
30
+ ```
31
+ preformatted code
32
+ which respecs spaces
33
+ and line breaks
34
+ ```
35
+
36
+ """.strip()
37
+
38
+ markdown_text, set_markdown_text = solara.use_state(markdown_initial)
39
+ with solara.HBox(grow=True) as main:
40
+ with solara.VBox():
41
+ with solara.Padding(2):
42
+ with rv.Sheet(elevation=2):
43
+ solara.MarkdownEditor(markdown_text, on_value=set_markdown_text)
44
+ with rv.Sheet(elevation=2):
45
+ solara.Markdown("# Raw markdown")
46
+ solara.Preformatted(markdown_text)
47
+
48
+ return main
49
+
50
+
51
+ __doc__ += apidoc(solara.MarkdownEditor.f) # type: ignore
@@ -0,0 +1,83 @@
1
+ """
2
+ # SqlCode
3
+ """
4
+
5
+ import os
6
+ import sqlite3
7
+ import threading
8
+ from typing import Optional, cast
9
+
10
+ import pandas as pd
11
+
12
+ try:
13
+ import vaex.datasets
14
+ except ImportError:
15
+ vaex = None
16
+
17
+ import solara
18
+ from solara.website.utils import apidoc
19
+
20
+ if vaex is not None:
21
+ df_iris = vaex.datasets.iris().to_pandas_df()
22
+ df_titanic = vaex.datasets.titanic().to_pandas_df()
23
+
24
+ def create_db():
25
+ conn = sqlite3.connect(filename)
26
+ df_iris.to_sql("iris", conn, if_exists="replace", index=False)
27
+ df_titanic.to_sql("titanic", conn, if_exists="replace", index=False)
28
+ conn.close()
29
+
30
+ filename = "solara-sql.db"
31
+ if not os.path.exists(filename):
32
+ create_db()
33
+
34
+ conn = sqlite3.connect(filename)
35
+ conn.row_factory = sqlite3.Row
36
+ table_names = [k[0] for k in conn.execute("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name").fetchall()]
37
+ table_hints = {table_name: conn.execute(f"SELECT * from {table_name} LIMIT 1").fetchone().keys() for table_name in table_names}
38
+
39
+
40
+ @solara.component
41
+ def Page():
42
+ if vaex is None:
43
+ return solara.Error("Vaex is not installed, run pip install vaex-core vaex-hdf5")
44
+ query, set_query = solara.use_state("SELECT * from titanic") # noqa: SH101
45
+ query_executed, set_query_executed = solara.use_state(cast(Optional[str], None)) # noqa: SH101
46
+
47
+ def run_query(cancel: threading.Event) -> pd.DataFrame:
48
+ if not query_executed:
49
+ return
50
+ conn = sqlite3.connect(filename)
51
+ cursor = conn.cursor()
52
+ cursor.execute(query_executed)
53
+
54
+ df = pd.DataFrame(cursor.fetchall(), columns=[k[0] for k in cursor.description])
55
+ return df
56
+
57
+ result: solara.Result[pd.DataFrame] = solara.use_thread(run_query, dependencies=[query_executed]) # noqa: SH101
58
+
59
+ solara.SqlCode(query=query, tables=table_hints, on_query=set_query)
60
+ enable_execute = (query != query_executed) or result.error is not None
61
+
62
+ def execute():
63
+ set_query_executed(query)
64
+ if query == query_executed and result.error:
65
+ result.retry() # type: ignore
66
+
67
+ solara.Button("Execute", on_click=execute, disabled=not enable_execute)
68
+ if result.error:
69
+ solara.Error(f"Ooops {result.error}")
70
+ elif not query:
71
+ solara.Info("No query")
72
+
73
+ elif result.value is not None:
74
+ solara.Markdown(f"Result for query: `{query_executed}`")
75
+ df = result.value
76
+ solara.DataFrame(df)
77
+ elif query_executed is not None:
78
+ with solara.Div():
79
+ solara.Text("Loading data...")
80
+ solara.v.ProgressCircular(indeterminate=True, class_="solara-progress")
81
+
82
+
83
+ __doc__ += apidoc(solara.SqlCode.f) # type: ignore
@@ -0,0 +1,11 @@
1
+ """# Tooltip"""
2
+
3
+ import solara
4
+ from solara.website.components import NoPage
5
+ from solara.website.utils import apidoc
6
+
7
+ Page = NoPage
8
+ title = "Tooltip"
9
+
10
+
11
+ __doc__ += apidoc(solara.Tooltip.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,15 @@
1
+ """# Head"""
2
+
3
+ import solara
4
+ from solara.website.utils import apidoc
5
+
6
+
7
+ @solara.component
8
+ def Page():
9
+ solara.Info("A Head component does not render somesome visual on the page, but it is used to avoid duplicate tags, such as titles.")
10
+ with solara.Head():
11
+ # title should always occur inside a Head component
12
+ solara.Title("Custom title")
13
+
14
+
15
+ __doc__ += apidoc(solara.Head.f) # type: ignore
@@ -0,0 +1,25 @@
1
+ """# Title"""
2
+
3
+ from typing import Optional, cast
4
+
5
+ import solara
6
+ from solara.website.utils import apidoc
7
+
8
+
9
+ @solara.component
10
+ def Page():
11
+ title = solara.use_reactive(cast(Optional[str], "Custom title!"))
12
+
13
+ solara.ToggleButtonsSingle(value=title, values=[None, "Custom title!", "Different custom title"])
14
+
15
+ if title is not None:
16
+ # if the title is not set in a child component, the parent's title will be used
17
+ with solara.Head():
18
+ # title should always occur inside a Head component
19
+ solara.Title(title)
20
+ solara.Info(f"Your browser tab title should say {title}", classes=["mt-4"])
21
+ else:
22
+ solara.Warning("If no title is set, the parent title is used.", classes=["mt-4"])
23
+
24
+
25
+ __doc__ += apidoc(solara.Title.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,39 @@
1
+ """# Error
2
+
3
+ Solara has 4 types of alerts:
4
+
5
+ * [Success](/documentation/components/status/success)
6
+ * [Info](/documentation/components/status/info)
7
+ * [Warning](/documentation/components/status/warning)
8
+ * Error (this page)
9
+
10
+
11
+
12
+ """
13
+
14
+ import solara
15
+ from solara.website.utils import apidoc
16
+
17
+
18
+ @solara.component
19
+ def Page():
20
+ icon = solara.use_reactive(True)
21
+ dense = solara.use_reactive(False)
22
+ outlined = solara.use_reactive(True)
23
+ text = solara.use_reactive(True)
24
+
25
+ with solara.GridFixed(4):
26
+ solara.Checkbox(label="Use icon", value=icon)
27
+ solara.Checkbox(label="Show dense", value=dense)
28
+ solara.Checkbox(label="Show as text", value=text)
29
+ solara.Checkbox(label="Show outlined", value=outlined)
30
+ solara.Error(
31
+ f"This is solara.Error(label='...', text={text.value}, dense={dense.value}, outlined={outlined.value}, icon={icon.value})",
32
+ text=text.value,
33
+ dense=dense.value,
34
+ outlined=outlined.value,
35
+ icon=icon.value,
36
+ )
37
+
38
+
39
+ __doc__ += apidoc(solara.Error.f) # type: ignore