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