From d8ad118a2e924e04f50743ed9d648444e3c33eca Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Tue, 3 Sep 2024 17:49:42 +0200 Subject: [PATCH 1/5] feat: docs flyout menu Adds a dropdown menu that has one main a tag and flyout sub a tags on hover. The menu is used for the docs entry Related to #3 / #61 --- .../svelte.dev/src/routes/nav.json/+server.ts | 1 + .../src/lib/components/LinksDropdown.svelte | 72 +++++++++++++++++++ packages/site-kit/src/lib/components/index.ts | 1 + packages/site-kit/src/lib/nav/Nav.svelte | 17 +++-- packages/site-kit/src/lib/types.d.ts | 2 + 5 files changed, 87 insertions(+), 6 deletions(-) create mode 100644 packages/site-kit/src/lib/components/LinksDropdown.svelte diff --git a/apps/svelte.dev/src/routes/nav.json/+server.ts b/apps/svelte.dev/src/routes/nav.json/+server.ts index e71856e111..86328aaa0e 100644 --- a/apps/svelte.dev/src/routes/nav.json/+server.ts +++ b/apps/svelte.dev/src/routes/nav.json/+server.ts @@ -11,6 +11,7 @@ export const GET = async () => { async function get_nav_list(): Promise { const docs = index.docs.children.map((topic) => ({ title: topic.metadata.title, + path: '/' + topic.slug, // this will make the UI show a flyout menu for the docs nav entry sections: topic.children.map((section) => ({ title: section.metadata.title, sections: section.children.map((page) => ({ diff --git a/packages/site-kit/src/lib/components/LinksDropdown.svelte b/packages/site-kit/src/lib/components/LinksDropdown.svelte new file mode 100644 index 0000000000..766429a024 --- /dev/null +++ b/packages/site-kit/src/lib/components/LinksDropdown.svelte @@ -0,0 +1,72 @@ + + + + + diff --git a/packages/site-kit/src/lib/components/index.ts b/packages/site-kit/src/lib/components/index.ts index 02f0f45543..50b1eed77a 100644 --- a/packages/site-kit/src/lib/components/index.ts +++ b/packages/site-kit/src/lib/components/index.ts @@ -4,3 +4,4 @@ export { default as Icons } from './Icons.svelte'; export { default as Section } from './Section.svelte'; export { default as Shell } from './Shell.svelte'; export { default as ThemeToggle } from './ThemeToggle.svelte'; +export { default as LinksDropdown } from './LinksDropdown.svelte'; diff --git a/packages/site-kit/src/lib/nav/Nav.svelte b/packages/site-kit/src/lib/nav/Nav.svelte index d07cae5c09..f681fa670d 100644 --- a/packages/site-kit/src/lib/nav/Nav.svelte +++ b/packages/site-kit/src/lib/nav/Nav.svelte @@ -13,6 +13,7 @@ Top navigation bar for the application. It provides a slot for the left side, th import Separator from './Separator.svelte'; import type { NavigationLink } from '../types'; import type { Snippet } from 'svelte'; + import LinksDropdown from '../components/LinksDropdown.svelte'; interface Props { home_title?: string; @@ -103,12 +104,16 @@ Top navigation bar for the application. It provides a slot for the left side, th