@pollinations/ui 0.1.0-alpha.1 → 0.1.0-alpha.3

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 (88) hide show
  1. package/README.md +137 -36
  2. package/dist/Button-CO3Dpbkj.d.cts +29 -0
  3. package/dist/Button-CO3Dpbkj.d.ts +29 -0
  4. package/dist/Chip-v-ADv6cz.d.cts +18 -0
  5. package/dist/Chip-v-ADv6cz.d.ts +18 -0
  6. package/dist/Dialog-yXzIFrDg.d.cts +63 -0
  7. package/dist/Dialog-yXzIFrDg.d.ts +63 -0
  8. package/dist/app-user-menu/sdk.cjs +631 -235
  9. package/dist/app-user-menu/sdk.cjs.map +1 -1
  10. package/dist/app-user-menu/sdk.d.cts +6 -7
  11. package/dist/app-user-menu/sdk.d.ts +6 -7
  12. package/dist/app-user-menu/sdk.js +639 -236
  13. package/dist/app-user-menu/sdk.js.map +1 -1
  14. package/dist/app.css +6 -122
  15. package/dist/auth/index.cjs +1346 -76
  16. package/dist/auth/index.cjs.map +1 -1
  17. package/dist/auth/index.d.cts +88 -6
  18. package/dist/auth/index.d.ts +88 -6
  19. package/dist/auth/index.js +1343 -75
  20. package/dist/auth/index.js.map +1 -1
  21. package/dist/auth/sdk.cjs +239 -0
  22. package/dist/auth/sdk.cjs.map +1 -0
  23. package/dist/auth/sdk.d.cts +40 -0
  24. package/dist/auth/sdk.d.ts +40 -0
  25. package/dist/auth/sdk.js +208 -0
  26. package/dist/auth/sdk.js.map +1 -0
  27. package/dist/brand/lockup-horizontal-black.png +0 -0
  28. package/dist/brand/lockup-horizontal-black.svg +4 -0
  29. package/dist/brand/lockup-horizontal-white.png +0 -0
  30. package/dist/brand/lockup-horizontal-white.svg +4 -0
  31. package/dist/brand/lockup-horizontal.svg +1 -0
  32. package/dist/brand/lockup-stacked-black.png +0 -0
  33. package/dist/brand/lockup-stacked-black.svg +4 -0
  34. package/dist/brand/lockup-stacked-white.png +0 -0
  35. package/dist/brand/lockup-stacked-white.svg +4 -0
  36. package/dist/brand/lockup-stacked.svg +4 -0
  37. package/dist/brand/mark-black.png +0 -0
  38. package/dist/brand/mark-black.svg +3 -0
  39. package/dist/brand/mark-white.png +0 -0
  40. package/dist/brand/mark-white.svg +3 -0
  41. package/dist/brand/mark.svg +1 -0
  42. package/dist/brand/polli/polli-lockup-horizontal-black.png +0 -0
  43. package/dist/brand/polli/polli-lockup-horizontal-white.png +0 -0
  44. package/dist/brand/polli/polli-lockup-stacked-black.png +0 -0
  45. package/dist/brand/polli/polli-lockup-stacked-white.png +0 -0
  46. package/dist/brand/polli/polli.png +0 -0
  47. package/dist/brand/wordmark-black.png +0 -0
  48. package/dist/brand/wordmark-black.svg +1 -0
  49. package/dist/brand/wordmark-white.png +0 -0
  50. package/dist/brand/wordmark-white.svg +1 -0
  51. package/dist/brand/wordmark.svg +1 -0
  52. package/dist/fonts/geist-pixel-square.woff2 +0 -0
  53. package/dist/gen/index.cjs +395 -214
  54. package/dist/gen/index.cjs.map +1 -1
  55. package/dist/gen/index.d.cts +64 -19
  56. package/dist/gen/index.d.ts +64 -19
  57. package/dist/gen/index.js +391 -212
  58. package/dist/gen/index.js.map +1 -1
  59. package/dist/index.browser.min.js +2 -0
  60. package/dist/index.browser.min.js.map +1 -0
  61. package/dist/index.cjs +3464 -1559
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.d.cts +498 -174
  64. package/dist/index.d.ts +498 -174
  65. package/dist/index.js +3518 -1671
  66. package/dist/index.js.map +1 -1
  67. package/dist/licenses/Geist-OFL.txt +93 -0
  68. package/dist/markdown.cjs +821 -0
  69. package/dist/markdown.cjs.map +1 -0
  70. package/dist/markdown.d.cts +16 -0
  71. package/dist/markdown.d.ts +16 -0
  72. package/dist/markdown.js +792 -0
  73. package/dist/markdown.js.map +1 -0
  74. package/dist/styles.css +1 -1
  75. package/dist/theme.css +92 -0
  76. package/dist/wallet/index.cjs +255 -42
  77. package/dist/wallet/index.cjs.map +1 -1
  78. package/dist/wallet/index.d.cts +29 -7
  79. package/dist/wallet/index.d.ts +29 -7
  80. package/dist/wallet/index.js +254 -42
  81. package/dist/wallet/index.js.map +1 -1
  82. package/package.json +106 -89
  83. package/dist/Chip-CQCq34kS.d.cts +0 -20
  84. package/dist/Chip-Cj4xG7Te.d.ts +0 -20
  85. package/dist/assets/logo-wordmark.svg +0 -1
  86. package/dist/assets/logo.svg +0 -4
  87. package/dist/theme-jRPPBmld.d.cts +0 -20
  88. package/dist/theme-jRPPBmld.d.ts +0 -20
package/dist/index.d.cts CHANGED
@@ -1,14 +1,58 @@
1
- import * as react from 'react';
2
- import { FC, ComponentPropsWithoutRef, ReactNode, RefObject, ButtonHTMLAttributes, PropsWithChildren, CSSProperties, ElementType } from 'react';
3
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
- import { T as ThemeName } from './theme-jRPPBmld.cjs';
5
- export { t as themePalette, a as themes } from './theme-jRPPBmld.cjs';
6
- export { C as Chip } from './Chip-CQCq34kS.cjs';
7
- import { Dialog as Dialog$1 } from '@ark-ui/react/dialog';
2
+ import * as react from 'react';
3
+ import { ReactNode, CSSProperties, FC, ComponentPropsWithoutRef, RefObject, ButtonHTMLAttributes, PropsWithChildren, ComponentType, ElementType } from 'react';
4
+ import { S as ScrollAreaProps, D as DialogProps } from './Dialog-yXzIFrDg.cjs';
5
+ export { a as Dialog, b as DialogBody, c as DialogBodyProps, d as DialogDescription, e as DialogFooter, f as DialogFooterProps, g as DialogHeader, h as DialogHeaderProps, i as DialogTitle, j as ScrollArea } from './Dialog-yXzIFrDg.cjs';
6
+ import { B as ButtonProps, a as ButtonAppearance } from './Button-CO3Dpbkj.cjs';
7
+ export { b as Button } from './Button-CO3Dpbkj.cjs';
8
+ export { C as Chip } from './Chip-v-ADv6cz.cjs';
8
9
  export { Field } from '@ark-ui/react/field';
10
+ import '@ark-ui/react/dialog';
9
11
 
10
- type AlertIntent = "info" | "success" | "warning" | "danger";
11
- type AlertProps = ComponentPropsWithoutRef<"div"> & {
12
+ type DropdownProps = {
13
+ /** Trigger element; receives the current open state (e.g. to rotate a chevron). */
14
+ trigger: (open: boolean) => ReactNode;
15
+ /** Panel content. As a function, receives `close` to dismiss after a selection. */
16
+ children: ReactNode | ((close: () => void) => ReactNode);
17
+ /** Panel placement relative to the trigger. */
18
+ align?: "start" | "end";
19
+ side?: "top" | "bottom";
20
+ /** Controlled open state. Omit to let the Dropdown manage its own. */
21
+ open?: boolean;
22
+ /** Render inside the parent dialog so its focus and accessibility scope includes the menu. */
23
+ portalled?: boolean;
24
+ onOpenChange?: (open: boolean) => void;
25
+ /** Appended after the surface (widths, padding, max-height…). */
26
+ className?: string;
27
+ /** Theme variables for portaled content that cannot inherit from its trigger. */
28
+ panelStyle?: CSSProperties;
29
+ };
30
+ declare const Dropdown: FC<DropdownProps>;
31
+
32
+ type AccountIdentityProps = {
33
+ name: string;
34
+ avatarUrl?: string | null;
35
+ secondaryContent?: ReactNode;
36
+ /** Optional dashboard destination, owned by the caller. Opens in a new tab. */
37
+ dashboardHref?: string;
38
+ className?: string;
39
+ };
40
+ declare function AccountIdentity({ name, avatarUrl, secondaryContent, dashboardHref, className, }: AccountIdentityProps): react_jsx_runtime.JSX.Element;
41
+ type AccountMenuProps = AccountIdentityProps & {
42
+ /** The caller owns navigation, permissions and sign-out behavior. */
43
+ children: DropdownProps["children"];
44
+ menuClassName?: string;
45
+ side?: "top" | "bottom";
46
+ menuLabel?: string;
47
+ };
48
+ /**
49
+ * With `dashboardHref` the avatar is a link and the name/chevron open the
50
+ * menu; without one the whole pill is the trigger.
51
+ */
52
+ declare function AccountMenu({ name, avatarUrl, dashboardHref, secondaryContent, children, className, menuClassName, side, menuLabel, }: AccountMenuProps): react_jsx_runtime.JSX.Element;
53
+
54
+ type AlertIntent = "info" | "advisory" | "warning" | "danger";
55
+ type AlertProps = Omit<ComponentPropsWithoutRef<"div">, "title"> & {
12
56
  intent?: AlertIntent;
13
57
  title?: ReactNode;
14
58
  };
@@ -28,10 +72,75 @@ type AppHeaderProps = {
28
72
  };
29
73
  declare function AppHeader({ children, navLabel, autoHide, scrollTargetRef, brandHref, brandLabel, className, innerClassName, navClassName, }: AppHeaderProps): react_jsx_runtime.JSX.Element;
30
74
 
75
+ type CalloutProps = {
76
+ title: ReactNode;
77
+ body: ReactNode;
78
+ children: ReactNode;
79
+ tone?: "theme" | "dark";
80
+ className?: string;
81
+ };
82
+ /** Prominent closing panel with a title, supporting copy, and actions. */
83
+ declare function Callout({ title, body, children, tone, className, }: CalloutProps): react_jsx_runtime.JSX.Element;
84
+
85
+ type ChatConversationProps = Omit<ScrollAreaProps, "children" | "className"> & {
86
+ children: ReactNode;
87
+ className?: string;
88
+ viewportClassName?: string;
89
+ showScrollButton?: boolean;
90
+ onScrollToBottom?: () => void;
91
+ scrollButtonLabel?: string;
92
+ };
93
+ /**
94
+ * Scrollable chat transcript with an optional jump-to-latest control.
95
+ * Message data and streaming remain the consumer's responsibility.
96
+ */
97
+ declare const ChatConversation: react.ForwardRefExoticComponent<Omit<ScrollAreaProps, "className" | "children"> & {
98
+ children: ReactNode;
99
+ className?: string;
100
+ viewportClassName?: string;
101
+ showScrollButton?: boolean;
102
+ onScrollToBottom?: () => void;
103
+ scrollButtonLabel?: string;
104
+ } & react.RefAttributes<HTMLDivElement>>;
105
+ type ChatConversationContentProps = ComponentPropsWithoutRef<"div">;
106
+ declare function ChatConversationContent({ className, ...props }: ChatConversationContentProps): react_jsx_runtime.JSX.Element;
107
+
108
+ type ChatMessageRole = "user" | "assistant" | "system";
109
+ type ChatMessageProps = ComponentPropsWithoutRef<"article"> & {
110
+ from: ChatMessageRole;
111
+ };
112
+ /** Protocol-neutral message surface inspired by AI Elements' Message suite. */
113
+ declare function ChatMessage({ from, className, children, ...props }: ChatMessageProps): react_jsx_runtime.JSX.Element;
114
+ type ChatMessageHeaderProps = ComponentPropsWithoutRef<"header"> & {
115
+ from: ChatMessageRole;
116
+ label?: ReactNode;
117
+ icon?: ReactNode;
118
+ };
119
+ declare function ChatMessageHeader({ from, label, icon, className, ...props }: ChatMessageHeaderProps): react_jsx_runtime.JSX.Element;
120
+ type ChatMessageContentProps = ComponentPropsWithoutRef<"div">;
121
+ declare function ChatMessageContent({ className, ...props }: ChatMessageContentProps): react_jsx_runtime.JSX.Element;
122
+ type ChatMessageActionsProps = ComponentPropsWithoutRef<"footer">;
123
+ declare function ChatMessageActions({ className, ...props }: ChatMessageActionsProps): react_jsx_runtime.JSX.Element;
124
+
125
+ type ChatPromptInputProps = ComponentPropsWithoutRef<"fieldset">;
126
+ /**
127
+ * Composable prompt shell. Put attachments or controls before the textarea and
128
+ * actions in ChatPromptInputFooter; submission stays owned by the parent form.
129
+ */
130
+ declare function ChatPromptInput({ className, ...props }: ChatPromptInputProps): react_jsx_runtime.JSX.Element;
131
+ declare const ChatPromptTextarea: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "ref"> & {
132
+ error?: boolean;
133
+ } & react.RefAttributes<HTMLTextAreaElement>>;
134
+ type ChatPromptInputFooterProps = ComponentPropsWithoutRef<"div"> & {
135
+ start?: ReactNode;
136
+ end?: ReactNode;
137
+ };
138
+ declare function ChatPromptInputFooter({ start, end, children, className, ...props }: ChatPromptInputFooterProps): react_jsx_runtime.JSX.Element;
139
+
31
140
  type CodeBlockOwnProps = {
32
141
  code: string;
33
- theme?: ThemeName;
34
142
  codeClassName?: string;
143
+ language?: string;
35
144
  };
36
145
  type CodeBlockProps = CodeBlockOwnProps & Omit<ComponentPropsWithoutRef<"div">, keyof CodeBlockOwnProps | "children">;
37
146
  declare const CodeBlock: FC<CodeBlockProps>;
@@ -43,8 +152,11 @@ type CollapsibleProps = {
43
152
  onToggle: () => void;
44
153
  children: ReactNode;
45
154
  disabled?: boolean;
46
- /** Outer wrapper classes — base bg, border, etc. */
155
+ /** Outer wrapper classes — border, rounding, etc. Keep it bg-free if the
156
+ * expanded panel should stay transparent; put any fill on the trigger. */
47
157
  wrapperClassName?: string;
158
+ /** Trigger/header base classes (e.g. a selected background). */
159
+ triggerClassName?: string;
48
160
  /** Trigger hover classes. Defaults to `polli:hover:bg-theme-bg-active`. */
49
161
  hoverClassName?: string;
50
162
  /** Trigger focus classes. */
@@ -64,28 +176,142 @@ type CollapsibleProps = {
64
176
  */
65
177
  declare const Collapsible: FC<CollapsibleProps>;
66
178
 
179
+ type ConfirmIntent = "danger" | "info" | "neutral" | "commit";
180
+ type ConfirmationDialogProps = {
181
+ open: boolean;
182
+ title: ReactNode;
183
+ /** Short explanation rendered as body text. */
184
+ description?: ReactNode;
185
+ /** Extra body content below the description (alerts, inputs). */
186
+ children?: ReactNode;
187
+ confirmLabel: ReactNode;
188
+ /** Confirm button recipe; also picks the default confirm icon. */
189
+ intent?: ConfirmIntent;
190
+ /** Override the confirm icon when the action is not a plain delete/confirm. */
191
+ confirmIcon?: ReactNode;
192
+ confirmDisabled?: boolean;
193
+ cancelDisabled?: boolean;
194
+ onConfirm: () => void;
195
+ onCancel: () => void;
196
+ size?: DialogProps["size"];
197
+ };
198
+ /** One floating Cancel + confirm action for every yes/no dialog. */
199
+ declare function ConfirmationDialog({ open, title, description, children, confirmLabel, intent, confirmIcon, confirmDisabled, cancelDisabled, onConfirm, onCancel, size, }: ConfirmationDialogProps): react_jsx_runtime.JSX.Element;
200
+
201
+ type ContentHeaderProps = {
202
+ eyebrow: ReactNode;
203
+ title: ReactNode;
204
+ subtitle?: ReactNode;
205
+ action?: ReactNode;
206
+ variant?: "page" | "section";
207
+ className?: string;
208
+ };
209
+ /** Shared page/section heading rhythm with an optional trailing action. */
210
+ declare function ContentHeader({ eyebrow, title, subtitle, action, variant, className, }: ContentHeaderProps): react_jsx_runtime.JSX.Element;
211
+
67
212
  type CopyValue = string | (() => string | Promise<string>);
68
213
  type CopyButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "className" | "onClick" | "type" | "value"> & {
69
214
  value: CopyValue;
70
215
  children: ReactNode | ((copied: boolean) => ReactNode);
71
216
  copiedTimeoutMs?: number;
72
217
  tooltip?: ReactNode;
218
+ tooltipAlign?: "start" | "center";
219
+ tooltipClampToViewport?: boolean;
220
+ tooltipMaxWidth?: number;
73
221
  copiedTooltip?: ReactNode;
74
222
  tooltipClassName?: string;
75
223
  className?: string | ((copied: boolean) => string);
224
+ variant?: "plain" | "button";
225
+ /** Button intent, used with `variant="button"`. */
226
+ intent?: ButtonProps<"button">["intent"];
76
227
  onCopied?: () => void;
77
228
  onCopyError?: (error: unknown) => void;
78
229
  };
79
- declare function CopyButton({ value, children, copiedTimeoutMs, tooltip, copiedTooltip, tooltipClassName, className, onCopied, onCopyError, ...buttonProps }: CopyButtonProps): react_jsx_runtime.JSX.Element;
230
+ declare function CopyButton({ value, children, copiedTimeoutMs, tooltip, tooltipAlign, tooltipClampToViewport, tooltipMaxWidth, copiedTooltip, tooltipClassName, className, variant, intent, onCopied, onCopyError, ...buttonProps }: CopyButtonProps): react_jsx_runtime.JSX.Element;
80
231
 
81
- type ExternalLinkButtonProps = {
82
- theme: ThemeName;
83
- href: string;
232
+ type CopyFieldProps = Pick<CopyButtonProps, "value" | "onCopied" | "onCopyError" | "copiedTimeoutMs"> & {
233
+ /** Accessible name, e.g. "Copy secret key". */
234
+ label: string;
235
+ /** What to show; defaults to the value itself (lists pass a truncated form). */
236
+ display?: ReactNode;
237
+ className?: string;
238
+ };
239
+ /**
240
+ * A value the user copies but never edits: looks like a field, behaves like a
241
+ * button. The whole surface copies on click; the end icon confirms.
242
+ */
243
+ declare function CopyField({ value, label, display, className, ...copy }: CopyFieldProps): react_jsx_runtime.JSX.Element;
244
+
245
+ type InputProps = React.ComponentPropsWithoutRef<"input"> & {
246
+ error?: boolean;
247
+ hideNumberSteppers?: boolean;
248
+ };
249
+ declare const Input: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & {
250
+ error?: boolean;
251
+ hideNumberSteppers?: boolean;
252
+ } & react.RefAttributes<HTMLInputElement>>;
253
+
254
+ type EditableComboboxProps = Omit<InputProps, "onChange" | "value"> & {
255
+ value: string;
256
+ options: string[];
257
+ onChange: (value: string) => void;
258
+ emptyMessage?: string;
259
+ align?: "start" | "end";
260
+ open?: boolean;
261
+ onOpenChange?: (open: boolean) => void;
262
+ /** Controlled filter inputs can keep incomplete selections open. */
263
+ closeOnSelect?: boolean;
264
+ /**
265
+ * Content rendered inside the input shell before the text field. Enables
266
+ * the wrapped shell layout and replaces the standalone chevron trigger.
267
+ */
268
+ startContent?: ReactNode;
269
+ /** Optional class for the suggestions panel. */
270
+ contentClassName?: string;
271
+ };
272
+ type EditableComboboxTokenProps = Omit<ComponentPropsWithoutRef<"button">, "children" | "type"> & {
273
+ label: string;
274
+ value: string;
275
+ highlighted?: boolean;
276
+ };
277
+ /** Interactive filter token intended for an EditableCombobox startContent slot. */
278
+ declare function EditableComboboxToken({ label, value, highlighted, className, ...buttonProps }: EditableComboboxTokenProps): react_jsx_runtime.JSX.Element;
279
+ declare function EditableCombobox({ value, options, onChange, emptyMessage, align, open, onOpenChange, closeOnSelect, startContent, contentClassName, className, disabled, name, placeholder, required, ...inputProps }: EditableComboboxProps): react_jsx_runtime.JSX.Element;
280
+
281
+ type ExternalLinkButtonBaseProps = {
84
282
  size?: "sm" | "md" | "lg";
283
+ appearance?: ButtonAppearance;
284
+ intent?: ButtonProps["intent"];
285
+ /** Set false for another Pollinations property that should behave as product navigation. */
286
+ external?: boolean;
287
+ showIcon?: boolean;
288
+ /** Leading icon, rendered before the label. */
289
+ icon?: ReactNode;
85
290
  className?: string;
86
291
  children: ReactNode;
87
292
  };
88
- declare const ExternalLinkButton: FC<ExternalLinkButtonProps>;
293
+ type ExternalLinkButtonAnchorProps = ExternalLinkButtonBaseProps & {
294
+ href: string;
295
+ } & Omit<ComponentPropsWithoutRef<"a">, "children" | "className" | "href">;
296
+ type ExternalLinkButtonNativeButtonProps = ExternalLinkButtonBaseProps & Omit<ComponentPropsWithoutRef<"button">, "children" | "className">;
297
+ type ExternalLinkButtonProps = ExternalLinkButtonAnchorProps | ExternalLinkButtonNativeButtonProps;
298
+ /** Primary flow actions such as checkout or authorization. Use InlineLink for navigation. */
299
+ declare function ExternalLinkButton(props: ExternalLinkButtonProps): react_jsx_runtime.JSX.Element;
300
+
301
+ type FieldStackProps = {
302
+ /** Omit for a self-describing control; label the input itself. */
303
+ label?: ReactNode;
304
+ children: ReactNode;
305
+ helper?: ReactNode;
306
+ action?: ReactNode;
307
+ error?: ReactNode;
308
+ alignLabelRow?: boolean;
309
+ className?: string;
310
+ labelClassName?: string;
311
+ helperClassName?: string;
312
+ errorClassName?: string;
313
+ };
314
+ declare function FieldStack({ label, children, helper, action, error, alignLabelRow, className, labelClassName, helperClassName, errorClassName, }: FieldStackProps): react_jsx_runtime.JSX.Element;
89
315
 
90
316
  type RejectReason = "type" | "size" | "count";
91
317
  type RejectedFile = {
@@ -103,13 +329,13 @@ type FileUploadProps = {
103
329
  icon?: ReactNode;
104
330
  label?: ReactNode;
105
331
  previewIcon?: ReactNode;
332
+ /** Compact drop zone, or preview-only strip for a parent drop target. */
333
+ variant?: "default" | "compact" | "inline";
106
334
  /** Fully locks the field: no add, no remove, drops ignored. */
107
335
  disabled?: boolean;
108
- /** Optional cascade override; defaults to the inherited `[data-theme]`. */
109
- theme?: ThemeName;
110
336
  className?: string;
111
337
  };
112
- declare function FileUpload({ value, onChange, onReject, maxFiles, maxSizeBytes, accept, icon, label, previewIcon, disabled, theme, className, }: FileUploadProps): react_jsx_runtime.JSX.Element;
338
+ declare function FileUpload({ value, onChange, onReject, maxFiles, maxSizeBytes, accept, icon, label, previewIcon, variant, disabled, className, }: FileUploadProps): react_jsx_runtime.JSX.Element | null;
113
339
 
114
340
  type InfoTipProps = {
115
341
  text?: ReactNode;
@@ -119,16 +345,28 @@ type InfoTipProps = {
119
345
  /**
120
346
  * Small "i" badge that opens a tooltip on hover, click, or focus.
121
347
  *
122
- * Both the badge and the popup follow the page theme: badge reads
123
- * `bg-theme-bg-active`; popup uses the universal recipe via `<Tooltip>`
124
- * (`bg-theme-bg-pale` + `border-theme-border` + `text-theme-text-strong`,
125
- * viewport-clamped). Cursor on the badge is `cursor-help`.
348
+ * Quiet neutral badge and shared, viewport-clamped tooltip popup.
349
+ * The help cursor indicates that more information is available.
126
350
  */
127
351
  declare const InfoTip: FC<InfoTipProps>;
128
352
 
353
+ type KeyChipProps = {
354
+ /** The visible start of the key, e.g. "sk_0ysBCkH". */
355
+ prefix: string;
356
+ /** The full key, when known: the chip then copies it on click. */
357
+ value?: string | null;
358
+ /** Accessible name for the copy action. */
359
+ label?: string;
360
+ className?: string;
361
+ };
362
+ /**
363
+ * One badge for every key: prefix and ellipsis, nothing else. A secret key
364
+ * only ever shows its prefix; a key whose value is known copies on click and
365
+ * carries the clipboard icon.
366
+ */
367
+ declare function KeyChip({ prefix, value, label, className, }: KeyChipProps): react_jsx_runtime.JSX.Element;
368
+
129
369
  type BaseLinkCardProps = {
130
- /** Override the cascade theme for this card's subtree. */
131
- theme?: ThemeName;
132
370
  external?: boolean;
133
371
  showIcon?: boolean;
134
372
  className?: string;
@@ -137,21 +375,12 @@ type BaseLinkCardProps = {
137
375
  type LinkCardProps<T extends React.ElementType = "a"> = PropsWithChildren<BaseLinkCardProps> & {
138
376
  as?: T;
139
377
  } & Omit<React.ComponentPropsWithoutRef<T>, keyof BaseLinkCardProps | "as">;
140
- declare function LinkCard<T extends React.ElementType = "a">({ as, theme, external, showIcon, className, surfaceClassName, children, ...linkProps }: LinkCardProps<T>): react_jsx_runtime.JSX.Element;
141
-
142
- type MarkdownProps = {
143
- children: string;
144
- className?: string;
145
- };
146
- /** Compact markdown for cards and snippets. Use Prose for document-style content. */
147
- declare function Markdown({ children, className }: MarkdownProps): react_jsx_runtime.JSX.Element;
378
+ declare function LinkCard<T extends React.ElementType = "a">({ as, external, showIcon, className, surfaceClassName, children, ...linkProps }: LinkCardProps<T>): react_jsx_runtime.JSX.Element;
148
379
 
149
380
  type MediaPlaceholderProps = ComponentPropsWithoutRef<"div"> & {
150
- theme?: ThemeName;
151
381
  icon?: ReactNode;
152
382
  label?: ReactNode;
153
383
  detail?: ReactNode;
154
- action?: ReactNode;
155
384
  };
156
385
  declare const MediaPlaceholder: FC<MediaPlaceholderProps>;
157
386
 
@@ -166,57 +395,66 @@ type MultiSelectProps = {
166
395
  placeholder: string;
167
396
  disabled?: boolean;
168
397
  disabledText?: string;
398
+ disabledTooltip?: string;
169
399
  align?: "start" | "end";
170
400
  label?: string;
171
- theme: ThemeName;
401
+ /** Accessible name when the visible label is supplied by the caller. */
402
+ ariaLabel?: string;
403
+ /** Fill the available width, allowing the trigger label to truncate. */
404
+ fullWidth?: boolean;
172
405
  };
173
406
  declare const MultiSelect: FC<MultiSelectProps>;
174
407
 
175
408
  type BaseNavItemProps = {
176
- /** Section color via the `[data-theme]` cascade — tints the dot + active fill. */
177
- theme?: ThemeName;
178
- /** Current/selected item — fills with the section color + sets `aria-current`. */
409
+ /** Current/selected item — fills with the accent + sets `aria-current`. */
179
410
  active?: boolean;
411
+ /** Optional leading icon. */
412
+ icon?: ComponentType<{
413
+ className?: string;
414
+ }>;
180
415
  className?: string;
181
416
  };
182
417
  type NavItemProps<T extends React.ElementType = "button"> = PropsWithChildren<BaseNavItemProps> & {
183
418
  as?: T;
184
419
  } & Omit<React.ComponentPropsWithoutRef<T>, keyof BaseNavItemProps | "as">;
185
420
  /**
186
- * Minimal nav item — a themed pill with a persistent section-color dot, neutral
187
- * when inactive and filled with the section color when active. Polymorphic:
188
- * `<NavItem>` (button) for in-page nav, `<NavItem as={Link} active={…}>` for
189
- * routed nav. Mirrors enter's sidebar item so both apps share one design.
421
+ * Minimal nav item — a pill that's neutral when inactive and filled with the
422
+ * accent when active, with an optional leading icon. Polymorphic: `<NavItem>`
423
+ * (button) for in-page nav, `<NavItem as={Link} active={…}>` for routed nav.
424
+ * Shared by the enter dashboard rail and apps so both use one design.
190
425
  */
191
- declare function NavItem<T extends React.ElementType = "button">({ as, theme, active, className, children, ...rest }: NavItemProps<T>): react_jsx_runtime.JSX.Element;
426
+ declare function NavItem<T extends React.ElementType = "button">({ as, active, icon: Icon, className, children, ...rest }: NavItemProps<T>): react_jsx_runtime.JSX.Element;
192
427
 
193
428
  type PeriodGranularity = "day" | "week" | "month";
194
429
  type PeriodSelection = {
195
430
  granularity: PeriodGranularity;
196
431
  period: string;
197
432
  };
433
+ type PeriodWindow = {
434
+ start: Date;
435
+ end: Date;
436
+ };
437
+ declare function periodFromDate(granularity: PeriodGranularity, date?: Date): PeriodSelection;
198
438
  declare function currentPeriod(): PeriodSelection;
439
+ declare function periodToWindow(selection: PeriodSelection): PeriodWindow;
199
440
  declare function getPeriodBucketKeys(selection: PeriodSelection): string[];
200
441
  declare function periodBucketKeyToDate(bucketKey: string, granularity: PeriodGranularity): Date;
442
+ declare function isPeriodSelectable(selection: PeriodSelection, minDate?: Date, maxDate?: Date): boolean;
201
443
 
202
444
  type PeriodPickerProps = {
203
445
  value: PeriodSelection;
204
446
  onChange: (value: PeriodSelection) => void;
205
- theme: ThemeName;
206
447
  minDate?: Date;
207
448
  maxDate?: Date;
449
+ /** Custom trigger for a calendar with a fixed granularity. */
450
+ trigger?: (open: boolean) => ReactNode;
451
+ /** Optional controls above the calendar grid. */
452
+ header?: ReactNode;
208
453
  };
209
454
  declare const PeriodPicker: FC<PeriodPickerProps>;
210
455
 
211
- type ProseProps = {
212
- children: string;
213
- className?: string;
214
- };
215
- declare function Prose({ children, className }: ProseProps): react_jsx_runtime.JSX.Element;
216
-
217
456
  type SectionProps = {
218
457
  title: string;
219
- theme: ThemeName;
220
458
  id?: string;
221
459
  framed?: boolean;
222
460
  intro?: ReactNode;
@@ -239,7 +477,6 @@ type StatCardProps = {
239
477
  value: ReactNode;
240
478
  detail?: ReactNode;
241
479
  variant?: StatCardVariant;
242
- theme?: ThemeName;
243
480
  className?: string;
244
481
  labelClassName?: string;
245
482
  valueClassName?: string;
@@ -247,6 +484,19 @@ type StatCardProps = {
247
484
  };
248
485
  declare const StatCard: FC<StatCardProps>;
249
486
 
487
+ type ToolCallStatus = "pending" | "running" | "approval-requested" | "approval-responded" | "complete" | "error" | "denied";
488
+ interface ToolCallDetailsProps {
489
+ name: string;
490
+ input?: unknown;
491
+ output?: unknown;
492
+ error?: unknown;
493
+ status?: ToolCallStatus;
494
+ defaultOpen?: boolean;
495
+ className?: string;
496
+ }
497
+ /** Framework-neutral disclosure for server- or client-executed tool calls. */
498
+ declare function ToolCallDetails({ name, input, output, error, status, defaultOpen, className, }: ToolCallDetailsProps): react_jsx_runtime.JSX.Element;
499
+
250
500
  /** Class merge for apps consuming the unprefixed Tailwind bridge in app.css. */
251
501
  declare function cn(...inputs: (string | undefined | null | false)[]): string;
252
502
 
@@ -256,30 +506,7 @@ declare function cn(...inputs: (string | undefined | null | false)[]): string;
256
506
  */
257
507
  declare function useScrollLock(enabled?: boolean): void;
258
508
 
259
- /** Button only supports `danger`. Label/status color recipes live on Chip. */
260
- type ButtonIntent = "danger";
261
- declare const sizes: {
262
- readonly sm: "polli:px-2 polli:pt-0.5 polli:pb-1";
263
- readonly md: "polli:px-4 polli:pt-1.5 polli:pb-2";
264
- readonly lg: "polli:px-6 polli:py-3";
265
- };
266
- type BaseButtonProps = {
267
- /** Override the cascade theme for this button's subtree. Ignored when `intent` is set. */
268
- theme?: ThemeName;
269
- /** Only `"danger"` for now. */
270
- intent?: ButtonIntent;
271
- size?: keyof typeof sizes;
272
- className?: string;
273
- disabled?: boolean;
274
- };
275
- type ButtonProps<T extends React.ElementType = "button"> = PropsWithChildren<BaseButtonProps> & {
276
- as?: T;
277
- } & Omit<React.ComponentPropsWithoutRef<T>, keyof BaseButtonProps | "as">;
278
- declare function Button<T extends React.ElementType = "button">({ as, children, theme, intent, size, className, disabled, ...buttonProps }: ButtonProps<T>): react_jsx_runtime.JSX.Element;
279
-
280
- type ButtonGroupProps = ComponentPropsWithoutRef<"div"> & {
281
- wrap?: boolean;
282
- };
509
+ type ButtonGroupProps = ComponentPropsWithoutRef<"div">;
283
510
  declare const ButtonGroup: FC<ButtonGroupProps>;
284
511
 
285
512
  type ChevronIconProps = {
@@ -293,47 +520,56 @@ type ChevronIconProps = {
293
520
  */
294
521
  declare const ChevronIcon: FC<ChevronIconProps>;
295
522
 
296
- declare const sizeClasses: {
297
- readonly sm: "polli:max-w-md";
298
- readonly md: "polli:max-w-xl";
299
- readonly lg: "polli:max-w-2xl";
523
+ /**
524
+ * Light/dark colour mode. The chosen mode is reflected as `class="dark"` on
525
+ * <html>, which flips the design-system tokens (see styles/tokens.css: `.dark`
526
+ * + `.dark [data-theme]`). One shared module-level store backs every
527
+ * `useColorMode()` consumer, so duplicate toggles never desync and changes
528
+ * propagate across tabs.
529
+ *
530
+ * The chosen mode is persisted to localStorage (per-origin), which also powers
531
+ * the cross-tab `storage` sync below. Read priority: localStorage → system
532
+ * preference.
533
+ *
534
+ * Host apps should set the initial class pre-paint (a tiny inline script in the
535
+ * document head, reading the same key) to avoid a flash of light before React
536
+ * mounts; this store is the source of truth after hydration.
537
+ *
538
+ * Side-effect-free on import: the <html> sync and the cross-tab listener are
539
+ * attached lazily on first subscribe, so importing this module (e.g. via the
540
+ * package barrel) never mutates the DOM on its own.
541
+ */
542
+ type ColorMode = "light" | "dark";
543
+ /**
544
+ * Set the color mode programmatically. Updates the shared store (so every
545
+ * `useColorMode()` consumer re-renders), flips the `.dark` class, and persists
546
+ * to localStorage.
547
+ */
548
+ declare function setColorMode(mode: ColorMode): void;
549
+ declare function useColorMode(): {
550
+ mode: ColorMode;
551
+ isDark: boolean;
552
+ toggle: () => void;
300
553
  };
301
- type DialogProps = {
554
+ /**
555
+ * Sliding sun/moon switch. Light/dark is a two-state choice, not an on/off
556
+ * affordance, so this uses `Switch`'s shape but its own palette. The thumb
557
+ * carries the active mode's icon tinted with the accent (`text-soft`); the
558
+ * mode you'd switch to sits ghosted (faint neutral) on the
559
+ * empty side. Self-contained — wires itself to `useColorMode`.
560
+ */
561
+ declare const ColorModeToggle: FC;
562
+
563
+ type DrawerProps = {
302
564
  open: boolean;
303
- onOpenChange?: (open: boolean) => void;
304
- trigger?: ReactNode;
305
- triggerAsChild?: boolean;
306
- triggerClassName?: string;
307
- title?: ReactNode;
308
- titleClassName?: string;
309
- ariaLabel?: string;
310
- labelledBy?: string;
311
- theme?: ThemeName;
312
- size?: keyof typeof sizeClasses;
313
- showBackdrop?: boolean;
314
- backdropClassName?: string;
315
- positionerClassName?: string;
316
- contentClassName?: string;
565
+ onOpenChange: (open: boolean) => void;
566
+ ariaLabel: string;
317
567
  children: ReactNode;
568
+ side?: "left" | "right";
569
+ contentClassName?: string;
318
570
  };
319
- declare const Dialog: FC<DialogProps>;
320
- declare const DialogTitle: react.ForwardRefExoticComponent<Dialog$1.TitleProps & react.RefAttributes<HTMLHeadingElement>>;
321
-
322
- type DropdownProps = {
323
- theme: ThemeName;
324
- /** Trigger element; receives the current open state (e.g. to rotate a chevron). */
325
- trigger: (open: boolean) => ReactNode;
326
- /** Panel content. As a function, receives `close` to dismiss after a selection. */
327
- children: ReactNode | ((close: () => void) => ReactNode);
328
- /** Panel placement relative to the trigger. */
329
- align?: "start" | "end";
330
- /** Controlled open state. Omit to let the Dropdown manage its own. */
331
- open?: boolean;
332
- onOpenChange?: (open: boolean) => void;
333
- /** Appended after the surface (widths, padding, max-height…). */
334
- className?: string;
335
- };
336
- declare const Dropdown: FC<DropdownProps>;
571
+ /** Accessible side drawer for mobile navigation and compact tools. */
572
+ declare const Drawer: FC<DrawerProps>;
337
573
 
338
574
  type BaseDropdownItemProps = {
339
575
  className?: string;
@@ -343,82 +579,147 @@ type DropdownItemProps<T extends React.ElementType = "button"> = PropsWithChildr
343
579
  } & Omit<React.ComponentPropsWithoutRef<T>, keyof BaseDropdownItemProps | "as">;
344
580
  declare function DropdownItem<T extends React.ElementType = "button">({ as, className, children, ...rest }: DropdownItemProps<T>): react_jsx_runtime.JSX.Element;
345
581
 
346
- /** IconButton only supports `danger` (delete icons). */
347
- type IconButtonIntent = "danger";
348
- type IconButtonProps = {
582
+ declare const sizeClasses: {
583
+ readonly page: "polli:text-sm polli:tracking-widest polli:text-theme-text-soft";
584
+ readonly card: "polli:text-xs polli:tracking-wider polli:text-theme-text-soft";
585
+ readonly chrome: "polli:text-micro polli:tracking-widest polli:text-theme-text-muted";
586
+ };
587
+ type EyebrowOwnProps<T extends ElementType> = {
588
+ as?: T;
589
+ size?: keyof typeof sizeClasses;
590
+ className?: string;
591
+ children: ReactNode;
592
+ };
593
+ type EyebrowProps<T extends ElementType = "span"> = EyebrowOwnProps<T> & Omit<ComponentPropsWithoutRef<T>, keyof EyebrowOwnProps<T>>;
594
+ /** Uppercase pixel label for page, card, and chrome metadata. */
595
+ declare function Eyebrow<T extends ElementType = "span">({ as, size, className, children, ...rest }: EyebrowProps<T>): react_jsx_runtime.JSX.Element;
596
+
597
+ /** `danger` (delete, red) and `info` (edit/links, blue). */
598
+ type IconButtonIntent = "danger" | "info";
599
+ type IconButtonVariant = "tile" | "ghost";
600
+ type IconButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "className" | "title"> & {
349
601
  intent?: IconButtonIntent;
602
+ variant?: IconButtonVariant;
603
+ pressed?: boolean;
350
604
  title?: string;
351
- onClick: () => void;
605
+ tooltip?: ReactNode;
606
+ tooltipAlign?: "start" | "center";
607
+ tooltipClampToViewport?: boolean;
352
608
  children: ReactNode;
353
609
  className?: string;
610
+ size?: "sm" | "md";
354
611
  };
355
- declare const IconButton: FC<IconButtonProps>;
612
+ declare const IconButton: react.ForwardRefExoticComponent<Omit<ButtonHTMLAttributes<HTMLButtonElement>, "className" | "children" | "title"> & {
613
+ intent?: IconButtonIntent;
614
+ variant?: IconButtonVariant;
615
+ pressed?: boolean;
616
+ title?: string;
617
+ tooltip?: ReactNode;
618
+ tooltipAlign?: "start" | "center";
619
+ tooltipClampToViewport?: boolean;
620
+ children: ReactNode;
621
+ className?: string;
622
+ size?: "sm" | "md";
623
+ } & react.RefAttributes<HTMLButtonElement>>;
356
624
 
357
625
  type BaseInlineLinkProps = {
358
- /** Override the cascade theme for this link's subtree. */
359
- theme?: ThemeName;
360
626
  /** Set explicitly for non-http external links, or false for custom routing components. */
361
627
  external?: boolean;
362
628
  showIcon?: boolean;
629
+ /** Inline text inherits its size; footers use 13px and standalone links 14px. */
630
+ size?: "inherit" | "footer" | "sm";
631
+ /** Accent for prominent links; quiet for secondary navigation. */
632
+ tone?: "accent" | "quiet";
363
633
  className?: string;
364
634
  };
365
635
  type InlineLinkProps<T extends React.ElementType = "a"> = PropsWithChildren<BaseInlineLinkProps> & {
366
636
  as?: T;
367
637
  } & Omit<React.ComponentPropsWithoutRef<T>, keyof BaseInlineLinkProps | "as">;
368
- declare function InlineLink<T extends React.ElementType = "a">({ as, theme, external, showIcon, className, children, ...linkProps }: InlineLinkProps<T>): react_jsx_runtime.JSX.Element;
369
-
370
- type InputProps = React.ComponentPropsWithoutRef<"input"> & {
371
- error?: boolean;
372
- hideNumberSteppers?: boolean;
373
- };
374
- declare const Input: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & {
375
- error?: boolean;
376
- hideNumberSteppers?: boolean;
377
- } & react.RefAttributes<HTMLInputElement>>;
638
+ /** Shared text-link rule: surrounding font, selectable ink, persistent underline,
639
+ * visible keyboard focus, and an external arrow only when leaving the app.
640
+ * Navigation and button-shaped actions use their own primitives.
641
+ */
642
+ declare function InlineLink<T extends React.ElementType = "a">({ as, external, showIcon, size, tone, className, children, ...linkProps }: InlineLinkProps<T>): react_jsx_runtime.JSX.Element;
378
643
 
379
644
  /** Icons inherit color via currentColor and size via className or SVG props. */
380
645
  type IconProps = ComponentPropsWithoutRef<"svg">;
381
646
 
382
647
  declare function AppIcon(props: IconProps): react_jsx_runtime.JSX.Element;
648
+ declare function AccountIcon(props: IconProps): react_jsx_runtime.JSX.Element;
649
+ declare function ArrowRightIcon(props: IconProps): react_jsx_runtime.JSX.Element;
383
650
  declare function BeakerIcon(props: IconProps): react_jsx_runtime.JSX.Element;
651
+ declare function BotIcon(props: IconProps): react_jsx_runtime.JSX.Element;
384
652
  declare function BookIcon(props: IconProps): react_jsx_runtime.JSX.Element;
653
+ declare function BugIcon(props: IconProps): react_jsx_runtime.JSX.Element;
385
654
  declare function CheckIcon(props: IconProps): react_jsx_runtime.JSX.Element;
386
655
  declare function ClipboardIcon(props: IconProps): react_jsx_runtime.JSX.Element;
387
656
  declare function ClockIcon(props: IconProps): react_jsx_runtime.JSX.Element;
388
657
  declare function DiscordIcon(props: IconProps): react_jsx_runtime.JSX.Element;
658
+ declare function InstagramIcon(props: IconProps): react_jsx_runtime.JSX.Element;
659
+ declare function XSocialIcon(props: IconProps): react_jsx_runtime.JSX.Element;
660
+ declare function LinkedInIcon(props: IconProps): react_jsx_runtime.JSX.Element;
389
661
  declare function DownloadIcon(props: IconProps): react_jsx_runtime.JSX.Element;
662
+ declare function ExpandIcon(props: IconProps): react_jsx_runtime.JSX.Element;
663
+ declare function PlayIcon(props: IconProps): react_jsx_runtime.JSX.Element;
664
+ declare function PauseIcon(props: IconProps): react_jsx_runtime.JSX.Element;
665
+ declare function CloudUploadIcon(props: IconProps): react_jsx_runtime.JSX.Element;
390
666
  declare function ExternalLinkIcon(props: IconProps): react_jsx_runtime.JSX.Element;
391
667
  declare function GenApiIcon(props: IconProps): react_jsx_runtime.JSX.Element;
668
+ declare function GitBranchIcon(props: IconProps): react_jsx_runtime.JSX.Element;
669
+ declare function GitPullRequestIcon(props: IconProps): react_jsx_runtime.JSX.Element;
670
+ declare function GraduationCapIcon(props: IconProps): react_jsx_runtime.JSX.Element;
671
+ declare function SparklesIcon(props: IconProps): react_jsx_runtime.JSX.Element;
392
672
  declare function GitHubIcon(props: IconProps): react_jsx_runtime.JSX.Element;
393
673
  declare function ImageIcon(props: IconProps): react_jsx_runtime.JSX.Element;
674
+ declare function CubeIcon(props: IconProps): react_jsx_runtime.JSX.Element;
394
675
  declare function AudioIcon(props: IconProps): react_jsx_runtime.JSX.Element;
395
676
  declare function LockIcon(props: IconProps): react_jsx_runtime.JSX.Element;
677
+ declare function LogInIcon(props: IconProps): react_jsx_runtime.JSX.Element;
678
+ declare function LogOutIcon(props: IconProps): react_jsx_runtime.JSX.Element;
396
679
  declare function MailIcon(props: IconProps): react_jsx_runtime.JSX.Element;
397
680
  declare function McpIcon(props: IconProps): react_jsx_runtime.JSX.Element;
398
681
  declare function MenuIcon(props: IconProps): react_jsx_runtime.JSX.Element;
682
+ declare function NewspaperIcon(props: IconProps): react_jsx_runtime.JSX.Element;
399
683
  declare function PlusIcon(props: IconProps): react_jsx_runtime.JSX.Element;
400
684
  declare function TerminalIcon(props: IconProps): react_jsx_runtime.JSX.Element;
685
+ declare function ToolIcon(props: IconProps): react_jsx_runtime.JSX.Element;
686
+ declare function TargetIcon(props: IconProps): react_jsx_runtime.JSX.Element;
401
687
  declare function TokensIcon(props: IconProps): react_jsx_runtime.JSX.Element;
688
+ declare function UsageIcon(props: IconProps): react_jsx_runtime.JSX.Element;
689
+ declare function WarningIcon(props: IconProps): react_jsx_runtime.JSX.Element;
402
690
  declare function TrendUpIcon(props: IconProps): react_jsx_runtime.JSX.Element;
691
+ declare function EarningsIcon(props: IconProps): react_jsx_runtime.JSX.Element;
403
692
  declare function WalletIcon(props: IconProps): react_jsx_runtime.JSX.Element;
693
+ declare function MoonIcon(props: IconProps): react_jsx_runtime.JSX.Element;
694
+ declare function SunIcon(props: IconProps): react_jsx_runtime.JSX.Element;
404
695
  declare function XIcon(props: IconProps): react_jsx_runtime.JSX.Element;
405
-
406
- type ScrollAxis = "y" | "x";
407
- type ScrollAreaOwnProps = {
408
- /** Override the ambient cascade theme for this scroller's thumb. */
409
- theme?: ThemeName;
410
- /** Scroll direction. Default `y`. */
411
- axis?: ScrollAxis;
412
- className?: string;
413
- };
414
- type ScrollAreaProps = PropsWithChildren<ScrollAreaOwnProps & Omit<ComponentPropsWithoutRef<"div">, keyof ScrollAreaOwnProps>>;
415
- /**
416
- * Themed auto-hide scroll container. Thumb color follows the nearest
417
- * `[data-theme="..."]` ancestor; pass `theme` to override locally.
418
- */
419
- declare const ScrollArea: react.ForwardRefExoticComponent<ScrollAreaOwnProps & Omit<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, keyof ScrollAreaOwnProps> & {
420
- children?: react.ReactNode | undefined;
421
- } & react.RefAttributes<HTMLDivElement>>;
696
+ declare function TrashIcon(props: IconProps): react_jsx_runtime.JSX.Element;
697
+ declare function ChatIcon(props: IconProps): react_jsx_runtime.JSX.Element;
698
+ declare function RobotIcon(props: IconProps): react_jsx_runtime.JSX.Element;
699
+ declare function EyeIcon(props: IconProps): react_jsx_runtime.JSX.Element;
700
+ declare function EyeOffIcon(props: IconProps): react_jsx_runtime.JSX.Element;
701
+ declare function VideoIcon(props: IconProps): react_jsx_runtime.JSX.Element;
702
+ declare function MicIcon(props: IconProps): react_jsx_runtime.JSX.Element;
703
+ declare function SpeakerIcon(props: IconProps): react_jsx_runtime.JSX.Element;
704
+ declare function MegaphoneIcon(props: IconProps): react_jsx_runtime.JSX.Element;
705
+ declare function ReasoningIcon(props: IconProps): react_jsx_runtime.JSX.Element;
706
+ declare function RocketIcon(props: IconProps): react_jsx_runtime.JSX.Element;
707
+ declare function SearchIcon(props: IconProps): react_jsx_runtime.JSX.Element;
708
+ declare function SignOutIcon(props: IconProps): react_jsx_runtime.JSX.Element;
709
+ declare function PowerIcon(props: IconProps): react_jsx_runtime.JSX.Element;
710
+ declare function SparkleIcon(props: IconProps): react_jsx_runtime.JSX.Element;
711
+ declare function StarIcon({ filled, ...props }: IconProps & {
712
+ filled?: boolean;
713
+ }): react_jsx_runtime.JSX.Element;
714
+ declare function CodeIcon(props: IconProps): react_jsx_runtime.JSX.Element;
715
+ declare function DatabaseIcon(props: IconProps): react_jsx_runtime.JSX.Element;
716
+ declare function CardIcon(props: IconProps): react_jsx_runtime.JSX.Element;
717
+ declare function SproutIcon(props: IconProps): react_jsx_runtime.JSX.Element;
718
+ declare function PencilIcon(props: IconProps): react_jsx_runtime.JSX.Element;
719
+ declare function KeyIcon(props: IconProps): react_jsx_runtime.JSX.Element;
720
+ declare function GlobeIcon(props: IconProps): react_jsx_runtime.JSX.Element;
721
+ declare function ArrowLeftIcon(props: IconProps): react_jsx_runtime.JSX.Element;
722
+ declare function RefreshIcon(props: IconProps): react_jsx_runtime.JSX.Element;
422
723
 
423
724
  type SliderProps = Omit<React.ComponentPropsWithoutRef<"input">, "type"> & {
424
725
  /** Fill percentage from 0-100. Falls back to value/min/max when omitted. */
@@ -431,19 +732,24 @@ declare const Slider: react.ForwardRefExoticComponent<Omit<Omit<react.DetailedHT
431
732
 
432
733
  type SurfaceVariant = "panel" | "card" | "card-themed";
433
734
  type SurfaceOwnProps = {
434
- /** Override the cascade theme for this surface's subtree. */
435
- theme?: ThemeName;
436
735
  /**
437
- * Visual role.
438
- * - `panel` — outer container: bordered, semi-transparent theme bg
439
- * - `card` — borderless white inner (default)
440
- * - `card-themed` — borderless theme-tinted inner (deeper than panel)
736
+ * Depth role (all opaque, elevation via shadow not borders):
737
+ * - `panel` — Level 1 container: themed bg, container shadow
738
+ * - `card` — Level 2 well: neutral surface, well shadow (default)
739
+ * - `card-themed` — themed well: theme-tinted, well shadow
441
740
  */
442
741
  variant?: SurfaceVariant;
443
742
  className?: string;
444
743
  };
445
- type SurfaceProps = PropsWithChildren<SurfaceOwnProps & Omit<ComponentPropsWithoutRef<"div">, keyof SurfaceOwnProps | "color">>;
446
- declare const Surface: FC<SurfaceProps>;
744
+ /**
745
+ * Polymorphic like Button, TabButton and LinkCard, so a card that is itself a
746
+ * link renders one element instead of an anchor wrapping a div. Defaults to
747
+ * <div>, so existing call sites are unchanged.
748
+ */
749
+ type SurfaceProps<T extends ElementType = "div"> = SurfaceOwnProps & {
750
+ as?: T;
751
+ } & Omit<ComponentPropsWithoutRef<T>, keyof SurfaceOwnProps | "as" | "color">;
752
+ declare function Surface<T extends ElementType = "div">({ as, variant, className, children, ...rest }: SurfaceProps<T>): react_jsx_runtime.JSX.Element;
447
753
 
448
754
  type SwitchStatus = "off" | "on" | "invalid";
449
755
  type SwitchProps = {
@@ -458,36 +764,46 @@ type SwitchProps = {
458
764
  };
459
765
  /**
460
766
  * Binary toggle primitive. Universal palette — does NOT follow the page
461
- * theme. Three states: off (white), on (soft green), invalid (soft red,
462
- * for "enabled but needs attention").
767
+ * theme. Light thumb in both modes; track states: off (grey), on (green),
768
+ * invalid (red, for "enabled but needs attention").
463
769
  *
464
770
  * `checked` drives thumb position; `status` drives track colour. So
465
771
  * `checked={true} status="invalid"` renders thumb-right with a red track.
466
772
  */
467
773
  declare const Switch: FC<SwitchProps>;
468
774
 
469
- type TabButtonProps = {
775
+ type TabButtonOwnProps = {
470
776
  active: boolean;
471
- onClick: () => void;
777
+ /** Omit when rendering as a link (`as`) and navigation carries the change. */
778
+ onClick?: () => void;
472
779
  children: ReactNode;
473
- /** Optional cascade override; defaults to inherited [data-theme]. */
474
- theme?: ThemeName;
475
- size?: "md" | "sm";
476
- variant?: "default" | "ghost";
780
+ size?: "lg" | "md" | "sm" | "xs";
781
+ variant?: "soft" | "ghost";
782
+ intent?: "neutral";
477
783
  ariaLabel?: string;
478
784
  disabled?: boolean;
479
785
  className?: string;
480
786
  };
481
- declare const TabButton: FC<TabButtonProps>;
787
+ /**
788
+ * Polymorphic like Button, so a tab that navigates can render a real anchor
789
+ * instead of a click handler — middle-click, right-click and crawlers all
790
+ * depend on that. Defaults to <button>, so existing call sites are unchanged.
791
+ */
792
+ type TabButtonProps<T extends ElementType = "button"> = TabButtonOwnProps & {
793
+ as?: T;
794
+ } & Omit<ComponentPropsWithoutRef<T>, keyof TabButtonOwnProps | "as">;
795
+ declare function TabButton<T extends ElementType = "button">({ as, active, onClick, children, size, variant, intent, ariaLabel, disabled, className, ...rest }: TabButtonProps<T>): react_jsx_runtime.JSX.Element;
482
796
 
483
797
  type Align = "left" | "center" | "right";
484
- type RowIntent = "default" | "success" | "warning" | "danger";
798
+ type RowIntent = "default" | "warning" | "danger";
485
799
  type SortDirection = "asc" | "desc";
486
800
  type TableProps = ComponentPropsWithoutRef<"table">;
487
801
  declare const Table: FC<TableProps>;
488
802
  type TableHeadProps = ComponentPropsWithoutRef<"thead">;
489
803
  declare const TableHead: FC<TableHeadProps>;
490
- type TableBodyProps = ComponentPropsWithoutRef<"tbody">;
804
+ type TableBodyProps = ComponentPropsWithoutRef<"tbody"> & {
805
+ divider?: "themed" | "neutral";
806
+ };
491
807
  declare const TableBody: FC<TableBodyProps>;
492
808
  type TableRowProps = ComponentPropsWithoutRef<"tr"> & {
493
809
  intent?: RowIntent;
@@ -508,6 +824,16 @@ type TableCellProps = ComponentPropsWithoutRef<"td"> & {
508
824
  };
509
825
  declare const TableCell: FC<TableCellProps>;
510
826
 
827
+ type TableDisclosureButtonProps = {
828
+ children: ReactNode;
829
+ disabled?: boolean;
830
+ expanded: boolean;
831
+ onClick: () => void;
832
+ className?: string;
833
+ };
834
+ /** Compact disclosure trigger for expandable table rows. */
835
+ declare const TableDisclosureButton: FC<TableDisclosureButtonProps>;
836
+
511
837
  type TextareaProps = React.ComponentPropsWithoutRef<"textarea"> & {
512
838
  error?: boolean;
513
839
  };
@@ -518,10 +844,15 @@ declare const Textarea: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLP
518
844
  type TooltipProps = {
519
845
  children: ReactNode;
520
846
  content: ReactNode;
847
+ align?: "start" | "center";
521
848
  ariaLabel?: string;
849
+ clampToViewport?: boolean;
522
850
  className?: string;
851
+ maxWidth?: number;
523
852
  onClick?: () => void;
853
+ stopClickPropagation?: boolean;
524
854
  style?: CSSProperties;
855
+ tapEnabled?: boolean;
525
856
  triggerAs?: "button" | "span";
526
857
  /**
527
858
  * When true, the inner cursor wrapper uses display:contents so the
@@ -536,13 +867,6 @@ type HeadingSize = "display" | "title" | "section" | "subsection" | "card";
536
867
  type TextSize = "body" | "sm" | "xs" | "micro";
537
868
  type TextTone = "base" | "strong" | "soft" | "muted";
538
869
  type TextWeight = "normal" | "medium" | "semibold" | "bold";
539
- declare function headingClassName(size: HeadingSize, className?: string): string;
540
- declare function textClassName({ size, tone, weight, className, }: {
541
- size: TextSize;
542
- tone: TextTone;
543
- weight: TextWeight;
544
- className?: string;
545
- }): string;
546
870
  type HeadingOwnProps<T extends ElementType> = PropsWithChildren<{
547
871
  as?: T;
548
872
  size?: HeadingSize;
@@ -560,4 +884,4 @@ type TextOwnProps<T extends ElementType> = PropsWithChildren<{
560
884
  type TextProps<T extends ElementType = "p"> = TextOwnProps<T> & Omit<ComponentPropsWithoutRef<T>, keyof TextOwnProps<T>>;
561
885
  declare function Text<T extends ElementType = "p">({ as, size, tone, weight, className, children, ...rest }: TextProps<T>): react_jsx_runtime.JSX.Element;
562
886
 
563
- export { Alert, type AlertProps, AppHeader, type AppHeaderProps, AppIcon, AudioIcon, BeakerIcon, BookIcon, Button, ButtonGroup, type ButtonGroupProps, type ButtonProps, CheckIcon, ChevronIcon, ClipboardIcon, ClockIcon, CodeBlock, type CodeBlockProps, Collapsible, type CollapsibleProps, CopyButton, type CopyButtonProps, Dialog, type DialogProps, DialogTitle, DiscordIcon, DownloadIcon, Dropdown, DropdownItem, type DropdownItemProps, type DropdownProps, ExternalLinkButton, type ExternalLinkButtonProps, ExternalLinkIcon, FileUpload, type FileUploadProps, GenApiIcon, GitHubIcon, Heading, type HeadingProps, type HeadingSize, IconButton, type IconProps, ImageIcon, InfoTip, InlineLink, type InlineLinkProps, Input, type InputProps, LinkCard, type LinkCardProps, LockIcon, MailIcon, Markdown, type MarkdownProps, McpIcon, MediaPlaceholder, type MediaPlaceholderProps, MenuIcon, MultiSelect, type MultiSelectProps, NavItem, type NavItemProps, type PeriodGranularity, PeriodPicker, type PeriodPickerProps, type PeriodSelection, PlusIcon, Prose, type ProseProps, type RejectReason, type RejectedFile, ScrollArea, type ScrollAreaProps, Section, type SectionProps, Slider, type SliderProps, StatCard, type StatCardProps, Surface, Switch, type SwitchProps, type SwitchStatus, TabButton, type TabButtonProps, Table, TableBody, type TableBodyProps, TableCell, type TableCellProps, TableHead, type TableHeadProps, TableHeaderCell, type TableHeaderCellProps, type TableProps, TableRow, type TableRowProps, TerminalIcon, Text, type TextProps, type TextSize, type TextTone, type TextWeight, Textarea, type TextareaProps, ThemeName, TokensIcon, Tooltip, TrendUpIcon, WalletIcon, XIcon, cn, currentPeriod, getPeriodBucketKeys, headingClassName, periodBucketKeyToDate, textClassName, useScrollLock };
887
+ export { AccountIcon, AccountIdentity, type AccountIdentityProps, AccountMenu, type AccountMenuProps, Alert, type AlertProps, AppHeader, type AppHeaderProps, AppIcon, ArrowLeftIcon, ArrowRightIcon, AudioIcon, BeakerIcon, BookIcon, BotIcon, BugIcon, ButtonAppearance, ButtonGroup, type ButtonGroupProps, ButtonProps, Callout, type CalloutProps, CardIcon, ChatConversation, ChatConversationContent, type ChatConversationContentProps, type ChatConversationProps, ChatIcon, ChatMessage, ChatMessageActions, type ChatMessageActionsProps, ChatMessageContent, type ChatMessageContentProps, ChatMessageHeader, type ChatMessageHeaderProps, type ChatMessageProps, type ChatMessageRole, ChatPromptInput, ChatPromptInputFooter, type ChatPromptInputFooterProps, type ChatPromptInputProps, ChatPromptTextarea, CheckIcon, ChevronIcon, ClipboardIcon, ClockIcon, CloudUploadIcon, CodeBlock, type CodeBlockProps, CodeIcon, Collapsible, type CollapsibleProps, ColorModeToggle, ConfirmationDialog, type ConfirmationDialogProps, ContentHeader, type ContentHeaderProps, CopyButton, type CopyButtonProps, CopyField, type CopyFieldProps, CubeIcon, DatabaseIcon, DialogProps, DiscordIcon, DownloadIcon, Drawer, type DrawerProps, Dropdown, DropdownItem, type DropdownItemProps, type DropdownProps, EarningsIcon, EditableCombobox, type EditableComboboxProps, EditableComboboxToken, type EditableComboboxTokenProps, ExpandIcon, ExternalLinkButton, type ExternalLinkButtonProps, ExternalLinkIcon, EyeIcon, EyeOffIcon, Eyebrow, type EyebrowProps, FieldStack, type FieldStackProps, FileUpload, type FileUploadProps, GenApiIcon, GitBranchIcon, GitHubIcon, GitPullRequestIcon, GlobeIcon, GraduationCapIcon, Heading, type HeadingProps, IconButton, type IconButtonIntent, type IconButtonProps, type IconButtonVariant, type IconProps, ImageIcon, InfoTip, InlineLink, type InlineLinkProps, Input, type InputProps, InstagramIcon, KeyChip, type KeyChipProps, KeyIcon, LinkCard, type LinkCardProps, LinkedInIcon, LockIcon, LogInIcon, LogOutIcon, MailIcon, McpIcon, MediaPlaceholder, type MediaPlaceholderProps, MegaphoneIcon, MenuIcon, MicIcon, MoonIcon, MultiSelect, type MultiSelectProps, NavItem, type NavItemProps, NewspaperIcon, PauseIcon, PencilIcon, type PeriodGranularity, PeriodPicker, type PeriodPickerProps, type PeriodSelection, PlayIcon, PlusIcon, PowerIcon, ReasoningIcon, RefreshIcon, RobotIcon, RocketIcon, ScrollAreaProps, SearchIcon, Section, type SectionProps, SignOutIcon, Slider, type SliderProps, SparkleIcon, SparklesIcon, SpeakerIcon, SproutIcon, StarIcon, StatCard, type StatCardProps, SunIcon, Surface, type SurfaceProps, Switch, type SwitchProps, type SwitchStatus, TabButton, type TabButtonProps, Table, TableBody, type TableBodyProps, TableCell, type TableCellProps, TableDisclosureButton, type TableDisclosureButtonProps, TableHead, type TableHeadProps, TableHeaderCell, type TableHeaderCellProps, type TableProps, TableRow, type TableRowProps, TargetIcon, TerminalIcon, Text, type TextProps, Textarea, type TextareaProps, TokensIcon, ToolCallDetails, type ToolCallDetailsProps, type ToolCallStatus, ToolIcon, Tooltip, TrashIcon, TrendUpIcon, UsageIcon, VideoIcon, WalletIcon, WarningIcon, XIcon, XSocialIcon, cn, currentPeriod, getPeriodBucketKeys, isPeriodSelectable, periodBucketKeyToDate, periodFromDate, periodToWindow, setColorMode, useColorMode, useScrollLock };