{
  "schemaVersion": "1.0.0",
  "library": {
    "name": "ArgFit UI",
    "version": "2.3.0",
    "gitSha": "963f90ded286",
    "generatedAt": "2026-10-01T04:02:34+09:00",
    "sourceDigest": "2f4bd9f138b0dd7eb11a653a01a294a406d5ffc05d2d2f18fcc7d107317f6839",
    "storybookBaseUrl": "/storybook"
  },
  "components": [
    {
      "id": "accordion",
      "name": "AfAccordion",
      "className": "AfAccordionComponent",
      "selector": "af-accordion",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfAccordion } from '@argfit-ui/adaptive';",
      "title": "Components/Surfaces/Accordion",
      "category": "Surfaces",
      "status": "documented",
      "description": "Colección de secciones expandibles con selección simple o múltiple.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para revelar detalles de varias secciones sin mostrar todo simultáneamente."
      ],
      "avoidWhen": [
        "Para cambiar entre vistas independientes; usa AfTabs."
      ],
      "related": [
        "AfTabs",
        "AfPanel"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Accordion'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfAccordionDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "expandedIds",
            "type": "AfAccordionExpandedIds",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "items",
            "type": "readonly AfAccordionItem[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "multiple",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "expandedChange",
            "type": "AfAccordionExpandedIds",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "itemToggle",
            "type": "AfAccordionChange",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-surfaces-accordion--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-surfaces-accordion--default"
        },
        {
          "id": "components-surfaces-accordion--multiple",
          "name": "Multiple",
          "url": "/storybook/?path=/story/components-surfaces-accordion--multiple"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-surfaces-accordion--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfAccordion } from '@argfit-ui/adaptive';",
        "template": "<af-accordion [items]=\"items\" [expandedIds]=\"expandedIds\" [multiple]=\"multiple\" [density]=\"density\" [disabled]=\"disabled\" (expandedChange)=\"expandedChange($event)\" />"
      }
    },
    {
      "id": "analytics-card",
      "name": "AfAnalyticsCard",
      "className": "AfAnalyticsCardComponent",
      "selector": "af-analytics-card",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfAnalyticsCard } from '@argfit-ui/adaptive';",
      "title": "Data/AnalyticsCard",
      "category": "Data",
      "status": "documented",
      "description": "Superficie de analítica con cabecera, estados de carga y contenido proyectado.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para agrupar una visualización o KPI con contexto y estados de datos."
      ],
      "avoidWhen": [
        "Para una métrica aislada sin contenido complejo; usa AfMetricCard."
      ],
      "related": [
        "AfChart",
        "AfMetricCard"
      ],
      "tokens": [
        "--af-card-border",
        "--af-bg-surface"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfAnalyticsCardDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin datos'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "errorDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "errorTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'No se pudo cargar'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "fill",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "<p>La tarjeta reclama la altura de su contenedor en lugar de su altura intrínseca.\nEs un eje distinto de <code>height</code>, que fija el alto del área de contenido del gráfico:\ncon <code>fill</code> activo ese alto sigue siendo el piso y el contenedor fija el techo.</p>\n",
            "deprecated": false
          },
          {
            "name": "height",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "state",
            "type": "AfAnalyticsCardState",
            "required": false,
            "defaultValue": "'ready'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "subtitle",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "title",
            "type": "string",
            "required": true,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfAnalyticsCardTone",
            "required": false,
            "defaultValue": "'neutral'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "variant",
            "type": "AfAnalyticsCardVariant",
            "required": false,
            "defaultValue": "'surface'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "data-analyticscard--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-analyticscard--default"
        },
        {
          "id": "data-analyticscard--loading",
          "name": "Loading",
          "url": "/storybook/?path=/story/data-analyticscard--loading"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-analyticscard--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfAnalyticsCard } from '@argfit-ui/adaptive';",
        "template": "<af-analytics-card [title]=\"title\" [subtitle]=\"subtitle\" [state]=\"state\" [tone]=\"tone\" [variant]=\"variant\"><p>La carga media aumentó un 8% respecto a la semana anterior.</p></af-analytics-card>"
      }
    },
    {
      "id": "auth-shell",
      "name": "AfAuthShell",
      "className": "AfAuthShellComponent",
      "selector": "af-auth-shell",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfAuthShell } from '@argfit-ui/adaptive';",
      "title": "Patterns/Authentication/UnifiedAccess",
      "category": "Authentication",
      "status": "documented",
      "description": "Reusable access layout. It owns responsive composition and visual hierarchy, never authentication or navigation state.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "login and account access",
        "onboarding access panels",
        "expired session recovery"
      ],
      "avoidWhen": [
        "OAuth orchestration",
        "navigation or authentication state machines"
      ],
      "related": [
        "AfInput",
        "AfButton",
        "AfInlineMessage",
        "AfProgress"
      ],
      "tokens": [
        "--af-bg-main",
        "--af-bg-surface",
        "--af-space-6"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Acceso'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "variant",
            "type": "AfAuthShellVariant",
            "required": false,
            "defaultValue": "'split'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "patterns-authentication-unifiedaccess--access",
          "name": "Access",
          "url": "/storybook/?path=/story/patterns-authentication-unifiedaccess--access"
        },
        {
          "id": "patterns-authentication-unifiedaccess--session-expired",
          "name": "SessionExpired",
          "url": "/storybook/?path=/story/patterns-authentication-unifiedaccess--session-expired"
        },
        {
          "id": "patterns-authentication-unifiedaccess--preparing",
          "name": "Preparing",
          "url": "/storybook/?path=/story/patterns-authentication-unifiedaccess--preparing"
        },
        {
          "id": "patterns-authentication-unifiedaccess--error",
          "name": "Error",
          "url": "/storybook/?path=/story/patterns-authentication-unifiedaccess--error"
        },
        {
          "id": "patterns-authentication-unifiedaccess--centered",
          "name": "Centered",
          "url": "/storybook/?path=/story/patterns-authentication-unifiedaccess--centered"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/patterns-authentication-unifiedaccess--docs",
      "example": {
        "story": "Access",
        "typescript": "import { AfAuthShell } from '@argfit-ui/adaptive';",
        "template": "<af-auth-shell [variant]=\"variant\" ariaLabel=\"Acceso unificado a ArgFit\">\n        <div afAuthShellBackground class=\"af-auth-story__background\"></div>\n\n        <div afAuthShellBrand class=\"af-auth-story__brand\" aria-label=\"ArgFit\">\n          <span class=\"af-auth-story__mark\">AF</span>\n          <span>ARGFIT</span>\n        </div>\n\n        <div afAuthShellAside class=\"af-auth-story__aside\">\n          <p class=\"af-auth-story__eyebrow\">ARGFIT FOOTBALL</p>\n          <h2>La ciencia del deporte merece tecnología real.</h2>\n          <p>Plantel, entrenamientos y rendimiento en un único espacio operativo.</p>\n        </div>\n\n        <div class=\"af-auth-story__content\">\n          @if (state === 'preparing') {\n            <header>\n              <p class=\"af-auth-story__eyebrow\">PREPARANDO TU ESPACIO</p>\n              <h1>ArgFit Football</h1>\n              <p>Estamos restaurando permisos, equipo y datos locales.</p>\n            </header>\n            <ol class=\"af-auth-story__steps\">\n              <li data-state=\"done\">Identidad validada</li>\n              <li data-state=\"active\">Cargando permisos</li>\n              <li>Restaurando equipo y temporada</li>\n              <li>Preparando datos locales</li>\n            </ol>\n            <af-progress [value]=\"42\" ariaLabel=\"Preparación completada al 42 por ciento\" />\n          } @else {\n            <header>\n              <p class=\"af-auth-story__eyebrow\">ARGFIT FOOTBALL</p>\n              <h1>Acceso unificado</h1>\n              <p>Autentícate una sola vez y accede a todo el ecosistema ArgFit.</p>\n            </header>\n\n            @if (state === 'expired') {\n              <af-inline-message severity=\"warning\" title=\"Tu sesión expiró\" description=\"Vuelve a ingresar para continuar. Conservamos la pantalla en la que estabas.\" />\n            }\n\n            @if (state === 'error') {\n              <af-inline-message severity=\"danger\" title=\"No pudimos preparar tu espacio\" description=\"Conservamos tus datos locales. Puedes reintentar sin perder cambios.\" />\n              <div class=\"af-story-row\"><af-button>Reintentar</af-button><af-button variant=\"secondary\">Volver</af-button></div>\n            } @else {\n              <af-button size=\"lg\" fullWidth icon=\"log-in\" ariaLabel=\"Ingresar con ArgFit Identity\">Ingresar</af-button>\n              <p class=\"af-auth-story__hint\">Single sign-on · OAuth 2.0 / OIDC</p>\n            }\n          }\n        </div>\n\n        <p afAuthShellFooter>Sports technology · Buenos Aires</p>\n      </af-auth-shell>"
      }
    },
    {
      "id": "avatar",
      "name": "AfAvatar",
      "className": "AfAvatarComponent",
      "selector": "af-avatar",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfAvatar } from '@argfit-ui/adaptive';",
      "title": "Components/Identity/Avatar",
      "category": "Identity",
      "status": "documented",
      "description": "Person or entity identity with image, initials and icon fallbacks.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "representing a person or team",
        "compact identity in lists and headers"
      ],
      "avoidWhen": [
        "decorative imagery",
        "large editorial photography"
      ],
      "related": [
        "AfBadge",
        "AfChip"
      ],
      "tokens": [
        "--af-primary",
        "--af-text-main",
        "--af-radius-pill",
        "--af-duration-fast"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "decoding",
            "type": "\"async\" | \"auto\" | \"sync\"",
            "required": false,
            "defaultValue": "'async'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "icon",
            "type": "AfIconName | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "imageAlt",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "imageSrc",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "initials",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "\"eager\" | \"lazy\"",
            "required": false,
            "defaultValue": "'lazy'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "shape",
            "type": "AfAvatarShape",
            "required": false,
            "defaultValue": "'circle'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfAvatarSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfAvatarTone",
            "required": false,
            "defaultValue": "'neutral'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "components-identity-avatar--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-identity-avatar--default"
        },
        {
          "id": "components-identity-avatar--sizes",
          "name": "Sizes",
          "url": "/storybook/?path=/story/components-identity-avatar--sizes"
        },
        {
          "id": "components-identity-avatar--image-with-fallback",
          "name": "ImageWithFallback",
          "url": "/storybook/?path=/story/components-identity-avatar--image-with-fallback"
        },
        {
          "id": "components-identity-avatar--broken-image-fallback",
          "name": "BrokenImageFallback",
          "url": "/storybook/?path=/story/components-identity-avatar--broken-image-fallback"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-identity-avatar--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfAvatar } from '@argfit-ui/adaptive';",
        "template": "<af-avatar\n  label=\"Sofía Martínez\"\n  initials=\"SM\"\n  ariaLabel=\"Sofía Martínez\"\n  size=\"lg\"\n  tone=\"primary\"\n  shape=\"circle\"\n/>"
      }
    },
    {
      "id": "badge",
      "name": "AfBadge",
      "className": "AfBadgeComponent",
      "selector": "af-badge",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfBadge } from '@argfit-ui/adaptive';",
      "title": "Components/Identity/Badge",
      "category": "Identity",
      "status": "documented",
      "description": "Compact status label whose meaning is never carried by color alone.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "compact status or category labels",
        "semantic state that includes text"
      ],
      "avoidWhen": [
        "interactive filtering",
        "long feedback messages"
      ],
      "related": [
        "AfChip",
        "AfInlineMessage"
      ],
      "tokens": [
        "--af-success",
        "--af-warning",
        "--af-danger",
        "--af-radius-pill"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "dot",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "icon",
            "type": "AfIconName | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "shape",
            "type": "AfBadgeShape",
            "required": false,
            "defaultValue": "'pill'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfBadgeSize",
            "required": false,
            "defaultValue": "'sm'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfBadgeTone | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "variant",
            "type": "AfBadgeVariant",
            "required": false,
            "defaultValue": "'soft'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "components-identity-badge--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-identity-badge--default"
        },
        {
          "id": "components-identity-badge--status-matrix",
          "name": "StatusMatrix",
          "url": "/storybook/?path=/story/components-identity-badge--status-matrix"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-identity-badge--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfBadge } from '@argfit-ui/adaptive';",
        "template": "<af-badge [tone]=\"tone\" [variant]=\"variant\" [size]=\"size\" [shape]=\"shape\" [dot]=\"dot\" [icon]=\"icon\" [ariaLabel]=\"ariaLabel\">Disponible</af-badge>"
      }
    },
    {
      "id": "button",
      "name": "AfButton",
      "className": "AfButtonComponent",
      "selector": "af-button",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfButton } from '@argfit-ui/adaptive';",
      "title": "Components/Actions/Button",
      "category": "Actions",
      "status": "documented",
      "description": "Primary action control with adaptive desktop and mobile renderers.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "triggering a user action",
        "submitting or cancelling a flow"
      ],
      "avoidWhen": [
        "navigation that should remain a link",
        "non-interactive labels"
      ],
      "related": [
        "AfProgress",
        "AfDialog"
      ],
      "tokens": [
        "--af-primary",
        "--af-primary-hover",
        "--af-primary-contrast",
        "--af-color-neutral-50",
        "--af-color-neutral-900",
        "--af-button-height-md"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string | null",
            "required": false,
            "defaultValue": "null",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "fullWidth",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "icon",
            "type": "AfIconName | null",
            "required": false,
            "defaultValue": "null",
            "description": "",
            "deprecated": false
          },
          {
            "name": "iconPosition",
            "type": "AfButtonIconPosition",
            "required": false,
            "defaultValue": "'start'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfButtonSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "type",
            "type": "AfButtonType",
            "required": false,
            "defaultValue": "'button'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "variant",
            "type": "AfButtonVariant",
            "required": false,
            "defaultValue": "'primary'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "pressed",
            "type": "MouseEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-actions-button--primary",
          "name": "Primary",
          "url": "/storybook/?path=/story/components-actions-button--primary"
        },
        {
          "id": "components-actions-button--secondary",
          "name": "Secondary",
          "url": "/storybook/?path=/story/components-actions-button--secondary"
        },
        {
          "id": "components-actions-button--disabled",
          "name": "Disabled",
          "url": "/storybook/?path=/story/components-actions-button--disabled"
        },
        {
          "id": "components-actions-button--loading",
          "name": "Loading",
          "url": "/storybook/?path=/story/components-actions-button--loading"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-actions-button--docs",
      "example": {
        "story": "Primary",
        "typescript": "import { AfButton } from '@argfit-ui/adaptive';",
        "template": "<af-button\n      [variant]=\"variant\"\n      [size]=\"size\"\n      [type]=\"type\"\n      [disabled]=\"disabled\"\n      [loading]=\"loading\"\n      [fullWidth]=\"fullWidth\"\n      [icon]=\"icon\"\n      [iconPosition]=\"iconPosition\"\n      [ariaLabel]=\"ariaLabel\"\n      (pressed)=\"pressed($event)\"\n    >Click Me</af-button>"
      }
    },
    {
      "id": "calendar",
      "name": "AfCalendar",
      "className": "AfCalendarComponent",
      "selector": "af-calendar",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfCalendar } from '@argfit-ui/adaptive';",
      "title": "Data/Calendar",
      "category": "Data",
      "status": "documented",
      "description": "<p>Calendario adaptativo de ArgFit UI.</p>\n<p>Recibe las ocurrencias visibles y emite intenciones tipadas: no hace HTTP, no\npersiste, no expande series y no convierte zonas horarias. La aplicación es\nla fuente de verdad; el componente decide cómo se ve, no qué pasa.</p>\n<p>La vista y la fecha ancla son estado de trabajo: arrancan del input y se\nmueven con la toolbar, pero cada movimiento se anuncia con <code>viewChange</code>,\n<code>anchorDateChange</code> y <code>visibleRangeChange</code> para que el consumidor recargue su\nventana de datos.</p>\n",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "mostrar sesiones planificadas sobre una grilla temporal",
        "alternar entre día, semana, mes y agenda sobre el mismo conjunto de datos"
      ],
      "avoidWhen": [
        "elegir una única fecha civil: usar AfDatePicker",
        "expandir reglas de recurrencia o persistir cambios: eso es de la aplicación"
      ],
      "related": [
        "AfDatePicker",
        "AfTimePicker",
        "AfTimeline",
        "AfDataTable"
      ],
      "tokens": [
        "--af-calendar-surface",
        "--af-calendar-grid-line",
        "--af-calendar-today-bg",
        "--af-calendar-now",
        "--af-calendar-slot-height-comfortable",
        "--af-calendar-time-axis-width",
        "--af-event-training-accent",
        "--af-event-match-accent"
      ],
      "api": {
        "inputs": [
          {
            "name": "allowMutation",
            "type": "AfCalendarAllowMutation | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Regla síncrona del producto aplicada antes de cualquier preview o output.</p>\n",
            "deprecated": false
          },
          {
            "name": "anchorDate",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p><code>YYYY-MM-DD</code>. Sin valor, hoy en la zona del dispositivo.</p>\n",
            "deprecated": false
          },
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Calendario'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "autoScroll",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "createButton",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfCalendarDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "editable",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "<p>Habilita mover y redimensionar. La creación se habilita con <code>selectable</code>.</p>\n",
            "deprecated": false
          },
          {
            "name": "empty",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "events",
            "type": "readonly AfCalendarEvent[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "eventTypes",
            "type": "readonly AfCalendarEventTypeDefinition[] | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "firstDay",
            "type": "AfCalendarWeekday",
            "required": false,
            "defaultValue": "1",
            "description": "",
            "deprecated": false
          },
          {
            "name": "height",
            "type": "string",
            "required": false,
            "defaultValue": "'640px'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "hiddenDays",
            "type": "readonly AfCalendarWeekday[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "labels",
            "type": "AfCalendarLabels",
            "required": false,
            "defaultValue": "AF_CALENDAR_DEFAULT_LABELS",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "maxDurationMinutes",
            "type": "number | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "maxTime",
            "type": "string",
            "required": false,
            "defaultValue": "'22:00'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "minDurationMinutes",
            "type": "number",
            "required": false,
            "defaultValue": "15",
            "description": "",
            "deprecated": false
          },
          {
            "name": "minTime",
            "type": "string",
            "required": false,
            "defaultValue": "'07:00'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "moveEnabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "<p>Permisos independientes; <code>editable</code> continúa siendo el interruptor maestro.</p>\n",
            "deprecated": false
          },
          {
            "name": "mutationTimeoutMs",
            "type": "unknown",
            "required": false,
            "defaultValue": "8_000",
            "description": "",
            "deprecated": false
          },
          {
            "name": "nowIndicator",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "offline",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "overlays",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "<p>Hospeda el detalle y el editor en un modal propio.</p>\n<p>Con <code>false</code> el calendario solo emite <code>eventActivate</code> y <code>createPressed</code>, y\nla aplicación decide dónde y cómo presentarlos — en un drawer, en una ruta\ncompleta o en su propio diálogo.</p>\n",
            "deprecated": false
          },
          {
            "name": "partial",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "resizeEndEnabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "resizeStartEnabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "resources",
            "type": "readonly AfCalendarResource[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectable",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "<p>Habilita dibujar un rango sobre una franja vacía para crear.</p>\n",
            "deprecated": false
          },
          {
            "name": "showToolbar",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "timedAllDayConversion",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "timeZone",
            "type": "string",
            "required": true,
            "defaultValue": null,
            "description": "<p>Zona IANA de la organización. Obligatoria: inferirla del navegador es la\nforma más rápida de mostrarle a un cuerpo técnico un entrenamiento a la\nhora equivocada.</p>\n",
            "deprecated": false
          },
          {
            "name": "view",
            "type": "AfCalendarView",
            "required": false,
            "defaultValue": "'week'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "views",
            "type": "readonly AfCalendarView[]",
            "required": false,
            "defaultValue": "['day', 'week', 'month', 'agenda']",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "anchorDateChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "createPressed",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "eventActivate",
            "type": "AfCalendarEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "eventDelete",
            "type": "AfCalendarEventDeleteIntent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "eventMoveRequest",
            "type": "AfCalendarMutationRequest",
            "required": false,
            "defaultValue": null,
            "description": "<p>Emitida en <code>pointerup</code>, nunca en <code>pointerdown</code>.</p>\n",
            "deprecated": false
          },
          {
            "name": "eventResizeRequest",
            "type": "AfCalendarMutationRequest",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "eventSave",
            "type": "AfCalendarEventSaveIntent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "interactionCancel",
            "type": "AfCalendarInteractionCancel",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "mutationUndoRequest",
            "type": "AfCalendarMutationUndoRequest",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "rangeCreateRequest",
            "type": "AfCalendarMutationRequest",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "recurrenceScopeRequest",
            "type": "AfCalendarRecurrenceScopeRequest",
            "required": false,
            "defaultValue": null,
            "description": "<p>El alcance de una serie lo decide la aplicación, no el componente.</p>\n",
            "deprecated": false
          },
          {
            "name": "resourceAssignRequest",
            "type": "AfCalendarMutationRequest",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "retry",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "viewChange",
            "type": "AfCalendarView",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "visibleRangeChange",
            "type": "AfCalendarVisibleRange",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-calendar--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-calendar--default"
        },
        {
          "id": "data-calendar--day",
          "name": "Day",
          "url": "/storybook/?path=/story/data-calendar--day"
        },
        {
          "id": "data-calendar--three-day",
          "name": "ThreeDay",
          "url": "/storybook/?path=/story/data-calendar--three-day"
        },
        {
          "id": "data-calendar--work-week",
          "name": "WorkWeek",
          "url": "/storybook/?path=/story/data-calendar--work-week"
        },
        {
          "id": "data-calendar--month",
          "name": "Month",
          "url": "/storybook/?path=/story/data-calendar--month"
        },
        {
          "id": "data-calendar--agenda",
          "name": "Agenda",
          "url": "/storybook/?path=/story/data-calendar--agenda"
        },
        {
          "id": "data-calendar--densities",
          "name": "Densities",
          "url": "/storybook/?path=/story/data-calendar--densities"
        },
        {
          "id": "data-calendar--event-states",
          "name": "EventStates",
          "url": "/storybook/?path=/story/data-calendar--event-states"
        },
        {
          "id": "data-calendar--loading",
          "name": "Loading",
          "url": "/storybook/?path=/story/data-calendar--loading"
        },
        {
          "id": "data-calendar--empty",
          "name": "Empty",
          "url": "/storybook/?path=/story/data-calendar--empty"
        },
        {
          "id": "data-calendar--error-state",
          "name": "ErrorState",
          "url": "/storybook/?path=/story/data-calendar--error-state"
        },
        {
          "id": "data-calendar--offline",
          "name": "Offline",
          "url": "/storybook/?path=/story/data-calendar--offline"
        },
        {
          "id": "data-calendar--custom-templates",
          "name": "CustomTemplates",
          "url": "/storybook/?path=/story/data-calendar--custom-templates"
        },
        {
          "id": "data-calendar--editable",
          "name": "Editable",
          "url": "/storybook/?path=/story/data-calendar--editable"
        },
        {
          "id": "data-calendar--resources",
          "name": "Resources",
          "url": "/storybook/?path=/story/data-calendar--resources"
        },
        {
          "id": "data-calendar--event-detail",
          "name": "EventDetail",
          "url": "/storybook/?path=/story/data-calendar--event-detail"
        },
        {
          "id": "data-calendar--event-editor",
          "name": "EventEditor",
          "url": "/storybook/?path=/story/data-calendar--event-editor"
        },
        {
          "id": "data-calendar--create-from-toolbar",
          "name": "CreateFromToolbar",
          "url": "/storybook/?path=/story/data-calendar--create-from-toolbar"
        },
        {
          "id": "data-calendar--keyboard-move",
          "name": "KeyboardMove",
          "url": "/storybook/?path=/story/data-calendar--keyboard-move"
        },
        {
          "id": "data-calendar--keyboard-move-cancelled",
          "name": "KeyboardMoveCancelled",
          "url": "/storybook/?path=/story/data-calendar--keyboard-move-cancelled"
        },
        {
          "id": "data-calendar--recurrence-scope",
          "name": "RecurrenceScope",
          "url": "/storybook/?path=/story/data-calendar--recurrence-scope"
        },
        {
          "id": "data-calendar--keyboard-navigation",
          "name": "KeyboardNavigation",
          "url": "/storybook/?path=/story/data-calendar--keyboard-navigation"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-calendar--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfCalendar } from '@argfit-ui/adaptive';",
        "template": "<div class=\"af-story-surface\">\n      <af-calendar\n        [events]=\"events\"\n        [view]=\"view\"\n        [views]=\"views\"\n        [anchorDate]=\"anchorDate\"\n        [timeZone]=\"timeZone\"\n        [density]=\"density\"\n        [firstDay]=\"firstDay\"\n        [hiddenDays]=\"hiddenDays\"\n        [minTime]=\"minTime\"\n        [maxTime]=\"maxTime\"\n        [nowIndicator]=\"nowIndicator\"\n        [showToolbar]=\"showToolbar\"\n        [editable]=\"editable\"\n        [timedAllDayConversion]=\"timedAllDayConversion\"\n        [selectable]=\"selectable\"\n        [createButton]=\"createButton\"\n        [overlays]=\"overlays\"\n        [height]=\"height\"\n        [loading]=\"loading\"\n        [partial]=\"partial\"\n        [offline]=\"offline\"\n        [empty]=\"empty\"\n        [error]=\"error\"\n        [ariaLabel]=\"ariaLabel\"\n        (visibleRangeChange)=\"visibleRangeChange($event)\"\n        (viewChange)=\"viewChange($event)\"\n        (anchorDateChange)=\"anchorDateChange($event)\"\n        (eventActivate)=\"eventActivate($event)\"\n        (eventMoveRequest)=\"eventMoveRequest($event)\"\n        (eventResizeRequest)=\"eventResizeRequest($event)\"\n        (rangeCreateRequest)=\"rangeCreateRequest($event)\"\n        (recurrenceScopeRequest)=\"recurrenceScopeRequest($event)\"\n        (interactionCancel)=\"interactionCancel($event)\"\n        (mutationUndoRequest)=\"mutationUndoRequest($event)\"\n        (eventSave)=\"eventSave($event)\"\n        (eventDelete)=\"eventDelete($event)\"\n        (retry)=\"retry()\"\n      />\n    </div>"
      }
    },
    {
      "id": "calendar-day-timeline",
      "name": "AfCalendarDayTimeline",
      "className": "AfCalendarDayTimelineComponent",
      "selector": "af-calendar-day-timeline",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfCalendarDayTimeline } from '@argfit-ui/adaptive';",
      "title": "Data/CalendarDayTimeline",
      "category": "Data",
      "status": "documented",
      "description": "<p>Franja horizontal con las actividades del día.</p>\n<p>Útil como barra de contexto sobre un dashboard: de un vistazo se ve dónde se\nacumula la carga y en qué punto del día está el equipo.</p>\n",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "dar contexto del día como barra sobre un dashboard",
        "mostrar dónde se acumula la carga sin ocupar una grilla completa"
      ],
      "avoidWhen": [
        "trabajar sobre la agenda o mover actividades: usar AfCalendar",
        "mostrar hitos sin duración: usar AfTimeline"
      ],
      "related": [
        "AfCalendar",
        "AfTimeline",
        "AfCalendarWeekLoad"
      ],
      "tokens": [
        "--af-card-bg",
        "--af-surface-2",
        "--af-calendar-now",
        "--af-calendar-grid-line"
      ],
      "api": {
        "inputs": [
          {
            "name": "date",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "events",
            "type": "readonly AfCalendarEvent[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "heading",
            "type": "string",
            "required": false,
            "defaultValue": "'Línea de tiempo'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "labels",
            "type": "AfCalendarLabels",
            "required": false,
            "defaultValue": "AF_CALENDAR_DEFAULT_LABELS",
            "description": "",
            "deprecated": false
          },
          {
            "name": "maxTime",
            "type": "string",
            "required": false,
            "defaultValue": "'21:00'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "minTime",
            "type": "string",
            "required": false,
            "defaultValue": "'07:00'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "now",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Instante de referencia <code>YYYY-MM-DDTHH:mm</code>. Sin valor, el reloj del dispositivo.</p>\n",
            "deprecated": false
          },
          {
            "name": "nowIndicator",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "eventActivate",
            "type": "AfCalendarEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-calendardaytimeline--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-calendardaytimeline--default"
        },
        {
          "id": "data-calendardaytimeline--without-now",
          "name": "WithoutNow",
          "url": "/storybook/?path=/story/data-calendardaytimeline--without-now"
        },
        {
          "id": "data-calendardaytimeline--empty",
          "name": "Empty",
          "url": "/storybook/?path=/story/data-calendardaytimeline--empty"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-calendardaytimeline--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfCalendarDayTimeline } from '@argfit-ui/adaptive';",
        "template": "<div class=\"af-story-surface\" style=\"max-width:620px\">\n      <af-calendar-day-timeline\n        [events]=\"events\"\n        [date]=\"date\"\n        [minTime]=\"minTime\"\n        [maxTime]=\"maxTime\"\n        [nowIndicator]=\"nowIndicator\"\n        [now]=\"now\"\n        (eventActivate)=\"eventActivate($event)\"\n      />\n    </div>"
      }
    },
    {
      "id": "calendar-event-detail",
      "name": "AfCalendarEventDetail",
      "className": "AfCalendarEventDetailComponent",
      "selector": "af-calendar-event-detail",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfCalendarEventDetail } from '@argfit-ui/adaptive';",
      "title": "Data/CalendarEventDetail",
      "category": "Data",
      "status": "documented",
      "description": "<p>Detalle de una ocurrencia del calendario.</p>\n<p>Muestra lo común a todo evento — tipo, fecha, hora, lugar, serie, estado — y\ndebajo los campos propios de su tipo, resueltos desde el esquema del registro.\nNingún campo está codificado acá: agregar un tipo de evento no toca este\ncomponente.</p>\n<p>Es una <strong>superficie plana, no un overlay</strong>. La aplicación (o el propio\n<code>AfCalendar</code>) lo hospeda en un popover, un drawer o una ruta completa; así el\nmismo detalle sirve en los tres lugares sin duplicarse.</p>\n<p>No lleva renderers separados: entre escritorio y móvil solo cambian densidad\ny ancho de los campos, y eso se resuelve con <code>isMobile()</code> y CSS. Es el mismo\ncriterio de <code>AfField</code>, <code>AfIconField</code> y <code>AfInputGroup</code>, y el que el flujo de\ntrabajo llama «decisión explícita de renderer compartido».</p>\n",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "mostrar una ocurrencia del calendario con los campos propios de su tipo",
        "hospedar el detalle en un popover, un drawer o una ruta completa"
      ],
      "avoidWhen": [
        "editar el evento: para eso está AfCalendarEventEditor",
        "mostrar un registro que no proviene de un calendario"
      ],
      "related": [
        "AfCalendar",
        "AfCalendarEventEditor",
        "AfDialog"
      ],
      "tokens": [
        "--af-bg-elevated",
        "--af-border",
        "--af-event-training-accent",
        "--af-surface-1"
      ],
      "api": {
        "inputs": [
          {
            "name": "canDelete",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "canDuplicate",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "canEdit",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "event",
            "type": "AfCalendarEvent",
            "required": true,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "eventTypes",
            "type": "readonly AfCalendarEventTypeDefinition[] | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Pisa el registro inyectado cuando una pantalla usa un subconjunto.</p>\n",
            "deprecated": false
          },
          {
            "name": "labels",
            "type": "AfCalendarLabels",
            "required": false,
            "defaultValue": "AF_CALENDAR_DEFAULT_LABELS",
            "description": "",
            "deprecated": false
          },
          {
            "name": "showClose",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "closed",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "deleteRequest",
            "type": "AfCalendarEventDeleteIntent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "duplicateRequest",
            "type": "AfCalendarEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "editRequest",
            "type": "AfCalendarEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-calendareventdetail--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-calendareventdetail--default"
        },
        {
          "id": "data-calendareventdetail--recurring",
          "name": "Recurring",
          "url": "/storybook/?path=/story/data-calendareventdetail--recurring"
        },
        {
          "id": "data-calendareventdetail--conflict",
          "name": "Conflict",
          "url": "/storybook/?path=/story/data-calendareventdetail--conflict"
        },
        {
          "id": "data-calendareventdetail--readonly",
          "name": "Readonly",
          "url": "/storybook/?path=/story/data-calendareventdetail--readonly"
        },
        {
          "id": "data-calendareventdetail--other-type",
          "name": "OtherType",
          "url": "/storybook/?path=/story/data-calendareventdetail--other-type"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-calendareventdetail--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfCalendarEventDetail } from '@argfit-ui/adaptive';",
        "template": "<div class=\"af-story-surface\" style=\"max-width:480px\">\n      <af-calendar-event-detail\n        [event]=\"event\"\n        [canEdit]=\"canEdit\"\n        [canDelete]=\"canDelete\"\n        [canDuplicate]=\"canDuplicate\"\n        [showClose]=\"showClose\"\n        (editRequest)=\"editRequest($event)\"\n        (deleteRequest)=\"deleteRequest($event)\"\n        (duplicateRequest)=\"duplicateRequest($event)\"\n        (closed)=\"closed()\"\n      />\n    </div>"
      }
    },
    {
      "id": "calendar-event-editor",
      "name": "AfCalendarEventEditor",
      "className": "AfCalendarEventEditorComponent",
      "selector": "af-calendar-event-editor",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfCalendarEventEditor } from '@argfit-ui/adaptive';",
      "title": "Data/CalendarEventEditor",
      "category": "Data",
      "status": "documented",
      "description": "<p>Editor genérico de eventos de calendario.</p>\n<p>Un único editor sirve a cualquier tipo: al elegir el tipo, el formulario se\nrecompone con sus campos, su duración por defecto y su color. Lo que hace\ngenérico al componente es que no conoce ningún dominio — recibe el esquema y\nlo renderiza.</p>\n<p><strong>No valida reglas de negocio.</strong> Emite el evento propuesto y el consumidor\ndecide: solapamientos, permisos, capacidad y disponibilidad son del producto.</p>\n<p>Igual que el detalle, es una superficie plana sin renderers separados: entre\nplataformas cambian densidad y ancho de campo, no la estructura.</p>\n",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "crear o editar una actividad de calendario de cualquier tipo registrado",
        "ofrecer un formulario que se recompone según el esquema del tipo elegido"
      ],
      "avoidWhen": [
        "validar reglas de negocio: el editor propone y la aplicación decide",
        "editar entidades que no son ocurrencias de calendario"
      ],
      "related": [
        "AfCalendar",
        "AfCalendarEventDetail",
        "AfDatePicker"
      ],
      "tokens": [
        "--af-bg-elevated",
        "--af-input-bg",
        "--af-input-border",
        "--af-primary"
      ],
      "api": {
        "inputs": [
          {
            "name": "allowDelete",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "busy",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "draft",
            "type": "AfCalendarEventDraft | null",
            "required": false,
            "defaultValue": "null",
            "description": "<p>Borrador inicial. <code>null</code> arranca un evento nuevo con los valores por defecto.</p>\n",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "eventId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "eventTypes",
            "type": "readonly AfCalendarEventTypeDefinition[] | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "labels",
            "type": "AfCalendarLabels",
            "required": false,
            "defaultValue": "AF_CALENDAR_DEFAULT_LABELS",
            "description": "",
            "deprecated": false
          },
          {
            "name": "mode",
            "type": "\"create\" | \"edit\"",
            "required": false,
            "defaultValue": "'create'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "occurrenceId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "recurrenceScopes",
            "type": "readonly AfCalendarRecurrenceScope[]",
            "required": false,
            "defaultValue": "[]",
            "description": "<p>Alcances ofrecidos al guardar una ocurrencia de serie. Vacío: no es serie.</p>\n",
            "deprecated": false
          },
          {
            "name": "resources",
            "type": "readonly AfCalendarResource[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "seriesId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "sourceVersion",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "timeZone",
            "type": "string",
            "required": true,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "cancelled",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "deleteRequest",
            "type": "AfCalendarEventDeleteIntent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "draftChange",
            "type": "AfCalendarEventDraft",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "save",
            "type": "AfCalendarEventSaveIntent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-calendareventeditor--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-calendareventeditor--default"
        },
        {
          "id": "data-calendareventeditor--edit",
          "name": "Edit",
          "url": "/storybook/?path=/story/data-calendareventeditor--edit"
        },
        {
          "id": "data-calendareventeditor--recurring-scopes",
          "name": "RecurringScopes",
          "url": "/storybook/?path=/story/data-calendareventeditor--recurring-scopes"
        },
        {
          "id": "data-calendareventeditor--busy",
          "name": "Busy",
          "url": "/storybook/?path=/story/data-calendareventeditor--busy"
        },
        {
          "id": "data-calendareventeditor--error-state",
          "name": "ErrorState",
          "url": "/storybook/?path=/story/data-calendareventeditor--error-state"
        },
        {
          "id": "data-calendareventeditor--generic-registry",
          "name": "GenericRegistry",
          "url": "/storybook/?path=/story/data-calendareventeditor--generic-registry"
        },
        {
          "id": "data-calendareventeditor--type-driven-form",
          "name": "TypeDrivenForm",
          "url": "/storybook/?path=/story/data-calendareventeditor--type-driven-form"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-calendareventeditor--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfCalendarEventEditor } from '@argfit-ui/adaptive';",
        "template": "<div class=\"af-story-surface\" style=\"max-width:640px\">\n      <af-calendar-event-editor\n        [draft]=\"draft\"\n        [mode]=\"mode\"\n        [eventTypes]=\"eventTypes\"\n        [resources]=\"resources\"\n        [timeZone]=\"timeZone\"\n        [recurrenceScopes]=\"recurrenceScopes\"\n        [eventId]=\"eventId\"\n        [seriesId]=\"seriesId\"\n        [busy]=\"busy\"\n        [allowDelete]=\"allowDelete\"\n        [error]=\"error\"\n        (save)=\"save($event)\"\n        (deleteRequest)=\"deleteRequest($event)\"\n        (draftChange)=\"draftChange($event)\"\n        (cancelled)=\"cancelled()\"\n      />\n    </div>"
      }
    },
    {
      "id": "calendar-mini-month",
      "name": "AfCalendarMiniMonth",
      "className": "AfCalendarMiniMonthComponent",
      "selector": "af-calendar-mini-month",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfCalendarMiniMonth } from '@argfit-ui/adaptive';",
      "title": "Data/CalendarMiniMonth",
      "category": "Data",
      "status": "documented",
      "description": "<p>Mini calendario de mes con marcas de actividad y agenda del día elegido.</p>\n<p>Pensado para la columna lateral de un dashboard. No duplica la fuente de\nverdad del calendario principal: emite la fecha y quien lo usa sincroniza.</p>\n",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "navegar el mes desde la columna lateral de un dashboard",
        "dar una vista de mes en pantallas donde la grilla completa no entra"
      ],
      "avoidWhen": [
        "elegir una fecha en un formulario: usar AfDatePicker",
        "trabajar sobre la agenda: usar AfCalendar"
      ],
      "related": [
        "AfCalendar",
        "AfDatePicker",
        "AfCalendarStripAgenda"
      ],
      "tokens": [
        "--af-card-bg",
        "--af-primary",
        "--af-primary-soft",
        "--af-accent"
      ],
      "api": {
        "inputs": [
          {
            "name": "anchorDate",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "events",
            "type": "readonly AfCalendarEvent[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "firstDay",
            "type": "AfCalendarWeekday",
            "required": false,
            "defaultValue": "1",
            "description": "",
            "deprecated": false
          },
          {
            "name": "heading",
            "type": "string",
            "required": false,
            "defaultValue": "'Planificación'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "labels",
            "type": "AfCalendarLabels",
            "required": false,
            "defaultValue": "AF_CALENDAR_DEFAULT_LABELS",
            "description": "",
            "deprecated": false
          },
          {
            "name": "now",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Instante de referencia <code>YYYY-MM-DDTHH:mm</code>. Sin valor, el reloj del dispositivo.</p>\n",
            "deprecated": false
          },
          {
            "name": "rangeEnd",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "rangeStart",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Rango resaltado, normalmente la ventana visible del calendario principal.</p>\n",
            "deprecated": false
          },
          {
            "name": "selectedDate",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "showAgenda",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "dateSelect",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "eventActivate",
            "type": "AfCalendarEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "monthChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-calendarminimonth--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-calendarminimonth--default"
        },
        {
          "id": "data-calendarminimonth--without-agenda",
          "name": "WithoutAgenda",
          "url": "/storybook/?path=/story/data-calendarminimonth--without-agenda"
        },
        {
          "id": "data-calendarminimonth--month-navigation",
          "name": "MonthNavigation",
          "url": "/storybook/?path=/story/data-calendarminimonth--month-navigation"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-calendarminimonth--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfCalendarMiniMonth } from '@argfit-ui/adaptive';",
        "template": "<div class=\"af-story-surface\" style=\"max-width:320px\">\n      <af-calendar-mini-month\n        [events]=\"events\"\n        [selectedDate]=\"selectedDate\"\n        [rangeStart]=\"rangeStart\"\n        [rangeEnd]=\"rangeEnd\"\n        [showAgenda]=\"showAgenda\"\n        [heading]=\"heading\"\n        [now]=\"now\"\n        (dateSelect)=\"dateSelect($event)\"\n        (monthChange)=\"monthChange($event)\"\n        (eventActivate)=\"eventActivate($event)\"\n      />\n    </div>"
      }
    },
    {
      "id": "calendar-next-session",
      "name": "AfCalendarNextSession",
      "className": "AfCalendarNextSessionComponent",
      "selector": "af-calendar-next-session",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfCalendarNextSession } from '@argfit-ui/adaptive';",
      "title": "Data/CalendarNextSession",
      "category": "Data",
      "status": "documented",
      "description": "<p>Card destacada con lo que sigue.</p>\n<p>Pensada para la home móvil: qué actividad viene, cuándo y en cuánto tiempo.\nUna actividad ya empezada sigue siendo «la próxima» hasta que termina — es\njusto el momento en que el usuario más la está mirando.</p>\n",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "destacar la próxima actividad en la home de una app",
        "dar una acción primaria sobre lo que viene"
      ],
      "avoidWhen": [
        "listar varias actividades: usar AfCalendarUpcoming",
        "mostrar una métrica sin componente temporal: usar AfMetricCard"
      ],
      "related": [
        "AfCalendar",
        "AfCalendarUpcoming",
        "AfMetricCard"
      ],
      "tokens": [
        "--af-border-strong",
        "--af-primary",
        "--af-event-match-accent",
        "--af-event-match-bg"
      ],
      "api": {
        "inputs": [
          {
            "name": "actionLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Ver detalle'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin próxima sesión'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "events",
            "type": "readonly AfCalendarEvent[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "heading",
            "type": "string",
            "required": false,
            "defaultValue": "'Próxima sesión'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "labels",
            "type": "AfCalendarLabels",
            "required": false,
            "defaultValue": "AF_CALENDAR_DEFAULT_LABELS",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "now",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Instante de referencia <code>YYYY-MM-DDTHH:mm</code>. Sin valor, el reloj del dispositivo.</p>\n",
            "deprecated": false
          },
          {
            "name": "secondaryActionLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "timeZone",
            "type": "string",
            "required": true,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "eventActivate",
            "type": "AfCalendarEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "secondaryActionPressed",
            "type": "AfCalendarEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-calendarnextsession--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-calendarnextsession--default"
        },
        {
          "id": "data-calendarnextsession--countdown",
          "name": "Countdown",
          "url": "/storybook/?path=/story/data-calendarnextsession--countdown"
        },
        {
          "id": "data-calendarnextsession--loading",
          "name": "Loading",
          "url": "/storybook/?path=/story/data-calendarnextsession--loading"
        },
        {
          "id": "data-calendarnextsession--empty",
          "name": "Empty",
          "url": "/storybook/?path=/story/data-calendarnextsession--empty"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-calendarnextsession--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfCalendarNextSession } from '@argfit-ui/adaptive';",
        "template": "<div class=\"af-story-surface\" style=\"max-width:380px\">\n      <af-calendar-next-session\n        [events]=\"events\"\n        [timeZone]=\"timeZone\"\n        [heading]=\"heading\"\n        [actionLabel]=\"actionLabel\"\n        [secondaryActionLabel]=\"secondaryActionLabel\"\n        [loading]=\"loading\"\n        [now]=\"now\"\n        (eventActivate)=\"eventActivate($event)\"\n        (secondaryActionPressed)=\"secondaryActionPressed($event)\"\n      />\n    </div>"
      }
    },
    {
      "id": "calendar-strip-agenda",
      "name": "AfCalendarStripAgenda",
      "className": "AfCalendarStripAgendaComponent",
      "selector": "af-calendar-strip-agenda",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfCalendarStripAgenda } from '@argfit-ui/adaptive';",
      "title": "Data/CalendarStripAgenda",
      "category": "Data",
      "status": "documented",
      "description": "<p>Strip semanal de días con la agenda del día elegido.</p>\n<p>Es el patrón de calendario que funciona en una tarjeta angosta: siete\nobjetivos de toque para navegar y una lista debajo, sin la grilla temporal\nque a 360 px no se puede leer.</p>\n",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "navegar la semana y ver el día en una tarjeta angosta",
        "dar agenda en una home móvil sin la grilla temporal completa"
      ],
      "avoidWhen": [
        "necesitar arrastre o resize: usar AfCalendar",
        "mostrar un mes: usar AfCalendarMiniMonth"
      ],
      "related": [
        "AfCalendar",
        "AfCalendarMiniMonth",
        "AfCalendarUpcoming"
      ],
      "tokens": [
        "--af-card-bg",
        "--af-primary",
        "--af-surface-2",
        "--af-calendar-grid-line"
      ],
      "api": {
        "inputs": [
          {
            "name": "createButton",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "events",
            "type": "readonly AfCalendarEvent[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "firstDay",
            "type": "AfCalendarWeekday",
            "required": false,
            "defaultValue": "1",
            "description": "",
            "deprecated": false
          },
          {
            "name": "heading",
            "type": "string",
            "required": false,
            "defaultValue": "'Agenda'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "labels",
            "type": "AfCalendarLabels",
            "required": false,
            "defaultValue": "AF_CALENDAR_DEFAULT_LABELS",
            "description": "",
            "deprecated": false
          },
          {
            "name": "now",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Instante de referencia <code>YYYY-MM-DDTHH:mm</code>. Sin valor, el reloj del dispositivo.</p>\n",
            "deprecated": false
          },
          {
            "name": "selectedDate",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "timeZone",
            "type": "string",
            "required": true,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "createPressed",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "dateSelect",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "eventActivate",
            "type": "AfCalendarEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "todayPressed",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-calendarstripagenda--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-calendarstripagenda--default"
        },
        {
          "id": "data-calendarstripagenda--with-create",
          "name": "WithCreate",
          "url": "/storybook/?path=/story/data-calendarstripagenda--with-create"
        },
        {
          "id": "data-calendarstripagenda--empty-day",
          "name": "EmptyDay",
          "url": "/storybook/?path=/story/data-calendarstripagenda--empty-day"
        },
        {
          "id": "data-calendarstripagenda--day-navigation",
          "name": "DayNavigation",
          "url": "/storybook/?path=/story/data-calendarstripagenda--day-navigation"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-calendarstripagenda--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfCalendarStripAgenda } from '@argfit-ui/adaptive';",
        "template": "<div class=\"af-story-surface\" style=\"max-width:400px\">\n      <af-calendar-strip-agenda\n        [events]=\"events\"\n        [timeZone]=\"timeZone\"\n        [selectedDate]=\"selectedDate\"\n        [heading]=\"heading\"\n        [createButton]=\"createButton\"\n        [now]=\"now\"\n        (dateSelect)=\"dateSelect($event)\"\n        (todayPressed)=\"todayPressed()\"\n        (eventActivate)=\"eventActivate($event)\"\n        (createPressed)=\"createPressed($event)\"\n      />\n    </div>"
      }
    },
    {
      "id": "calendar-upcoming",
      "name": "AfCalendarUpcoming",
      "className": "AfCalendarUpcomingComponent",
      "selector": "af-calendar-upcoming",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfCalendarUpcoming } from '@argfit-ui/adaptive';",
      "title": "Data/CalendarUpcoming",
      "category": "Data",
      "status": "documented",
      "description": "<p>Lista compacta de las próximas actividades.</p>\n<p>Widget de solo lectura para dashboards: no carga el motor de interacción del\ncalendario completo, que en una tarjeta de 360 px sería puro peso muerto.</p>\n",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "listar las próximas actividades en un dashboard",
        "dar contexto de agenda sin cargar el calendario completo"
      ],
      "avoidWhen": [
        "navegar o editar la agenda: para eso está AfCalendar",
        "mostrar una lista que no proviene de un calendario: usar AfDataView"
      ],
      "related": [
        "AfCalendar",
        "AfCalendarNextSession",
        "AfCalendarStripAgenda"
      ],
      "tokens": [
        "--af-card-bg",
        "--af-card-border",
        "--af-calendar-grid-line",
        "--af-event-training-accent"
      ],
      "api": {
        "inputs": [
          {
            "name": "emptyTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin actividades próximas'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "events",
            "type": "readonly AfCalendarEvent[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "heading",
            "type": "string",
            "required": false,
            "defaultValue": "'Próximas actividades'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "labels",
            "type": "AfCalendarLabels",
            "required": false,
            "defaultValue": "AF_CALENDAR_DEFAULT_LABELS",
            "description": "",
            "deprecated": false
          },
          {
            "name": "limit",
            "type": "number",
            "required": false,
            "defaultValue": "5",
            "description": "",
            "deprecated": false
          },
          {
            "name": "linkLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Ver calendario'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "now",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Instante de referencia <code>YYYY-MM-DDTHH:mm</code>.</p>\n<p>Sin valor usa el reloj del dispositivo. Se expone para poder congelarlo en\ntests y en capturas: «lo que sigue» cambia con la hora, y una historia que\ncambia sola no es comparable.</p>\n",
            "deprecated": false
          },
          {
            "name": "showLink",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "timeZone",
            "type": "string",
            "required": true,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "eventActivate",
            "type": "AfCalendarEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "linkPressed",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-calendarupcoming--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-calendarupcoming--default"
        },
        {
          "id": "data-calendarupcoming--loading",
          "name": "Loading",
          "url": "/storybook/?path=/story/data-calendarupcoming--loading"
        },
        {
          "id": "data-calendarupcoming--empty",
          "name": "Empty",
          "url": "/storybook/?path=/story/data-calendarupcoming--empty"
        },
        {
          "id": "data-calendarupcoming--activation",
          "name": "Activation",
          "url": "/storybook/?path=/story/data-calendarupcoming--activation"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-calendarupcoming--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfCalendarUpcoming } from '@argfit-ui/adaptive';",
        "template": "<div class=\"af-story-surface\" style=\"max-width:400px\">\n      <af-calendar-upcoming\n        [events]=\"events\"\n        [timeZone]=\"timeZone\"\n        [limit]=\"limit\"\n        [heading]=\"heading\"\n        [loading]=\"loading\"\n        [showLink]=\"showLink\"\n        [now]=\"now\"\n        (eventActivate)=\"eventActivate($event)\"\n        (linkPressed)=\"linkPressed()\"\n      />\n    </div>"
      }
    },
    {
      "id": "calendar-week-load",
      "name": "AfCalendarWeekLoad",
      "className": "AfCalendarWeekLoadComponent",
      "selector": "af-calendar-week-load",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfCalendarWeekLoad } from '@argfit-ui/adaptive';",
      "title": "Data/CalendarWeekLoad",
      "category": "Data",
      "status": "documented",
      "description": "<p>Minutos planificados por día de la semana.</p>\n<p>Los picos se destacan por color e intensidad, pero el valor numérico\nacompaña cada barra: un gráfico donde la única lectura es la altura relativa\nno sirve para planificar una semana de trabajo.</p>\n",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "comparar la carga planificada de los días de una semana",
        "detectar picos de trabajo antes de sumar actividades"
      ],
      "avoidWhen": [
        "graficar una serie que no son minutos por día: usar AfChart",
        "mostrar una sola métrica: usar AfMetricCard"
      ],
      "related": [
        "AfCalendar",
        "AfChart",
        "AfCalendarDayTimeline"
      ],
      "tokens": [
        "--af-card-bg",
        "--af-primary-hover",
        "--af-primary-active",
        "--af-accent"
      ],
      "api": {
        "inputs": [
          {
            "name": "anchorDate",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "events",
            "type": "readonly AfCalendarEvent[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "firstDay",
            "type": "AfCalendarWeekday",
            "required": false,
            "defaultValue": "1",
            "description": "",
            "deprecated": false
          },
          {
            "name": "goalMinutes",
            "type": "number | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Minutos objetivo por semana. Con valor, se dibuja la línea de referencia.</p>\n",
            "deprecated": false
          },
          {
            "name": "heading",
            "type": "string",
            "required": false,
            "defaultValue": "'Carga semanal'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "labels",
            "type": "AfCalendarLabels",
            "required": false,
            "defaultValue": "AF_CALENDAR_DEFAULT_LABELS",
            "description": "",
            "deprecated": false
          },
          {
            "name": "now",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Instante de referencia <code>YYYY-MM-DDTHH:mm</code>. Sin valor, el reloj del dispositivo.</p>\n",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "daySelect",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-calendarweekload--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-calendarweekload--default"
        },
        {
          "id": "data-calendarweekload--with-goal",
          "name": "WithGoal",
          "url": "/storybook/?path=/story/data-calendarweekload--with-goal"
        },
        {
          "id": "data-calendarweekload--empty",
          "name": "Empty",
          "url": "/storybook/?path=/story/data-calendarweekload--empty"
        },
        {
          "id": "data-calendarweekload--day-selection",
          "name": "DaySelection",
          "url": "/storybook/?path=/story/data-calendarweekload--day-selection"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-calendarweekload--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfCalendarWeekLoad } from '@argfit-ui/adaptive';",
        "template": "<div class=\"af-story-surface\" style=\"max-width:400px\">\n      <af-calendar-week-load\n        [events]=\"events\"\n        [anchorDate]=\"anchorDate\"\n        [goalMinutes]=\"goalMinutes\"\n        [heading]=\"heading\"\n        [now]=\"now\"\n        (daySelect)=\"daySelect($event)\"\n      />\n    </div>"
      }
    },
    {
      "id": "card",
      "name": "AfCard",
      "className": "AfCardComponent",
      "selector": "af-card",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfCard } from '@argfit-ui/adaptive';",
      "title": "Components/Surfaces/Card",
      "category": "Surfaces",
      "status": "documented",
      "description": "Token-driven surface for grouping related content and actions.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "grouping related content and actions",
        "creating a reusable semantic surface"
      ],
      "avoidWhen": [
        "page-level layout without a meaningful group",
        "data tables"
      ],
      "related": [
        "AfMetricCard",
        "AfAuthShell"
      ],
      "tokens": [
        "--af-card-bg",
        "--af-card-border",
        "--af-card-shadow"
      ],
      "api": {
        "inputs": [
          {
            "name": "density",
            "type": "AfCardDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "interactive",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selected",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfCardTone",
            "required": false,
            "defaultValue": "'neutral'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "variant",
            "type": "AfCardVariant",
            "required": false,
            "defaultValue": "'surface'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "pressed",
            "type": "Event",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-surfaces-card--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-surfaces-card--default"
        },
        {
          "id": "components-surfaces-card--elevated",
          "name": "Elevated",
          "url": "/storybook/?path=/story/components-surfaces-card--elevated"
        },
        {
          "id": "components-surfaces-card--outlined",
          "name": "Outlined",
          "url": "/storybook/?path=/story/components-surfaces-card--outlined"
        },
        {
          "id": "components-surfaces-card--interactive",
          "name": "Interactive",
          "url": "/storybook/?path=/story/components-surfaces-card--interactive"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-surfaces-card--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfCard } from '@argfit-ui/adaptive';",
        "template": "<af-card\n      [variant]=\"variant\"\n      [density]=\"density\"\n      [tone]=\"tone\"\n      [interactive]=\"interactive\"\n      [selected]=\"selected\"\n      (pressed)=\"pressed($event)\"\n    >\n      <h3>Card Title</h3>\n      <p>This is the content of the card projected via ng-content.</p>\n    </af-card>"
      }
    },
    {
      "id": "chart",
      "name": "AfChart",
      "className": "AfChartComponent",
      "selector": "af-chart",
      "package": "@argfit-ui/adaptive/chart",
      "importStatement": "import { AfChart } from '@argfit-ui/adaptive/chart';",
      "title": "Data/Chart",
      "category": "Data",
      "status": "documented",
      "description": "Visualización adaptativa con series vendor-neutral, leyenda y tabla accesible. Cubre series cartesianas, distribuciones, matrices y perfiles multivariable con los tokens `--af-chart-*`.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para comparar tendencias o distribuciones de datos cuantitativos.",
        "Para relacionar magnitudes con unidades distintas en un mismo eje temporal."
      ],
      "avoidWhen": [
        "Para un único valor destacado; usa AfMetricCard.",
        "Para el encabezado, el menú y la exportación de un gráfico; usa AfChartCard."
      ],
      "related": [
        "AfChartCard",
        "AfAnalyticsCard",
        "AfMetricCard"
      ],
      "tokens": [
        "--af-chart-primary",
        "--af-chart-accent",
        "--af-chart-scale-3",
        "--af-chart-tooltip-text",
        "--af-bg-surface"
      ],
      "api": {
        "inputs": [
          {
            "name": "annotations",
            "type": "readonly AfChartAnnotation[]",
            "required": false,
            "defaultValue": "[]",
            "description": "<p>Marcadores sobre coordenadas concretas: el umbral estimado, el récord, la ruptura.</p>\n<p>Es distinto de <code>thresholds</code>: un umbral es un criterio fijo; una anotación señala un\nvalor observado que el lector debería llevarse aunque no interrogue el gráfico.</p>\n",
            "deprecated": false
          },
          {
            "name": "ariaLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "bands",
            "type": "readonly AfChartBand[]",
            "required": false,
            "defaultValue": "[]",
            "description": "<p>Bandas de dispersión asociadas a una serie: ±1 DE, intervalo de confianza o rango\nmínimo–máximo.</p>\n<p>Se declaran aparte de <code>series</code> porque no son mediciones independientes sino la\nincertidumbre de otra, y no deben contarse como series en la leyenda ni en la tabla.</p>\n",
            "deprecated": false
          },
          {
            "name": "categories",
            "type": "readonly string[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "dataTable",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "<p>Publica la serie como tabla accesible junto al gráfico.</p>\n<p>§20 exige resumen textual en todo gráfico. Un lienzo no es navegable por teclado ni\nlegible por tecnología asistiva: esta tabla contiene los mismos datos, no un resumen.</p>\n",
            "deprecated": false
          },
          {
            "name": "dataTableHeaders",
            "type": "AfChartTableHeaders",
            "required": false,
            "defaultValue": null,
            "description": "<p>Encabezados de las columnas en la disposición por puntos.</p>\n<p>Sin ellos se usan los nombres de los ejes, que describen la escala y no siempre la\nmagnitud que el lector busca en una tabla.</p>\n",
            "deprecated": false
          },
          {
            "name": "dataTableLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Datos del gráfico'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "dataTableLayout",
            "type": "AfChartTableLayout",
            "required": false,
            "defaultValue": "'auto'",
            "description": "<p>Disposición de la tabla accesible.</p>\n<p>Por defecto se decide por la forma de los datos. Una dispersión de burbujas lleva\ntres magnitudes por observación: en filas por serie, dos de ellas no tendrían dónde\naparecer.</p>\n",
            "deprecated": false
          },
          {
            "name": "dataTableSeriesHeader",
            "type": "string",
            "required": false,
            "defaultValue": "'Serie'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "dateRange",
            "type": "AfChartDateRange | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Rango de la cuadrícula del tipo <code>calendar</code>.</p>\n<p>Se declara aparte de los datos para que las celdas sin registro existan igualmente:\nel hueco —un descanso, una baja— es parte de lo que el calendario muestra.</p>\n",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfChartDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "description",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyMessage",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin datos disponibles'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "graph",
            "type": "AfChartGraph | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Nodos y vínculos de los tipos <code>sankey</code> y <code>network</code>.</p>\n",
            "deprecated": false
          },
          {
            "name": "height",
            "type": "number | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "indicators",
            "type": "readonly AfChartIndicator[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "interactive",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "legend",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "regions",
            "type": "readonly AfChartRegion[]",
            "required": false,
            "defaultValue": "[]",
            "description": "<p>Franjas de referencia sombreadas, p. ej. la zona óptima de un ratio.</p>\n",
            "deprecated": false
          },
          {
            "name": "renderErrorMessage",
            "type": "string",
            "required": false,
            "defaultValue": "'No se pudo cargar el gráfico.'",
            "description": "<p>Mensaje accesible cuando el runtime diferido no puede descargarse.</p>\n",
            "deprecated": false
          },
          {
            "name": "retryLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Reintentar'",
            "description": "<p>Etiqueta de la acción que vuelve a solicitar el runtime tras un fallo.</p>\n",
            "deprecated": false
          },
          {
            "name": "secondaryAxis",
            "type": "AfChartAxis | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Eje derecho con su propia escala, para las series con <code>axis: &#39;secondary&#39;</code>.</p>\n",
            "deprecated": false
          },
          {
            "name": "series",
            "type": "readonly AfChartSeries[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "showGrid",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "showPoints",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "<p>Superpone las observaciones crudas sobre las cajas de un boxplot.</p>\n",
            "deprecated": false
          },
          {
            "name": "spans",
            "type": "readonly AfChartSpan[]",
            "required": false,
            "defaultValue": "[]",
            "description": "<p>Bloques con inicio y fin del tipo <code>gantt</code>.</p>\n<p>Se expresan en la unidad del eje —semana de temporada— y no en fechas: la\nperiodización se planifica contra el calendario de competición, que cambia cada año.</p>\n",
            "deprecated": false
          },
          {
            "name": "thresholds",
            "type": "readonly AfChartThreshold[]",
            "required": false,
            "defaultValue": "[]",
            "description": "<p>Líneas de umbral de decisión o de corte clínico.</p>\n",
            "deprecated": false
          },
          {
            "name": "title",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfChartTone",
            "required": false,
            "defaultValue": "'default'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "toolbox",
            "type": "readonly AfChartToolboxFeature[]",
            "required": false,
            "defaultValue": "[]",
            "description": "<p>Herramientas de exploración sobre el lienzo (zoom por área, tabla de datos, PNG).</p>\n<p>Vacío por defecto: un gráfico embebido en una tarjeta de resumen no debería\nofrecer controles que compiten con la lectura.</p>\n",
            "deprecated": false
          },
          {
            "name": "tree",
            "type": "readonly AfChartTreeNode[]",
            "required": false,
            "defaultValue": "[]",
            "description": "<p>Jerarquía de proporciones del tipo <code>treemap</code>.</p>\n",
            "deprecated": false
          },
          {
            "name": "type",
            "type": "AfChartType",
            "required": false,
            "defaultValue": "'line'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "webglMessage",
            "type": "string",
            "required": false,
            "defaultValue": "'Este gráfico necesita el paquete opcional echarts-gl.'",
            "description": "<p>Aviso cuando un tipo volumétrico no encuentra <code>echarts-gl</code>.</p>\n<p>El paquete es una dependencia opcional: sin él el lienzo queda vacío, y un gráfico\nvacío se lee como «no hay datos» en lugar de «falta instalar algo».</p>\n",
            "deprecated": false
          },
          {
            "name": "xAxis",
            "type": "AfChartAxis | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "yAxis",
            "type": "AfChartAxis | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "pointSelect",
            "type": "AfChartPointEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-chart--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-chart--default"
        },
        {
          "id": "data-chart--loading",
          "name": "Loading",
          "url": "/storybook/?path=/story/data-chart--loading"
        },
        {
          "id": "data-chart--runtime-load-error",
          "name": "RuntimeLoadError",
          "url": "/storybook/?path=/story/data-chart--runtime-load-error"
        },
        {
          "id": "data-chart--combo-ejes-duales",
          "name": "ComboEjesDuales",
          "url": "/storybook/?path=/story/data-chart--combo-ejes-duales"
        },
        {
          "id": "data-chart--banda-de-dispersion",
          "name": "BandaDeDispersion",
          "url": "/storybook/?path=/story/data-chart--banda-de-dispersion"
        },
        {
          "id": "data-chart--dispersion-con-ajuste",
          "name": "DispersionConAjuste",
          "url": "/storybook/?path=/story/data-chart--dispersion-con-ajuste"
        },
        {
          "id": "data-chart--escala-logaritmica",
          "name": "EscalaLogaritmica",
          "url": "/storybook/?path=/story/data-chart--escala-logaritmica"
        },
        {
          "id": "data-chart--area-apilada",
          "name": "AreaApilada",
          "url": "/storybook/?path=/story/data-chart--area-apilada"
        },
        {
          "id": "data-chart--polar-apilado",
          "name": "PolarApilado",
          "url": "/storybook/?path=/story/data-chart--polar-apilado"
        },
        {
          "id": "data-chart--matriz-de-correlacion",
          "name": "MatrizDeCorrelacion",
          "url": "/storybook/?path=/story/data-chart--matriz-de-correlacion"
        },
        {
          "id": "data-chart--boxplot-con-puntos",
          "name": "BoxplotConPuntos",
          "url": "/storybook/?path=/story/data-chart--boxplot-con-puntos"
        },
        {
          "id": "data-chart--heatmap",
          "name": "Heatmap",
          "url": "/storybook/?path=/story/data-chart--heatmap"
        },
        {
          "id": "data-chart--barras-horizontales",
          "name": "BarrasHorizontales",
          "url": "/storybook/?path=/story/data-chart--barras-horizontales"
        },
        {
          "id": "data-chart--splits-de-sprint",
          "name": "SplitsDeSprint",
          "url": "/storybook/?path=/story/data-chart--splits-de-sprint"
        },
        {
          "id": "data-chart--radar",
          "name": "Radar",
          "url": "/storybook/?path=/story/data-chart--radar"
        },
        {
          "id": "data-chart--coordenadas-paralelas",
          "name": "CoordenadasParalelas",
          "url": "/storybook/?path=/story/data-chart--coordenadas-paralelas"
        },
        {
          "id": "data-chart--gauge",
          "name": "Gauge",
          "url": "/storybook/?path=/story/data-chart--gauge"
        },
        {
          "id": "data-chart--con-toolbox",
          "name": "ConToolbox",
          "url": "/storybook/?path=/story/data-chart--con-toolbox"
        },
        {
          "id": "data-chart--test-de-lactato",
          "name": "TestDeLactato",
          "url": "/storybook/?path=/story/data-chart--test-de-lactato"
        },
        {
          "id": "data-chart--test-de-rampa",
          "name": "TestDeRampa",
          "url": "/storybook/?path=/story/data-chart--test-de-rampa"
        },
        {
          "id": "data-chart--curva-fuerza-tiempo",
          "name": "CurvaFuerzaTiempo",
          "url": "/storybook/?path=/story/data-chart--curva-fuerza-tiempo"
        },
        {
          "id": "data-chart--sprints-repetidos",
          "name": "SprintsRepetidos",
          "url": "/storybook/?path=/story/data-chart--sprints-repetidos"
        },
        {
          "id": "data-chart--bland-altman",
          "name": "BlandAltman",
          "url": "/storybook/?path=/story/data-chart--bland-altman"
        },
        {
          "id": "data-chart--curva-roc",
          "name": "CurvaRoc",
          "url": "/storybook/?path=/story/data-chart--curva-roc"
        },
        {
          "id": "data-chart--burbujas",
          "name": "Burbujas",
          "url": "/storybook/?path=/story/data-chart--burbujas"
        },
        {
          "id": "data-chart--rango-de-peso",
          "name": "RangoDePeso",
          "url": "/storybook/?path=/story/data-chart--rango-de-peso"
        },
        {
          "id": "data-chart--calendario-de-carga",
          "name": "CalendarioDeCarga",
          "url": "/storybook/?path=/story/data-chart--calendario-de-carga"
        },
        {
          "id": "data-chart--flujo-del-plantel",
          "name": "FlujoDelPlantel",
          "url": "/storybook/?path=/story/data-chart--flujo-del-plantel"
        },
        {
          "id": "data-chart--carga-por-grupo-muscular",
          "name": "CargaPorGrupoMuscular",
          "url": "/storybook/?path=/story/data-chart--carga-por-grupo-muscular"
        },
        {
          "id": "data-chart--red-de-pases",
          "name": "RedDePases",
          "url": "/storybook/?path=/story/data-chart--red-de-pases"
        },
        {
          "id": "data-chart--proyeccion-de-carga",
          "name": "ProyeccionDeCarga",
          "url": "/storybook/?path=/story/data-chart--proyeccion-de-carga"
        },
        {
          "id": "data-chart--histograma",
          "name": "Histograma",
          "url": "/storybook/?path=/story/data-chart--histograma"
        },
        {
          "id": "data-chart--cumplimiento-de-objetivos",
          "name": "CumplimientoDeObjetivos",
          "url": "/storybook/?path=/story/data-chart--cumplimiento-de-objetivos"
        },
        {
          "id": "data-chart--cascada",
          "name": "Cascada",
          "url": "/storybook/?path=/story/data-chart--cascada"
        },
        {
          "id": "data-chart--desvio-individual",
          "name": "DesvioIndividual",
          "url": "/storybook/?path=/story/data-chart--desvio-individual"
        },
        {
          "id": "data-chart--dumbbell",
          "name": "Dumbbell",
          "url": "/storybook/?path=/story/data-chart--dumbbell"
        },
        {
          "id": "data-chart--pequenos-multiplos",
          "name": "PequenosMultiplos",
          "url": "/storybook/?path=/story/data-chart--pequenos-multiplos"
        },
        {
          "id": "data-chart--dispersion-con-marginales",
          "name": "DispersionConMarginales",
          "url": "/storybook/?path=/story/data-chart--dispersion-con-marginales"
        },
        {
          "id": "data-chart--periodizacion",
          "name": "Periodizacion",
          "url": "/storybook/?path=/story/data-chart--periodizacion"
        },
        {
          "id": "data-chart--pareto",
          "name": "Pareto",
          "url": "/storybook/?path=/story/data-chart--pareto"
        },
        {
          "id": "data-chart--barras-cien-por-ciento",
          "name": "BarrasCienPorCiento",
          "url": "/storybook/?path=/story/data-chart--barras-cien-por-ciento"
        },
        {
          "id": "data-chart--nube-volumetrica",
          "name": "NubeVolumetrica",
          "url": "/storybook/?path=/story/data-chart--nube-volumetrica"
        },
        {
          "id": "data-chart--superficie-de-respuesta",
          "name": "SuperficieDeRespuesta",
          "url": "/storybook/?path=/story/data-chart--superficie-de-respuesta"
        },
        {
          "id": "data-chart--barras-volumetricas",
          "name": "BarrasVolumetricas",
          "url": "/storybook/?path=/story/data-chart--barras-volumetricas"
        },
        {
          "id": "data-chart--trayectoria-volumetrica",
          "name": "TrayectoriaVolumetrica",
          "url": "/storybook/?path=/story/data-chart--trayectoria-volumetrica"
        },
        {
          "id": "data-chart--sunburst",
          "name": "Sunburst",
          "url": "/storybook/?path=/story/data-chart--sunburst"
        },
        {
          "id": "data-chart--theme-river",
          "name": "ThemeRiver",
          "url": "/storybook/?path=/story/data-chart--theme-river"
        },
        {
          "id": "data-chart--diagrama-de-cuerdas",
          "name": "DiagramaDeCuerdas",
          "url": "/storybook/?path=/story/data-chart--diagrama-de-cuerdas"
        },
        {
          "id": "data-chart--embudo",
          "name": "Embudo",
          "url": "/storybook/?path=/story/data-chart--embudo"
        },
        {
          "id": "data-chart--ridgeline",
          "name": "Ridgeline",
          "url": "/storybook/?path=/story/data-chart--ridgeline"
        },
        {
          "id": "data-chart--beeswarm",
          "name": "Beeswarm",
          "url": "/storybook/?path=/story/data-chart--beeswarm"
        },
        {
          "id": "data-chart--pictograma",
          "name": "Pictograma",
          "url": "/storybook/?path=/story/data-chart--pictograma"
        },
        {
          "id": "data-chart--rosa-de-nightingale",
          "name": "RosaDeNightingale",
          "url": "/storybook/?path=/story/data-chart--rosa-de-nightingale"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-chart--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfChart } from '@argfit-ui/adaptive/chart';",
        "template": "<af-chart\n      [title]=\"title\"\n      [description]=\"description\"\n      [type]=\"type\"\n      [tone]=\"tone\"\n      [density]=\"density\"\n      [categories]=\"categories\"\n      [series]=\"series\"\n      [indicators]=\"indicators\"\n      [bands]=\"bands\"\n      [regions]=\"regions\"\n      [thresholds]=\"thresholds\"\n      [xAxis]=\"xAxis\"\n      [yAxis]=\"yAxis\"\n      [secondaryAxis]=\"secondaryAxis\"\n      [toolbox]=\"toolbox\"\n      [showPoints]=\"showPoints\"\n      [annotations]=\"annotations\"\n      [graph]=\"graph\"\n      [tree]=\"tree\"\n      [dateRange]=\"dateRange\"\n      [spans]=\"spans\"\n      [webglMessage]=\"webglMessage\"\n      [renderErrorMessage]=\"renderErrorMessage\"\n      [retryLabel]=\"retryLabel\"\n      [height]=\"height\"\n      [legend]=\"legend\"\n      [showGrid]=\"showGrid\"\n      [dataTable]=\"dataTable\"\n      [loading]=\"loading\"\n      [ariaLabel]=\"ariaLabel\"\n      (pointSelect)=\"pointSelect($event)\"\n    />"
      }
    },
    {
      "id": "chart-card",
      "name": "AfChartCard",
      "className": "AfChartCardComponent",
      "selector": "af-chart-card",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfChartCard } from '@argfit-ui/adaptive';",
      "title": "Data/Chart Card",
      "category": "Data",
      "status": "documented",
      "description": "Contenedor de un `<af-chart>` proyectado: encabezado, nota, menú de opciones, exportación a PNG y CSV, restablecer la vista y pantalla completa.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para presentar un gráfico con título, nota metodológica y acciones sobre el lienzo.",
        "Para exportar el gráfico o su serie sin reescribir la descarga en cada tablero."
      ],
      "avoidWhen": [
        "Para un gráfico incrustado sin encabezado ni acciones; usa AfChart directamente.",
        "Para una tarjeta de contenido genérico; usa AfCard."
      ],
      "related": [
        "AfChart",
        "AfCard",
        "AfAnalyticsCard"
      ],
      "tokens": [
        "--af-card-bg",
        "--af-card-border",
        "--af-border-focus",
        "--af-bg-elevated"
      ],
      "api": {
        "inputs": [
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "exportName",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Nombre base de los archivos exportados, sin extensión.</p>\n",
            "deprecated": false
          },
          {
            "name": "heading",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inlineActions",
            "type": "readonly AfChartCardAction[]",
            "required": false,
            "defaultValue": "[]",
            "description": "<p>Acciones que se muestran como botones en el encabezado en vez de dentro del menú.</p>\n<p>Se reserva para lo que se usa en cada lectura —conmutar la tabla, exportar la\nimagen—: esconderlo tras el menú añade un clic de descubrimiento a un gesto\nfrecuente. Lo que aparece aquí se retira del menú para no ofrecerlo dos veces.</p>\n",
            "deprecated": false
          },
          {
            "name": "labels",
            "type": "Partial<AfChartCardLabels>",
            "required": false,
            "defaultValue": null,
            "description": "<p>Sobrescribe los textos visibles; útil para traducir la card.</p>\n",
            "deprecated": false
          },
          {
            "name": "menu",
            "type": "readonly AfChartCardAction[]",
            "required": false,
            "defaultValue": "DEFAULT_MENU",
            "description": "<p>Acciones ofrecidas en el menú, en orden. Lista vacía oculta el menú.</p>\n",
            "deprecated": false
          },
          {
            "name": "note",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Nota metodológica: qué se está midiendo y cómo se lee.</p>\n<p>Un gráfico sin unidades ni criterio de lectura se interpreta mal con confianza, que\nes peor que no interpretarlo.</p>\n",
            "deprecated": false
          },
          {
            "name": "tableVisible",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "<p>Visibilidad de la tabla accesible del gráfico.</p>\n<p>Es bidireccional porque la tabla la dibuja el <code>&lt;af-chart&gt;</code> proyectado: la card no\npuede escribir en los inputs de un componente que no le pertenece, así que el\nconsumidor enlaza este estado con <code>[dataTable]</code>.</p>\n",
            "deprecated": false
          },
          {
            "name": "tag",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Etiqueta breve del tipo de visualización, p. ej. «Combo · barras + línea».</p>\n",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "action",
            "type": "AfChartCardActionEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "fullscreenChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "popOut",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "<p>Intención de abrir el gráfico en una ventana o vista propia.</p>\n",
            "deprecated": false
          },
          {
            "name": "tableVisible",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "<p>Visibilidad de la tabla accesible del gráfico.</p>\n<p>Es bidireccional porque la tabla la dibuja el <code>&lt;af-chart&gt;</code> proyectado: la card no\npuede escribir en los inputs de un componente que no le pertenece, así que el\nconsumidor enlaza este estado con <code>[dataTable]</code>.</p>\n",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-chart-card--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-chart-card--default"
        },
        {
          "id": "data-chart-card--menu-de-opciones",
          "name": "MenuDeOpciones",
          "url": "/storybook/?path=/story/data-chart-card--menu-de-opciones"
        },
        {
          "id": "data-chart-card--tabla-de-datos",
          "name": "TablaDeDatos",
          "url": "/storybook/?path=/story/data-chart-card--tabla-de-datos"
        },
        {
          "id": "data-chart-card--sin-menu",
          "name": "SinMenu",
          "url": "/storybook/?path=/story/data-chart-card--sin-menu"
        },
        {
          "id": "data-chart-card--banda-de-dispersion",
          "name": "BandaDeDispersion",
          "url": "/storybook/?path=/story/data-chart-card--banda-de-dispersion"
        },
        {
          "id": "data-chart-card--tabla-por-observacion",
          "name": "TablaPorObservacion",
          "url": "/storybook/?path=/story/data-chart-card--tabla-por-observacion"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-chart-card--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfChartCard } from '@argfit-ui/adaptive';",
        "template": "<af-chart-card\n  exportName=\"carga-acwr\"\n/>"
      }
    },
    {
      "id": "chat-composer",
      "name": "AfChatComposer",
      "className": "AfChatComposerComponent",
      "selector": "af-chat-composer",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfChatComposer } from '@argfit-ui/adaptive';",
      "title": "Components/Communication/Chat Composer",
      "category": "Communication",
      "status": "documented",
      "description": "Compositor genérico. El consumidor procesa y persiste el mensaje enviado.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Redactar y enviar mensajes en una conversación"
      ],
      "avoidWhen": [
        "Editar contenido enriquecido"
      ],
      "related": [
        "AfTextarea",
        "AfButton"
      ],
      "tokens": [
        "--af-input-bg",
        "--af-border-focus"
      ],
      "api": {
        "inputs": [
          {
            "name": "busy",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string",
            "required": false,
            "defaultValue": "'Tu mensaje'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "maxLength",
            "type": "number",
            "required": false,
            "defaultValue": "4000",
            "description": "",
            "deprecated": false
          },
          {
            "name": "placeholder",
            "type": "string",
            "required": false,
            "defaultValue": "'Escribe una pregunta'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "rows",
            "type": "number",
            "required": false,
            "defaultValue": "3",
            "description": "",
            "deprecated": false
          },
          {
            "name": "submitLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Enviar'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "string",
            "required": false,
            "defaultValue": "''",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "submitted",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "valueChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-communication-chat-composer--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-communication-chat-composer--default"
        },
        {
          "id": "components-communication-chat-composer--disabled",
          "name": "Disabled",
          "url": "/storybook/?path=/story/components-communication-chat-composer--disabled"
        },
        {
          "id": "components-communication-chat-composer--busy",
          "name": "Busy",
          "url": "/storybook/?path=/story/components-communication-chat-composer--busy"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-communication-chat-composer--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfChatComposer } from '@argfit-ui/adaptive';",
        "template": "<af-chat-composer />"
      }
    },
    {
      "id": "chat-message",
      "name": "AfChatMessage",
      "className": "AfChatMessageComponent",
      "selector": "af-chat-message",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfChatMessage } from '@argfit-ui/adaptive';",
      "title": "Components/Communication/Chat Message",
      "category": "Communication",
      "status": "documented",
      "description": "Presentación genérica de mensajes. El consumidor gestiona datos, permisos e historial.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Presentar un mensaje de una conversación"
      ],
      "avoidWhen": [
        "Mostrar avisos globales"
      ],
      "related": [
        "AfCard",
        "AfInlineMessage"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border-soft",
        "--af-text-main"
      ],
      "api": {
        "inputs": [
          {
            "name": "author",
            "type": "string",
            "required": false,
            "defaultValue": "'Asistente'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "role",
            "type": "AfChatRole",
            "required": false,
            "defaultValue": "'assistant'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "status",
            "type": "AfChatStatus",
            "required": false,
            "defaultValue": "'complete'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "timeLabel",
            "type": "string",
            "required": false,
            "defaultValue": "''",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "components-communication-chat-message--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-communication-chat-message--default"
        },
        {
          "id": "components-communication-chat-message--user",
          "name": "User",
          "url": "/storybook/?path=/story/components-communication-chat-message--user"
        },
        {
          "id": "components-communication-chat-message--pending",
          "name": "Pending",
          "url": "/storybook/?path=/story/components-communication-chat-message--pending"
        },
        {
          "id": "components-communication-chat-message--failed",
          "name": "Failed",
          "url": "/storybook/?path=/story/components-communication-chat-message--failed"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-communication-chat-message--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfChatMessage } from '@argfit-ui/adaptive';",
        "template": "<af-chat-message [role]=\"role\" [status]=\"status\" [author]=\"author\" [timeLabel]=\"timeLabel\">La cobertura del intervalo incluye 12 sesiones.</af-chat-message>"
      }
    },
    {
      "id": "checkbox",
      "name": "AfCheckbox",
      "className": "AfCheckboxComponent",
      "selector": "af-checkbox",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfCheckbox } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/Checkbox",
      "category": "Forms",
      "status": "documented",
      "description": "Control booleano accesible para aceptar, activar o seleccionar una opción independiente.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Cuando una opción puede activarse o desactivarse de forma independiente."
      ],
      "avoidWhen": [
        "Cuando las opciones sean mutuamente excluyentes; usa AfRadioGroup."
      ],
      "related": [
        "AfRadioGroup",
        "AfToggle"
      ],
      "tokens": [
        "--af-input-border",
        "--af-border-focus"
      ],
      "api": {
        "inputs": [
          {
            "name": "checked",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "hint",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "name",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfControlSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "state",
            "type": "AfValidationState",
            "required": false,
            "defaultValue": "'default'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "checkedChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "focusChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-forms-checkbox--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-checkbox--default"
        },
        {
          "id": "components-forms-checkbox--disabled",
          "name": "Disabled",
          "url": "/storybook/?path=/story/components-forms-checkbox--disabled"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-checkbox--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfCheckbox } from '@argfit-ui/adaptive';",
        "template": "<af-checkbox [label]=\"label\" [hint]=\"hint\" [checked]=\"checked\" [disabled]=\"disabled\" [required]=\"required\" [size]=\"size\" (checkedChange)=\"checkedChange($event)\" />"
      }
    },
    {
      "id": "chip",
      "name": "AfChip",
      "className": "AfChipComponent",
      "selector": "af-chip",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfChip } from '@argfit-ui/adaptive';",
      "title": "Components/Identity/Chip",
      "category": "Identity",
      "status": "documented",
      "description": "Compact label for filters, selections and removable values.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "interactive filters or selections",
        "removable compact values"
      ],
      "avoidWhen": [
        "passive status text",
        "primary actions"
      ],
      "related": [
        "AfBadge",
        "AfAvatar"
      ],
      "tokens": [
        "--af-bg-interactive",
        "--af-border",
        "--af-radius-pill"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "icon",
            "type": "AfIconName | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "interactive",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "removable",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "removeAriaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Remove chip'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selected",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfChipSize",
            "required": false,
            "defaultValue": "'sm'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfChipTone",
            "required": false,
            "defaultValue": "'neutral'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "variant",
            "type": "AfChipVariant",
            "required": false,
            "defaultValue": "'soft'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "pressed",
            "type": "MouseEvent | KeyboardEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "removed",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-identity-chip--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-identity-chip--default"
        },
        {
          "id": "components-identity-chip--removable",
          "name": "Removable",
          "url": "/storybook/?path=/story/components-identity-chip--removable"
        },
        {
          "id": "components-identity-chip--selected",
          "name": "Selected",
          "url": "/storybook/?path=/story/components-identity-chip--selected"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-identity-chip--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfChip } from '@argfit-ui/adaptive';",
        "template": "<af-chip [tone]=\"tone\" [variant]=\"variant\" [size]=\"size\" [removable]=\"removable\" [interactive]=\"interactive\" [selected]=\"selected\" [ariaLabel]=\"ariaLabel\">Porteros</af-chip>"
      }
    },
    {
      "id": "command-palette",
      "name": "AfCommandPalette",
      "className": "AfCommandPaletteComponent",
      "selector": "af-command-palette",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfCommandPalette } from '@argfit-ui/adaptive';",
      "title": "Components/Overlays/CommandPalette",
      "category": "Overlays",
      "status": "documented",
      "description": "Sistema global de comandos configurable mediante JSON, con ranking fuzzy, modos, contexto, providers y quick inputs.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para registrar navegación, acciones y búsquedas globales con una experiencia tipo VS Code.",
        "Para ofrecer comandos estáticos y proveedores dinámicos desde una configuración JSON."
      ],
      "avoidWhen": [
        "Para ejecutar routing, permisos, fetching o exportaciones dentro de la librería.",
        "Para una lista siempre visible; usa AfListbox."
      ],
      "related": [
        "AfDialog",
        "AfPageShell",
        "AfListbox"
      ],
      "tokens": [
        "--af-input-bg",
        "--af-border-focus",
        "--af-bg-elevated",
        "--af-shadow-xl"
      ],
      "api": {
        "inputs": [],
        "outputs": [
          {
            "name": "commandExecution",
            "type": "AfCommandExecutionEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-overlays-commandpalette--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--default"
        },
        {
          "id": "components-overlays-commandpalette--open-with-modes",
          "name": "OpenWithModes",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--open-with-modes"
        },
        {
          "id": "components-overlays-commandpalette--shortcut-and-mode-prefix",
          "name": "ShortcutAndModePrefix",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--shortcut-and-mode-prefix"
        },
        {
          "id": "components-overlays-commandpalette--fuzzy-ranking",
          "name": "FuzzyRanking",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--fuzzy-ranking"
        },
        {
          "id": "components-overlays-commandpalette--context-and-unavailable",
          "name": "ContextAndUnavailable",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--context-and-unavailable"
        },
        {
          "id": "components-overlays-commandpalette--dynamic-provider",
          "name": "DynamicProvider",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--dynamic-provider"
        },
        {
          "id": "components-overlays-commandpalette--entity-collection-players",
          "name": "EntityCollectionPlayers",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--entity-collection-players"
        },
        {
          "id": "components-overlays-commandpalette--entity-activator",
          "name": "EntityActivator",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--entity-activator"
        },
        {
          "id": "components-overlays-commandpalette--entity-actions",
          "name": "EntityActions",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--entity-actions"
        },
        {
          "id": "components-overlays-commandpalette--entity-action-context-and-back",
          "name": "EntityActionContextAndBack",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--entity-action-context-and-back"
        },
        {
          "id": "components-overlays-commandpalette--entity-fallback",
          "name": "EntityFallback",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--entity-fallback"
        },
        {
          "id": "components-overlays-commandpalette--entity-empty",
          "name": "EntityEmpty",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--entity-empty"
        },
        {
          "id": "components-overlays-commandpalette--multiple-entity-collections",
          "name": "MultipleEntityCollections",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--multiple-entity-collections"
        },
        {
          "id": "components-overlays-commandpalette--custom-entity",
          "name": "CustomEntity",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--custom-entity"
        },
        {
          "id": "components-overlays-commandpalette--recent-commands",
          "name": "RecentCommands",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--recent-commands"
        },
        {
          "id": "components-overlays-commandpalette--provider-error",
          "name": "ProviderError",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--provider-error"
        },
        {
          "id": "components-overlays-commandpalette--nested-commands",
          "name": "NestedCommands",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--nested-commands"
        },
        {
          "id": "components-overlays-commandpalette--export-parameters",
          "name": "ExportParameters",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--export-parameters"
        },
        {
          "id": "components-overlays-commandpalette--parameter-back-with-escape",
          "name": "ParameterBackWithEscape",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--parameter-back-with-escape"
        },
        {
          "id": "components-overlays-commandpalette--custom-command",
          "name": "CustomCommand",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--custom-command"
        },
        {
          "id": "components-overlays-commandpalette--keyboard-execution",
          "name": "KeyboardExecution",
          "url": "/storybook/?path=/story/components-overlays-commandpalette--keyboard-execution"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-overlays-commandpalette--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfCommandPalette } from '@argfit-ui/adaptive';",
        "template": "<div style=\"width: min(42rem, 90vw)\">\n        <af-command-palette (commandExecution)=\"commandExecution($event)\" />\n      </div>"
      }
    },
    {
      "id": "data-table",
      "name": "AfDataTable",
      "className": "AfDataTableComponent",
      "selector": "af-data-table",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfDataTable } from '@argfit-ui/adaptive';",
      "title": "Data/DataTable",
      "category": "Data",
      "status": "documented",
      "description": "Tabla adaptativa para comparar registros: tabla densa en desktop y lista jerarquizada en mobile, con una sola API pública.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "comparar registros con las mismas columnas",
        "ordenar, paginar, seleccionar o expandir filas en desktop y mobile"
      ],
      "avoidWhen": [
        "mostrar un resumen pequeño de clave y valor",
        "representar contenido libre que funciona mejor como colección de tarjetas",
        "delegar fetching o reglas de negocio a la capa de UI"
      ],
      "related": [
        "AfDataView",
        "AfPaginator",
        "AfEmptyState",
        "AfBadge"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-bg-elevated",
        "--af-border",
        "--af-text-main",
        "--af-text-muted",
        "--af-primary"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Tabla de datos'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "columns",
            "type": "readonly AfDataTableColumn[]",
            "required": true,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfDataTableDensity",
            "required": false,
            "defaultValue": "'normal'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin datos'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "expandedRowIds",
            "type": "readonly string[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "pagination",
            "type": "AfDataTablePagination | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "rowIdKey",
            "type": "string",
            "required": false,
            "defaultValue": "'id'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "rows",
            "type": "readonly unknown[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectedRowIds",
            "type": "readonly string[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectionMode",
            "type": "AfDataTableSelectionMode",
            "required": false,
            "defaultValue": "'none'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "sort",
            "type": "AfDataTableSort | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "pageChange",
            "type": "AfDataTablePageChange",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "rowExpandedChange",
            "type": "readonly string[]",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "rowPressed",
            "type": "unknown",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectionChange",
            "type": "readonly string[]",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "sortChange",
            "type": "AfDataTableSort",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-datatable--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-datatable--default"
        },
        {
          "id": "data-datatable--sorting-and-pagination",
          "name": "SortingAndPagination",
          "url": "/storybook/?path=/story/data-datatable--sorting-and-pagination"
        },
        {
          "id": "data-datatable--custom-content",
          "name": "CustomContent",
          "url": "/storybook/?path=/story/data-datatable--custom-content"
        },
        {
          "id": "data-datatable--loading",
          "name": "Loading",
          "url": "/storybook/?path=/story/data-datatable--loading"
        },
        {
          "id": "data-datatable--empty",
          "name": "Empty",
          "url": "/storybook/?path=/story/data-datatable--empty"
        },
        {
          "id": "data-datatable--custom-empty",
          "name": "CustomEmpty",
          "url": "/storybook/?path=/story/data-datatable--custom-empty"
        },
        {
          "id": "data-datatable--error",
          "name": "Error",
          "url": "/storybook/?path=/story/data-datatable--error"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-datatable--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfDataTable } from '@argfit-ui/adaptive';",
        "template": "<div class=\"af-story-surface\">\n      <af-data-table\n        [columns]=\"columns\"\n        [rows]=\"rows\"\n        [rowIdKey]=\"rowIdKey\"\n        [density]=\"density\"\n        [selectionMode]=\"selectionMode\"\n        [selectedRowIds]=\"selectedRowIds\"\n        [expandedRowIds]=\"expandedRowIds\"\n        [sort]=\"sort\"\n        [pagination]=\"pagination\"\n        [loading]=\"loading\"\n        [error]=\"error\"\n        [emptyTitle]=\"emptyTitle\"\n        [emptyDescription]=\"emptyDescription\"\n        [ariaLabel]=\"ariaLabel\"\n        (sortChange)=\"sortChange($event)\"\n        (pageChange)=\"pageChange($event)\"\n        (rowPressed)=\"rowPressed($event)\"\n        (selectionChange)=\"selectionChange($event)\"\n        (rowExpandedChange)=\"rowExpandedChange($event)\"\n      />\n    </div>"
      }
    },
    {
      "id": "data-view",
      "name": "AfDataView",
      "className": "AfDataViewComponent",
      "selector": "af-data-view",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfDataView } from '@argfit-ui/adaptive';",
      "title": "Data/DataView",
      "category": "Data",
      "status": "documented",
      "description": "Colección adaptativa que alterna entre grid y lista manteniendo estados comunes.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para mostrar entidades enriquecidas en tarjetas o filas."
      ],
      "avoidWhen": [
        "Para datos tabulares con columnas comparables; usa AfDataTable."
      ],
      "related": [
        "AfDataTable",
        "AfCard"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Vista de datos'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfDataViewDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin resultados'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "items",
            "type": "readonly AfDataViewItem[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "layout",
            "type": "AfDataViewLayout",
            "required": false,
            "defaultValue": "'grid'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "itemPressed",
            "type": "AfDataViewItem",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-dataview--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-dataview--default"
        },
        {
          "id": "data-dataview--empty",
          "name": "Empty",
          "url": "/storybook/?path=/story/data-dataview--empty"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-dataview--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfDataView } from '@argfit-ui/adaptive';",
        "template": "<af-data-view [items]=\"items\" [layout]=\"layout\" [density]=\"density\" [loading]=\"loading\" [error]=\"error\" [emptyTitle]=\"emptyTitle\" (itemPressed)=\"itemPressed($event)\" />"
      }
    },
    {
      "id": "date-picker",
      "name": "AfDatePicker",
      "className": "AfDatePickerComponent",
      "selector": "af-date-picker",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfDatePicker } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/DatePicker",
      "category": "Forms",
      "status": "documented",
      "description": "Civil-date input with consistent desktop and mobile behavior.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "selecting a civil date",
        "date input with min and max constraints"
      ],
      "avoidWhen": [
        "date-time or timezone selection",
        "date ranges"
      ],
      "related": [
        "AfInput",
        "AfSelect"
      ],
      "tokens": [
        "--af-bg-elevated",
        "--af-primary",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "density",
            "type": "AfDatePickerDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "errorText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "helperText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "max",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "min",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "name",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "placeholder",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "readonly",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfDatePickerSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "string",
            "required": false,
            "defaultValue": "''",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "focusChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "valueChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-forms-datepicker--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-datepicker--default"
        },
        {
          "id": "components-forms-datepicker--error",
          "name": "Error",
          "url": "/storybook/?path=/story/components-forms-datepicker--error"
        },
        {
          "id": "components-forms-datepicker--disabled",
          "name": "Disabled",
          "url": "/storybook/?path=/story/components-forms-datepicker--disabled"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-datepicker--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfDatePicker } from '@argfit-ui/adaptive';",
        "template": "<af-date-picker\n  label=\"Fecha de la sesión\"\n  value=\"2026-08-11\"\n  helperText=\"Usamos la zona horaria del equipo.\"\n  size=\"md\"\n  density=\"comfortable\"\n/>"
      }
    },
    {
      "id": "dialog",
      "name": "AfDialog",
      "className": "AfDialogComponent",
      "selector": "af-dialog",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfDialog } from '@argfit-ui/adaptive';",
      "title": "Components/Overlays/Dialog",
      "category": "Overlays",
      "status": "documented",
      "description": "Accessible modal dialog with desktop and mobile presentations.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "focused confirmation or editing flow",
        "accessible modal content"
      ],
      "avoidWhen": [
        "persistent page content",
        "non-blocking contextual feedback"
      ],
      "related": [
        "AfButton",
        "AfInlineMessage"
      ],
      "tokens": [
        "--af-bg-elevated",
        "--af-shadow-lg",
        "--af-radius-xl"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaDescribedBy",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "ariaLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "closeLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Cerrar'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "closeOnBackdrop",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "closeOnEscape",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "description",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "dismissible",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "mobilePresentation",
            "type": "AfDialogMobilePresentation",
            "required": false,
            "defaultValue": "'sheet'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "open",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfDialogSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "title",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfDialogTone",
            "required": false,
            "defaultValue": "'neutral'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "backdropPress",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "closed",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "escapePress",
            "type": "KeyboardEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "openChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "opened",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-overlays-dialog--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-overlays-dialog--default"
        },
        {
          "id": "components-overlays-dialog--danger",
          "name": "Danger",
          "url": "/storybook/?path=/story/components-overlays-dialog--danger"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-overlays-dialog--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfDialog } from '@argfit-ui/adaptive';",
        "template": "<af-dialog [open]=\"open\" [title]=\"title\" [description]=\"description\" [size]=\"size\" [tone]=\"tone\" [mobilePresentation]=\"mobilePresentation\" [dismissible]=\"dismissible\">\n      <p>La sesión contiene cambios sin publicar.</p>\n      <div afDialogFooter class=\"af-story-row\"><af-button variant=\"secondary\">Cancelar</af-button><af-button>Publicar</af-button></div>\n    </af-dialog>"
      }
    },
    {
      "id": "divider",
      "name": "AfDivider",
      "className": "AfDividerComponent",
      "selector": "af-divider",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfDivider } from '@argfit-ui/adaptive';",
      "title": "Components/Surfaces/Divider",
      "category": "Surfaces",
      "status": "documented",
      "description": "Separador semántico horizontal o vertical con etiqueta opcional.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para separar grupos relacionados dentro de una misma superficie."
      ],
      "avoidWhen": [
        "Para crear espacio visual sin significado; usa tokens de spacing."
      ],
      "related": [
        "AfPanel",
        "AfCard"
      ],
      "tokens": [
        "--af-border",
        "--af-text-muted"
      ],
      "api": {
        "inputs": [
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "orientation",
            "type": "AfDividerOrientation",
            "required": false,
            "defaultValue": "'horizontal'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfDividerTone",
            "required": false,
            "defaultValue": "'subtle'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "components-surfaces-divider--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-surfaces-divider--default"
        },
        {
          "id": "components-surfaces-divider--strong",
          "name": "Strong",
          "url": "/storybook/?path=/story/components-surfaces-divider--strong"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-surfaces-divider--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfDivider } from '@argfit-ui/adaptive';",
        "template": "<af-divider [label]=\"label\" [orientation]=\"orientation\" [tone]=\"tone\" />"
      }
    },
    {
      "id": "drawer",
      "name": "AfDrawer",
      "className": "AfDrawerComponent",
      "selector": "af-drawer",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfDrawer } from '@argfit-ui/adaptive';",
      "title": "Components/Overlays/Drawer",
      "category": "Overlays",
      "status": "documented",
      "description": "Panel modal adaptativo que entra desde un borde y gestiona cierre accesible.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para tareas secundarias que necesitan contexto sin abandonar la pantalla."
      ],
      "avoidWhen": [
        "Para confirmaciones breves; usa AfDialog."
      ],
      "related": [
        "AfDialog",
        "AfPopover"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaDescribedBy",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "ariaLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "closeLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Cerrar panel'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "closeOnBackdrop",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "closeOnEscape",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "description",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "dismissible",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "open",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "placement",
            "type": "AfDrawerPlacement",
            "required": false,
            "defaultValue": "'end'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfDrawerSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "title",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfDrawerTone",
            "required": false,
            "defaultValue": "'neutral'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "backdropPress",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "closed",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "escapePress",
            "type": "KeyboardEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "openChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "opened",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-overlays-drawer--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-overlays-drawer--default"
        },
        {
          "id": "components-overlays-drawer--closed",
          "name": "Closed",
          "url": "/storybook/?path=/story/components-overlays-drawer--closed"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-overlays-drawer--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfDrawer } from '@argfit-ui/adaptive';",
        "template": "<af-drawer [open]=\"open\" [title]=\"title\" [description]=\"description\" [placement]=\"placement\" [size]=\"size\" (openChange)=\"openChange($event)\"><p>Contenido de filtros proyectado por la aplicación.</p></af-drawer>"
      }
    },
    {
      "id": "empty-state",
      "name": "AfEmptyState",
      "className": "AfEmptyStateComponent",
      "selector": "af-empty-state",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfEmptyState } from '@argfit-ui/adaptive';",
      "title": "Feedback/EmptyState",
      "category": "Feedback",
      "status": "documented",
      "description": "Estado vacío accionable que distingue ausencia, filtros, error y permisos.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para explicar por qué una superficie no tiene contenido y ofrecer una salida."
      ],
      "avoidWhen": [
        "Para cargas temporales; usa AfSkeleton o AfProgress."
      ],
      "related": [
        "AfInlineMessage",
        "AfButton"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-text-muted"
      ],
      "api": {
        "inputs": [
          {
            "name": "actions",
            "type": "readonly AfEmptyStateAction[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "description",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "icon",
            "type": "AfIconName | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfEmptyStateSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "title",
            "type": "string",
            "required": true,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfEmptyStateTone",
            "required": false,
            "defaultValue": "'empty'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "actionSelected",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "feedback-emptystate--default",
          "name": "Default",
          "url": "/storybook/?path=/story/feedback-emptystate--default"
        },
        {
          "id": "feedback-emptystate--filtered",
          "name": "Filtered",
          "url": "/storybook/?path=/story/feedback-emptystate--filtered"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/feedback-emptystate--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfEmptyState } from '@argfit-ui/adaptive';",
        "template": "<af-empty-state [title]=\"title\" [description]=\"description\" [tone]=\"tone\" [size]=\"size\" [actions]=\"actions\" (actionSelected)=\"actionSelected($event)\" />"
      }
    },
    {
      "id": "field",
      "name": "AfField",
      "className": "AfFieldComponent",
      "selector": "af-field",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfField } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/Field",
      "category": "Forms",
      "status": "documented",
      "description": "Estructura accesible de etiqueta, ayuda, error y control proyectado.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para envolver un control propio con el contrato visual de formularios."
      ],
      "avoidWhen": [
        "Cuando un componente ArgFit ya incluye label y validación."
      ],
      "related": [
        "AfInput",
        "AfFieldset"
      ],
      "tokens": [
        "--af-input-border",
        "--af-text-muted"
      ],
      "api": {
        "inputs": [
          {
            "name": "density",
            "type": "AfFieldDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "errorText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "helperText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "labelMode",
            "type": "AfFieldLabelMode",
            "required": false,
            "defaultValue": "'stacked'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "readonly",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "state",
            "type": "AfFieldState",
            "required": false,
            "defaultValue": "'default'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "components-forms-field--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-field--default"
        },
        {
          "id": "components-forms-field--with-error",
          "name": "WithError",
          "url": "/storybook/?path=/story/components-forms-field--with-error"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-field--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfField } from '@argfit-ui/adaptive';",
        "template": "<af-field [label]=\"label\" [helperText]=\"helperText\" [errorText]=\"errorText\" [inputId]=\"inputId\" [required]=\"required\"><input id=\"field-code\" [attr.aria-describedby]=\"errorText ? 'field-code-error' : null\" /></af-field>"
      }
    },
    {
      "id": "fieldset",
      "name": "AfFieldset",
      "className": "AfFieldsetComponent",
      "selector": "af-fieldset",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfFieldset } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/Fieldset",
      "category": "Forms",
      "status": "documented",
      "description": "Agrupa controles relacionados bajo una leyenda y descripción semánticas.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para conjuntos de campos que comparten una pregunta o propósito."
      ],
      "avoidWhen": [
        "Para una sección puramente visual; usa AfPanel."
      ],
      "related": [
        "AfField",
        "AfRadioGroup"
      ],
      "tokens": [
        "--af-border",
        "--af-bg-surface"
      ],
      "api": {
        "inputs": [
          {
            "name": "density",
            "type": "AfSectionDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "description",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "legend",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfSurfaceTone",
            "required": false,
            "defaultValue": "'neutral'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "components-forms-fieldset--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-fieldset--default"
        },
        {
          "id": "components-forms-fieldset--disabled",
          "name": "Disabled",
          "url": "/storybook/?path=/story/components-forms-fieldset--disabled"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-fieldset--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfFieldset } from '@argfit-ui/adaptive';",
        "template": "<af-fieldset [legend]=\"legend\" [description]=\"description\" [density]=\"density\" [tone]=\"tone\" [disabled]=\"disabled\"><p>Los controles relacionados se proyectan dentro del fieldset.</p></af-fieldset>"
      }
    },
    {
      "id": "file-upload",
      "name": "AfFileUpload",
      "className": "AfFileUploadComponent",
      "selector": "af-file-upload",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfFileUpload } from '@argfit-ui/adaptive';",
      "title": "Experimental/FileUpload",
      "category": "Upload",
      "status": "experimental",
      "description": "Adaptive file selection and drop zone with validation.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "selecting or dropping files",
        "showing upload validation and progress"
      ],
      "avoidWhen": [
        "media cropping without file selection",
        "background synchronization"
      ],
      "related": [
        "AfProgress",
        "AfInlineMessage"
      ],
      "tokens": [
        "--af-border",
        "--af-primary",
        "--af-bg-surface"
      ],
      "api": {
        "inputs": [
          {
            "name": "accept",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Misma sintaxis que el atributo nativo: extensiones, MIME exactos o comodines.</p>\n",
            "deprecated": false
          },
          {
            "name": "buttonLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Elegir archivos'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfFileUploadDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "dropLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'o arrastra los archivos aquí'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "errorText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "files",
            "type": "readonly File[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "helperText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "maxFiles",
            "type": "number | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "maxSizeBytes",
            "type": "number | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "multiple",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "name",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "progress",
            "type": "readonly AfFileUploadProgress[]",
            "required": false,
            "defaultValue": "[]",
            "description": "<p>Estado de subida que reporta la aplicación, por nombre de archivo.</p>\n",
            "deprecated": false
          },
          {
            "name": "removeLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Quitar archivo'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfFileUploadSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "fileRemoved",
            "type": "File",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "filesChange",
            "type": "AfFileUploadChange",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "experimental-fileupload--default",
          "name": "Default",
          "url": "/storybook/?path=/story/experimental-fileupload--default"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/experimental-fileupload--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfFileUpload } from '@argfit-ui/adaptive';",
        "template": "<div style=\"max-width: 600px; margin: 0 auto;\">\n      <af-file-upload\n        [label]=\"label\"\n        [accept]=\"accept\"\n        [multiple]=\"multiple\"\n        [maxSizeBytes]=\"maxSizeBytes\"\n        [maxFiles]=\"maxFiles\"\n        [helperText]=\"helperText\"\n        [errorText]=\"errorText\"\n        [disabled]=\"disabled\"\n        [buttonLabel]=\"buttonLabel\"\n        [dropLabel]=\"dropLabel\"\n      />\n    </div>"
      }
    },
    {
      "id": "icon-field",
      "name": "AfIconField",
      "className": "AfIconFieldComponent",
      "selector": "af-icon-field",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfIconField } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/IconField",
      "category": "Forms",
      "status": "documented",
      "description": "Campo compuesto con slots explícitos para prefijo, control y sufijo.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para controles que necesitan iconografía contextual dentro de su borde."
      ],
      "avoidWhen": [
        "Para texto auxiliar fuera del control; usa helperText en AfField."
      ],
      "related": [
        "AfInput",
        "AfInputGroup"
      ],
      "tokens": [
        "--af-input-border",
        "--af-border-focus"
      ],
      "api": {
        "inputs": [
          {
            "name": "density",
            "type": "AfFieldDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "errorText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "helperText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "labelMode",
            "type": "AfFieldLabelMode",
            "required": false,
            "defaultValue": "'stacked'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "readonly",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "state",
            "type": "AfFieldState",
            "required": false,
            "defaultValue": "'default'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "components-forms-iconfield--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-iconfield--default"
        },
        {
          "id": "components-forms-iconfield--with-error",
          "name": "WithError",
          "url": "/storybook/?path=/story/components-forms-iconfield--with-error"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-iconfield--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfIconField } from '@argfit-ui/adaptive';",
        "template": "<af-icon-field [label]=\"label\" [helperText]=\"helperText\" [errorText]=\"errorText\" [inputId]=\"inputId\"><span afIconFieldPrefix aria-hidden=\"true\">⌕</span><input afIconFieldControl id=\"player-search\" placeholder=\"Ej. Lucía García\" /><span afIconFieldSuffix aria-hidden=\"true\">⌘K</span></af-icon-field>"
      }
    },
    {
      "id": "image-cropper",
      "name": "AfImageCropper",
      "className": "AfImageCropperComponent",
      "selector": "af-image-cropper",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfImageCropper } from '@argfit-ui/adaptive';",
      "title": "Experimental/ImageCropper",
      "category": "Media",
      "status": "experimental",
      "description": "Adaptive image cropper with resize, rotation and output controls.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "cropping and resizing a selected image",
        "avatar and header image preparation"
      ],
      "avoidWhen": [
        "general image editing",
        "file selection without cropping"
      ],
      "related": [
        "AfFileUpload",
        "AfButton"
      ],
      "tokens": [
        "--af-bg-main",
        "--af-primary",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "aspectRatio",
            "type": "AfCropAspectRatio",
            "required": false,
            "defaultValue": "'free'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "circularCrop",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "fileName",
            "type": "string",
            "required": false,
            "defaultValue": "'cropped-image'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "format",
            "type": "AfImageOutputFormat",
            "required": false,
            "defaultValue": "'image/png'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "maintainAspectRatio",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "quality",
            "type": "number",
            "required": false,
            "defaultValue": "0.92",
            "description": "",
            "deprecated": false
          },
          {
            "name": "resizeHeight",
            "type": "number | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "resizeWidth",
            "type": "number | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "showControls",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "src",
            "type": "File | Blob | string | null | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "cancel",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "cropped",
            "type": "AfImageCroppedEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "imageError",
            "type": "Error",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "imageLoaded",
            "type": "{ width: number; height: number }",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "experimental-imagecropper--default",
          "name": "Default",
          "url": "/storybook/?path=/story/experimental-imagecropper--default"
        },
        {
          "id": "experimental-imagecropper--square-avatar",
          "name": "SquareAvatar",
          "url": "/storybook/?path=/story/experimental-imagecropper--square-avatar"
        },
        {
          "id": "experimental-imagecropper--landscape-header",
          "name": "LandscapeHeader",
          "url": "/storybook/?path=/story/experimental-imagecropper--landscape-header"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/experimental-imagecropper--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfImageCropper } from '@argfit-ui/adaptive';",
        "template": "<div style=\"max-width: 640px; margin: 0 auto;\">\n      <af-image-cropper\n        [src]=\"src\"\n        [aspectRatio]=\"aspectRatio\"\n        [maintainAspectRatio]=\"maintainAspectRatio\"\n        [resizeWidth]=\"resizeWidth\"\n        [resizeHeight]=\"resizeHeight\"\n        [format]=\"format\"\n        [quality]=\"quality\"\n        [circularCrop]=\"circularCrop\"\n        [disabled]=\"disabled\"\n        [showControls]=\"showControls\"\n        [fileName]=\"fileName\"\n      />\n    </div>"
      }
    },
    {
      "id": "inline-message",
      "name": "AfInlineMessage",
      "className": "AfInlineMessageComponent",
      "selector": "af-inline-message",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfInlineMessage } from '@argfit-ui/adaptive';",
      "title": "Feedback/InlineMessage",
      "category": "Feedback",
      "status": "documented",
      "description": "Persistent contextual feedback for success, information, warnings and errors.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "persistent contextual feedback",
        "success warning information or error messages"
      ],
      "avoidWhen": [
        "blocking confirmation",
        "brief ephemeral notifications"
      ],
      "related": [
        "AfButton",
        "AfDialog"
      ],
      "tokens": [
        "--af-info",
        "--af-warning",
        "--af-danger"
      ],
      "api": {
        "inputs": [
          {
            "name": "closable",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "closeLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Cerrar mensaje'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "description",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "severity",
            "type": "AfFeedbackSeverity",
            "required": false,
            "defaultValue": "'info'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "title",
            "type": "string",
            "required": true,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "dismissed",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "feedback-inlinemessage--default",
          "name": "Default",
          "url": "/storybook/?path=/story/feedback-inlinemessage--default"
        },
        {
          "id": "feedback-inlinemessage--warning",
          "name": "Warning",
          "url": "/storybook/?path=/story/feedback-inlinemessage--warning"
        },
        {
          "id": "feedback-inlinemessage--danger",
          "name": "Danger",
          "url": "/storybook/?path=/story/feedback-inlinemessage--danger"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/feedback-inlinemessage--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfInlineMessage } from '@argfit-ui/adaptive';",
        "template": "<af-inline-message\n  severity=\"info\"\n  title=\"Sincronización pendiente\"\n  description=\"Los cambios se enviarán cuando vuelva la conexión.\"\n/>"
      }
    },
    {
      "id": "input",
      "name": "AfInput",
      "className": "AfInputComponent",
      "selector": "af-input",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfInput } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/Input",
      "category": "Forms",
      "status": "documented",
      "description": "Accessible text input supporting labels, hints, errors and affixes.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "single-line text entry",
        "labelled form values with validation"
      ],
      "avoidWhen": [
        "multi-line content",
        "selection from a fixed option list"
      ],
      "related": [
        "AfSelect",
        "AfTextarea",
        "AfDatePicker"
      ],
      "tokens": [
        "--af-input-bg",
        "--af-input-border",
        "--af-border-focus"
      ],
      "api": {
        "inputs": [
          {
            "name": "autocomplete",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "hint",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "name",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "placeholder",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "prefix",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "prefixIcon",
            "type": "AfIconName | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "readonly",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfInputSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "suffix",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfInputTone",
            "required": false,
            "defaultValue": "'neutral'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "type",
            "type": "AfInputType",
            "required": false,
            "defaultValue": "'text'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "string",
            "required": false,
            "defaultValue": "''",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "focusChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "valueChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-forms-input--primary",
          "name": "Primary",
          "url": "/storybook/?path=/story/components-forms-input--primary"
        },
        {
          "id": "components-forms-input--with-hint",
          "name": "WithHint",
          "url": "/storybook/?path=/story/components-forms-input--with-hint"
        },
        {
          "id": "components-forms-input--with-error",
          "name": "WithError",
          "url": "/storybook/?path=/story/components-forms-input--with-error"
        },
        {
          "id": "components-forms-input--disabled",
          "name": "Disabled",
          "url": "/storybook/?path=/story/components-forms-input--disabled"
        },
        {
          "id": "components-forms-input--with-prefix-and-suffix",
          "name": "WithPrefixAndSuffix",
          "url": "/storybook/?path=/story/components-forms-input--with-prefix-and-suffix"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-input--docs",
      "example": {
        "story": "Primary",
        "typescript": "import { AfInput } from '@argfit-ui/adaptive';",
        "template": "<af-input\n      [label]=\"label\"\n      [placeholder]=\"placeholder\"\n      [hint]=\"hint\"\n      [error]=\"error\"\n      [type]=\"type\"\n      [size]=\"size\"\n      [tone]=\"tone\"\n      [required]=\"required\"\n      [disabled]=\"disabled\"\n      [readonly]=\"readonly\"\n      [prefix]=\"prefix\"\n      [suffix]=\"suffix\"\n      [prefixIcon]=\"prefixIcon\"\n      (valueChange)=\"valueChange($event)\"\n    ></af-input>"
      }
    },
    {
      "id": "input-count",
      "name": "AfInputCount",
      "className": "AfInputCountComponent",
      "selector": "af-input-count",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfInputCount } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/InputCount",
      "category": "Forms",
      "status": "documented",
      "description": "Entrada numérica con acciones incrementales y límites explícitos.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para cantidades que se ajustan frecuentemente en pasos conocidos."
      ],
      "avoidWhen": [
        "Para métricas continuas o rangos; usa AfSlider."
      ],
      "related": [
        "AfInput",
        "AfSlider"
      ],
      "tokens": [
        "--af-input-border",
        "--af-border-focus"
      ],
      "api": {
        "inputs": [
          {
            "name": "allowManualInput",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfInputCountDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "errorText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "helperText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "max",
            "type": "number | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "min",
            "type": "number | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "name",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "precision",
            "type": "number",
            "required": false,
            "defaultValue": "0",
            "description": "",
            "deprecated": false
          },
          {
            "name": "readonly",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfInputCountSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "step",
            "type": "number",
            "required": false,
            "defaultValue": "1",
            "description": "",
            "deprecated": false
          },
          {
            "name": "unit",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "number",
            "required": false,
            "defaultValue": "0",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "decrement",
            "type": "number",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "focusChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "increment",
            "type": "number",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "valueChange",
            "type": "number",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-forms-inputcount--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-inputcount--default"
        },
        {
          "id": "components-forms-inputcount--with-error",
          "name": "WithError",
          "url": "/storybook/?path=/story/components-forms-inputcount--with-error"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-inputcount--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfInputCount } from '@argfit-ui/adaptive';",
        "template": "<af-input-count [label]=\"label\" [helperText]=\"helperText\" [value]=\"value\" [min]=\"min\" [max]=\"max\" [step]=\"step\" [unit]=\"unit\" [disabled]=\"disabled\" (valueChange)=\"valueChange($event)\" />"
      }
    },
    {
      "id": "input-group",
      "name": "AfInputGroup",
      "className": "AfInputGroupComponent",
      "selector": "af-input-group",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfInputGroup } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/InputGroup",
      "category": "Forms",
      "status": "documented",
      "description": "Campo compuesto con prefijo y sufijo textuales o interactivos.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para unidades, dominios o acciones inseparables del valor introducido."
      ],
      "avoidWhen": [
        "Para adornos iconográficos simples; usa AfIconField."
      ],
      "related": [
        "AfInput",
        "AfIconField"
      ],
      "tokens": [
        "--af-input-border",
        "--af-border-focus"
      ],
      "api": {
        "inputs": [
          {
            "name": "density",
            "type": "AfFieldDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "errorText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "helperText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "labelMode",
            "type": "AfFieldLabelMode",
            "required": false,
            "defaultValue": "'stacked'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "readonly",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "state",
            "type": "AfFieldState",
            "required": false,
            "defaultValue": "'default'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "components-forms-inputgroup--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-inputgroup--default"
        },
        {
          "id": "components-forms-inputgroup--with-error",
          "name": "WithError",
          "url": "/storybook/?path=/story/components-forms-inputgroup--with-error"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-inputgroup--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfInputGroup } from '@argfit-ui/adaptive';",
        "template": "<af-input-group [label]=\"label\" [helperText]=\"helperText\" [errorText]=\"errorText\" [inputId]=\"inputId\"><span afInputGroupPrefix>€</span><input afInputGroupControl id=\"budget\" type=\"number\" value=\"25000\" /><span afInputGroupSuffix>EUR</span></af-input-group>"
      }
    },
    {
      "id": "kanban",
      "name": "AfKanban",
      "className": "AfKanbanComponent",
      "selector": "af-kanban",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfKanban } from '@argfit-ui/adaptive';",
      "title": "Data/Kanban",
      "category": "Data",
      "status": "documented",
      "description": "Tablero adaptativo de columnas y tarjetas con reordenamiento y eventos semánticos.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para visualizar trabajo que avanza entre estados discretos."
      ],
      "avoidWhen": [
        "Para ordenar una sola colección lineal; usa AfOrderList."
      ],
      "related": [
        "AfOrderList",
        "AfDataView"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "activeFilter",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "allowCrossColumnMove",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "allowReorder",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Kanban'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "cardIdKey",
            "type": "keyof AfKanbanCard",
            "required": false,
            "defaultValue": "'id'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "cards",
            "type": "readonly AfKanbanCard[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "columnIdKey",
            "type": "keyof AfKanbanCard",
            "required": false,
            "defaultValue": "'columnId'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "columns",
            "type": "readonly AfKanbanColumn[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfKanbanDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyState",
            "type": "AfKanbanEmptyState",
            "required": false,
            "defaultValue": "DEFAULT_EMPTY_STATE",
            "description": "",
            "deprecated": false
          },
          {
            "name": "filters",
            "type": "readonly AfKanbanFilter[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "readonly",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "title",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "addCard",
            "type": "AfKanbanAddCardEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "cardClick",
            "type": "AfKanbanCardClickEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "cardMove",
            "type": "AfKanbanMoveEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "columnAction",
            "type": "AfKanbanColumnActionEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "filterChange",
            "type": "AfKanbanFilterChange",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-kanban--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-kanban--default"
        },
        {
          "id": "data-kanban--readonly",
          "name": "Readonly",
          "url": "/storybook/?path=/story/data-kanban--readonly"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-kanban--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfKanban } from '@argfit-ui/adaptive';",
        "template": "<af-kanban [title]=\"title\" [columns]=\"columns\" [cards]=\"cards\" [density]=\"density\" [allowReorder]=\"allowReorder\" [allowCrossColumnMove]=\"allowCrossColumnMove\" [readonly]=\"readonly\" (cardClick)=\"cardClick($event)\" (cardMove)=\"cardMove($event)\" />"
      }
    },
    {
      "id": "listbox",
      "name": "AfListbox",
      "className": "AfListboxComponent",
      "selector": "af-listbox",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfListbox } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/Listbox",
      "category": "Forms",
      "status": "documented",
      "description": "Lista de opciones siempre visible con selección simple o múltiple.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Cuando las opciones deben permanecer visibles mientras se selecciona."
      ],
      "avoidWhen": [
        "Para un selector compacto que abre un overlay; usa AfSelect."
      ],
      "related": [
        "AfSelect",
        "AfMultiSelect"
      ],
      "tokens": [
        "--af-input-border",
        "--af-border-focus"
      ],
      "api": {
        "inputs": [
          {
            "name": "density",
            "type": "AfSelectionDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "errorText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "helperText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "optionLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "options",
            "type": "readonly unknown[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "optionValue",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "placeholder",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "readonly",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectionMode",
            "type": "AfListboxSelectionMode",
            "required": false,
            "defaultValue": "'single'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "AfListboxValue",
            "required": false,
            "defaultValue": "null",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "focusChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "valueChange",
            "type": "AfListboxValue",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-forms-listbox--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-listbox--default"
        },
        {
          "id": "components-forms-listbox--multiple",
          "name": "Multiple",
          "url": "/storybook/?path=/story/components-forms-listbox--multiple"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-listbox--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfListbox } from '@argfit-ui/adaptive';",
        "template": "<af-listbox [label]=\"label\" [options]=\"options\" [optionLabel]=\"optionLabel\" [optionValue]=\"optionValue\" [value]=\"value\" [selectionMode]=\"selectionMode\" [disabled]=\"disabled\" (valueChange)=\"valueChange($event)\" />"
      }
    },
    {
      "id": "metric-card",
      "name": "AfMetricCard",
      "className": "AfMetricCardComponent",
      "selector": "af-metric-card",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfMetricCard } from '@argfit-ui/adaptive';",
      "title": "Data/MetricCard",
      "category": "Data",
      "status": "documented",
      "description": "Honest metric summary with trend, sample size, period and provenance.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "summarizing a metric with context",
        "showing trends samples and provenance"
      ],
      "avoidWhen": [
        "dense tabular datasets",
        "metrics without enough explanatory context"
      ],
      "related": [
        "AfCard",
        "AfDataTable",
        "AfProgress"
      ],
      "tokens": [
        "--af-card-bg",
        "--af-chart-primary",
        "--af-text-muted"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfMetricCardDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyText",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin muestra'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "errorDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "errorText",
            "type": "string",
            "required": false,
            "defaultValue": "'Dato no disponible'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "fill",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "<p>La tarjeta reclama la altura de su contenedor en lugar de su altura intrínseca.\nEl renderer interno ya rellena siempre el host; <code>fill</code> cubre el caso en que es el\npropio host el que no recibe altura (flex sin <code>stretch</code>, padre con altura fija).</p>\n",
            "deprecated": false
          },
          {
            "name": "helper",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "icon",
            "type": "AfIconName | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "interactive",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string",
            "required": true,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "period",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "provenance",
            "type": "AfMetricProvenance | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "provenanceLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "sample",
            "type": "AfMetricSample | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Numerador y denominador tras un agregado: <code>1/1</code> y <code>240/240</code> no valen lo mismo.</p>\n",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfMetricCardSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "state",
            "type": "AfMetricCardState",
            "required": false,
            "defaultValue": "'ready'",
            "description": "<p>Ciclo de vida del valor. <code>empty</code> es una afirmación sobre el dato, no un estilo:\nuna métrica sin muestra debe decirlo, nunca renderizar <code>0</code>, porque un cero es en sí\nmismo una medición válida.</p>\n",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfMetricCardTone",
            "required": false,
            "defaultValue": "'primary'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "trendDirection",
            "type": "AfMetricTrendDirection | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "trendLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "trendValue",
            "type": "string | number | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "unit",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "string | number",
            "required": false,
            "defaultValue": "''",
            "description": "",
            "deprecated": false
          },
          {
            "name": "variant",
            "type": "AfMetricCardVariant",
            "required": false,
            "defaultValue": "'surface'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "pressed",
            "type": "MouseEvent | KeyboardEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-metriccard--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-metriccard--default"
        },
        {
          "id": "data-metriccard--empty",
          "name": "Empty",
          "url": "/storybook/?path=/story/data-metriccard--empty"
        },
        {
          "id": "data-metriccard--error",
          "name": "Error",
          "url": "/storybook/?path=/story/data-metriccard--error"
        },
        {
          "id": "data-metriccard--fills-container",
          "name": "FillsContainer",
          "url": "/storybook/?path=/story/data-metriccard--fills-container"
        },
        {
          "id": "data-metriccard--fill-fixed-height-container",
          "name": "FillFixedHeightContainer",
          "url": "/storybook/?path=/story/data-metriccard--fill-fixed-height-container"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-metriccard--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfMetricCard } from '@argfit-ui/adaptive';",
        "template": "<af-metric-card\n  label=\"Carga semanal\"\n  [value]=\"428\"\n  unit=\"AU\"\n  helper=\"Objetivo 380–450\"\n  tone=\"primary\"\n  state=\"ready\"\n  variant=\"surface\"\n  [trendValue]=\"8\"\n/>"
      }
    },
    {
      "id": "multi-select",
      "name": "AfMultiSelect",
      "className": "AfMultiSelectComponent",
      "selector": "af-multi-select",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfMultiSelect } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/MultiSelect",
      "category": "Forms",
      "status": "documented",
      "description": "Selector compacto de múltiples opciones con búsqueda y límite opcional.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para elegir varias entidades de un conjunto mediano o grande."
      ],
      "avoidWhen": [
        "Para una única opción; usa AfSelect."
      ],
      "related": [
        "AfSelect",
        "AfChip"
      ],
      "tokens": [
        "--af-bg-elevated",
        "--af-border",
        "--af-primary"
      ],
      "api": {
        "inputs": [
          {
            "name": "clearable",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfSelectionDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "errorText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "helperText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "maxSelected",
            "type": "number | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "optionLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "options",
            "type": "readonly unknown[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "optionValue",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "placeholder",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "readonly",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "searchable",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectionLimitText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "readonly unknown[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "clear",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "openedChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "searchChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "valueChange",
            "type": "readonly unknown[]",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-forms-multiselect--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-multiselect--default"
        },
        {
          "id": "components-forms-multiselect--selection-limit",
          "name": "SelectionLimit",
          "url": "/storybook/?path=/story/components-forms-multiselect--selection-limit"
        },
        {
          "id": "components-forms-multiselect--form-field",
          "name": "FormField",
          "url": "/storybook/?path=/story/components-forms-multiselect--form-field"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-multiselect--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfMultiSelect } from '@argfit-ui/adaptive';",
        "template": "<div style=\"width: min(100%, 34rem)\"><af-multi-select [label]=\"label\" [placeholder]=\"placeholder\" [options]=\"options\" [optionLabel]=\"optionLabel\" [optionValue]=\"optionValue\" [value]=\"value\" [searchable]=\"searchable\" [clearable]=\"clearable\" [maxSelected]=\"maxSelected\" [disabled]=\"disabled\" (valueChange)=\"valueChange($event)\" /></div>"
      }
    },
    {
      "id": "order-list",
      "name": "AfOrderList",
      "className": "AfOrderListComponent",
      "selector": "af-order-list",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfOrderList } from '@argfit-ui/adaptive';",
      "title": "Data/OrderList",
      "category": "Data",
      "status": "documented",
      "description": "Lista seleccionable con acciones de reordenamiento accesibles.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para establecer una prioridad o secuencia manual en una colección."
      ],
      "avoidWhen": [
        "Para flujo entre varios estados; usa AfKanban."
      ],
      "related": [
        "AfPickList",
        "AfKanban"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Lista ordenable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfOrderListDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin items'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "items",
            "type": "readonly AfOrderListItem[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectedIds",
            "type": "AfOrderListSelectedIds",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectionMode",
            "type": "AfOrderListSelectionMode",
            "required": false,
            "defaultValue": "'single'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "reorderChange",
            "type": "AfOrderListReorderChange",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectionChange",
            "type": "AfOrderListSelectedIds",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-orderlist--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-orderlist--default"
        },
        {
          "id": "data-orderlist--loading",
          "name": "Loading",
          "url": "/storybook/?path=/story/data-orderlist--loading"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-orderlist--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfOrderList } from '@argfit-ui/adaptive';",
        "template": "<af-order-list [items]=\"items\" [selectedIds]=\"selectedIds\" [selectionMode]=\"selectionMode\" [density]=\"density\" [disabled]=\"disabled\" [loading]=\"loading\" (selectionChange)=\"selectionChange($event)\" (reorderChange)=\"reorderChange($event)\" />"
      }
    },
    {
      "id": "organization-chart",
      "name": "AfOrganizationChart",
      "className": "AfOrganizationChartComponent",
      "selector": "af-organization-chart",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfOrganizationChart } from '@argfit-ui/adaptive';",
      "title": "Data/OrganizationChart",
      "category": "Data",
      "status": "documented",
      "description": "Jerarquía organizativa expandible y seleccionable con representación adaptativa.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para visualizar relaciones de dependencia entre personas o unidades."
      ],
      "avoidWhen": [
        "Para una jerarquía genérica de archivos o categorías; usa AfTree."
      ],
      "related": [
        "AfTree",
        "AfAvatar"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Organigrama'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfOrganizationChartDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin estructura'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "expandedIds",
            "type": "AfOrganizationChartExpandedIds",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "nodes",
            "type": "readonly AfOrganizationChartNode[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectedIds",
            "type": "AfOrganizationChartSelectedIds",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectionMode",
            "type": "AfOrganizationChartSelectionMode",
            "required": false,
            "defaultValue": "'single'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "expandedChange",
            "type": "AfOrganizationChartExpandedIds",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "nodePressed",
            "type": "AfOrganizationChartNode",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectionChange",
            "type": "AfOrganizationChartSelectedIds",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-organizationchart--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-organizationchart--default"
        },
        {
          "id": "data-organizationchart--empty",
          "name": "Empty",
          "url": "/storybook/?path=/story/data-organizationchart--empty"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-organizationchart--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfOrganizationChart } from '@argfit-ui/adaptive';",
        "template": "<af-organization-chart [nodes]=\"nodes\" [expandedIds]=\"expandedIds\" [selectedIds]=\"selectedIds\" [selectionMode]=\"selectionMode\" [density]=\"density\" [loading]=\"loading\" (selectionChange)=\"selectionChange($event)\" />"
      }
    },
    {
      "id": "page-shell",
      "name": "AfPageShell",
      "className": "AfPageShellComponent",
      "selector": "af-page-shell",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfPageShell } from '@argfit-ui/adaptive';",
      "title": "Patterns/Layout/PageShell",
      "category": "Patterns",
      "status": "documented",
      "description": "Shell adaptativo para navegación, cabecera, contenido y tabs móviles.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para estructurar una pantalla principal consistente de una aplicación."
      ],
      "avoidWhen": [
        "Para una tarjeta o sección local; usa AfCard o AfPanel."
      ],
      "related": [
        "AfToolbar",
        "AfTabs"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "activeItem",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "activeTab",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Navegacion principal'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "breadcrumbs",
            "type": "readonly AfBreadcrumbItem[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "collapsed",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "collapsible",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfPageShellDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "mobileTabs",
            "type": "readonly AfNavigationItem[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "navItems",
            "type": "readonly AfNavigationItem[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "notificationCount",
            "type": "number | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "searchPlaceholder",
            "type": "string",
            "required": false,
            "defaultValue": "'Buscar...'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "showSearch",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "subtitle",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "title",
            "type": "string",
            "required": false,
            "defaultValue": "''",
            "description": "",
            "deprecated": false
          },
          {
            "name": "userInitials",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "variant",
            "type": "AfPageShellVariant",
            "required": false,
            "defaultValue": "'dashboard'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "breadcrumbSelected",
            "type": "AfBreadcrumbItem",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "collapsedChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "navItemSelected",
            "type": "AfNavigationItem",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "searchChanged",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "tabSelected",
            "type": "AfNavigationItem",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "patterns-layout-pageshell--default",
          "name": "Default",
          "url": "/storybook/?path=/story/patterns-layout-pageshell--default"
        },
        {
          "id": "patterns-layout-pageshell--collapsed",
          "name": "Collapsed",
          "url": "/storybook/?path=/story/patterns-layout-pageshell--collapsed"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/patterns-layout-pageshell--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfPageShell } from '@argfit-ui/adaptive';",
        "template": "<af-page-shell [title]=\"title\" [subtitle]=\"subtitle\" [navItems]=\"navItems\" [mobileTabs]=\"mobileTabs\" [activeItem]=\"activeItem\" [activeTab]=\"activeTab\" [showSearch]=\"showSearch\" [variant]=\"variant\" (navItemSelected)=\"navItemSelected($event)\"><strong afPageShellBrand>ArgFit</strong><section><h2>Jugadores</h2><p>Contenido principal de la pantalla.</p></section></af-page-shell>"
      }
    },
    {
      "id": "paginator",
      "name": "AfPaginator",
      "className": "AfPaginatorComponent",
      "selector": "af-paginator",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfPaginator } from '@argfit-ui/adaptive';",
      "title": "Data/Paginator",
      "category": "Data",
      "status": "documented",
      "description": "Navegación paginada con índices cero-based y resumen adaptativo.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para dividir colecciones grandes cuando cada página es una unidad estable."
      ],
      "avoidWhen": [
        "Para carga continua por scroll; usa AfVirtualScroller o AfSelect."
      ],
      "related": [
        "AfDataTable",
        "AfVirtualScroller"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Paginacion'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfPaginatorDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "nextLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Pagina siguiente'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "pageIndex",
            "type": "number",
            "required": false,
            "defaultValue": "0",
            "description": "",
            "deprecated": false
          },
          {
            "name": "pageSize",
            "type": "number",
            "required": false,
            "defaultValue": "12",
            "description": "",
            "deprecated": false
          },
          {
            "name": "previousLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Pagina anterior'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "totalItems",
            "type": "number",
            "required": false,
            "defaultValue": "0",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "pageChange",
            "type": "AfPaginatorPageChange",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-paginator--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-paginator--default"
        },
        {
          "id": "data-paginator--disabled",
          "name": "Disabled",
          "url": "/storybook/?path=/story/data-paginator--disabled"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-paginator--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfPaginator } from '@argfit-ui/adaptive';",
        "template": "<af-paginator [pageIndex]=\"pageIndex\" [pageSize]=\"pageSize\" [totalItems]=\"totalItems\" [density]=\"density\" [disabled]=\"disabled\" [ariaLabel]=\"ariaLabel\" (pageChange)=\"pageChange($event)\" />"
      }
    },
    {
      "id": "panel",
      "name": "AfPanel",
      "className": "AfPanelComponent",
      "selector": "af-panel",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfPanel } from '@argfit-ui/adaptive';",
      "title": "Components/Surfaces/Panel",
      "category": "Surfaces",
      "status": "documented",
      "description": "Sección semántica con encabezado y contenido proyectado.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para agrupar contenido relacionado dentro de una página."
      ],
      "avoidWhen": [
        "Para una unidad accionable o navegable; usa AfCard."
      ],
      "related": [
        "AfCard",
        "AfFieldset"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "density",
            "type": "AfSectionDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "description",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "eyebrow",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "heading",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfSurfaceTone",
            "required": false,
            "defaultValue": "'neutral'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "components-surfaces-panel--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-surfaces-panel--default"
        },
        {
          "id": "components-surfaces-panel--compact",
          "name": "Compact",
          "url": "/storybook/?path=/story/components-surfaces-panel--compact"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-surfaces-panel--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfPanel } from '@argfit-ui/adaptive';",
        "template": "<af-panel [eyebrow]=\"eyebrow\" [heading]=\"heading\" [description]=\"description\" [density]=\"density\" [tone]=\"tone\"><p>Clasificación, rendimiento y disponibilidad.</p></af-panel>"
      }
    },
    {
      "id": "password",
      "name": "AfPassword",
      "className": "AfPasswordComponent",
      "selector": "af-password",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfPassword } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/Password",
      "category": "Forms",
      "status": "documented",
      "description": "Entrada de contraseña con revelado accesible y feedback de fortaleza opcional.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para introducir secretos o credenciales dentro de un formulario."
      ],
      "avoidWhen": [
        "Para PIN o códigos de verificación segmentados."
      ],
      "related": [
        "AfInput",
        "AfAuthShell"
      ],
      "tokens": [
        "--af-input-border",
        "--af-border-focus"
      ],
      "api": {
        "inputs": [
          {
            "name": "autocomplete",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "feedback",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "hideLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Ocultar contrasena'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "hint",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "mediumLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Media'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "name",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "placeholder",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "promptLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Ingresa una contrasena'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "readonly",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "revealLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Mostrar contrasena'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfInputSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "strongLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Fuerte'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfInputTone",
            "required": false,
            "defaultValue": "'neutral'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "string",
            "required": false,
            "defaultValue": "''",
            "description": "",
            "deprecated": false
          },
          {
            "name": "weakLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Debil'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "focusChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "valueChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-forms-password--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-password--default"
        },
        {
          "id": "components-forms-password--with-error",
          "name": "WithError",
          "url": "/storybook/?path=/story/components-forms-password--with-error"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-password--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfPassword } from '@argfit-ui/adaptive';",
        "template": "<af-password [label]=\"label\" [placeholder]=\"placeholder\" [hint]=\"hint\" [autocomplete]=\"autocomplete\" [feedback]=\"feedback\" [value]=\"value\" [disabled]=\"disabled\" [required]=\"required\" (valueChange)=\"valueChange($event)\" />"
      }
    },
    {
      "id": "pick-list",
      "name": "AfPickList",
      "className": "AfPickListComponent",
      "selector": "af-pick-list",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfPickList } from '@argfit-ui/adaptive';",
      "title": "Data/PickList",
      "category": "Data",
      "status": "documented",
      "description": "Transferencia accesible entre una colección disponible y otra asignada.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para asignar múltiples elementos entre dos conjuntos explícitos."
      ],
      "avoidWhen": [
        "Para elegir valores sin representar ambos conjuntos; usa AfMultiSelect."
      ],
      "related": [
        "AfMultiSelect",
        "AfOrderList"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Pick list'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfPickListDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "sourceDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "sourceEmptyDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "sourceEmptyTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin items disponibles'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "sourceItems",
            "type": "readonly AfPickListItem[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "sourceSelectedIds",
            "type": "AfPickListSelectedIds",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "sourceTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Disponibles'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "targetDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "targetEmptyDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "targetEmptyTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin items asignados'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "targetItems",
            "type": "readonly AfPickListItem[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "targetSelectedIds",
            "type": "AfPickListSelectedIds",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "targetTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Asignados'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "sourceSelectionChange",
            "type": "AfPickListSelectedIds",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "targetSelectionChange",
            "type": "AfPickListSelectedIds",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "transferChange",
            "type": "AfPickListChange",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-picklist--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-picklist--default"
        },
        {
          "id": "data-picklist--loading",
          "name": "Loading",
          "url": "/storybook/?path=/story/data-picklist--loading"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-picklist--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfPickList } from '@argfit-ui/adaptive';",
        "template": "<af-pick-list [sourceTitle]=\"sourceTitle\" [targetTitle]=\"targetTitle\" [sourceItems]=\"sourceItems\" [targetItems]=\"targetItems\" [sourceSelectedIds]=\"sourceSelectedIds\" [targetSelectedIds]=\"targetSelectedIds\" [density]=\"density\" [disabled]=\"disabled\" [loading]=\"loading\" (transferChange)=\"transferChange($event)\" />"
      }
    },
    {
      "id": "popover",
      "name": "AfPopover",
      "className": "AfPopoverComponent",
      "selector": "af-popover",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfPopover } from '@argfit-ui/adaptive';",
      "title": "Components/Overlays/Popover",
      "category": "Overlays",
      "status": "documented",
      "description": "Overlay contextual anclado a un trigger proyectado.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para acciones o información breve relacionada con un elemento concreto."
      ],
      "avoidWhen": [
        "Para tareas largas o modales; usa AfDrawer o AfDialog."
      ],
      "related": [
        "AfTooltip",
        "AfDrawer"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "closeLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Cerrar popover'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "closeOnBackdrop",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "closeOnEscape",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "dismissible",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "open",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "placement",
            "type": "AfPopoverPlacement",
            "required": false,
            "defaultValue": "'bottom'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "title",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfPopoverTone",
            "required": false,
            "defaultValue": "'neutral'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "backdropPress",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "closed",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "escapePress",
            "type": "KeyboardEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "openChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "opened",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-overlays-popover--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-overlays-popover--default"
        },
        {
          "id": "components-overlays-popover--closed",
          "name": "Closed",
          "url": "/storybook/?path=/story/components-overlays-popover--closed"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-overlays-popover--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfPopover } from '@argfit-ui/adaptive';",
        "template": "<af-popover [open]=\"open\" [title]=\"title\" [placement]=\"placement\" [tone]=\"tone\" (openChange)=\"openChange($event)\"><button afPopoverTrigger type=\"button\">Abrir acciones</button><div afPopoverContent><button type=\"button\">Ver perfil</button><button type=\"button\">Editar dorsal</button></div></af-popover>"
      }
    },
    {
      "id": "progress",
      "name": "AfProgress",
      "className": "AfProgressComponent",
      "selector": "af-progress",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfProgress } from '@argfit-ui/adaptive';",
      "title": "Feedback/Progress",
      "category": "Feedback",
      "status": "documented",
      "description": "Progress feedback rendered as a bar, spinner or skeleton.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "determinate or indeterminate progress",
        "loading bars spinners and skeletons"
      ],
      "avoidWhen": [
        "business workflow state",
        "static percentage display without activity"
      ],
      "related": [
        "AfButton",
        "AfInlineMessage"
      ],
      "tokens": [
        "--af-primary",
        "--af-bg-interactive",
        "--af-duration-normal"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "indeterminate",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "max",
            "type": "number",
            "required": false,
            "defaultValue": "100",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfProgressSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "skeletonWidth",
            "type": "string",
            "required": false,
            "defaultValue": "'100%'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfProgressTone",
            "required": false,
            "defaultValue": "'primary'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "number",
            "required": false,
            "defaultValue": "0",
            "description": "",
            "deprecated": false
          },
          {
            "name": "variant",
            "type": "AfProgressVariant",
            "required": false,
            "defaultValue": "'bar'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "feedback-progress--default",
          "name": "Default",
          "url": "/storybook/?path=/story/feedback-progress--default"
        },
        {
          "id": "feedback-progress--indeterminate",
          "name": "Indeterminate",
          "url": "/storybook/?path=/story/feedback-progress--indeterminate"
        },
        {
          "id": "feedback-progress--spinner",
          "name": "Spinner",
          "url": "/storybook/?path=/story/feedback-progress--spinner"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/feedback-progress--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfProgress } from '@argfit-ui/adaptive';",
        "template": "<af-progress\n  variant=\"bar\"\n  tone=\"primary\"\n  size=\"md\"\n  [value]=\"64\"\n  [max]=\"100\"\n  ariaLabel=\"Preparación completada al 64 por ciento\"\n/>"
      }
    },
    {
      "id": "radio-group",
      "name": "AfRadioGroup",
      "className": "AfRadioGroupComponent",
      "selector": "af-radio-group",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfRadioGroup } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/RadioGroup",
      "category": "Forms",
      "status": "documented",
      "description": "Grupo accesible de opciones mutuamente excluyentes.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Cuando la persona debe elegir exactamente una opción de un conjunto visible."
      ],
      "avoidWhen": [
        "Para opciones independientes; usa AfCheckbox."
      ],
      "related": [
        "AfCheckbox",
        "AfSegmentedControl"
      ],
      "tokens": [
        "--af-input-border",
        "--af-border-focus"
      ],
      "api": {
        "inputs": [
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "hint",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "layout",
            "type": "\"inline\" | \"stacked\"",
            "required": false,
            "defaultValue": "'inline'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "name",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "options",
            "type": "readonly AfFormOption[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfControlSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "state",
            "type": "AfValidationState",
            "required": false,
            "defaultValue": "'default'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "string",
            "required": false,
            "defaultValue": "''",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "focusChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "valueChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-forms-radiogroup--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-radiogroup--default"
        },
        {
          "id": "components-forms-radiogroup--stacked",
          "name": "Stacked",
          "url": "/storybook/?path=/story/components-forms-radiogroup--stacked"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-radiogroup--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfRadioGroup } from '@argfit-ui/adaptive';",
        "template": "<af-radio-group [label]=\"label\" [options]=\"options\" [value]=\"value\" [layout]=\"layout\" [disabled]=\"disabled\" [required]=\"required\" (valueChange)=\"valueChange($event)\" />"
      }
    },
    {
      "id": "scroll-panel",
      "name": "AfScrollPanel",
      "className": "AfScrollPanelComponent",
      "selector": "af-scroll-panel",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfScrollPanel } from '@argfit-ui/adaptive';",
      "title": "Components/Surfaces/ScrollPanel",
      "category": "Surfaces",
      "status": "documented",
      "description": "Región de scroll con altura y dirección controladas y nombre accesible.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para contener contenido largo dentro de una región explícita."
      ],
      "avoidWhen": [
        "Para virtualizar cientos de elementos; usa AfVirtualScroller."
      ],
      "related": [
        "AfVirtualScroller",
        "AfPanel"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Scroll panel'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "direction",
            "type": "AfScrollPanelDirection",
            "required": false,
            "defaultValue": "'vertical'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "maxHeight",
            "type": "string",
            "required": false,
            "defaultValue": "'18rem'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "components-surfaces-scrollpanel--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-surfaces-scrollpanel--default"
        },
        {
          "id": "components-surfaces-scrollpanel--horizontal",
          "name": "Horizontal",
          "url": "/storybook/?path=/story/components-surfaces-scrollpanel--horizontal"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-surfaces-scrollpanel--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfScrollPanel } from '@argfit-ui/adaptive';",
        "template": "<af-scroll-panel [ariaLabel]=\"ariaLabel\" [direction]=\"direction\" [maxHeight]=\"maxHeight\"><p>Observación 01 · Buen rendimiento en presión alta.</p><p>Observación 02 · Mejorar temporización defensiva.</p><p>Observación 03 · Trabajo específico completado.</p><p>Observación 04 · Disponible para convocatoria.</p><p>Observación 05 · Seguimiento semanal pendiente.</p></af-scroll-panel>"
      }
    },
    {
      "id": "segmented-control",
      "name": "AfSegmentedControl",
      "className": "AfSegmentedControlComponent",
      "selector": "af-segmented-control",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfSegmentedControl } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/SegmentedControl",
      "category": "Forms",
      "status": "documented",
      "description": "Exclusive mode switch for a small, stable set of options.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "switching between a few mutually exclusive views",
        "compact option selection"
      ],
      "avoidWhen": [
        "large option sets",
        "page navigation with URLs"
      ],
      "related": [
        "AfButton",
        "AfSelect"
      ],
      "tokens": [
        "--af-bg-interactive",
        "--af-primary",
        "--af-radius-md"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "hint",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "options",
            "type": "readonly AfFormOption[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfControlSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "state",
            "type": "AfValidationState",
            "required": false,
            "defaultValue": "'default'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "string",
            "required": false,
            "defaultValue": "''",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "focusChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "valueChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-forms-segmentedcontrol--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-segmentedcontrol--default"
        },
        {
          "id": "components-forms-segmentedcontrol--disabled",
          "name": "Disabled",
          "url": "/storybook/?path=/story/components-forms-segmentedcontrol--disabled"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-segmentedcontrol--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfSegmentedControl } from '@argfit-ui/adaptive';",
        "template": "<div class=\"af-story-surface\" style=\"max-width: 30rem\"><af-segmented-control [value]=\"value\" [options]=\"options\" [label]=\"label\" [hint]=\"hint\" [error]=\"error\" [state]=\"state\" [size]=\"size\" [disabled]=\"disabled\" [ariaLabel]=\"ariaLabel\" /></div>"
      }
    },
    {
      "id": "select",
      "name": "AfSelect",
      "className": "AfSelectComponent",
      "selector": "af-select",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfSelect } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/Select",
      "category": "Forms",
      "status": "documented",
      "description": "Adaptive single-select control with search and loading states.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "selecting from fixed or remote options",
        "searchable selection with infinite scroll"
      ],
      "avoidWhen": [
        "free-form text entry",
        "two or three immediately visible choices"
      ],
      "related": [
        "AfInput",
        "AfDataTable"
      ],
      "tokens": [
        "--af-input-bg",
        "--af-input-border",
        "--af-bg-elevated"
      ],
      "api": {
        "inputs": [
          {
            "name": "debounceTime",
            "type": "number",
            "required": false,
            "defaultValue": "300",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "hasMore",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "<p>Indica si el origen todavía tiene páginas disponibles.</p>\n",
            "deprecated": false
          },
          {
            "name": "hint",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loadingMore",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "name",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "options",
            "type": "readonly AfFormOption[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "placeholder",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "scrollLoad",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "<p>Habilita la solicitud de la siguiente página al acercarse al final de la lista.</p>\n",
            "deprecated": false
          },
          {
            "name": "scrollThreshold",
            "type": "number",
            "required": false,
            "defaultValue": "50",
            "description": "",
            "deprecated": false
          },
          {
            "name": "searchable",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "<p>Filtra las opciones dentro del propio selector.</p>\n<p>§19 «Reglas de formularios» lo exige para listas largas. Cada renderer lo resuelve\ncomo su plataforma permite: uno filtra dentro del propio panel desplegable; el otro,\nque no puede filtrar dentro de su control nativo, cambia a un disparador con hoja de\nbúsqueda. El contrato que ve la aplicación es el mismo en ambos.</p>\n",
            "deprecated": false
          },
          {
            "name": "searchEmptyText",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin resultados'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "searchMode",
            "type": "AfSelectSearchMode",
            "required": false,
            "defaultValue": "'client'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "searchPlaceholder",
            "type": "string",
            "required": false,
            "defaultValue": "'Buscar…'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectedOption",
            "type": "AfFormOption | null",
            "required": false,
            "defaultValue": "null",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfControlSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "state",
            "type": "AfValidationState",
            "required": false,
            "defaultValue": "'default'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "string",
            "required": false,
            "defaultValue": "''",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "clearSearch",
            "type": "void",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "focusChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "loadMore",
            "type": "AfSelectLoadMoreEvent",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "searchChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "valueChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-forms-select--primary",
          "name": "Primary",
          "url": "/storybook/?path=/story/components-forms-select--primary"
        },
        {
          "id": "components-forms-select--searchable",
          "name": "Searchable",
          "url": "/storybook/?path=/story/components-forms-select--searchable"
        },
        {
          "id": "components-forms-select--loading-more",
          "name": "LoadingMore",
          "url": "/storybook/?path=/story/components-forms-select--loading-more"
        },
        {
          "id": "components-forms-select--infinite-scroll",
          "name": "InfiniteScroll",
          "url": "/storybook/?path=/story/components-forms-select--infinite-scroll"
        },
        {
          "id": "components-forms-select--disabled",
          "name": "Disabled",
          "url": "/storybook/?path=/story/components-forms-select--disabled"
        },
        {
          "id": "components-forms-select--with-error",
          "name": "WithError",
          "url": "/storybook/?path=/story/components-forms-select--with-error"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-select--docs",
      "example": {
        "story": "Primary",
        "typescript": "import { AfSelect } from '@argfit-ui/adaptive';",
        "template": "<div style=\"max-width: 34rem\">\n    <af-select\n      [options]=\"options\"\n      [label]=\"label\"\n      [placeholder]=\"placeholder\"\n      [hint]=\"hint\"\n      [searchable]=\"searchable\"\n      [searchPlaceholder]=\"searchPlaceholder\"\n      [searchEmptyText]=\"searchEmptyText\"\n      [searchMode]=\"searchMode\"\n      [loading]=\"loading\"\n      [loadingMore]=\"loadingMore\"\n      [scrollLoad]=\"scrollLoad\"\n      [hasMore]=\"hasMore\"\n      [scrollThreshold]=\"scrollThreshold\"\n      [debounceTime]=\"debounceTime\"\n      [error]=\"error\"\n      [state]=\"state\"\n      [size]=\"size\"\n      [required]=\"required\"\n      [disabled]=\"disabled\"\n      (valueChange)=\"valueChange($event)\"\n      (searchChange)=\"searchChange($event)\"\n      (loadMore)=\"loadMore($event)\"\n    ></af-select>\n    </div>"
      }
    },
    {
      "id": "skeleton",
      "name": "AfSkeleton",
      "className": "AfSkeletonComponent",
      "selector": "af-skeleton",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfSkeleton } from '@argfit-ui/adaptive';",
      "title": "Feedback/Skeleton",
      "category": "Feedback",
      "status": "documented",
      "description": "Placeholder no interactivo para anticipar la estructura durante una carga.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para preservar el layout mientras llega contenido conocido."
      ],
      "avoidWhen": [
        "Para comunicar progreso cuantificable; usa AfProgress."
      ],
      "related": [
        "AfProgress",
        "AfCard"
      ],
      "tokens": [
        "--af-surface-2",
        "--af-radius-md"
      ],
      "api": {
        "inputs": [
          {
            "name": "animation",
            "type": "AfSkeletonAnimation",
            "required": false,
            "defaultValue": "'pulse'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Cargando'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "height",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inline",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "lines",
            "type": "number",
            "required": false,
            "defaultValue": "3",
            "description": "<p>Solo aplica a <code>text</code>. La última línea se acorta para que se lea como prosa.</p>\n",
            "deprecated": false
          },
          {
            "name": "radius",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "shape",
            "type": "AfSkeletonShape",
            "required": false,
            "defaultValue": "'text'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "width",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "feedback-skeleton--default",
          "name": "Default",
          "url": "/storybook/?path=/story/feedback-skeleton--default"
        },
        {
          "id": "feedback-skeleton--avatar",
          "name": "Avatar",
          "url": "/storybook/?path=/story/feedback-skeleton--avatar"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/feedback-skeleton--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfSkeleton } from '@argfit-ui/adaptive';",
        "template": "<af-skeleton [shape]=\"shape\" [lines]=\"lines\" [animation]=\"animation\" [width]=\"width\" [height]=\"height\" [ariaLabel]=\"ariaLabel\" />"
      }
    },
    {
      "id": "slider",
      "name": "AfSlider",
      "className": "AfSliderComponent",
      "selector": "af-slider",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfSlider } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/Slider",
      "category": "Forms",
      "status": "documented",
      "description": "Control continuo o escalonado para ajustar un valor dentro de un rango.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para ajustar rápidamente una intensidad, porcentaje o rango comprensible."
      ],
      "avoidWhen": [
        "Para cantidades precisas escritas manualmente; usa AfInputCount."
      ],
      "related": [
        "AfInputCount",
        "AfProgress"
      ],
      "tokens": [
        "--af-input-border",
        "--af-border-focus"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "ariaValueText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfSliderDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "errorText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "helperText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "marks",
            "type": "readonly AfSliderMark[]",
            "required": false,
            "defaultValue": "[]",
            "description": "<p>Paradas etiquetadas bajo la barra. Convierten un número en un juicio interpretable.</p>\n",
            "deprecated": false
          },
          {
            "name": "max",
            "type": "number",
            "required": false,
            "defaultValue": "100",
            "description": "",
            "deprecated": false
          },
          {
            "name": "min",
            "type": "number",
            "required": false,
            "defaultValue": "0",
            "description": "",
            "deprecated": false
          },
          {
            "name": "name",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "readonly",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfSliderSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "step",
            "type": "number",
            "required": false,
            "defaultValue": "1",
            "description": "",
            "deprecated": false
          },
          {
            "name": "ticks",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfSliderTone",
            "required": false,
            "defaultValue": "'primary'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "unit",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "number",
            "required": false,
            "defaultValue": "0",
            "description": "",
            "deprecated": false
          },
          {
            "name": "valueDisplay",
            "type": "AfSliderValueDisplay",
            "required": false,
            "defaultValue": "'inline'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "focusChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "valueChange",
            "type": "number",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-forms-slider--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-slider--default"
        },
        {
          "id": "components-forms-slider--disabled",
          "name": "Disabled",
          "url": "/storybook/?path=/story/components-forms-slider--disabled"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-slider--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfSlider } from '@argfit-ui/adaptive';",
        "template": "<af-slider [label]=\"label\" [helperText]=\"helperText\" [value]=\"value\" [min]=\"min\" [max]=\"max\" [step]=\"step\" [unit]=\"unit\" [ticks]=\"ticks\" [tone]=\"tone\" [disabled]=\"disabled\" (valueChange)=\"valueChange($event)\" />"
      }
    },
    {
      "id": "splitter",
      "name": "AfSplitter",
      "className": "AfSplitterComponent",
      "selector": "af-splitter",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfSplitter } from '@argfit-ui/adaptive';",
      "title": "Components/Surfaces/Splitter",
      "category": "Surfaces",
      "status": "documented",
      "description": "Layout de dos paneles redimensionables con límites accesibles.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para comparar o editar dos regiones que comparten el espacio disponible."
      ],
      "avoidWhen": [
        "Para layouts responsive sin redimensionado manual."
      ],
      "related": [
        "AfPanel",
        "AfDrawer"
      ],
      "tokens": [
        "--af-border",
        "--af-bg-surface"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Splitter'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "minPrimarySize",
            "type": "number",
            "required": false,
            "defaultValue": "25",
            "description": "",
            "deprecated": false
          },
          {
            "name": "minSecondarySize",
            "type": "number",
            "required": false,
            "defaultValue": "25",
            "description": "",
            "deprecated": false
          },
          {
            "name": "orientation",
            "type": "AfSplitterOrientation",
            "required": false,
            "defaultValue": "'horizontal'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "primaryLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "primarySize",
            "type": "number",
            "required": false,
            "defaultValue": "50",
            "description": "",
            "deprecated": false
          },
          {
            "name": "secondaryLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "primarySizeChange",
            "type": "number",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-surfaces-splitter--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-surfaces-splitter--default"
        },
        {
          "id": "components-surfaces-splitter--vertical",
          "name": "Vertical",
          "url": "/storybook/?path=/story/components-surfaces-splitter--vertical"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-surfaces-splitter--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfSplitter } from '@argfit-ui/adaptive';",
        "template": "<af-splitter [primaryLabel]=\"primaryLabel\" [secondaryLabel]=\"secondaryLabel\" [primarySize]=\"primarySize\" [orientation]=\"orientation\" (primarySizeChange)=\"primarySizeChange($event)\"><section afSplitterPrimary><h3>Jugadores</h3><p>Lista principal</p></section><section afSplitterSecondary><h3>Ficha</h3><p>Detalle seleccionado</p></section></af-splitter>"
      }
    },
    {
      "id": "stepper",
      "name": "AfStepper",
      "className": "AfStepperComponent",
      "selector": "af-stepper",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfStepper } from '@argfit-ui/adaptive';",
      "title": "Components/Navigation/Stepper",
      "category": "Navigation",
      "status": "documented",
      "description": "Secuencia de pasos con estado, modo lineal y panel adaptativo.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para procesos de varios pasos cuyo progreso debe permanecer visible."
      ],
      "avoidWhen": [
        "Para navegación entre vistas equivalentes; usa AfTabs."
      ],
      "related": [
        "AfProgress",
        "AfTabs"
      ],
      "tokens": [
        "--af-border",
        "--af-text-main"
      ],
      "api": {
        "inputs": [
          {
            "name": "activeId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Stepper'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfStepperDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "linear",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "steps",
            "type": "readonly AfStepItem[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "activeIdChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "stepChange",
            "type": "AfStepChange",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-navigation-stepper--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-navigation-stepper--default"
        },
        {
          "id": "components-navigation-stepper--non-linear",
          "name": "NonLinear",
          "url": "/storybook/?path=/story/components-navigation-stepper--non-linear"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-navigation-stepper--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfStepper } from '@argfit-ui/adaptive';",
        "template": "<af-stepper [steps]=\"steps\" [activeId]=\"activeId\" [linear]=\"linear\" [density]=\"density\" [disabled]=\"disabled\" (activeIdChange)=\"activeIdChange($event)\" />"
      }
    },
    {
      "id": "tabs",
      "name": "AfTabs",
      "className": "AfTabsComponent",
      "selector": "af-tabs",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfTabs } from '@argfit-ui/adaptive';",
      "title": "Components/Navigation/Tabs",
      "category": "Navigation",
      "status": "documented",
      "description": "Navegación entre paneles equivalentes con variantes cards y line.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para alternar secciones relacionadas dentro del mismo contexto."
      ],
      "avoidWhen": [
        "Para un proceso secuencial; usa AfStepper."
      ],
      "related": [
        "AfStepper",
        "AfSegmentedControl"
      ],
      "tokens": [
        "--af-border",
        "--af-text-main"
      ],
      "api": {
        "inputs": [
          {
            "name": "activeId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Tabs'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfTabsDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "items",
            "type": "readonly AfTabItem[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "renderPanel",
            "type": "boolean",
            "required": false,
            "defaultValue": "true",
            "description": "",
            "deprecated": false
          },
          {
            "name": "variant",
            "type": "AfTabsVariant",
            "required": false,
            "defaultValue": "'cards'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "activeIdChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "tabChange",
            "type": "AfTabChange",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-navigation-tabs--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-navigation-tabs--default"
        },
        {
          "id": "components-navigation-tabs--line",
          "name": "Line",
          "url": "/storybook/?path=/story/components-navigation-tabs--line"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-navigation-tabs--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfTabs } from '@argfit-ui/adaptive';",
        "template": "<af-tabs [items]=\"items\" [activeId]=\"activeId\" [variant]=\"variant\" [density]=\"density\" [renderPanel]=\"renderPanel\" [disabled]=\"disabled\" (activeIdChange)=\"activeIdChange($event)\" />"
      }
    },
    {
      "id": "textarea",
      "name": "AfTextarea",
      "className": "AfTextareaComponent",
      "selector": "af-textarea",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfTextarea } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/Textarea",
      "category": "Forms",
      "status": "documented",
      "description": "Multiline form control with validation, hints and length limits.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "multi-line text entry",
        "notes descriptions and comments with validation"
      ],
      "avoidWhen": [
        "single-line values",
        "rich text editing"
      ],
      "related": [
        "AfInput"
      ],
      "tokens": [
        "--af-input-bg",
        "--af-input-border",
        "--af-border-focus"
      ],
      "api": {
        "inputs": [
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "hint",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "maxLength",
            "type": "number | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "name",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "placeholder",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "readonly",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "rows",
            "type": "number",
            "required": false,
            "defaultValue": "3",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfControlSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "state",
            "type": "AfValidationState",
            "required": false,
            "defaultValue": "'default'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "string",
            "required": false,
            "defaultValue": "''",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "focusChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "valueChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-forms-textarea--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-textarea--default"
        },
        {
          "id": "components-forms-textarea--error",
          "name": "Error",
          "url": "/storybook/?path=/story/components-forms-textarea--error"
        },
        {
          "id": "components-forms-textarea--disabled",
          "name": "Disabled",
          "url": "/storybook/?path=/story/components-forms-textarea--disabled"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-textarea--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfTextarea } from '@argfit-ui/adaptive';",
        "template": "<div class=\"af-story-surface\" style=\"max-width: 34rem\"><af-textarea\n      [label]=\"label\" [placeholder]=\"placeholder\" [hint]=\"hint\" [error]=\"error\"\n      [state]=\"state\" [size]=\"size\" [rows]=\"rows\" [maxLength]=\"maxLength\"\n      [required]=\"required\" [disabled]=\"disabled\" [readonly]=\"readonly\"\n    /></div>"
      }
    },
    {
      "id": "timeline",
      "name": "AfTimeline",
      "className": "AfTimelineComponent",
      "selector": "af-timeline",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfTimeline } from '@argfit-ui/adaptive';",
      "title": "Data/Timeline",
      "category": "Data",
      "status": "documented",
      "description": "Secuencia cronológica adaptativa de eventos con estados de carga y vacío.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para mostrar actividad o hitos ordenados temporalmente."
      ],
      "avoidWhen": [
        "Para pasos accionables de un proceso; usa AfStepper."
      ],
      "related": [
        "AfStepper",
        "AfDataView"
      ],
      "tokens": [
        "--af-border",
        "--af-text-muted"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Linea de tiempo'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfTimelineDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin eventos'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "items",
            "type": "readonly AfTimelineItem[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "itemPressed",
            "type": "AfTimelineItem",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-timeline--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-timeline--default"
        },
        {
          "id": "data-timeline--empty",
          "name": "Empty",
          "url": "/storybook/?path=/story/data-timeline--empty"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-timeline--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfTimeline } from '@argfit-ui/adaptive';",
        "template": "<af-timeline [items]=\"items\" [ariaLabel]=\"ariaLabel\" [density]=\"density\" [loading]=\"loading\" [error]=\"error\" (itemPressed)=\"itemPressed($event)\" />"
      }
    },
    {
      "id": "time-picker",
      "name": "AfTimePicker",
      "className": "AfTimePickerComponent",
      "selector": "af-time-picker",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfTimePicker } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/TimePicker",
      "category": "Forms",
      "status": "documented",
      "description": "Selector adaptativo de hora que mantiene un valor público HH:mm.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para horarios civiles sin lógica de zona horaria dentro del componente."
      ],
      "avoidWhen": [
        "Para fechas completas; usa AfDatePicker."
      ],
      "related": [
        "AfDatePicker",
        "AfInput"
      ],
      "tokens": [
        "--af-input-border",
        "--af-border-focus"
      ],
      "api": {
        "inputs": [
          {
            "name": "density",
            "type": "AfTimePickerDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "errorText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "helperText",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "max",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Límite superior como <code>HH:mm</code>.</p>\n",
            "deprecated": false
          },
          {
            "name": "min",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "<p>Límite inferior como <code>HH:mm</code>.</p>\n",
            "deprecated": false
          },
          {
            "name": "minuteStep",
            "type": "AfTimePickerMinuteStep",
            "required": false,
            "defaultValue": "5",
            "description": "",
            "deprecated": false
          },
          {
            "name": "name",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "placeholder",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "readonly",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "required",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfTimePickerSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "value",
            "type": "string",
            "required": false,
            "defaultValue": "''",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "focusChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "valueChange",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-forms-timepicker--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-timepicker--default"
        },
        {
          "id": "components-forms-timepicker--with-error",
          "name": "WithError",
          "url": "/storybook/?path=/story/components-forms-timepicker--with-error"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-timepicker--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfTimePicker } from '@argfit-ui/adaptive';",
        "template": "<af-time-picker [label]=\"label\" [helperText]=\"helperText\" [value]=\"value\" [min]=\"min\" [max]=\"max\" [minuteStep]=\"minuteStep\" [disabled]=\"disabled\" [required]=\"required\" (valueChange)=\"valueChange($event)\" />"
      }
    },
    {
      "id": "toast",
      "name": "AfToast",
      "className": "AfToastComponent",
      "selector": "af-toast",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfToast } from '@argfit-ui/adaptive';",
      "title": "Feedback/Toast",
      "category": "Feedback",
      "status": "documented",
      "description": "Notificación individual con severidad, duración y cierre accesible.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para confirmar resultados breves que no bloquean el flujo actual."
      ],
      "avoidWhen": [
        "Para errores persistentes dentro de una sección; usa AfInlineMessage."
      ],
      "related": [
        "AfToastViewport",
        "AfInlineMessage"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "closeLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Cerrar notificacion'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "description",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "duration",
            "type": "number",
            "required": false,
            "defaultValue": "4000",
            "description": "",
            "deprecated": false
          },
          {
            "name": "id",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "persistent",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "severity",
            "type": "AfFeedbackSeverity",
            "required": false,
            "defaultValue": "'info'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "title",
            "type": "string",
            "required": true,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "dismissed",
            "type": "string",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "feedback-toast--default",
          "name": "Default",
          "url": "/storybook/?path=/story/feedback-toast--default"
        },
        {
          "id": "feedback-toast--danger",
          "name": "Danger",
          "url": "/storybook/?path=/story/feedback-toast--danger"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/feedback-toast--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfToast } from '@argfit-ui/adaptive';",
        "template": "<af-toast [id]=\"id\" [title]=\"title\" [description]=\"description\" [severity]=\"severity\" [duration]=\"duration\" [persistent]=\"persistent\" (dismissed)=\"dismissed($event)\" />"
      }
    },
    {
      "id": "toast-viewport",
      "name": "AfToastViewport",
      "className": "AfToastViewportComponent",
      "selector": "af-toast-viewport",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfToastViewport } from '@argfit-ui/adaptive';",
      "title": "Feedback/ToastViewport",
      "category": "Feedback",
      "status": "documented",
      "description": "Viewport raíz que presenta la cola gestionada por AfToastService.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Una sola vez en el shell de la aplicación para alojar notificaciones globales."
      ],
      "avoidWhen": [
        "Dentro de cada página o para mensajes inline."
      ],
      "related": [
        "AfToast",
        "AfInlineMessage"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Notificaciones'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "closeLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Cerrar notificacion'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "placement",
            "type": "AfToastPlacement | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "actionInvoked",
            "type": "AfToastActionEvent",
            "required": false,
            "defaultValue": null,
            "description": "<p>Acción activada dentro de un aviso.</p>\n<p>El viewport vive una sola vez en la raíz de la aplicación, así que es el punto natural\nde despacho: el consumidor discrimina por <code>event.action.id</code>. El servicio de toasts no\nguarda manejadores a propósito —almacenar funciones de componente en un singleton de\ncore filtraría estado de UI a la capa de datos y dificultaría su liberación.</p>\n",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "feedback-toastviewport--default",
          "name": "Default",
          "url": "/storybook/?path=/story/feedback-toastviewport--default"
        },
        {
          "id": "feedback-toastviewport--bottom-center",
          "name": "BottomCenter",
          "url": "/storybook/?path=/story/feedback-toastviewport--bottom-center"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/feedback-toastviewport--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfToastViewport } from '@argfit-ui/adaptive';",
        "template": "<af-toast id=\"viewport-preview\" title=\"Vista previa del viewport\" description=\"En una aplicación, AfToastService administra esta cola.\" severity=\"info\" [persistent]=\"true\" /><af-toast-viewport [placement]=\"placement\" [ariaLabel]=\"ariaLabel\" [closeLabel]=\"closeLabel\" (actionInvoked)=\"actionInvoked($event)\" />"
      }
    },
    {
      "id": "toggle",
      "name": "AfToggle",
      "className": "AfToggleComponent",
      "selector": "af-toggle",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfToggle } from '@argfit-ui/adaptive';",
      "title": "Components/Forms/Toggle",
      "category": "Forms",
      "status": "documented",
      "description": "Interruptor booleano para cambios que tienen efecto inmediato.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Cuando activar una preferencia produce un cambio inmediato y reversible."
      ],
      "avoidWhen": [
        "Para aceptar términos antes de enviar un formulario; usa AfCheckbox."
      ],
      "related": [
        "AfCheckbox",
        "AfSegmentedControl"
      ],
      "tokens": [
        "--af-input-border",
        "--af-border-focus"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "checked",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "description",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "hint",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "inputId",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "label",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "size",
            "type": "AfControlSize",
            "required": false,
            "defaultValue": "'md'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "state",
            "type": "AfValidationState",
            "required": false,
            "defaultValue": "'default'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "checkedChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "focusChange",
            "type": "boolean",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "components-forms-toggle--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-forms-toggle--default"
        },
        {
          "id": "components-forms-toggle--disabled",
          "name": "Disabled",
          "url": "/storybook/?path=/story/components-forms-toggle--disabled"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-forms-toggle--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfToggle } from '@argfit-ui/adaptive';",
        "template": "<af-toggle [label]=\"label\" [description]=\"description\" [checked]=\"checked\" [disabled]=\"disabled\" [size]=\"size\" (checkedChange)=\"checkedChange($event)\" />"
      }
    },
    {
      "id": "toolbar",
      "name": "AfToolbar",
      "className": "AfToolbarComponent",
      "selector": "af-toolbar",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfToolbar } from '@argfit-ui/adaptive';",
      "title": "Components/Surfaces/Toolbar",
      "category": "Surfaces",
      "status": "documented",
      "description": "Barra de acciones con zonas start, center y end adaptativas.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para reunir acciones de una vista o colección en una sola región."
      ],
      "avoidWhen": [
        "Para navegación principal; usa AfPageShell."
      ],
      "related": [
        "AfButton",
        "AfPageShell"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Toolbar'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfToolbarDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "components-surfaces-toolbar--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-surfaces-toolbar--default"
        },
        {
          "id": "components-surfaces-toolbar--compact",
          "name": "Compact",
          "url": "/storybook/?path=/story/components-surfaces-toolbar--compact"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-surfaces-toolbar--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfToolbar } from '@argfit-ui/adaptive';",
        "template": "<af-toolbar [ariaLabel]=\"ariaLabel\" [density]=\"density\"><strong afToolbarStart>Plantilla</strong><span afToolbarCenter>24 jugadores</span><div afToolbarEnd><button type=\"button\">Filtrar</button><button type=\"button\">Añadir</button></div></af-toolbar>"
      }
    },
    {
      "id": "tooltip",
      "name": "AfTooltip",
      "className": "AfTooltipComponent",
      "selector": "af-tooltip",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfTooltip } from '@argfit-ui/adaptive';",
      "title": "Components/Overlays/Tooltip",
      "category": "Overlays",
      "status": "documented",
      "description": "Ayuda textual breve asociada a un trigger y accesible por foco.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para aclarar un icono o acción sin añadir texto persistente."
      ],
      "avoidWhen": [
        "Para contenido interactivo o extenso; usa AfPopover."
      ],
      "related": [
        "AfPopover",
        "AfButton"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-text-main"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "open",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "placement",
            "type": "AfTooltipPlacement",
            "required": false,
            "defaultValue": "'top'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "text",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "tone",
            "type": "AfTooltipTone",
            "required": false,
            "defaultValue": "'neutral'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": []
      },
      "stories": [
        {
          "id": "components-overlays-tooltip--default",
          "name": "Default",
          "url": "/storybook/?path=/story/components-overlays-tooltip--default"
        },
        {
          "id": "components-overlays-tooltip--bottom",
          "name": "Bottom",
          "url": "/storybook/?path=/story/components-overlays-tooltip--bottom"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/components-overlays-tooltip--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfTooltip } from '@argfit-ui/adaptive';",
        "template": "<af-tooltip [text]=\"text\" [open]=\"open\" [placement]=\"placement\" [tone]=\"tone\"><button type=\"button\" aria-label=\"Añadir jugador\">+</button></af-tooltip>"
      }
    },
    {
      "id": "tree",
      "name": "AfTree",
      "className": "AfTreeComponent",
      "selector": "af-tree",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfTree } from '@argfit-ui/adaptive';",
      "title": "Data/Tree",
      "category": "Data",
      "status": "documented",
      "description": "Árbol jerárquico expandible y seleccionable con estados adaptativos.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para explorar categorías, carpetas o relaciones padre-hijo."
      ],
      "avoidWhen": [
        "Para jerarquías con varias columnas comparables; usa AfTreeTable."
      ],
      "related": [
        "AfTreeTable",
        "AfOrganizationChart"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Arbol'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfTreeDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin nodos'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "expandedIds",
            "type": "AfTreeExpandedIds",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "nodes",
            "type": "readonly AfTreeNode[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectedIds",
            "type": "AfTreeSelectedIds",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectionMode",
            "type": "AfTreeSelectionMode",
            "required": false,
            "defaultValue": "'single'",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "expandedChange",
            "type": "AfTreeExpandedIds",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "nodePressed",
            "type": "AfTreeNode",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectionChange",
            "type": "AfTreeSelectedIds",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-tree--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-tree--default"
        },
        {
          "id": "data-tree--empty",
          "name": "Empty",
          "url": "/storybook/?path=/story/data-tree--empty"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-tree--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfTree } from '@argfit-ui/adaptive';",
        "template": "<af-tree [nodes]=\"nodes\" [expandedIds]=\"expandedIds\" [selectedIds]=\"selectedIds\" [selectionMode]=\"selectionMode\" [density]=\"density\" [loading]=\"loading\" [error]=\"error\" (selectionChange)=\"selectionChange($event)\" />"
      }
    },
    {
      "id": "tree-table",
      "name": "AfTreeTable",
      "className": "AfTreeTableComponent",
      "selector": "af-tree-table",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfTreeTable } from '@argfit-ui/adaptive';",
      "title": "Data/TreeTable",
      "category": "Data",
      "status": "documented",
      "description": "Tabla jerárquica adaptativa con expansión, selección y columnas vendor-neutral.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para comparar atributos tabulares dentro de una jerarquía."
      ],
      "avoidWhen": [
        "Para una jerarquía de etiquetas sin columnas; usa AfTree."
      ],
      "related": [
        "AfTree",
        "AfDataTable"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Tabla jerarquica'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "columns",
            "type": "readonly AfDataTableColumn[]",
            "required": true,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfTreeTableDensity",
            "required": false,
            "defaultValue": "'normal'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "disabled",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin nodos'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "expandedIds",
            "type": "AfTreeTableExpandedIds",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "nodes",
            "type": "readonly AfTreeTableNode[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectedIds",
            "type": "AfTreeTableSelectedIds",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectionMode",
            "type": "AfTreeTableSelectionMode",
            "required": false,
            "defaultValue": "'single'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "treeColumnKey",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "expandedChange",
            "type": "AfTreeTableExpandedIds",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "nodePressed",
            "type": "AfTreeTableNode",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "selectionChange",
            "type": "AfTreeTableSelectedIds",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-treetable--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-treetable--default"
        },
        {
          "id": "data-treetable--loading",
          "name": "Loading",
          "url": "/storybook/?path=/story/data-treetable--loading"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-treetable--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfTreeTable } from '@argfit-ui/adaptive';",
        "template": "<af-tree-table [columns]=\"columns\" [nodes]=\"nodes\" [treeColumnKey]=\"treeColumnKey\" [expandedIds]=\"expandedIds\" [selectedIds]=\"selectedIds\" [selectionMode]=\"selectionMode\" [density]=\"density\" [loading]=\"loading\" (selectionChange)=\"selectionChange($event)\" />"
      }
    },
    {
      "id": "virtual-scroller",
      "name": "AfVirtualScroller",
      "className": "AfVirtualScrollerComponent",
      "selector": "af-virtual-scroller",
      "package": "@argfit-ui/adaptive",
      "importStatement": "import { AfVirtualScroller } from '@argfit-ui/adaptive';",
      "title": "Data/VirtualScroller",
      "category": "Data",
      "status": "documented",
      "description": "Lista virtualizada para colecciones extensas con rango visible observable.",
      "platforms": [
        "desktop",
        "mobile"
      ],
      "useWhen": [
        "Para cientos o miles de filas de altura conocida."
      ],
      "avoidWhen": [
        "Para paginación estable o colecciones pequeñas; usa AfPaginator o AfDataView."
      ],
      "related": [
        "AfPaginator",
        "AfDataView"
      ],
      "tokens": [
        "--af-bg-surface",
        "--af-border"
      ],
      "api": {
        "inputs": [
          {
            "name": "ariaLabel",
            "type": "string",
            "required": false,
            "defaultValue": "'Lista virtualizada'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "density",
            "type": "AfVirtualScrollerDensity",
            "required": false,
            "defaultValue": "'comfortable'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyDescription",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "emptyTitle",
            "type": "string",
            "required": false,
            "defaultValue": "'Sin items'",
            "description": "",
            "deprecated": false
          },
          {
            "name": "error",
            "type": "string | undefined",
            "required": false,
            "defaultValue": "undefined",
            "description": "",
            "deprecated": false
          },
          {
            "name": "itemHeight",
            "type": "number",
            "required": false,
            "defaultValue": "88",
            "description": "",
            "deprecated": false
          },
          {
            "name": "items",
            "type": "readonly AfVirtualScrollerItem[]",
            "required": false,
            "defaultValue": "[]",
            "description": "",
            "deprecated": false
          },
          {
            "name": "loading",
            "type": "boolean",
            "required": false,
            "defaultValue": "false",
            "description": "",
            "deprecated": false
          },
          {
            "name": "overscan",
            "type": "number",
            "required": false,
            "defaultValue": "3",
            "description": "",
            "deprecated": false
          },
          {
            "name": "viewportHeight",
            "type": "number",
            "required": false,
            "defaultValue": "336",
            "description": "",
            "deprecated": false
          }
        ],
        "outputs": [
          {
            "name": "itemPressed",
            "type": "AfVirtualScrollerItem",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          },
          {
            "name": "visibleRangeChange",
            "type": "AfVirtualScrollerRange",
            "required": false,
            "defaultValue": null,
            "description": "",
            "deprecated": false
          }
        ]
      },
      "stories": [
        {
          "id": "data-virtualscroller--default",
          "name": "Default",
          "url": "/storybook/?path=/story/data-virtualscroller--default"
        },
        {
          "id": "data-virtualscroller--loading",
          "name": "Loading",
          "url": "/storybook/?path=/story/data-virtualscroller--loading"
        }
      ],
      "docsUrl": "/storybook/?path=/docs/data-virtualscroller--docs",
      "example": {
        "story": "Default",
        "typescript": "import { AfVirtualScroller } from '@argfit-ui/adaptive';",
        "template": "<af-virtual-scroller [items]=\"items\" [viewportHeight]=\"viewportHeight\" [itemHeight]=\"itemHeight\" [overscan]=\"overscan\" [density]=\"density\" [loading]=\"loading\" [error]=\"error\" (visibleRangeChange)=\"visibleRangeChange($event)\" />"
      }
    }
  ],
  "tokens": [
    {
      "name": "--af-color-primary-50",
      "family": "color",
      "values": {
        "dark": "#E8F4FC",
        "light": "#E8F4FC"
      }
    },
    {
      "name": "--af-color-primary-100",
      "family": "color",
      "values": {
        "dark": "#C3E4F7",
        "light": "#C3E4F7"
      }
    },
    {
      "name": "--af-color-primary-200",
      "family": "color",
      "values": {
        "dark": "#8DCAEF",
        "light": "#8DCAEF"
      }
    },
    {
      "name": "--af-color-primary-300",
      "family": "color",
      "values": {
        "dark": "#57B0E7",
        "light": "#57B0E7"
      }
    },
    {
      "name": "--af-color-primary-400",
      "family": "color",
      "values": {
        "dark": "#2599D5",
        "light": "#2599D5"
      }
    },
    {
      "name": "--af-color-primary-500",
      "family": "color",
      "values": {
        "dark": "#1E7DB1",
        "light": "#1E7DB1"
      }
    },
    {
      "name": "--af-color-primary-600",
      "family": "color",
      "values": {
        "dark": "#17618D",
        "light": "#17618D"
      }
    },
    {
      "name": "--af-color-primary-700",
      "family": "color",
      "values": {
        "dark": "#114569",
        "light": "#114569"
      }
    },
    {
      "name": "--af-color-primary-800",
      "family": "color",
      "values": {
        "dark": "#0C2F49",
        "light": "#0C2F49"
      }
    },
    {
      "name": "--af-color-primary-900",
      "family": "color",
      "values": {
        "dark": "#071C2E",
        "light": "#071C2E"
      }
    },
    {
      "name": "--af-color-accent-50",
      "family": "color",
      "values": {
        "dark": "#E0F7FF",
        "light": "#E0F7FF"
      }
    },
    {
      "name": "--af-color-accent-100",
      "family": "color",
      "values": {
        "dark": "#B3ECFF",
        "light": "#B3ECFF"
      }
    },
    {
      "name": "--af-color-accent-200",
      "family": "color",
      "values": {
        "dark": "#80E0FF",
        "light": "#80E0FF"
      }
    },
    {
      "name": "--af-color-accent-300",
      "family": "color",
      "values": {
        "dark": "#4DD4FF",
        "light": "#4DD4FF"
      }
    },
    {
      "name": "--af-color-accent-400",
      "family": "color",
      "values": {
        "dark": "#00D4FF",
        "light": "#00D4FF"
      }
    },
    {
      "name": "--af-color-accent-500",
      "family": "color",
      "values": {
        "dark": "#00AACE",
        "light": "#00AACE"
      }
    },
    {
      "name": "--af-color-accent-600",
      "family": "color",
      "values": {
        "dark": "#00809B",
        "light": "#00809B"
      }
    },
    {
      "name": "--af-color-accent-700",
      "family": "color",
      "values": {
        "dark": "#005768",
        "light": "#005768"
      }
    },
    {
      "name": "--af-color-accent-800",
      "family": "color",
      "values": {
        "dark": "#003340",
        "light": "#003340"
      }
    },
    {
      "name": "--af-color-accent-900",
      "family": "color",
      "values": {
        "dark": "#001A22",
        "light": "#001A22"
      }
    },
    {
      "name": "--af-color-neutral-50",
      "family": "color",
      "values": {
        "dark": "#F0F4F8",
        "light": "#F0F4F8"
      }
    },
    {
      "name": "--af-color-neutral-100",
      "family": "color",
      "values": {
        "dark": "#D9E2EC",
        "light": "#D9E2EC"
      }
    },
    {
      "name": "--af-color-neutral-200",
      "family": "color",
      "values": {
        "dark": "#BCCCDC",
        "light": "#BCCCDC"
      }
    },
    {
      "name": "--af-color-neutral-300",
      "family": "color",
      "values": {
        "dark": "#9FB3C8",
        "light": "#9FB3C8"
      }
    },
    {
      "name": "--af-color-neutral-400",
      "family": "color",
      "values": {
        "dark": "#829AB1",
        "light": "#829AB1"
      }
    },
    {
      "name": "--af-color-neutral-500",
      "family": "color",
      "values": {
        "dark": "#627D98",
        "light": "#627D98"
      }
    },
    {
      "name": "--af-color-neutral-600",
      "family": "color",
      "values": {
        "dark": "#486581",
        "light": "#486581"
      }
    },
    {
      "name": "--af-color-neutral-700",
      "family": "color",
      "values": {
        "dark": "#334E68",
        "light": "#334E68"
      }
    },
    {
      "name": "--af-color-neutral-800",
      "family": "color",
      "values": {
        "dark": "#243B53",
        "light": "#243B53"
      }
    },
    {
      "name": "--af-color-neutral-900",
      "family": "color",
      "values": {
        "dark": "#102A43",
        "light": "#102A43"
      }
    },
    {
      "name": "--af-success",
      "family": "color",
      "values": {
        "dark": "#00C853",
        "light": "#00C853"
      }
    },
    {
      "name": "--af-success-light",
      "family": "color",
      "values": {
        "dark": "#B9F6CA",
        "light": "#B9F6CA"
      }
    },
    {
      "name": "--af-success-dark",
      "family": "color",
      "values": {
        "dark": "#009624",
        "light": "#009624"
      }
    },
    {
      "name": "--af-warning",
      "family": "color",
      "values": {
        "dark": "#FFB300",
        "light": "#FFB300"
      }
    },
    {
      "name": "--af-warning-light",
      "family": "color",
      "values": {
        "dark": "#FFE082",
        "light": "#FFE082"
      }
    },
    {
      "name": "--af-warning-dark",
      "family": "color",
      "values": {
        "dark": "#FF8F00",
        "light": "#FF8F00"
      }
    },
    {
      "name": "--af-danger",
      "family": "color",
      "values": {
        "dark": "#FF3D71",
        "light": "#FF3D71"
      }
    },
    {
      "name": "--af-danger-light",
      "family": "color",
      "values": {
        "dark": "#FF8A9B",
        "light": "#FF8A9B"
      }
    },
    {
      "name": "--af-danger-dark",
      "family": "color",
      "values": {
        "dark": "#DB2C66",
        "light": "#DB2C66"
      }
    },
    {
      "name": "--af-info",
      "family": "color",
      "values": {
        "dark": "#2599D5",
        "light": "#2599D5"
      }
    },
    {
      "name": "--af-info-light",
      "family": "color",
      "values": {
        "dark": "#8DCAEF",
        "light": "#8DCAEF"
      }
    },
    {
      "name": "--af-info-dark",
      "family": "color",
      "values": {
        "dark": "#17618D",
        "light": "#17618D"
      }
    },
    {
      "name": "--af-primary",
      "family": "color",
      "values": {
        "dark": "#2599D5",
        "light": "#2599D5"
      }
    },
    {
      "name": "--af-primary-hover",
      "family": "color",
      "values": {
        "dark": "#57B0E7",
        "light": "#57B0E7"
      }
    },
    {
      "name": "--af-primary-active",
      "family": "color",
      "values": {
        "dark": "#1E7DB1",
        "light": "#1E7DB1"
      }
    },
    {
      "name": "--af-primary-soft",
      "family": "color",
      "values": {
        "dark": "rgba(37, 153, 213, 0.16)",
        "light": "rgba(37, 153, 213, 0.16)"
      }
    },
    {
      "name": "--af-primary-contrast",
      "family": "color",
      "values": {
        "dark": "#0A1628",
        "light": "#0A1628"
      }
    },
    {
      "name": "--af-accent",
      "family": "color",
      "values": {
        "dark": "#00D4FF",
        "light": "#00D4FF"
      }
    },
    {
      "name": "--af-accent-hover",
      "family": "color",
      "values": {
        "dark": "#4DD4FF",
        "light": "#4DD4FF"
      }
    },
    {
      "name": "--af-accent-soft",
      "family": "color",
      "values": {
        "dark": "rgba(0, 212, 255, 0.16)",
        "light": "rgba(0, 212, 255, 0.16)"
      }
    },
    {
      "name": "--af-secondary",
      "family": "color",
      "values": {
        "dark": "#00D4FF",
        "light": "#00D4FF"
      }
    },
    {
      "name": "--af-secondary-hover",
      "family": "color",
      "values": {
        "dark": "#4DD4FF",
        "light": "#4DD4FF"
      }
    },
    {
      "name": "--af-danger-hover",
      "family": "color",
      "values": {
        "dark": "#FF8A9B",
        "light": "#FF8A9B"
      }
    },
    {
      "name": "--af-danger-soft",
      "family": "color",
      "values": {
        "dark": "rgba(255, 61, 113, 0.16)",
        "light": "rgba(255, 61, 113, 0.16)"
      }
    },
    {
      "name": "--af-bg-main",
      "family": "color",
      "values": {
        "dark": "#0A1628",
        "light": "#F0F4F8"
      }
    },
    {
      "name": "--af-bg-surface",
      "family": "color",
      "values": {
        "dark": "#0F1D32",
        "light": "#FFFFFF"
      }
    },
    {
      "name": "--af-bg-elevated",
      "family": "color",
      "values": {
        "dark": "#0F1D32",
        "light": "#FFFFFF"
      }
    },
    {
      "name": "--af-bg-overlay",
      "family": "color",
      "values": {
        "dark": "rgba(10, 22, 40, 0.75)",
        "light": "rgba(16, 42, 67, 0.4)"
      }
    },
    {
      "name": "--af-bg-interactive",
      "family": "color",
      "values": {
        "dark": "#152A42",
        "light": "#E8EDF3"
      }
    },
    {
      "name": "--af-surface-1",
      "family": "color",
      "values": {
        "dark": "#0F1D32",
        "light": "#FFFFFF"
      }
    },
    {
      "name": "--af-surface-2",
      "family": "color",
      "values": {
        "dark": "#152A42",
        "light": "#E8EDF3"
      }
    },
    {
      "name": "--af-surface-3",
      "family": "color",
      "values": {
        "dark": "#1C3550",
        "light": "#D9E2EC"
      }
    },
    {
      "name": "--af-surface-4",
      "family": "color",
      "values": {
        "dark": "#234060",
        "light": "#BCCCDC"
      }
    },
    {
      "name": "--af-text-main",
      "family": "typography",
      "values": {
        "dark": "#F0F4F8",
        "light": "#102A43"
      }
    },
    {
      "name": "--af-text-muted",
      "family": "typography",
      "values": {
        "dark": "#BCCCDC",
        "light": "#334E68"
      }
    },
    {
      "name": "--af-text-soft",
      "family": "typography",
      "values": {
        "dark": "#829AB1",
        "light": "#486581"
      }
    },
    {
      "name": "--af-text-disabled",
      "family": "typography",
      "values": {
        "dark": "#627D98",
        "light": "#829AB1"
      }
    },
    {
      "name": "--af-text-inverse",
      "family": "typography",
      "values": {
        "dark": "#0A1628",
        "light": "#F0F4F8"
      }
    },
    {
      "name": "--af-border",
      "family": "color",
      "values": {
        "dark": "rgba(37, 153, 213, 0.10)",
        "light": "rgba(16, 42, 67, 0.10)"
      }
    },
    {
      "name": "--af-border-soft",
      "family": "color",
      "values": {
        "dark": "rgba(37, 153, 213, 0.06)",
        "light": "rgba(16, 42, 67, 0.06)"
      }
    },
    {
      "name": "--af-border-strong",
      "family": "color",
      "values": {
        "dark": "rgba(37, 153, 213, 0.22)",
        "light": "rgba(16, 42, 67, 0.20)"
      }
    },
    {
      "name": "--af-border-focus",
      "family": "color",
      "values": {
        "dark": "#2599D5",
        "light": "#2599D5"
      }
    },
    {
      "name": "--af-focus-ring",
      "family": "color",
      "values": {
        "dark": "0 0 0 3px rgba(37, 153, 213, 0.32)",
        "light": "0 0 0 3px rgba(37, 153, 213, 0.28)"
      }
    },
    {
      "name": "--af-input-bg",
      "family": "color",
      "values": {
        "dark": "rgba(15, 29, 50, 0.8)",
        "light": "#FFFFFF"
      }
    },
    {
      "name": "--af-input-border",
      "family": "color",
      "values": {
        "dark": "rgba(37, 153, 213, 0.15)",
        "light": "rgba(16, 42, 67, 0.15)"
      }
    },
    {
      "name": "--af-card-bg",
      "family": "color",
      "values": {
        "dark": "#0F1D32",
        "light": "#FFFFFF"
      }
    },
    {
      "name": "--af-card-border",
      "family": "color",
      "values": {
        "dark": "rgba(37, 153, 213, 0.10)",
        "light": "rgba(16, 42, 67, 0.10)"
      }
    },
    {
      "name": "--af-card-shadow",
      "family": "elevation",
      "values": {
        "dark": "0 4px 12px rgba(0, 0, 0, 0.2)",
        "light": "0 2px 8px rgba(16, 42, 67, 0.08)"
      }
    },
    {
      "name": "--af-chart-grid",
      "family": "color",
      "values": {
        "dark": "rgba(37, 153, 213, 0.10)",
        "light": "rgba(16, 42, 67, 0.08)"
      }
    },
    {
      "name": "--af-chart-axis",
      "family": "color",
      "values": {
        "dark": "rgba(37, 153, 213, 0.22)",
        "light": "rgba(16, 42, 67, 0.18)"
      }
    },
    {
      "name": "--af-chart-label",
      "family": "color",
      "values": {
        "dark": "#BCCCDC",
        "light": "#486581"
      }
    },
    {
      "name": "--af-chart-primary",
      "family": "color",
      "values": {
        "dark": "#2599D5",
        "light": "#2599D5"
      }
    },
    {
      "name": "--af-chart-accent",
      "family": "color",
      "values": {
        "dark": "#00D4FF",
        "light": "#0E7FA8"
      }
    },
    {
      "name": "--af-chart-success",
      "family": "color",
      "values": {
        "dark": "#00C853",
        "light": "#00C853"
      }
    },
    {
      "name": "--af-chart-warning",
      "family": "color",
      "values": {
        "dark": "#FFB300",
        "light": "#FFB300"
      }
    },
    {
      "name": "--af-chart-danger",
      "family": "color",
      "values": {
        "dark": "#FF3D71",
        "light": "#FF3D71"
      }
    },
    {
      "name": "--af-chart-tooltip-bg",
      "family": "color",
      "values": {
        "dark": "rgba(10, 22, 40, 0.95)",
        "light": "rgba(255, 255, 255, 0.98)"
      }
    },
    {
      "name": "--af-chart-tooltip-border",
      "family": "color",
      "values": {
        "dark": "rgba(37, 153, 213, 0.18)",
        "light": "rgba(16, 42, 67, 0.14)"
      }
    },
    {
      "name": "--af-chart-tooltip-text",
      "family": "color",
      "values": {
        "dark": "#F0F4F8",
        "light": "#102A43"
      }
    },
    {
      "name": "--af-chart-track",
      "family": "color",
      "values": {
        "dark": "rgba(37, 153, 213, 0.12)",
        "light": "rgba(16, 42, 67, 0.10)"
      }
    },
    {
      "name": "--af-chart-fill-soft",
      "family": "color",
      "values": {
        "dark": "rgba(37, 153, 213, 0.16)",
        "light": "rgba(37, 153, 213, 0.14)"
      }
    },
    {
      "name": "--af-chart-scale-0",
      "family": "color",
      "values": {
        "dark": "#0F1D32",
        "light": "#F0F4F8"
      }
    },
    {
      "name": "--af-chart-scale-1",
      "family": "color",
      "values": {
        "dark": "#114569",
        "light": "#C7E2F2"
      }
    },
    {
      "name": "--af-chart-scale-2",
      "family": "color",
      "values": {
        "dark": "#17618D",
        "light": "#8DC7E8"
      }
    },
    {
      "name": "--af-chart-scale-3",
      "family": "color",
      "values": {
        "dark": "#2599D5",
        "light": "#2599D5"
      }
    },
    {
      "name": "--af-chart-scale-4",
      "family": "color",
      "values": {
        "dark": "#4DD4FF",
        "light": "#17618D"
      }
    },
    {
      "name": "--af-chart-scale-5",
      "family": "color",
      "values": {
        "dark": "#00D4FF",
        "light": "#0B3E5E"
      }
    },
    {
      "name": "--af-calendar-surface",
      "family": "calendar",
      "values": {
        "dark": "#0F1D32",
        "light": "#FFFFFF"
      }
    },
    {
      "name": "--af-calendar-surface-elevated",
      "family": "calendar",
      "values": {
        "dark": "#152A42",
        "light": "#F0F4F8"
      }
    },
    {
      "name": "--af-calendar-grid-line",
      "family": "calendar",
      "values": {
        "dark": "rgba(37, 153, 213, 0.12)",
        "light": "rgba(16, 42, 67, 0.12)"
      }
    },
    {
      "name": "--af-calendar-today-bg",
      "family": "calendar",
      "values": {
        "dark": "rgba(37, 153, 213, 0.08)",
        "light": "rgba(37, 153, 213, 0.10)"
      }
    },
    {
      "name": "--af-calendar-selection-bg",
      "family": "calendar",
      "values": {
        "dark": "rgba(37, 153, 213, 0.18)",
        "light": "rgba(37, 153, 213, 0.16)"
      }
    },
    {
      "name": "--af-calendar-now",
      "family": "calendar",
      "values": {
        "dark": "#FF3D71",
        "light": "#D01F4E"
      }
    },
    {
      "name": "--af-calendar-slot-height-compact",
      "family": "calendar",
      "values": {
        "dark": "24px",
        "light": "24px"
      }
    },
    {
      "name": "--af-calendar-slot-height-comfortable",
      "family": "calendar",
      "values": {
        "dark": "32px",
        "light": "32px"
      }
    },
    {
      "name": "--af-calendar-slot-height-touch",
      "family": "calendar",
      "values": {
        "dark": "44px",
        "light": "44px"
      }
    },
    {
      "name": "--af-calendar-time-axis-width",
      "family": "calendar",
      "values": {
        "dark": "64px",
        "light": "64px"
      }
    },
    {
      "name": "--af-event-training-accent",
      "family": "event",
      "values": {
        "dark": "#2599D5",
        "light": "#1E7DB1"
      }
    },
    {
      "name": "--af-event-training-bg",
      "family": "event",
      "values": {
        "dark": "rgba(37, 153, 213, 0.16)",
        "light": "rgba(37, 153, 213, 0.16)"
      }
    },
    {
      "name": "--af-event-training-border",
      "family": "event",
      "values": {
        "dark": "rgba(37, 153, 213, 0.42)",
        "light": "rgba(37, 153, 213, 0.42)"
      }
    },
    {
      "name": "--af-event-match-accent",
      "family": "event",
      "values": {
        "dark": "#00D4FF",
        "light": "#00809B"
      }
    },
    {
      "name": "--af-event-match-bg",
      "family": "event",
      "values": {
        "dark": "rgba(0, 212, 255, 0.16)",
        "light": "rgba(0, 212, 255, 0.16)"
      }
    },
    {
      "name": "--af-event-match-border",
      "family": "event",
      "values": {
        "dark": "rgba(0, 212, 255, 0.42)",
        "light": "rgba(0, 212, 255, 0.42)"
      }
    },
    {
      "name": "--af-event-gym-accent",
      "family": "event",
      "values": {
        "dark": "#00C853",
        "light": "#00893A"
      }
    },
    {
      "name": "--af-event-gym-bg",
      "family": "event",
      "values": {
        "dark": "rgba(0, 200, 83, 0.16)",
        "light": "rgba(0, 200, 83, 0.16)"
      }
    },
    {
      "name": "--af-event-gym-border",
      "family": "event",
      "values": {
        "dark": "rgba(0, 200, 83, 0.42)",
        "light": "rgba(0, 200, 83, 0.42)"
      }
    },
    {
      "name": "--af-event-video-accent",
      "family": "event",
      "values": {
        "dark": "#FFB300",
        "light": "#A66A00"
      }
    },
    {
      "name": "--af-event-video-bg",
      "family": "event",
      "values": {
        "dark": "rgba(255, 179, 0, 0.15)",
        "light": "rgba(255, 179, 0, 0.15)"
      }
    },
    {
      "name": "--af-event-video-border",
      "family": "event",
      "values": {
        "dark": "rgba(255, 179, 0, 0.34)",
        "light": "rgba(255, 179, 0, 0.34)"
      }
    },
    {
      "name": "--af-event-medical-accent",
      "family": "event",
      "values": {
        "dark": "#FF3D71",
        "light": "#D01F4E"
      }
    },
    {
      "name": "--af-event-medical-bg",
      "family": "event",
      "values": {
        "dark": "rgba(255, 61, 113, 0.15)",
        "light": "rgba(255, 61, 113, 0.15)"
      }
    },
    {
      "name": "--af-event-medical-border",
      "family": "event",
      "values": {
        "dark": "rgba(255, 61, 113, 0.34)",
        "light": "rgba(255, 61, 113, 0.34)"
      }
    },
    {
      "name": "--af-event-neutral-accent",
      "family": "event",
      "values": {
        "dark": "#627D98",
        "light": "#486581"
      }
    },
    {
      "name": "--af-event-neutral-bg",
      "family": "event",
      "values": {
        "dark": "rgba(98, 125, 152, 0.18)",
        "light": "rgba(98, 125, 152, 0.18)"
      }
    },
    {
      "name": "--af-event-neutral-border",
      "family": "event",
      "values": {
        "dark": "rgba(98, 125, 152, 0.36)",
        "light": "rgba(98, 125, 152, 0.36)"
      }
    },
    {
      "name": "--af-scrollbar-thumb",
      "family": "color",
      "values": {
        "dark": "#334E68",
        "light": "#9FB3C8"
      }
    },
    {
      "name": "--af-radius-none",
      "family": "radius",
      "values": {
        "dark": "0",
        "light": "0"
      }
    },
    {
      "name": "--af-radius-xs",
      "family": "radius",
      "values": {
        "dark": "2px",
        "light": "2px"
      }
    },
    {
      "name": "--af-radius-sm",
      "family": "radius",
      "values": {
        "dark": "4px",
        "light": "4px"
      }
    },
    {
      "name": "--af-radius-md",
      "family": "radius",
      "values": {
        "dark": "8px",
        "light": "8px"
      }
    },
    {
      "name": "--af-radius-lg",
      "family": "radius",
      "values": {
        "dark": "12px",
        "light": "12px"
      }
    },
    {
      "name": "--af-radius-xl",
      "family": "radius",
      "values": {
        "dark": "16px",
        "light": "16px"
      }
    },
    {
      "name": "--af-radius-2xl",
      "family": "radius",
      "values": {
        "dark": "24px",
        "light": "24px"
      }
    },
    {
      "name": "--af-radius-pill",
      "family": "radius",
      "values": {
        "dark": "999px",
        "light": "999px"
      }
    },
    {
      "name": "--af-shadow-xs",
      "family": "elevation",
      "values": {
        "dark": "0 1px 2px rgba(0, 0, 0, 0.12)",
        "light": "0 1px 2px rgba(0, 0, 0, 0.12)"
      }
    },
    {
      "name": "--af-shadow-sm",
      "family": "elevation",
      "values": {
        "dark": "0 2px 4px rgba(0, 0, 0, 0.16)",
        "light": "0 2px 4px rgba(0, 0, 0, 0.16)"
      }
    },
    {
      "name": "--af-shadow-md",
      "family": "elevation",
      "values": {
        "dark": "0 4px 12px rgba(0, 0, 0, 0.2)",
        "light": "0 4px 12px rgba(0, 0, 0, 0.2)"
      }
    },
    {
      "name": "--af-shadow-lg",
      "family": "elevation",
      "values": {
        "dark": "0 8px 24px rgba(0, 0, 0, 0.24)",
        "light": "0 8px 24px rgba(0, 0, 0, 0.24)"
      }
    },
    {
      "name": "--af-shadow-xl",
      "family": "elevation",
      "values": {
        "dark": "0 16px 48px rgba(0, 0, 0, 0.28)",
        "light": "0 16px 48px rgba(0, 0, 0, 0.28)"
      }
    },
    {
      "name": "--af-shadow-glow",
      "family": "elevation",
      "values": {
        "dark": "0 0 24px rgba(37, 153, 213, 0.25)",
        "light": "0 0 24px rgba(37, 153, 213, 0.25)"
      }
    },
    {
      "name": "--af-shadow-glow-accent",
      "family": "elevation",
      "values": {
        "dark": "0 0 24px rgba(0, 212, 255, 0.2)",
        "light": "0 0 24px rgba(0, 212, 255, 0.2)"
      }
    },
    {
      "name": "--af-space-0",
      "family": "spacing",
      "values": {
        "dark": "0",
        "light": "0"
      }
    },
    {
      "name": "--af-space-px",
      "family": "spacing",
      "values": {
        "dark": "1px",
        "light": "1px"
      }
    },
    {
      "name": "--af-space-0_5",
      "family": "spacing",
      "values": {
        "dark": "2px",
        "light": "2px"
      }
    },
    {
      "name": "--af-space-1",
      "family": "spacing",
      "values": {
        "dark": "4px",
        "light": "4px"
      }
    },
    {
      "name": "--af-space-1_5",
      "family": "spacing",
      "values": {
        "dark": "6px",
        "light": "6px"
      }
    },
    {
      "name": "--af-space-2",
      "family": "spacing",
      "values": {
        "dark": "8px",
        "light": "8px"
      }
    },
    {
      "name": "--af-space-3",
      "family": "spacing",
      "values": {
        "dark": "12px",
        "light": "12px"
      }
    },
    {
      "name": "--af-space-4",
      "family": "spacing",
      "values": {
        "dark": "16px",
        "light": "16px"
      }
    },
    {
      "name": "--af-space-5",
      "family": "spacing",
      "values": {
        "dark": "20px",
        "light": "20px"
      }
    },
    {
      "name": "--af-space-6",
      "family": "spacing",
      "values": {
        "dark": "24px",
        "light": "24px"
      }
    },
    {
      "name": "--af-space-8",
      "family": "spacing",
      "values": {
        "dark": "32px",
        "light": "32px"
      }
    },
    {
      "name": "--af-space-10",
      "family": "spacing",
      "values": {
        "dark": "40px",
        "light": "40px"
      }
    },
    {
      "name": "--af-space-12",
      "family": "spacing",
      "values": {
        "dark": "48px",
        "light": "48px"
      }
    },
    {
      "name": "--af-space-16",
      "family": "spacing",
      "values": {
        "dark": "64px",
        "light": "64px"
      }
    },
    {
      "name": "--af-space-20",
      "family": "spacing",
      "values": {
        "dark": "80px",
        "light": "80px"
      }
    },
    {
      "name": "--af-space-24",
      "family": "spacing",
      "values": {
        "dark": "96px",
        "light": "96px"
      }
    },
    {
      "name": "--af-font-display",
      "family": "typography",
      "values": {
        "dark": "\"Zalando Sans Expanded\", \"Exo 2\", system-ui, -apple-system, \"Segoe UI\", sans-serif",
        "light": "\"Zalando Sans Expanded\", \"Exo 2\", system-ui, -apple-system, \"Segoe UI\", sans-serif"
      }
    },
    {
      "name": "--af-font-body",
      "family": "typography",
      "values": {
        "dark": "\"Outfit\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif",
        "light": "\"Outfit\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif"
      }
    },
    {
      "name": "--af-font-mono",
      "family": "typography",
      "values": {
        "dark": "\"JetBrains Mono\", \"Fira Code\", ui-monospace, monospace",
        "light": "\"JetBrains Mono\", \"Fira Code\", ui-monospace, monospace"
      }
    },
    {
      "name": "--af-font-family",
      "family": "typography",
      "values": {
        "dark": "\"Outfit\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif",
        "light": "\"Outfit\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif"
      }
    },
    {
      "name": "--af-text-xs",
      "family": "typography",
      "values": {
        "dark": "0.75rem",
        "light": "0.75rem"
      }
    },
    {
      "name": "--af-text-sm",
      "family": "typography",
      "values": {
        "dark": "0.875rem",
        "light": "0.875rem"
      }
    },
    {
      "name": "--af-text-base",
      "family": "typography",
      "values": {
        "dark": "1rem",
        "light": "1rem"
      }
    },
    {
      "name": "--af-text-lg",
      "family": "typography",
      "values": {
        "dark": "1.125rem",
        "light": "1.125rem"
      }
    },
    {
      "name": "--af-text-xl",
      "family": "typography",
      "values": {
        "dark": "1.25rem",
        "light": "1.25rem"
      }
    },
    {
      "name": "--af-text-2xl",
      "family": "typography",
      "values": {
        "dark": "1.5rem",
        "light": "1.5rem"
      }
    },
    {
      "name": "--af-text-3xl",
      "family": "typography",
      "values": {
        "dark": "2rem",
        "light": "2rem"
      }
    },
    {
      "name": "--af-text-4xl",
      "family": "typography",
      "values": {
        "dark": "2.5rem",
        "light": "2.5rem"
      }
    },
    {
      "name": "--af-text-5xl",
      "family": "typography",
      "values": {
        "dark": "3rem",
        "light": "3rem"
      }
    },
    {
      "name": "--af-text-6xl",
      "family": "typography",
      "values": {
        "dark": "3.75rem",
        "light": "3.75rem"
      }
    },
    {
      "name": "--af-font-size-xs",
      "family": "typography",
      "values": {
        "dark": "0.75rem",
        "light": "0.75rem"
      }
    },
    {
      "name": "--af-font-size-sm",
      "family": "typography",
      "values": {
        "dark": "0.875rem",
        "light": "0.875rem"
      }
    },
    {
      "name": "--af-font-size-md",
      "family": "typography",
      "values": {
        "dark": "1rem",
        "light": "1rem"
      }
    },
    {
      "name": "--af-font-size-lg",
      "family": "typography",
      "values": {
        "dark": "1.125rem",
        "light": "1.125rem"
      }
    },
    {
      "name": "--af-font-size-xl",
      "family": "typography",
      "values": {
        "dark": "1.25rem",
        "light": "1.25rem"
      }
    },
    {
      "name": "--af-font-size-2xl",
      "family": "typography",
      "values": {
        "dark": "1.5rem",
        "light": "1.5rem"
      }
    },
    {
      "name": "--af-font-weight-regular",
      "family": "typography",
      "values": {
        "dark": "400",
        "light": "400"
      }
    },
    {
      "name": "--af-font-weight-medium",
      "family": "typography",
      "values": {
        "dark": "500",
        "light": "500"
      }
    },
    {
      "name": "--af-font-weight-semibold",
      "family": "typography",
      "values": {
        "dark": "600",
        "light": "600"
      }
    },
    {
      "name": "--af-font-weight-bold",
      "family": "typography",
      "values": {
        "dark": "700",
        "light": "700"
      }
    },
    {
      "name": "--af-leading-tight",
      "family": "typography",
      "values": {
        "dark": "1.15",
        "light": "1.15"
      }
    },
    {
      "name": "--af-leading-snug",
      "family": "typography",
      "values": {
        "dark": "1.3",
        "light": "1.3"
      }
    },
    {
      "name": "--af-leading-normal",
      "family": "typography",
      "values": {
        "dark": "1.5",
        "light": "1.5"
      }
    },
    {
      "name": "--af-leading-relaxed",
      "family": "typography",
      "values": {
        "dark": "1.65",
        "light": "1.65"
      }
    },
    {
      "name": "--af-line-height-tight",
      "family": "color",
      "values": {
        "dark": "1.15",
        "light": "1.15"
      }
    },
    {
      "name": "--af-line-height-normal",
      "family": "color",
      "values": {
        "dark": "1.5",
        "light": "1.5"
      }
    },
    {
      "name": "--af-tracking-tight",
      "family": "typography",
      "values": {
        "dark": "-0.02em",
        "light": "-0.02em"
      }
    },
    {
      "name": "--af-tracking-normal",
      "family": "typography",
      "values": {
        "dark": "0",
        "light": "0"
      }
    },
    {
      "name": "--af-tracking-wide",
      "family": "typography",
      "values": {
        "dark": "0.02em",
        "light": "0.02em"
      }
    },
    {
      "name": "--af-tracking-wider",
      "family": "typography",
      "values": {
        "dark": "0.06em",
        "light": "0.06em"
      }
    },
    {
      "name": "--af-tracking-widest",
      "family": "typography",
      "values": {
        "dark": "0.1em",
        "light": "0.1em"
      }
    },
    {
      "name": "--af-ease-out",
      "family": "motion",
      "values": {
        "dark": "cubic-bezier(0.22, 1, 0.36, 1)",
        "light": "cubic-bezier(0.22, 1, 0.36, 1)"
      }
    },
    {
      "name": "--af-ease-in-out",
      "family": "motion",
      "values": {
        "dark": "cubic-bezier(0.45, 0, 0.55, 1)",
        "light": "cubic-bezier(0.45, 0, 0.55, 1)"
      }
    },
    {
      "name": "--af-ease-spring",
      "family": "motion",
      "values": {
        "dark": "cubic-bezier(0.34, 1.56, 0.64, 1)",
        "light": "cubic-bezier(0.34, 1.56, 0.64, 1)"
      }
    },
    {
      "name": "--af-duration-fast",
      "family": "motion",
      "values": {
        "dark": "120ms",
        "light": "120ms"
      }
    },
    {
      "name": "--af-duration-normal",
      "family": "motion",
      "values": {
        "dark": "200ms",
        "light": "200ms"
      }
    },
    {
      "name": "--af-duration-slow",
      "family": "motion",
      "values": {
        "dark": "350ms",
        "light": "350ms"
      }
    },
    {
      "name": "--af-duration-slower",
      "family": "motion",
      "values": {
        "dark": "500ms",
        "light": "500ms"
      }
    },
    {
      "name": "--af-motion-fast",
      "family": "motion",
      "values": {
        "dark": "120ms",
        "light": "120ms"
      }
    },
    {
      "name": "--af-motion-base",
      "family": "motion",
      "values": {
        "dark": "200ms",
        "light": "200ms"
      }
    },
    {
      "name": "--af-motion-slow",
      "family": "motion",
      "values": {
        "dark": "350ms",
        "light": "350ms"
      }
    },
    {
      "name": "--af-motion-ease",
      "family": "motion",
      "values": {
        "dark": "cubic-bezier(0.22, 1, 0.36, 1)",
        "light": "cubic-bezier(0.22, 1, 0.36, 1)"
      }
    },
    {
      "name": "--af-breakpoint-mobile",
      "family": "breakpoints",
      "values": {
        "dark": "767.98px",
        "light": "767.98px"
      }
    },
    {
      "name": "--af-breakpoint-tablet",
      "family": "breakpoints",
      "values": {
        "dark": "1023.98px",
        "light": "1023.98px"
      }
    },
    {
      "name": "--af-breakpoint-desktop",
      "family": "breakpoints",
      "values": {
        "dark": "1024px",
        "light": "1024px"
      }
    },
    {
      "name": "--af-button-height-sm",
      "family": "button",
      "values": {
        "dark": "32px",
        "light": "32px"
      }
    },
    {
      "name": "--af-button-height-md",
      "family": "button",
      "values": {
        "dark": "38px",
        "light": "38px"
      }
    },
    {
      "name": "--af-button-height-lg",
      "family": "button",
      "values": {
        "dark": "44px",
        "light": "44px"
      }
    },
    {
      "name": "--af-button-padding-x-sm",
      "family": "button",
      "values": {
        "dark": "12px",
        "light": "12px"
      }
    },
    {
      "name": "--af-button-padding-x-md",
      "family": "button",
      "values": {
        "dark": "16px",
        "light": "16px"
      }
    },
    {
      "name": "--af-button-padding-x-lg",
      "family": "button",
      "values": {
        "dark": "20px",
        "light": "20px"
      }
    },
    {
      "name": "--af-button-gap",
      "family": "button",
      "values": {
        "dark": "8px",
        "light": "8px"
      }
    }
  ],
  "guides": [
    {
      "id": "component-workflow",
      "title": "Crear, documentar y desplegar un componente",
      "uri": "argfit://guides/component-workflow",
      "storybookUrl": "/storybook/?path=/docs/getting-started-new-component-workflow--docs",
      "content": "import { Meta } from '@storybook/addon-docs/blocks';\n\n<Meta title=\"Getting Started/New Component Workflow\" />\n\n# Crear, documentar y desplegar un componente\n\nEsta es la guía oficial de ArgFit UI para personas y agentes de IA. **Storybook es la\núnica fuente de verdad para el contrato visual, los estados, la API y los ejemplos de\nuso de cada componente.** La aplicación Angular de documentación anterior queda como\ncontenido histórico y operativo; no recibe nuevas páginas de componentes.\n\n<div className=\"af-doc-callout\">\n  <strong>Regla de terminado</strong>\n\n  Un componente no está terminado cuando compila. Está terminado cuando su API adaptativa,\n  historias, documentación, accesibilidad y matriz desktop/mobile × dark/light son verificables\n  desde Storybook.\n</div>\n\n<div className=\"af-doc-tabs\">\n  <input className=\"af-doc-tabs__input\" type=\"radio\" name=\"component-workflow-tabs\" id=\"workflow-tab-overview\" value=\"overview\" aria-label=\"Principios\" defaultChecked />\n  <input className=\"af-doc-tabs__input\" type=\"radio\" name=\"component-workflow-tabs\" id=\"workflow-tab-create\" value=\"create\" aria-label=\"Crear\" />\n  <input className=\"af-doc-tabs__input\" type=\"radio\" name=\"component-workflow-tabs\" id=\"workflow-tab-document\" value=\"document\" aria-label=\"Documentar\" />\n  <input className=\"af-doc-tabs__input\" type=\"radio\" name=\"component-workflow-tabs\" id=\"workflow-tab-validate\" value=\"validate\" aria-label=\"Validar\" />\n  <input className=\"af-doc-tabs__input\" type=\"radio\" name=\"component-workflow-tabs\" id=\"workflow-tab-deploy\" value=\"deploy\" aria-label=\"Desplegar\" />\n  <input className=\"af-doc-tabs__input\" type=\"radio\" name=\"component-workflow-tabs\" id=\"workflow-tab-ai\" value=\"ai\" aria-label=\"Checklist IA\" />\n\n  <div className=\"af-doc-tabs__list\" aria-label=\"Proceso de desarrollo de componentes\">\n    <label className=\"af-doc-tabs__tab\" data-tab=\"overview\" htmlFor=\"workflow-tab-overview\">Principios</label>\n    <label className=\"af-doc-tabs__tab\" data-tab=\"create\" htmlFor=\"workflow-tab-create\">Crear</label>\n    <label className=\"af-doc-tabs__tab\" data-tab=\"document\" htmlFor=\"workflow-tab-document\">Documentar</label>\n    <label className=\"af-doc-tabs__tab\" data-tab=\"validate\" htmlFor=\"workflow-tab-validate\">Validar</label>\n    <label className=\"af-doc-tabs__tab\" data-tab=\"deploy\" htmlFor=\"workflow-tab-deploy\">Desplegar</label>\n    <label className=\"af-doc-tabs__tab\" data-tab=\"ai\" htmlFor=\"workflow-tab-ai\">Checklist IA</label>\n  </div>\n\n  <section className=\"af-doc-tabs__panel\" data-tab=\"overview\">\n\n## Principios y responsabilidades\n\nArgFit Football y las demás aplicaciones consumidoras deben componer interfaces con\n`@argfit-ui/adaptive`; no deben reconstruir controles, colores o layouts reutilizables con\nHTML y CSS propios. ArgFit UI resuelve presentación e interacción genérica. La aplicación\nconserva navegación, permisos, datos, OAuth, temporizadores y estados de negocio.\n\n<table className=\"af-doc-table\">\n  <thead><tr><th>Capa</th><th>Responsabilidad</th><th>No debe contener</th></tr></thead>\n  <tbody>\n    <tr><td><code>core</code></td><td>Tipos, tokens, tema y servicios compartidos.</td><td>PrimeNG, Ionic o renderers.</td></tr>\n    <tr><td><code>primitives</code></td><td>Piezas estructurales y accesibles sin vendor.</td><td>Componentes adaptativos o wrappers de vendor.</td></tr>\n    <tr><td><code>chart-runtime</code></td><td>Motor ECharts compartido y cargado bajo demanda por los renderers.</td><td>Componentes Angular públicos, PrimeNG, Ionic o lógica de producto.</td></tr>\n    <tr><td><code>desktop</code></td><td>Renderer productivo y denso; PrimeNG es interno.</td><td>API pública acoplada a PrimeNG.</td></tr>\n    <tr><td><code>mobile</code></td><td>Renderer táctil, safe areas e Ionic interno.</td><td>API pública acoplada a Ionic.</td></tr>\n    <tr><td><code>adaptive</code></td><td>Contrato público y selección de renderer.</td><td>Lógica de producto o duplicación visual.</td></tr>\n    <tr><td><code>Storybook</code></td><td>Contrato ejecutable, estados, API y guía de uso.</td><td>Demos ficticias sin valor documental.</td></tr>\n  </tbody>\n</table>\n\n### Antes de escribir código\n\n1. Busca si el concepto ya existe y puede extenderse sin romper su API.\n2. Define el concepto semántico: `AfDatePicker`, no `AfPrimeCalendar`.\n3. Escribe primero el contrato público: inputs, outputs, slots y estados.\n4. Decide qué pertenece a UI y qué debe permanecer en la aplicación consumidora.\n5. Diseña los cuatro resultados: desktop/dark, desktop/light, mobile/dark y mobile/light.\n\n  </section>\n\n  <section className=\"af-doc-tabs__panel\" data-tab=\"create\">\n\n## Crear el componente\n\n### Estructura esperada\n\n```text\nprojects/\n  argfit-ui-core/src/lib/types/<name>.types.ts\n  argfit-ui-desktop/src/lib/components/<name>/\n    af-<name>-desktop.component.{ts,html,scss,spec.ts}\n  argfit-ui-mobile/src/lib/components/<name>/\n    af-<name>-mobile.component.{ts,html,scss,spec.ts}\n  argfit-ui-adaptive/src/lib/components/<name>/\n    af-<name>.component.{ts,html,scss,spec.ts}\n    af-<name>.stories.ts\n    af-<name>.docs.mdx        # cuando necesita guía editorial propia\n```\n\nNo todos los componentes necesitan archivos HTML o SCSS separados, pero las responsabilidades\nde las capas no cambian.\n\n### Orden de implementación\n\n1. **Contrato:** añade tipos vendor-neutral en `core` y expórtalos desde su `public-api.ts`.\n2. **Renderers:** implementa desktop y mobile con la misma semántica, estados y accesibilidad.\n3. **Fachada adaptativa:** usa `AfPlatformService`, delega el render y reexpone una sola API.\n4. **Exports:** exporta renderers en sus paquetes y el componente público en `adaptive/public-api.ts`.\n5. **Pruebas unitarias:** cubre inputs, outputs, slots, teclado, ARIA y cambio de plataforma.\n6. **Tokens:** usa `--af-*`; ningún color, radio o espaciado de producto debe quedar hardcoded.\n\n### Esqueleto de la fachada adaptativa\n\n```ts\n@Component({\n  selector: 'af-example',\n  imports: [AfExampleDesktopComponent, AfExampleMobileComponent],\n  templateUrl: './af-example.component.html',\n  styleUrl: './af-example.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AfExampleComponent {\n  private readonly platform = inject(AfPlatformService);\n\n  readonly value = input<string | null>(null);\n  readonly disabled = input(false, { transform: booleanAttribute });\n  readonly valueChange = output<string | null>();\n  protected readonly isMobile = this.platform.isMobile;\n}\n```\n\nLa fachada transforma sólo lo necesario para mantener un contrato estable. No consulta APIs,\nno navega y no conoce reglas de ArgFit Football.\n\n  </section>\n\n  <section className=\"af-doc-tabs__panel\" data-tab=\"document\">\n\n## Documentar en Storybook\n\nLa historia vive junto al componente adaptativo. Todo nuevo componente debe tener una página\nDocs: usa `tags: ['autodocs']` para el caso simple o un archivo `.docs.mdx` para componentes\ncon decisiones de uso, composición, theming o ejemplos extensos.\n\n### Historia mínima aceptable\n\n```ts\nimport type { Meta, StoryObj } from '@storybook/angular-vite';\nimport { expect, fn, userEvent } from 'storybook/test';\nimport { AfExampleComponent } from './af-example.component';\n\nconst meta: Meta<AfExampleComponent> = {\n  title: 'Components/Forms/Example',\n  component: AfExampleComponent,\n  tags: ['autodocs'],\n  parameters: {\n    argfit: {\n      category: 'Forms',\n      importName: 'AfExample',\n      useWhen: ['Describe the user intent this component solves.'],\n      avoidWhen: ['Describe the closest misuse or product responsibility.'],\n      platforms: ['desktop', 'mobile'],\n      tokens: ['--af-input-bg', '--af-border-focus'],\n      related: ['AfInput'],\n    },\n    docs: { description: { component: 'Qué resuelve y cuándo usarlo.' } },\n  },\n  argTypes: {\n    disabled: { control: 'boolean' },\n    size: { control: 'select', options: ['sm', 'md', 'lg'] },\n  },\n};\n\nexport default meta;\ntype Story = StoryObj<AfExampleComponent>;\n\nexport const Default: Story = {\n  args: { disabled: false, valueChange: fn() },\n  play: async ({ args, canvas }) => {\n    await userEvent.click(canvas.getByRole('button'));\n    await expect(args.valueChange).toHaveBeenCalledOnce();\n  },\n};\n```\n\n### Contenido obligatorio\n\n<div className=\"af-doc-checklist\">\n  <div><strong>Canónica</strong>Una historia `Default` o equivalente que explique el uso normal.</div>\n  <div><strong>Estados</strong>Loading, empty, error, disabled, readonly y variantes relevantes.</div>\n  <div><strong>Controles</strong><code>argTypes</code> tipados para la API que una persona debe explorar.</div>\n  <div><strong>Interacción</strong><code>play</code> para teclado, selección, eventos y flujos importantes.</div>\n  <div><strong>API</strong>Descripción, imports públicos y límites de responsabilidad.</div>\n  <div><strong>Theming</strong>Tokens públicos relevantes; nunca una lista de colores privados.</div>\n  <div><strong>MCP</strong><code>parameters.argfit</code> completo para búsqueda, recomendaciones y ejemplos verificables.</div>\n</div>\n\nUsa las categorías `Components`, `Data`, `Feedback`, `Patterns` o `Experimental`. Un componente\nestable no debe permanecer en `Experimental`. Para documentación editorial con tabs, toma\n`af-date-picker.docs.mdx` como referencia.\n\n  </section>\n\n  <section className=\"af-doc-tabs__panel\" data-tab=\"validate\">\n\n## Probar y validar\n\nDurante el desarrollo ejecuta Storybook directamente desde source; no hace falta precompilar\nlas librerías:\n\n```bash\npnpm storybook\n```\n\nAntes de abrir o actualizar un PR:\n\n```bash\npnpm guard:architecture\npnpm guard:storybook\npnpm build-storybook\npnpm test-storybook\npnpm test-storybook:a11y\npnpm test-storybook:visual\npnpm guard:mcp-catalog\npnpm mcp:test\n```\n\n`guard:storybook` impide introducir un componente adaptativo sin historia y también rechaza\nhistorias sin `autodocs` ni MDX. Las excepciones históricas viven en una allowlist explícita;\nno se añaden componentes nuevos a esa lista.\n\n`guard:mcp-catalog` comprueba que el catálogo derivado coincide con Storybook, Compodoc,\nexports y tokens. No edites `tools/mcp/argfit-catalog.json` manualmente: actualiza la historia\no el contrato público y ejecuta `pnpm generate:mcp-catalog`.\n\n### Matriz de aceptación\n\n<table className=\"af-doc-table\">\n  <thead><tr><th>Matriz</th><th>Qué revisar</th></tr></thead>\n  <tbody>\n    <tr><td>Desktop / Dark</td><td>Densidad, teclado, overlays, contraste y foco.</td></tr>\n    <tr><td>Desktop / Light</td><td>Tokens, bordes, elevación y ausencia de colores hardcoded.</td></tr>\n    <tr><td>Mobile / Dark</td><td>Touch targets, scroll, safe areas y renderer correcto.</td></tr>\n    <tr><td>Mobile / Light</td><td>Legibilidad, estados nativos y layout estrecho.</td></tr>\n  </tbody>\n</table>\n\nEl trabajo falla si hay canvas vacío, error de consola, request fallido, token requerido ausente,\nviolación axe seria/crítica o diferencia visual no revisada.\n\n  </section>\n\n  <section className=\"af-doc-tabs__panel\" data-tab=\"deploy\">\n\n## Desplegar cambios\n\n### Preview de documentación\n\n1. Sube una rama y abre un PR.\n2. El job **Storybook quality gate** ejecuta coverage, build, smoke, axe y capturas de la matriz.\n3. Revisa el artifact `storybook` de GitHub Actions cuando haya una diferencia visual.\n4. Vercel usa `pnpm build:portal`; el catálogo estático se publica bajo `/storybook/` y la\n   integración de Vercel genera la preview del PR.\n5. Prueba navegación directa a una página Docs y a una Story antes de aprobar.\n\n```bash\npnpm build:portal\n```\n\nLa documentación de componentes se edita sólo en Storybook aunque el portal Angular histórico\nsiga disponible en `/`. No copies el mismo contenido a ambos sitios.\n\n### Publicación de paquetes npm\n\nPublicar Storybook y publicar `@argfit-ui/*` son procesos distintos. Un cambio de componente\npuede desplegar su preview sin publicar una versión npm. Para una release estable, actualiza\nversiones y changelog, ejecuta el gate completo y usa el workflow protegido:\n\n```bash\npnpm release:production:check\n```\n\nDespués se crea el tag estable correspondiente y `.github/workflows/publish-production.yml`\npublica los cinco paquetes con `latest`. No ejecutes `npm publish` manualmente desde una rama.\n\n  </section>\n\n  <section className=\"af-doc-tabs__panel\" data-tab=\"ai\">\n\n## Protocolo para agentes de IA\n\nUn agente debe seguir este orden y reportar evidencia concreta:\n\n1. Leer esta guía, `docs/architecture.md` y los archivos del componente más cercano por función.\n2. Inspeccionar cambios sin confirmar y preservar trabajo ajeno.\n3. Diseñar la API pública antes de elegir PrimeNG, Ionic o markup interno.\n4. Implementar las capas mínimas necesarias sin mover lógica de negocio a la librería.\n5. Añadir exports, specs, historia, Docs y estados en el mismo cambio.\n6. Verificar visualmente la misma instancia de Storybook en las cuatro matrices.\n7. Ejecutar guards y pruebas proporcionales; no declarar éxito sólo porque TypeScript compila.\n8. Consultar `get_component` y ejecutar `validate_usage` mediante el MCP cuando esté disponible.\n9. Entregar archivos cambiados, comandos ejecutados y cualquier deuda restante.\n\n### Prohibido\n\n- Crear un componente público sin historia o sin Docs.\n- Crear una historia sin el bloque tipado <code>parameters.argfit</code>.\n- Añadir la nueva carpeta a la allowlist de Storybook.\n- Documentar el componente en `projects/argfit-ui-docs`.\n- Exponer tipos de PrimeNG/Ionic en la API adaptativa.\n- Introducir colores, spacing o tipografía de producto fuera de los tokens `--af-*`.\n- Incorporar OAuth, routing, permisos, fetching o máquinas de estado de una aplicación.\n- Abrir otro servidor de Storybook si el puerto `6006` ya está en uso.\n\n### Definición de terminado\n\n<div className=\"af-doc-checklist\">\n  <div><strong>01 · API</strong>Vendor-neutral, estable y exportada.</div>\n  <div><strong>02 · Renderers</strong>Desktop y mobile correctos, o decisión explícita de renderer compartido.</div>\n  <div><strong>03 · Unit tests</strong>Contrato, accesibilidad, eventos y proyección cubiertos.</div>\n  <div><strong>04 · Stories</strong>Historia canónica, estados y controles tipados.</div>\n  <div><strong>05 · Docs</strong><code>autodocs</code> o MDX con import, uso, API y theming.</div>\n  <div><strong>06 · Matriz</strong>Desktop/mobile × dark/light revisado.</div>\n  <div><strong>07 · Gates</strong>Guard, build, smoke, axe y visual sin fallos.</div>\n  <div><strong>08 · Preview</strong>Navegación directa bajo <code>/storybook/</code>.</div>\n</div>\n\n  </section>\n</div>\n"
    }
  ]
}
