@burdenoff/website-sdk 2026.720.6 → 2026.720.8

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
@@ -15,7 +15,7 @@ export { ProblemSolved, ProblemsSolvedSection, ProblemsSolvedSectionProps } from
15
15
  export { DetectedPlatform, ElectronDownloadLink, ElectronDownloadLinkProps, detectElectronPlatform } from './components/electron-download.mjs';
16
16
  export { RybbitAnalytics, RybbitAnalyticsProps } from './analytics/index.mjs';
17
17
  export { PageHead, PageHeadProps } from './seo/index.mjs';
18
- export { BlogListPage, BlogListPageProps, BlogPostPage, BlogPostPageProps, CaseStudiesListPage, CaseStudiesListPageProps, CaseStudyPage, CaseStudyPageProps, ChangelogEntry, ChangelogPage, ChangelogPageProps, ContentPageData, ContentPageListData, ContentPageListItem, ContentRenderer, ContractAsset, ContractsPage, ContractsPageProps, PressKitAsset, PressKitAssetCategory, PressKitPage, PressKitPageProps, useContentPage, useContentPages } from './content/index.mjs';
18
+ export { BlogListPage, BlogListPageProps, BlogPostPage, BlogPostPageProps, CaseStudiesListPage, CaseStudiesListPageProps, CaseStudyPage, CaseStudyPageProps, ChangelogEntry, ChangelogPage, ChangelogPageProps, ContentPageData, ContentPageListData, ContentPageListItem, ContentRenderer, ContractAsset, ContractsPage, ContractsPageProps, Markdown, MarkdownProps, PressKitAsset, PressKitAssetCategory, PressKitPage, PressKitPageProps, useContentPage, useContentPages } from './content/index.mjs';
19
19
  export { ProductData, ProductProvider, ProductProviderProps, useProduct, useProductConfig } from './product/index.mjs';
20
20
  import * as class_variance_authority_types from 'class-variance-authority/types';
21
21
  import * as React from 'react';
@@ -23,6 +23,7 @@ import { VariantProps } from 'class-variance-authority';
23
23
  import * as LabelPrimitive from '@radix-ui/react-label';
24
24
  export { B as BrowseStoreResult, G as GroupedStoreProducts, P as ProductCard, a as ProductCategory, R as RatingDistribution, S as SearchSuggestion, b as StarRating, c as StoreBrowsePage, d as StoreBrowsePageProps, e as StoreFacet, f as StoreFacets, g as StoreHomePage, h as StoreHomePageProps, i as StorePageProps, j as StoreProduct, k as StoreProductDetailPage, l as StoreProductDetailPageProps, m as StoreProductDetails, n as StorePublisher, o as StoreReview, p as StoreTerminology, q as StoreTypeFilter, T as TypeBadge, r as formatDownloads, s as formatPrice } from './product-card-D2HQglaf.mjs';
25
25
  export { cn } from './utils/index.mjs';
26
+ import 'react-markdown';
26
27
  import 'clsx';
27
28
 
28
29
  interface CareersApplyFormProps {
package/dist/index.d.ts CHANGED
@@ -15,7 +15,7 @@ export { ProblemSolved, ProblemsSolvedSection, ProblemsSolvedSectionProps } from
15
15
  export { DetectedPlatform, ElectronDownloadLink, ElectronDownloadLinkProps, detectElectronPlatform } from './components/electron-download.js';
16
16
  export { RybbitAnalytics, RybbitAnalyticsProps } from './analytics/index.js';
17
17
  export { PageHead, PageHeadProps } from './seo/index.js';
18
- export { BlogListPage, BlogListPageProps, BlogPostPage, BlogPostPageProps, CaseStudiesListPage, CaseStudiesListPageProps, CaseStudyPage, CaseStudyPageProps, ChangelogEntry, ChangelogPage, ChangelogPageProps, ContentPageData, ContentPageListData, ContentPageListItem, ContentRenderer, ContractAsset, ContractsPage, ContractsPageProps, PressKitAsset, PressKitAssetCategory, PressKitPage, PressKitPageProps, useContentPage, useContentPages } from './content/index.js';
18
+ export { BlogListPage, BlogListPageProps, BlogPostPage, BlogPostPageProps, CaseStudiesListPage, CaseStudiesListPageProps, CaseStudyPage, CaseStudyPageProps, ChangelogEntry, ChangelogPage, ChangelogPageProps, ContentPageData, ContentPageListData, ContentPageListItem, ContentRenderer, ContractAsset, ContractsPage, ContractsPageProps, Markdown, MarkdownProps, PressKitAsset, PressKitAssetCategory, PressKitPage, PressKitPageProps, useContentPage, useContentPages } from './content/index.js';
19
19
  export { ProductData, ProductProvider, ProductProviderProps, useProduct, useProductConfig } from './product/index.js';
20
20
  import * as class_variance_authority_types from 'class-variance-authority/types';
21
21
  import * as React from 'react';
@@ -23,6 +23,7 @@ import { VariantProps } from 'class-variance-authority';
23
23
  import * as LabelPrimitive from '@radix-ui/react-label';
24
24
  export { B as BrowseStoreResult, G as GroupedStoreProducts, P as ProductCard, a as ProductCategory, R as RatingDistribution, S as SearchSuggestion, b as StarRating, c as StoreBrowsePage, d as StoreBrowsePageProps, e as StoreFacet, f as StoreFacets, g as StoreHomePage, h as StoreHomePageProps, i as StorePageProps, j as StoreProduct, k as StoreProductDetailPage, l as StoreProductDetailPageProps, m as StoreProductDetails, n as StorePublisher, o as StoreReview, p as StoreTerminology, q as StoreTypeFilter, T as TypeBadge, r as formatDownloads, s as formatPrice } from './product-card-D2HQglaf.js';
25
25
  export { cn } from './utils/index.js';
26
+ import 'react-markdown';
26
27
  import 'clsx';
27
28
 
28
29
  interface CareersApplyFormProps {
package/dist/index.js CHANGED
@@ -11,6 +11,10 @@ var classVarianceAuthority = require('class-variance-authority');
11
11
  var clsx = require('clsx');
12
12
  var tailwindMerge = require('tailwind-merge');
13
13
  var LabelPrimitive = require('@radix-ui/react-label');
14
+ var DOMPurify = require('isomorphic-dompurify');
15
+ var ReactMarkdown = require('react-markdown');
16
+ var rehypeSanitize = require('rehype-sanitize');
17
+ var remarkGfm = require('remark-gfm');
14
18
  var zod$1 = require('@hookform/resolvers/zod');
15
19
  var reactHookForm = require('react-hook-form');
16
20
  var zod = require('zod');
@@ -39,6 +43,10 @@ function _interopNamespace(e) {
39
43
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
40
44
  var ReCAPTCHA3__default = /*#__PURE__*/_interopDefault(ReCAPTCHA3);
41
45
  var LabelPrimitive__namespace = /*#__PURE__*/_interopNamespace(LabelPrimitive);
46
+ var DOMPurify__default = /*#__PURE__*/_interopDefault(DOMPurify);
47
+ var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
48
+ var rehypeSanitize__default = /*#__PURE__*/_interopDefault(rehypeSanitize);
49
+ var remarkGfm__default = /*#__PURE__*/_interopDefault(remarkGfm);
42
50
  var DropdownMenu__namespace = /*#__PURE__*/_interopNamespace(DropdownMenu);
43
51
 
44
52
  var __defProp = Object.defineProperty;
@@ -1056,6 +1064,41 @@ function ContactPage({
1056
1064
  ] }) })
1057
1065
  ] });
1058
1066
  }
1067
+ var defaultComponents = {
1068
+ a: ({ href, children, ...props }) => {
1069
+ const isExternal = typeof href === "string" && (href.startsWith("http://") || href.startsWith("https://"));
1070
+ return /* @__PURE__ */ jsxRuntime.jsx(
1071
+ "a",
1072
+ {
1073
+ href,
1074
+ ...props,
1075
+ ...isExternal ? { target: "_blank", rel: "noopener noreferrer" } : { rel: "noopener noreferrer" },
1076
+ children
1077
+ }
1078
+ );
1079
+ }
1080
+ };
1081
+ function Markdown({
1082
+ children,
1083
+ className,
1084
+ inline,
1085
+ components
1086
+ }) {
1087
+ const content = /* @__PURE__ */ jsxRuntime.jsx(
1088
+ ReactMarkdown__default.default,
1089
+ {
1090
+ remarkPlugins: [remarkGfm__default.default],
1091
+ rehypePlugins: [rehypeSanitize__default.default],
1092
+ components: { ...defaultComponents, ...components },
1093
+ ...inline ? { disallowedElements: ["p"], unwrapDisallowed: true } : {},
1094
+ children
1095
+ }
1096
+ );
1097
+ if (inline) {
1098
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className, children: content });
1099
+ }
1100
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className, children: content });
1101
+ }
1059
1102
  var PUBLIC_CONTENT_PAGE_QUERY = `
1060
1103
  query PublicContentPage($slug: String!, $productId: String) {
1061
1104
  publicContentPage(slug: $slug, productId: $productId) {
@@ -1200,64 +1243,21 @@ function useContentPages(options) {
1200
1243
  }, [fetchPages]);
1201
1244
  return { data, loading, error, refetch: fetchPages };
1202
1245
  }
1203
- function renderMarkdown(md) {
1204
- let html = md;
1205
- html = html.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
1206
- html = html.replace(/```(\w*)\n([\s\S]*?)```/g, (_m, _lang, code) => {
1207
- return `<pre><code>${code.trim()}</code></pre>`;
1208
- });
1209
- html = html.replace(/`([^`]+)`/g, "<code>$1</code>");
1210
- html = html.replace(/^###### (.+)$/gm, "<h6>$1</h6>");
1211
- html = html.replace(/^##### (.+)$/gm, "<h5>$1</h5>");
1212
- html = html.replace(/^#### (.+)$/gm, "<h4>$1</h4>");
1213
- html = html.replace(/^### (.+)$/gm, "<h3>$1</h3>");
1214
- html = html.replace(/^## (.+)$/gm, "<h2>$1</h2>");
1215
- html = html.replace(/^# (.+)$/gm, "<h1>$1</h1>");
1216
- html = html.replace(/\*\*\*(.+?)\*\*\*/g, "<strong><em>$1</em></strong>");
1217
- html = html.replace(/\*\*(.+?)\*\*/g, "<strong>$1</strong>");
1218
- html = html.replace(/\*(.+?)\*/g, "<em>$1</em>");
1219
- html = html.replace(
1220
- /\[([^\]]+)\]\(([^)]+)\)/g,
1221
- '<a href="$2" target="_blank" rel="noopener noreferrer">$1</a>'
1222
- );
1223
- html = html.replace(/^&gt; (.+)$/gm, "<blockquote>$1</blockquote>");
1224
- html = html.replace(/(^- .+$(\n^- .+$)*)/gm, (block) => {
1225
- const items = block.split("\n").map((line) => `<li>${line.replace(/^- /, "")}</li>`).join("");
1226
- return `<ul>${items}</ul>`;
1227
- });
1228
- html = html.replace(/(^\d+\. .+$(\n^\d+\. .+$)*)/gm, (block) => {
1229
- const items = block.split("\n").map((line) => `<li>${line.replace(/^\d+\. /, "")}</li>`).join("");
1230
- return `<ol>${items}</ol>`;
1231
- });
1232
- html = html.replace(/^---$/gm, "<hr />");
1233
- html = html.split(/\n\n+/).map((block) => {
1234
- const trimmed = block.trim();
1235
- if (!trimmed) return "";
1236
- if (/^<(h[1-6]|ul|ol|pre|blockquote|hr)/.test(trimmed)) return trimmed;
1237
- return `<p>${trimmed.replace(/\n/g, "<br />")}</p>`;
1238
- }).join("\n");
1239
- return html;
1240
- }
1241
1246
  function ContentRenderer({
1242
1247
  content,
1243
1248
  format = "markdown",
1244
1249
  className
1245
1250
  }) {
1246
1251
  if (format === "markdown") {
1247
- return /* @__PURE__ */ jsxRuntime.jsx(
1248
- "div",
1249
- {
1250
- className,
1251
- dangerouslySetInnerHTML: { __html: renderMarkdown(content) }
1252
- }
1253
- );
1252
+ return /* @__PURE__ */ jsxRuntime.jsx(Markdown, { className, children: content });
1254
1253
  }
1255
1254
  if (format === "html") {
1255
+ const sanitized = DOMPurify__default.default.sanitize(content);
1256
1256
  return /* @__PURE__ */ jsxRuntime.jsx(
1257
1257
  "div",
1258
1258
  {
1259
1259
  className,
1260
- dangerouslySetInnerHTML: { __html: content }
1260
+ dangerouslySetInnerHTML: { __html: sanitized }
1261
1261
  }
1262
1262
  );
1263
1263
  }
@@ -8841,6 +8841,7 @@ exports.ElectronDownloadLink = ElectronDownloadLink;
8841
8841
  exports.Input = Input;
8842
8842
  exports.Label = Label;
8843
8843
  exports.LaunchCountdown = LaunchCountdown;
8844
+ exports.Markdown = Markdown;
8844
8845
  exports.NewsletterForm = NewsletterForm;
8845
8846
  exports.NewsletterPage = NewsletterPage;
8846
8847
  exports.PageHead = PageHead;