@agentiffai/design 1.3.6 → 1.3.7

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.cts CHANGED
@@ -400,12 +400,16 @@ interface PostApprovalControlsProps {
400
400
  platform: Platform;
401
401
  /** Original content from the post */
402
402
  originalContent: string;
403
+ /** Previously saved edited content (persisted from onSave) */
404
+ editedContent?: string;
403
405
  /** Current approval status */
404
406
  status: ApprovalStatus;
405
407
  /** Error message if status is 'failed' */
406
408
  error?: string;
407
409
  /** Post ID if scheduled */
408
410
  postId?: string;
411
+ /** Callback when user saves edits (without approving) */
412
+ onSave?: (content: string) => void;
409
413
  /** Callback when user approves (receives final content) */
410
414
  onApprove: (content: string) => void;
411
415
  /** Callback when user rejects */
@@ -540,6 +544,138 @@ interface SocialMediaCanvasProps {
540
544
  */
541
545
  declare const SocialMediaCanvas: React__default.FC<SocialMediaCanvasProps>;
542
546
 
547
+ /**
548
+ * Reddit Engagement Types
549
+ *
550
+ * Type definitions for Reddit GEO engagement components.
551
+ * Extends existing social-media types for compatibility.
552
+ */
553
+ /**
554
+ * Tone classifications for Reddit replies
555
+ */
556
+ type ReplyTone = 'casual' | 'professional' | 'technical' | 'supportive' | 'humorous';
557
+ /**
558
+ * Status of an engagement opportunity in the queue
559
+ */
560
+ type EngagementStatus = 'pending' | 'posted' | 'skipped' | 'expired' | 'editing';
561
+ /**
562
+ * A Reddit post discovered for potential engagement
563
+ */
564
+ interface EngagementOpportunity {
565
+ /** Unique identifier for this opportunity */
566
+ id: string;
567
+ /** Reddit's post ID (t3_xxxx format) */
568
+ postId: string;
569
+ /** Subreddit name (without r/) */
570
+ subreddit: string;
571
+ /** Post title */
572
+ title: string;
573
+ /** Post body content (selftext) or URL for link posts */
574
+ postContent: string;
575
+ /** Full URL to the Reddit post */
576
+ postUrl: string;
577
+ /** Author username (without u/) */
578
+ postAuthor: string;
579
+ /** Current upvote score */
580
+ postScore: number;
581
+ /** Number of comments */
582
+ postNumComments: number;
583
+ /** Post creation timestamp */
584
+ postCreatedAt: string;
585
+ /** AI-generated draft reply */
586
+ draftReply: string;
587
+ /** User-edited version of the reply (if modified) */
588
+ editedReply?: string;
589
+ /** AI engagement quality score (1-10) */
590
+ engagementScore: number;
591
+ /** Detected/recommended tone for reply */
592
+ toneMatch: ReplyTone;
593
+ /** AI's strategy explanation for the reply */
594
+ strategy: string;
595
+ /** Current status in workflow */
596
+ status: EngagementStatus;
597
+ /** When this opportunity was discovered */
598
+ createdAt: string;
599
+ /** When the reply was posted (if applicable) */
600
+ postedAt?: string;
601
+ /** When skipped (if applicable) */
602
+ skippedAt?: string;
603
+ /** Reason for skipping (if applicable) */
604
+ skipReason?: string;
605
+ /** Post flair if any */
606
+ flair?: string;
607
+ /** Whether post is marked NSFW */
608
+ isNsfw?: boolean;
609
+ /** Whether post is a self/text post */
610
+ isSelfPost?: boolean;
611
+ }
612
+ /**
613
+ * Props for the RedditOpportunityCard component
614
+ */
615
+ interface RedditOpportunityCardProps {
616
+ /** The engagement opportunity to display */
617
+ opportunity: EngagementOpportunity;
618
+ /** Whether this card is currently active/focused */
619
+ isActive?: boolean;
620
+ /** Whether currently in edit mode */
621
+ isEditing?: boolean;
622
+ /** Current edited content (controlled) */
623
+ editContent?: string;
624
+ /** Callback when content changes during editing */
625
+ onContentChange?: (content: string) => void;
626
+ /** Show loading skeleton */
627
+ isLoading?: boolean;
628
+ /** Whether to show condensed view */
629
+ condensed?: boolean;
630
+ }
631
+ /**
632
+ * Props for the RedditEngagementControls component
633
+ */
634
+ interface RedditEngagementControlsProps {
635
+ /** The opportunity being controlled */
636
+ opportunity: EngagementOpportunity;
637
+ /** Current reply content (draft or edited) */
638
+ currentReply: string;
639
+ /** Whether in edit mode */
640
+ isEditing: boolean;
641
+ /** Toggle edit mode */
642
+ onToggleEdit: () => void;
643
+ /** Save edits */
644
+ onSaveEdit: (content: string) => void;
645
+ /** Cancel editing */
646
+ onCancelEdit: () => void;
647
+ /** Copy reply and open post */
648
+ onCopyAndOpen: () => void;
649
+ /** Mark as posted */
650
+ onMarkPosted: () => void;
651
+ /** Skip this opportunity */
652
+ onSkip: (reason?: string) => void;
653
+ /** Regenerate AI reply */
654
+ onRegenerate: (feedback?: string) => void;
655
+ /** Whether actions are disabled */
656
+ isLoading?: boolean;
657
+ /** Whether copy was just performed (for feedback) */
658
+ justCopied?: boolean;
659
+ }
660
+
661
+ /**
662
+ * RedditOpportunityCard Component
663
+ *
664
+ * Displays a Reddit post opportunity with engagement metrics.
665
+ * Shows post details, engagement score, and draft reply.
666
+ */
667
+
668
+ declare const RedditOpportunityCard: React__default.FC<RedditOpportunityCardProps>;
669
+
670
+ /**
671
+ * RedditEngagementControls Component
672
+ *
673
+ * Action controls for the Reddit engagement workflow.
674
+ * Handles: Copy & Open, Mark as Posted, Skip, Edit, Regenerate
675
+ */
676
+
677
+ declare const RedditEngagementControls: React__default.FC<RedditEngagementControlsProps>;
678
+
543
679
  /**
544
680
  * TokenUsageCard Component
545
681
  *
@@ -564,4 +700,4 @@ interface TokenUsageCardProps {
564
700
  }
565
701
  declare function TokenUsageCard({ currentUsage, maxLimit, transactions, periodLabel, onViewAll, className, }: TokenUsageCardProps): React__default.ReactElement;
566
702
 
567
- export { type ApprovalStatus, AssistantThinking, type AssistantThinkingProps, CATEGORY_CONFIGS, type CategoryConfig, ChatInput, type ChatInputProps, ConnectionStatusBadge, type ConnectionStatusBadgeProps, DarkNotificationCard, IntegrationCard, type IntegrationCardProps, NotificationCard, type NotificationCardProps, type NotificationItem, type NotificationSection, PLATFORM_CONFIGS, type Platform, PlatformCarousel, type PlatformCarouselProps, type PlatformConfig, PlatformGrid, type PlatformGridProps, PostApprovalControls, type PostApprovalControlsProps, PostPreviewCard, type PostPreviewCardProps, type PostViewMode, type ProgressCategory, type ProposedPost, SecretInput, type SecretInputProps, SocialMediaCanvas, type SocialMediaCanvasProps, type TokenTransaction, TokenUsageCard, type TokenUsageCardProps, UserMessage, type UserMessageProps, categorizeProgress, getCategoryColor, getCategoryIcon, getCharacterCount, getCharacterLimitColor, getCharacterLimitPercentage, isWithinCharLimit, normalizePlatform };
703
+ export { type ApprovalStatus, AssistantThinking, type AssistantThinkingProps, CATEGORY_CONFIGS, type CategoryConfig, ChatInput, type ChatInputProps, ConnectionStatusBadge, type ConnectionStatusBadgeProps, DarkNotificationCard, type EngagementOpportunity, type EngagementStatus, IntegrationCard, type IntegrationCardProps, NotificationCard, type NotificationCardProps, type NotificationItem, type NotificationSection, PLATFORM_CONFIGS, type Platform, PlatformCarousel, type PlatformCarouselProps, type PlatformConfig, PlatformGrid, type PlatformGridProps, PostApprovalControls, type PostApprovalControlsProps, PostPreviewCard, type PostPreviewCardProps, type PostViewMode, type ProgressCategory, type ProposedPost, RedditEngagementControls, type RedditEngagementControlsProps, RedditOpportunityCard, type RedditOpportunityCardProps, type ReplyTone, SecretInput, type SecretInputProps, SocialMediaCanvas, type SocialMediaCanvasProps, type TokenTransaction, TokenUsageCard, type TokenUsageCardProps, UserMessage, type UserMessageProps, categorizeProgress, getCategoryColor, getCategoryIcon, getCharacterCount, getCharacterLimitColor, getCharacterLimitPercentage, isWithinCharLimit, normalizePlatform };
package/dist/index.d.ts CHANGED
@@ -400,12 +400,16 @@ interface PostApprovalControlsProps {
400
400
  platform: Platform;
401
401
  /** Original content from the post */
402
402
  originalContent: string;
403
+ /** Previously saved edited content (persisted from onSave) */
404
+ editedContent?: string;
403
405
  /** Current approval status */
404
406
  status: ApprovalStatus;
405
407
  /** Error message if status is 'failed' */
406
408
  error?: string;
407
409
  /** Post ID if scheduled */
408
410
  postId?: string;
411
+ /** Callback when user saves edits (without approving) */
412
+ onSave?: (content: string) => void;
409
413
  /** Callback when user approves (receives final content) */
410
414
  onApprove: (content: string) => void;
411
415
  /** Callback when user rejects */
@@ -540,6 +544,138 @@ interface SocialMediaCanvasProps {
540
544
  */
541
545
  declare const SocialMediaCanvas: React__default.FC<SocialMediaCanvasProps>;
542
546
 
547
+ /**
548
+ * Reddit Engagement Types
549
+ *
550
+ * Type definitions for Reddit GEO engagement components.
551
+ * Extends existing social-media types for compatibility.
552
+ */
553
+ /**
554
+ * Tone classifications for Reddit replies
555
+ */
556
+ type ReplyTone = 'casual' | 'professional' | 'technical' | 'supportive' | 'humorous';
557
+ /**
558
+ * Status of an engagement opportunity in the queue
559
+ */
560
+ type EngagementStatus = 'pending' | 'posted' | 'skipped' | 'expired' | 'editing';
561
+ /**
562
+ * A Reddit post discovered for potential engagement
563
+ */
564
+ interface EngagementOpportunity {
565
+ /** Unique identifier for this opportunity */
566
+ id: string;
567
+ /** Reddit's post ID (t3_xxxx format) */
568
+ postId: string;
569
+ /** Subreddit name (without r/) */
570
+ subreddit: string;
571
+ /** Post title */
572
+ title: string;
573
+ /** Post body content (selftext) or URL for link posts */
574
+ postContent: string;
575
+ /** Full URL to the Reddit post */
576
+ postUrl: string;
577
+ /** Author username (without u/) */
578
+ postAuthor: string;
579
+ /** Current upvote score */
580
+ postScore: number;
581
+ /** Number of comments */
582
+ postNumComments: number;
583
+ /** Post creation timestamp */
584
+ postCreatedAt: string;
585
+ /** AI-generated draft reply */
586
+ draftReply: string;
587
+ /** User-edited version of the reply (if modified) */
588
+ editedReply?: string;
589
+ /** AI engagement quality score (1-10) */
590
+ engagementScore: number;
591
+ /** Detected/recommended tone for reply */
592
+ toneMatch: ReplyTone;
593
+ /** AI's strategy explanation for the reply */
594
+ strategy: string;
595
+ /** Current status in workflow */
596
+ status: EngagementStatus;
597
+ /** When this opportunity was discovered */
598
+ createdAt: string;
599
+ /** When the reply was posted (if applicable) */
600
+ postedAt?: string;
601
+ /** When skipped (if applicable) */
602
+ skippedAt?: string;
603
+ /** Reason for skipping (if applicable) */
604
+ skipReason?: string;
605
+ /** Post flair if any */
606
+ flair?: string;
607
+ /** Whether post is marked NSFW */
608
+ isNsfw?: boolean;
609
+ /** Whether post is a self/text post */
610
+ isSelfPost?: boolean;
611
+ }
612
+ /**
613
+ * Props for the RedditOpportunityCard component
614
+ */
615
+ interface RedditOpportunityCardProps {
616
+ /** The engagement opportunity to display */
617
+ opportunity: EngagementOpportunity;
618
+ /** Whether this card is currently active/focused */
619
+ isActive?: boolean;
620
+ /** Whether currently in edit mode */
621
+ isEditing?: boolean;
622
+ /** Current edited content (controlled) */
623
+ editContent?: string;
624
+ /** Callback when content changes during editing */
625
+ onContentChange?: (content: string) => void;
626
+ /** Show loading skeleton */
627
+ isLoading?: boolean;
628
+ /** Whether to show condensed view */
629
+ condensed?: boolean;
630
+ }
631
+ /**
632
+ * Props for the RedditEngagementControls component
633
+ */
634
+ interface RedditEngagementControlsProps {
635
+ /** The opportunity being controlled */
636
+ opportunity: EngagementOpportunity;
637
+ /** Current reply content (draft or edited) */
638
+ currentReply: string;
639
+ /** Whether in edit mode */
640
+ isEditing: boolean;
641
+ /** Toggle edit mode */
642
+ onToggleEdit: () => void;
643
+ /** Save edits */
644
+ onSaveEdit: (content: string) => void;
645
+ /** Cancel editing */
646
+ onCancelEdit: () => void;
647
+ /** Copy reply and open post */
648
+ onCopyAndOpen: () => void;
649
+ /** Mark as posted */
650
+ onMarkPosted: () => void;
651
+ /** Skip this opportunity */
652
+ onSkip: (reason?: string) => void;
653
+ /** Regenerate AI reply */
654
+ onRegenerate: (feedback?: string) => void;
655
+ /** Whether actions are disabled */
656
+ isLoading?: boolean;
657
+ /** Whether copy was just performed (for feedback) */
658
+ justCopied?: boolean;
659
+ }
660
+
661
+ /**
662
+ * RedditOpportunityCard Component
663
+ *
664
+ * Displays a Reddit post opportunity with engagement metrics.
665
+ * Shows post details, engagement score, and draft reply.
666
+ */
667
+
668
+ declare const RedditOpportunityCard: React__default.FC<RedditOpportunityCardProps>;
669
+
670
+ /**
671
+ * RedditEngagementControls Component
672
+ *
673
+ * Action controls for the Reddit engagement workflow.
674
+ * Handles: Copy & Open, Mark as Posted, Skip, Edit, Regenerate
675
+ */
676
+
677
+ declare const RedditEngagementControls: React__default.FC<RedditEngagementControlsProps>;
678
+
543
679
  /**
544
680
  * TokenUsageCard Component
545
681
  *
@@ -564,4 +700,4 @@ interface TokenUsageCardProps {
564
700
  }
565
701
  declare function TokenUsageCard({ currentUsage, maxLimit, transactions, periodLabel, onViewAll, className, }: TokenUsageCardProps): React__default.ReactElement;
566
702
 
567
- export { type ApprovalStatus, AssistantThinking, type AssistantThinkingProps, CATEGORY_CONFIGS, type CategoryConfig, ChatInput, type ChatInputProps, ConnectionStatusBadge, type ConnectionStatusBadgeProps, DarkNotificationCard, IntegrationCard, type IntegrationCardProps, NotificationCard, type NotificationCardProps, type NotificationItem, type NotificationSection, PLATFORM_CONFIGS, type Platform, PlatformCarousel, type PlatformCarouselProps, type PlatformConfig, PlatformGrid, type PlatformGridProps, PostApprovalControls, type PostApprovalControlsProps, PostPreviewCard, type PostPreviewCardProps, type PostViewMode, type ProgressCategory, type ProposedPost, SecretInput, type SecretInputProps, SocialMediaCanvas, type SocialMediaCanvasProps, type TokenTransaction, TokenUsageCard, type TokenUsageCardProps, UserMessage, type UserMessageProps, categorizeProgress, getCategoryColor, getCategoryIcon, getCharacterCount, getCharacterLimitColor, getCharacterLimitPercentage, isWithinCharLimit, normalizePlatform };
703
+ export { type ApprovalStatus, AssistantThinking, type AssistantThinkingProps, CATEGORY_CONFIGS, type CategoryConfig, ChatInput, type ChatInputProps, ConnectionStatusBadge, type ConnectionStatusBadgeProps, DarkNotificationCard, type EngagementOpportunity, type EngagementStatus, IntegrationCard, type IntegrationCardProps, NotificationCard, type NotificationCardProps, type NotificationItem, type NotificationSection, PLATFORM_CONFIGS, type Platform, PlatformCarousel, type PlatformCarouselProps, type PlatformConfig, PlatformGrid, type PlatformGridProps, PostApprovalControls, type PostApprovalControlsProps, PostPreviewCard, type PostPreviewCardProps, type PostViewMode, type ProgressCategory, type ProposedPost, RedditEngagementControls, type RedditEngagementControlsProps, RedditOpportunityCard, type RedditOpportunityCardProps, type ReplyTone, SecretInput, type SecretInputProps, SocialMediaCanvas, type SocialMediaCanvasProps, type TokenTransaction, TokenUsageCard, type TokenUsageCardProps, UserMessage, type UserMessageProps, categorizeProgress, getCategoryColor, getCategoryIcon, getCharacterCount, getCharacterLimitColor, getCharacterLimitPercentage, isWithinCharLimit, normalizePlatform };