Metadata-Version: 2.5
Name: rfds
Version: 1.0.0
Summary: Reflex Finance Design System: tokens, components, patterns and templates for Reflex 0.9 finance apps
Author: RFDS maintainers
License-Expression: Apache-2.0
License-File: LICENSE
License-File: NOTICE
License-File: src/rfds/styles/fonts/OFL.txt
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: babel<3,>=2.18
Requires-Dist: pydantic<3,>=2.12
Requires-Dist: reflex-components-recharts>=0.9.4
Requires-Dist: reflex<0.10,>=0.9.12
Provides-Extra: actuarial
Requires-Dist: chainladder>=0.10; extra == 'actuarial'
Provides-Extra: ai
Requires-Dist: anthropic<2,>=1.8; extra == 'ai'
Provides-Extra: calc
Requires-Dist: pyxirr>=0.10.8; extra == 'calc'
Provides-Extra: calendars
Requires-Dist: exchange-calendars>=4.13.2; extra == 'calendars'
Requires-Dist: holidays>=0.105; extra == 'calendars'
Provides-Extra: db
Requires-Dist: reflex[db]<0.10,>=0.9.12; extra == 'db'
Provides-Extra: docs
Requires-Dist: drafthorse>=2025.2; extra == 'docs'
Requires-Dist: factur-x>=3.1; extra == 'docs'
Requires-Dist: jinja2>=3.1; extra == 'docs'
Requires-Dist: matplotlib>=3.9; extra == 'docs'
Requires-Dist: mjml>=0.12; extra == 'docs'
Requires-Dist: pikepdf>=10.14; extra == 'docs'
Requires-Dist: saxonche>=13; extra == 'docs'
Requires-Dist: typst>=0.15; extra == 'docs'
Requires-Dist: weasyprint>=70; extra == 'docs'
Provides-Extra: enterprise
Requires-Dist: aiosqlite>=0.22; extra == 'enterprise'
Requires-Dist: greenlet>=3.1; extra == 'enterprise'
Requires-Dist: pyyaml>=6; extra == 'enterprise'
Requires-Dist: reflex-enterprise[mcp]>=0.9.6; extra == 'enterprise'
Provides-Extra: export
Requires-Dist: openpyxl>=3.1; extra == 'export'
Provides-Extra: i18n-tools
Requires-Dist: babel<3,>=2.18; extra == 'i18n-tools'
Requires-Dist: polib>=1.2; extra == 'i18n-tools'
Provides-Extra: mcp
Requires-Dist: mcp>=1.30; extra == 'mcp'
Provides-Extra: otel
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.30; extra == 'otel'
Requires-Dist: opentelemetry-sdk>=1.30; extra == 'otel'
Requires-Dist: reflex-otel>=0.1; extra == 'otel'
Provides-Extra: plotly
Requires-Dist: plotly<7,>=6; extra == 'plotly'
Provides-Extra: test
Requires-Dist: axe-playwright-python>=0.1.8; extra == 'test'
Requires-Dist: pillow; extra == 'test'
Requires-Dist: psutil>=7; extra == 'test'
Requires-Dist: pytest-playwright; extra == 'test'
Requires-Dist: pytest-playwright-visual-snapshot>=0.5.1; extra == 'test'
Requires-Dist: pytest>=9; extra == 'test'
Requires-Dist: reflex[testing]<0.10,>=0.9.12; extra == 'test'
Provides-Extra: tools
Requires-Dist: copier>=9; extra == 'tools'
Requires-Dist: libcst>=1.4; extra == 'tools'
Requires-Dist: polib>=1.2; extra == 'tools'
Description-Content-Type: text/markdown

# RFDS — Reflex Finance Design System

Design system and Python component library for finance applications built with [Reflex](https://reflex.dev) 0.9.12:
DTCG design tokens compiled to CSS, a Radix-Themes-based component set, patterns and page templates, formatting and
data contracts for money, and the tooling (lint, tests, budgets) that keeps apps conformant.

```
packages/rfds/          the `rfds` package (src/rfds) and its tests
apps/kitchen_sink/      every public API item rendered once, per work package (/wp01/foundations, …)
tools/                  generators and CI checks (tokens, exports, fonts, bundle, CSS layers, import boundaries)
.github/workflows/      ci, quality gate, perf, nightly reflex@main, release
```

## Quick start (app)

```python
# rxconfig.py
import reflex as rx
import rfds

config = rx.Config(
    app_name="my_app",
    plugins=[rx.plugins.RadixThemesPlugin(theme=rfds.radix_theme()), rx.plugins.TailwindV4Plugin(),
             rfds.RFDSPlugin(format_locale="de-DE")],
    disable_plugins=[rx.plugins.SitemapPlugin],
    cors_allowed_origins=["https://app.example.com"],
    telemetry_enabled=False,
    show_built_with_reflex=False,
)

# my_app/my_app.py
app = rfds.install(rx.App(**rfds.app_kwargs(html_lang="de")))
```

## Development

```bash
uv sync                                   # or: python3.12 -m venv .venv && pip install -r tools/dev-requirements.txt
python tools/gen_tokens.py --check        # tokens -> CSS / Python / bridges are fresh
python tools/gen_exports.py --check       # lazy export maps are fresh, no FW-27 clash
rfds lint --strict packages/rfds/src apps/kitchen_sink
pytest packages/rfds/tests
cd apps/kitchen_sink && reflex compile --no-rich && reflex export --frontend-only --no-zip
```

Licence: Apache-2.0 (see `LICENSE`; third-party notices incl. IBM Plex OFL-1.1 in `NOTICE`).
