@flamingo-stack/openframe-frontend-core 0.0.285 → 0.0.286

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 (211) hide show
  1. package/dist/chunk-3MCHAFHB.js +89 -0
  2. package/dist/chunk-3MCHAFHB.js.map +1 -0
  3. package/dist/{chunk-IMNGGLKL.js → chunk-3ZXUQQL4.js} +2 -2
  4. package/dist/{chunk-44ZFLMYC.cjs → chunk-4WACBTZU.cjs} +30 -30
  5. package/dist/{chunk-44ZFLMYC.cjs.map → chunk-4WACBTZU.cjs.map} +1 -1
  6. package/dist/{chunk-23UOJUDF.js → chunk-5BTZOVDQ.js} +4 -4
  7. package/dist/chunk-5KD3S25X.cjs +312 -0
  8. package/dist/chunk-5KD3S25X.cjs.map +1 -0
  9. package/dist/chunk-6N26CURS.cjs +2417 -0
  10. package/dist/chunk-6N26CURS.cjs.map +1 -0
  11. package/dist/{chunk-XX7P4IL2.js → chunk-7NM7DEUK.js} +4 -143
  12. package/dist/chunk-7NM7DEUK.js.map +1 -0
  13. package/dist/chunk-BBZ7AX5H.cjs +290 -0
  14. package/dist/chunk-BBZ7AX5H.cjs.map +1 -0
  15. package/dist/chunk-C6SCWXDP.js +290 -0
  16. package/dist/chunk-C6SCWXDP.js.map +1 -0
  17. package/dist/{chunk-GVSTRN36.cjs → chunk-D3LEFMOA.cjs} +3 -3
  18. package/dist/{chunk-GVSTRN36.cjs.map → chunk-D3LEFMOA.cjs.map} +1 -1
  19. package/dist/{chunk-P45Q4QCU.cjs → chunk-D5YY5U6J.cjs} +19 -15
  20. package/dist/chunk-D5YY5U6J.cjs.map +1 -0
  21. package/dist/chunk-DDAT4RKX.js +2417 -0
  22. package/dist/chunk-DDAT4RKX.js.map +1 -0
  23. package/dist/{chunk-PVXCVPJD.cjs → chunk-EI4WALN2.cjs} +67 -1626
  24. package/dist/chunk-EI4WALN2.cjs.map +1 -0
  25. package/dist/{chunk-ZIODAAFY.cjs → chunk-EL5GCMPU.cjs} +20 -159
  26. package/dist/chunk-EL5GCMPU.cjs.map +1 -0
  27. package/dist/{chunk-VQW7CEGS.js → chunk-FSBDVT6R.js} +1831 -3672
  28. package/dist/chunk-FSBDVT6R.js.map +1 -0
  29. package/dist/{chunk-DPKUSBQH.cjs → chunk-GDF2R2ER.cjs} +1073 -2914
  30. package/dist/chunk-GDF2R2ER.cjs.map +1 -0
  31. package/dist/chunk-HLQW7MWJ.cjs +1594 -0
  32. package/dist/chunk-HLQW7MWJ.cjs.map +1 -0
  33. package/dist/chunk-I6ZPGKZ2.cjs +151 -0
  34. package/dist/chunk-I6ZPGKZ2.cjs.map +1 -0
  35. package/dist/{chunk-J66U3LPZ.cjs → chunk-KBKZYJRI.cjs} +33 -332
  36. package/dist/chunk-KBKZYJRI.cjs.map +1 -0
  37. package/dist/{chunk-USPATRSC.js → chunk-N6ZM5PYZ.js} +45 -344
  38. package/dist/chunk-N6ZM5PYZ.js.map +1 -0
  39. package/dist/{chunk-RGALV4UX.js → chunk-POKKCWKF.js} +3 -82
  40. package/dist/chunk-POKKCWKF.js.map +1 -0
  41. package/dist/{chunk-XDI5JSWB.cjs → chunk-QCKN37OP.cjs} +45 -41
  42. package/dist/chunk-QCKN37OP.cjs.map +1 -0
  43. package/dist/{chunk-KNCDUWY2.js → chunk-QF2X6PTD.js} +10 -6
  44. package/dist/{chunk-KNCDUWY2.js.map → chunk-QF2X6PTD.js.map} +1 -1
  45. package/dist/{chunk-Z3V2SGQZ.js → chunk-R2KT5GDD.js} +324 -1883
  46. package/dist/chunk-R2KT5GDD.js.map +1 -0
  47. package/dist/{chunk-RJUGNL2A.cjs → chunk-RQ6RTBKF.cjs} +16 -12
  48. package/dist/chunk-RQ6RTBKF.cjs.map +1 -0
  49. package/dist/chunk-TFSYSWPS.cjs +89 -0
  50. package/dist/chunk-TFSYSWPS.cjs.map +1 -0
  51. package/dist/chunk-TYZEMPPH.js +312 -0
  52. package/dist/chunk-TYZEMPPH.js.map +1 -0
  53. package/dist/{chunk-O5N57CRV.js → chunk-VCQ3CTYK.js} +12 -8
  54. package/dist/{chunk-O5N57CRV.js.map → chunk-VCQ3CTYK.js.map} +1 -1
  55. package/dist/chunk-VRSXJ5QJ.js +1599 -0
  56. package/dist/chunk-VRSXJ5QJ.js.map +1 -0
  57. package/dist/{chunk-53CFL7PH.js → chunk-XQL4WDML.js} +11 -7
  58. package/dist/{chunk-53CFL7PH.js.map → chunk-XQL4WDML.js.map} +1 -1
  59. package/dist/chunk-Y4JNA4W6.cjs +1599 -0
  60. package/dist/chunk-Y4JNA4W6.cjs.map +1 -0
  61. package/dist/{chunk-ZSUNQJRO.cjs → chunk-YETA25JW.cjs} +2 -81
  62. package/dist/chunk-YETA25JW.cjs.map +1 -0
  63. package/dist/chunk-YVB3VDIQ.js +1594 -0
  64. package/dist/chunk-YVB3VDIQ.js.map +1 -0
  65. package/dist/chunk-ZLN6SM2U.js +151 -0
  66. package/dist/chunk-ZLN6SM2U.js.map +1 -0
  67. package/dist/components/chat/chat-attachment-bar.d.ts.map +1 -1
  68. package/dist/components/chat/index.cjs +12 -6
  69. package/dist/components/chat/index.cjs.map +1 -1
  70. package/dist/components/chat/index.js +45 -39
  71. package/dist/components/contact/index.cjs +11 -7
  72. package/dist/components/contact/index.cjs.map +1 -1
  73. package/dist/components/contact/index.js +10 -6
  74. package/dist/components/docs/doc-navigation-context.d.ts +39 -0
  75. package/dist/components/docs/doc-navigation-context.d.ts.map +1 -0
  76. package/dist/components/docs/doc-viewer.d.ts +66 -0
  77. package/dist/components/docs/doc-viewer.d.ts.map +1 -0
  78. package/dist/components/docs/index.cjs +34 -0
  79. package/dist/components/docs/index.cjs.map +1 -0
  80. package/dist/components/docs/index.d.ts +8 -0
  81. package/dist/components/docs/index.d.ts.map +1 -0
  82. package/dist/components/docs/index.js +34 -0
  83. package/dist/components/docs/index.js.map +1 -0
  84. package/dist/components/docs/use-document-tree.d.ts +41 -0
  85. package/dist/components/docs/use-document-tree.d.ts.map +1 -0
  86. package/dist/components/docs/use-scroll-spy.d.ts +16 -0
  87. package/dist/components/docs/use-scroll-spy.d.ts.map +1 -0
  88. package/dist/components/embeds/embed-iframe.d.ts +29 -0
  89. package/dist/components/embeds/embed-iframe.d.ts.map +1 -0
  90. package/dist/components/embeds/figma-embed.d.ts +27 -0
  91. package/dist/components/embeds/figma-embed.d.ts.map +1 -0
  92. package/dist/components/embeds/google-sheets-viewer.d.ts +8 -0
  93. package/dist/components/embeds/google-sheets-viewer.d.ts.map +1 -0
  94. package/dist/components/embeds/index.cjs +37 -0
  95. package/dist/components/embeds/index.cjs.map +1 -0
  96. package/dist/components/embeds/index.d.ts +9 -0
  97. package/dist/components/embeds/index.d.ts.map +1 -0
  98. package/dist/components/embeds/index.js +37 -0
  99. package/dist/components/embeds/index.js.map +1 -0
  100. package/dist/components/embeds/pdf-viewer.d.ts +10 -0
  101. package/dist/components/embeds/pdf-viewer.d.ts.map +1 -0
  102. package/dist/components/faq/index.cjs +12 -8
  103. package/dist/components/faq/index.cjs.map +1 -1
  104. package/dist/components/faq/index.js +11 -7
  105. package/dist/components/features/index.cjs +10 -6
  106. package/dist/components/features/index.cjs.map +1 -1
  107. package/dist/components/features/index.js +9 -5
  108. package/dist/components/index.cjs +247 -1120
  109. package/dist/components/index.cjs.map +1 -1
  110. package/dist/components/index.d.ts +2 -0
  111. package/dist/components/index.d.ts.map +1 -1
  112. package/dist/components/index.js +645 -1518
  113. package/dist/components/index.js.map +1 -1
  114. package/dist/components/navigation/index.cjs +15 -6
  115. package/dist/components/navigation/index.cjs.map +1 -1
  116. package/dist/components/navigation/index.d.ts +2 -0
  117. package/dist/components/navigation/index.d.ts.map +1 -1
  118. package/dist/components/navigation/index.js +15 -6
  119. package/dist/components/navigation/multi-level-navigation.d.ts +28 -0
  120. package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -0
  121. package/dist/components/onboarding-guides/index.cjs +34 -29
  122. package/dist/components/onboarding-guides/index.cjs.map +1 -1
  123. package/dist/components/onboarding-guides/index.js +13 -8
  124. package/dist/components/onboarding-guides/index.js.map +1 -1
  125. package/dist/components/related-content/index.cjs +12 -8
  126. package/dist/components/related-content/index.cjs.map +1 -1
  127. package/dist/components/related-content/index.js +11 -7
  128. package/dist/components/tickets/index.cjs +75 -70
  129. package/dist/components/tickets/index.cjs.map +1 -1
  130. package/dist/components/tickets/index.js +16 -11
  131. package/dist/components/tickets/index.js.map +1 -1
  132. package/dist/components/ui/index.cjs +12 -6
  133. package/dist/components/ui/index.cjs.map +1 -1
  134. package/dist/components/ui/index.js +65 -59
  135. package/dist/embed-shims/index.cjs +3 -3
  136. package/dist/embed-shims/index.cjs.map +1 -1
  137. package/dist/embed-shims/index.js +8 -8
  138. package/dist/hooks/index.cjs +6 -3
  139. package/dist/hooks/index.cjs.map +1 -1
  140. package/dist/hooks/index.js +7 -4
  141. package/dist/index.cjs +62 -6
  142. package/dist/index.cjs.map +1 -1
  143. package/dist/index.js +257 -201
  144. package/dist/types/doc-source.cjs +4 -0
  145. package/dist/types/doc-source.cjs.map +1 -0
  146. package/dist/types/doc-source.d.ts +86 -0
  147. package/dist/types/doc-source.d.ts.map +1 -0
  148. package/dist/types/doc-source.js +3 -0
  149. package/dist/types/doc-source.js.map +1 -0
  150. package/dist/types/index.d.ts +1 -0
  151. package/dist/types/index.d.ts.map +1 -1
  152. package/dist/utils/doc-path-utils.d.ts +24 -0
  153. package/dist/utils/doc-path-utils.d.ts.map +1 -0
  154. package/dist/utils/doc-tree-nav.d.ts +35 -0
  155. package/dist/utils/doc-tree-nav.d.ts.map +1 -0
  156. package/dist/utils/embed-url-converters.d.ts +16 -0
  157. package/dist/utils/embed-url-converters.d.ts.map +1 -0
  158. package/dist/utils/format.d.ts +9 -0
  159. package/dist/utils/format.d.ts.map +1 -1
  160. package/dist/utils/index.cjs +297 -0
  161. package/dist/utils/index.cjs.map +1 -1
  162. package/dist/utils/index.d.ts +7 -1
  163. package/dist/utils/index.d.ts.map +1 -1
  164. package/dist/utils/index.js +276 -1
  165. package/dist/utils/index.js.map +1 -1
  166. package/dist/utils/markdown-section-extractor.d.ts +23 -0
  167. package/dist/utils/markdown-section-extractor.d.ts.map +1 -0
  168. package/dist/utils/markdown-to-plain.d.ts +32 -0
  169. package/dist/utils/markdown-to-plain.d.ts.map +1 -0
  170. package/dist/utils/tree-builder.d.ts +30 -0
  171. package/dist/utils/tree-builder.d.ts.map +1 -0
  172. package/package.json +19 -1
  173. package/src/components/chat/chat-attachment-bar.tsx +6 -11
  174. package/src/components/docs/doc-navigation-context.tsx +123 -0
  175. package/src/components/docs/doc-viewer.tsx +345 -0
  176. package/src/components/docs/index.ts +12 -0
  177. package/src/components/docs/use-document-tree.ts +427 -0
  178. package/src/components/docs/use-scroll-spy.ts +93 -0
  179. package/src/components/embeds/embed-iframe.tsx +103 -0
  180. package/src/components/embeds/figma-embed.tsx +147 -0
  181. package/src/components/embeds/google-sheets-viewer.tsx +54 -0
  182. package/src/components/embeds/index.ts +11 -0
  183. package/src/components/embeds/pdf-viewer.tsx +64 -0
  184. package/src/components/index.ts +2 -0
  185. package/src/components/navigation/index.ts +5 -0
  186. package/src/components/navigation/multi-level-navigation.tsx +358 -0
  187. package/src/types/doc-source.ts +88 -0
  188. package/src/types/index.ts +4 -0
  189. package/src/utils/doc-path-utils.ts +47 -0
  190. package/src/utils/doc-tree-nav.ts +111 -0
  191. package/src/utils/embed-url-converters.ts +77 -0
  192. package/src/utils/format.ts +16 -0
  193. package/src/utils/index.ts +11 -0
  194. package/src/utils/markdown-section-extractor.ts +106 -0
  195. package/src/utils/markdown-to-plain.ts +69 -0
  196. package/src/utils/tree-builder.ts +114 -0
  197. package/dist/chunk-DPKUSBQH.cjs.map +0 -1
  198. package/dist/chunk-J66U3LPZ.cjs.map +0 -1
  199. package/dist/chunk-P45Q4QCU.cjs.map +0 -1
  200. package/dist/chunk-PVXCVPJD.cjs.map +0 -1
  201. package/dist/chunk-RGALV4UX.js.map +0 -1
  202. package/dist/chunk-RJUGNL2A.cjs.map +0 -1
  203. package/dist/chunk-USPATRSC.js.map +0 -1
  204. package/dist/chunk-VQW7CEGS.js.map +0 -1
  205. package/dist/chunk-XDI5JSWB.cjs.map +0 -1
  206. package/dist/chunk-XX7P4IL2.js.map +0 -1
  207. package/dist/chunk-Z3V2SGQZ.js.map +0 -1
  208. package/dist/chunk-ZIODAAFY.cjs.map +0 -1
  209. package/dist/chunk-ZSUNQJRO.cjs.map +0 -1
  210. /package/dist/{chunk-IMNGGLKL.js.map → chunk-3ZXUQQL4.js.map} +0 -0
  211. /package/dist/{chunk-23UOJUDF.js.map → chunk-5BTZOVDQ.js.map} +0 -0
@@ -1,4 +1,13 @@
1
1
  "use client";
2
+ import {
3
+ ELAPSED_MS_FIELD,
4
+ HONEYPOT_FIELD,
5
+ ToolTypeValues,
6
+ consumeAccessCode,
7
+ transformPlatformConfigsToOptions,
8
+ validateAccessCode,
9
+ validateAndConsumeAccessCode
10
+ } from "./chunk-TYZEMPPH.js";
2
11
  import {
3
12
  useRequiredEndpointsRuntime
4
13
  } from "./chunk-MJNXIEV2.js";
@@ -6,19 +15,18 @@ import {
6
15
  createNatsClient
7
16
  } from "./chunk-PHWQLKVE.js";
8
17
  import {
9
- contentFetch,
18
+ contentFetch
19
+ } from "./chunk-3MCHAFHB.js";
20
+ import {
10
21
  useDebounce
11
- } from "./chunk-RGALV4UX.js";
22
+ } from "./chunk-POKKCWKF.js";
12
23
  import {
13
24
  init_next_navigation,
14
25
  useRouter,
15
26
  useSearchParams
16
27
  } from "./chunk-PLJLE4A4.js";
17
28
  import {
18
- FlamingoLogo,
19
- MiamiCyberGangLogoFaceOnly,
20
- OpenFrameLogo,
21
- OpenmspLogo
29
+ OpenFrameLogo
22
30
  } from "./chunk-V4IIBNTA.js";
23
31
  import {
24
32
  cn,
@@ -795,180 +803,6 @@ function useWindowSize() {
795
803
 
796
804
  // src/hooks/platform/use-platform-config.ts
797
805
  import { useState as useState11, useEffect as useEffect8 } from "react";
798
-
799
- // src/utils/platform-config.tsx
800
- import { Globe } from "lucide-react";
801
- import { jsx } from "react/jsx-runtime";
802
- var platformIcons = {
803
- openframe: /* @__PURE__ */ jsx(OpenFrameLogo, { className: "h-5 w-5", lowerPathColor: "#FFC008", upperPathColor: "#ffffff" }),
804
- openmsp: /* @__PURE__ */ jsx(OpenmspLogo, { className: "h-5 w-5" }),
805
- flamingo: /* @__PURE__ */ jsx(FlamingoLogo, { className: "h-5 w-5", fill: "#EC4899" }),
806
- "flamingo-teaser": /* @__PURE__ */ jsx(FlamingoLogo, { className: "h-5 w-5", fill: "#EC4899" }),
807
- "marketing-hub": /* @__PURE__ */ jsx(FlamingoLogo, { className: "h-5 w-5", fill: "#F357BB" }),
808
- "product-hub": /* @__PURE__ */ jsx(FlamingoLogo, { className: "h-5 w-5", fill: "#5EA62E" }),
809
- "revenue-hub": /* @__PURE__ */ jsx(FlamingoLogo, { className: "h-5 w-5", fill: "#FFC008" }),
810
- "people-hub": /* @__PURE__ */ jsx(FlamingoLogo, { className: "h-5 w-5", fill: "#5EFAF0" }),
811
- "company-hub": /* @__PURE__ */ jsx(FlamingoLogo, { className: "h-5 w-5", fill: "#f36666" }),
812
- tmcg: /* @__PURE__ */ jsx(MiamiCyberGangLogoFaceOnly, { className: "h-5 w-5" }),
813
- universal: /* @__PURE__ */ jsx(Globe, { className: "h-5 w-5 text-[#10B981]" })
814
- };
815
- var platformColors = {
816
- openmsp: "bg-[#3B82F6]",
817
- openframe: "bg-[#8B5CF6]",
818
- flamingo: "bg-[#EC4899]",
819
- "flamingo-teaser": "bg-[#F59E0B]",
820
- "marketing-hub": "bg-[#F357BB]",
821
- "product-hub": "bg-[#5EA62E]",
822
- "revenue-hub": "bg-[#FFC008]",
823
- "people-hub": "bg-[#5EFAF0]",
824
- "company-hub": "bg-[#f36666]",
825
- tmcg: "bg-[#FF6B6B]",
826
- universal: "bg-[#10B981]"
827
- };
828
- var platformDisplayNames = {
829
- openmsp: "OpenMSP",
830
- openframe: "OpenFrame",
831
- flamingo: "Flamingo",
832
- "flamingo-teaser": "Flamingo Teaser",
833
- "marketing-hub": "Flamingo Marketing Hub",
834
- "product-hub": "Flamingo Product Hub",
835
- "revenue-hub": "Flamingo Revenue Hub",
836
- "people-hub": "Flamingo People Hub",
837
- "company-hub": "Flamingo Company Hub",
838
- tmcg: "TMCG",
839
- universal: "Universal"
840
- };
841
- var platformDescriptions = {
842
- openmsp: "Comprehensive directory and comparison platform for managed service providers (MSPs) and technology vendors. Reduce vendor costs and discover open-source alternatives.",
843
- openframe: "AI-driven open-source security operations center (SOC) and endpoint detection platform for MSPs.",
844
- flamingo: "AI-driven open-source OS for MSPs. Swap bloated vendor tools for open ones. Automate the boring crap. Take your margin back.",
845
- "flamingo-teaser": "Preview of Flamingo - the AI-driven open-source OS for MSPs.",
846
- tmcg: "The Miami Cyber Gang - A cybersecurity community focused on education and collaboration.",
847
- universal: "Cross-platform universal content."
848
- };
849
- var platformSlogans = {
850
- openmsp: "Find Your Perfect MSP Partner",
851
- openframe: "Open-Source Security Operations",
852
- flamingo: "Open-Source OS for MSPs",
853
- "flamingo-teaser": "Coming Soon: Open-Source OS for MSPs",
854
- tmcg: "Miami Cyber Community",
855
- universal: "Universal Platform"
856
- };
857
- var platformHexColors = {
858
- openmsp: "#FFC008",
859
- openframe: "#FFC008",
860
- flamingo: "#FF6B9D",
861
- universal: "#FFC008",
862
- "flamingo-teaser": "#F59E0B",
863
- "marketing-hub": "#F357BB",
864
- "product-hub": "#5EA62E",
865
- "revenue-hub": "#FFC008",
866
- "people-hub": "#5EFAF0",
867
- "company-hub": "#f36666",
868
- tmcg: "#FF6B6B"
869
- };
870
- var platformIconNames = {
871
- openmsp: "openmsp-logo",
872
- openframe: "openframe-logo",
873
- flamingo: "flamingo-logo",
874
- universal: "globe",
875
- "flamingo-teaser": "flamingo-logo",
876
- "marketing-hub": "flamingo-logo",
877
- "product-hub": "flamingo-logo",
878
- "revenue-hub": "flamingo-logo",
879
- "people-hub": "flamingo-logo",
880
- "company-hub": "flamingo-logo",
881
- tmcg: "tmcg-logo"
882
- };
883
- function getDefaultColorForPlatform(platformName) {
884
- return platformHexColors[platformName] || platformHexColors.universal;
885
- }
886
- function getDefaultIconForPlatform(platformName) {
887
- return platformIconNames[platformName] || platformIconNames.universal;
888
- }
889
- function transformPlatformConfigsToOptions(platformConfigs) {
890
- return platformConfigs.map((platform) => ({
891
- id: platform.id,
892
- // Database UUID for matching
893
- name: platform.name,
894
- // Platform name enum
895
- displayName: platform.display_name,
896
- // Human-readable name
897
- description: platform.description,
898
- icon: platformIcons[platform.name] || platformIcons.universal,
899
- color: platformColors[platform.name] || platformColors.universal
900
- }));
901
- }
902
- function getPlatformIcon(platformName) {
903
- return platformIcons[platformName] || platformIcons.universal;
904
- }
905
- function getPlatformColor(platformName) {
906
- return platformColors[platformName] || platformColors.universal;
907
- }
908
- function getPlatformDisplayName(platformName) {
909
- return platformDisplayNames[platformName] || platformName;
910
- }
911
- function getPlatformDescription(platformName) {
912
- return platformDescriptions[platformName] || platformName;
913
- }
914
- function getPlatformSlogan(platformName) {
915
- return platformSlogans[platformName] || platformName;
916
- }
917
- function getSmallPlatformIcon(platformName) {
918
- const className = "h-4 w-4 flex-shrink-0";
919
- switch (platformName) {
920
- case "openframe":
921
- return /* @__PURE__ */ jsx(OpenFrameLogo, { className, lowerPathColor: "#FFC008", upperPathColor: "#ffffff" });
922
- case "openmsp":
923
- return /* @__PURE__ */ jsx(OpenmspLogo, { className, frontBubbleColor: "#f1f1f1", innerFrontBubbleColor: "#000000", backBubbleColor: "#FFC008" });
924
- case "flamingo":
925
- case "flamingo-teaser":
926
- return /* @__PURE__ */ jsx(FlamingoLogo, { className: `${className}`, fill: "#EC4899" });
927
- case "marketing-hub":
928
- return /* @__PURE__ */ jsx(FlamingoLogo, { className, fill: "var(--ods-flamingo-pink-base)" });
929
- case "product-hub":
930
- return /* @__PURE__ */ jsx(FlamingoLogo, { className, fill: "var(--ods-attention-green-success)" });
931
- case "revenue-hub":
932
- return /* @__PURE__ */ jsx(FlamingoLogo, { className, fill: "var(--ods-attention-yellow-warning)" });
933
- case "people-hub":
934
- return /* @__PURE__ */ jsx(FlamingoLogo, { className, fill: "var(--ods-flamingo-cyan-base)" });
935
- case "company-hub":
936
- return /* @__PURE__ */ jsx(FlamingoLogo, { className, fill: "var(--ods-attention-red-error)" });
937
- case "tmcg":
938
- return /* @__PURE__ */ jsx(MiamiCyberGangLogoFaceOnly, { className });
939
- case "universal":
940
- default:
941
- return /* @__PURE__ */ jsx(Globe, { className });
942
- }
943
- }
944
- function getPlatformIconComponent(platformName, className = "h-6 w-6") {
945
- switch (platformName) {
946
- case "openframe":
947
- return /* @__PURE__ */ jsx(OpenFrameLogo, { className });
948
- case "openmsp":
949
- return /* @__PURE__ */ jsx(OpenmspLogo, { className, color: "#f1f1f1" });
950
- case "flamingo":
951
- case "flamingo-teaser":
952
- return /* @__PURE__ */ jsx(FlamingoLogo, { className: `${className} text-white` });
953
- case "marketing-hub":
954
- return /* @__PURE__ */ jsx(FlamingoLogo, { className, fill: "var(--ods-flamingo-pink-base)" });
955
- case "product-hub":
956
- return /* @__PURE__ */ jsx(FlamingoLogo, { className, fill: "var(--ods-attention-green-success)" });
957
- case "revenue-hub":
958
- return /* @__PURE__ */ jsx(FlamingoLogo, { className, fill: "var(--ods-attention-yellow-warning)" });
959
- case "people-hub":
960
- return /* @__PURE__ */ jsx(FlamingoLogo, { className, fill: "var(--ods-flamingo-cyan-base)" });
961
- case "company-hub":
962
- return /* @__PURE__ */ jsx(FlamingoLogo, { className, fill: "var(--ods-attention-red-error)" });
963
- case "tmcg":
964
- return /* @__PURE__ */ jsx(MiamiCyberGangLogoFaceOnly, { size: 24, className });
965
- case "universal":
966
- default:
967
- return /* @__PURE__ */ jsx(Globe, { className });
968
- }
969
- }
970
-
971
- // src/hooks/platform/use-platform-config.ts
972
806
  var platformCache = null;
973
807
  var fetchPromise = null;
974
808
  function usePlatformConfig() {
@@ -1046,35 +880,11 @@ import { toast as sonnerToast2 } from "sonner";
1046
880
  import * as React from "react";
1047
881
  import { Toaster as SonnerToaster, toast as sonnerToast } from "sonner";
1048
882
 
1049
- // src/types/tool.types.ts
1050
- var ToolTypeValues = {
1051
- TACTICAL_RMM: "TACTICAL_RMM",
1052
- FLEET_MDM: "FLEET_MDM",
1053
- MESHCENTRAL: "MESHCENTRAL",
1054
- AUTHENTIK: "AUTHENTIK",
1055
- OPENFRAME: "OPENFRAME",
1056
- OPENFRAME_CHAT: "OPENFRAME_CHAT",
1057
- OPENFRAME_CLIENT: "OPENFRAME_CLIENT",
1058
- OSQUERY: "OSQUERY",
1059
- SYSTEM: "SYSTEM"
1060
- };
1061
- var toolLabels = {
1062
- TACTICAL_RMM: "Tactical",
1063
- FLEET_MDM: "Fleet",
1064
- MESHCENTRAL: "MeshCentral",
1065
- AUTHENTIK: "Authentik",
1066
- OPENFRAME: "OpenFrame",
1067
- OPENFRAME_CHAT: "OpenFrame Chat",
1068
- OPENFRAME_CLIENT: "OpenFrame Client",
1069
- OSQUERY: "Osquery",
1070
- SYSTEM: "System"
1071
- };
1072
-
1073
883
  // src/components/tool-icon.tsx
1074
- import { Fragment, jsx as jsx2 } from "react/jsx-runtime";
884
+ import { Fragment, jsx } from "react/jsx-runtime";
1075
885
  var renderOpenFrameLogo = (_size, className) => (
1076
886
  // eslint-disable-next-line deprecation/deprecation
1077
- /* @__PURE__ */ jsx2(
887
+ /* @__PURE__ */ jsx(
1078
888
  OpenFrameLogo,
1079
889
  {
1080
890
  className: className ?? "h-4 w-auto",
@@ -1084,22 +894,22 @@ var renderOpenFrameLogo = (_size, className) => (
1084
894
  )
1085
895
  );
1086
896
  var toolIconMap = {
1087
- [ToolTypeValues.FLEET_MDM]: (size, className) => /* @__PURE__ */ jsx2(FleetMdmLogoGreyIcon, { size, className }),
1088
- [ToolTypeValues.MESHCENTRAL]: (size, className) => /* @__PURE__ */ jsx2(MeshcentralLogoGreyIcon, { size, className }),
1089
- [ToolTypeValues.TACTICAL_RMM]: (size, className) => /* @__PURE__ */ jsx2(TacticalRmmLogoIcon, { size, className }),
897
+ [ToolTypeValues.FLEET_MDM]: (size, className) => /* @__PURE__ */ jsx(FleetMdmLogoGreyIcon, { size, className }),
898
+ [ToolTypeValues.MESHCENTRAL]: (size, className) => /* @__PURE__ */ jsx(MeshcentralLogoGreyIcon, { size, className }),
899
+ [ToolTypeValues.TACTICAL_RMM]: (size, className) => /* @__PURE__ */ jsx(TacticalRmmLogoIcon, { size, className }),
1090
900
  [ToolTypeValues.OPENFRAME]: renderOpenFrameLogo,
1091
901
  [ToolTypeValues.OPENFRAME_CHAT]: renderOpenFrameLogo,
1092
902
  [ToolTypeValues.OPENFRAME_CLIENT]: renderOpenFrameLogo,
1093
- [ToolTypeValues.AUTHENTIK]: (size, className) => /* @__PURE__ */ jsx2(AuthentikLogoGreyIcon, { size, className }),
1094
- [ToolTypeValues.OSQUERY]: (size, className) => /* @__PURE__ */ jsx2(OsqueryLogoGreyIcon, { size, className }),
903
+ [ToolTypeValues.AUTHENTIK]: (size, className) => /* @__PURE__ */ jsx(AuthentikLogoGreyIcon, { size, className }),
904
+ [ToolTypeValues.OSQUERY]: (size, className) => /* @__PURE__ */ jsx(OsqueryLogoGreyIcon, { size, className }),
1095
905
  [ToolTypeValues.SYSTEM]: () => null
1096
906
  };
1097
- var ToolIcon = ({ toolType, size = 16, className }) => /* @__PURE__ */ jsx2(Fragment, { children: toolIconMap[toolType]?.(size, className) ?? null });
907
+ var ToolIcon = ({ toolType, size = 16, className }) => /* @__PURE__ */ jsx(Fragment, { children: toolIconMap[toolType]?.(size, className) ?? null });
1098
908
  ToolIcon.displayName = "ToolIcon";
1099
909
 
1100
910
  // src/components/ui/toaster.tsx
1101
911
  init_cn();
1102
- import { Fragment as Fragment2, jsx as jsx3, jsxs } from "react/jsx-runtime";
912
+ import { Fragment as Fragment2, jsx as jsx2, jsxs } from "react/jsx-runtime";
1103
913
  var dotColorByVariant = {
1104
914
  default: "bg-ods-text-secondary",
1105
915
  success: "bg-ods-success",
@@ -1132,22 +942,22 @@ function ToastHeader({
1132
942
  className
1133
943
  ),
1134
944
  children: [
1135
- /* @__PURE__ */ jsx3("div", { className: "flex size-6 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsx3("span", { className: cn("size-[9px] rounded-full", dotColorByVariant[variant]) }) }),
945
+ /* @__PURE__ */ jsx2("div", { className: "flex size-6 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsx2("span", { className: cn("size-[9px] rounded-full", dotColorByVariant[variant]) }) }),
1136
946
  /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col justify-center font-['DM_Sans'] font-medium", children: [
1137
- title ? /* @__PURE__ */ jsx3("p", { className: "truncate pr-5 text-[18px] leading-6 text-ods-text-primary", title: typeof title === "string" ? title : void 0, children: title }) : null,
1138
- description ? /* @__PURE__ */ jsx3("p", { className: "text-[14px] leading-5 text-ods-text-secondary line-clamp-3", title: typeof description === "string" ? description : void 0, children: description }) : null
947
+ title ? /* @__PURE__ */ jsx2("p", { className: "truncate pr-5 text-[18px] leading-6 text-ods-text-primary", title: typeof title === "string" ? title : void 0, children: title }) : null,
948
+ description ? /* @__PURE__ */ jsx2("p", { className: "text-[14px] leading-5 text-ods-text-secondary line-clamp-3", title: typeof description === "string" ? description : void 0, children: description }) : null
1139
949
  ] }),
1140
- dismissible ? /* @__PURE__ */ jsx3(
950
+ dismissible ? /* @__PURE__ */ jsx2(
1141
951
  "button",
1142
952
  {
1143
953
  type: "button",
1144
954
  "aria-label": "Close",
1145
955
  onClick: () => sonnerToast.dismiss(id),
1146
956
  className: "absolute right-[7px] top-[7px] flex size-4 items-center justify-center text-ods-text-secondary transition-colors hover:text-ods-text-primary",
1147
- children: /* @__PURE__ */ jsx3(XmarkIcon, { size: 16 })
957
+ children: /* @__PURE__ */ jsx2(XmarkIcon, { size: 16 })
1148
958
  }
1149
959
  ) : null,
1150
- showProgress && duration !== Infinity && duration > 0 ? /* @__PURE__ */ jsx3(
960
+ showProgress && duration !== Infinity && duration > 0 ? /* @__PURE__ */ jsx2(
1151
961
  "div",
1152
962
  {
1153
963
  className: cn(
@@ -1172,7 +982,7 @@ function ToastCard({
1172
982
  dismissible = true,
1173
983
  className
1174
984
  }) {
1175
- return /* @__PURE__ */ jsx3(
985
+ return /* @__PURE__ */ jsx2(
1176
986
  "div",
1177
987
  {
1178
988
  role: "status",
@@ -1180,7 +990,7 @@ function ToastCard({
1180
990
  "w-[368px] max-w-[calc(100vw-32px)] overflow-hidden rounded-md border border-ods-border bg-ods-card shadow-lg",
1181
991
  className
1182
992
  ),
1183
- children: /* @__PURE__ */ jsx3(
993
+ children: /* @__PURE__ */ jsx2(
1184
994
  ToastHeader,
1185
995
  {
1186
996
  id,
@@ -1229,7 +1039,7 @@ function CommandApprovalToast({
1229
1039
  className
1230
1040
  ),
1231
1041
  children: [
1232
- /* @__PURE__ */ jsx3(
1042
+ /* @__PURE__ */ jsx2(
1233
1043
  ToastHeader,
1234
1044
  {
1235
1045
  id,
@@ -1242,7 +1052,7 @@ function CommandApprovalToast({
1242
1052
  className: "border-b border-ods-border"
1243
1053
  }
1244
1054
  ),
1245
- /* @__PURE__ */ jsx3(
1055
+ /* @__PURE__ */ jsx2(
1246
1056
  "div",
1247
1057
  {
1248
1058
  className: "grid transition-[grid-template-rows] duration-300 ease-out",
@@ -1250,13 +1060,13 @@ function CommandApprovalToast({
1250
1060
  "aria-hidden": !expanded,
1251
1061
  children: /* @__PURE__ */ jsxs("div", { className: "overflow-hidden", children: [
1252
1062
  /* @__PURE__ */ jsxs("div", { className: "flex h-11 w-full items-center gap-2 border-b border-ods-border bg-ods-card px-3 py-2", children: [
1253
- /* @__PURE__ */ jsx3("p", { className: "min-w-0 flex-1 truncate font-['DM_Sans'] text-[14px] font-medium leading-5 text-ods-text-primary", title: command, children: command }),
1254
- toolType ? /* @__PURE__ */ jsx3(ToolIcon, { toolType, size: 16 }) : null
1063
+ /* @__PURE__ */ jsx2("p", { className: "min-w-0 flex-1 truncate font-['DM_Sans'] text-[14px] font-medium leading-5 text-ods-text-primary", title: command, children: command }),
1064
+ toolType ? /* @__PURE__ */ jsx2(ToolIcon, { toolType, size: 16 }) : null
1255
1065
  ] }),
1256
1066
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 bg-ods-bg p-3", children: [
1257
- approvalDescription ? /* @__PURE__ */ jsx3("p", { className: "font-['DM_Sans'] text-[14px] font-medium leading-5 text-ods-text-secondary", children: approvalDescription }) : null,
1067
+ approvalDescription ? /* @__PURE__ */ jsx2("p", { className: "font-['DM_Sans'] text-[14px] font-medium leading-5 text-ods-text-secondary", children: approvalDescription }) : null,
1258
1068
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
1259
- /* @__PURE__ */ jsx3(
1069
+ /* @__PURE__ */ jsx2(
1260
1070
  "button",
1261
1071
  {
1262
1072
  type: "button",
@@ -1266,7 +1076,7 @@ function CommandApprovalToast({
1266
1076
  children: approveLabel
1267
1077
  }
1268
1078
  ),
1269
- /* @__PURE__ */ jsx3(
1079
+ /* @__PURE__ */ jsx2(
1270
1080
  "button",
1271
1081
  {
1272
1082
  type: "button",
@@ -1289,8 +1099,8 @@ function CommandApprovalToast({
1289
1099
  className: "flex w-full items-center gap-2 bg-ods-card px-3 py-2 text-left font-['DM_Sans'] text-[14px] font-medium leading-5 text-ods-text-primary transition-colors hover:bg-ods-bg-hover",
1290
1100
  "aria-expanded": false,
1291
1101
  children: [
1292
- /* @__PURE__ */ jsx3("span", { className: "flex-1", children: "Show Command" }),
1293
- /* @__PURE__ */ jsx3(Chevron02DownIcon, { size: 16 })
1102
+ /* @__PURE__ */ jsx2("span", { className: "flex-1", children: "Show Command" }),
1103
+ /* @__PURE__ */ jsx2(Chevron02DownIcon, { size: 16 })
1294
1104
  ]
1295
1105
  }
1296
1106
  )
@@ -1307,13 +1117,13 @@ function Toaster({
1307
1117
  } = {}) {
1308
1118
  const { classNames: userClassNames, ...restToastOptions } = toastOptions ?? {};
1309
1119
  return /* @__PURE__ */ jsxs(Fragment2, { children: [
1310
- /* @__PURE__ */ jsx3("style", { children: `
1120
+ /* @__PURE__ */ jsx2("style", { children: `
1311
1121
  @keyframes toast-progress {
1312
1122
  from { transform: scaleX(1); }
1313
1123
  to { transform: scaleX(0); }
1314
1124
  }
1315
1125
  ` }),
1316
- /* @__PURE__ */ jsx3(
1126
+ /* @__PURE__ */ jsx2(
1317
1127
  SonnerToaster,
1318
1128
  {
1319
1129
  position,
@@ -1343,7 +1153,7 @@ function showToast(options) {
1343
1153
  ...rest
1344
1154
  } = opts;
1345
1155
  return sonnerToast.custom(
1346
- (id) => /* @__PURE__ */ jsx3(
1156
+ (id) => /* @__PURE__ */ jsx2(
1347
1157
  ToastCard,
1348
1158
  {
1349
1159
  id,
@@ -1375,7 +1185,7 @@ function showCommandApprovalToast(options) {
1375
1185
  ...rest
1376
1186
  } = options;
1377
1187
  return sonnerToast.custom(
1378
- (id) => /* @__PURE__ */ jsx3(
1188
+ (id) => /* @__PURE__ */ jsx2(
1379
1189
  CommandApprovalToast,
1380
1190
  {
1381
1191
  id,
@@ -2806,65 +2616,6 @@ function useNatsClient(clientOptions, options = {}) {
2806
2616
 
2807
2617
  // src/hooks/use-access-code-integration.ts
2808
2618
  import React2 from "react";
2809
-
2810
- // src/utils/access-code-client.ts
2811
- async function validateAccessCode(email, code, endpoints) {
2812
- try {
2813
- const response = await fetch(endpoints.validateUrl, {
2814
- method: "POST",
2815
- headers: {
2816
- "Content-Type": "application/json"
2817
- },
2818
- body: JSON.stringify({ email, code })
2819
- });
2820
- if (!response.ok) {
2821
- const error = await response.json().catch(() => ({}));
2822
- throw new Error(error.error || "Validation request failed");
2823
- }
2824
- return await response.json();
2825
- } catch (error) {
2826
- return {
2827
- valid: false,
2828
- message: error instanceof Error ? error.message : "Validation failed"
2829
- };
2830
- }
2831
- }
2832
- async function consumeAccessCode(email, code, endpoints) {
2833
- try {
2834
- const response = await fetch(endpoints.consumeUrl, {
2835
- method: "POST",
2836
- headers: {
2837
- "Content-Type": "application/json"
2838
- },
2839
- body: JSON.stringify({ email, code })
2840
- });
2841
- if (!response.ok) {
2842
- const error = await response.json().catch(() => ({}));
2843
- throw new Error(error.error || "Consumption request failed");
2844
- }
2845
- return await response.json();
2846
- } catch (error) {
2847
- return {
2848
- success: false,
2849
- consumed: false,
2850
- message: error instanceof Error ? error.message : "Consumption failed"
2851
- };
2852
- }
2853
- }
2854
- async function validateAndConsumeAccessCode(email, code, endpoints) {
2855
- const validation = await validateAccessCode(email, code, endpoints);
2856
- if (!validation.valid) {
2857
- return validation;
2858
- }
2859
- const consumption = await consumeAccessCode(email, code, endpoints);
2860
- return {
2861
- ...validation,
2862
- consumed: consumption.consumed,
2863
- message: consumption.consumed ? `Access granted for ${validation.cohort_name}` : consumption.message || validation.message
2864
- };
2865
- }
2866
-
2867
- // src/hooks/use-access-code-integration.ts
2868
2619
  function useAccessCodeIntegration() {
2869
2620
  const runtime = useRequiredEndpointsRuntime();
2870
2621
  const endpoints = runtime.accessCode;
@@ -2908,28 +2659,6 @@ function useAccessCodeIntegration() {
2908
2659
 
2909
2660
  // src/hooks/use-humanity-signals.ts
2910
2661
  import { useCallback as useCallback12, useRef as useRef10 } from "react";
2911
-
2912
- // src/utils/humanity-signals.ts
2913
- var HONEYPOT_FIELD = "contact_url_confirm";
2914
- var ELAPSED_MS_FIELD = "form_elapsed_ms";
2915
- var DEFAULT_MIN_FILL_MS = 700;
2916
- function extractHumanitySignals(body) {
2917
- const b = body ?? {};
2918
- const rawHp = b[HONEYPOT_FIELD];
2919
- const honeypot = rawHp == null ? "" : String(rawHp);
2920
- const rawMs = b[ELAPSED_MS_FIELD];
2921
- const elapsedMs = typeof rawMs === "number" && Number.isFinite(rawMs) ? rawMs : null;
2922
- return { honeypot, elapsedMs };
2923
- }
2924
- function evaluateHumanitySignals(body, opts) {
2925
- const { honeypot, elapsedMs } = extractHumanitySignals(body);
2926
- if (honeypot.trim() !== "") return { ok: false, reason: "honeypot" };
2927
- if (elapsedMs !== null && elapsedMs < opts.minFillMs) return { ok: false, reason: "too_fast" };
2928
- return { ok: true };
2929
- }
2930
- var splitCsvEnv = (s) => s?.split(",").map((t) => t.trim()).filter(Boolean) ?? [];
2931
-
2932
- // src/hooks/use-humanity-signals.ts
2933
2662
  function useHumanitySignals() {
2934
2663
  const ref = useRef10(null);
2935
2664
  const mountedAt = useRef10(typeof performance !== "undefined" ? performance.now() : 0);
@@ -2964,28 +2693,9 @@ export {
2964
2693
  useTablePagination,
2965
2694
  useThrottle,
2966
2695
  useWindowSize,
2967
- platformIcons,
2968
- platformColors,
2969
- platformDisplayNames,
2970
- platformDescriptions,
2971
- platformSlogans,
2972
- platformHexColors,
2973
- platformIconNames,
2974
- getDefaultColorForPlatform,
2975
- getDefaultIconForPlatform,
2976
- transformPlatformConfigsToOptions,
2977
- getPlatformIcon,
2978
- getPlatformColor,
2979
- getPlatformDisplayName,
2980
- getPlatformDescription,
2981
- getPlatformSlogan,
2982
- getSmallPlatformIcon,
2983
- getPlatformIconComponent,
2984
2696
  usePlatformConfig,
2985
2697
  usePlatformByValue,
2986
2698
  useValidatePlatform,
2987
- ToolTypeValues,
2988
- toolLabels,
2989
2699
  ToolIcon,
2990
2700
  dotColorByVariant,
2991
2701
  progressColorByVariant,
@@ -3028,16 +2738,7 @@ export {
3028
2738
  createSearchParams,
3029
2739
  useCursorPaginationState,
3030
2740
  useNatsClient,
3031
- validateAccessCode,
3032
- consumeAccessCode,
3033
- validateAndConsumeAccessCode,
3034
2741
  useAccessCodeIntegration,
3035
- HONEYPOT_FIELD,
3036
- ELAPSED_MS_FIELD,
3037
- DEFAULT_MIN_FILL_MS,
3038
- extractHumanitySignals,
3039
- evaluateHumanitySignals,
3040
- splitCsvEnv,
3041
2742
  useHumanitySignals
3042
2743
  };
3043
- //# sourceMappingURL=chunk-USPATRSC.js.map
2744
+ //# sourceMappingURL=chunk-N6ZM5PYZ.js.map