import * as react_jsx_runtime from 'react/jsx-runtime'; import { C as ChangelogEntry$1 } from '../announcement-CWko-5bT.cjs'; export { e as SerializeFeedOptions, s as serializeFeed } from '../announcement-CWko-5bT.cjs'; import * as React from 'react'; import '@tour-kit/core'; import '@tour-kit/media'; import '../types-MpBl5-ej.cjs'; import '@tour-kit/core/engine'; import '@tour-kit/scheduling/engine'; type Reaction = '👍' | '😐' | '👎'; interface ReactionsProps { /** Stable id of the entry these reactions belong to. Forwarded as the first arg of `onReact`. */ entryId: string; /** Fire-and-forget callback. The component holds no reaction state. */ onReact?: (id: string, emoji: Reaction) => void; className?: string; } /** * Three-button reaction row (👍 😐 👎). Stateless: clicks bubble up via * `onReact`. Aria-labels resolve through `useT()` with English fallbacks * when no `LocaleProvider` (or matching message) is present. */ declare function Reactions({ entryId, onReact, className }: ReactionsProps): react_jsx_runtime.JSX.Element; interface ChangelogPageProps { entries: ChangelogEntry$1[]; /** Controlled selected category. `null` = "All". Omit to use uncontrolled internal state. */ category?: string | null; /** Required to switch the component into controlled mode. */ onCategoryChange?: (next: string | null) => void; /** Forwarded to every entry's `` row. Fire-and-forget. */ onReact?: (id: string, emoji: Reaction) => void; className?: string; } /** * Drop-in changelog page: category-filter sidebar + entry list. Router-agnostic * — consumers wire `category`/`onCategoryChange` for URL-sync. Without those * props, the component manages an internal `useState` (uncontrolled). */ declare function ChangelogPage({ entries, category: controlledCategory, onCategoryChange, onReact, className, }: ChangelogPageProps): react_jsx_runtime.JSX.Element; interface ChangelogEntryProps { /** A serialized changelog entry. Inherits `AnnouncementConfig` so the same payload can drive a feed and an in-app modal. */ entry: ChangelogEntry$1; /** Forwarded to the inner `` row. Fire-and-forget. */ onReact?: (id: string, emoji: Reaction) => void; className?: string; } /** * Single-entry renderer. Title and description resolve through * `useResolvedText` so consumers may pass plain strings, i18n keys, or rich * `ReactNode` bodies. Date formatting is locale-aware via * `Intl.DateTimeFormat`. The card is animated via the `motion-safe:` * Tailwind utilities — CSS gates the motion under * `prefers-reduced-motion: reduce`. */ declare const ChangelogEntry: React.ForwardRefExoticComponent>; interface ChangelogFilterProps { /** Distinct categories derived from the entry list (no "All" sentinel — the filter prepends it). */ categories: string[]; /** Currently selected category. `null` = "All". */ selected: string | null; /** Fires with the next category (or `null` for "All") on click / Enter / Space. */ onSelect: (next: string | null) => void; className?: string; } /** * Pure presentational sidebar. Renders an "All" reset followed by one button * per category. Implements roving tabindex so screen-reader users can cycle * options with `ArrowUp` / `ArrowDown` (wrapping at both ends). */ declare function ChangelogFilter({ categories, selected, onSelect, className, }: ChangelogFilterProps): react_jsx_runtime.JSX.Element; export { ChangelogEntry, type ChangelogEntryProps, ChangelogEntry$1 as ChangelogEntryType, ChangelogFilter, type ChangelogFilterProps, ChangelogPage, type ChangelogPageProps, type Reaction, Reactions, type ReactionsProps };