{"id":51529069,"url":"https://github.com/Alisonsantos77/flet-wizards","last_synced_at":"2026-07-27T23:00:34.514Z","repository":{"id":356805398,"uuid":"1234137475","full_name":"Alisonsantos77/flet-wizards","owner":"Alisonsantos77","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-09T21:11:13.000Z","size":201,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-09T21:34:09.545Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Alisonsantos77.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-09T19:51:51.000Z","updated_at":"2026-05-09T21:11:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Alisonsantos77/flet-wizards","commit_stats":null,"previous_names":["alisonsantos77/flet-wizards"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Alisonsantos77/flet-wizards","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alisonsantos77%2Fflet-wizards","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alisonsantos77%2Fflet-wizards/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alisonsantos77%2Fflet-wizards/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alisonsantos77%2Fflet-wizards/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Alisonsantos77","download_url":"https://codeload.github.com/Alisonsantos77/flet-wizards/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alisonsantos77%2Fflet-wizards/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35968098,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-27T02:00:06.776Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-09T01:00:30.566Z","updated_at":"2026-07-27T23:00:34.417Z","avatar_url":"https://github.com/Alisonsantos77.png","language":"Python","funding_links":[],"categories":["Libraries"],"sub_categories":["Community Extensions"],"readme":"# flet-wizards\n\n🌐 [Português](README.pt-BR.md) | **English**\n\n[![PyPI version](https://img.shields.io/pypi/v/flet-wizards.svg)](https://pypi.org/project/flet-wizards/)\n[![Python](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/)\n[![Flet](https://img.shields.io/badge/flet-0.85+-purple.svg)](https://flet.dev)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)\n\nReady-made multi-step wizard templates for Flet — authentication, profile, onboarding and survey.\nEach template is a self-contained `@ft.component` with reactive state, a dark/light theme system and a typed `on_complete` callback.\n\n---\n\n## Installation\n\n```bash\npip install flet-wizards\n```\n\nRequires **Python 3.12+** and **Flet 0.85+**.\n\n---\n\n## Quick start\n\n```python\nimport flet as ft\nfrom flet_wizards import AuthLoginWizard, WizardTheme\n\n\n@ft.component\ndef App() -\u003e ft.Control:\n    async def handle_login(data: dict) -\u003e None:\n        email = data[\"email\"]\n        # authenticate...\n\n    return AuthLoginWizard(\n        theme=WizardTheme.SLATE,\n        on_complete=handle_login,\n    )\n\n\nasync def main(page: ft.Page) -\u003e None:\n    page.padding = 0\n    page.bgcolor = \"#0B0B0F\"\n    page.render(App)\n\n\nft.run(main)\n```\n\nEvery wizard is imported from the package root:\n\n```python\nfrom flet_wizards import (\n    AuthLoginWizard, AuthRegisterWizard, AuthRecoveryWizard, AuthTwoFactorWizard,\n    ProfileSetupWizard, ProfileEditWizard, ProfileAvatarWizard,\n    OnboardingWalkthroughWizard, SurveyFeedbackWizard,\n    WizardTheme,\n)\n```\n\n---\n\n## Available templates\n\n| Category | Class | Steps | Description | Docs |\n|---|---|---|---|---|\n| `auth` | `AuthLoginWizard` | 2 | Email and password login plus confirmation screen. | [docs/auth/login.md](docs/auth/login.md) |\n| `auth` | `AuthRegisterWizard` | 3 | Sign-up with account, profile and review. | [docs/auth/register.md](docs/auth/register.md) |\n| `auth` | `AuthRecoveryWizard` | 3 | Password recovery with a 6-digit code and animated strength meter. | [docs/auth/recovery.md](docs/auth/recovery.md) |\n| `auth` | `AuthTwoFactorWizard` | 1 | Mobile-first 2FA verification with six individual digits. | [docs/auth/two_factor.md](docs/auth/two_factor.md) |\n| `profile` | `ProfileSetupWizard` | 3 | Onboarding with identity, bio, interests and preferences. | [docs/profile/setup.md](docs/profile/setup.md) |\n| `profile` | `ProfileEditWizard` | 3 | Editing flow with a visual diff highlighting only the changed fields. | [docs/profile/edit.md](docs/profile/edit.md) |\n| `profile` | `ProfileAvatarWizard` | 3 | Avatar via URL or initials with live preview. | [docs/profile/avatar.md](docs/profile/avatar.md) |\n| `onboarding` | `OnboardingWalkthroughWizard` | 4 | Mobile fullscreen walkthrough across 4 slides. | [docs/onboarding/walkthrough.md](docs/onboarding/walkthrough.md) |\n| `survey` | `SurveyFeedbackWizard` | 3 | Conversational survey with NPS, comment and category. | [docs/survey/feedback.md](docs/survey/feedback.md) |\n\n`AuthTwoFactorWizard`, `OnboardingWalkthroughWizard` and `SurveyFeedbackWizard` are mobile-first (Android / iOS). When opened on desktop, `PlatformGuard` shows a notice with a \"Continue anyway\" button.\n\n---\n\n## Themes\n\nThe library exposes 7 theme pairs, each with two variants (dark and light), for a total of 14 internal palettes. You pick a theme by the pair name:\n\n| Pair | Dark primary | Light primary |\n|---|---|---|\n| Slate | `#7C6EF6` | `#6366F1` |\n| Emerald | `#6EE7B7` | `#059669` |\n| Rose | `#FB7185` | `#E11D48` |\n| Azure | `#818CF8` | `#4F46E5` |\n| Amber | `#F59E0B` | `#D97706` |\n| Crimson | `#DE1F26` | `#B91C1C` |\n| Frost | `#60A5FA` | `#0052FF` |\n\n### Direct use\n\n```python\nfrom flet_wizards import WizardTheme\n\nAuthLoginWizard(theme=WizardTheme.SLATE)        # dark variant\nAuthLoginWizard(theme=WizardTheme.SLATE_LIGHT)  # light variant\n```\n\n### Automatic detection (system dark/light)\n\n```python\nimport flet as ft\nfrom flet_wizards import AuthLoginWizard, WizardTheme\nfrom flet_wizards.core import resolve_theme\n\n\n@ft.component\ndef App() -\u003e ft.Control:\n    page = ft.context.page\n    theme = resolve_theme(WizardTheme.SLATE, page.theme_mode)\n    return AuthLoginWizard(theme=theme)\n```\n\n`resolve_theme(theme, mode)` returns the correct variant:\n- `ft.ThemeMode.DARK` → dark variant of the pair.\n- `ft.ThemeMode.LIGHT` → light variant of the pair.\n- `ft.ThemeMode.SYSTEM` → reads `page.platform_brightness` and falls back to dark when outside a reactive context.\n\nFull details in [docs/themes.md](docs/themes.md).\n\n---\n\n## Local development preview\n\nTo inspect the wizards visually during development:\n\n```powershell\ngit clone https://github.com/Alisonsantos77/flet-wizards\ncd flet-wizards\nuv sync\nuv run flet run\n```\n\nThis opens a window with all 9 templates side by side, including theme and dark/light mode selectors. The preview code lives in `src/gallery/` and is **not** part of the package published on PyPI — it is a local inspection tool only.\n\n---\n\n## Live demo\n\nSee every template running live in the companion demo project:\n\n[flet-wizards-gallery](https://github.com/Alisonsantos77/flet-wizards-gallery)\n\n---\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for guidance on adding new templates and the project conventions.\n\n---\n\n## License\n\n[MIT](./LICENSE) © Alison Santos\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlisonsantos77%2Fflet-wizards","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAlisonsantos77%2Fflet-wizards","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlisonsantos77%2Fflet-wizards/lists"}