@pcoi/components 0.1.2 → 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 +829 -609
  4. package/dist/index.js +3517 -2
  5. package/dist/styles.css +2 -0
  6. package/package.json +35 -31
  7. package/dist/components.css +0 -1
  8. package/dist/index.mjs +0 -994
  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 -48
  18. package/src/Callout/Callout.figma.tsx +0 -25
  19. package/src/Callout/Callout.tsx +0 -43
  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 -50
  26. package/src/ChatInterface/ChatInterface.integration.test.tsx +0 -123
  27. package/src/ChatInterface/ChatInterface.tsx +0 -125
  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 -70
  34. package/src/ChatMessageList/ChatMessageList.tsx +0 -56
  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 -53
  44. package/src/CitedExcerpt/index.ts +0 -2
  45. package/src/ComparisonTable/ComparisonTable.css +0 -66
  46. package/src/ComparisonTable/ComparisonTable.tsx +0 -54
  47. package/src/ComparisonTable/index.ts +0 -1
  48. package/src/ContactForm/ContactForm.css +0 -38
  49. package/src/ContactForm/ContactForm.tsx +0 -58
  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 -87
  57. package/src/DocumentOverlay/index.ts +0 -2
  58. package/src/Footer/Footer.css +0 -72
  59. package/src/Footer/Footer.tsx +0 -59
  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 -144
  76. package/src/Modal/index.ts +0 -2
  77. package/src/Nav/Nav.css +0 -161
  78. package/src/Nav/Nav.tsx +0 -105
  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 -35
  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 -82
  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 -39
  120. package/src/styles/utilities.css +0 -14
  121. package/src/styles.css +0 -33
  122. package/src/types.ts +0 -66
package/dist/index.d.ts CHANGED
@@ -1,704 +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
- *
51
- * Renders a semantic `<figure>` with `<blockquote>` and optional `<figcaption>`.
52
- * Tokens: spacing-40 (padding), text/secondary, text/accent (link)
53
- */
54
- export declare const Callout: default_2.ForwardRefExoticComponent<CalloutProps & default_2.RefAttributes<HTMLElement>>;
55
-
56
- export declare interface CalloutProps extends default_2.HTMLAttributes<HTMLElement> {
57
- /** 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 {
58
65
  quote: string;
59
- /** Attribution name */
60
66
  attribution?: string;
61
- /** Attribution title/context */
62
- attributionTitle?: string;
63
- /** Link URL for the source reference */
64
- sourceUrl?: string;
65
- /** Display label for the source link (default: "Source") */
66
- sourceLabel?: string;
67
- }
68
-
69
- /**
70
- * PCOI Card Component
71
- *
72
- * Three variants extracted from pcoi.ai:
73
- * - problem: bg-card, icon box + title + description (Problem section)
74
- * - who: surface bg, accent title (Who It's For section)
75
- * - principle: bg-card, roman numeral + title + description (Principles section)
76
- *
77
- * Tokens consumed:
78
- * - bg/card, bg/surface, border/default, border/hover
79
- * - radius-md, spacing-36 (padding), spacing-20 (icon margin)
80
- * - text/primary, text/secondary, text/accent
81
- * - transition/medium, transform/hover-lift
82
- */
83
- export declare const Card: default_2.ForwardRefExoticComponent<CardProps & default_2.RefAttributes<HTMLDivElement>>;
84
-
85
- export declare interface CardProps extends default_2.HTMLAttributes<HTMLDivElement> {
86
- /** Card visual variant */
87
- variant?: CardVariant;
88
- /** 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 {
89
72
  title: string;
90
- /** Card body text */
91
- description: string;
92
- /** Icon element (for problem cards) */
93
- icon?: default_2.ReactNode;
94
- /** Roman numeral or number (for principle cards) */
95
- number?: string;
96
- /** Heading level for the title (default: "h3") */
97
- headingLevel?: HeadingLevel;
98
- }
99
-
100
- export declare type CardVariant = "problem" | "who" | "principle";
101
-
102
- /**
103
- * PCOI ChatInterface — Top-level chat composition
104
- * Empty state: suggestions + prompt. Active state: messages + prompt.
105
- * Tokens: bg/default, container/narrow, spacing-16/24
106
- */
107
- export declare const ChatInterface: default_2.ForwardRefExoticComponent<ChatInterfaceProps & default_2.RefAttributes<HTMLDivElement>>;
108
-
109
- export declare interface ChatInterfaceMessage {
110
- /** Unique message identifier */
111
- id: string;
112
- /** Sender role: "user" or "assistant" */
113
- role: ChatMessageRole;
114
- /** Message body content */
115
- content: default_2.ReactNode;
116
- /** Citations referenced in the message */
117
- citations?: Citation[];
118
- /** ISO timestamp displayed below the message */
119
- timestamp?: string;
120
- }
121
-
122
- export declare interface ChatInterfaceProps extends default_2.HTMLAttributes<HTMLDivElement> {
123
- /** Conversation messages */
124
- messages: ChatInterfaceMessage[];
125
- /** Suggestion prompts for the empty state */
126
- suggestions?: Suggestion[];
127
- /** Current prompt textarea value */
128
- promptValue: string;
129
- /** Called when the prompt textarea changes */
130
- onPromptChange: (value: string) => void;
131
- /** Called when the user submits a prompt */
132
- onPromptSubmit: (value: string) => void;
133
- /** Called when a suggestion card is clicked */
134
- onSuggestionSelect?: (suggestion: Suggestion) => void;
135
- /** Called when a citation is clicked */
136
- onCitationClick?: (citation: Citation) => void;
137
- /** Textarea placeholder */
138
- placeholder?: string;
139
- /** Disable input while loading */
140
- 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;
85
+ }
86
+
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;
141
131
  }
142
132
 
143
- /**
144
- * PCOI ChatMessage — User or assistant message bubble
145
- * Tokens: surface/elevated (user), bg/card (assistant), border/card,
146
- * radius-md, text/primary, text/muted, type/body-size
147
- */
148
- export declare const ChatMessage: default_2.ForwardRefExoticComponent<ChatMessageProps & default_2.RefAttributes<HTMLDivElement>>;
149
-
150
- /**
151
- * PCOI ChatMessageList — Scrollable container that auto-scrolls to newest message
152
- * Tokens: spacing-16/20 (gap), spacing-16/24 (padding)
153
- */
154
- export declare const ChatMessageList: default_2.ForwardRefExoticComponent<ChatMessageListProps & default_2.RefAttributes<HTMLDivElement>>;
155
-
156
- export declare interface ChatMessageListProps extends default_2.HTMLAttributes<HTMLDivElement> {
157
- /** ChatMessage elements */
158
- children: default_2.ReactNode;
159
- }
160
-
161
- export declare interface ChatMessageProps extends default_2.HTMLAttributes<HTMLDivElement> {
162
- /** Message sender role */
163
- role: ChatMessageRole;
164
- /** Message body content */
165
- children: default_2.ReactNode;
166
- /** Citations referenced in the message */
167
- citations?: Citation[];
168
- /** Displayed below the message body */
169
- timestamp?: string;
170
- /** Called when a citation marker or source link is clicked */
171
- onCitationClick?: (citation: Citation) => void;
172
- }
173
-
174
- /** Chat message sender role */
175
- export declare type ChatMessageRole = "user" | "assistant";
176
-
177
- /**
178
- * PCOI Checkbox — Custom styled checkbox with label
179
- * Tokens: bg/default, border/default, border/error, focus/border, focus/glow,
180
- * action/primary-bg, action/primary-text, text/primary, text/error, radius-sm
181
- */
182
- export declare const Checkbox: default_2.ForwardRefExoticComponent<CheckboxProps & default_2.RefAttributes<HTMLInputElement>>;
183
-
184
- export declare interface CheckboxProps extends Omit<default_2.InputHTMLAttributes<HTMLInputElement>, "type" | "size"> {
185
- /** Visible label text */
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;
186
141
  label: string;
187
- /** Unique field name, also used to generate id */
188
- name: string;
189
- /** Error message — when truthy, field enters error state */
190
- error?: string;
142
+ disabled?: boolean;
191
143
  }
192
144
 
193
- /** Citation reference from an assistant response */
194
- export declare interface Citation {
195
- /** Unique citation index (1-based) */
196
- index: number;
197
- /** Short excerpt from the source document */
198
- excerpt: string;
199
- /** Source document title */
200
- sourceTitle: string;
201
- /** Source document identifier (e.g. URL or document ID) */
202
- sourceId: string;
203
- }
204
-
205
- /**
206
- * PCOI CitationMark Inline pill-shaped citation button [1]
207
- * Tokens: text/accent, surface/accent-dim, border/accent-dim,
208
- * radius-full, font-family/mono, transition-fast,
209
- * shadow/focus-ring, transform/press-scale-control
210
- */
211
- export declare const CitationMark: default_2.ForwardRefExoticComponent<CitationMarkProps & default_2.RefAttributes<HTMLButtonElement>>;
212
-
213
- export declare interface CitationMarkProps extends default_2.ButtonHTMLAttributes<HTMLButtonElement> {
214
- /** 1-based citation index displayed in the button */
215
- index: number;
216
- /** Tooltip text (defaults to "Citation {index}") */
217
- sourceLabel?: 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;
218
181
  }
219
182
 
220
- /**
221
- * PCOI CitedExcerpt — Blockquote with excerpt text above, clickable index + source below
222
- * Tokens: surface/accent-dim, border/accent-dim, accent-border-w,
223
- * radius-sm, text/secondary, text/accent, type/body-compact-size
224
- */
225
- 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;
226
184
 
227
- export declare interface CitedExcerptProps extends default_2.HTMLAttributes<HTMLDivElement> {
228
- /** 1-based citation index */
185
+ export declare interface CitedExcerptProps extends DataAttributes {
229
186
  index: number;
230
- /** Short excerpt from the source document */
231
187
  excerpt: string;
232
- /** Source document title */
233
- sourceTitle: string;
234
- /** Called when the source link is clicked */
235
- onSourceClick?: () => void;
188
+ sourceTitle?: string;
189
+ showSourceTitle?: boolean;
190
+ onOpenSource?: () => void;
236
191
  }
237
192
 
238
- export declare interface ComparisonRow {
239
- /** Feature label shown in the first column */
240
- label: string;
241
- /** Competitor's value for this feature */
242
- competitor: string;
243
- /** PCOI's value for this feature */
244
- pcoi: string;
245
- }
246
-
247
- /**
248
- * PCOI Comparison Table
249
- * Semantic <table> with 3 columns: label | competitor | PCOI (highlighted)
250
- * Tokens: radius-md, border/default, bg/alt, surface/accent-dim, text/accent
251
- */
252
- export declare const ComparisonTable: default_2.ForwardRefExoticComponent<ComparisonTableProps & default_2.RefAttributes<HTMLDivElement>>;
253
-
254
- export declare interface ComparisonTableProps extends default_2.HTMLAttributes<HTMLDivElement> {
255
- /** Column header for the competitor (default: "Typical SaaS AI") */
256
- competitorName?: string;
257
- /** Column header for PCOI (default: "PCOI") */
258
- pcoiName?: string;
259
- /** Feature comparison rows */
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;
209
+ }
210
+
211
+ export declare type CodeBlockView = "code" | "preview" | "split";
212
+
213
+ export declare function CodeInline({ code, children, ...dataAttrs }: CodeInlineProps): JSX.Element;
214
+
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
+ };
260
235
  rows: ComparisonRow[];
236
+ caption?: string;
237
+ loading?: boolean;
238
+ density?: "default" | "compact";
239
+ onRowSelectionChange?: (rowIndex: number, selected: boolean) => void;
240
+ staticRows?: boolean;
261
241
  }
262
242
 
263
- /**
264
- * PCOI Contact Form
265
- * Composes: FormField (atom), Button (atom)
266
- * Tokens: bg/surface, border/default, radius-lg, spacing-40 (padding), spacing-20 (gap)
267
- */
268
- 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
+ }
269
253
 
270
- export declare interface ContactFormProps extends Omit<default_2.FormHTMLAttributes<HTMLFormElement>, "onSubmit"> {
271
- /** Called with form field values when the form is submitted */
272
- 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;
273
260
  }
274
261
 
275
- /**
276
- * PCOI DataTable — Presentational data table for dashboards
277
- * Tokens: bg/card-hover, border/default, text/primary, text/secondary,
278
- * font-size/caption/body-default, spacing-12/16
279
- */
280
- 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;
281
267
 
282
- export declare interface DataTableColumn<T = Record<string, unknown>> {
283
- /** Unique key matching a property on the row data */
284
- key: string;
285
- /** Column header text */
286
- header: string;
287
- /** Text alignment (default: "left") */
288
- align?: "left" | "center" | "right";
289
- /** Custom cell renderer */
290
- 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;
291
277
  }
292
278
 
293
- export declare interface DataTableProps<T = Record<string, unknown>> extends default_2.HTMLAttributes<HTMLDivElement> {
294
- /** 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 {
295
284
  columns: DataTableColumn<T>[];
296
- /** Row data */
297
285
  rows: T[];
298
- /** Key extractor for row identity */
299
- rowKey?: keyof T | ((row: T, index: number) => string);
300
- /** Empty state message */
301
- emptyText?: string;
302
- /** 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;
303
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;
304
320
  }
305
321
 
306
- /**
307
- * PCOI DocumentOverlay — Wide modal for viewing source documents with highlighted citations
308
- * Composes Modal (size="wide") + Badge
309
- * Tokens: surface/highlight, border/accent-subtle, container/document
310
- */
311
- 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;
312
323
 
313
- export declare interface DocumentOverlayProps extends Omit<default_2.HTMLAttributes<HTMLDivElement>, "title"> {
314
- /** Whether the overlay is visible */
315
- open: boolean;
316
- /** Called when the overlay should close */
324
+ export declare interface DocumentOverlayProps extends DataAttributes {
325
+ sourceLabel: string;
326
+ title: string;
327
+ children?: ReactNode;
317
328
  onClose: () => void;
318
- /** 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;
319
396
  title: string;
320
- /** Optional source label shown as a badge */
321
- sourceLabel?: string;
322
- /** Document body content */
323
- children: default_2.ReactNode;
324
- /** Element ID to scroll to and highlight on open */
325
- highlightId?: string;
326
- /** Citation index to display beside the highlighted element */
327
- highlightIndex?: number;
328
- }
329
-
330
- /**
331
- * PCOI Footer
332
- * Tokens: border/default, spacing-60/40/24, text/secondary, text/muted
333
- */
334
- export declare const Footer: default_2.ForwardRefExoticComponent<FooterProps & default_2.RefAttributes<HTMLElement>>;
335
-
336
- /** @deprecated Use `LinkItem` from `@pcoi/components` instead */
337
- export declare type FooterLink = LinkItem;
338
-
339
- export declare interface FooterProps extends default_2.HTMLAttributes<HTMLElement> {
340
- /** Navigation links rendered in the footer */
341
- links?: LinkItem[];
342
- /** Brand tagline displayed alongside the logo */
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";
343
418
  tagline?: string;
344
- /** Copyright notice shown at the bottom */
345
- copyright?: string;
419
+ links: FooterLink[];
420
+ copyright: string;
346
421
  }
347
422
 
348
- /**
349
- * PCOI FormField — Label + input/textarea atom
350
- * Tokens: bg/default, border/default, border/error, focus/border, focus/glow,
351
- * text/primary, text/secondary, text/muted, text/error,
352
- * radius-sm, spacing-6/12/14, font-size/caption/body-default
353
- */
354
- 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;
355
426
 
356
- export declare interface FormFieldProps extends Omit<default_2.InputHTMLAttributes<HTMLInputElement | HTMLTextAreaElement>, "size"> {
357
- /** Visible label text */
427
+ export declare interface FormFieldAreaProps extends DataAttributes {
358
428
  label: string;
359
- /** Unique field name, also used to generate id */
360
- name: string;
361
- /** Render as textarea instead of input */
362
- multiline?: boolean;
363
- /** 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;
364
440
  rows?: number;
365
- /** Error message — when truthy, field enters error state */
366
- 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";
367
446
  }
368
447
 
369
- /** Semantic heading level for document outline (h1–h6) */
370
- 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
+ }
468
+
469
+ export declare function HeroBadge({ label, ariaLabel, ...dataAttrs }: HeroBadgeProps): JSX.Element;
470
+
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
+ }
371
484
 
372
- /**
373
- * PCOI How-It-Works Step
374
- * Tokens: spacing-32 (gap), spacing-40 (padding-y), border/default, radius-full (number circle)
375
- */
376
- export declare const HowStep: default_2.ForwardRefExoticComponent<HowStepProps & default_2.RefAttributes<HTMLDivElement>>;
485
+ export declare function HowStep({ stepNumber, title, description, showDivider, ...dataAttrs }: HowStepProps): JSX.Element;
377
486
 
378
- export declare interface HowStepProps extends default_2.HTMLAttributes<HTMLDivElement> {
379
- /** Step number displayed in circle (e.g., "01") */
380
- number: string;
381
- /** Step title */
487
+ export declare interface HowStepProps extends DataAttributes {
488
+ stepNumber: string;
382
489
  title: string;
383
- /** Step description */
384
- description: string;
385
- /** Whether this is the last step (no bottom border) */
386
- isLast?: boolean;
387
- /** Heading level for the title (default: "h3") */
388
- headingLevel?: HeadingLevel;
490
+ description?: string;
491
+ showDivider?: boolean;
492
+ }
493
+
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";
389
525
  }
390
526
 
391
- /** Navigation link used by Nav, Footer, and any link-list component */
392
- export declare interface LinkItem {
527
+ export declare function MetricBlock({ value, label, ...dataAttrs }: MetricBlockProps): JSX.Element;
528
+
529
+ export declare interface MetricBlockProps extends DataAttributes {
530
+ value: string;
393
531
  label: string;
394
- href: string;
395
- /** Optional tracking identifier rendered as data-track-id on the anchor */
396
- trackingId?: string;
397
- }
398
-
399
- /**
400
- * PCOI Logo Mark — Atom
401
- *
402
- * Renders the brand mark: accent-colored "P" + "COI" text wrapped in an anchor.
403
- * Single-sourced so Nav, Footer, and any future component share one implementation.
404
- *
405
- * Tokens consumed:
406
- * - font-family/sans, font-size/logo, letterSpacing/logo
407
- * - text/primary, text/accent
408
- */
409
- export declare const LogoMark: default_2.ForwardRefExoticComponent<LogoMarkProps & default_2.RefAttributes<HTMLAnchorElement>>;
410
-
411
- export declare type LogoMarkProps = default_2.AnchorHTMLAttributes<HTMLAnchorElement>;
412
-
413
- /**
414
- * PCOI Modal — Dialog overlay with focus trap
415
- * Tokens: bg/overlay, surface/elevated, border/default, shadow/elevated,
416
- * zIndex/modal, radius-lg, text/primary, text/secondary
417
- */
418
- export declare const Modal: default_2.ForwardRefExoticComponent<ModalProps & default_2.RefAttributes<HTMLDivElement>>;
419
-
420
- export declare interface ModalProps extends Omit<default_2.HTMLAttributes<HTMLDivElement>, "title"> {
421
- /** Whether the modal is visible */
422
- open: boolean;
423
- /** 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;
424
559
  onClose: () => void;
425
- /** Modal title */
426
- title?: string;
427
- /** Heading level for the title (default: "h2") */
428
- headingLevel?: HeadingLevel;
429
- /** Dialog width: "default" (520px) or "wide" (900px) */
430
- size?: "default" | "wide";
431
- /** Modal body content */
432
- children?: default_2.ReactNode;
433
- /** Footer content (e.g. action buttons) */
434
- footer?: default_2.ReactNode;
435
- }
436
-
437
- /**
438
- * PCOI Navigation Bar
439
- *
440
- * Fixed navbar with scroll-triggered backdrop, responsive hamburger menu.
441
- * Tokens: bg/nav-scrolled, blur/nav-backdrop, border/nav, spacing-72 (height)
442
- */
443
- export declare const Nav: default_2.ForwardRefExoticComponent<NavProps & default_2.RefAttributes<HTMLElement>>;
444
-
445
- /** @deprecated Use `LinkItem` from `@pcoi/components` instead */
446
- export declare type NavLink = LinkItem;
447
-
448
- export declare interface NavProps extends default_2.HTMLAttributes<HTMLElement> {
449
- /** Navigation links rendered in the navbar */
450
- links?: LinkItem[];
451
- /** Label text for the call-to-action button */
452
- ctaLabel?: string;
453
- /** URL the CTA button links to */
454
- ctaHref?: string;
455
- /** Called when the CTA button is clicked */
456
- onCtaClick?: () => void;
457
- }
458
-
459
- /** Option item used by Select, RadioGroup */
460
- 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 {
461
568
  label: string;
462
- value: string;
463
- disabled?: boolean;
569
+ href: string;
570
+ }
571
+
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
+ }
584
+
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;
464
615
  }
465
616
 
466
- /**
467
- * PCOI Panel — Dashboard section container with optional header
468
- * Tokens: bg/card, border/default, radius-md, spacing-16/24, text/primary
469
- */
470
- export declare const Panel: default_2.ForwardRefExoticComponent<PanelProps & default_2.RefAttributes<HTMLDivElement>>;
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
+ }
471
623
 
472
- export declare interface PanelProps extends default_2.HTMLAttributes<HTMLDivElement> {
473
- /** Panel title rendered in a header bar */
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;
474
632
  title?: string;
475
- /** Heading level for the title (default: "h3") */
476
- headingLevel?: HeadingLevel;
477
- /** Action slot in the header (e.g. a Button or filter) */
478
- action?: default_2.ReactNode;
479
- /** Panel body content */
480
- children: default_2.ReactNode;
481
- /** Remove default body padding (for tables/charts that need edge-to-edge content) */
482
- flush?: boolean;
483
- }
484
-
485
- /**
486
- * PCOI PromptBar — Textarea + send button for chat input
487
- * Tokens: bg/card, border/default, focus-border, radius-md,
488
- * text/primary, text/muted, transition-fast
489
- */
490
- export declare const PromptBar: default_2.ForwardRefExoticComponent<PromptBarProps & default_2.RefAttributes<HTMLDivElement>>;
491
-
492
- export declare interface PromptBarProps extends Omit<default_2.HTMLAttributes<HTMLDivElement>, "onChange" | "onSubmit"> {
493
- /** Current textarea value */
494
- value: string;
495
- /** Called when the textarea value changes */
496
- onChange: (value: string) => void;
497
- /** Called when the user submits (Enter or send button) */
498
- onSubmit: (value: string) => void;
499
- /** 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;
500
679
  placeholder?: string;
501
- /** Disable input and send */
680
+ showSend?: boolean;
502
681
  disabled?: boolean;
503
- /** Show loading state on send button */
504
- loading?: boolean;
682
+ focused?: boolean;
683
+ state?: "default" | "hover" | "focus";
684
+ onChange?: (value: string) => void;
685
+ onSubmit?: (value: string) => void;
686
+ ariaLabel?: string;
505
687
  }
506
688
 
507
- /**
508
- * PCOI RadioGroup — Accessible radio button group using fieldset/legend
509
- * Tokens: bg/default, border/default, border/error, focus/border, focus/glow,
510
- * action/primary-bg, text/primary, text/secondary, text/error, radius-full
511
- */
512
- 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;
513
690
 
514
- export declare interface RadioGroupProps extends Omit<default_2.FieldsetHTMLAttributes<HTMLFieldSetElement>, "onChange"> {
515
- /** Group label rendered as a fieldset legend */
691
+ export declare function RadioGroup({ label, options, name, value, defaultValue, disabled, error, errorMessage, onChange, children, ...dataAttrs }: RadioGroupProps): JSX.Element;
692
+
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 {
516
700
  label: string;
517
- /** Shared name for all radio inputs */
701
+ options: RadioGroupOption[];
518
702
  name: string;
519
- /** List of radio options */
520
- options: OptionItem[];
521
- /** Pre-selected value */
703
+ value?: string;
522
704
  defaultValue?: string;
523
- /** Error message — when truthy, group enters error state */
524
- error?: string;
525
- /** Marks the group as required */
526
- required?: boolean;
527
- /** Disables all radio inputs */
528
705
  disabled?: boolean;
529
- /** Called with the selected value when it changes */
530
- onChange?: (value: string) => void;
706
+ error?: boolean;
707
+ errorMessage?: string;
708
+ onChange?: (value: string, event: ChangeEvent<HTMLInputElement>) => void;
709
+ children?: ReactNode;
531
710
  }
532
711
 
533
- /**
534
- * PCOI Section Header
535
- *
536
- * Centered header pattern used across all major sections.
537
- * Label + H2 + optional description, max-width 800px.
538
- *
539
- * Tokens consumed:
540
- * - text/accent (label), text/primary (h2), text/secondary (desc)
541
- * - font-mono (label), font-sans (h2, desc)
542
- * - spacing-16 (label mb, h2 mb), spacing-64 (section mb)
543
- * - container-narrow (800px max-width)
544
- */
545
- export declare const SectionHeader: default_2.ForwardRefExoticComponent<SectionHeaderProps & default_2.RefAttributes<HTMLDivElement>>;
546
-
547
- export declare interface SectionHeaderProps extends default_2.HTMLAttributes<HTMLDivElement> {
548
- /** Section label (mono, uppercase, accent) e.g. "The Problem" */
712
+ export declare interface RadioProps extends DataAttributes {
549
713
  label: string;
550
- /** Main heading */
551
- title: string;
552
- /** Emphasized portion of title (renders in accent color) */
553
- titleEmphasis?: string;
554
- /** Optional subtitle/description */
555
- description?: string;
556
- /** Heading level for the title (default: "h2") */
557
- 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;
558
747
  }
559
748
 
560
- /**
561
- * PCOI Select — Native dropdown with custom styling
562
- * Tokens: bg/default, border/default, border/error, focus/border, focus/glow,
563
- * text/primary, text/secondary, text/muted, text/error, radius-sm
564
- */
565
- 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;
566
750
 
567
- export declare interface SelectProps extends Omit<default_2.SelectHTMLAttributes<HTMLSelectElement>, "size"> {
568
- /** Visible label text */
751
+ export declare interface SidebarNavItem extends DataAttributes {
569
752
  label: string;
570
- /** Unique field name, also used to generate id */
571
- name: string;
572
- /** List of options */
573
- options: OptionItem[];
574
- /** Placeholder text shown as first disabled option */
575
- placeholder?: string;
576
- /** Error message when truthy, field enters error state */
577
- 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;
578
772
  }
579
773
 
580
- /**
581
- * PCOI Signals Panel — "You'll know this is for you if:" section
582
- * Tokens: bg/surface, border/default, radius-md, spacing-40/48, text/accent
583
- */
584
- export declare const SignalsPanel: default_2.ForwardRefExoticComponent<SignalsPanelProps & default_2.RefAttributes<HTMLDivElement>>;
774
+ export declare function Skeleton({ variant, width, height, ...dataAttrs }: SkeletonProps): JSX.Element;
585
775
 
586
- export declare interface SignalsPanelProps extends default_2.HTMLAttributes<HTMLDivElement> {
587
- /** Panel heading text */
588
- title?: string;
589
- /** List of signal statements displayed as bullet points */
590
- signals: string[];
591
- /** Heading level for the title (default: "h3") */
592
- headingLevel?: HeadingLevel;
776
+ export declare interface SkeletonProps extends DataAttributes {
777
+ variant?: SkeletonVariant;
778
+ width?: number | string;
779
+ height?: number | string;
593
780
  }
594
781
 
595
- /** Suggestion prompt for the chat empty state */
596
- export declare interface Suggestion {
597
- /** Unique identifier */
598
- id: string;
599
- /** Display text */
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;
798
+ }
799
+
800
+ export declare type StepperState = "complete" | "active" | "pending" | "error";
801
+
802
+ export declare interface StepperStep {
600
803
  label: string;
601
- /** Optional icon rendered before the label */
602
- icon?: default_2.ReactNode;
804
+ state: StepperState;
603
805
  }
604
806
 
605
- /**
606
- * PCOI SuggestionCard — Clickable FAQ card for chat empty state
607
- * Tokens: bg/card, bg/card-hover, border/card, border/card-hover,
608
- * text/secondary, text/accent, radius-md, transition-medium,
609
- * transform/hover-lift-sm, transform/press-scale, shadow/focus-ring
610
- */
611
- 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;
612
808
 
613
- export declare interface SuggestionCardProps extends default_2.ButtonHTMLAttributes<HTMLButtonElement> {
614
- /** Display text */
809
+ export declare interface SuggestionCardProps extends DataAttributes {
615
810
  label: string;
616
- /** Optional icon rendered before the label */
617
- 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;
618
817
  }
619
818
 
620
- /**
621
- * PCOI SuggestionCards — 3-column grid of suggestion cards for chat empty state
622
- * Tokens: spacing-16 (gap), grid/suggestions
623
- */
624
- export declare const SuggestionCards: default_2.ForwardRefExoticComponent<SuggestionCardsProps & default_2.RefAttributes<HTMLDivElement>>;
819
+ export declare function SuggestionCards({ cards, onSelect, ...dataAttrs }: SuggestionCardsProps): JSX.Element;
625
820
 
626
- export declare interface SuggestionCardsProps extends Omit<default_2.HTMLAttributes<HTMLDivElement>, "onSelect"> {
627
- /** Array of suggestion prompts */
628
- suggestions: Suggestion[];
629
- /** Called when a suggestion card is clicked */
630
- onSelect: (suggestion: Suggestion) => void;
821
+ export declare interface SuggestionCardsItem extends DataAttributes {
822
+ label: string;
823
+ showIcon?: boolean;
631
824
  }
632
825
 
633
- /**
634
- * PCOI Toast — Non-blocking notification
635
- * Tokens: surface/elevated, border/success|error|warning|info,
636
- * text/primary, text/success|error|warning|info,
637
- * shadow/elevated, zIndex/toast, radius-md
638
- */
639
- export declare const Toast: default_2.ForwardRefExoticComponent<ToastProps & default_2.RefAttributes<HTMLDivElement>>;
826
+ export declare interface SuggestionCardsProps extends DataAttributes {
827
+ cards: [SuggestionCardsItem, SuggestionCardsItem, SuggestionCardsItem];
828
+ onSelect?: (label: string, event: MouseEvent_2<HTMLButtonElement>) => void;
829
+ }
640
830
 
641
- export declare interface ToastProps extends default_2.HTMLAttributes<HTMLDivElement> {
642
- /** Toast message */
643
- message: string;
644
- /** 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;
645
884
  variant?: ToastVariant;
646
- /** Whether the toast is visible */
647
- open: boolean;
648
- /** Called when the toast should dismiss */
885
+ action?: ReactNode;
649
886
  onClose?: () => void;
650
- /** Auto-dismiss duration in ms (default 5000, 0 = no auto-dismiss) */
651
- duration?: number;
887
+ closeButtonData?: DataAttributes;
652
888
  }
653
889
 
654
890
  export declare type ToastVariant = "success" | "error" | "warning" | "info";
655
891
 
656
- /**
657
- * PCOI Toggle — Switch-style boolean control
658
- * Tokens: action/toggle-bg, action/toggle-bg-on, action/toggle-thumb,
659
- * focus/border, focus/glow, text/primary, text/error, radius-full
660
- */
661
- 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;
662
893
 
663
- export declare interface ToggleProps extends Omit<default_2.InputHTMLAttributes<HTMLInputElement>, "type" | "size"> {
664
- /** Visible label text */
894
+ export declare interface ToggleProps extends DataAttributes {
665
895
  label: string;
666
- /** Unique field name, also used to generate id */
667
- name: string;
668
- /** Error message — when truthy, field enters error state */
669
- error?: string;
670
- }
671
-
672
- /**
673
- * Standard data-track-* attributes for analytics integration.
674
- * Supported on all components via HTML attribute pass-through.
675
- * Exported for documentation and IDE discoverability.
676
- *
677
- * @example
678
- * <Button data-track-id="hero-cta" data-track-action="click" data-track-category="engagement">
679
- * Get Started
680
- * </Button>
681
- */
682
- export declare interface TrackingProps {
683
- /** Unique identifier for the tracked element */
684
- "data-track-id"?: string;
685
- /** Action type (e.g. "click", "submit", "view", "toggle") */
686
- "data-track-action"?: string;
687
- /** Category grouping (e.g. "navigation", "form", "engagement") */
688
- "data-track-category"?: string;
689
- /** Human-readable label for analytics dashboards */
690
- "data-track-label"?: string;
691
- }
692
-
693
- /**
694
- * PCOI TypingIndicator — Three bouncing dots indicating the assistant is composing a response
695
- * Tokens: bg/card, border/card, radius-md, text/accent
696
- */
697
- export declare const TypingIndicator: default_2.ForwardRefExoticComponent<TypingIndicatorProps & default_2.RefAttributes<HTMLDivElement>>;
698
-
699
- export declare interface TypingIndicatorProps extends default_2.HTMLAttributes<HTMLDivElement> {
700
- /** Label shown in the badge (default: "PCOI") */
701
- 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;
702
922
  }
703
923
 
704
924
  export { }