from __future__ import annotations
from pydantic import BaseModel, Field
from app.agents.d3.registry import D3Template, register
class DataTableRow(BaseModel):
label: str
values: list[str]
class DataTableData(BaseModel):
title: str = ""
columns: list[str] = Field(min_length=1, max_length=16)
rows: list[DataTableRow] = Field(min_length=1, max_length=100)
_HTML = """
"""
register(D3Template(id="data_table", family="chart", title="Compact data table", when_to_use="Preserve selected tabular values in a clean readable table without changing their visual encoding.", data_requirements="Column labels and source-faithful row values.", schema=DataTableData, html_template=_HTML, golden_sample=DataTableData(title="Model comparison", columns=["Math Avg", "STEM"], rows=[DataTableRow(label="Qwen", values=["47.4", "25.2"]), DataTableRow(label="DeepSeek", values=["26.6", "23.2"])])))