@pcoi/components 0.1.1 → 1.0.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 (122) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +52 -0
  3. package/dist/index.d.ts +826 -568
  4. package/dist/index.js +3517 -2
  5. package/dist/styles.css +2 -0
  6. package/package.json +36 -32
  7. package/dist/components.css +0 -1
  8. package/dist/index.mjs +0 -969
  9. package/src/Badge/Badge.css +0 -40
  10. package/src/Badge/Badge.tsx +0 -36
  11. package/src/Badge/index.ts +0 -2
  12. package/src/Button/Button.css +0 -93
  13. package/src/Button/Button.figma.tsx +0 -27
  14. package/src/Button/Button.test.tsx +0 -32
  15. package/src/Button/Button.tsx +0 -47
  16. package/src/Button/index.ts +0 -1
  17. package/src/Callout/Callout.css +0 -43
  18. package/src/Callout/Callout.figma.tsx +0 -25
  19. package/src/Callout/Callout.tsx +0 -39
  20. package/src/Callout/index.ts +0 -1
  21. package/src/Card/Card.css +0 -88
  22. package/src/Card/Card.figma.tsx +0 -28
  23. package/src/Card/Card.tsx +0 -60
  24. package/src/Card/index.ts +0 -1
  25. package/src/ChatInterface/ChatInterface.css +0 -49
  26. package/src/ChatInterface/ChatInterface.integration.test.tsx +0 -123
  27. package/src/ChatInterface/ChatInterface.tsx +0 -120
  28. package/src/ChatInterface/index.ts +0 -6
  29. package/src/ChatMessage/ChatMessage.css +0 -55
  30. package/src/ChatMessage/ChatMessage.tsx +0 -71
  31. package/src/ChatMessage/index.ts +0 -2
  32. package/src/ChatMessageList/ChatMessageList.css +0 -24
  33. package/src/ChatMessageList/ChatMessageList.test.tsx +0 -74
  34. package/src/ChatMessageList/ChatMessageList.tsx +0 -51
  35. package/src/ChatMessageList/index.ts +0 -2
  36. package/src/Checkbox/Checkbox.css +0 -97
  37. package/src/Checkbox/Checkbox.tsx +0 -70
  38. package/src/Checkbox/index.ts +0 -2
  39. package/src/CitationMark/CitationMark.css +0 -40
  40. package/src/CitationMark/CitationMark.tsx +0 -38
  41. package/src/CitationMark/index.ts +0 -2
  42. package/src/CitedExcerpt/CitedExcerpt.css +0 -75
  43. package/src/CitedExcerpt/CitedExcerpt.tsx +0 -51
  44. package/src/CitedExcerpt/index.ts +0 -2
  45. package/src/ComparisonTable/ComparisonTable.css +0 -66
  46. package/src/ComparisonTable/ComparisonTable.tsx +0 -48
  47. package/src/ComparisonTable/index.ts +0 -1
  48. package/src/ContactForm/ContactForm.css +0 -38
  49. package/src/ContactForm/ContactForm.tsx +0 -57
  50. package/src/ContactForm/index.ts +0 -1
  51. package/src/DataTable/DataTable.css +0 -56
  52. package/src/DataTable/DataTable.tsx +0 -104
  53. package/src/DataTable/index.ts +0 -2
  54. package/src/DocumentOverlay/DocumentOverlay.css +0 -57
  55. package/src/DocumentOverlay/DocumentOverlay.test.tsx +0 -95
  56. package/src/DocumentOverlay/DocumentOverlay.tsx +0 -86
  57. package/src/DocumentOverlay/index.ts +0 -2
  58. package/src/Footer/Footer.css +0 -72
  59. package/src/Footer/Footer.tsx +0 -56
  60. package/src/Footer/index.ts +0 -1
  61. package/src/FormField/FormField.css +0 -78
  62. package/src/FormField/FormField.figma.tsx +0 -28
  63. package/src/FormField/FormField.tsx +0 -103
  64. package/src/FormField/index.ts +0 -2
  65. package/src/HowStep/HowStep.css +0 -48
  66. package/src/HowStep/HowStep.figma.tsx +0 -23
  67. package/src/HowStep/HowStep.tsx +0 -38
  68. package/src/HowStep/index.ts +0 -1
  69. package/src/LogoMark/LogoMark.css +0 -16
  70. package/src/LogoMark/LogoMark.tsx +0 -24
  71. package/src/LogoMark/index.ts +0 -2
  72. package/src/Modal/Modal.css +0 -101
  73. package/src/Modal/Modal.figma.tsx +0 -28
  74. package/src/Modal/Modal.test.tsx +0 -46
  75. package/src/Modal/Modal.tsx +0 -139
  76. package/src/Modal/index.ts +0 -2
  77. package/src/Nav/Nav.css +0 -161
  78. package/src/Nav/Nav.tsx +0 -101
  79. package/src/Nav/index.ts +0 -1
  80. package/src/Panel/Panel.css +0 -35
  81. package/src/Panel/Panel.tsx +0 -61
  82. package/src/Panel/index.ts +0 -2
  83. package/src/PromptBar/PromptBar.css +0 -68
  84. package/src/PromptBar/PromptBar.figma.tsx +0 -25
  85. package/src/PromptBar/PromptBar.test.tsx +0 -83
  86. package/src/PromptBar/PromptBar.tsx +0 -93
  87. package/src/PromptBar/index.ts +0 -2
  88. package/src/RadioGroup/RadioGroup.css +0 -117
  89. package/src/RadioGroup/RadioGroup.tsx +0 -112
  90. package/src/RadioGroup/index.ts +0 -2
  91. package/src/SectionHeader/SectionHeader.css +0 -38
  92. package/src/SectionHeader/SectionHeader.figma.tsx +0 -23
  93. package/src/SectionHeader/SectionHeader.tsx +0 -55
  94. package/src/SectionHeader/index.ts +0 -1
  95. package/src/Select/Select.css +0 -90
  96. package/src/Select/Select.figma.tsx +0 -33
  97. package/src/Select/Select.tsx +0 -100
  98. package/src/Select/index.ts +0 -2
  99. package/src/SignalsPanel/SignalsPanel.css +0 -51
  100. package/src/SignalsPanel/SignalsPanel.tsx +0 -33
  101. package/src/SignalsPanel/index.ts +0 -1
  102. package/src/SuggestionCard/SuggestionCard.css +0 -51
  103. package/src/SuggestionCard/SuggestionCard.tsx +0 -34
  104. package/src/SuggestionCard/index.ts +0 -2
  105. package/src/SuggestionCards/SuggestionCards.css +0 -15
  106. package/src/SuggestionCards/SuggestionCards.test.tsx +0 -27
  107. package/src/SuggestionCards/SuggestionCards.tsx +0 -40
  108. package/src/SuggestionCards/index.ts +0 -2
  109. package/src/Toast/Toast.css +0 -85
  110. package/src/Toast/Toast.tsx +0 -77
  111. package/src/Toast/index.ts +0 -2
  112. package/src/Toggle/Toggle.css +0 -110
  113. package/src/Toggle/Toggle.figma.tsx +0 -24
  114. package/src/Toggle/Toggle.tsx +0 -73
  115. package/src/Toggle/index.ts +0 -2
  116. package/src/TypingIndicator/TypingIndicator.css +0 -70
  117. package/src/TypingIndicator/TypingIndicator.tsx +0 -37
  118. package/src/TypingIndicator/index.ts +0 -2
  119. package/src/index.ts +0 -37
  120. package/src/styles/utilities.css +0 -14
  121. package/src/styles.css +0 -32
  122. package/src/types.ts +0 -65
package/dist/index.d.ts CHANGED
@@ -1,666 +1,924 @@
1
- import { default as default_2 } from 'react';
2
-
3
- /**
4
- * PCOI Badge Small label for status indicators, categories, and counts
5
- * Tokens: surface/accent-dim, text/accent, text/success, text/error,
6
- * text/warning, text/info, radius-full, font-family/mono
7
- */
8
- export declare const Badge: default_2.ForwardRefExoticComponent<BadgeProps & default_2.RefAttributes<HTMLSpanElement>>;
9
-
10
- export declare interface BadgeProps extends default_2.HTMLAttributes<HTMLSpanElement> {
11
- /** Badge content */
12
- children: default_2.ReactNode;
13
- /** Color variant */
14
- variant?: BadgeVariant;
15
- }
16
-
17
- export declare type BadgeVariant = "default" | "success" | "error" | "warning" | "info";
18
-
19
- /**
20
- * PCOI Button Component
21
- *
22
- * Variants:
23
- * - primary: Gold accent bg, dark text. Hero CTA, form submit.
24
- * - ghost: Transparent bg, subtle border. Secondary actions.
25
- * - nav-cta: Compact primary for navigation bar.
26
- *
27
- * Tokens consumed:
28
- * - action/primary-bg, action/primary-bg-hover, action/primary-text
29
- * - action/ghost-bg, action/ghost-border, action/ghost-text
30
- * - radius-sm, transition/fast
31
- * - shadow/btn-primary-hover, transform/hover-lift
32
- */
33
- export declare const Button: default_2.ForwardRefExoticComponent<ButtonProps & default_2.RefAttributes<HTMLButtonElement>>;
34
-
35
- export declare interface ButtonProps extends default_2.ButtonHTMLAttributes<HTMLButtonElement> {
36
- /** Visual variant */
37
- variant?: ButtonVariant;
38
- /** Size preset */
39
- size?: ButtonSize;
40
- /** Content */
41
- children: default_2.ReactNode;
42
- }
43
-
44
- export declare type ButtonSize = "default" | "large";
45
-
46
- export declare type ButtonVariant = "primary" | "ghost" | "nav-cta";
47
-
48
- /**
49
- * PCOI Callout / Blockquote
50
- * Tokens: spacing-40 (padding), text/secondary, text/accent (link)
51
- */
52
- export declare const Callout: default_2.ForwardRefExoticComponent<CalloutProps & default_2.RefAttributes<HTMLDivElement>>;
53
-
54
- export declare interface CalloutProps extends default_2.HTMLAttributes<HTMLDivElement> {
55
- /** Quote text */
1
+ import { ChangeEvent } from 'react';
2
+ import { CSSProperties } from 'react';
3
+ import { InputHTMLAttributes } from 'react';
4
+ import { JSX } from 'react';
5
+ import { MouseEvent as MouseEvent_2 } from 'react';
6
+ import { ReactElement } from 'react';
7
+ import { ReactNode } from 'react';
8
+
9
+ export declare function AgentCard({ name, status, badge, output, state, ...dataAttrs }: AgentCardProps): JSX.Element;
10
+
11
+ export declare interface AgentCardProps extends DataAttributes {
12
+ name: string;
13
+ status: StatusDotStatus;
14
+ badge?: ReactNode;
15
+ output?: ReactNode;
16
+ state?: AgentCardState;
17
+ }
18
+
19
+ export declare type AgentCardState = "collapsed" | "expanded";
20
+
21
+ export declare function AgentList({ agents, ariaLabel, ...dataAttrs }: AgentListProps): JSX.Element;
22
+
23
+ export declare interface AgentListItem extends Omit<AgentCardProps, "state"> {
24
+ state?: AgentCardState;
25
+ }
26
+
27
+ export declare interface AgentListProps extends DataAttributes {
28
+ agents: AgentListItem[];
29
+ ariaLabel?: string;
30
+ }
31
+
32
+ export declare function Badge({ shape, variant, showIcon, label, number, ariaLabel, ...dataAttrs }: BadgeProps): JSX.Element;
33
+
34
+ export declare interface BadgeProps extends DataAttributes {
35
+ shape: "pill" | "circle";
36
+ variant?: "default" | "success" | "error" | "warning" | "info";
37
+ showIcon?: boolean;
38
+ label?: string;
39
+ number?: string;
40
+ ariaLabel?: string;
41
+ }
42
+
43
+ export declare function Button({ style, size, state, disabled, focused, loading, loadingPosition, startIcon, endIcon, label, fullWidth, type, success, onClick, ...dataAttrs }: ButtonProps): JSX.Element;
44
+
45
+ export declare interface ButtonProps extends DataAttributes {
46
+ style: "primary" | "ghost" | "destructive";
47
+ size?: "small" | "default" | "large";
48
+ state?: "default" | "hover" | "pressed" | "disabled";
49
+ disabled?: boolean;
50
+ focused?: boolean;
51
+ loading?: boolean;
52
+ loadingPosition?: "start" | "end" | "center";
53
+ startIcon?: ReactElement;
54
+ endIcon?: ReactElement;
55
+ label: string;
56
+ fullWidth?: boolean;
57
+ type?: "button" | "submit";
58
+ success?: boolean;
59
+ onClick?: (event: MouseEvent_2<HTMLButtonElement>) => void;
60
+ }
61
+
62
+ export declare function Callout({ quote, attribution, ...dataAttrs }: CalloutProps): JSX.Element;
63
+
64
+ export declare interface CalloutProps extends DataAttributes {
56
65
  quote: string;
57
- /** Attribution name */
58
66
  attribution?: string;
59
- /** Attribution title/context */
60
- attributionTitle?: string;
61
- /** Link URL */
62
- sourceUrl?: string;
63
- /** Link label */
64
- sourceLabel?: string;
65
- }
66
-
67
- /**
68
- * PCOI Card Component
69
- *
70
- * Three variants extracted from pcoi.ai:
71
- * - problem: bg-card, icon box + title + description (Problem section)
72
- * - who: surface bg, accent title (Who It's For section)
73
- * - principle: bg-card, roman numeral + title + description (Principles section)
74
- *
75
- * Tokens consumed:
76
- * - bg/card, bg/surface, border/default, border/hover
77
- * - radius-md, spacing-36 (padding), spacing-20 (icon margin)
78
- * - text/primary, text/secondary, text/accent
79
- * - transition/medium, transform/hover-lift
80
- */
81
- export declare const Card: default_2.ForwardRefExoticComponent<CardProps & default_2.RefAttributes<HTMLDivElement>>;
82
-
83
- export declare interface CardProps extends default_2.HTMLAttributes<HTMLDivElement> {
84
- /** Card visual variant */
85
- variant?: CardVariant;
86
- /** Card title */
67
+ }
68
+
69
+ export declare function Card({ title, description, label, showIcon, showLabel, showAction, icon, onAction, accentTitle, state, actionLabel, actionStartIcon, actionEndIcon, ...dataAttrs }: CardProps): JSX.Element;
70
+
71
+ export declare interface CardProps extends DataAttributes {
87
72
  title: string;
88
- /** Card body text */
89
- description: string;
90
- /** Icon element (for problem cards) */
91
- icon?: default_2.ReactNode;
92
- /** Roman numeral or number (for principle cards) */
93
- number?: string;
94
- /** Heading level for the title (default: "h3") */
95
- headingLevel?: HeadingLevel;
96
- }
97
-
98
- export declare type CardVariant = "problem" | "who" | "principle";
99
-
100
- /**
101
- * PCOI ChatInterface — Top-level chat composition
102
- * Empty state: suggestions + prompt. Active state: messages + prompt.
103
- * Tokens: bg/default, container/narrow, spacing-16/24
104
- */
105
- export declare const ChatInterface: default_2.ForwardRefExoticComponent<ChatInterfaceProps & default_2.RefAttributes<HTMLDivElement>>;
106
-
107
- export declare interface ChatInterfaceMessage {
108
- id: string;
109
- role: ChatMessageRole;
110
- content: default_2.ReactNode;
111
- citations?: Citation[];
112
- timestamp?: string;
113
- }
114
-
115
- export declare interface ChatInterfaceProps extends default_2.HTMLAttributes<HTMLDivElement> {
116
- /** Conversation messages */
117
- messages: ChatInterfaceMessage[];
118
- /** Suggestion prompts for the empty state */
119
- suggestions?: Suggestion[];
120
- /** Current prompt textarea value */
121
- promptValue: string;
122
- /** Called when the prompt textarea changes */
123
- onPromptChange: (value: string) => void;
124
- /** Called when the user submits a prompt */
125
- onPromptSubmit: (value: string) => void;
126
- /** Called when a suggestion card is clicked */
127
- onSuggestionSelect?: (suggestion: Suggestion) => void;
128
- /** Called when a citation is clicked */
129
- onCitationClick?: (citation: Citation) => void;
130
- /** Textarea placeholder */
131
- placeholder?: string;
132
- /** Disable input while loading */
133
- loading?: boolean;
73
+ description?: string;
74
+ label?: string;
75
+ showIcon?: boolean;
76
+ showLabel?: boolean;
77
+ showAction?: boolean;
78
+ icon?: ReactElement;
79
+ onAction?: () => void;
80
+ accentTitle?: boolean;
81
+ state?: "default" | "hover";
82
+ actionLabel?: string;
83
+ actionStartIcon?: ReactElement;
84
+ actionEndIcon?: ReactElement;
134
85
  }
135
86
 
136
- /**
137
- * PCOI ChatMessage — User or assistant message bubble
138
- * Tokens: surface/elevated (user), bg/card (assistant), border/card,
139
- * radius-md, text/primary, text/muted, type/body-size
140
- */
141
- export declare const ChatMessage: default_2.ForwardRefExoticComponent<ChatMessageProps & default_2.RefAttributes<HTMLDivElement>>;
142
-
143
- /**
144
- * PCOI ChatMessageList Scrollable container that auto-scrolls to newest message
145
- * Tokens: spacing-16/20 (gap), spacing-16/24 (padding)
146
- */
147
- export declare const ChatMessageList: default_2.ForwardRefExoticComponent<ChatMessageListProps & default_2.RefAttributes<HTMLDivElement>>;
148
-
149
- export declare interface ChatMessageListProps extends default_2.HTMLAttributes<HTMLDivElement> {
150
- /** ChatMessage elements */
151
- children: default_2.ReactNode;
152
- }
153
-
154
- export declare interface ChatMessageProps extends default_2.HTMLAttributes<HTMLDivElement> {
155
- /** Message sender role */
156
- role: ChatMessageRole;
157
- /** Message body content */
158
- children: default_2.ReactNode;
159
- /** Citations referenced in the message */
160
- citations?: Citation[];
161
- /** Displayed below the message body */
162
- timestamp?: string;
163
- /** Called when a citation marker or source link is clicked */
164
- onCitationClick?: (citation: Citation) => void;
165
- }
166
-
167
- /** Chat message sender role */
168
- export declare type ChatMessageRole = "user" | "assistant";
169
-
170
- /**
171
- * PCOI Checkbox — Custom styled checkbox with label
172
- * Tokens: bg/default, border/default, border/error, focus/border, focus/glow,
173
- * action/primary-bg, action/primary-text, text/primary, text/error, radius-sm
174
- */
175
- export declare const Checkbox: default_2.ForwardRefExoticComponent<CheckboxProps & default_2.RefAttributes<HTMLInputElement>>;
176
-
177
- export declare interface CheckboxProps extends Omit<default_2.InputHTMLAttributes<HTMLInputElement>, "type" | "size"> {
178
- /** Visible label text */
87
+ export declare function CardShell({ children, style, className, ...dataAttrs }: CardShellProps): JSX.Element;
88
+
89
+ export declare interface CardShellProps extends DataAttributes {
90
+ children?: ReactNode;
91
+ style?: CSSProperties;
92
+ className?: string;
93
+ }
94
+
95
+ export declare function ChatInterface({ messages, suggestions, typingSenderLabel, inputValue, inputPlaceholder, onInputChange, onSubmit, onSuggestionSelect, state, ...dataAttrs }: ChatInterfaceProps): JSX.Element;
96
+
97
+ export declare interface ChatInterfaceProps extends DataAttributes {
98
+ messages?: ChatMessageListMessage[];
99
+ suggestions?: [SuggestionCardsItem, SuggestionCardsItem, SuggestionCardsItem];
100
+ typingSenderLabel?: string;
101
+ inputValue?: string;
102
+ inputPlaceholder?: string;
103
+ onInputChange?: (value: string) => void;
104
+ onSubmit?: (value: string) => void;
105
+ onSuggestionSelect?: (label: string) => void;
106
+ state?: ChatInterfaceState;
107
+ }
108
+
109
+ export declare type ChatInterfaceState = "empty" | "active" | "loading";
110
+
111
+ export declare function ChatMessage({ sender, message, senderLabel, citation, ...dataAttrs }: ChatMessageProps): JSX.Element;
112
+
113
+ export declare function ChatMessageList({ messages, maxWidthFraction, ariaLabel, emptyState, ...dataAttrs }: ChatMessageListProps): JSX.Element;
114
+
115
+ export declare interface ChatMessageListMessage extends Omit<ChatMessageProps, "sender"> {
116
+ sender: ChatMessageProps["sender"];
117
+ }
118
+
119
+ export declare interface ChatMessageListProps extends DataAttributes {
120
+ messages: ChatMessageListMessage[];
121
+ maxWidthFraction?: number;
122
+ ariaLabel?: string;
123
+ emptyState?: ReactNode;
124
+ }
125
+
126
+ export declare interface ChatMessageProps extends DataAttributes {
127
+ sender: ChatMessageSender;
128
+ message: ReactNode;
129
+ senderLabel?: string;
130
+ citation?: ReactNode;
131
+ }
132
+
133
+ export declare type ChatMessageSender = "user" | "ai";
134
+
135
+ export declare function Checkbox({ label, checked, defaultChecked, indeterminate, disabled, error, errorMessage, showError, focused, onChange, name, id, value, ...dataAttrs }: CheckboxProps): JSX.Element;
136
+
137
+ export declare function CheckboxGroup({ label, options, values, defaultValues, disabled, error, errorMessage, onChange, name, children, ...dataAttrs }: CheckboxGroupProps): JSX.Element;
138
+
139
+ export declare interface CheckboxGroupOption extends DataAttributes {
140
+ value: string;
179
141
  label: string;
180
- /** Unique field name, also used to generate id */
181
- name: string;
182
- /** Error message — when truthy, field enters error state */
183
- error?: string;
142
+ disabled?: boolean;
184
143
  }
185
144
 
186
- /** Citation reference from an assistant response */
187
- export declare interface Citation {
188
- /** Unique citation index (1-based) */
189
- index: number;
190
- /** Short excerpt from the source document */
191
- excerpt: string;
192
- /** Source document title */
193
- sourceTitle: string;
194
- /** Source document identifier (e.g. URL or document ID) */
195
- sourceId: string;
145
+ export declare interface CheckboxGroupProps extends DataAttributes {
146
+ label: string;
147
+ options: CheckboxGroupOption[];
148
+ values?: string[];
149
+ defaultValues?: string[];
150
+ disabled?: boolean;
151
+ error?: boolean;
152
+ errorMessage?: string;
153
+ onChange?: (values: string[], event: ChangeEvent<HTMLInputElement>) => void;
154
+ name?: string;
155
+ children?: ReactNode;
156
+ }
157
+
158
+ export declare interface CheckboxProps extends DataAttributes {
159
+ label: string;
160
+ checked?: boolean;
161
+ defaultChecked?: boolean;
162
+ indeterminate?: boolean;
163
+ disabled?: boolean;
164
+ error?: boolean;
165
+ errorMessage?: string;
166
+ showError?: boolean;
167
+ focused?: boolean;
168
+ onChange?: (checked: boolean, event: ChangeEvent<HTMLInputElement>) => void;
169
+ name?: string;
170
+ id?: string;
171
+ value?: string;
172
+ }
173
+
174
+ export declare function CitationMark({ number, href, onClick, ariaLabel, ...dataAttrs }: CitationMarkProps): JSX.Element;
175
+
176
+ export declare interface CitationMarkProps extends DataAttributes {
177
+ number: number | string;
178
+ href?: string;
179
+ onClick?: (event: MouseEvent_2<HTMLElement>) => void;
180
+ ariaLabel?: string;
196
181
  }
197
182
 
198
- /**
199
- * PCOI CitedExcerpt — Blockquote with excerpt text above, clickable index + source below
200
- * Tokens: surface/accent-dim, border/accent-dim, accent-border-w,
201
- * radius-sm, text/secondary, text/accent, type/body-compact-size
202
- */
203
- export declare const CitedExcerpt: default_2.ForwardRefExoticComponent<CitedExcerptProps & default_2.RefAttributes<HTMLDivElement>>;
183
+ export declare function CitedExcerpt({ index, excerpt, sourceTitle, showSourceTitle, onOpenSource, ...dataAttrs }: CitedExcerptProps): JSX.Element;
204
184
 
205
- export declare interface CitedExcerptProps extends default_2.HTMLAttributes<HTMLDivElement> {
206
- /** 1-based citation index */
185
+ export declare interface CitedExcerptProps extends DataAttributes {
207
186
  index: number;
208
- /** Short excerpt from the source document */
209
187
  excerpt: string;
210
- /** Source document title */
211
- sourceTitle: string;
212
- /** Called when the source link is clicked */
213
- onSourceClick?: () => void;
188
+ sourceTitle?: string;
189
+ showSourceTitle?: boolean;
190
+ onOpenSource?: () => void;
214
191
  }
215
192
 
216
- export declare interface ComparisonRow {
217
- label: string;
218
- competitor: string;
219
- pcoi: string;
193
+ export declare function CodeBlock({ code, preview, view, defaultView, onViewChange, layout, codeHeight, previewHeight, hideViewSwitcher, ariaLabel, copyButtonData, ...dataAttrs }: CodeBlockProps): JSX.Element;
194
+
195
+ export declare type CodeBlockLayout = "centered" | "padded" | "fullscreen";
196
+
197
+ export declare interface CodeBlockProps extends DataAttributes {
198
+ code: string;
199
+ preview?: ReactNode;
200
+ view?: CodeBlockView;
201
+ defaultView?: CodeBlockView;
202
+ onViewChange?: (view: CodeBlockView) => void;
203
+ layout?: CodeBlockLayout;
204
+ codeHeight?: string;
205
+ previewHeight?: string;
206
+ hideViewSwitcher?: boolean;
207
+ ariaLabel?: string;
208
+ copyButtonData?: DataAttributes;
220
209
  }
221
210
 
222
- /**
223
- * PCOI Comparison Table
224
- * Semantic <table> with 3 columns: label | competitor | PCOI (highlighted)
225
- * Tokens: radius-md, border/default, bg/alt, surface/accent-dim, text/accent
226
- */
227
- export declare const ComparisonTable: default_2.ForwardRefExoticComponent<ComparisonTableProps & default_2.RefAttributes<HTMLDivElement>>;
211
+ export declare type CodeBlockView = "code" | "preview" | "split";
212
+
213
+ export declare function CodeInline({ code, children, ...dataAttrs }: CodeInlineProps): JSX.Element;
228
214
 
229
- export declare interface ComparisonTableProps extends default_2.HTMLAttributes<HTMLDivElement> {
230
- competitorName?: string;
231
- pcoiName?: string;
215
+ export declare interface CodeInlineProps extends DataAttributes {
216
+ code?: string;
217
+ children?: ReactNode;
218
+ }
219
+
220
+ export declare interface ComparisonRow extends DataAttributes {
221
+ feature: string;
222
+ competitor: string | React.ReactNode;
223
+ pcoi: string | React.ReactNode;
224
+ selected?: boolean;
225
+ }
226
+
227
+ export declare function ComparisonTable({ headers, rows, caption, loading, density, onRowSelectionChange, staticRows, ...dataAttrs }: ComparisonTableProps): JSX.Element;
228
+
229
+ export declare interface ComparisonTableProps extends DataAttributes {
230
+ headers: {
231
+ feature: string;
232
+ competitor: string;
233
+ pcoi: string;
234
+ };
232
235
  rows: ComparisonRow[];
236
+ caption?: string;
237
+ loading?: boolean;
238
+ density?: "default" | "compact";
239
+ onRowSelectionChange?: (rowIndex: number, selected: boolean) => void;
240
+ staticRows?: boolean;
233
241
  }
234
242
 
235
- /**
236
- * PCOI Contact Form
237
- * Composes: FormField (atom), Button (atom)
238
- * Tokens: bg/surface, border/default, radius-lg, spacing-40 (padding), spacing-20 (gap)
239
- */
240
- export declare const ContactForm: default_2.ForwardRefExoticComponent<ContactFormProps & default_2.RefAttributes<HTMLFormElement>>;
243
+ export declare function ContactForm({ layout, onSubmit, submitting, disabled, success, successDurationMs, ...dataAttrs }: ContactFormProps): JSX.Element;
244
+
245
+ export declare interface ContactFormProps extends DataAttributes {
246
+ layout?: "default" | "stacked";
247
+ onSubmit: (values: ContactFormValues) => void | Promise<void>;
248
+ submitting?: boolean;
249
+ disabled?: boolean;
250
+ success?: boolean;
251
+ successDurationMs?: number;
252
+ }
241
253
 
242
- export declare interface ContactFormProps extends Omit<default_2.FormHTMLAttributes<HTMLFormElement>, "onSubmit"> {
243
- onSubmit?: (data: Record<string, string>) => void;
254
+ export declare interface ContactFormValues {
255
+ name: string;
256
+ company: string;
257
+ role?: string;
258
+ email: string;
259
+ message: string;
244
260
  }
245
261
 
246
- /**
247
- * PCOI DataTable — Presentational data table for dashboards
248
- * Tokens: bg/card-hover, border/default, text/primary, text/secondary,
249
- * font-size/caption/body-default, spacing-12/16
250
- */
251
- export declare const DataTable: default_2.ForwardRefExoticComponent<DataTableProps<Record<string, unknown>> & default_2.RefAttributes<HTMLDivElement>>;
262
+ export declare type DataAttributes = {
263
+ [key: `data-${string}`]: string | undefined;
264
+ };
265
+
266
+ export declare function DataTable<T extends Record<string, unknown>>({ columns, rows, mode, state, density, sortColumn, sortDirection, onSort, selectedRowIds, getRowId, onRowSelectionChange, page, pageSize, totalRows, rowsPerPageOptions, onPageChange, onPageSizeChange, onLoadMore, emptyTitle, noResultsTitle, errorTitle, errorMessage, skeletonRows, ariaLabel, getRowData, ...dataAttrs }: DataTableProps<T>): JSX.Element;
252
267
 
253
- export declare interface DataTableColumn<T = Record<string, unknown>> {
254
- /** Unique key matching a property on the row data */
255
- key: string;
256
- /** Column header text */
257
- header: string;
258
- /** Text alignment (default: "left") */
259
- align?: "left" | "center" | "right";
260
- /** Custom cell renderer */
261
- render?: (value: unknown, row: T) => default_2.ReactNode;
268
+ export declare type DataTableAlign = "left" | "center" | "right";
269
+
270
+ export declare interface DataTableColumn<T> {
271
+ id: keyof T & string;
272
+ label: ReactNode;
273
+ align?: DataTableAlign;
274
+ sortable?: boolean;
275
+ width?: number | string;
276
+ render?: (row: T) => ReactNode;
262
277
  }
263
278
 
264
- export declare interface DataTableProps<T = Record<string, unknown>> extends default_2.HTMLAttributes<HTMLDivElement> {
265
- /** Column definitions */
279
+ export declare type DataTableDensity = "default" | "compact";
280
+
281
+ export declare type DataTableMode = "static" | "paginated" | "scroll";
282
+
283
+ export declare interface DataTableProps<T> extends DataAttributes {
266
284
  columns: DataTableColumn<T>[];
267
- /** Row data */
268
285
  rows: T[];
269
- /** Key extractor for row identity */
270
- rowKey?: keyof T | ((row: T, index: number) => string);
271
- /** Empty state message */
272
- emptyText?: string;
273
- /** Accessible label for the table (describes its content for screen readers) */
286
+ mode?: DataTableMode;
287
+ state?: DataTableState;
288
+ density?: DataTableDensity;
289
+ sortColumn?: string;
290
+ sortDirection?: DataTableSort;
291
+ onSort?: (column: string, direction: DataTableSort) => void;
292
+ selectedRowIds?: ReadonlyArray<string>;
293
+ getRowId?: (row: T, index: number) => string;
294
+ onRowSelectionChange?: (rowId: string, selected: boolean) => void;
295
+ page?: number;
296
+ pageSize?: number;
297
+ totalRows?: number;
298
+ rowsPerPageOptions?: number[];
299
+ onPageChange?: (page: number) => void;
300
+ onPageSizeChange?: (pageSize: number) => void;
301
+ onLoadMore?: () => void;
302
+ emptyTitle?: string;
303
+ noResultsTitle?: string;
304
+ errorTitle?: string;
305
+ errorMessage?: string;
306
+ skeletonRows?: number;
274
307
  ariaLabel?: string;
308
+ getRowData?: (row: T, index: number) => DataAttributes;
309
+ }
310
+
311
+ export declare type DataTableSort = "none" | "asc" | "desc";
312
+
313
+ export declare type DataTableState = "default" | "no-data" | "no-results" | "error" | "loading" | "loading-more" | "error-loading-more";
314
+
315
+ export declare function Divider({ variant, label, ...dataAttrs }: DividerProps): JSX.Element;
316
+
317
+ export declare interface DividerProps extends DataAttributes {
318
+ variant?: "horizontal" | "vertical" | "withLabel";
319
+ label?: string;
275
320
  }
276
321
 
277
- /**
278
- * PCOI DocumentOverlay — Wide modal for viewing source documents with highlighted citations
279
- * Composes Modal (size="wide") + Badge
280
- * Tokens: surface/highlight, border/accent-subtle, container/document
281
- */
282
- export declare const DocumentOverlay: default_2.ForwardRefExoticComponent<DocumentOverlayProps & default_2.RefAttributes<HTMLDivElement>>;
322
+ export declare function DocumentOverlay({ sourceLabel, title, children, onClose, onDownload, width, height, closeButtonData, downloadButtonData, ...dataAttrs }: DocumentOverlayProps): JSX.Element;
283
323
 
284
- export declare interface DocumentOverlayProps extends Omit<default_2.HTMLAttributes<HTMLDivElement>, "title"> {
285
- /** Whether the overlay is visible */
286
- open: boolean;
287
- /** Called when the overlay should close */
324
+ export declare interface DocumentOverlayProps extends DataAttributes {
325
+ sourceLabel: string;
326
+ title: string;
327
+ children?: ReactNode;
288
328
  onClose: () => void;
289
- /** Document title shown in the header */
329
+ onDownload?: () => void;
330
+ width?: number | string;
331
+ height?: number | string;
332
+ closeButtonData?: DataAttributes;
333
+ downloadButtonData?: DataAttributes;
334
+ }
335
+
336
+ export declare function DocumentOverlayScreen(props: DocumentOverlayScreenProps): JSX.Element;
337
+
338
+ export declare type DocumentOverlayScreenProps = DocumentOverlayProps;
339
+
340
+ export declare function Dropdown({ label, showLabel, required, options, value, defaultValue, placeholder, density, helperText, error, errorMessage, disabled, hovered, focused, open: openProp, onChange, name, id, ...dataAttrs }: DropdownProps): JSX.Element;
341
+
342
+ export declare type DropdownDensity = "default" | "compact";
343
+
344
+ export declare function DropdownMenu({ items, density, selectedValue, onSelect, ariaLabel, autoFocus, id, ...dataAttrs }: DropdownMenuProps): JSX.Element;
345
+
346
+ export declare type DropdownMenuDensity = "default" | "compact";
347
+
348
+ export declare interface DropdownMenuItem extends DataAttributes {
349
+ value: string;
350
+ label: ReactNode;
351
+ disabled?: boolean;
352
+ divider?: boolean;
353
+ }
354
+
355
+ export declare interface DropdownMenuProps extends DataAttributes {
356
+ items: DropdownMenuItem[];
357
+ density?: DropdownMenuDensity;
358
+ selectedValue?: string;
359
+ onSelect?: (value: string) => void;
360
+ ariaLabel: string;
361
+ autoFocus?: boolean;
362
+ id?: string;
363
+ }
364
+
365
+ export declare interface DropdownOption extends DataAttributes {
366
+ value: string;
367
+ label: string;
368
+ disabled?: boolean;
369
+ }
370
+
371
+ export declare interface DropdownProps extends DataAttributes {
372
+ label: string;
373
+ showLabel?: boolean;
374
+ required?: boolean;
375
+ options: DropdownOption[];
376
+ value?: string;
377
+ defaultValue?: string;
378
+ placeholder?: string;
379
+ density?: DropdownDensity;
380
+ helperText?: string;
381
+ error?: boolean;
382
+ errorMessage?: string;
383
+ disabled?: boolean;
384
+ hovered?: boolean;
385
+ focused?: boolean;
386
+ open?: boolean;
387
+ onChange?: (value: string) => void;
388
+ name?: string;
389
+ id?: string;
390
+ }
391
+
392
+ export declare function FeedbackState({ type, title, description, action, ...dataAttrs }: FeedbackStateProps): JSX.Element;
393
+
394
+ export declare interface FeedbackStateProps extends DataAttributes {
395
+ type?: FeedbackStateType;
290
396
  title: string;
291
- /** Optional source label shown as a badge */
292
- sourceLabel?: string;
293
- /** Document body content */
294
- children: default_2.ReactNode;
295
- /** Element ID to scroll to and highlight on open */
296
- highlightId?: string;
297
- /** Citation index to display beside the highlighted element */
298
- highlightIndex?: number;
299
- }
300
-
301
- /**
302
- * PCOI Footer
303
- * Tokens: border/default, spacing-60/40/24, text/secondary, text/muted
304
- */
305
- export declare const Footer: default_2.ForwardRefExoticComponent<FooterProps & default_2.RefAttributes<HTMLElement>>;
306
-
307
- /** @deprecated Use `LinkItem` from `@pcoi/components` instead */
308
- export declare type FooterLink = LinkItem;
309
-
310
- export declare interface FooterProps extends default_2.HTMLAttributes<HTMLElement> {
311
- links?: LinkItem[];
397
+ description?: string;
398
+ action?: ReactNode;
399
+ }
400
+
401
+ export declare type FeedbackStateType = "empty" | "no-results" | "error";
402
+
403
+ export declare function FocusGlow({ visible, ...dataAttrs }: FocusGlowProps): JSX.Element;
404
+
405
+ export declare interface FocusGlowProps extends DataAttributes {
406
+ visible?: boolean;
407
+ }
408
+
409
+ export declare function Footer({ breakpoint, tagline, links, copyright, ...dataAttrs }: FooterProps): JSX.Element;
410
+
411
+ export declare interface FooterLink extends DataAttributes {
412
+ label: string;
413
+ href: string;
414
+ }
415
+
416
+ export declare interface FooterProps extends DataAttributes {
417
+ breakpoint?: "desktop" | "mobile";
312
418
  tagline?: string;
313
- copyright?: string;
419
+ links: FooterLink[];
420
+ copyright: string;
314
421
  }
315
422
 
316
- /**
317
- * PCOI FormField — Label + input/textarea atom
318
- * Tokens: bg/default, border/default, border/error, focus/border, focus/glow,
319
- * text/primary, text/secondary, text/muted, text/error,
320
- * radius-sm, spacing-6/12/14, font-size/caption/body-default
321
- */
322
- export declare const FormField: default_2.ForwardRefExoticComponent<FormFieldProps & default_2.RefAttributes<HTMLInputElement | HTMLTextAreaElement>>;
423
+ export declare function FormField({ label, showLabel, required, error, errorMessage, helperText, disabled, hovered, focused, value, defaultValue, placeholder, onChange, name, id, type, inputMode, autoComplete, ...dataAttrs }: FormFieldProps): JSX.Element;
424
+
425
+ export declare function FormFieldArea({ label, showLabel, required, error, errorMessage, helperText, disabled, hovered, focused, value, defaultValue, placeholder, rows, onChange, name, id, maxLength, resize, ...dataAttrs }: FormFieldAreaProps): JSX.Element;
323
426
 
324
- export declare interface FormFieldProps extends Omit<default_2.InputHTMLAttributes<HTMLInputElement | HTMLTextAreaElement>, "size"> {
325
- /** Visible label text */
427
+ export declare interface FormFieldAreaProps extends DataAttributes {
326
428
  label: string;
327
- /** Unique field name, also used to generate id */
328
- name: string;
329
- /** Render as textarea instead of input */
330
- multiline?: boolean;
331
- /** Number of visible text rows when multiline (default 3) */
429
+ showLabel?: boolean;
430
+ required?: boolean;
431
+ error?: boolean;
432
+ errorMessage?: string;
433
+ helperText?: string;
434
+ disabled?: boolean;
435
+ hovered?: boolean;
436
+ focused?: boolean;
437
+ value?: string;
438
+ defaultValue?: string;
439
+ placeholder?: string;
332
440
  rows?: number;
333
- /** Error message — when truthy, field enters error state */
334
- error?: string;
441
+ onChange?: (value: string, event: ChangeEvent<HTMLTextAreaElement>) => void;
442
+ name?: string;
443
+ id?: string;
444
+ maxLength?: number;
445
+ resize?: "none" | "vertical" | "horizontal" | "both";
335
446
  }
336
447
 
337
- /** Semantic heading level for document outline (h1–h6) */
338
- export declare type HeadingLevel = "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
448
+ export declare interface FormFieldProps extends DataAttributes {
449
+ label: string;
450
+ showLabel?: boolean;
451
+ required?: boolean;
452
+ error?: boolean;
453
+ errorMessage?: string;
454
+ helperText?: string;
455
+ disabled?: boolean;
456
+ hovered?: boolean;
457
+ focused?: boolean;
458
+ value?: string;
459
+ defaultValue?: string;
460
+ placeholder?: string;
461
+ onChange?: (value: string, event: ChangeEvent<HTMLInputElement>) => void;
462
+ name?: string;
463
+ id?: string;
464
+ type?: InputHTMLAttributes<HTMLInputElement>["type"];
465
+ inputMode?: InputHTMLAttributes<HTMLInputElement>["inputMode"];
466
+ autoComplete?: string;
467
+ }
339
468
 
340
- /**
341
- * PCOI How-It-Works Step
342
- * Tokens: spacing-32 (gap), spacing-40 (padding-y), border/default, radius-full (number circle)
343
- */
344
- export declare const HowStep: default_2.ForwardRefExoticComponent<HowStepProps & default_2.RefAttributes<HTMLDivElement>>;
469
+ export declare function HeroBadge({ label, ariaLabel, ...dataAttrs }: HeroBadgeProps): JSX.Element;
345
470
 
346
- export declare interface HowStepProps extends default_2.HTMLAttributes<HTMLDivElement> {
347
- /** Step number displayed in circle (e.g., "01") */
348
- number: string;
349
- /** Step title */
471
+ export declare interface HeroBadgeProps extends DataAttributes {
472
+ label: string;
473
+ ariaLabel?: string;
474
+ }
475
+
476
+ export declare function HeroVisual({ breakpoint, innerNodes, outerNodes, animated, ...dataAttrs }: HeroVisualProps): JSX.Element;
477
+
478
+ export declare interface HeroVisualProps extends DataAttributes {
479
+ breakpoint?: "desktop" | "tablet" | "mobile";
480
+ innerNodes?: string[];
481
+ outerNodes?: string[];
482
+ animated?: boolean;
483
+ }
484
+
485
+ export declare function HowStep({ stepNumber, title, description, showDivider, ...dataAttrs }: HowStepProps): JSX.Element;
486
+
487
+ export declare interface HowStepProps extends DataAttributes {
488
+ stepNumber: string;
350
489
  title: string;
351
- /** Step description */
352
- description: string;
353
- /** Whether this is the last step (no bottom border) */
354
- isLast?: boolean;
355
- /** Heading level for the title (default: "h3") */
356
- headingLevel?: HeadingLevel;
490
+ description?: string;
491
+ showDivider?: boolean;
357
492
  }
358
493
 
359
- /** Navigation link used by Nav, Footer, and any link-list component */
360
- export declare interface LinkItem {
494
+ export declare function IconButton({ ariaLabel, icon, state, disabled, focused, onClick, type, ...dataAttrs }: IconButtonProps): JSX.Element;
495
+
496
+ export declare interface IconButtonProps extends DataAttributes {
497
+ ariaLabel: string;
498
+ icon: ReactNode;
499
+ state?: "default" | "hover" | "pressed" | "disabled";
500
+ disabled?: boolean;
501
+ focused?: boolean;
502
+ onClick?: (event: MouseEvent_2<HTMLButtonElement>) => void;
503
+ type?: "button" | "submit" | "reset";
504
+ }
505
+
506
+ export declare function LearningCurveChart({ humanLabel, systemLabel, ...dataAttrs }: LearningCurveChartProps): JSX.Element;
507
+
508
+ export declare interface LearningCurveChartProps extends DataAttributes {
509
+ humanLabel?: string;
510
+ systemLabel?: string;
511
+ }
512
+
513
+ export declare function LogoMark({ mode, ...dataAttrs }: LogoMarkProps): JSX.Element;
514
+
515
+ export declare function LogoMarkP({ mode, ...dataAttrs }: LogoMarkPProps): JSX.Element;
516
+
517
+ export declare type LogoMarkPMode = "Dark" | "Light" | "On Accent";
518
+
519
+ export declare interface LogoMarkPProps extends DataAttributes {
520
+ mode?: LogoMarkPMode;
521
+ }
522
+
523
+ export declare interface LogoMarkProps extends DataAttributes {
524
+ mode?: "Dark" | "Light";
525
+ }
526
+
527
+ export declare function MetricBlock({ value, label, ...dataAttrs }: MetricBlockProps): JSX.Element;
528
+
529
+ export declare interface MetricBlockProps extends DataAttributes {
530
+ value: string;
361
531
  label: string;
362
- href: string;
363
- /** Optional tracking identifier rendered as data-track-id on the anchor */
364
- trackingId?: string;
365
- }
366
-
367
- /**
368
- * PCOI Logo Mark — Atom
369
- *
370
- * Renders the brand mark: accent-colored "P" + "COI" text wrapped in an anchor.
371
- * Single-sourced so Nav, Footer, and any future component share one implementation.
372
- *
373
- * Tokens consumed:
374
- * - font-family/sans, font-size/logo, letterSpacing/logo
375
- * - text/primary, text/accent
376
- */
377
- export declare const LogoMark: default_2.ForwardRefExoticComponent<LogoMarkProps & default_2.RefAttributes<HTMLAnchorElement>>;
378
-
379
- export declare type LogoMarkProps = default_2.AnchorHTMLAttributes<HTMLAnchorElement>;
380
-
381
- /**
382
- * PCOI Modal — Dialog overlay with focus trap
383
- * Tokens: bg/overlay, surface/elevated, border/default, shadow/elevated,
384
- * zIndex/modal, radius-lg, text/primary, text/secondary
385
- */
386
- export declare const Modal: default_2.FC<ModalProps>;
387
-
388
- export declare interface ModalProps extends Omit<default_2.HTMLAttributes<HTMLDivElement>, "title"> {
389
- /** Whether the modal is visible */
390
- open: boolean;
391
- /** Called when the modal should close */
532
+ }
533
+
534
+ export declare function MetricsRow({ metrics, ...dataAttrs }: MetricsRowProps): JSX.Element;
535
+
536
+ export declare interface MetricsRowMetric {
537
+ value: string;
538
+ label: string;
539
+ }
540
+
541
+ export declare interface MetricsRowProps extends DataAttributes {
542
+ metrics: [MetricsRowMetric, MetricsRowMetric, MetricsRowMetric];
543
+ }
544
+
545
+ export declare function Modal({ title, children, actions, onClose, width, closeButtonData, specimen, ...dataAttrs }: ModalProps): JSX.Element;
546
+
547
+ export declare function ModalOverlay({ children, onClick, zIndex, ...dataAttrs }: ModalOverlayProps): JSX.Element;
548
+
549
+ export declare interface ModalOverlayProps extends DataAttributes {
550
+ children?: ReactNode;
551
+ onClick?: () => void;
552
+ zIndex?: number;
553
+ }
554
+
555
+ export declare interface ModalProps extends DataAttributes {
556
+ title: string;
557
+ children?: ReactNode;
558
+ actions?: ReactNode;
392
559
  onClose: () => void;
393
- /** Modal title */
394
- title?: string;
395
- /** Heading level for the title (default: "h2") */
396
- headingLevel?: HeadingLevel;
397
- /** Dialog width: "default" (520px) or "wide" (900px) */
398
- size?: "default" | "wide";
399
- /** Modal body content */
400
- children?: default_2.ReactNode;
401
- /** Footer content (e.g. action buttons) */
402
- footer?: default_2.ReactNode;
403
- }
404
-
405
- /**
406
- * PCOI Navigation Bar
407
- *
408
- * Fixed navbar with scroll-triggered backdrop, responsive hamburger menu.
409
- * Tokens: bg/nav-scrolled, blur/nav-backdrop, border/nav, spacing-72 (height)
410
- */
411
- export declare const Nav: default_2.ForwardRefExoticComponent<NavProps & default_2.RefAttributes<HTMLElement>>;
412
-
413
- /** @deprecated Use `LinkItem` from `@pcoi/components` instead */
414
- export declare type NavLink = LinkItem;
415
-
416
- export declare interface NavProps extends default_2.HTMLAttributes<HTMLElement> {
417
- links?: LinkItem[];
418
- ctaLabel?: string;
419
- ctaHref?: string;
420
- onCtaClick?: () => void;
421
- }
422
-
423
- /** Option item used by Select, RadioGroup */
424
- export declare interface OptionItem {
560
+ width?: number | string;
561
+ closeButtonData?: DataAttributes;
562
+ specimen?: boolean;
563
+ }
564
+
565
+ export declare function Nav({ breakpoint, links, cta, scrolled, onHamburgerToggle, menuOpen, menuPanelId, ...dataAttrs }: NavProps): JSX.Element;
566
+
567
+ export declare interface NavLink extends DataAttributes {
425
568
  label: string;
426
- value: string;
427
- disabled?: boolean;
569
+ href: string;
428
570
  }
429
571
 
430
- /**
431
- * PCOI Panel — Dashboard section container with optional header
432
- * Tokens: bg/card, border/default, radius-md, spacing-16/24, text/primary
433
- */
434
- export declare const Panel: default_2.ForwardRefExoticComponent<PanelProps & default_2.RefAttributes<HTMLDivElement>>;
572
+ export declare interface NavProps extends DataAttributes {
573
+ breakpoint?: "desktop" | "mobile";
574
+ links: NavLink[];
575
+ cta?: {
576
+ label: string;
577
+ href: string;
578
+ };
579
+ scrolled?: boolean;
580
+ onHamburgerToggle?: () => void;
581
+ menuOpen?: boolean;
582
+ menuPanelId?: string;
583
+ }
435
584
 
436
- export declare interface PanelProps extends default_2.HTMLAttributes<HTMLDivElement> {
437
- /** Panel title rendered in a header bar */
585
+ export declare function NotificationBadge({ count, max, ariaLabel, ...dataAttrs }: NotificationBadgeProps): JSX.Element;
586
+
587
+ export declare interface NotificationBadgeProps extends DataAttributes {
588
+ count: number | string;
589
+ max?: number;
590
+ ariaLabel?: string;
591
+ }
592
+
593
+ export declare function PipelineCard({ state, selected, taskName, description, timestamp, statusBadge, onClick, ...dataAttrs }: PipelineCardProps): JSX.Element;
594
+
595
+ export declare interface PipelineCardProps extends DataAttributes {
596
+ state?: "default" | "hover" | "selected" | "selected-hover";
597
+ selected?: boolean;
598
+ taskName: string;
599
+ description: string;
600
+ timestamp: string;
601
+ statusBadge?: React.ReactNode;
602
+ onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;
603
+ }
604
+
605
+ export declare interface PipelineStage {
606
+ label: string;
607
+ state?: PipelineStageState;
608
+ }
609
+
610
+ export declare function PipelineStageChip({ label, state, ...dataAttrs }: PipelineStageChipProps): JSX.Element;
611
+
612
+ export declare interface PipelineStageChipProps extends DataAttributes {
613
+ label: string;
614
+ state?: PipelineStageState;
615
+ }
616
+
617
+ export declare function PipelineStages({ stages, ariaLabel, ...dataAttrs }: PipelineStagesProps): JSX.Element;
618
+
619
+ export declare interface PipelineStagesProps extends DataAttributes {
620
+ stages?: PipelineStage[];
621
+ ariaLabel: string;
622
+ }
623
+
624
+ export declare type PipelineStageState = "inactive" | "active" | "complete" | "error";
625
+
626
+ export declare function Popover({ children, title, placement, onClose, ariaLabel, closeButtonData, ...dataAttrs }: PopoverProps): JSX.Element;
627
+
628
+ export declare type PopoverPlacement = "top" | "bottom" | "left" | "right" | "none";
629
+
630
+ export declare interface PopoverProps extends DataAttributes {
631
+ children: ReactNode;
438
632
  title?: string;
439
- /** Heading level for the title (default: "h3") */
440
- headingLevel?: HeadingLevel;
441
- /** Action slot in the header (e.g. a Button or filter) */
442
- action?: default_2.ReactNode;
443
- /** Panel body content */
444
- children: default_2.ReactNode;
445
- /** Remove default body padding (for tables/charts that need edge-to-edge content) */
446
- flush?: boolean;
447
- }
448
-
449
- /**
450
- * PCOI PromptBar — Textarea + send button for chat input
451
- * Tokens: bg/card, border/default, focus-border, radius-md,
452
- * text/primary, text/muted, transition-fast
453
- */
454
- export declare const PromptBar: default_2.ForwardRefExoticComponent<PromptBarProps & default_2.RefAttributes<HTMLDivElement>>;
455
-
456
- export declare interface PromptBarProps extends Omit<default_2.HTMLAttributes<HTMLDivElement>, "onChange" | "onSubmit"> {
457
- /** Current textarea value */
458
- value: string;
459
- /** Called when the textarea value changes */
460
- onChange: (value: string) => void;
461
- /** Called when the user submits (Enter or send button) */
462
- onSubmit: (value: string) => void;
463
- /** Placeholder text */
633
+ placement?: PopoverPlacement;
634
+ onClose?: () => void;
635
+ ariaLabel?: string;
636
+ closeButtonData?: DataAttributes;
637
+ }
638
+
639
+ export declare function ProgressBar({ segments, ariaLabel, value, ...dataAttrs }: ProgressBarProps): JSX.Element;
640
+
641
+ export declare interface ProgressBarProps extends DataAttributes {
642
+ segments?: ProgressSegmentStatus[];
643
+ ariaLabel: string;
644
+ value?: number;
645
+ }
646
+
647
+ export declare type ProgressSegmentStatus = "active" | "success" | "error" | "warning" | "info" | "inactive";
648
+
649
+ export declare function ProjectHeader({ title, identifier, badges, ...dataAttrs }: ProjectHeaderProps): JSX.Element;
650
+
651
+ export declare interface ProjectHeaderProps extends DataAttributes {
652
+ title: string;
653
+ identifier: string;
654
+ badges?: ReactNode[];
655
+ }
656
+
657
+ export declare function ProjectIdentifier({ identifier, maxWidth, ...dataAttrs }: ProjectIdentifierProps): JSX.Element;
658
+
659
+ export declare interface ProjectIdentifierProps extends DataAttributes {
660
+ identifier: string;
661
+ maxWidth?: number | string;
662
+ }
663
+
664
+ export declare function ProjectIdentity({ title, identifier, layout, ...dataAttrs }: ProjectIdentityProps): JSX.Element;
665
+
666
+ export declare type ProjectIdentityLayout = "stacked" | "inline";
667
+
668
+ export declare interface ProjectIdentityProps extends DataAttributes {
669
+ title: string;
670
+ identifier: string;
671
+ layout?: ProjectIdentityLayout;
672
+ }
673
+
674
+ export declare function PromptBar({ value, defaultValue, placeholder, showSend, disabled, focused, state, onChange, onSubmit, ariaLabel, ...dataAttrs }: PromptBarProps): JSX.Element;
675
+
676
+ export declare interface PromptBarProps extends DataAttributes {
677
+ value?: string;
678
+ defaultValue?: string;
464
679
  placeholder?: string;
465
- /** Disable input and send */
680
+ showSend?: boolean;
466
681
  disabled?: boolean;
467
- /** Show loading state on send button */
468
- loading?: boolean;
682
+ focused?: boolean;
683
+ state?: "default" | "hover" | "focus";
684
+ onChange?: (value: string) => void;
685
+ onSubmit?: (value: string) => void;
686
+ ariaLabel?: string;
469
687
  }
470
688
 
471
- /**
472
- * PCOI RadioGroup — Accessible radio button group using fieldset/legend
473
- * Tokens: bg/default, border/default, border/error, focus/border, focus/glow,
474
- * action/primary-bg, text/primary, text/secondary, text/error, radius-full
475
- */
476
- export declare const RadioGroup: default_2.ForwardRefExoticComponent<RadioGroupProps & default_2.RefAttributes<HTMLFieldSetElement>>;
689
+ export declare function Radio({ label, value, checked, defaultChecked, disabled, error, errorMessage, showError, focused, onChange, name, id, ...dataAttrs }: RadioProps): JSX.Element;
690
+
691
+ export declare function RadioGroup({ label, options, name, value, defaultValue, disabled, error, errorMessage, onChange, children, ...dataAttrs }: RadioGroupProps): JSX.Element;
477
692
 
478
- export declare interface RadioGroupProps extends Omit<default_2.FieldsetHTMLAttributes<HTMLFieldSetElement>, "onChange"> {
479
- /** Group label rendered as a fieldset legend */
693
+ export declare interface RadioGroupOption extends DataAttributes {
694
+ value: string;
695
+ label: string;
696
+ disabled?: boolean;
697
+ }
698
+
699
+ export declare interface RadioGroupProps extends DataAttributes {
480
700
  label: string;
481
- /** Shared name for all radio inputs */
701
+ options: RadioGroupOption[];
482
702
  name: string;
483
- /** List of radio options */
484
- options: OptionItem[];
485
- /** Pre-selected value */
703
+ value?: string;
486
704
  defaultValue?: string;
487
- /** Error message — when truthy, group enters error state */
488
- error?: string;
489
- /** Marks the group as required */
490
- required?: boolean;
491
- /** Disables all radio inputs */
492
705
  disabled?: boolean;
493
- /** Called with the selected value when it changes */
494
- onChange?: (value: string) => void;
706
+ error?: boolean;
707
+ errorMessage?: string;
708
+ onChange?: (value: string, event: ChangeEvent<HTMLInputElement>) => void;
709
+ children?: ReactNode;
495
710
  }
496
711
 
497
- /**
498
- * PCOI Section Header
499
- *
500
- * Centered header pattern used across all major sections.
501
- * Label + H2 + optional description, max-width 800px.
502
- *
503
- * Tokens consumed:
504
- * - text/accent (label), text/primary (h2), text/secondary (desc)
505
- * - font-mono (label), font-sans (h2, desc)
506
- * - spacing-16 (label mb, h2 mb), spacing-64 (section mb)
507
- * - container-narrow (800px max-width)
508
- */
509
- export declare const SectionHeader: default_2.ForwardRefExoticComponent<SectionHeaderProps & default_2.RefAttributes<HTMLDivElement>>;
510
-
511
- export declare interface SectionHeaderProps extends default_2.HTMLAttributes<HTMLDivElement> {
512
- /** Section label (mono, uppercase, accent) e.g. "The Problem" */
712
+ export declare interface RadioProps extends DataAttributes {
513
713
  label: string;
514
- /** Main heading */
515
- title: string;
516
- /** Emphasized portion of title (renders in accent color) */
517
- titleEmphasis?: string;
518
- /** Optional subtitle/description */
519
- description?: string;
520
- /** Heading level for the title (default: "h2") */
521
- headingLevel?: HeadingLevel;
714
+ value: string;
715
+ checked?: boolean;
716
+ defaultChecked?: boolean;
717
+ disabled?: boolean;
718
+ error?: boolean;
719
+ errorMessage?: string;
720
+ showError?: boolean;
721
+ focused?: boolean;
722
+ onChange?: (value: string, event: ChangeEvent<HTMLInputElement>) => void;
723
+ name?: string;
724
+ id?: string;
725
+ }
726
+
727
+ export declare function SectionHeader({ align, showLabel, label, showTitle, title, paragraphs, paragraph1, paragraph2, paragraph3, paragraph4, headingLevel, ...dataAttrs }: SectionHeaderProps): JSX.Element;
728
+
729
+ export declare type SectionHeaderAlign = "center" | "left";
730
+
731
+ export declare type SectionHeaderHeadingLevel = 1 | 2 | 3 | 4;
732
+
733
+ export declare type SectionHeaderParagraphCount = 0 | 1 | 2 | 3 | 4;
734
+
735
+ export declare interface SectionHeaderProps extends DataAttributes {
736
+ align?: SectionHeaderAlign;
737
+ showLabel?: boolean;
738
+ label?: string;
739
+ showTitle?: boolean;
740
+ title?: string;
741
+ paragraphs?: SectionHeaderParagraphCount | string[];
742
+ paragraph1?: string;
743
+ paragraph2?: string;
744
+ paragraph3?: string;
745
+ paragraph4?: string;
746
+ headingLevel?: SectionHeaderHeadingLevel;
522
747
  }
523
748
 
524
- /**
525
- * PCOI Select — Native dropdown with custom styling
526
- * Tokens: bg/default, border/default, border/error, focus/border, focus/glow,
527
- * text/primary, text/secondary, text/muted, text/error, radius-sm
528
- */
529
- export declare const Select: default_2.ForwardRefExoticComponent<SelectProps & default_2.RefAttributes<HTMLSelectElement>>;
749
+ export declare function SidebarNav({ dashboard, items, actions, ariaLabel, ...dataAttrs }: SidebarNavProps): JSX.Element;
530
750
 
531
- export declare interface SelectProps extends Omit<default_2.SelectHTMLAttributes<HTMLSelectElement>, "size"> {
532
- /** Visible label text */
751
+ export declare interface SidebarNavItem extends DataAttributes {
533
752
  label: string;
534
- /** Unique field name, also used to generate id */
535
- name: string;
536
- /** List of options */
537
- options: OptionItem[];
538
- /** Placeholder text shown as first disabled option */
539
- placeholder?: string;
540
- /** Error message when truthy, field enters error state */
541
- error?: string;
753
+ active?: boolean;
754
+ notificationCount?: number | string;
755
+ ariaLabel?: string;
756
+ onClick?: () => void;
757
+ }
758
+
759
+ export declare interface SidebarNavProps extends DataAttributes {
760
+ dashboard?: {
761
+ notificationCount?: number | string;
762
+ ariaLabel?: string;
763
+ onClick?: () => void;
764
+ };
765
+ items: SidebarNavItem[];
766
+ actions?: Array<{
767
+ ariaLabel: string;
768
+ icon: ReactNode;
769
+ onClick?: () => void;
770
+ } & DataAttributes>;
771
+ ariaLabel?: string;
542
772
  }
543
773
 
544
- /**
545
- * PCOI Signals Panel — "You'll know this is for you if:" section
546
- * Tokens: bg/surface, border/default, radius-md, spacing-40/48, text/accent
547
- */
548
- export declare const SignalsPanel: default_2.ForwardRefExoticComponent<SignalsPanelProps & default_2.RefAttributes<HTMLDivElement>>;
774
+ export declare function Skeleton({ variant, width, height, ...dataAttrs }: SkeletonProps): JSX.Element;
549
775
 
550
- export declare interface SignalsPanelProps extends default_2.HTMLAttributes<HTMLDivElement> {
551
- title?: string;
552
- signals: string[];
553
- /** Heading level for the title (default: "h3") */
554
- headingLevel?: HeadingLevel;
776
+ export declare interface SkeletonProps extends DataAttributes {
777
+ variant?: SkeletonVariant;
778
+ width?: number | string;
779
+ height?: number | string;
780
+ }
781
+
782
+ export declare type SkeletonVariant = "text" | "rectangular" | "rounded" | "circular";
783
+
784
+ export declare function StatusDot({ status, ariaLabel, ...dataAttrs }: StatusDotProps): JSX.Element;
785
+
786
+ export declare interface StatusDotProps extends DataAttributes {
787
+ status?: StatusDotStatus;
788
+ ariaLabel?: string;
789
+ }
790
+
791
+ export declare type StatusDotStatus = "active" | "success" | "error" | "warning" | "info" | "muted";
792
+
793
+ export declare function Stepper({ steps, ariaLabel, ...dataAttrs }: StepperProps): JSX.Element;
794
+
795
+ export declare interface StepperProps extends DataAttributes {
796
+ steps: StepperStep[];
797
+ ariaLabel: string;
555
798
  }
556
799
 
557
- /** Suggestion prompt for the chat empty state */
558
- export declare interface Suggestion {
559
- /** Unique identifier */
560
- id: string;
561
- /** Display text */
800
+ export declare type StepperState = "complete" | "active" | "pending" | "error";
801
+
802
+ export declare interface StepperStep {
562
803
  label: string;
563
- /** Optional icon rendered before the label */
564
- icon?: React.ReactNode;
804
+ state: StepperState;
565
805
  }
566
806
 
567
- /**
568
- * PCOI SuggestionCard — Clickable FAQ card for chat empty state
569
- * Tokens: bg/card, bg/card-hover, border/card, border/card-hover,
570
- * text/secondary, text/accent, radius-md, transition-medium,
571
- * transform/hover-lift-sm, transform/press-scale, shadow/focus-ring
572
- */
573
- export declare const SuggestionCard: default_2.ForwardRefExoticComponent<SuggestionCardProps & default_2.RefAttributes<HTMLButtonElement>>;
807
+ export declare function SuggestionCard({ label, icon, showIcon, state, focused, onClick, ariaLabel, ...dataAttrs }: SuggestionCardProps): JSX.Element;
574
808
 
575
- export declare interface SuggestionCardProps extends default_2.ButtonHTMLAttributes<HTMLButtonElement> {
576
- /** Display text */
809
+ export declare interface SuggestionCardProps extends DataAttributes {
577
810
  label: string;
578
- /** Optional icon rendered before the label */
579
- icon?: default_2.ReactNode;
811
+ icon?: ReactNode;
812
+ showIcon?: boolean;
813
+ state?: "default" | "hover" | "pressed";
814
+ focused?: boolean;
815
+ onClick?: (event: MouseEvent_2<HTMLButtonElement>) => void;
816
+ ariaLabel?: string;
580
817
  }
581
818
 
582
- /**
583
- * PCOI SuggestionCards — 3-column grid of suggestion cards for chat empty state
584
- * Tokens: spacing-16 (gap), grid/suggestions
585
- */
586
- export declare const SuggestionCards: default_2.ForwardRefExoticComponent<SuggestionCardsProps & default_2.RefAttributes<HTMLDivElement>>;
819
+ export declare function SuggestionCards({ cards, onSelect, ...dataAttrs }: SuggestionCardsProps): JSX.Element;
587
820
 
588
- export declare interface SuggestionCardsProps extends Omit<default_2.HTMLAttributes<HTMLDivElement>, "onSelect"> {
589
- /** Array of suggestion prompts */
590
- suggestions: Suggestion[];
591
- /** Called when a suggestion card is clicked */
592
- onSelect: (suggestion: Suggestion) => void;
821
+ export declare interface SuggestionCardsItem extends DataAttributes {
822
+ label: string;
823
+ showIcon?: boolean;
593
824
  }
594
825
 
595
- /**
596
- * PCOI Toast — Non-blocking notification
597
- * Tokens: surface/elevated, border/success|error|warning|info,
598
- * text/primary, text/success|error|warning|info,
599
- * shadow/elevated, zIndex/toast, radius-md
600
- */
601
- export declare const Toast: default_2.FC<ToastProps>;
826
+ export declare interface SuggestionCardsProps extends DataAttributes {
827
+ cards: [SuggestionCardsItem, SuggestionCardsItem, SuggestionCardsItem];
828
+ onSelect?: (label: string, event: MouseEvent_2<HTMLButtonElement>) => void;
829
+ }
602
830
 
603
- export declare interface ToastProps extends default_2.HTMLAttributes<HTMLDivElement> {
604
- /** Toast message */
605
- message: string;
606
- /** Visual variant determining color */
831
+ export declare function TabToggle({ tabs, value, defaultValue, ariaLabel, onChange, focused, ...dataAttrs }: TabToggleProps): JSX.Element;
832
+
833
+ export declare interface TabToggleProps extends DataAttributes {
834
+ tabs: [TabToggleTab, TabToggleTab];
835
+ value?: string;
836
+ defaultValue?: string;
837
+ ariaLabel: string;
838
+ onChange?: (value: string) => void;
839
+ focused?: boolean;
840
+ }
841
+
842
+ export declare interface TabToggleTab extends DataAttributes {
843
+ value: string;
844
+ label: ReactNode;
845
+ controls?: string;
846
+ }
847
+
848
+ export declare function TaskDetailPanel({ projectTitle, projectIdentifier, tabs, activeTab, onTabChange, onClose, taskLabel, taskDescription, taskStatus, taskSeverity, actions, metrics, agents, closeButtonData, ...dataAttrs }: TaskDetailPanelProps): JSX.Element;
849
+
850
+ export declare interface TaskDetailPanelProps extends DataAttributes {
851
+ projectTitle: string;
852
+ projectIdentifier: string;
853
+ tabs?: [TabToggleTab, TabToggleTab];
854
+ activeTab?: string;
855
+ onTabChange?: (value: string) => void;
856
+ onClose: () => void;
857
+ taskLabel: string;
858
+ taskDescription: string;
859
+ taskStatus?: string;
860
+ taskSeverity?: TaskDetailPanelSeverity;
861
+ actions?: ReactNode;
862
+ metrics?: [MetricsRowMetric, MetricsRowMetric, MetricsRowMetric];
863
+ agents?: AgentListItem[];
864
+ closeButtonData?: DataAttributes;
865
+ }
866
+
867
+ export declare type TaskDetailPanelSeverity = "success" | "warning" | "error" | "info" | "none";
868
+
869
+ export declare function TextLink({ label, color, state, focused, href, onClick, ...dataAttrs }: TextLinkProps): JSX.Element;
870
+
871
+ export declare interface TextLinkProps extends DataAttributes {
872
+ label: string;
873
+ color?: "accent" | "neutral";
874
+ state?: "default" | "hover";
875
+ focused?: boolean;
876
+ href?: string;
877
+ onClick?: (event: MouseEvent_2<HTMLAnchorElement>) => void;
878
+ }
879
+
880
+ export declare function Toast({ message, variant, action, onClose, closeButtonData, ...dataAttrs }: ToastProps): JSX.Element;
881
+
882
+ export declare interface ToastProps extends DataAttributes {
883
+ message: ReactNode;
607
884
  variant?: ToastVariant;
608
- /** Whether the toast is visible */
609
- open: boolean;
610
- /** Called when the toast should dismiss */
885
+ action?: ReactNode;
611
886
  onClose?: () => void;
612
- /** Auto-dismiss duration in ms (default 5000, 0 = no auto-dismiss) */
613
- duration?: number;
887
+ closeButtonData?: DataAttributes;
614
888
  }
615
889
 
616
890
  export declare type ToastVariant = "success" | "error" | "warning" | "info";
617
891
 
618
- /**
619
- * PCOI Toggle — Switch-style boolean control
620
- * Tokens: action/toggle-bg, action/toggle-bg-on, action/toggle-thumb,
621
- * focus/border, focus/glow, text/primary, text/error, radius-full
622
- */
623
- export declare const Toggle: default_2.ForwardRefExoticComponent<ToggleProps & default_2.RefAttributes<HTMLInputElement>>;
892
+ export declare function Toggle({ label, checked, defaultChecked, disabled, error, errorMessage, focused, onChange, name, id, ...dataAttrs }: ToggleProps): JSX.Element;
624
893
 
625
- export declare interface ToggleProps extends Omit<default_2.InputHTMLAttributes<HTMLInputElement>, "type" | "size"> {
626
- /** Visible label text */
894
+ export declare interface ToggleProps extends DataAttributes {
627
895
  label: string;
628
- /** Unique field name, also used to generate id */
629
- name: string;
630
- /** Error message — when truthy, field enters error state */
631
- error?: string;
632
- }
633
-
634
- /**
635
- * Standard data-track-* attributes for analytics integration.
636
- * Supported on all components via HTML attribute pass-through.
637
- * Exported for documentation and IDE discoverability.
638
- *
639
- * @example
640
- * <Button data-track-id="hero-cta" data-track-action="click" data-track-category="engagement">
641
- * Get Started
642
- * </Button>
643
- */
644
- export declare interface TrackingProps {
645
- /** Unique identifier for the tracked element */
646
- "data-track-id"?: string;
647
- /** Action type (e.g. "click", "submit", "view", "toggle") */
648
- "data-track-action"?: string;
649
- /** Category grouping (e.g. "navigation", "form", "engagement") */
650
- "data-track-category"?: string;
651
- /** Human-readable label for analytics dashboards */
652
- "data-track-label"?: string;
653
- }
654
-
655
- /**
656
- * PCOI TypingIndicator — Three bouncing dots indicating the assistant is composing a response
657
- * Tokens: bg/card, border/card, radius-md, text/accent
658
- */
659
- export declare const TypingIndicator: default_2.ForwardRefExoticComponent<TypingIndicatorProps & default_2.RefAttributes<HTMLDivElement>>;
660
-
661
- export declare interface TypingIndicatorProps extends default_2.HTMLAttributes<HTMLDivElement> {
662
- /** Label shown in the badge (default: "PCOI") */
663
- label?: string;
896
+ checked?: boolean;
897
+ defaultChecked?: boolean;
898
+ disabled?: boolean;
899
+ error?: boolean;
900
+ errorMessage?: string;
901
+ focused?: boolean;
902
+ onChange?: (checked: boolean, event: ChangeEvent<HTMLInputElement>) => void;
903
+ name?: string;
904
+ id?: string;
905
+ }
906
+
907
+ export declare function Tooltip({ content, placement, id, ...dataAttrs }: TooltipProps): JSX.Element;
908
+
909
+ export declare type TooltipPlacement = "top" | "bottom" | "left" | "right" | "none";
910
+
911
+ export declare interface TooltipProps extends DataAttributes {
912
+ content: ReactNode;
913
+ placement?: TooltipPlacement;
914
+ id?: string;
915
+ }
916
+
917
+ export declare function TypingIndicator({ sender, visible, ...dataAttrs }: TypingIndicatorProps): JSX.Element;
918
+
919
+ export declare interface TypingIndicatorProps extends DataAttributes {
920
+ sender?: string;
921
+ visible?: boolean;
664
922
  }
665
923
 
666
924
  export { }