@ably/ui 15.7.0-dev.790ab312 → 16.0.0-dev.4ca56ef5

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 (139) hide show
  1. package/core/.DS_Store +0 -0
  2. package/core/Flyout.js +1 -1
  3. package/core/Flyout.js.map +1 -1
  4. package/core/Header/HeaderLinks.js.map +1 -1
  5. package/core/Header.js +1 -1
  6. package/core/Header.js.map +1 -1
  7. package/core/LegacyMeganav/LegacyMeganav.js +2 -0
  8. package/core/LegacyMeganav/LegacyMeganav.js.map +1 -0
  9. package/core/LegacyMeganav/MeganavBlogPostsList/component.js +2 -0
  10. package/core/LegacyMeganav/MeganavBlogPostsList/component.js.map +1 -0
  11. package/core/LegacyMeganav/MeganavBlogPostsList.js +2 -0
  12. package/core/LegacyMeganav/MeganavBlogPostsList.js.map +1 -0
  13. package/core/LegacyMeganav/MeganavContentCompany.js +2 -0
  14. package/core/LegacyMeganav/MeganavContentCompany.js.map +1 -0
  15. package/core/LegacyMeganav/MeganavContentDevelopers.js +2 -0
  16. package/core/LegacyMeganav/MeganavContentDevelopers.js.map +1 -0
  17. package/core/LegacyMeganav/MeganavContentProducts.js +2 -0
  18. package/core/LegacyMeganav/MeganavContentProducts.js.map +1 -0
  19. package/core/LegacyMeganav/MeganavContentUseCases.js +2 -0
  20. package/core/LegacyMeganav/MeganavContentUseCases.js.map +1 -0
  21. package/core/LegacyMeganav/MeganavControl/component.js +2 -0
  22. package/core/LegacyMeganav/MeganavControl/component.js.map +1 -0
  23. package/core/LegacyMeganav/MeganavControl.js +2 -0
  24. package/core/LegacyMeganav/MeganavControl.js.map +1 -0
  25. package/core/LegacyMeganav/MeganavControlMobileDropdown/component.js +2 -0
  26. package/core/LegacyMeganav/MeganavControlMobileDropdown/component.js.map +1 -0
  27. package/core/LegacyMeganav/MeganavControlMobileDropdown.js +2 -0
  28. package/core/LegacyMeganav/MeganavControlMobileDropdown.js.map +1 -0
  29. package/core/LegacyMeganav/MeganavControlMobilePanelClose/component.js +2 -0
  30. package/core/LegacyMeganav/MeganavControlMobilePanelClose/component.js.map +1 -0
  31. package/core/LegacyMeganav/MeganavControlMobilePanelClose.js +2 -0
  32. package/core/LegacyMeganav/MeganavControlMobilePanelClose.js.map +1 -0
  33. package/core/LegacyMeganav/MeganavControlMobilePanelOpen/component.js +2 -0
  34. package/core/LegacyMeganav/MeganavControlMobilePanelOpen/component.js.map +1 -0
  35. package/core/LegacyMeganav/MeganavControlMobilePanelOpen.js +2 -0
  36. package/core/LegacyMeganav/MeganavControlMobilePanelOpen.js.map +1 -0
  37. package/core/LegacyMeganav/MeganavItemsDesktop.js +2 -0
  38. package/core/LegacyMeganav/MeganavItemsDesktop.js.map +1 -0
  39. package/core/LegacyMeganav/MeganavItemsMobile.js +2 -0
  40. package/core/LegacyMeganav/MeganavItemsMobile.js.map +1 -0
  41. package/core/LegacyMeganav/MeganavItemsSignedIn.js.map +1 -0
  42. package/core/LegacyMeganav/MeganavSearch.js +2 -0
  43. package/core/LegacyMeganav/MeganavSearch.js.map +1 -0
  44. package/core/LegacyMeganav/MeganavSearchAutocomplete/component.js +2 -0
  45. package/core/LegacyMeganav/MeganavSearchAutocomplete/component.js.map +1 -0
  46. package/core/LegacyMeganav/MeganavSearchAutocomplete.js.map +1 -0
  47. package/core/LegacyMeganav/MeganavSearchPanel.js +2 -0
  48. package/core/LegacyMeganav/MeganavSearchPanel.js.map +1 -0
  49. package/core/LegacyMeganav/MeganavSearchSuggestions/component.js +2 -0
  50. package/core/LegacyMeganav/MeganavSearchSuggestions/component.js.map +1 -0
  51. package/core/LegacyMeganav/MeganavSearchSuggestions.js +2 -0
  52. package/core/LegacyMeganav/MeganavSearchSuggestions.js.map +1 -0
  53. package/core/LegacyMeganav/SignOutLink.js.map +1 -0
  54. package/core/LegacyMeganav/component.js +2 -0
  55. package/core/{Meganav → LegacyMeganav}/component.js.map +1 -1
  56. package/core/Meganav/.DS_Store +0 -0
  57. package/core/Meganav/MeganavMobile.js +2 -0
  58. package/core/Meganav/MeganavMobile.js.map +1 -0
  59. package/core/Meganav/MeganavPanel.js +2 -0
  60. package/core/Meganav/MeganavPanel.js.map +1 -0
  61. package/core/Meganav/data.js +2 -0
  62. package/core/Meganav/data.js.map +1 -0
  63. package/core/Meganav/images/fan-engagement-nav-image.png +0 -0
  64. package/core/Meganav/images/founders-nav-image.png +0 -0
  65. package/core/Meganav.js +1 -1
  66. package/core/Meganav.js.map +1 -1
  67. package/core/Notice/component.js +1 -1
  68. package/core/Notice/component.js.map +1 -1
  69. package/core/insights/index.js +1 -1
  70. package/core/insights/index.js.map +1 -1
  71. package/core/insights/mixpanel.js +1 -1
  72. package/core/insights/mixpanel.js.map +1 -1
  73. package/core/insights/posthog.js +1 -1
  74. package/core/insights/posthog.js.map +1 -1
  75. package/core/insights/types.js.map +1 -1
  76. package/index.d.ts +200 -115
  77. package/package.json +4 -8
  78. package/core/Meganav/component.js +0 -2
  79. package/core/MeganavBlogPostsList/component.js +0 -2
  80. package/core/MeganavBlogPostsList/component.js.map +0 -1
  81. package/core/MeganavBlogPostsList.js +0 -2
  82. package/core/MeganavBlogPostsList.js.map +0 -1
  83. package/core/MeganavContentCompany.js +0 -2
  84. package/core/MeganavContentCompany.js.map +0 -1
  85. package/core/MeganavContentDevelopers.js +0 -2
  86. package/core/MeganavContentDevelopers.js.map +0 -1
  87. package/core/MeganavContentProducts.js +0 -2
  88. package/core/MeganavContentProducts.js.map +0 -1
  89. package/core/MeganavContentUseCases.js +0 -2
  90. package/core/MeganavContentUseCases.js.map +0 -1
  91. package/core/MeganavControl/component.js +0 -2
  92. package/core/MeganavControl/component.js.map +0 -1
  93. package/core/MeganavControl.js +0 -2
  94. package/core/MeganavControl.js.map +0 -1
  95. package/core/MeganavControlMobileDropdown/component.js +0 -2
  96. package/core/MeganavControlMobileDropdown/component.js.map +0 -1
  97. package/core/MeganavControlMobileDropdown.js +0 -2
  98. package/core/MeganavControlMobileDropdown.js.map +0 -1
  99. package/core/MeganavControlMobilePanelClose/component.js +0 -2
  100. package/core/MeganavControlMobilePanelClose/component.js.map +0 -1
  101. package/core/MeganavControlMobilePanelClose.js +0 -2
  102. package/core/MeganavControlMobilePanelClose.js.map +0 -1
  103. package/core/MeganavControlMobilePanelOpen/component.js +0 -2
  104. package/core/MeganavControlMobilePanelOpen/component.js.map +0 -1
  105. package/core/MeganavControlMobilePanelOpen.js +0 -2
  106. package/core/MeganavControlMobilePanelOpen.js.map +0 -1
  107. package/core/MeganavItemsDesktop.js +0 -2
  108. package/core/MeganavItemsDesktop.js.map +0 -1
  109. package/core/MeganavItemsMobile.js +0 -2
  110. package/core/MeganavItemsMobile.js.map +0 -1
  111. package/core/MeganavItemsSignedIn.js.map +0 -1
  112. package/core/MeganavSearch.js +0 -2
  113. package/core/MeganavSearch.js.map +0 -1
  114. package/core/MeganavSearchAutocomplete/component.js +0 -2
  115. package/core/MeganavSearchAutocomplete/component.js.map +0 -1
  116. package/core/MeganavSearchAutocomplete.js.map +0 -1
  117. package/core/MeganavSearchPanel.js +0 -2
  118. package/core/MeganavSearchPanel.js.map +0 -1
  119. package/core/MeganavSearchSuggestions/component.js +0 -2
  120. package/core/MeganavSearchSuggestions/component.js.map +0 -1
  121. package/core/MeganavSearchSuggestions.js +0 -2
  122. package/core/MeganavSearchSuggestions.js.map +0 -1
  123. package/core/SignOutLink.js.map +0 -1
  124. package/core/insights/command-queue.js +0 -2
  125. package/core/insights/command-queue.js.map +0 -1
  126. package/core/insights/datalayer.js +0 -2
  127. package/core/insights/datalayer.js.map +0 -1
  128. package/core/insights/index.test.js +0 -2
  129. package/core/insights/index.test.js.map +0 -1
  130. package/core/insights/logger.js +0 -2
  131. package/core/insights/logger.js.map +0 -1
  132. package/core/insights/service.js +0 -2
  133. package/core/insights/service.js.map +0 -1
  134. package/core/styles/colors/computed-colors.json +0 -1
  135. /package/core/{MeganavItemsSignedIn.js → LegacyMeganav/MeganavItemsSignedIn.js} +0 -0
  136. /package/core/{MeganavSearchAutocomplete.js → LegacyMeganav/MeganavSearchAutocomplete.js} +0 -0
  137. /package/core/{SignOutLink.js → LegacyMeganav/SignOutLink.js} +0 -0
  138. /package/core/{Meganav → LegacyMeganav}/component.css +0 -0
  139. /package/core/{Meganav → LegacyMeganav}/component.json +0 -0
@@ -1,2 +1,2 @@
1
- import{InsightsCommandQueue}from"./command-queue";const insights=new InsightsCommandQueue;export const initInsights=config=>insights.initInsights(config);export const enableDebugMode=()=>insights.enableDebugMode();export const disableDebugMode=()=>insights.disableDebugMode();export const identify=identity=>insights.identify(identity);export const trackPageView=()=>insights.trackPageView();export const track=(event,properties)=>insights.track(event,properties);export const startSessionRecording=()=>insights.startSessionRecording();export const stopSessionRecording=()=>insights.stopSessionRecording();export const setupObserver=()=>insights.setupObserver();
1
+ import*as mixpanel from"./mixpanel";import*as posthog from"./posthog";let debugMode=false;export const initInsights=({mixpanelToken,mixpanelAutoCapture,posthogApiKey,posthogApiHost,debug=false})=>{debugMode=!!debug;try{mixpanel.initMixpanel(mixpanelToken,mixpanelAutoCapture,debugMode)}catch(e){if(debugMode){console.error("Failed to initialize Mixpanel",e)}}try{posthog.initPosthog(posthogApiKey,posthogApiHost)}catch(e){if(debugMode){console.error("Failed to initialize Posthog",e)}}};export const enableDebugMode=()=>{debugMode=true;try{mixpanel.enableDebugMode();posthog.enableDebugMode()}catch(e){console.error("Failed to enable debug mode",e)}};export const disableDebugMode=()=>{debugMode=false;try{mixpanel.disableDebugMode();posthog.disableDebugMode()}catch(e){console.error("Failed to disable debug mode",e)}};export const identify=({userId,accountId,organisationId,email,name})=>{if(!userId){if(debugMode){console.warn("User ID not provided, skipping identify")}return}try{mixpanel.identify({userId,accountId,organisationId,email,name})}catch(e){if(debugMode){console.error("Failed to identify user in Mixpanel",e)}}try{posthog.identify({userId,accountId,organisationId,email,name})}catch(e){if(debugMode){console.error("Failed to identify user in Posthog",e)}}};export const trackPageView=()=>{try{mixpanel.trackPageView()}catch(e){if(debugMode){console.error("Failed to track page view in Mixpanel",e)}}try{posthog.trackPageView()}catch(e){if(debugMode){console.error("Failed to track page view in Posthog",e)}}};export const track=(event,properties)=>{try{mixpanel.track(event,properties)}catch(e){if(debugMode){console.error("Failed to track event in Mixpanel",e)}}try{posthog.track(event,properties)}catch(e){if(debugMode){console.error("Failed to track event in Posthog",e)}}};export const setupObserver=()=>{const getInsightAttributes=element=>{const MAX_ATTRIBUTES=10;let count=0;const attributes={};for(const attr of element.attributes){if(count>=MAX_ATTRIBUTES)break;if(attr.name.startsWith("data-insight-")){if(!/^data-insight-[a-zA-Z0-9-]+$/.test(attr.name))continue;if(typeof attr.value!=="string"||attr.value.length>100)continue;const key=attr.name.replace("data-insight-","").split("-").map((part,index)=>index===0?part:part.charAt(0).toUpperCase()+part.slice(1)).join("");attributes[key]=attr.value;count++}}return attributes};const findClosestElementWithInsights=element=>{let current=element;while(current&&current!==document.body){const insights=getInsightAttributes(current);if(Object.keys(insights).length>0){return insights}current=current.parentElement}return null};const handleClick=event=>{if(!(event.target instanceof HTMLElement))return;const insights=findClosestElementWithInsights(event.target);if(insights){const{event:eventName,...properties}=insights;track(eventName||"element_clicked",properties)}};document.body.addEventListener("click",handleClick);return()=>{document.body.removeEventListener("click",handleClick)}};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/insights/index.ts"],"sourcesContent":["import { InsightsConfig, InsightsIdentity } from \"./types\";\nimport { InsightsCommandQueue } from \"./command-queue\";\nexport type { InsightsConfig };\n\n// Hi and welcome 👋\n//\n// The insights code is written using a Command Queue, or Deferred Execution pattern.\n// This pattern is useful when you need to queue up actions that should wait until\n// some initialization is complete. In this case, we want to queue up all the analytics\n// commands until the analytics service is initialized. This way, we can ensure that\n// no analytics events are lost during the initialization process. It looks wildly\n// different than other parts of Ably UI, but if you squint you realise it looks very\n// much like the services it's wrapping.\n//\n// There are three pieces working together here:\n// - The `AnalyticsService` interface, which defines the public methods that the insights\n// service will expose.\n// - The `InsightsCommandQueue` class, which is the main entry point for the insights\n// service. It acts as a proxy that will either queue up commands or execute\n// them directly on the real implementation.\n// - The `InsightsService` class, which is the real implementation that will be used\n// after initialization. It's responsible for initializing the underlying analytics\n// services (Mixpanel, Posthog & the data layer) and executing the queued commands.\n\n// Create the singleton instance with the command queue pattern\nconst insights = new InsightsCommandQueue();\n\n// Export the methods with the same interface as before\nexport const initInsights = (config: InsightsConfig) =>\n insights.initInsights(config);\nexport const enableDebugMode = () => insights.enableDebugMode();\nexport const disableDebugMode = () => insights.disableDebugMode();\nexport const identify = (identity: InsightsIdentity) =>\n insights.identify(identity);\nexport const trackPageView = () => insights.trackPageView();\nexport const track = (event: string, properties?: Record<string, unknown>) =>\n insights.track(event, properties);\nexport const startSessionRecording = () => insights.startSessionRecording();\nexport const stopSessionRecording = () => insights.stopSessionRecording();\nexport const setupObserver = () => insights.setupObserver();\n"],"names":["InsightsCommandQueue","insights","initInsights","config","enableDebugMode","disableDebugMode","identify","identity","trackPageView","track","event","properties","startSessionRecording","stopSessionRecording","setupObserver"],"mappings":"AACA,OAASA,oBAAoB,KAAQ,iBAAkB,CAwBvD,MAAMC,SAAW,IAAID,oBAGrB,QAAO,MAAME,aAAe,AAACC,QAC3BF,SAASC,YAAY,CAACC,OAAQ,AAChC,QAAO,MAAMC,gBAAkB,IAAMH,SAASG,eAAe,EAAG,AAChE,QAAO,MAAMC,iBAAmB,IAAMJ,SAASI,gBAAgB,EAAG,AAClE,QAAO,MAAMC,SAAW,AAACC,UACvBN,SAASK,QAAQ,CAACC,SAAU,AAC9B,QAAO,MAAMC,cAAgB,IAAMP,SAASO,aAAa,EAAG,AAC5D,QAAO,MAAMC,MAAQ,CAACC,MAAeC,aACnCV,SAASQ,KAAK,CAACC,MAAOC,WAAY,AACpC,QAAO,MAAMC,sBAAwB,IAAMX,SAASW,qBAAqB,EAAG,AAC5E,QAAO,MAAMC,qBAAuB,IAAMZ,SAASY,oBAAoB,EAAG,AAC1E,QAAO,MAAMC,cAAgB,IAAMb,SAASa,aAAa,EAAG"}
1
+ {"version":3,"sources":["../../../src/core/insights/index.ts"],"sourcesContent":["import * as mixpanel from \"./mixpanel\";\nimport * as posthog from \"./posthog\";\nimport { InsightsIdentity } from \"./types\";\n\nexport type InsightsConfig = {\n debug: boolean;\n mixpanelToken: string;\n mixpanelAutoCapture: boolean;\n posthogApiKey: string;\n posthogApiHost: string;\n};\n\nlet debugMode = false;\n\nexport const initInsights = ({\n mixpanelToken,\n mixpanelAutoCapture,\n posthogApiKey,\n posthogApiHost,\n debug = false,\n}: InsightsConfig) => {\n debugMode = !!debug;\n\n try {\n mixpanel.initMixpanel(mixpanelToken, mixpanelAutoCapture, debugMode);\n } catch (e) {\n if (debugMode) {\n console.error(\"Failed to initialize Mixpanel\", e);\n }\n }\n\n try {\n posthog.initPosthog(posthogApiKey, posthogApiHost);\n } catch (e) {\n if (debugMode) {\n console.error(\"Failed to initialize Posthog\", e);\n }\n }\n};\n\nexport const enableDebugMode = () => {\n debugMode = true;\n try {\n mixpanel.enableDebugMode();\n posthog.enableDebugMode();\n } catch (e) {\n console.error(\"Failed to enable debug mode\", e);\n }\n};\n\nexport const disableDebugMode = () => {\n debugMode = false;\n try {\n mixpanel.disableDebugMode();\n posthog.disableDebugMode();\n } catch (e) {\n console.error(\"Failed to disable debug mode\", e);\n }\n};\n\nexport const identify = ({\n userId,\n accountId,\n organisationId,\n email,\n name,\n}: InsightsIdentity) => {\n // In very rare cases we might have a user without an account, so we'll\n // let null/undefined/blank strings through on that one\n if (!userId) {\n if (debugMode) {\n console.warn(\"User ID not provided, skipping identify\");\n }\n return;\n }\n\n try {\n mixpanel.identify({ userId, accountId, organisationId, email, name });\n } catch (e) {\n if (debugMode) {\n console.error(\"Failed to identify user in Mixpanel\", e);\n }\n }\n\n try {\n posthog.identify({ userId, accountId, organisationId, email, name });\n } catch (e) {\n if (debugMode) {\n console.error(\"Failed to identify user in Posthog\", e);\n }\n }\n};\n\nexport const trackPageView = () => {\n try {\n mixpanel.trackPageView();\n } catch (e) {\n if (debugMode) {\n console.error(\"Failed to track page view in Mixpanel\", e);\n }\n }\n\n try {\n posthog.trackPageView();\n } catch (e) {\n if (debugMode) {\n console.error(\"Failed to track page view in Posthog\", e);\n }\n }\n};\n\nexport const track = (event: string, properties?: Record<string, unknown>) => {\n try {\n mixpanel.track(event, properties);\n } catch (e) {\n if (debugMode) {\n console.error(\"Failed to track event in Mixpanel\", e);\n }\n }\n\n try {\n posthog.track(event, properties);\n } catch (e) {\n if (debugMode) {\n console.error(\"Failed to track event in Posthog\", e);\n }\n }\n};\n\ntype InsightAttributes = {\n event?: string;\n [key: string]: string | undefined;\n};\n\nexport const setupObserver = () => {\n // Helper to get all data-insight-* attributes from an element\n const getInsightAttributes = (element): InsightAttributes => {\n // limit how many data attributes we'll process\n const MAX_ATTRIBUTES = 10;\n let count = 0;\n\n const attributes: InsightAttributes = {};\n\n for (const attr of element.attributes) {\n if (count >= MAX_ATTRIBUTES) break;\n if (attr.name.startsWith(\"data-insight-\")) {\n // Validate attribute name format\n if (!/^data-insight-[a-zA-Z0-9-]+$/.test(attr.name)) continue;\n\n // Sanitize attribute value\n if (typeof attr.value !== \"string\" || attr.value.length > 100) continue;\n\n // Convert data-insight-event-name to eventName\n const key = attr.name\n .replace(\"data-insight-\", \"\")\n .split(\"-\")\n .map((part, index) =>\n index === 0 ? part : part.charAt(0).toUpperCase() + part.slice(1),\n )\n .join(\"\");\n attributes[key] = attr.value;\n count++;\n }\n }\n return attributes;\n };\n\n // Helper to find closest element with data-insight attributes\n const findClosestElementWithInsights = (element) => {\n let current = element;\n while (current && current !== document.body) {\n const insights = getInsightAttributes(current);\n if (Object.keys(insights).length > 0) {\n return insights;\n }\n current = current.parentElement;\n }\n return null;\n };\n\n // Global click handler\n const handleClick = (event: MouseEvent): void => {\n if (!(event.target instanceof HTMLElement)) return;\n const insights = findClosestElementWithInsights(event.target);\n if (insights) {\n // Extract special properties if they exist\n const { event: eventName, ...properties } = insights;\n track(eventName || \"element_clicked\", properties);\n }\n };\n\n // Add listener to document body to catch all clicks\n document.body.addEventListener(\"click\", handleClick);\n\n // Return cleanup function in case it's needed\n return () => {\n document.body.removeEventListener(\"click\", handleClick);\n };\n};\n"],"names":["mixpanel","posthog","debugMode","initInsights","mixpanelToken","mixpanelAutoCapture","posthogApiKey","posthogApiHost","debug","initMixpanel","e","console","error","initPosthog","enableDebugMode","disableDebugMode","identify","userId","accountId","organisationId","email","name","warn","trackPageView","track","event","properties","setupObserver","getInsightAttributes","element","MAX_ATTRIBUTES","count","attributes","attr","startsWith","test","value","length","key","replace","split","map","part","index","charAt","toUpperCase","slice","join","findClosestElementWithInsights","current","document","body","insights","Object","keys","parentElement","handleClick","target","HTMLElement","eventName","addEventListener","removeEventListener"],"mappings":"AAAA,UAAYA,aAAc,YAAa,AACvC,WAAYC,YAAa,WAAY,CAWrC,IAAIC,UAAY,KAEhB,QAAO,MAAMC,aAAe,CAAC,CAC3BC,aAAa,CACbC,mBAAmB,CACnBC,aAAa,CACbC,cAAc,CACdC,MAAQ,KAAK,CACE,IACfN,UAAY,CAAC,CAACM,MAEd,GAAI,CACFR,SAASS,YAAY,CAACL,cAAeC,oBAAqBH,UAC5D,CAAE,MAAOQ,EAAG,CACV,GAAIR,UAAW,CACbS,QAAQC,KAAK,CAAC,gCAAiCF,EACjD,CACF,CAEA,GAAI,CACFT,QAAQY,WAAW,CAACP,cAAeC,eACrC,CAAE,MAAOG,EAAG,CACV,GAAIR,UAAW,CACbS,QAAQC,KAAK,CAAC,+BAAgCF,EAChD,CACF,CACF,CAAE,AAEF,QAAO,MAAMI,gBAAkB,KAC7BZ,UAAY,KACZ,GAAI,CACFF,SAASc,eAAe,GACxBb,QAAQa,eAAe,EACzB,CAAE,MAAOJ,EAAG,CACVC,QAAQC,KAAK,CAAC,8BAA+BF,EAC/C,CACF,CAAE,AAEF,QAAO,MAAMK,iBAAmB,KAC9Bb,UAAY,MACZ,GAAI,CACFF,SAASe,gBAAgB,GACzBd,QAAQc,gBAAgB,EAC1B,CAAE,MAAOL,EAAG,CACVC,QAAQC,KAAK,CAAC,+BAAgCF,EAChD,CACF,CAAE,AAEF,QAAO,MAAMM,SAAW,CAAC,CACvBC,MAAM,CACNC,SAAS,CACTC,cAAc,CACdC,KAAK,CACLC,IAAI,CACa,IAGjB,GAAI,CAACJ,OAAQ,CACX,GAAIf,UAAW,CACbS,QAAQW,IAAI,CAAC,0CACf,CACA,MACF,CAEA,GAAI,CACFtB,SAASgB,QAAQ,CAAC,CAAEC,OAAQC,UAAWC,eAAgBC,MAAOC,IAAK,EACrE,CAAE,MAAOX,EAAG,CACV,GAAIR,UAAW,CACbS,QAAQC,KAAK,CAAC,sCAAuCF,EACvD,CACF,CAEA,GAAI,CACFT,QAAQe,QAAQ,CAAC,CAAEC,OAAQC,UAAWC,eAAgBC,MAAOC,IAAK,EACpE,CAAE,MAAOX,EAAG,CACV,GAAIR,UAAW,CACbS,QAAQC,KAAK,CAAC,qCAAsCF,EACtD,CACF,CACF,CAAE,AAEF,QAAO,MAAMa,cAAgB,KAC3B,GAAI,CACFvB,SAASuB,aAAa,EACxB,CAAE,MAAOb,EAAG,CACV,GAAIR,UAAW,CACbS,QAAQC,KAAK,CAAC,wCAAyCF,EACzD,CACF,CAEA,GAAI,CACFT,QAAQsB,aAAa,EACvB,CAAE,MAAOb,EAAG,CACV,GAAIR,UAAW,CACbS,QAAQC,KAAK,CAAC,uCAAwCF,EACxD,CACF,CACF,CAAE,AAEF,QAAO,MAAMc,MAAQ,CAACC,MAAeC,cACnC,GAAI,CACF1B,SAASwB,KAAK,CAACC,MAAOC,WACxB,CAAE,MAAOhB,EAAG,CACV,GAAIR,UAAW,CACbS,QAAQC,KAAK,CAAC,oCAAqCF,EACrD,CACF,CAEA,GAAI,CACFT,QAAQuB,KAAK,CAACC,MAAOC,WACvB,CAAE,MAAOhB,EAAG,CACV,GAAIR,UAAW,CACbS,QAAQC,KAAK,CAAC,mCAAoCF,EACpD,CACF,CACF,CAAE,AAOF,QAAO,MAAMiB,cAAgB,KAE3B,MAAMC,qBAAuB,AAACC,UAE5B,MAAMC,eAAiB,GACvB,IAAIC,MAAQ,EAEZ,MAAMC,WAAgC,CAAC,EAEvC,IAAK,MAAMC,QAAQJ,QAAQG,UAAU,CAAE,CACrC,GAAID,OAASD,eAAgB,MAC7B,GAAIG,KAAKZ,IAAI,CAACa,UAAU,CAAC,iBAAkB,CAEzC,GAAI,CAAC,+BAA+BC,IAAI,CAACF,KAAKZ,IAAI,EAAG,SAGrD,GAAI,OAAOY,KAAKG,KAAK,GAAK,UAAYH,KAAKG,KAAK,CAACC,MAAM,CAAG,IAAK,SAG/D,MAAMC,IAAML,KAAKZ,IAAI,CAClBkB,OAAO,CAAC,gBAAiB,IACzBC,KAAK,CAAC,KACNC,GAAG,CAAC,CAACC,KAAMC,QACVA,QAAU,EAAID,KAAOA,KAAKE,MAAM,CAAC,GAAGC,WAAW,GAAKH,KAAKI,KAAK,CAAC,IAEhEC,IAAI,CAAC,GACRf,CAAAA,UAAU,CAACM,IAAI,CAAGL,KAAKG,KAAK,AAC5BL,CAAAA,OACF,CACF,CACA,OAAOC,UACT,EAGA,MAAMgB,+BAAiC,AAACnB,UACtC,IAAIoB,QAAUpB,QACd,MAAOoB,SAAWA,UAAYC,SAASC,IAAI,CAAE,CAC3C,MAAMC,SAAWxB,qBAAqBqB,SACtC,GAAII,OAAOC,IAAI,CAACF,UAAUf,MAAM,CAAG,EAAG,CACpC,OAAOe,QACT,CACAH,QAAUA,QAAQM,aAAa,AACjC,CACA,OAAO,IACT,EAGA,MAAMC,YAAc,AAAC/B,QACnB,GAAI,CAAEA,CAAAA,MAAMgC,MAAM,YAAYC,WAAU,EAAI,OAC5C,MAAMN,SAAWJ,+BAA+BvB,MAAMgC,MAAM,EAC5D,GAAIL,SAAU,CAEZ,KAAM,CAAE3B,MAAOkC,SAAS,CAAE,GAAGjC,WAAY,CAAG0B,SAC5C5B,MAAMmC,WAAa,kBAAmBjC,WACxC,CACF,EAGAwB,SAASC,IAAI,CAACS,gBAAgB,CAAC,QAASJ,aAGxC,MAAO,KACLN,SAASC,IAAI,CAACU,mBAAmB,CAAC,QAASL,YAC7C,CACF,CAAE"}
@@ -1,2 +1,2 @@
1
- import mixpanel from"mixpanel-browser";export const initMixpanel=(token,autoCapture=false,debug=false,recordSessionsPercent=1)=>{const blockSelectors=["[ph-no-capture]",'[data-sl="mask"]'];if(!token){console.warn("Mixpanel token not provided, skipping initialization");return}mixpanel.init(token,{debug:debug,persistence:"localStorage",autocapture:autoCapture?{block_selectors:blockSelectors,capture_text_content:true}:false,track_pageview:false,record_sessions_percent:recordSessionsPercent})};export const enableDebugMode=()=>{mixpanel.set_config({debug:true})};export const disableDebugMode=()=>{mixpanel.set_config({debug:false})};export const identify=({userId,accountId,organisationId,email,name})=>{if(!userId){return}mixpanel.identify(userId.toString());if(email||name){mixpanel.people.set({$email:email,$name:name})}if(accountId){mixpanel.people.union({accounts:[accountId.toString()]})}if(organisationId){mixpanel.people.set({organization_id:[organisationId.toString()]})}};const redactUrlSegments=()=>{const pathSegments=window.location.pathname.split("/");const redactedSegments=pathSegments.map(segment=>{return/^\d+$/.test(segment)?"{redacted}":segment});const url=new URL(window.location.href);url.pathname=redactedSegments.join("/");return decodeURI(url.toString()).toLowerCase()};export const trackPageView=()=>{mixpanel.track_pageview({redacted_path:redactUrlSegments()})};export const track=(event,properties)=>{mixpanel.track(event,properties)};export const startSessionRecording=()=>{mixpanel.start_session_recording()};export const stopSessionRecording=()=>{mixpanel.stop_session_recording()};
1
+ import mixpanel from"mixpanel-browser";export const initMixpanel=(token,autoCapture=false,debug=false)=>{const blockSelectors=["[ph-no-capture]",'[data-sl="mask"]'];if(!token){console.warn("Mixpanel token not provided, skipping initialization");return}mixpanel.init(token,{debug:debug,persistence:"localStorage",autocapture:autoCapture?{block_selectors:blockSelectors}:false,track_pageview:false})};export const enableDebugMode=()=>{mixpanel.set_config({debug:true})};export const disableDebugMode=()=>{mixpanel.set_config({debug:false})};export const identify=({userId,accountId,organisationId,email,name})=>{if(!userId){return}mixpanel.identify(userId);if(email||name){mixpanel.people.set({$email:email,$name:name})}if(accountId){mixpanel.people.union({account_id:[accountId]})}if(organisationId){mixpanel.people.set({organisation_id:[organisationId]})}};export const trackPageView=mixpanel.track_pageview;export const track=mixpanel.track;
2
2
  //# sourceMappingURL=mixpanel.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/insights/mixpanel.ts"],"sourcesContent":["import mixpanel from \"mixpanel-browser\";\n\nimport { InsightsIdentity } from \"./types\";\n\nexport const initMixpanel = (\n token: string,\n autoCapture: boolean = false,\n debug: boolean = false,\n recordSessionsPercent: number = 1,\n) => {\n const blockSelectors = [\"[ph-no-capture]\", '[data-sl=\"mask\"]'];\n if (!token) {\n console.warn(\"Mixpanel token not provided, skipping initialization\");\n return;\n }\n\n mixpanel.init(token, {\n debug: debug,\n persistence: \"localStorage\",\n autocapture: autoCapture\n ? {\n block_selectors: blockSelectors,\n capture_text_content: true,\n }\n : false,\n track_pageview: false, // We'll track page views manually\n record_sessions_percent: recordSessionsPercent,\n });\n};\n\nexport const enableDebugMode = () => {\n mixpanel.set_config({ debug: true });\n};\n\nexport const disableDebugMode = () => {\n mixpanel.set_config({ debug: false });\n};\n\nexport const identify = ({\n userId,\n accountId,\n organisationId,\n email,\n name,\n}: InsightsIdentity) => {\n // In very rare cases we might have a user without an account, so we'll\n // let null/undefined/blank strings through on that one\n if (!userId) {\n return;\n }\n\n mixpanel.identify(userId.toString());\n\n if (email || name) {\n mixpanel.people.set({ $email: email, $name: name });\n }\n\n if (accountId) {\n mixpanel.people.union({ accounts: [accountId.toString()] });\n }\n\n if (organisationId) {\n mixpanel.people.set({ organization_id: [organisationId.toString()] });\n }\n};\n\n// Simple function to replace all digits in a URL path with {redacted},\n// purely to make reporting based on aggregates easier\nconst redactUrlSegments = () => {\n const pathSegments = window.location.pathname.split(\"/\");\n\n const redactedSegments = pathSegments.map((segment) => {\n // Check if the segment contains only digits\n return /^\\d+$/.test(segment) ? \"{redacted}\" : segment;\n });\n\n // Join the segments back together\n const url = new URL(window.location.href);\n url.pathname = redactedSegments.join(\"/\");\n\n return decodeURI(url.toString()).toLowerCase();\n};\n\nexport const trackPageView = () => {\n // Add the redacted URL to the page view event for reporting\n mixpanel.track_pageview({\n redacted_path: redactUrlSegments(),\n });\n};\n\nexport const track = (event: string, properties?: Record<string, unknown>) => {\n mixpanel.track(event, properties);\n};\n\nexport const startSessionRecording = () => {\n mixpanel.start_session_recording();\n};\n\nexport const stopSessionRecording = () => {\n mixpanel.stop_session_recording();\n};\n"],"names":["mixpanel","initMixpanel","token","autoCapture","debug","recordSessionsPercent","blockSelectors","console","warn","init","persistence","autocapture","block_selectors","capture_text_content","track_pageview","record_sessions_percent","enableDebugMode","set_config","disableDebugMode","identify","userId","accountId","organisationId","email","name","toString","people","set","$email","$name","union","accounts","organization_id","redactUrlSegments","pathSegments","window","location","pathname","split","redactedSegments","map","segment","test","url","URL","href","join","decodeURI","toLowerCase","trackPageView","redacted_path","track","event","properties","startSessionRecording","start_session_recording","stopSessionRecording","stop_session_recording"],"mappings":"AAAA,OAAOA,aAAc,kBAAmB,AAIxC,QAAO,MAAMC,aAAe,CAC1BC,MACAC,YAAuB,KAAK,CAC5BC,MAAiB,KAAK,CACtBC,sBAAgC,CAAC,IAEjC,MAAMC,eAAiB,CAAC,kBAAmB,mBAAmB,CAC9D,GAAI,CAACJ,MAAO,CACVK,QAAQC,IAAI,CAAC,wDACb,MACF,CAEAR,SAASS,IAAI,CAACP,MAAO,CACnBE,MAAOA,MACPM,YAAa,eACbC,YAAaR,YACT,CACES,gBAAiBN,eACjBO,qBAAsB,IACxB,EACA,MACJC,eAAgB,MAChBC,wBAAyBV,qBAC3B,EACF,CAAE,AAEF,QAAO,MAAMW,gBAAkB,KAC7BhB,SAASiB,UAAU,CAAC,CAAEb,MAAO,IAAK,EACpC,CAAE,AAEF,QAAO,MAAMc,iBAAmB,KAC9BlB,SAASiB,UAAU,CAAC,CAAEb,MAAO,KAAM,EACrC,CAAE,AAEF,QAAO,MAAMe,SAAW,CAAC,CACvBC,MAAM,CACNC,SAAS,CACTC,cAAc,CACdC,KAAK,CACLC,IAAI,CACa,IAGjB,GAAI,CAACJ,OAAQ,CACX,MACF,CAEApB,SAASmB,QAAQ,CAACC,OAAOK,QAAQ,IAEjC,GAAIF,OAASC,KAAM,CACjBxB,SAAS0B,MAAM,CAACC,GAAG,CAAC,CAAEC,OAAQL,MAAOM,MAAOL,IAAK,EACnD,CAEA,GAAIH,UAAW,CACbrB,SAAS0B,MAAM,CAACI,KAAK,CAAC,CAAEC,SAAU,CAACV,UAAUI,QAAQ,GAAG,AAAC,EAC3D,CAEA,GAAIH,eAAgB,CAClBtB,SAAS0B,MAAM,CAACC,GAAG,CAAC,CAAEK,gBAAiB,CAACV,eAAeG,QAAQ,GAAG,AAAC,EACrE,CACF,CAAE,CAIF,MAAMQ,kBAAoB,KACxB,MAAMC,aAAeC,OAAOC,QAAQ,CAACC,QAAQ,CAACC,KAAK,CAAC,KAEpD,MAAMC,iBAAmBL,aAAaM,GAAG,CAAC,AAACC,UAEzC,MAAO,QAAQC,IAAI,CAACD,SAAW,aAAeA,OAChD,GAGA,MAAME,IAAM,IAAIC,IAAIT,OAAOC,QAAQ,CAACS,IAAI,CACxCF,CAAAA,IAAIN,QAAQ,CAAGE,iBAAiBO,IAAI,CAAC,KAErC,OAAOC,UAAUJ,IAAIlB,QAAQ,IAAIuB,WAAW,EAC9C,CAEA,QAAO,MAAMC,cAAgB,KAE3BjD,SAASc,cAAc,CAAC,CACtBoC,cAAejB,mBACjB,EACF,CAAE,AAEF,QAAO,MAAMkB,MAAQ,CAACC,MAAeC,cACnCrD,SAASmD,KAAK,CAACC,MAAOC,WACxB,CAAE,AAEF,QAAO,MAAMC,sBAAwB,KACnCtD,SAASuD,uBAAuB,EAClC,CAAE,AAEF,QAAO,MAAMC,qBAAuB,KAClCxD,SAASyD,sBAAsB,EACjC,CAAE"}
1
+ {"version":3,"sources":["../../../src/core/insights/mixpanel.ts"],"sourcesContent":["import mixpanel from \"mixpanel-browser\";\n\nimport { InsightsIdentity } from \"./types\";\n\nexport const initMixpanel = (\n token: string,\n autoCapture: boolean = false,\n debug: boolean = false,\n) => {\n const blockSelectors = [\"[ph-no-capture]\", '[data-sl=\"mask\"]'];\n if (!token) {\n console.warn(\"Mixpanel token not provided, skipping initialization\");\n return;\n }\n\n mixpanel.init(token, {\n debug: debug,\n persistence: \"localStorage\",\n autocapture: autoCapture\n ? {\n block_selectors: blockSelectors,\n }\n : false,\n track_pageview: false, // We'll track page views manually\n });\n};\n\nexport const enableDebugMode = () => {\n mixpanel.set_config({ debug: true });\n};\n\nexport const disableDebugMode = () => {\n mixpanel.set_config({ debug: false });\n};\n\nexport const identify = ({\n userId,\n accountId,\n organisationId,\n email,\n name,\n}: InsightsIdentity) => {\n // In very rare cases we might have a user without an account, so we'll\n // let null/undefined/blank strings through on that one\n if (!userId) {\n return;\n }\n\n mixpanel.identify(userId);\n\n if (email || name) {\n mixpanel.people.set({ $email: email, $name: name });\n }\n\n if (accountId) {\n mixpanel.people.union({ account_id: [accountId] });\n }\n\n if (organisationId) {\n mixpanel.people.set({ organisation_id: [organisationId] });\n }\n};\n\nexport const trackPageView = mixpanel.track_pageview;\n\nexport const track = mixpanel.track;\n"],"names":["mixpanel","initMixpanel","token","autoCapture","debug","blockSelectors","console","warn","init","persistence","autocapture","block_selectors","track_pageview","enableDebugMode","set_config","disableDebugMode","identify","userId","accountId","organisationId","email","name","people","set","$email","$name","union","account_id","organisation_id","trackPageView","track"],"mappings":"AAAA,OAAOA,aAAc,kBAAmB,AAIxC,QAAO,MAAMC,aAAe,CAC1BC,MACAC,YAAuB,KAAK,CAC5BC,MAAiB,KAAK,IAEtB,MAAMC,eAAiB,CAAC,kBAAmB,mBAAmB,CAC9D,GAAI,CAACH,MAAO,CACVI,QAAQC,IAAI,CAAC,wDACb,MACF,CAEAP,SAASQ,IAAI,CAACN,MAAO,CACnBE,MAAOA,MACPK,YAAa,eACbC,YAAaP,YACT,CACEQ,gBAAiBN,cACnB,EACA,MACJO,eAAgB,KAClB,EACF,CAAE,AAEF,QAAO,MAAMC,gBAAkB,KAC7Bb,SAASc,UAAU,CAAC,CAAEV,MAAO,IAAK,EACpC,CAAE,AAEF,QAAO,MAAMW,iBAAmB,KAC9Bf,SAASc,UAAU,CAAC,CAAEV,MAAO,KAAM,EACrC,CAAE,AAEF,QAAO,MAAMY,SAAW,CAAC,CACvBC,MAAM,CACNC,SAAS,CACTC,cAAc,CACdC,KAAK,CACLC,IAAI,CACa,IAGjB,GAAI,CAACJ,OAAQ,CACX,MACF,CAEAjB,SAASgB,QAAQ,CAACC,QAElB,GAAIG,OAASC,KAAM,CACjBrB,SAASsB,MAAM,CAACC,GAAG,CAAC,CAAEC,OAAQJ,MAAOK,MAAOJ,IAAK,EACnD,CAEA,GAAIH,UAAW,CACblB,SAASsB,MAAM,CAACI,KAAK,CAAC,CAAEC,WAAY,CAACT,UAAU,AAAC,EAClD,CAEA,GAAIC,eAAgB,CAClBnB,SAASsB,MAAM,CAACC,GAAG,CAAC,CAAEK,gBAAiB,CAACT,eAAe,AAAC,EAC1D,CACF,CAAE,AAEF,QAAO,MAAMU,cAAgB7B,SAASY,cAAc,AAAC,AAErD,QAAO,MAAMkB,MAAQ9B,SAAS8B,KAAK,AAAC"}
@@ -1,2 +1,2 @@
1
- import posthog from"posthog-js";export const initPosthog=(apiKey,apiHost)=>{posthog.init(apiKey,{api_host:apiHost,capture_pageview:false})};export const enableDebugMode=()=>{posthog.debug()};export const disableDebugMode=()=>{posthog.debug(false)};export const identify=({userId,accountId,organisationId,email,name})=>{if(!userId){return}if(userId!==posthog.get_distinct_id()){posthog.identify(userId,{email,name})}if(accountId){posthog.group("account",accountId)}if(organisationId){posthog.group("organisation",organisationId)}};export const trackPageView=()=>{posthog.capture("$pageview")};export const track=(event,properties)=>{posthog.capture(event,properties)};export const startSessionRecording=()=>{posthog.startSessionRecording()};export const stopSessionRecording=()=>{posthog.stopSessionRecording()};
1
+ import posthog from"posthog-js";export const initPosthog=(apiKey,apiHost)=>{posthog.init(apiKey,{api_host:apiHost,capture_pageview:false})};export const enableDebugMode=()=>{posthog.debug()};export const disableDebugMode=()=>{posthog.debug(false)};export const identify=({userId,accountId,organisationId,email,name})=>{if(!userId){return}if(userId!==posthog.get_distinct_id()){posthog.identify(userId,{email,name})}if(accountId){posthog.group("account",accountId)}if(organisationId){posthog.group("organisation",organisationId)}};export const trackPageView=()=>{posthog.capture("$pageview")};export const track=(event,properties)=>{posthog.capture(event,properties)};
2
2
  //# sourceMappingURL=posthog.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/insights/posthog.ts"],"sourcesContent":["import posthog from \"posthog-js\";\n\nimport { InsightsIdentity } from \"./types\";\n\nexport const initPosthog = (apiKey: string, apiHost: string) => {\n posthog.init(apiKey, {\n api_host: apiHost,\n capture_pageview: false,\n });\n};\n\nexport const enableDebugMode = () => {\n posthog.debug();\n};\n\nexport const disableDebugMode = () => {\n posthog.debug(false);\n};\n\nexport const identify = ({\n userId,\n accountId,\n organisationId,\n email,\n name,\n}: InsightsIdentity) => {\n // In very rare cases we might have a user without an account, so we'll\n // let null/undefined/blank strings through on that one\n if (!userId) {\n return;\n }\n\n if (userId !== posthog.get_distinct_id()) {\n posthog.identify(userId, { email, name });\n }\n\n // Associate all events in this session with this account\n if (accountId) {\n posthog.group(\"account\", accountId);\n }\n\n // Associate all events in this session with this organisation (if available)\n if (organisationId) {\n posthog.group(\"organisation\", organisationId);\n }\n};\n\nexport const trackPageView = () => {\n posthog.capture(\"$pageview\");\n};\n\nexport const track = (event: string, properties?: Record<string, unknown>) => {\n posthog.capture(event, properties);\n};\n\nexport const startSessionRecording = () => {\n posthog.startSessionRecording();\n};\n\nexport const stopSessionRecording = () => {\n posthog.stopSessionRecording();\n};\n"],"names":["posthog","initPosthog","apiKey","apiHost","init","api_host","capture_pageview","enableDebugMode","debug","disableDebugMode","identify","userId","accountId","organisationId","email","name","get_distinct_id","group","trackPageView","capture","track","event","properties","startSessionRecording","stopSessionRecording"],"mappings":"AAAA,OAAOA,YAAa,YAAa,AAIjC,QAAO,MAAMC,YAAc,CAACC,OAAgBC,WAC1CH,QAAQI,IAAI,CAACF,OAAQ,CACnBG,SAAUF,QACVG,iBAAkB,KACpB,EACF,CAAE,AAEF,QAAO,MAAMC,gBAAkB,KAC7BP,QAAQQ,KAAK,EACf,CAAE,AAEF,QAAO,MAAMC,iBAAmB,KAC9BT,QAAQQ,KAAK,CAAC,MAChB,CAAE,AAEF,QAAO,MAAME,SAAW,CAAC,CACvBC,MAAM,CACNC,SAAS,CACTC,cAAc,CACdC,KAAK,CACLC,IAAI,CACa,IAGjB,GAAI,CAACJ,OAAQ,CACX,MACF,CAEA,GAAIA,SAAWX,QAAQgB,eAAe,GAAI,CACxChB,QAAQU,QAAQ,CAACC,OAAQ,CAAEG,MAAOC,IAAK,EACzC,CAGA,GAAIH,UAAW,CACbZ,QAAQiB,KAAK,CAAC,UAAWL,UAC3B,CAGA,GAAIC,eAAgB,CAClBb,QAAQiB,KAAK,CAAC,eAAgBJ,eAChC,CACF,CAAE,AAEF,QAAO,MAAMK,cAAgB,KAC3BlB,QAAQmB,OAAO,CAAC,YAClB,CAAE,AAEF,QAAO,MAAMC,MAAQ,CAACC,MAAeC,cACnCtB,QAAQmB,OAAO,CAACE,MAAOC,WACzB,CAAE,AAEF,QAAO,MAAMC,sBAAwB,KACnCvB,QAAQuB,qBAAqB,EAC/B,CAAE,AAEF,QAAO,MAAMC,qBAAuB,KAClCxB,QAAQwB,oBAAoB,EAC9B,CAAE"}
1
+ {"version":3,"sources":["../../../src/core/insights/posthog.ts"],"sourcesContent":["import posthog from \"posthog-js\";\n\nimport { InsightsIdentity } from \"./types\";\n\nexport const initPosthog = (apiKey: string, apiHost: string) => {\n posthog.init(apiKey, {\n api_host: apiHost,\n capture_pageview: false,\n });\n};\n\nexport const enableDebugMode = () => {\n posthog.debug();\n};\n\nexport const disableDebugMode = () => {\n posthog.debug(false);\n};\n\nexport const identify = ({\n userId,\n accountId,\n organisationId,\n email,\n name,\n}: InsightsIdentity) => {\n // In very rare cases we might have a user without an account, so we'll\n // let null/undefined/blank strings through on that one\n if (!userId) {\n return;\n }\n\n if (userId !== posthog.get_distinct_id()) {\n posthog.identify(userId, { email, name });\n }\n\n // Associate all events in this session with this account\n if (accountId) {\n posthog.group(\"account\", accountId);\n }\n\n // Associate all events in this session with this organisation (if available)\n if (organisationId) {\n posthog.group(\"organisation\", organisationId);\n }\n};\n\nexport const trackPageView = () => {\n posthog.capture(\"$pageview\");\n};\n\nexport const track = (event: string, properties?: Record<string, unknown>) => {\n posthog.capture(event, properties);\n};\n"],"names":["posthog","initPosthog","apiKey","apiHost","init","api_host","capture_pageview","enableDebugMode","debug","disableDebugMode","identify","userId","accountId","organisationId","email","name","get_distinct_id","group","trackPageView","capture","track","event","properties"],"mappings":"AAAA,OAAOA,YAAa,YAAa,AAIjC,QAAO,MAAMC,YAAc,CAACC,OAAgBC,WAC1CH,QAAQI,IAAI,CAACF,OAAQ,CACnBG,SAAUF,QACVG,iBAAkB,KACpB,EACF,CAAE,AAEF,QAAO,MAAMC,gBAAkB,KAC7BP,QAAQQ,KAAK,EACf,CAAE,AAEF,QAAO,MAAMC,iBAAmB,KAC9BT,QAAQQ,KAAK,CAAC,MAChB,CAAE,AAEF,QAAO,MAAME,SAAW,CAAC,CACvBC,MAAM,CACNC,SAAS,CACTC,cAAc,CACdC,KAAK,CACLC,IAAI,CACa,IAGjB,GAAI,CAACJ,OAAQ,CACX,MACF,CAEA,GAAIA,SAAWX,QAAQgB,eAAe,GAAI,CACxChB,QAAQU,QAAQ,CAACC,OAAQ,CAAEG,MAAOC,IAAK,EACzC,CAGA,GAAIH,UAAW,CACbZ,QAAQiB,KAAK,CAAC,UAAWL,UAC3B,CAGA,GAAIC,eAAgB,CAClBb,QAAQiB,KAAK,CAAC,eAAgBJ,eAChC,CACF,CAAE,AAEF,QAAO,MAAMK,cAAgB,KAC3BlB,QAAQmB,OAAO,CAAC,YAClB,CAAE,AAEF,QAAO,MAAMC,MAAQ,CAACC,MAAeC,cACnCtB,QAAQmB,OAAO,CAACE,MAAOC,WACzB,CAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/insights/types.ts"],"sourcesContent":["export type InsightsConfig = {\n debug: boolean;\n mixpanelToken: string;\n mixpanelAutoCapture: boolean;\n mixpanelRecordSessionsPercent: number;\n posthogApiKey: string;\n posthogApiHost: string;\n};\n\n// Define the interface for our analytics service\nexport interface AnalyticsService {\n initInsights: (config: InsightsConfig) => void;\n enableDebugMode: () => void;\n disableDebugMode: () => void;\n identify: (identity: InsightsIdentity) => void;\n trackPageView: () => void;\n track: (event: string, properties?: Record<string, unknown>) => void;\n startSessionRecording: () => void;\n stopSessionRecording: () => void;\n setupObserver: () => () => void;\n}\n\n// Command type for our queue\nexport type Command = {\n methodName: keyof AnalyticsService;\n args: unknown[];\n};\n\nexport type InsightsIdentity = {\n userId: string;\n accountId: string;\n organisationId?: string;\n email?: string;\n name?: string;\n};\n"],"names":[],"mappings":"AA4BA,QAME"}
1
+ {"version":3,"sources":["../../../src/core/insights/types.ts"],"sourcesContent":["export type InsightsIdentity = {\n userId: string;\n accountId: string;\n organisationId?: string;\n email?: string;\n name?: string;\n};\n"],"names":[],"mappings":"AAAA,QAME"}
package/index.d.ts CHANGED
@@ -475,9 +475,9 @@ type FlyoutProps = {
475
475
  */
476
476
  menuItems: {
477
477
  /**
478
- * Label for the menu item.
478
+ * Name for the menu item.
479
479
  */
480
- label: string;
480
+ name: string;
481
481
  /**
482
482
  * Optional content to be displayed in the flyout panel.
483
483
  */
@@ -537,9 +537,7 @@ export default Footer;
537
537
  declare module '@ably/ui/core/Header/HeaderLinks' {
538
538
  import React from "react";
539
539
  import { HeaderProps } from ".@ably/ui/core/Header";
540
- export const HeaderLinks: React.FC<Pick<HeaderProps, "sessionState" | "headerLinks" | "searchButtonVisibility" | "searchButton"> & {
541
- className?: string;
542
- }>;
540
+ export const HeaderLinks: React.FC<Pick<HeaderProps, "sessionState" | "headerLinks" | "searchButtonVisibility" | "searchButton" | "className">>;
543
541
  //# sourceMappingURL=HeaderLinks.d.ts.map
544
542
  }
545
543
 
@@ -579,6 +577,10 @@ export type HeaderSessionState = {
579
577
  * Props for the Header component.
580
578
  */
581
579
  export type HeaderProps = {
580
+ /**
581
+ * Optional classnames to add to the header
582
+ */
583
+ className?: string;
582
584
  /**
583
585
  * Optional search bar element.
584
586
  */
@@ -683,60 +685,9 @@ export default Icon;
683
685
  //# sourceMappingURL=Icon.d.ts.map
684
686
  }
685
687
 
686
- declare module '@ably/ui/core/LinkButton' {
687
- import React from "react";
688
- import { ButtonPropsBase } from "@ably/ui/core/Button";
689
- import { ColorClass, ColorThemeSet } from "@ably/ui/core/styles/colors/types";
690
- export type LinkButtonProps = ButtonPropsBase & {
691
- disabled?: boolean;
692
- onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;
693
- iconColor?: ColorClass | ColorThemeSet;
694
- } & React.AnchorHTMLAttributes<HTMLAnchorElement>;
695
- const LinkButton: React.FC<LinkButtonProps>;
696
- export default LinkButton;
697
- //# sourceMappingURL=LinkButton.d.ts.map
698
- }
699
-
700
- declare module '@ably/ui/core/Loader' {
701
- type LoaderProps = {
702
- size?: string;
703
- ringColor?: string;
704
- additionalCSS?: string;
705
- };
706
- const Loader: ({ ringColor, size, additionalCSS, }: LoaderProps) => import("react/jsx-runtime").JSX.Element;
707
- export default Loader;
708
- //# sourceMappingURL=Loader.d.ts.map
709
- }
710
-
711
- declare module '@ably/ui/core/Logo' {
712
- import React from "react";
713
- type LogoProps = {
714
- dataId?: string;
715
- logoUrl?: string;
716
- logoAlt?: string;
717
- href?: string;
718
- additionalImgAttrs?: object;
719
- additionalLinkAttrs?: object;
720
- theme?: "light" | "dark";
721
- variant?: "default" | "mono";
722
- orientation?: "default" | "stacked";
723
- };
724
- const _default: React.MemoExoticComponent<({ dataId, href, additionalImgAttrs, additionalLinkAttrs, theme, variant, orientation, logoUrl, logoAlt, }: LogoProps) => import("react/jsx-runtime").JSX.Element>;
725
- export default _default;
726
- //# sourceMappingURL=Logo.d.ts.map
727
- }
728
-
729
- declare module '@ably/ui/core/Meganav/component' {
730
- export default function Meganav({ themeName, addSearchApiKey }: {
731
- themeName: any;
732
- addSearchApiKey: any;
733
- }): () => void;
734
- //# sourceMappingURL=component.d.ts.map
735
- }
736
-
737
- declare module '@ably/ui/core/Meganav' {
688
+ declare module '@ably/ui/core/LegacyMeganav/LegacyMeganav' {
738
689
  import { ReactNode } from "react";
739
- import { ColorClass } from "@ably/ui/core/styles/colors/types";
690
+ import { ColorClass } from ".@ably/ui/core/styles/colors/types";
740
691
  export type MeganavTheme = {
741
692
  backgroundColor?: ColorClass;
742
693
  textColor?: ColorClass;
@@ -814,13 +765,13 @@ type MeganavProps = {
814
765
  statusUrl: string;
815
766
  searchDataId?: string;
816
767
  };
817
- const Meganav: ({ paths, themeName, notice, loginLink, urlBase, addSearchApiKey, statusUrl, searchDataId, }: MeganavProps) => import("react/jsx-runtime").JSX.Element;
818
- export default Meganav;
819
- //# sourceMappingURL=Meganav.d.ts.map
768
+ const LegacyMeganav: ({ paths, themeName, notice, loginLink, urlBase, addSearchApiKey, statusUrl, searchDataId, }: MeganavProps) => import("react/jsx-runtime").JSX.Element;
769
+ export default LegacyMeganav;
770
+ //# sourceMappingURL=LegacyMeganav.d.ts.map
820
771
  }
821
772
 
822
- declare module '@ably/ui/core/MeganavBlogPostsList' {
823
- import { AbsUrl } from "@ably/ui/core/Meganav";
773
+ declare module '@ably/ui/core/LegacyMeganav/MeganavBlogPostsList' {
774
+ import { AbsUrl } from "@ably/ui/core/LegacyMeganav";
824
775
  type MeganavBlogPostsListProps = {
825
776
  recentBlogPosts: {
826
777
  link: string;
@@ -834,8 +785,8 @@ export default MeganavBlogPostsList;
834
785
  //# sourceMappingURL=MeganavBlogPostsList.d.ts.map
835
786
  }
836
787
 
837
- declare module '@ably/ui/core/MeganavContentCompany' {
838
- import { AbsUrl, MeganavPaths } from "@ably/ui/core/Meganav";
788
+ declare module '@ably/ui/core/LegacyMeganav/MeganavContentCompany' {
789
+ import { AbsUrl, MeganavPaths } from "@ably/ui/core/LegacyMeganav";
839
790
  type MeganavContentCompanyProps = {
840
791
  absUrl: AbsUrl;
841
792
  paths?: MeganavPaths;
@@ -845,8 +796,8 @@ export default MeganavContentCompany;
845
796
  //# sourceMappingURL=MeganavContentCompany.d.ts.map
846
797
  }
847
798
 
848
- declare module '@ably/ui/core/MeganavContentDevelopers' {
849
- import { AbsUrl } from "@ably/ui/core/Meganav";
799
+ declare module '@ably/ui/core/LegacyMeganav/MeganavContentDevelopers' {
800
+ import { AbsUrl } from "@ably/ui/core/LegacyMeganav";
850
801
  const MeganavContentDevelopers: ({ absUrl, statusUrl, }: {
851
802
  absUrl: AbsUrl;
852
803
  statusUrl: string;
@@ -855,8 +806,8 @@ export default MeganavContentDevelopers;
855
806
  //# sourceMappingURL=MeganavContentDevelopers.d.ts.map
856
807
  }
857
808
 
858
- declare module '@ably/ui/core/MeganavContentProducts' {
859
- import { AbsUrl, MeganavPaths } from "@ably/ui/core/Meganav";
809
+ declare module '@ably/ui/core/LegacyMeganav/MeganavContentProducts' {
810
+ import { AbsUrl, MeganavPaths } from "@ably/ui/core/LegacyMeganav";
860
811
  type MeganavContentProductsProps = {
861
812
  paths?: MeganavPaths;
862
813
  absUrl: AbsUrl;
@@ -866,8 +817,8 @@ export default MeganavContentProducts;
866
817
  //# sourceMappingURL=MeganavContentProducts.d.ts.map
867
818
  }
868
819
 
869
- declare module '@ably/ui/core/MeganavContentUseCases' {
870
- import { AbsUrl } from "@ably/ui/core/Meganav";
820
+ declare module '@ably/ui/core/LegacyMeganav/MeganavContentUseCases' {
821
+ import { AbsUrl } from "@ably/ui/core/LegacyMeganav";
871
822
  const MeganavContentUseCases: ({ absUrl }: {
872
823
  absUrl: AbsUrl;
873
824
  }) => import("react/jsx-runtime").JSX.Element;
@@ -875,7 +826,7 @@ export default MeganavContentUseCases;
875
826
  //# sourceMappingURL=MeganavContentUseCases.d.ts.map
876
827
  }
877
828
 
878
- declare module '@ably/ui/core/MeganavControl/component' {
829
+ declare module '@ably/ui/core/LegacyMeganav/MeganavControl/component' {
879
830
  export default MeganavControl;
880
831
  function MeganavControl(): {
881
832
  teardown: () => void;
@@ -884,9 +835,9 @@ function MeganavControl(): {
884
835
  //# sourceMappingURL=component.d.ts.map
885
836
  }
886
837
 
887
- declare module '@ably/ui/core/MeganavControl' {
838
+ declare module '@ably/ui/core/LegacyMeganav/MeganavControl' {
888
839
  import { ReactNode } from "react";
889
- import { MeganavTheme } from "@ably/ui/core/Meganav";
840
+ import { MeganavTheme } from "@ably/ui/core/LegacyMeganav";
890
841
  type MeganavControlProps = {
891
842
  ariaControls: string;
892
843
  ariaLabel: string;
@@ -899,7 +850,7 @@ export default MeganavControl;
899
850
  //# sourceMappingURL=MeganavControl.d.ts.map
900
851
  }
901
852
 
902
- declare module '@ably/ui/core/MeganavControlMobileDropdown/component' {
853
+ declare module '@ably/ui/core/LegacyMeganav/MeganavControlMobileDropdown/component' {
903
854
  export default MeganavControlMobileDropdown;
904
855
  function MeganavControlMobileDropdown({ clearPanels }: {
905
856
  clearPanels: any;
@@ -910,8 +861,8 @@ function MeganavControlMobileDropdown({ clearPanels }: {
910
861
  //# sourceMappingURL=component.d.ts.map
911
862
  }
912
863
 
913
- declare module '@ably/ui/core/MeganavControlMobileDropdown' {
914
- import { MeganavTheme } from "@ably/ui/core/Meganav";
864
+ declare module '@ably/ui/core/LegacyMeganav/MeganavControlMobileDropdown' {
865
+ import { MeganavTheme } from "@ably/ui/core/LegacyMeganav";
915
866
  const MeganavControlMobileDropdown: ({ theme }: {
916
867
  theme: MeganavTheme;
917
868
  }) => import("react/jsx-runtime").JSX.Element;
@@ -919,7 +870,7 @@ export default MeganavControlMobileDropdown;
919
870
  //# sourceMappingURL=MeganavControlMobileDropdown.d.ts.map
920
871
  }
921
872
 
922
- declare module '@ably/ui/core/MeganavControlMobilePanelClose/component' {
873
+ declare module '@ably/ui/core/LegacyMeganav/MeganavControlMobilePanelClose/component' {
923
874
  function _default(): {
924
875
  teardown: () => void;
925
876
  clear: () => void;
@@ -928,7 +879,7 @@ export default _default;
928
879
  //# sourceMappingURL=component.d.ts.map
929
880
  }
930
881
 
931
- declare module '@ably/ui/core/MeganavControlMobilePanelClose' {
882
+ declare module '@ably/ui/core/LegacyMeganav/MeganavControlMobilePanelClose' {
932
883
  type MeganavControlMobilePanelCloseProps = {
933
884
  ariaControls: string;
934
885
  displayHr?: boolean;
@@ -938,7 +889,7 @@ export default MeganavControlMobilePanelClose;
938
889
  //# sourceMappingURL=MeganavControlMobilePanelClose.d.ts.map
939
890
  }
940
891
 
941
- declare module '@ably/ui/core/MeganavControlMobilePanelOpen/component' {
892
+ declare module '@ably/ui/core/LegacyMeganav/MeganavControlMobilePanelOpen/component' {
942
893
  function _default(): {
943
894
  teardown: () => void;
944
895
  clear: () => void;
@@ -947,7 +898,7 @@ export default _default;
947
898
  //# sourceMappingURL=component.d.ts.map
948
899
  }
949
900
 
950
- declare module '@ably/ui/core/MeganavControlMobilePanelOpen' {
901
+ declare module '@ably/ui/core/LegacyMeganav/MeganavControlMobilePanelOpen' {
951
902
  import { ReactNode } from "react";
952
903
  type MeganavControlMobilePanelOpenProps = {
953
904
  ariaControls: string;
@@ -958,9 +909,9 @@ export default MeganavControlMobilePanelOpen;
958
909
  //# sourceMappingURL=MeganavControlMobilePanelOpen.d.ts.map
959
910
  }
960
911
 
961
- declare module '@ably/ui/core/MeganavItemsDesktop' {
912
+ declare module '@ably/ui/core/LegacyMeganav/MeganavItemsDesktop' {
962
913
  import React from "react";
963
- import { AbsUrl, MeganavPanels, MeganavPaths, MeganavTheme } from "@ably/ui/core/Meganav";
914
+ import { AbsUrl, MeganavPanels, MeganavPaths, MeganavTheme } from "@ably/ui/core/LegacyMeganav";
964
915
  type MeganavDesktopItems = {
965
916
  panels: MeganavPanels;
966
917
  paths?: MeganavPaths;
@@ -974,9 +925,9 @@ export default _default;
974
925
  //# sourceMappingURL=MeganavItemsDesktop.d.ts.map
975
926
  }
976
927
 
977
- declare module '@ably/ui/core/MeganavItemsMobile' {
928
+ declare module '@ably/ui/core/LegacyMeganav/MeganavItemsMobile' {
978
929
  import React from "react";
979
- import { AbsUrl, MeganavPanels, MeganavPaths, MeganavSessionState, MeganavTheme } from "@ably/ui/core/Meganav";
930
+ import { AbsUrl, MeganavPanels, MeganavPaths, MeganavSessionState, MeganavTheme } from "@ably/ui/core/LegacyMeganav";
980
931
  type MeganavItemsMobileProps = {
981
932
  panels: MeganavPanels;
982
933
  paths?: MeganavPaths;
@@ -992,8 +943,8 @@ export default _default;
992
943
  //# sourceMappingURL=MeganavItemsMobile.d.ts.map
993
944
  }
994
945
 
995
- declare module '@ably/ui/core/MeganavItemsSignedIn' {
996
- import { AbsUrl, MeganavSessionState, MeganavTheme } from "@ably/ui/core/Meganav";
946
+ declare module '@ably/ui/core/LegacyMeganav/MeganavItemsSignedIn' {
947
+ import { AbsUrl, MeganavSessionState, MeganavTheme } from "@ably/ui/core/LegacyMeganav";
997
948
  type MeganavItemsSignedIn = {
998
949
  sessionState: MeganavSessionState;
999
950
  theme: MeganavTheme;
@@ -1005,8 +956,8 @@ export default MeganavItemsSignedIn;
1005
956
  //# sourceMappingURL=MeganavItemsSignedIn.d.ts.map
1006
957
  }
1007
958
 
1008
- declare module '@ably/ui/core/MeganavSearch' {
1009
- import { AbsUrl } from "@ably/ui/core/Meganav";
959
+ declare module '@ably/ui/core/LegacyMeganav/MeganavSearch' {
960
+ import { AbsUrl } from "@ably/ui/core/LegacyMeganav";
1010
961
  const MeganavSearch: ({ absUrl, dataId, }: {
1011
962
  absUrl: AbsUrl;
1012
963
  dataId?: string;
@@ -1015,7 +966,7 @@ export default MeganavSearch;
1015
966
  //# sourceMappingURL=MeganavSearch.d.ts.map
1016
967
  }
1017
968
 
1018
- declare module '@ably/ui/core/MeganavSearchAutocomplete/component' {
969
+ declare module '@ably/ui/core/LegacyMeganav/MeganavSearchAutocomplete/component' {
1019
970
  function _default(apiKey: any): {
1020
971
  teardown: () => void;
1021
972
  clear: () => void;
@@ -1024,14 +975,14 @@ export default _default;
1024
975
  //# sourceMappingURL=component.d.ts.map
1025
976
  }
1026
977
 
1027
- declare module '@ably/ui/core/MeganavSearchAutocomplete' {
978
+ declare module '@ably/ui/core/LegacyMeganav/MeganavSearchAutocomplete' {
1028
979
  const MeganavSearchAutocomplete: () => import("react/jsx-runtime").JSX.Element;
1029
980
  export default MeganavSearchAutocomplete;
1030
981
  //# sourceMappingURL=MeganavSearchAutocomplete.d.ts.map
1031
982
  }
1032
983
 
1033
- declare module '@ably/ui/core/MeganavSearchPanel' {
1034
- import { AbsUrl } from "@ably/ui/core/Meganav";
984
+ declare module '@ably/ui/core/LegacyMeganav/MeganavSearchPanel' {
985
+ import { AbsUrl } from "@ably/ui/core/LegacyMeganav";
1035
986
  const MeganavSearchPanel: ({ absUrl }: {
1036
987
  absUrl: AbsUrl;
1037
988
  }) => import("react/jsx-runtime").JSX.Element;
@@ -1039,7 +990,7 @@ export default MeganavSearchPanel;
1039
990
  //# sourceMappingURL=MeganavSearchPanel.d.ts.map
1040
991
  }
1041
992
 
1042
- declare module '@ably/ui/core/MeganavSearchSuggestions/component' {
993
+ declare module '@ably/ui/core/LegacyMeganav/MeganavSearchSuggestions/component' {
1043
994
  export default MeganavSearchSuggestions;
1044
995
  function MeganavSearchSuggestions(): {
1045
996
  teardown: () => void;
@@ -1048,8 +999,8 @@ function MeganavSearchSuggestions(): {
1048
999
  //# sourceMappingURL=component.d.ts.map
1049
1000
  }
1050
1001
 
1051
- declare module '@ably/ui/core/MeganavSearchSuggestions' {
1052
- import { AbsUrl } from "@ably/ui/core/Meganav";
1002
+ declare module '@ably/ui/core/LegacyMeganav/MeganavSearchSuggestions' {
1003
+ import { AbsUrl } from "@ably/ui/core/LegacyMeganav";
1053
1004
  type MeganavSearchSuggestionsProps = {
1054
1005
  absUrl: AbsUrl;
1055
1006
  displaySupportLink: boolean;
@@ -1059,7 +1010,160 @@ export default MeganavSearchSuggestions;
1059
1010
  //# sourceMappingURL=MeganavSearchSuggestions.d.ts.map
1060
1011
  }
1061
1012
 
1013
+ declare module '@ably/ui/core/LegacyMeganav/SignOutLink' {
1014
+ import { MouseEventHandler, ReactNode } from "react";
1015
+ import { AbsUrl } from "@ably/ui/core/LegacyMeganav";
1016
+ type SignOutLinkProps = {
1017
+ token: string;
1018
+ href: string;
1019
+ text: string;
1020
+ children: ({ href, text, onClick, }: {
1021
+ href: string;
1022
+ text: string;
1023
+ onClick: MouseEventHandler<HTMLAnchorElement>;
1024
+ }) => ReactNode;
1025
+ absUrl: AbsUrl;
1026
+ };
1027
+ const SignOutLink: ({ token, href, text, children, absUrl, }: SignOutLinkProps) => import("react/jsx-runtime").JSX.Element;
1028
+ export default SignOutLink;
1029
+ //# sourceMappingURL=SignOutLink.d.ts.map
1030
+ }
1031
+
1032
+ declare module '@ably/ui/core/LegacyMeganav/component' {
1033
+ export default function Meganav({ themeName, addSearchApiKey }: {
1034
+ themeName: any;
1035
+ addSearchApiKey: any;
1036
+ }): () => void;
1037
+ //# sourceMappingURL=component.d.ts.map
1038
+ }
1039
+
1040
+ declare module '@ably/ui/core/LinkButton' {
1041
+ import React from "react";
1042
+ import { ButtonPropsBase } from "@ably/ui/core/Button";
1043
+ import { ColorClass, ColorThemeSet } from "@ably/ui/core/styles/colors/types";
1044
+ export type LinkButtonProps = ButtonPropsBase & {
1045
+ disabled?: boolean;
1046
+ onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;
1047
+ iconColor?: ColorClass | ColorThemeSet;
1048
+ } & React.AnchorHTMLAttributes<HTMLAnchorElement>;
1049
+ const LinkButton: React.FC<LinkButtonProps>;
1050
+ export default LinkButton;
1051
+ //# sourceMappingURL=LinkButton.d.ts.map
1052
+ }
1053
+
1054
+ declare module '@ably/ui/core/Loader' {
1055
+ type LoaderProps = {
1056
+ size?: string;
1057
+ ringColor?: string;
1058
+ additionalCSS?: string;
1059
+ };
1060
+ const Loader: ({ ringColor, size, additionalCSS, }: LoaderProps) => import("react/jsx-runtime").JSX.Element;
1061
+ export default Loader;
1062
+ //# sourceMappingURL=Loader.d.ts.map
1063
+ }
1064
+
1065
+ declare module '@ably/ui/core/Logo' {
1066
+ import React from "react";
1067
+ type LogoProps = {
1068
+ dataId?: string;
1069
+ logoUrl?: string;
1070
+ logoAlt?: string;
1071
+ href?: string;
1072
+ additionalImgAttrs?: object;
1073
+ additionalLinkAttrs?: object;
1074
+ theme?: "light" | "dark";
1075
+ variant?: "default" | "mono";
1076
+ orientation?: "default" | "stacked";
1077
+ };
1078
+ const _default: React.MemoExoticComponent<({ dataId, href, additionalImgAttrs, additionalLinkAttrs, theme, variant, orientation, logoUrl, logoAlt, }: LogoProps) => import("react/jsx-runtime").JSX.Element>;
1079
+ export default _default;
1080
+ //# sourceMappingURL=Logo.d.ts.map
1081
+ }
1082
+
1083
+ declare module '@ably/ui/core/Meganav/MeganavMobile' {
1084
+ import { AccordionData } from ".@ably/ui/core/Accordion/types";
1085
+ export const MeganavMobile: ({ mobileNavItems, }: {
1086
+ mobileNavItems: AccordionData[];
1087
+ }) => import("react/jsx-runtime").JSX.Element;
1088
+ //# sourceMappingURL=MeganavMobile.d.ts.map
1089
+ }
1090
+
1091
+ declare module '@ably/ui/core/Meganav/MeganavPanel' {
1092
+ import React from "react";
1093
+ import { FlyoutPanelHighlight, FlyoutPanelList } from "@ably/ui/core/data";
1094
+ export const MeganavPanel: ({ displayProductTile, panelLeft, panelLeftClassName, panelRightHeading, panelRightItems, panelRightBottom, }: {
1095
+ displayProductTile?: boolean;
1096
+ panelLeft?: FlyoutPanelHighlight;
1097
+ panelLeftClassName?: string;
1098
+ panelRightHeading?: string;
1099
+ panelRightItems: FlyoutPanelList[];
1100
+ panelRightBottom?: React.ReactNode;
1101
+ }) => import("react/jsx-runtime").JSX.Element;
1102
+ //# sourceMappingURL=MeganavPanel.d.ts.map
1103
+ }
1104
+
1105
+ declare module '@ably/ui/core/Meganav/data' {
1106
+ import React from "react";
1107
+ import { IconName } from ".@ably/ui/core/Icon/types";
1108
+ export type FlyoutPanelList = {
1109
+ label: string;
1110
+ icon: IconName;
1111
+ link: string;
1112
+ isMobile?: boolean;
1113
+ };
1114
+ export type FlyoutPanelHighlight = {
1115
+ heading: string;
1116
+ content: string;
1117
+ labelLink: string;
1118
+ url: string;
1119
+ image: string;
1120
+ };
1121
+ export type MenuItem = {
1122
+ name: string;
1123
+ link?: string;
1124
+ isHiddenMobile?: boolean;
1125
+ content?: React.ReactNode;
1126
+ panelClassName?: string;
1127
+ };
1128
+ export const menuItemLinks: {
1129
+ name: string;
1130
+ link: string;
1131
+ isHiddenMobile: boolean;
1132
+ }[];
1133
+ export const menuItemsForHeader: MenuItem[];
1134
+ //# sourceMappingURL=data.d.ts.map
1135
+ }
1136
+
1137
+ declare module '@ably/ui/core/Meganav' {
1138
+ import { HeaderSessionState } from "@ably/ui/core/Header";
1139
+ export type MeganavNoticeBannerProps = {
1140
+ props: {
1141
+ title: string;
1142
+ bodyText: string;
1143
+ buttonLink: string;
1144
+ buttonLabel: string;
1145
+ closeBtn: boolean;
1146
+ };
1147
+ config: {
1148
+ cookieId: string;
1149
+ noticeId: string | number;
1150
+ options: {
1151
+ collapse: boolean;
1152
+ };
1153
+ };
1154
+ };
1155
+ export type MeganavProps = {
1156
+ sessionState: HeaderSessionState;
1157
+ searchDataId: string;
1158
+ notice?: MeganavNoticeBannerProps;
1159
+ };
1160
+ const Meganav: ({ sessionState, searchDataId, notice }: MeganavProps) => import("react/jsx-runtime").JSX.Element;
1161
+ export default Meganav;
1162
+ //# sourceMappingURL=Meganav.d.ts.map
1163
+ }
1164
+
1062
1165
  declare module '@ably/ui/core/Notice/component' {
1166
+ export const COLLAPSE_TRIGGER_DISTANCE: 5;
1063
1167
  export default Notice;
1064
1168
  function Notice({ bannerContainer, cookieId, noticeId, options }: {
1065
1169
  bannerContainer: any;
@@ -1274,25 +1378,6 @@ export default ProductTile;
1274
1378
  //# sourceMappingURL=ProductTile.d.ts.map
1275
1379
  }
1276
1380
 
1277
- declare module '@ably/ui/core/SignOutLink' {
1278
- import { MouseEventHandler, ReactNode } from "react";
1279
- import { AbsUrl } from "@ably/ui/core/Meganav";
1280
- type SignOutLinkProps = {
1281
- token: string;
1282
- href: string;
1283
- text: string;
1284
- children: ({ href, text, onClick, }: {
1285
- href: string;
1286
- text: string;
1287
- onClick: MouseEventHandler<HTMLAnchorElement>;
1288
- }) => ReactNode;
1289
- absUrl: AbsUrl;
1290
- };
1291
- const SignOutLink: ({ token, href, text, children, absUrl, }: SignOutLinkProps) => import("react/jsx-runtime").JSX.Element;
1292
- export default SignOutLink;
1293
- //# sourceMappingURL=SignOutLink.d.ts.map
1294
- }
1295
-
1296
1381
  declare module '@ably/ui/core/Slider' {
1297
1382
  import { ReactNode } from "react";
1298
1383
  interface SliderProps {