@burdenoff/website-sdk 2026.520.4 → 2026.521.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { createContext, useMemo, useContext, useState, useCallback, useLayoutEffect, useRef, useEffect } from 'react';
3
3
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
- import { Mail, Phone, MapPin, Clock, Send } from 'lucide-react';
4
+ import { Instagram, Youtube, Facebook, Github, Linkedin, Twitter, Mail, Phone, MapPin, Clock, Send } from 'lucide-react';
5
5
  import ReCAPTCHA2 from 'react-google-recaptcha';
6
6
  import { toast } from 'sonner';
7
7
  import { Helmet } from 'react-helmet-async';
@@ -2778,6 +2778,112 @@ function UnsubscribePage({
2778
2778
  }
2779
2779
  );
2780
2780
  }
2781
+ function DiscordIcon({ className }) {
2782
+ return /* @__PURE__ */ jsx(
2783
+ "svg",
2784
+ {
2785
+ role: "img",
2786
+ viewBox: "0 0 24 24",
2787
+ fill: "currentColor",
2788
+ xmlns: "http://www.w3.org/2000/svg",
2789
+ className,
2790
+ "aria-hidden": "true",
2791
+ children: /* @__PURE__ */ jsx("path", { d: "M20.317 4.369A19.79 19.79 0 0 0 16.558 3a.075.075 0 0 0-.079.037c-.34.6-.717 1.382-.98 1.99a18.27 18.27 0 0 0-5.998 0 12.51 12.51 0 0 0-.99-1.99.077.077 0 0 0-.079-.037 19.74 19.74 0 0 0-3.76 1.369.07.07 0 0 0-.032.028C.533 8.045-.32 11.6.099 15.114a.082.082 0 0 0 .031.056 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.027 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.105 13.1 13.1 0 0 1-1.872-.892.077.077 0 0 1-.008-.128c.126-.094.252-.192.372-.291a.074.074 0 0 1 .078-.01c3.927 1.793 8.18 1.793 12.061 0a.074.074 0 0 1 .079.009c.12.099.246.198.372.292a.077.077 0 0 1-.006.127 12.3 12.3 0 0 1-1.873.892.077.077 0 0 0-.041.106c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.84 19.84 0 0 0 6.002-3.03.077.077 0 0 0 .032-.055c.5-4.063-.838-7.587-3.549-10.717a.061.061 0 0 0-.031-.028zM8.02 13.001c-1.182 0-2.157-1.085-2.157-2.419 0-1.333.956-2.418 2.157-2.418 1.21 0 2.176 1.094 2.157 2.418 0 1.334-.956 2.419-2.157 2.419zm7.974 0c-1.182 0-2.157-1.085-2.157-2.419 0-1.333.956-2.418 2.157-2.418 1.21 0 2.176 1.094 2.157 2.418 0 1.334-.946 2.419-2.157 2.419z" })
2792
+ }
2793
+ );
2794
+ }
2795
+ function PinterestIcon({ className }) {
2796
+ return /* @__PURE__ */ jsx(
2797
+ "svg",
2798
+ {
2799
+ role: "img",
2800
+ viewBox: "0 0 24 24",
2801
+ fill: "currentColor",
2802
+ xmlns: "http://www.w3.org/2000/svg",
2803
+ className,
2804
+ "aria-hidden": "true",
2805
+ children: /* @__PURE__ */ jsx("path", { d: "M12.017 0C5.396 0 .029 5.367.029 11.987c0 5.079 3.158 9.417 7.618 11.162-.105-.949-.199-2.403.041-3.439.219-.937 1.406-5.957 1.406-5.957s-.359-.72-.359-1.781c0-1.663.967-2.911 2.168-2.911 1.024 0 1.518.769 1.518 1.688 0 1.029-.653 2.567-.992 3.992-.285 1.193.6 2.165 1.775 2.165 2.128 0 3.768-2.245 3.768-5.487 0-2.861-2.063-4.869-5.008-4.869-3.41 0-5.409 2.562-5.409 5.199 0 1.033.394 2.143.889 2.741.099.12.112.225.085.345-.09.375-.293 1.199-.334 1.363-.053.225-.172.271-.401.165-1.495-.69-2.433-2.878-2.433-4.646 0-3.776 2.748-7.252 7.92-7.252 4.158 0 7.392 2.967 7.392 6.923 0 4.135-2.607 7.462-6.233 7.462-1.214 0-2.357-.629-2.75-1.378l-.748 2.853c-.271 1.043-1.002 2.35-1.492 3.146C9.57 23.812 10.763 24 12.017 24c6.624 0 11.99-5.367 11.99-11.987C24.007 5.367 18.641 0 12.017 0z" })
2806
+ }
2807
+ );
2808
+ }
2809
+ var PLATFORMS = {
2810
+ twitter: { Icon: Twitter, label: "Twitter / X", aliases: ["x"] },
2811
+ linkedin: { Icon: Linkedin, label: "LinkedIn" },
2812
+ github: { Icon: Github, label: "GitHub" },
2813
+ facebook: { Icon: Facebook, label: "Facebook" },
2814
+ youtube: { Icon: Youtube, label: "YouTube" },
2815
+ instagram: { Icon: Instagram, label: "Instagram" },
2816
+ discord: { Icon: DiscordIcon, label: "Discord" },
2817
+ pinterest: { Icon: PinterestIcon, label: "Pinterest" }
2818
+ };
2819
+ var KEY_TO_PLATFORM = (() => {
2820
+ const map = {};
2821
+ for (const [key, def] of Object.entries(PLATFORMS)) {
2822
+ map[key] = key;
2823
+ for (const alias of def.aliases ?? []) {
2824
+ map[alias] = key;
2825
+ }
2826
+ }
2827
+ return map;
2828
+ })();
2829
+ var DEFAULT_ITEM_CLASS = "text-muted-foreground hover:text-foreground transition-colors";
2830
+ function isSafeUrl(value) {
2831
+ const trimmed = value.trim();
2832
+ if (/^[/?#]/.test(trimmed)) return true;
2833
+ return /^(https?:|mailto:|tel:)/i.test(trimmed);
2834
+ }
2835
+ function SocialLinks({
2836
+ links: linksProp,
2837
+ email: emailProp,
2838
+ platforms: platformAllow,
2839
+ showEmail,
2840
+ iconClassName = "h-5 w-5",
2841
+ itemClassName = DEFAULT_ITEM_CLASS,
2842
+ className = "flex space-x-4"
2843
+ }) {
2844
+ const { product } = useProduct();
2845
+ const links = linksProp ?? product?.socialLinks ?? {};
2846
+ const email = emailProp !== void 0 ? emailProp : product?.contactEmail ?? null;
2847
+ const resolved = /* @__PURE__ */ new Map();
2848
+ for (const [rawKey, url] of Object.entries(links)) {
2849
+ if (!url || typeof url !== "string") continue;
2850
+ if (!isSafeUrl(url)) continue;
2851
+ const platform = KEY_TO_PLATFORM[rawKey.toLowerCase()];
2852
+ if (!platform) continue;
2853
+ resolved.set(platform, url);
2854
+ }
2855
+ const orderedPlatforms = platformAllow ? platformAllow.filter((p) => resolved.has(p)) : Array.from(resolved.keys());
2856
+ const wantEmail = (showEmail ?? !!email) && !!email;
2857
+ if (orderedPlatforms.length === 0 && !wantEmail) return null;
2858
+ return /* @__PURE__ */ jsxs("div", { className, children: [
2859
+ orderedPlatforms.map((platform) => {
2860
+ const { Icon, label } = PLATFORMS[platform];
2861
+ const url = resolved.get(platform);
2862
+ return /* @__PURE__ */ jsx(
2863
+ "a",
2864
+ {
2865
+ href: url,
2866
+ target: "_blank",
2867
+ rel: "noopener noreferrer",
2868
+ "aria-label": label,
2869
+ className: itemClassName,
2870
+ children: /* @__PURE__ */ jsx(Icon, { className: iconClassName })
2871
+ },
2872
+ platform
2873
+ );
2874
+ }),
2875
+ wantEmail && /* @__PURE__ */ jsx(
2876
+ "a",
2877
+ {
2878
+ href: `mailto:${email}`,
2879
+ "aria-label": "Email",
2880
+ className: itemClassName,
2881
+ children: /* @__PURE__ */ jsx(Mail, { className: iconClassName })
2882
+ },
2883
+ "email"
2884
+ )
2885
+ ] });
2886
+ }
2781
2887
  function RybbitAnalytics({
2782
2888
  siteId,
2783
2889
  scriptUrl = "https://analytics.burdenoff.com/api/script.js",
@@ -3993,6 +4099,6 @@ function PressKitPage(props) {
3993
4099
  ] });
3994
4100
  }
3995
4101
 
3996
- export { BlogListPage, BlogPostPage, Button, ContactPage, ContentRenderer, DEFAULT_CONTACT_CATEGORIES, Input, Label, NewsletterForm, NewsletterPage, PageHead, PressKitPage, PricingPage, PricingSection, ProductProvider, RybbitAnalytics, Select, Textarea, UnsubscribePage, WaitlistForm, WaitlistPage, WebSDKClient, WebSDKProvider, buttonVariants, cn, useContentPage, useContentPages, useProduct, useProductConfig, useWebSDK, useWebSDKConfig };
4102
+ export { BlogListPage, BlogPostPage, Button, ContactPage, ContentRenderer, DEFAULT_CONTACT_CATEGORIES, Input, Label, NewsletterForm, NewsletterPage, PageHead, PressKitPage, PricingPage, PricingSection, ProductProvider, RybbitAnalytics, Select, SocialLinks, Textarea, UnsubscribePage, WaitlistForm, WaitlistPage, WebSDKClient, WebSDKProvider, buttonVariants, cn, useContentPage, useContentPages, useProduct, useProductConfig, useWebSDK, useWebSDKConfig };
3997
4103
  //# sourceMappingURL=index.mjs.map
3998
4104
  //# sourceMappingURL=index.mjs.map