"""Reusable Streamlit widgets for the DataTools GUI.

This package replaces the former single ``components.py`` module. Public
behaviour is identical — every name that used to be importable from
``src.gui.components`` is still importable from the same path because
this ``__init__`` re-exports the legacy surface in full.

The package layout exists so per-tool builds can ship only the seams
they need without dragging the entire kitchen-sink module:

    components/
        __init__.py        ← compatibility shim (this file)
        _legacy.py         ← original components.py, unchanged
        findings.py        ← analyzer-finding rendering seam
        dedup_review.py    ← dedup match-group cards + review pipeline
        shared.py          ← chrome / file-pickup helpers used by every tool

A standalone Find Duplicates build, for example, can ship without
``findings.py`` — that module imports the analyzer code that the
Lite SKU does not include.

Adding new tooling: drop new helpers into the appropriate seam module.
Add their names to its ``__all__`` and to this file's ``__all__`` if
they should remain importable from ``src.gui.components`` directly.
"""

from __future__ import annotations

# Re-export the full legacy surface so existing pages continue to
# import unchanged. Once individual tool packages start consuming
# the focused seam modules directly, names can migrate out of
# _legacy.py without breaking those imports — this shim is what
# absorbs the move.
from ._legacy import *  # noqa: F401,F403
from . import _legacy as _legacy  # noqa: F401  (keep for direct access)

# Names exported from _legacy.py that pages currently use. Kept here as
# the canonical public list so a removal from _legacy is a visible
# breaking change instead of a silent drop.
from .activation import (  # noqa: F401  re-exported
    render_activation_form,
    render_license_status_sidebar,
    require_feature_or_render_upgrade,
    require_license_or_render_activation,
)

__all__ = [
    # Shared chrome / pickup
    "back_to_home_link",
    "render_sticky_footer",
    "render_tool_header",
    "hide_streamlit_chrome",
    "html_download_button",
    "local_download_button",
    "shutdown_app",
    "pickup_or_upload",
    # License gate + activation form
    "render_activation_form",
    "render_license_status_sidebar",
    "require_feature_or_render_upgrade",
    "require_license_or_render_activation",
    # Dedup widgets
    "config_panel",
    "match_group_card",
    "results_summary",
    "apply_review_decisions",
    # Analyzer widgets
    "tool_display_name",
    "render_findings_panel",
    "render_hidden_aware_preview",
    "upload_and_analyze_section",
    "findings_count_for_tool",
]
