@dreamkit/solid
Version:
DreamKit tools for Solid.
22 lines (21 loc) • 753 B
JavaScript
import { createRouteHref } from "@dreamkit/app/utils/routing.js";
import { createComponent, mergeProps, splitProps } from "solid-js";
/*#__NO_SIDE_EFFECTS__*/
export function defineLink() {
return function Link(inProps) {
const [routeProps, props] = splitProps(inProps, [
"component",
"href",
"params",
]);
if (!routeProps.component)
throw new Error("Link component must have a component prop");
return createComponent(routeProps.component, mergeProps(props, {
get href() {
return routeProps.href
? createRouteHref(routeProps.href, routeProps.params)
: undefined;
},
}));
};
}