diff --git a/apps/builder/app/builder/builder.tsx b/apps/builder/app/builder/builder.tsx index 127ead26de..cee7818400 100644 --- a/apps/builder/app/builder/builder.tsx +++ b/apps/builder/app/builder/builder.tsx @@ -9,7 +9,7 @@ import type { AuthPermit } from "@webstudio-is/trpc-interface/index.server"; import { createImageLoader } from "@webstudio-is/image"; import { registerContainers, useBuilderStore } from "~/shared/sync"; import { startProjectSync, useSyncServer } from "./shared/sync/sync-server"; -import { SidebarLeft } from "./features/sidebar-left"; +import { SidebarLeft } from "./sidebar-left"; import { Inspector } from "./features/inspector"; import { Topbar } from "./features/topbar"; import { Footer } from "./features/footer"; diff --git a/apps/builder/app/builder/features/sidebar-left/panels/assets/assets.tsx b/apps/builder/app/builder/features/assets/assets.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/assets/assets.tsx rename to apps/builder/app/builder/features/assets/assets.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/assets/index.ts b/apps/builder/app/builder/features/assets/index.ts similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/assets/index.ts rename to apps/builder/app/builder/features/assets/index.ts diff --git a/apps/builder/app/builder/features/sidebar-left/panels/components/components.tsx b/apps/builder/app/builder/features/components/components.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/components/components.tsx rename to apps/builder/app/builder/features/components/components.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/components/get-meta-maps.test.ts b/apps/builder/app/builder/features/components/get-meta-maps.test.ts similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/components/get-meta-maps.test.ts rename to apps/builder/app/builder/features/components/get-meta-maps.test.ts diff --git a/apps/builder/app/builder/features/sidebar-left/panels/components/get-meta-maps.ts b/apps/builder/app/builder/features/components/get-meta-maps.ts similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/components/get-meta-maps.ts rename to apps/builder/app/builder/features/components/get-meta-maps.ts diff --git a/apps/builder/app/builder/features/sidebar-left/panels/components/index.ts b/apps/builder/app/builder/features/components/index.ts similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/components/index.ts rename to apps/builder/app/builder/features/components/index.ts diff --git a/apps/builder/app/builder/features/sidebar-left/panels/components/insert.ts b/apps/builder/app/builder/features/components/insert.ts similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/components/insert.ts rename to apps/builder/app/builder/features/components/insert.ts diff --git a/apps/builder/app/builder/features/sidebar-left/panels/components/use-draggable.tsx b/apps/builder/app/builder/features/components/use-draggable.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/components/use-draggable.tsx rename to apps/builder/app/builder/features/components/use-draggable.tsx diff --git a/apps/builder/app/builder/features/inspector/inspector.tsx b/apps/builder/app/builder/features/inspector/inspector.tsx index c32484b1a1..8082e754f1 100644 --- a/apps/builder/app/builder/features/inspector/inspector.tsx +++ b/apps/builder/app/builder/features/inspector/inspector.tsx @@ -27,7 +27,7 @@ import { $dragAndDropState, $selectedPage, } from "~/shared/nano-states"; -import { NavigatorTree } from "~/builder/features/sidebar-left/panels/navigator"; +import { NavigatorTree } from "~/builder/features/navigator"; import type { Settings } from "~/builder/shared/client-settings"; import { MetaIcon } from "~/builder/shared/meta-icon"; import { getInstanceLabel } from "~/shared/instance-utils"; diff --git a/apps/builder/app/builder/features/sidebar-left/panels/marketplace/about.tsx b/apps/builder/app/builder/features/marketplace/about.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/marketplace/about.tsx rename to apps/builder/app/builder/features/marketplace/about.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/marketplace/card.tsx b/apps/builder/app/builder/features/marketplace/card.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/marketplace/card.tsx rename to apps/builder/app/builder/features/marketplace/card.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/marketplace/index.ts b/apps/builder/app/builder/features/marketplace/index.ts similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/marketplace/index.ts rename to apps/builder/app/builder/features/marketplace/index.ts diff --git a/apps/builder/app/builder/features/sidebar-left/panels/marketplace/marketplace.tsx b/apps/builder/app/builder/features/marketplace/marketplace.tsx similarity index 97% rename from apps/builder/app/builder/features/sidebar-left/panels/marketplace/marketplace.tsx rename to apps/builder/app/builder/features/marketplace/marketplace.tsx index 58193a4cab..d008622b1e 100644 --- a/apps/builder/app/builder/features/sidebar-left/panels/marketplace/marketplace.tsx +++ b/apps/builder/app/builder/features/marketplace/marketplace.tsx @@ -13,7 +13,7 @@ import { useEffect, useState } from "react"; import { toWebstudioData } from "./utils"; import type { MarketplaceOverviewItem } from "~/shared/marketplace/types"; import type { Project } from "@webstudio-is/project"; -import { ExtendedPanel } from "../../shared/extended-panel"; +import { ExtendedPanel } from "~/builder/shared/extended-sidebar-panel"; import { About } from "./about"; import { trpcClient } from "~/shared/trpc/trpc-client"; diff --git a/apps/builder/app/builder/features/sidebar-left/panels/marketplace/overview.tsx b/apps/builder/app/builder/features/marketplace/overview.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/marketplace/overview.tsx rename to apps/builder/app/builder/features/marketplace/overview.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/marketplace/templates.tsx b/apps/builder/app/builder/features/marketplace/templates.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/marketplace/templates.tsx rename to apps/builder/app/builder/features/marketplace/templates.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/marketplace/utils.ts b/apps/builder/app/builder/features/marketplace/utils.ts similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/marketplace/utils.ts rename to apps/builder/app/builder/features/marketplace/utils.ts diff --git a/apps/builder/app/builder/features/sidebar-left/panels/navigator/css-preview.tsx b/apps/builder/app/builder/features/navigator/css-preview.tsx similarity index 96% rename from apps/builder/app/builder/features/sidebar-left/panels/navigator/css-preview.tsx rename to apps/builder/app/builder/features/navigator/css-preview.tsx index 1cd99f8193..65888c4660 100644 --- a/apps/builder/app/builder/features/sidebar-left/panels/navigator/css-preview.tsx +++ b/apps/builder/app/builder/features/navigator/css-preview.tsx @@ -4,10 +4,11 @@ import { textVariants, theme, } from "@webstudio-is/design-system"; +// @todo feature should not import another feature import { type StyleInfo, useStyleInfo, -} from "../../../style-panel/shared/style-info"; +} from "~/builder/features/style-panel/shared/style-info"; import { generateStyleMap, hyphenateProperty, diff --git a/apps/builder/app/builder/features/sidebar-left/panels/navigator/index.ts b/apps/builder/app/builder/features/navigator/index.ts similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/navigator/index.ts rename to apps/builder/app/builder/features/navigator/index.ts diff --git a/apps/builder/app/builder/features/sidebar-left/panels/navigator/navigator-tree.tsx b/apps/builder/app/builder/features/navigator/navigator-tree.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/navigator/navigator-tree.tsx rename to apps/builder/app/builder/features/navigator/navigator-tree.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/navigator/navigator.tsx b/apps/builder/app/builder/features/navigator/navigator.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/navigator/navigator.tsx rename to apps/builder/app/builder/features/navigator/navigator.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/custom-metadata.stories.tsx b/apps/builder/app/builder/features/pages/custom-metadata.stories.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/custom-metadata.stories.tsx rename to apps/builder/app/builder/features/pages/custom-metadata.stories.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/custom-metadata.tsx b/apps/builder/app/builder/features/pages/custom-metadata.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/custom-metadata.tsx rename to apps/builder/app/builder/features/pages/custom-metadata.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/folder-settings.tsx b/apps/builder/app/builder/features/pages/folder-settings.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/folder-settings.tsx rename to apps/builder/app/builder/features/pages/folder-settings.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/form.tsx b/apps/builder/app/builder/features/pages/form.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/form.tsx rename to apps/builder/app/builder/features/pages/form.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/image-info.tsx b/apps/builder/app/builder/features/pages/image-info.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/image-info.tsx rename to apps/builder/app/builder/features/pages/image-info.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/index.ts b/apps/builder/app/builder/features/pages/index.ts similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/index.ts rename to apps/builder/app/builder/features/pages/index.ts diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/page-settings.stories.tsx b/apps/builder/app/builder/features/pages/page-settings.stories.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/page-settings.stories.tsx rename to apps/builder/app/builder/features/pages/page-settings.stories.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/page-settings.tsx b/apps/builder/app/builder/features/pages/page-settings.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/page-settings.tsx rename to apps/builder/app/builder/features/pages/page-settings.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/page-utils.test.ts b/apps/builder/app/builder/features/pages/page-utils.test.ts similarity index 94% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/page-utils.test.ts rename to apps/builder/app/builder/features/pages/page-utils.test.ts index 863a0b1b35..c599aa0218 100644 --- a/apps/builder/app/builder/features/sidebar-left/panels/pages/page-utils.test.ts +++ b/apps/builder/app/builder/features/pages/page-utils.test.ts @@ -14,7 +14,6 @@ import { registerFolderChildMutable, reparentOrphansMutable, filterSelfAndChildren, - getExistingRoutePaths, $pageRootScope, isPathAvailable, } from "./page-utils"; @@ -382,35 +381,6 @@ describe("filterSelfAndChildren", () => { }); }); -describe("getExistingRoutePaths", () => { - const { pages } = createPages(); - - test("gets all the route paths that exists in the project", () => { - pages.pages.push({ - id: "pageId", - meta: {}, - name: "Page", - path: "/page", - rootInstanceId: "rootInstanceId", - systemDataSourceId: "systemDataSourceId", - title: `"Page"`, - }); - - pages.pages.push({ - id: "blogId", - meta: {}, - name: "Blog", - path: "/blog/:id", - rootInstanceId: "rootInstanceId", - systemDataSourceId: "systemDataSourceId", - title: `"Blog"`, - }); - - const result = getExistingRoutePaths(pages); - expect(Array.from(result)).toEqual(["/page", "/blog/:id"]); - }); -}); - test("page root scope should rely on editing page", () => { const pages = createDefaultPages({ rootInstanceId: "homeRootId", diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/page-utils.ts b/apps/builder/app/builder/features/pages/page-utils.ts similarity index 96% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/page-utils.ts rename to apps/builder/app/builder/features/pages/page-utils.ts index e7173b3fc9..117a9156e1 100644 --- a/apps/builder/app/builder/features/sidebar-left/panels/pages/page-utils.ts +++ b/apps/builder/app/builder/features/pages/page-utils.ts @@ -236,22 +236,6 @@ export const filterSelfAndChildren = ( }); }; -export const getExistingRoutePaths = (pages?: Pages): Set => { - const paths: Set = new Set(); - if (pages === undefined) { - return paths; - } - - for (const page of pages.pages) { - const pagePath = getPagePath(page.id, pages); - if (pagePath === undefined) { - continue; - } - paths.add(pagePath); - } - return paths; -}; - const $editingPage = computed( [$editingPageId, $pages], (editingPageId, pages) => { diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/pages.tsx b/apps/builder/app/builder/features/pages/pages.tsx similarity index 99% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/pages.tsx rename to apps/builder/app/builder/features/pages/pages.tsx index 15c4254529..3f08f36bcb 100644 --- a/apps/builder/app/builder/features/sidebar-left/panels/pages/pages.tsx +++ b/apps/builder/app/builder/features/pages/pages.tsx @@ -22,7 +22,7 @@ import { DynamicPageIcon, CrossIcon, } from "@webstudio-is/icons"; -import { ExtendedPanel } from "../../shared/extended-panel"; +import { ExtendedPanel } from "../../shared/extended-sidebar-panel"; import { NewPageSettings, PageSettings } from "./page-settings"; import { $editingPageId, $pages, $selectedPageId } from "~/shared/nano-states"; import { switchPage } from "~/shared/pages"; diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/search-preview.stories.tsx b/apps/builder/app/builder/features/pages/search-preview.stories.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/search-preview.stories.tsx rename to apps/builder/app/builder/features/pages/search-preview.stories.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/search-preview.tsx b/apps/builder/app/builder/features/pages/search-preview.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/search-preview.tsx rename to apps/builder/app/builder/features/pages/search-preview.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/social-preview.tsx b/apps/builder/app/builder/features/pages/social-preview.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/social-preview.tsx rename to apps/builder/app/builder/features/pages/social-preview.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/social-utils.test.ts b/apps/builder/app/builder/features/pages/social-utils.test.ts similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/social-utils.test.ts rename to apps/builder/app/builder/features/pages/social-utils.test.ts diff --git a/apps/builder/app/builder/features/sidebar-left/panels/pages/social-utils.ts b/apps/builder/app/builder/features/pages/social-utils.ts similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/panels/pages/social-utils.ts rename to apps/builder/app/builder/features/pages/social-utils.ts diff --git a/apps/builder/app/builder/features/project-settings/section-redirects.tsx b/apps/builder/app/builder/features/project-settings/section-redirects.tsx index 51ba9ad951..4fca906855 100644 --- a/apps/builder/app/builder/features/project-settings/section-redirects.tsx +++ b/apps/builder/app/builder/features/project-settings/section-redirects.tsx @@ -22,11 +22,10 @@ import { ProjectNewRedirectPath, } from "@webstudio-is/sdk"; import { useStore } from "@nanostores/react"; -import { getExistingRoutePaths } from "../sidebar-left/panels/pages/page-utils"; import { $pages, $publishedOrigin } from "~/shared/nano-states"; import { serverSyncStore } from "~/shared/sync"; import { flushSync } from "react-dom"; -import { sectionSpacing } from "./utils"; +import { getExistingRoutePaths, sectionSpacing } from "./utils"; export const SectionRedirects = () => { const publishedOrigin = useStore($publishedOrigin); diff --git a/apps/builder/app/builder/features/project-settings/utils.test.ts b/apps/builder/app/builder/features/project-settings/utils.test.ts new file mode 100644 index 0000000000..4d6d388623 --- /dev/null +++ b/apps/builder/app/builder/features/project-settings/utils.test.ts @@ -0,0 +1,36 @@ +import { describe, expect, test } from "@jest/globals"; +import { createDefaultPages } from "@webstudio-is/project-build"; +import { getExistingRoutePaths } from "./utils"; + +describe("getExistingRoutePaths", () => { + test("gets all the route paths that exists in the project", () => { + const pages = createDefaultPages({ + rootInstanceId: "rootInstanceId", + systemDataSourceId: "systemDataSourceId", + homePageId: "homePageId", + }); + + pages.pages.push({ + id: "pageId", + meta: {}, + name: "Page", + path: "/page", + rootInstanceId: "rootInstanceId", + systemDataSourceId: "systemDataSourceId", + title: `"Page"`, + }); + + pages.pages.push({ + id: "blogId", + meta: {}, + name: "Blog", + path: "/blog/:id", + rootInstanceId: "rootInstanceId", + systemDataSourceId: "systemDataSourceId", + title: `"Blog"`, + }); + + const result = getExistingRoutePaths(pages); + expect(Array.from(result)).toEqual(["/page", "/blog/:id"]); + }); +}); diff --git a/apps/builder/app/builder/features/project-settings/utils.ts b/apps/builder/app/builder/features/project-settings/utils.ts index 34fbcf80af..a115a74ae1 100644 --- a/apps/builder/app/builder/features/project-settings/utils.ts +++ b/apps/builder/app/builder/features/project-settings/utils.ts @@ -1,7 +1,24 @@ import { theme, type CSS } from "@webstudio-is/design-system"; +import { getPagePath, type Pages } from "@webstudio-is/sdk"; export const leftPanelWidth = theme.spacing[26]; export const rightPanelWidth = theme.spacing[35]; export const sectionSpacing: CSS = { paddingInline: theme.panel.paddingInline, }; + +export const getExistingRoutePaths = (pages?: Pages): Set => { + const paths: Set = new Set(); + if (pages === undefined) { + return paths; + } + + for (const page of pages.pages) { + const pagePath = getPagePath(page.id, pages); + if (pagePath === undefined) { + continue; + } + paths.add(pagePath); + } + return paths; +}; diff --git a/apps/builder/app/builder/features/sidebar-left/shared/extended-panel.tsx b/apps/builder/app/builder/shared/extended-sidebar-panel.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/shared/extended-panel.tsx rename to apps/builder/app/builder/shared/extended-sidebar-panel.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/help-popover.tsx b/apps/builder/app/builder/sidebar-left/help-popover.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/help-popover.tsx rename to apps/builder/app/builder/sidebar-left/help-popover.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/index.tsx b/apps/builder/app/builder/sidebar-left/index.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/index.tsx rename to apps/builder/app/builder/sidebar-left/index.tsx diff --git a/apps/builder/app/builder/features/sidebar-left/sidebar-left.tsx b/apps/builder/app/builder/sidebar-left/sidebar-left.tsx similarity index 95% rename from apps/builder/app/builder/features/sidebar-left/sidebar-left.tsx rename to apps/builder/app/builder/sidebar-left/sidebar-left.tsx index b307b9e151..cb2fe33000 100644 --- a/apps/builder/app/builder/features/sidebar-left/sidebar-left.tsx +++ b/apps/builder/app/builder/sidebar-left/sidebar-left.tsx @@ -37,11 +37,11 @@ import { useExternalDragStateEffect, } from "~/builder/shared/assets/drag-monitor"; import { getSetting, setSetting } from "~/builder/shared/client-settings"; -import { ComponentsPanel } from "./panels/components"; -import { PagesPanel } from "./panels/pages"; -import { NavigatorPanel } from "./panels/navigator"; -import { AssetsPanel } from "./panels/assets"; -import { MarketplacePanel } from "./panels/marketplace"; +import { ComponentsPanel } from "~/builder/features/components"; +import { PagesPanel } from "~/builder/features/pages"; +import { NavigatorPanel } from "~/builder/features/navigator"; +import { AssetsPanel } from "~/builder/features/assets"; +import { MarketplacePanel } from "~/builder/features/marketplace"; const none = { Panel: () => null }; diff --git a/apps/builder/app/builder/features/sidebar-left/sidebar-tabs.tsx b/apps/builder/app/builder/sidebar-left/sidebar-tabs.tsx similarity index 100% rename from apps/builder/app/builder/features/sidebar-left/sidebar-tabs.tsx rename to apps/builder/app/builder/sidebar-left/sidebar-tabs.tsx