"use client";
import * as React from "react";
import {
PageHeader,
type PageHeaderActionItem,
} from "@exxatdesignux/ui/components/ui/page-header";
import { Button } from "@/components/ui/button";
import { Shortcut } from "@/components/ui/dropdown-menu";
import { Kbd } from "@/components/ui/kbd";
import { useAltKeyLabel, useModKeyLabel } from "@/hooks/use-mod-key-label";
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "@/components/ui/select";
function secondaryHeaderActions(
onSelect: (label: string) => void,
): PageHeaderActionItem[] {
return [
{
id: "import",
label: "Import",
icon: "fa-file-import",
variant: "outline",
onSelect: () => onSelect("Import selected"),
},
{
id: "export",
label: "Export",
icon: "fa-arrow-up-from-bracket",
variant: "outline",
onSelect: () => onSelect("Export selected"),
},
{
id: "settings",
label: "Page settings",
icon: "fa-gear",
placement: "overflow",
onSelect: () => onSelect("Page settings selected"),
},
];
}
export function PageHeaderDefaultPreview() {
return (
);
}
export function PageHeaderResponsiveActionsPreview() {
const [width, setWidth] = React.useState<"wide" | "medium" | "narrow">(
"wide",
);
const [status, setStatus] = React.useState("");
const mod = useModKeyLabel();
const alt = useAltKeyLabel();
const actions: PageHeaderActionItem[] = [
{
id: "new",
label: "New record",
icon: "fa-plus",
variant: "default",
shortcut: `${mod}${alt}N`,
onSelect: () => setStatus("New record selected"),
},
...secondaryHeaderActions(setStatus),
];
return (
{(["wide", "medium", "narrow"] as const).map((value) => (
))}
{status}
);
}
export function PageHeaderCollaborationPreview() {
const [status, setStatus] = React.useState("");
const mod = useModKeyLabel();
const alt = useAltKeyLabel();
return (
setStatus("Collaborators opened")}
actionItems={[
{
id: "invite",
label: "Invite people",
icon: "fa-user-plus",
variant: "default",
shortcut: `${mod}${alt}I`,
onSelect: () => setStatus("Invite people selected"),
},
]}
/>
{status}
);
}
export function PageHeaderCustomActionsPreview() {
const [scope, setScope] = React.useState("all");
const [status, setStatus] = React.useState("");
const mod = useModKeyLabel();
const alt = useAltKeyLabel();
const addShortcut = `${mod}${alt}D`;
const addRecord = () => setStatus("Add record selected");
return (
>
}
/>
{status}
);
}