Sonner
Toaster in the layout
In the root layout wrap the application for context; Slot renders the child routes.
Application content…
tsx
import { Slot, component$ } from "@builder.io/qwik";
import { Sonner } from "~/components/ui/base/sonner";
export default component$(() => (
<Sonner.Toaster>
<div class="p-4">
Application content… <Slot />
</div>
</Sonner.Toaster>
));
Toast on a page
useSonner() returns toast for calling from the page content.
tsx
import { component$ } from "@builder.io/qwik";
import { Button } from "~/components/ui/base/button";
import { useSonner } from "~/components/ui/base/sonner";
export const ToastDemo = component$(() => {
const { toast } = useSonner();
return (
<>
<Button onClick$={() => toast("Saved")}>Toast</Button>
<Button
onClick$={() =>
toast({
title: "Error",
description: "Try again.",
type: "error",
duration: 0,
})
}
>
Persistent toast
</Button>
</>
);
});
Metadata
Source: meta.generated.json (see npm run generate)
File base/sonner/meta.generated.json not found or path not allowed.