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.
- package/dist/components/TimelineContainer/components/MasterDetailLayout.d.ts +32 -0
- package/dist/components/TimelineContainer/components/TimelineContainer.d.ts +4 -1
- package/dist/eidotter.css +1 -1
- package/dist/index.es.js +1053 -942
- package/dist/index.umd.js +3 -3
- package/package.json +2 -1
- package/src/styles/shadcn.css +35 -0
- package/src/styles/theme.amber-mono.css +1 -0
- package/src/styles/theme.light.css +88 -0
|
@@ -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.
|