diff --git a/components/icons.tsx b/components/icons.tsx index 6d54cbc..63a136f 100644 --- a/components/icons.tsx +++ b/components/icons.tsx @@ -17,4 +17,5 @@ export { default as IconSearch } from "https://deno.land/x/tabler_icons_tsx@0.0. export { default as IconGhost } from "https://deno.land/x/tabler_icons_tsx@0.0.3/tsx/ghost.tsx"; export { default as IconBrandYoutube } from "https://deno.land/x/tabler_icons_tsx@0.0.3/tsx/brand-youtube.tsx"; export { default as IconWand } from "https://deno.land/x/tabler_icons_tsx@0.0.5/tsx/wand.tsx"; +export { default as IconMenu2 } from "https://deno.land/x/tabler_icons_tsx@0.0.5/tsx/menu-2.tsx"; export { default as IconAlertCircle } from "https://deno.land/x/tabler_icons_tsx@0.0.5/tsx/alert-circle.tsx"; \ No newline at end of file diff --git a/fresh.gen.ts b/fresh.gen.ts index 275d6ef..bc4d3b0 100644 --- a/fresh.gen.ts +++ b/fresh.gen.ts @@ -60,6 +60,7 @@ import * as $KMenu_commands_create_recommendations from "./islands/KMenu/command import * as $KMenu_commands_create_series from "./islands/KMenu/commands/create_series.ts"; import * as $KMenu_commands_enhance_article_infos from "./islands/KMenu/commands/enhance_article_infos.ts"; import * as $KMenu_types from "./islands/KMenu/types.ts"; +import * as $KMenuButton from "./islands/KMenuButton.tsx"; import * as $Link from "./islands/Link.tsx"; import * as $Recommendations from "./islands/Recommendations.tsx"; import * as $Search from "./islands/Search.tsx"; @@ -133,6 +134,7 @@ const manifest = { "./islands/KMenu/commands/enhance_article_infos.ts": $KMenu_commands_enhance_article_infos, "./islands/KMenu/types.ts": $KMenu_types, + "./islands/KMenuButton.tsx": $KMenuButton, "./islands/Link.tsx": $Link, "./islands/Recommendations.tsx": $Recommendations, "./islands/Search.tsx": $Search, diff --git a/islands/KMenu.tsx b/islands/KMenu.tsx index f2c09c6..33bd339 100644 --- a/islands/KMenu.tsx +++ b/islands/KMenu.tsx @@ -5,6 +5,7 @@ import { menus } from "@islands/KMenu/commands.ts"; import { MenuEntry } from "@islands/KMenu/types.ts"; import * as icons from "@components/icons.tsx"; import { IS_BROWSER } from "$fresh/runtime.ts"; +import { isKMenuOpen } from "@lib/kmenu.ts"; const KMenuEntry = ( { entry, activeIndex, index }: { entry: MenuEntry; @@ -42,7 +43,7 @@ export const KMenu = ( const input = useRef(null); const commandInput = useSignal(""); - const visible = useSignal(false); + const visible = isKMenuOpen; if (visible.value === false) { setTimeout(() => { activeMenuType.value = "main"; diff --git a/islands/KMenuButton.tsx b/islands/KMenuButton.tsx new file mode 100644 index 0000000..d959fba --- /dev/null +++ b/islands/KMenuButton.tsx @@ -0,0 +1,14 @@ +import { Button } from "@components/Button.tsx"; +import { IconMenu2 } from "@components/icons.tsx"; +import { isKMenuOpen } from "@lib/kmenu.ts"; + +export default function KMenuButton() { + return ( + + ); +} diff --git a/lib/kmenu.ts b/lib/kmenu.ts new file mode 100644 index 0000000..148f2e7 --- /dev/null +++ b/lib/kmenu.ts @@ -0,0 +1,3 @@ +import { signal } from "@preact/signals"; + +export const isKMenuOpen = signal(false); diff --git a/routes/_layout.tsx b/routes/_layout.tsx index c4273d2..7dcf8e7 100644 --- a/routes/_layout.tsx +++ b/routes/_layout.tsx @@ -2,6 +2,7 @@ import { PageProps } from "$fresh/server.ts"; import { resources } from "@lib/resources.ts"; import { Link } from "@islands/Link.tsx"; import { Emoji } from "@components/Emoji.tsx"; +import KMenuButton from "@islands/KMenuButton.tsx"; export default function MyLayout({ Component }: PageProps) { return ( @@ -26,6 +27,7 @@ export default function MyLayout({ Component }: PageProps) {
+ ); }