diff --git a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/autocompleted.mdx b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/autocompleted.mdx index b5eeb72d0..8639d1b09 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/autocompleted.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/autocompleted.mdx @@ -1,6 +1,7 @@ --- sidebar_position: 5 sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' @@ -14,4 +15,4 @@ import WIP from '@site/src/shared/ui/wip/tmpl.mdx' > About decomposition by layers ## See also -- [(Discussion) About the application of the methodology for the selection with loaded dictionaries](https://github.com/feature-sliced/documentation/discussions/65#discussioncomment-480807) \ No newline at end of file +- [(Discussion) About the application of the methodology for the selection with loaded dictionaries](https://github.com/feature-sliced/documentation/discussions/65#discussioncomment-480807) diff --git a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/browser-api.mdx b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/browser-api.mdx index 52128b75b..957c65162 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/browser-api.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/browser-api.mdx @@ -1,5 +1,6 @@ --- sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/cms.mdx b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/cms.mdx index 8db23a359..82b7f031a 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/cms.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/cms.mdx @@ -1,5 +1,6 @@ --- sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/feedback.mdx b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/feedback.mdx index ad2431fd9..8bab4fc7f 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/feedback.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/feedback.mdx @@ -1,5 +1,6 @@ --- sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' @@ -8,4 +9,4 @@ import WIP from '@site/src/shared/ui/wip/tmpl.mdx' -> Errors, Alerts, Notifications, ... \ No newline at end of file +> Errors, Alerts, Notifications, ... diff --git a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/i18n.mdx b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/i18n.mdx index 9b0f7126a..d2b543cee 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/i18n.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/i18n.mdx @@ -1,6 +1,7 @@ --- sidebar_position: 6 sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/index.mdx b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/index.mdx index 35d877789..d41ddf713 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/index.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/index.mdx @@ -20,16 +20,17 @@ import { UserSwitchOutlined, LayoutOutlined, FontSizeOutlined } from "@ant-desig Icon={UserSwitchOutlined} tags={["Forms", "2FA", "OAuth", "Token storage", "Token refresh"]} /> - + diff --git a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx index 4cca5c541..5587db6d1 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx @@ -1,5 +1,6 @@ --- sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/monorepo.mdx b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/monorepo.mdx index 9c5b93d91..a9c7bb13f 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/monorepo.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/monorepo.mdx @@ -1,6 +1,7 @@ --- sidebar_position: 9 sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/page-layout.md b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/page-layout.md new file mode 100644 index 000000000..e155d430d --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/page-layout.md @@ -0,0 +1,102 @@ +--- +sidebar_position: 3 +--- + +# Page layouts + +This guide examines the abstraction of a _page layout_ — when several pages share the same overall structure, and differ only in the main content. + +:::info + +Is your question not covered by this guide? Post your question by leaving feedback on this article (blue button on the right) and we will consider expanding this guide! + +::: + +## Simple layout + +The simplest layout can be seen on this page. It has a header with site navigation, two sidebars, and a footer with external links. There is no complicated business logic, and the only dynamic parts are sidebars and the switchers on the right side of the header. Such a layout can be placed entirely in `shared/ui` or in `app/layouts`, with props filling in the content for the sidebars: + +```tsx title="shared/ui/layout/Layout.tsx" +import { Link, Outlet } from "react-router-dom"; +import { useThemeSwitcher } from "./useThemeSwitcher"; + +export function Layout({ siblingPages, headings }) { + const [theme, toggleTheme] = useThemeSwitcher(); + + return ( +
+
+ + +
+
+ + {/* This is where the main content goes */} + +
+
+
    +
  • GitHub
  • +
  • Twitter
  • +
+
+
+ ); +} +``` + +```ts title="shared/ui/layout/useThemeSwitcher.ts" +export function useThemeSwitcher() { + const [theme, setTheme] = useState("light"); + + function toggleTheme() { + setTheme(theme === "light" ? "dark" : "light"); + } + + useEffect(() => { + document.body.classList.remove("light", "dark"); + document.body.classList.add(theme); + }, [theme]); + + return [theme, toggleTheme] as const; +} +``` + +The code of sidebars is left as an exercise for the reader 😉. + +## Using widgets in the layout + +Sometimes you want to include certain business logic in the layout, especially if you're using deeply nested routes with a router like [React Router][ext-react-router]. Then you can't store the layout in Shared or in Widgets due to [the import rule on layers][import-rule-on-layers]: + +> A module in a slice can only import other slices when they are located on layers strictly below. + +Before we discuss solutions, we need to discuss if it's even a problem in the first place. Do you _really need_ that layout, and if so, does it _really need_ to be a Widget? If the block of business logic in question is reused on 2-3 pages, and the layout is simply a small wrapper for that widget, consider one of these two options: + +1. **Write the layout inline on the App layer, where you configure the routing** + This is great for routers that support nesting, because you can group certain routes and apply the layout only to them. + +2. **Just copy-paste it** + The urge to abstract code is often very overrated. It is especially the case for layouts, which rarely change. At some point, if one of these pages will need to change, you can simply do the change without needlessly affecting other pages. If you're worried that someone might forget to update the other pages, you can always leave a comment that describes the relationship between the pages. + +If none of the above are applicable, there are two solutions to include a widget in the layout: + +1. **Use render props or slots** + Most frameworks allow you to pass a piece of UI externally. In React, it's called [render props][ext-render-props], in Vue it's called [slots][ext-vue-slots]. +2. **Move the layout to the App layer** + You can also store your layout on the App layer, for example, in `app/layouts`, and compose any widgets you want. + +## Further reading + +- There's an example of how to build a layout with authentication with React and Remix (equivalent to React Router) in the [tutorial][tutorial]. + +[tutorial]: /docs/get-started/tutorial +[import-rule-on-layers]: /docs/reference/layers#import-rule-on-layers +[ext-react-router]: https://reactrouter.com/ +[ext-render-props]: https://www.patterns.dev/react/render-props-pattern/ +[ext-vue-slots]: https://vuejs.org/guide/components/slots diff --git a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/page-layout.mdx b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/page-layout.mdx deleted file mode 100644 index d88ad8bff..000000000 --- a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/page-layout.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -sidebar_position: 3 -sidebar_class_name: sidebar-item--wip ---- - -import WIP from '@site/src/shared/ui/wip/tmpl.mdx' - -# PageLayout - - - -## Header - -> https://t.me/feature_sliced/2978 - -## Sidebar - -> - https://t.me/feature_sliced/4046 -> - https://t.me/feature_sliced/4090 - -> https://t.me/feature_sliced/3475 - -> https://t.me/feature_sliced/3425 - -## See also - -- [(DiscussionTalk) About page layout and FSD](https://youtu.be/b_nBvHWqxP8?t=4452) - diff --git a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx index 532493817..2a5212f2a 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx @@ -1,5 +1,6 @@ --- sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/ssr.mdx b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/ssr.mdx index 45453bc32..43eb82eab 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/ssr.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/ssr.mdx @@ -1,5 +1,6 @@ --- sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/theme.mdx b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/theme.mdx index 044cdbb87..cf590be8e 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/theme.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/theme.mdx @@ -1,6 +1,7 @@ --- sidebar_position: 4 sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/white-labels.mdx b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/white-labels.mdx index aa3a2b88d..855f00eb7 100644 --- a/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/white-labels.mdx +++ b/i18n/en/docusaurus-plugin-content-docs/current/guides/examples/white-labels.mdx @@ -1,6 +1,7 @@ --- sidebar_position: 8 sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/autocompleted.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/autocompleted.mdx index 40545bc4b..23e2a0bd2 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/autocompleted.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/autocompleted.mdx @@ -1,6 +1,7 @@ --- sidebar_position: 5 sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/browser-api.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/browser-api.mdx index eb7429f18..1666321fa 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/browser-api.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/browser-api.mdx @@ -1,5 +1,6 @@ --- sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/cms.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/cms.mdx index 6174b3428..c026ca19c 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/cms.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/cms.mdx @@ -1,5 +1,6 @@ --- sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/feedback.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/feedback.mdx index c291f0635..6ec8c3faf 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/feedback.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/feedback.mdx @@ -1,5 +1,6 @@ --- sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' @@ -8,4 +9,4 @@ import WIP from '@site/src/shared/ui/wip/tmpl.mdx' -> Errors, Alerts, Notifications, ... \ No newline at end of file +> Errors, Alerts, Notifications, ... diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/i18n.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/i18n.mdx index f36a706ab..fe9501097 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/i18n.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/i18n.mdx @@ -1,6 +1,7 @@ --- sidebar_position: 6 sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/index.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/index.mdx index 5a0d364d7..fe9a693ff 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/index.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/index.mdx @@ -20,16 +20,17 @@ import { UserSwitchOutlined, LayoutOutlined, FontSizeOutlined } from "@ant-desig Icon={UserSwitchOutlined} tags={["Формы", "2FA", "OAuth", "Хранение токенов", "Обновление токена"]} /> - + diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx index e3e7425f9..03bef7eec 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx @@ -1,5 +1,6 @@ --- sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/monorepo.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/monorepo.mdx index d21e4d5d0..752707181 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/monorepo.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/monorepo.mdx @@ -1,6 +1,7 @@ --- sidebar_position: 9 sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/page-layout.md b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/page-layout.md new file mode 100644 index 000000000..72cfb8009 --- /dev/null +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/page-layout.md @@ -0,0 +1,104 @@ +--- +sidebar_position: 3 +--- + +# Лейауты страниц + +Это руководство рассматривает абстракцию _лейаута страницы_ — когда несколько страниц имеют одинаковую структуру, отличаясь только основным содержимым. + +:::info + +Вашего вопроса нет в этом руководстве? Напишите свой вопрос, оставив отзыв к этой статье (синяя кнопка справа), и мы рассмотрим возможность расширения этого руководства! + +::: + +## Простой лейаут + +Самый простой лейаут можно увидеть прямо на этой странице. Он имеет хэдер с навигацией по сайту, два сайдбара и футер с внешними ссылками. Здесь нет сложной бизнес-логики, и единственные динамические части — это сайдбары и переключатели справа в хэдере. Такой лейаут можно разместить целиком в `shared/ui` или в `app/layouts`, с заполнением контента сайдбаров через пропы: + +```tsx title="shared/ui/layout/Layout.tsx" +import { Link, Outlet } from "react-router-dom"; +import { useThemeSwitcher } from "./useThemeSwitcher"; + +export function Layout({ siblingPages, headings }) { + const [theme, toggleTheme] = useThemeSwitcher(); + + return ( +
+
+ + +
+
+ + {/* Здесь будет основное содержимое страницы */} + +
+
+
    +
  • GitHub
  • +
  • Twitter
  • +
+
+
+ ); +} +``` + +```ts title="shared/ui/layout/useThemeSwitcher.ts" +export function useThemeSwitcher() { + const [theme, setTheme] = useState("light"); + + function toggleTheme() { + setTheme(theme === "light" ? "dark" : "light"); + } + + useEffect(() => { + document.body.classList.remove("light", "dark"); + document.body.classList.add(theme); + }, [theme]); + + return [theme, toggleTheme] as const; +} +``` + +Код сайдбаров оставлен читателю в качестве упражнения 😉. + +## Использование виджетов в лейауте + +Иногда есть необходимость включить в лейаут определенную бизнес-логику, особенно если вы используете глубоко вложенные маршруты с роутером типа [React Router][ext-react-router]. Тогда вы не можете хранить лейаут в Shared или в Widgets из-за [правила импорта для слоёв][import-rule-on-layers]: + +> Модуль в слайсе может импортировать другие слайсы только в том случае, если они расположены на слоях строго ниже. + +Прежде чем обсуждать решения, нам нужно обсудить, действительно ли это проблема. Вам _действительно нужен_ этот лейаут, и если да, _действительно ли_ он должен быть виджетом? Если блок бизнес-логики, про который идёт речь, используется на 2-3 страницах, и лейаут просто является небольшой обёрткой для этого виджета, рассмотрите один из этих двух вариантов: + +1. **Напишите ваш лейаут прямо в коде роутера на уровне App** + Это отлично подходит для роутеров, поддерживающих вложенность, потому что вы можете группировать определенные маршруты и применять нужный лейаут только к ним. + +2. **Просто скопируйте его** + Желание абстрагировать код часто переоценено. Это особенно верно для лейаутов, потому что они редко меняются. В какой-то момент, если одна из этих страниц потребует изменений, вы можете просто внести изменения, не затрагивая другие страницы. Если вы беспокоитесь, что кто-то может забыть обновить другие страницы, всегда можно оставить комментарий, описывающий отношения между страницами. + +Если ни один из вышеперечисленных вариантов не подходит, есть два решения для включения виджета в лейаут: + +1. **Используйте render props или слоты** + Большинство фреймворков позволяют передавать часть UI внешне. В React это называется [render props][ext-render-props], в Vue — [слоты][ext-vue-slots]. + +2. **Переместите лейаут на уровень App** + Вы также можете хранить свой лейаут на уровне App, например, в `app/layouts`, и комбинировать любые виджеты, которые вам нужны. + +## Дополнительные материалы + +- Пример создания лейаута с аутентификацией с помощью React и Remix (аналогичен React Router) можно найти в [туториале][tutorial]. + +[tutorial]: /docs/get-started/tutorial +[import-rule-on-layers]: /docs/reference/layers#import-rule-on-layers +[ext-react-router]: https://reactrouter.com/ +[ext-render-props]: https://www.patterns.dev/react/render-props-pattern/ +[ext-vue-slots]: https://ru.vuejs.org/guide/components/slots + diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/page-layout.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/page-layout.mdx deleted file mode 100644 index 3199f30b4..000000000 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/page-layout.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -sidebar_position: 3 -sidebar_class_name: sidebar-item--wip ---- - -import WIP from '@site/src/shared/ui/wip/tmpl.mdx' - -# PageLayout - - - -## Header - -> https://t.me/feature_sliced/2978 - -## Sidebar - -> - https://t.me/feature_sliced/4046 -> - https://t.me/feature_sliced/4090 - -> https://t.me/feature_sliced/3475 - -> https://t.me/feature_sliced/3425 - -## См. также {#see-also} - -- [(DiscussionTalk) О PageLayout с применением FSD](https://youtu.be/b_nBvHWqxP8?t=4452) - diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx index 7985c6c00..cb309b99a 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx @@ -1,5 +1,6 @@ --- sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/ssr.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/ssr.mdx index aaae9e565..ab9872549 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/ssr.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/ssr.mdx @@ -1,5 +1,6 @@ --- sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/theme.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/theme.mdx index 3ffe813ab..36f3dfeb3 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/theme.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/theme.mdx @@ -1,6 +1,7 @@ --- sidebar_position: 4 sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx' diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/white-labels.mdx b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/white-labels.mdx index e1a64a539..33ec366f5 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/white-labels.mdx +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/white-labels.mdx @@ -1,6 +1,7 @@ --- sidebar_position: 8 sidebar_class_name: sidebar-item--wip +unlisted: true --- import WIP from '@site/src/shared/ui/wip/tmpl.mdx'