diff --git a/src/components/DiscoverMinimal.vue b/src/components/DiscoverMinimal.vue new file mode 100644 index 0000000..a2acf17 --- /dev/null +++ b/src/components/DiscoverMinimal.vue @@ -0,0 +1,277 @@ + + + + + diff --git a/src/components/DiscoverShowcase.vue b/src/components/DiscoverShowcase.vue new file mode 100644 index 0000000..1a35122 --- /dev/null +++ b/src/components/DiscoverShowcase.vue @@ -0,0 +1,360 @@ + + + + + diff --git a/src/components/PageHeader.vue b/src/components/PageHeader.vue index 94280af..fb7b648 100644 --- a/src/components/PageHeader.vue +++ b/src/components/PageHeader.vue @@ -31,12 +31,22 @@ info?: string | Array; link?: string; shortList?: boolean; + sectionType?: "list" | "discover"; } - const props = defineProps(); + const props = withDefaults(defineProps(), { + sectionType: "list" + }); const urlify = computed(() => { - return `/list/${props.title.toLowerCase().replace(" ", "_")}`; + const normalizedTitle = props.title + .toLowerCase() + .replace(/'s\b/g, "") // Remove possessive 's + .replace(/[^\w\d\s-]/g, "") // Remove special characters (keep word chars, dashes, digits, spaces) + .replace(/\s+/g, "_") // Replace spaces with underscores + .replace(/-/g, "_") // Replace dash with underscore + .replace(/_+/g, "_"); // Replace multiple underscores with single underscore + return `/${props.sectionType}/${normalizedTitle}`; }); const prettify = computed(() => { diff --git a/src/components/ResultsSection.vue b/src/components/ResultsSection.vue index 08c051c..84d695c 100644 --- a/src/components/ResultsSection.vue +++ b/src/components/ResultsSection.vue @@ -1,6 +1,8 @@ diff --git a/src/pages/ListPage.vue b/src/pages/ListPage.vue deleted file mode 100644 index 4c65e4a..0000000 --- a/src/pages/ListPage.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/src/pages/SectionPage.vue b/src/pages/SectionPage.vue new file mode 100644 index 0000000..412a6c0 --- /dev/null +++ b/src/pages/SectionPage.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/src/routes.ts b/src/routes.ts index 3bc48af..b636375 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -39,7 +39,17 @@ const routes: RouteRecordRaw[] = [ { name: "list", path: "/list/:name", - component: () => import("./pages/ListPage.vue") + component: () => import("./pages/SectionPage.vue") + }, + { + name: "discover-section", + path: "/discover/:name", + component: () => import("./pages/SectionPage.vue") + }, + { + name: "discover", + path: "/discover", + component: () => import("./pages/DiscoverPage.vue") }, { name: "search", @@ -104,7 +114,13 @@ const router = createRouter({ history: createWebHistory("/"), // base: "/", routes, - linkActiveClass: "is-active" + linkActiveClass: "is-active", + scrollBehavior(to, from, savedPosition) { + if (to.name !== "discover") return; + + console.log("scrolling top"); + return { top: 0 }; + } }); const loggedIn = () => store.getters["user/loggedIn"];