@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.d.mts CHANGED
@@ -55,8 +55,8 @@ interface CareersApplyFormProps {
55
55
  declare function CareersApplyForm({ productName, recaptchaSiteKey, positions, heroTitle, heroDescription, headingLevel, maxResumeBytes, className, seo, }: CareersApplyFormProps): react_jsx_runtime.JSX.Element;
56
56
 
57
57
  declare const buttonVariants: (props?: ({
58
- variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
59
- size?: "icon" | "default" | "sm" | "lg" | null | undefined;
58
+ variant?: "default" | "link" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
59
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
60
60
  } & class_variance_authority_types.ClassProp) | undefined) => string;
61
61
  interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
62
62
  asChild?: boolean;
package/dist/index.d.ts CHANGED
@@ -55,8 +55,8 @@ interface CareersApplyFormProps {
55
55
  declare function CareersApplyForm({ productName, recaptchaSiteKey, positions, heroTitle, heroDescription, headingLevel, maxResumeBytes, className, seo, }: CareersApplyFormProps): react_jsx_runtime.JSX.Element;
56
56
 
57
57
  declare const buttonVariants: (props?: ({
58
- variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
59
- size?: "icon" | "default" | "sm" | "lg" | null | undefined;
58
+ variant?: "default" | "link" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
59
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
60
60
  } & class_variance_authority_types.ClassProp) | undefined) => string;
61
61
  interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
62
62
  asChild?: boolean;
package/dist/index.js CHANGED
@@ -2514,7 +2514,6 @@ var GET_PLANS_QUERY = `
2514
2514
  features {
2515
2515
  id
2516
2516
  quotaId
2517
- context
2518
2517
  quota {
2519
2518
  id
2520
2519
  name
@@ -2554,35 +2553,6 @@ function isEnterprisePlan(planName) {
2554
2553
  const name = planName.toLowerCase();
2555
2554
  return name.includes("team") || name.includes("business") || name.includes("enterprise");
2556
2555
  }
2557
- function isEnterpriseAudiencePlan(plan) {
2558
- if (!isEnterprisePlan(plan.name)) {
2559
- return false;
2560
- }
2561
- if (typeof plan.priceRaw === "number") {
2562
- return plan.priceRaw === 0;
2563
- }
2564
- return true;
2565
- }
2566
- function splitPlansByAudience(plans, showAudienceTabs) {
2567
- if (!showAudienceTabs) {
2568
- return { individualPlans: plans, enterprisePlans: [] };
2569
- }
2570
- return {
2571
- individualPlans: plans.filter((p) => !isEnterpriseAudiencePlan(p)),
2572
- enterprisePlans: plans.filter((p) => isEnterpriseAudiencePlan(p))
2573
- };
2574
- }
2575
- function resolveEnterprisePlans(apiEnterprisePlans, staticEnterprisePlans, defaultEnterpriseCard) {
2576
- const staticPlans = staticEnterprisePlans || [];
2577
- if (apiEnterprisePlans.length === 0 && staticPlans.length === 0) {
2578
- return [defaultEnterpriseCard];
2579
- }
2580
- const apiNames = new Set(apiEnterprisePlans.map((p) => p.name.toLowerCase()));
2581
- const dedupedStaticPlans = staticPlans.filter(
2582
- (p) => !apiNames.has(p.name.toLowerCase())
2583
- );
2584
- return [...apiEnterprisePlans, ...dedupedStaticPlans];
2585
- }
2586
2556
  function detectPlanTier(planName) {
2587
2557
  const name = planName.toLowerCase();
2588
2558
  if (name.includes("free") || name.includes("basic") || name.includes("starter") || name.includes("hobby")) {
@@ -2597,7 +2567,7 @@ function detectPlanTier(planName) {
2597
2567
  function getFallbackFeaturesForTier(tier, fallbackFeatures) {
2598
2568
  return [...fallbackFeatures?.[tier] || []];
2599
2569
  }
2600
- function getMetadataForPlan(planName, priceRaw, planMetadata) {
2570
+ function getMetadataForPlan(planName, planMetadata) {
2601
2571
  const normalizedName = planName.toLowerCase();
2602
2572
  if (planMetadata?.[normalizedName]) {
2603
2573
  const meta = planMetadata[normalizedName];
@@ -2613,17 +2583,6 @@ function getMetadataForPlan(planName, priceRaw, planMetadata) {
2613
2583
  }
2614
2584
  const tier = detectPlanTier(planName);
2615
2585
  if (tier) {
2616
- const isPaidEnterpriseName = tier === "enterprise" && typeof priceRaw === "number" && priceRaw > 0;
2617
- if (isPaidEnterpriseName) {
2618
- return {
2619
- tier: "professional",
2620
- displayName: planName,
2621
- defaultDescription: "Choose this plan",
2622
- popular: false,
2623
- ctaText: "Get Started",
2624
- ctaType: "signup"
2625
- };
2626
- }
2627
2586
  return {
2628
2587
  tier,
2629
2588
  displayName: planName,
@@ -2647,27 +2606,27 @@ function humanizeQuotaName(name) {
2647
2606
  const resource = parts.length >= 3 ? parts[parts.length - 2] : parts[parts.length - 1];
2648
2607
  return resource.replace(/[-_]/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
2649
2608
  }
2650
- function transformFeatureToLabel(feature) {
2651
- const quota = feature.quota;
2652
- if (!quota) return "";
2609
+ function transformQuotaToFeature(quota) {
2653
2610
  const { name, limits } = quota;
2654
- const featureContext = feature.context && typeof feature.context === "object" ? feature.context : null;
2655
- const limitsObj = limits && typeof limits === "object" ? limits : null;
2656
- const value = typeof featureContext?.quantity === "number" ? featureContext.quantity : typeof limitsObj?.value === "number" ? limitsObj.value : void 0;
2657
- const unit = typeof featureContext?.unit === "string" && featureContext.unit || typeof limitsObj?.unit === "string" && limitsObj.unit || void 0;
2658
- const description = typeof featureContext?.description === "string" && featureContext.description || typeof limitsObj?.description === "string" && limitsObj.description || void 0;
2659
- const type = limitsObj?.type;
2660
- if (description) {
2611
+ if (!limits || typeof limits !== "object") {
2612
+ return humanizeQuotaName(name);
2613
+ }
2614
+ const limitsObj = limits;
2615
+ const value = limitsObj.value;
2616
+ const unit = limitsObj.unit;
2617
+ const type = limitsObj.type;
2618
+ const description = limitsObj.description;
2619
+ if (typeof description === "string" && description) {
2661
2620
  if (type === "number" && typeof value === "number") {
2662
2621
  return `${value.toLocaleString()} ${description}`;
2663
2622
  }
2664
2623
  return description;
2665
2624
  }
2666
- if (unit) {
2625
+ if (typeof unit === "string" && unit) {
2667
2626
  if (typeof value === "number") {
2668
2627
  return `${value.toLocaleString()} ${unit}`;
2669
2628
  }
2670
- return unit;
2629
+ return `${unit}`;
2671
2630
  }
2672
2631
  const label = humanizeQuotaName(name);
2673
2632
  if (type === "boolean") {
@@ -2686,18 +2645,14 @@ function extractDisplayFeatures(features, planName, fallbackFeatures) {
2686
2645
  return tierFeatures;
2687
2646
  }
2688
2647
  }
2689
- const quotaFeatures = features.filter((f) => f.quota).map((f) => transformFeatureToLabel(f));
2648
+ const quotaFeatures = features.filter((f) => f.quota).map((f) => transformQuotaToFeature(f.quota));
2690
2649
  if (quotaFeatures.length > 0) {
2691
2650
  return quotaFeatures;
2692
2651
  }
2693
2652
  return [];
2694
2653
  }
2695
2654
  function transformToDisplayCard(plan, props) {
2696
- const metadata = getMetadataForPlan(
2697
- plan.name,
2698
- plan.price,
2699
- props.planMetadata
2700
- );
2655
+ const metadata = getMetadataForPlan(plan.name, props.planMetadata);
2701
2656
  const formattedPrice = formatPrice(
2702
2657
  plan.price,
2703
2658
  plan.currency,
@@ -2778,10 +2733,8 @@ function PricingSection(props) {
2778
2733
  cancelled = true;
2779
2734
  };
2780
2735
  }, [client, resolvedProductId]);
2781
- const {
2782
- individualPlans: individualAllPlans,
2783
- enterprisePlans: enterpriseApiPlans
2784
- } = splitPlansByAudience(allPlans, props.showAudienceTabs);
2736
+ const individualAllPlans = allPlans.filter((p) => !isEnterprisePlan(p.name));
2737
+ const enterpriseApiPlans = allPlans.filter((p) => isEnterprisePlan(p.name));
2785
2738
  const individualPlans = individualAllPlans.filter(
2786
2739
  (plan) => billingCycle === "monthly" ? plan.duration === "monthly" : plan.duration === "yearly"
2787
2740
  );
@@ -2797,6 +2750,7 @@ function PricingSection(props) {
2797
2750
  }
2798
2751
  return p;
2799
2752
  });
2753
+ const hasApiEnterprisePlans = enterpriseCards.length > 0;
2800
2754
  const defaultEnterpriseCard = {
2801
2755
  name: "Enterprise",
2802
2756
  subtitle: "For organizations that need more",
@@ -2817,11 +2771,7 @@ function PricingSection(props) {
2817
2771
  "Self-hosted option"
2818
2772
  ]
2819
2773
  };
2820
- const resolvedEnterprisePlans = resolveEnterprisePlans(
2821
- enterpriseCards,
2822
- props.enterprisePlans,
2823
- defaultEnterpriseCard
2824
- );
2774
+ const resolvedEnterprisePlans = hasApiEnterprisePlans ? enterpriseCards : props.enterprisePlans ? props.enterprisePlans : [defaultEnterpriseCard];
2825
2775
  const plans = props.showAudienceTabs && audience === "enterprise" ? [] : individualPlans;
2826
2776
  if (loading) {
2827
2777
  return /* @__PURE__ */ jsxRuntime.jsx("section", { id, className: `py-12 sm:py-16 md:py-20 ${className}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "container mx-auto px-4 sm:px-6", children: [
@@ -4402,182 +4352,6 @@ function RybbitAnalytics({
4402
4352
  }, [siteId, scriptUrl, enabled]);
4403
4353
  return null;
4404
4354
  }
4405
- var PROSE_CSS = `
4406
- .boff-prose {
4407
- max-width: none;
4408
- }
4409
-
4410
- .boff-prose h1 {
4411
- font-size: 2.25rem;
4412
- font-weight: 800;
4413
- line-height: 1.2;
4414
- margin-top: 0;
4415
- margin-bottom: 1rem;
4416
- color: hsl(var(--foreground));
4417
- }
4418
-
4419
- .boff-prose h2 {
4420
- font-size: 1.75rem;
4421
- font-weight: 700;
4422
- line-height: 1.3;
4423
- margin-top: 2rem;
4424
- margin-bottom: 1rem;
4425
- color: hsl(var(--foreground));
4426
- }
4427
-
4428
- .boff-prose h3 {
4429
- font-size: 1.5rem;
4430
- font-weight: 600;
4431
- line-height: 1.4;
4432
- margin-top: 1.5rem;
4433
- margin-bottom: 0.75rem;
4434
- color: hsl(var(--foreground));
4435
- }
4436
-
4437
- .boff-prose h4 {
4438
- font-size: 1.25rem;
4439
- font-weight: 600;
4440
- line-height: 1.5;
4441
- margin-top: 1.25rem;
4442
- margin-bottom: 0.5rem;
4443
- color: hsl(var(--foreground));
4444
- }
4445
-
4446
- .boff-prose p {
4447
- margin-bottom: 1rem;
4448
- line-height: 1.75;
4449
- color: hsl(var(--foreground));
4450
- }
4451
-
4452
- .boff-prose ul,
4453
- .boff-prose ol {
4454
- margin-bottom: 1rem;
4455
- padding-left: 1.5rem;
4456
- }
4457
-
4458
- .boff-prose ul {
4459
- list-style-type: disc;
4460
- }
4461
-
4462
- .boff-prose ol {
4463
- list-style-type: decimal;
4464
- }
4465
-
4466
- .boff-prose li {
4467
- margin-bottom: 0.25rem;
4468
- line-height: 1.75;
4469
- color: hsl(var(--foreground));
4470
- }
4471
-
4472
- .boff-prose li > ul,
4473
- .boff-prose li > ol {
4474
- margin-top: 0.25rem;
4475
- margin-bottom: 0.25rem;
4476
- }
4477
-
4478
- .boff-prose a {
4479
- color: hsl(var(--primary));
4480
- text-decoration: underline;
4481
- text-underline-offset: 2px;
4482
- }
4483
-
4484
- .boff-prose a:hover {
4485
- opacity: 0.8;
4486
- }
4487
-
4488
- .boff-prose hr {
4489
- border: none;
4490
- height: 1px;
4491
- background-color: hsl(var(--border));
4492
- margin: 2rem 0;
4493
- }
4494
-
4495
- .boff-prose blockquote {
4496
- border-left: 4px solid hsl(var(--border));
4497
- padding-left: 1rem;
4498
- margin: 1.5rem 0;
4499
- font-style: italic;
4500
- color: hsl(var(--muted-foreground));
4501
- }
4502
-
4503
- .boff-prose strong {
4504
- font-weight: 700;
4505
- color: hsl(var(--foreground));
4506
- }
4507
-
4508
- .boff-prose code {
4509
- background-color: hsl(var(--muted));
4510
- padding: 0.125rem 0.25rem;
4511
- border-radius: 0.25rem;
4512
- font-size: 0.875em;
4513
- font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
4514
- }
4515
-
4516
- .boff-prose pre {
4517
- background-color: hsl(var(--muted));
4518
- padding: 1rem;
4519
- border-radius: 0.5rem;
4520
- overflow-x: auto;
4521
- margin-bottom: 1rem;
4522
- }
4523
-
4524
- .boff-prose pre code {
4525
- background-color: transparent;
4526
- padding: 0;
4527
- }
4528
-
4529
- .boff-prose img {
4530
- max-width: 100%;
4531
- height: auto;
4532
- }
4533
-
4534
- .boff-prose table {
4535
- width: 100%;
4536
- border-collapse: collapse;
4537
- margin-bottom: 1rem;
4538
- }
4539
-
4540
- .boff-prose th,
4541
- .boff-prose td {
4542
- border: 1px solid hsl(var(--border));
4543
- padding: 0.5rem;
4544
- text-align: left;
4545
- }
4546
-
4547
- .boff-prose th {
4548
- font-weight: 600;
4549
- background-color: hsl(var(--muted));
4550
- }
4551
-
4552
- /* Smaller variant used inside cards and compact panels */
4553
- .boff-prose-sm {
4554
- font-size: 0.875rem;
4555
- }
4556
-
4557
- .boff-prose-sm h1 {
4558
- font-size: 1.75rem;
4559
- }
4560
-
4561
- .boff-prose-sm h2 {
4562
- font-size: 1.5rem;
4563
- }
4564
-
4565
- .boff-prose-sm h3 {
4566
- font-size: 1.25rem;
4567
- }
4568
-
4569
- .boff-prose-sm h4 {
4570
- font-size: 1.125rem;
4571
- }
4572
-
4573
- .boff-prose-sm p,
4574
- .boff-prose-sm li {
4575
- line-height: 1.625;
4576
- }
4577
- `;
4578
- function ProseStyles() {
4579
- return /* @__PURE__ */ jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: PROSE_CSS } });
4580
- }
4581
4355
  var BLOG_POSTS_QUERY = `
4582
4356
  query BlogPosts($productId: String!, $limit: Int, $offset: Int) {
4583
4357
  publicContentPages(productId: $productId, limit: $limit, offset: $offset) {
@@ -4747,8 +4521,7 @@ function BlogListPage(props) {
4747
4521
  title: seoTitle,
4748
4522
  description: seoDescription || heroSubtitle,
4749
4523
  productName,
4750
- keywords: seoKeywords,
4751
- url: typeof window !== "undefined" ? window.location.origin + window.location.pathname : void 0
4524
+ keywords: seoKeywords
4752
4525
  }
4753
4526
  ),
4754
4527
  /* @__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: [
@@ -4880,16 +4653,13 @@ function BlogPostPage(props) {
4880
4653
  day: "numeric"
4881
4654
  }) : "";
4882
4655
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `w-full ${className}`, children: [
4883
- /* @__PURE__ */ jsxRuntime.jsx(ProseStyles, {}),
4884
4656
  /* @__PURE__ */ jsxRuntime.jsx(
4885
4657
  PageHead,
4886
4658
  {
4887
4659
  title: post.seoTitle || post.title,
4888
4660
  description: post.seoDescription || post.excerpt || "",
4889
4661
  productName,
4890
- keywords: post.seoKeywords || "",
4891
- image: post.thumbnail || void 0,
4892
- url: typeof window !== "undefined" ? window.location.origin + window.location.pathname : void 0
4662
+ keywords: post.seoKeywords || ""
4893
4663
  }
4894
4664
  ),
4895
4665
  /* @__PURE__ */ jsxRuntime.jsxs("article", { className: "max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-16 sm:py-20", children: [
@@ -4926,7 +4696,7 @@ function BlogPostPage(props) {
4926
4696
  className: "w-full h-full object-cover"
4927
4697
  }
4928
4698
  ) }),
4929
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "boff-prose max-w-none", children: /* @__PURE__ */ jsxRuntime.jsx(ContentRenderer, { content: post.content, format: post.contentFormat }) })
4699
+ /* @__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 }) })
4930
4700
  ] })
4931
4701
  ] });
4932
4702
  }
@@ -5387,7 +5157,6 @@ function CaseStudiesListPage(props) {
5387
5157
  const resolvedEmptyTitle = emptyTitle ?? "Case studies are on the way";
5388
5158
  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.`;
5389
5159
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `w-full ${className}`, "data-cs": "case-studies-v2", children: [
5390
- /* @__PURE__ */ jsxRuntime.jsx(ProseStyles, {}),
5391
5160
  /* @__PURE__ */ jsxRuntime.jsx(AnimationStyles, {}),
5392
5161
  seoTitle && /* @__PURE__ */ jsxRuntime.jsx(
5393
5162
  PageHead,
@@ -5609,7 +5378,6 @@ function CaseStudyPage(props) {
5609
5378
  }
5610
5379
  const formattedDate = formatDate(post.publishedAt || post.lastUpdated);
5611
5380
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `w-full ${className}`, children: [
5612
- /* @__PURE__ */ jsxRuntime.jsx(ProseStyles, {}),
5613
5381
  /* @__PURE__ */ jsxRuntime.jsx(
5614
5382
  PageHead,
5615
5383
  {
@@ -5653,7 +5421,7 @@ function CaseStudyPage(props) {
5653
5421
  className: "h-full w-full object-cover"
5654
5422
  }
5655
5423
  ) }),
5656
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "boff-prose max-w-none", children: /* @__PURE__ */ jsxRuntime.jsx(ContentRenderer, { content: post.content, format: post.contentFormat }) }),
5424
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "prose prose-gray max-w-none dark:prose-invert", children: /* @__PURE__ */ jsxRuntime.jsx(ContentRenderer, { content: post.content, format: post.contentFormat }) }),
5657
5425
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-14 rounded-2xl border bg-gradient-to-br from-primary/10 via-card to-card p-8 text-center", children: [
5658
5426
  /* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "text-xl font-bold text-foreground", children: [
5659
5427
  "Curious what ",
@@ -5834,7 +5602,7 @@ function CmsTimeline(props) {
5834
5602
  ] })
5835
5603
  ] }),
5836
5604
  /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl sm:text-2xl font-bold text-foreground mb-4", children: entry.title }),
5837
- entry.content ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "boff-prose boff-prose-sm max-w-none", children: /* @__PURE__ */ jsxRuntime.jsx(
5605
+ entry.content ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "prose prose-sm prose-gray dark:prose-invert max-w-none", children: /* @__PURE__ */ jsxRuntime.jsx(
5838
5606
  ContentRenderer,
5839
5607
  {
5840
5608
  content: entry.content,
@@ -5849,9 +5617,9 @@ function CmsTimeline(props) {
5849
5617
  }
5850
5618
  function EntryContent({ content }) {
5851
5619
  if (typeof content === "string") {
5852
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "boff-prose boff-prose-sm max-w-none", children: /* @__PURE__ */ jsxRuntime.jsx(ContentRenderer, { content, format: "markdown" }) });
5620
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "prose prose-sm prose-gray dark:prose-invert max-w-none", children: /* @__PURE__ */ jsxRuntime.jsx(ContentRenderer, { content, format: "markdown" }) });
5853
5621
  }
5854
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "boff-prose boff-prose-sm max-w-none", children: content });
5622
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "prose prose-sm max-w-none", children: content });
5855
5623
  }
5856
5624
  function EntriesTimeline(props) {
5857
5625
  const { entries, pageSize, productName } = props;
@@ -6064,7 +5832,6 @@ function ChangelogPage(props) {
6064
5832
  const showCta = Boolean(ctaHref && ctaLabel);
6065
5833
  const isPropDriven = entries != null;
6066
5834
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `w-full ${className}`, children: [
6067
- /* @__PURE__ */ jsxRuntime.jsx(ProseStyles, {}),
6068
5835
  /* @__PURE__ */ jsxRuntime.jsx(
6069
5836
  PageHead,
6070
5837
  {
@@ -6949,7 +6716,7 @@ function TypeBadge({ type }) {
6949
6716
  EXTENSION: "Extension",
6950
6717
  THEME: "Theme"
6951
6718
  };
6952
- return /* @__PURE__ */ jsxRuntime.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 });
6719
+ return /* @__PURE__ */ jsxRuntime.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 });
6953
6720
  }
6954
6721
  function ProductCard({ product, onClick, href }) {
6955
6722
  const priceLabel = formatPrice2(
@@ -7023,7 +6790,7 @@ function ProductCard({ product, onClick, href }) {
7023
6790
  /* @__PURE__ */ jsxRuntime.jsx(
7024
6791
  "span",
7025
6792
  {
7026
- className: `text-xs font-semibold ${priceLabel === "Free" ? "text-emerald-700" : "text-foreground"}`,
6793
+ className: `text-xs font-semibold ${priceLabel === "Free" ? "text-emerald-500" : "text-foreground"}`,
7027
6794
  children: priceLabel
7028
6795
  }
7029
6796
  )
@@ -7217,7 +6984,7 @@ function FeaturedHeroCard({
7217
6984
  }
7218
6985
  )
7219
6986
  ] }),
7220
- /* @__PURE__ */ jsxRuntime.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" }),
6987
+ /* @__PURE__ */ jsxRuntime.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" }),
7221
6988
  /* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsx(
7222
6989
  "img",
7223
6990
  {
@@ -7275,7 +7042,7 @@ function FeaturedHeroCard({
7275
7042
  /* @__PURE__ */ jsxRuntime.jsx(
7276
7043
  "span",
7277
7044
  {
7278
- className: `text-sm font-bold flex-shrink-0 ${priceLabel === "Free" ? "text-emerald-700" : "text-foreground"}`,
7045
+ className: `text-sm font-bold flex-shrink-0 ${priceLabel === "Free" ? "text-emerald-500" : "text-foreground"}`,
7279
7046
  children: priceLabel
7280
7047
  }
7281
7048
  )
@@ -7466,10 +7233,8 @@ function StoreHomePage({
7466
7233
  const [grouped, setGrouped] = React.useState(null);
7467
7234
  const [loading, setLoading] = React.useState(true);
7468
7235
  const [error, setError] = React.useState(null);
7469
- const [retryKey, setRetryKey] = React.useState(0);
7470
7236
  React.useEffect(() => {
7471
7237
  let cancelled = false;
7472
- let autoRetryTimer = null;
7473
7238
  async function load() {
7474
7239
  setLoading(true);
7475
7240
  try {
@@ -7483,15 +7248,7 @@ function StoreHomePage({
7483
7248
  setGrouped(res.data.homeGroupedProducts);
7484
7249
  setError(null);
7485
7250
  } catch {
7486
- if (!cancelled) {
7487
- if (retryKey < 1) {
7488
- autoRetryTimer = setTimeout(() => {
7489
- if (!cancelled) setRetryKey(1);
7490
- }, 2e3);
7491
- } else {
7492
- setError("Failed to load store. Please try again.");
7493
- }
7494
- }
7251
+ if (!cancelled) setError("Failed to load store. Please try again.");
7495
7252
  } finally {
7496
7253
  if (!cancelled) setLoading(false);
7497
7254
  }
@@ -7499,9 +7256,8 @@ function StoreHomePage({
7499
7256
  load();
7500
7257
  return () => {
7501
7258
  cancelled = true;
7502
- if (autoRetryTimer) clearTimeout(autoRetryTimer);
7503
7259
  };
7504
- }, [client, compatibleWith, retryKey]);
7260
+ }, [client, compatibleWith]);
7505
7261
  function navigate(path) {
7506
7262
  if (onNavigate) {
7507
7263
  onNavigate(path);
@@ -7585,7 +7341,7 @@ function StoreHomePage({
7585
7341
  }
7586
7342
  ),
7587
7343
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center", children: [
7588
- /* @__PURE__ */ jsxRuntime.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: [
7344
+ /* @__PURE__ */ jsxRuntime.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: [
7589
7345
  /* @__PURE__ */ jsxRuntime.jsx(
7590
7346
  "span",
7591
7347
  {
@@ -7659,7 +7415,7 @@ function StoreHomePage({
7659
7415
  "button",
7660
7416
  {
7661
7417
  type: "button",
7662
- onClick: () => setRetryKey((k) => k + 1),
7418
+ onClick: () => window.location.reload(),
7663
7419
  className: "text-sm text-primary hover:underline",
7664
7420
  children: "Retry"
7665
7421
  }
@@ -7801,7 +7557,7 @@ function StoreHomePage({
7801
7557
  }
7802
7558
  ),
7803
7559
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative max-w-2xl mx-auto px-4 py-16 text-center", children: [
7804
- /* @__PURE__ */ jsxRuntime.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: [
7560
+ /* @__PURE__ */ jsxRuntime.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: [
7805
7561
  /* @__PURE__ */ jsxRuntime.jsx(
7806
7562
  "span",
7807
7563
  {
@@ -7833,21 +7589,6 @@ function StoreHomePage({
7833
7589
  children: "Browse the store"
7834
7590
  }
7835
7591
  )
7836
- ] }),
7837
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "mt-4 text-xs text-muted-foreground", children: [
7838
- "By submitting a listing you agree to the",
7839
- " ",
7840
- /* @__PURE__ */ jsxRuntime.jsx(
7841
- "a",
7842
- {
7843
- href: "https://burdenoff.com/developer-agreement",
7844
- target: "_blank",
7845
- rel: "noopener noreferrer",
7846
- className: "underline hover:text-foreground",
7847
- children: "Marketplace & Developer Agreement"
7848
- }
7849
- ),
7850
- "."
7851
7592
  ] })
7852
7593
  ] })
7853
7594
  ] })
@@ -8137,10 +7878,6 @@ function StoreBrowsePage({
8137
7878
  }
8138
7879
  ),
8139
7880
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8", children: [
8140
- /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-6", children: [
8141
- /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-3xl font-bold tracking-tight", children: productName ? `Browse the ${productName} Store` : "Browse the Store" }),
8142
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-muted-foreground", children: browseDescription })
8143
- ] }),
8144
7881
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row gap-3 mb-6", children: [
8145
7882
  /* @__PURE__ */ jsxRuntime.jsxs("form", { className: "flex-1 flex gap-2", onSubmit: handleSearchSubmit, children: [
8146
7883
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -8574,7 +8311,6 @@ function StoreProductDetailPage({
8574
8311
  const totalRatings = ratingDistribution ? ratingDistribution.fiveStars + ratingDistribution.fourStars + ratingDistribution.threeStars + ratingDistribution.twoStars + ratingDistribution.oneStar : 0;
8575
8312
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full", children: [
8576
8313
  /* @__PURE__ */ jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: ANIM_STYLES } }),
8577
- /* @__PURE__ */ jsxRuntime.jsx(ProseStyles, {}),
8578
8314
  /* @__PURE__ */ jsxRuntime.jsx(
8579
8315
  PageHead,
8580
8316
  {
@@ -8742,7 +8478,7 @@ function StoreProductDetailPage({
8742
8478
  ] }),
8743
8479
  product.longDescription && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sd-fu sd-d4 mb-8", children: [
8744
8480
  /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-bold text-foreground mb-3", children: "About" }),
8745
- /* @__PURE__ */ jsxRuntime.jsx(Markdown, { className: "boff-prose boff-prose-sm max-w-none text-muted-foreground leading-relaxed", children: product.longDescription })
8481
+ /* @__PURE__ */ jsxRuntime.jsx(Markdown, { className: "prose prose-sm max-w-none text-muted-foreground leading-relaxed", children: product.longDescription })
8746
8482
  ] }),
8747
8483
  publisher && /* @__PURE__ */ jsxRuntime.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: [
8748
8484
  /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-sm font-semibold text-foreground mb-3", children: "Publisher" }),
@@ -8830,7 +8566,7 @@ function StoreProductDetailPage({
8830
8566
  children: [
8831
8567
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2 mb-2", children: [
8832
8568
  /* @__PURE__ */ jsxRuntime.jsx(StarRating, { rating: review.rating }),
8833
- review.verifiedPurchase && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-emerald-700 font-medium", children: "Verified" })
8569
+ review.verifiedPurchase && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-emerald-500 font-medium", children: "Verified" })
8834
8570
  ] }),
8835
8571
  review.title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold text-sm text-foreground mb-1", children: review.title }),
8836
8572
  review.comment && /* @__PURE__ */ jsxRuntime.jsx(Markdown, { className: "text-sm text-muted-foreground leading-relaxed", children: review.comment }),
@@ -8864,7 +8600,7 @@ function StoreProductDetailPage({
8864
8600
  /* @__PURE__ */ jsxRuntime.jsx(
8865
8601
  "div",
8866
8602
  {
8867
- className: `text-3xl font-extrabold ${priceLabel === "Free" ? "text-emerald-700" : "text-foreground"}`,
8603
+ className: `text-3xl font-extrabold ${priceLabel === "Free" ? "text-emerald-500" : "text-foreground"}`,
8868
8604
  children: priceLabel
8869
8605
  }
8870
8606
  ),