ultisuite-client/components/gmail/email-list/attachments/list-attachment-chip.tsx
R3D347HR4Y 6ec95262af Add OnlyOffice integration and update project configurations
- Updated .env.example to include configuration for OnlyOffice Document Server.
- Modified the workspace configuration to remove the drive-suite path.
- Adjusted TypeScript environment imports for consistency.
- Enhanced Next.js configuration to disable canvas in Webpack.
- Updated package.json to include new dependencies for OnlyOffice and PDF.js.
- Added global styles for OnlyOffice theme integration in the CSS.
- Created new layout and page components for the Drive feature, including public sharing and editing functionalities.
- Updated metadata handling across various layouts to reflect the new app structure.
2026-06-07 15:49:21 +02:00

60 lines
1.9 KiB
TypeScript

"use client"
import { File, HardDrive, Image as ImageIcon } from "lucide-react"
import { toast } from "sonner"
import type { EmailAttachment } from "@/lib/email-data"
import {
mailAttachmentPreviewable,
openMailAttachmentsPreview,
} from "@/lib/mail/mail-attachment-preview"
export function ListAttachmentChip({
att,
messageId,
attachments,
attachmentIndex,
}: {
att: EmailAttachment
messageId: string
attachments: EmailAttachment[]
attachmentIndex: number
}) {
const onClick = (e: React.MouseEvent) => {
e.preventDefault()
e.stopPropagation()
if (!att.id) {
toast.message("Pièce jointe non disponible")
return
}
if (!mailAttachmentPreviewable(att)) {
toast.message("Aperçu non disponible")
return
}
openMailAttachmentsPreview(messageId, attachments, attachmentIndex)
}
return (
<button
type="button"
onClick={onClick}
className="inline-flex max-w-[min(100%,280px)] min-w-0 shrink items-center gap-1.5 rounded-full border border-mail-list-chip-border bg-transparent px-2.5 py-1 text-[13px] leading-snug text-mail-list-chip-text hover:bg-mail-list-chip-muted"
>
{att.kind === "pdf" ? (
<File className="size-4 shrink-0 fill-destructive" strokeWidth={0} aria-hidden />
) : att.kind === "image" ? (
<ImageIcon
className="size-4 shrink-0 text-muted-foreground [&_circle]:fill-none [&_path]:fill-none [&_path]:stroke-current [&_rect]:fill-current [&_rect]:opacity-[0.32]"
strokeWidth={1.5}
aria-hidden
/>
) : (
<File className="size-4 shrink-0 fill-muted-foreground" strokeWidth={0} aria-hidden />
)}
<span className="min-w-0 truncate">{att.name}</span>
{att.drivePath ? (
<HardDrive className="size-3.5 shrink-0 text-primary" aria-label="Dans UltiDrive" />
) : null}
</button>
)
}