SaaS-FrameWork 0.1.1__tar.gz → 0.1.3__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 (95) hide show
  1. {saas_framework-0.1.1 → saas_framework-0.1.3}/MANIFEST.in +16 -16
  2. {saas_framework-0.1.1 → saas_framework-0.1.3}/PKG-INFO +21 -13
  3. {saas_framework-0.1.1 → saas_framework-0.1.3}/README.md +133 -127
  4. {saas_framework-0.1.1 → saas_framework-0.1.3}/SaaS_FrameWork.egg-info/SOURCES.txt +3 -0
  5. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/__init__.py +125 -119
  6. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/buttons/DEx_BtnFAB.py +37 -37
  7. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/buttons/DEx_BtnFilled.py +20 -20
  8. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/buttons/DEx_BtnGhost.py +23 -20
  9. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/buttons/DEx_BtnIcon.py +18 -18
  10. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/buttons/DEx_BtnPrimary.py +21 -21
  11. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/buttons/DEx_BtnSegmented.py +45 -45
  12. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/buttons/DEx_BtnText.py +22 -19
  13. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/buttons/DEx_BtnTonal.py +20 -20
  14. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/buttons/DEx_MenuBar.py +61 -61
  15. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/buttons/DEx_PopupMenu.py +43 -43
  16. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/cards/DEx_Card.py +23 -23
  17. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/cards/DEx_ContactCard.py +52 -52
  18. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/cards/DEx_MetricCard.py +36 -36
  19. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/data/DEx_DataTable.py +98 -82
  20. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/data/DEx_ExpansionPanel.py +39 -39
  21. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/data/DEx_ExpansionTile.py +29 -29
  22. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/data/DEx_GridView.py +65 -65
  23. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/data/DEx_ListTile.py +27 -27
  24. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/data/DEx_ListView.py +65 -65
  25. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/data/DEx_PipelineColumn.py +74 -74
  26. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/data/DEx_TreeView.py +769 -536
  27. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/feedback/DEx_AlertDialog.py +32 -26
  28. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/feedback/DEx_Banner.py +19 -19
  29. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/feedback/DEx_BottomSheet.py +39 -37
  30. saas_framework-0.1.3/components/feedback/DEx_Notify.py +17 -0
  31. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/feedback/DEx_ProgressBar.py +34 -34
  32. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/feedback/DEx_ProgressRing.py +52 -52
  33. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/feedback/DEx_Shimmer.py +84 -84
  34. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/feedback/DEx_Tooltip.py +24 -24
  35. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/inputs/DEx_AutoComplete.py +29 -29
  36. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/inputs/DEx_Checkbox.py +27 -27
  37. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/inputs/DEx_Chip.py +33 -33
  38. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/inputs/DEx_DatePicker.py +74 -72
  39. saas_framework-0.1.3/components/inputs/DEx_Dropdown.py +41 -0
  40. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/inputs/DEx_FilePicker.py +70 -70
  41. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/inputs/DEx_Radio.py +37 -37
  42. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/inputs/DEx_SearchBar.py +37 -37
  43. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/inputs/DEx_SearchField.py +9 -9
  44. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/inputs/DEx_Slider.py +49 -49
  45. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/inputs/DEx_Switch.py +22 -22
  46. saas_framework-0.1.3/components/inputs/DEx_TagInput.py +175 -0
  47. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/inputs/DEx_TextField.py +45 -29
  48. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/inputs/DEx_TimePicker.py +71 -71
  49. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/layout/DEx_AnimatedSwitcher.py +43 -43
  50. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/layout/DEx_AppBar.py +48 -48
  51. saas_framework-0.1.3/components/layout/DEx_AppShell.py +137 -0
  52. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/layout/DEx_Draggable.py +67 -67
  53. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/layout/DEx_GestureDetector.py +52 -52
  54. saas_framework-0.1.3/components/layout/DEx_Header.py +80 -0
  55. saas_framework-0.1.3/components/layout/DEx_Marquee.py +108 -0
  56. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/layout/DEx_NavItem.py +80 -61
  57. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/layout/DEx_NavigationBar.py +30 -30
  58. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/layout/DEx_NavigationDrawer.py +60 -60
  59. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/layout/DEx_NavigationRail.py +42 -42
  60. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/layout/DEx_ResponsiveRow.py +42 -42
  61. saas_framework-0.1.3/components/layout/DEx_Sidebar.py +177 -0
  62. saas_framework-0.1.3/components/layout/DEx_Splitter.py +127 -0
  63. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/layout/DEx_Stack.py +73 -73
  64. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/layout/DEx_Tabs.py +110 -110
  65. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/metadata.py +104 -98
  66. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/primitives/DEx_Avatar.py +87 -87
  67. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/primitives/DEx_Badge.py +18 -18
  68. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/primitives/DEx_Divider.py +13 -13
  69. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/primitives/DEx_Icon.py +46 -46
  70. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/primitives/DEx_Image.py +55 -55
  71. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/primitives/DEx_Markdown.py +21 -21
  72. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/primitives/DEx_SectionEyebrow.py +22 -22
  73. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/primitives/DEx_StatusDot.py +8 -8
  74. saas_framework-0.1.3/components/project.py +58 -0
  75. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/theme/DEx_ColorThemes.py +469 -375
  76. saas_framework-0.1.3/components/theme/DEx_Theme.py +196 -0
  77. saas_framework-0.1.3/components/theme/__init__.py +19 -0
  78. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/versioning.py +103 -103
  79. {saas_framework-0.1.1 → saas_framework-0.1.3}/pyproject.toml +50 -47
  80. saas_framework-0.1.1/components/feedback/DEx_Notify.py +0 -15
  81. saas_framework-0.1.1/components/inputs/DEx_Dropdown.py +0 -25
  82. saas_framework-0.1.1/components/layout/DEx_AppShell.py +0 -80
  83. saas_framework-0.1.1/components/layout/DEx_Header.py +0 -57
  84. saas_framework-0.1.1/components/layout/DEx_Sidebar.py +0 -131
  85. saas_framework-0.1.1/components/project.py +0 -23
  86. saas_framework-0.1.1/components/theme/DEx_Theme.py +0 -136
  87. saas_framework-0.1.1/components/theme/__init__.py +0 -4
  88. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/buttons/__init__.py +0 -0
  89. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/cards/__init__.py +0 -0
  90. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/data/__init__.py +0 -0
  91. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/feedback/__init__.py +0 -0
  92. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/inputs/__init__.py +0 -0
  93. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/layout/__init__.py +0 -0
  94. {saas_framework-0.1.1 → saas_framework-0.1.3}/components/primitives/__init__.py +0 -0
  95. {saas_framework-0.1.1 → saas_framework-0.1.3}/setup.cfg +0 -0
@@ -1,16 +1,16 @@
1
- include README.md
2
- include pyproject.toml
3
- recursive-include components *.py
4
- recursive-exclude * __pycache__ *.py[cod]
5
- prune .github
6
- prune .pytest_cache
7
- prune .pytest_tmp
8
- prune _base
9
- prune build
10
- prune catalog
11
- prune *.egg-info
12
- prune dist
13
- prune docs
14
- prune tests
15
- prune use_cases
16
- exclude files.zip
1
+ include README.md
2
+ include pyproject.toml
3
+ recursive-include components *.py
4
+ recursive-exclude * __pycache__ *.py[cod]
5
+ prune .github
6
+ prune .pytest_cache
7
+ prune .pytest_tmp
8
+ prune _base
9
+ prune build
10
+ prune catalog
11
+ prune *.egg-info
12
+ prune dist
13
+ prune Diretrizes
14
+ prune tests
15
+ prune use_cases
16
+ exclude files.zip
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SaaS-FrameWork
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: SaaS-FrameWork - sistema de componentes reutilizaveis para apps SaaS construido com Python e Flet
5
5
  Author-email: Almir Duarte <almir.jg@gmail.com>
6
6
  License-Expression: MIT
@@ -13,6 +13,8 @@ Classifier: Topic :: Software Development :: User Interfaces
13
13
  Requires-Python: >=3.13
14
14
  Description-Content-Type: text/markdown
15
15
  Requires-Dist: flet==0.84.0
16
+ Provides-Extra: web
17
+ Requires-Dist: flet-web==0.84.0; extra == "web"
16
18
  Provides-Extra: dev
17
19
  Requires-Dist: flet==0.84.0; extra == "dev"
18
20
  Requires-Dist: pytest<10,>=9.1; extra == "dev"
@@ -86,7 +88,7 @@ The following folders are repository assets and are intentionally excluded from
86
88
 
87
89
  - `catalog/`: local visual catalog and inspection tool.
88
90
  - `use_cases/`: executable examples for development and documentation.
89
- - `docs/`: component documentation and generated structure images.
91
+ - `Diretrizes/`: project guidelines — prompts, design/component documentation, management artifacts, and QA evidence.
90
92
  - `_base/`: preserved reference material.
91
93
 
92
94
  This separation is enforced in `pyproject.toml` through `tool.setuptools.packages.find`.
@@ -98,15 +100,15 @@ Adding a public component requires all of the following:
98
100
  - entry in `components/metadata.py`
99
101
  - public export in `components/__init__.py`
100
102
  - use case `use_cases/UC_<Name>_01.py`
101
- - documentation `docs/components/Documentação/DEx_<Name>.md`
102
- - four structure images in `docs/components/images/`
103
+ - documentation `Diretrizes/design/components/Documentação/DEx_<Name>.md`
104
+ - four structure images in `Diretrizes/design/components/images/`
103
105
 
104
106
  The repository governance tests fail when this contract is broken.
105
107
 
106
108
  ## Folder Structure
107
109
 
108
110
  ```text
109
- DEx-FW_4/
111
+ SaaS-Framework/
110
112
  |-- _base/ preserved original reference
111
113
  |-- components/
112
114
  | |-- buttons/
@@ -126,8 +128,14 @@ DEx-FW_4/
126
128
  | |-- UC_TreeView_01.py
127
129
  | `-- UC_ColorThemes_01.py
128
130
  |-- catalog/
129
- | `-- main.py
130
- |-- docs/
131
+ | `-- catalog.py
132
+ |-- Diretrizes/
133
+ | |-- Dados/ data artifacts (DDL, DML, scripts)
134
+ | |-- Prompt/ prompt files
135
+ | |-- design/ design references and component docs/images
136
+ | | `-- components/
137
+ | |-- gestao/ roadmap, policies, and management reports
138
+ | `-- qa/ QA evidence
131
139
  |-- AGENTS.md
132
140
  |-- pyproject.toml
133
141
  `-- README.md
@@ -149,18 +157,18 @@ Documented local virtual environment:
149
157
  C:\Python\venv\.venv_313_FW
150
158
  ```
151
159
 
152
- Run the catalog:
160
+ Run the catalog as desktop app:
153
161
 
154
162
  ```cmd
155
163
  call C:\Python\venv\.venv_313_FW\Scripts\activate.bat
156
- flet run catalog/main.py
164
+ flet run catalog/catalog.py
157
165
  ```
158
166
 
159
- Run as web catalog:
167
+ Run as web catalog only when browser validation is required:
160
168
 
161
169
  ```cmd
162
170
  call C:\Python\venv\.venv_313_FW\Scripts\activate.bat
163
- flet run --web --port 8550 catalog/main.py
171
+ flet run --web --port 8550 catalog/catalog.py
164
172
  ```
165
173
 
166
174
  Run a use case:
@@ -219,12 +227,12 @@ The script builds the package, checks the artifacts, and uploads to TestPyPI or
219
227
  With the documented Flet environment:
220
228
 
221
229
  ```cmd
222
- C:\Python\venv\.venv_313_FW\Scripts\python.exe -c "import catalog.main as c; print(c.PROJECT_VERSION)"
230
+ C:\Python\venv\.venv_313_FW\Scripts\python.exe -c "import catalog.constants as c; print(c.PROJECT_VERSION)"
223
231
  ```
224
232
 
225
233
  ## Catalog
226
234
 
227
- The catalog entry point is `catalog/main.py`.
235
+ The catalog entry point is `catalog/catalog.py`.
228
236
 
229
237
  It follows the project window structure:
230
238
 
@@ -1,89 +1,89 @@
1
- # SaaS-FrameWork
1
+ # SaaS-FrameWork
2
2
 
3
3
  Python 3.13 + Flet design framework for reusable SaaS UI components.
4
4
 
5
5
  The project provides versioned UI components, isolated use cases, and a navigable component catalog.
6
6
 
7
- ## Versioning
8
-
9
- Library, component, and release branch versions follow the same `vv.rr.bb` rule.
10
-
11
- The library version is declared in `pyproject.toml`:
12
-
13
- ```toml
14
- [project]
15
- version = "0.1.1"
16
- ```
17
-
18
- Use cases and the catalog header read this version through `components/project.py`. Do not duplicate the project version manually in UI files.
19
-
20
- Each public component exposes its own version:
21
-
22
- ```python
23
- COMPONENT_VERSION = "0.0.1"
24
- ```
25
-
26
- Release branches must use the same format as the branch name:
27
-
28
- ```text
29
- 0.1.1
30
- ```
31
-
32
- Do not prefix release branch names with `v`, `release/`, or any other text.
33
-
34
- The accepted format is:
35
-
36
- ```text
37
- vv.rr.bb
38
- 0.0.0 through 99.99.99
7
+ ## Versioning
8
+
9
+ Library, component, and release branch versions follow the same `vv.rr.bb` rule.
10
+
11
+ The library version is declared in `pyproject.toml`:
12
+
13
+ ```toml
14
+ [project]
15
+ version = "0.1.1"
39
16
  ```
40
17
 
41
- Segment meaning:
42
-
43
- - `vv`: version. Increment for large changes that alter visual form, public API, or how the library/component is used.
44
- - `rr`: release. Increment for small scoped changes, such as a specific behavior or item adjustment.
45
- - `bb`: bug correction. Increment when a bug is fixed.
46
-
47
- Every library or component change must increment the relevant version. Each segment is incremented by one numeral. When `bb` reaches `99`, the next `bb` increment increments `rr` and resets `bb` to `0`. When `rr` reaches `99`, the next `rr` increment increments `vv` and resets `rr` to `0`.
48
-
49
- Version helpers live in `components/versioning.py`:
50
-
51
- - `validate_version(version)`
52
- - `validate_branch_version(branch_name)`
53
- - `bump_version(version, segment="bugfix")`
54
- - `ComponentMeta`
55
-
56
- Catalog metadata lives in `components/metadata.py` and is the source of truth for component name, group, version, and description.
57
-
58
- ## Package Boundary
59
-
60
- The distributable Python library is the `components` package.
61
-
62
- The following folders are repository assets and are intentionally excluded from the wheel:
63
-
64
- - `catalog/`: local visual catalog and inspection tool.
65
- - `use_cases/`: executable examples for development and documentation.
66
- - `docs/`: component documentation and generated structure images.
67
- - `_base/`: preserved reference material.
68
-
69
- This separation is enforced in `pyproject.toml` through `tool.setuptools.packages.find`.
70
-
71
- Adding a public component requires all of the following:
72
-
73
- - source file under `components/**/DEx_<Name>.py`
74
- - `COMPONENT_VERSION` in the source file
75
- - entry in `components/metadata.py`
76
- - public export in `components/__init__.py`
77
- - use case `use_cases/UC_<Name>_01.py`
78
- - documentation `docs/components/Documentação/DEx_<Name>.md`
79
- - four structure images in `docs/components/images/`
80
-
81
- The repository governance tests fail when this contract is broken.
18
+ Use cases and the catalog header read this version through `components/project.py`. Do not duplicate the project version manually in UI files.
19
+
20
+ Each public component exposes its own version:
21
+
22
+ ```python
23
+ COMPONENT_VERSION = "0.0.1"
24
+ ```
25
+
26
+ Release branches must use the same format as the branch name:
27
+
28
+ ```text
29
+ 0.1.1
30
+ ```
31
+
32
+ Do not prefix release branch names with `v`, `release/`, or any other text.
33
+
34
+ The accepted format is:
35
+
36
+ ```text
37
+ vv.rr.bb
38
+ 0.0.0 through 99.99.99
39
+ ```
40
+
41
+ Segment meaning:
42
+
43
+ - `vv`: version. Increment for large changes that alter visual form, public API, or how the library/component is used.
44
+ - `rr`: release. Increment for small scoped changes, such as a specific behavior or item adjustment.
45
+ - `bb`: bug correction. Increment when a bug is fixed.
46
+
47
+ Every library or component change must increment the relevant version. Each segment is incremented by one numeral. When `bb` reaches `99`, the next `bb` increment increments `rr` and resets `bb` to `0`. When `rr` reaches `99`, the next `rr` increment increments `vv` and resets `rr` to `0`.
48
+
49
+ Version helpers live in `components/versioning.py`:
50
+
51
+ - `validate_version(version)`
52
+ - `validate_branch_version(branch_name)`
53
+ - `bump_version(version, segment="bugfix")`
54
+ - `ComponentMeta`
55
+
56
+ Catalog metadata lives in `components/metadata.py` and is the source of truth for component name, group, version, and description.
57
+
58
+ ## Package Boundary
59
+
60
+ The distributable Python library is the `components` package.
61
+
62
+ The following folders are repository assets and are intentionally excluded from the wheel:
63
+
64
+ - `catalog/`: local visual catalog and inspection tool.
65
+ - `use_cases/`: executable examples for development and documentation.
66
+ - `Diretrizes/`: project guidelines — prompts, design/component documentation, management artifacts, and QA evidence.
67
+ - `_base/`: preserved reference material.
68
+
69
+ This separation is enforced in `pyproject.toml` through `tool.setuptools.packages.find`.
70
+
71
+ Adding a public component requires all of the following:
72
+
73
+ - source file under `components/**/DEx_<Name>.py`
74
+ - `COMPONENT_VERSION` in the source file
75
+ - entry in `components/metadata.py`
76
+ - public export in `components/__init__.py`
77
+ - use case `use_cases/UC_<Name>_01.py`
78
+ - documentation `Diretrizes/design/components/Documentação/DEx_<Name>.md`
79
+ - four structure images in `Diretrizes/design/components/images/`
80
+
81
+ The repository governance tests fail when this contract is broken.
82
82
 
83
83
  ## Folder Structure
84
84
 
85
85
  ```text
86
- DEx-FW_4/
86
+ SaaS-Framework/
87
87
  |-- _base/ preserved original reference
88
88
  |-- components/
89
89
  | |-- buttons/
@@ -103,8 +103,14 @@ DEx-FW_4/
103
103
  | |-- UC_TreeView_01.py
104
104
  | `-- UC_ColorThemes_01.py
105
105
  |-- catalog/
106
- | `-- main.py
107
- |-- docs/
106
+ | `-- catalog.py
107
+ |-- Diretrizes/
108
+ | |-- Dados/ data artifacts (DDL, DML, scripts)
109
+ | |-- Prompt/ prompt files
110
+ | |-- design/ design references and component docs/images
111
+ | | `-- components/
112
+ | |-- gestao/ roadmap, policies, and management reports
113
+ | `-- qa/ QA evidence
108
114
  |-- AGENTS.md
109
115
  |-- pyproject.toml
110
116
  `-- README.md
@@ -126,18 +132,18 @@ Documented local virtual environment:
126
132
  C:\Python\venv\.venv_313_FW
127
133
  ```
128
134
 
129
- Run the catalog:
135
+ Run the catalog as desktop app:
130
136
 
131
137
  ```cmd
132
138
  call C:\Python\venv\.venv_313_FW\Scripts\activate.bat
133
- flet run catalog/main.py
139
+ flet run catalog/catalog.py
134
140
  ```
135
141
 
136
- Run as web catalog:
142
+ Run as web catalog only when browser validation is required:
137
143
 
138
144
  ```cmd
139
145
  call C:\Python\venv\.venv_313_FW\Scripts\activate.bat
140
- flet run --web --port 8550 catalog/main.py
146
+ flet run --web --port 8550 catalog/catalog.py
141
147
  ```
142
148
 
143
149
  Run a use case:
@@ -147,61 +153,61 @@ call C:\Python\venv\.venv_313_FW\Scripts\activate.bat
147
153
  flet run use_cases/UC_MetricCard_01.py
148
154
  ```
149
155
 
150
- ## Validation
151
-
152
- Quick syntax validation:
156
+ ## Validation
157
+
158
+ Quick syntax validation:
159
+
160
+ ```cmd
161
+ python -m compileall components use_cases catalog
162
+ ```
163
+
164
+ Run the automated test suite:
165
+
166
+ ```cmd
167
+ C:\Python\venv\.venv_313_FW\Scripts\python.exe -m pytest -q
168
+ ```
169
+
170
+ Run optional visual screenshots:
171
+
172
+ ```powershell
173
+ C:\Python\venv\.venv_313_FW\Scripts\python.exe -m playwright install chromium
174
+ $env:DEX_RUN_VISUAL_TESTS="1"
175
+ C:\Python\venv\.venv_313_FW\Scripts\python.exe -m pytest tests/test_visual_screenshots.py -q
176
+ ```
177
+
178
+ Build and validate package metadata:
153
179
 
154
180
  ```cmd
155
- python -m compileall components use_cases catalog
156
- ```
157
-
158
- Run the automated test suite:
159
-
160
- ```cmd
161
- C:\Python\venv\.venv_313_FW\Scripts\python.exe -m pytest -q
162
- ```
163
-
164
- Run optional visual screenshots:
165
-
166
- ```powershell
167
- C:\Python\venv\.venv_313_FW\Scripts\python.exe -m playwright install chromium
168
- $env:DEX_RUN_VISUAL_TESTS="1"
169
- C:\Python\venv\.venv_313_FW\Scripts\python.exe -m pytest tests/test_visual_screenshots.py -q
170
- ```
171
-
172
- Build and validate package metadata:
173
-
174
- ```cmd
175
- C:\Python\venv\.venv_313_FW\Scripts\python.exe -m build
176
- C:\Python\venv\.venv_313_FW\Scripts\python.exe -m twine check dist/*
177
- ```
178
-
179
- Publish the package:
180
-
181
- ```powershell
182
- .\tools\publish_package.ps1 --test
183
- .\tools\publish_package.ps1 --prod
184
- .\tools\publish_package.ps1 --both
185
- .\tools\publish_package.ps1
186
- ```
187
-
188
- Without flags, the script asks:
189
-
190
- 1. teste
191
- 2. prod
192
- 3. ambos
193
-
194
- The script builds the package, checks the artifacts, and uploads to TestPyPI or PyPI based on the chosen destination.
181
+ C:\Python\venv\.venv_313_FW\Scripts\python.exe -m build
182
+ C:\Python\venv\.venv_313_FW\Scripts\python.exe -m twine check dist/*
183
+ ```
184
+
185
+ Publish the package:
186
+
187
+ ```powershell
188
+ .\tools\publish_package.ps1 --test
189
+ .\tools\publish_package.ps1 --prod
190
+ .\tools\publish_package.ps1 --both
191
+ .\tools\publish_package.ps1
192
+ ```
193
+
194
+ Without flags, the script asks:
195
+
196
+ 1. teste
197
+ 2. prod
198
+ 3. ambos
199
+
200
+ The script builds the package, checks the artifacts, and uploads to TestPyPI or PyPI based on the chosen destination.
195
201
 
196
202
  With the documented Flet environment:
197
203
 
198
204
  ```cmd
199
- C:\Python\venv\.venv_313_FW\Scripts\python.exe -c "import catalog.main as c; print(c.PROJECT_VERSION)"
205
+ C:\Python\venv\.venv_313_FW\Scripts\python.exe -c "import catalog.constants as c; print(c.PROJECT_VERSION)"
200
206
  ```
201
207
 
202
208
  ## Catalog
203
209
 
204
- The catalog entry point is `catalog/main.py`.
210
+ The catalog entry point is `catalog/catalog.py`.
205
211
 
206
212
  It follows the project window structure:
207
213
 
@@ -418,7 +424,7 @@ Controles de feedback do usuário para estados transitórios.
418
424
  ## Adding a Component
419
425
 
420
426
  1. Create the component under the correct `components/<group>/` folder.
421
- 2. Add `COMPONENT_VERSION = "0.0.1"` for a new component.
427
+ 2. Add `COMPONENT_VERSION = "0.0.1"` for a new component.
422
428
  3. Add a docstring to the public component factory or class.
423
429
  4. Add metadata to `components/metadata.py`.
424
430
  5. Create an isolated use case in `use_cases/`.
@@ -49,6 +49,7 @@ components/inputs/DEx_SearchBar.py
49
49
  components/inputs/DEx_SearchField.py
50
50
  components/inputs/DEx_Slider.py
51
51
  components/inputs/DEx_Switch.py
52
+ components/inputs/DEx_TagInput.py
52
53
  components/inputs/DEx_TextField.py
53
54
  components/inputs/DEx_TimePicker.py
54
55
  components/inputs/__init__.py
@@ -58,12 +59,14 @@ components/layout/DEx_AppShell.py
58
59
  components/layout/DEx_Draggable.py
59
60
  components/layout/DEx_GestureDetector.py
60
61
  components/layout/DEx_Header.py
62
+ components/layout/DEx_Marquee.py
61
63
  components/layout/DEx_NavItem.py
62
64
  components/layout/DEx_NavigationBar.py
63
65
  components/layout/DEx_NavigationDrawer.py
64
66
  components/layout/DEx_NavigationRail.py
65
67
  components/layout/DEx_ResponsiveRow.py
66
68
  components/layout/DEx_Sidebar.py
69
+ components/layout/DEx_Splitter.py
67
70
  components/layout/DEx_Stack.py
68
71
  components/layout/DEx_Tabs.py
69
72
  components/layout/__init__.py