@lukeashford/aurelius 4.8.0 → 4.10.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.
package/dist/index.d.mts CHANGED
@@ -1535,9 +1535,13 @@ interface Deliverable {
1535
1535
  clientName?: string | null;
1536
1536
  /** Optional accent hex color (e.g. "#fecb6b"). Falls back to design-system gold. */
1537
1537
  accentColor?: string | null;
1538
+ /** Optional theme preset. Defaults to `cinematic` when omitted. */
1539
+ theme?: DeliverableTheme | null;
1538
1540
  /** Ordered sections. Render in array order. */
1539
1541
  sections: DeliverableSection[];
1540
1542
  }
1543
+ /** Document-level visual identity preset. */
1544
+ type DeliverableTheme = 'cinematic' | 'editorial' | 'minimal' | 'playful';
1541
1545
  /**
1542
1546
  * Discriminated union of section types. Each variant has a matching renderer
1543
1547
  * in aurelius — the agent fills the spec, never raw layout instructions.
@@ -1554,14 +1558,39 @@ interface ArtifactImageGridSection$1 {
1554
1558
  heading?: string | null;
1555
1559
  /** 1, 2 or 3. */
1556
1560
  columns: number;
1561
+ /**
1562
+ * Aspect ratio applied to every image in the grid. Defaults to `landscape`
1563
+ * when omitted.
1564
+ */
1565
+ aspectRatio?: ImageGridAspectRatio | null;
1557
1566
  items: DeliverableImageItem[];
1558
1567
  }
1568
+ /**
1569
+ * Allowed values for {@link ArtifactImageGridSection.aspectRatio}. Each
1570
+ * controls a single CSS `aspect-ratio` applied uniformly across the grid:
1571
+ * `landscape` → 4:3, `portrait` → 3:4, `square` → 1:1, `wide` → 16:9.
1572
+ */
1573
+ type ImageGridAspectRatio = 'landscape' | 'portrait' | 'square' | 'wide';
1559
1574
  interface ArtifactSpotlightSection$1 {
1560
1575
  type: 'ARTIFACT_SPOTLIGHT';
1561
1576
  heading?: string | null;
1562
1577
  artifact: DeliverableArtifactRef;
1563
1578
  body?: string | null;
1579
+ /**
1580
+ * Layout variant. Defaults to `framed` when omitted.
1581
+ */
1582
+ variant?: SpotlightVariant | null;
1564
1583
  }
1584
+ /**
1585
+ * Allowed values for {@link ArtifactSpotlightSection.variant}.
1586
+ * `framed` → image above body (default).
1587
+ * `full-bleed` → image claims a full edge-to-edge page in print; the
1588
+ * heading and body are suppressed in print so the image
1589
+ * alone carries the page. Use sparingly — once or twice
1590
+ * per deck — for the marquee moment.
1591
+ * `side-by-side` → image left, body right on the same page.
1592
+ */
1593
+ type SpotlightVariant = 'framed' | 'full-bleed' | 'side-by-side';
1565
1594
  interface TextBlockSection$1 {
1566
1595
  type: 'TEXT_BLOCK';
1567
1596
  heading?: string | null;
@@ -1648,7 +1677,8 @@ interface ArtifactSpotlightSectionProps {
1648
1677
  }
1649
1678
  /**
1650
1679
  * A single hero artifact image with optional prose alongside. Reads at full
1651
- * page width on screen and prints to a single page.
1680
+ * page width on screen and prints to a single page (or a full-bleed page for
1681
+ * the `full-bleed` variant).
1652
1682
  */
1653
1683
  declare function ArtifactSpotlightSection({ data }: ArtifactSpotlightSectionProps): React$1.JSX.Element;
1654
1684
 
@@ -1882,6 +1912,24 @@ interface Conversation {
1882
1912
  */
1883
1913
  isActive?: boolean;
1884
1914
  }
1915
+ /**
1916
+ * Imperative API exposed by `ChatInterface` via its forwarded ref. Use this from
1917
+ * call sites that need to drive the chat from outside React state — typically
1918
+ * to surface an artifact when the user clicks a `MentionChip` or other
1919
+ * cross-surface pointer. Attach with
1920
+ * `useRef<ChatInterfaceHandle>(null)` and read `ref.current?.openArtifact(name)`.
1921
+ */
1922
+ interface ChatInterfaceHandle {
1923
+ /**
1924
+ * Open the artifact lightbox for the given artifact name. Ensures the
1925
+ * artifacts panel is open (overriding any prior dismissal) before
1926
+ * surfacing the lightbox, since the lightbox renders inside the panel.
1927
+ * If the name is not present in the current artifact tree, the call is a
1928
+ * no-op — the chip's leading icon already signals unknown / stale
1929
+ * references via `HelpCircle`.
1930
+ */
1931
+ openArtifact(name: string): void;
1932
+ }
1885
1933
  interface ChatInterfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onSubmit'> {
1886
1934
  /**
1887
1935
  * Array of messages in the conversation (flat mode)
@@ -2109,7 +2157,7 @@ interface ChatInterfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
2109
2157
  * Artifacts are supplied as a tree of ArtifactNode objects via the
2110
2158
  * artifactNodes prop.
2111
2159
  */
2112
- declare const ChatInterface: React$1.ForwardRefExoticComponent<ChatInterfaceProps & React$1.RefAttributes<HTMLDivElement>>;
2160
+ declare const ChatInterface: React$1.ForwardRefExoticComponent<ChatInterfaceProps & React$1.RefAttributes<ChatInterfaceHandle>>;
2113
2161
 
2114
2162
  /**
2115
2163
  * What kind of project mutation produced this checkpoint. Drives the icon and
@@ -2831,4 +2879,4 @@ declare function getTextareaCaretCoords(textarea: HTMLTextAreaElement): Textarea
2831
2879
 
2832
2880
  declare const version = "2.0.0";
2833
2881
 
2834
- export { ARTIFACT_TYPES, Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, type AddNodeOptions, Alert, AlertDialog, type AlertDialogProps, type AlertProps, type AlertVariant, type Artifact, ArtifactCard, type ArtifactCardProps, ArtifactGroup, type ArtifactGroupProps, ArtifactImageGridSection, type ArtifactImageGridSectionProps, type ArtifactNode, ArtifactSpotlightSection, type ArtifactSpotlightSectionProps, type ArtifactType, ArtifactVariantStack, type ArtifactVariantStackProps, ArtifactsPanel, type ArtifactsPanelProps, ArtifactsPanelToggle, type ArtifactsPanelToggleProps, type AspectRatio, type AspectRatioPreset, type Attachment, type AttachmentItem, AttachmentPreview, type AttachmentPreviewProps, type AttachmentStatus, AudioCard, type AudioCardProps, Avatar, type AvatarProps, type AvatarSize, Badge, type BadgeProps, type BadgeVariant, BranchNavigator, type BranchNavigatorProps, BrandIcon, type BrandIconProps, type BrandIconSize, type BrandIconVariant, Breadcrumb, type BreadcrumbEntry, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, type BreadcrumbProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Card, type CardBodyProps, type CardFooterProps, type CardHeaderProps, type CardMediaProps, type CardProps, type CardVariant, ChatBubbleIcon, ChatInput, type ChatInputNotice, type ChatInputPosition, type ChatInputProps, ChatInterface, type ChatInterfaceProps, type ChatNode, ChatView, type ChatViewCheckpointItem, type ChatViewDividerItem, type ChatViewItem, type ChatViewMessageItem, type ChatViewProps, CheckSquareIcon, Checkbox, type CheckboxProps, Checkpoint, type CheckpointBranchInfo, type CheckpointExecutionKind, type CheckpointNode, type CheckpointProps, type CheckpointStatus, ChevronLeftIcon, ChevronRightIcon, CloseIcon, Col, type ColOffset, type ColOrder, type ColProps, type ColSpan, ColorPaletteSection, type ColorPaletteSectionProps, ColorSwatch, type ColorSwatchProps, Combobox, type ComboboxNav, type ComboboxProps, ConfirmDialog, type ConfirmDialogProps, Container, type ContainerProps, type ContainerSize, type Conversation, type ConversationTree, CoverSection, type CoverSectionProps, CrossSquareIcon, type Deliverable, type DeliverableArtifactRef, DeliverableCard, type DeliverableCardProps, type DeliverableImageItem, DeliverableRenderer, type DeliverableRendererProps, type DeliverableSection, type DeliverableSwatch, Divider, type DividerProps, Drawer, type DrawerPosition, type DrawerProps, EmptySquareIcon, ExpandIcon, type ExternalToolDefinition, FileChip, type FileChipProps, type FileChipStatus, GreyedDivider, type GreyedDividerProps, HelperText, type HelperTextProps, HistoryIcon, HistoryPanel, type HistoryPanelProps, type IconProps, ImageCard, type ImageCardProps, Input, type InputAddonProps, type InputElementProps, InputGroup, type InputGroupProps, InputLeftAddon, InputLeftElement, type InputProps, InputRightAddon, InputRightElement, InputWrapper, type InputWrapperProps, Label, type LabelProps, LayersIcon, Lightbox, type LightboxProps, List, ListItem, type ListItemProps, ListItemText, type ListItemTextProps, type ListProps, ListSubheader, type ListSubheaderProps, MarkdownContent, type MarkdownContentProps, MediaIcon, MentionChip, type MentionChipProps, Menu, MenuContent, type MenuContentProps, MenuItem, type MenuItemProps, MenuLabel, type MenuProps, MenuSeparator, MenuTrigger, type MenuTriggerProps, Message, MessageActions, type MessageActionsConfig, type MessageActionsProps, type MessageActionsVariant, type MessageBranchInfo, type MessageNode, type MessageProps, type MessageVariant, Modal, type ModalProps, NODE_TYPES, Navbar, NavbarBrand, type NavbarBrandProps, NavbarContent, type NavbarContentProps, NavbarDivider, NavbarItem, type NavbarItemProps, NavbarLink, type NavbarLinkProps, type NavbarProps, type NodeTopology, type NodeType, Pagination, type PaginationProps, PdfCard, type PdfCardProps, PlusIcon, Popover, type PopoverAlign, type PopoverPosition, type PopoverProps, Progress, type ProgressProps, PromptDialog, type PromptDialogProps, QuoteBlockSection, type QuoteBlockSectionProps, Radio, type RadioProps, Row, type RowAlign, type RowGutter, type RowJustify, type RowProps, SCRIPT_ELEMENT_TYPES, ScriptCard, type ScriptCardProps, type ScriptElement, type ScriptElementType, SectionHeading, type SectionHeadingLevel, type SectionHeadingProps, Select, type SelectOption, type SelectProps, Skeleton, type SkeletonProps, Slider, type SliderProps, Spinner, type SpinnerProps, SquareLoaderIcon, Stack, type StackDirection, type StackGap, type StackProps, type Step, type StepStatus, Stepper, type StepperProps, StreamingCursor, type StreamingCursorProps, Switch, type SwitchProps, TASK_STATUSES, Tab, TabList, type TabListProps, TabPanel, type TabPanelProps, type TabProps, Table, TableBody, type TableBodyProps, TableCaption, type TableCaptionProps, TableCell, type TableCellProps, TableFooter, type TableFooterProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowProps, Tabs, type TabsProps, type Task, type TaskStatus, TextBlockSection, type TextBlockSectionProps, TextCard, type TextCardProps, Textarea, type TextareaCaretCoords, type TextareaProps, ThinkingIndicator, type ThinkingIndicatorProps, type ToastData, type ToastPosition, ToastProvider, type ToastProviderProps, type ToastVariant, TodosList, type TodosListProps, type ToolDefinition, type ToolGroup, ToolPanelContainer, type ToolPanelContainerProps, type ToolPanelState, ToolSidebar, type ToolSidebarProps, Tooltip, type TooltipProps, type TreeNode, type UseArtifactTreeNavigationReturn, type UseComboboxNavOptions, type UseScrollAnchorOptions, type UseScrollAnchorReturn, type VideoAspectRatio, type VideoAspectRatioPreset, VideoCard, type VideoCardProps, addNodeToTree, areAllTasksSettled, createEmptyTree, createPreviewUrl, findAncestor, generateId, getActivePath, getGreyedFuture, getSiblingInfo, getTextareaCaretCoords, isBranchPoint, isImageFile, messagesToTree, revokePreviewUrl, setActiveLeaf, switchBranch, updateMessageContent, useArtifactTreeNavigation, useComboboxNav, useResizable, useScrollAnchor, useToast, version };
2882
+ export { ARTIFACT_TYPES, Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, type AddNodeOptions, Alert, AlertDialog, type AlertDialogProps, type AlertProps, type AlertVariant, type Artifact, ArtifactCard, type ArtifactCardProps, ArtifactGroup, type ArtifactGroupProps, ArtifactImageGridSection, type ArtifactImageGridSectionProps, type ArtifactNode, ArtifactSpotlightSection, type ArtifactSpotlightSectionProps, type ArtifactType, ArtifactVariantStack, type ArtifactVariantStackProps, ArtifactsPanel, type ArtifactsPanelProps, ArtifactsPanelToggle, type ArtifactsPanelToggleProps, type AspectRatio, type AspectRatioPreset, type Attachment, type AttachmentItem, AttachmentPreview, type AttachmentPreviewProps, type AttachmentStatus, AudioCard, type AudioCardProps, Avatar, type AvatarProps, type AvatarSize, Badge, type BadgeProps, type BadgeVariant, BranchNavigator, type BranchNavigatorProps, BrandIcon, type BrandIconProps, type BrandIconSize, type BrandIconVariant, Breadcrumb, type BreadcrumbEntry, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, type BreadcrumbProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Card, type CardBodyProps, type CardFooterProps, type CardHeaderProps, type CardMediaProps, type CardProps, type CardVariant, ChatBubbleIcon, ChatInput, type ChatInputNotice, type ChatInputPosition, type ChatInputProps, ChatInterface, type ChatInterfaceHandle, type ChatInterfaceProps, type ChatNode, ChatView, type ChatViewCheckpointItem, type ChatViewDividerItem, type ChatViewItem, type ChatViewMessageItem, type ChatViewProps, CheckSquareIcon, Checkbox, type CheckboxProps, Checkpoint, type CheckpointBranchInfo, type CheckpointExecutionKind, type CheckpointNode, type CheckpointProps, type CheckpointStatus, ChevronLeftIcon, ChevronRightIcon, CloseIcon, Col, type ColOffset, type ColOrder, type ColProps, type ColSpan, ColorPaletteSection, type ColorPaletteSectionProps, ColorSwatch, type ColorSwatchProps, Combobox, type ComboboxNav, type ComboboxProps, ConfirmDialog, type ConfirmDialogProps, Container, type ContainerProps, type ContainerSize, type Conversation, type ConversationTree, CoverSection, type CoverSectionProps, CrossSquareIcon, type Deliverable, type DeliverableArtifactRef, DeliverableCard, type DeliverableCardProps, type DeliverableImageItem, DeliverableRenderer, type DeliverableRendererProps, type DeliverableSection, type DeliverableSwatch, type DeliverableTheme, Divider, type DividerProps, Drawer, type DrawerPosition, type DrawerProps, EmptySquareIcon, ExpandIcon, type ExternalToolDefinition, FileChip, type FileChipProps, type FileChipStatus, GreyedDivider, type GreyedDividerProps, HelperText, type HelperTextProps, HistoryIcon, HistoryPanel, type HistoryPanelProps, type IconProps, ImageCard, type ImageCardProps, type ImageGridAspectRatio, Input, type InputAddonProps, type InputElementProps, InputGroup, type InputGroupProps, InputLeftAddon, InputLeftElement, type InputProps, InputRightAddon, InputRightElement, InputWrapper, type InputWrapperProps, Label, type LabelProps, LayersIcon, Lightbox, type LightboxProps, List, ListItem, type ListItemProps, ListItemText, type ListItemTextProps, type ListProps, ListSubheader, type ListSubheaderProps, MarkdownContent, type MarkdownContentProps, MediaIcon, MentionChip, type MentionChipProps, Menu, MenuContent, type MenuContentProps, MenuItem, type MenuItemProps, MenuLabel, type MenuProps, MenuSeparator, MenuTrigger, type MenuTriggerProps, Message, MessageActions, type MessageActionsConfig, type MessageActionsProps, type MessageActionsVariant, type MessageBranchInfo, type MessageNode, type MessageProps, type MessageVariant, Modal, type ModalProps, NODE_TYPES, Navbar, NavbarBrand, type NavbarBrandProps, NavbarContent, type NavbarContentProps, NavbarDivider, NavbarItem, type NavbarItemProps, NavbarLink, type NavbarLinkProps, type NavbarProps, type NodeTopology, type NodeType, Pagination, type PaginationProps, PdfCard, type PdfCardProps, PlusIcon, Popover, type PopoverAlign, type PopoverPosition, type PopoverProps, Progress, type ProgressProps, PromptDialog, type PromptDialogProps, QuoteBlockSection, type QuoteBlockSectionProps, Radio, type RadioProps, Row, type RowAlign, type RowGutter, type RowJustify, type RowProps, SCRIPT_ELEMENT_TYPES, ScriptCard, type ScriptCardProps, type ScriptElement, type ScriptElementType, SectionHeading, type SectionHeadingLevel, type SectionHeadingProps, Select, type SelectOption, type SelectProps, Skeleton, type SkeletonProps, Slider, type SliderProps, Spinner, type SpinnerProps, type SpotlightVariant, SquareLoaderIcon, Stack, type StackDirection, type StackGap, type StackProps, type Step, type StepStatus, Stepper, type StepperProps, StreamingCursor, type StreamingCursorProps, Switch, type SwitchProps, TASK_STATUSES, Tab, TabList, type TabListProps, TabPanel, type TabPanelProps, type TabProps, Table, TableBody, type TableBodyProps, TableCaption, type TableCaptionProps, TableCell, type TableCellProps, TableFooter, type TableFooterProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowProps, Tabs, type TabsProps, type Task, type TaskStatus, TextBlockSection, type TextBlockSectionProps, TextCard, type TextCardProps, Textarea, type TextareaCaretCoords, type TextareaProps, ThinkingIndicator, type ThinkingIndicatorProps, type ToastData, type ToastPosition, ToastProvider, type ToastProviderProps, type ToastVariant, TodosList, type TodosListProps, type ToolDefinition, type ToolGroup, ToolPanelContainer, type ToolPanelContainerProps, type ToolPanelState, ToolSidebar, type ToolSidebarProps, Tooltip, type TooltipProps, type TreeNode, type UseArtifactTreeNavigationReturn, type UseComboboxNavOptions, type UseScrollAnchorOptions, type UseScrollAnchorReturn, type VideoAspectRatio, type VideoAspectRatioPreset, VideoCard, type VideoCardProps, addNodeToTree, areAllTasksSettled, createEmptyTree, createPreviewUrl, findAncestor, generateId, getActivePath, getGreyedFuture, getSiblingInfo, getTextareaCaretCoords, isBranchPoint, isImageFile, messagesToTree, revokePreviewUrl, setActiveLeaf, switchBranch, updateMessageContent, useArtifactTreeNavigation, useComboboxNav, useResizable, useScrollAnchor, useToast, version };
package/dist/index.d.ts CHANGED
@@ -1535,9 +1535,13 @@ interface Deliverable {
1535
1535
  clientName?: string | null;
1536
1536
  /** Optional accent hex color (e.g. "#fecb6b"). Falls back to design-system gold. */
1537
1537
  accentColor?: string | null;
1538
+ /** Optional theme preset. Defaults to `cinematic` when omitted. */
1539
+ theme?: DeliverableTheme | null;
1538
1540
  /** Ordered sections. Render in array order. */
1539
1541
  sections: DeliverableSection[];
1540
1542
  }
1543
+ /** Document-level visual identity preset. */
1544
+ type DeliverableTheme = 'cinematic' | 'editorial' | 'minimal' | 'playful';
1541
1545
  /**
1542
1546
  * Discriminated union of section types. Each variant has a matching renderer
1543
1547
  * in aurelius — the agent fills the spec, never raw layout instructions.
@@ -1554,14 +1558,39 @@ interface ArtifactImageGridSection$1 {
1554
1558
  heading?: string | null;
1555
1559
  /** 1, 2 or 3. */
1556
1560
  columns: number;
1561
+ /**
1562
+ * Aspect ratio applied to every image in the grid. Defaults to `landscape`
1563
+ * when omitted.
1564
+ */
1565
+ aspectRatio?: ImageGridAspectRatio | null;
1557
1566
  items: DeliverableImageItem[];
1558
1567
  }
1568
+ /**
1569
+ * Allowed values for {@link ArtifactImageGridSection.aspectRatio}. Each
1570
+ * controls a single CSS `aspect-ratio` applied uniformly across the grid:
1571
+ * `landscape` → 4:3, `portrait` → 3:4, `square` → 1:1, `wide` → 16:9.
1572
+ */
1573
+ type ImageGridAspectRatio = 'landscape' | 'portrait' | 'square' | 'wide';
1559
1574
  interface ArtifactSpotlightSection$1 {
1560
1575
  type: 'ARTIFACT_SPOTLIGHT';
1561
1576
  heading?: string | null;
1562
1577
  artifact: DeliverableArtifactRef;
1563
1578
  body?: string | null;
1579
+ /**
1580
+ * Layout variant. Defaults to `framed` when omitted.
1581
+ */
1582
+ variant?: SpotlightVariant | null;
1564
1583
  }
1584
+ /**
1585
+ * Allowed values for {@link ArtifactSpotlightSection.variant}.
1586
+ * `framed` → image above body (default).
1587
+ * `full-bleed` → image claims a full edge-to-edge page in print; the
1588
+ * heading and body are suppressed in print so the image
1589
+ * alone carries the page. Use sparingly — once or twice
1590
+ * per deck — for the marquee moment.
1591
+ * `side-by-side` → image left, body right on the same page.
1592
+ */
1593
+ type SpotlightVariant = 'framed' | 'full-bleed' | 'side-by-side';
1565
1594
  interface TextBlockSection$1 {
1566
1595
  type: 'TEXT_BLOCK';
1567
1596
  heading?: string | null;
@@ -1648,7 +1677,8 @@ interface ArtifactSpotlightSectionProps {
1648
1677
  }
1649
1678
  /**
1650
1679
  * A single hero artifact image with optional prose alongside. Reads at full
1651
- * page width on screen and prints to a single page.
1680
+ * page width on screen and prints to a single page (or a full-bleed page for
1681
+ * the `full-bleed` variant).
1652
1682
  */
1653
1683
  declare function ArtifactSpotlightSection({ data }: ArtifactSpotlightSectionProps): React$1.JSX.Element;
1654
1684
 
@@ -1882,6 +1912,24 @@ interface Conversation {
1882
1912
  */
1883
1913
  isActive?: boolean;
1884
1914
  }
1915
+ /**
1916
+ * Imperative API exposed by `ChatInterface` via its forwarded ref. Use this from
1917
+ * call sites that need to drive the chat from outside React state — typically
1918
+ * to surface an artifact when the user clicks a `MentionChip` or other
1919
+ * cross-surface pointer. Attach with
1920
+ * `useRef<ChatInterfaceHandle>(null)` and read `ref.current?.openArtifact(name)`.
1921
+ */
1922
+ interface ChatInterfaceHandle {
1923
+ /**
1924
+ * Open the artifact lightbox for the given artifact name. Ensures the
1925
+ * artifacts panel is open (overriding any prior dismissal) before
1926
+ * surfacing the lightbox, since the lightbox renders inside the panel.
1927
+ * If the name is not present in the current artifact tree, the call is a
1928
+ * no-op — the chip's leading icon already signals unknown / stale
1929
+ * references via `HelpCircle`.
1930
+ */
1931
+ openArtifact(name: string): void;
1932
+ }
1885
1933
  interface ChatInterfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onSubmit'> {
1886
1934
  /**
1887
1935
  * Array of messages in the conversation (flat mode)
@@ -2109,7 +2157,7 @@ interface ChatInterfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
2109
2157
  * Artifacts are supplied as a tree of ArtifactNode objects via the
2110
2158
  * artifactNodes prop.
2111
2159
  */
2112
- declare const ChatInterface: React$1.ForwardRefExoticComponent<ChatInterfaceProps & React$1.RefAttributes<HTMLDivElement>>;
2160
+ declare const ChatInterface: React$1.ForwardRefExoticComponent<ChatInterfaceProps & React$1.RefAttributes<ChatInterfaceHandle>>;
2113
2161
 
2114
2162
  /**
2115
2163
  * What kind of project mutation produced this checkpoint. Drives the icon and
@@ -2831,4 +2879,4 @@ declare function getTextareaCaretCoords(textarea: HTMLTextAreaElement): Textarea
2831
2879
 
2832
2880
  declare const version = "2.0.0";
2833
2881
 
2834
- export { ARTIFACT_TYPES, Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, type AddNodeOptions, Alert, AlertDialog, type AlertDialogProps, type AlertProps, type AlertVariant, type Artifact, ArtifactCard, type ArtifactCardProps, ArtifactGroup, type ArtifactGroupProps, ArtifactImageGridSection, type ArtifactImageGridSectionProps, type ArtifactNode, ArtifactSpotlightSection, type ArtifactSpotlightSectionProps, type ArtifactType, ArtifactVariantStack, type ArtifactVariantStackProps, ArtifactsPanel, type ArtifactsPanelProps, ArtifactsPanelToggle, type ArtifactsPanelToggleProps, type AspectRatio, type AspectRatioPreset, type Attachment, type AttachmentItem, AttachmentPreview, type AttachmentPreviewProps, type AttachmentStatus, AudioCard, type AudioCardProps, Avatar, type AvatarProps, type AvatarSize, Badge, type BadgeProps, type BadgeVariant, BranchNavigator, type BranchNavigatorProps, BrandIcon, type BrandIconProps, type BrandIconSize, type BrandIconVariant, Breadcrumb, type BreadcrumbEntry, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, type BreadcrumbProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Card, type CardBodyProps, type CardFooterProps, type CardHeaderProps, type CardMediaProps, type CardProps, type CardVariant, ChatBubbleIcon, ChatInput, type ChatInputNotice, type ChatInputPosition, type ChatInputProps, ChatInterface, type ChatInterfaceProps, type ChatNode, ChatView, type ChatViewCheckpointItem, type ChatViewDividerItem, type ChatViewItem, type ChatViewMessageItem, type ChatViewProps, CheckSquareIcon, Checkbox, type CheckboxProps, Checkpoint, type CheckpointBranchInfo, type CheckpointExecutionKind, type CheckpointNode, type CheckpointProps, type CheckpointStatus, ChevronLeftIcon, ChevronRightIcon, CloseIcon, Col, type ColOffset, type ColOrder, type ColProps, type ColSpan, ColorPaletteSection, type ColorPaletteSectionProps, ColorSwatch, type ColorSwatchProps, Combobox, type ComboboxNav, type ComboboxProps, ConfirmDialog, type ConfirmDialogProps, Container, type ContainerProps, type ContainerSize, type Conversation, type ConversationTree, CoverSection, type CoverSectionProps, CrossSquareIcon, type Deliverable, type DeliverableArtifactRef, DeliverableCard, type DeliverableCardProps, type DeliverableImageItem, DeliverableRenderer, type DeliverableRendererProps, type DeliverableSection, type DeliverableSwatch, Divider, type DividerProps, Drawer, type DrawerPosition, type DrawerProps, EmptySquareIcon, ExpandIcon, type ExternalToolDefinition, FileChip, type FileChipProps, type FileChipStatus, GreyedDivider, type GreyedDividerProps, HelperText, type HelperTextProps, HistoryIcon, HistoryPanel, type HistoryPanelProps, type IconProps, ImageCard, type ImageCardProps, Input, type InputAddonProps, type InputElementProps, InputGroup, type InputGroupProps, InputLeftAddon, InputLeftElement, type InputProps, InputRightAddon, InputRightElement, InputWrapper, type InputWrapperProps, Label, type LabelProps, LayersIcon, Lightbox, type LightboxProps, List, ListItem, type ListItemProps, ListItemText, type ListItemTextProps, type ListProps, ListSubheader, type ListSubheaderProps, MarkdownContent, type MarkdownContentProps, MediaIcon, MentionChip, type MentionChipProps, Menu, MenuContent, type MenuContentProps, MenuItem, type MenuItemProps, MenuLabel, type MenuProps, MenuSeparator, MenuTrigger, type MenuTriggerProps, Message, MessageActions, type MessageActionsConfig, type MessageActionsProps, type MessageActionsVariant, type MessageBranchInfo, type MessageNode, type MessageProps, type MessageVariant, Modal, type ModalProps, NODE_TYPES, Navbar, NavbarBrand, type NavbarBrandProps, NavbarContent, type NavbarContentProps, NavbarDivider, NavbarItem, type NavbarItemProps, NavbarLink, type NavbarLinkProps, type NavbarProps, type NodeTopology, type NodeType, Pagination, type PaginationProps, PdfCard, type PdfCardProps, PlusIcon, Popover, type PopoverAlign, type PopoverPosition, type PopoverProps, Progress, type ProgressProps, PromptDialog, type PromptDialogProps, QuoteBlockSection, type QuoteBlockSectionProps, Radio, type RadioProps, Row, type RowAlign, type RowGutter, type RowJustify, type RowProps, SCRIPT_ELEMENT_TYPES, ScriptCard, type ScriptCardProps, type ScriptElement, type ScriptElementType, SectionHeading, type SectionHeadingLevel, type SectionHeadingProps, Select, type SelectOption, type SelectProps, Skeleton, type SkeletonProps, Slider, type SliderProps, Spinner, type SpinnerProps, SquareLoaderIcon, Stack, type StackDirection, type StackGap, type StackProps, type Step, type StepStatus, Stepper, type StepperProps, StreamingCursor, type StreamingCursorProps, Switch, type SwitchProps, TASK_STATUSES, Tab, TabList, type TabListProps, TabPanel, type TabPanelProps, type TabProps, Table, TableBody, type TableBodyProps, TableCaption, type TableCaptionProps, TableCell, type TableCellProps, TableFooter, type TableFooterProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowProps, Tabs, type TabsProps, type Task, type TaskStatus, TextBlockSection, type TextBlockSectionProps, TextCard, type TextCardProps, Textarea, type TextareaCaretCoords, type TextareaProps, ThinkingIndicator, type ThinkingIndicatorProps, type ToastData, type ToastPosition, ToastProvider, type ToastProviderProps, type ToastVariant, TodosList, type TodosListProps, type ToolDefinition, type ToolGroup, ToolPanelContainer, type ToolPanelContainerProps, type ToolPanelState, ToolSidebar, type ToolSidebarProps, Tooltip, type TooltipProps, type TreeNode, type UseArtifactTreeNavigationReturn, type UseComboboxNavOptions, type UseScrollAnchorOptions, type UseScrollAnchorReturn, type VideoAspectRatio, type VideoAspectRatioPreset, VideoCard, type VideoCardProps, addNodeToTree, areAllTasksSettled, createEmptyTree, createPreviewUrl, findAncestor, generateId, getActivePath, getGreyedFuture, getSiblingInfo, getTextareaCaretCoords, isBranchPoint, isImageFile, messagesToTree, revokePreviewUrl, setActiveLeaf, switchBranch, updateMessageContent, useArtifactTreeNavigation, useComboboxNav, useResizable, useScrollAnchor, useToast, version };
2882
+ export { ARTIFACT_TYPES, Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, type AddNodeOptions, Alert, AlertDialog, type AlertDialogProps, type AlertProps, type AlertVariant, type Artifact, ArtifactCard, type ArtifactCardProps, ArtifactGroup, type ArtifactGroupProps, ArtifactImageGridSection, type ArtifactImageGridSectionProps, type ArtifactNode, ArtifactSpotlightSection, type ArtifactSpotlightSectionProps, type ArtifactType, ArtifactVariantStack, type ArtifactVariantStackProps, ArtifactsPanel, type ArtifactsPanelProps, ArtifactsPanelToggle, type ArtifactsPanelToggleProps, type AspectRatio, type AspectRatioPreset, type Attachment, type AttachmentItem, AttachmentPreview, type AttachmentPreviewProps, type AttachmentStatus, AudioCard, type AudioCardProps, Avatar, type AvatarProps, type AvatarSize, Badge, type BadgeProps, type BadgeVariant, BranchNavigator, type BranchNavigatorProps, BrandIcon, type BrandIconProps, type BrandIconSize, type BrandIconVariant, Breadcrumb, type BreadcrumbEntry, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, type BreadcrumbProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Card, type CardBodyProps, type CardFooterProps, type CardHeaderProps, type CardMediaProps, type CardProps, type CardVariant, ChatBubbleIcon, ChatInput, type ChatInputNotice, type ChatInputPosition, type ChatInputProps, ChatInterface, type ChatInterfaceHandle, type ChatInterfaceProps, type ChatNode, ChatView, type ChatViewCheckpointItem, type ChatViewDividerItem, type ChatViewItem, type ChatViewMessageItem, type ChatViewProps, CheckSquareIcon, Checkbox, type CheckboxProps, Checkpoint, type CheckpointBranchInfo, type CheckpointExecutionKind, type CheckpointNode, type CheckpointProps, type CheckpointStatus, ChevronLeftIcon, ChevronRightIcon, CloseIcon, Col, type ColOffset, type ColOrder, type ColProps, type ColSpan, ColorPaletteSection, type ColorPaletteSectionProps, ColorSwatch, type ColorSwatchProps, Combobox, type ComboboxNav, type ComboboxProps, ConfirmDialog, type ConfirmDialogProps, Container, type ContainerProps, type ContainerSize, type Conversation, type ConversationTree, CoverSection, type CoverSectionProps, CrossSquareIcon, type Deliverable, type DeliverableArtifactRef, DeliverableCard, type DeliverableCardProps, type DeliverableImageItem, DeliverableRenderer, type DeliverableRendererProps, type DeliverableSection, type DeliverableSwatch, type DeliverableTheme, Divider, type DividerProps, Drawer, type DrawerPosition, type DrawerProps, EmptySquareIcon, ExpandIcon, type ExternalToolDefinition, FileChip, type FileChipProps, type FileChipStatus, GreyedDivider, type GreyedDividerProps, HelperText, type HelperTextProps, HistoryIcon, HistoryPanel, type HistoryPanelProps, type IconProps, ImageCard, type ImageCardProps, type ImageGridAspectRatio, Input, type InputAddonProps, type InputElementProps, InputGroup, type InputGroupProps, InputLeftAddon, InputLeftElement, type InputProps, InputRightAddon, InputRightElement, InputWrapper, type InputWrapperProps, Label, type LabelProps, LayersIcon, Lightbox, type LightboxProps, List, ListItem, type ListItemProps, ListItemText, type ListItemTextProps, type ListProps, ListSubheader, type ListSubheaderProps, MarkdownContent, type MarkdownContentProps, MediaIcon, MentionChip, type MentionChipProps, Menu, MenuContent, type MenuContentProps, MenuItem, type MenuItemProps, MenuLabel, type MenuProps, MenuSeparator, MenuTrigger, type MenuTriggerProps, Message, MessageActions, type MessageActionsConfig, type MessageActionsProps, type MessageActionsVariant, type MessageBranchInfo, type MessageNode, type MessageProps, type MessageVariant, Modal, type ModalProps, NODE_TYPES, Navbar, NavbarBrand, type NavbarBrandProps, NavbarContent, type NavbarContentProps, NavbarDivider, NavbarItem, type NavbarItemProps, NavbarLink, type NavbarLinkProps, type NavbarProps, type NodeTopology, type NodeType, Pagination, type PaginationProps, PdfCard, type PdfCardProps, PlusIcon, Popover, type PopoverAlign, type PopoverPosition, type PopoverProps, Progress, type ProgressProps, PromptDialog, type PromptDialogProps, QuoteBlockSection, type QuoteBlockSectionProps, Radio, type RadioProps, Row, type RowAlign, type RowGutter, type RowJustify, type RowProps, SCRIPT_ELEMENT_TYPES, ScriptCard, type ScriptCardProps, type ScriptElement, type ScriptElementType, SectionHeading, type SectionHeadingLevel, type SectionHeadingProps, Select, type SelectOption, type SelectProps, Skeleton, type SkeletonProps, Slider, type SliderProps, Spinner, type SpinnerProps, type SpotlightVariant, SquareLoaderIcon, Stack, type StackDirection, type StackGap, type StackProps, type Step, type StepStatus, Stepper, type StepperProps, StreamingCursor, type StreamingCursorProps, Switch, type SwitchProps, TASK_STATUSES, Tab, TabList, type TabListProps, TabPanel, type TabPanelProps, type TabProps, Table, TableBody, type TableBodyProps, TableCaption, type TableCaptionProps, TableCell, type TableCellProps, TableFooter, type TableFooterProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowProps, Tabs, type TabsProps, type Task, type TaskStatus, TextBlockSection, type TextBlockSectionProps, TextCard, type TextCardProps, Textarea, type TextareaCaretCoords, type TextareaProps, ThinkingIndicator, type ThinkingIndicatorProps, type ToastData, type ToastPosition, ToastProvider, type ToastProviderProps, type ToastVariant, TodosList, type TodosListProps, type ToolDefinition, type ToolGroup, ToolPanelContainer, type ToolPanelContainerProps, type ToolPanelState, ToolSidebar, type ToolSidebarProps, Tooltip, type TooltipProps, type TreeNode, type UseArtifactTreeNavigationReturn, type UseComboboxNavOptions, type UseScrollAnchorOptions, type UseScrollAnchorReturn, type VideoAspectRatio, type VideoAspectRatioPreset, VideoCard, type VideoCardProps, addNodeToTree, areAllTasksSettled, createEmptyTree, createPreviewUrl, findAncestor, generateId, getActivePath, getGreyedFuture, getSiblingInfo, getTextareaCaretCoords, isBranchPoint, isImageFile, messagesToTree, revokePreviewUrl, setActiveLeaf, switchBranch, updateMessageContent, useArtifactTreeNavigation, useComboboxNav, useResizable, useScrollAnchor, useToast, version };
package/dist/index.js CHANGED
@@ -6121,7 +6121,7 @@ var import_react84 = __toESM(require("react"));
6121
6121
  // src/components/deliverable/CoverSection.tsx
6122
6122
  var import_react78 = __toESM(require("react"));
6123
6123
  function CoverSection({ data, clientName }) {
6124
- return /* @__PURE__ */ import_react78.default.createElement("section", { className: "deliverable-cover deliverable-page" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "deliverable-cover-inner" }, data.eyebrow && /* @__PURE__ */ import_react78.default.createElement("p", { className: "deliverable-cover-eyebrow" }, data.eyebrow), /* @__PURE__ */ import_react78.default.createElement("h1", { className: "deliverable-cover-title" }, data.title), data.subtitle && /* @__PURE__ */ import_react78.default.createElement("p", { className: "deliverable-cover-subtitle" }, data.subtitle), clientName && /* @__PURE__ */ import_react78.default.createElement("p", { className: "deliverable-cover-client" }, "Prepared for", " ", /* @__PURE__ */ import_react78.default.createElement("span", { className: "deliverable-cover-client-name" }, clientName))));
6124
+ return /* @__PURE__ */ import_react78.default.createElement("section", { className: "deliverable-cover deliverable-page" }, /* @__PURE__ */ import_react78.default.createElement("div", { className: "deliverable-cover-inner" }, data.eyebrow && /* @__PURE__ */ import_react78.default.createElement(import_react78.default.Fragment, null, /* @__PURE__ */ import_react78.default.createElement("p", { className: "deliverable-cover-eyebrow" }, data.eyebrow), /* @__PURE__ */ import_react78.default.createElement("div", { className: "deliverable-cover-rule", "aria-hidden": "true" })), /* @__PURE__ */ import_react78.default.createElement("h1", { className: "deliverable-cover-title" }, data.title), data.subtitle && /* @__PURE__ */ import_react78.default.createElement("p", { className: "deliverable-cover-subtitle" }, data.subtitle), clientName && /* @__PURE__ */ import_react78.default.createElement("p", { className: "deliverable-cover-client" }, "Prepared for", " ", /* @__PURE__ */ import_react78.default.createElement("span", { className: "deliverable-cover-client-name" }, clientName))));
6125
6125
  }
6126
6126
 
6127
6127
  // src/components/deliverable/ArtifactImageGridSection.tsx
@@ -6131,16 +6131,33 @@ var COLUMN_CLASSES = {
6131
6131
  2: "deliverable-image-grid-cols-2",
6132
6132
  3: "deliverable-image-grid-cols-3"
6133
6133
  };
6134
+ var ASPECT_CLASSES = {
6135
+ landscape: "deliverable-image-grid-aspect-landscape",
6136
+ portrait: "deliverable-image-grid-aspect-portrait",
6137
+ square: "deliverable-image-grid-aspect-square",
6138
+ wide: "deliverable-image-grid-aspect-wide"
6139
+ };
6134
6140
  function ArtifactImageGridSection({ data }) {
6135
6141
  const columns = clampColumns(data.columns);
6136
- return /* @__PURE__ */ import_react79.default.createElement("section", { className: "deliverable-page" }, data.heading && /* @__PURE__ */ import_react79.default.createElement("h2", { className: "deliverable-heading" }, data.heading), /* @__PURE__ */ import_react79.default.createElement("div", { className: cx("deliverable-image-grid", COLUMN_CLASSES[columns]) }, data.items.map((item, idx) => /* @__PURE__ */ import_react79.default.createElement("figure", { key: idx, className: "deliverable-image-item" }, item.artifact.url ? /* @__PURE__ */ import_react79.default.createElement(
6137
- "img",
6142
+ const aspect = data.aspectRatio ?? "landscape";
6143
+ return /* @__PURE__ */ import_react79.default.createElement("section", { className: "deliverable-page" }, data.heading && /* @__PURE__ */ import_react79.default.createElement("h2", { className: "deliverable-heading" }, data.heading), /* @__PURE__ */ import_react79.default.createElement(
6144
+ "div",
6138
6145
  {
6139
- src: item.artifact.url,
6140
- alt: item.artifact.title ?? "",
6141
- className: "deliverable-image-img"
6142
- }
6143
- ) : /* @__PURE__ */ import_react79.default.createElement("div", { className: "deliverable-image-missing" }, "Missing image"), item.caption && /* @__PURE__ */ import_react79.default.createElement("figcaption", { className: "deliverable-image-caption" }, item.caption)))));
6146
+ className: cx(
6147
+ "deliverable-image-grid",
6148
+ COLUMN_CLASSES[columns],
6149
+ ASPECT_CLASSES[aspect]
6150
+ )
6151
+ },
6152
+ data.items.map((item, idx) => /* @__PURE__ */ import_react79.default.createElement("figure", { key: idx, className: "deliverable-image-item" }, item.artifact.url ? /* @__PURE__ */ import_react79.default.createElement(
6153
+ "img",
6154
+ {
6155
+ src: item.artifact.url,
6156
+ alt: item.artifact.title ?? "",
6157
+ className: "deliverable-image-img"
6158
+ }
6159
+ ) : /* @__PURE__ */ import_react79.default.createElement("div", { className: "deliverable-image-missing" }, "Missing image"), item.caption && /* @__PURE__ */ import_react79.default.createElement("figcaption", { className: "deliverable-image-caption" }, item.caption)))
6160
+ ));
6144
6161
  }
6145
6162
  function clampColumns(n) {
6146
6163
  if (n <= 1) return 1;
@@ -6150,8 +6167,14 @@ function clampColumns(n) {
6150
6167
 
6151
6168
  // src/components/deliverable/ArtifactSpotlightSection.tsx
6152
6169
  var import_react80 = __toESM(require("react"));
6170
+ var VARIANT_CLASSES = {
6171
+ framed: null,
6172
+ "full-bleed": "deliverable-spotlight-variant-full-bleed",
6173
+ "side-by-side": "deliverable-spotlight-variant-side-by-side"
6174
+ };
6153
6175
  function ArtifactSpotlightSection({ data }) {
6154
- return /* @__PURE__ */ import_react80.default.createElement("section", { className: "deliverable-page" }, data.heading && /* @__PURE__ */ import_react80.default.createElement("h2", { className: "deliverable-heading" }, data.heading), /* @__PURE__ */ import_react80.default.createElement("div", { className: "deliverable-spotlight-media" }, data.artifact.url ? /* @__PURE__ */ import_react80.default.createElement(
6176
+ const variant = data.variant ?? "framed";
6177
+ return /* @__PURE__ */ import_react80.default.createElement("section", { className: cx("deliverable-page", VARIANT_CLASSES[variant]) }, data.heading && /* @__PURE__ */ import_react80.default.createElement("h2", { className: "deliverable-heading" }, data.heading), /* @__PURE__ */ import_react80.default.createElement("div", { className: "deliverable-spotlight-media" }, data.artifact.url ? /* @__PURE__ */ import_react80.default.createElement(
6155
6178
  "img",
6156
6179
  {
6157
6180
  src: data.artifact.url,
@@ -6199,6 +6222,12 @@ function QuoteBlockSection({ data }) {
6199
6222
  }
6200
6223
 
6201
6224
  // src/components/deliverable/DeliverableRenderer.tsx
6225
+ var THEME_CLASSES = {
6226
+ cinematic: null,
6227
+ editorial: "deliverable-theme-editorial",
6228
+ minimal: "deliverable-theme-minimal",
6229
+ playful: "deliverable-theme-playful"
6230
+ };
6202
6231
  function DeliverableRenderer({
6203
6232
  deliverable,
6204
6233
  onDownloadPdf,
@@ -6208,6 +6237,8 @@ function DeliverableRenderer({
6208
6237
  const [isDownloading, setIsDownloading] = (0, import_react84.useState)(false);
6209
6238
  const accent = deliverable.accentColor?.trim();
6210
6239
  const style = accent ? { "--deliverable-accent": accent } : void 0;
6240
+ const theme = deliverable.theme ?? "cinematic";
6241
+ const themeClass = THEME_CLASSES[theme];
6211
6242
  const handleDownload = async () => {
6212
6243
  if (!onDownloadPdf || isDownloading) return;
6213
6244
  setIsDownloading(true);
@@ -6220,7 +6251,7 @@ function DeliverableRenderer({
6220
6251
  return /* @__PURE__ */ import_react84.default.createElement(
6221
6252
  "div",
6222
6253
  {
6223
- className: cx("deliverable", className),
6254
+ className: cx("deliverable", themeClass, className),
6224
6255
  style
6225
6256
  },
6226
6257
  deliverable.sections.map((section, idx) => renderSection(section, idx, deliverable)),
@@ -7509,13 +7540,6 @@ var ChatInterface = import_react93.default.forwardRef(
7509
7540
  const prevArtifactNodesRef = (0, import_react93.useRef)([]);
7510
7541
  const prevTasksRef = (0, import_react93.useRef)([]);
7511
7542
  const [panelOpenArtifactId, setPanelOpenArtifactId] = (0, import_react93.useState)(null);
7512
- const handleAttachmentOpen = (0, import_react93.useCallback)((artifactId) => {
7513
- setPanelOpenArtifactId(artifactId);
7514
- onAttachmentOpen?.(artifactId);
7515
- }, [onAttachmentOpen]);
7516
- const handleArtifactPanelClosed = (0, import_react93.useCallback)(() => {
7517
- setPanelOpenArtifactId(null);
7518
- }, []);
7519
7543
  const [internalTools, setInternalTools] = (0, import_react93.useState)({
7520
7544
  "top-left": "history",
7521
7545
  "bottom-left": null,
@@ -7523,6 +7547,23 @@ var ChatInterface = import_react93.default.forwardRef(
7523
7547
  "bottom-right": null
7524
7548
  });
7525
7549
  const dismissedToolsRef = (0, import_react93.useRef)(/* @__PURE__ */ new Set());
7550
+ const openArtifact = (0, import_react93.useCallback)((artifactId) => {
7551
+ dismissedToolsRef.current.delete("artifacts");
7552
+ if (isArtifactsPanelOpen === void 0) {
7553
+ setInternalTools((prev) => prev["top-right"] === "artifacts" ? prev : { ...prev, "top-right": "artifacts" });
7554
+ } else if (!isArtifactsPanelOpen) {
7555
+ onArtifactsPanelOpenChange?.(true);
7556
+ }
7557
+ setPanelOpenArtifactId(artifactId);
7558
+ }, [isArtifactsPanelOpen, onArtifactsPanelOpenChange]);
7559
+ const handleAttachmentOpen = (0, import_react93.useCallback)((artifactId) => {
7560
+ openArtifact(artifactId);
7561
+ onAttachmentOpen?.(artifactId);
7562
+ }, [openArtifact, onAttachmentOpen]);
7563
+ const handleArtifactPanelClosed = (0, import_react93.useCallback)(() => {
7564
+ setPanelOpenArtifactId(null);
7565
+ }, []);
7566
+ (0, import_react93.useImperativeHandle)(ref, () => ({ openArtifact }), [openArtifact]);
7526
7567
  const isPanelControlled = isArtifactsPanelOpen !== void 0;
7527
7568
  const activeTools = (0, import_react93.useMemo)(() => {
7528
7569
  if (isPanelControlled) {
@@ -7819,7 +7860,6 @@ var ChatInterface = import_react93.default.forwardRef(
7819
7860
  return /* @__PURE__ */ import_react93.default.createElement(
7820
7861
  "div",
7821
7862
  {
7822
- ref,
7823
7863
  className: cx("flex h-full w-full bg-obsidian overflow-hidden", className),
7824
7864
  ...rest
7825
7865
  },