eidotter 0.15.0 → 0.16.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.
Files changed (36) hide show
  1. package/README.md +10 -5
  2. package/dist/components/Accordion/components/AccordionFill.d.ts +1 -0
  3. package/dist/components/Accordion/components/Section.d.ts +10 -18
  4. package/dist/components/Alert/components/Alert.d.ts +13 -23
  5. package/dist/components/Badge/components/Badge.d.ts +10 -28
  6. package/dist/components/Breadcrumb/components/Breadcrumb.d.ts +13 -35
  7. package/dist/components/Button/components/Button.d.ts +3 -43
  8. package/dist/components/Checkbox/components/Checkbox.d.ts +17 -27
  9. package/dist/components/FilterBar/components/FilterBar.d.ts +3 -13
  10. package/dist/components/Footer/components/Footer.d.ts +1 -5
  11. package/dist/components/Input/components/Input.d.ts +4 -13
  12. package/dist/components/Progress/components/Progress.d.ts +18 -41
  13. package/dist/components/Separator/components/Separator.d.ts +4 -13
  14. package/dist/components/Stat/components/Stat.d.ts +10 -30
  15. package/dist/components/Switch/components/Switch.d.ts +16 -36
  16. package/dist/components/Tabs/components/Tabs.d.ts +14 -45
  17. package/dist/components/Tag/components/Tag.d.ts +8 -18
  18. package/dist/components/TimelineContainer/components/TimelineContainer.d.ts +4 -3
  19. package/dist/components/TimelineContainer/components/TimelineEntryCard.d.ts +9 -5
  20. package/dist/components/TimelineContainer/components/ZoomControls.d.ts +3 -0
  21. package/dist/components/TimelineContainer/components/index.d.ts +1 -0
  22. package/dist/components/TimelineContainer/components/timelineUtils.d.ts +11 -0
  23. package/dist/components/TimelineContainer/components/useDrillDown.d.ts +42 -0
  24. package/dist/components/TimelineContainer/components/useDrillDown.test.d.ts +1 -0
  25. package/dist/eidotter.css +1 -1
  26. package/dist/index.d.ts +0 -4
  27. package/dist/index.es.js +7009 -1689
  28. package/dist/index.umd.js +7 -10
  29. package/package.json +11 -1
  30. package/tailwind.preset.enhanced.cjs +44 -0
  31. package/dist/components/TimelineEntry/components/TimelineEntry.d.ts +0 -21
  32. package/dist/components/TimelineEntry/components/index.d.ts +0 -2
  33. package/dist/components/TimelineEntry/index.d.ts +0 -2
  34. package/dist/components/TimelineList/components/TimelineList.d.ts +0 -18
  35. package/dist/components/TimelineList/components/index.d.ts +0 -2
  36. package/dist/components/TimelineList/index.d.ts +0 -2
package/README.md CHANGED
@@ -30,7 +30,7 @@ function App() {
30
30
  }
31
31
  ```
32
32
 
33
- ## Available Components (v0.13.0)
33
+ ## Available Components (v0.15.0)
34
34
 
35
35
  | Component | Description |
36
36
  |-----------|-------------|
@@ -40,9 +40,14 @@ function App() {
40
40
  | Breadcrumb | Navigation path display |
41
41
  | Button | DOS-style buttons with variants (primary, secondary, ghost, link) |
42
42
  | Card | Content container with default, elevated, bordered, glow, interactive, minimal, callout variants |
43
+ | ChatMessage | Single chat message with role-based DOS styling and streaming cursor |
44
+ | ChatHistory | Scrollable message list with auto-scroll and `role="log"` |
45
+ | ChatInput | Multiline textarea with Enter-to-send, Shift+Enter for newlines |
46
+ | ChatContainer | Composes ChatHistory + ChatInput — place inside Terminal for DOS chat |
43
47
  | Checkbox | DOS-style checkbox with [X] indicator |
44
48
  | CommandPrompt | Interactive command-line input with blinking cursor |
45
49
  | FilterBar | Multi-select toggle group for faceted filtering |
50
+ | Footer | Site footer with default legal links (Impressum + Datenschutz) |
46
51
  | Icon | SVG icon system with DOS styling |
47
52
  | InlineExpand | Inline disclosure widget for expanding text within prose |
48
53
  | Input | Text input with DOS styling and error variant |
@@ -55,11 +60,11 @@ function App() {
55
60
  | Switch | Toggle switch for on/off states |
56
61
  | Tabs | Tabbed interface navigation |
57
62
  | Tag | Interactive labels for tags, categories, and filter chips |
58
- | Terminal | DOS window with title bar, controls, and content area |
63
+ | Terminal | DOS window with title bar and content area (controls hidden by default) |
59
64
  | TextScramble | DOS text decode/scramble animation effect |
60
- | TimelineContainer | Multi-zoom timeline with year/month/day/hour views |
61
- | TimelineEntry | Individual timeline entry with icon, date, and content |
62
- | TimelineList | Vertical list of timeline entries |
65
+ | TimelineContainer | Multi-zoom timeline with year/month/day/hour views + `mode="static"` |
66
+ | TimelineEntry | Individual timeline entry with icon, date, and expandable content |
67
+ | TimelineList | *(Deprecated)* Use `<TimelineContainer mode="static">` instead |
63
68
  | TimelineNode | Timeline/stepper axis markers with shapes and glow |
64
69
 
65
70
  ## Component Examples
@@ -6,5 +6,6 @@ export interface AccordionFillProps {
6
6
  content: string;
7
7
  }>;
8
8
  defaultExpandedIndex?: number;
9
+ className?: string;
9
10
  }
10
11
  export declare const AccordionFill: React.FC<AccordionFillProps>;
@@ -1,29 +1,21 @@
1
1
  import React from 'react';
2
2
  import './Section.css';
3
3
  export interface SectionProps {
4
- /**
5
- * The title text of the section
6
- */
4
+ /** The title text of the section */
7
5
  title: string;
8
- /**
9
- * The content of the section
10
- */
6
+ /** The content of the section */
11
7
  children: React.ReactNode;
12
- /**
13
- * Whether the section is expanded by default
14
- */
8
+ /** Whether the section is expanded by default */
15
9
  defaultExpanded?: boolean;
16
- /**
17
- * Whether the section is in a hover state
18
- */
10
+ /** Whether the section is in a hover state */
19
11
  isHovered?: boolean;
20
- /**
21
- * Whether the section is in an active state
22
- */
12
+ /** Whether the section is in an active state */
23
13
  isActive?: boolean;
24
- /**
25
- * Optional callback when the section is toggled
26
- */
14
+ /** Optional callback when the section is toggled */
27
15
  onToggle?: (isExpanded: boolean) => void;
28
16
  }
17
+ /**
18
+ * DOS-styled collapsible section (accordion item).
19
+ * Pure presentational — uses CSS transitions for expand/collapse.
20
+ */
29
21
  export declare const Section: React.FC<SectionProps>;
@@ -1,33 +1,23 @@
1
1
  import React from 'react';
2
2
  import './Alert.css';
3
3
  export interface AlertProps {
4
- /**
5
- * The size variant of the alert
6
- */
7
- size?: 'small' | 'large';
8
- /**
9
- * The type of alert which determines its color and icon
10
- */
11
- type?: 'info' | 'success' | 'warning' | 'error';
12
- /**
13
- * The title text of the alert
14
- */
4
+ /** The size variant */
5
+ size?: 'sm' | 'lg' | 'small' | 'large' | 'floating' | 'full-width';
6
+ /** The type determines color and icon */
7
+ type?: 'info' | 'success' | 'warning' | 'error' | 'default' | 'brand';
8
+ /** Title text */
15
9
  title?: string;
16
- /**
17
- * The description text of the alert
18
- */
10
+ /** Description content */
19
11
  children?: React.ReactNode;
20
- /**
21
- * Optional click handler for the close button
22
- */
12
+ /** Close handler (shows close button when provided) */
23
13
  onClose?: () => void;
24
- /**
25
- * Optional click handler for the "Click here" link
26
- */
14
+ /** "Click here" link handler */
27
15
  onClickHere?: () => void;
28
- /**
29
- * Optional CSS class name
30
- */
16
+ /** Optional CSS class name */
31
17
  className?: string;
32
18
  }
19
+ /**
20
+ * DOS-styled Alert with CRT phosphor enter/exit animations.
21
+ * Uses useAnimatedDismiss for smooth phosphor fade-out on close.
22
+ */
33
23
  export declare const Alert: React.FC<AlertProps>;
@@ -1,39 +1,21 @@
1
1
  import React from 'react';
2
2
  import './Badge.css';
3
3
  export interface BadgeProps {
4
- /**
5
- * The variant determines the badge's color scheme
6
- */
7
- variant?: 'default' | 'success' | 'warning' | 'error' | 'info' | 'accent';
8
- /**
9
- * The size of the badge
10
- */
11
- size?: 'small' | 'medium';
12
- /**
13
- * Show a dot indicator before the text
14
- */
4
+ /** The variant determines the badge's color scheme */
5
+ variant?: 'default' | 'success' | 'warning' | 'error' | 'info' | 'accent' | 'brand' | 'gray' | 'blue' | 'indigo' | 'purple' | 'pink' | 'orange';
6
+ /** The size of the badge */
7
+ size?: 'sm' | 'md' | 'lg' | 'small' | 'medium';
8
+ /** Show a dot indicator before the text */
15
9
  dot?: boolean;
16
- /**
17
- * Badge content
18
- */
10
+ /** Badge content */
19
11
  children: React.ReactNode;
20
- /**
21
- * Optional CSS class name
22
- */
12
+ /** Optional CSS class name */
23
13
  className?: string;
24
- /**
25
- * Optional aria-label for accessibility
26
- */
14
+ /** Optional aria-label for accessibility */
27
15
  'aria-label'?: string;
28
16
  }
29
17
  /**
30
- * DOS-styled Badge component for status indicators, labels, and tags
31
- *
32
- * Features:
33
- * - Multiple color variants (default, success, warning, error, info, accent)
34
- * - Two sizes (small, medium)
35
- * - Optional dot indicator
36
- * - DOS-authentic styling with CGA colors
37
- * - WCAG 2.1 AA compliant
18
+ * DOS-styled Badge for status indicators, labels, and counts.
19
+ * Pure presentational — no React Aria needed.
38
20
  */
39
21
  export declare const Badge: React.FC<BadgeProps>;
@@ -1,55 +1,33 @@
1
1
  import React from 'react';
2
2
  import './Breadcrumb.css';
3
3
  export interface BreadcrumbItem {
4
- /**
5
- * URL/path for the breadcrumb link
6
- */
7
- href: string;
8
- /**
9
- * Display label for the breadcrumb
10
- */
4
+ /** URL/path for the breadcrumb link */
5
+ href?: string;
6
+ /** Display label for the breadcrumb */
11
7
  label: string;
8
+ /** Click handler — when provided, renders as a button instead of a link */
9
+ onClick?: () => void;
12
10
  }
13
11
  export interface BreadcrumbProps {
14
- /**
15
- * Array of breadcrumb items forming the trail
16
- */
12
+ /** Array of breadcrumb items forming the trail */
17
13
  trail?: BreadcrumbItem[];
18
- /**
19
- * Current page label (not a link)
20
- */
14
+ /** Current page label (not a link) */
21
15
  currentLabel: string;
22
- /**
23
- * Show back arrow on the last trail item
24
- */
16
+ /** Show back arrow on the last trail item */
25
17
  showBackArrow?: boolean;
26
- /**
27
- * Custom separator character
28
- */
18
+ /** Custom separator character */
29
19
  separator?: string;
30
- /**
31
- * Custom link component (e.g., Next.js Link)
32
- * If not provided, uses regular anchor tags
33
- */
20
+ /** Custom link component (e.g., Next.js Link) */
34
21
  linkComponent?: React.ComponentType<{
35
22
  href: string;
36
23
  className?: string;
37
24
  children: React.ReactNode;
38
25
  }>;
39
- /**
40
- * Additional CSS class name
41
- */
26
+ /** Additional CSS class name */
42
27
  className?: string;
43
28
  }
44
29
  /**
45
- * DOS-styled Breadcrumb navigation component
46
- *
47
- * Features:
48
- * - Configurable trail items
49
- * - Optional back arrow on last trail item
50
- * - Custom separator support
51
- * - Framework-agnostic (works with any router)
52
- * - WCAG 2.1 AA compliant
53
- * - DOS-authentic styling with CGA colors
30
+ * DOS-styled Breadcrumb navigation component.
31
+ * Pure presentational — uses semantic HTML (nav > ol > li).
54
32
  */
55
33
  export declare const Breadcrumb: React.FC<BreadcrumbProps>;
@@ -2,56 +2,16 @@ import React from 'react';
2
2
  import '../../../styles/keyframes.css';
3
3
  import './Button.css';
4
4
  export interface ButtonProps {
5
- /**
6
- * The variant of the button which determines its styling
7
- */
8
- variant?: 'primary' | 'secondary' | 'ghost' | 'link';
9
- /**
10
- * The size of the button
11
- */
12
- size?: 'small' | 'medium' | 'large';
13
- /**
14
- * The button type
15
- */
5
+ variant?: 'primary' | 'secondary' | 'tertiary' | 'destructive' | 'ghost' | 'link';
6
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'small' | 'medium' | 'large';
16
7
  type?: 'button' | 'submit' | 'reset';
17
- /**
18
- * Whether the button is disabled
19
- */
20
8
  disabled?: boolean;
21
- /**
22
- * Whether the button is in a loading state
23
- */
24
9
  loading?: boolean;
25
- /**
26
- * Button content
27
- */
28
10
  children: React.ReactNode;
29
- /**
30
- * Optional click handler
31
- */
32
11
  onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
33
- /**
34
- * Optional CSS class name
35
- */
36
12
  className?: string;
37
- /**
38
- * Optional aria-label for accessibility
39
- */
40
13
  'aria-label'?: string;
41
- /**
42
- * Full width button
43
- */
44
14
  fullWidth?: boolean;
15
+ iconOnly?: boolean;
45
16
  }
46
- /**
47
- * DOS-styled Button component with authentic terminal aesthetics
48
- *
49
- * Features:
50
- * - Multiple variants (primary, secondary, ghost, link)
51
- * - Three sizes (small, medium, large)
52
- * - Loading and disabled states
53
- * - Full TypeScript support
54
- * - WCAG 2.1 AA compliant
55
- * - DOS-authentic styling with CGA colors
56
- */
57
17
  export declare const Button: React.FC<ButtonProps>;
@@ -2,41 +2,31 @@ import React from 'react';
2
2
  import '../../../styles/keyframes.css';
3
3
  import './Checkbox.css';
4
4
  export interface CheckboxProps {
5
- /**
6
- * Whether the checkbox is checked
7
- */
5
+ /** Whether the checkbox is checked (controlled) */
8
6
  checked?: boolean;
9
- /**
10
- * Default checked state for uncontrolled usage
11
- */
7
+ /** Default checked state (uncontrolled) */
12
8
  defaultChecked?: boolean;
13
- /**
14
- * Callback when checked state changes
15
- */
9
+ /** Callback when checked state changes */
16
10
  onChange?: (checked: boolean) => void;
17
- /**
18
- * Label text for the checkbox
19
- */
11
+ /** Indeterminate state */
12
+ indeterminate?: boolean;
13
+ /** Label text */
20
14
  label?: string;
21
- /**
22
- * Whether the checkbox is disabled
23
- */
15
+ /** Whether the checkbox is disabled */
24
16
  disabled?: boolean;
25
- /**
26
- * Name attribute for form submission
27
- */
17
+ /** Size variant */
18
+ size?: 'sm' | 'md';
19
+ /** Name attribute for form submission */
28
20
  name?: string;
29
- /**
30
- * Value attribute for form submission
31
- */
21
+ /** Value attribute for form submission */
32
22
  value?: string;
33
- /**
34
- * Additional CSS class name
35
- */
23
+ /** Additional CSS class name */
36
24
  className?: string;
37
- /**
38
- * Accessible label for screen readers
39
- */
25
+ /** Accessible label for screen readers */
40
26
  'aria-label'?: string;
41
27
  }
28
+ /**
29
+ * DOS-styled Checkbox with bracket text indicator [ ] / [X].
30
+ * Built on React Aria for accessible keyboard/focus handling.
31
+ */
42
32
  export declare const Checkbox: React.FC<CheckboxProps>;
@@ -29,7 +29,7 @@ export interface FilterBarProps {
29
29
  /** Label for the "All" toggle. Default: 'All' */
30
30
  allLabel?: string;
31
31
  /** The size of the filter bar */
32
- size?: 'small' | 'medium' | 'large';
32
+ size?: 'sm' | 'md' | 'lg' | 'small' | 'medium' | 'large';
33
33
  /**
34
34
  * Callback when selection changes.
35
35
  * Receives the new set of active IDs.
@@ -41,17 +41,7 @@ export interface FilterBarProps {
41
41
  'aria-label'?: string;
42
42
  }
43
43
  /**
44
- * DOS-styled FilterBar component for multi-select or single-select content filtering
45
- *
46
- * Features:
47
- * - Multi-select (default) or single-select mode
48
- * - Optional count badges on each filter item
49
- * - Optional "All" toggle that selects/deselects everything
50
- * - Full keyboard navigation (Arrow keys, Space, Enter, Home, End)
51
- * - Controlled and uncontrolled modes
52
- * - DOS-authentic styling with CGA colors
53
- * - WCAG 2.1 AA compliant
54
- * - prefers-reduced-motion support
55
- * - prefers-contrast: high support
44
+ * DOS-styled FilterBar for multi-select or single-select content filtering.
45
+ * Pure presentational — uses CSS transitions for phosphor effects.
56
46
  */
57
47
  export declare const FilterBar: React.FC<FilterBarProps>;
@@ -1,5 +1,4 @@
1
1
  import React from 'react';
2
- import '../../Separator/components/Separator.css';
3
2
  import './Footer.css';
4
3
  export interface FooterLink {
5
4
  /** Display text for the link */
@@ -23,9 +22,6 @@ export interface FooterProps {
23
22
  export declare const defaultLegalLinks: FooterLink[];
24
23
  /**
25
24
  * DOS-themed footer with copyright and configurable legal/nav links.
26
- * Uses middle-dot separators between links for authentic terminal aesthetic.
27
- *
28
- * When no `links` are provided, renders default legal links (Impressum + Datenschutz)
29
- * for German compliance. Pass an empty array to explicitly show no links.
25
+ * Pure presentational — uses middle-dot separators for terminal aesthetic.
30
26
  */
31
27
  export declare const Footer: React.FC<FooterProps & React.HTMLAttributes<HTMLElement>>;
@@ -1,22 +1,13 @@
1
1
  import React from 'react';
2
2
  import './Input.css';
3
3
  export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {
4
- /**
5
- * Visual variant for validation states
6
- */
4
+ /** Visual variant for validation states */
7
5
  variant?: 'default' | 'error';
8
- /**
9
- * Optional class name
10
- */
6
+ /** Optional class name */
11
7
  className?: string;
12
8
  }
13
9
  /**
14
- * DOS-styled Input component with authentic terminal aesthetics
15
- *
16
- * Features:
17
- * - Extends native HTML input attributes
18
- * - Error variant for validation states
19
- * - DOS-authentic styling with CGA colors
20
- * - WCAG 2.1 AA compliant focus states
10
+ * DOS-styled Input with phosphor focus glow.
11
+ * Pure presentational — extends native HTML input.
21
12
  */
22
13
  export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
@@ -1,58 +1,35 @@
1
1
  import React from 'react';
2
2
  import './Progress.css';
3
3
  export interface ProgressProps {
4
- /**
5
- * Progress value from 0 to max
6
- */
4
+ /** Progress value from 0 to max */
7
5
  value?: number;
8
- /**
9
- * Maximum value (default 100)
10
- */
6
+ /** Maximum value (default 100) */
11
7
  max?: number;
12
- /**
13
- * Whether progress amount is unknown
14
- */
8
+ /** Whether progress amount is unknown */
15
9
  indeterminate?: boolean;
16
- /**
17
- * Visual variant
18
- */
10
+ /** Visual variant */
19
11
  variant?: 'default' | 'success' | 'warning' | 'error';
20
- /**
21
- * Size of the progress bar
22
- */
23
- size?: 'small' | 'medium' | 'large';
24
- /**
25
- * Track display style
26
- */
12
+ /** Size of the progress bar */
13
+ size?: 'sm' | 'md' | 'lg' | 'small' | 'medium' | 'large';
14
+ /** Track display style */
27
15
  trackStyle?: 'block' | 'bordered' | 'gradient';
28
- /**
29
- * Number of character cells for the bar width (default 20)
30
- */
16
+ /** Number of character cells for the bar width (default 20) */
31
17
  blocks?: number;
32
- /**
33
- * Show percentage label
34
- */
18
+ /** Show percentage label */
35
19
  showLabel?: boolean;
36
- /**
37
- * Enable phosphor glow on filled blocks
38
- */
20
+ /** Enable phosphor glow on filled blocks */
39
21
  glow?: boolean;
40
- /**
41
- * Human-readable value text for screen readers
42
- */
22
+ /** Human-readable value text for screen readers */
43
23
  valueText?: string;
44
- /**
45
- * Fill available container width instead of sizing by block count.
46
- * The label stays adjacent to the bar.
47
- */
24
+ /** Fill available container width instead of sizing by block count */
48
25
  fullWidth?: boolean;
49
- /**
50
- * Additional CSS class name
51
- */
26
+ /** Additional CSS class name */
52
27
  className?: string;
53
- /**
54
- * Accessible label for screen readers
55
- */
28
+ /** Accessible label for screen readers */
56
29
  'aria-label'?: string;
57
30
  }
31
+ /**
32
+ * DOS-styled Progress bar with block characters, phosphor glow, and track styles.
33
+ * Pure presentational — no React Aria needed.
34
+ */
58
35
  export declare const Progress: React.FC<ProgressProps>;
@@ -1,22 +1,13 @@
1
1
  import React from 'react';
2
2
  import './Separator.css';
3
3
  export interface SeparatorProps {
4
- /**
5
- * Orientation of the separator line
6
- */
4
+ /** Orientation of the separator line */
7
5
  orientation?: 'horizontal' | 'vertical';
8
- /**
9
- * Additional CSS class name
10
- */
6
+ /** Additional CSS class name */
11
7
  className?: string;
12
8
  }
13
9
  /**
14
- * DOS-styled Separator component for visual division of content
15
- *
16
- * Features:
17
- * - Horizontal and vertical orientations
18
- * - Uses semantic border color from design tokens
19
- * - Decorative role (aria-hidden)
20
- * - High contrast mode support
10
+ * DOS-styled Separator component for visual division of content.
11
+ * Pure presentational — no React Aria needed.
21
12
  */
22
13
  export declare const Separator: React.FC<SeparatorProps>;
@@ -1,43 +1,23 @@
1
1
  import React from 'react';
2
2
  import './Stat.css';
3
3
  export interface StatProps {
4
- /**
5
- * The label describing the metric
6
- */
4
+ /** The label describing the metric */
7
5
  label: string;
8
- /**
9
- * The metric value to display
10
- */
6
+ /** The metric value to display */
11
7
  value: string | number;
12
- /**
13
- * Optional trend direction
14
- */
8
+ /** Optional trend direction */
15
9
  trend?: 'up' | 'down' | 'neutral';
16
- /**
17
- * Optional trend value (e.g., "+5%", "-12")
18
- */
10
+ /** Optional trend value (e.g., "+5%", "-12") */
19
11
  trendValue?: string;
20
- /**
21
- * Size variant
22
- */
23
- size?: 'small' | 'medium' | 'large';
24
- /**
25
- * Whether to animate value changes with a text scramble effect
26
- */
12
+ /** Size variant */
13
+ size?: 'sm' | 'md' | 'lg' | 'small' | 'medium' | 'large';
14
+ /** Whether to animate value changes with a text scramble effect */
27
15
  scramble?: boolean;
28
- /**
29
- * Optional CSS class name
30
- */
16
+ /** Optional CSS class name */
31
17
  className?: string;
32
18
  }
33
19
  /**
34
- * DOS-styled Stat component for displaying metrics with optional trends
35
- *
36
- * Features:
37
- * - Label and value display
38
- * - Optional trend indicator (up/down/neutral)
39
- * - Three sizes (small, medium, large)
40
- * - DOS-authentic styling with CGA colors
41
- * - WCAG 2.1 AA compliant
20
+ * DOS-styled Stat component for displaying metrics with optional trends.
21
+ * Pure presentational — no React Aria needed.
42
22
  */
43
23
  export declare const Stat: React.FC<StatProps>;