dars-framework 1.0.7__tar.gz → 1.0.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. {dars_framework-1.0.7/dars_framework.egg-info → dars_framework-1.0.9}/PKG-INFO +4 -3
  2. {dars_framework-1.0.7 → dars_framework-1.0.9}/README.md +3 -2
  3. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/all.py +5 -3
  4. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/cli/main.py +3 -0
  5. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/advanced/accordion.py +4 -3
  6. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/advanced/card.py +1 -1
  7. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/advanced/modal.py +1 -1
  8. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/advanced/navbar.py +1 -1
  9. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/advanced/table.py +5 -4
  10. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/advanced/tabs.py +5 -4
  11. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/image.py +1 -1
  12. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/link.py +1 -1
  13. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/page.py +1 -1
  14. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/progressbar.py +4 -3
  15. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/select.py +1 -1
  16. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/spinner.py +2 -1
  17. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/textarea.py +1 -1
  18. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/tooltip.py +5 -4
  19. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/core/app.py +76 -82
  20. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/core/component.py +32 -24
  21. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/core/events.py +11 -10
  22. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/core/properties.py +1 -1
  23. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/exporters/base.py +23 -5
  24. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/exporters/web/html_css_js.py +95 -38
  25. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/scripts/script.py +6 -6
  26. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/examples/basic/flex_layout_responsive.py +1 -1
  27. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/examples/basic/form_components.py +2 -2
  28. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/examples/basic/grid_layout_responsive.py +2 -3
  29. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/examples/basic/hello_world.py +2 -5
  30. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/examples/basic/layout_multipage_demo.py +1 -1
  31. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/examples/basic/multipage_example.py +1 -4
  32. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/examples/basic/pwa_custom_icons.py +7 -3
  33. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/examples/demo/complete_app.py +3 -6
  34. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/version.py +2 -2
  35. {dars_framework-1.0.7 → dars_framework-1.0.9/dars_framework.egg-info}/PKG-INFO +4 -3
  36. {dars_framework-1.0.7 → dars_framework-1.0.9}/pyproject.toml +1 -1
  37. {dars_framework-1.0.7 → dars_framework-1.0.9}/LICENSE +0 -0
  38. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/__init__.py +0 -0
  39. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/cli/__init__.py +0 -0
  40. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/cli/hot_reload.py +0 -0
  41. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/cli/preview.py +0 -0
  42. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/cli/translations.py +0 -0
  43. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/__init__.py +0 -0
  44. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/advanced/__init__.py +0 -0
  45. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/__init__.py +0 -0
  46. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/button.py +0 -0
  47. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/checkbox.py +0 -0
  48. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/container.py +0 -0
  49. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/datepicker.py +0 -0
  50. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/input.py +0 -0
  51. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/radiobutton.py +0 -0
  52. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/slider.py +0 -0
  53. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/basic/text.py +0 -0
  54. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/layout/__init__.py +0 -0
  55. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/layout/anchor.py +0 -0
  56. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/layout/flex.py +0 -0
  57. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/components/layout/grid.py +0 -0
  58. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/core/__init__.py +0 -0
  59. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/docs/__init__.py +0 -0
  60. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/exporters/__init__.py +0 -0
  61. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/exporters/web/OLD/html_css_js_OLD4.py +0 -0
  62. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/exporters/web/OLD/html_css_js_old.py +0 -0
  63. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/exporters/web/OLD/html_css_js_old2.py +0 -0
  64. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/exporters/web/__init__.py +0 -0
  65. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/scripts/__init__.py +0 -0
  66. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/scripts/dscript.py +0 -0
  67. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/__init__.py +0 -0
  68. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/examples/advanced/advanced_modal_demo.py +0 -0
  69. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/examples/advanced/all_components_demo.py +0 -0
  70. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/examples/advanced/dashboard.py +0 -0
  71. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/examples/advanced/modern_web_app.py +0 -0
  72. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/examples/basic/simple_form.py +0 -0
  73. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars/templates/html/__init__.py +0 -0
  74. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars_framework.egg-info/SOURCES.txt +0 -0
  75. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars_framework.egg-info/dependency_links.txt +0 -0
  76. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars_framework.egg-info/entry_points.txt +0 -0
  77. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars_framework.egg-info/requires.txt +0 -0
  78. {dars_framework-1.0.7 → dars_framework-1.0.9}/dars_framework.egg-info/top_level.txt +0 -0
  79. {dars_framework-1.0.7 → dars_framework-1.0.9}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dars-framework
3
- Version: 1.0.7
3
+ Version: 1.0.9
4
4
  Summary: Dars is a Python UI framework for building modern, interactive web apps with only Python code. Write your interface in Python, export it to static HTML/CSS/JS, and deploy anywhere.
5
5
  Author-email: ztamdev <zondax2009@gmail.com>
6
6
  License: MIT License
@@ -35,8 +35,6 @@ Dynamic: license-file
35
35
 
36
36
  # Dars Framework
37
37
 
38
- Dars Landing Page: https://ztamdev.github.io/Dars-Framework/
39
-
40
38
  Dars is a Python UI framework for building modern, interactive web apps with Python code. Write your interface in Python, export it to static HTML/CSS/JS, and deploy anywhere.
41
39
 
42
40
  > Some Javascript or frontend stack required.
@@ -50,6 +48,7 @@ pip install dars-framework
50
48
  - Preview instantly with hot-reload using `app.rTimeCompile()`.
51
49
  - Export your app to static web files with a single CLI command.
52
50
  - Use multipage, layouts, scripts, and more—see docs for advanced features.
51
+ - For mor information visit the [Documentation](dars/docs/index.md)
53
52
 
54
53
  ## Quick Example: Your First App
55
54
 
@@ -109,6 +108,8 @@ if __name__ == "__main__":
109
108
  - [Project Roadmap](ROADMAP.md)
110
109
  - [Getting Started](dars/docs/getting_started.md)
111
110
  - [Components Documentation](dars/docs/components.md)
111
+ - [Custom Components](dars/docs/custom_components.md)
112
+ - [Event Handling](dars/docs/events.md)
112
113
  - [Exporters](dars/docs/exporters.md)
113
114
  - [Scripts System](dars/docs/scripts.md)
114
115
  - [CLI usage and commands](dars/docs/cli.md)
@@ -1,7 +1,5 @@
1
1
  # Dars Framework
2
2
 
3
- Dars Landing Page: https://ztamdev.github.io/Dars-Framework/
4
-
5
3
  Dars is a Python UI framework for building modern, interactive web apps with Python code. Write your interface in Python, export it to static HTML/CSS/JS, and deploy anywhere.
6
4
 
7
5
  > Some Javascript or frontend stack required.
@@ -15,6 +13,7 @@ pip install dars-framework
15
13
  - Preview instantly with hot-reload using `app.rTimeCompile()`.
16
14
  - Export your app to static web files with a single CLI command.
17
15
  - Use multipage, layouts, scripts, and more—see docs for advanced features.
16
+ - For mor information visit the [Documentation](dars/docs/index.md)
18
17
 
19
18
  ## Quick Example: Your First App
20
19
 
@@ -74,6 +73,8 @@ if __name__ == "__main__":
74
73
  - [Project Roadmap](ROADMAP.md)
75
74
  - [Getting Started](dars/docs/getting_started.md)
76
75
  - [Components Documentation](dars/docs/components.md)
76
+ - [Custom Components](dars/docs/custom_components.md)
77
+ - [Event Handling](dars/docs/events.md)
77
78
  - [Exporters](dars/docs/exporters.md)
78
79
  - [Scripts System](dars/docs/scripts.md)
79
80
  - [CLI usage and commands](dars/docs/cli.md)
@@ -42,8 +42,9 @@ from dars.scripts.script import *
42
42
  from dars.scripts.dscript import dScript
43
43
 
44
44
  # Exporters (optional, for direct use)
45
- # from dars.exporters.web.html_css_js import HTMLCSSJSExporter
46
-
45
+ from dars.exporters.web.html_css_js import HTMLCSSJSExporter
46
+ from dars.core.events import EventTypes
47
+ from dars.core.events import EventHandler, EventEmitter, EventManager
47
48
  # CLI (optional, for advanced usage)
48
49
  # from dars.cli.main import main as dars_cli_main
49
50
 
@@ -53,5 +54,6 @@ __all__ = [
53
54
  'RadioButton', 'Select', 'Slider', 'Spinner', 'Text', 'Textarea', 'Tooltip',
54
55
  'Accordion', 'Card', 'Modal', 'Navbar', 'Table', 'Tabs',
55
56
  'GridLayout', 'FlexLayout', 'LayoutBase', 'AnchorPoint',
56
- 'InlineScript', 'FileScript', 'dScript',
57
+ 'InlineScript', 'FileScript', 'dScript', 'HTMLCSSJSExporter',
58
+ 'EventTypes', 'EventHandler', 'EventEmitter', 'EventManager'
57
59
  ]
@@ -425,6 +425,9 @@ container.add_child(subtitle_text)
425
425
  container.add_child(button)
426
426
  app.set_root(container)
427
427
  app.add_script(script)
428
+
429
+ if __name__ == '__main__':
430
+ app.rTimeCompile()
428
431
  """
429
432
  """Initializes a base Dars project, optionally using a template"""
430
433
  if os.path.exists(name):
@@ -3,10 +3,11 @@ from typing import List, Optional
3
3
 
4
4
  class Accordion(Component):
5
5
  """
6
- Componente Accordion para mostrar secciones colapsables.
7
- sections: Lista de tuplas (título, contenido)
8
- open_indices: Lista de índices abiertos (opcional)
6
+ Accordion component to display collapsible sections.
7
+ sections: List of tuples (title, content)
8
+ open_indices: List of open indices (optional)
9
9
  """
10
+
10
11
  def __init__(self, sections: List[tuple], open_indices: Optional[List[int]]=None, minimum_logic: bool = True, **props):
11
12
  super().__init__(**props)
12
13
  self.sections = sections
@@ -2,7 +2,7 @@ from dars.core.component import Component
2
2
  from typing import Optional, Dict, Any, List
3
3
 
4
4
  class Card(Component):
5
- """Componente para mostrar contenido en una tarjeta."""
5
+ """Component to display content in a card."""
6
6
  def __init__(
7
7
  self,
8
8
  children: Optional[List[Component]] = None,
@@ -2,7 +2,7 @@ from dars.core.component import Component
2
2
  from typing import Optional, Dict, Any, List
3
3
 
4
4
  class Modal(Component):
5
- """Componente para mostrar contenido en un modal."""
5
+ """Component to display content in a modal."""
6
6
  def __init__(
7
7
  self,
8
8
  children: Optional[List[Component]] = None,
@@ -2,7 +2,7 @@ from dars.core.component import Component
2
2
  from typing import Optional, Dict, Any, List
3
3
 
4
4
  class Navbar(Component):
5
- """Componente para crear barras de navegación."""
5
+ """Component to create navigation bars."""
6
6
  def __init__(
7
7
  self,
8
8
  *children,
@@ -3,11 +3,12 @@ from typing import List, Dict, Any, Optional
3
3
 
4
4
  class Table(Component):
5
5
  """
6
- Componente para mostrar datos tabulares con columnas, datos, paginación, orden y filtrado.
7
- columns: Lista de diccionarios con claves 'title', 'field', 'sortable', 'width', etc.
8
- data: Lista de diccionarios (cada uno es una fila).
9
- page_size: Número de filas por página (opcional).
6
+ Component to display tabular data with columns, data, pagination, sorting, and filtering.
7
+ columns: List of dictionaries with keys 'title', 'field', 'sortable', 'width', etc.
8
+ data: List of dictionaries (each one is a row)
9
+ page_size: Number of rows per page (optional)
10
10
  """
11
+
11
12
  def __init__(self, columns: List[Dict[str, Any]], data: List[Dict[str, Any]], page_size: Optional[int]=None, **props):
12
13
  super().__init__(**props)
13
14
  self.columns = columns
@@ -3,11 +3,12 @@ from typing import List, Optional
3
3
 
4
4
  class Tabs(Component):
5
5
  """
6
- Componente de navegación por pestañas.
7
- tabs: Lista de títulos de pestañas
8
- panels: Lista de componentes o strings (contenido de cada pestaña)
9
- selected: Índice de la pestaña activa (opcional)
6
+ Tab navigation component.
7
+ tabs: List of tab titles
8
+ panels: List of components or strings (content of each tab)
9
+ selected: Index of the active tab (optional)
10
10
  """
11
+
11
12
  def __init__(self, tabs: List[str], panels: List[Component], selected: Optional[int]=0, minimum_logic: bool = True, **props):
12
13
  super().__init__(**props)
13
14
  self.tabs = tabs
@@ -2,7 +2,7 @@ from dars.core.component import Component
2
2
  from typing import Optional, Dict, Any
3
3
 
4
4
  class Image(Component):
5
- """Componente para mostrar imágenes."""
5
+ """Component to display images."""
6
6
  def __init__(
7
7
  self,
8
8
  src: str,
@@ -2,7 +2,7 @@ from dars.core.component import Component
2
2
  from typing import Optional, Dict, Any
3
3
 
4
4
  class Link(Component):
5
- """Componente para crear enlaces."""
5
+ """Component to create links."""
6
6
  def __init__(
7
7
  self,
8
8
  text: str,
@@ -2,7 +2,7 @@ from dars.core.component import Component
2
2
  from typing import Optional, Dict, Any, List
3
3
 
4
4
  class Page(Component):
5
- """Componente raíz para páginas en apps multipágina Dars. Permite pasar hijos como argumentos posicionales y scripts por página."""
5
+ """Root component for pages in Dars multipage apps. Allows passing children as positional arguments and scripts per page."""
6
6
  def __init__(self, *children: Component, id: Optional[str] = None, class_name: Optional[str] = None, style: Optional[Dict[str, Any]] = None):
7
7
  super().__init__(id=id, class_name=class_name, style=style)
8
8
  self.scripts = []
@@ -3,10 +3,11 @@ from typing import Optional
3
3
 
4
4
  class ProgressBar(Component):
5
5
  """
6
- Barra de progreso visual.
7
- value: valor actual (0-100)
8
- max_value: valor máximo (default 100)
6
+ Visual progress bar.
7
+ value: current value (0-100)
8
+ max_value: maximum value (default 100)
9
9
  """
10
+
10
11
  def __init__(self, value: int, max_value: int = 100, **props):
11
12
  super().__init__(**props)
12
13
  self.value = value
@@ -4,7 +4,7 @@ from dars.core.events import EventTypes
4
4
  from typing import Optional, Union, Dict, Any, Callable, List
5
5
 
6
6
  class SelectOption:
7
- """Clase para representar una opción del select"""
7
+ """Class to represent a select option"""
8
8
  def __init__(self, value: str, label: str, disabled: bool = False):
9
9
  self.value = value
10
10
  self.label = label
@@ -2,8 +2,9 @@ from dars.core.component import Component
2
2
 
3
3
  class Spinner(Component):
4
4
  """
5
- Indicador de carga circular (spinner).
5
+ Circular loading indicator (spinner).
6
6
  """
7
+
7
8
  def __init__(self, **props):
8
9
  super().__init__(**props)
9
10
 
@@ -2,7 +2,7 @@ from dars.core.component import Component
2
2
  from typing import Optional, Dict, Any
3
3
 
4
4
  class Textarea(Component):
5
- """Componente para áreas de texto multilínea."""
5
+ """Component for multiline text areas."""
6
6
  def __init__(
7
7
  self,
8
8
  value: str = "",
@@ -3,11 +3,12 @@ from typing import Optional
3
3
 
4
4
  class Tooltip(Component):
5
5
  """
6
- Tooltip: cuadro de información al pasar el cursor.
7
- text: texto a mostrar
8
- child: componente o HTML envuelto
9
- position: top, right, bottom, left (opcional)
6
+ Tooltip: information box on hover.
7
+ text: text to display
8
+ child: wrapped component or HTML
9
+ position: top, right, bottom, left (optional)
10
10
  """
11
+
11
12
  def __init__(self, text: str, child: Component, position: Optional[str] = "top", **props):
12
13
  super().__init__(**props)
13
14
  self.text = text