@flamingo-stack/openframe-frontend-core 0.0.722 → 0.0.724

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.
Files changed (137) hide show
  1. package/dist/{chunk-XJYAUIOL.cjs → chunk-2A4AGW7Z.cjs} +11 -11
  2. package/dist/{chunk-65C4WHG4.js → chunk-2HLGX6JF.js} +5 -5
  3. package/dist/{chunk-5K6YKRP5.cjs → chunk-3MMKIVWZ.cjs} +23 -23
  4. package/dist/{chunk-P7Y626YJ.cjs → chunk-3NVSC3BU.cjs} +687 -611
  5. package/dist/{chunk-VSYQJCNR.js → chunk-4N5DLIEC.js} +1 -1
  6. package/dist/{chunk-GYSTZD6X.cjs → chunk-5CJGNPTT.cjs} +35 -35
  7. package/dist/{chunk-AWWLEYAU.js → chunk-6BKDXUOQ.js} +6 -6
  8. package/dist/{chunk-BUDZWXRG.js → chunk-6QO6BIX7.js} +1 -1
  9. package/dist/{chunk-FDWYBJYD.cjs → chunk-7AXOAA5T.cjs} +3 -3
  10. package/dist/{chunk-SZF7ENIW.js → chunk-7CNGNPBI.js} +3 -3
  11. package/dist/{chunk-6HRQLM6T.cjs → chunk-A4WHVIYZ.cjs} +17 -17
  12. package/dist/{chunk-VV5INIQB.cjs → chunk-BIWG3CYN.cjs} +3 -3
  13. package/dist/{chunk-I3UUMRO7.js → chunk-BWMEQ7IZ.js} +1 -1
  14. package/dist/{chunk-7UZ2JZJY.js → chunk-CJENFR5T.js} +29 -3
  15. package/dist/{chunk-IITZ6JSC.cjs → chunk-DGNGABNG.cjs} +33 -7
  16. package/dist/{chunk-KWBH63GV.cjs → chunk-FR4MFSH5.cjs} +19 -19
  17. package/dist/{chunk-DWSBTGKT.cjs → chunk-GRB5HVEV.cjs} +2610 -2125
  18. package/dist/{chunk-JQ55FFIK.cjs → chunk-IPUDFAU5.cjs} +31 -31
  19. package/dist/{chunk-F33RMJOL.js → chunk-IUQKIU5A.js} +6 -6
  20. package/dist/{chunk-LV6UJD2K.cjs → chunk-JKWQWHNV.cjs} +6 -1
  21. package/dist/{chunk-VC7COEWF.cjs → chunk-JQ7A7PO5.cjs} +76 -76
  22. package/dist/{chunk-BCU6UUNQ.js → chunk-KKO4GRM3.js} +4 -4
  23. package/dist/{chunk-RVQV6J5K.cjs → chunk-L5CAET76.cjs} +64 -64
  24. package/dist/{chunk-WY4SLTMZ.js → chunk-MRBPJ4NB.js} +1 -1
  25. package/dist/{chunk-IF72N4PE.js → chunk-MU5F5QXJ.js} +6 -6
  26. package/dist/{chunk-NMGWNUKB.js → chunk-N2PX26BZ.js} +2 -2
  27. package/dist/{chunk-NFABAOMD.cjs → chunk-N4NGKXUU.cjs} +15 -15
  28. package/dist/{chunk-ETQVXIYW.js → chunk-NLZZUWR6.js} +4 -4
  29. package/dist/{chunk-ZMHP4Y6M.js → chunk-OFOBVPDV.js} +2 -2
  30. package/dist/{chunk-DX3W7DPC.js → chunk-OWFDXYEO.js} +1 -1
  31. package/dist/{chunk-HA2ASGJM.js → chunk-PF4WAKCS.js} +4 -4
  32. package/dist/{chunk-GAFK3WNT.cjs → chunk-QJ67GFF3.cjs} +32 -32
  33. package/dist/{chunk-KBPGSPXQ.js → chunk-QN3OXRTM.js} +4492 -4007
  34. package/dist/{chunk-ZHC6MDGF.cjs → chunk-QUI7DKBW.cjs} +41 -41
  35. package/dist/{chunk-E7NIZXDT.js → chunk-S4SVKXHN.js} +88 -12
  36. package/dist/{chunk-VYHCN5NU.cjs → chunk-SOTXV3T5.cjs} +3 -3
  37. package/dist/{chunk-MJ4SXOG2.cjs → chunk-SVDXNMBL.cjs} +16 -16
  38. package/dist/{chunk-UYMTAFHG.js → chunk-VLPGV5WH.js} +1 -1
  39. package/dist/{chunk-SZ3CBFSH.js → chunk-XDTD6YGG.js} +7 -7
  40. package/dist/{chunk-VU7RU3LL.cjs → chunk-YKV45BSJ.cjs} +4 -4
  41. package/dist/{chunk-XR7NVJXS.cjs → chunk-ZKL52ALL.cjs} +3 -3
  42. package/dist/{chunk-EWED6ISQ.js → chunk-ZQKN2Z6W.js} +5 -0
  43. package/dist/{cloud-tenants-4Z36KWSX.js → cloud-tenants-5MINXS5J.js} +6 -6
  44. package/dist/{cloud-tenants-5NIC5VXK.cjs → cloud-tenants-UMZJZTMB.cjs} +7 -7
  45. package/dist/components/case-studies/index.cjs +20 -20
  46. package/dist/components/case-studies/index.js +7 -7
  47. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
  48. package/dist/components/chat/index.cjs +5 -5
  49. package/dist/components/chat/index.js +4 -4
  50. package/dist/components/chat/utils/icon-library.d.ts +2 -0
  51. package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
  52. package/dist/components/contact/index.cjs +8 -8
  53. package/dist/components/contact/index.js +7 -7
  54. package/dist/components/docs/index.cjs +11 -11
  55. package/dist/components/docs/index.js +10 -10
  56. package/dist/components/embeds/index.cjs +8 -8
  57. package/dist/components/embeds/index.js +7 -7
  58. package/dist/components/faq/index.cjs +8 -8
  59. package/dist/components/faq/index.js +7 -7
  60. package/dist/components/features/index.cjs +23 -7
  61. package/dist/components/features/index.d.ts +1 -0
  62. package/dist/components/features/index.d.ts.map +1 -1
  63. package/dist/components/features/index.js +22 -6
  64. package/dist/components/features/model-token-rates.d.ts +179 -0
  65. package/dist/components/features/model-token-rates.d.ts.map +1 -0
  66. package/dist/components/help-center-pages/index.cjs +130 -126
  67. package/dist/components/help-center-pages/index.js +47 -43
  68. package/dist/components/help-center-pages/trust-center-page.d.ts +34 -1
  69. package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
  70. package/dist/components/help-center-pages/trust-center-sections.d.ts +1 -1
  71. package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
  72. package/dist/components/index.cjs +73 -55
  73. package/dist/components/index.js +36 -18
  74. package/dist/components/meeting-scheduler/index.cjs +32 -32
  75. package/dist/components/meeting-scheduler/index.js +6 -6
  76. package/dist/components/navigation/index.cjs +10 -10
  77. package/dist/components/navigation/index.js +9 -9
  78. package/dist/components/onboarding-guides/index.cjs +10 -10
  79. package/dist/components/onboarding-guides/index.js +9 -9
  80. package/dist/components/product-demo/index.cjs +7 -7
  81. package/dist/components/product-demo/index.js +7 -7
  82. package/dist/components/related-content/index.cjs +4 -4
  83. package/dist/components/related-content/index.js +3 -3
  84. package/dist/components/tickets/index.cjs +11 -11
  85. package/dist/components/tickets/index.js +10 -10
  86. package/dist/components/ui/data-attribution.d.ts +3 -1
  87. package/dist/components/ui/data-attribution.d.ts.map +1 -1
  88. package/dist/components/ui/download-button.d.ts +19 -0
  89. package/dist/components/ui/download-button.d.ts.map +1 -0
  90. package/dist/components/ui/index.cjs +9 -7
  91. package/dist/components/ui/index.d.ts +1 -0
  92. package/dist/components/ui/index.d.ts.map +1 -1
  93. package/dist/components/ui/index.js +8 -6
  94. package/dist/{devices-2TK3LAKM.js → devices-FSSUAUQN.js} +6 -6
  95. package/dist/{devices-7IKT72DK.cjs → devices-HOT7YSDN.cjs} +8 -8
  96. package/dist/index.cjs +53 -11
  97. package/dist/index.js +52 -10
  98. package/dist/{knowledge-HYSEV35H.cjs → knowledge-3N6HCFLU.cjs} +8 -8
  99. package/dist/{knowledge-3GJ4MU3V.js → knowledge-7HRUJX26.js} +6 -6
  100. package/dist/{logs-ZX3NADQC.cjs → logs-75M5YP6V.cjs} +15 -15
  101. package/dist/{logs-TATVM62H.js → logs-T25OE2QW.js} +6 -6
  102. package/dist/{policies-MRRKLF4Q.js → policies-4OK4XTD4.js} +6 -6
  103. package/dist/{policies-J4FSDKPI.cjs → policies-BTG7UJJC.cjs} +11 -11
  104. package/dist/{remote-session-Z2YCUPHU.cjs → remote-session-4DTOM3QD.cjs} +5 -5
  105. package/dist/{remote-session-WCLR47RN.js → remote-session-AZJXG7ZF.js} +3 -3
  106. package/dist/{software-update-KM46WUVQ.js → software-update-5SOV4FIR.js} +6 -6
  107. package/dist/{software-update-CXUBWYD2.cjs → software-update-OZURO4VK.cjs} +11 -11
  108. package/dist/types/index.cjs +27 -2
  109. package/dist/types/index.js +25 -3
  110. package/dist/types/trust-center.d.ts +19 -2
  111. package/dist/types/trust-center.d.ts.map +1 -1
  112. package/dist/utils/ai-providers.d.ts +29 -0
  113. package/dist/utils/ai-providers.d.ts.map +1 -0
  114. package/dist/utils/index.cjs +76 -2
  115. package/dist/utils/index.d.ts +2 -0
  116. package/dist/utils/index.d.ts.map +1 -1
  117. package/dist/utils/index.js +68 -3
  118. package/dist/utils/list-url.d.ts.map +1 -1
  119. package/dist/utils/model-token-rates.d.ts +55 -0
  120. package/dist/utils/model-token-rates.d.ts.map +1 -0
  121. package/dist/utils/source-icons.d.ts.map +1 -1
  122. package/package.json +1 -1
  123. package/src/components/chat/entity-cards/dispatch.tsx +3 -0
  124. package/src/components/chat/utils/icon-library.tsx +6 -0
  125. package/src/components/features/index.ts +1 -0
  126. package/src/components/features/model-token-rates.tsx +696 -0
  127. package/src/components/help-center-pages/trust-center-page.tsx +50 -29
  128. package/src/components/help-center-pages/trust-center-sections.tsx +2 -2
  129. package/src/components/ui/data-attribution.tsx +19 -6
  130. package/src/components/ui/download-button.tsx +34 -0
  131. package/src/components/ui/index.ts +1 -0
  132. package/src/types/trust-center.ts +52 -4
  133. package/src/utils/ai-providers.ts +46 -0
  134. package/src/utils/index.ts +2 -0
  135. package/src/utils/list-url.ts +1 -0
  136. package/src/utils/model-token-rates.ts +103 -0
  137. package/src/utils/source-icons.ts +3 -0
@@ -6,42 +6,43 @@ import {
6
6
  ProductReleasesView,
7
7
  ReleaseDetailPage,
8
8
  RoadmapView
9
- } from "../../chunk-F33RMJOL.js";
9
+ } from "../../chunk-IUQKIU5A.js";
10
10
  import {
11
11
  DocsHubPage
12
- } from "../../chunk-IF72N4PE.js";
13
- import "../../chunk-BUDZWXRG.js";
12
+ } from "../../chunk-MU5F5QXJ.js";
13
+ import "../../chunk-6QO6BIX7.js";
14
14
  import "../../chunk-6YBUQAOH.js";
15
15
  import {
16
16
  FaqDocumentPage,
17
17
  FaqSection
18
- } from "../../chunk-HA2ASGJM.js";
18
+ } from "../../chunk-PF4WAKCS.js";
19
19
  import {
20
20
  StickySectionNav,
21
21
  useScrollSpy
22
- } from "../../chunk-VSYQJCNR.js";
22
+ } from "../../chunk-4N5DLIEC.js";
23
23
  import {
24
24
  HelpCenterList
25
- } from "../../chunk-SZ3CBFSH.js";
25
+ } from "../../chunk-XDTD6YGG.js";
26
26
  import {
27
27
  ContactForm
28
- } from "../../chunk-ETQVXIYW.js";
28
+ } from "../../chunk-NLZZUWR6.js";
29
29
  import {
30
30
  DevSectionPage,
31
31
  ListEmptyState
32
- } from "../../chunk-65C4WHG4.js";
32
+ } from "../../chunk-2HLGX6JF.js";
33
33
  import "../../chunk-K76ACBR3.js";
34
- import "../../chunk-I3UUMRO7.js";
34
+ import "../../chunk-BWMEQ7IZ.js";
35
35
  import {
36
36
  OnboardingGuideDetailView,
37
37
  OnboardingGuidesCatalogView
38
- } from "../../chunk-AWWLEYAU.js";
39
- import "../../chunk-NMGWNUKB.js";
40
- import "../../chunk-SZF7ENIW.js";
38
+ } from "../../chunk-6BKDXUOQ.js";
39
+ import "../../chunk-N2PX26BZ.js";
40
+ import "../../chunk-7CNGNPBI.js";
41
41
  import {
42
42
  CommandBox,
43
43
  ComplianceLogo,
44
44
  DataAttribution,
45
+ DownloadButton,
45
46
  LoadError,
46
47
  MobileAppQr,
47
48
  PageShell,
@@ -50,14 +51,14 @@ import {
50
51
  StatusIndicator,
51
52
  StoreBadgeLinks,
52
53
  TabNavigation
53
- } from "../../chunk-KBPGSPXQ.js";
54
+ } from "../../chunk-QN3OXRTM.js";
54
55
  import "../../chunk-KS3YLYVL.js";
55
56
  import "../../chunk-LQYXMEYF.js";
56
57
  import "../../chunk-4JPLYOS6.js";
57
58
  import {
58
59
  EntityImage,
59
60
  PageLayout
60
- } from "../../chunk-UYMTAFHG.js";
61
+ } from "../../chunk-VLPGV5WH.js";
61
62
  import {
62
63
  useCopyToClipboard,
63
64
  useDownloads,
@@ -74,7 +75,7 @@ import {
74
75
  UnifiedSkeleton,
75
76
  getFlagFromCountryName,
76
77
  useIsHydrated
77
- } from "../../chunk-E7NIZXDT.js";
78
+ } from "../../chunk-S4SVKXHN.js";
78
79
  import "../../chunk-5D2K7TFT.js";
79
80
  import "../../chunk-AFTRPEXO.js";
80
81
  import {
@@ -82,7 +83,7 @@ import {
82
83
  ModalContent,
83
84
  ModalHeader,
84
85
  ModalTitle
85
- } from "../../chunk-WY4SLTMZ.js";
86
+ } from "../../chunk-MRBPJ4NB.js";
86
87
  import "../../chunk-REETLEL5.js";
87
88
  import {
88
89
  DESKTOP_OSES,
@@ -110,18 +111,20 @@ import {
110
111
  TRUST_CENTER_SECTIONS,
111
112
  TRUST_CENTER_TAGLINE,
112
113
  TRUST_CENTER_TITLE,
113
- isTrustCenterMonitored,
114
114
  normalizeTrustControlQuery,
115
115
  trustCenterControlsUrl,
116
116
  trustCenterDocumentUrl,
117
+ trustCenterMonitoringStatus,
118
+ trustCenterPdfUrl,
117
119
  trustFrameworkBadge,
118
120
  trustFrameworkMonitoringEntry,
119
- useSelfFetch
120
- } from "../../chunk-7UZ2JZJY.js";
121
+ useSelfFetch,
122
+ visibleTrustCenterSections
123
+ } from "../../chunk-CJENFR5T.js";
121
124
  import "../../chunk-H3PKYE4N.js";
122
125
  import {
123
126
  brandLogoForName
124
- } from "../../chunk-EWED6ISQ.js";
127
+ } from "../../chunk-ZQKN2Z6W.js";
125
128
  import {
126
129
  formatUrlForDisplay
127
130
  } from "../../chunk-KZQO5EJQ.js";
@@ -275,7 +278,7 @@ var FRAMEWORK_ICONS = {
275
278
  "file-shield": FileShieldIcon
276
279
  };
277
280
  var BODY_TEXT = "text-h6 text-ods-text-secondary";
278
- var TRUST_STATUS_ROW_CLASS = "flex flex-col gap-[var(--spacing-system-xs)] content-md:flex-row content-md:items-center content-md:justify-between";
281
+ var TRUST_STATUS_ROW_CLASS = "flex flex-col gap-[var(--spacing-system-xsf)] content-md:flex-row content-md:items-center content-md:justify-between";
279
282
  var TRUST_BODY_GRID_CLASS = "grid grid-cols-1 gap-[var(--spacing-system-xl)] content-lg:grid-cols-[minmax(0,1fr)_12rem]";
280
283
  var TRUST_SECTIONS_COLUMN_CLASS = "flex min-w-0 flex-col gap-[var(--spacing-system-xxl)]";
281
284
  var TRUST_SECTION_LEADS = {
@@ -657,7 +660,7 @@ function TrustCenterSkeleton() {
657
660
  /* @__PURE__ */ jsx5(UnifiedSkeleton, { className: "size-3 rounded-full" }),
658
661
  /* @__PURE__ */ jsx5(TextSkeleton.Body, { className: "w-44" })
659
662
  ] }),
660
- /* @__PURE__ */ jsxs5("div", { className: "flex shrink-0 flex-col gap-[var(--spacing-system-xxs)] content-sm:flex-row content-sm:items-center content-sm:gap-[var(--spacing-system-sf)]", children: [
663
+ /* @__PURE__ */ jsxs5("div", { className: "flex shrink-0 flex-col gap-[var(--spacing-system-xsf)] content-sm:flex-row content-sm:items-center content-sm:gap-[var(--spacing-system-sf)]", children: [
661
664
  /* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-[var(--spacing-system-xsf)]", children: [
662
665
  /* @__PURE__ */ jsx5(UnifiedSkeleton, { className: "size-4 rounded" }),
663
666
  /* @__PURE__ */ jsx5(TextSkeleton.Body, { className: "w-36" })
@@ -678,18 +681,6 @@ function TrustCenterSkeleton() {
678
681
 
679
682
  // src/components/help-center-pages/trust-center-page.tsx
680
683
  import { Fragment as Fragment2, jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
681
- function visibleSections(data) {
682
- const hasContent = {
683
- ai: data.aiPractices.length > 0,
684
- compliance: data.frameworks.length > 0,
685
- controls: data.controlDomains.length > 0,
686
- documents: data.documents.length > 0,
687
- subprocessors: data.subprocessors.length > 0,
688
- faq: data.faqs.length > 0,
689
- contact: true
690
- };
691
- return TRUST_CENTER_SECTIONS.filter((section) => hasContent[section.id]);
692
- }
693
684
  function controlsSeed(data) {
694
685
  const first = data.controlDomains[0] ?? null;
695
686
  return {
@@ -702,9 +693,8 @@ function controlsSeed(data) {
702
693
  }
703
694
  var MONITORING_CLOCK_TICK_MS = 6e4;
704
695
  function monitoringStatus(data, hydrated, nowMs) {
705
- if (!data.connected) return { status: "missing", label: "Live control monitoring is not enabled yet" };
706
- if (!hydrated) return { status: "missing", label: "Checking monitoring status" };
707
- return isTrustCenterMonitored(data, nowMs) ? { status: "success", label: "Controls continuously monitored" } : { status: "pending", label: "Monitoring paused" };
696
+ if (data.connected && !hydrated) return { status: "missing", label: "Checking monitoring status" };
697
+ return trustCenterMonitoringStatus(data, nowMs);
708
698
  }
709
699
  function TrustCenterPage({
710
700
  endpoint = TRUST_CENTER_API_PATH,
@@ -713,7 +703,8 @@ function TrustCenterPage({
713
703
  backButton = false,
714
704
  title = TRUST_CENTER_TITLE,
715
705
  subtitle = TRUST_CENTER_TAGLINE,
716
- ask
706
+ ask,
707
+ beforeFaq
717
708
  }) {
718
709
  const { data, isLoading, error, reload } = useSelfFetch(endpoint, {
719
710
  initialData,
@@ -734,7 +725,7 @@ function TrustCenterPage({
734
725
  open: false,
735
726
  documentTitle: null
736
727
  });
737
- const sections = useMemo(() => data ? visibleSections(data) : [], [data]);
728
+ const sections = useMemo(() => data ? visibleTrustCenterSections(data) : [], [data]);
738
729
  const { activeSection, handleSectionClick } = useScrollSpy(sections, {
739
730
  syncHash: true,
740
731
  headerOffset: STICKY_HEADER_OFFSET_PX
@@ -746,6 +737,7 @@ function TrustCenterPage({
746
737
  const closeRequest = useCallback(() => setRequest((current) => ({ ...current, open: false })), []);
747
738
  const hasGatedDocuments = data?.documents.some((document) => document.access === "request") ?? false;
748
739
  const actions = hasGatedDocuments ? [{ label: "Request access", variant: "accent", onClick: () => openRequest(null) }] : void 0;
740
+ const download = /* @__PURE__ */ jsx6(DownloadButton, { label: "Download PDF", href: trustCenterPdfUrl(endpoint) });
749
741
  const views = {
750
742
  ai: {
751
743
  lead: TRUST_SECTION_LEADS.ai,
@@ -777,6 +769,9 @@ function TrustCenterPage({
777
769
  faq: { render: (d) => /* @__PURE__ */ jsx6(FaqSection, { initialFaqs: d.faqs, heading: null, ask }) },
778
770
  contact: { render: () => /* @__PURE__ */ jsx6(ContactSection, { onContact: () => openRequest(null) }) }
779
771
  };
772
+ const faqSection = sections.find((section) => section.id === "faq");
773
+ const faqLast = Boolean(beforeFaq) && Boolean(faqSection);
774
+ const columnSections = faqLast ? sections.filter((section) => section.id !== "faq") : sections;
780
775
  let body;
781
776
  if (error && !data) {
782
777
  body = /* @__PURE__ */ jsx6(LoadError, { message: "Could not load the trust center", onRetry: reload });
@@ -800,12 +795,13 @@ function TrustCenterPage({
800
795
  }
801
796
  ) : void 0,
802
797
  source: data.dataSource.name,
803
- lastUpdated: data.syncedAt
798
+ lastUpdated: data.syncedAt,
799
+ action: download
804
800
  }
805
- ) : null
801
+ ) : download
806
802
  ] }),
807
803
  /* @__PURE__ */ jsxs6("div", { className: TRUST_BODY_GRID_CLASS, children: [
808
- /* @__PURE__ */ jsx6("div", { className: TRUST_SECTIONS_COLUMN_CLASS, children: sections.map((section) => {
804
+ /* @__PURE__ */ jsx6("div", { className: TRUST_SECTIONS_COLUMN_CLASS, children: columnSections.map((section) => {
809
805
  const view = views[section.id];
810
806
  return /* @__PURE__ */ jsx6(TrustSection, { id: section.id, title: section.label, lead: view.lead, children: view.render(data) }, section.id);
811
807
  }) }),
@@ -829,7 +825,15 @@ function TrustCenterPage({
829
825
  )
830
826
  ] });
831
827
  }
832
- return /* @__PURE__ */ jsx6(TrustCenterChrome, { shell, title, subtitle, backButton, actions, children: body });
828
+ return /* @__PURE__ */ jsxs6(Fragment2, { children: [
829
+ /* @__PURE__ */ jsx6(TrustCenterChrome, { shell, title, subtitle, backButton, actions, children: body }),
830
+ beforeFaq,
831
+ faqLast && faqSection && data ? (
832
+ // The page's own content box at its FULL width (no section-rail column): a closing FAQ takes the
833
+ // same space the FAQ block takes at the foot of every other page.
834
+ /* @__PURE__ */ jsx6("div", { className: shell ? "bg-ods-bg" : void 0, children: /* @__PURE__ */ jsx6("div", { className: shell ? "page-shell-content mx-auto max-w-[1920px]" : "page-shell-content", children: /* @__PURE__ */ jsx6(TrustSection, { id: faqSection.id, title: faqSection.label, lead: views.faq.lead, children: views.faq.render(data) }) }) })
835
+ ) : null
836
+ ] });
833
837
  }
834
838
  function TrustCenterChrome({
835
839
  shell,
@@ -1,3 +1,29 @@
1
+ /**
2
+ * `<TrustCenterPage>` — the full public trust center (Vanta-fed, hub-projected).
3
+ *
4
+ * ONE page, not tabs (2026 trust-center practice: buyers skim and Ctrl-F, and a
5
+ * questionnaire needs a deep link per section): hero with the monitoring status
6
+ * (with the page's PDF as a quiet link at its end) and the Request access action, then anchored sections in reading order
7
+ * (`TRUST_CENTER_SECTIONS`: AI & data use → compliance → controls → documents →
8
+ * subprocessors → FAQ → questions) with a sticky section rail on desktop
9
+ * (`StickySectionNav` + `useScrollSpy`, the vendor-page / DocViewer pattern).
10
+ * Built ONLY from existing lib components (see `trust-center-sections.tsx`); the
11
+ * chrome is the canonical `PageShell` + frozen `PageLayout`.
12
+ *
13
+ * DATA: `useSelfFetch` against `endpoint` (default `TRUST_CENTER_API_PATH`;
14
+ * embedders pass their `/content` proxy path). `initialData` (hub SSR) skips the
15
+ * first fetch; a visible tab re-validates after `TRUST_CENTER_CACHE_SECONDS`.
16
+ * CONTROLS are answered by the server (`endpoint/controls?domain=&q=`) per tab
17
+ * and per search; the page never filters, it only highlights what came back.
18
+ *
19
+ * MONITORING is derived on the client AFTER HYDRATION from `syncedAt` +
20
+ * `monitoredWindowMs` (`isTrustCenterMonitored`), against a clock re-read every
21
+ * time the data changes — so a long-open tab flips to "Monitoring paused" on
22
+ * revalidation. Before hydration the status is NEUTRAL (never a claim that
23
+ * flips). The subtitle is the brand-neutral `TRUST_CENTER_TAGLINE` unless the
24
+ * host overrides it.
25
+ */
26
+ import { type ReactNode } from 'react';
1
27
  import { type TrustCenterPublic } from '../../types/trust-center';
2
28
  import { type FaqSectionProps } from '../faq/faq-section';
3
29
  export interface TrustCenterPageProps {
@@ -19,8 +45,15 @@ export interface TrustCenterPageProps {
19
45
  subtitle?: string;
20
46
  /** The FAQ section's "ask the assistant" card (`FaqSection`'s `ask`): the host states its topic. Absent: no card. */
21
47
  ask?: FaqSectionProps['ask'];
48
+ /**
49
+ * Host content shown after the trust sections and BEFORE the FAQ (the hub's
50
+ * own "why we build in the open" sections). The FAQ is the last thing on a
51
+ * page, so with this the page draws: trust sections, this content at the
52
+ * page's full width, then the FAQ. Absent: the FAQ closes the sections column.
53
+ */
54
+ beforeFaq?: ReactNode;
22
55
  }
23
- export declare function TrustCenterPage({ endpoint, initialData, shell, backButton, title, subtitle, ask, }: TrustCenterPageProps): import("react").JSX.Element;
56
+ export declare function TrustCenterPage({ endpoint, initialData, shell, backButton, title, subtitle, ask, beforeFaq, }: TrustCenterPageProps): import("react").JSX.Element;
24
57
  /**
25
58
  * The whole page while a host loads the data itself (the hub's admin preview):
26
59
  * the SAME chrome and the same body skeleton `TrustCenterPage` shows while it
@@ -1 +1 @@
1
- {"version":3,"file":"trust-center-page.d.ts","sourceRoot":"","sources":["../../../src/components/help-center-pages/trust-center-page.tsx"],"names":[],"mappings":"AAiCA,OAAO,EASL,KAAK,iBAAiB,EAEvB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAwBtE,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;gFAC4E;IAC5E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sFAAsF;IACtF,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IACvD,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oGAAoG;IACpG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qHAAqH;IACrH,GAAG,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;CAC9B;AA2DD,wBAAgB,eAAe,CAAC,EAC9B,QAAgC,EAChC,WAAW,EACX,KAAY,EACZ,UAAkB,EAClB,KAA0B,EAC1B,QAA+B,EAC/B,GAAG,GACJ,EAAE,oBAAoB,+BA0JtB;AAuCD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,KAAY,EACZ,UAAkB,EAClB,KAA0B,EAC1B,QAA+B,GAChC,EAAE,IAAI,CAAC,oBAAoB,EAAE,OAAO,GAAG,YAAY,GAAG,OAAO,GAAG,UAAU,CAAC,+BAM3E"}
1
+ {"version":3,"file":"trust-center-page.d.ts","sourceRoot":"","sources":["../../../src/components/help-center-pages/trust-center-page.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKlF,OAAO,EAUL,KAAK,iBAAiB,EAEvB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAyBtE,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;gFAC4E;IAC5E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sFAAsF;IACtF,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IACvD,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oGAAoG;IACpG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qHAAqH;IACrH,GAAG,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IAC7B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AA0CD,wBAAgB,eAAe,CAAC,EAC9B,QAAgC,EAChC,WAAW,EACX,KAAY,EACZ,UAAkB,EAClB,KAA0B,EAC1B,QAA+B,EAC/B,GAAG,EACH,SAAS,GACV,EAAE,oBAAoB,+BAsLtB;AAuCD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,KAAY,EACZ,UAAkB,EAClB,KAA0B,EAC1B,QAA+B,GAChC,EAAE,IAAI,CAAC,oBAAoB,EAAE,OAAO,GAAG,YAAY,GAAG,OAAO,GAAG,UAAU,CAAC,+BAM3E"}
@@ -18,7 +18,7 @@ import { type TrustCenterAiPractice, type TrustCenterControlsPage, type TrustCen
18
18
  * skeleton cannot drift from what replaces it: the status row, then the sections
19
19
  * beside the section rail.
20
20
  */
21
- export declare const TRUST_STATUS_ROW_CLASS = "flex flex-col gap-[var(--spacing-system-xs)] content-md:flex-row content-md:items-center content-md:justify-between";
21
+ export declare const TRUST_STATUS_ROW_CLASS = "flex flex-col gap-[var(--spacing-system-xsf)] content-md:flex-row content-md:items-center content-md:justify-between";
22
22
  export declare const TRUST_BODY_GRID_CLASS = "grid grid-cols-1 gap-[var(--spacing-system-xl)] content-lg:grid-cols-[minmax(0,1fr)_12rem]";
23
23
  export declare const TRUST_SECTIONS_COLUMN_CLASS = "flex min-w-0 flex-col gap-[var(--spacing-system-xxl)]";
24
24
  /** Each section's one-line lead under its heading (the page and its skeleton read the same copy). */
@@ -1 +1 @@
1
- {"version":3,"file":"trust-center-sections.d.ts","sourceRoot":"","sources":["../../../src/components/help-center-pages/trust-center-sections.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGhE,OAAO,EAOL,KAAK,qBAAqB,EAE1B,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAE7B,MAAM,0BAA0B,CAAC;AAkClC;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,wHACoF,CAAC;AACxH,eAAO,MAAM,qBAAqB,+FAC4D,CAAC;AAC/F,eAAO,MAAM,2BAA2B,0DAA0D,CAAC;AAEnG,qGAAqG;AACrG,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAM7E,CAAC;AAWF,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,EAC3B,EAAE,EACF,KAAK,EACL,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAkBA;AAMD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;CAAE,+BAkB9E;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,oBAAoB,EAAE,CAAA;CAAE,+BA0BvF;AAkED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,uBAAuB,CAAA;CAAE,+BAkFtG;AAMD,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,WAAW,EACX,SAAS,GACV,EAAE;IACD,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,kGAAkG;IAClG,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,MAAM,GAAG,IAAI,CAAC;IAC9D,oEAAoE;IACpE,SAAS,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACnD,+BA0CA;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,aAAa,EACb,QAAQ,EACR,OAAO,GACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,6GAA6G;IAC7G,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,+BAiCA;AA8BD,wBAAgB,oBAAoB,CAAC,EAAE,aAAa,EAAE,EAAE;IAAE,aAAa,EAAE,uBAAuB,EAAE,CAAA;CAAE,+BA4BnG;AAMD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,IAAI,CAAA;CAAE,+BA8BtE;AAoGD;;;;;GAKG;AACH,wBAAgB,mBAAmB,gCAmClC"}
1
+ {"version":3,"file":"trust-center-sections.d.ts","sourceRoot":"","sources":["../../../src/components/help-center-pages/trust-center-sections.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGhE,OAAO,EAOL,KAAK,qBAAqB,EAE1B,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAE7B,MAAM,0BAA0B,CAAC;AAkClC;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,yHACqF,CAAC;AACzH,eAAO,MAAM,qBAAqB,+FAC4D,CAAC;AAC/F,eAAO,MAAM,2BAA2B,0DAA0D,CAAC;AAEnG,qGAAqG;AACrG,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAM7E,CAAC;AAWF,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,EAC3B,EAAE,EACF,KAAK,EACL,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAkBA;AAMD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;CAAE,+BAkB9E;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,oBAAoB,EAAE,CAAA;CAAE,+BA0BvF;AAkED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,uBAAuB,CAAA;CAAE,+BAkFtG;AAMD,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,WAAW,EACX,SAAS,GACV,EAAE;IACD,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,kGAAkG;IAClG,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,MAAM,GAAG,IAAI,CAAC;IAC9D,oEAAoE;IACpE,SAAS,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACnD,+BA0CA;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,aAAa,EACb,QAAQ,EACR,OAAO,GACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,6GAA6G;IAC7G,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,+BAiCA;AA8BD,wBAAgB,oBAAoB,CAAC,EAAE,aAAa,EAAE,EAAE;IAAE,aAAa,EAAE,uBAAuB,EAAE,CAAA;CAAE,+BA4BnG;AAMD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,IAAI,CAAA;CAAE,+BA8BtE;AAoGD;;;;;GAKG;AACH,wBAAgB,mBAAmB,gCAmClC"}