From 7bc03242aa75b6d705aadb71eb6705e04c23141d Mon Sep 17 00:00:00 2001 From: Rani Gangwar Date: Mon, 29 Jun 2026 09:32:24 +0530 Subject: [PATCH 01/17] added note --- modules/ROOT/pages/customize-links.adoc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/modules/ROOT/pages/customize-links.adoc b/modules/ROOT/pages/customize-links.adoc index c4b185f00..900e4b7c0 100644 --- a/modules/ROOT/pages/customize-links.adoc +++ b/modules/ROOT/pages/customize-links.adoc @@ -215,10 +215,9 @@ https://www.mysite.com/{path} == Override ThoughtSpot URLs -Link override settings allow embedded users to redirect native ThoughtSpot URLs to links within their host application. ThoughtSpot supports two Visual Embed SDK configurations for overriding links generated by ThoughtSpot. These settings work the same for multi-tenant ThoughtSpot embedded instances too. - -You can set the `linkOverride` to `true` in the Visual Embed SDK to override the link format of your embedded application pages and navigation links. Once enabled, all links opened in a new tab via the right-click menu will show host application URLs. +Link override settings allow embedded users to redirect native ThoughtSpot URLs to links within their host application. ThoughtSpot supports Visual Embed SDK configurations for overriding links generated by ThoughtSpot. These settings work the same for multi-tenant ThoughtSpot embedded instances too. +Set `enableLinkOverridesV2` to `true` in the Visual Embed SDK. Once enabled, all links will display host application URLs when hovered over or opened in a new tab. ThoughtSpot recommends using this enhanced configuration for you link override settings. [source,JavaScript] ---- @@ -229,12 +228,13 @@ const appEmbed = new AppEmbed(document.getElementById('ts-embed'), { }, pageId: Page.Home, showPrimaryNavbar: true, - linkOverride: true, + enableLinkOverridesV2: true, }); appEmbed.render(); ---- -Set `enableLinkOverridesV2` to `true` in the Visual Embed SDK. Once enabled, all links will display host application URLs when hovered over or opened in a new tab. ThoughtSpot recommends using this enhanced configuration for you link override settings. +Older ThoughtSpot instances would set the `linkOverride` to `true` in the Visual Embed SDK to override the link format of your embedded application pages and navigation links. Once enabled, all links opened in a new tab via the right-click menu will show host application URLs. +This flag now gets auto-upgraded to `enableLinkOverridesV2` to ensure consistent link-override behavior. [source,JavaScript] ---- @@ -245,10 +245,12 @@ const appEmbed = new AppEmbed(document.getElementById('ts-embed'), { }, pageId: Page.Home, showPrimaryNavbar: true, - enableLinkOverridesV2: true, + linkOverride: true, }); appEmbed.render(); ---- +[NOTE] +The `disableRedirectionLinksInNewTab` overrides these flags. When set to `true`, the link override settings will not work. == Verify system-generated links From bf1dfd1c6274bd21f888ce648289501809bd0334 Mon Sep 17 00:00:00 2001 From: Rani Gangwar Date: Thu, 2 Jul 2026 10:01:24 +0530 Subject: [PATCH 02/17] edits --- modules/ROOT/pages/customize-links.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ROOT/pages/customize-links.adoc b/modules/ROOT/pages/customize-links.adoc index 900e4b7c0..5da750aaa 100644 --- a/modules/ROOT/pages/customize-links.adoc +++ b/modules/ROOT/pages/customize-links.adoc @@ -233,8 +233,8 @@ const appEmbed = new AppEmbed(document.getElementById('ts-embed'), { appEmbed.render(); ---- -Older ThoughtSpot instances would set the `linkOverride` to `true` in the Visual Embed SDK to override the link format of your embedded application pages and navigation links. Once enabled, all links opened in a new tab via the right-click menu will show host application URLs. -This flag now gets auto-upgraded to `enableLinkOverridesV2` to ensure consistent link-override behavior. +If your ThoughtSpot instance uses the `linkOverride` in the Visual Embed SDK to override the link format of your embedded application pages and navigation links, this flag now gets auto-upgraded to `enableLinkOverridesV2` to ensure consistent link-override behavior. Once enabled, all links opened in a new tab via the right-click menu will show host application URLs. + [source,JavaScript] ---- From 277ea5fd3f9fc55d530cdc238db6bfdab7e6e439 Mon Sep 17 00:00:00 2001 From: Rani Gangwar Date: Thu, 2 Jul 2026 10:07:20 +0530 Subject: [PATCH 03/17] edits1 --- modules/ROOT/pages/customize-links.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ROOT/pages/customize-links.adoc b/modules/ROOT/pages/customize-links.adoc index 5da750aaa..310b00311 100644 --- a/modules/ROOT/pages/customize-links.adoc +++ b/modules/ROOT/pages/customize-links.adoc @@ -217,7 +217,7 @@ https://www.mysite.com/{path} Link override settings allow embedded users to redirect native ThoughtSpot URLs to links within their host application. ThoughtSpot supports Visual Embed SDK configurations for overriding links generated by ThoughtSpot. These settings work the same for multi-tenant ThoughtSpot embedded instances too. -Set `enableLinkOverridesV2` to `true` in the Visual Embed SDK. Once enabled, all links will display host application URLs when hovered over or opened in a new tab. ThoughtSpot recommends using this enhanced configuration for you link override settings. +Set `enableLinkOverridesV2` to `true` in the Visual Embed SDK. Once enabled, all links will display host application URLs when hovered over or opened in a new tab. ThoughtSpot recommends using this enhanced configuration for your link override settings. [source,JavaScript] ---- @@ -233,7 +233,7 @@ const appEmbed = new AppEmbed(document.getElementById('ts-embed'), { appEmbed.render(); ---- -If your ThoughtSpot instance uses the `linkOverride` in the Visual Embed SDK to override the link format of your embedded application pages and navigation links, this flag now gets auto-upgraded to `enableLinkOverridesV2` to ensure consistent link-override behavior. Once enabled, all links opened in a new tab via the right-click menu will show host application URLs. +If your ThoughtSpot instance uses the `linkOverride` in the Visual Embed SDK to override the link format of your embedded application pages and navigation links, this flag now gets auto-upgraded to `enableLinkOverridesV2` to ensure consistent link-override behavior. [source,JavaScript] From 1f2e6a4245e19489004f039a7169dcfbbb48565c Mon Sep 17 00:00:00 2001 From: ShashiSubramanya Date: Tue, 7 Jul 2026 15:21:04 +0530 Subject: [PATCH 04/17] nav and style updates for standalone and in-product presentation and responsive layout --- modules/ROOT/pages/common/nav-embedding.adoc | 6 +- .../pages/common/nav-in-product-help.adoc | 308 ++++++++++++++++++ modules/ROOT/pages/common/nav-rest-api.adoc | 60 +--- modules/ROOT/pages/common/nav.adoc | 6 +- src/components/DevDocTemplate/index.tsx | 54 ++- src/components/LeftSidebar/NavContent.tsx | 14 + src/components/LeftSidebar/index.scss | 44 +++ src/components/SecondaryHeader/index.scss | 4 +- src/components/SecondaryHeader/index.tsx | 28 +- 9 files changed, 454 insertions(+), 70 deletions(-) create mode 100644 modules/ROOT/pages/common/nav-in-product-help.adoc diff --git a/modules/ROOT/pages/common/nav-embedding.adoc b/modules/ROOT/pages/common/nav-embedding.adoc index 004467551..4f5f8a246 100644 --- a/modules/ROOT/pages/common/nav-embedding.adoc +++ b/modules/ROOT/pages/common/nav-embedding.adoc @@ -173,10 +173,6 @@ include::generated/typedoc/CustomSideNav.adoc[] [.sidebar-title] Additional resources -* link:{{navprefix}}/embed-ts[About ThoughtSpot embedding] -* link:{{navprefix}}/get-started-tse[Embed licenses] -* link:{{navprefix}}/license-feature-matrix[Feature matrix] * link:{{navprefix}}/faqs[FAQs] -* link:{{navprefix}}/code-samples[Code samples] * link:https://codesandbox.io/s/big-tse-react-demo-i4g9xi[React CodeSandbox, window=_blank] -* link:https://codesandbox.io/s/graphqlcookieembed-wf4fk9?file=/src/App.js:418-426[GraphQL CodeSandbox, window=_blank] +* link:https://github.com/thoughtspot/developer-examples[Developer examples, window=_blank] diff --git a/modules/ROOT/pages/common/nav-in-product-help.adoc b/modules/ROOT/pages/common/nav-in-product-help.adoc new file mode 100644 index 000000000..cf7312ff9 --- /dev/null +++ b/modules/ROOT/pages/common/nav-in-product-help.adoc @@ -0,0 +1,308 @@ + +:page-pageid: nav-in-product-help +:page-description: In-product navigation + +[navSection] + +[.sidebar-title] +Release notes and changelogs + +* link:{{navprefix}}/whats-new[What's new] +* Changelog +** link:{{navprefix}}/embed-sdk-changelog[Visual Embed SDK changelog] +** link:{{navprefix}}/mobile-sdk-changelog[Mobile Embed SDK changelog] +** link:{{navprefix}}/rest-v2-changelog[REST API v2 changelog] +* link:{{navprefix}}/deprecated-features[Deprecation announcements] + +[.sidebar-title] +Live Playgrounds + +* +++Visual Embed Playground+++ +** link:{{navprefix}}/dev-playground[How to use] +* link:{{navprefix}}/restV2-playground?apiResourceId=http%2Fgetting-started%2Fintroduction[REST API v2 Playground] +** link:{{navprefix}}/rest-playground[How to use] +* +++Theme Builder+++ +** link:{{navprefix}}/theme-builder-doc[How to use] + +[.sidebar-title] +Embed ThoughtSpot in a web app + +* link:{{navprefix}}/getting-started[Embed with Visual Embed SDK] +* link:{{navprefix}}/tsembed[Quickstart guide] +* link:{{navprefix}}/embed-ai-search-analytics[Embed AI Search and Analytics] +** link:{{navprefix}}/embed-spotter[Embed Spotter experience] +** link:{{navprefix}}/embed-spotter-agent[Embed Spotter Agent] +* link:{{navprefix}}/embed-liveboard[Embed Analytics] +** link:{{navprefix}}/embed-liveboard[Embed a Liveboard] +** link:{{navprefix}}/spotterViz-agent[SpotterViz AI agent in Liveboards] +** link:{{navprefix}}/embed-a-viz[Embed a visualization] +* link:{{navprefix}}/full-embed[Embed full application] +** link:{{navprefix}}/full-app-customize[Customize your embed] +** link:{{navprefix}}/customize-nav-controls[Customize navigation panels] +** link:{{navprefix}}/set-default-page[Customize default page and navigation path] +** link:{{navprefix}}/customize-homepage-experience[Customize home page experience] +* Embed token-based Search +** link:{{navprefix}}/search-embed[Embed Search] +** link:{{navprefix}}/embed-searchbar[Embed search bar] +** link:{{navprefix}}/visualization-overrides[Visualization overrides] +* link:{{navprefix}}/react-app-embed[Embed with React components] + +[.sidebar-title] +Embed ThoughtSpot in a mobile app + +* link:{{navprefix}}/mobile-embed[Overview] +* link:{{navprefix}}/embed-ts-mobile-react-native[React Native SDK] +* link:{{navprefix}}/embed-ts-flutter[Flutter embed SDK] +* link:{{navprefix}}/embed-ts-swift[Swift Embed SDK] +* link:{{navprefix}}/embed-ts-android[Android Embed SDK] + +[.sidebar-title] +Embed without SDK + +** link:{{navprefix}}/embed-without-sdk[Embed without SDK] +** link:{{navprefix}}/custom-viz-rest-api[Create a custom visualization] + +[.sidebar-title] +Authentication and data security + +* link:{{navprefix}}/embed-auth[Authentication] +** link:{{navprefix}}/trusted-auth[Trusted authentication] +*** link:{{navprefix}}/trusted-auth-secret-key[Secret key management] +*** link:{{navprefix}}/trusted-auth-sdk[Front-end trusted authentication integration] +*** link:{{navprefix}}/trusted-auth-token-request-service[Token request service] +*** link:{{navprefix}}/trusted-auth-troubleshoot[Troubleshoot trusted authentication] +** link:{{navprefix}}/saml-sso[SAML SSO authentication] +** link:{{navprefix}}/oidc-auth[OpenID Connect authentication] +** link:{{navprefix}}/just-in-time-provisioning[Just-in-time provisioning] +* link:{{navprefix}}/security-settings[Security settings] + +* link:{{navprefix}}/embed-object-access[Authorization] +** link:{{navprefix}}/access-control-sharing[Access control and sharing] +** link:{{navprefix}}/privileges-and-roles[Privileges and Roles] +** link:{{navprefix}}/data-security[Data security] +*** link:{{navprefix}}/rls-rules[RLS Rules] +*** link:{{navprefix}}/abac-via-rls-variables[ABAC via RLS with variables] +*** link:{{navprefix}}/jwt-abac-migration-guide[ABAC JWT migration guide] +**** link:{{navprefix}}/jwt-filter-parameters-rules-migration-guide[JWT ABAC with filter rules -> ABAC via RLS] +**** link:{{navprefix}}/jwt-abac-beta-migration-guide[JWT ABAC beta implementation -> ABAC via RLS] +*** link:{{navprefix}}/abac-user-parameters[ABAC via JWT with filter rules and parameters] +* link:{{navprefix}}/selective-user-access[User access] +* link:{{navprefix}}/troubleshoot-errors[Troubleshoot errors] + +[.sidebar-title] +Customize and integrate + +* link:{{navprefix}}/style-customization[Customize UI layout and styles] +** link:{{navprefix}}/customize-style[Customize basic styles] +** link:{{navprefix}}/custom-css[CSS customization framework] +** link:{{navprefix}}/theme-builder-doc[Theme builder] +** link:{{navprefix}}/customize-icons[Customize icons] +** link:{{navprefix}}/customize-text[Customize text strings] +** link:{{navprefix}}/css-variables-reference[CSS variables reference] + +* link:{{navprefix}}/filters-overview[Filters types and application layers] +** link:{{navprefix}}/runtime-overrides[Runtime overrides] +** link:{{navprefix}}/runtime-filters[Runtime filters] +** link:{{navprefix}}/runtime-params[Runtime Parameters] +* link:{{navprefix}}/action-config[Customize menus] +** link:{{navprefix}}/actions[Action IDs in the SDK] +* link:{{navprefix}}/events-app-integration[Events and app interactions] +** link:{{navprefix}}/embed-events[Using embed events] +** link:{{navprefix}}/host-events[Using host events] +** link:{{navprefix}}/context-aware-event-routing[Context-based execution of host events] +** link:{{navprefix}}/hostEventsV2-migration[Migrating from Host Event v1 to Host Events v2 framework] +** link:{{navprefix}}/handling-embed-errors[Handling embed errors] +** link:{{navprefix}}/api-search-intercept[API intercept and data fetch requests] + +* link:{{navprefix}}/custom-action-intro[Custom actions] +** link:{{navprefix}}/customize-actions[Custom actions through the UI] +*** link:{{navprefix}}/custom-action-url[URL actions] +*** link:{{navprefix}}/custom-action-callback[Callback actions] +*** link:{{navprefix}}/edit-custom-action[Set the position of a custom action] +*** link:{{navprefix}}/add-action-viz[Add a local action to a visualization] +*** link:{{navprefix}}/add-action-worksheet[Add a local action to a model] +** link:{{navprefix}}/code-based-custom-action[Code based custom actions] +** link:{{navprefix}}/custom-action-payload[Callback response payload] + +* link:{{navprefix}}/customize-links[Customize links] +* link:{{navprefix}}/set-locale[Customize locale] +* link:{{navprefix}}/custom-domain-config[Custom domain configuration] +* link:{{navprefix}}/customize-emails[Customize onboarding settings] +* link:{{navprefix}}/customize-email-apis[Customize email template] +* link:{{navprefix}}/in-app-navigation[Create dynamic menus and navigation] +* link:{{navprefix}}/best-practices[Performance optimization] +** link:{{navprefix}}/best-practices[Best practices] +** link:{{navprefix}}/prerender[Prerender components] +** link:{{navprefix}}/lazy-load-fullHeight[Full height and lazy loading options] +** link:{{navprefix}}/prefetch[Prefetch static resources] +* link:{{navprefix}}/troubleshoot-errors[Troubleshoot errors] + +[.sidebar-title] +Visual Embed SDK reference guide + +* link:{{navprefix}}/VisualEmbedSdk[Visual Embed SDK Reference] +include::generated/typedoc/CustomSideNav.adoc[] +** Custom styles +*** [.typedoc-Interface]#link:{{navprefix}}/Interface_CustomStyles[CustomStyles]# +*** [.typedoc-Interface]#link:{{navprefix}}/Interface_CustomisationsInterface[CustomisationsInterface]# +*** [.typedoc-Interface]#link:{{navprefix}}/Interface_customCssInterface[customCssInterface]# +*** [.typedoc-Interface]#link:{{navprefix}}/Interface_CustomCssVariables[customCssVariables]# +** Runtime filters +*** [.typedoc-Interface]#link:{{navprefix}}/Interface_RuntimeFilter[RuntimeFilter]# +*** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_RuntimeFilterOp[RuntimeFilterOp]# +** Others +*** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_Action[Action]# +*** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_ContextMenuTriggerOptions[ContextMenuTriggerOptions]# +*** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_DataSourceVisualMode[DataSourceVisualMode]# +*** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_Page[Page]# +*** [.typedoc-Enumeration]#link:{{navprefix}}/Enumeration_PrefetchFeatures[PrefetchFeatures]# +*** [.typedoc-Function]#link:{{navprefix}}/Function_executeTML[executeTML]# +*** [.typedoc-Function]#link:{{navprefix}}/Function_exportTML[exportTML]# + + +[.sidebar-title] +Multi-tenancy + +* link:{{navprefix}}/multi-tenancy[Overview] +* link:{{navprefix}}/orgs[Multi-tenancy with Orgs] +** link:{{navprefix}}/orgs-api-op[Org administration] +** link:{{navprefix}}/multitenancy-within-an-org[Multi-tenancy within an Org] +** link:{{navprefix}}/single-tenant-data-models[Single-tenant data models with Orgs] +* link:{{navprefix}}/tse-cluster[Cluster maintenance and upgrade] + +[.sidebar-title] +Webhooks + +* link:{{navprefix}}/webhooks-overview[Overview] +* link:{{navprefix}}/webhooks-ui[Webhooks UI] +* link:{{navprefix}}/webhooks-comm-channel[Webhook communication channels] +* link:{{navprefix}}/webhooks-lb-schedule[Webhook connection for Liveboard scheduled events] +* link:{{navprefix}}/webhooks-s3-integration[AWS S3 storage integration for webhook delivery] +* link:{{navprefix}}/webhooks-gcs-storage[GCS storage integration for webhook delivery] +* link:{{navprefix}}/webhooks-lb-payload[Webhook response payload] +* link:{{navprefix}}/webhooks-kpi[Webhook connection for KPI alerts] + +[.sidebar-title] +Integration with external tools + +** link:{{navprefix}}/external-tool-script-integration[External tools and scripts] +** link:{{navprefix}}/pendo-integration[Pendo integration with embed] +** link:{{navprefix}}/sf-integration[Integration with Salesforce] +** link:{{navprefix}}/vercel-integration[Vercel integration] + +[.sidebar-title] +Build and deploy + +** link:{{navprefix}}/thoughtspot-objects[ThoughtSpot objects] +** link:{{navprefix}}/timezone-aware-filtering[Timezone-aware keywords and filters] +** link:{{navprefix}}/variables[Variables] +** link:{{navprefix}}/parameterize-metadata[Parameterize metadata] +* link:{{navprefix}}/development-and-deployment[Development and deployment] +** link:{{navprefix}}/deploy-with-tml-apis[Deploy with TML APIs] +*** link:{{navprefix}}/git-provider-integration[Git provider integration] +*** link:{{navprefix}}/modify-tml[TML modification] +* link:{{navprefix}}/publish-data-overview[Publish content to Orgs] +** link:{{navprefix}}/publish-to-orgs[Publish objects to Orgs] +* link:{{navprefix}}/git-integration[Deploy with GitHub APIs (legacy)] +** link:{{navprefix}}/git-configuration[Configure GitHub integration] +** link:{{navprefix}}/git-api[GitHub REST APIs] +** link:{{navprefix}}/guid-mapping[GUID mapping] + +[.sidebar-title] +REST APIs + +* link:{{navprefix}}/rest-apis[Overview] +* link:{{navprefix}}/rest-apiv2-getstarted[Get started] +* link:{{navprefix}}/api-authv2[REST API v2.0 authentication] +* link:{{navprefix}}/rest-apiv2-reference[REST API v2.0 Reference] +** link:{{navprefix}}/api-user-management[Users and group privileges] +** link:{{navprefix}}/rbac[Role-based access control] +** link:{{navprefix}}/rest-apiv2-search[Search API endpoints] +*** link:{{navprefix}}/rest-apiv2-users-search[Search users] +*** link:{{navprefix}}/rest-apiv2-groups-search[Search groups] +*** link:{{navprefix}}/rest-apiv2-metadata-search[Search metadata] +** link:{{navprefix}}/fetch-data-and-report-apis[Data and Report APIs] +** link:{{navprefix}}/spotter-api[Spotter APIs] +*** link:{{navprefix}}/spotter-agent-apis[AI APIs (Spotter Agent and Spotter 3)] +*** link:{{navprefix}}/spotter-agent-instructions[Spotter AI agent instructions] +*** link:{{navprefix}}/spotter-agent-conversation-mgmt-apis[APIs for managing saved conversations] +*** link:{{navprefix}}/spotter-apis-classic[AI APIs (Spotter Classic) ^BETA^] +*** link:{{navprefix}}/spotter-nl-instructions[Data model instructions APIs ^BETA^] +** link:{{navprefix}}/style-customization-apis[Style customization APIs] +** link:{{navprefix}}/audit-logs[Audit logs] +** link:{{navprefix}}/tml[TML] +** link:{{navprefix}}/collections[Collections ^BETA^] +** link:{{navprefix}}/connections[Connections] +** link:{{navprefix}}/connection-config[Connection configuration] +** link:{{navprefix}}/runtime-sort[Runtime sorting] +* link:{{navprefix}}/manual-translation-api[Manual translations] +* link:{{navprefix}}/webhooks-rest-api[Webhook APIs] + +[.sidebar-title] +REST API SDK + +* link:{{navprefix}}/rest-api-sdk[Overview] +* link:{{navprefix}}/rest-api-sdk-typescript[TypeScript SDK] +* link:{{navprefix}}/rest-api-sdk-java[Java SDK] +* link:{{navprefix}}/rest-apiv2-js[REST API v2.0 in JavaScript] + +[.sidebar-title] +REST API v1 (DEPRECATED) + +* link:{{navprefix}}/rest-api-getstarted[Get started] +* link:{{navprefix}}/api-auth-session[REST API v1 authentication] +* link:{{navprefix}}/catalog-and-audit[Catalog and audit content] +* link:{{navprefix}}/rest-api-pagination[Paginate API response] +* link:{{navprefix}}/rest-api-reference[REST API v1 Reference] +* link:{{navprefix}}/rest-v1-changelog[REST API v1 changelog] +* link:{{navprefix}}/v1v2-comparison[REST v1 and v2.0 comparison] + + +[.sidebar-title] +SpotterCode + +* link:{{navprefix}}/SpotterCode[SpotterCode for IDEs] +* link:{{navprefix}}/integrate-SpotterCode[Integrating SpotterCode] +* link:{{navprefix}}/spottercode-prompting-guide[SpotterCode prompting guide] + +[.sidebar-title] +Tutorials + +* link:{{navprefix}}/tutorials/tutorials-overview[Embedding tutorials] +** link:{{navprefix}}/tutorials/tse-fundamentals/intro[Embedding Fundamentals] +*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-01[01 - Overview] +*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-02[02 - Set up for course] +*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-03[03 - Security setup] +*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-04[04 - Start coding] +*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-05[05 - Embed Search] +*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-06[06 - Embed Natural Language Search] +*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-07[07 - Embed Liveboard] +*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-08[08 - Embed Visualization] +*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-09[09 - Embed full application] +*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-10[10 - Style embedded app] +*** link:{{navprefix}}/tutorials/tse-fundamentals/lesson-11[11 - Course summary] +*** link:{{navprefix}}/tutorials/style-customization/tutorial[Style customization] +** link:{{navprefix}}/tutorials/react-components/intro[React components] +*** link:{{navprefix}}/tutorials/react-components/lesson-01[01 - Initialize Visual Embed SDK] +*** link:{{navprefix}}/tutorials/react-components/lesson-02[02 - ThoughtSpot component pages] +*** link:{{navprefix}}/tutorials/react-components/lesson-03[03 - Menus and navigation elements] +*** link:{{navprefix}}/tutorials/react-components/lesson-04[04 - Event handling] +** link:{{navprefix}}/tutorials/spotter/integrate-into-chatbot[Integrate Spotter into your Chatbot] + +* link:{{navprefix}}/tutorials/rest-api/intro[REST API Tutorials] +** link:{{navprefix}}/tutorials/rest-api/lesson-01[01 - REST API overview] +** link:{{navprefix}}/tutorials/rest-api/lesson-02[02 - Simple Python implementation] +** link:{{navprefix}}/tutorials/rest-api/lesson-03[03 - Complex REST API workflows] + + +[.sidebar-title] +Additional resources + +* link:{{navprefix}}/embed-ts[About ThoughtSpot embedding] +* link:{{navprefix}}/faqs[FAQs] +* link:https://codesandbox.io/s/big-tse-react-demo-i4g9xi[React CodeSandbox, window=_blank] +* link:https://community.thoughtspot.com/customers/s/[Community, window=_blank] +* link:https://training.thoughtspot.com/page/developer[Training resources, window=_blank] +* link:https://docs.thoughtspot.com[Product Documentation, window=_blank] +* link:https://github.com/thoughtspot/developer-examples[Developer examples, window=_blank] + diff --git a/modules/ROOT/pages/common/nav-rest-api.adoc b/modules/ROOT/pages/common/nav-rest-api.adoc index 04378ff93..faa813ba1 100644 --- a/modules/ROOT/pages/common/nav-rest-api.adoc +++ b/modules/ROOT/pages/common/nav-rest-api.adoc @@ -22,8 +22,10 @@ REST APIs ** link:{{navprefix}}/fetch-data-and-report-apis[Data and Report APIs] ** link:{{navprefix}}/spotter-api[Spotter APIs] *** link:{{navprefix}}/spotter-agent-apis[AI APIs (Spotter Agent and Spotter 3)] -*** link:{{navprefix}}/spotter-apis-classic[AI APIs (Spotter Classic) ^BETA^] -*** link:{{navprefix}}/spotter-coaching-apis[Spotter coaching APIs ^BETA^] +*** link:{{navprefix}}/spotter-agent-instructions[Spotter AI agent instructions] +*** link:{{navprefix}}/spotter-agent-conversation-mgmt-apis[APIs for managing saved conversations] +** link:{{navprefix}}/spotter-apis-classic[AI APIs (Spotter Classic) ^BETA^] +** link:{{navprefix}}/spotter-nl-instructions[Data model instructions APIs ^BETA^] ** link:{{navprefix}}/style-customization-apis[Style customization APIs] ** link:{{navprefix}}/audit-logs[Audit logs] ** link:{{navprefix}}/tml[TML] @@ -31,28 +33,8 @@ REST APIs ** link:{{navprefix}}/connections[Connections] ** link:{{navprefix}}/connection-config[Connection configuration] ** link:{{navprefix}}/runtime-sort[Runtime sorting] -* link:{{navprefix}}/api-user-management[Users and group privileges] -* link:{{navprefix}}/rbac[Role-based access control] -* link:{{navprefix}}/rest-apiv2-search[Search API endpoints] -** link:{{navprefix}}/rest-apiv2-users-search[Search users] -** link:{{navprefix}}/rest-apiv2-groups-search[Search groups] -** link:{{navprefix}}/rest-apiv2-metadata-search[Search metadata] -* link:{{navprefix}}/fetch-data-and-report-apis[Data and Report APIs] -* link:{{navprefix}}/spotter-api[Spotter APIs] -** link:{{navprefix}}/spotter-agent-apis[AI APIs (Spotter Agent and Spotter 3)] -** link:{{navprefix}}/spotter-agent-instructions[Spotter AI agent instructions] -** link:{{navprefix}}/spotter-agent-conversation-mgmt-apis[APIs for managing saved conversations] -** link:{{navprefix}}/spotter-apis-classic[AI APIs (Spotter Classic) ^BETA^] -** link:{{navprefix}}/spotter-nl-instructions[Spotter instructions APIs ^BETA^] -** link:{{navprefix}}/spotter-agent-instructions[Spotter instructions APIs ^BETA^] -* link:{{navprefix}}/audit-logs[Audit logs] -* link:{{navprefix}}/tml[TML] -* link:{{navprefix}}/collections[Collections ^BETA^] -* link:{{navprefix}}/connections[Connections] -* link:{{navprefix}}/connection-config[Connection configuration] -* link:{{navprefix}}/runtime-sort[Runtime sorting] -* link:{{navprefix}}/manual-translation-api[Manual translations] -* link:{{navprefix}}/webhooks-rest-api[Webhook APIs] +** link:{{navprefix}}/manual-translation-api[Manual translations] +** link:{{navprefix}}/webhooks-rest-api[Webhook APIs] [.sidebar-title] @@ -79,28 +61,14 @@ REST API v1 (DEPRECATED) * link:{{navprefix}}/catalog-and-audit[Catalog and audit content] * link:{{navprefix}}/rest-api-pagination[Paginate API response] * link:{{navprefix}}/rest-api-reference[REST API v1 Reference] -** link:{{navprefix}}/orgs-api[Orgs API] -** link:{{navprefix}}/user-api[User API] -** link:{{navprefix}}/group-api[Group API] -** link:{{navprefix}}/role-api[Role API] -** link:{{navprefix}}/session-api[Session API] -** link:{{navprefix}}/connections-api[Data connection API] -** link:{{navprefix}}/metadata-api[Metadata API] -** link:{{navprefix}}/admin-api[Admin API] -** link:{{navprefix}}/tml-api[TML API] -** link:{{navprefix}}/dependent-objects-api[Dependent objects API] -** link:{{navprefix}}/search-data-api[Search data API] -** link:{{navprefix}}/liveboard-data-api[Liveboard data API] -** link:{{navprefix}}/liveboard-export-api[Liveboard export API] -** link:{{navprefix}}/security-api[Security API] -** link:{{navprefix}}/logs-api[Audit logs API] -** link:{{navprefix}}/materialization-api[Materialization API] -** link:{{navprefix}}/database-api[Database API] -** link:{{navprefix}}/rest-v1-changelog[REST API v1 changelog] -** link:{{navprefix}}/v1v2-comparison[REST v1 and v2.0 comparison] - - -//** link:{{navprefix}}/graphql-guide[GraphQL API ^Beta^] +* link:{{navprefix}}/rest-v1-changelog[REST API v1 changelog] +* link:{{navprefix}}/v1v2-comparison[REST v1 and v2.0 comparison] + +[.sidebar-title] +Additional resources + +* link:{{navprefix}}/faqs[FAQs] +* link:https://github.com/thoughtspot/developer-examples[Developer examples, window=_blank] diff --git a/modules/ROOT/pages/common/nav.adoc b/modules/ROOT/pages/common/nav.adoc index a848131e2..141aada68 100644 --- a/modules/ROOT/pages/common/nav.adoc +++ b/modules/ROOT/pages/common/nav.adoc @@ -100,11 +100,7 @@ Additional resources * link:{{navprefix}}/faqs[FAQs] * link:https://codesandbox.io/s/big-tse-react-demo-i4g9xi[React CodeSandbox, window=_blank] -//** link:https://codesandbox.io/s/graphqlcookieembed-wf4fk9?file=/src/App.js:418-426[GraphQL CodeSandbox, window=_blank] - * link:https://community.thoughtspot.com/customers/s/[Community, window=_blank] * link:https://training.thoughtspot.com/page/developer[Training resources, window=_blank] * link:https://docs.thoughtspot.com[Product Documentation, window=_blank] -* link:https://developers.thoughtspot.com[ThoughtSpot Developers, window=_blank] -* Deprecated feature docs -** link:{{navprefix}}/abac-user-parameters-beta[ABAC via tokens (pre-10.4.0.cl) (Deprecated)] +* link:https://github.com/thoughtspot/developer-examples[Developer examples, window=_blank] diff --git a/src/components/DevDocTemplate/index.tsx b/src/components/DevDocTemplate/index.tsx index bb83b7d80..4b0ac293c 100644 --- a/src/components/DevDocTemplate/index.tsx +++ b/src/components/DevDocTemplate/index.tsx @@ -53,6 +53,10 @@ import t from '../../utils/lang-utils'; import { getHTMLFromComponent } from '../../utils/react-utils'; import VersionIframe from '../VersionIframe'; +// Key of the merged nav-in-product-help.adoc entry in processedNavMap (pageid minus 'nav-' prefix). +// Not a real DocCategory/tab — used only to pick the left sidebar content when embedded in-product. +const IN_PRODUCT_NAV_KEY = 'in-product-help'; + const DevDocTemplate: FC = (props) => { const { data, @@ -127,21 +131,28 @@ const DevDocTemplate: FC = (props) => { []); // Breadcrumb data built from master nav + all category navs for full coverage + // (excludes the merged in-product nav, which duplicates the category navs) const breadcrumsData = React.useMemo(() => { if (typeof window === 'undefined') return []; const allHtmls = [ initialNavContentData, - ...Object.values(processedNavMap as Record), + ...Object.entries(processedNavMap as Record) + .filter(([cat]) => cat !== IN_PRODUCT_NAV_KEY) + .map(([, html]) => html), ]; return allHtmls.flatMap((html) => fetchChild(html)); }, [processedNavMap]); - // Pick the right sidebar content for the active category + // Pick the right sidebar content for the active category. + // In-product (embedded) presentation has no category tabs — always show the merged nav. const activeNavContent = React.useMemo(() => { + if (!isPublicSiteOpen) { + return processedNavMap[IN_PRODUCT_NAV_KEY] || navContent; + } const navId = CATEGORY_NAV_ID[activeCategory]; const mapKey = navId.startsWith('nav-') ? navId.slice(4) : null; return (mapKey && processedNavMap[mapKey]) || navContent; - }, [activeCategory, processedNavMap, navContent]); + }, [activeCategory, processedNavMap, navContent, isPublicSiteOpen]); const isCustomPage = _.values(CUSTOM_PAGE_ID).some( (pageId: string) => pageId === params[TS_PAGE_ID_PARAM], @@ -171,11 +182,13 @@ const isVersionedIframe = VERSION_DROPDOWN.some( const isAskDocsPage = params[TS_PAGE_ID_PARAM] === CUSTOM_PAGE_ID.ASK_DOCS; /* Build pageId → category map by parsing hrefs from each category's nav HTML. - * This means writers only need to update nav-*.adoc — no TypeScript changes needed. */ + * This means writers only need to update nav-*.adoc — no TypeScript changes needed. + * Excludes the merged in-product nav, which isn't a real tab/category. */ const pageIdToCategoryMap = React.useMemo(() => { if (typeof window === 'undefined') return {}; const map: Record = {}; Object.entries(processedNavMap).forEach(([cat, html]) => { + if (cat === IN_PRODUCT_NAV_KEY) return; const doc = new DOMParser().parseFromString(html as string, 'text/html'); doc.querySelectorAll('a[href]').forEach((a) => { const href = a.getAttribute('href') || ''; @@ -723,13 +736,28 @@ if (isVersionedIframe) { } > {!isIframeMode && !isVersionedIframe && ( - + isPublicSiteOpen ? ( + + ) : !isMaxMobileResolution && ( + // In-product presentation has no tabs — show just the nav + // toggle so the sidebar stays reachable on narrow viewports. + // Desktop-width embeds skip this entirely; the sidebar is + // always visible there. + + ) )}
diff --git a/src/components/LeftSidebar/NavContent.tsx b/src/components/LeftSidebar/NavContent.tsx index 7629d9022..f4fa1ea97 100644 --- a/src/components/LeftSidebar/NavContent.tsx +++ b/src/components/LeftSidebar/NavContent.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import { navigate } from 'gatsby'; import { IconContext } from '@react-icons/all-files'; import { BiSearch } from '@react-icons/all-files/bi/BiSearch'; import BackButton from '../BackButton'; @@ -50,6 +51,19 @@ const NavContent = (props: { + {/* AskDocs lives in the top SecondaryHeader on the standalone site; + that bar is hidden in-product, so surface it here instead. */} + {!props.isPublicSiteOpen && ( +
+ +
+ )}