diff --git a/app-examples/mapping/mapping/mapping.py b/app-examples/mapping/mapping/mapping.py
index 4c82a217..f8835f90 100644
--- a/app-examples/mapping/mapping/mapping.py
+++ b/app-examples/mapping/mapping/mapping.py
@@ -3,7 +3,7 @@
from typing import Dict, List, Tuple
import nextpy as xt
-from nextpy.frontend.components.leaflet import (
+from nextpy.interfaces.web.components.leaflet import (
map_container,
tile_layer,
marker,
diff --git a/nextpy/frontend/templates/apps/hello/.gitignore b/app-examples/todo/.gitignore
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/.gitignore
rename to app-examples/todo/.gitignore
diff --git a/nextpy/frontend/templates/apps/base/assets/favicon.ico b/app-examples/todo/assets/favicon.ico
similarity index 100%
rename from nextpy/frontend/templates/apps/base/assets/favicon.ico
rename to app-examples/todo/assets/favicon.ico
diff --git a/nextpy/frontend/templates/apps/base/assets/github.svg b/app-examples/todo/assets/github.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/base/assets/github.svg
rename to app-examples/todo/assets/github.svg
diff --git a/nextpy/frontend/templates/apps/base/assets/gradient_underline.svg b/app-examples/todo/assets/gradient_underline.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/base/assets/gradient_underline.svg
rename to app-examples/todo/assets/gradient_underline.svg
diff --git a/nextpy/frontend/templates/apps/base/assets/icon.svg b/app-examples/todo/assets/icon.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/base/assets/icon.svg
rename to app-examples/todo/assets/icon.svg
diff --git a/nextpy/frontend/templates/apps/base/assets/logo_darkmode.svg b/app-examples/todo/assets/logo_darkmode.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/base/assets/logo_darkmode.svg
rename to app-examples/todo/assets/logo_darkmode.svg
diff --git a/nextpy/frontend/templates/apps/base/assets/paneleft.svg b/app-examples/todo/assets/paneleft.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/base/assets/paneleft.svg
rename to app-examples/todo/assets/paneleft.svg
diff --git a/nextpy/frontend/templates/apps/base/assets/text_logo_darkmode.svg b/app-examples/todo/assets/text_logo_darkmode.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/base/assets/text_logo_darkmode.svg
rename to app-examples/todo/assets/text_logo_darkmode.svg
diff --git a/nextpy/frontend/templates/apps/base/code/components/__init__.py b/app-examples/todo/todo/__init__.py
similarity index 100%
rename from nextpy/frontend/templates/apps/base/code/components/__init__.py
rename to app-examples/todo/todo/__init__.py
diff --git a/app-examples/todo/todo/todo.py b/app-examples/todo/todo/todo.py
new file mode 100644
index 00000000..7d567e13
--- /dev/null
+++ b/app-examples/todo/todo/todo.py
@@ -0,0 +1,40 @@
+import nextpy as xt
+
+class State(xt.State):
+ count: int = 0
+ message: str = ""
+
+ def increment(self):
+ self.count += 1
+ if self.count == 10:
+ self.message = "Count is 10!"
+
+ def decrement(self):
+ self.count -= 1
+ if self.count < 10:
+ self.message = ""
+
+
+def index():
+ return xt.hstack(
+ xt.button(
+ "Decrement",
+ bg="#fef2f2",
+ color="#b91c1c",
+ border_radius="lg",
+ on_click=State.decrement,
+ ),
+ xt.heading(State.count, font_size="2em"),
+ xt.text(State.message),
+ xt.button(
+ "Increment",
+ bg="#ecfdf5",
+ color="#047857",
+ border_radius="lg",
+ on_click=State.increment,
+ ),
+ spacing="1em",
+ )
+
+app = xt.App()
+app.add_page(index)
diff --git a/app-examples/todo/xtconfig.py b/app-examples/todo/xtconfig.py
new file mode 100644
index 00000000..abe56db8
--- /dev/null
+++ b/app-examples/todo/xtconfig.py
@@ -0,0 +1,5 @@
+import nextpy as xt
+
+config = xt.Config(
+ app_name="todo",
+)
\ No newline at end of file
diff --git a/app-examples/unstyled_example/.gitignore b/app-examples/unstyled_example/.gitignore
new file mode 100644
index 00000000..eab0d4b0
--- /dev/null
+++ b/app-examples/unstyled_example/.gitignore
@@ -0,0 +1,4 @@
+*.db
+*.py[cod]
+.web
+__pycache__/
\ No newline at end of file
diff --git a/nextpy/frontend/templates/apps/blank/assets/favicon.ico b/app-examples/unstyled_example/assets/favicon.ico
similarity index 100%
rename from nextpy/frontend/templates/apps/blank/assets/favicon.ico
rename to app-examples/unstyled_example/assets/favicon.ico
diff --git a/nextpy/frontend/templates/apps/blank/assets/github.svg b/app-examples/unstyled_example/assets/github.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/blank/assets/github.svg
rename to app-examples/unstyled_example/assets/github.svg
diff --git a/nextpy/frontend/templates/apps/blank/assets/gradient_underline.svg b/app-examples/unstyled_example/assets/gradient_underline.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/blank/assets/gradient_underline.svg
rename to app-examples/unstyled_example/assets/gradient_underline.svg
diff --git a/nextpy/frontend/templates/apps/blank/assets/icon.svg b/app-examples/unstyled_example/assets/icon.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/blank/assets/icon.svg
rename to app-examples/unstyled_example/assets/icon.svg
diff --git a/nextpy/frontend/templates/apps/blank/assets/logo_darkmode.svg b/app-examples/unstyled_example/assets/logo_darkmode.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/blank/assets/logo_darkmode.svg
rename to app-examples/unstyled_example/assets/logo_darkmode.svg
diff --git a/nextpy/frontend/templates/apps/blank/assets/paneleft.svg b/app-examples/unstyled_example/assets/paneleft.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/blank/assets/paneleft.svg
rename to app-examples/unstyled_example/assets/paneleft.svg
diff --git a/nextpy/frontend/templates/apps/blank/assets/text_logo_darkmode.svg b/app-examples/unstyled_example/assets/text_logo_darkmode.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/blank/assets/text_logo_darkmode.svg
rename to app-examples/unstyled_example/assets/text_logo_darkmode.svg
diff --git a/nextpy/frontend/templates/apps/blank/code/__init__.py b/app-examples/unstyled_example/unstyled_example/__init__.py
similarity index 100%
rename from nextpy/frontend/templates/apps/blank/code/__init__.py
rename to app-examples/unstyled_example/unstyled_example/__init__.py
diff --git a/app-examples/unstyled_example/unstyled_example/unstyled_example.py b/app-examples/unstyled_example/unstyled_example/unstyled_example.py
new file mode 100644
index 00000000..d7a037ea
--- /dev/null
+++ b/app-examples/unstyled_example/unstyled_example/unstyled_example.py
@@ -0,0 +1,54 @@
+import nextpy as xt
+
+
+class CounterState(xt.State):
+ value: int = 0
+
+ def change_value(self, amount):
+ self.value += amount
+
+
+def create_button(label, amount):
+ return xt.unstyled.button(
+ label,
+ on_click=lambda: CounterState.change_value(amount)
+ )
+
+
+def index() -> xt.Component:
+ heading_color = xt.match(
+ CounterState.value,
+ (0, "red"),
+ (4, "blue"),
+ (8, "green"),
+ (12, "orange"),
+ (16, "lime"),
+ (20, "orange"),
+ "black"
+ )
+
+ return xt.unstyled.flex(
+ xt.unstyled.heading(
+ CounterState.value,
+ color="white",
+ background_color=heading_color,
+ as_="h2"
+ ),
+ xt.unstyled.flex(
+ create_button("decrement", -1),
+ create_button("increment", 1),
+ gap="2"
+ ),
+ align_items="center",
+ direction="column",
+ gap="2"
+ )
+
+
+# Global styles defined as a Python dictionary
+style = {
+ "text_align": "center",
+}
+
+app = xt.App(style=style)
+app.add_page(index)
diff --git a/app-examples/unstyled_example/xtconfig.py b/app-examples/unstyled_example/xtconfig.py
new file mode 100644
index 00000000..0477aec0
--- /dev/null
+++ b/app-examples/unstyled_example/xtconfig.py
@@ -0,0 +1,5 @@
+import nextpy as xt
+
+config = xt.Config(
+ app_name="unstyled_example",
+)
\ No newline at end of file
diff --git a/docs/references/frontend/components/base/app_wrap_reference.md b/docs/references/frontend/components/base/app_wrap_reference.md
index 391ca2c7..7a1f71ff 100644
--- a/docs/references/frontend/components/base/app_wrap_reference.md
+++ b/docs/references/frontend/components/base/app_wrap_reference.md
@@ -11,7 +11,7 @@
### Basic Implementation
```python
-from nextpy.frontend.components.base.app_wrap import AppWrap
+from nextpy.interfaces.web.components.base.app_wrap import AppWrap
from nextpy.frontend.style import Style
# Basic usage of AppWrap to group components with an applied style
diff --git a/docs/references/frontend/components/base/body_reference.md b/docs/references/frontend/components/base/body_reference.md
index 2a2e0cb6..02f00b33 100644
--- a/docs/references/frontend/components/base/body_reference.md
+++ b/docs/references/frontend/components/base/body_reference.md
@@ -25,7 +25,7 @@ The `Body` component is used in scenarios such as:
Here is a simple example of how to use the `Body` component:
```python
-from nextpy.frontend.components.base.body import Body
+from nextpy.interfaces.web.components.base.body import Body
# Create a Body component with a child component
body = Body.create(
@@ -39,7 +39,7 @@ body = Body.create(
For a more advanced usage that involves event handling and custom attributes:
```python
-from nextpy.frontend.components.base.body import Body
+from nextpy.interfaces.web.components.base.body import Body
from nextpy.backend.event import EventHandler
def on_click_handler(event):
diff --git a/docs/references/frontend/components/chakra/forms/iconbutton_reference.md b/docs/references/frontend/components/chakra/forms/iconbutton_reference.md
index 97493e05..8b5fd855 100644
--- a/docs/references/frontend/components/chakra/forms/iconbutton_reference.md
+++ b/docs/references/frontend/components/chakra/forms/iconbutton_reference.md
@@ -25,7 +25,7 @@ The primary purpose of the `IconButton` component is to capture user interaction
```python
from nextpy.components.chakra.forms.iconbutton import IconButton
-from nextpy.frontend.components.font_awesome.icon import FaIcon
+from nextpy.interfaces.web.components.font_awesome.icon import FaIcon
# Create an IconButton with a specific icon
icon_button = IconButton.create(
diff --git a/docs/references/frontend/components/chakra/layout/container_reference.md b/docs/references/frontend/components/chakra/layout/container_reference.md
index 9d3a1cd1..3adaf2b9 100644
--- a/docs/references/frontend/components/chakra/layout/container_reference.md
+++ b/docs/references/frontend/components/chakra/layout/container_reference.md
@@ -27,7 +27,7 @@ For more complex scenarios, you can include multiple child components, custom at
```python
from nextpy.components.chakra.layout import Container
-from nextpy.frontend.components.basic import Text
+from nextpy.interfaces.web.components.basic import Text
def app():
return Container.create(
diff --git a/docs/references/frontend/components/chakra/layout/spacer_reference.md b/docs/references/frontend/components/chakra/layout/spacer_reference.md
index c3ecc76d..f504e80e 100644
--- a/docs/references/frontend/components/chakra/layout/spacer_reference.md
+++ b/docs/references/frontend/components/chakra/layout/spacer_reference.md
@@ -31,7 +31,7 @@ spacer = Spacer.create()
```python
# Basic usage of Spacer to push two components apart
-from nextpy.frontend.components.chakra import Box, Spacer
+from nextpy.interfaces.web.components.chakra import Box, Spacer
left_component = Box.create("Left Item", style={"width": "100px"})
right_component = Box.create("Right Item", style={"width": "100px"})
@@ -48,7 +48,7 @@ layout = Box.create(
```python
# Advanced usage with multiple spacers for different spacing
-from nextpy.frontend.components.chakra import Box, Spacer
+from nextpy.interfaces.web.components.chakra import Box, Spacer
left_component = Box.create("Left Item", style={"width": "100px"})
middle_component = Box.create("Middle Item", style={"width": "100px"})
diff --git a/docs/references/frontend/components/chakra/media/image_reference.md b/docs/references/frontend/components/chakra/media/image_reference.md
index 801ee5aa..6895df60 100644
--- a/docs/references/frontend/components/chakra/media/image_reference.md
+++ b/docs/references/frontend/components/chakra/media/image_reference.md
@@ -49,7 +49,7 @@ A more advanced example of the `Image` component might include handling events a
```python
from nextpy.components.chakra.media.image import Image
-from nextpy.frontend.components.basic import Text
+from nextpy.interfaces.web.components.basic import Text
# Advanced image usage with fallback and events
image_with_fallback = Image.create(
diff --git a/docs/references/frontend/components/core/layout/center_reference.md b/docs/references/frontend/components/core/layout/center_reference.md
index c25d5fed..b0b94dd2 100644
--- a/docs/references/frontend/components/core/layout/center_reference.md
+++ b/docs/references/frontend/components/core/layout/center_reference.md
@@ -25,7 +25,7 @@ The `Center` component serves the purpose of simplifying the alignment of elemen
### Basic Implementation
```python
-from nextpy.frontend.components.core.layout.center import Center
+from nextpy.interfaces.web.components.core.layout.center import Center
centered_content = Center.create(
"This is a centered text block."
@@ -35,7 +35,7 @@ centered_content = Center.create(
### Advanced Implementation
```python
-from nextpy.frontend.components.core.layout.center import Center
+from nextpy.interfaces.web.components.core.layout.center import Center
from nextpy.frontend.style import Style
centered_content_with_style = Center.create(
diff --git a/docs/references/frontend/components/core/layout/spacer_reference.md b/docs/references/frontend/components/core/layout/spacer_reference.md
index d0e6b3aa..8d5eb242 100644
--- a/docs/references/frontend/components/core/layout/spacer_reference.md
+++ b/docs/references/frontend/components/core/layout/spacer_reference.md
@@ -19,7 +19,7 @@ The `Spacer` component is essentially a `Div` element with the capability to pro
### Basic Usage
```python
-from nextpy.frontend.components.core.layout import spacer
+from nextpy.interfaces.web.components.core.layout import spacer
# Creating a simple spacer with default properties
simple_spacer = spacer.create()
@@ -28,7 +28,7 @@ simple_spacer = spacer.create()
### Advanced Usage
```python
-from nextpy.frontend.components.core.layout import spacer
+from nextpy.interfaces.web.components.core.layout import spacer
from nextpy.frontend.style import Style
# Creating a spacer with a specific height and width
diff --git a/docs/references/frontend/components/core/layout/stack_reference.md b/docs/references/frontend/components/core/layout/stack_reference.md
index 27dce827..fb2fedf4 100644
--- a/docs/references/frontend/components/core/layout/stack_reference.md
+++ b/docs/references/frontend/components/core/layout/stack_reference.md
@@ -18,7 +18,7 @@ The `Stack` component in Nextpy is a layout utility designed to stack its child
### Basic Usage
```python
-from nextpy.frontend.components.core.layout.stack import HStack, VStack
+from nextpy.interfaces.web.components.core.layout.stack import HStack, VStack
# Horizontal Stack
horizontal_stack = HStack.create(
diff --git a/docs/references/frontend/components/radix/themes/components/icons_reference.md b/docs/references/frontend/components/radix/themes/components/icons_reference.md
index 2f46d773..02c59ef2 100644
--- a/docs/references/frontend/components/radix/themes/components/icons_reference.md
+++ b/docs/references/frontend/components/radix/themes/components/icons_reference.md
@@ -51,7 +51,7 @@ my_icon = Icon.create(
```python
from nextpy.components.radix.themes.components.icons import Icon, ICON_LIST
-from nextpy.frontend.components.flex import Flex
+from nextpy.interfaces.web.components.flex import Flex
# Displaying a set of icons
icon_set = Flex.create(
diff --git a/nextpy/__init__.py b/nextpy/__init__.py
index 2d8a537a..3ab11443 100644
--- a/nextpy/__init__.py
+++ b/nextpy/__init__.py
@@ -12,7 +12,7 @@
import importlib
from typing import Type
-from nextpy.frontend.page import page as page
+from nextpy.interfaces.web.page import page as page
from nextpy.utils import console
from nextpy.utils.format import to_snake_case
@@ -283,14 +283,15 @@
"nextpy.constants": ["Env", "constants"],
"nextpy.data.jsondb": ["JsonDatabase"],
"nextpy.data.model": ["Model", "model", "session"],
- "nextpy.frontend.components": _ALL_COMPONENTS + ["chakra", "next"],
- "nextpy.frontend.components.framer.motion": ["motion"],
- "nextpy.frontend.components.component": ["memo"],
- "nextpy.frontend.components.el": ["el"],
- "nextpy.frontend.components.moment.moment": ["MomentDelta"],
+ "nextpy.interfaces.web.components": _ALL_COMPONENTS + ["chakra", "next"],
+ "nextpy.interfaces.web.components.framer.motion": ["motion"],
+ "nextpy.interfaces.web.components.component": ["memo"],
+ "nextpy.interfaces.web.components.el": ["el"],
+ "nextpy.interfaces.web.components.moment.moment": ["MomentDelta"],
"nextpy.frontend.page": ["page"],
+ "nextpy.interfaces.web.components.proxy": ["animation", "unstyled"],
"nextpy.frontend.style": ["color_mode", "style", "toggle_color_mode"],
- "nextpy.frontend.components.recharts": [
+ "nextpy.interfaces.web.components.recharts": [
"area_chart", "bar_chart", "line_chart", "composed_chart", "pie_chart",
"radar_chart", "radial_bar_chart", "scatter_chart", "funnel_chart", "treemap",
"area", "bar", "line", "scatter", "x_axis", "y_axis", "z_axis", "brush",
@@ -300,7 +301,6 @@
"polar_angle_axis", "polar_grid", "polar_radius_axis",
],
"nextpy.utils": ["utils"],
- "nextpy.frontend.components.proxy": ["animation"],
}
@@ -351,9 +351,12 @@ def __getattr__(name: str) -> Type:
"""
# Custom alias handling
if name == "animation":
- module = importlib.import_module("nextpy.frontend.components.proxy")
+ module = importlib.import_module("nextpy.interfaces.web.components.proxy")
return module.animation
+ # Custom alias handling for 'unstyled'
+ if name == "unstyled":
+ return importlib.import_module("nextpy.interfaces.web.components.proxy.unstyled")
try:
# Check for import of a module that is not in the mapping.
@@ -371,4 +374,4 @@ def __getattr__(name: str) -> Type:
getattr(module, name) if name != _MAPPING[name].rsplit(".")[-1] else module
)
except ModuleNotFoundError:
- raise AttributeError(f"module 'nextpy' has no attribute {name}") from None
+ raise AttributeError(f"module 'nextpy' has no attribute {name}") from None
\ No newline at end of file
diff --git a/nextpy/__init__.pyi b/nextpy/__init__.pyi
index 1f049903..5db8cf69 100644
--- a/nextpy/__init__.pyi
+++ b/nextpy/__init__.pyi
@@ -1,4 +1,4 @@
-# This file has been modified by the Nextpy Team in 2023 using AI tools and automation scripts.
+# This file has been modified by the Nextpy Team in 2023 using AI tools and automation scripts.
# We have rigorously tested these modifications to ensure reliability and performance. Based on successful test results, we are confident in the quality and stability of these changes.
from nextpy.backend import admin as admin
@@ -10,453 +10,462 @@ from nextpy import base as base
from nextpy.base import Base as Base
from nextpy.build import compiler as compiler
from nextpy.build.compiler.utils import get_asset_path as get_asset_path
-from nextpy.frontend.components import Accordion as Accordion
-from nextpy.frontend.components import AccordionButton as AccordionButton
-from nextpy.frontend.components import AccordionIcon as AccordionIcon
-from nextpy.frontend.components import AccordionItem as AccordionItem
-from nextpy.frontend.components import AccordionPanel as AccordionPanel
-from nextpy.frontend.components import Alert as Alert
-from nextpy.frontend.components import AlertDescription as AlertDescription
-from nextpy.frontend.components import AlertDialog as AlertDialog
-from nextpy.frontend.components import AlertDialogBody as AlertDialogBody
-from nextpy.frontend.components import AlertDialogContent as AlertDialogContent
-from nextpy.frontend.components import AlertDialogFooter as AlertDialogFooter
-from nextpy.frontend.components import AlertDialogHeader as AlertDialogHeader
-from nextpy.frontend.components import AlertDialogOverlay as AlertDialogOverlay
-from nextpy.frontend.components import AlertIcon as AlertIcon
-from nextpy.frontend.components import AlertTitle as AlertTitle
-from nextpy.frontend.components import AspectRatio as AspectRatio
-from nextpy.frontend.components import Audio as Audio
-from nextpy.frontend.components import Avatar as Avatar
-from nextpy.frontend.components import AvatarBadge as AvatarBadge
-from nextpy.frontend.components import AvatarGroup as AvatarGroup
-from nextpy.frontend.components import Badge as Badge
-from nextpy.frontend.components import Box as Box
-from nextpy.frontend.components import Breadcrumb as Breadcrumb
-from nextpy.frontend.components import BreadcrumbItem as BreadcrumbItem
-from nextpy.frontend.components import BreadcrumbLink as BreadcrumbLink
-from nextpy.frontend.components import BreadcrumbSeparator as BreadcrumbSeparator
-from nextpy.frontend.components import Button as Button
-from nextpy.frontend.components import ButtonGroup as ButtonGroup
-from nextpy.frontend.components import Card as Card
-from nextpy.frontend.components import CardBody as CardBody
-from nextpy.frontend.components import CardFooter as CardFooter
-from nextpy.frontend.components import CardHeader as CardHeader
-from nextpy.frontend.components import Center as Center
-from nextpy.frontend.components import Checkbox as Checkbox
-from nextpy.frontend.components import CheckboxGroup as CheckboxGroup
-from nextpy.frontend.components import CircularProgress as CircularProgress
-from nextpy.frontend.components import CircularProgressLabel as CircularProgressLabel
-from nextpy.frontend.components import Circle as Circle
-from nextpy.frontend.components import Code as Code
-from nextpy.frontend.components import CodeBlock as CodeBlock
-from nextpy.frontend.components import Collapse as Collapse
-from nextpy.frontend.components import ColorModeButton as ColorModeButton
-from nextpy.frontend.components import ColorModeIcon as ColorModeIcon
-from nextpy.frontend.components import ColorModeSwitch as ColorModeSwitch
-from nextpy.frontend.components import Component as Component
-from nextpy.frontend.components import Cond as Cond
-from nextpy.frontend.components import ConnectionBanner as ConnectionBanner
-from nextpy.frontend.components import ConnectionModal as ConnectionModal
-from nextpy.frontend.components import Container as Container
-from nextpy.frontend.components import DataTable as DataTable
-from nextpy.frontend.components import DataEditor as DataEditor
-from nextpy.frontend.components import DataEditorTheme as DataEditorTheme
-from nextpy.frontend.components import DatePicker as DatePicker
-from nextpy.frontend.components import DateTimePicker as DateTimePicker
-from nextpy.frontend.components import DebounceInput as DebounceInput
-from nextpy.frontend.components import Divider as Divider
-from nextpy.frontend.components import Drawer as Drawer
-from nextpy.frontend.components import DrawerBody as DrawerBody
-from nextpy.frontend.components import DrawerCloseButton as DrawerCloseButton
-from nextpy.frontend.components import DrawerContent as DrawerContent
-from nextpy.frontend.components import DrawerFooter as DrawerFooter
-from nextpy.frontend.components import DrawerHeader as DrawerHeader
-from nextpy.frontend.components import DrawerOverlay as DrawerOverlay
-from nextpy.frontend.components import Editable as Editable
-from nextpy.frontend.components import EditableInput as EditableInput
-from nextpy.frontend.components import EditablePreview as EditablePreview
-from nextpy.frontend.components import EditableTextarea as EditableTextarea
-from nextpy.frontend.components import Editor as Editor
-from nextpy.frontend.components import Email as Email
-from nextpy.frontend.components import Fade as Fade
-from nextpy.frontend.components import Flex as Flex
-from nextpy.frontend.components import Foreach as Foreach
-from nextpy.frontend.components import Form as Form
-from nextpy.frontend.components import FormControl as FormControl
-from nextpy.frontend.components import FormErrorMessage as FormErrorMessage
-from nextpy.frontend.components import FormHelperText as FormHelperText
-from nextpy.frontend.components import FormLabel as FormLabel
-from nextpy.frontend.components import Fragment as Fragment
-from nextpy.frontend.components import Grid as Grid
-from nextpy.frontend.components import GridItem as GridItem
-from nextpy.frontend.components import Heading as Heading
-from nextpy.frontend.components import Highlight as Highlight
-from nextpy.frontend.components import Hstack as Hstack
-from nextpy.frontend.components import Html as Html
-from nextpy.frontend.components import Icon as Icon
-from nextpy.frontend.components import IconButton as IconButton
-from nextpy.frontend.components import Image as Image
-from nextpy.frontend.components import Input as Input
-from nextpy.frontend.components import InputGroup as InputGroup
-from nextpy.frontend.components import InputLeftAddon as InputLeftAddon
-from nextpy.frontend.components import InputLeftElement as InputLeftElement
-from nextpy.frontend.components import InputRightAddon as InputRightAddon
-from nextpy.frontend.components import InputRightElement as InputRightElement
-from nextpy.frontend.components import Kbd as Kbd
-from nextpy.frontend.components import Link as Link
-from nextpy.frontend.components import LinkBox as LinkBox
-from nextpy.frontend.components import LinkOverlay as LinkOverlay
-from nextpy.frontend.components import List as List
-from nextpy.frontend.components import ListItem as ListItem
-from nextpy.frontend.components import Markdown as Markdown
-from nextpy.frontend.components import Match as Match
-from nextpy.frontend.components import Menu as Menu
-from nextpy.frontend.components import MenuButton as MenuButton
-from nextpy.frontend.components import MenuDivider as MenuDivider
-from nextpy.frontend.components import MenuGroup as MenuGroup
-from nextpy.frontend.components import MenuItem as MenuItem
-from nextpy.frontend.components import MenuItemOption as MenuItemOption
-from nextpy.frontend.components import MenuList as MenuList
-from nextpy.frontend.components import MenuOptionGroup as MenuOptionGroup
-from nextpy.frontend.components import Modal as Modal
-from nextpy.frontend.components import ModalBody as ModalBody
-from nextpy.frontend.components import ModalCloseButton as ModalCloseButton
-from nextpy.frontend.components import ModalContent as ModalContent
-from nextpy.frontend.components import ModalFooter as ModalFooter
-from nextpy.frontend.components import ModalHeader as ModalHeader
-from nextpy.frontend.components import ModalOverlay as ModalOverlay
-from nextpy.frontend.components import Moment as Moment
-from nextpy.frontend.components import MultiSelect as MultiSelect
-from nextpy.frontend.components import MultiSelectOption as MultiSelectOption
-from nextpy.frontend.components import NextLink as NextLink
-from nextpy.frontend.components import NumberDecrementStepper as NumberDecrementStepper
-from nextpy.frontend.components import NumberIncrementStepper as NumberIncrementStepper
-from nextpy.frontend.components import NumberInput as NumberInput
-from nextpy.frontend.components import NumberInputField as NumberInputField
-from nextpy.frontend.components import NumberInputStepper as NumberInputStepper
-from nextpy.frontend.components import Option as Option
-from nextpy.frontend.components import OrderedList as OrderedList
-from nextpy.frontend.components import Password as Password
-from nextpy.frontend.components import PinInput as PinInput
-from nextpy.frontend.components import PinInputField as PinInputField
-from nextpy.frontend.components import Plotly as Plotly
-from nextpy.frontend.components import Popover as Popover
-from nextpy.frontend.components import PopoverAnchor as PopoverAnchor
-from nextpy.frontend.components import PopoverArrow as PopoverArrow
-from nextpy.frontend.components import PopoverBody as PopoverBody
-from nextpy.frontend.components import PopoverCloseButton as PopoverCloseButton
-from nextpy.frontend.components import PopoverContent as PopoverContent
-from nextpy.frontend.components import PopoverFooter as PopoverFooter
-from nextpy.frontend.components import PopoverHeader as PopoverHeader
-from nextpy.frontend.components import PopoverTrigger as PopoverTrigger
-from nextpy.frontend.components import Progress as Progress
-from nextpy.frontend.components import Radio as Radio
-from nextpy.frontend.components import RadioGroup as RadioGroup
-from nextpy.frontend.components import RangeSlider as RangeSlider
-from nextpy.frontend.components import RangeSliderFilledTrack as RangeSliderFilledTrack
-from nextpy.frontend.components import RangeSliderThumb as RangeSliderThumb
-from nextpy.frontend.components import RangeSliderTrack as RangeSliderTrack
-from nextpy.frontend.components import ResponsiveGrid as ResponsiveGrid
-from nextpy.frontend.components import ScaleFade as ScaleFade
-from nextpy.frontend.components import Script as Script
-from nextpy.frontend.components import Select as Select
-from nextpy.frontend.components import Skeleton as Skeleton
-from nextpy.frontend.components import SkeletonCircle as SkeletonCircle
-from nextpy.frontend.components import SkeletonText as SkeletonText
-from nextpy.frontend.components import Slide as Slide
-from nextpy.frontend.components import SlideFade as SlideFade
-from nextpy.frontend.components import Slider as Slider
-from nextpy.frontend.components import SliderFilledTrack as SliderFilledTrack
-from nextpy.frontend.components import SliderMark as SliderMark
-from nextpy.frontend.components import SliderThumb as SliderThumb
-from nextpy.frontend.components import SliderTrack as SliderTrack
-from nextpy.frontend.components import Spacer as Spacer
-from nextpy.frontend.components import Span as Span
-from nextpy.frontend.components import Spinner as Spinner
-from nextpy.frontend.components import Square as Square
-from nextpy.frontend.components import Stack as Stack
-from nextpy.frontend.components import Stat as Stat
-from nextpy.frontend.components import StatArrow as StatArrow
-from nextpy.frontend.components import StatGroup as StatGroup
-from nextpy.frontend.components import StatHelpText as StatHelpText
-from nextpy.frontend.components import StatLabel as StatLabel
-from nextpy.frontend.components import StatNumber as StatNumber
-from nextpy.frontend.components import Step as Step
-from nextpy.frontend.components import StepDescription as StepDescription
-from nextpy.frontend.components import StepIcon as StepIcon
-from nextpy.frontend.components import StepIndicator as StepIndicator
-from nextpy.frontend.components import StepNumber as StepNumber
-from nextpy.frontend.components import StepSeparator as StepSeparator
-from nextpy.frontend.components import StepStatus as StepStatus
-from nextpy.frontend.components import StepTitle as StepTitle
-from nextpy.frontend.components import Stepper as Stepper
-from nextpy.frontend.components import Switch as Switch
-from nextpy.frontend.components import Tab as Tab
-from nextpy.frontend.components import TabList as TabList
-from nextpy.frontend.components import TabPanel as TabPanel
-from nextpy.frontend.components import TabPanels as TabPanels
-from nextpy.frontend.components import Table as Table
-from nextpy.frontend.components import TableCaption as TableCaption
-from nextpy.frontend.components import TableContainer as TableContainer
-from nextpy.frontend.components import Tabs as Tabs
-from nextpy.frontend.components import Tag as Tag
-from nextpy.frontend.components import TagCloseButton as TagCloseButton
-from nextpy.frontend.components import TagLabel as TagLabel
-from nextpy.frontend.components import TagLeftIcon as TagLeftIcon
-from nextpy.frontend.components import TagRightIcon as TagRightIcon
-from nextpy.frontend.components import Tbody as Tbody
-from nextpy.frontend.components import Td as Td
-from nextpy.frontend.components import Text as Text
-from nextpy.frontend.components import TextArea as TextArea
-from nextpy.frontend.components import Tfoot as Tfoot
-from nextpy.frontend.components import Th as Th
-from nextpy.frontend.components import Thead as Thead
-from nextpy.frontend.components import Tooltip as Tooltip
-from nextpy.frontend.components import Tr as Tr
-from nextpy.frontend.components import UnorderedList as UnorderedList
-from nextpy.frontend.components import Upload as Upload
-from nextpy.frontend.components import Video as Video
-from nextpy.frontend.components import VisuallyHidden as VisuallyHidden
-from nextpy.frontend.components import Vstack as Vstack
-from nextpy.frontend.components import Wrap as Wrap
-from nextpy.frontend.components import WrapItem as WrapItem
-from nextpy.frontend.components import accordion as accordion
-from nextpy.frontend.components import accordion_button as accordion_button
-from nextpy.frontend.components import accordion_icon as accordion_icon
-from nextpy.frontend.components import accordion_item as accordion_item
-from nextpy.frontend.components import accordion_panel as accordion_panel
-from nextpy.frontend.components import alert as alert
-from nextpy.frontend.components import alert_description as alert_description
-from nextpy.frontend.components import alert_dialog as alert_dialog
-from nextpy.frontend.components import alert_dialog_body as alert_dialog_body
-from nextpy.frontend.components import alert_dialog_content as alert_dialog_content
-from nextpy.frontend.components import alert_dialog_footer as alert_dialog_footer
-from nextpy.frontend.components import alert_dialog_header as alert_dialog_header
-from nextpy.frontend.components import alert_dialog_overlay as alert_dialog_overlay
-from nextpy.frontend.components import alert_icon as alert_icon
-from nextpy.frontend.components import alert_title as alert_title
-from nextpy.frontend.components import aspect_ratio as aspect_ratio
-from nextpy.frontend.components import audio as audio
-from nextpy.frontend.components import avatar as avatar
-from nextpy.frontend.components import avatar_badge as avatar_badge
-from nextpy.frontend.components import avatar_group as avatar_group
-from nextpy.frontend.components import badge as badge
-from nextpy.frontend.components import box as box
-from nextpy.frontend.components import breadcrumb as breadcrumb
-from nextpy.frontend.components import breadcrumb_item as breadcrumb_item
-from nextpy.frontend.components import breadcrumb_link as breadcrumb_link
-from nextpy.frontend.components import breadcrumb_separator as breadcrumb_separator
-from nextpy.frontend.components import button as button
-from nextpy.frontend.components import button_group as button_group
-from nextpy.frontend.components import card as card
-from nextpy.frontend.components import card_body as card_body
-from nextpy.frontend.components import card_footer as card_footer
-from nextpy.frontend.components import card_header as card_header
-from nextpy.frontend.components import center as center
-from nextpy.frontend.components import checkbox as checkbox
-from nextpy.frontend.components import checkbox_group as checkbox_group
-from nextpy.frontend.components import circular_progress as circular_progress
-from nextpy.frontend.components import circular_progress_label as circular_progress_label
-from nextpy.frontend.components import circle as circle
-from nextpy.frontend.components import code as code
-from nextpy.frontend.components import code_block as code_block
-from nextpy.frontend.components import collapse as collapse
-from nextpy.frontend.components import color_mode_button as color_mode_button
-from nextpy.frontend.components import color_mode_icon as color_mode_icon
-from nextpy.frontend.components import color_mode_switch as color_mode_switch
-from nextpy.frontend.components import component as component
-from nextpy.frontend.components import cond as cond
-from nextpy.frontend.components import connection_banner as connection_banner
-from nextpy.frontend.components import connection_modal as connection_modal
-from nextpy.frontend.components import container as container
-from nextpy.frontend.components import data_table as data_table
-from nextpy.frontend.components import data_editor as data_editor
-from nextpy.frontend.components import data_editor_theme as data_editor_theme
-from nextpy.frontend.components import date_picker as date_picker
-from nextpy.frontend.components import date_time_picker as date_time_picker
-from nextpy.frontend.components import debounce_input as debounce_input
-from nextpy.frontend.components import divider as divider
-from nextpy.frontend.components import drawer as drawer
-from nextpy.frontend.components import drawer_body as drawer_body
-from nextpy.frontend.components import drawer_close_button as drawer_close_button
-from nextpy.frontend.components import drawer_content as drawer_content
-from nextpy.frontend.components import drawer_footer as drawer_footer
-from nextpy.frontend.components import drawer_header as drawer_header
-from nextpy.frontend.components import drawer_overlay as drawer_overlay
-from nextpy.frontend.components import editable as editable
-from nextpy.frontend.components import editable_input as editable_input
-from nextpy.frontend.components import editable_preview as editable_preview
-from nextpy.frontend.components import editable_textarea as editable_textarea
-from nextpy.frontend.components import editor as editor
-from nextpy.frontend.components import email as email
-from nextpy.frontend.components import fade as fade
-from nextpy.frontend.components import flex as flex
-from nextpy.frontend.components import foreach as foreach
-from nextpy.frontend.components import form as form
-from nextpy.frontend.components import form_control as form_control
-from nextpy.frontend.components import form_error_message as form_error_message
-from nextpy.frontend.components import form_helper_text as form_helper_text
-from nextpy.frontend.components import form_label as form_label
-from nextpy.frontend.components import fragment as fragment
-from nextpy.frontend.components import grid as grid
-from nextpy.frontend.components import grid_item as grid_item
-from nextpy.frontend.components import heading as heading
-from nextpy.frontend.components import highlight as highlight
-from nextpy.frontend.components import hstack as hstack
-from nextpy.frontend.components import html as html
-from nextpy.frontend.components import icon as icon
-from nextpy.frontend.components import icon_button as icon_button
-from nextpy.frontend.components import image as image
-from nextpy.frontend.components import input as input
-from nextpy.frontend.components import input_group as input_group
-from nextpy.frontend.components import input_left_addon as input_left_addon
-from nextpy.frontend.components import input_left_element as input_left_element
-from nextpy.frontend.components import input_right_addon as input_right_addon
-from nextpy.frontend.components import input_right_element as input_right_element
-from nextpy.frontend.components import kbd as kbd
-from nextpy.frontend.components import link as link
-from nextpy.frontend.components import link_box as link_box
-from nextpy.frontend.components import link_overlay as link_overlay
-from nextpy.frontend.components import list as list
-from nextpy.frontend.components import list_item as list_item
-from nextpy.frontend.components import markdown as markdown
-from nextpy.frontend.components import match as match
-from nextpy.frontend.components import menu as menu
-from nextpy.frontend.components import menu_button as menu_button
-from nextpy.frontend.components import menu_divider as menu_divider
-from nextpy.frontend.components import menu_group as menu_group
-from nextpy.frontend.components import menu_item as menu_item
-from nextpy.frontend.components import menu_item_option as menu_item_option
-from nextpy.frontend.components import menu_list as menu_list
-from nextpy.frontend.components import menu_option_group as menu_option_group
-from nextpy.frontend.components import modal as modal
-from nextpy.frontend.components import modal_body as modal_body
-from nextpy.frontend.components import modal_close_button as modal_close_button
-from nextpy.frontend.components import modal_content as modal_content
-from nextpy.frontend.components import modal_footer as modal_footer
-from nextpy.frontend.components import modal_header as modal_header
-from nextpy.frontend.components import modal_overlay as modal_overlay
-from nextpy.frontend.components import moment as moment
-from nextpy.frontend.components import multi_select as multi_select
-from nextpy.frontend.components import multi_select_option as multi_select_option
-from nextpy.frontend.components import next_link as next_link
-from nextpy.frontend.components import number_decrement_stepper as number_decrement_stepper
-from nextpy.frontend.components import number_increment_stepper as number_increment_stepper
-from nextpy.frontend.components import number_input as number_input
-from nextpy.frontend.components import number_input_field as number_input_field
-from nextpy.frontend.components import number_input_stepper as number_input_stepper
-from nextpy.frontend.components import option as option
-from nextpy.frontend.components import ordered_list as ordered_list
-from nextpy.frontend.components import password as password
-from nextpy.frontend.components import pin_input as pin_input
-from nextpy.frontend.components import pin_input_field as pin_input_field
-from nextpy.frontend.components import plotly as plotly
-from nextpy.frontend.components import popover as popover
-from nextpy.frontend.components import popover_anchor as popover_anchor
-from nextpy.frontend.components import popover_arrow as popover_arrow
-from nextpy.frontend.components import popover_body as popover_body
-from nextpy.frontend.components import popover_close_button as popover_close_button
-from nextpy.frontend.components import popover_content as popover_content
-from nextpy.frontend.components import popover_footer as popover_footer
-from nextpy.frontend.components import popover_header as popover_header
-from nextpy.frontend.components import popover_trigger as popover_trigger
-from nextpy.frontend.components import progress as progress
-from nextpy.frontend.components import radio as radio
-from nextpy.frontend.components import radio_group as radio_group
-from nextpy.frontend.components import range_slider as range_slider
-from nextpy.frontend.components import range_slider_filled_track as range_slider_filled_track
-from nextpy.frontend.components import range_slider_thumb as range_slider_thumb
-from nextpy.frontend.components import range_slider_track as range_slider_track
-from nextpy.frontend.components import responsive_grid as responsive_grid
-from nextpy.frontend.components import scale_fade as scale_fade
-from nextpy.frontend.components import script as script
-from nextpy.frontend.components import select as select
-from nextpy.frontend.components import skeleton as skeleton
-from nextpy.frontend.components import skeleton_circle as skeleton_circle
-from nextpy.frontend.components import skeleton_text as skeleton_text
-from nextpy.frontend.components import slide as slide
-from nextpy.frontend.components import slide_fade as slide_fade
-from nextpy.frontend.components import slider as slider
-from nextpy.frontend.components import slider_filled_track as slider_filled_track
-from nextpy.frontend.components import slider_mark as slider_mark
-from nextpy.frontend.components import slider_thumb as slider_thumb
-from nextpy.frontend.components import slider_track as slider_track
-from nextpy.frontend.components import spacer as spacer
-from nextpy.frontend.components import span as span
-from nextpy.frontend.components import spinner as spinner
-from nextpy.frontend.components import square as square
-from nextpy.frontend.components import stack as stack
-from nextpy.frontend.components import stat as stat
-from nextpy.frontend.components import stat_arrow as stat_arrow
-from nextpy.frontend.components import stat_group as stat_group
-from nextpy.frontend.components import stat_help_text as stat_help_text
-from nextpy.frontend.components import stat_label as stat_label
-from nextpy.frontend.components import stat_number as stat_number
-from nextpy.frontend.components import step as step
-from nextpy.frontend.components import step_description as step_description
-from nextpy.frontend.components import step_icon as step_icon
-from nextpy.frontend.components import step_indicator as step_indicator
-from nextpy.frontend.components import step_number as step_number
-from nextpy.frontend.components import step_separator as step_separator
-from nextpy.frontend.components import step_status as step_status
-from nextpy.frontend.components import step_title as step_title
-from nextpy.frontend.components import stepper as stepper
-from nextpy.frontend.components import switch as switch
-from nextpy.frontend.components import tab as tab
-from nextpy.frontend.components import tab_list as tab_list
-from nextpy.frontend.components import tab_panel as tab_panel
-from nextpy.frontend.components import tab_panels as tab_panels
-from nextpy.frontend.components import table as table
-from nextpy.frontend.components import table_caption as table_caption
-from nextpy.frontend.components import table_container as table_container
-from nextpy.frontend.components import tabs as tabs
-from nextpy.frontend.components import tag as tag
-from nextpy.frontend.components import tag_close_button as tag_close_button
-from nextpy.frontend.components import tag_label as tag_label
-from nextpy.frontend.components import tag_left_icon as tag_left_icon
-from nextpy.frontend.components import tag_right_icon as tag_right_icon
-from nextpy.frontend.components import tbody as tbody
-from nextpy.frontend.components import td as td
-from nextpy.frontend.components import text as text
-from nextpy.frontend.components import text_area as text_area
-from nextpy.frontend.components import tfoot as tfoot
-from nextpy.frontend.components import th as th
-from nextpy.frontend.components import thead as thead
-from nextpy.frontend.components import tooltip as tooltip
-from nextpy.frontend.components import tr as tr
-from nextpy.frontend.components import unordered_list as unordered_list
-from nextpy.frontend.components import upload as upload
-from nextpy.frontend.components import video as video
-from nextpy.frontend.components import visually_hidden as visually_hidden
-from nextpy.frontend.components import vstack as vstack
-from nextpy.frontend.components import wrap as wrap
-from nextpy.frontend.components import wrap_item as wrap_item
-from nextpy.frontend.components import cancel_upload as cancel_upload
-from nextpy.frontend import components as components
-from nextpy.frontend.components import color_mode_cond as color_mode_cond
-from nextpy.frontend.components import desktop_only as desktop_only
-from nextpy.frontend.components import mobile_only as mobile_only
-from nextpy.frontend.components import tablet_only as tablet_only
-from nextpy.frontend.components import mobile_and_tablet as mobile_and_tablet
-from nextpy.frontend.components import tablet_and_desktop as tablet_and_desktop
-from nextpy.frontend.components import selected_files as selected_files
-from nextpy.frontend.components import clear_selected_files as clear_selected_files
-from nextpy.frontend.components import EditorButtonList as EditorButtonList
-from nextpy.frontend.components import EditorOptions as EditorOptions
-from nextpy.frontend.components import NoSSRComponent as NoSSRComponent
-from nextpy.frontend.components import chakra as chakra
-from nextpy.frontend.components import next as next
-from nextpy.frontend.components.component import memo as memo
-from nextpy.frontend.components import recharts as recharts
-from nextpy.frontend.components.moment.moment import MomentDelta as MomentDelta
+from nextpy.interfaces.web.components import Accordion as Accordion
+from nextpy.interfaces.web.components import AccordionButton as AccordionButton
+from nextpy.interfaces.web.components import AccordionIcon as AccordionIcon
+from nextpy.interfaces.web.components import AccordionItem as AccordionItem
+from nextpy.interfaces.web.components import AccordionPanel as AccordionPanel
+from nextpy.interfaces.web.components import Alert as Alert
+from nextpy.interfaces.web.components import AlertDescription as AlertDescription
+from nextpy.interfaces.web.components import AlertDialog as AlertDialog
+from nextpy.interfaces.web.components import AlertDialogBody as AlertDialogBody
+from nextpy.interfaces.web.components import AlertDialogContent as AlertDialogContent
+from nextpy.interfaces.web.components import AlertDialogFooter as AlertDialogFooter
+from nextpy.interfaces.web.components import AlertDialogHeader as AlertDialogHeader
+from nextpy.interfaces.web.components import AlertDialogOverlay as AlertDialogOverlay
+from nextpy.interfaces.web.components import AlertIcon as AlertIcon
+from nextpy.interfaces.web.components import AlertTitle as AlertTitle
+from nextpy.interfaces.web.components import AspectRatio as AspectRatio
+from nextpy.interfaces.web.components import Audio as Audio
+from nextpy.interfaces.web.components import Avatar as Avatar
+from nextpy.interfaces.web.components import AvatarBadge as AvatarBadge
+from nextpy.interfaces.web.components import AvatarGroup as AvatarGroup
+from nextpy.interfaces.web.components import Badge as Badge
+from nextpy.interfaces.web.components import Box as Box
+from nextpy.interfaces.web.components import Breadcrumb as Breadcrumb
+from nextpy.interfaces.web.components import BreadcrumbItem as BreadcrumbItem
+from nextpy.interfaces.web.components import BreadcrumbLink as BreadcrumbLink
+from nextpy.interfaces.web.components import BreadcrumbSeparator as BreadcrumbSeparator
+from nextpy.interfaces.web.components import Button as Button
+from nextpy.interfaces.web.components import ButtonGroup as ButtonGroup
+from nextpy.interfaces.web.components import Card as Card
+from nextpy.interfaces.web.components import CardBody as CardBody
+from nextpy.interfaces.web.components import CardFooter as CardFooter
+from nextpy.interfaces.web.components import CardHeader as CardHeader
+from nextpy.interfaces.web.components import Center as Center
+from nextpy.interfaces.web.components import Checkbox as Checkbox
+from nextpy.interfaces.web.components import CheckboxGroup as CheckboxGroup
+from nextpy.interfaces.web.components import CircularProgress as CircularProgress
+from nextpy.interfaces.web.components import CircularProgressLabel as CircularProgressLabel
+from nextpy.interfaces.web.components import Circle as Circle
+from nextpy.interfaces.web.components import Code as Code
+from nextpy.interfaces.web.components import CodeBlock as CodeBlock
+from nextpy.interfaces.web.components import Collapse as Collapse
+from nextpy.interfaces.web.components import ColorModeButton as ColorModeButton
+from nextpy.interfaces.web.components import ColorModeIcon as ColorModeIcon
+from nextpy.interfaces.web.components import ColorModeSwitch as ColorModeSwitch
+from nextpy.interfaces.web.components import Component as Component
+from nextpy.interfaces.web.components import Cond as Cond
+from nextpy.interfaces.web.components import ConnectionBanner as ConnectionBanner
+from nextpy.interfaces.web.components import ConnectionModal as ConnectionModal
+from nextpy.interfaces.web.components import Container as Container
+from nextpy.interfaces.web.components import DataTable as DataTable
+from nextpy.interfaces.web.components import DataEditor as DataEditor
+from nextpy.interfaces.web.components import DataEditorTheme as DataEditorTheme
+from nextpy.interfaces.web.components import DatePicker as DatePicker
+from nextpy.interfaces.web.components import DateTimePicker as DateTimePicker
+from nextpy.interfaces.web.components import DebounceInput as DebounceInput
+from nextpy.interfaces.web.components import Divider as Divider
+from nextpy.interfaces.web.components import Drawer as Drawer
+from nextpy.interfaces.web.components import DrawerBody as DrawerBody
+from nextpy.interfaces.web.components import DrawerCloseButton as DrawerCloseButton
+from nextpy.interfaces.web.components import DrawerContent as DrawerContent
+from nextpy.interfaces.web.components import DrawerFooter as DrawerFooter
+from nextpy.interfaces.web.components import DrawerHeader as DrawerHeader
+from nextpy.interfaces.web.components import DrawerOverlay as DrawerOverlay
+from nextpy.interfaces.web.components import Editable as Editable
+from nextpy.interfaces.web.components import EditableInput as EditableInput
+from nextpy.interfaces.web.components import EditablePreview as EditablePreview
+from nextpy.interfaces.web.components import EditableTextarea as EditableTextarea
+from nextpy.interfaces.web.components import Editor as Editor
+from nextpy.interfaces.web.components import Email as Email
+from nextpy.interfaces.web.components import Fade as Fade
+from nextpy.interfaces.web.components import Flex as Flex
+from nextpy.interfaces.web.components import Foreach as Foreach
+from nextpy.interfaces.web.components import Form as Form
+from nextpy.interfaces.web.components import FormControl as FormControl
+from nextpy.interfaces.web.components import FormErrorMessage as FormErrorMessage
+from nextpy.interfaces.web.components import FormHelperText as FormHelperText
+from nextpy.interfaces.web.components import FormLabel as FormLabel
+from nextpy.interfaces.web.components import Fragment as Fragment
+from nextpy.interfaces.web.components import Grid as Grid
+from nextpy.interfaces.web.components import GridItem as GridItem
+from nextpy.interfaces.web.components import Heading as Heading
+from nextpy.interfaces.web.components import Highlight as Highlight
+from nextpy.interfaces.web.components import Hstack as Hstack
+from nextpy.interfaces.web.components import Html as Html
+from nextpy.interfaces.web.components import Icon as Icon
+from nextpy.interfaces.web.components import IconButton as IconButton
+from nextpy.interfaces.web.components import Image as Image
+from nextpy.interfaces.web.components import Input as Input
+from nextpy.interfaces.web.components import InputGroup as InputGroup
+from nextpy.interfaces.web.components import InputLeftAddon as InputLeftAddon
+from nextpy.interfaces.web.components import InputLeftElement as InputLeftElement
+from nextpy.interfaces.web.components import InputRightAddon as InputRightAddon
+from nextpy.interfaces.web.components import InputRightElement as InputRightElement
+from nextpy.interfaces.web.components import Kbd as Kbd
+from nextpy.interfaces.web.components import Link as Link
+from nextpy.interfaces.web.components import LinkBox as LinkBox
+from nextpy.interfaces.web.components import LinkOverlay as LinkOverlay
+from nextpy.interfaces.web.components import List as List
+from nextpy.interfaces.web.components import ListItem as ListItem
+from nextpy.interfaces.web.components import Markdown as Markdown
+from nextpy.interfaces.web.components import Match as Match
+from nextpy.interfaces.web.components import Menu as Menu
+from nextpy.interfaces.web.components import MenuButton as MenuButton
+from nextpy.interfaces.web.components import MenuDivider as MenuDivider
+from nextpy.interfaces.web.components import MenuGroup as MenuGroup
+from nextpy.interfaces.web.components import MenuItem as MenuItem
+from nextpy.interfaces.web.components import MenuItemOption as MenuItemOption
+from nextpy.interfaces.web.components import MenuList as MenuList
+from nextpy.interfaces.web.components import MenuOptionGroup as MenuOptionGroup
+from nextpy.interfaces.web.components import Modal as Modal
+from nextpy.interfaces.web.components import ModalBody as ModalBody
+from nextpy.interfaces.web.components import ModalCloseButton as ModalCloseButton
+from nextpy.interfaces.web.components import ModalContent as ModalContent
+from nextpy.interfaces.web.components import ModalFooter as ModalFooter
+from nextpy.interfaces.web.components import ModalHeader as ModalHeader
+from nextpy.interfaces.web.components import ModalOverlay as ModalOverlay
+from nextpy.interfaces.web.components import Moment as Moment
+from nextpy.interfaces.web.components import MultiSelect as MultiSelect
+from nextpy.interfaces.web.components import MultiSelectOption as MultiSelectOption
+from nextpy.interfaces.web.components import NextLink as NextLink
+from nextpy.interfaces.web.components import NumberDecrementStepper as NumberDecrementStepper
+from nextpy.interfaces.web.components import NumberIncrementStepper as NumberIncrementStepper
+from nextpy.interfaces.web.components import NumberInput as NumberInput
+from nextpy.interfaces.web.components import NumberInputField as NumberInputField
+from nextpy.interfaces.web.components import NumberInputStepper as NumberInputStepper
+from nextpy.interfaces.web.components import Option as Option
+from nextpy.interfaces.web.components import OrderedList as OrderedList
+from nextpy.interfaces.web.components import Password as Password
+from nextpy.interfaces.web.components import PinInput as PinInput
+from nextpy.interfaces.web.components import PinInputField as PinInputField
+from nextpy.interfaces.web.components import Plotly as Plotly
+from nextpy.interfaces.web.components import Popover as Popover
+from nextpy.interfaces.web.components import PopoverAnchor as PopoverAnchor
+from nextpy.interfaces.web.components import PopoverArrow as PopoverArrow
+from nextpy.interfaces.web.components import PopoverBody as PopoverBody
+from nextpy.interfaces.web.components import PopoverCloseButton as PopoverCloseButton
+from nextpy.interfaces.web.components import PopoverContent as PopoverContent
+from nextpy.interfaces.web.components import PopoverFooter as PopoverFooter
+from nextpy.interfaces.web.components import PopoverHeader as PopoverHeader
+from nextpy.interfaces.web.components import PopoverTrigger as PopoverTrigger
+from nextpy.interfaces.web.components import Progress as Progress
+from nextpy.interfaces.web.components import Radio as Radio
+from nextpy.interfaces.web.components import RadioGroup as RadioGroup
+from nextpy.interfaces.web.components import RangeSlider as RangeSlider
+from nextpy.interfaces.web.components import RangeSliderFilledTrack as RangeSliderFilledTrack
+from nextpy.interfaces.web.components import RangeSliderThumb as RangeSliderThumb
+from nextpy.interfaces.web.components import RangeSliderTrack as RangeSliderTrack
+from nextpy.interfaces.web.components import ResponsiveGrid as ResponsiveGrid
+from nextpy.interfaces.web.components import ScaleFade as ScaleFade
+from nextpy.interfaces.web.components import Script as Script
+from nextpy.interfaces.web.components import Select as Select
+from nextpy.interfaces.web.components import Skeleton as Skeleton
+from nextpy.interfaces.web.components import SkeletonCircle as SkeletonCircle
+from nextpy.interfaces.web.components import SkeletonText as SkeletonText
+from nextpy.interfaces.web.components import Slide as Slide
+from nextpy.interfaces.web.components import SlideFade as SlideFade
+from nextpy.interfaces.web.components import Slider as Slider
+from nextpy.interfaces.web.components import SliderFilledTrack as SliderFilledTrack
+from nextpy.interfaces.web.components import SliderMark as SliderMark
+from nextpy.interfaces.web.components import SliderThumb as SliderThumb
+from nextpy.interfaces.web.components import SliderTrack as SliderTrack
+from nextpy.interfaces.web.components import Spacer as Spacer
+from nextpy.interfaces.web.components import Span as Span
+from nextpy.interfaces.web.components import Spinner as Spinner
+from nextpy.interfaces.web.components import Square as Square
+from nextpy.interfaces.web.components import Stack as Stack
+from nextpy.interfaces.web.components import Stat as Stat
+from nextpy.interfaces.web.components import StatArrow as StatArrow
+from nextpy.interfaces.web.components import StatGroup as StatGroup
+from nextpy.interfaces.web.components import StatHelpText as StatHelpText
+from nextpy.interfaces.web.components import StatLabel as StatLabel
+from nextpy.interfaces.web.components import StatNumber as StatNumber
+from nextpy.interfaces.web.components import Step as Step
+from nextpy.interfaces.web.components import StepDescription as StepDescription
+from nextpy.interfaces.web.components import StepIcon as StepIcon
+from nextpy.interfaces.web.components import StepIndicator as StepIndicator
+from nextpy.interfaces.web.components import StepNumber as StepNumber
+from nextpy.interfaces.web.components import StepSeparator as StepSeparator
+from nextpy.interfaces.web.components import StepStatus as StepStatus
+from nextpy.interfaces.web.components import StepTitle as StepTitle
+from nextpy.interfaces.web.components import Stepper as Stepper
+from nextpy.interfaces.web.components import Switch as Switch
+from nextpy.interfaces.web.components import Tab as Tab
+from nextpy.interfaces.web.components import TabList as TabList
+from nextpy.interfaces.web.components import TabPanel as TabPanel
+from nextpy.interfaces.web.components import TabPanels as TabPanels
+from nextpy.interfaces.web.components import Table as Table
+from nextpy.interfaces.web.components import TableCaption as TableCaption
+from nextpy.interfaces.web.components import TableContainer as TableContainer
+from nextpy.interfaces.web.components import Tabs as Tabs
+from nextpy.interfaces.web.components import Tag as Tag
+from nextpy.interfaces.web.components import TagCloseButton as TagCloseButton
+from nextpy.interfaces.web.components import TagLabel as TagLabel
+from nextpy.interfaces.web.components import TagLeftIcon as TagLeftIcon
+from nextpy.interfaces.web.components import TagRightIcon as TagRightIcon
+from nextpy.interfaces.web.components import Tbody as Tbody
+from nextpy.interfaces.web.components import Td as Td
+from nextpy.interfaces.web.components import Text as Text
+from nextpy.interfaces.web.components import TextArea as TextArea
+from nextpy.interfaces.web.components import Tfoot as Tfoot
+from nextpy.interfaces.web.components import Th as Th
+from nextpy.interfaces.web.components import Thead as Thead
+from nextpy.interfaces.web.components import Tooltip as Tooltip
+from nextpy.interfaces.web.components import Tr as Tr
+from nextpy.interfaces.web.components import UnorderedList as UnorderedList
+from nextpy.interfaces.web.components import Upload as Upload
+from nextpy.interfaces.web.components import Video as Video
+from nextpy.interfaces.web.components import VisuallyHidden as VisuallyHidden
+from nextpy.interfaces.web.components import Vstack as Vstack
+from nextpy.interfaces.web.components import Wrap as Wrap
+from nextpy.interfaces.web.components import WrapItem as WrapItem
+from nextpy.interfaces.web.components import accordion as accordion
+from nextpy.interfaces.web.components import accordion_button as accordion_button
+from nextpy.interfaces.web.components import accordion_icon as accordion_icon
+from nextpy.interfaces.web.components import accordion_item as accordion_item
+from nextpy.interfaces.web.components import accordion_panel as accordion_panel
+from nextpy.interfaces.web.components import alert as alert
+from nextpy.interfaces.web.components import alert_description as alert_description
+from nextpy.interfaces.web.components import alert_dialog as alert_dialog
+from nextpy.interfaces.web.components import alert_dialog_body as alert_dialog_body
+from nextpy.interfaces.web.components import alert_dialog_content as alert_dialog_content
+from nextpy.interfaces.web.components import alert_dialog_footer as alert_dialog_footer
+from nextpy.interfaces.web.components import alert_dialog_header as alert_dialog_header
+from nextpy.interfaces.web.components import alert_dialog_overlay as alert_dialog_overlay
+from nextpy.interfaces.web.components import alert_icon as alert_icon
+from nextpy.interfaces.web.components import alert_title as alert_title
+from nextpy.interfaces.web.components import aspect_ratio as aspect_ratio
+from nextpy.interfaces.web.components import audio as audio
+from nextpy.interfaces.web.components import avatar as avatar
+from nextpy.interfaces.web.components import avatar_badge as avatar_badge
+from nextpy.interfaces.web.components import avatar_group as avatar_group
+from nextpy.interfaces.web.components import badge as badge
+from nextpy.interfaces.web.components import box as box
+from nextpy.interfaces.web.components import breadcrumb as breadcrumb
+from nextpy.interfaces.web.components import breadcrumb_item as breadcrumb_item
+from nextpy.interfaces.web.components import breadcrumb_link as breadcrumb_link
+from nextpy.interfaces.web.components import breadcrumb_separator as breadcrumb_separator
+from nextpy.interfaces.web.components import button as button
+from nextpy.interfaces.web.components import button_group as button_group
+from nextpy.interfaces.web.components import card as card
+from nextpy.interfaces.web.components import card_body as card_body
+from nextpy.interfaces.web.components import card_footer as card_footer
+from nextpy.interfaces.web.components import card_header as card_header
+from nextpy.interfaces.web.components import center as center
+from nextpy.interfaces.web.components import checkbox as checkbox
+from nextpy.interfaces.web.components import checkbox_group as checkbox_group
+from nextpy.interfaces.web.components import circular_progress as circular_progress
+from nextpy.interfaces.web.components import (
+ circular_progress_label as circular_progress_label,
+)
+from nextpy.interfaces.web.components import circle as circle
+from nextpy.interfaces.web.components import code as code
+from nextpy.interfaces.web.components import code_block as code_block
+from nextpy.interfaces.web.components import collapse as collapse
+from nextpy.interfaces.web.components import color_mode_button as color_mode_button
+from nextpy.interfaces.web.components import color_mode_icon as color_mode_icon
+from nextpy.interfaces.web.components import color_mode_switch as color_mode_switch
+from nextpy.interfaces.web.components import component as component
+from nextpy.interfaces.web.components import cond as cond
+from nextpy.interfaces.web.components import connection_banner as connection_banner
+from nextpy.interfaces.web.components import connection_modal as connection_modal
+from nextpy.interfaces.web.components import container as container
+from nextpy.interfaces.web.components import data_table as data_table
+from nextpy.interfaces.web.components import data_editor as data_editor
+from nextpy.interfaces.web.components import data_editor_theme as data_editor_theme
+from nextpy.interfaces.web.components import date_picker as date_picker
+from nextpy.interfaces.web.components import date_time_picker as date_time_picker
+from nextpy.interfaces.web.components import debounce_input as debounce_input
+from nextpy.interfaces.web.components import divider as divider
+from nextpy.interfaces.web.components import drawer as drawer
+from nextpy.interfaces.web.components import drawer_body as drawer_body
+from nextpy.interfaces.web.components import drawer_close_button as drawer_close_button
+from nextpy.interfaces.web.components import drawer_content as drawer_content
+from nextpy.interfaces.web.components import drawer_footer as drawer_footer
+from nextpy.interfaces.web.components import drawer_header as drawer_header
+from nextpy.interfaces.web.components import drawer_overlay as drawer_overlay
+from nextpy.interfaces.web.components import editable as editable
+from nextpy.interfaces.web.components import editable_input as editable_input
+from nextpy.interfaces.web.components import editable_preview as editable_preview
+from nextpy.interfaces.web.components import editable_textarea as editable_textarea
+from nextpy.interfaces.web.components import editor as editor
+from nextpy.interfaces.web.components import email as email
+from nextpy.interfaces.web.components import fade as fade
+from nextpy.interfaces.web.components import flex as flex
+from nextpy.interfaces.web.components import foreach as foreach
+from nextpy.interfaces.web.components import form as form
+from nextpy.interfaces.web.components import form_control as form_control
+from nextpy.interfaces.web.components import form_error_message as form_error_message
+from nextpy.interfaces.web.components import form_helper_text as form_helper_text
+from nextpy.interfaces.web.components import form_label as form_label
+from nextpy.interfaces.web.components import fragment as fragment
+from nextpy.interfaces.web.components import grid as grid
+from nextpy.interfaces.web.components import grid_item as grid_item
+from nextpy.interfaces.web.components import heading as heading
+from nextpy.interfaces.web.components import highlight as highlight
+from nextpy.interfaces.web.components import hstack as hstack
+from nextpy.interfaces.web.components import html as html
+from nextpy.interfaces.web.components import icon as icon
+from nextpy.interfaces.web.components import icon_button as icon_button
+from nextpy.interfaces.web.components import image as image
+from nextpy.interfaces.web.components import input as input
+from nextpy.interfaces.web.components import input_group as input_group
+from nextpy.interfaces.web.components import input_left_addon as input_left_addon
+from nextpy.interfaces.web.components import input_left_element as input_left_element
+from nextpy.interfaces.web.components import input_right_addon as input_right_addon
+from nextpy.interfaces.web.components import input_right_element as input_right_element
+from nextpy.interfaces.web.components import kbd as kbd
+from nextpy.interfaces.web.components import link as link
+from nextpy.interfaces.web.components import link_box as link_box
+from nextpy.interfaces.web.components import link_overlay as link_overlay
+from nextpy.interfaces.web.components import list as list
+from nextpy.interfaces.web.components import list_item as list_item
+from nextpy.interfaces.web.components import markdown as markdown
+from nextpy.interfaces.web.components import match as match
+from nextpy.interfaces.web.components import menu as menu
+from nextpy.interfaces.web.components import menu_button as menu_button
+from nextpy.interfaces.web.components import menu_divider as menu_divider
+from nextpy.interfaces.web.components import menu_group as menu_group
+from nextpy.interfaces.web.components import menu_item as menu_item
+from nextpy.interfaces.web.components import menu_item_option as menu_item_option
+from nextpy.interfaces.web.components import menu_list as menu_list
+from nextpy.interfaces.web.components import menu_option_group as menu_option_group
+from nextpy.interfaces.web.components import modal as modal
+from nextpy.interfaces.web.components import modal_body as modal_body
+from nextpy.interfaces.web.components import modal_close_button as modal_close_button
+from nextpy.interfaces.web.components import modal_content as modal_content
+from nextpy.interfaces.web.components import modal_footer as modal_footer
+from nextpy.interfaces.web.components import modal_header as modal_header
+from nextpy.interfaces.web.components import modal_overlay as modal_overlay
+from nextpy.interfaces.web.components import moment as moment
+from nextpy.interfaces.web.components import multi_select as multi_select
+from nextpy.interfaces.web.components import multi_select_option as multi_select_option
+from nextpy.interfaces.web.components import next_link as next_link
+from nextpy.interfaces.web.components import (
+ number_decrement_stepper as number_decrement_stepper,
+)
+from nextpy.interfaces.web.components import (
+ number_increment_stepper as number_increment_stepper,
+)
+from nextpy.interfaces.web.components import number_input as number_input
+from nextpy.interfaces.web.components import number_input_field as number_input_field
+from nextpy.interfaces.web.components import number_input_stepper as number_input_stepper
+from nextpy.interfaces.web.components import option as option
+from nextpy.interfaces.web.components import ordered_list as ordered_list
+from nextpy.interfaces.web.components import password as password
+from nextpy.interfaces.web.components import pin_input as pin_input
+from nextpy.interfaces.web.components import pin_input_field as pin_input_field
+from nextpy.interfaces.web.components import plotly as plotly
+from nextpy.interfaces.web.components import popover as popover
+from nextpy.interfaces.web.components import popover_anchor as popover_anchor
+from nextpy.interfaces.web.components import popover_arrow as popover_arrow
+from nextpy.interfaces.web.components import popover_body as popover_body
+from nextpy.interfaces.web.components import popover_close_button as popover_close_button
+from nextpy.interfaces.web.components import popover_content as popover_content
+from nextpy.interfaces.web.components import popover_footer as popover_footer
+from nextpy.interfaces.web.components import popover_header as popover_header
+from nextpy.interfaces.web.components import popover_trigger as popover_trigger
+from nextpy.interfaces.web.components import progress as progress
+from nextpy.interfaces.web.components import radio as radio
+from nextpy.interfaces.web.components import radio_group as radio_group
+from nextpy.interfaces.web.components import range_slider as range_slider
+from nextpy.interfaces.web.components import (
+ range_slider_filled_track as range_slider_filled_track,
+)
+from nextpy.interfaces.web.components import range_slider_thumb as range_slider_thumb
+from nextpy.interfaces.web.components import range_slider_track as range_slider_track
+from nextpy.interfaces.web.components import responsive_grid as responsive_grid
+from nextpy.interfaces.web.components import scale_fade as scale_fade
+from nextpy.interfaces.web.components import script as script
+from nextpy.interfaces.web.components import select as select
+from nextpy.interfaces.web.components import skeleton as skeleton
+from nextpy.interfaces.web.components import skeleton_circle as skeleton_circle
+from nextpy.interfaces.web.components import skeleton_text as skeleton_text
+from nextpy.interfaces.web.components import slide as slide
+from nextpy.interfaces.web.components import slide_fade as slide_fade
+from nextpy.interfaces.web.components import slider as slider
+from nextpy.interfaces.web.components import slider_filled_track as slider_filled_track
+from nextpy.interfaces.web.components import slider_mark as slider_mark
+from nextpy.interfaces.web.components import slider_thumb as slider_thumb
+from nextpy.interfaces.web.components import slider_track as slider_track
+from nextpy.interfaces.web.components import spacer as spacer
+from nextpy.interfaces.web.components import span as span
+from nextpy.interfaces.web.components import spinner as spinner
+from nextpy.interfaces.web.components import square as square
+from nextpy.interfaces.web.components import stack as stack
+from nextpy.interfaces.web.components import stat as stat
+from nextpy.interfaces.web.components import stat_arrow as stat_arrow
+from nextpy.interfaces.web.components import stat_group as stat_group
+from nextpy.interfaces.web.components import stat_help_text as stat_help_text
+from nextpy.interfaces.web.components import stat_label as stat_label
+from nextpy.interfaces.web.components import stat_number as stat_number
+from nextpy.interfaces.web.components import step as step
+from nextpy.interfaces.web.components import step_description as step_description
+from nextpy.interfaces.web.components import step_icon as step_icon
+from nextpy.interfaces.web.components import step_indicator as step_indicator
+from nextpy.interfaces.web.components import step_number as step_number
+from nextpy.interfaces.web.components import step_separator as step_separator
+from nextpy.interfaces.web.components import step_status as step_status
+from nextpy.interfaces.web.components import step_title as step_title
+from nextpy.interfaces.web.components import stepper as stepper
+from nextpy.interfaces.web.components import switch as switch
+from nextpy.interfaces.web.components import tab as tab
+from nextpy.interfaces.web.components import tab_list as tab_list
+from nextpy.interfaces.web.components import tab_panel as tab_panel
+from nextpy.interfaces.web.components import tab_panels as tab_panels
+from nextpy.interfaces.web.components import table as table
+from nextpy.interfaces.web.components import table_caption as table_caption
+from nextpy.interfaces.web.components import table_container as table_container
+from nextpy.interfaces.web.components import tabs as tabs
+from nextpy.interfaces.web.components import tag as tag
+from nextpy.interfaces.web.components import tag_close_button as tag_close_button
+from nextpy.interfaces.web.components import tag_label as tag_label
+from nextpy.interfaces.web.components import tag_left_icon as tag_left_icon
+from nextpy.interfaces.web.components import tag_right_icon as tag_right_icon
+from nextpy.interfaces.web.components import tbody as tbody
+from nextpy.interfaces.web.components import td as td
+from nextpy.interfaces.web.components import text as text
+from nextpy.interfaces.web.components import text_area as text_area
+from nextpy.interfaces.web.components import tfoot as tfoot
+from nextpy.interfaces.web.components import th as th
+from nextpy.interfaces.web.components import thead as thead
+from nextpy.interfaces.web.components import tooltip as tooltip
+from nextpy.interfaces.web.components import tr as tr
+from nextpy.interfaces.web.components import unordered_list as unordered_list
+from nextpy.interfaces.web.components import upload as upload
+from nextpy.interfaces.web.components import video as video
+from nextpy.interfaces.web.components import visually_hidden as visually_hidden
+from nextpy.interfaces.web.components import vstack as vstack
+from nextpy.interfaces.web.components import wrap as wrap
+from nextpy.interfaces.web.components import wrap_item as wrap_item
+from nextpy.interfaces.web.components import cancel_upload as cancel_upload
+from nextpy.interfaces.web import components as components
+from nextpy.interfaces.web.components import color_mode_cond as color_mode_cond
+from nextpy.interfaces.web.components import desktop_only as desktop_only
+from nextpy.interfaces.web.components import mobile_only as mobile_only
+from nextpy.interfaces.web.components import tablet_only as tablet_only
+from nextpy.interfaces.web.components import mobile_and_tablet as mobile_and_tablet
+from nextpy.interfaces.web.components import tablet_and_desktop as tablet_and_desktop
+from nextpy.interfaces.web.components import selected_files as selected_files
+from nextpy.interfaces.web.components import clear_selected_files as clear_selected_files
+from nextpy.interfaces.web.components import EditorButtonList as EditorButtonList
+from nextpy.interfaces.web.components import EditorOptions as EditorOptions
+from nextpy.interfaces.web.components import NoSSRComponent as NoSSRComponent
+from nextpy.interfaces.web.components import chakra as chakra
+from nextpy.interfaces.web.components import next as next
+from nextpy.interfaces.web.components.component import memo as memo
+from nextpy.interfaces.web.components import recharts as recharts
+from nextpy.interfaces.web.components.moment.moment import MomentDelta as MomentDelta
from nextpy import config as config
from nextpy.build.config import Config as Config
from nextpy.build.config import DBConfig as DBConfig
from nextpy import constants as constants
from nextpy.constants import Env as Env
+
# from nextpy.frontend.custom_components import custom_components as custom_components
-from nextpy.frontend.components import el as el
+from nextpy.interfaces.web.components import el as el
from nextpy.backend import event as event
from nextpy.backend.event import EventChain as EventChain
from nextpy.backend.event import background as background
@@ -479,16 +488,16 @@ from nextpy.backend.middleware import Middleware as Middleware
from nextpy.data import model as model
from nextpy.data.model import session as session
from nextpy.data.model import Model as Model
-from nextpy.frontend.page import page as page
+from nextpy.interfaces.web.page import page as page
from nextpy.backend import route as route
from nextpy.backend import state as state
from nextpy.backend.state import var as var
from nextpy.backend.state import Cookie as Cookie
from nextpy.backend.state import LocalStorage as LocalStorage
from nextpy.backend.state import State as State
-from nextpy.frontend import style as style
-from nextpy.frontend.style import color_mode as color_mode
-from nextpy.frontend.style import toggle_color_mode as toggle_color_mode
+from nextpy.interfaces.web import style as style
+from nextpy.interfaces.web.style import color_mode as color_mode
+from nextpy.interfaces.web.style import toggle_color_mode as toggle_color_mode
from nextpy.build import testing as testing
from nextpy import utils as utils
from nextpy import vars as vars
diff --git a/nextpy/app.py b/nextpy/app.py
index a50e096d..64cdddb1 100644
--- a/nextpy/app.py
+++ b/nextpy/app.py
@@ -60,17 +60,17 @@
from nextpy.build.compiler.compiler import ExecutorSafeFunctions
from nextpy.build.config import get_config
from nextpy.data.model import Model
-from nextpy.frontend.components import connection_modal
-from nextpy.frontend.components.base.app_wrap import AppWrap
-from nextpy.frontend.components.base.fragment import Fragment
-from nextpy.frontend.components.component import Component, ComponentStyle
-from nextpy.frontend.components.core.client_side_routing import (
+from nextpy.interfaces.web.components import connection_modal
+from nextpy.interfaces.web.components.base.app_wrap import AppWrap
+from nextpy.interfaces.web.components.base.fragment import Fragment
+from nextpy.interfaces.web.components.component import Component, ComponentStyle
+from nextpy.interfaces.web.components.core.client_side_routing import (
Default404Page,
wait_for_client_redirect,
)
-from nextpy.frontend.components.radix import themes
-from nextpy.frontend.imports import ReactImportVar
-from nextpy.frontend.page import (
+from nextpy.interfaces.web.components.radix import themes
+from nextpy.interfaces.web.imports import ReactImportVar
+from nextpy.interfaces.web.page import (
DECORATED_PAGES,
)
from nextpy.utils import console, exceptions, format, types
diff --git a/nextpy/app.pyi b/nextpy/app.pyi
index 386a9b7e..da1e262c 100644
--- a/nextpy/app.pyi
+++ b/nextpy/app.pyi
@@ -11,12 +11,12 @@ from nextpy.backend.admin import AdminDash as AdminDash
from nextpy.base import Base as Base
from nextpy.build.compiler import compiler as compiler
from nextpy.build import prerequisites as prerequisites
-from nextpy.frontend.components import connection_modal as connection_modal
-from nextpy.frontend.components.component import (
+from nextpy.interfaces.web.components import connection_modal as connection_modal
+from nextpy.interfaces.web.components.component import (
Component as Component,
ComponentStyle as ComponentStyle,
)
-from nextpy.frontend.components.base.fragment import Fragment as Fragment
+from nextpy.interfaces.web.components.base.fragment import Fragment as Fragment
from nextpy.build.config import get_config as get_config
from nextpy.backend.event import (
Event as Event,
@@ -28,7 +28,7 @@ from nextpy.backend.middleware import (
Middleware as Middleware,
)
from nextpy.data.model import Model as Model
-from nextpy.frontend.page import DECORATED_PAGES as DECORATED_PAGES
+from nextpy.interfaces.web.page import DECORATED_PAGES as DECORATED_PAGES
from nextpy.backend.route import (
catchall_in_route as catchall_in_route,
catchall_prefix as catchall_prefix,
diff --git a/nextpy/backend/event.py b/nextpy/backend/event.py
index 58421480..30225024 100644
--- a/nextpy/backend/event.py
+++ b/nextpy/backend/event.py
@@ -332,7 +332,7 @@ def as_event_spec(self, handler: EventHandler) -> EventSpec:
Raises:
ValueError: If the on_upload_progress is not a valid event handler.
"""
- from nextpy.frontend.components.core.upload import (
+ from nextpy.interfaces.web.components.core.upload import (
DEFAULT_UPLOAD_ID,
upload_files_context_var_data,
)
diff --git a/nextpy/backend/vars.py b/nextpy/backend/vars.py
index 9def727a..d4914723 100644
--- a/nextpy/backend/vars.py
+++ b/nextpy/backend/vars.py
@@ -38,10 +38,10 @@
from nextpy import constants
from nextpy.base import Base
-from nextpy.frontend import imports
+from nextpy.interfaces.web import imports
# This module used to export ReactImportVar itself, so we still import it for export here
-from nextpy.frontend.imports import ImportDict, ReactImportVar
+from nextpy.interfaces.web.imports import ImportDict, ReactImportVar
from nextpy.utils import console, format, serializers, types
if TYPE_CHECKING:
diff --git a/nextpy/backend/vars.pyi b/nextpy/backend/vars.pyi
index 1accb280..2581c7b8 100644
--- a/nextpy/backend/vars.pyi
+++ b/nextpy/backend/vars.pyi
@@ -9,7 +9,7 @@ from nextpy.base import Base as Base
from nextpy.backend.state import State as State
from nextpy.backend.state import BaseState as BaseState
from nextpy.utils import console as console, format as format, types as types
-from nextpy.frontend.imports import ReactImportVar
+from nextpy.interfaces.web.imports import ReactImportVar
from types import FunctionType
from typing import (
Any,
diff --git a/nextpy/build/compiler/compiler.py b/nextpy/build/compiler/compiler.py
index 1bbc2216..a83ff780 100644
--- a/nextpy/build/compiler/compiler.py
+++ b/nextpy/build/compiler/compiler.py
@@ -10,7 +10,7 @@
from nextpy import constants
from nextpy.build.compiler import templates, utils
-from nextpy.frontend.components.component import (
+from nextpy.interfaces.web.components.component import (
BaseComponent,
Component,
ComponentStyle,
@@ -19,7 +19,7 @@
)
from nextpy.build.config import get_config
from nextpy.backend.state import BaseState
-from nextpy.frontend.imports import ImportDict, ReactImportVar
+from nextpy.interfaces.web.imports import ImportDict, ReactImportVar
def _compile_document_root(root: Component) -> str:
diff --git a/nextpy/build/compiler/utils.py b/nextpy/build/compiler/utils.py
index 7cc15e9b..6a80b59a 100644
--- a/nextpy/build/compiler/utils.py
+++ b/nextpy/build/compiler/utils.py
@@ -11,7 +11,7 @@
from pydantic.fields import ModelField
from nextpy import constants
-from nextpy.frontend.components.base import (
+from nextpy.interfaces.web.components.base import (
Body,
Description,
DocumentHead,
@@ -23,11 +23,11 @@
NextScript,
Title,
)
-from nextpy.frontend.components.component import Component, ComponentStyle, CustomComponent
+from nextpy.interfaces.web.components.component import Component, ComponentStyle, CustomComponent
from nextpy.backend.state import BaseState, Cookie, LocalStorage
-from nextpy.frontend.style import Style
+from nextpy.interfaces.web.style import Style
from nextpy.utils import console, path_ops
-from nextpy.frontend import imports
+from nextpy.interfaces.web import imports
from nextpy.utils import format
# To re-export this function.
diff --git a/nextpy/cli.py b/nextpy/cli.py
index 195eb498..fca806f3 100644
--- a/nextpy/cli.py
+++ b/nextpy/cli.py
@@ -24,7 +24,7 @@
from nextpy import constants
from nextpy.build import dependency
from nextpy.build.config import get_config
-from nextpy.frontend.custom_components.custom_components import custom_components_cli
+from nextpy.interfaces.custom_components.custom_components import custom_components_cli
from nextpy.utils import console, telemetry
# Disable typer+rich integration for help panels
diff --git a/nextpy/constants/base.py b/nextpy/constants/base.py
index a62e27aa..90fc263a 100644
--- a/nextpy/constants/base.py
+++ b/nextpy/constants/base.py
@@ -80,7 +80,7 @@ class Templates(SimpleNamespace):
# Dynamically get the enum values from the templates folder
template_dir = os.path.join(
- Nextpy.ROOT_DIR, Nextpy.MODULE_NAME, "frontend/templates/apps"
+ Nextpy.ROOT_DIR, Nextpy.MODULE_NAME, "interfaces/templates/apps"
)
template_dirs = next(os.walk(template_dir))[1]
@@ -91,7 +91,7 @@ class Dirs(SimpleNamespace):
"""Folders used by the template system of Nextpy."""
# The template directory used during nextpy init.
- BASE = os.path.join(Nextpy.ROOT_DIR, Nextpy.MODULE_NAME, "frontend/templates")
+ BASE = os.path.join(Nextpy.ROOT_DIR, Nextpy.MODULE_NAME, "interfaces/templates")
# The web subdirectory of the template directory.
WEB_TEMPLATE = os.path.join(BASE, "web")
# The jinja template directory.
diff --git a/nextpy/constants/compiler.py b/nextpy/constants/compiler.py
index 01350509..90ff6708 100644
--- a/nextpy/constants/compiler.py
+++ b/nextpy/constants/compiler.py
@@ -8,7 +8,7 @@
from nextpy.base import Base
from nextpy.constants import Dirs
-from nextpy.frontend.imports import ReactImportVar
+from nextpy.interfaces.web.imports import ReactImportVar
# The prefix used to create setters for state vars.
SETTER_PREFIX = "set_"
diff --git a/nextpy/frontend/__init__.py b/nextpy/interfaces/__init__.py
similarity index 100%
rename from nextpy/frontend/__init__.py
rename to nextpy/interfaces/__init__.py
diff --git a/nextpy/frontend/blueprints/__init__.py b/nextpy/interfaces/blueprints/__init__.py
similarity index 100%
rename from nextpy/frontend/blueprints/__init__.py
rename to nextpy/interfaces/blueprints/__init__.py
diff --git a/nextpy/frontend/blueprints/hero_section.py b/nextpy/interfaces/blueprints/hero_section.py
similarity index 100%
rename from nextpy/frontend/blueprints/hero_section.py
rename to nextpy/interfaces/blueprints/hero_section.py
diff --git a/nextpy/frontend/blueprints/navbar.py b/nextpy/interfaces/blueprints/navbar.py
similarity index 100%
rename from nextpy/frontend/blueprints/navbar.py
rename to nextpy/interfaces/blueprints/navbar.py
diff --git a/nextpy/frontend/blueprints/sidebar.py b/nextpy/interfaces/blueprints/sidebar.py
similarity index 100%
rename from nextpy/frontend/blueprints/sidebar.py
rename to nextpy/interfaces/blueprints/sidebar.py
diff --git a/nextpy/frontend/custom_components/__init__.py b/nextpy/interfaces/custom_components/__init__.py
similarity index 100%
rename from nextpy/frontend/custom_components/__init__.py
rename to nextpy/interfaces/custom_components/__init__.py
diff --git a/nextpy/frontend/custom_components/custom_components.py b/nextpy/interfaces/custom_components/custom_components.py
similarity index 100%
rename from nextpy/frontend/custom_components/custom_components.py
rename to nextpy/interfaces/custom_components/custom_components.py
diff --git a/nextpy/frontend/templates/apps/base/README.md b/nextpy/interfaces/templates/apps/base/README.md
similarity index 100%
rename from nextpy/frontend/templates/apps/base/README.md
rename to nextpy/interfaces/templates/apps/base/README.md
diff --git a/nextpy/frontend/templates/apps/hello/assets/favicon.ico b/nextpy/interfaces/templates/apps/base/assets/favicon.ico
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/assets/favicon.ico
rename to nextpy/interfaces/templates/apps/base/assets/favicon.ico
diff --git a/nextpy/frontend/templates/apps/hello/assets/github.svg b/nextpy/interfaces/templates/apps/base/assets/github.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/assets/github.svg
rename to nextpy/interfaces/templates/apps/base/assets/github.svg
diff --git a/nextpy/frontend/templates/apps/hello/assets/gradient_underline.svg b/nextpy/interfaces/templates/apps/base/assets/gradient_underline.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/assets/gradient_underline.svg
rename to nextpy/interfaces/templates/apps/base/assets/gradient_underline.svg
diff --git a/nextpy/frontend/templates/apps/hello/assets/icon.svg b/nextpy/interfaces/templates/apps/base/assets/icon.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/assets/icon.svg
rename to nextpy/interfaces/templates/apps/base/assets/icon.svg
diff --git a/nextpy/frontend/templates/apps/hello/assets/logo_darkmode.svg b/nextpy/interfaces/templates/apps/base/assets/logo_darkmode.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/assets/logo_darkmode.svg
rename to nextpy/interfaces/templates/apps/base/assets/logo_darkmode.svg
diff --git a/nextpy/frontend/templates/apps/hello/assets/paneleft.svg b/nextpy/interfaces/templates/apps/base/assets/paneleft.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/assets/paneleft.svg
rename to nextpy/interfaces/templates/apps/base/assets/paneleft.svg
diff --git a/nextpy/frontend/templates/apps/hello/assets/text_logo_darkmode.svg b/nextpy/interfaces/templates/apps/base/assets/text_logo_darkmode.svg
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/assets/text_logo_darkmode.svg
rename to nextpy/interfaces/templates/apps/base/assets/text_logo_darkmode.svg
diff --git a/nextpy/frontend/templates/apps/base/code/__init__.py b/nextpy/interfaces/templates/apps/base/code/__init__.py
similarity index 100%
rename from nextpy/frontend/templates/apps/base/code/__init__.py
rename to nextpy/interfaces/templates/apps/base/code/__init__.py
diff --git a/nextpy/frontend/templates/apps/base/code/base.py b/nextpy/interfaces/templates/apps/base/code/base.py
similarity index 100%
rename from nextpy/frontend/templates/apps/base/code/base.py
rename to nextpy/interfaces/templates/apps/base/code/base.py
diff --git a/nextpy/frontend/templates/apps/hello/code/webui/__init__.py b/nextpy/interfaces/templates/apps/base/code/components/__init__.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/webui/__init__.py
rename to nextpy/interfaces/templates/apps/base/code/components/__init__.py
diff --git a/nextpy/frontend/templates/apps/base/code/components/sidebar.py b/nextpy/interfaces/templates/apps/base/code/components/sidebar.py
similarity index 100%
rename from nextpy/frontend/templates/apps/base/code/components/sidebar.py
rename to nextpy/interfaces/templates/apps/base/code/components/sidebar.py
diff --git a/nextpy/frontend/templates/apps/base/code/pages/__init__.py b/nextpy/interfaces/templates/apps/base/code/pages/__init__.py
similarity index 100%
rename from nextpy/frontend/templates/apps/base/code/pages/__init__.py
rename to nextpy/interfaces/templates/apps/base/code/pages/__init__.py
diff --git a/nextpy/frontend/templates/apps/base/code/pages/dashboard.py b/nextpy/interfaces/templates/apps/base/code/pages/dashboard.py
similarity index 100%
rename from nextpy/frontend/templates/apps/base/code/pages/dashboard.py
rename to nextpy/interfaces/templates/apps/base/code/pages/dashboard.py
diff --git a/nextpy/frontend/templates/apps/base/code/pages/index.py b/nextpy/interfaces/templates/apps/base/code/pages/index.py
similarity index 100%
rename from nextpy/frontend/templates/apps/base/code/pages/index.py
rename to nextpy/interfaces/templates/apps/base/code/pages/index.py
diff --git a/nextpy/frontend/templates/apps/base/code/pages/settings.py b/nextpy/interfaces/templates/apps/base/code/pages/settings.py
similarity index 100%
rename from nextpy/frontend/templates/apps/base/code/pages/settings.py
rename to nextpy/interfaces/templates/apps/base/code/pages/settings.py
diff --git a/nextpy/frontend/templates/apps/base/code/styles.py b/nextpy/interfaces/templates/apps/base/code/styles.py
similarity index 100%
rename from nextpy/frontend/templates/apps/base/code/styles.py
rename to nextpy/interfaces/templates/apps/base/code/styles.py
diff --git a/nextpy/frontend/templates/apps/base/code/templates/__init__.py b/nextpy/interfaces/templates/apps/base/code/templates/__init__.py
similarity index 100%
rename from nextpy/frontend/templates/apps/base/code/templates/__init__.py
rename to nextpy/interfaces/templates/apps/base/code/templates/__init__.py
diff --git a/nextpy/frontend/templates/apps/base/code/templates/template.py b/nextpy/interfaces/templates/apps/base/code/templates/template.py
similarity index 100%
rename from nextpy/frontend/templates/apps/base/code/templates/template.py
rename to nextpy/interfaces/templates/apps/base/code/templates/template.py
diff --git a/nextpy/interfaces/templates/apps/blank/assets/favicon.ico b/nextpy/interfaces/templates/apps/blank/assets/favicon.ico
new file mode 100644
index 00000000..1f55d3be
Binary files /dev/null and b/nextpy/interfaces/templates/apps/blank/assets/favicon.ico differ
diff --git a/nextpy/interfaces/templates/apps/blank/assets/github.svg b/nextpy/interfaces/templates/apps/blank/assets/github.svg
new file mode 100644
index 00000000..61c9d791
--- /dev/null
+++ b/nextpy/interfaces/templates/apps/blank/assets/github.svg
@@ -0,0 +1,10 @@
+
diff --git a/nextpy/interfaces/templates/apps/blank/assets/gradient_underline.svg b/nextpy/interfaces/templates/apps/blank/assets/gradient_underline.svg
new file mode 100644
index 00000000..36ff3730
--- /dev/null
+++ b/nextpy/interfaces/templates/apps/blank/assets/gradient_underline.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/nextpy/interfaces/templates/apps/blank/assets/icon.svg b/nextpy/interfaces/templates/apps/blank/assets/icon.svg
new file mode 100644
index 00000000..f7ee063b
--- /dev/null
+++ b/nextpy/interfaces/templates/apps/blank/assets/icon.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/nextpy/interfaces/templates/apps/blank/assets/logo_darkmode.svg b/nextpy/interfaces/templates/apps/blank/assets/logo_darkmode.svg
new file mode 100644
index 00000000..e90f7463
--- /dev/null
+++ b/nextpy/interfaces/templates/apps/blank/assets/logo_darkmode.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/nextpy/interfaces/templates/apps/blank/assets/paneleft.svg b/nextpy/interfaces/templates/apps/blank/assets/paneleft.svg
new file mode 100644
index 00000000..ac9c5040
--- /dev/null
+++ b/nextpy/interfaces/templates/apps/blank/assets/paneleft.svg
@@ -0,0 +1,13 @@
+
diff --git a/nextpy/interfaces/templates/apps/blank/assets/text_logo_darkmode.svg b/nextpy/interfaces/templates/apps/blank/assets/text_logo_darkmode.svg
new file mode 100644
index 00000000..e395e3d7
--- /dev/null
+++ b/nextpy/interfaces/templates/apps/blank/assets/text_logo_darkmode.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/nextpy/frontend/components/proxy/__init__.py b/nextpy/interfaces/templates/apps/blank/code/__init__.py
similarity index 75%
rename from nextpy/frontend/components/proxy/__init__.py
rename to nextpy/interfaces/templates/apps/blank/code/__init__.py
index 66ef53aa..847433fd 100644
--- a/nextpy/frontend/components/proxy/__init__.py
+++ b/nextpy/interfaces/templates/apps/blank/code/__init__.py
@@ -1,8 +1,3 @@
# This file has been modified by the Nextpy Team in 2023 using AI tools and automation scripts.
# We have rigorously tested these modifications to ensure reliability and performance. Based on successful test results, we are confident in the quality and stability of these changes.
-"""Contains proxy components."""
-
-from .animation import animation
-
-__all__ = ["animation"]
diff --git a/nextpy/frontend/templates/apps/blank/code/blank.py b/nextpy/interfaces/templates/apps/blank/code/blank.py
similarity index 100%
rename from nextpy/frontend/templates/apps/blank/code/blank.py
rename to nextpy/interfaces/templates/apps/blank/code/blank.py
diff --git a/nextpy/interfaces/templates/apps/hello/.gitignore b/nextpy/interfaces/templates/apps/hello/.gitignore
new file mode 100644
index 00000000..eab0d4b0
--- /dev/null
+++ b/nextpy/interfaces/templates/apps/hello/.gitignore
@@ -0,0 +1,4 @@
+*.db
+*.py[cod]
+.web
+__pycache__/
\ No newline at end of file
diff --git a/nextpy/interfaces/templates/apps/hello/assets/favicon.ico b/nextpy/interfaces/templates/apps/hello/assets/favicon.ico
new file mode 100644
index 00000000..1f55d3be
Binary files /dev/null and b/nextpy/interfaces/templates/apps/hello/assets/favicon.ico differ
diff --git a/nextpy/interfaces/templates/apps/hello/assets/github.svg b/nextpy/interfaces/templates/apps/hello/assets/github.svg
new file mode 100644
index 00000000..61c9d791
--- /dev/null
+++ b/nextpy/interfaces/templates/apps/hello/assets/github.svg
@@ -0,0 +1,10 @@
+
diff --git a/nextpy/interfaces/templates/apps/hello/assets/gradient_underline.svg b/nextpy/interfaces/templates/apps/hello/assets/gradient_underline.svg
new file mode 100644
index 00000000..36ff3730
--- /dev/null
+++ b/nextpy/interfaces/templates/apps/hello/assets/gradient_underline.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/nextpy/interfaces/templates/apps/hello/assets/icon.svg b/nextpy/interfaces/templates/apps/hello/assets/icon.svg
new file mode 100644
index 00000000..f7ee063b
--- /dev/null
+++ b/nextpy/interfaces/templates/apps/hello/assets/icon.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/nextpy/interfaces/templates/apps/hello/assets/logo_darkmode.svg b/nextpy/interfaces/templates/apps/hello/assets/logo_darkmode.svg
new file mode 100644
index 00000000..e90f7463
--- /dev/null
+++ b/nextpy/interfaces/templates/apps/hello/assets/logo_darkmode.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/nextpy/interfaces/templates/apps/hello/assets/paneleft.svg b/nextpy/interfaces/templates/apps/hello/assets/paneleft.svg
new file mode 100644
index 00000000..ac9c5040
--- /dev/null
+++ b/nextpy/interfaces/templates/apps/hello/assets/paneleft.svg
@@ -0,0 +1,13 @@
+
diff --git a/nextpy/interfaces/templates/apps/hello/assets/text_logo_darkmode.svg b/nextpy/interfaces/templates/apps/hello/assets/text_logo_darkmode.svg
new file mode 100644
index 00000000..e395e3d7
--- /dev/null
+++ b/nextpy/interfaces/templates/apps/hello/assets/text_logo_darkmode.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/nextpy/frontend/templates/apps/hello/code/__init__.py b/nextpy/interfaces/templates/apps/hello/code/__init__.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/__init__.py
rename to nextpy/interfaces/templates/apps/hello/code/__init__.py
diff --git a/nextpy/frontend/templates/apps/hello/code/hello.py b/nextpy/interfaces/templates/apps/hello/code/hello.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/hello.py
rename to nextpy/interfaces/templates/apps/hello/code/hello.py
diff --git a/nextpy/frontend/templates/apps/hello/code/pages/__init__.py b/nextpy/interfaces/templates/apps/hello/code/pages/__init__.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/pages/__init__.py
rename to nextpy/interfaces/templates/apps/hello/code/pages/__init__.py
diff --git a/nextpy/frontend/templates/apps/hello/code/pages/chatapp.py b/nextpy/interfaces/templates/apps/hello/code/pages/chatapp.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/pages/chatapp.py
rename to nextpy/interfaces/templates/apps/hello/code/pages/chatapp.py
diff --git a/nextpy/frontend/templates/apps/hello/code/pages/datatable.py b/nextpy/interfaces/templates/apps/hello/code/pages/datatable.py
similarity index 99%
rename from nextpy/frontend/templates/apps/hello/code/pages/datatable.py
rename to nextpy/interfaces/templates/apps/hello/code/pages/datatable.py
index b11b148b..6edb77dc 100644
--- a/nextpy/frontend/templates/apps/hello/code/pages/datatable.py
+++ b/nextpy/interfaces/templates/apps/hello/code/pages/datatable.py
@@ -5,7 +5,7 @@
from typing import Any
import nextpy as xt
-from nextpy.frontend.components.glide_datagrid.dataeditor import DataEditorTheme
+from nextpy.interfaces.web.components.glide_datagrid.dataeditor import DataEditorTheme
from ..styles import *
from ..webui.state import State
diff --git a/nextpy/frontend/templates/apps/hello/code/pages/forms.py b/nextpy/interfaces/templates/apps/hello/code/pages/forms.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/pages/forms.py
rename to nextpy/interfaces/templates/apps/hello/code/pages/forms.py
diff --git a/nextpy/frontend/templates/apps/hello/code/pages/graphing.py b/nextpy/interfaces/templates/apps/hello/code/pages/graphing.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/pages/graphing.py
rename to nextpy/interfaces/templates/apps/hello/code/pages/graphing.py
diff --git a/nextpy/frontend/templates/apps/hello/code/pages/home.py b/nextpy/interfaces/templates/apps/hello/code/pages/home.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/pages/home.py
rename to nextpy/interfaces/templates/apps/hello/code/pages/home.py
diff --git a/nextpy/frontend/templates/apps/hello/code/sidebar.py b/nextpy/interfaces/templates/apps/hello/code/sidebar.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/sidebar.py
rename to nextpy/interfaces/templates/apps/hello/code/sidebar.py
diff --git a/nextpy/frontend/templates/apps/hello/code/state.py b/nextpy/interfaces/templates/apps/hello/code/state.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/state.py
rename to nextpy/interfaces/templates/apps/hello/code/state.py
diff --git a/nextpy/frontend/templates/apps/hello/code/states/form_state.py b/nextpy/interfaces/templates/apps/hello/code/states/form_state.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/states/form_state.py
rename to nextpy/interfaces/templates/apps/hello/code/states/form_state.py
diff --git a/nextpy/frontend/templates/apps/hello/code/states/pie_state.py b/nextpy/interfaces/templates/apps/hello/code/states/pie_state.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/states/pie_state.py
rename to nextpy/interfaces/templates/apps/hello/code/states/pie_state.py
diff --git a/nextpy/frontend/templates/apps/hello/code/styles.py b/nextpy/interfaces/templates/apps/hello/code/styles.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/styles.py
rename to nextpy/interfaces/templates/apps/hello/code/styles.py
diff --git a/nextpy/frontend/components/media/icon.py b/nextpy/interfaces/templates/apps/hello/code/webui/__init__.py
similarity index 70%
rename from nextpy/frontend/components/media/icon.py
rename to nextpy/interfaces/templates/apps/hello/code/webui/__init__.py
index ce426f0d..847433fd 100644
--- a/nextpy/frontend/components/media/icon.py
+++ b/nextpy/interfaces/templates/apps/hello/code/webui/__init__.py
@@ -1,5 +1,3 @@
# This file has been modified by the Nextpy Team in 2023 using AI tools and automation scripts.
# We have rigorously tested these modifications to ensure reliability and performance. Based on successful test results, we are confident in the quality and stability of these changes.
-"""Shim for nextpy.frontend.components.chakra.media.icon."""
-from nextpy.frontend.components.chakra.media.icon import *
diff --git a/nextpy/frontend/templates/apps/hello/code/webui/components/__init__.py b/nextpy/interfaces/templates/apps/hello/code/webui/components/__init__.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/webui/components/__init__.py
rename to nextpy/interfaces/templates/apps/hello/code/webui/components/__init__.py
diff --git a/nextpy/frontend/templates/apps/hello/code/webui/components/chat.py b/nextpy/interfaces/templates/apps/hello/code/webui/components/chat.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/webui/components/chat.py
rename to nextpy/interfaces/templates/apps/hello/code/webui/components/chat.py
diff --git a/nextpy/frontend/templates/apps/hello/code/webui/components/loading_icon.py b/nextpy/interfaces/templates/apps/hello/code/webui/components/loading_icon.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/webui/components/loading_icon.py
rename to nextpy/interfaces/templates/apps/hello/code/webui/components/loading_icon.py
diff --git a/nextpy/frontend/templates/apps/hello/code/webui/components/modal.py b/nextpy/interfaces/templates/apps/hello/code/webui/components/modal.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/webui/components/modal.py
rename to nextpy/interfaces/templates/apps/hello/code/webui/components/modal.py
diff --git a/nextpy/frontend/templates/apps/hello/code/webui/components/navbar.py b/nextpy/interfaces/templates/apps/hello/code/webui/components/navbar.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/webui/components/navbar.py
rename to nextpy/interfaces/templates/apps/hello/code/webui/components/navbar.py
diff --git a/nextpy/frontend/templates/apps/hello/code/webui/components/sidebar.py b/nextpy/interfaces/templates/apps/hello/code/webui/components/sidebar.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/webui/components/sidebar.py
rename to nextpy/interfaces/templates/apps/hello/code/webui/components/sidebar.py
diff --git a/nextpy/frontend/templates/apps/hello/code/webui/state.py b/nextpy/interfaces/templates/apps/hello/code/webui/state.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/webui/state.py
rename to nextpy/interfaces/templates/apps/hello/code/webui/state.py
diff --git a/nextpy/frontend/templates/apps/hello/code/webui/styles.py b/nextpy/interfaces/templates/apps/hello/code/webui/styles.py
similarity index 100%
rename from nextpy/frontend/templates/apps/hello/code/webui/styles.py
rename to nextpy/interfaces/templates/apps/hello/code/webui/styles.py
diff --git a/nextpy/frontend/templates/jinja/app/xtconfig.py.jinja2 b/nextpy/interfaces/templates/jinja/app/xtconfig.py.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/app/xtconfig.py.jinja2
rename to nextpy/interfaces/templates/jinja/app/xtconfig.py.jinja2
diff --git a/nextpy/frontend/templates/jinja/custom_components/README.md.jinja2 b/nextpy/interfaces/templates/jinja/custom_components/README.md.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/custom_components/README.md.jinja2
rename to nextpy/interfaces/templates/jinja/custom_components/README.md.jinja2
diff --git a/nextpy/frontend/templates/jinja/custom_components/demo_app.py.jinja2 b/nextpy/interfaces/templates/jinja/custom_components/demo_app.py.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/custom_components/demo_app.py.jinja2
rename to nextpy/interfaces/templates/jinja/custom_components/demo_app.py.jinja2
diff --git a/nextpy/frontend/templates/jinja/custom_components/pyproject.toml.jinja2 b/nextpy/interfaces/templates/jinja/custom_components/pyproject.toml.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/custom_components/pyproject.toml.jinja2
rename to nextpy/interfaces/templates/jinja/custom_components/pyproject.toml.jinja2
diff --git a/nextpy/frontend/templates/jinja/custom_components/src.py.jinja2 b/nextpy/interfaces/templates/jinja/custom_components/src.py.jinja2
similarity index 96%
rename from nextpy/frontend/templates/jinja/custom_components/src.py.jinja2
rename to nextpy/interfaces/templates/jinja/custom_components/src.py.jinja2
index 75c64bc5..63757146 100644
--- a/nextpy/frontend/templates/jinja/custom_components/src.py.jinja2
+++ b/nextpy/interfaces/templates/jinja/custom_components/src.py.jinja2
@@ -9,7 +9,7 @@ from typing import Any
# This is because they they may not be compatible with Server-Side Rendering (SSR).
# To handle this in Nextpy all you need to do is subclass NoSSRComponent instead.
# For example:
-# from nextpy.frontend.components.component import NoSSRComponent
+# from nextpy.interfaces.web.components.component import NoSSRComponent
# class {{ component_class_name }}(NoSSRComponent):
# pass
diff --git a/nextpy/frontend/templates/jinja/web/package.json.jinja2 b/nextpy/interfaces/templates/jinja/web/package.json.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/web/package.json.jinja2
rename to nextpy/interfaces/templates/jinja/web/package.json.jinja2
diff --git a/nextpy/frontend/templates/jinja/web/pages/_app.js.jinja2 b/nextpy/interfaces/templates/jinja/web/pages/_app.js.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/web/pages/_app.js.jinja2
rename to nextpy/interfaces/templates/jinja/web/pages/_app.js.jinja2
diff --git a/nextpy/frontend/templates/jinja/web/pages/_document.js.jinja2 b/nextpy/interfaces/templates/jinja/web/pages/_document.js.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/web/pages/_document.js.jinja2
rename to nextpy/interfaces/templates/jinja/web/pages/_document.js.jinja2
diff --git a/nextpy/frontend/templates/jinja/web/pages/base_page.js.jinja2 b/nextpy/interfaces/templates/jinja/web/pages/base_page.js.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/web/pages/base_page.js.jinja2
rename to nextpy/interfaces/templates/jinja/web/pages/base_page.js.jinja2
diff --git a/nextpy/frontend/templates/jinja/web/pages/component.js.jinja2 b/nextpy/interfaces/templates/jinja/web/pages/component.js.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/web/pages/component.js.jinja2
rename to nextpy/interfaces/templates/jinja/web/pages/component.js.jinja2
diff --git a/nextpy/frontend/templates/jinja/web/pages/custom_component.js.jinja2 b/nextpy/interfaces/templates/jinja/web/pages/custom_component.js.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/web/pages/custom_component.js.jinja2
rename to nextpy/interfaces/templates/jinja/web/pages/custom_component.js.jinja2
diff --git a/nextpy/frontend/templates/jinja/web/pages/index.js.jinja2 b/nextpy/interfaces/templates/jinja/web/pages/index.js.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/web/pages/index.js.jinja2
rename to nextpy/interfaces/templates/jinja/web/pages/index.js.jinja2
diff --git a/nextpy/frontend/templates/jinja/web/pages/stateful_component.js.jinja2 b/nextpy/interfaces/templates/jinja/web/pages/stateful_component.js.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/web/pages/stateful_component.js.jinja2
rename to nextpy/interfaces/templates/jinja/web/pages/stateful_component.js.jinja2
diff --git a/nextpy/frontend/templates/jinja/web/pages/stateful_components.js.jinja2 b/nextpy/interfaces/templates/jinja/web/pages/stateful_components.js.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/web/pages/stateful_components.js.jinja2
rename to nextpy/interfaces/templates/jinja/web/pages/stateful_components.js.jinja2
diff --git a/nextpy/frontend/templates/jinja/web/pages/utils.js.jinja2 b/nextpy/interfaces/templates/jinja/web/pages/utils.js.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/web/pages/utils.js.jinja2
rename to nextpy/interfaces/templates/jinja/web/pages/utils.js.jinja2
diff --git a/nextpy/frontend/templates/jinja/web/styles/styles.css.jinja2 b/nextpy/interfaces/templates/jinja/web/styles/styles.css.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/web/styles/styles.css.jinja2
rename to nextpy/interfaces/templates/jinja/web/styles/styles.css.jinja2
diff --git a/nextpy/frontend/templates/jinja/web/tailwind.config.js.jinja2 b/nextpy/interfaces/templates/jinja/web/tailwind.config.js.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/web/tailwind.config.js.jinja2
rename to nextpy/interfaces/templates/jinja/web/tailwind.config.js.jinja2
diff --git a/nextpy/frontend/templates/jinja/web/utils/context.js.jinja2 b/nextpy/interfaces/templates/jinja/web/utils/context.js.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/web/utils/context.js.jinja2
rename to nextpy/interfaces/templates/jinja/web/utils/context.js.jinja2
diff --git a/nextpy/frontend/templates/jinja/web/utils/theme.js.jinja2 b/nextpy/interfaces/templates/jinja/web/utils/theme.js.jinja2
similarity index 100%
rename from nextpy/frontend/templates/jinja/web/utils/theme.js.jinja2
rename to nextpy/interfaces/templates/jinja/web/utils/theme.js.jinja2
diff --git a/nextpy/frontend/templates/web/.gitignore b/nextpy/interfaces/templates/web/.gitignore
similarity index 100%
rename from nextpy/frontend/templates/web/.gitignore
rename to nextpy/interfaces/templates/web/.gitignore
diff --git a/nextpy/frontend/templates/web/components/nextpy/chakra_color_mode_provider.js b/nextpy/interfaces/templates/web/components/nextpy/chakra_color_mode_provider.js
similarity index 100%
rename from nextpy/frontend/templates/web/components/nextpy/chakra_color_mode_provider.js
rename to nextpy/interfaces/templates/web/components/nextpy/chakra_color_mode_provider.js
diff --git a/nextpy/frontend/templates/web/components/nextpy/radix_themes_color_mode_provider.js b/nextpy/interfaces/templates/web/components/nextpy/radix_themes_color_mode_provider.js
similarity index 100%
rename from nextpy/frontend/templates/web/components/nextpy/radix_themes_color_mode_provider.js
rename to nextpy/interfaces/templates/web/components/nextpy/radix_themes_color_mode_provider.js
diff --git a/nextpy/frontend/templates/web/jsconfig.json b/nextpy/interfaces/templates/web/jsconfig.json
similarity index 100%
rename from nextpy/frontend/templates/web/jsconfig.json
rename to nextpy/interfaces/templates/web/jsconfig.json
diff --git a/nextpy/frontend/templates/web/next.config.js b/nextpy/interfaces/templates/web/next.config.js
similarity index 100%
rename from nextpy/frontend/templates/web/next.config.js
rename to nextpy/interfaces/templates/web/next.config.js
diff --git a/nextpy/frontend/templates/web/postcss.config.js b/nextpy/interfaces/templates/web/postcss.config.js
similarity index 100%
rename from nextpy/frontend/templates/web/postcss.config.js
rename to nextpy/interfaces/templates/web/postcss.config.js
diff --git a/nextpy/frontend/templates/web/styles/code/prism.js b/nextpy/interfaces/templates/web/styles/code/prism.js
similarity index 100%
rename from nextpy/frontend/templates/web/styles/code/prism.js
rename to nextpy/interfaces/templates/web/styles/code/prism.js
diff --git a/nextpy/frontend/templates/web/styles/tailwind.css b/nextpy/interfaces/templates/web/styles/tailwind.css
similarity index 100%
rename from nextpy/frontend/templates/web/styles/tailwind.css
rename to nextpy/interfaces/templates/web/styles/tailwind.css
diff --git a/nextpy/frontend/templates/web/utils/client_side_routing.js b/nextpy/interfaces/templates/web/utils/client_side_routing.js
similarity index 100%
rename from nextpy/frontend/templates/web/utils/client_side_routing.js
rename to nextpy/interfaces/templates/web/utils/client_side_routing.js
diff --git a/nextpy/frontend/templates/web/utils/helpers/dataeditor.js b/nextpy/interfaces/templates/web/utils/helpers/dataeditor.js
similarity index 100%
rename from nextpy/frontend/templates/web/utils/helpers/dataeditor.js
rename to nextpy/interfaces/templates/web/utils/helpers/dataeditor.js
diff --git a/nextpy/frontend/templates/web/utils/helpers/range.js b/nextpy/interfaces/templates/web/utils/helpers/range.js
similarity index 100%
rename from nextpy/frontend/templates/web/utils/helpers/range.js
rename to nextpy/interfaces/templates/web/utils/helpers/range.js
diff --git a/nextpy/frontend/templates/web/utils/state.js b/nextpy/interfaces/templates/web/utils/state.js
similarity index 100%
rename from nextpy/frontend/templates/web/utils/state.js
rename to nextpy/interfaces/templates/web/utils/state.js
diff --git a/nextpy/interfaces/web/__init__.py b/nextpy/interfaces/web/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/nextpy/frontend/components/__init__.py b/nextpy/interfaces/web/components/__init__.py
similarity index 99%
rename from nextpy/frontend/components/__init__.py
rename to nextpy/interfaces/web/components/__init__.py
index 45a21556..11039d51 100644
--- a/nextpy/frontend/components/__init__.py
+++ b/nextpy/interfaces/web/components/__init__.py
@@ -18,4 +18,3 @@
from .react_player import *
from .recharts import *
from .suneditor import *
-
diff --git a/nextpy/frontend/components/base/__init__.py b/nextpy/interfaces/web/components/base/__init__.py
similarity index 100%
rename from nextpy/frontend/components/base/__init__.py
rename to nextpy/interfaces/web/components/base/__init__.py
diff --git a/nextpy/frontend/components/base/app_wrap.py b/nextpy/interfaces/web/components/base/app_wrap.py
similarity index 85%
rename from nextpy/frontend/components/base/app_wrap.py
rename to nextpy/interfaces/web/components/base/app_wrap.py
index 29842689..05c7f60c 100644
--- a/nextpy/frontend/components/base/app_wrap.py
+++ b/nextpy/interfaces/web/components/base/app_wrap.py
@@ -3,8 +3,8 @@
"""Top-level component that wraps the entire app."""
from nextpy.backend.vars import Var
-from nextpy.frontend.components.base.fragment import Fragment
-from nextpy.frontend.components.component import Component
+from nextpy.interfaces.web.components.base.fragment import Fragment
+from nextpy.interfaces.web.components.component import Component
class AppWrap(Fragment):
diff --git a/nextpy/frontend/components/base/app_wrap.pyi b/nextpy/interfaces/web/components/base/app_wrap.pyi
similarity index 94%
rename from nextpy/frontend/components/base/app_wrap.pyi
rename to nextpy/interfaces/web/components/base/app_wrap.pyi
index 51c4a89b..f468c37f 100644
--- a/nextpy/frontend/components/base/app_wrap.pyi
+++ b/nextpy/interfaces/web/components/base/app_wrap.pyi
@@ -9,9 +9,9 @@
from typing import Any, Dict, Literal, Optional, Union, overload
from nextpy.backend.vars import Var, BaseVar, ComputedVar
from nextpy.backend.event import EventChain, EventHandler, EventSpec
-from nextpy.frontend.style import Style
-from nextpy.frontend.components.base.fragment import Fragment
-from nextpy.frontend.components.component import Component
+from nextpy.interfaces.web.style import Style
+from nextpy.interfaces.web.components.base.fragment import Fragment
+from nextpy.interfaces.web.components.component import Component
from nextpy.backend.vars import Var
class AppWrap(Fragment):
diff --git a/nextpy/frontend/components/base/bare.py b/nextpy/interfaces/web/components/base/bare.py
similarity index 87%
rename from nextpy/frontend/components/base/bare.py
rename to nextpy/interfaces/web/components/base/bare.py
index ce71b046..078dafb1 100644
--- a/nextpy/frontend/components/base/bare.py
+++ b/nextpy/interfaces/web/components/base/bare.py
@@ -7,9 +7,9 @@
from typing import Any, Iterator
from nextpy.backend.vars import Var
-from nextpy.frontend.components.component import Component
-from nextpy.frontend.components.tags import Tag
-from nextpy.frontend.components.tags.tagless import Tagless
+from nextpy.interfaces.web.components.component import Component
+from nextpy.interfaces.web.components.tags import Tag
+from nextpy.interfaces.web.components.tags.tagless import Tagless
class Bare(Component):
diff --git a/nextpy/frontend/components/base/body.py b/nextpy/interfaces/web/components/base/body.py
similarity index 85%
rename from nextpy/frontend/components/base/body.py
rename to nextpy/interfaces/web/components/base/body.py
index cc4d9e81..cce7a262 100644
--- a/nextpy/frontend/components/base/body.py
+++ b/nextpy/interfaces/web/components/base/body.py
@@ -3,7 +3,7 @@
"""Display the page body."""
-from nextpy.frontend.components.component import Component
+from nextpy.interfaces.web.components.component import Component
class Body(Component):
diff --git a/nextpy/frontend/components/base/body.pyi b/nextpy/interfaces/web/components/base/body.pyi
similarity index 96%
rename from nextpy/frontend/components/base/body.pyi
rename to nextpy/interfaces/web/components/base/body.pyi
index 9c5f48b3..9a872398 100644
--- a/nextpy/frontend/components/base/body.pyi
+++ b/nextpy/interfaces/web/components/base/body.pyi
@@ -9,8 +9,8 @@
from typing import Any, Dict, Literal, Optional, Union, overload
from nextpy.backend.vars import Var, BaseVar, ComputedVar
from nextpy.backend.event import EventChain, EventHandler, EventSpec
-from nextpy.frontend.style import Style
-from nextpy.frontend.components.component import Component
+from nextpy.interfaces.web.style import Style
+from nextpy.interfaces.web.components.component import Component
class Body(Component):
@overload
diff --git a/nextpy/frontend/components/base/document.py b/nextpy/interfaces/web/components/base/document.py
similarity index 92%
rename from nextpy/frontend/components/base/document.py
rename to nextpy/interfaces/web/components/base/document.py
index 9fc052dc..effc55c1 100644
--- a/nextpy/frontend/components/base/document.py
+++ b/nextpy/interfaces/web/components/base/document.py
@@ -3,7 +3,7 @@
"""Document components."""
-from nextpy.frontend.components.component import Component
+from nextpy.interfaces.web.components.component import Component
class NextDocumentLib(Component):
diff --git a/nextpy/frontend/components/base/document.pyi b/nextpy/interfaces/web/components/base/document.pyi
similarity index 99%
rename from nextpy/frontend/components/base/document.pyi
rename to nextpy/interfaces/web/components/base/document.pyi
index 7df518e0..501b8788 100644
--- a/nextpy/frontend/components/base/document.pyi
+++ b/nextpy/interfaces/web/components/base/document.pyi
@@ -9,8 +9,8 @@
from typing import Any, Dict, Literal, Optional, Union, overload
from nextpy.backend.vars import Var, BaseVar, ComputedVar
from nextpy.backend.event import EventChain, EventHandler, EventSpec
-from nextpy.frontend.style import Style
-from nextpy.frontend.components.component import Component
+from nextpy.interfaces.web.style import Style
+from nextpy.interfaces.web.components.component import Component
class NextDocumentLib(Component):
@overload
diff --git a/nextpy/frontend/components/base/fragment.py b/nextpy/interfaces/web/components/base/fragment.py
similarity index 89%
rename from nextpy/frontend/components/base/fragment.py
rename to nextpy/interfaces/web/components/base/fragment.py
index 6f772265..f0fc67fd 100644
--- a/nextpy/frontend/components/base/fragment.py
+++ b/nextpy/interfaces/web/components/base/fragment.py
@@ -2,7 +2,7 @@
# We have rigorously tested these modifications to ensure reliability and performance. Based on successful test results, we are confident in the quality and stability of these changes.
"""React fragments to enable bare returns of component trees from functions."""
-from nextpy.frontend.components.component import Component
+from nextpy.interfaces.web.components.component import Component
class Fragment(Component):
diff --git a/nextpy/frontend/components/base/fragment.pyi b/nextpy/interfaces/web/components/base/fragment.pyi
similarity index 96%
rename from nextpy/frontend/components/base/fragment.pyi
rename to nextpy/interfaces/web/components/base/fragment.pyi
index c5e967e9..976e9e1b 100644
--- a/nextpy/frontend/components/base/fragment.pyi
+++ b/nextpy/interfaces/web/components/base/fragment.pyi
@@ -9,8 +9,8 @@
from typing import Any, Dict, Literal, Optional, Union, overload
from nextpy.backend.vars import Var, BaseVar, ComputedVar
from nextpy.backend.event import EventChain, EventHandler, EventSpec
-from nextpy.frontend.style import Style
-from nextpy.frontend.components.component import Component
+from nextpy.interfaces.web.style import Style
+from nextpy.interfaces.web.components.component import Component
class Fragment(Component):
@overload
diff --git a/nextpy/frontend/components/base/head.py b/nextpy/interfaces/web/components/base/head.py
similarity index 86%
rename from nextpy/frontend/components/base/head.py
rename to nextpy/interfaces/web/components/base/head.py
index b0649f5d..f3a3dabe 100644
--- a/nextpy/frontend/components/base/head.py
+++ b/nextpy/interfaces/web/components/base/head.py
@@ -3,7 +3,7 @@
"""The head component."""
-from nextpy.frontend.components.component import Component, MemoizationLeaf
+from nextpy.interfaces.web.components.component import Component, MemoizationLeaf
class NextHeadLib(Component):
diff --git a/nextpy/frontend/components/base/head.pyi b/nextpy/interfaces/web/components/base/head.pyi
similarity index 97%
rename from nextpy/frontend/components/base/head.pyi
rename to nextpy/interfaces/web/components/base/head.pyi
index ab52003e..efbbb8a1 100644
--- a/nextpy/frontend/components/base/head.pyi
+++ b/nextpy/interfaces/web/components/base/head.pyi
@@ -9,8 +9,8 @@
from typing import Any, Dict, Literal, Optional, Union, overload
from nextpy.backend.vars import Var, BaseVar, ComputedVar
from nextpy.backend.event import EventChain, EventHandler, EventSpec
-from nextpy.frontend.style import Style
-from nextpy.frontend.components.component import Component, MemoizationLeaf
+from nextpy.interfaces.web.style import Style
+from nextpy.interfaces.web.components.component import Component, MemoizationLeaf
class NextHeadLib(Component):
@overload
diff --git a/nextpy/frontend/components/base/link.py b/nextpy/interfaces/web/components/base/link.py
similarity index 94%
rename from nextpy/frontend/components/base/link.py
rename to nextpy/interfaces/web/components/base/link.py
index 1b1b7ac7..382e6b30 100644
--- a/nextpy/frontend/components/base/link.py
+++ b/nextpy/interfaces/web/components/base/link.py
@@ -5,7 +5,7 @@
from nextpy.backend.vars import Var
-from nextpy.frontend.components.component import Component
+from nextpy.interfaces.web.components.component import Component
class RawLink(Component):
diff --git a/nextpy/frontend/components/base/link.pyi b/nextpy/interfaces/web/components/base/link.pyi
similarity index 98%
rename from nextpy/frontend/components/base/link.pyi
rename to nextpy/interfaces/web/components/base/link.pyi
index 6d5801b5..67e18f57 100644
--- a/nextpy/frontend/components/base/link.pyi
+++ b/nextpy/interfaces/web/components/base/link.pyi
@@ -9,8 +9,8 @@
from typing import Any, Dict, Literal, Optional, Union, overload
from nextpy.backend.vars import Var, BaseVar, ComputedVar
from nextpy.backend.event import EventChain, EventHandler, EventSpec
-from nextpy.frontend.style import Style
-from nextpy.frontend.components.component import Component
+from nextpy.interfaces.web.style import Style
+from nextpy.interfaces.web.components.component import Component
from nextpy.backend.vars import Var
class RawLink(Component):
diff --git a/nextpy/frontend/components/base/meta.py b/nextpy/interfaces/web/components/base/meta.py
similarity index 92%
rename from nextpy/frontend/components/base/meta.py
rename to nextpy/interfaces/web/components/base/meta.py
index 07f043a7..f8f2d215 100644
--- a/nextpy/frontend/components/base/meta.py
+++ b/nextpy/interfaces/web/components/base/meta.py
@@ -7,8 +7,8 @@
from typing import Optional
-from nextpy.frontend.components.base.bare import Bare
-from nextpy.frontend.components.component import Component
+from nextpy.interfaces.web.components.base.bare import Bare
+from nextpy.interfaces.web.components.component import Component
class Title(Component):
diff --git a/nextpy/frontend/components/base/meta.pyi b/nextpy/interfaces/web/components/base/meta.pyi
similarity index 98%
rename from nextpy/frontend/components/base/meta.pyi
rename to nextpy/interfaces/web/components/base/meta.pyi
index ee46ff60..17a002f9 100644
--- a/nextpy/frontend/components/base/meta.pyi
+++ b/nextpy/interfaces/web/components/base/meta.pyi
@@ -9,10 +9,10 @@
from typing import Any, Dict, Literal, Optional, Union, overload
from nextpy.backend.vars import Var, BaseVar, ComputedVar
from nextpy.backend.event import EventChain, EventHandler, EventSpec
-from nextpy.frontend.style import Style
+from nextpy.interfaces.web.style import Style
from typing import Optional
-from nextpy.frontend.components.base.bare import Bare
-from nextpy.frontend.components.component import Component
+from nextpy.interfaces.web.components.base.bare import Bare
+from nextpy.interfaces.web.components.component import Component
class Title(Component):
def render(self) -> dict: ...
diff --git a/nextpy/frontend/components/base/script.py b/nextpy/interfaces/web/components/base/script.py
similarity index 90%
rename from nextpy/frontend/components/base/script.py
rename to nextpy/interfaces/web/components/base/script.py
index 0e4959ae..3dbaa49d 100644
--- a/nextpy/frontend/components/base/script.py
+++ b/nextpy/interfaces/web/components/base/script.py
@@ -10,16 +10,16 @@
from typing import Any, Union
from nextpy.backend.vars import Var
-from nextpy.frontend.components.component import Component
+from nextpy.interfaces.web.components.component import Component
class Script(Component):
"""Next.js script component.
- Note that this component differs from nextpy.frontend.components.base.document.NextScript
+ Note that this component differs from nextpy.interfaces.web.components.base.document.NextScript
in that it is intended for use with custom and user-defined scripts.
- It also differs from nextpy.frontend.components.base.link.ScriptTag, which is the plain
+ It also differs from nextpy.interfaces.web.components.base.link.ScriptTag, which is the plain
HTML