diff --git a/help-beta/astro.config.mjs b/help-beta/astro.config.mjs index d24a112e93..ebc1522aec 100644 --- a/help-beta/astro.config.mjs +++ b/help-beta/astro.config.mjs @@ -1,7 +1,7 @@ import * as fs from "node:fs"; import starlight from "@astrojs/starlight"; -import {defineConfig} from "astro/config"; +import {defineConfig, envField} from "astro/config"; import Icons from "unplugin-icons/vite"; // https://astro.build/config @@ -16,7 +16,7 @@ export default defineConfig({ // It was setting the height to 1024 and 960 for some // icons. It is better to set the height explicitly. defaultStyle: - "display: inline; vertical-align: text-bottom; height: 1em; width: 1em;", + "display: inline; vertical-align: text-bottom; height: 1em; width: 1em; margin-bottom: 0;", customCollections: { // unplugin-icons has a FileSystemIconLoader which is more // versatile. But it only supports one directory path for @@ -37,6 +37,16 @@ export default defineConfig({ }), ], }, + env: { + schema: { + SHOW_RELATIVE_LINKS: envField.boolean({ + context: "client", + access: "public", + optional: true, + default: true, + }), + }, + }, integrations: [ starlight({ title: "Zulip help center", diff --git a/help-beta/src/components/NavigationSteps.astro b/help-beta/src/components/NavigationSteps.astro new file mode 100644 index 0000000000..ecd52ad7a5 --- /dev/null +++ b/help-beta/src/components/NavigationSteps.astro @@ -0,0 +1,191 @@ +--- +import { SHOW_RELATIVE_LINKS } from "astro:env/client"; +import RawZulipIconGear from "~icons/zulip-icon/gear?raw"; + +// This list has been transformed one-off from `help_settings_links.py`, we +// have added a comment in that file to update this list in case of any +// changes. +const setting_link_mapping: { + [key: string]: { + setting_type: string, + setting_name: string, + setting_link: string, + } +} = { + // a mapping from the setting identifier that is the same as the final URL + // breadcrumb to that setting to the name of its setting type, the setting + // name as it appears in the user interface, and a relative link that can + // be used to get to that setting + "profile": { + setting_type: "Personal settings", + setting_name: "Profile", + setting_link: "/#settings/profile" + }, + "account-and-privacy": { + setting_type: "Personal settings", + setting_name: "Account & privacy", + setting_link: "/#settings/account-and-privacy" + }, + "preferences": { + setting_type: "Personal settings", + setting_name: "Preferences", + setting_link: "/#settings/preferences" + }, + "notifications": { + setting_type: "Personal settings", + setting_name: "Notifications", + setting_link: "/#settings/notifications" + }, + "your-bots": { + setting_type: "Personal settings", + setting_name: "Bots", + setting_link: "/#settings/your-bots" + }, + "alert-words": { + setting_type: "Personal settings", + setting_name: "Alert words", + setting_link: "/#settings/alert-words" + }, + "uploaded-files": { + setting_type: "Personal settings", + setting_name: "Uploaded files", + setting_link: "/#settings/uploaded-files" + }, + "topics": { + setting_type: "Personal settings", + setting_name: "Topics", + setting_link: "/#settings/topics" + }, + "muted-users": { + setting_type: "Personal settings", + setting_name: "Muted users", + setting_link: "/#settings/muted-users" + }, + "organization-profile": { + setting_type: "Organization settings", + setting_name: "Organization profile", + setting_link: "/#organization/organization-profile" + }, + "organization-settings": { + setting_type: "Organization settings", + setting_name: "Organization settings", + setting_link: "/#organization/organization-settings" + }, + "organization-permissions": { + setting_type: "Organization settings", + setting_name: "Organization permissions", + setting_link: "/#organization/organization-permissions" + }, + "default-user-settings": { + setting_type: "Organization settings", + setting_name: "Default user settings", + setting_link: "/#organization/organization-level-user-defaults" + }, + "emoji-settings": { + setting_type: "Organization settings", + setting_name: "Custom emoji", + setting_link: "/#organization/emoji-settings" + }, + "auth-methods": { + setting_type: "Organization settings", + setting_name: "Authentication methods", + setting_link: "/#organization/auth-methods" + }, + "users": { + setting_type: "Organization settings", + setting_name: "Users", + setting_link: "/#organization/users/active" + }, + "deactivated": { + setting_type: "Organization settings", + setting_name: "Users", + setting_link: "/#organization/users/deactivated" + }, + "invitations": { + setting_type: "Organization settings", + setting_name: "Users", + setting_link: "/#organization/users/invitations" + }, + "bot-list-admin": { + setting_type: "Organization settings", + setting_name: "Bots", + setting_link: "/#organization/bot-list-admin" + }, + "default-channels-list": { + setting_type: "Organization settings", + setting_name: "Default channels", + setting_link: "/#organization/default-channels-list" + }, + "linkifier-settings": { + setting_type: "Organization settings", + setting_name: "Linkifiers", + setting_link: "/#organization/linkifier-settings" + }, + "playground-settings": { + setting_type: "Organization settings", + setting_name: "Code playgrounds", + setting_link: "/#organization/playground-settings" + }, + "profile-field-settings": { + setting_type: "Organization settings", + setting_name: "Custom profile fields", + setting_link: "/#organization/profile-field-settings" + }, + "data-exports-admin": { + setting_type: "Organization settings", + setting_name: "Data exports", + setting_link: "/#organization/data-exports-admin" + } +}; + +const getSettingsMarkdown = (setting_type_name: string, setting_name: string) => ` +