mirror of
https://github.com/zulip/zulip.git
synced 2025-11-01 12:33:40 +00:00
Using steps.css right now might feel like the more convenient way out, but it might introduce friction in upgrades when the upstream code changes. To tackle that, we convert FlattenList to FlattenedSteps and explicitly use the steps component.
478 lines
19 KiB
JavaScript
478 lines
19 KiB
JavaScript
import * as fs from "node:fs";
|
|
|
|
import starlight from "@astrojs/starlight";
|
|
import {defineConfig, envField} from "astro/config";
|
|
import Icons from "unplugin-icons/vite";
|
|
|
|
// https://astro.build/config
|
|
export default defineConfig({
|
|
base: "help-beta",
|
|
vite: {
|
|
plugins: [
|
|
// eslint-disable-next-line new-cap
|
|
Icons({
|
|
compiler: "astro",
|
|
customCollections: {
|
|
// unplugin-icons has a FileSystemIconLoader which is more
|
|
// versatile. But it only supports one directory path for
|
|
// a single set of icons. We should start using that loader
|
|
// if they add support for multiple paths in the future.
|
|
async "zulip-icon"(iconName) {
|
|
const sharedIconsPath = `../web/shared/icons/${iconName}.svg`;
|
|
const webOnlyIconsPath = `../web/images/icons/${iconName}.svg`;
|
|
|
|
if (fs.existsSync(sharedIconsPath)) {
|
|
return await fs.promises.readFile(sharedIconsPath, "utf8");
|
|
} else if (fs.existsSync(webOnlyIconsPath)) {
|
|
return await fs.promises.readFile(webOnlyIconsPath, "utf8");
|
|
}
|
|
throw new Error("Zulip icon not found.");
|
|
},
|
|
},
|
|
iconCustomizer(collection, icon, props) {
|
|
if (collection === "zulip-icon" || collection === "fa") {
|
|
// We need to override some default starlight behaviour to make
|
|
// icons look nice, see the css for this class to see the reasoning
|
|
// for each individual override of the default css.
|
|
props.class = "zulip-unplugin-icon";
|
|
|
|
if (collection === "zulip-icon" && icon.startsWith("user-circle-")) {
|
|
const iconSuffix = icon.replace("user-circle-", "");
|
|
props.class = `zulip-unplugin-icon user-circle user-circle-${iconSuffix}`;
|
|
}
|
|
}
|
|
},
|
|
}),
|
|
],
|
|
},
|
|
env: {
|
|
schema: {
|
|
SHOW_RELATIVE_LINKS: envField.boolean({
|
|
context: "client",
|
|
access: "public",
|
|
optional: true,
|
|
default: true,
|
|
}),
|
|
CORPORATE_ENABLED: envField.boolean({
|
|
context: "client",
|
|
access: "public",
|
|
optional: true,
|
|
default: true,
|
|
}),
|
|
SUPPORT_EMAIL: envField.string({
|
|
context: "client",
|
|
access: "public",
|
|
optional: true,
|
|
default: "zulip-admin@example.com",
|
|
}),
|
|
},
|
|
},
|
|
integrations: [
|
|
starlight({
|
|
title: "Zulip help center",
|
|
components: {
|
|
Footer: "./src/components/Footer.astro",
|
|
Head: "./src/components/Head.astro",
|
|
},
|
|
pagination: false,
|
|
routeMiddleware: "./src/route_data.ts",
|
|
customCss: ["./src/styles/main.css"],
|
|
sidebar: [
|
|
{
|
|
label: "Zulip homepage",
|
|
link: "https://zulip.com",
|
|
},
|
|
{
|
|
label: "Help center home",
|
|
slug: "index",
|
|
},
|
|
{
|
|
label: "Guides",
|
|
items: [
|
|
"getting-started-with-zulip",
|
|
{
|
|
label: "Choosing a team chat app",
|
|
link: "https://blog.zulip.com/2024/11/04/choosing-a-team-chat-app/",
|
|
},
|
|
{
|
|
label: "Why Zulip",
|
|
link: "https://zulip.com/why-zulip/",
|
|
},
|
|
"trying-out-zulip",
|
|
"zulip-cloud-or-self-hosting",
|
|
"moving-to-zulip",
|
|
"moderating-open-organizations",
|
|
"setting-up-zulip-for-a-class",
|
|
"using-zulip-for-a-class",
|
|
"using-zulip-via-email",
|
|
],
|
|
},
|
|
{
|
|
label: "Getting started",
|
|
items: [
|
|
"join-a-zulip-organization",
|
|
"set-up-your-account",
|
|
"introduction-to-topics",
|
|
{
|
|
label: "Starting a new topic",
|
|
link: "/introduction-to-topics#how-to-start-a-new-topic",
|
|
},
|
|
"finding-a-conversation-to-read",
|
|
"reading-conversations",
|
|
"starting-a-new-direct-message",
|
|
"replying-to-messages",
|
|
"messaging-tips",
|
|
"keyboard-shortcuts",
|
|
],
|
|
},
|
|
{
|
|
label: "Setting up your organization",
|
|
items: [
|
|
"migrating-from-other-chat-tools",
|
|
"create-your-organization-profile",
|
|
"create-user-groups",
|
|
"customize-organization-settings",
|
|
"create-channels",
|
|
"customize-settings-for-new-users",
|
|
"invite-users-to-join",
|
|
"set-up-integrations",
|
|
],
|
|
},
|
|
{
|
|
label: "Account basics",
|
|
items: [
|
|
"edit-your-profile",
|
|
"change-your-name",
|
|
"change-your-email-address",
|
|
"change-your-profile-picture",
|
|
"change-your-password",
|
|
"configure-email-visibility",
|
|
"logging-in",
|
|
"logging-out",
|
|
"switching-between-organizations",
|
|
"import-your-settings",
|
|
"review-your-settings",
|
|
"deactivate-your-account",
|
|
],
|
|
},
|
|
{
|
|
label: "Preferences",
|
|
items: [
|
|
"dark-theme",
|
|
"font-size",
|
|
"line-spacing",
|
|
"configure-send-message-keys",
|
|
"change-your-language",
|
|
"change-your-timezone",
|
|
"change-the-time-format",
|
|
"configure-emoticon-translations",
|
|
"configure-home-view",
|
|
"enable-full-width-display",
|
|
"manage-your-uploaded-files",
|
|
],
|
|
},
|
|
{
|
|
label: "Writing messages",
|
|
items: [
|
|
"format-your-message-using-markdown",
|
|
"mention-a-user-or-group",
|
|
"link-to-a-message-or-conversation",
|
|
"format-a-quote",
|
|
"quote-or-forward-a-message",
|
|
"emoji-and-emoticons",
|
|
"insert-a-link",
|
|
"saved-snippets",
|
|
"share-and-upload-files",
|
|
"animated-gifs-from-giphy",
|
|
"text-emphasis",
|
|
"paragraph-and-section-formatting",
|
|
"bulleted-lists",
|
|
"numbered-lists",
|
|
"tables",
|
|
"code-blocks",
|
|
"latex",
|
|
"spoilers",
|
|
"me-action-messages",
|
|
"create-a-poll",
|
|
"collaborative-to-do-lists",
|
|
"global-times",
|
|
"start-a-call",
|
|
],
|
|
},
|
|
{
|
|
label: "Sending messages",
|
|
items: [
|
|
"open-the-compose-box",
|
|
"mastering-the-compose-box",
|
|
"resize-the-compose-box",
|
|
"typing-notifications",
|
|
"preview-your-message-before-sending",
|
|
"verify-your-message-was-successfully-sent",
|
|
"edit-a-message",
|
|
"delete-a-message",
|
|
"view-and-edit-your-message-drafts",
|
|
"schedule-a-message",
|
|
"message-a-channel-by-email",
|
|
],
|
|
},
|
|
{
|
|
label: "Reading messages",
|
|
items: [
|
|
"reading-strategies",
|
|
"inbox",
|
|
"recent-conversations",
|
|
"combined-feed",
|
|
"channel-feed",
|
|
"list-of-topics",
|
|
"left-sidebar",
|
|
"message-actions",
|
|
"marking-messages-as-read",
|
|
"marking-messages-as-unread",
|
|
"configure-unread-message-counters",
|
|
"configure-where-you-land",
|
|
"emoji-reactions",
|
|
"view-your-mentions",
|
|
"star-a-message",
|
|
"schedule-a-reminder",
|
|
"view-images-and-videos",
|
|
"view-messages-sent-by-a-user",
|
|
"link-to-a-message-or-conversation",
|
|
"search-for-messages",
|
|
"printing-messages",
|
|
"view-the-markdown-source-of-a-message",
|
|
"view-the-exact-time-a-message-was-sent",
|
|
"view-a-messages-edit-history",
|
|
"collapse-a-message",
|
|
"read-receipts",
|
|
],
|
|
},
|
|
{
|
|
label: "People",
|
|
items: [
|
|
"introduction-to-users",
|
|
"user-list",
|
|
"status-and-availability",
|
|
"user-cards",
|
|
"view-someones-profile",
|
|
"direct-messages",
|
|
"find-administrators",
|
|
],
|
|
},
|
|
{
|
|
label: "Groups",
|
|
items: ["user-groups", "view-group-members"],
|
|
},
|
|
{
|
|
label: "Channels",
|
|
items: [
|
|
"introduction-to-channels",
|
|
{
|
|
label: "Subscribe to a channel",
|
|
link: "/introduction-to-channels#browse-and-subscribe-to-channels",
|
|
},
|
|
"create-a-channel",
|
|
"pin-a-channel",
|
|
"change-the-color-of-a-channel",
|
|
"unsubscribe-from-a-channel",
|
|
"manage-inactive-channels",
|
|
"move-content-to-another-channel",
|
|
"view-channel-information",
|
|
"view-channel-subscribers",
|
|
],
|
|
},
|
|
{
|
|
label: "Topics",
|
|
items: [
|
|
"introduction-to-topics",
|
|
"rename-a-topic",
|
|
"resolve-a-topic",
|
|
"move-content-to-another-topic",
|
|
"general-chat-topic",
|
|
"delete-a-topic",
|
|
],
|
|
},
|
|
{
|
|
label: "Notifications",
|
|
items: [
|
|
"channel-notifications",
|
|
"topic-notifications",
|
|
"follow-a-topic",
|
|
"dm-mention-alert-notifications",
|
|
"mute-a-channel",
|
|
"mute-a-topic",
|
|
"mute-a-user",
|
|
"email-notifications",
|
|
"desktop-notifications",
|
|
"mobile-notifications",
|
|
"do-not-disturb",
|
|
],
|
|
},
|
|
{
|
|
label: "Apps",
|
|
items: [
|
|
{
|
|
label: "Download apps for every platform",
|
|
link: "https://zulip.com/apps/",
|
|
},
|
|
"mobile-app-install-guide",
|
|
"desktop-app-install-guide",
|
|
"supported-browsers",
|
|
"configure-how-links-open",
|
|
"connect-through-a-proxy",
|
|
"custom-certificates",
|
|
],
|
|
},
|
|
{
|
|
label: "Zulip administration",
|
|
link: "#",
|
|
attrs: {
|
|
class: "non-clickable-sidebar-heading",
|
|
},
|
|
},
|
|
{
|
|
label: "Organization profile",
|
|
items: [
|
|
"organization-type",
|
|
"communities-directory",
|
|
"linking-to-zulip",
|
|
"change-organization-url",
|
|
"deactivate-your-organization",
|
|
],
|
|
},
|
|
{
|
|
label: "Import an organization",
|
|
items: [
|
|
"import-from-mattermost",
|
|
"import-from-slack",
|
|
"import-from-rocketchat",
|
|
"export-your-organization",
|
|
],
|
|
},
|
|
{
|
|
label: "Account creation and authentication",
|
|
items: [
|
|
"configure-default-new-user-settings",
|
|
"custom-profile-fields",
|
|
"invite-new-users",
|
|
"restrict-account-creation",
|
|
"configure-authentication-methods",
|
|
"saml-authentication",
|
|
"scim",
|
|
],
|
|
},
|
|
{
|
|
label: "User management",
|
|
items: [
|
|
"manage-a-user",
|
|
"deactivate-or-reactivate-a-user",
|
|
"change-a-users-name",
|
|
"manage-user-channel-subscriptions",
|
|
"manage-user-group-membership",
|
|
],
|
|
},
|
|
{
|
|
label: "Channel management",
|
|
items: [
|
|
"create-a-channel",
|
|
{
|
|
label: "Private channels",
|
|
link: "/channel-permissions#private-channels",
|
|
},
|
|
{
|
|
label: "Public channels",
|
|
link: "/channel-permissions#public-channels",
|
|
},
|
|
"public-access-option",
|
|
"general-chat-channels",
|
|
"channel-folders",
|
|
"channel-permissions",
|
|
"channel-posting-policy",
|
|
"configure-who-can-administer-a-channel",
|
|
"configure-who-can-create-channels",
|
|
"configure-who-can-subscribe",
|
|
"configure-who-can-invite-to-channels",
|
|
"configure-who-can-unsubscribe-others",
|
|
"subscribe-users-to-a-channel",
|
|
"unsubscribe-users-from-a-channel",
|
|
"set-default-channels-for-new-users",
|
|
"rename-a-channel",
|
|
"change-the-channel-description",
|
|
"pin-information",
|
|
"change-the-privacy-of-a-channel",
|
|
"archive-a-channel",
|
|
],
|
|
},
|
|
{
|
|
label: "Permissions management",
|
|
items: [
|
|
"manage-permissions",
|
|
"manage-user-groups",
|
|
"deactivate-a-user-group",
|
|
"user-roles",
|
|
"guest-users",
|
|
"restrict-direct-messages",
|
|
"restrict-wildcard-mentions",
|
|
"restrict-message-editing-and-deletion",
|
|
"restrict-message-edit-history-access",
|
|
"restrict-moving-messages",
|
|
"restrict-resolving-topics",
|
|
"restrict-name-and-email-changes",
|
|
"restrict-profile-picture-changes",
|
|
"restrict-permissions-of-new-members",
|
|
],
|
|
},
|
|
{
|
|
label: "Organization settings",
|
|
items: [
|
|
"configure-organization-language",
|
|
"custom-emoji",
|
|
"configure-call-provider",
|
|
"add-a-custom-linkifier",
|
|
"require-topics",
|
|
"image-video-and-website-previews",
|
|
"hide-message-content-in-emails",
|
|
"message-retention-policy",
|
|
"digest-emails",
|
|
"disable-welcome-emails",
|
|
"configure-automated-notices",
|
|
"configure-multi-language-search",
|
|
"analytics",
|
|
],
|
|
},
|
|
{
|
|
label: "Bots & integrations",
|
|
items: [
|
|
"bots-overview",
|
|
"integrations-overview",
|
|
"add-a-bot-or-integration",
|
|
"generate-integration-url",
|
|
"manage-a-bot",
|
|
"deactivate-or-reactivate-a-bot",
|
|
"request-an-integration",
|
|
"restrict-bot-creation",
|
|
"view-your-bots",
|
|
"view-all-bots-in-your-organization",
|
|
],
|
|
},
|
|
{
|
|
label: "Support",
|
|
items: [
|
|
"view-zulip-version",
|
|
"zulip-cloud-billing",
|
|
"self-hosted-billing",
|
|
"gdpr-compliance",
|
|
"move-to-zulip-cloud",
|
|
"support-zulip-project",
|
|
"linking-to-zulip-website",
|
|
"contact-support",
|
|
],
|
|
},
|
|
{
|
|
label: "◀ Back to Zulip",
|
|
link: "../",
|
|
},
|
|
],
|
|
}),
|
|
],
|
|
});
|