@burdenoff/website-sdk 2026.802.1 → 2026.7203.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/index.mjs CHANGED
@@ -2484,7 +2484,6 @@ var GET_PLANS_QUERY = `
2484
2484
  features {
2485
2485
  id
2486
2486
  quotaId
2487
- context
2488
2487
  quota {
2489
2488
  id
2490
2489
  name
@@ -2524,35 +2523,6 @@ function isEnterprisePlan(planName) {
2524
2523
  const name = planName.toLowerCase();
2525
2524
  return name.includes("team") || name.includes("business") || name.includes("enterprise");
2526
2525
  }
2527
- function isEnterpriseAudiencePlan(plan) {
2528
- if (!isEnterprisePlan(plan.name)) {
2529
- return false;
2530
- }
2531
- if (typeof plan.priceRaw === "number") {
2532
- return plan.priceRaw === 0;
2533
- }
2534
- return true;
2535
- }
2536
- function splitPlansByAudience(plans, showAudienceTabs) {
2537
- if (!showAudienceTabs) {
2538
- return { individualPlans: plans, enterprisePlans: [] };
2539
- }
2540
- return {
2541
- individualPlans: plans.filter((p) => !isEnterpriseAudiencePlan(p)),
2542
- enterprisePlans: plans.filter((p) => isEnterpriseAudiencePlan(p))
2543
- };
2544
- }
2545
- function resolveEnterprisePlans(apiEnterprisePlans, staticEnterprisePlans, defaultEnterpriseCard) {
2546
- const staticPlans = staticEnterprisePlans || [];
2547
- if (apiEnterprisePlans.length === 0 && staticPlans.length === 0) {
2548
- return [defaultEnterpriseCard];
2549
- }
2550
- const apiNames = new Set(apiEnterprisePlans.map((p) => p.name.toLowerCase()));
2551
- const dedupedStaticPlans = staticPlans.filter(
2552
- (p) => !apiNames.has(p.name.toLowerCase())
2553
- );
2554
- return [...apiEnterprisePlans, ...dedupedStaticPlans];
2555
- }
2556
2526
  function detectPlanTier(planName) {
2557
2527
  const name = planName.toLowerCase();
2558
2528
  if (name.includes("free") || name.includes("basic") || name.includes("starter") || name.includes("hobby")) {
@@ -2567,7 +2537,7 @@ function detectPlanTier(planName) {
2567
2537
  function getFallbackFeaturesForTier(tier, fallbackFeatures) {
2568
2538
  return [...fallbackFeatures?.[tier] || []];
2569
2539
  }
2570
- function getMetadataForPlan(planName, priceRaw, planMetadata) {
2540
+ function getMetadataForPlan(planName, planMetadata) {
2571
2541
  const normalizedName = planName.toLowerCase();
2572
2542
  if (planMetadata?.[normalizedName]) {
2573
2543
  const meta = planMetadata[normalizedName];
@@ -2583,17 +2553,6 @@ function getMetadataForPlan(planName, priceRaw, planMetadata) {
2583
2553
  }
2584
2554
  const tier = detectPlanTier(planName);
2585
2555
  if (tier) {
2586
- const isPaidEnterpriseName = tier === "enterprise" && typeof priceRaw === "number" && priceRaw > 0;
2587
- if (isPaidEnterpriseName) {
2588
- return {
2589
- tier: "professional",
2590
- displayName: planName,
2591
- defaultDescription: "Choose this plan",
2592
- popular: false,
2593
- ctaText: "Get Started",
2594
- ctaType: "signup"
2595
- };
2596
- }
2597
2556
  return {
2598
2557
  tier,
2599
2558
  displayName: planName,
@@ -2617,27 +2576,27 @@ function humanizeQuotaName(name) {
2617
2576
  const resource = parts.length >= 3 ? parts[parts.length - 2] : parts[parts.length - 1];
2618
2577
  return resource.replace(/[-_]/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
2619
2578
  }
2620
- function transformFeatureToLabel(feature) {
2621
- const quota = feature.quota;
2622
- if (!quota) return "";
2579
+ function transformQuotaToFeature(quota) {
2623
2580
  const { name, limits } = quota;
2624
- const featureContext = feature.context && typeof feature.context === "object" ? feature.context : null;
2625
- const limitsObj = limits && typeof limits === "object" ? limits : null;
2626
- const value = typeof featureContext?.quantity === "number" ? featureContext.quantity : typeof limitsObj?.value === "number" ? limitsObj.value : void 0;
2627
- const unit = typeof featureContext?.unit === "string" && featureContext.unit || typeof limitsObj?.unit === "string" && limitsObj.unit || void 0;
2628
- const description = typeof featureContext?.description === "string" && featureContext.description || typeof limitsObj?.description === "string" && limitsObj.description || void 0;
2629
- const type = limitsObj?.type;
2630
- if (description) {
2581
+ if (!limits || typeof limits !== "object") {
2582
+ return humanizeQuotaName(name);
2583
+ }
2584
+ const limitsObj = limits;
2585
+ const value = limitsObj.value;
2586
+ const unit = limitsObj.unit;
2587
+ const type = limitsObj.type;
2588
+ const description = limitsObj.description;
2589
+ if (typeof description === "string" && description) {
2631
2590
  if (type === "number" && typeof value === "number") {
2632
2591
  return `${value.toLocaleString()} ${description}`;
2633
2592
  }
2634
2593
  return description;
2635
2594
  }
2636
- if (unit) {
2595
+ if (typeof unit === "string" && unit) {
2637
2596
  if (typeof value === "number") {
2638
2597
  return `${value.toLocaleString()} ${unit}`;
2639
2598
  }
2640
- return unit;
2599
+ return `${unit}`;
2641
2600
  }
2642
2601
  const label = humanizeQuotaName(name);
2643
2602
  if (type === "boolean") {
@@ -2656,18 +2615,14 @@ function extractDisplayFeatures(features, planName, fallbackFeatures) {
2656
2615
  return tierFeatures;
2657
2616
  }
2658
2617
  }
2659
- const quotaFeatures = features.filter((f) => f.quota).map((f) => transformFeatureToLabel(f));
2618
+ const quotaFeatures = features.filter((f) => f.quota).map((f) => transformQuotaToFeature(f.quota));
2660
2619
  if (quotaFeatures.length > 0) {
2661
2620
  return quotaFeatures;
2662
2621
  }
2663
2622
  return [];
2664
2623
  }
2665
2624
  function transformToDisplayCard(plan, props) {
2666
- const metadata = getMetadataForPlan(
2667
- plan.name,
2668
- plan.price,
2669
- props.planMetadata
2670
- );
2625
+ const metadata = getMetadataForPlan(plan.name, props.planMetadata);
2671
2626
  const formattedPrice = formatPrice(
2672
2627
  plan.price,
2673
2628
  plan.currency,
@@ -2748,10 +2703,8 @@ function PricingSection(props) {
2748
2703
  cancelled = true;
2749
2704
  };
2750
2705
  }, [client, resolvedProductId]);
2751
- const {
2752
- individualPlans: individualAllPlans,
2753
- enterprisePlans: enterpriseApiPlans
2754
- } = splitPlansByAudience(allPlans, props.showAudienceTabs);
2706
+ const individualAllPlans = allPlans.filter((p) => !isEnterprisePlan(p.name));
2707
+ const enterpriseApiPlans = allPlans.filter((p) => isEnterprisePlan(p.name));
2755
2708
  const individualPlans = individualAllPlans.filter(
2756
2709
  (plan) => billingCycle === "monthly" ? plan.duration === "monthly" : plan.duration === "yearly"
2757
2710
  );
@@ -2767,6 +2720,7 @@ function PricingSection(props) {
2767
2720
  }
2768
2721
  return p;
2769
2722
  });
2723
+ const hasApiEnterprisePlans = enterpriseCards.length > 0;
2770
2724
  const defaultEnterpriseCard = {
2771
2725
  name: "Enterprise",
2772
2726
  subtitle: "For organizations that need more",
@@ -2787,11 +2741,7 @@ function PricingSection(props) {
2787
2741
  "Self-hosted option"
2788
2742
  ]
2789
2743
  };
2790
- const resolvedEnterprisePlans = resolveEnterprisePlans(
2791
- enterpriseCards,
2792
- props.enterprisePlans,
2793
- defaultEnterpriseCard
2794
- );
2744
+ const resolvedEnterprisePlans = hasApiEnterprisePlans ? enterpriseCards : props.enterprisePlans ? props.enterprisePlans : [defaultEnterpriseCard];
2795
2745
  const plans = props.showAudienceTabs && audience === "enterprise" ? [] : individualPlans;
2796
2746
  if (loading) {
2797
2747
  return /* @__PURE__ */ jsx("section", { id, className: `py-12 sm:py-16 md:py-20 ${className}`, children: /* @__PURE__ */ jsxs("div", { className: "container mx-auto px-4 sm:px-6", children: [
@@ -4372,182 +4322,6 @@ function RybbitAnalytics({
4372
4322
  }, [siteId, scriptUrl, enabled]);
4373
4323
  return null;
4374
4324
  }
4375
- var PROSE_CSS = `
4376
- .boff-prose {
4377
- max-width: none;
4378
- }
4379
-
4380
- .boff-prose h1 {
4381
- font-size: 2.25rem;
4382
- font-weight: 800;
4383
- line-height: 1.2;
4384
- margin-top: 0;
4385
- margin-bottom: 1rem;
4386
- color: hsl(var(--foreground));
4387
- }
4388
-
4389
- .boff-prose h2 {
4390
- font-size: 1.75rem;
4391
- font-weight: 700;
4392
- line-height: 1.3;
4393
- margin-top: 2rem;
4394
- margin-bottom: 1rem;
4395
- color: hsl(var(--foreground));
4396
- }
4397
-
4398
- .boff-prose h3 {
4399
- font-size: 1.5rem;
4400
- font-weight: 600;
4401
- line-height: 1.4;
4402
- margin-top: 1.5rem;
4403
- margin-bottom: 0.75rem;
4404
- color: hsl(var(--foreground));
4405
- }
4406
-
4407
- .boff-prose h4 {
4408
- font-size: 1.25rem;
4409
- font-weight: 600;
4410
- line-height: 1.5;
4411
- margin-top: 1.25rem;
4412
- margin-bottom: 0.5rem;
4413
- color: hsl(var(--foreground));
4414
- }
4415
-
4416
- .boff-prose p {
4417
- margin-bottom: 1rem;
4418
- line-height: 1.75;
4419
- color: hsl(var(--foreground));
4420
- }
4421
-
4422
- .boff-prose ul,
4423
- .boff-prose ol {
4424
- margin-bottom: 1rem;
4425
- padding-left: 1.5rem;
4426
- }
4427
-
4428
- .boff-prose ul {
4429
- list-style-type: disc;
4430
- }
4431
-
4432
- .boff-prose ol {
4433
- list-style-type: decimal;
4434
- }
4435
-
4436
- .boff-prose li {
4437
- margin-bottom: 0.25rem;
4438
- line-height: 1.75;
4439
- color: hsl(var(--foreground));
4440
- }
4441
-
4442
- .boff-prose li > ul,
4443
- .boff-prose li > ol {
4444
- margin-top: 0.25rem;
4445
- margin-bottom: 0.25rem;
4446
- }
4447
-
4448
- .boff-prose a {
4449
- color: hsl(var(--primary));
4450
- text-decoration: underline;
4451
- text-underline-offset: 2px;
4452
- }
4453
-
4454
- .boff-prose a:hover {
4455
- opacity: 0.8;
4456
- }
4457
-
4458
- .boff-prose hr {
4459
- border: none;
4460
- height: 1px;
4461
- background-color: hsl(var(--border));
4462
- margin: 2rem 0;
4463
- }
4464
-
4465
- .boff-prose blockquote {
4466
- border-left: 4px solid hsl(var(--border));
4467
- padding-left: 1rem;
4468
- margin: 1.5rem 0;
4469
- font-style: italic;
4470
- color: hsl(var(--muted-foreground));
4471
- }
4472
-
4473
- .boff-prose strong {
4474
- font-weight: 700;
4475
- color: hsl(var(--foreground));
4476
- }
4477
-
4478
- .boff-prose code {
4479
- background-color: hsl(var(--muted));
4480
- padding: 0.125rem 0.25rem;
4481
- border-radius: 0.25rem;
4482
- font-size: 0.875em;
4483
- font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
4484
- }
4485
-
4486
- .boff-prose pre {
4487
- background-color: hsl(var(--muted));
4488
- padding: 1rem;
4489
- border-radius: 0.5rem;
4490
- overflow-x: auto;
4491
- margin-bottom: 1rem;
4492
- }
4493
-
4494
- .boff-prose pre code {
4495
- background-color: transparent;
4496
- padding: 0;
4497
- }
4498
-
4499
- .boff-prose img {
4500
- max-width: 100%;
4501
- height: auto;
4502
- }
4503
-
4504
- .boff-prose table {
4505
- width: 100%;
4506
- border-collapse: collapse;
4507
- margin-bottom: 1rem;
4508
- }
4509
-
4510
- .boff-prose th,
4511
- .boff-prose td {
4512
- border: 1px solid hsl(var(--border));
4513
- padding: 0.5rem;
4514
- text-align: left;
4515
- }
4516
-
4517
- .boff-prose th {
4518
- font-weight: 600;
4519
- background-color: hsl(var(--muted));
4520
- }
4521
-
4522
- /* Smaller variant used inside cards and compact panels */
4523
- .boff-prose-sm {
4524
- font-size: 0.875rem;
4525
- }
4526
-
4527
- .boff-prose-sm h1 {
4528
- font-size: 1.75rem;
4529
- }
4530
-
4531
- .boff-prose-sm h2 {
4532
- font-size: 1.5rem;
4533
- }
4534
-
4535
- .boff-prose-sm h3 {
4536
- font-size: 1.25rem;
4537
- }
4538
-
4539
- .boff-prose-sm h4 {
4540
- font-size: 1.125rem;
4541
- }
4542
-
4543
- .boff-prose-sm p,
4544
- .boff-prose-sm li {
4545
- line-height: 1.625;
4546
- }
4547
- `;
4548
- function ProseStyles() {
4549
- return /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: PROSE_CSS } });
4550
- }
4551
4325
  var BLOG_POSTS_QUERY = `
4552
4326
  query BlogPosts($productId: String!, $limit: Int, $offset: Int) {
4553
4327
  publicContentPages(productId: $productId, limit: $limit, offset: $offset) {
@@ -4717,8 +4491,7 @@ function BlogListPage(props) {
4717
4491
  title: seoTitle,
4718
4492
  description: seoDescription || heroSubtitle,
4719
4493
  productName,
4720
- keywords: seoKeywords,
4721
- url: typeof window !== "undefined" ? window.location.origin + window.location.pathname : void 0
4494
+ keywords: seoKeywords
4722
4495
  }
4723
4496
  ),
4724
4497
  /* @__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: [
@@ -4850,16 +4623,13 @@ function BlogPostPage(props) {
4850
4623
  day: "numeric"
4851
4624
  }) : "";
4852
4625
  return /* @__PURE__ */ jsxs("div", { className: `w-full ${className}`, children: [
4853
- /* @__PURE__ */ jsx(ProseStyles, {}),
4854
4626
  /* @__PURE__ */ jsx(
4855
4627
  PageHead,
4856
4628
  {
4857
4629
  title: post.seoTitle || post.title,
4858
4630
  description: post.seoDescription || post.excerpt || "",
4859
4631
  productName,
4860
- keywords: post.seoKeywords || "",
4861
- image: post.thumbnail || void 0,
4862
- url: typeof window !== "undefined" ? window.location.origin + window.location.pathname : void 0
4632
+ keywords: post.seoKeywords || ""
4863
4633
  }
4864
4634
  ),
4865
4635
  /* @__PURE__ */ jsxs("article", { className: "max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-16 sm:py-20", children: [
@@ -4896,7 +4666,7 @@ function BlogPostPage(props) {
4896
4666
  className: "w-full h-full object-cover"
4897
4667
  }
4898
4668
  ) }),
4899
- /* @__PURE__ */ jsx("div", { className: "boff-prose max-w-none", children: /* @__PURE__ */ jsx(ContentRenderer, { content: post.content, format: post.contentFormat }) })
4669
+ /* @__PURE__ */ jsx("div", { className: "prose prose-gray dark:prose-invert max-w-none", children: /* @__PURE__ */ jsx(ContentRenderer, { content: post.content, format: post.contentFormat }) })
4900
4670
  ] })
4901
4671
  ] });
4902
4672
  }
@@ -5357,7 +5127,6 @@ function CaseStudiesListPage(props) {
5357
5127
  const resolvedEmptyTitle = emptyTitle ?? "Case studies are on the way";
5358
5128
  const resolvedEmptySubtitle = emptySubtitle ?? `${productLabel} is early in its journey, and we'd rather show you real, measurable results than filler. We're working closely with our first teams now \u2014 their stories will be published here soon. In the meantime, we'd love to show you what's possible.`;
5359
5129
  return /* @__PURE__ */ jsxs("div", { className: `w-full ${className}`, "data-cs": "case-studies-v2", children: [
5360
- /* @__PURE__ */ jsx(ProseStyles, {}),
5361
5130
  /* @__PURE__ */ jsx(AnimationStyles, {}),
5362
5131
  seoTitle && /* @__PURE__ */ jsx(
5363
5132
  PageHead,
@@ -5579,7 +5348,6 @@ function CaseStudyPage(props) {
5579
5348
  }
5580
5349
  const formattedDate = formatDate(post.publishedAt || post.lastUpdated);
5581
5350
  return /* @__PURE__ */ jsxs("div", { className: `w-full ${className}`, children: [
5582
- /* @__PURE__ */ jsx(ProseStyles, {}),
5583
5351
  /* @__PURE__ */ jsx(
5584
5352
  PageHead,
5585
5353
  {
@@ -5623,7 +5391,7 @@ function CaseStudyPage(props) {
5623
5391
  className: "h-full w-full object-cover"
5624
5392
  }
5625
5393
  ) }),
5626
- /* @__PURE__ */ jsx("div", { className: "boff-prose max-w-none", children: /* @__PURE__ */ jsx(ContentRenderer, { content: post.content, format: post.contentFormat }) }),
5394
+ /* @__PURE__ */ jsx("div", { className: "prose prose-gray max-w-none dark:prose-invert", children: /* @__PURE__ */ jsx(ContentRenderer, { content: post.content, format: post.contentFormat }) }),
5627
5395
  /* @__PURE__ */ jsxs("div", { className: "mt-14 rounded-2xl border bg-gradient-to-br from-primary/10 via-card to-card p-8 text-center", children: [
5628
5396
  /* @__PURE__ */ jsxs("h2", { className: "text-xl font-bold text-foreground", children: [
5629
5397
  "Curious what ",
@@ -5804,7 +5572,7 @@ function CmsTimeline(props) {
5804
5572
  ] })
5805
5573
  ] }),
5806
5574
  /* @__PURE__ */ jsx("h2", { className: "text-xl sm:text-2xl font-bold text-foreground mb-4", children: entry.title }),
5807
- entry.content ? /* @__PURE__ */ jsx("div", { className: "boff-prose boff-prose-sm max-w-none", children: /* @__PURE__ */ jsx(
5575
+ entry.content ? /* @__PURE__ */ jsx("div", { className: "prose prose-sm prose-gray dark:prose-invert max-w-none", children: /* @__PURE__ */ jsx(
5808
5576
  ContentRenderer,
5809
5577
  {
5810
5578
  content: entry.content,
@@ -5819,9 +5587,9 @@ function CmsTimeline(props) {
5819
5587
  }
5820
5588
  function EntryContent({ content }) {
5821
5589
  if (typeof content === "string") {
5822
- return /* @__PURE__ */ jsx("div", { className: "boff-prose boff-prose-sm max-w-none", children: /* @__PURE__ */ jsx(ContentRenderer, { content, format: "markdown" }) });
5590
+ return /* @__PURE__ */ jsx("div", { className: "prose prose-sm prose-gray dark:prose-invert max-w-none", children: /* @__PURE__ */ jsx(ContentRenderer, { content, format: "markdown" }) });
5823
5591
  }
5824
- return /* @__PURE__ */ jsx("div", { className: "boff-prose boff-prose-sm max-w-none", children: content });
5592
+ return /* @__PURE__ */ jsx("div", { className: "prose prose-sm max-w-none", children: content });
5825
5593
  }
5826
5594
  function EntriesTimeline(props) {
5827
5595
  const { entries, pageSize, productName } = props;
@@ -6034,7 +5802,6 @@ function ChangelogPage(props) {
6034
5802
  const showCta = Boolean(ctaHref && ctaLabel);
6035
5803
  const isPropDriven = entries != null;
6036
5804
  return /* @__PURE__ */ jsxs("div", { className: `w-full ${className}`, children: [
6037
- /* @__PURE__ */ jsx(ProseStyles, {}),
6038
5805
  /* @__PURE__ */ jsx(
6039
5806
  PageHead,
6040
5807
  {
@@ -6919,7 +6686,7 @@ function TypeBadge({ type }) {
6919
6686
  EXTENSION: "Extension",
6920
6687
  THEME: "Theme"
6921
6688
  };
6922
- return /* @__PURE__ */ jsx("span", { className: "inline-block text-xs px-2 py-0.5 rounded-full bg-primary/10 text-foreground font-medium", children: labels[type] ?? type });
6689
+ return /* @__PURE__ */ jsx("span", { className: "inline-block text-xs px-2 py-0.5 rounded-full bg-primary/10 text-primary font-medium", children: labels[type] ?? type });
6923
6690
  }
6924
6691
  function ProductCard({ product, onClick, href }) {
6925
6692
  const priceLabel = formatPrice2(
@@ -6993,7 +6760,7 @@ function ProductCard({ product, onClick, href }) {
6993
6760
  /* @__PURE__ */ jsx(
6994
6761
  "span",
6995
6762
  {
6996
- className: `text-xs font-semibold ${priceLabel === "Free" ? "text-emerald-700" : "text-foreground"}`,
6763
+ className: `text-xs font-semibold ${priceLabel === "Free" ? "text-emerald-500" : "text-foreground"}`,
6997
6764
  children: priceLabel
6998
6765
  }
6999
6766
  )
@@ -7187,7 +6954,7 @@ function FeaturedHeroCard({
7187
6954
  }
7188
6955
  )
7189
6956
  ] }),
7190
- /* @__PURE__ */ jsx("span", { className: "absolute top-3 left-3 text-xs font-semibold px-2.5 py-1 rounded-full border border-primary/30 bg-primary/10 text-foreground shadow-sm", children: "Featured" }),
6957
+ /* @__PURE__ */ jsx("span", { className: "absolute top-3 left-3 text-xs font-semibold px-2.5 py-1 rounded-full bg-primary text-primary-foreground shadow-sm", children: "Featured" }),
7191
6958
  /* @__PURE__ */ jsx("div", { className: "absolute bottom-4 left-4 w-14 h-14 rounded-xl shadow-lg overflow-hidden border-2 border-background", children: product.icon ? /* @__PURE__ */ jsx(
7192
6959
  "img",
7193
6960
  {
@@ -7245,7 +7012,7 @@ function FeaturedHeroCard({
7245
7012
  /* @__PURE__ */ jsx(
7246
7013
  "span",
7247
7014
  {
7248
- className: `text-sm font-bold flex-shrink-0 ${priceLabel === "Free" ? "text-emerald-700" : "text-foreground"}`,
7015
+ className: `text-sm font-bold flex-shrink-0 ${priceLabel === "Free" ? "text-emerald-500" : "text-foreground"}`,
7249
7016
  children: priceLabel
7250
7017
  }
7251
7018
  )
@@ -7436,10 +7203,8 @@ function StoreHomePage({
7436
7203
  const [grouped, setGrouped] = useState(null);
7437
7204
  const [loading, setLoading] = useState(true);
7438
7205
  const [error, setError] = useState(null);
7439
- const [retryKey, setRetryKey] = useState(0);
7440
7206
  useEffect(() => {
7441
7207
  let cancelled = false;
7442
- let autoRetryTimer = null;
7443
7208
  async function load() {
7444
7209
  setLoading(true);
7445
7210
  try {
@@ -7453,15 +7218,7 @@ function StoreHomePage({
7453
7218
  setGrouped(res.data.homeGroupedProducts);
7454
7219
  setError(null);
7455
7220
  } catch {
7456
- if (!cancelled) {
7457
- if (retryKey < 1) {
7458
- autoRetryTimer = setTimeout(() => {
7459
- if (!cancelled) setRetryKey(1);
7460
- }, 2e3);
7461
- } else {
7462
- setError("Failed to load store. Please try again.");
7463
- }
7464
- }
7221
+ if (!cancelled) setError("Failed to load store. Please try again.");
7465
7222
  } finally {
7466
7223
  if (!cancelled) setLoading(false);
7467
7224
  }
@@ -7469,9 +7226,8 @@ function StoreHomePage({
7469
7226
  load();
7470
7227
  return () => {
7471
7228
  cancelled = true;
7472
- if (autoRetryTimer) clearTimeout(autoRetryTimer);
7473
7229
  };
7474
- }, [client, compatibleWith, retryKey]);
7230
+ }, [client, compatibleWith]);
7475
7231
  function navigate(path) {
7476
7232
  if (onNavigate) {
7477
7233
  onNavigate(path);
@@ -7555,7 +7311,7 @@ function StoreHomePage({
7555
7311
  }
7556
7312
  ),
7557
7313
  /* @__PURE__ */ jsxs("div", { className: "relative max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center", children: [
7558
- /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2 px-3 py-1 rounded-full border border-primary/30 bg-primary/10 text-xs font-semibold text-foreground mb-5", children: [
7314
+ /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2 px-3 py-1 rounded-full border border-primary/30 bg-primary/10 text-xs font-semibold text-primary mb-5", children: [
7559
7315
  /* @__PURE__ */ jsx(
7560
7316
  "span",
7561
7317
  {
@@ -7629,7 +7385,7 @@ function StoreHomePage({
7629
7385
  "button",
7630
7386
  {
7631
7387
  type: "button",
7632
- onClick: () => setRetryKey((k) => k + 1),
7388
+ onClick: () => window.location.reload(),
7633
7389
  className: "text-sm text-primary hover:underline",
7634
7390
  children: "Retry"
7635
7391
  }
@@ -7771,7 +7527,7 @@ function StoreHomePage({
7771
7527
  }
7772
7528
  ),
7773
7529
  /* @__PURE__ */ jsxs("div", { className: "relative max-w-2xl mx-auto px-4 py-16 text-center", children: [
7774
- /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2 px-3 py-1 rounded-full border border-primary/30 bg-primary/10 text-xs font-semibold text-foreground mb-5", children: [
7530
+ /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2 px-3 py-1 rounded-full border border-primary/30 bg-primary/10 text-xs font-semibold text-primary mb-5", children: [
7775
7531
  /* @__PURE__ */ jsx(
7776
7532
  "span",
7777
7533
  {
@@ -7803,21 +7559,6 @@ function StoreHomePage({
7803
7559
  children: "Browse the store"
7804
7560
  }
7805
7561
  )
7806
- ] }),
7807
- /* @__PURE__ */ jsxs("p", { className: "mt-4 text-xs text-muted-foreground", children: [
7808
- "By submitting a listing you agree to the",
7809
- " ",
7810
- /* @__PURE__ */ jsx(
7811
- "a",
7812
- {
7813
- href: "https://burdenoff.com/developer-agreement",
7814
- target: "_blank",
7815
- rel: "noopener noreferrer",
7816
- className: "underline hover:text-foreground",
7817
- children: "Marketplace & Developer Agreement"
7818
- }
7819
- ),
7820
- "."
7821
7562
  ] })
7822
7563
  ] })
7823
7564
  ] })
@@ -8107,10 +7848,6 @@ function StoreBrowsePage({
8107
7848
  }
8108
7849
  ),
8109
7850
  /* @__PURE__ */ jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8", children: [
8110
- /* @__PURE__ */ jsxs("header", { className: "mb-6", children: [
8111
- /* @__PURE__ */ jsx("h1", { className: "text-3xl font-bold tracking-tight", children: productName ? `Browse the ${productName} Store` : "Browse the Store" }),
8112
- /* @__PURE__ */ jsx("p", { className: "mt-2 text-muted-foreground", children: browseDescription })
8113
- ] }),
8114
7851
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row gap-3 mb-6", children: [
8115
7852
  /* @__PURE__ */ jsxs("form", { className: "flex-1 flex gap-2", onSubmit: handleSearchSubmit, children: [
8116
7853
  /* @__PURE__ */ jsx(
@@ -8544,7 +8281,6 @@ function StoreProductDetailPage({
8544
8281
  const totalRatings = ratingDistribution ? ratingDistribution.fiveStars + ratingDistribution.fourStars + ratingDistribution.threeStars + ratingDistribution.twoStars + ratingDistribution.oneStar : 0;
8545
8282
  return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
8546
8283
  /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: ANIM_STYLES } }),
8547
- /* @__PURE__ */ jsx(ProseStyles, {}),
8548
8284
  /* @__PURE__ */ jsx(
8549
8285
  PageHead,
8550
8286
  {
@@ -8712,7 +8448,7 @@ function StoreProductDetailPage({
8712
8448
  ] }),
8713
8449
  product.longDescription && /* @__PURE__ */ jsxs("div", { className: "sd-fu sd-d4 mb-8", children: [
8714
8450
  /* @__PURE__ */ jsx("h2", { className: "text-lg font-bold text-foreground mb-3", children: "About" }),
8715
- /* @__PURE__ */ jsx(Markdown, { className: "boff-prose boff-prose-sm max-w-none text-muted-foreground leading-relaxed", children: product.longDescription })
8451
+ /* @__PURE__ */ jsx(Markdown, { className: "prose prose-sm max-w-none text-muted-foreground leading-relaxed", children: product.longDescription })
8716
8452
  ] }),
8717
8453
  publisher && /* @__PURE__ */ jsxs("div", { className: "sd-fu sd-d5 mb-8 p-4 rounded-xl border border-border bg-card hover:border-primary/30 transition-colors duration-300", children: [
8718
8454
  /* @__PURE__ */ jsx("h2", { className: "text-sm font-semibold text-foreground mb-3", children: "Publisher" }),
@@ -8800,7 +8536,7 @@ function StoreProductDetailPage({
8800
8536
  children: [
8801
8537
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2 mb-2", children: [
8802
8538
  /* @__PURE__ */ jsx(StarRating, { rating: review.rating }),
8803
- review.verifiedPurchase && /* @__PURE__ */ jsx("span", { className: "text-xs text-emerald-700 font-medium", children: "Verified" })
8539
+ review.verifiedPurchase && /* @__PURE__ */ jsx("span", { className: "text-xs text-emerald-500 font-medium", children: "Verified" })
8804
8540
  ] }),
8805
8541
  review.title && /* @__PURE__ */ jsx("p", { className: "font-semibold text-sm text-foreground mb-1", children: review.title }),
8806
8542
  review.comment && /* @__PURE__ */ jsx(Markdown, { className: "text-sm text-muted-foreground leading-relaxed", children: review.comment }),
@@ -8834,7 +8570,7 @@ function StoreProductDetailPage({
8834
8570
  /* @__PURE__ */ jsx(
8835
8571
  "div",
8836
8572
  {
8837
- className: `text-3xl font-extrabold ${priceLabel === "Free" ? "text-emerald-700" : "text-foreground"}`,
8573
+ className: `text-3xl font-extrabold ${priceLabel === "Free" ? "text-emerald-500" : "text-foreground"}`,
8838
8574
  children: priceLabel
8839
8575
  }
8840
8576
  ),