@siena-ai/design-system 0.0.14 → 0.0.16

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/globals.css CHANGED
@@ -176,6 +176,20 @@
176
176
  --sidebar-border: #E8E4DF;
177
177
  --sidebar-ring: #9B4DAF;
178
178
 
179
+ /* ─────────────────────────────────────────────────────────────
180
+ INBOX PANELS — 3-panel responsive layout
181
+ ───────────────────────────────────────────────────────────── */
182
+
183
+ /* Panel widths - right panel wider for more context */
184
+ --inbox-list-width: 280px; /* Conversation list needs less space */
185
+ --inbox-list-rail-width: 56px;
186
+ --inbox-context-width: 360px; /* Context panel needs more space */
187
+ --inbox-context-rail-width: 56px;
188
+ --inbox-center-min-width: 480px; /* Protect conversation readability */
189
+
190
+ /* Panel transitions */
191
+ --inbox-panel-transition: 200ms ease-out;
192
+
179
193
  /* ─────────────────────────────────────────────────────────────
180
194
  CHAT TOKENS — Siena Chat System
181
195
  ───────────────────────────────────────────────────────────── */
@@ -404,6 +418,13 @@
404
418
  transform: translateY(-2px);
405
419
  }
406
420
 
421
+ /* Vertical text for collapsed panels */
422
+ .writing-mode-vertical {
423
+ writing-mode: vertical-rl;
424
+ text-orientation: mixed;
425
+ transform: rotate(180deg);
426
+ }
427
+
407
428
  /* Container max-widths */
408
429
  .container-tight {
409
430
  @apply max-w-3xl mx-auto px-6;
@@ -432,6 +453,76 @@
432
453
  @apply outline-none ring-2 ring-offset-2 ring-offset-background ring-primary/50;
433
454
  }
434
455
 
456
+ /* ============================================================
457
+ * STATE BORDER UTILITIES
458
+ * Semantic classes for interactive element states.
459
+ * Use these instead of raw border-primary for consistency.
460
+ *
461
+ * Change the design here → updates everywhere automatically.
462
+ * ============================================================ */
463
+
464
+ /* SELECTED — User actively chose this option (OptionCard, template picker) */
465
+ .state-selected {
466
+ @apply border-primary bg-primary/5;
467
+ }
468
+
469
+ /* ACTIVE FILTER — A filter/toggle is currently applied (softer than selected) */
470
+ .state-active-filter {
471
+ @apply border-primary/50 bg-primary/5;
472
+ }
473
+
474
+ /* EXPANDED — Collapsible content is open (NOT an action, just state) */
475
+ .state-expanded {
476
+ @apply border-muted-foreground/30;
477
+ }
478
+
479
+ /* ─────────────────────────────────────────────────────────────
480
+ * CARD HOVER UTILITY
481
+ *
482
+ * ONE pattern for clickable cards: subtle purple border + shadow lift.
483
+ * Use `state-hover-card` on any card that triggers an action (opens
484
+ * sheet, navigates, expands content).
485
+ *
486
+ * ONE RULE: Interactive card = state-hover-card
487
+ * "Interactive" = clicking the card triggers something (expand, modal, navigate)
488
+ *
489
+ * DO NOT USE when:
490
+ * - Card is display-only (info card with interactive buttons INSIDE)
491
+ * - Card border communicates status (green = pass, red = error)
492
+ * ───────────────────────────────────────────────────────────── */
493
+
494
+ /* CARD HOVER — Purple border + shadow lift + cursor for interactive cards */
495
+ .state-hover-card {
496
+ @apply hover:border-primary/50 transition-all cursor-pointer;
497
+ }
498
+ .state-hover-card:hover {
499
+ box-shadow:
500
+ 0 1px 2px hsl(var(--shadow-color) / 0.04),
501
+ 0 2px 4px hsl(var(--shadow-color) / 0.04),
502
+ 0 4px 8px hsl(var(--shadow-color) / 0.04);
503
+ }
504
+
505
+ /* Aliases for backward compatibility — all resolve to same effect */
506
+ .state-hover-card-subtle {
507
+ @apply hover:border-primary/50 transition-all;
508
+ }
509
+ .state-hover-card-subtle:hover {
510
+ box-shadow:
511
+ 0 1px 2px hsl(var(--shadow-color) / 0.04),
512
+ 0 2px 4px hsl(var(--shadow-color) / 0.04),
513
+ 0 4px 8px hsl(var(--shadow-color) / 0.04);
514
+ }
515
+
516
+ .state-hover-interactive {
517
+ @apply hover:border-primary/50 transition-all;
518
+ }
519
+ .state-hover-interactive:hover {
520
+ box-shadow:
521
+ 0 1px 2px hsl(var(--shadow-color) / 0.04),
522
+ 0 2px 4px hsl(var(--shadow-color) / 0.04),
523
+ 0 4px 8px hsl(var(--shadow-color) / 0.04);
524
+ }
525
+
435
526
  /* ─────────────────────────────────────────────────────────────
436
527
  CHAT UTILITIES
437
528
  ───────────────────────────────────────────────────────────── */
@@ -530,6 +621,136 @@
530
621
  animation: chat-thinking-shimmer 2s ease-in-out infinite;
531
622
  }
532
623
 
624
+ /* ═══════════════════════════════════════════════════════════════
625
+ PRESENTATION ANIMATIONS
626
+ Understated, elegant transitions - no aggressive movement
627
+ Inspired by Apple Keynote's refined approach
628
+ ═══════════════════════════════════════════════════════════════ */
629
+
630
+ /* Simple fade in - the primary transition */
631
+ @keyframes slide-fade-in {
632
+ from {
633
+ opacity: 0;
634
+ }
635
+ to {
636
+ opacity: 1;
637
+ }
638
+ }
639
+
640
+ @keyframes slide-fade-in-reverse {
641
+ from {
642
+ opacity: 0;
643
+ }
644
+ to {
645
+ opacity: 1;
646
+ }
647
+ }
648
+
649
+ /* Subtle upward fade for content elements */
650
+ @keyframes slide-fade-up {
651
+ from {
652
+ opacity: 0;
653
+ transform: translateY(8px);
654
+ }
655
+ to {
656
+ opacity: 1;
657
+ transform: translateY(0);
658
+ }
659
+ }
660
+
661
+ /* Very gentle scale for cards */
662
+ @keyframes slide-scale-in {
663
+ from {
664
+ opacity: 0;
665
+ transform: scale(0.98);
666
+ }
667
+ to {
668
+ opacity: 1;
669
+ transform: scale(1);
670
+ }
671
+ }
672
+
673
+ /* Stat counter animation - subtle rise */
674
+ @keyframes stat-enter {
675
+ from {
676
+ opacity: 0;
677
+ transform: translateY(12px);
678
+ }
679
+ to {
680
+ opacity: 1;
681
+ transform: translateY(0);
682
+ }
683
+ }
684
+
685
+ /* Legacy classes for backward compatibility */
686
+ @keyframes slide-enter {
687
+ from {
688
+ opacity: 0;
689
+ }
690
+ to {
691
+ opacity: 1;
692
+ }
693
+ }
694
+
695
+ @keyframes slide-enter-reverse {
696
+ from {
697
+ opacity: 0;
698
+ }
699
+ to {
700
+ opacity: 1;
701
+ }
702
+ }
703
+
704
+ @layer utilities {
705
+ /* Primary slide transitions - DISABLED (instant) */
706
+ .animate-slide-fade-in {
707
+ opacity: 1;
708
+ }
709
+
710
+ .animate-slide-fade-in-reverse {
711
+ opacity: 1;
712
+ }
713
+
714
+ /* Content element animations - DISABLED (instant) */
715
+ .animate-slide-fade-up {
716
+ opacity: 1;
717
+ }
718
+
719
+ .animate-slide-scale-in {
720
+ opacity: 1;
721
+ }
722
+
723
+ .animate-stat-enter {
724
+ opacity: 1;
725
+ }
726
+
727
+ /* Legacy support - DISABLED (instant) */
728
+ .animate-slide-enter {
729
+ opacity: 1;
730
+ }
731
+
732
+ .animate-slide-enter-reverse {
733
+ opacity: 1;
734
+ }
735
+ }
736
+
737
+ /* ═══════════════════════════════════════════════════════════════
738
+ SIENA ENGAGED INDICATOR
739
+ - Text color: .siena-shimmer (solid terracotta for Siena name)
740
+ - Avatar ring: .siena-engaged-ring (simple border for left menu)
741
+ ═══════════════════════════════════════════════════════════════ */
742
+
743
+ /* Siena text - solid terracotta (for main conversation) */
744
+ .siena-shimmer {
745
+ color: var(--siena-terracotta);
746
+ }
747
+
748
+ /* Siena engaged avatar ring - simple 1px terracotta border (for left menu) */
749
+ .siena-engaged-ring {
750
+ border-radius: 9999px;
751
+ box-shadow: 0 0 0 1px var(--siena-terracotta);
752
+ }
753
+
533
754
  /* ═══════════════════════════════════════════════════════════════
534
755
  COMPONENT OVERRIDES
535
756
  ═══════════════════════════════════════════════════════════════ */
@@ -672,6 +893,46 @@
672
893
  .link-underline:hover::after {
673
894
  @apply w-full;
674
895
  }
896
+
897
+ /* ─────────────────────────────────────────────────────────────
898
+ CUSTOM SCROLLBAR — Refined, subtle, system-wide
899
+ Matches the Radix ScrollArea aesthetic but for native scrolling.
900
+ ───────────────────────────────────────────────────────────── */
901
+
902
+ /* Webkit browsers (Chrome, Safari, Edge) */
903
+ ::-webkit-scrollbar {
904
+ width: 8px;
905
+ height: 8px;
906
+ }
907
+
908
+ ::-webkit-scrollbar-track {
909
+ background: transparent;
910
+ }
911
+
912
+ ::-webkit-scrollbar-thumb {
913
+ background: var(--border);
914
+ border-radius: 9999px;
915
+ }
916
+
917
+ ::-webkit-scrollbar-thumb:hover {
918
+ background: var(--muted-foreground);
919
+ }
920
+
921
+ /* Hide scrollbar buttons/arrows */
922
+ ::-webkit-scrollbar-button {
923
+ display: none;
924
+ }
925
+
926
+ /* Corner when both scrollbars present */
927
+ ::-webkit-scrollbar-corner {
928
+ background: transparent;
929
+ }
930
+
931
+ /* Firefox */
932
+ * {
933
+ scrollbar-width: thin;
934
+ scrollbar-color: var(--border) transparent;
935
+ }
675
936
  }
676
937
 
677
938
  /* ═══════════════════════════════════════════════════════════════
@@ -703,11 +964,13 @@
703
964
  margin-bottom: 0.5em;
704
965
  }
705
966
 
967
+ /* Links - use foreground color, not purple (preserve purple for CTAs) */
706
968
  .prose-siena a {
707
- @apply text-primary underline underline-offset-4;
969
+ @apply text-foreground underline underline-offset-4 decoration-muted-foreground/50;
970
+ transition: color 150ms, text-decoration-color 150ms;
708
971
  }
709
972
  .prose-siena a:hover {
710
- color: var(--siena-bougainvillea-dark);
973
+ @apply text-foreground decoration-foreground;
711
974
  }
712
975
 
713
976
  .prose-siena ul,
package/dist/index.d.ts CHANGED
@@ -306,7 +306,10 @@ declare namespace SearchableSelect {
306
306
  var displayName: string;
307
307
  }
308
308
 
309
- declare function Slider({ className, defaultValue, value, min, max, ...props }: React$1.ComponentProps<typeof SliderPrimitive.Root>): react_jsx_runtime.JSX.Element;
309
+ declare const sliderVariants: (props?: ({
310
+ color?: "default" | "success" | "warning" | "muted" | null | undefined;
311
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
312
+ declare function Slider({ className, defaultValue, value, min, max, color, ...props }: React$1.ComponentProps<typeof SliderPrimitive.Root> & VariantProps<typeof sliderVariants>): react_jsx_runtime.JSX.Element;
310
313
 
311
314
  declare function Switch({ className, ...props }: React$1.ComponentProps<typeof SwitchPrimitive.Root>): react_jsx_runtime.JSX.Element;
312
315
 
@@ -498,10 +501,16 @@ declare function PaginationContent({ className, ...props }: React$1.ComponentPro
498
501
  declare function PaginationItem({ ...props }: React$1.ComponentProps<"li">): react_jsx_runtime.JSX.Element;
499
502
  type PaginationLinkProps = {
500
503
  isActive?: boolean;
501
- } & Pick<React$1.ComponentProps<typeof Button>, "size"> & React$1.ComponentProps<"a">;
502
- declare function PaginationLink({ className, isActive, size, ...props }: PaginationLinkProps): react_jsx_runtime.JSX.Element;
503
- declare function PaginationPrevious({ className, ...props }: React$1.ComponentProps<typeof PaginationLink>): react_jsx_runtime.JSX.Element;
504
- declare function PaginationNext({ className, ...props }: React$1.ComponentProps<typeof PaginationLink>): react_jsx_runtime.JSX.Element;
504
+ /** Render as button instead of anchor (for client-side pagination) */
505
+ asButton?: boolean;
506
+ } & Pick<React$1.ComponentProps<typeof Button>, "size"> & React$1.ComponentProps<"a"> & Pick<React$1.ComponentProps<"button">, "onClick" | "disabled">;
507
+ declare function PaginationLink({ className, isActive, asButton, size, onClick, disabled, ...props }: PaginationLinkProps): react_jsx_runtime.JSX.Element;
508
+ declare function PaginationPrevious({ className, showLabel, ...props }: React$1.ComponentProps<typeof PaginationLink> & {
509
+ showLabel?: boolean;
510
+ }): react_jsx_runtime.JSX.Element;
511
+ declare function PaginationNext({ className, showLabel, ...props }: React$1.ComponentProps<typeof PaginationLink> & {
512
+ showLabel?: boolean;
513
+ }): react_jsx_runtime.JSX.Element;
505
514
  declare function PaginationEllipsis({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
506
515
 
507
516
  declare const tabsListVariants: (props?: ({
@@ -636,8 +645,9 @@ declare function SheetDescription({ className, ...props }: React$1.ComponentProp
636
645
  declare function TooltipProvider({ delayDuration, ...props }: React$1.ComponentProps<typeof TooltipPrimitive.Provider>): react_jsx_runtime.JSX.Element;
637
646
  declare function Tooltip({ ...props }: React$1.ComponentProps<typeof TooltipPrimitive.Root>): react_jsx_runtime.JSX.Element;
638
647
  declare function TooltipTrigger({ ...props }: React$1.ComponentProps<typeof TooltipPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
639
- declare function TooltipContent({ className, sideOffset, children, container, ...props }: React$1.ComponentProps<typeof TooltipPrimitive.Content> & {
648
+ declare function TooltipContent({ className, sideOffset, children, container, showArrow, ...props }: React$1.ComponentProps<typeof TooltipPrimitive.Content> & {
640
649
  container?: HTMLElement | null;
650
+ showArrow?: boolean;
641
651
  }): react_jsx_runtime.JSX.Element;
642
652
 
643
653
  declare function Command({ className, ...props }: React$1.ComponentProps<typeof Command$1>): react_jsx_runtime.JSX.Element;
@@ -753,9 +763,16 @@ declare const ChannelIcons: {
753
763
  readonly gorgias: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
754
764
  readonly intercom: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
755
765
  readonly shopify: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
766
+ readonly yotpo: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
767
+ readonly klaviyo: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
768
+ readonly recharge: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
769
+ readonly attentive: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
770
+ readonly loop: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
771
+ readonly api: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
772
+ readonly siena: ({ className }: IconProps) => react_jsx_runtime.JSX.Element;
756
773
  };
757
774
  type ChannelType = keyof typeof ChannelIcons;
758
- declare function getChannelIcon(channel: ChannelType): (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element);
775
+ declare function getChannelIcon(channel: ChannelType): (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element) | (({ className }: IconProps) => react_jsx_runtime.JSX.Element);
759
776
 
760
777
  type SidebarContextProps = {
761
778
  state: "expanded" | "collapsed";
@@ -1008,6 +1025,36 @@ interface Message {
1008
1025
  status?: "sending" | "sent" | "error";
1009
1026
  /** Rich content to render after the text (charts, etc.) */
1010
1027
  afterContent?: React$1.ReactNode;
1028
+ /** Sender name (for inbox variant) */
1029
+ senderName?: string;
1030
+ /** Sender avatar URL (for inbox variant) */
1031
+ senderAvatar?: string;
1032
+ /** Sender email (for inbox variant tooltip) */
1033
+ senderEmail?: string;
1034
+ /** Channel type (for inbox variant) */
1035
+ channel?: MessageChannel;
1036
+ /** AI persona name (for inbox variant) */
1037
+ personaName?: string;
1038
+ /** AI persona emoji (for inbox variant, e.g., "🌿") */
1039
+ personaEmoji?: string;
1040
+ /** Mode badge text (for inbox variant) */
1041
+ modeBadge?: string;
1042
+ /** Link to open original message (for tooltip) */
1043
+ messageLink?: string;
1044
+ }
1045
+ /** Channel type for inbox variant */
1046
+ type MessageChannel = "instagram" | "facebook" | "tiktok" | "email" | "sms" | "phone" | "chat" | "comment";
1047
+ /** Brand identity per channel - scalable "To" field for tooltips */
1048
+ interface BrandIdentity {
1049
+ email?: string;
1050
+ instagram?: string;
1051
+ facebook?: string;
1052
+ tiktok?: string;
1053
+ sms?: string;
1054
+ phone?: string;
1055
+ chat?: string;
1056
+ comment?: string;
1057
+ default: string;
1011
1058
  }
1012
1059
  interface MessageBubbleProps extends React$1.HTMLAttributes<HTMLDivElement> {
1013
1060
  /** Message role */
@@ -1044,10 +1091,40 @@ interface MessageBubbleProps extends React$1.HTMLAttributes<HTMLDivElement> {
1044
1091
  onFeedback?: (type: "up" | "down") => void;
1045
1092
  /** Current feedback state */
1046
1093
  feedbackState?: "up" | "down" | null;
1047
- /** Visual variant: compact (wrapped bubble) or full (full-width, no bubble wrapper) */
1048
- variant?: "compact" | "full";
1094
+ /** Visual variant: compact (wrapped bubble), full (full-width), or inbox (clean social-style) */
1095
+ variant?: "compact" | "full" | "inbox";
1096
+ /** Sender name (for inbox variant) */
1097
+ senderName?: string;
1098
+ /** Sender avatar URL (for inbox variant) */
1099
+ senderAvatar?: string;
1100
+ /** Channel type (for inbox variant) */
1101
+ channel?: MessageChannel;
1102
+ /** AI persona name (for inbox variant, assistant messages) */
1103
+ personaName?: string;
1104
+ /** AI persona emoji (for inbox variant, e.g., "🌿") - replaces Sparkles icon */
1105
+ personaEmoji?: string;
1106
+ /** Show mode badge (e.g., "Conversational Mode") */
1107
+ modeBadge?: string;
1108
+ /** Sender email (for inbox variant tooltip) */
1109
+ senderEmail?: string;
1110
+ /** Link to open original message (for tooltip) */
1111
+ messageLink?: string;
1112
+ /** Custom content to render in the header row (e.g., intent badges) */
1113
+ headerContent?: React$1.ReactNode;
1114
+ /** Whether this is an internal note (channel-agnostic, no channel icon, "Added by" instead of "Responded by") */
1115
+ isInternalNote?: boolean;
1116
+ /**
1117
+ * Brand identity for customer message "To" field in tooltips.
1118
+ * Can be a simple string (e.g., "@kitschbeauty") for backward compatibility,
1119
+ * or a BrandIdentity object for channel-specific identities:
1120
+ * - email: "support@siena.cx"
1121
+ * - instagram: "@sienabrand"
1122
+ * - sms: "+1 (800) 123-4567"
1123
+ * etc.
1124
+ */
1125
+ brandIdentity?: BrandIdentity | string;
1049
1126
  }
1050
- declare function MessageBubble({ role, content, timestamp, status, attachments, streaming, showAvatar, userInitial, afterContent, onCopy, onEdit, onSaveEdit, onCancelEdit, isEditing, onRegenerate, onFeedback, feedbackState, variant, className, ...props }: MessageBubbleProps): react_jsx_runtime.JSX.Element;
1127
+ declare function MessageBubble({ role, content, timestamp, status, attachments, streaming, showAvatar, userInitial, afterContent, onCopy, onEdit, onSaveEdit, onCancelEdit, isEditing, onRegenerate, onFeedback, feedbackState, variant, senderName, senderAvatar, senderEmail, channel, personaName, personaEmoji, modeBadge, messageLink, headerContent, isInternalNote, brandIdentity, className, ...props }: MessageBubbleProps): react_jsx_runtime.JSX.Element;
1051
1128
 
1052
1129
  interface ToolCallBlockProps extends React$1.HTMLAttributes<HTMLDivElement> {
1053
1130
  /** Tool/function name */
@@ -1155,7 +1232,11 @@ interface ChatMessageListProps extends React$1.HTMLAttributes<HTMLDivElement> {
1155
1232
  /** Height of the container */
1156
1233
  height?: string | number;
1157
1234
  /** Message bubble variant */
1158
- messageVariant?: "compact" | "full";
1235
+ messageVariant?: "compact" | "full" | "inbox";
1236
+ /** Default persona name for AI messages (for inbox variant) */
1237
+ defaultPersonaName?: string;
1238
+ /** Default persona emoji for AI messages (for inbox variant) */
1239
+ defaultPersonaEmoji?: string;
1159
1240
  /** Show avatars - can be boolean or object { user?: boolean, ai?: boolean } */
1160
1241
  showAvatars?: boolean | {
1161
1242
  user?: boolean;
@@ -1164,14 +1245,16 @@ interface ChatMessageListProps extends React$1.HTMLAttributes<HTMLDivElement> {
1164
1245
  /** User avatar fallback (initials) - only applies to user messages */
1165
1246
  userInitial?: string;
1166
1247
  }
1167
- declare function ChatMessageList({ messages, loading, typing, onScrollTop, welcomeMessage, emptyState, onCopyMessage, onEditMessage, onSaveEdit, onCancelEdit, onRegenerateMessage, onFeedback, streamingMessageId, editingMessageId, feedbackStates, height, messageVariant, showAvatars, userInitial, className, ...props }: ChatMessageListProps): react_jsx_runtime.JSX.Element;
1248
+ declare function ChatMessageList({ messages, loading, typing, onScrollTop, welcomeMessage, emptyState, onCopyMessage, onEditMessage, onSaveEdit, onCancelEdit, onRegenerateMessage, onFeedback, streamingMessageId, editingMessageId, feedbackStates, height, messageVariant, showAvatars, userInitial, defaultPersonaName, defaultPersonaEmoji, className, ...props }: ChatMessageListProps): react_jsx_runtime.JSX.Element;
1168
1249
 
1169
1250
  /** Context header displayed inside the input container */
1170
1251
  interface ChatInputContext {
1171
1252
  /** Label text (e.g., "Replying to @sarah") */
1172
1253
  label: string;
1173
1254
  /** Color variant */
1174
- variant?: "sage" | "blue" | "muted";
1255
+ variant?: "sage" | "blue" | "muted" | "ochre";
1256
+ /** Optional icon to display before label (e.g., channel icon) */
1257
+ icon?: React$1.ReactNode;
1175
1258
  /** Dismiss callback - shows ✕ button when provided */
1176
1259
  onDismiss?: () => void;
1177
1260
  /** Optional actions on the right (e.g., "Send DM instead" button) */
@@ -1248,6 +1331,80 @@ interface ChatInputProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "o
1248
1331
  }
1249
1332
  declare function ChatInput({ value, onChange, onSend, onAttach, placeholder, disabled, loading, maxLength, showCount, attachments, onRemoveAttachment, onVoiceTranscript, showVoice, voiceSlot, isTranscripting, submitShortcut, maxRows, minRows, showAttachButton, onAttachClick, showSendButton, footerContent, leftSlot, rightSlot, enableDragDrop, context, className, ...props }: ChatInputProps): react_jsx_runtime.JSX.Element;
1250
1333
 
1334
+ type Channel$1 = "dm" | "comment" | "email" | "sms" | "phone";
1335
+ type Platform$1 = "instagram" | "facebook" | "tiktok" | "twitter" | "email" | "sms";
1336
+
1337
+ /** The mode of the input - determines context bar styling and behavior */
1338
+ type InputMode = "public" | "dm" | "internal";
1339
+ /** Context for what we're replying to - determines the context bar content */
1340
+ type InputContext = {
1341
+ type: "post";
1342
+ platform: Platform$1;
1343
+ } | {
1344
+ type: "user";
1345
+ handle: string;
1346
+ platform: Platform$1;
1347
+ } | {
1348
+ type: "channel";
1349
+ channel: Channel$1;
1350
+ platform: Platform$1;
1351
+ customerName: string;
1352
+ } | {
1353
+ type: "dm";
1354
+ handle: string;
1355
+ platform: Platform$1;
1356
+ } | {
1357
+ type: "internal";
1358
+ };
1359
+ /** The logged-in user (for agent attribution on replies) */
1360
+ interface CurrentUser {
1361
+ id: string;
1362
+ name: string;
1363
+ avatar?: string;
1364
+ }
1365
+
1366
+ interface UnifiedInputProps {
1367
+ /** The logged-in user (for agent attribution) */
1368
+ currentUser: CurrentUser;
1369
+ /** Current input context - determines labels, icons, and available actions */
1370
+ context: InputContext;
1371
+ /** Which modes are available (default: ["public"]) */
1372
+ availableModes?: InputMode[];
1373
+ /** Callback when mode changes (e.g., from public to dm via action button) */
1374
+ onModeChange?: (mode: InputMode) => void;
1375
+ /** Callback when context X is clicked (dismisses current context). Falls back to onModeChange("public") if not provided. */
1376
+ onContextDismiss?: () => void;
1377
+ /** Callback when message is sent - includes the mode */
1378
+ onSendMessage: (content: string, mode: InputMode) => void;
1379
+ /** Callback for file attachments */
1380
+ onAttach?: (files: File[]) => void;
1381
+ /** Current attachments */
1382
+ attachments?: Attachment$1[];
1383
+ /** Remove attachment callback */
1384
+ onRemoveAttachment?: (id: string) => void;
1385
+ /** Disabled state */
1386
+ disabled?: boolean;
1387
+ /** Loading state */
1388
+ loading?: boolean;
1389
+ className?: string;
1390
+ }
1391
+ declare function UnifiedInput({ currentUser, context, availableModes, onModeChange, onContextDismiss, onSendMessage, onAttach, attachments, onRemoveAttachment, disabled, loading, className, }: UnifiedInputProps): react_jsx_runtime.JSX.Element;
1392
+
1393
+ interface InputPlusMenuProps {
1394
+ /** Which modes are available in this context */
1395
+ availableModes: InputMode[];
1396
+ /** Current active mode */
1397
+ currentMode: InputMode;
1398
+ /** Callback when mode changes */
1399
+ onModeChange: (mode: InputMode) => void;
1400
+ /** Callback when Attach file is selected */
1401
+ onAttach?: () => void;
1402
+ /** Disabled state */
1403
+ disabled?: boolean;
1404
+ className?: string;
1405
+ }
1406
+ declare function InputPlusMenu({ availableModes, currentMode, onModeChange, onAttach, disabled, className, }: InputPlusMenuProps): react_jsx_runtime.JSX.Element | null;
1407
+
1251
1408
  interface Persona {
1252
1409
  id: string;
1253
1410
  name: string;
@@ -2370,6 +2527,37 @@ interface ContextCardGridProps {
2370
2527
  */
2371
2528
  declare function ContextCardGrid({ children, className }: ContextCardGridProps): react_jsx_runtime.JSX.Element;
2372
2529
 
2530
+ /**
2531
+ * RelatedLinks - Display external links with auto-detected icons
2532
+ *
2533
+ * Supports any URL - automatically detects the service from the domain
2534
+ * and shows the appropriate icon. Falls back to generic ExternalLink icon.
2535
+ *
2536
+ * Icons are imported from the design system (@/components/ui/service-icons)
2537
+ *
2538
+ * Used in: Priorities OS (sheet and full page views)
2539
+ */
2540
+ interface ExternalLinkItem {
2541
+ url: string;
2542
+ label?: string;
2543
+ }
2544
+ interface RelatedLinksProps {
2545
+ links: ExternalLinkItem[];
2546
+ className?: string;
2547
+ /** Compact mode for inline display (e.g., in initiative rows) */
2548
+ compact?: boolean;
2549
+ }
2550
+ /**
2551
+ * RelatedLinks - Display a list of external links with auto-detected icons
2552
+ */
2553
+ declare function RelatedLinks({ links, className, compact }: RelatedLinksProps): react_jsx_runtime.JSX.Element | null;
2554
+ /**
2555
+ * Single link display - for use in initiative rows
2556
+ */
2557
+ declare function LinkButton({ url, label, className }: ExternalLinkItem & {
2558
+ className?: string;
2559
+ }): react_jsx_runtime.JSX.Element;
2560
+
2373
2561
  interface HeroProps {
2374
2562
  label?: string;
2375
2563
  title: string;
@@ -2451,6 +2639,6 @@ declare function PortalContainerProvider({ container, children, }: {
2451
2639
  }): react_jsx_runtime.JSX.Element;
2452
2640
  declare function usePortalContainer(): HTMLElement | null;
2453
2641
 
2454
- declare const VERSION = "4.7.0";
2642
+ declare const VERSION = "6.3.0";
2455
2643
 
2456
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, type Account, AccountPicker, type AccountPickerProps, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, ApiKeyDisplay, AppLayout, AppSidebar, AspectRatio, type Attachment$1 as Attachment, AttachmentLightbox, type AttachmentLightboxProps, AttachmentMenu, type AttachmentMenuProps, AttachmentPreview, type AttachmentPreviewProps, Avatar, type AvatarColor, AvatarFallback, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, CTASection, Calendar, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, CategoryFilterChips, type ChangeItem, ChangelogSheet, type Channel, ChannelIcons, ChartCard, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatAvatar, type ChatAvatarProps, ChatHeader, type ChatHeaderProps, ChatInput, type ChatInputContext, type ChatInputProps, ChatMessageList, type ChatMessageListProps, ChatPanel, type ChatPanelProps, ChatSidebar, type ChatSidebarProps, ChatWidget, type ChatWidgetProps, ChatWindow, type ChatWindowProps, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextCard, ContextCardGrid, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, type Conversation, type ConversationActions, type ConversationChannel, type ConversationStatus, CustomerSheet, DataTable, DataTableColumnHeader, type DatePreset, DateRangePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DocumentHeader, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmailIcon, EmojiPicker, EmptyState, FacebookIcon, FeatureGrid, FilterBar, type FilterChip, FilterDropdown, type FilterOption, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, GorgiasIcon, HelpMenu, type HelpMenuItem, Hero, HoverCard, HoverCardContent, HoverCardTrigger, IconSelect, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, InsightReport, type InsightReportData, InstagramIcon, IntegrationCard, type IntegrationType, IntercomIcon, Kbd, Label, LinkedInIcon, LiveChatIcon, LogoCloud, MarkdownRenderer, type MarkdownRendererProps, type MemberRole, type MemberStatus, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, type Message, MessageActions, type MessageActionsProps, MessageBubble, type MessageBubbleProps, MessengerIcon, type Model, ModelSelector, type ModelSelectorProps, type NavItem, NavMain, type NavSection, type NavSubItem, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, type PageBreadcrumbItem, PageHeader, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PasswordInput, PersonSheet, type Persona, PhoneIcon, PlaceholderLogo, type Platform, type Playbook, PlaygroundInput, type PlaygroundInputProps, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PortalContainerProvider, PriorityBadge, PriorityChangelogBanner, PriorityChangelogSheet, type PriorityLevel, ProductBadge, ProductCard, type ProductTag, Progress, RadioGroup, RadioGroupItem, type Recommendation, type Release, type ReleaseHighlight, type Report, ReportCard, ResizableHandle, ResizablePanel, ResizablePanelGroup, ReviewsIcon, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, SearchableSelect, type SearchableSelectOption, type SearchableSelectProps, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, ShareDialog, type ShareDialogProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShopifyIcon, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, SlackIcon, Slider, SmsIcon, Spinner, StatCard, StreamingText, type StreamingTextProps, SuggestionChips, type SuggestionChipsProps, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, type TeamMember, TeamMemberList, Textarea, type TextareaProps, ThemeToggle, TikTokIcon, Toaster, Toggle, ToggleGroup, ToggleGroupItem, type Tool, type ToolCall, ToolCallBlock, type ToolCallBlockProps, type ToolProvider, ToolsPanelContent, type ToolsPanelContentProps, ToolsPopover, type ToolsPopoverProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TrendBadge, type TrendData, type TrendSection, TwitterIcon, TypingIndicator, type TypingIndicatorProps, UnsavedChangesBar, type UserData, UserMenu, type UserMenuItem, VERSION, VoiceInput, type VoiceInputProps, WhatsAppIcon, type Workspace, WorkspaceSelector, YouTubeIcon, ZendeskIcon, badgeVariants, buttonVariants, cn, defaultModels, defaultPlaybooks, formatShortDate, getChannelIcon, getReleaseTitle, inputVariants, navigationMenuTriggerStyle, productConfig, sampleReleases, textareaVariants, toggleVariants, useFormField, useIsMobile, usePortalContainer, useSidebar };
2644
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, type Account, AccountPicker, type AccountPickerProps, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, ApiKeyDisplay, AppLayout, AppSidebar, AspectRatio, type Attachment$1 as Attachment, AttachmentLightbox, type AttachmentLightboxProps, AttachmentMenu, type AttachmentMenuProps, AttachmentPreview, type AttachmentPreviewProps, Avatar, type AvatarColor, AvatarFallback, AvatarImage, Badge, type BadgeProps, type BrandIdentity, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, CTASection, Calendar, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, CategoryFilterChips, type ChangeItem, ChangelogSheet, type Channel, ChannelIcons, ChartCard, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatAvatar, type ChatAvatarProps, ChatHeader, type ChatHeaderProps, ChatInput, type ChatInputContext, type ChatInputProps, ChatMessageList, type ChatMessageListProps, ChatPanel, type ChatPanelProps, ChatSidebar, type ChatSidebarProps, ChatWidget, type ChatWidgetProps, ChatWindow, type ChatWindowProps, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextCard, ContextCardGrid, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, type Conversation, type ConversationActions, type ConversationChannel, type ConversationStatus, type CurrentUser, CustomerSheet, DataTable, DataTableColumnHeader, type DatePreset, DateRangePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DocumentHeader, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmailIcon, EmojiPicker, EmptyState, type ExternalLinkItem, FacebookIcon, FeatureGrid, FilterBar, type FilterChip, FilterDropdown, type FilterOption, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, GorgiasIcon, HelpMenu, type HelpMenuItem, Hero, HoverCard, HoverCardContent, HoverCardTrigger, IconSelect, Input, type InputContext, type InputMode, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputPlusMenu, type InputProps, InsightReport, type InsightReportData, InstagramIcon, IntegrationCard, type IntegrationType, IntercomIcon, Kbd, Label, LinkButton, LinkedInIcon, LiveChatIcon, LogoCloud, MarkdownRenderer, type MarkdownRendererProps, type MemberRole, type MemberStatus, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, type Message, MessageActions, type MessageActionsProps, MessageBubble, type MessageBubbleProps, type MessageChannel, MessengerIcon, type Model, ModelSelector, type ModelSelectorProps, type NavItem, NavMain, type NavSection, type NavSubItem, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, type PageBreadcrumbItem, PageHeader, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PasswordInput, PersonSheet, type Persona, PhoneIcon, PlaceholderLogo, type Platform, type Playbook, PlaygroundInput, type PlaygroundInputProps, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PortalContainerProvider, PriorityBadge, PriorityChangelogBanner, PriorityChangelogSheet, type PriorityLevel, ProductBadge, ProductCard, type ProductTag, Progress, RadioGroup, RadioGroupItem, type Recommendation, RelatedLinks, type Release, type ReleaseHighlight, type Report, ReportCard, ResizableHandle, ResizablePanel, ResizablePanelGroup, ReviewsIcon, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, SearchableSelect, type SearchableSelectOption, type SearchableSelectProps, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, ShareDialog, type ShareDialogProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShopifyIcon, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, SlackIcon, Slider, SmsIcon, Spinner, StatCard, StreamingText, type StreamingTextProps, SuggestionChips, type SuggestionChipsProps, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, type TeamMember, TeamMemberList, Textarea, type TextareaProps, ThemeToggle, TikTokIcon, Toaster, Toggle, ToggleGroup, ToggleGroupItem, type Tool, type ToolCall, ToolCallBlock, type ToolCallBlockProps, type ToolProvider, ToolsPanelContent, type ToolsPanelContentProps, ToolsPopover, type ToolsPopoverProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TrendBadge, type TrendData, type TrendSection, TwitterIcon, TypingIndicator, type TypingIndicatorProps, UnifiedInput, UnsavedChangesBar, type UserData, UserMenu, type UserMenuItem, VERSION, VoiceInput, type VoiceInputProps, WhatsAppIcon, type Workspace, WorkspaceSelector, YouTubeIcon, ZendeskIcon, badgeVariants, buttonVariants, cn, defaultModels, defaultPlaybooks, formatShortDate, getChannelIcon, getReleaseTitle, inputVariants, navigationMenuTriggerStyle, productConfig, sampleReleases, textareaVariants, toggleVariants, useFormField, useIsMobile, usePortalContainer, useSidebar };