Saltar al contenido
Índice de Kit UI
Kit UI Componentes

Agenda.

Patrón canónico de agenda para periodismo2, comentario, editorial sebastián y lepp.

Verlo por niveles

Primero el componente, después la variación de marca y finalmente su uso dentro de una página.

Nivel 1Componente canónico

Agenda de hoy

  1. Sesión del Concejo Municipal Ver fuente
  2. Conversatorio sobre ciudad Detalles
Nivel 2Editorial Sebastián · variación

Agenda de mañana

  1. Consulta ciudadana sobre ciclovías Ver bases
  2. Cuenta pública del Gobierno Regional
  3. Lanzamiento editorial Detalles
Nivel 3Dentro de una página
Sitio · sección

Agenda de hoy

  1. Sesión del Concejo Municipal Ver fuente
  2. Conversatorio sobre ciudad Detalles
Ver y copiar el código de este render
HTML del nivel canónico
<section class="ui-sample ui-content" data-agenda="true"><h3>Agenda de hoy</h3><ol><li><time dateTime="2026-08-25T10:00:00-04:00">10:00</time> <span>Sesión del Concejo Municipal</span> <a href="#evento">Ver fuente</a></li><li><time dateTime="2026-08-25T18:30:00-04:00">18:30</time> <span>Conversatorio sobre ciudad</span> <a href="#evento-2">Detalles</a></li></ol></section>

Variaciones por marca y sitio

Cada cambio visible declara su autoridad; lo que permanece canónico no se vuelve a inventar en el producto.

comentario.cl

Comentario

Autoridad: CANON.md + decisión editorial de producto

Agenda de hoy

  1. Sesión del Concejo Municipal Ver fuente
  2. Conversatorio sobre ciudad Detalles

Cambia en esta marca

  • Namebrand comentario.cl en celeste
  • Mayor ancho de prosa e imágenes editoriales

Permanece canónico

  • Chrome, foco y controles canónicos
  • Autoría, fecha, fuente y jerarquía semántica
circulodesantiago.cl

Editorial Sebastián

Autoridad: Feedback de revisión r14 + capa CDS

Agenda de mañana

  1. Consulta ciudadana sobre ciclovías Ver bases
  2. Cuenta pública del Gobierno Regional
  3. Lanzamiento editorial Detalles

Cambia en esta marca

  • Editorial Sebastián en rojo, con E y S mayúsculas
  • Atribución societaria a Círculo de Santiago

Permanece canónico

  • Caja normal y espaciado legible
  • Anatomía editorial y accesibilidad canónicas

Comparación histórica recuperable

Compara la propuesta con cortes reales del repositorio. La ausencia de una muestra se declara y nunca se reconstruye de memoria.

Estado actual
Agenda tiene 1 implementaciones observadas en 1 repositorios: cds/cis/periodismo2-frontend.
Cambio propuesto
Publicar en r19 el contrato de Agenda para Patrón canónico de agenda para periodismo2, comentario, editorial sebastián y lepp.
Qué ocurre si respondes No
No se adopta el contrato r19 de Agenda; las 1 implementaciones observadas permanecen sin migración.

Preparando comparación histórica…

Antes / r19

La comparación convierte una regla abstracta en una diferencia visible y verificable.

r19 · correctoContrato canónico renderizado

Agenda de hoy

  1. Sesión del Concejo Municipal Ver fuente
  2. Conversatorio sobre ciudad Detalles
  • Prioriza título, evidencia, autoría y una prosa legible.
  • Usa el namebrand y el color editorial propios sin alterar el canon.
Antes · problema observadoAnti-ejemplo no interactivo
NUEVO · DESTACADO · LECTURAUn título subordinado a etiquetasLa prosa completa usa una voz técnica.
  • No llenes la página de epígrafes o etiquetas redundantes.
  • No uses JetBrains Mono como voz editorial ni prosa principal.

Responsive

La misma anatomía debe conservar lectura, foco y acciones sin cortar contenido ni crear scroll horizontal en la página.

320 pxMóvil y zoom

Agenda de hoy

  1. Sesión del Concejo Municipal Ver fuente
  2. Conversatorio sobre ciudad Detalles
1280 pxEscritorio

Agenda de mañana

  1. Consulta ciudadana sobre ciclovías Ver bases
  2. Cuenta pública del Gobierno Regional
  3. Lanzamiento editorial Detalles

Cobertura

DimensiónContrato
Propietario canónicoSistema de diseño CIS y equipo editorial · core/core-style
ConsumidoresPeriodismo2, Comentario, Editorial Sebastián y LEPP
Dependenciasprosa canónica, metadatos editoriales
Estadocandidato

Evidencia de adopción

Patrón observado. 1 implementaciones observadas en 1 repositorios.

La observación demuestra uso existente; la aceptación canónica sigue dependiendo de esta ficha y de su propietario.

DatoResultado
ClasificaciónPatrón observado
Implementaciones1 implementaciones observadas
Repositorioscds/cis/periodismo2-frontend
Snapshotkit/componentes/componentes-observados.json

Consumidores observados

El inventario conserva repositorio, archivo fuente y criterio de asociación. Observar una implementación no la convierte automáticamente en canónica.

Estados

Estado requerido
base
destacado
archivo
contenido largo

Accesibilidad

  • Conserva nombre accesible, orden de lectura y foco visible.
  • Funciona a 320 px, con zoom de 200% y texto largo.
  • El color nunca es la única señal de estado o acción.
  • El contenido esencial permanece disponible sin JavaScript.

Código HTML

Copia el bloque completo; después cambia contenido y destinos, no su anatomía.

Código de referencia
<section class="ui-sample ui-content" data-agenda="true"><h3>Agenda de hoy</h3><ol><li><time dateTime="2026-08-25T10:00:00-04:00">10:00</time> <span>Sesión del Concejo Municipal</span> <a href="#evento">Ver fuente</a></li><li><time dateTime="2026-08-25T18:30:00-04:00">18:30</time> <span>Conversatorio sobre ciudad</span> <a href="#evento-2">Detalles</a></li></ol></section>

Código TAILWIND

Copia el bloque completo; después cambia contenido y destinos, no su anatomía.

Código de referencia
<section class="ui-sample ui-content border border-slate-300 bg-white p-4 text-slate-950 grid gap-3" data-agenda="true"><h3>Agenda de hoy</h3><ol class="grid gap-2"><li><time dateTime="2026-08-25T10:00:00-04:00">10:00</time> <span>Sesión del Concejo Municipal</span> <a class="underline underline-offset-4" href="#evento">Ver fuente</a></li><li><time dateTime="2026-08-25T18:30:00-04:00">18:30</time> <span>Conversatorio sobre ciudad</span> <a class="underline underline-offset-4" href="#evento-2">Detalles</a></li></ol></section>

Código REACT

Copia el bloque completo; después cambia contenido y destinos, no su anatomía.

Código de referencia
export interface AgendaItem {
  /** Hora visible del evento (`10:00`). */
  time: string;
  /** Fecha y hora completas en ISO 8601 para el atributo `datetime` de `<time>`. */
  dateTime?: string;
  /** Nombre del evento. */
  title: string;
  /** Enlace a la fuente o al detalle del evento; vacío oculta el enlace. */
  href?: string;
  /** Texto del enlace de este evento (`Ver fuente`); si falta, se usa el `linkLabel` de la agenda. */
  linkLabel?: string;
}

export interface AgendaProps {
  /** Título de la agenda. */
  title?: string;
  /** Eventos en orden cronológico. */
  items?: AgendaItem[];
  /** Texto del enlace para los eventos que no traen `linkLabel` propio. */
  linkLabel?: string;
  className?: string;
}

const AGENDA_ITEMS: AgendaItem[] = [
  { time: "10:00", dateTime: "2026-08-25T10:00:00-04:00", title: "Sesión del Concejo Municipal", href: "#evento", linkLabel: "Ver fuente" },
  { time: "18:30", dateTime: "2026-08-25T18:30:00-04:00", title: "Conversatorio sobre ciudad", href: "#evento-2", linkLabel: "Detalles" },
];

/**
 * Agenda del día: lista ordenada de eventos con hora, nombre y enlace a la fuente o al detalle, para secciones de ciudad o coberturas.
 *
 * Cada enlace usa el `linkLabel` del evento o, si falta, el de la agenda.
 *
 * @example <Agenda title="Agenda de mañana" items={[{ time: "10:00", dateTime: "2026-08-26T10:00:00-04:00", title: "Sesión del Concejo Municipal", href: "/concejo", linkLabel: "Ver fuente" }]} />
 */
export function Agenda({ title = "Agenda de hoy", items = AGENDA_ITEMS, linkLabel = "Detalles", className }: AgendaProps) {
  if (!items.length) return null;
  return (
    <section className={["ui-content", className].filter(Boolean).join(" ")} data-agenda>
      {title ? <h3>{title}</h3> : null}
      <ol>
        {items.map((item, i) => {
          const enlace = item.linkLabel || linkLabel;
          return (
            <li key={`${item.title}-${i}`}>
              <time dateTime={item.dateTime}>{item.time}</time>{" "}
              <span>{item.title}</span>
              {item.href && enlace ? <>{" "}<a href={item.href}>{enlace}</a></> : null}
            </li>
          );
        })}
      </ol>
    </section>
  );
}