'use client'; import clsx from 'clsx'; import { urls, useConceptNavigation } from '@/app'; import { HelpTopic } from '@/features/help'; import { BadgeHelp } from '@/features/help/components'; import { type IRSForm } from '@/features/rsform'; import { useRoleStore, UserRole } from '@/features/users'; import { MiniButton } from '@/components/control'; import { IconDestroy, IconSave, IconShare } from '@/components/icons'; import { useModificationStore } from '@/stores/modification'; import { tooltipText } from '@/utils/labels'; import { prepareTooltip, sharePage } from '@/utils/utils'; import { AccessPolicy, type ILibraryItem, LibraryItemType } from '../backend/types'; import { useMutatingLibrary } from '../backend/use-mutating-library'; import { MiniSelectorOSS } from './mini-selector-oss'; interface ToolbarItemCardProps { className?: string; onSubmit: () => void; isMutable: boolean; schema: ILibraryItem; deleteSchema: () => void; } export function ToolbarItemCard({ className, schema, onSubmit, isMutable, deleteSchema }: ToolbarItemCardProps) { const role = useRoleStore(state => state.role); const router = useConceptNavigation(); const { isModified } = useModificationStore(); const isProcessing = useMutatingLibrary(); const canSave = isModified && !isProcessing; const ossSelector = (() => { if (schema.item_type !== LibraryItemType.RSFORM) { return null; } const rsSchema = schema as IRSForm; if (rsSchema.oss.length <= 0) { return null; } return ( router.push({ path: urls.oss(value.id), newTab: event.ctrlKey || event.metaKey })} /> ); })(); return (
{ossSelector} {isMutable || isModified ? ( } onClick={onSubmit} disabled={!canSave} /> ) : null} } onClick={sharePage} disabled={schema.access_policy !== AccessPolicy.PUBLIC} /> {isMutable ? ( } onClick={deleteSchema} disabled={!isMutable || isProcessing || role < UserRole.OWNER} /> ) : null}
); }