import { createSignal, For, createMemo } from "solid-js"; import { cache, createAsync, A, type RouteDefinition } from "@solidjs/router"; import { classList } from "solid-js/web"; const getNewsList = cache(async () => { "use server"; return await fetch("https://content.dd-ix.net/news/en").then((data) => data.json() ); }, "news-list"); const getNewsTags = cache(async () => { "use server"; return await fetch("https://content.dd-ix.net/news/keywords").then((data) => data.json() ); }, "news-tags"); export const route = { load: () => { getNewsList(); getNewsTags(); }, } satisfies RouteDefinition; export default () => { const newsList = createAsync(() => getNewsList()); const tagsData = createAsync(() => getNewsTags()); const [tags, setTags] = createSignal( Object.fromEntries( tagsData()?.map((tag: string) => [tag, { active: false }]) ?? [] ) ); const tagsActive = createMemo(() => Object.entries(tags()) .filter(([, { active }]) => active) .map(([tag]) => tag) ); return (

News

{([tag, { active }]) => ( )}
Object.entries(tags()) .filter(([, state]) => state.active) .some(([tag]) => news.keywords.includes(tag)) ) : newsList() } > {(post) => (
{post.title}

{post.title}

{post.published}

{post.description}

{(tag) =>
{tag}
}
)}
); };