Files
homarr/packages/widgets/src/rssFeed/index.ts
2025-02-07 22:10:35 +01:00

35 lines
1.1 KiB
TypeScript

import { IconRss } from "@tabler/icons-react";
import { z } from "zod";
import { createWidgetDefinition } from "../definition";
import { optionsBuilder } from "../options";
/**
* Feed must conform to one of the following standards:
* - https://www.rssboard.org/rss-specification (https://web.resource.org/rss/1.0/spec)
* - https://datatracker.ietf.org/doc/html/rfc5023
* - https://www.jsonfeed.org/version/1.1/
*/
export const { definition, componentLoader } = createWidgetDefinition("rssFeed", {
icon: IconRss,
createOptions() {
return optionsBuilder.from((factory) => ({
feedUrls: factory.multiText({
defaultValue: [],
validate: z.string().url(),
}),
enableRtl: factory.switch({
defaultValue: false,
}),
textLinesClamp: factory.number({
defaultValue: 5,
validate: z.number().min(1).max(50),
}),
maximumAmountPosts: factory.number({
defaultValue: 100,
validate: z.number().min(1).max(9999),
}),
}));
},
}).withDynamicImport(() => import("./component"));