@beyondcorp/beyond-ui 1.3.12 → 1.4.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/components/ComponentShowcase/ComponentShowcase.js +7 -1
- package/dist/components/ComponentShowcase/ComponentShowcase.js.map +1 -1
- package/dist/components/ComponentShowcase/componentDocs.d.ts +6 -0
- package/dist/components/ComponentShowcase/componentDocs.js +17 -0
- package/dist/components/ComponentShowcase/componentDocs.js.map +1 -1
- package/dist/components/ComponentShowcase/showcaseRegistry.js +3 -1
- package/dist/components/ComponentShowcase/showcaseRegistry.js.map +1 -1
- package/dist/components/Email/EmailShowcase.d.ts +1 -0
- package/dist/components/Email/EmailShowcase.js +85 -0
- package/dist/components/Email/EmailShowcase.js.map +1 -0
- package/dist/components/Email/components/EmailButton.d.ts +5 -0
- package/dist/components/Email/components/EmailButton.js +7 -0
- package/dist/components/Email/components/EmailButton.js.map +1 -0
- package/dist/components/Email/components/EmailDivider.d.ts +1 -0
- package/dist/components/Email/components/EmailDivider.js +7 -0
- package/dist/components/Email/components/EmailDivider.js.map +1 -0
- package/dist/components/Email/components/EmailFooter.d.ts +3 -0
- package/dist/components/Email/components/EmailFooter.js +9 -0
- package/dist/components/Email/components/EmailFooter.js.map +1 -0
- package/dist/components/Email/components/EmailHeader.d.ts +4 -0
- package/dist/components/Email/components/EmailHeader.js +8 -0
- package/dist/components/Email/components/EmailHeader.js.map +1 -0
- package/dist/components/Email/components/EmailLayout.d.ts +6 -0
- package/dist/components/Email/components/EmailLayout.js +15 -0
- package/dist/components/Email/components/EmailLayout.js.map +1 -0
- package/dist/components/Email/components/EmailPreviewer.d.ts +5 -0
- package/dist/components/Email/components/EmailPreviewer.js +25 -0
- package/dist/components/Email/components/EmailPreviewer.js.map +1 -0
- package/dist/components/Email/components/index.d.ts +7 -0
- package/dist/components/Email/components/theme.d.ts +27 -0
- package/dist/components/Email/components/theme.js +21 -0
- package/dist/components/Email/components/theme.js.map +1 -0
- package/dist/components/Email/index.d.ts +2 -0
- package/dist/components/Email/templates/auth/ConfirmEmail.d.ts +7 -0
- package/dist/components/Email/templates/auth/ConfirmEmail.js +13 -0
- package/dist/components/Email/templates/auth/ConfirmEmail.js.map +1 -0
- package/dist/components/Email/templates/auth/EmailChangeVerification.d.ts +9 -0
- package/dist/components/Email/templates/auth/EmailChangeVerification.js +13 -0
- package/dist/components/Email/templates/auth/EmailChangeVerification.js.map +1 -0
- package/dist/components/Email/templates/auth/MagicLinkEmail.d.ts +7 -0
- package/dist/components/Email/templates/auth/MagicLinkEmail.js +14 -0
- package/dist/components/Email/templates/auth/MagicLinkEmail.js.map +1 -0
- package/dist/components/Email/templates/auth/ResetPasswordEmail.d.ts +8 -0
- package/dist/components/Email/templates/auth/ResetPasswordEmail.js +13 -0
- package/dist/components/Email/templates/auth/ResetPasswordEmail.js.map +1 -0
- package/dist/components/Email/templates/auth/WelcomeEmail.d.ts +8 -0
- package/dist/components/Email/templates/auth/WelcomeEmail.js +13 -0
- package/dist/components/Email/templates/auth/WelcomeEmail.js.map +1 -0
- package/dist/components/Email/templates/auth/index.d.ts +5 -0
- package/dist/components/Email/templates/billing/CreditCardExpiring.d.ts +9 -0
- package/dist/components/Email/templates/billing/CreditCardExpiring.js +14 -0
- package/dist/components/Email/templates/billing/CreditCardExpiring.js.map +1 -0
- package/dist/components/Email/templates/billing/InvoiceEmail.d.ts +10 -0
- package/dist/components/Email/templates/billing/InvoiceEmail.js +16 -0
- package/dist/components/Email/templates/billing/InvoiceEmail.js.map +1 -0
- package/dist/components/Email/templates/billing/OverduePaymentNotice.d.ts +9 -0
- package/dist/components/Email/templates/billing/OverduePaymentNotice.js +13 -0
- package/dist/components/Email/templates/billing/OverduePaymentNotice.js.map +1 -0
- package/dist/components/Email/templates/billing/PaymentFailedEmail.d.ts +8 -0
- package/dist/components/Email/templates/billing/PaymentFailedEmail.js +14 -0
- package/dist/components/Email/templates/billing/PaymentFailedEmail.js.map +1 -0
- package/dist/components/Email/templates/billing/PaymentReceipt.d.ts +10 -0
- package/dist/components/Email/templates/billing/PaymentReceipt.js +15 -0
- package/dist/components/Email/templates/billing/PaymentReceipt.js.map +1 -0
- package/dist/components/Email/templates/billing/SubscriptionCancelled.d.ts +9 -0
- package/dist/components/Email/templates/billing/SubscriptionCancelled.js +14 -0
- package/dist/components/Email/templates/billing/SubscriptionCancelled.js.map +1 -0
- package/dist/components/Email/templates/billing/SubscriptionConfirmation.d.ts +10 -0
- package/dist/components/Email/templates/billing/SubscriptionConfirmation.js +13 -0
- package/dist/components/Email/templates/billing/SubscriptionConfirmation.js.map +1 -0
- package/dist/components/Email/templates/billing/TrialEndingEmail.d.ts +8 -0
- package/dist/components/Email/templates/billing/TrialEndingEmail.js +13 -0
- package/dist/components/Email/templates/billing/TrialEndingEmail.js.map +1 -0
- package/dist/components/Email/templates/billing/index.d.ts +8 -0
- package/dist/components/Email/templates/engagement/FeatureAnnouncement.d.ts +10 -0
- package/dist/components/Email/templates/engagement/FeatureAnnouncement.js +15 -0
- package/dist/components/Email/templates/engagement/FeatureAnnouncement.js.map +1 -0
- package/dist/components/Email/templates/engagement/FeedbackRequestEmail.d.ts +8 -0
- package/dist/components/Email/templates/engagement/FeedbackRequestEmail.js +13 -0
- package/dist/components/Email/templates/engagement/FeedbackRequestEmail.js.map +1 -0
- package/dist/components/Email/templates/engagement/InactivityWarning.d.ts +9 -0
- package/dist/components/Email/templates/engagement/InactivityWarning.js +14 -0
- package/dist/components/Email/templates/engagement/InactivityWarning.js.map +1 -0
- package/dist/components/Email/templates/engagement/MilestoneEmail.d.ts +9 -0
- package/dist/components/Email/templates/engagement/MilestoneEmail.js +14 -0
- package/dist/components/Email/templates/engagement/MilestoneEmail.js.map +1 -0
- package/dist/components/Email/templates/engagement/ProductChangelog.d.ts +9 -0
- package/dist/components/Email/templates/engagement/ProductChangelog.js +13 -0
- package/dist/components/Email/templates/engagement/ProductChangelog.js.map +1 -0
- package/dist/components/Email/templates/engagement/TeamInviteEmail.d.ts +9 -0
- package/dist/components/Email/templates/engagement/TeamInviteEmail.js +14 -0
- package/dist/components/Email/templates/engagement/TeamInviteEmail.js.map +1 -0
- package/dist/components/Email/templates/engagement/TipOfWeek.d.ts +9 -0
- package/dist/components/Email/templates/engagement/TipOfWeek.js +13 -0
- package/dist/components/Email/templates/engagement/TipOfWeek.js.map +1 -0
- package/dist/components/Email/templates/engagement/WeeklyDigest.d.ts +11 -0
- package/dist/components/Email/templates/engagement/WeeklyDigest.js +20 -0
- package/dist/components/Email/templates/engagement/WeeklyDigest.js.map +1 -0
- package/dist/components/Email/templates/engagement/index.d.ts +8 -0
- package/dist/components/Email/templates/growth/ReferralConverted.d.ts +9 -0
- package/dist/components/Email/templates/growth/ReferralConverted.js +13 -0
- package/dist/components/Email/templates/growth/ReferralConverted.js.map +1 -0
- package/dist/components/Email/templates/growth/ReferralInvite.d.ts +8 -0
- package/dist/components/Email/templates/growth/ReferralInvite.js +13 -0
- package/dist/components/Email/templates/growth/ReferralInvite.js.map +1 -0
- package/dist/components/Email/templates/growth/ReferralReward.d.ts +10 -0
- package/dist/components/Email/templates/growth/ReferralReward.js +14 -0
- package/dist/components/Email/templates/growth/ReferralReward.js.map +1 -0
- package/dist/components/Email/templates/growth/SocialSharePrompt.d.ts +8 -0
- package/dist/components/Email/templates/growth/SocialSharePrompt.js +15 -0
- package/dist/components/Email/templates/growth/SocialSharePrompt.js.map +1 -0
- package/dist/components/Email/templates/growth/WaitlistWelcome.d.ts +9 -0
- package/dist/components/Email/templates/growth/WaitlistWelcome.js +14 -0
- package/dist/components/Email/templates/growth/WaitlistWelcome.js.map +1 -0
- package/dist/components/Email/templates/growth/index.d.ts +5 -0
- package/dist/components/Email/templates/index.d.ts +11 -0
- package/dist/components/Email/templates/index.js +116 -0
- package/dist/components/Email/templates/index.js.map +1 -0
- package/dist/components/Email/templates/internal/comms/CompanyEventsCalendar.d.ts +13 -0
- package/dist/components/Email/templates/internal/comms/CompanyEventsCalendar.js +19 -0
- package/dist/components/Email/templates/internal/comms/CompanyEventsCalendar.js.map +1 -0
- package/dist/components/Email/templates/internal/comms/LeadershipUpdate.d.ts +9 -0
- package/dist/components/Email/templates/internal/comms/LeadershipUpdate.js +16 -0
- package/dist/components/Email/templates/internal/comms/LeadershipUpdate.js.map +1 -0
- package/dist/components/Email/templates/internal/comms/MeetingRecap.d.ts +10 -0
- package/dist/components/Email/templates/internal/comms/MeetingRecap.js +19 -0
- package/dist/components/Email/templates/internal/comms/MeetingRecap.js.map +1 -0
- package/dist/components/Email/templates/internal/comms/index.d.ts +3 -0
- package/dist/components/Email/templates/internal/hr/BirthdayAnniversary.d.ts +8 -0
- package/dist/components/Email/templates/internal/hr/BirthdayAnniversary.js +14 -0
- package/dist/components/Email/templates/internal/hr/BirthdayAnniversary.js.map +1 -0
- package/dist/components/Email/templates/internal/hr/EmployeeFarewell.d.ts +9 -0
- package/dist/components/Email/templates/internal/hr/EmployeeFarewell.js +13 -0
- package/dist/components/Email/templates/internal/hr/EmployeeFarewell.js.map +1 -0
- package/dist/components/Email/templates/internal/hr/ExitInterviewRequest.d.ts +8 -0
- package/dist/components/Email/templates/internal/hr/ExitInterviewRequest.js +13 -0
- package/dist/components/Email/templates/internal/hr/ExitInterviewRequest.js.map +1 -0
- package/dist/components/Email/templates/internal/hr/NewHireAnnouncement.d.ts +11 -0
- package/dist/components/Email/templates/internal/hr/NewHireAnnouncement.js +14 -0
- package/dist/components/Email/templates/internal/hr/NewHireAnnouncement.js.map +1 -0
- package/dist/components/Email/templates/internal/hr/PolicyUpdate.d.ts +9 -0
- package/dist/components/Email/templates/internal/hr/PolicyUpdate.js +13 -0
- package/dist/components/Email/templates/internal/hr/PolicyUpdate.js.map +1 -0
- package/dist/components/Email/templates/internal/hr/index.d.ts +5 -0
- package/dist/components/Email/templates/internal/index.d.ts +3 -0
- package/dist/components/Email/templates/internal/it/AppAccessGranted.d.ts +9 -0
- package/dist/components/Email/templates/internal/it/AppAccessGranted.js +13 -0
- package/dist/components/Email/templates/internal/it/AppAccessGranted.js.map +1 -0
- package/dist/components/Email/templates/internal/it/ITOutageReport.d.ts +9 -0
- package/dist/components/Email/templates/internal/it/ITOutageReport.js +15 -0
- package/dist/components/Email/templates/internal/it/ITOutageReport.js.map +1 -0
- package/dist/components/Email/templates/internal/it/PasswordRotationReminder.d.ts +8 -0
- package/dist/components/Email/templates/internal/it/PasswordRotationReminder.js +13 -0
- package/dist/components/Email/templates/internal/it/PasswordRotationReminder.js.map +1 -0
- package/dist/components/Email/templates/internal/it/index.d.ts +3 -0
- package/dist/components/Email/templates/legal/DMCANotice.d.ts +9 -0
- package/dist/components/Email/templates/legal/DMCANotice.js +14 -0
- package/dist/components/Email/templates/legal/DMCANotice.js.map +1 -0
- package/dist/components/Email/templates/legal/DPANotice.d.ts +9 -0
- package/dist/components/Email/templates/legal/DPANotice.js +14 -0
- package/dist/components/Email/templates/legal/DPANotice.js.map +1 -0
- package/dist/components/Email/templates/legal/GDPRCompliance.d.ts +8 -0
- package/dist/components/Email/templates/legal/GDPRCompliance.js +14 -0
- package/dist/components/Email/templates/legal/GDPRCompliance.js.map +1 -0
- package/dist/components/Email/templates/legal/PrivacyPolicyUpdate.d.ts +8 -0
- package/dist/components/Email/templates/legal/PrivacyPolicyUpdate.js +14 -0
- package/dist/components/Email/templates/legal/PrivacyPolicyUpdate.js.map +1 -0
- package/dist/components/Email/templates/legal/TermsOfServiceUpdate.d.ts +8 -0
- package/dist/components/Email/templates/legal/TermsOfServiceUpdate.js +14 -0
- package/dist/components/Email/templates/legal/TermsOfServiceUpdate.js.map +1 -0
- package/dist/components/Email/templates/legal/index.d.ts +5 -0
- package/dist/components/Email/templates/marketing/affiliate/AffiliateInvite.d.ts +6 -0
- package/dist/components/Email/templates/marketing/affiliate/AffiliateInvite.js +11 -0
- package/dist/components/Email/templates/marketing/affiliate/AffiliateInvite.js.map +1 -0
- package/dist/components/Email/templates/marketing/affiliate/AffiliatePayout.d.ts +6 -0
- package/dist/components/Email/templates/marketing/affiliate/AffiliatePayout.js +11 -0
- package/dist/components/Email/templates/marketing/affiliate/AffiliatePayout.js.map +1 -0
- package/dist/components/Email/templates/marketing/affiliate/AffiliateTopPerformer.d.ts +5 -0
- package/dist/components/Email/templates/marketing/affiliate/AffiliateTopPerformer.js +11 -0
- package/dist/components/Email/templates/marketing/affiliate/AffiliateTopPerformer.js.map +1 -0
- package/dist/components/Email/templates/marketing/affiliate/AffiliateWelcome.d.ts +5 -0
- package/dist/components/Email/templates/marketing/affiliate/AffiliateWelcome.js +11 -0
- package/dist/components/Email/templates/marketing/affiliate/AffiliateWelcome.js.map +1 -0
- package/dist/components/Email/templates/marketing/affiliate/PartnerComarketing.d.ts +6 -0
- package/dist/components/Email/templates/marketing/affiliate/PartnerComarketing.js +11 -0
- package/dist/components/Email/templates/marketing/affiliate/PartnerComarketing.js.map +1 -0
- package/dist/components/Email/templates/marketing/affiliate/index.d.ts +5 -0
- package/dist/components/Email/templates/marketing/blog/BestOfRoundup.d.ts +6 -0
- package/dist/components/Email/templates/marketing/blog/BestOfRoundup.js +11 -0
- package/dist/components/Email/templates/marketing/blog/BestOfRoundup.js.map +1 -0
- package/dist/components/Email/templates/marketing/blog/BlogSeries.d.ts +7 -0
- package/dist/components/Email/templates/marketing/blog/BlogSeries.js +11 -0
- package/dist/components/Email/templates/marketing/blog/BlogSeries.js.map +1 -0
- package/dist/components/Email/templates/marketing/blog/NewBlogPost.d.ts +7 -0
- package/dist/components/Email/templates/marketing/blog/NewBlogPost.js +11 -0
- package/dist/components/Email/templates/marketing/blog/NewBlogPost.js.map +1 -0
- package/dist/components/Email/templates/marketing/blog/index.d.ts +3 -0
- package/dist/components/Email/templates/marketing/content/InfographicEmail.d.ts +5 -0
- package/dist/components/Email/templates/marketing/content/InfographicEmail.js +11 -0
- package/dist/components/Email/templates/marketing/content/InfographicEmail.js.map +1 -0
- package/dist/components/Email/templates/marketing/content/NewGuideEbook.d.ts +6 -0
- package/dist/components/Email/templates/marketing/content/NewGuideEbook.js +11 -0
- package/dist/components/Email/templates/marketing/content/NewGuideEbook.js.map +1 -0
- package/dist/components/Email/templates/marketing/content/PodcastEpisode.d.ts +6 -0
- package/dist/components/Email/templates/marketing/content/PodcastEpisode.js +11 -0
- package/dist/components/Email/templates/marketing/content/PodcastEpisode.js.map +1 -0
- package/dist/components/Email/templates/marketing/content/ToolTemplateDelivery.d.ts +6 -0
- package/dist/components/Email/templates/marketing/content/ToolTemplateDelivery.js +11 -0
- package/dist/components/Email/templates/marketing/content/ToolTemplateDelivery.js.map +1 -0
- package/dist/components/Email/templates/marketing/content/YouTubeNotification.d.ts +6 -0
- package/dist/components/Email/templates/marketing/content/YouTubeNotification.js +11 -0
- package/dist/components/Email/templates/marketing/content/YouTubeNotification.js.map +1 -0
- package/dist/components/Email/templates/marketing/content/index.d.ts +5 -0
- package/dist/components/Email/templates/marketing/events/ConferenceSeries.d.ts +5 -0
- package/dist/components/Email/templates/marketing/events/ConferenceSeries.js +11 -0
- package/dist/components/Email/templates/marketing/events/ConferenceSeries.js.map +1 -0
- package/dist/components/Email/templates/marketing/events/EarlyBirdReminder.d.ts +5 -0
- package/dist/components/Email/templates/marketing/events/EarlyBirdReminder.js +11 -0
- package/dist/components/Email/templates/marketing/events/EarlyBirdReminder.js.map +1 -0
- package/dist/components/Email/templates/marketing/events/EventAnnouncement.d.ts +9 -0
- package/dist/components/Email/templates/marketing/events/EventAnnouncement.js +13 -0
- package/dist/components/Email/templates/marketing/events/EventAnnouncement.js.map +1 -0
- package/dist/components/Email/templates/marketing/events/PostEventThankYou.d.ts +5 -0
- package/dist/components/Email/templates/marketing/events/PostEventThankYou.js +11 -0
- package/dist/components/Email/templates/marketing/events/PostEventThankYou.js.map +1 -0
- package/dist/components/Email/templates/marketing/events/ScheduleReleased.d.ts +5 -0
- package/dist/components/Email/templates/marketing/events/ScheduleReleased.js +11 -0
- package/dist/components/Email/templates/marketing/events/ScheduleReleased.js.map +1 -0
- package/dist/components/Email/templates/marketing/events/VIPInvite.d.ts +5 -0
- package/dist/components/Email/templates/marketing/events/VIPInvite.js +11 -0
- package/dist/components/Email/templates/marketing/events/VIPInvite.js.map +1 -0
- package/dist/components/Email/templates/marketing/events/index.d.ts +6 -0
- package/dist/components/Email/templates/marketing/index.d.ts +10 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/CaseStudyDelivery.d.ts +5 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/CaseStudyDelivery.js +11 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/CaseStudyDelivery.js.map +1 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/DripCampaignComplete.d.ts +5 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/DripCampaignComplete.js +11 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/DripCampaignComplete.js.map +1 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/DripCampaignDay1.d.ts +11 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/DripCampaignDay1.js +13 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/DripCampaignDay1.js.map +1 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/LeadMagnetDelivery.d.ts +9 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/LeadMagnetDelivery.js +14 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/LeadMagnetDelivery.js.map +1 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/WebinarConfirmation.d.ts +9 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/WebinarConfirmation.js +14 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/WebinarConfirmation.js.map +1 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/WebinarFollowup.d.ts +5 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/WebinarFollowup.js +11 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/WebinarFollowup.js.map +1 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/WebinarReminder.d.ts +5 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/WebinarReminder.js +11 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/WebinarReminder.js.map +1 -0
- package/dist/components/Email/templates/marketing/lead-nurturing/index.d.ts +7 -0
- package/dist/components/Email/templates/marketing/newsletters/CuratedIndustryNews.d.ts +5 -0
- package/dist/components/Email/templates/marketing/newsletters/CuratedIndustryNews.js +11 -0
- package/dist/components/Email/templates/marketing/newsletters/CuratedIndustryNews.js.map +1 -0
- package/dist/components/Email/templates/marketing/newsletters/MonthlyDigest.d.ts +16 -0
- package/dist/components/Email/templates/marketing/newsletters/MonthlyDigest.js +22 -0
- package/dist/components/Email/templates/marketing/newsletters/MonthlyDigest.js.map +1 -0
- package/dist/components/Email/templates/marketing/newsletters/WeeklyNewsletter.d.ts +16 -0
- package/dist/components/Email/templates/marketing/newsletters/WeeklyNewsletter.js +29 -0
- package/dist/components/Email/templates/marketing/newsletters/WeeklyNewsletter.js.map +1 -0
- package/dist/components/Email/templates/marketing/newsletters/index.d.ts +3 -0
- package/dist/components/Email/templates/marketing/promotional/AbandonedCart.d.ts +15 -0
- package/dist/components/Email/templates/marketing/promotional/AbandonedCart.js +20 -0
- package/dist/components/Email/templates/marketing/promotional/AbandonedCart.js.map +1 -0
- package/dist/components/Email/templates/marketing/promotional/BackInStock.d.ts +5 -0
- package/dist/components/Email/templates/marketing/promotional/BackInStock.js +11 -0
- package/dist/components/Email/templates/marketing/promotional/BackInStock.js.map +1 -0
- package/dist/components/Email/templates/marketing/promotional/BirthdayOffer.d.ts +5 -0
- package/dist/components/Email/templates/marketing/promotional/BirthdayOffer.js +11 -0
- package/dist/components/Email/templates/marketing/promotional/BirthdayOffer.js.map +1 -0
- package/dist/components/Email/templates/marketing/promotional/BrowseAbandonment.d.ts +5 -0
- package/dist/components/Email/templates/marketing/promotional/BrowseAbandonment.js +11 -0
- package/dist/components/Email/templates/marketing/promotional/BrowseAbandonment.js.map +1 -0
- package/dist/components/Email/templates/marketing/promotional/FlashSale.d.ts +9 -0
- package/dist/components/Email/templates/marketing/promotional/FlashSale.js +14 -0
- package/dist/components/Email/templates/marketing/promotional/FlashSale.js.map +1 -0
- package/dist/components/Email/templates/marketing/promotional/MilestoneDiscount.d.ts +5 -0
- package/dist/components/Email/templates/marketing/promotional/MilestoneDiscount.js +11 -0
- package/dist/components/Email/templates/marketing/promotional/MilestoneDiscount.js.map +1 -0
- package/dist/components/Email/templates/marketing/promotional/PriceDropAlert.d.ts +5 -0
- package/dist/components/Email/templates/marketing/promotional/PriceDropAlert.js +11 -0
- package/dist/components/Email/templates/marketing/promotional/PriceDropAlert.js.map +1 -0
- package/dist/components/Email/templates/marketing/promotional/SeasonalCampaign.d.ts +5 -0
- package/dist/components/Email/templates/marketing/promotional/SeasonalCampaign.js +11 -0
- package/dist/components/Email/templates/marketing/promotional/SeasonalCampaign.js.map +1 -0
- package/dist/components/Email/templates/marketing/promotional/index.d.ts +8 -0
- package/dist/components/Email/templates/marketing/reengagement/ComeBack60Day.d.ts +5 -0
- package/dist/components/Email/templates/marketing/reengagement/ComeBack60Day.js +11 -0
- package/dist/components/Email/templates/marketing/reengagement/ComeBack60Day.js.map +1 -0
- package/dist/components/Email/templates/marketing/reengagement/LastChance90Day.d.ts +5 -0
- package/dist/components/Email/templates/marketing/reengagement/LastChance90Day.js +11 -0
- package/dist/components/Email/templates/marketing/reengagement/LastChance90Day.js.map +1 -0
- package/dist/components/Email/templates/marketing/reengagement/ProductUpdateReengagement.d.ts +5 -0
- package/dist/components/Email/templates/marketing/reengagement/ProductUpdateReengagement.js +11 -0
- package/dist/components/Email/templates/marketing/reengagement/ProductUpdateReengagement.js.map +1 -0
- package/dist/components/Email/templates/marketing/reengagement/WeMissYou30Day.d.ts +8 -0
- package/dist/components/Email/templates/marketing/reengagement/WeMissYou30Day.js +13 -0
- package/dist/components/Email/templates/marketing/reengagement/WeMissYou30Day.js.map +1 -0
- package/dist/components/Email/templates/marketing/reengagement/index.d.ts +4 -0
- package/dist/components/Email/templates/marketing/social/CommunityMilestone.d.ts +5 -0
- package/dist/components/Email/templates/marketing/social/CommunityMilestone.js +11 -0
- package/dist/components/Email/templates/marketing/social/CommunityMilestone.js.map +1 -0
- package/dist/components/Email/templates/marketing/social/NewFollowerWelcome.d.ts +5 -0
- package/dist/components/Email/templates/marketing/social/NewFollowerWelcome.js +11 -0
- package/dist/components/Email/templates/marketing/social/NewFollowerWelcome.js.map +1 -0
- package/dist/components/Email/templates/marketing/social/ShareYourStory.d.ts +5 -0
- package/dist/components/Email/templates/marketing/social/ShareYourStory.js +11 -0
- package/dist/components/Email/templates/marketing/social/ShareYourStory.js.map +1 -0
- package/dist/components/Email/templates/marketing/social/SocialProof.d.ts +13 -0
- package/dist/components/Email/templates/marketing/social/SocialProof.js +16 -0
- package/dist/components/Email/templates/marketing/social/SocialProof.js.map +1 -0
- package/dist/components/Email/templates/marketing/social/UserSpotlight.d.ts +5 -0
- package/dist/components/Email/templates/marketing/social/UserSpotlight.js +11 -0
- package/dist/components/Email/templates/marketing/social/UserSpotlight.js.map +1 -0
- package/dist/components/Email/templates/marketing/social/index.d.ts +5 -0
- package/dist/components/Email/templates/marketing/surveys/BetaFeedback.d.ts +5 -0
- package/dist/components/Email/templates/marketing/surveys/BetaFeedback.js +11 -0
- package/dist/components/Email/templates/marketing/surveys/BetaFeedback.js.map +1 -0
- package/dist/components/Email/templates/marketing/surveys/CSATSurvey.d.ts +5 -0
- package/dist/components/Email/templates/marketing/surveys/CSATSurvey.js +11 -0
- package/dist/components/Email/templates/marketing/surveys/CSATSurvey.js.map +1 -0
- package/dist/components/Email/templates/marketing/surveys/ExitSurvey.d.ts +7 -0
- package/dist/components/Email/templates/marketing/surveys/ExitSurvey.js +20 -0
- package/dist/components/Email/templates/marketing/surveys/ExitSurvey.js.map +1 -0
- package/dist/components/Email/templates/marketing/surveys/NPSSurvey.d.ts +7 -0
- package/dist/components/Email/templates/marketing/surveys/NPSSurvey.js +17 -0
- package/dist/components/Email/templates/marketing/surveys/NPSSurvey.js.map +1 -0
- package/dist/components/Email/templates/marketing/surveys/ProductFeedback.d.ts +5 -0
- package/dist/components/Email/templates/marketing/surveys/ProductFeedback.js +11 -0
- package/dist/components/Email/templates/marketing/surveys/ProductFeedback.js.map +1 -0
- package/dist/components/Email/templates/marketing/surveys/index.d.ts +5 -0
- package/dist/components/Email/templates/sales/ClientReferenceRequest.d.ts +8 -0
- package/dist/components/Email/templates/sales/ClientReferenceRequest.js +13 -0
- package/dist/components/Email/templates/sales/ClientReferenceRequest.js.map +1 -0
- package/dist/components/Email/templates/sales/ClientWinBack.d.ts +10 -0
- package/dist/components/Email/templates/sales/ClientWinBack.js +13 -0
- package/dist/components/Email/templates/sales/ClientWinBack.js.map +1 -0
- package/dist/components/Email/templates/sales/ColdOutreach.d.ts +11 -0
- package/dist/components/Email/templates/sales/ColdOutreach.js +13 -0
- package/dist/components/Email/templates/sales/ColdOutreach.js.map +1 -0
- package/dist/components/Email/templates/sales/FollowUpEmail.d.ts +9 -0
- package/dist/components/Email/templates/sales/FollowUpEmail.js +13 -0
- package/dist/components/Email/templates/sales/FollowUpEmail.js.map +1 -0
- package/dist/components/Email/templates/sales/ProjectTermination.d.ts +9 -0
- package/dist/components/Email/templates/sales/ProjectTermination.js +12 -0
- package/dist/components/Email/templates/sales/ProjectTermination.js.map +1 -0
- package/dist/components/Email/templates/sales/ProposalAccepted.d.ts +9 -0
- package/dist/components/Email/templates/sales/ProposalAccepted.js +13 -0
- package/dist/components/Email/templates/sales/ProposalAccepted.js.map +1 -0
- package/dist/components/Email/templates/sales/ScheduleDemo.d.ts +9 -0
- package/dist/components/Email/templates/sales/ScheduleDemo.js +13 -0
- package/dist/components/Email/templates/sales/ScheduleDemo.js.map +1 -0
- package/dist/components/Email/templates/sales/SendProposal.d.ts +9 -0
- package/dist/components/Email/templates/sales/SendProposal.js +14 -0
- package/dist/components/Email/templates/sales/SendProposal.js.map +1 -0
- package/dist/components/Email/templates/sales/index.d.ts +8 -0
- package/dist/components/Email/templates/security/AccountDeletedConfirmation.d.ts +8 -0
- package/dist/components/Email/templates/security/AccountDeletedConfirmation.js +13 -0
- package/dist/components/Email/templates/security/AccountDeletedConfirmation.js.map +1 -0
- package/dist/components/Email/templates/security/ApiKeyCreated.d.ts +9 -0
- package/dist/components/Email/templates/security/ApiKeyCreated.js +14 -0
- package/dist/components/Email/templates/security/ApiKeyCreated.js.map +1 -0
- package/dist/components/Email/templates/security/DataExportReady.d.ts +8 -0
- package/dist/components/Email/templates/security/DataExportReady.js +13 -0
- package/dist/components/Email/templates/security/DataExportReady.js.map +1 -0
- package/dist/components/Email/templates/security/NewLoginAlert.d.ts +10 -0
- package/dist/components/Email/templates/security/NewLoginAlert.js +13 -0
- package/dist/components/Email/templates/security/NewLoginAlert.js.map +1 -0
- package/dist/components/Email/templates/security/PolicyUpdateEmail.d.ts +9 -0
- package/dist/components/Email/templates/security/PolicyUpdateEmail.js +13 -0
- package/dist/components/Email/templates/security/PolicyUpdateEmail.js.map +1 -0
- package/dist/components/Email/templates/security/TwoFactorCode.d.ts +8 -0
- package/dist/components/Email/templates/security/TwoFactorCode.js +13 -0
- package/dist/components/Email/templates/security/TwoFactorCode.js.map +1 -0
- package/dist/components/Email/templates/security/index.d.ts +6 -0
- package/dist/components/Email/templates/support/SupportFeedbackRequest.d.ts +9 -0
- package/dist/components/Email/templates/support/SupportFeedbackRequest.js +15 -0
- package/dist/components/Email/templates/support/SupportFeedbackRequest.js.map +1 -0
- package/dist/components/Email/templates/support/TicketCreatedEmail.d.ts +9 -0
- package/dist/components/Email/templates/support/TicketCreatedEmail.js +13 -0
- package/dist/components/Email/templates/support/TicketCreatedEmail.js.map +1 -0
- package/dist/components/Email/templates/support/TicketReplyEmail.d.ts +9 -0
- package/dist/components/Email/templates/support/TicketReplyEmail.js +14 -0
- package/dist/components/Email/templates/support/TicketReplyEmail.js.map +1 -0
- package/dist/components/Email/templates/support/TicketResolvedEmail.d.ts +9 -0
- package/dist/components/Email/templates/support/TicketResolvedEmail.js +14 -0
- package/dist/components/Email/templates/support/TicketResolvedEmail.js.map +1 -0
- package/dist/components/Email/templates/support/index.d.ts +4 -0
- package/dist/components/Email/templates/system/IncidentReport.d.ts +10 -0
- package/dist/components/Email/templates/system/IncidentReport.js +13 -0
- package/dist/components/Email/templates/system/IncidentReport.js.map +1 -0
- package/dist/components/Email/templates/system/MaintenanceNotice.d.ts +9 -0
- package/dist/components/Email/templates/system/MaintenanceNotice.js +13 -0
- package/dist/components/Email/templates/system/MaintenanceNotice.js.map +1 -0
- package/dist/components/Email/templates/system/NotificationEmail.d.ts +10 -0
- package/dist/components/Email/templates/system/NotificationEmail.js +14 -0
- package/dist/components/Email/templates/system/NotificationEmail.js.map +1 -0
- package/dist/components/Email/templates/system/StatusPageUpdate.d.ts +10 -0
- package/dist/components/Email/templates/system/StatusPageUpdate.js +13 -0
- package/dist/components/Email/templates/system/StatusPageUpdate.js.map +1 -0
- package/dist/components/Email/templates/system/index.d.ts +4 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +122 -0
- package/dist/styles.css +1 -1
- package/package.json +12 -5
- package/dist/components/Auth/PasswordResetForm.d.ts +0 -9
- package/dist/components/Auth/PasswordResetForm.example.d.ts +0 -2
- package/dist/components/Auth/PasswordResetForm.example.js +0 -20
- package/dist/components/Auth/PasswordResetForm.example.js.map +0 -1
- package/dist/components/Auth/PasswordResetForm.js +0 -30
- package/dist/components/Auth/PasswordResetForm.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useState, useRef, useMemo, useEffect } from 'react';
|
|
4
|
-
import { Layout, Shield, AlertCircle, BarChart3, MousePointer, Palette, ChevronRight, Search, ChevronDown, Menu, Monitor, Tablet, Smartphone, Sun, Moon, Eye, Code, Settings, Check, Copy, Book } from 'lucide-react';
|
|
4
|
+
import { Mail, Layout, Shield, AlertCircle, BarChart3, MousePointer, Palette, ChevronRight, Search, ChevronDown, Menu, Monitor, Tablet, Smartphone, Sun, Moon, Eye, Code, Settings, Check, Copy, Book } from 'lucide-react';
|
|
5
5
|
import { cn } from '../../utils/cn.js';
|
|
6
6
|
import { Button } from '../Button/Button.js';
|
|
7
7
|
import { Input } from '../Input/Input.js';
|
|
@@ -64,6 +64,12 @@ const componentCategories = {
|
|
|
64
64
|
{ name: "Sidebar", id: "sidebar" },
|
|
65
65
|
{ name: "Navbar", id: "navbar" }
|
|
66
66
|
]
|
|
67
|
+
},
|
|
68
|
+
Emails: {
|
|
69
|
+
icon: jsx(Mail, { className: "h-4 w-4" }),
|
|
70
|
+
components: [
|
|
71
|
+
{ name: "Email Templates", id: "email-templates" }
|
|
72
|
+
]
|
|
67
73
|
}
|
|
68
74
|
};
|
|
69
75
|
const ComponentShowcase = ({ className }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentShowcase.js","sources":["../../../src/components/ComponentShowcase/ComponentShowcase.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useState, useMemo, useRef, useEffect } from \"react\";\nimport {\n Search,\n Copy,\n Check,\n Monitor,\n Tablet,\n Smartphone,\n Sun,\n Moon,\n ChevronRight,\n ChevronDown,\n Code,\n Eye,\n Book,\n Palette,\n Layout,\n MousePointer,\n AlertCircle,\n BarChart3,\n Settings,\n Shield,\n Menu\n} from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { Button } from \"../Button\";\nimport { Input } from \"../Input\";\nimport { Badge } from \"../Badge\";\nimport { Toast, showToast } from \"../Toast\";\n\nimport { showcaseRegistry } from \"./showcaseRegistry\";\nimport { componentDocs } from \"./componentDocs\";\nimport { useDarkMode } from \"../../hooks/useDarkMode\";\n\n// Component categories and their items\nconst componentCategories = {\n Forms: {\n icon: <MousePointer className=\"h-4 w-4\" />,\n components: [\n { name: \"Button\", id: \"button\" },\n { name: \"Input\", id: \"input\" },\n { name: \"Textarea\", id: \"textarea\" },\n { name: \"Checkbox\", id: \"checkbox\" },\n { name: \"Switch\", id: \"switch\" }\n ]\n },\n \"Data Display\": {\n icon: <BarChart3 className=\"h-4 w-4\" />,\n components: [\n { name: \"Card\", id: \"card\" },\n { name: \"Badge\", id: \"badge\" },\n { name: \"Avatar\", id: \"avatar\" },\n { name: \"StatsCard\", id: \"statscard\" },\n { name: \"Tabs\", id: \"tabs\" },\n { name: \"DataTable\", id: \"datatable\" }\n ]\n },\n Feedback: {\n icon: <AlertCircle className=\"h-4 w-4\" />,\n components: [\n { name: \"Alert\", id: \"alert\" },\n { name: \"Toast\", id: \"toast\" },\n { name: \"Modal\", id: \"modal\" },\n { name: \"Spinner\", id: \"spinner\" },\n { name: \"Skeleton\", id: \"skeleton\" },\n { name: \"Chat Widget\", id: \"chatwidget\" }\n ]\n },\n Authentication: {\n icon: <Shield className=\"h-4 w-4\" />,\n components: [\n { name: \"Auth System\", id: \"auth\" },\n { name: \"Login Page\", id: \"login\" },\n { name: \"Signup Page\", id: \"signup\" },\n { name: \"Password Reset\", id: \"password-reset\" },\n { name: \"!isAuthenticated Shield\", id: \"shield\" },\n ]\n },\n Layout: {\n icon: <Layout className=\"h-4 w-4\" />,\n components: [\n { name: \"DashboardLayout\", id: \"dashboard-layout\" },\n { name: \"Page Layout\", id: \"page-layout\" },\n { name: \"DashboardGrid\", id: \"dashboard-grid\" },\n { name: \"Sidebar\", id: \"sidebar\" },\n { name: \"Navbar\", id: \"navbar\" }\n ]\n }\n};\n\n// Prop documentation interface\ninterface PropDoc {\n name: string;\n type: string;\n default?: string;\n description?: string;\n required?: boolean;\n}\n\n// Props\ninterface ComponentShowcaseProps {\n className?: string;\n}\n\nexport const ComponentShowcase: React.FC<ComponentShowcaseProps> = ({ className }) => {\n const [selectedComponent, setSelectedComponent] = useState(\"button\");\n const [activeTab, setActiveTab] = useState<\"preview\" | \"code\" | \"props\">(\"preview\");\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [sidebarCollapsed, setSidebarCollapsed] = useState(() => {\n if (typeof window !== \"undefined\") {\n return window.innerWidth < 1024;\n }\n return false; // Default for SSR\n });\n const [expandedCategories, setExpandedCategories] = useState<string[]>([\"Forms\"]);\n const [viewMode, setViewMode] = useState<\"desktop\" | \"tablet\" | \"mobile\">(\"desktop\");\n const { isDarkMode, toggle: toggleDarkMode } = useDarkMode();\n const [copiedCode, setCopiedCode] = useState<string | null>(null);\n const sidebarRef = useRef<HTMLDivElement | null>(null);\n const [focusedIndex, setFocusedIndex] = useState<number>(-1);\n\n const toggleCategory = (category: string) => {\n setExpandedCategories((prev) =>\n prev.includes(category)\n ? prev.filter((c) => c !== category)\n : [...prev, category]\n );\n };\n\n const flatComponents = useMemo(() => {\n return Object.values(componentCategories).flatMap((category) =>\n category.components.map((component) => component.id)\n );\n }, []);\n\n useEffect(() => {\n if (focusedIndex >= 0 && sidebarRef.current && !sidebarCollapsed) {\n const buttons = sidebarRef.current.querySelectorAll<HTMLButtonElement>(\n '[data-component-id]'\n );\n const target = buttons[focusedIndex];\n if (target) {\n target.focus();\n }\n }\n }, [focusedIndex, sidebarCollapsed]);\n\n const handleKeyNavigation = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (sidebarCollapsed) return;\n\n const currentIndex = flatComponents.indexOf(selectedComponent);\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n event.preventDefault();\n const nextIndex = currentIndex === flatComponents.length - 1 ? 0 : currentIndex + 1;\n setFocusedIndex(nextIndex);\n setSelectedComponent(flatComponents[nextIndex]);\n } else if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n event.preventDefault();\n const prevIndex = currentIndex <= 0 ? flatComponents.length - 1 : currentIndex - 1;\n setFocusedIndex(prevIndex);\n setSelectedComponent(flatComponents[prevIndex]);\n }\n };\n\n const copyToClipboard = async (code: string) => {\n try {\n if (navigator?.clipboard?.writeText) {\n await navigator.clipboard.writeText(code);\n setCopiedCode(code);\n showToast.success(\"Code copied to clipboard!\");\n setTimeout(() => setCopiedCode(null), 2000);\n } else {\n throw new Error(\"Clipboard API unavailable\");\n }\n } catch (err) {\n showToast.error(\"Failed to copy code\");\n }\n };\n\n const filteredCategories = Object.entries(componentCategories).reduce(\n (acc, [categoryName, categoryData]) => {\n const filteredComponents = categoryData.components.filter((component) =>\n component.name.toLowerCase().includes(searchQuery.toLowerCase())\n );\n\n if (filteredComponents.length > 0) {\n (acc as any)[categoryName] = {\n ...categoryData,\n components: filteredComponents\n };\n }\n\n return acc;\n },\n {} as Partial<typeof componentCategories>\n );\n\n const currentDoc = componentDocs[selectedComponent as keyof typeof componentDocs];\n const currentExample = currentDoc?.example ?? '';\n const currentProps = (currentDoc?.props ?? []) as PropDoc[];\n\n const getViewportClass = () => {\n switch (viewMode) {\n case \"tablet\":\n return \"max-w-2xl\";\n case \"mobile\":\n return \"max-w-sm\";\n default:\n return \"w-full\";\n }\n };\n\n return (\n <div className={cn(\"flex h-screen bg-gray-50 dark:bg-gray-950 text-gray-900 dark:text-gray-100\", isDarkMode && \"dark\", className)}>\n <Toast />\n\n {/* Mobile Overlay for Showcase Sidebar */}\n {!sidebarCollapsed && (\n <div\n className=\"fixed inset-0 bg-black/50 dark:bg-black/80 z-10 lg:hidden backdrop-blur-sm transition-opacity\"\n onClick={() => setSidebarCollapsed(true)}\n />\n )}\n\n {/* Sidebar */}\n <div\n ref={sidebarRef}\n className={cn(\n \"bg-white dark:bg-gray-900 border-r border-gray-200 dark:border-gray-800 transition-all duration-300 flex flex-col z-20 shrink-0\",\n \"max-lg:absolute max-lg:h-full max-lg:shadow-2xl\",\n sidebarCollapsed ? \"lg:w-16 max-lg:w-80 max-lg:-translate-x-full\" : \"w-80 max-lg:translate-x-0\"\n )}\n tabIndex={sidebarCollapsed ? -1 : 0}\n onKeyDown={handleKeyNavigation}\n aria-label=\"Component navigation\"\n >\n {/* Sidebar Header */}\n <div className=\"p-4 border-b border-gray-200 dark:border-gray-800\">\n <div className={cn(\"flex items-center justify-between mb-4\", sidebarCollapsed ? \"lg:hidden\" : \"\")}>\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center\">\n <Palette className=\"h-4 w-4 text-white\" />\n </div>\n <span className=\"font-bold text-lg text-gray-900 dark:text-white\">Beyond UI</span>\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setSidebarCollapsed(true)}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className={cn(\"justify-center\", sidebarCollapsed ? \"flex max-lg:hidden\" : \"hidden\")}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setSidebarCollapsed(false)}\n >\n <Palette className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className={cn(\"relative\", sidebarCollapsed ? \"lg:hidden\" : \"\")}>\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-gray-400 dark:text-gray-500\" />\n <Input\n placeholder=\"Search components...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"pl-10\"\n />\n </div>\n </div>\n\n {/* Navigation */}\n <nav className=\"flex-1 p-4 overflow-y-auto\">\n {Object.entries(filteredCategories).map(([categoryName, categoryData]) => (\n <div key={categoryName} className=\"mb-4\">\n <button\n onClick={() => {\n if (typeof window !== \"undefined\" && window.innerWidth < 1024) {\n toggleCategory(categoryName);\n } else if (!sidebarCollapsed) {\n toggleCategory(categoryName);\n }\n }}\n className={cn(\n \"flex items-center w-full p-2 text-sm font-medium rounded-lg transition-colors\",\n \"hover:bg-gray-100 dark:hover:bg-gray-800 text-gray-700 dark:text-gray-300\",\n sidebarCollapsed ? \"lg:justify-center max-lg:justify-between\" : \"justify-between\"\n )}\n >\n <div className=\"flex items-center space-x-2\">\n {categoryData.icon}\n <span className={cn(sidebarCollapsed ? \"lg:hidden\" : \"\")}>{categoryName}</span>\n </div>\n <ChevronDown\n className={cn(\n \"h-4 w-4 transition-transform\",\n expandedCategories.includes(categoryName) && \"rotate-180\",\n sidebarCollapsed ? \"lg:hidden\" : \"\"\n )}\n />\n </button>\n\n {expandedCategories.includes(categoryName) && (\n <div className={cn(\"mt-2 ml-6 space-y-1\", sidebarCollapsed ? \"lg:hidden\" : \"\")}>\n {categoryData.components.map((component) => {\n const isActive = selectedComponent === component.id;\n return (\n <button\n key={component.id}\n data-component-id={component.id}\n onClick={() => {\n setSelectedComponent(component.id);\n setFocusedIndex(flatComponents.indexOf(component.id));\n if (window.innerWidth < 1024) {\n setSidebarCollapsed(true);\n }\n }}\n className={cn(\n \"flex items-center w-full p-2 text-sm rounded-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500\",\n isActive\n ? \"bg-primary-50 dark:bg-primary-900/20 text-primary-700 dark:text-primary-400 border-r-2 border-primary-600 dark:border-primary-500\"\n : \"text-gray-600 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800/50 hover:text-gray-900 dark:hover:text-white\"\n )}\n aria-current={isActive ? \"page\" : undefined}\n >\n {component.name}\n </button>\n );\n })}\n </div>\n )}\n </div>\n ))}\n </nav>\n </div>\n\n {/* Main Content */}\n <div className=\"flex-1 flex flex-col overflow-hidden\">\n {/* Header */}\n <header className=\"bg-white dark:bg-gray-900 border-b border-gray-200 dark:border-gray-800 p-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-4\">\n {/* Mobile Menu Toggle */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"lg:hidden p-2 -ml-2 shrink-0\"\n onClick={() => setSidebarCollapsed(false)}\n aria-label=\"Open component menu\"\n >\n <Menu className=\"h-5 w-5 text-gray-700 dark:text-gray-300\" />\n </Button>\n \n <h1 className=\"text-xl md:text-2xl font-bold text-gray-900 dark:text-white truncate\">\n {currentDoc?.name || \"Component Showcase\"}\n </h1>\n {currentDoc && <Badge variant=\"outline\">{currentDoc.name}</Badge>}\n </div>\n\n <div className=\"flex items-center space-x-2\">\n {/* Viewport Controls */}\n <div className=\"flex items-center bg-gray-100 dark:bg-gray-800 rounded-lg p-1\">\n <Button\n variant={viewMode === \"desktop\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setViewMode(\"desktop\")}\n >\n <Monitor className=\"h-4 w-4\" />\n </Button>\n <Button\n variant={viewMode === \"tablet\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setViewMode(\"tablet\")}\n >\n <Tablet className=\"h-4 w-4\" />\n </Button>\n <Button\n variant={viewMode === \"mobile\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setViewMode(\"mobile\")}\n >\n <Smartphone className=\"h-4 w-4\" />\n </Button>\n </div>\n\n {/* Dark Mode Toggle */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={toggleDarkMode}\n >\n {isDarkMode ? (\n <Sun className=\"h-4 w-4\" />\n ) : (\n <Moon className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n </div>\n </header>\n\n {/* Content */}\n <main className=\"flex-1 overflow-auto p-6 bg-gray-50 dark:bg-gray-950\">\n {currentDoc ? (\n <div className=\"max-w-6xl mx-auto space-y-8\">\n {/* Description */}\n <div>\n <p className=\"text-lg text-gray-600 dark:text-gray-400\">{currentDoc.description}</p>\n </div>\n\n {/* Tabs */}\n <div>\n <div className=\"flex gap-3 mb-4\" role=\"tablist\" aria-label=\"Component details tabs\">\n <Button\n variant={activeTab === \"preview\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setActiveTab(\"preview\")}\n role=\"tab\"\n aria-selected={activeTab === \"preview\"}\n >\n <Eye className=\"h-4 w-4 mr-2\" />\n Preview\n </Button>\n <Button\n variant={activeTab === \"code\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setActiveTab(\"code\")}\n role=\"tab\"\n aria-selected={activeTab === \"code\"}\n >\n <Code className=\"h-4 w-4 mr-2\" />\n Code\n </Button>\n <Button\n variant={activeTab === \"props\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setActiveTab(\"props\")}\n role=\"tab\"\n aria-selected={activeTab === \"props\"}\n >\n <Settings className=\"h-4 w-4 mr-2\" />\n Props\n </Button>\n </div>\n <div>\n <div className=\"mt-6\">\n <div className=\"bg-white dark:bg-gray-900 rounded-lg shadow p-6\">\n {/* Preview */}\n <div\n className={cn(\n \"mx-auto transition-all duration-300\",\n getViewportClass()\n )}\n >\n <div>\n {showcaseRegistry[selectedComponent]\n ? React.createElement(\n showcaseRegistry[selectedComponent]\n )\n : null}\n </div>\n </div>\n </div>\n </div>\n\n {activeTab === \"code\" && (\n <div className=\"mt-6\" role=\"tabpanel\" aria-label=\"Code example\">\n <div className=\"bg-white dark:bg-gray-900 rounded-lg shadow p-6\">\n <div className=\"flex flex-row items-center justify-between\">\n <h2 className=\"text-lg font-semibold mb-0 dark:text-white\">\n Usage Example\n </h2>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => copyToClipboard(currentExample)}\n >\n {copiedCode === currentExample ? (\n <Check className=\"h-4 w-4 mr-2\" />\n ) : (\n <Copy className=\"h-4 w-4 mr-2\" />\n )}\n Copy\n </Button>\n </div>\n <pre className=\"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto\">\n <code>{currentExample}</code>\n </pre>\n </div>\n </div>\n )}\n\n {activeTab === \"props\" && (\n <div className=\"mt-6\" role=\"tabpanel\" aria-label=\"Component props\">\n <div className=\"bg-white dark:bg-gray-900 rounded-lg shadow p-6\">\n <h2 className=\"text-lg font-semibold mb-4 dark:text-white\">\n Component Props\n </h2>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full border-collapse\">\n <thead>\n <tr className=\"border-b border-gray-200 dark:border-gray-800\">\n <th className=\"text-left p-3 font-medium text-gray-900 dark:text-gray-100\">\n Prop\n </th>\n <th className=\"text-left p-3 font-medium text-gray-900 dark:text-gray-100\">\n Type\n </th>\n <th className=\"text-left p-3 font-medium text-gray-900 dark:text-gray-100\">\n Default\n </th>\n <th className=\"text-left p-3 font-medium text-gray-900 dark:text-gray-100\">\n Description\n </th>\n </tr>\n </thead>\n <tbody>\n {currentProps.length > 0 ? (\n currentProps.map((prop: PropDoc, index) => (\n <tr key={prop.name ?? index} className=\"border-b border-gray-100 dark:border-gray-800/50\">\n <td className=\"p-3\">\n <code className=\"bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm dark:text-gray-300\">\n {prop.name}\n </code>\n {prop.required && (\n <Badge variant=\"danger\" className=\"ml-2 text-xs\">\n Required\n </Badge>\n )}\n </td>\n <td className=\"p-3 text-gray-600 dark:text-gray-400\">{prop.type}</td>\n <td className=\"p-3 text-gray-600 dark:text-gray-400\">\n {prop.default ? (\n <code className=\"bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm dark:text-gray-300\">\n {prop.default}\n </code>\n ) : null}\n </td>\n <td className=\"p-3 text-gray-600 dark:text-gray-400\">{prop.description}</td>\n </tr>\n ))\n ) : (\n <tr>\n <td colSpan={4} className=\"p-4 text-center text-gray-500 dark:text-gray-400\">\n No props documented for this component yet.\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"flex items-center justify-center h-full\">\n <div className=\"text-center\">\n <Book className=\"h-16 w-16 text-gray-400 dark:text-gray-600 mx-auto mb-4\" />\n <h2 className=\"text-xl font-semibold text-gray-900 dark:text-white mb-2\">\n Select a Component\n </h2>\n <p className=\"text-gray-600 dark:text-gray-400\">\n Choose a component from the sidebar to view its documentation and examples.\n </p>\n </div>\n </div>\n )}\n </main>\n </div>\n </div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ComponentShowcase.js","sources":["../../../src/components/ComponentShowcase/ComponentShowcase.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useState, useMemo, useRef, useEffect } from \"react\";\nimport {\n Search,\n Copy,\n Check,\n Monitor,\n Tablet,\n Smartphone,\n Sun,\n Moon,\n ChevronRight,\n ChevronDown,\n Code,\n Eye,\n Book,\n Palette,\n Layout,\n MousePointer,\n AlertCircle,\n BarChart3,\n Settings,\n Shield,\n Menu,\n Mail\n} from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { Button } from \"../Button\";\nimport { Input } from \"../Input\";\nimport { Badge } from \"../Badge\";\nimport { Toast, showToast } from \"../Toast\";\n\nimport { showcaseRegistry } from \"./showcaseRegistry\";\nimport { componentDocs } from \"./componentDocs\";\nimport { useDarkMode } from \"../../hooks/useDarkMode\";\n\n// Component categories and their items\nconst componentCategories = {\n Forms: {\n icon: <MousePointer className=\"h-4 w-4\" />,\n components: [\n { name: \"Button\", id: \"button\" },\n { name: \"Input\", id: \"input\" },\n { name: \"Textarea\", id: \"textarea\" },\n { name: \"Checkbox\", id: \"checkbox\" },\n { name: \"Switch\", id: \"switch\" }\n ]\n },\n \"Data Display\": {\n icon: <BarChart3 className=\"h-4 w-4\" />,\n components: [\n { name: \"Card\", id: \"card\" },\n { name: \"Badge\", id: \"badge\" },\n { name: \"Avatar\", id: \"avatar\" },\n { name: \"StatsCard\", id: \"statscard\" },\n { name: \"Tabs\", id: \"tabs\" },\n { name: \"DataTable\", id: \"datatable\" }\n ]\n },\n Feedback: {\n icon: <AlertCircle className=\"h-4 w-4\" />,\n components: [\n { name: \"Alert\", id: \"alert\" },\n { name: \"Toast\", id: \"toast\" },\n { name: \"Modal\", id: \"modal\" },\n { name: \"Spinner\", id: \"spinner\" },\n { name: \"Skeleton\", id: \"skeleton\" },\n { name: \"Chat Widget\", id: \"chatwidget\" }\n ]\n },\n Authentication: {\n icon: <Shield className=\"h-4 w-4\" />,\n components: [\n { name: \"Auth System\", id: \"auth\" },\n { name: \"Login Page\", id: \"login\" },\n { name: \"Signup Page\", id: \"signup\" },\n { name: \"Password Reset\", id: \"password-reset\" },\n { name: \"!isAuthenticated Shield\", id: \"shield\" },\n ]\n },\n Layout: {\n icon: <Layout className=\"h-4 w-4\" />,\n components: [\n { name: \"DashboardLayout\", id: \"dashboard-layout\" },\n { name: \"Page Layout\", id: \"page-layout\" },\n { name: \"DashboardGrid\", id: \"dashboard-grid\" },\n { name: \"Sidebar\", id: \"sidebar\" },\n { name: \"Navbar\", id: \"navbar\" }\n ]\n },\n Emails: {\n icon: <Mail className=\"h-4 w-4\" />,\n components: [\n { name: \"Email Templates\", id: \"email-templates\" }\n ]\n }\n};\n\n// Prop documentation interface\ninterface PropDoc {\n name: string;\n type: string;\n default?: string;\n description?: string;\n required?: boolean;\n}\n\n// Props\ninterface ComponentShowcaseProps {\n className?: string;\n}\n\nexport const ComponentShowcase: React.FC<ComponentShowcaseProps> = ({ className }) => {\n const [selectedComponent, setSelectedComponent] = useState(\"button\");\n const [activeTab, setActiveTab] = useState<\"preview\" | \"code\" | \"props\">(\"preview\");\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [sidebarCollapsed, setSidebarCollapsed] = useState(() => {\n if (typeof window !== \"undefined\") {\n return window.innerWidth < 1024;\n }\n return false; // Default for SSR\n });\n const [expandedCategories, setExpandedCategories] = useState<string[]>([\"Forms\"]);\n const [viewMode, setViewMode] = useState<\"desktop\" | \"tablet\" | \"mobile\">(\"desktop\");\n const { isDarkMode, toggle: toggleDarkMode } = useDarkMode();\n const [copiedCode, setCopiedCode] = useState<string | null>(null);\n const sidebarRef = useRef<HTMLDivElement | null>(null);\n const [focusedIndex, setFocusedIndex] = useState<number>(-1);\n\n const toggleCategory = (category: string) => {\n setExpandedCategories((prev) =>\n prev.includes(category)\n ? prev.filter((c) => c !== category)\n : [...prev, category]\n );\n };\n\n const flatComponents = useMemo(() => {\n return Object.values(componentCategories).flatMap((category) =>\n category.components.map((component) => component.id)\n );\n }, []);\n\n useEffect(() => {\n if (focusedIndex >= 0 && sidebarRef.current && !sidebarCollapsed) {\n const buttons = sidebarRef.current.querySelectorAll<HTMLButtonElement>(\n '[data-component-id]'\n );\n const target = buttons[focusedIndex];\n if (target) {\n target.focus();\n }\n }\n }, [focusedIndex, sidebarCollapsed]);\n\n const handleKeyNavigation = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (sidebarCollapsed) return;\n\n const currentIndex = flatComponents.indexOf(selectedComponent);\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n event.preventDefault();\n const nextIndex = currentIndex === flatComponents.length - 1 ? 0 : currentIndex + 1;\n setFocusedIndex(nextIndex);\n setSelectedComponent(flatComponents[nextIndex]);\n } else if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n event.preventDefault();\n const prevIndex = currentIndex <= 0 ? flatComponents.length - 1 : currentIndex - 1;\n setFocusedIndex(prevIndex);\n setSelectedComponent(flatComponents[prevIndex]);\n }\n };\n\n const copyToClipboard = async (code: string) => {\n try {\n if (navigator?.clipboard?.writeText) {\n await navigator.clipboard.writeText(code);\n setCopiedCode(code);\n showToast.success(\"Code copied to clipboard!\");\n setTimeout(() => setCopiedCode(null), 2000);\n } else {\n throw new Error(\"Clipboard API unavailable\");\n }\n } catch (err) {\n showToast.error(\"Failed to copy code\");\n }\n };\n\n const filteredCategories = Object.entries(componentCategories).reduce(\n (acc, [categoryName, categoryData]) => {\n const filteredComponents = categoryData.components.filter((component) =>\n component.name.toLowerCase().includes(searchQuery.toLowerCase())\n );\n\n if (filteredComponents.length > 0) {\n (acc as any)[categoryName] = {\n ...categoryData,\n components: filteredComponents\n };\n }\n\n return acc;\n },\n {} as Partial<typeof componentCategories>\n );\n\n const currentDoc = componentDocs[selectedComponent as keyof typeof componentDocs];\n const currentExample = currentDoc?.example ?? '';\n const currentProps = (currentDoc?.props ?? []) as PropDoc[];\n\n const getViewportClass = () => {\n switch (viewMode) {\n case \"tablet\":\n return \"max-w-2xl\";\n case \"mobile\":\n return \"max-w-sm\";\n default:\n return \"w-full\";\n }\n };\n\n return (\n <div className={cn(\"flex h-screen bg-gray-50 dark:bg-gray-950 text-gray-900 dark:text-gray-100\", isDarkMode && \"dark\", className)}>\n <Toast />\n\n {/* Mobile Overlay for Showcase Sidebar */}\n {!sidebarCollapsed && (\n <div\n className=\"fixed inset-0 bg-black/50 dark:bg-black/80 z-10 lg:hidden backdrop-blur-sm transition-opacity\"\n onClick={() => setSidebarCollapsed(true)}\n />\n )}\n\n {/* Sidebar */}\n <div\n ref={sidebarRef}\n className={cn(\n \"bg-white dark:bg-gray-900 border-r border-gray-200 dark:border-gray-800 transition-all duration-300 flex flex-col z-20 shrink-0\",\n \"max-lg:absolute max-lg:h-full max-lg:shadow-2xl\",\n sidebarCollapsed ? \"lg:w-16 max-lg:w-80 max-lg:-translate-x-full\" : \"w-80 max-lg:translate-x-0\"\n )}\n tabIndex={sidebarCollapsed ? -1 : 0}\n onKeyDown={handleKeyNavigation}\n aria-label=\"Component navigation\"\n >\n {/* Sidebar Header */}\n <div className=\"p-4 border-b border-gray-200 dark:border-gray-800\">\n <div className={cn(\"flex items-center justify-between mb-4\", sidebarCollapsed ? \"lg:hidden\" : \"\")}>\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center\">\n <Palette className=\"h-4 w-4 text-white\" />\n </div>\n <span className=\"font-bold text-lg text-gray-900 dark:text-white\">Beyond UI</span>\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setSidebarCollapsed(true)}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className={cn(\"justify-center\", sidebarCollapsed ? \"flex max-lg:hidden\" : \"hidden\")}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setSidebarCollapsed(false)}\n >\n <Palette className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className={cn(\"relative\", sidebarCollapsed ? \"lg:hidden\" : \"\")}>\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-gray-400 dark:text-gray-500\" />\n <Input\n placeholder=\"Search components...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"pl-10\"\n />\n </div>\n </div>\n\n {/* Navigation */}\n <nav className=\"flex-1 p-4 overflow-y-auto\">\n {Object.entries(filteredCategories).map(([categoryName, categoryData]) => (\n <div key={categoryName} className=\"mb-4\">\n <button\n onClick={() => {\n if (typeof window !== \"undefined\" && window.innerWidth < 1024) {\n toggleCategory(categoryName);\n } else if (!sidebarCollapsed) {\n toggleCategory(categoryName);\n }\n }}\n className={cn(\n \"flex items-center w-full p-2 text-sm font-medium rounded-lg transition-colors\",\n \"hover:bg-gray-100 dark:hover:bg-gray-800 text-gray-700 dark:text-gray-300\",\n sidebarCollapsed ? \"lg:justify-center max-lg:justify-between\" : \"justify-between\"\n )}\n >\n <div className=\"flex items-center space-x-2\">\n {categoryData.icon}\n <span className={cn(sidebarCollapsed ? \"lg:hidden\" : \"\")}>{categoryName}</span>\n </div>\n <ChevronDown\n className={cn(\n \"h-4 w-4 transition-transform\",\n expandedCategories.includes(categoryName) && \"rotate-180\",\n sidebarCollapsed ? \"lg:hidden\" : \"\"\n )}\n />\n </button>\n\n {expandedCategories.includes(categoryName) && (\n <div className={cn(\"mt-2 ml-6 space-y-1\", sidebarCollapsed ? \"lg:hidden\" : \"\")}>\n {categoryData.components.map((component) => {\n const isActive = selectedComponent === component.id;\n return (\n <button\n key={component.id}\n data-component-id={component.id}\n onClick={() => {\n setSelectedComponent(component.id);\n setFocusedIndex(flatComponents.indexOf(component.id));\n if (window.innerWidth < 1024) {\n setSidebarCollapsed(true);\n }\n }}\n className={cn(\n \"flex items-center w-full p-2 text-sm rounded-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500\",\n isActive\n ? \"bg-primary-50 dark:bg-primary-900/20 text-primary-700 dark:text-primary-400 border-r-2 border-primary-600 dark:border-primary-500\"\n : \"text-gray-600 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800/50 hover:text-gray-900 dark:hover:text-white\"\n )}\n aria-current={isActive ? \"page\" : undefined}\n >\n {component.name}\n </button>\n );\n })}\n </div>\n )}\n </div>\n ))}\n </nav>\n </div>\n\n {/* Main Content */}\n <div className=\"flex-1 flex flex-col overflow-hidden\">\n {/* Header */}\n <header className=\"bg-white dark:bg-gray-900 border-b border-gray-200 dark:border-gray-800 p-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-4\">\n {/* Mobile Menu Toggle */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"lg:hidden p-2 -ml-2 shrink-0\"\n onClick={() => setSidebarCollapsed(false)}\n aria-label=\"Open component menu\"\n >\n <Menu className=\"h-5 w-5 text-gray-700 dark:text-gray-300\" />\n </Button>\n \n <h1 className=\"text-xl md:text-2xl font-bold text-gray-900 dark:text-white truncate\">\n {currentDoc?.name || \"Component Showcase\"}\n </h1>\n {currentDoc && <Badge variant=\"outline\">{currentDoc.name}</Badge>}\n </div>\n\n <div className=\"flex items-center space-x-2\">\n {/* Viewport Controls */}\n <div className=\"flex items-center bg-gray-100 dark:bg-gray-800 rounded-lg p-1\">\n <Button\n variant={viewMode === \"desktop\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setViewMode(\"desktop\")}\n >\n <Monitor className=\"h-4 w-4\" />\n </Button>\n <Button\n variant={viewMode === \"tablet\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setViewMode(\"tablet\")}\n >\n <Tablet className=\"h-4 w-4\" />\n </Button>\n <Button\n variant={viewMode === \"mobile\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setViewMode(\"mobile\")}\n >\n <Smartphone className=\"h-4 w-4\" />\n </Button>\n </div>\n\n {/* Dark Mode Toggle */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={toggleDarkMode}\n >\n {isDarkMode ? (\n <Sun className=\"h-4 w-4\" />\n ) : (\n <Moon className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n </div>\n </header>\n\n {/* Content */}\n <main className=\"flex-1 overflow-auto p-6 bg-gray-50 dark:bg-gray-950\">\n {currentDoc ? (\n <div className=\"max-w-6xl mx-auto space-y-8\">\n {/* Description */}\n <div>\n <p className=\"text-lg text-gray-600 dark:text-gray-400\">{currentDoc.description}</p>\n </div>\n\n {/* Tabs */}\n <div>\n <div className=\"flex gap-3 mb-4\" role=\"tablist\" aria-label=\"Component details tabs\">\n <Button\n variant={activeTab === \"preview\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setActiveTab(\"preview\")}\n role=\"tab\"\n aria-selected={activeTab === \"preview\"}\n >\n <Eye className=\"h-4 w-4 mr-2\" />\n Preview\n </Button>\n <Button\n variant={activeTab === \"code\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setActiveTab(\"code\")}\n role=\"tab\"\n aria-selected={activeTab === \"code\"}\n >\n <Code className=\"h-4 w-4 mr-2\" />\n Code\n </Button>\n <Button\n variant={activeTab === \"props\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setActiveTab(\"props\")}\n role=\"tab\"\n aria-selected={activeTab === \"props\"}\n >\n <Settings className=\"h-4 w-4 mr-2\" />\n Props\n </Button>\n </div>\n <div>\n <div className=\"mt-6\">\n <div className=\"bg-white dark:bg-gray-900 rounded-lg shadow p-6\">\n {/* Preview */}\n <div\n className={cn(\n \"mx-auto transition-all duration-300\",\n getViewportClass()\n )}\n >\n <div>\n {showcaseRegistry[selectedComponent]\n ? React.createElement(\n showcaseRegistry[selectedComponent]\n )\n : null}\n </div>\n </div>\n </div>\n </div>\n\n {activeTab === \"code\" && (\n <div className=\"mt-6\" role=\"tabpanel\" aria-label=\"Code example\">\n <div className=\"bg-white dark:bg-gray-900 rounded-lg shadow p-6\">\n <div className=\"flex flex-row items-center justify-between\">\n <h2 className=\"text-lg font-semibold mb-0 dark:text-white\">\n Usage Example\n </h2>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => copyToClipboard(currentExample)}\n >\n {copiedCode === currentExample ? (\n <Check className=\"h-4 w-4 mr-2\" />\n ) : (\n <Copy className=\"h-4 w-4 mr-2\" />\n )}\n Copy\n </Button>\n </div>\n <pre className=\"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto\">\n <code>{currentExample}</code>\n </pre>\n </div>\n </div>\n )}\n\n {activeTab === \"props\" && (\n <div className=\"mt-6\" role=\"tabpanel\" aria-label=\"Component props\">\n <div className=\"bg-white dark:bg-gray-900 rounded-lg shadow p-6\">\n <h2 className=\"text-lg font-semibold mb-4 dark:text-white\">\n Component Props\n </h2>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full border-collapse\">\n <thead>\n <tr className=\"border-b border-gray-200 dark:border-gray-800\">\n <th className=\"text-left p-3 font-medium text-gray-900 dark:text-gray-100\">\n Prop\n </th>\n <th className=\"text-left p-3 font-medium text-gray-900 dark:text-gray-100\">\n Type\n </th>\n <th className=\"text-left p-3 font-medium text-gray-900 dark:text-gray-100\">\n Default\n </th>\n <th className=\"text-left p-3 font-medium text-gray-900 dark:text-gray-100\">\n Description\n </th>\n </tr>\n </thead>\n <tbody>\n {currentProps.length > 0 ? (\n currentProps.map((prop: PropDoc, index) => (\n <tr key={prop.name ?? index} className=\"border-b border-gray-100 dark:border-gray-800/50\">\n <td className=\"p-3\">\n <code className=\"bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm dark:text-gray-300\">\n {prop.name}\n </code>\n {prop.required && (\n <Badge variant=\"danger\" className=\"ml-2 text-xs\">\n Required\n </Badge>\n )}\n </td>\n <td className=\"p-3 text-gray-600 dark:text-gray-400\">{prop.type}</td>\n <td className=\"p-3 text-gray-600 dark:text-gray-400\">\n {prop.default ? (\n <code className=\"bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm dark:text-gray-300\">\n {prop.default}\n </code>\n ) : null}\n </td>\n <td className=\"p-3 text-gray-600 dark:text-gray-400\">{prop.description}</td>\n </tr>\n ))\n ) : (\n <tr>\n <td colSpan={4} className=\"p-4 text-center text-gray-500 dark:text-gray-400\">\n No props documented for this component yet.\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"flex items-center justify-center h-full\">\n <div className=\"text-center\">\n <Book className=\"h-16 w-16 text-gray-400 dark:text-gray-600 mx-auto mb-4\" />\n <h2 className=\"text-xl font-semibold text-gray-900 dark:text-white mb-2\">\n Select a Component\n </h2>\n <p className=\"text-gray-600 dark:text-gray-400\">\n Choose a component from the sidebar to view its documentation and examples.\n </p>\n </div>\n </div>\n )}\n </main>\n </div>\n </div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -248,6 +248,23 @@ function Example() {
|
|
|
248
248
|
{ name: "onSendMessage", type: "(message: string) => Promise<void> | void", description: "Callback hook when the user sends a message." }
|
|
249
249
|
]
|
|
250
250
|
},
|
|
251
|
+
"email-templates": {
|
|
252
|
+
name: "Email Templates",
|
|
253
|
+
description: "A comprehensive suite of 100+ React Email templates spanning marketing, billing, auth, and internal operations.",
|
|
254
|
+
example: `import { WelcomeEmail, renderEmailParams } from "@/components/Email";
|
|
255
|
+
|
|
256
|
+
// In your Next.js API route:
|
|
257
|
+
const { html, text } = await renderEmailParams(<WelcomeEmail userName="Alex" />);
|
|
258
|
+
|
|
259
|
+
await resend.emails.send({
|
|
260
|
+
from: 'hello@beyondcorp.com',
|
|
261
|
+
to: 'user@example.com',
|
|
262
|
+
subject: 'Welcome!',
|
|
263
|
+
html,
|
|
264
|
+
text
|
|
265
|
+
});`,
|
|
266
|
+
props: []
|
|
267
|
+
}
|
|
251
268
|
};
|
|
252
269
|
|
|
253
270
|
export { componentDocs };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentDocs.js","sources":["../../../src/components/ComponentShowcase/componentDocs.ts"],"sourcesContent":["/**\n * Centralized docs/config for all showcased components:\n * - description, usage example, props table, etc.\n * Used for ComponentShowcase main screen documentation.\n */\nexport const componentDocs = {\n button: {\n name: \"Button\",\n description: \"A versatile button component with multiple variants and sizes.\",\n example: `<Button variant=\"primary\" size=\"md\">\n Click me\n</Button>`,\n props: [\n { name: \"variant\", type: \"string\", default: \"primary\", description: \"Button style variant\" },\n { name: \"size\", type: \"string\", default: \"md\", description: \"Button size\" },\n { name: \"disabled\", type: \"boolean\", default: \"false\", description: \"Disable the button\" }\n ]\n },\n input: {\n name: \"Input\",\n description: \"A flexible input component with validation states and different sizes.\",\n example: `<Input placeholder=\"Enter your email\" />`,\n props: [\n { name: \"variant\", type: \"string\", default: \"default\", description: \"Input variant (default/success/error)\" },\n { name: \"inputSize\", type: \"string\", default: \"md\", description: \"Input size\" },\n { name: \"placeholder\", type: \"string\", default: \"\", description: \"Placeholder text\" }\n ]\n },\n badge: {\n name: \"Badge\",\n description: \"A small tag for statuses or classifications.\",\n example: `<Badge>Default</Badge>`,\n props: [\n { name: \"variant\", type: \"string\", default: \"default\", description: \"Badge style variant\" }\n ]\n },\n card: {\n name: \"Card\",\n description: \"A container element for grouping content.\",\n example: `<Card><CardContent>Example</CardContent></Card>`,\n props: [\n { name: \"children\", type: \"ReactNode\", description: \"Card content\" }\n ]\n },\n textarea: {\n name: \"Textarea\",\n description: \"A multi-line text input component.\",\n example: `<Textarea placeholder=\"Write here...\" />`,\n props: [\n { name: \"rows\", type: \"number\", default: 3, description: \"Number of rows\" }\n ]\n },\n checkbox: {\n name: \"Checkbox\",\n description: \"A standard form checkbox.\",\n example: `<Checkbox checked={true} />`,\n props: [\n { name: \"checked\", type: \"boolean\", description: \"Checked state\" }\n ]\n },\n switch: {\n name: \"Switch\",\n description: \"A boolean toggle control.\",\n example: `<Switch checked={true} />`,\n props: [\n { name: \"checked\", type: \"boolean\", description: \"Checked state\" }\n ]\n },\n avatar: {\n name: \"Avatar\",\n description: \"Displays a user profile image or initials.\",\n example: `<Avatar><AvatarFallback>U</AvatarFallback></Avatar>`,\n props: [\n { name: \"size\", type: \"\\\"sm\\\"|\\\"md\\\"|\\\"lg\\\"\", default: \"md\", description: \"Avatar size\" }\n ]\n },\n alert: {\n name: \"Alert\",\n description: \"Displays messages for important info.\",\n example: `<Alert variant=\"info\"><AlertTitle>Info</AlertTitle></Alert>`,\n props: [\n { name: \"variant\", type: \"string\", default: \"info\", description: \"Alert type\" }\n ]\n },\n toast: {\n name: \"Toast\",\n description: \"Transient notification message overlay.\",\n example: `<Toast />`,\n props: []\n },\n modal: {\n name: \"Modal\",\n description: \"A dialog overlay for user attention.\",\n example: `<Modal open={true} onOpenChange={() => {}} />`,\n props: [\n { name: \"open\", type: \"boolean\", description: \"Show or hide the modal\" }\n ]\n },\n spinner: {\n name: \"Spinner\",\n description: \"Animated indicator for loading states.\",\n example: `<Spinner />`,\n props: []\n },\n skeleton: {\n name: \"Skeleton\",\n description: \"Shimmer placeholder for loading UIs.\",\n example: `<Skeleton className=\"h-6 w-32\" />`,\n props: [\n { name: \"className\", type: \"string\", description: \"Skeleton custom styles\" }\n ]\n },\n statscard: {\n name: \"StatsCard\",\n description: \"Shows key metrics and trends.\",\n example: `<StatsCard title=\"Users\" value=\"2,543\" />`,\n props: [\n { name: \"title\", type: \"string\", description: \"Card title\" },\n { name: \"value\", type: \"string|number\", description: \"Main value\" }\n ]\n },\n tabs: {\n name: \"Tabs\",\n description: \"Navigation between content views.\",\n example: `<Tabs value=\"tab-1\"><TabsList>...</TabsList></Tabs>`,\n props: [\n { name: \"value\", type: \"string\", description: \"Selected tab value\" }\n ]\n },\n sidebar: {\n name: \"Sidebar\",\n description: \"Persistent vertical navigation panel.\",\n example: `<Sidebar menuItems={[]} />`,\n props: []\n },\n navbar: {\n name: \"Navbar\",\n description: \"Top navigation bar for branding and links.\",\n example: `<Navbar>...</Navbar>`,\n props: []\n },\n \"dashboard-layout\": {\n name: \"DashboardLayout\",\n description: \"Layout for dashboards with sidebar and content.\",\n example: `<DashboardLayout>...</DashboardLayout>`,\n props: []\n },\n \"dashboard-header\": {\n name: \"DashboardHeader\",\n description: \"Header for dashboard screens.\",\n example: `<DashboardHeader />`,\n props: []\n },\n \"dashboard-grid\": {\n name: \"DashboardGrid\",\n description: \"Grid container for dashboard widgets.\",\n example: `<DashboardGrid>...</DashboardGrid>`,\n props: []\n },\n datatable: {\n name: \"DataTable\",\n description: \"Advanced table for displaying data collections.\",\n example: `<DataTable columns={[]} dataSource={[]} />`,\n props: []\n },\n \"page-layout\": {\n name: \"Page Layout\",\n description: \"Flexible, semantic layout system for landing pages, products, blogs, and more. Compose with PageHeader, PageHero, PageContent, PageSidebar, and PageFooter for complete responsive UIs.\",\n example: `import { PageLayout, PageHeader, PageContent, PageFooter } from \"@/components/PageLayout\";\n\nfunction Example() {\n return (\n <PageLayout variant=\"default\" maxWidth=\"xl\">\n <PageHeader>\n <nav>\n <span>My App</span>\n </nav>\n </PageHeader>\n <PageContent maxWidth=\"lg\">\n <h1>Welcome!</h1>\n <p>Your content here...</p>\n </PageContent>\n <PageFooter variant=\"simple\">\n <p>© 2024 My App. All rights reserved.</p>\n </PageFooter>\n </PageLayout>\n );\n}`,\n props: [\n { name: \"variant\", type: \"\\\"default\\\"|\\\"centered\\\"|\\\"sidebar\\\"|\\\"landing\\\"|\\\"product\\\"|\\\"blog\\\"\", default: \"\\\"default\\\"\", description: \"Sets page color and layout preset\" },\n { name: \"maxWidth\", type: \"\\\"none\\\"|\\\"sm\\\"|\\\"md\\\"|\\\"lg\\\"|\\\"xl\\\"|\\\"2xl\\\"|\\\"full\\\"\", default: \"\\\"xl\\\"\", description: \"Limits overall page width for content\" },\n { name: \"contentLayout\", type: \"\\\"default\\\"|\\\"centered\\\"|\\\"sidebar\\\"|\\\"fullWidth\\\"\", default: \"\\\"default\\\"\", description: \"Layout mode for PageLayoutContent\" },\n { name: \"contentSpacing\", type: \"\\\"none\\\"|\\\"sm\\\"|\\\"md\\\"|\\\"lg\\\"|\\\"xl\\\"\", default: \"\\\"md\\\"\", description: \"Vertical padding spacing\" },\n { name: \"children\", type: \"ReactNode\", description: \"Page structure (usually header, content, sidebar, footer)\" },\n // Optionally highlight subcomponent props\n { name: \"PageHeader\", type: \"Sticky/Transparent, children\", description: \"Header settings for navigation bar\" },\n { name: \"PageHero\", type: \"fullHeight, backgroundImage, overlay, children\", description: \"Hero section for landing visuals\" },\n { name: \"PageContent\", type: \"maxWidth, children\", description: \"Content area for main body text/components\" },\n { name: \"PageSidebar\", type: \"position, width, children\", description: \"Sidebar area (e.g. for menu or extra info)\" },\n { name: \"PageFooter\", type: \"variant, children\", description: \"Footer configuration\" }\n ]\n },\n // --- AUTHENTICATION DEMOS ---\n login: {\n name: \"Login Page\",\n description: \"Showcases the reusable LoginForm component as a full login page example.\",\n example: `<LoginForm />`,\n props: []\n },\n signup: {\n name: \"Signup Page\",\n description: \"Showcases the reusable SignupForm component as a full signup page example.\",\n example: `<SignupForm />`,\n props: []\n },\n shield: {\n name: \"!isAuthenticated Shield\",\n description: \"ProtectedRoute gate which only renders content when authenticated; otherwise shows fallback.\",\n example: `<ProtectedRoute>Protected Content</ProtectedRoute>`,\n props: []\n },\n auth: {\n name: \"Auth System\",\n description: \"Demo of authentication UI and flows.\",\n example: `<AuthShowcase />`,\n props: []\n },\n \"password-reset\": {\n name: \"Password Reset\",\n description: \"Showcases the reusable PasswordResetForm component, allowing users to request a password reset via email.\",\n example: `<PasswordResetForm onReset={email => { ... }} />`,\n props: [\n { name: \"onReset\", type: \"(email: string) => Promise<void> | void\", description: \"Submit reset request callback\" },\n { name: \"isLoading\", type: \"boolean\", description: \"Loading indicator\" },\n { name: \"successMessage\", type: \"string\", description: \"Message displayed on success\" },\n { name: \"errorMessage\", type: \"string\", description: \"Error feedback message\" }\n ],\n },\n chatwidget: {\n name: \"Chat Widget\",\n description: \"A floating AI/Human support chat widget with customizable positions.\",\n example: `<ChatWidget \\n position=\"bottom-right\" \\n title=\"Support\"\\n onSendMessage={(msg) => console.log(msg)}\\n/>`,\n props: [\n { name: \"position\", type: '\\\"bottom-right\\\" | \\\"bottom-left\\\"', default: '\\\"bottom-right\\\"', description: \"Controls horizontal anchoring.\" },\n { name: \"strategy\", type: '\\\"fixed\\\" | \\\"absolute\\\"', default: '\\\"fixed\\\"', description: \"Use fixed for whole page, absolute for container bounds.\" },\n { name: \"title\", type: \"string\", default: '\\\"Support\\\"', description: \"Header title text.\" },\n { name: \"subtitle\", type: \"string\", default: '\\\"We typically reply in a few minutes\\\"', description: \"Header subtitle text.\" },\n { name: \"onSendMessage\", type: \"(message: string) => Promise<void> | void\", description: \"Callback hook when the user sends a message.\" }\n ]\n },\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"componentDocs.js","sources":["../../../src/components/ComponentShowcase/componentDocs.ts"],"sourcesContent":["/**\n * Centralized docs/config for all showcased components:\n * - description, usage example, props table, etc.\n * Used for ComponentShowcase main screen documentation.\n */\nexport const componentDocs = {\n button: {\n name: \"Button\",\n description: \"A versatile button component with multiple variants and sizes.\",\n example: `<Button variant=\"primary\" size=\"md\">\n Click me\n</Button>`,\n props: [\n { name: \"variant\", type: \"string\", default: \"primary\", description: \"Button style variant\" },\n { name: \"size\", type: \"string\", default: \"md\", description: \"Button size\" },\n { name: \"disabled\", type: \"boolean\", default: \"false\", description: \"Disable the button\" }\n ]\n },\n input: {\n name: \"Input\",\n description: \"A flexible input component with validation states and different sizes.\",\n example: `<Input placeholder=\"Enter your email\" />`,\n props: [\n { name: \"variant\", type: \"string\", default: \"default\", description: \"Input variant (default/success/error)\" },\n { name: \"inputSize\", type: \"string\", default: \"md\", description: \"Input size\" },\n { name: \"placeholder\", type: \"string\", default: \"\", description: \"Placeholder text\" }\n ]\n },\n badge: {\n name: \"Badge\",\n description: \"A small tag for statuses or classifications.\",\n example: `<Badge>Default</Badge>`,\n props: [\n { name: \"variant\", type: \"string\", default: \"default\", description: \"Badge style variant\" }\n ]\n },\n card: {\n name: \"Card\",\n description: \"A container element for grouping content.\",\n example: `<Card><CardContent>Example</CardContent></Card>`,\n props: [\n { name: \"children\", type: \"ReactNode\", description: \"Card content\" }\n ]\n },\n textarea: {\n name: \"Textarea\",\n description: \"A multi-line text input component.\",\n example: `<Textarea placeholder=\"Write here...\" />`,\n props: [\n { name: \"rows\", type: \"number\", default: 3, description: \"Number of rows\" }\n ]\n },\n checkbox: {\n name: \"Checkbox\",\n description: \"A standard form checkbox.\",\n example: `<Checkbox checked={true} />`,\n props: [\n { name: \"checked\", type: \"boolean\", description: \"Checked state\" }\n ]\n },\n switch: {\n name: \"Switch\",\n description: \"A boolean toggle control.\",\n example: `<Switch checked={true} />`,\n props: [\n { name: \"checked\", type: \"boolean\", description: \"Checked state\" }\n ]\n },\n avatar: {\n name: \"Avatar\",\n description: \"Displays a user profile image or initials.\",\n example: `<Avatar><AvatarFallback>U</AvatarFallback></Avatar>`,\n props: [\n { name: \"size\", type: \"\\\"sm\\\"|\\\"md\\\"|\\\"lg\\\"\", default: \"md\", description: \"Avatar size\" }\n ]\n },\n alert: {\n name: \"Alert\",\n description: \"Displays messages for important info.\",\n example: `<Alert variant=\"info\"><AlertTitle>Info</AlertTitle></Alert>`,\n props: [\n { name: \"variant\", type: \"string\", default: \"info\", description: \"Alert type\" }\n ]\n },\n toast: {\n name: \"Toast\",\n description: \"Transient notification message overlay.\",\n example: `<Toast />`,\n props: []\n },\n modal: {\n name: \"Modal\",\n description: \"A dialog overlay for user attention.\",\n example: `<Modal open={true} onOpenChange={() => {}} />`,\n props: [\n { name: \"open\", type: \"boolean\", description: \"Show or hide the modal\" }\n ]\n },\n spinner: {\n name: \"Spinner\",\n description: \"Animated indicator for loading states.\",\n example: `<Spinner />`,\n props: []\n },\n skeleton: {\n name: \"Skeleton\",\n description: \"Shimmer placeholder for loading UIs.\",\n example: `<Skeleton className=\"h-6 w-32\" />`,\n props: [\n { name: \"className\", type: \"string\", description: \"Skeleton custom styles\" }\n ]\n },\n statscard: {\n name: \"StatsCard\",\n description: \"Shows key metrics and trends.\",\n example: `<StatsCard title=\"Users\" value=\"2,543\" />`,\n props: [\n { name: \"title\", type: \"string\", description: \"Card title\" },\n { name: \"value\", type: \"string|number\", description: \"Main value\" }\n ]\n },\n tabs: {\n name: \"Tabs\",\n description: \"Navigation between content views.\",\n example: `<Tabs value=\"tab-1\"><TabsList>...</TabsList></Tabs>`,\n props: [\n { name: \"value\", type: \"string\", description: \"Selected tab value\" }\n ]\n },\n sidebar: {\n name: \"Sidebar\",\n description: \"Persistent vertical navigation panel.\",\n example: `<Sidebar menuItems={[]} />`,\n props: []\n },\n navbar: {\n name: \"Navbar\",\n description: \"Top navigation bar for branding and links.\",\n example: `<Navbar>...</Navbar>`,\n props: []\n },\n \"dashboard-layout\": {\n name: \"DashboardLayout\",\n description: \"Layout for dashboards with sidebar and content.\",\n example: `<DashboardLayout>...</DashboardLayout>`,\n props: []\n },\n \"dashboard-header\": {\n name: \"DashboardHeader\",\n description: \"Header for dashboard screens.\",\n example: `<DashboardHeader />`,\n props: []\n },\n \"dashboard-grid\": {\n name: \"DashboardGrid\",\n description: \"Grid container for dashboard widgets.\",\n example: `<DashboardGrid>...</DashboardGrid>`,\n props: []\n },\n datatable: {\n name: \"DataTable\",\n description: \"Advanced table for displaying data collections.\",\n example: `<DataTable columns={[]} dataSource={[]} />`,\n props: []\n },\n \"page-layout\": {\n name: \"Page Layout\",\n description: \"Flexible, semantic layout system for landing pages, products, blogs, and more. Compose with PageHeader, PageHero, PageContent, PageSidebar, and PageFooter for complete responsive UIs.\",\n example: `import { PageLayout, PageHeader, PageContent, PageFooter } from \"@/components/PageLayout\";\n\nfunction Example() {\n return (\n <PageLayout variant=\"default\" maxWidth=\"xl\">\n <PageHeader>\n <nav>\n <span>My App</span>\n </nav>\n </PageHeader>\n <PageContent maxWidth=\"lg\">\n <h1>Welcome!</h1>\n <p>Your content here...</p>\n </PageContent>\n <PageFooter variant=\"simple\">\n <p>© 2024 My App. All rights reserved.</p>\n </PageFooter>\n </PageLayout>\n );\n}`,\n props: [\n { name: \"variant\", type: \"\\\"default\\\"|\\\"centered\\\"|\\\"sidebar\\\"|\\\"landing\\\"|\\\"product\\\"|\\\"blog\\\"\", default: \"\\\"default\\\"\", description: \"Sets page color and layout preset\" },\n { name: \"maxWidth\", type: \"\\\"none\\\"|\\\"sm\\\"|\\\"md\\\"|\\\"lg\\\"|\\\"xl\\\"|\\\"2xl\\\"|\\\"full\\\"\", default: \"\\\"xl\\\"\", description: \"Limits overall page width for content\" },\n { name: \"contentLayout\", type: \"\\\"default\\\"|\\\"centered\\\"|\\\"sidebar\\\"|\\\"fullWidth\\\"\", default: \"\\\"default\\\"\", description: \"Layout mode for PageLayoutContent\" },\n { name: \"contentSpacing\", type: \"\\\"none\\\"|\\\"sm\\\"|\\\"md\\\"|\\\"lg\\\"|\\\"xl\\\"\", default: \"\\\"md\\\"\", description: \"Vertical padding spacing\" },\n { name: \"children\", type: \"ReactNode\", description: \"Page structure (usually header, content, sidebar, footer)\" },\n // Optionally highlight subcomponent props\n { name: \"PageHeader\", type: \"Sticky/Transparent, children\", description: \"Header settings for navigation bar\" },\n { name: \"PageHero\", type: \"fullHeight, backgroundImage, overlay, children\", description: \"Hero section for landing visuals\" },\n { name: \"PageContent\", type: \"maxWidth, children\", description: \"Content area for main body text/components\" },\n { name: \"PageSidebar\", type: \"position, width, children\", description: \"Sidebar area (e.g. for menu or extra info)\" },\n { name: \"PageFooter\", type: \"variant, children\", description: \"Footer configuration\" }\n ]\n },\n // --- AUTHENTICATION DEMOS ---\n login: {\n name: \"Login Page\",\n description: \"Showcases the reusable LoginForm component as a full login page example.\",\n example: `<LoginForm />`,\n props: []\n },\n signup: {\n name: \"Signup Page\",\n description: \"Showcases the reusable SignupForm component as a full signup page example.\",\n example: `<SignupForm />`,\n props: []\n },\n shield: {\n name: \"!isAuthenticated Shield\",\n description: \"ProtectedRoute gate which only renders content when authenticated; otherwise shows fallback.\",\n example: `<ProtectedRoute>Protected Content</ProtectedRoute>`,\n props: []\n },\n auth: {\n name: \"Auth System\",\n description: \"Demo of authentication UI and flows.\",\n example: `<AuthShowcase />`,\n props: []\n },\n \"password-reset\": {\n name: \"Password Reset\",\n description: \"Showcases the reusable PasswordResetForm component, allowing users to request a password reset via email.\",\n example: `<PasswordResetForm onReset={email => { ... }} />`,\n props: [\n { name: \"onReset\", type: \"(email: string) => Promise<void> | void\", description: \"Submit reset request callback\" },\n { name: \"isLoading\", type: \"boolean\", description: \"Loading indicator\" },\n { name: \"successMessage\", type: \"string\", description: \"Message displayed on success\" },\n { name: \"errorMessage\", type: \"string\", description: \"Error feedback message\" }\n ],\n },\n chatwidget: {\n name: \"Chat Widget\",\n description: \"A floating AI/Human support chat widget with customizable positions.\",\n example: `<ChatWidget \\n position=\"bottom-right\" \\n title=\"Support\"\\n onSendMessage={(msg) => console.log(msg)}\\n/>`,\n props: [\n { name: \"position\", type: '\\\"bottom-right\\\" | \\\"bottom-left\\\"', default: '\\\"bottom-right\\\"', description: \"Controls horizontal anchoring.\" },\n { name: \"strategy\", type: '\\\"fixed\\\" | \\\"absolute\\\"', default: '\\\"fixed\\\"', description: \"Use fixed for whole page, absolute for container bounds.\" },\n { name: \"title\", type: \"string\", default: '\\\"Support\\\"', description: \"Header title text.\" },\n { name: \"subtitle\", type: \"string\", default: '\\\"We typically reply in a few minutes\\\"', description: \"Header subtitle text.\" },\n { name: \"onSendMessage\", type: \"(message: string) => Promise<void> | void\", description: \"Callback hook when the user sends a message.\" }\n ]\n },\n \"email-templates\": {\n name: \"Email Templates\",\n description: \"A comprehensive suite of 100+ React Email templates spanning marketing, billing, auth, and internal operations.\",\n example: `import { WelcomeEmail, renderEmailParams } from \"@/components/Email\";\n\n// In your Next.js API route:\nconst { html, text } = await renderEmailParams(<WelcomeEmail userName=\"Alex\" />);\n\nawait resend.emails.send({\n from: 'hello@beyondcorp.com',\n to: 'user@example.com',\n subject: 'Welcome!',\n html,\n text\n});`,\n props: []\n }\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,7 @@ import { ProtectedRouteExample } from '../Auth/ProtectedRoute.example.js';
|
|
|
26
26
|
import { PasswordResetFormExample } from '../Auth/ForgotPasswordForm.example.js';
|
|
27
27
|
import { PageLayoutShowcase } from '../PageLayout/PageLayoutShowcase.js';
|
|
28
28
|
import { ChatWidgetExample } from '../ChatWidget/ChatWidget.example.js';
|
|
29
|
+
import { EmailShowcase } from '../Email/EmailShowcase.js';
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* Showcase registry maps component ids to their example/demo modules.
|
|
@@ -60,7 +61,8 @@ const showcaseRegistry = {
|
|
|
60
61
|
"password-reset": PasswordResetFormExample,
|
|
61
62
|
shield: ProtectedRouteExample,
|
|
62
63
|
"page-layout": PageLayoutShowcase,
|
|
63
|
-
chatwidget: ChatWidgetExample
|
|
64
|
+
chatwidget: ChatWidgetExample,
|
|
65
|
+
"email-templates": EmailShowcase
|
|
64
66
|
// Extend with other demos as needed
|
|
65
67
|
};
|
|
66
68
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"showcaseRegistry.js","sources":["../../../src/components/ComponentShowcase/showcaseRegistry.ts"],"sourcesContent":["/**\n * Showcase registry maps component ids to their example/demo modules.\n * Usage: import { showcaseRegistry } from './showcaseRegistry';\n * Then: const Demo = showcaseRegistry['button'];\n */\nimport { ButtonExample } from '../Button/Button.example';\nimport { InputExample } from '../Input/Input.example';\nimport { TextareaExample } from '../Textarea/Textarea.example';\nimport { CheckboxExample } from '../Checkbox/Checkbox.example';\nimport { SwitchExample } from '../Switch/Switch.example';\nimport { CardExample } from '../Card/Card.example';\nimport { BadgeExample } from '../Badge/Badge.example';\nimport { AvatarExample } from '../Avatar/Avatar.example';\nimport { AlertExample } from '../Alert/Alert.example';\nimport { ToastExample } from '../Toast/Toast.example';\nimport { ModalExample } from '../Modal/Modal.example';\nimport { SpinnerExample } from '../Spinner/Spinner.example';\nimport { SkeletonExample } from '../Skeleton/Skeleton.example';\nimport { StatsCardExample } from '../StatsCard/StatsCard.example';\nimport { TabsExample } from '../Tabs/Tabs.example';\nimport { SidebarExample } from '../Sidebar/Sidebar.example';\nimport { NavbarExample } from '../Navbar/Navbar.example';\nimport { DashboardLayoutExample } from '../DashboardLayout/DashboardLayout.example';\nimport { DashboardHeaderExample } from '../DashboardHeader/DashboardHeader.example';\nimport { DashboardGridExample } from '../DashboardGrid/DashboardGrid.example';\nimport { DataTableShowcase } from '../DataTable/DataTableShowcase';\nimport { AuthShowcase } from '../Auth/AuthShowcase';\nimport { LoginFormExample } from \"../Auth/LoginForm.example\";\nimport { SignupFormExample } from \"../Auth/SignupForm.example\";\nimport { ProtectedRouteExample } from \"../Auth/ProtectedRoute.example\";\nimport { PasswordResetFormExample } from \"../Auth/ForgotPasswordForm.example\";\nimport { PageLayoutShowcase } from '../PageLayout/PageLayoutShowcase';\nimport { ChatWidgetExample } from '../ChatWidget/ChatWidget.example';\n\n\n\nexport const showcaseRegistry: Record<string, React.FC> = {\n button: ButtonExample,\n input: InputExample,\n textarea: TextareaExample,\n checkbox: CheckboxExample,\n switch: SwitchExample,\n card: CardExample,\n badge: BadgeExample,\n avatar: AvatarExample,\n alert: AlertExample,\n toast: ToastExample,\n modal: ModalExample,\n spinner: SpinnerExample,\n skeleton: SkeletonExample,\n statscard: StatsCardExample,\n tabs: TabsExample,\n sidebar: SidebarExample,\n navbar: NavbarExample,\n \"dashboard-layout\": DashboardLayoutExample,\n \"dashboard-header\": DashboardHeaderExample,\n \"dashboard-grid\": DashboardGridExample,\n datatable: DataTableShowcase,\n auth: AuthShowcase,\n login: LoginFormExample,\n signup: SignupFormExample,\n \"password-reset\": PasswordResetFormExample,\n shield: ProtectedRouteExample,\n \"page-layout\": PageLayoutShowcase,\n chatwidget: ChatWidgetExample\n // Extend with other demos as needed\n};"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"showcaseRegistry.js","sources":["../../../src/components/ComponentShowcase/showcaseRegistry.ts"],"sourcesContent":["/**\n * Showcase registry maps component ids to their example/demo modules.\n * Usage: import { showcaseRegistry } from './showcaseRegistry';\n * Then: const Demo = showcaseRegistry['button'];\n */\nimport { ButtonExample } from '../Button/Button.example';\nimport { InputExample } from '../Input/Input.example';\nimport { TextareaExample } from '../Textarea/Textarea.example';\nimport { CheckboxExample } from '../Checkbox/Checkbox.example';\nimport { SwitchExample } from '../Switch/Switch.example';\nimport { CardExample } from '../Card/Card.example';\nimport { BadgeExample } from '../Badge/Badge.example';\nimport { AvatarExample } from '../Avatar/Avatar.example';\nimport { AlertExample } from '../Alert/Alert.example';\nimport { ToastExample } from '../Toast/Toast.example';\nimport { ModalExample } from '../Modal/Modal.example';\nimport { SpinnerExample } from '../Spinner/Spinner.example';\nimport { SkeletonExample } from '../Skeleton/Skeleton.example';\nimport { StatsCardExample } from '../StatsCard/StatsCard.example';\nimport { TabsExample } from '../Tabs/Tabs.example';\nimport { SidebarExample } from '../Sidebar/Sidebar.example';\nimport { NavbarExample } from '../Navbar/Navbar.example';\nimport { DashboardLayoutExample } from '../DashboardLayout/DashboardLayout.example';\nimport { DashboardHeaderExample } from '../DashboardHeader/DashboardHeader.example';\nimport { DashboardGridExample } from '../DashboardGrid/DashboardGrid.example';\nimport { DataTableShowcase } from '../DataTable/DataTableShowcase';\nimport { AuthShowcase } from '../Auth/AuthShowcase';\nimport { LoginFormExample } from \"../Auth/LoginForm.example\";\nimport { SignupFormExample } from \"../Auth/SignupForm.example\";\nimport { ProtectedRouteExample } from \"../Auth/ProtectedRoute.example\";\nimport { PasswordResetFormExample } from \"../Auth/ForgotPasswordForm.example\";\nimport { PageLayoutShowcase } from '../PageLayout/PageLayoutShowcase';\nimport { ChatWidgetExample } from '../ChatWidget/ChatWidget.example';\nimport { EmailShowcase } from '../Email/EmailShowcase';\n\n\n\nexport const showcaseRegistry: Record<string, React.FC> = {\n button: ButtonExample,\n input: InputExample,\n textarea: TextareaExample,\n checkbox: CheckboxExample,\n switch: SwitchExample,\n card: CardExample,\n badge: BadgeExample,\n avatar: AvatarExample,\n alert: AlertExample,\n toast: ToastExample,\n modal: ModalExample,\n spinner: SpinnerExample,\n skeleton: SkeletonExample,\n statscard: StatsCardExample,\n tabs: TabsExample,\n sidebar: SidebarExample,\n navbar: NavbarExample,\n \"dashboard-layout\": DashboardLayoutExample,\n \"dashboard-header\": DashboardHeaderExample,\n \"dashboard-grid\": DashboardGridExample,\n datatable: DataTableShowcase,\n auth: AuthShowcase,\n login: LoginFormExample,\n signup: SignupFormExample,\n \"password-reset\": PasswordResetFormExample,\n shield: ProtectedRouteExample,\n \"page-layout\": PageLayoutShowcase,\n chatwidget: ChatWidgetExample,\n \"email-templates\": EmailShowcase\n // Extend with other demos as needed\n};"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;AAIG;AAiCI,MAAM,gBAAgB,GAA6B;AACxD,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,QAAQ,EAAE,eAAe;AACzB,IAAA,QAAQ,EAAE,eAAe;AACzB,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,QAAQ,EAAE,eAAe;AACzB,IAAA,SAAS,EAAE,gBAAgB;AAC3B,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,kBAAkB,EAAE,sBAAsB;AAC1C,IAAA,kBAAkB,EAAE,sBAAsB;AAC1C,IAAA,gBAAgB,EAAE,oBAAoB;AACtC,IAAA,SAAS,EAAE,iBAAiB;AAC5B,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,KAAK,EAAE,gBAAgB;AACvB,IAAA,MAAM,EAAE,iBAAiB;AACzB,IAAA,gBAAgB,EAAE,wBAAwB;AAC1C,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,aAAa,EAAE,kBAAkB;AACjC,IAAA,UAAU,EAAE,iBAAiB;AAC7B,IAAA,iBAAiB,EAAE;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const EmailShowcase: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import React__default, { useMemo, useState } from 'react';
|
|
3
|
+
import { EmailPreviewer } from './components/EmailPreviewer.js';
|
|
4
|
+
import * as index from './templates/index.js';
|
|
5
|
+
|
|
6
|
+
// We map known template names to explicit categories.
|
|
7
|
+
// Any missed/new exports automatically fall into an "Uncategorized" section!
|
|
8
|
+
const CATEGORY_MAP = {
|
|
9
|
+
"Marketing: Newsletters": ["WeeklyNewsletter", "MonthlyDigest", "CuratedIndustryNews"],
|
|
10
|
+
"Marketing: Blog": ["NewBlogPost", "BlogSeries", "BestOfRoundup"],
|
|
11
|
+
"Marketing: Lead Nurturing": ["LeadMagnetDelivery", "WebinarConfirmation", "WebinarReminder", "WebinarFollowup", "DripCampaignDay1", "DripCampaignComplete", "CaseStudyDelivery"],
|
|
12
|
+
"Marketing: Promotional": ["AbandonedCart", "FlashSale", "BrowseAbandonment", "PriceDropAlert", "BackInStock", "SeasonalCampaign", "BirthdayOffer", "MilestoneDiscount"],
|
|
13
|
+
"Marketing: Events": ["EventAnnouncement", "EarlyBirdReminder", "ScheduleReleased", "VIPInvite", "PostEventThankYou", "ConferenceSeries"],
|
|
14
|
+
"Marketing: Re-engagement": ["WeMissYou30Day", "ComeBack60Day", "LastChance90Day", "ProductUpdateReengagement"],
|
|
15
|
+
"Marketing: Social": ["SocialProof", "NewFollowerWelcome", "ShareYourStory", "UserSpotlight", "CommunityMilestone"],
|
|
16
|
+
"Marketing: Surveys": ["NPSSurvey", "ExitSurvey", "CSATSurvey", "ProductFeedback", "BetaFeedback"],
|
|
17
|
+
"Marketing: Affiliate": ["AffiliateInvite", "AffiliateWelcome", "AffiliatePayout", "AffiliateTopPerformer", "PartnerComarketing"],
|
|
18
|
+
"Marketing: Content": ["NewGuideEbook", "ToolTemplateDelivery", "InfographicEmail", "PodcastEpisode", "YouTubeNotification"],
|
|
19
|
+
"Sales": ["ColdOutreach", "FollowUpEmail", "ScheduleDemo", "SendProposal", "ProposalAccepted", "ProjectTermination", "ClientWinBack", "ClientReferenceRequest"],
|
|
20
|
+
"Legal": ["PrivacyPolicyUpdate", "TermsOfServiceUpdate", "DPANotice", "DMCANotice", "GDPRCompliance"],
|
|
21
|
+
"Internal: HR": ["NewHireAnnouncement", "BirthdayAnniversary", "EmployeeFarewell", "PolicyUpdate", "ExitInterviewRequest"],
|
|
22
|
+
"Internal: IT": ["ITOutageReport", "PasswordRotationReminder", "AppAccessGranted"],
|
|
23
|
+
"Internal: Comms": ["LeadershipUpdate", "MeetingRecap", "CompanyEventsCalendar"],
|
|
24
|
+
"Billing": ["InvoiceEmail", "PaymentFailedEmail", "SubscriptionConfirmation", "SubscriptionCancelled", "TrialEndingEmail", "CreditCardExpiring", "PaymentReceipt", "OverduePaymentNotice"],
|
|
25
|
+
"Authentication": ["WelcomeEmail", "ConfirmEmail", "MagicLinkEmail", "ResetPasswordEmail", "EmailChangeVerification", "TwoFactorCodeEmail"],
|
|
26
|
+
"Support": ["TicketCreatedEmail", "TicketReplyEmail", "TicketResolvedEmail", "SupportFeedbackRequest"],
|
|
27
|
+
"Engagement": ["WeeklyDigest", "FeatureAnnouncement", "MilestoneEmail", "InactivityWarning", "TipOfWeek", "ProductChangelog"],
|
|
28
|
+
"Growth": ["ReferralInvite", "ReferralReward", "ReferralConverted", "WaitlistWelcome", "SocialSharePrompt"],
|
|
29
|
+
"Security": ["NewLoginAlert", "PolicyUpdateEmail", "AccountDeletedConfirmation", "DataExportReady", "ApiKeyCreated"],
|
|
30
|
+
"System": ["MaintenanceNotice", "IncidentReport", "StatusPageUpdate"]
|
|
31
|
+
};
|
|
32
|
+
const EmailShowcase = () => {
|
|
33
|
+
const { categories, flatTemplates, defaultTemplateId } = useMemo(() => {
|
|
34
|
+
const parsedCategories = {};
|
|
35
|
+
const flat = {};
|
|
36
|
+
let firstId = '';
|
|
37
|
+
// 1. Process known categories
|
|
38
|
+
Object.entries(CATEGORY_MAP).forEach(([categoryName, componentNames]) => {
|
|
39
|
+
componentNames.forEach(compName => {
|
|
40
|
+
const Component = index[compName];
|
|
41
|
+
if (Component && typeof Component === 'function') {
|
|
42
|
+
if (!parsedCategories[categoryName])
|
|
43
|
+
parsedCategories[categoryName] = {};
|
|
44
|
+
// Automatically add spaces before Capital letters (e.g., WeeklyNewsletter -> Weekly Newsletter)
|
|
45
|
+
const formattedName = compName.replace(/([A-Z])/g, ' $1').trim();
|
|
46
|
+
const element = jsx(Component, {});
|
|
47
|
+
parsedCategories[categoryName][compName] = { name: formattedName, component: element };
|
|
48
|
+
flat[compName] = element;
|
|
49
|
+
if (!firstId)
|
|
50
|
+
firstId = compName;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
// 2. Discover any newly added exports (Uncategorized Fallback)
|
|
55
|
+
Object.entries(index).forEach(([compName, Component]) => {
|
|
56
|
+
if (compName === 'default' ||
|
|
57
|
+
flat[compName] ||
|
|
58
|
+
typeof Component !== 'function' ||
|
|
59
|
+
/^[a-z]/.test(compName) // Ignore utility functions like renderEmailParams
|
|
60
|
+
) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const categoryName = "Uncategorized";
|
|
64
|
+
if (!parsedCategories[categoryName])
|
|
65
|
+
parsedCategories[categoryName] = {};
|
|
66
|
+
const formattedName = compName.replace(/([A-Z])/g, ' $1').trim();
|
|
67
|
+
const element = jsx(Component, {});
|
|
68
|
+
parsedCategories[categoryName][compName] = { name: formattedName, component: element };
|
|
69
|
+
flat[compName] = element;
|
|
70
|
+
if (!firstId)
|
|
71
|
+
firstId = compName;
|
|
72
|
+
});
|
|
73
|
+
return { categories: parsedCategories, flatTemplates: flat, defaultTemplateId: firstId };
|
|
74
|
+
}, []);
|
|
75
|
+
const [activeTemplate, setActiveTemplate] = useState(defaultTemplateId);
|
|
76
|
+
// Keep state in sync if defaultTemplateId changes when component mounts
|
|
77
|
+
React__default.useEffect(() => {
|
|
78
|
+
if (!activeTemplate && defaultTemplateId)
|
|
79
|
+
setActiveTemplate(defaultTemplateId);
|
|
80
|
+
}, [defaultTemplateId, activeTemplate]);
|
|
81
|
+
return (jsxs("div", { className: "space-y-6", children: [jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center gap-4 mb-4", children: [jsx("label", { className: "font-medium text-gray-700 dark:text-gray-300", children: "Select Template:" }), jsx("select", { className: "border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-900 rounded-md px-3 py-2 text-sm text-gray-900 dark:text-white min-w-[250px] focus:outline-none focus:ring-2 focus:ring-primary-500", value: activeTemplate, onChange: (e) => setActiveTemplate(e.target.value), children: Object.entries(categories).map(([categoryName, templates]) => (jsx("optgroup", { label: categoryName, children: Object.entries(templates).map(([id, data]) => (jsx("option", { value: id, children: data.name }, id))) }, categoryName))) })] }), jsx("div", { className: "w-full bg-white dark:bg-gray-900 rounded-lg shadow-sm border border-gray-200 dark:border-gray-800", children: jsx(EmailPreviewer, { component: flatTemplates[activeTemplate] || jsx("div", { className: "p-10 text-center text-gray-500", children: "No template selected" }) }) })] }));
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export { EmailShowcase };
|
|
85
|
+
//# sourceMappingURL=EmailShowcase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailShowcase.js","sources":["../../../src/components/Email/EmailShowcase.tsx"],"sourcesContent":["import React, { useState, useMemo } from 'react';\nimport { EmailPreviewer } from './components';\nimport * as AllTemplates from './templates';\n\n// We map known template names to explicit categories.\n// Any missed/new exports automatically fall into an \"Uncategorized\" section!\nconst CATEGORY_MAP: Record<string, string[]> = {\n \"Marketing: Newsletters\": [\"WeeklyNewsletter\", \"MonthlyDigest\", \"CuratedIndustryNews\"],\n \"Marketing: Blog\": [\"NewBlogPost\", \"BlogSeries\", \"BestOfRoundup\"],\n \"Marketing: Lead Nurturing\": [\"LeadMagnetDelivery\", \"WebinarConfirmation\", \"WebinarReminder\", \"WebinarFollowup\", \"DripCampaignDay1\", \"DripCampaignComplete\", \"CaseStudyDelivery\"],\n \"Marketing: Promotional\": [\"AbandonedCart\", \"FlashSale\", \"BrowseAbandonment\", \"PriceDropAlert\", \"BackInStock\", \"SeasonalCampaign\", \"BirthdayOffer\", \"MilestoneDiscount\"],\n \"Marketing: Events\": [\"EventAnnouncement\", \"EarlyBirdReminder\", \"ScheduleReleased\", \"VIPInvite\", \"PostEventThankYou\", \"ConferenceSeries\"],\n \"Marketing: Re-engagement\": [\"WeMissYou30Day\", \"ComeBack60Day\", \"LastChance90Day\", \"ProductUpdateReengagement\"],\n \"Marketing: Social\": [\"SocialProof\", \"NewFollowerWelcome\", \"ShareYourStory\", \"UserSpotlight\", \"CommunityMilestone\"],\n \"Marketing: Surveys\": [\"NPSSurvey\", \"ExitSurvey\", \"CSATSurvey\", \"ProductFeedback\", \"BetaFeedback\"],\n \"Marketing: Affiliate\": [\"AffiliateInvite\", \"AffiliateWelcome\", \"AffiliatePayout\", \"AffiliateTopPerformer\", \"PartnerComarketing\"],\n \"Marketing: Content\": [\"NewGuideEbook\", \"ToolTemplateDelivery\", \"InfographicEmail\", \"PodcastEpisode\", \"YouTubeNotification\"],\n \"Sales\": [\"ColdOutreach\", \"FollowUpEmail\", \"ScheduleDemo\", \"SendProposal\", \"ProposalAccepted\", \"ProjectTermination\", \"ClientWinBack\", \"ClientReferenceRequest\"],\n \"Legal\": [\"PrivacyPolicyUpdate\", \"TermsOfServiceUpdate\", \"DPANotice\", \"DMCANotice\", \"GDPRCompliance\"],\n \"Internal: HR\": [\"NewHireAnnouncement\", \"BirthdayAnniversary\", \"EmployeeFarewell\", \"PolicyUpdate\", \"ExitInterviewRequest\"],\n \"Internal: IT\": [\"ITOutageReport\", \"PasswordRotationReminder\", \"AppAccessGranted\"],\n \"Internal: Comms\": [\"LeadershipUpdate\", \"MeetingRecap\", \"CompanyEventsCalendar\"],\n \"Billing\": [\"InvoiceEmail\", \"PaymentFailedEmail\", \"SubscriptionConfirmation\", \"SubscriptionCancelled\", \"TrialEndingEmail\", \"CreditCardExpiring\", \"PaymentReceipt\", \"OverduePaymentNotice\"],\n \"Authentication\": [\"WelcomeEmail\", \"ConfirmEmail\", \"MagicLinkEmail\", \"ResetPasswordEmail\", \"EmailChangeVerification\", \"TwoFactorCodeEmail\"],\n \"Support\": [\"TicketCreatedEmail\", \"TicketReplyEmail\", \"TicketResolvedEmail\", \"SupportFeedbackRequest\"],\n \"Engagement\": [\"WeeklyDigest\", \"FeatureAnnouncement\", \"MilestoneEmail\", \"InactivityWarning\", \"TipOfWeek\", \"ProductChangelog\"],\n \"Growth\": [\"ReferralInvite\", \"ReferralReward\", \"ReferralConverted\", \"WaitlistWelcome\", \"SocialSharePrompt\"],\n \"Security\": [\"NewLoginAlert\", \"PolicyUpdateEmail\", \"AccountDeletedConfirmation\", \"DataExportReady\", \"ApiKeyCreated\"],\n \"System\": [\"MaintenanceNotice\", \"IncidentReport\", \"StatusPageUpdate\"]\n};\n\nexport const EmailShowcase = () => {\n const { categories, flatTemplates, defaultTemplateId } = useMemo(() => {\n const parsedCategories: Record<string, Record<string, { name: string; component: React.ReactElement }>> = {};\n const flat: Record<string, React.ReactElement> = {};\n let firstId = '';\n\n // 1. Process known categories\n Object.entries(CATEGORY_MAP).forEach(([categoryName, componentNames]) => {\n componentNames.forEach(compName => {\n const Component = (AllTemplates as any)[compName];\n if (Component && typeof Component === 'function') {\n if (!parsedCategories[categoryName]) parsedCategories[categoryName] = {};\n \n // Automatically add spaces before Capital letters (e.g., WeeklyNewsletter -> Weekly Newsletter)\n const formattedName = compName.replace(/([A-Z])/g, ' $1').trim();\n const element = <Component />;\n \n parsedCategories[categoryName][compName] = { name: formattedName, component: element };\n flat[compName] = element;\n if (!firstId) firstId = compName;\n }\n });\n });\n\n // 2. Discover any newly added exports (Uncategorized Fallback)\n Object.entries(AllTemplates).forEach(([compName, Component]) => {\n if (\n compName === 'default' || \n flat[compName] || \n typeof Component !== 'function' ||\n /^[a-z]/.test(compName) // Ignore utility functions like renderEmailParams\n ) {\n return;\n }\n \n const categoryName = \"Uncategorized\";\n if (!parsedCategories[categoryName]) parsedCategories[categoryName] = {};\n \n const formattedName = compName.replace(/([A-Z])/g, ' $1').trim();\n const element = <Component />;\n \n parsedCategories[categoryName][compName] = { name: formattedName, component: element };\n flat[compName] = element;\n if (!firstId) firstId = compName;\n });\n\n return { categories: parsedCategories, flatTemplates: flat, defaultTemplateId: firstId };\n }, []);\n\n const [activeTemplate, setActiveTemplate] = useState(defaultTemplateId);\n\n // Keep state in sync if defaultTemplateId changes when component mounts\n React.useEffect(() => {\n if (!activeTemplate && defaultTemplateId) setActiveTemplate(defaultTemplateId);\n }, [defaultTemplateId, activeTemplate]);\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex flex-col sm:flex-row sm:items-center gap-4 mb-4\">\n <label className=\"font-medium text-gray-700 dark:text-gray-300\">Select Template:</label>\n <select \n className=\"border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-900 rounded-md px-3 py-2 text-sm text-gray-900 dark:text-white min-w-[250px] focus:outline-none focus:ring-2 focus:ring-primary-500\"\n value={activeTemplate}\n onChange={(e) => setActiveTemplate(e.target.value)}\n >\n {Object.entries(categories).map(([categoryName, templates]) => (\n <optgroup key={categoryName} label={categoryName}>\n {Object.entries(templates).map(([id, data]) => (\n <option key={id} value={id}>{data.name}</option>\n ))}\n </optgroup>\n ))}\n </select>\n </div>\n\n <div className=\"w-full bg-white dark:bg-gray-900 rounded-lg shadow-sm border border-gray-200 dark:border-gray-800\">\n <EmailPreviewer component={flatTemplates[activeTemplate] || <div className=\"p-10 text-center text-gray-500\">No template selected</div>} />\n </div>\n </div>\n );\n};"],"names":["AllTemplates","_jsx","React","_jsxs"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Button } from '../../../node_modules/@react-email/button/dist/index.js';
|
|
3
|
+
|
|
4
|
+
const EmailButton = ({ children, href }) => (jsx(Button, { href: href, className: "bg-blue-600 rounded text-white text-[15px] font-semibold no-underline text-center px-6 py-3 inline-block", children: children }));
|
|
5
|
+
|
|
6
|
+
export { EmailButton };
|
|
7
|
+
//# sourceMappingURL=EmailButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailButton.js","sources":["../../../../src/components/Email/components/EmailButton.tsx"],"sourcesContent":["import React from 'react';\nimport { Button } from '@react-email/components';\n\nexport const EmailButton = ({ children, href }: { children: React.ReactNode; href: string }) => (\n <Button \n href={href}\n className=\"bg-blue-600 rounded text-white text-[15px] font-semibold no-underline text-center px-6 py-3 inline-block\"\n >\n {children}\n </Button>\n);"],"names":["_jsx"],"mappings":";;;AAGO,MAAM,WAAW,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAA+C,MACzFA,GAAA,CAAC,MAAM,EAAA,EACL,IAAI,EAAE,IAAI,EACV,SAAS,EAAC,0GAA0G,EAAA,QAAA,EAEnH,QAAQ,EAAA,CACF;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const EmailDivider: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Hr } from '../../../node_modules/@react-email/hr/dist/index.js';
|
|
3
|
+
|
|
4
|
+
const EmailDivider = () => (jsx(Hr, { className: "border-gray-200 dark:border-gray-700 my-6" }));
|
|
5
|
+
|
|
6
|
+
export { EmailDivider };
|
|
7
|
+
//# sourceMappingURL=EmailDivider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailDivider.js","sources":["../../../../src/components/Email/components/EmailDivider.tsx"],"sourcesContent":["import React from 'react';\nimport { Hr } from '@react-email/components';\n\nexport const EmailDivider = () => (\n <Hr className=\"border-gray-200 dark:border-gray-700 my-6\" />\n);"],"names":["_jsx"],"mappings":";;;AAGO,MAAM,YAAY,GAAG,OAC1BA,GAAA,CAAC,EAAE,IAAC,SAAS,EAAC,2CAA2C,EAAA,CAAG;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Section } from '../../../node_modules/@react-email/section/dist/index.js';
|
|
3
|
+
import { Text } from '../../../node_modules/@react-email/text/dist/index.js';
|
|
4
|
+
import { Link } from '../../../node_modules/@react-email/link/dist/index.js';
|
|
5
|
+
|
|
6
|
+
const EmailFooter = ({ companyName = 'Beyond Corp' }) => (jsxs(Section, { className: "mt-8 text-center", children: [jsxs(Text, { className: "text-gray-400 dark:text-gray-500 text-xs", children: ["\u00A9 ", new Date().getFullYear(), " ", companyName, ". All rights reserved."] }), jsxs(Text, { className: "text-gray-400 dark:text-gray-500 text-xs mt-2", children: ["If you no longer wish to receive these emails, you can ", jsx(Link, { href: "#", className: "text-gray-500 dark:text-gray-400 underline", children: "unsubscribe" }), "."] })] }));
|
|
7
|
+
|
|
8
|
+
export { EmailFooter };
|
|
9
|
+
//# sourceMappingURL=EmailFooter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailFooter.js","sources":["../../../../src/components/Email/components/EmailFooter.tsx"],"sourcesContent":["import React from 'react';\nimport { Text, Section, Link } from '@react-email/components';\n\nexport const EmailFooter = ({ companyName = 'Beyond Corp' }) => (\n <Section className=\"mt-8 text-center\">\n <Text className=\"text-gray-400 dark:text-gray-500 text-xs\">\n © {new Date().getFullYear()} {companyName}. All rights reserved.\n </Text>\n <Text className=\"text-gray-400 dark:text-gray-500 text-xs mt-2\">\n If you no longer wish to receive these emails, you can <Link href=\"#\" className=\"text-gray-500 dark:text-gray-400 underline\">unsubscribe</Link>.\n </Text>\n </Section>\n);"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAGO,MAAM,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,aAAa,EAAE,MACzDA,IAAA,CAAC,OAAO,EAAA,EAAC,SAAS,EAAC,kBAAkB,EAAA,QAAA,EAAA,CACnCA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,0CAA0C,EAAA,QAAA,EAAA,CAAA,SAAA,EACrD,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAA,GAAA,EAAG,WAAW,EAAA,wBAAA,CAAA,EAAA,CACpC,EACPA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,+CAA+C,EAAA,QAAA,EAAA,CAAA,yDAAA,EACNC,GAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,GAAG,EAAC,SAAS,EAAC,4CAA4C,EAAA,QAAA,EAAA,aAAA,EAAA,CAAmB,EAAA,GAAA,CAAA,EAAA,CAC1I,CAAA,EAAA,CACC;;;;"}
|