"use client"; import { ActionIcon, Affix, Button, Group, Paper, Progress, Stack, Text, ThemeIcon, Tooltip } from "@mantine/core"; import { useLocalStorage } from "@mantine/hooks"; import { IconCheck, IconChevronDown, IconChecklist } from "@tabler/icons-react"; import { useIntegrationsWithUseAccess } from "@homarr/auth/client"; import { useRequiredBoard } from "@homarr/boards/context"; import { useEditMode } from "@homarr/boards/edit-mode"; import { useI18n } from "@homarr/translation/client"; import { useSetupAnalytics } from "~/components/create/setup-analytics"; import { getBoardSetupProgress } from "./board-setup-progress"; import { useBoardAddActions } from "./use-board-add-actions"; import classes from "./board-setup-checklist.module.css"; export const BoardSetupChecklist = () => { const board = useRequiredBoard(); const [isEditMode] = useEditMode(); const integrations = useIntegrationsWithUseAccess(); const { addWidget, addApp, connectService, canConnectService } = useBoardAddActions(); const [collapsed, setCollapsed] = useLocalStorage({ key: `homarr-board-setup-checklist-${board.id}`, defaultValue: false, }); const t = useI18n("board.setupChecklist"); const tCommon = useI18n("common.action"); const trackSetup = useSetupAnalytics(); const progress = getBoardSetupProgress({ itemKinds: board.items.map((item) => item.kind), usableIntegrationCount: integrations.length, }); if (!isEditMode || progress.isComplete) return null; if (collapsed) { return ( ); } return (
{t("title")} {t("description")}
setCollapsed(true)}>
); }; const ChecklistStep = ({ complete, label, description, actionLabel, onAction, }: { complete: boolean; label: string; description: string; actionLabel?: string; onAction?: () => void; }) => ( {complete ? : } {label} {description} {!complete && onAction && actionLabel && ( )} );