@burdenoff/website-sdk 2026.517.6 → 2026.518.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
@@ -1597,10 +1597,9 @@ function PricingSection(props) {
1597
1597
  async function loadPlans() {
1598
1598
  try {
1599
1599
  setLoading(true);
1600
- const response = await client.query(
1601
- GET_PLANS_QUERY,
1602
- { productId: resolvedProductId }
1603
- );
1600
+ const response = await client.query(GET_PLANS_QUERY, {
1601
+ productId: resolvedProductId
1602
+ });
1604
1603
  if (cancelled) return;
1605
1604
  if (response.errors && response.errors.length > 0) {
1606
1605
  throw new Error(response.errors[0].message);
@@ -1626,9 +1625,7 @@ function PricingSection(props) {
1626
1625
  cancelled = true;
1627
1626
  };
1628
1627
  }, [client, resolvedProductId]);
1629
- const individualAllPlans = allPlans.filter(
1630
- (p) => !isEnterprisePlan(p.name)
1631
- );
1628
+ const individualAllPlans = allPlans.filter((p) => !isEnterprisePlan(p.name));
1632
1629
  const enterpriseApiPlans = allPlans.filter((p) => isEnterprisePlan(p.name));
1633
1630
  const individualPlans = individualAllPlans.filter(
1634
1631
  (plan) => billingCycle === "monthly" ? plan.duration === "monthly" : plan.duration === "yearly"
@@ -3264,17 +3261,309 @@ function BlogPostPage(props) {
3264
3261
  className: "w-full h-full object-cover"
3265
3262
  }
3266
3263
  ) }),
3267
- /* @__PURE__ */ jsx("div", { className: "prose prose-gray dark:prose-invert max-w-none", children: /* @__PURE__ */ jsx(
3268
- ContentRenderer,
3269
- {
3270
- content: post.content,
3271
- format: post.contentFormat
3272
- }
3273
- ) })
3264
+ /* @__PURE__ */ jsx("div", { className: "prose prose-gray dark:prose-invert max-w-none", children: /* @__PURE__ */ jsx(ContentRenderer, { content: post.content, format: post.contentFormat }) })
3274
3265
  ] })
3275
3266
  ] });
3276
3267
  }
3268
+ var PRESS_KIT_QUERY = `
3269
+ query PublicPressKit($productId: String!, $limit: Int, $offset: Int) {
3270
+ publicPressKitAssets(productId: $productId, limit: $limit, offset: $offset) {
3271
+ items {
3272
+ id
3273
+ category
3274
+ title
3275
+ slug
3276
+ description
3277
+ fileUrl
3278
+ fileName
3279
+ fileSize
3280
+ mimeType
3281
+ thumbnailUrl
3282
+ version
3283
+ tags
3284
+ sortOrder
3285
+ updatedAt
3286
+ }
3287
+ total
3288
+ hasMore
3289
+ }
3290
+ }
3291
+ `;
3292
+ var CATEGORY_ORDER = [
3293
+ "LOGO",
3294
+ "BANNER",
3295
+ "SCREENSHOT",
3296
+ "BRAND_GUIDE",
3297
+ "BROCHURE",
3298
+ "DOCUMENT",
3299
+ "PRESS_RELEASE"
3300
+ ];
3301
+ var CATEGORY_LABELS = {
3302
+ LOGO: "Logos",
3303
+ BANNER: "Banners",
3304
+ SCREENSHOT: "Screenshots",
3305
+ BRAND_GUIDE: "Brand Guides",
3306
+ BROCHURE: "Brochures",
3307
+ DOCUMENT: "Documents",
3308
+ PRESS_RELEASE: "Press Releases"
3309
+ };
3310
+ function formatBytes(bytes) {
3311
+ if (bytes == null) return "";
3312
+ if (bytes < 1024) return `${bytes} B`;
3313
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(0)} KB`;
3314
+ return `${(bytes / 1024 / 1024).toFixed(1)} MB`;
3315
+ }
3316
+ function AssetCard({ asset }) {
3317
+ const date = asset.updatedAt ? new Date(asset.updatedAt).toLocaleDateString("en-US", {
3318
+ year: "numeric",
3319
+ month: "short",
3320
+ day: "numeric"
3321
+ }) : "";
3322
+ const ext = (asset.mimeType || "file").split("/").pop()?.toUpperCase() || "FILE";
3323
+ const size = formatBytes(asset.fileSize);
3324
+ return /* @__PURE__ */ jsxs("div", { className: "group flex flex-col bg-card border rounded-xl overflow-hidden hover:shadow-lg hover:border-primary/30 transition-all duration-300", children: [
3325
+ asset.thumbnailUrl ? /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] overflow-hidden bg-muted/30", children: /* @__PURE__ */ jsx(
3326
+ "img",
3327
+ {
3328
+ src: asset.thumbnailUrl,
3329
+ alt: asset.title,
3330
+ className: "w-full h-full object-contain group-hover:scale-105 transition-transform duration-300",
3331
+ loading: "lazy"
3332
+ }
3333
+ ) }) : /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] bg-muted/50 flex items-center justify-center", children: /* @__PURE__ */ jsx(
3334
+ "svg",
3335
+ {
3336
+ className: "w-12 h-12 text-muted-foreground/20",
3337
+ fill: "none",
3338
+ viewBox: "0 0 24 24",
3339
+ stroke: "currentColor",
3340
+ children: /* @__PURE__ */ jsx(
3341
+ "path",
3342
+ {
3343
+ strokeLinecap: "round",
3344
+ strokeLinejoin: "round",
3345
+ strokeWidth: 1.5,
3346
+ d: "M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z"
3347
+ }
3348
+ )
3349
+ }
3350
+ ) }),
3351
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col flex-1 p-5", children: [
3352
+ /* @__PURE__ */ jsx("span", { className: "inline-block self-start text-xs font-medium text-primary bg-primary/10 px-2.5 py-1 rounded-full mb-3", children: CATEGORY_LABELS[asset.category] ?? asset.category }),
3353
+ /* @__PURE__ */ jsx("h3", { className: "text-base font-semibold text-foreground mb-1 line-clamp-2", children: asset.title }),
3354
+ asset.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mb-3 line-clamp-2", children: asset.description }),
3355
+ /* @__PURE__ */ jsxs("div", { className: "mt-auto flex items-center justify-between pt-3", children: [
3356
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground", children: [
3357
+ /* @__PURE__ */ jsx("span", { className: "font-medium", children: ext }),
3358
+ size && /* @__PURE__ */ jsxs(Fragment, { children: [
3359
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground/40", children: "\xB7" }),
3360
+ /* @__PURE__ */ jsx("span", { children: size })
3361
+ ] }),
3362
+ date && /* @__PURE__ */ jsxs(Fragment, { children: [
3363
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground/40", children: "\xB7" }),
3364
+ /* @__PURE__ */ jsx("span", { children: date })
3365
+ ] })
3366
+ ] }),
3367
+ /* @__PURE__ */ jsxs(
3368
+ "a",
3369
+ {
3370
+ href: asset.fileUrl,
3371
+ target: "_blank",
3372
+ rel: "noopener noreferrer",
3373
+ download: true,
3374
+ className: "inline-flex items-center gap-1.5 text-sm font-medium text-primary hover:underline",
3375
+ children: [
3376
+ /* @__PURE__ */ jsx(
3377
+ "svg",
3378
+ {
3379
+ className: "w-4 h-4",
3380
+ fill: "none",
3381
+ viewBox: "0 0 24 24",
3382
+ stroke: "currentColor",
3383
+ strokeWidth: 2,
3384
+ children: /* @__PURE__ */ jsx(
3385
+ "path",
3386
+ {
3387
+ strokeLinecap: "round",
3388
+ strokeLinejoin: "round",
3389
+ d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
3390
+ }
3391
+ )
3392
+ }
3393
+ ),
3394
+ "Download"
3395
+ ]
3396
+ }
3397
+ )
3398
+ ] })
3399
+ ] })
3400
+ ] });
3401
+ }
3402
+ function PressKitPage(props) {
3403
+ const {
3404
+ productName,
3405
+ heroTitle = "Press & Media Kit",
3406
+ heroSubtitle = "Official logos, brand assets, and media resources. Everything you need to write about us.",
3407
+ mediaContactEmail,
3408
+ brandKitUrl,
3409
+ className = "",
3410
+ seoTitle,
3411
+ seoDescription,
3412
+ seoKeywords
3413
+ } = props;
3414
+ const client = useWebSDK();
3415
+ const config = useWebSDKConfig();
3416
+ const { product } = useProduct();
3417
+ const resolvedProductId = product?.id || config.productId;
3418
+ const contactEmail = mediaContactEmail || product?.contactEmail || void 0;
3419
+ const [assets, setAssets] = useState([]);
3420
+ const [loading, setLoading] = useState(true);
3421
+ const [error, setError] = useState(null);
3422
+ const [activeCategory, setActiveCategory] = useState("ALL");
3423
+ const fetchAssets = useCallback(async () => {
3424
+ if (!resolvedProductId) {
3425
+ setLoading(false);
3426
+ return;
3427
+ }
3428
+ setLoading(true);
3429
+ try {
3430
+ const PAGE_SIZE = 100;
3431
+ const all = [];
3432
+ let offset = 0;
3433
+ for (; ; ) {
3434
+ const result = await client.query(PRESS_KIT_QUERY, {
3435
+ productId: resolvedProductId,
3436
+ limit: PAGE_SIZE,
3437
+ offset
3438
+ });
3439
+ if (result.errors?.length) {
3440
+ setError(result.errors[0]?.message ?? "Failed to load press kit");
3441
+ return;
3442
+ }
3443
+ const page = result.data?.publicPressKitAssets;
3444
+ const items = page?.items || [];
3445
+ all.push(...items);
3446
+ if (!page?.hasMore || items.length === 0) break;
3447
+ offset += PAGE_SIZE;
3448
+ }
3449
+ setAssets(all);
3450
+ setError(null);
3451
+ } catch {
3452
+ setError("Failed to load press kit");
3453
+ } finally {
3454
+ setLoading(false);
3455
+ }
3456
+ }, [client, resolvedProductId]);
3457
+ useEffect(() => {
3458
+ fetchAssets();
3459
+ }, [fetchAssets]);
3460
+ const presentCategories = CATEGORY_ORDER.filter(
3461
+ (c) => assets.some((a) => a.category === c)
3462
+ );
3463
+ const visibleAssets = activeCategory === "ALL" ? assets : assets.filter((a) => a.category === activeCategory);
3464
+ const grouped = (activeCategory === "ALL" ? presentCategories : [activeCategory]).map((cat) => ({
3465
+ cat,
3466
+ items: visibleAssets.filter((a) => a.category === cat).sort((a, b) => a.sortOrder - b.sortOrder)
3467
+ })).filter((g) => g.items.length > 0);
3468
+ return /* @__PURE__ */ jsxs("div", { className: `w-full ${className}`, children: [
3469
+ seoTitle && /* @__PURE__ */ jsx(
3470
+ PageHead,
3471
+ {
3472
+ title: seoTitle,
3473
+ description: seoDescription || heroSubtitle,
3474
+ productName,
3475
+ keywords: seoKeywords
3476
+ }
3477
+ ),
3478
+ /* @__PURE__ */ jsx("section", { className: "py-16 sm:py-20 md:py-24", children: /* @__PURE__ */ jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxs("div", { className: "text-center max-w-3xl mx-auto", children: [
3479
+ /* @__PURE__ */ jsx("h1", { className: "text-3xl sm:text-4xl md:text-5xl font-bold tracking-tight text-foreground", children: heroTitle }),
3480
+ /* @__PURE__ */ jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: heroSubtitle }),
3481
+ (brandKitUrl || contactEmail) && /* @__PURE__ */ jsxs("div", { className: "mt-8 flex flex-wrap items-center justify-center gap-4", children: [
3482
+ brandKitUrl && /* @__PURE__ */ jsx(
3483
+ "a",
3484
+ {
3485
+ href: brandKitUrl,
3486
+ target: "_blank",
3487
+ rel: "noopener noreferrer",
3488
+ className: "inline-flex items-center gap-2 px-6 py-3 rounded-lg bg-primary text-primary-foreground font-medium hover:opacity-90 transition-opacity",
3489
+ children: "Download brand kit"
3490
+ }
3491
+ ),
3492
+ contactEmail && /* @__PURE__ */ jsx(
3493
+ "a",
3494
+ {
3495
+ href: `mailto:${contactEmail}`,
3496
+ className: "inline-flex items-center gap-2 px-6 py-3 rounded-lg border font-medium text-foreground hover:bg-muted transition-colors",
3497
+ children: "Media inquiries"
3498
+ }
3499
+ )
3500
+ ] })
3501
+ ] }) }) }),
3502
+ /* @__PURE__ */ jsx("section", { className: "pb-16 sm:pb-20", children: /* @__PURE__ */ jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: loading ? /* @__PURE__ */ jsx("div", { className: "grid sm:grid-cols-2 lg:grid-cols-3 gap-6", children: [1, 2, 3, 4, 5, 6].map((i) => /* @__PURE__ */ jsxs(
3503
+ "div",
3504
+ {
3505
+ className: "bg-card border rounded-xl overflow-hidden animate-pulse",
3506
+ children: [
3507
+ /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] bg-muted" }),
3508
+ /* @__PURE__ */ jsxs("div", { className: "p-5 space-y-3", children: [
3509
+ /* @__PURE__ */ jsx("div", { className: "h-4 bg-muted rounded w-1/4" }),
3510
+ /* @__PURE__ */ jsx("div", { className: "h-5 bg-muted rounded w-3/4" }),
3511
+ /* @__PURE__ */ jsx("div", { className: "h-4 bg-muted rounded w-1/2" })
3512
+ ] })
3513
+ ]
3514
+ },
3515
+ i
3516
+ )) }) : error ? /* @__PURE__ */ jsx("div", { className: "text-center py-12", children: /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: error }) }) : assets.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-center py-12", children: /* @__PURE__ */ jsxs("p", { className: "text-muted-foreground", children: [
3517
+ "Press materials are coming soon. For media inquiries",
3518
+ contactEmail ? /* @__PURE__ */ jsxs(Fragment, { children: [
3519
+ ", contact ",
3520
+ /* @__PURE__ */ jsx(
3521
+ "a",
3522
+ {
3523
+ href: `mailto:${contactEmail}`,
3524
+ className: "text-primary hover:underline",
3525
+ children: contactEmail
3526
+ }
3527
+ )
3528
+ ] }) : " please reach out to our team",
3529
+ "."
3530
+ ] }) }) : /* @__PURE__ */ jsxs(Fragment, { children: [
3531
+ presentCategories.length > 1 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2 mb-10 justify-center", children: ["ALL", ...presentCategories].map((c) => {
3532
+ const active = activeCategory === c;
3533
+ return /* @__PURE__ */ jsx(
3534
+ "button",
3535
+ {
3536
+ type: "button",
3537
+ onClick: () => setActiveCategory(c),
3538
+ className: `px-4 py-2 rounded-full text-sm font-medium transition-colors ${active ? "bg-primary text-primary-foreground" : "bg-muted text-muted-foreground hover:text-foreground"}`,
3539
+ children: c === "ALL" ? "All" : CATEGORY_LABELS[c] ?? c
3540
+ },
3541
+ c
3542
+ );
3543
+ }) }),
3544
+ grouped.map((group) => /* @__PURE__ */ jsxs("div", { className: "mb-12", children: [
3545
+ /* @__PURE__ */ jsx("h2", { className: "text-xl font-semibold text-foreground mb-5", children: CATEGORY_LABELS[group.cat] ?? group.cat }),
3546
+ /* @__PURE__ */ jsx("div", { className: "grid sm:grid-cols-2 lg:grid-cols-3 gap-6", children: group.items.map((a) => /* @__PURE__ */ jsx(AssetCard, { asset: a }, a.id)) })
3547
+ ] }, group.cat)),
3548
+ contactEmail && /* @__PURE__ */ jsxs("div", { className: "mt-8 border-t pt-10 text-center", children: [
3549
+ /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold text-foreground mb-2", children: "Media Contact" }),
3550
+ /* @__PURE__ */ jsxs("p", { className: "text-muted-foreground", children: [
3551
+ "For interviews, partnerships, and press inquiries:",
3552
+ " ",
3553
+ /* @__PURE__ */ jsx(
3554
+ "a",
3555
+ {
3556
+ href: `mailto:${contactEmail}`,
3557
+ className: "text-primary hover:underline",
3558
+ children: contactEmail
3559
+ }
3560
+ )
3561
+ ] })
3562
+ ] })
3563
+ ] }) }) })
3564
+ ] });
3565
+ }
3277
3566
 
3278
- export { BlogListPage, BlogPostPage, Button, ContactPage, ContentRenderer, Input, Label, NewsletterForm, NewsletterPage, PageHead, PricingPage, PricingSection, ProductProvider, RybbitAnalytics, Textarea, UnsubscribePage, WaitlistForm, WaitlistPage, WebSDKClient, WebSDKProvider, buttonVariants, cn, useContentPage, useContentPages, useProduct, useProductConfig, useWebSDK, useWebSDKConfig };
3567
+ export { BlogListPage, BlogPostPage, Button, ContactPage, ContentRenderer, Input, Label, NewsletterForm, NewsletterPage, PageHead, PressKitPage, PricingPage, PricingSection, ProductProvider, RybbitAnalytics, Textarea, UnsubscribePage, WaitlistForm, WaitlistPage, WebSDKClient, WebSDKProvider, buttonVariants, cn, useContentPage, useContentPages, useProduct, useProductConfig, useWebSDK, useWebSDKConfig };
3279
3568
  //# sourceMappingURL=index.mjs.map
3280
3569
  //# sourceMappingURL=index.mjs.map