{
  "type": "line-chart",
  "description": "Line/area chart for time series driven by DuckDB SQL query.",
  "hasChildren": false,
  "propsSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
      "sql": {
        "type": "string",
        "description": "DuckDB SQL query with {{udf_name}} and $param_name placeholders. Must return 'label' and 'value' columns. Optional 'series' column for multi-line charts."
      },
      "title": {
        "description": "Chart title displayed above",
        "type": "string"
      },
      "lineColor": {
        "default": "#E8FF59",
        "description": "Line color for single-series charts. Ignored when multiple series are present (auto-palette is used). Default is Fused lime yellow (#E8FF59).",
        "type": "string"
      },
      "lineWidth": {
        "default": 2,
        "description": "Line stroke width in pixels.",
        "type": "number"
      },
      "lineOpacity": {
        "default": 1,
        "description": "Line stroke opacity from 0 (transparent) to 1 (solid).",
        "type": "number"
      },
      "showDots": {
        "default": false,
        "description": "Show data point dots on the line.",
        "type": "boolean"
      },
      "dotSize": {
        "default": 3,
        "description": "Radius of data point dots in pixels.",
        "type": "number"
      },
      "activeDotSize": {
        "default": 5,
        "description": "Radius of the active (hovered) data point dot in pixels.",
        "type": "number"
      },
      "showArea": {
        "default": true,
        "description": "Fill the area under the line with a gradient.",
        "type": "boolean"
      },
      "areaOpacity": {
        "default": 0.2,
        "description": "Opacity of the area fill (0-1). Only used when showArea is true.",
        "type": "number"
      },
      "curveType": {
        "default": "smooth",
        "description": "Interpolation curve: \"linear\" for straight segments, \"smooth\" for bezier curves, \"step\" for stepped lines.",
        "type": "string",
        "enum": [
          "linear",
          "smooth",
          "step"
        ]
      },
      "showGrid": {
        "default": true,
        "description": "Show subtle grid lines behind the chart.",
        "type": "boolean"
      },
      "showLegend": {
        "default": true,
        "description": "Show legend for multi-series charts. Auto-hidden when there is only one series.",
        "type": "boolean"
      },
      "rotateLabels": {
        "default": true,
        "description": "Rotate x-axis labels -45 degrees. Useful for long date strings.",
        "type": "boolean"
      },
      "xAxisFontSize": {
        "default": 11,
        "description": "Font size for x-axis labels in pixels.",
        "type": "number"
      },
      "yAxisFontSize": {
        "default": 11,
        "description": "Font size for y-axis labels in pixels.",
        "type": "number"
      },
      "bottomMargin": {
        "description": "Bottom margin in pixels. Overrides the auto-calculated value from rotateLabels. Useful when labels are clipped.",
        "type": "number"
      },
      "beginAtZero": {
        "default": true,
        "description": "Force the y-axis to start at 0. Ignored if yMin is set.",
        "type": "boolean"
      },
      "yMin": {
        "description": "Fixed minimum value for the y-axis. Overrides beginAtZero.",
        "type": "number"
      },
      "yMax": {
        "description": "Fixed maximum value for the y-axis.",
        "type": "number"
      },
      "animationMs": {
        "default": 300,
        "description": "Animation duration in milliseconds. 0 disables animation. Animation only plays on data changes, not on zoom/resize.",
        "type": "number"
      },
      "style": {
        "description": "Inline CSS styles as a plain CSS string (e.g., \"padding: 8px; background-color: #1a1a1a\")",
        "type": "string"
      }
    },
    "required": [
      "sql"
    ],
    "description": "A line/area chart for time series data, powered by DuckDB SQL queries. Query must return 'label' and 'value' columns. Add a 'series' column for multiple lines."
  }
}
