UNPKG

@helpwave/hightide

Version:

helpwave's component and theming library

48 lines (44 loc) 1.44 kB
// src/util/news.ts import { z } from "zod"; // src/hooks/useLanguage.tsx import { createContext, useContext, useEffect as useEffect2, useState as useState2 } from "react"; // src/hooks/useLocalStorage.tsx import { useCallback, useEffect, useState } from "react"; // src/hooks/useLanguage.tsx import { jsx } from "react/jsx-runtime"; var languages = ["en", "de"]; var DEFAULT_LANGUAGE = "en"; var LanguageContext = createContext({ language: DEFAULT_LANGUAGE, setLanguage: (v) => v }); // src/util/news.ts var newsSchema = z.object({ title: z.string(), description: z.string(), date: z.string(), image: z.string().url().optional(), externalResource: z.string().url().optional(), keys: z.array(z.string()) }).transform((obj) => { let description = [obj.description]; if (obj.image) { description = [new URL(obj.image), ...description]; } return { title: obj.title, date: new Date(obj.date), description, externalResource: obj.externalResource ? new URL(obj.externalResource) : void 0, keys: obj.keys }; }); var newsListSchema = z.array(newsSchema); var localizedNewsSchema = z.record(z.enum(languages), newsListSchema); var filterNews = (localizedNews, requiredKeys) => { return localizedNews.filter((news) => requiredKeys.every((value) => news.keys.includes(value))); }; export { filterNews, localizedNewsSchema, newsListSchema, newsSchema }; //# sourceMappingURL=news.mjs.map