@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
@@ -15,30 +15,30 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
15
15
 
16
16
 
17
17
 
18
- var _chunkDWSBTGKTcjs = require('./chunk-DWSBTGKT.cjs');
18
+ var _chunkGRB5HVEVcjs = require('./chunk-GRB5HVEV.cjs');
19
19
  require('./chunk-ABSWD4PQ.cjs');
20
20
  require('./chunk-HQQE74RO.cjs');
21
21
  require('./chunk-DEY6XXGO.cjs');
22
22
 
23
23
 
24
- var _chunkNFABAOMDcjs = require('./chunk-NFABAOMD.cjs');
24
+ var _chunkN4NGKXUUcjs = require('./chunk-N4NGKXUU.cjs');
25
25
  require('./chunk-4LY6R4TN.cjs');
26
26
  require('./chunk-B4NCVYEQ.cjs');
27
27
  require('./chunk-MZ4KBSH7.cjs');
28
28
  require('./chunk-A6P6DHEZ.cjs');
29
29
  require('./chunk-BYUIFT7Q.cjs');
30
30
  require('./chunk-LX22Y43B.cjs');
31
- require('./chunk-P7Y626YJ.cjs');
31
+ require('./chunk-3NVSC3BU.cjs');
32
32
  require('./chunk-HP4UUBJC.cjs');
33
33
  require('./chunk-EWPR7662.cjs');
34
- require('./chunk-FDWYBJYD.cjs');
34
+ require('./chunk-7AXOAA5T.cjs');
35
35
  require('./chunk-RUZIICXT.cjs');
36
36
  require('./chunk-K2JUJ37D.cjs');
37
37
  require('./chunk-WVOTC7HW.cjs');
38
38
  require('./chunk-7DNL734S.cjs');
39
- require('./chunk-IITZ6JSC.cjs');
39
+ require('./chunk-DGNGABNG.cjs');
40
40
  require('./chunk-AL2GUHAJ.cjs');
41
- require('./chunk-LV6UJD2K.cjs');
41
+ require('./chunk-JKWQWHNV.cjs');
42
42
  require('./chunk-TKFTWM3V.cjs');
43
43
  require('./chunk-MGHIV4L6.cjs');
44
44
  require('./chunk-7GRPR7XA.cjs');
@@ -116,14 +116,14 @@ var noop = () => {
116
116
  var HIDDEN_WHEN_COMPACT = ["organization"];
117
117
  function StaticPackageField({ value }) {
118
118
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
119
- _chunkNFABAOMDcjs.Autocomplete,
119
+ _chunkN4NGKXUUcjs.Autocomplete,
120
120
  {
121
- label: _chunkDWSBTGKTcjs.PACKAGE_SEARCH_LABEL,
121
+ label: _chunkGRB5HVEVcjs.PACKAGE_SEARCH_LABEL,
122
122
  labelVariant: "large",
123
123
  options: value ? [{ value: value.id, label: value.name, description: _nullishCoalesce(value.description, () => ( void 0)) }] : [],
124
124
  value: _nullishCoalesce(_optionalChain([value, 'optionalAccess', _ => _.id]), () => ( null)),
125
125
  onChange: noop,
126
- placeholder: _chunkDWSBTGKTcjs.PACKAGE_SEARCH_PLACEHOLDER
126
+ placeholder: _chunkGRB5HVEVcjs.PACKAGE_SEARCH_PLACEHOLDER
127
127
  }
128
128
  );
129
129
  }
@@ -137,7 +137,7 @@ function SoftwareUpdateScreen({ compact = false }) {
137
137
  [fixture.devices, fixture.selectedIds]
138
138
  );
139
139
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
140
- _chunkDWSBTGKTcjs.SoftwareActionForm,
140
+ _chunkGRB5HVEVcjs.SoftwareActionForm,
141
141
  {
142
142
  action: fixture.action,
143
143
  showHeader: false,
@@ -149,7 +149,7 @@ function SoftwareUpdateScreen({ compact = false }) {
149
149
  initialValues: fixture.initialValues,
150
150
  renderPackageSearch,
151
151
  renderDevicePicker: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
152
- _chunkDWSBTGKTcjs.DeviceSelector,
152
+ _chunkGRB5HVEVcjs.DeviceSelector,
153
153
  {
154
154
  devices: selected,
155
155
  loading: false,
@@ -100,14 +100,36 @@ function isTrustCenterMonitored(data, nowMs) {
100
100
  const synced = Date.parse(data.syncedAt);
101
101
  return Number.isFinite(synced) && nowMs - synced <= data.monitoredWindowMs;
102
102
  }
103
+ function trustCenterMonitoringStatus(data, nowMs) {
104
+ if (!data.connected) return { status: "missing", label: "Live control monitoring is not enabled yet" };
105
+ return isTrustCenterMonitored(data, nowMs) ? { status: "success", label: "Controls continuously monitored" } : { status: "pending", label: "Monitoring paused" };
106
+ }
103
107
  function trustFrameworksSummary(frameworks) {
104
108
  return frameworks.map((f) => `${f.label}: ${trustFrameworkBadge(f)}`).join(" \xB7 ");
105
109
  }
110
+ function besideTrustCenterEndpoint(endpoint, segment) {
111
+ const [path, query] = endpoint.split("?", 2);
112
+ return `${path}/${segment}${query ? `?${query}` : ""}`;
113
+ }
106
114
  function trustCenterDocumentUrl(endpoint, document) {
107
115
  if (document.access !== "public") return null;
108
116
  if (document.externalUrl) return document.externalUrl;
109
- const [path, query] = endpoint.split("?", 2);
110
- return `${path}/documents/${encodeURIComponent(document.id)}${query ? `?${query}` : ""}`;
117
+ return besideTrustCenterEndpoint(endpoint, `documents/${encodeURIComponent(document.id)}`);
118
+ }
119
+ function trustCenterPdfUrl(endpoint) {
120
+ return besideTrustCenterEndpoint(endpoint, "pdf");
121
+ }
122
+ function visibleTrustCenterSections(data) {
123
+ const hasContent = {
124
+ ai: data.aiPractices.length > 0,
125
+ compliance: data.frameworks.length > 0,
126
+ controls: data.controlDomains.length > 0,
127
+ documents: data.documents.length > 0,
128
+ subprocessors: data.subprocessors.length > 0,
129
+ faq: data.faqs.length > 0,
130
+ contact: true
131
+ };
132
+ return TRUST_CENTER_SECTIONS.filter((section) => hasContent[section.id]);
111
133
  }
112
134
  var TRUST_CENTER_SEARCH_PARAM = "q";
113
135
  var TRUST_CENTER_SEARCH_MAX_CHARS = 100;
@@ -575,7 +597,10 @@ exports.shellLabels = shellLabels;
575
597
  exports.toolLabels = toolLabels;
576
598
  exports.trustCenterControlsUrl = trustCenterControlsUrl;
577
599
  exports.trustCenterDocumentUrl = trustCenterDocumentUrl;
600
+ exports.trustCenterMonitoringStatus = trustCenterMonitoringStatus;
601
+ exports.trustCenterPdfUrl = trustCenterPdfUrl;
578
602
  exports.trustControlQueryMatcher = trustControlQueryMatcher;
579
603
  exports.trustFrameworkBadge = trustFrameworkBadge;
580
604
  exports.trustFrameworkMonitoringEntry = trustFrameworkMonitoringEntry;
581
605
  exports.trustFrameworksSummary = trustFrameworksSummary;
606
+ exports.visibleTrustCenterSections = visibleTrustCenterSections;
@@ -98,14 +98,36 @@ function isTrustCenterMonitored(data, nowMs) {
98
98
  const synced = Date.parse(data.syncedAt);
99
99
  return Number.isFinite(synced) && nowMs - synced <= data.monitoredWindowMs;
100
100
  }
101
+ function trustCenterMonitoringStatus(data, nowMs) {
102
+ if (!data.connected) return { status: "missing", label: "Live control monitoring is not enabled yet" };
103
+ return isTrustCenterMonitored(data, nowMs) ? { status: "success", label: "Controls continuously monitored" } : { status: "pending", label: "Monitoring paused" };
104
+ }
101
105
  function trustFrameworksSummary(frameworks) {
102
106
  return frameworks.map((f) => `${f.label}: ${trustFrameworkBadge(f)}`).join(" \xB7 ");
103
107
  }
108
+ function besideTrustCenterEndpoint(endpoint, segment) {
109
+ const [path, query] = endpoint.split("?", 2);
110
+ return `${path}/${segment}${query ? `?${query}` : ""}`;
111
+ }
104
112
  function trustCenterDocumentUrl(endpoint, document) {
105
113
  if (document.access !== "public") return null;
106
114
  if (document.externalUrl) return document.externalUrl;
107
- const [path, query] = endpoint.split("?", 2);
108
- return `${path}/documents/${encodeURIComponent(document.id)}${query ? `?${query}` : ""}`;
115
+ return besideTrustCenterEndpoint(endpoint, `documents/${encodeURIComponent(document.id)}`);
116
+ }
117
+ function trustCenterPdfUrl(endpoint) {
118
+ return besideTrustCenterEndpoint(endpoint, "pdf");
119
+ }
120
+ function visibleTrustCenterSections(data) {
121
+ const hasContent = {
122
+ ai: data.aiPractices.length > 0,
123
+ compliance: data.frameworks.length > 0,
124
+ controls: data.controlDomains.length > 0,
125
+ documents: data.documents.length > 0,
126
+ subprocessors: data.subprocessors.length > 0,
127
+ faq: data.faqs.length > 0,
128
+ contact: true
129
+ };
130
+ return TRUST_CENTER_SECTIONS.filter((section) => hasContent[section.id]);
109
131
  }
110
132
  var TRUST_CENTER_SEARCH_PARAM = "q";
111
133
  var TRUST_CENTER_SEARCH_MAX_CHARS = 100;
@@ -526,4 +548,4 @@ var TMCG_ROLE_DISPLAY_NAMES = {
526
548
  [TMCG_ROLES.MENTOR]: "Mentor"
527
549
  };
528
550
 
529
- export { ANNOUNCEMENT_CTA_DEFAULTS, APP_DOWNLOAD_KINDS, AVAILABLE_SVG_ICONS, DESKTOP_OS_LABELS, DOWNLOADS_API_PATH, DOWNLOADS_CACHE_SECONDS, DOWNLOADS_MOBILE_TAGLINE, DOWNLOADS_MOBILE_TITLE, DOWNLOADS_TAGLINE, DOWNLOADS_TITLE, DOWNLOAD_ARCHITECTURE_LABELS, ENTITY_QUOTES_TITLE, OSTypeValues, OS_TYPES, SEMVER_REGEX, SHELL_TYPES, ShellTypeValues, TASK_TYPE_LABELS, TASK_TYPE_TEXT_COLORS, TMCG_ROLES, TMCG_ROLE_DISPLAY_NAMES, TRUST_CENTER_API_PATH, TRUST_CENTER_CACHE_SECONDS, TRUST_CENTER_CARD_ID, TRUST_CENTER_DOCUMENT_CACHE_SECONDS, TRUST_CENTER_DOCUMENT_TYPE, TRUST_CENTER_DOMAIN_PARAM, TRUST_CENTER_PAGE_PATH, TRUST_CENTER_SEARCH_DEBOUNCE_MS, TRUST_CENTER_SEARCH_MAX_CHARS, TRUST_CENTER_SEARCH_PARAM, TRUST_CENTER_SECTIONS, TRUST_CENTER_TAGLINE, TRUST_CENTER_TITLE, TRUST_FRAMEWORK_MONITORING, ToolTypeValues, changelogLabels, filterTrustControlDomains, isTrustCenterMonitored, normalizeTrustControlQuery, osLabels, releaseStatusOptions, releaseTypeOptions, shellLabels, toolLabels, trustCenterControlsUrl, trustCenterDocumentUrl, trustControlQueryMatcher, trustFrameworkBadge, trustFrameworkMonitoringEntry, trustFrameworksSummary };
551
+ export { ANNOUNCEMENT_CTA_DEFAULTS, APP_DOWNLOAD_KINDS, AVAILABLE_SVG_ICONS, DESKTOP_OS_LABELS, DOWNLOADS_API_PATH, DOWNLOADS_CACHE_SECONDS, DOWNLOADS_MOBILE_TAGLINE, DOWNLOADS_MOBILE_TITLE, DOWNLOADS_TAGLINE, DOWNLOADS_TITLE, DOWNLOAD_ARCHITECTURE_LABELS, ENTITY_QUOTES_TITLE, OSTypeValues, OS_TYPES, SEMVER_REGEX, SHELL_TYPES, ShellTypeValues, TASK_TYPE_LABELS, TASK_TYPE_TEXT_COLORS, TMCG_ROLES, TMCG_ROLE_DISPLAY_NAMES, TRUST_CENTER_API_PATH, TRUST_CENTER_CACHE_SECONDS, TRUST_CENTER_CARD_ID, TRUST_CENTER_DOCUMENT_CACHE_SECONDS, TRUST_CENTER_DOCUMENT_TYPE, TRUST_CENTER_DOMAIN_PARAM, TRUST_CENTER_PAGE_PATH, TRUST_CENTER_SEARCH_DEBOUNCE_MS, TRUST_CENTER_SEARCH_MAX_CHARS, TRUST_CENTER_SEARCH_PARAM, TRUST_CENTER_SECTIONS, TRUST_CENTER_TAGLINE, TRUST_CENTER_TITLE, TRUST_FRAMEWORK_MONITORING, ToolTypeValues, changelogLabels, filterTrustControlDomains, isTrustCenterMonitored, normalizeTrustControlQuery, osLabels, releaseStatusOptions, releaseTypeOptions, shellLabels, toolLabels, trustCenterControlsUrl, trustCenterDocumentUrl, trustCenterMonitoringStatus, trustCenterPdfUrl, trustControlQueryMatcher, trustFrameworkBadge, trustFrameworkMonitoringEntry, trustFrameworksSummary, visibleTrustCenterSections };
@@ -157,14 +157,31 @@ export interface TrustCenterDataSource {
157
157
  }
158
158
  /** Client-side "monitored" rule (after mount only — never in SSR output). */
159
159
  export declare function isTrustCenterMonitored(data: Pick<TrustCenterPublic, 'connected' | 'syncedAt' | 'monitoredWindowMs'>, nowMs: number): boolean;
160
+ /**
161
+ * THE monitoring claim and its wording, judged against a clock: monitored,
162
+ * paused, or not enabled. The page reads it after mount (its own clock) and the
163
+ * PDF when it is generated, so both say the same thing in the same words.
164
+ */
165
+ export declare function trustCenterMonitoringStatus(data: Pick<TrustCenterPublic, 'connected' | 'syncedAt' | 'monitoredWindowMs'>, nowMs: number): {
166
+ status: 'success' | 'pending' | 'missing';
167
+ label: string;
168
+ };
160
169
  /** "SOC 2 Type II: In progress · ISO 27001: Planned" — the ONE framework summary line (chat card, RAG mapper). */
161
170
  export declare function trustFrameworksSummary(frameworks: ReadonlyArray<Pick<TrustCenterFramework, 'label' | 'monitoring' | 'percent'>>): string;
162
171
  /**
163
172
  * Where a public document opens: its own link, or — for a file — the hub's
164
- * documents route beside the page's `endpoint` (which may carry a query string,
165
- * e.g. an embed proxy). `null` for a document that is only available on request.
173
+ * documents route beside the page's `endpoint`. `null` for a document that is
174
+ * only available on request.
166
175
  */
167
176
  export declare function trustCenterDocumentUrl(endpoint: string, document: Pick<TrustCenterDocument, 'id' | 'access' | 'externalUrl'>): string | null;
177
+ /** Where the page downloads as a PDF: the hub's `pdf` route beside the page's `endpoint`. */
178
+ export declare function trustCenterPdfUrl(endpoint: string): string;
179
+ /**
180
+ * THE rule for which sections a trust center shows, in reading order: a section
181
+ * with nothing to list is left out; Contact always shows. The page and its PDF
182
+ * both read it, so the two can never disagree about what is published.
183
+ */
184
+ export declare function visibleTrustCenterSections(data: Pick<TrustCenterPublic, 'aiPractices' | 'frameworks' | 'controlDomains' | 'documents' | 'subprocessors' | 'faqs'>): Array<(typeof TRUST_CENTER_SECTIONS)[number]>;
168
185
  /** The controls endpoint's search parameter. */
169
186
  export declare const TRUST_CENTER_SEARCH_PARAM = "q";
170
187
  /** Longest query the controls endpoint reads; the rest is ignored. */
@@ -1 +1 @@
1
- {"version":3,"file":"trust-center.d.ts","sourceRoot":"","sources":["../../src/types/trust-center.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trust-center.d.ts","sourceRoot":"","sources":["../../src/types/trust-center.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * The AI model providers the product names: what each is called and the NAME of
3
+ * its mark in the icon set. THE one owner of both, for every surface that shows
4
+ * a provider (the token rates, a model picker). Server-safe: it holds names
5
+ * only, and the mark is resolved from the icon set by that name where it is
6
+ * drawn (`findIcon`), so no surface imports a provider's icon.
7
+ *
8
+ * A host that is told a provider's name or mark by its server states them on
9
+ * the record and they win. A provider this list has not met is named from its
10
+ * key, and its mark is looked up by the icon set's own naming
11
+ * (`<provider>-logo-grey`), so a logo added to the set shows with no change here.
12
+ */
13
+ export interface AiProvider {
14
+ /** The name people know the provider by. */
15
+ label: string;
16
+ /** The icon set's name of the provider's monochrome mark. */
17
+ icon: string;
18
+ }
19
+ /** Keyed by the provider key billing sends (`ANTHROPIC`). */
20
+ export declare const AI_PROVIDERS: Readonly<Record<string, AiProvider>>;
21
+ /**
22
+ * A provider by its key: what a host stated for it, else this list's entry,
23
+ * else its key read as a name and the mark the icon set would hold for it.
24
+ */
25
+ export declare function aiProvider(key: string, stated?: {
26
+ label?: string | null;
27
+ icon?: string | null;
28
+ } | null): AiProvider;
29
+ //# sourceMappingURL=ai-providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-providers.d.ts","sourceRoot":"","sources":["../../src/utils/ai-providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,6DAA6D;AAC7D,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAI7D,CAAC;AAQF;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GAAG,UAAU,CAQnH"}
@@ -304,8 +304,8 @@ function formatAbbreviatedNumber(n) {
304
304
  function nameInitials(name, fallback = "E", options = {}) {
305
305
  const { maxLetters = 2, pick: mode = "all" } = options;
306
306
  const source = typeof name === "string" ? name.trim() : "";
307
- const words = source.length > 0 ? source.split(/\s+/).filter(Boolean) : [];
308
- const chosen = mode === "first-last" && words.length > 1 ? [words[0], words[words.length - 1]] : words.slice(0, maxLetters);
307
+ const words2 = source.length > 0 ? source.split(/\s+/).filter(Boolean) : [];
308
+ const chosen = mode === "first-last" && words2.length > 1 ? [words2[0], words2[words2.length - 1]] : words2.slice(0, maxLetters);
309
309
  const letters = chosen.map((w) => w[0]).filter(Boolean).slice(0, maxLetters).join("");
310
310
  return (letters || fallback).toUpperCase();
311
311
  }
@@ -658,6 +658,67 @@ function formatUrlForDisplay(url, options = {}) {
658
658
  return url.replace(options.keepWww ? /^https?:\/\//i : /^https?:\/\/(www\.)?/i, "").replace(/[?#].*$/, "").replace(/\/$/, "");
659
659
  }
660
660
 
661
+ // src/utils/ai-providers.ts
662
+ var AI_PROVIDERS = {
663
+ ANTHROPIC: { label: "Anthropic", icon: "anthropic-logo-grey" },
664
+ OPENAI: { label: "OpenAI", icon: "openai-logo-grey" },
665
+ GOOGLE_GEMINI: { label: "Google Gemini", icon: "gemini-logo-grey" }
666
+ };
667
+ var words = (key) => key.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean);
668
+ function aiProvider(key, stated) {
669
+ const known = AI_PROVIDERS[key];
670
+ const parts = words(key);
671
+ return {
672
+ label: stated?.label || known?.label || parts.map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ") || key,
673
+ icon: stated?.icon || known?.icon || `${parts.join("-")}-logo-grey`
674
+ };
675
+ }
676
+
677
+ // src/utils/model-token-rates.ts
678
+ var TOKEN_RATE_EMPTY = "\u2014";
679
+ function formatTokenRate(value) {
680
+ if (value == null || !Number.isFinite(value) || value <= 0) return TOKEN_RATE_EMPTY;
681
+ const rounded = value >= 0.1 ? Number(value.toFixed(2)) : Number(value.toPrecision(2));
682
+ return `${rounded}\xD7`;
683
+ }
684
+ function tokenCost(tokens, tokenPrice) {
685
+ if (!tokenPrice || !(tokenPrice.tokens > 0) || !(tokenPrice.price > 0) || !(tokens >= 0)) return null;
686
+ return tokens / tokenPrice.tokens * tokenPrice.price;
687
+ }
688
+ var TOKEN_AMOUNT_UNITS = [
689
+ { size: 1e9, suffix: "B" },
690
+ { size: 1e6, suffix: "M" },
691
+ { size: 1e3, suffix: "K" }
692
+ ];
693
+ function formatTokenAmount(tokens) {
694
+ if (tokens == null || !Number.isFinite(tokens) || tokens < 0) return TOKEN_RATE_EMPTY;
695
+ const whole = Math.round(tokens);
696
+ if (whole < 1e3) return String(whole);
697
+ for (const [index, unit] of TOKEN_AMOUNT_UNITS.entries()) {
698
+ if (whole < unit.size) continue;
699
+ const figure = Number((whole / unit.size).toPrecision(3));
700
+ const larger = TOKEN_AMOUNT_UNITS[index - 1];
701
+ return figure >= 1e3 && larger ? `1${larger.suffix}` : `${figure}${unit.suffix}`;
702
+ }
703
+ return String(whole);
704
+ }
705
+ function tokensForBalance(balance, rate) {
706
+ if (rate == null || !Number.isFinite(rate) || rate <= 0 || !(balance > 0)) return null;
707
+ return balance / rate;
708
+ }
709
+ function tokenRateProviderLabel(providerType, stated) {
710
+ return aiProvider(providerType, { label: stated }).label;
711
+ }
712
+ function groupTokenRatesByProvider(rates) {
713
+ const groups = /* @__PURE__ */ new Map();
714
+ for (const rate of rates) {
715
+ const group = groups.get(rate.providerType);
716
+ if (group) group.push(rate);
717
+ else groups.set(rate.providerType, [rate]);
718
+ }
719
+ return [...groups].map(([providerType, grouped]) => ({ providerType, rates: grouped }));
720
+ }
721
+
661
722
  // src/utils/trial.ts
662
723
  var TRIAL_DAYS = 14;
663
724
  var TRIAL_LABELS = {
@@ -3513,6 +3574,7 @@ var SOURCE_ICON_NAMES = {
3513
3574
  "trust-center": "shield-check",
3514
3575
  // The public website's own pages (live source): the site's own mark, as a glyph in the slot's colour
3515
3576
  "website-pages": "flamingo-logo-grey",
3577
+ "openframe-pricing": "money-bill-dollar",
3516
3578
  // The OpenMSP vendor directory: the icon the site menu's "Tool directory" entry draws (it reads this one)
3517
3579
  vendors: "package-search",
3518
3580
  // Financials
@@ -3578,6 +3640,7 @@ var SOURCE_LABELS_BY_TABLE = {
3578
3640
  // Trust
3579
3641
  "trust-center": "Trust Center",
3580
3642
  "website-pages": "Website",
3643
+ "openframe-pricing": "OpenFrame pricing",
3581
3644
  vendors: "Vendor Directory",
3582
3645
  // Financials
3583
3646
  "investor-updates": "Investor Updates",
@@ -3647,6 +3710,7 @@ var DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = {
3647
3710
  // Trust
3648
3711
  trust_center: "trust-center",
3649
3712
  site_page: "website-pages",
3713
+ openframe_price: "openframe-pricing",
3650
3714
  vendor: "vendors",
3651
3715
  // Financials
3652
3716
  investor_update: "investor-updates",
@@ -5201,6 +5265,7 @@ var BUILDERS = {
5201
5265
  prospect_call: (ids, b) => `${b}/api/prospect-calls?ids=${ids.join(",")}`,
5202
5266
  // The public website's own pages (live source; ChatRef-shaped items like the objects above).
5203
5267
  site_page: (ids, b) => `${b}/api/site-pages?ids=${ids.join(",")}`,
5268
+ openframe_price: (ids, b) => `${b}/api/openframe-pricing?ids=${ids.join(",")}`,
5204
5269
  // The OpenMSP vendor directory (indexed source).
5205
5270
  vendor: (ids, b) => `${b}/api/vendors/cards?ids=${ids.join(",")}`,
5206
5271
  // Code intelligence — per-object card hydration, same `handleEntityCardList`
@@ -6471,6 +6536,7 @@ function pathMatchesAny(pathname, patterns) {
6471
6536
  }
6472
6537
 
6473
6538
  exports.ACTIVE_ANCHOR_ATTRIBUTE = ACTIVE_ANCHOR_ATTRIBUTE;
6539
+ exports.AI_PROVIDERS = AI_PROVIDERS;
6474
6540
  exports.ANTHROPIC_SUPPORTED_IMAGE_MIME = ANTHROPIC_SUPPORTED_IMAGE_MIME;
6475
6541
  exports.AUTO_CONTINUATION_DIRECTIVE_PREFIX = AUTO_CONTINUATION_DIRECTIVE_PREFIX;
6476
6542
  exports.BADGE_PALETTE = BADGE_PALETTE;
@@ -6555,12 +6621,14 @@ exports.STICKY_HEADER_OFFSET_PX = STICKY_HEADER_OFFSET_PX;
6555
6621
  exports.TAILWIND_STEP_TO_ODS_TOKEN = TAILWIND_STEP_TO_ODS_TOKEN;
6556
6622
  exports.TICKET_OPEN_PARAM = TICKET_OPEN_PARAM;
6557
6623
  exports.TICKET_STATUS_OPTIONS = TICKET_STATUS_OPTIONS;
6624
+ exports.TOKEN_RATE_EMPTY = TOKEN_RATE_EMPTY;
6558
6625
  exports.TRIAL_DAYS = TRIAL_DAYS;
6559
6626
  exports.TRIAL_LABELS = TRIAL_LABELS;
6560
6627
  exports.VENDOR_CLASSIFICATIONS = VENDOR_CLASSIFICATIONS;
6561
6628
  exports.VIEWER_TIMEZONE = VIEWER_TIMEZONE;
6562
6629
  exports.WALKTHROUGH_OPEN_QUERY_PARAM = WALKTHROUGH_OPEN_QUERY_PARAM;
6563
6630
  exports.WALKTHROUGH_VIDEO_DISMISS_KEY = WALKTHROUGH_VIDEO_DISMISS_KEY;
6631
+ exports.aiProvider = aiProvider;
6564
6632
  exports.analyzeImageColor = analyzeImageColor;
6565
6633
  exports.announcementDismissCookieName = announcementDismissCookieName;
6566
6634
  exports.applyProxyAuth = applyProxyAuth;
@@ -6684,6 +6752,8 @@ exports.formatSingularLookupInvocation = formatSingularLookupInvocation;
6684
6752
  exports.formatTicketFullTimestamp = formatTicketFullTimestamp;
6685
6753
  exports.formatTicketRelativeTime = formatTicketRelativeTime;
6686
6754
  exports.formatTimeWithTimezone = formatTimeWithTimezone;
6755
+ exports.formatTokenAmount = formatTokenAmount;
6756
+ exports.formatTokenRate = formatTokenRate;
6687
6757
  exports.formatUnderscoreText = formatUnderscoreText;
6688
6758
  exports.formatUrlForDisplay = formatUrlForDisplay;
6689
6759
  exports.formatWebinarTimeMeta = formatWebinarTimeMeta;
@@ -6758,6 +6828,7 @@ exports.getToolLabel = getToolLabel;
6758
6828
  exports.getToolTypeAliases = getToolTypeAliases;
6759
6829
  exports.getTrendColors = getTrendColors;
6760
6830
  exports.groupSourcesByTable = groupSourcesByTable;
6831
+ exports.groupTokenRatesByProvider = groupTokenRatesByProvider;
6761
6832
  exports.groupsByTable = groupsByTable;
6762
6833
  exports.hasGenericEmailDomain = hasGenericEmailDomain;
6763
6834
  exports.hexToRgb = hexToRgb2;
@@ -6894,6 +6965,9 @@ exports.toFigmaOriginalUrl = toFigmaOriginalUrl;
6894
6965
  exports.toGoogleSheetsEmbedUrl = toGoogleSheetsEmbedUrl;
6895
6966
  exports.toGoogleSheetsOriginalUrl = toGoogleSheetsOriginalUrl;
6896
6967
  exports.toToolLabel = toToolLabel;
6968
+ exports.tokenCost = tokenCost;
6969
+ exports.tokenRateProviderLabel = tokenRateProviderLabel;
6970
+ exports.tokensForBalance = tokensForBalance;
6897
6971
  exports.transformPlatformConfigsToOptions = transformPlatformConfigsToOptions;
6898
6972
  exports.truncateString = truncateString;
6899
6973
  exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg;
@@ -1,6 +1,8 @@
1
1
  export { cn } from './cn';
2
2
  export { getPlatformUrl, getPlatformProductionUrl, getAllPlatformBaseDomains, getDeploymentUrl, getRequestOrigin, isLocalUrl, resolveRedirectTarget, } from '../platform-domains';
3
3
  export { formatDate, formatNumber, formatPrice, formatBytes, formatUrlForDisplay } from './format';
4
+ export * from './ai-providers';
5
+ export * from './model-token-rates';
4
6
  export { TRIAL_DAYS, TRIAL_LABELS } from './trial';
5
7
  export { VENDOR_CLASSIFICATIONS, OPENFRAME_CLASSIFICATIONS, isVendorClassification, isOpenFrameClassification, type VendorClassificationValue, type OpenFrameClassification, type OpenFrameClassificationCopy, } from './vendor-classification';
6
8
  export { PLAY_ICON_PATH } from '../components/icons-v2-generated/media-playback/play-icon';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
@@ -298,8 +298,8 @@ function formatAbbreviatedNumber(n) {
298
298
  function nameInitials(name, fallback = "E", options = {}) {
299
299
  const { maxLetters = 2, pick: mode = "all" } = options;
300
300
  const source = typeof name === "string" ? name.trim() : "";
301
- const words = source.length > 0 ? source.split(/\s+/).filter(Boolean) : [];
302
- const chosen = mode === "first-last" && words.length > 1 ? [words[0], words[words.length - 1]] : words.slice(0, maxLetters);
301
+ const words2 = source.length > 0 ? source.split(/\s+/).filter(Boolean) : [];
302
+ const chosen = mode === "first-last" && words2.length > 1 ? [words2[0], words2[words2.length - 1]] : words2.slice(0, maxLetters);
303
303
  const letters = chosen.map((w) => w[0]).filter(Boolean).slice(0, maxLetters).join("");
304
304
  return (letters || fallback).toUpperCase();
305
305
  }
@@ -652,6 +652,67 @@ function formatUrlForDisplay(url, options = {}) {
652
652
  return url.replace(options.keepWww ? /^https?:\/\//i : /^https?:\/\/(www\.)?/i, "").replace(/[?#].*$/, "").replace(/\/$/, "");
653
653
  }
654
654
 
655
+ // src/utils/ai-providers.ts
656
+ var AI_PROVIDERS = {
657
+ ANTHROPIC: { label: "Anthropic", icon: "anthropic-logo-grey" },
658
+ OPENAI: { label: "OpenAI", icon: "openai-logo-grey" },
659
+ GOOGLE_GEMINI: { label: "Google Gemini", icon: "gemini-logo-grey" }
660
+ };
661
+ var words = (key) => key.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean);
662
+ function aiProvider(key, stated) {
663
+ const known = AI_PROVIDERS[key];
664
+ const parts = words(key);
665
+ return {
666
+ label: stated?.label || known?.label || parts.map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ") || key,
667
+ icon: stated?.icon || known?.icon || `${parts.join("-")}-logo-grey`
668
+ };
669
+ }
670
+
671
+ // src/utils/model-token-rates.ts
672
+ var TOKEN_RATE_EMPTY = "\u2014";
673
+ function formatTokenRate(value) {
674
+ if (value == null || !Number.isFinite(value) || value <= 0) return TOKEN_RATE_EMPTY;
675
+ const rounded = value >= 0.1 ? Number(value.toFixed(2)) : Number(value.toPrecision(2));
676
+ return `${rounded}\xD7`;
677
+ }
678
+ function tokenCost(tokens, tokenPrice) {
679
+ if (!tokenPrice || !(tokenPrice.tokens > 0) || !(tokenPrice.price > 0) || !(tokens >= 0)) return null;
680
+ return tokens / tokenPrice.tokens * tokenPrice.price;
681
+ }
682
+ var TOKEN_AMOUNT_UNITS = [
683
+ { size: 1e9, suffix: "B" },
684
+ { size: 1e6, suffix: "M" },
685
+ { size: 1e3, suffix: "K" }
686
+ ];
687
+ function formatTokenAmount(tokens) {
688
+ if (tokens == null || !Number.isFinite(tokens) || tokens < 0) return TOKEN_RATE_EMPTY;
689
+ const whole = Math.round(tokens);
690
+ if (whole < 1e3) return String(whole);
691
+ for (const [index, unit] of TOKEN_AMOUNT_UNITS.entries()) {
692
+ if (whole < unit.size) continue;
693
+ const figure = Number((whole / unit.size).toPrecision(3));
694
+ const larger = TOKEN_AMOUNT_UNITS[index - 1];
695
+ return figure >= 1e3 && larger ? `1${larger.suffix}` : `${figure}${unit.suffix}`;
696
+ }
697
+ return String(whole);
698
+ }
699
+ function tokensForBalance(balance, rate) {
700
+ if (rate == null || !Number.isFinite(rate) || rate <= 0 || !(balance > 0)) return null;
701
+ return balance / rate;
702
+ }
703
+ function tokenRateProviderLabel(providerType, stated) {
704
+ return aiProvider(providerType, { label: stated }).label;
705
+ }
706
+ function groupTokenRatesByProvider(rates) {
707
+ const groups = /* @__PURE__ */ new Map();
708
+ for (const rate of rates) {
709
+ const group = groups.get(rate.providerType);
710
+ if (group) group.push(rate);
711
+ else groups.set(rate.providerType, [rate]);
712
+ }
713
+ return [...groups].map(([providerType, grouped]) => ({ providerType, rates: grouped }));
714
+ }
715
+
655
716
  // src/utils/trial.ts
656
717
  var TRIAL_DAYS = 14;
657
718
  var TRIAL_LABELS = {
@@ -3507,6 +3568,7 @@ var SOURCE_ICON_NAMES = {
3507
3568
  "trust-center": "shield-check",
3508
3569
  // The public website's own pages (live source): the site's own mark, as a glyph in the slot's colour
3509
3570
  "website-pages": "flamingo-logo-grey",
3571
+ "openframe-pricing": "money-bill-dollar",
3510
3572
  // The OpenMSP vendor directory: the icon the site menu's "Tool directory" entry draws (it reads this one)
3511
3573
  vendors: "package-search",
3512
3574
  // Financials
@@ -3572,6 +3634,7 @@ var SOURCE_LABELS_BY_TABLE = {
3572
3634
  // Trust
3573
3635
  "trust-center": "Trust Center",
3574
3636
  "website-pages": "Website",
3637
+ "openframe-pricing": "OpenFrame pricing",
3575
3638
  vendors: "Vendor Directory",
3576
3639
  // Financials
3577
3640
  "investor-updates": "Investor Updates",
@@ -3641,6 +3704,7 @@ var DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = {
3641
3704
  // Trust
3642
3705
  trust_center: "trust-center",
3643
3706
  site_page: "website-pages",
3707
+ openframe_price: "openframe-pricing",
3644
3708
  vendor: "vendors",
3645
3709
  // Financials
3646
3710
  investor_update: "investor-updates",
@@ -5195,6 +5259,7 @@ var BUILDERS = {
5195
5259
  prospect_call: (ids, b) => `${b}/api/prospect-calls?ids=${ids.join(",")}`,
5196
5260
  // The public website's own pages (live source; ChatRef-shaped items like the objects above).
5197
5261
  site_page: (ids, b) => `${b}/api/site-pages?ids=${ids.join(",")}`,
5262
+ openframe_price: (ids, b) => `${b}/api/openframe-pricing?ids=${ids.join(",")}`,
5198
5263
  // The OpenMSP vendor directory (indexed source).
5199
5264
  vendor: (ids, b) => `${b}/api/vendors/cards?ids=${ids.join(",")}`,
5200
5265
  // Code intelligence — per-object card hydration, same `handleEntityCardList`
@@ -6464,4 +6529,4 @@ function pathMatchesAny(pathname, patterns) {
6464
6529
  return (patterns ?? []).some((pattern) => matchesPathPattern(pathname, pattern));
6465
6530
  }
6466
6531
 
6467
- export { ACTIVE_ANCHOR_ATTRIBUTE, ANTHROPIC_SUPPORTED_IMAGE_MIME, AUTO_CONTINUATION_DIRECTIVE_PREFIX, BADGE_PALETTE, BITE_ID_RE, BRAND_MARK_SVGS, CHAT_ATTACHMENT_MARKDOWN_PATTERN, CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM, CHAT_ATTACHMENT_VIEW_URL_PREFIX, CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED, COMPLIANCE_STANDARDS, CONTENT_REF_GROUPS, CSV_CONTENT_TYPE, CUSTOM_ITEM_ID, DEFAULT_CONTENT_SUFFIXES, DEFAULT_FOLDER_INDEX_FILE, DEFAULT_MIN_FILL_MS, DEFAULT_OS_PLATFORM, DELIVERY_TASK_TYPE_OPTIONS, DESIGN_DOC_READINESS, DESIGN_DOC_READINESS_DISPLAY, DESIGN_PALETTE, DESKTOP_OSES, DEV_SECTION_PARAM_KEYS, DOC_TABLE_TYPES, DOWNLOAD_PAGE_PATH, ELAPSED_MS_FIELD, EMBED_PROXY_OPTIONAL_HEADERS, FIRST_TOUCH_ATTRIBUTION_KEY, FORM_DRAFT_STATUSES, FORM_RESCUE_ATTEMPT_FIELD, FORM_RESCUE_DEBOUNCE_MS, FORM_RESCUE_EVENTS, FORM_RESCUE_MAX_FIELDS, FORM_RESCUE_MAX_VALUE_CHARS, FORM_RESCUE_RESUME_FIELD, FORM_RESCUE_RESUME_PARAM, FORM_RESCUE_SKIP_REASONS, FORM_RESCUE_SUBMIT_KEYS, FORM_RESCUE_VALUE_FIELDS, FullscreenSwitchController, GENERIC_EMAIL_DOMAINS, HEADING_EMOJI_RE, HEX_PATTERN, HONEYPOT_FIELD, HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, HUB_HEADER_OFFSET_PX, HUMANITY_SIGNAL_KEYS, ICON_REGISTRY, IMAGE_FILE_ACCEPT, LOCATION_HASH_SYNC_EVENT, MAX_MONTH_OFFSET, MEDIA_FILE_ACCEPT, MEDIA_TYPE, NO_CLIENT_CACHE, ODS_SPACING_PROPS, ODS_SPACING_TOKENS, ODS_SPACING_TOKEN_PATTERN, ODS_STEM_CLASSES, ODS_STEM_TOKENS, OPENFRAME_CLASSIFICATIONS, OPENFRAME_DEV_SECTIONS, OS_PLATFORMS, PAGE_PARAM_LIMITS, PLATFORM_BRAND, PLATFORM_SURFACE, PLATFORM_THEME, PLAY_ICON_PATH, PROGRAM_META_RENDERERS, RESCUE_FORMS, ROADMAP_STATUS_OPTIONS, SCHEDULING_SLUG_SHAPE, SCROLL_ANCHOR, SCROLL_ANCHOR_WIRE_KEY, SECTION_HERO_ICON_CLASS, SEO_DESCRIPTION_MAX_LENGTH, SEO_TITLE_MAX_LENGTH, SOCIAL_PLATFORM_ALIASES, SOCIAL_PLATFORM_ALT_HOSTS, SOURCE_ICON_NAMES, SOURCE_LABELS_BY_TABLE, STICKY_HEADER_OFFSET_PX, TAILWIND_STEP_TO_ODS_TOKEN, TICKET_OPEN_PARAM, TICKET_STATUS_OPTIONS, TRIAL_DAYS, TRIAL_LABELS, VENDOR_CLASSIFICATIONS, VIEWER_TIMEZONE, WALKTHROUGH_OPEN_QUERY_PARAM, WALKTHROUGH_VIDEO_DISMISS_KEY, analyzeImageColor, announcementDismissCookieName, applyProxyAuth, brandMarkDataUri, buildAutoContinuationDirective, buildChatAttachmentViewUrl, buildDefaultHref, buildDiscussAddendum, buildDocumentTree, buildGroupedSource, buildListUrl, buildOgPlaceholderUrl, buildSuggestionUrl, buildTicketOpenHref, canonicalContentRefType, captureFirstTouchAttribution, captureFormRescueEvent, clamp, clampPageToTotal, classifySocialHost, cleanEmailDomain, clearAnnouncementDismissals, clearDismissCookie, clearEmbedProxyAuth, clearFirstTouchAttribution, clearLegacyAnnouncementCache, clearWalkthroughDismissal, clickupTaskUrl, cn, complianceStandardForName, consumeAccessCode, copyrightLine, createFenceTracker, createHeadingIdDeduper, createSearchParams, createSseSubscription, createUTCTimestamp, csvEscape, deepClone, defineParamSchema, defineRescueForm, delay, deriveActiveColor, deriveHoverColor, designDocReadiness, desktopOsOf, detectDesktopOs, detectVisitorOs, devSectionAnchorId, dismissAnnouncement, dismissWalkthrough, embedAuthedFetch, ensureBiteIds, errorMessage, escapeMarkdownInline, escapeRegExp, evaluateHumanitySignals, eventAudience, extractCardItems, extractDomainFromEmail, extractDominantColor, extractEntityIdFilter, extractHumanitySignals, extractImageEdgeColorAsync, extractItemId, extractItems, extractSections, faqItemAnchor, faqSectionSlug, fetchPriorityProp, fileContentKey, fileMediaType, filledRescueFields, findAnchorElementByNormalizedId, findDocNodeByPath, findHoneypotCopySource, firstParamValue, flattenAssistantContent, formatAbbreviatedNumber, formatAbsoluteDate, formatBioText, formatBytes, formatBytesShort, formatChatAttachmentMarkdownForBubble, formatCitationIndices, formatClassification, formatCompactMetric, formatCompletionLabel, formatCompletionLabelWithBlockers, formatCurrency, formatDate, formatDateRange, formatDateShort, formatDateSlashUTC, formatDateTime, formatDateTimeAt, formatDateTimeYmd, formatDateUTC, formatDateWithTimezone, formatDocName, formatDuration, formatDurationCompact, formatDurationFromMs, formatDurationFromRange, formatDurationMMSS, formatEntryMonthUTC, formatFileSize, formatLargeNumber, formatLegalDate, formatNumber, formatPercent, formatPhoneE164, formatPrice, formatPricingModel, formatProgramDate, formatProgramDateRange, formatProgramTimeRange, formatRelativeTime, formatReleaseDate, formatSingularLookupInvocation, formatTicketFullTimestamp, formatTicketRelativeTime, formatTimeWithTimezone, formatUnderscoreText, formatUrlForDisplay, formatWebinarTimeMeta, formatWholeDollars, fromKeys, generateBiteId, generateImageSizes, generateRandomString, getAllPlatformBaseDomains, getBestContrastColor, getConfidenceBgClass, getConfidenceBorderClass, getConfidenceColorClass, getConfidenceLabel, getConfidenceLevel, getConfidenceTextClass, getContentRefLabel, getContentRefLabelOrTitleCase, getContrastRatio, getCountryByCode, getCountryByName, getCountryPhoneData, getCurrentPlatform, getDefaultColorForPlatform, getDefaultIconForPlatform, getDeploymentUrl, getDetailedTimeDifference, getDocAncestorNodeIds, getDocSourceDefaultPath, getDynamicIcon, getEmbedProxyAuth, getFirstTouchAttribution, getFlagFromCountryName, getIconComponent, getInitialExpandedNodeIds, getOSIcon, getOSLabel, getOSPlatformId, getOSTypeDefinition, getPersistedProxyEmail, getPlatformAccentColor, getPlatformBackgroundVarName, getPlatformBrand, getPlatformBrandClasses, getPlatformColor, getPlatformConfig, getPlatformDescription, getPlatformDisplayName, getPlatformIcon, getPlatformIconComponent, getPlatformIconComponent as getPlatformLogo, getPlatformProductionUrl, getPlatformSecondaryColor, getPlatformShortName, getPlatformSlogan, getPlatformTextVarName, getPlatformUrl, getProxiedImageUrl, getReadableTextColor, getRequestOrigin, getRescueForm, getSemanticColor, getShellIcon, getShellLabel, getSlackCommunityJoinUrl, getSmallPlatformIcon, getSourceIconName, getSourceLabel, getStatusColorScheme, getTaskTypeLabel, getToolLabel, getToolTypeAliases, getTrendColors, groupSourcesByTable, groupsByTable, hasGenericEmailDomain, hexToRgb2 as hexToRgb, hostMatches, isAnnouncementDismissed, isBadgePaletteKey, isBlankLine, isCrossOriginUrl, isDismissedCookieValue, isExcludedRescueField, isFigmaSlidesUrl, isFormAttemptId, isGenericDomain, isGenericWebsiteDomain, isHumanitySignalKey, isImageMedia, isListedSchedulingName, isLocalUrl, isOSPlatform, isOpenFrameClassification, isOrderedRange, isPublishableMediaType, isRescueEmail, isResumeToken, isScrollSyncedHash, isToday, isValidEmailDomain, isValidPathPattern, isValidSchedulingSlug, isValidToolType, isVendorClassification, isVideoMedia, isWalkthroughDismissed, isWithinMinutes, listRescueForms, makeComposeContentUrl, markdownToPlainText, matchBiteElement, matchesPathPattern, mediaNameKey, nameInitials, navigateSamePageHash, normalizeAnchorId, normalizeDocPath, normalizeDomain, normalizeHashFragment, normalizeIconKey, normalizeOSType, normalizeSchedulingSlug, normalizeSocialPlatform, normalizeToolType, normalizeToolTypeWithFallback, openInNewTab, orderContentRefTypes, pageCount, parseAttributionFromUrl, parseFaqHash, parseFormDraftSaveRequest, parseSchedulingLinkName, parseSchemaParams, parseScrollAnchor, parseWireCommandOverride, partitionMediaByType, pathMatchesAny, pathToNodeId, personFirstName, personInitials, pick, pickBadgePaletteColor, pickReadableTextColor, pickSocialLink, platformAccentToken, platformAccentVarName, platformColors, platformDescriptions, platformDisplayNames, platformHexColors, platformIconNames, platformIcons, platformSecondaryToken, platformSecondaryVarName, platformShortNames, platformSlogans, positiveInt, programDateInstant, programMetaFormatters, programMetaLine, programStr, readDismissCookie, readLeadingDecisionFrame, recordCountLabel, releaseTypeToBadgeColor, replaceLocationHash, rescueCompletionPct, resolveContentFetchPath, resolveMobileStoreUrl, resolveRedirectTarget, resolveReleaseCover, rgbToHex, sanitizeLandingUrl, sanitizeRescueFieldName, sanitizeRescueValues, sanitizeTitleForChat, scanHeadings, schedulingAudienceKey, scrollElementIntoView, serializeJsonLd, serializeSchemaParams, setEmbedAuthAdapter, setEmbedProxyAuth, shortcutLabel, shouldIncludeInUrl, shouldProxyImage, singleInitial, skipsImageOptimizer, slugifyHeadingBase, slugifyHeadingText, socialPlatformHosts, sortTreeChildren, splitCsvEnv, stripChatAttachmentMarkdown, stripFolderIndexFromPath, stripHeadingEmojis, stripHtml, stripInlineMarkdown, switchPlatformTheme, titleCaseFromSlug, toClaudeEmbedUrl, toClaudeMirrorPath, toCsv, toDocSlug, toFigmaEmbedUrl, toFigmaOriginalUrl, toGoogleSheetsEmbedUrl, toGoogleSheetsOriginalUrl, toToolLabel, transformPlatformConfigsToOptions, truncateString, urlPathLooksLikeSvg, usePlatformColors, usesCommandKey, validateAccessCode, validateAndConsumeAccessCode, validateEmailDomain, validateEmailDomainList, validatePhoneNumber, walkthroughDismissCookieName, webinarTiming, withFirstTouchAttribution, withQuery, withWalkthroughOpenParam, writeDismissCookie };
6532
+ export { ACTIVE_ANCHOR_ATTRIBUTE, AI_PROVIDERS, ANTHROPIC_SUPPORTED_IMAGE_MIME, AUTO_CONTINUATION_DIRECTIVE_PREFIX, BADGE_PALETTE, BITE_ID_RE, BRAND_MARK_SVGS, CHAT_ATTACHMENT_MARKDOWN_PATTERN, CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM, CHAT_ATTACHMENT_VIEW_URL_PREFIX, CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED, COMPLIANCE_STANDARDS, CONTENT_REF_GROUPS, CSV_CONTENT_TYPE, CUSTOM_ITEM_ID, DEFAULT_CONTENT_SUFFIXES, DEFAULT_FOLDER_INDEX_FILE, DEFAULT_MIN_FILL_MS, DEFAULT_OS_PLATFORM, DELIVERY_TASK_TYPE_OPTIONS, DESIGN_DOC_READINESS, DESIGN_DOC_READINESS_DISPLAY, DESIGN_PALETTE, DESKTOP_OSES, DEV_SECTION_PARAM_KEYS, DOC_TABLE_TYPES, DOWNLOAD_PAGE_PATH, ELAPSED_MS_FIELD, EMBED_PROXY_OPTIONAL_HEADERS, FIRST_TOUCH_ATTRIBUTION_KEY, FORM_DRAFT_STATUSES, FORM_RESCUE_ATTEMPT_FIELD, FORM_RESCUE_DEBOUNCE_MS, FORM_RESCUE_EVENTS, FORM_RESCUE_MAX_FIELDS, FORM_RESCUE_MAX_VALUE_CHARS, FORM_RESCUE_RESUME_FIELD, FORM_RESCUE_RESUME_PARAM, FORM_RESCUE_SKIP_REASONS, FORM_RESCUE_SUBMIT_KEYS, FORM_RESCUE_VALUE_FIELDS, FullscreenSwitchController, GENERIC_EMAIL_DOMAINS, HEADING_EMOJI_RE, HEX_PATTERN, HONEYPOT_FIELD, HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, HUB_HEADER_OFFSET_PX, HUMANITY_SIGNAL_KEYS, ICON_REGISTRY, IMAGE_FILE_ACCEPT, LOCATION_HASH_SYNC_EVENT, MAX_MONTH_OFFSET, MEDIA_FILE_ACCEPT, MEDIA_TYPE, NO_CLIENT_CACHE, ODS_SPACING_PROPS, ODS_SPACING_TOKENS, ODS_SPACING_TOKEN_PATTERN, ODS_STEM_CLASSES, ODS_STEM_TOKENS, OPENFRAME_CLASSIFICATIONS, OPENFRAME_DEV_SECTIONS, OS_PLATFORMS, PAGE_PARAM_LIMITS, PLATFORM_BRAND, PLATFORM_SURFACE, PLATFORM_THEME, PLAY_ICON_PATH, PROGRAM_META_RENDERERS, RESCUE_FORMS, ROADMAP_STATUS_OPTIONS, SCHEDULING_SLUG_SHAPE, SCROLL_ANCHOR, SCROLL_ANCHOR_WIRE_KEY, SECTION_HERO_ICON_CLASS, SEO_DESCRIPTION_MAX_LENGTH, SEO_TITLE_MAX_LENGTH, SOCIAL_PLATFORM_ALIASES, SOCIAL_PLATFORM_ALT_HOSTS, SOURCE_ICON_NAMES, SOURCE_LABELS_BY_TABLE, STICKY_HEADER_OFFSET_PX, TAILWIND_STEP_TO_ODS_TOKEN, TICKET_OPEN_PARAM, TICKET_STATUS_OPTIONS, TOKEN_RATE_EMPTY, TRIAL_DAYS, TRIAL_LABELS, VENDOR_CLASSIFICATIONS, VIEWER_TIMEZONE, WALKTHROUGH_OPEN_QUERY_PARAM, WALKTHROUGH_VIDEO_DISMISS_KEY, aiProvider, analyzeImageColor, announcementDismissCookieName, applyProxyAuth, brandMarkDataUri, buildAutoContinuationDirective, buildChatAttachmentViewUrl, buildDefaultHref, buildDiscussAddendum, buildDocumentTree, buildGroupedSource, buildListUrl, buildOgPlaceholderUrl, buildSuggestionUrl, buildTicketOpenHref, canonicalContentRefType, captureFirstTouchAttribution, captureFormRescueEvent, clamp, clampPageToTotal, classifySocialHost, cleanEmailDomain, clearAnnouncementDismissals, clearDismissCookie, clearEmbedProxyAuth, clearFirstTouchAttribution, clearLegacyAnnouncementCache, clearWalkthroughDismissal, clickupTaskUrl, cn, complianceStandardForName, consumeAccessCode, copyrightLine, createFenceTracker, createHeadingIdDeduper, createSearchParams, createSseSubscription, createUTCTimestamp, csvEscape, deepClone, defineParamSchema, defineRescueForm, delay, deriveActiveColor, deriveHoverColor, designDocReadiness, desktopOsOf, detectDesktopOs, detectVisitorOs, devSectionAnchorId, dismissAnnouncement, dismissWalkthrough, embedAuthedFetch, ensureBiteIds, errorMessage, escapeMarkdownInline, escapeRegExp, evaluateHumanitySignals, eventAudience, extractCardItems, extractDomainFromEmail, extractDominantColor, extractEntityIdFilter, extractHumanitySignals, extractImageEdgeColorAsync, extractItemId, extractItems, extractSections, faqItemAnchor, faqSectionSlug, fetchPriorityProp, fileContentKey, fileMediaType, filledRescueFields, findAnchorElementByNormalizedId, findDocNodeByPath, findHoneypotCopySource, firstParamValue, flattenAssistantContent, formatAbbreviatedNumber, formatAbsoluteDate, formatBioText, formatBytes, formatBytesShort, formatChatAttachmentMarkdownForBubble, formatCitationIndices, formatClassification, formatCompactMetric, formatCompletionLabel, formatCompletionLabelWithBlockers, formatCurrency, formatDate, formatDateRange, formatDateShort, formatDateSlashUTC, formatDateTime, formatDateTimeAt, formatDateTimeYmd, formatDateUTC, formatDateWithTimezone, formatDocName, formatDuration, formatDurationCompact, formatDurationFromMs, formatDurationFromRange, formatDurationMMSS, formatEntryMonthUTC, formatFileSize, formatLargeNumber, formatLegalDate, formatNumber, formatPercent, formatPhoneE164, formatPrice, formatPricingModel, formatProgramDate, formatProgramDateRange, formatProgramTimeRange, formatRelativeTime, formatReleaseDate, formatSingularLookupInvocation, formatTicketFullTimestamp, formatTicketRelativeTime, formatTimeWithTimezone, formatTokenAmount, formatTokenRate, formatUnderscoreText, formatUrlForDisplay, formatWebinarTimeMeta, formatWholeDollars, fromKeys, generateBiteId, generateImageSizes, generateRandomString, getAllPlatformBaseDomains, getBestContrastColor, getConfidenceBgClass, getConfidenceBorderClass, getConfidenceColorClass, getConfidenceLabel, getConfidenceLevel, getConfidenceTextClass, getContentRefLabel, getContentRefLabelOrTitleCase, getContrastRatio, getCountryByCode, getCountryByName, getCountryPhoneData, getCurrentPlatform, getDefaultColorForPlatform, getDefaultIconForPlatform, getDeploymentUrl, getDetailedTimeDifference, getDocAncestorNodeIds, getDocSourceDefaultPath, getDynamicIcon, getEmbedProxyAuth, getFirstTouchAttribution, getFlagFromCountryName, getIconComponent, getInitialExpandedNodeIds, getOSIcon, getOSLabel, getOSPlatformId, getOSTypeDefinition, getPersistedProxyEmail, getPlatformAccentColor, getPlatformBackgroundVarName, getPlatformBrand, getPlatformBrandClasses, getPlatformColor, getPlatformConfig, getPlatformDescription, getPlatformDisplayName, getPlatformIcon, getPlatformIconComponent, getPlatformIconComponent as getPlatformLogo, getPlatformProductionUrl, getPlatformSecondaryColor, getPlatformShortName, getPlatformSlogan, getPlatformTextVarName, getPlatformUrl, getProxiedImageUrl, getReadableTextColor, getRequestOrigin, getRescueForm, getSemanticColor, getShellIcon, getShellLabel, getSlackCommunityJoinUrl, getSmallPlatformIcon, getSourceIconName, getSourceLabel, getStatusColorScheme, getTaskTypeLabel, getToolLabel, getToolTypeAliases, getTrendColors, groupSourcesByTable, groupTokenRatesByProvider, groupsByTable, hasGenericEmailDomain, hexToRgb2 as hexToRgb, hostMatches, isAnnouncementDismissed, isBadgePaletteKey, isBlankLine, isCrossOriginUrl, isDismissedCookieValue, isExcludedRescueField, isFigmaSlidesUrl, isFormAttemptId, isGenericDomain, isGenericWebsiteDomain, isHumanitySignalKey, isImageMedia, isListedSchedulingName, isLocalUrl, isOSPlatform, isOpenFrameClassification, isOrderedRange, isPublishableMediaType, isRescueEmail, isResumeToken, isScrollSyncedHash, isToday, isValidEmailDomain, isValidPathPattern, isValidSchedulingSlug, isValidToolType, isVendorClassification, isVideoMedia, isWalkthroughDismissed, isWithinMinutes, listRescueForms, makeComposeContentUrl, markdownToPlainText, matchBiteElement, matchesPathPattern, mediaNameKey, nameInitials, navigateSamePageHash, normalizeAnchorId, normalizeDocPath, normalizeDomain, normalizeHashFragment, normalizeIconKey, normalizeOSType, normalizeSchedulingSlug, normalizeSocialPlatform, normalizeToolType, normalizeToolTypeWithFallback, openInNewTab, orderContentRefTypes, pageCount, parseAttributionFromUrl, parseFaqHash, parseFormDraftSaveRequest, parseSchedulingLinkName, parseSchemaParams, parseScrollAnchor, parseWireCommandOverride, partitionMediaByType, pathMatchesAny, pathToNodeId, personFirstName, personInitials, pick, pickBadgePaletteColor, pickReadableTextColor, pickSocialLink, platformAccentToken, platformAccentVarName, platformColors, platformDescriptions, platformDisplayNames, platformHexColors, platformIconNames, platformIcons, platformSecondaryToken, platformSecondaryVarName, platformShortNames, platformSlogans, positiveInt, programDateInstant, programMetaFormatters, programMetaLine, programStr, readDismissCookie, readLeadingDecisionFrame, recordCountLabel, releaseTypeToBadgeColor, replaceLocationHash, rescueCompletionPct, resolveContentFetchPath, resolveMobileStoreUrl, resolveRedirectTarget, resolveReleaseCover, rgbToHex, sanitizeLandingUrl, sanitizeRescueFieldName, sanitizeRescueValues, sanitizeTitleForChat, scanHeadings, schedulingAudienceKey, scrollElementIntoView, serializeJsonLd, serializeSchemaParams, setEmbedAuthAdapter, setEmbedProxyAuth, shortcutLabel, shouldIncludeInUrl, shouldProxyImage, singleInitial, skipsImageOptimizer, slugifyHeadingBase, slugifyHeadingText, socialPlatformHosts, sortTreeChildren, splitCsvEnv, stripChatAttachmentMarkdown, stripFolderIndexFromPath, stripHeadingEmojis, stripHtml, stripInlineMarkdown, switchPlatformTheme, titleCaseFromSlug, toClaudeEmbedUrl, toClaudeMirrorPath, toCsv, toDocSlug, toFigmaEmbedUrl, toFigmaOriginalUrl, toGoogleSheetsEmbedUrl, toGoogleSheetsOriginalUrl, toToolLabel, tokenCost, tokenRateProviderLabel, tokensForBalance, transformPlatformConfigsToOptions, truncateString, urlPathLooksLikeSvg, usePlatformColors, usesCommandKey, validateAccessCode, validateAndConsumeAccessCode, validateEmailDomain, validateEmailDomainList, validatePhoneNumber, walkthroughDismissCookieName, webinarTiming, withFirstTouchAttribution, withQuery, withWalkthroughOpenParam, writeDismissCookie };
@@ -1 +1 @@
1
- {"version":3,"file":"list-url.d.ts","sourceRoot":"","sources":["../../src/utils/list-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAaH;;;;iEAIiE;AACjE,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAKtE;AA0FD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,SAAK,GAAG,MAAM,GAAG,IAAI,CAa5F"}
1
+ {"version":3,"file":"list-url.d.ts","sourceRoot":"","sources":["../../src/utils/list-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAaH;;;;iEAIiE;AACjE,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAKtE;AA2FD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,SAAK,GAAG,MAAM,GAAG,IAAI,CAa5F"}