eidotter 0.33.0 → 0.35.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,26 @@
1
+ import React from 'react';
2
+ export interface EmptyStateProps {
3
+ /** Primary message (e.g. "No documents yet"). */
4
+ title: string;
5
+ /** Optional supporting line below the title. */
6
+ description?: React.ReactNode;
7
+ /**
8
+ * Tone-driven colour for the title. Routes through semantic roles so it
9
+ * re-themes: amber-family under amber-mono, honest under colour themes.
10
+ * @default 'default'
11
+ */
12
+ tone?: 'default' | 'error' | 'warning' | 'info';
13
+ /** Optional action slot (e.g. a Button), rendered below the description. */
14
+ action?: React.ReactNode;
15
+ /** Additional CSS class name. */
16
+ className?: string;
17
+ }
18
+ /**
19
+ * DOS-styled empty / zero-state — a centred title, optional description, and an
20
+ * optional action slot. Pure presentational.
21
+ *
22
+ * Ported from Steuerdash (DMNC-859); tones and the description route through
23
+ * `text-dos-*` semantic roles (not raw `cga-*`) so it re-themes and the
24
+ * description stays AA-safe (`text-muted` → lightGray under amber-mono).
25
+ */
26
+ export declare const EmptyState: React.FC<EmptyStateProps>;
@@ -0,0 +1,2 @@
1
+ export { EmptyState } from './EmptyState';
2
+ export type { EmptyStateProps } from './EmptyState';
@@ -0,0 +1,2 @@
1
+ export { EmptyState } from './components';
2
+ export type { EmptyStateProps } from './components';
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ export interface SectionHeadingProps {
3
+ /** Heading text. */
4
+ title: string;
5
+ /** Optional trailing count, rendered as " (count)". */
6
+ count?: string | number;
7
+ /**
8
+ * Tone-driven colour. Routes through semantic roles so it re-themes:
9
+ * amber-family under amber-mono, honest under colour themes.
10
+ * @default 'default'
11
+ */
12
+ tone?: 'default' | 'error' | 'warning' | 'info';
13
+ /** Additional content rendered after the title/count (e.g. an action). */
14
+ children?: React.ReactNode;
15
+ /** Additional CSS class name. */
16
+ className?: string;
17
+ }
18
+ /**
19
+ * DOS-styled section heading — an uppercase `<h3>` label with an optional
20
+ * trailing `(count)` and tone-driven colour. Pure presentational.
21
+ *
22
+ * Ported from Steuerdash (DMNC-855); the steuerdash version hardcoded
23
+ * `text-cga-*` — this routes tones through `text-dos-*` semantic roles instead
24
+ * so the heading re-themes and stays AA-safe under amber-mono.
25
+ */
26
+ export declare const SectionHeading: React.FC<SectionHeadingProps>;
@@ -0,0 +1,2 @@
1
+ export { SectionHeading } from './SectionHeading';
2
+ export type { SectionHeadingProps } from './SectionHeading';
@@ -0,0 +1,2 @@
1
+ export { SectionHeading } from './components';
2
+ export type { SectionHeadingProps } from './components';
@@ -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.