diff --git a/solara/__init__.py b/solara/__init__.py
index 487b811bc..8608b4fd8 100644
--- a/solara/__init__.py
+++ b/solara/__init__.py
@@ -40,8 +40,8 @@ def _using_solara_server():
use_state,
use_state_widget,
)
-from reacton.core import Element
-from .core import component
+from reacton.core import Element as Element
+from .core import component as component
try:
import ipyvuetify.components as v # type: ignore
@@ -57,14 +57,13 @@ def _using_solara_server():
from .cache import memoize
from . import cache
-# TODO: components re-exports v, we should use __all__ in components/misc.py
from .components import * # type: ignore
-from .components import _component_vue
from .routing import use_route, use_router, use_route_level, find_route, use_pathname, resolve_path
from .autorouting import generate_routes, generate_routes_directory, RenderPage, RoutingProvider, DefaultLayout
from .checks import check_jupyter
from .scope import get_kernel_id, get_session_id
+from .tasks import task, use_task, Task, TaskResult
def display(*objs, **kwargs):
diff --git a/solara/components/__init__.py b/solara/components/__init__.py
index 086006059..ae7aa4947 100644
--- a/solara/components/__init__.py
+++ b/solara/components/__init__.py
@@ -1,60 +1,84 @@
# isort: skip_file
-from .button import Button # noqa: F401
-from .style import Style # noqa: F401 F403
-from .misc import * # noqa: F401 F403
-from .alert import Warning, Info, Error, Success # noqa: F401 F403
-from .checkbox import Checkbox # noqa: F401 F403
-from .cross_filter import ( # noqa: F401
+from .button import Button
+from .style import Style
+from .misc import (
+ Navigator,
+ GridDraggable,
+ GridLayout,
+ ListItem,
+ ui_dropdown,
+ ui_text,
+ ui_checkbox,
+ ui_slider,
+ Text,
+ Div,
+ Preformatted,
+ IconButton,
+ HTML,
+ VBox,
+ HBox,
+ Row,
+ Column,
+ GridFixed,
+ Padding,
+ FigurePlotly,
+ Code,
+)
+from .alert import Warning, Info, Error, Success
+from .checkbox import Checkbox
+from .cross_filter import (
CrossFilterDataFrame,
CrossFilterReport,
CrossFilterSelect,
CrossFilterSlider,
)
-from .datatable import DataTable, DataFrame # noqa: F401 F403
-from .details import Details # noqa: F401 F403
-from .file_browser import FileBrowser # noqa: F401 F403
-from .image import Image # noqa: F401 F403
-from .markdown import Markdown, MarkdownIt # noqa: F401 F403
-from .slider import ( # noqa: F401 F403
- DateSlider, # noqa: F401 F403
- FloatSlider, # noqa: F401 F403
- IntSlider, # noqa: F401 F403
- ValueSlider, # noqa: F401 F403
- SliderDate, # noqa: F401 F403
- SliderFloat, # noqa: F401 F403
- SliderInt, # noqa: F401 F403
- SliderValue, # noqa: F401 F403
- SliderRangeInt, # noqa: F401 F403
- SliderRangeFloat, # noqa: F401 F403
-) # noqa: F401 F403
-from .sql_code import SqlCode # noqa: F401 F403
-from .togglebuttons import ( # noqa: F401 F403
+from .datatable import DataTable, DataFrame
+from .details import Details
+from .file_browser import FileBrowser
+from .image import Image
+from .markdown import Markdown, MarkdownIt
+from .slider import (
+ DateSlider,
+ FloatSlider,
+ IntSlider,
+ ValueSlider,
+ SliderDate,
+ SliderFloat,
+ SliderInt,
+ SliderValue,
+ SliderRangeInt,
+ SliderRangeFloat,
+)
+from .sql_code import SqlCode
+from .togglebuttons import (
ToggleButtonsMultiple,
ToggleButtonsSingle,
)
-from .input import InputText, InputFloat, InputInt # noqa: F401 F403
-from .input_text_area import InputTextArea # noqa: F401 F403
-from .pivot_table import PivotTableView, PivotTable, PivotTableCard # noqa: F401 F403
-from .head import Head # noqa: F401 F403
-from .title import Title # noqa: F401 F403
-from .link import Link # noqa: F401 F403
-from .applayout import AppLayout, Sidebar, AppBar, AppBarTitle # noqa: F401 F403
-from .tab_navigation import TabNavigation # noqa: F401 F403
-from .markdown_editor import MarkdownEditor # noqa: F401 F403
-from .select import Select, SelectMultiple # noqa: F401 F403
-from .matplotlib import FigureMatplotlib # noqa: F401 F403
-from .echarts import FigureEcharts # noqa: F401 F403
-from .figure_altair import FigureAltair, AltairChart # noqa: F401 F403
-from .meta import Meta # noqa: F401 F403
-from .columns import Columns, ColumnsResponsive # noqa: F401 F403
-from .file_drop import FileDrop, FileDropMultiple # noqa: F401 F403
-from .file_download import FileDownload # noqa: F401 F403
-from .tooltip import Tooltip # noqa: F401 F403
-from .card import Card, CardActions # noqa: F401 F403
-from .spinner import SpinnerSolara # noqa: F401 F403
-from .switch import Switch # noqa: F401 F403
-from .progress import ProgressLinear # noqa: F401 F403
-from .component_vue import _component_vue, component_vue # noqa: F401 F403
+from .input import InputText, InputFloat, InputInt
+from .input_text_area import InputTextArea
+from .pivot_table import PivotTableView, PivotTable, PivotTableCard
+from .head import Head
+from .title import Title
+from .link import Link
+from .applayout import AppLayout, Sidebar, AppBar, AppBarTitle
+from .tab_navigation import TabNavigation
+from .markdown_editor import MarkdownEditor
+from .select import Select, SelectMultiple
+from .matplotlib import FigureMatplotlib
+from .echarts import FigureEcharts
+from .figure_altair import FigureAltair, AltairChart
+from .meta import Meta
+from .columns import Columns, ColumnsResponsive
+from .file_drop import FileDrop, FileDropMultiple
+from .file_download import FileDownload
+from .tooltip import Tooltip
+from .card import Card, CardActions
+from .spinner import SpinnerSolara
+from .switch import Switch
+from .progress import ProgressLinear
+from .component_vue import _component_vue, component_vue
+from .confirmation_dialog import ConfirmationDialog
+from .menu import ClickMenu, ContextMenu, Menu
import reacton.core
try:
@@ -65,6 +89,103 @@
import logging
from ..settings import main
+
+__all__ = [
+ "Button",
+ "Style",
+ "Navigator",
+ "GridDraggable",
+ "GridLayout",
+ "ListItem",
+ "ui_dropdown",
+ "ui_text",
+ "ui_checkbox",
+ "ui_slider",
+ "Text",
+ "Div",
+ "Preformatted",
+ "IconButton",
+ "HTML",
+ "VBox",
+ "HBox",
+ "Row",
+ "Column",
+ "GridFixed",
+ "Padding",
+ "FigurePlotly",
+ "Code",
+ "Warning",
+ "Info",
+ "Error",
+ "Success",
+ "Checkbox",
+ "CrossFilterDataFrame",
+ "CrossFilterReport",
+ "CrossFilterSelect",
+ "CrossFilterSlider",
+ "DataTable",
+ "DataFrame",
+ "Details",
+ "FileBrowser",
+ "Image",
+ "Markdown",
+ "MarkdownIt",
+ "DateSlider",
+ "FloatSlider",
+ "IntSlider",
+ "ValueSlider",
+ "SliderDate",
+ "SliderFloat",
+ "SliderInt",
+ "SliderValue",
+ "SliderRangeInt",
+ "SliderRangeFloat",
+ "SqlCode",
+ "ToggleButtonsMultiple",
+ "ToggleButtonsSingle",
+ "InputText",
+ "InputFloat",
+ "InputInt",
+ "InputTextArea",
+ "PivotTableView",
+ "PivotTable",
+ "PivotTableCard",
+ "Head",
+ "Title",
+ "Link",
+ "AppLayout",
+ "Sidebar",
+ "AppBar",
+ "AppBarTitle",
+ "TabNavigation",
+ "MarkdownEditor",
+ "Select",
+ "SelectMultiple",
+ "FigureMatplotlib",
+ "FigureEcharts",
+ "FigureAltair",
+ "AltairChart",
+ "Meta",
+ "Columns",
+ "ColumnsResponsive",
+ "FileDrop",
+ "FileDropMultiple",
+ "FileDownload",
+ "Tooltip",
+ "Card",
+ "CardActions",
+ "SpinnerSolara",
+ "Switch",
+ "ProgressLinear",
+ "_component_vue",
+ "component_vue",
+ "ConfirmationDialog",
+ "ClickMenu",
+ "ContextMenu",
+ "Menu",
+]
+
+
_container = None
if main.default_container in globals():
@@ -73,5 +194,4 @@
logger = logging.getLogger("solara.components")
logger.warning(f"Default container {main.default_container} not found in solara.components. Defaulting to Column.")
-# TODO: When Solara 2.0 releases Column should be replaced with Fragment
-reacton.core._default_container = _container or Column # noqa: F405
+reacton.core._default_container = _container or Fragment # noqa: F405
diff --git a/solara/lab/components/confirmation_dialog.py b/solara/components/confirmation_dialog.py
similarity index 100%
rename from solara/lab/components/confirmation_dialog.py
rename to solara/components/confirmation_dialog.py
diff --git a/solara/components/head_tag.vue b/solara/components/head_tag.vue
index 4dc6892a0..99d12d6c0 100644
--- a/solara/components/head_tag.vue
+++ b/solara/components/head_tag.vue
@@ -1,4 +1,5 @@
-
+
+