eidotter 0.32.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import type { TimelineEntryData, TimelineRenderEntry } from './types';
3
+ import '../../../styles/keyframes.css';
4
+ import './MasterDetailLayout.css';
5
+ export interface MasterDetailLayoutProps {
6
+ /** Pre-sorted entries (the orchestrator sorts; the rail renders in order). */
7
+ entries: TimelineEntryData[];
8
+ /** The entry currently filling the detail pane, or null for none. */
9
+ selectedEntryId: string | null;
10
+ /** Open an entry in the detail pane (set semantics). */
11
+ onSelect: (id: string) => void;
12
+ /** Return to the rail (close the detail pane). */
13
+ onDeselect: () => void;
14
+ /** Optional pluggable entry renderer, used for the detail body. */
15
+ renderEntry?: TimelineRenderEntry;
16
+ /** Date formatter shared with the orchestrator. */
17
+ formatDate: (iso: string) => string;
18
+ }
19
+ /**
20
+ * Level-3 "master-detail" timeline layout (DMNC-878).
21
+ *
22
+ * A split view: a navigable timeline rail (left) plus a detail pane (right)
23
+ * that renders the selected entry in full. Switching entries swaps the detail
24
+ * pane without remounting the rail, so rail scroll position is preserved.
25
+ *
26
+ * Selection is owned by the orchestrator (controlled/uncontrolled via
27
+ * `useSelection`), so the open entry is deep-linkable by consumers. The rail
28
+ * uses navigation semantics (`aria-current`), arrow keys walk entries, and
29
+ * focus moves into the pane on open and back to the rail on close — without a
30
+ * focus trap, so both panes stay reachable.
31
+ */
32
+ export declare const MasterDetailLayout: React.FC<MasterDetailLayoutProps>;
@@ -12,9 +12,12 @@ export interface TimelineContainerProps extends React.HTMLAttributes<HTMLDivElem
12
12
  * - "feed": paginated vertical list with collapsed-by-default entries that
13
13
  * expand on selection. Renders a DOS-style "LOAD MORE..." button while
14
14
  * more entries are available. No zoom controls.
15
+ * - "master-detail": level-3 split view — a navigable timeline rail plus a
16
+ * detail pane that renders the selected entry in full (DMNC-878). The open
17
+ * entry is the `selectedEntryId`, so it is deep-linkable. No zoom controls.
15
18
  * @default 'interactive'
16
19
  */
17
- mode?: 'interactive' | 'static' | 'feed';
20
+ mode?: 'interactive' | 'static' | 'feed' | 'master-detail';
18
21
  /**
19
22
  * Controlled zoom level — overrides internal state when provided.
20
23
  * Use with `onZoomChange` for full control. Disables drill-down navigation.