a3a5a10514
- Workflows UI: full page with definitions/instances tabs, step editor, instance detail with approve/reject - Dedup/Merge UI: duplicate detection, side-by-side comparison, field-level merge dialog, merge history - Import/Export UI: import wizard (dry-run preview), export panel (CSV/XLSX), backend export route added - Print/PDF: PrintButton component, print.css, integrated in Contacts/Calendar/Reports/ContactDetail - Backend: GET /api/v1/export endpoint, export_companies_csv() service function - Routes: /workflows, /contacts/dedup, /import-export registered - Menu items: Workflows, Import/Export, Duplikate added to automation plugin manifest - IMPLEMENTATION_PLAN.md: audit-corrected plan for all 14 remaining features
198 lines
4.0 KiB
CSS
198 lines
4.0 KiB
CSS
/* Print-specific styles for LeoCRM */
|
|
/* Applied via media="print" in index.html */
|
|
|
|
@media print {
|
|
/* ---- Hide non-essential UI elements ---- */
|
|
|
|
/* Sidebars and navigation */
|
|
[data-testid="sidebar"],
|
|
[data-testid="topbar"],
|
|
[data-testid="message-sidebar"],
|
|
[data-testid="ai-sidebar"],
|
|
aside,
|
|
nav[aria-label="Sidebar"],
|
|
nav[aria-label="Main navigation"] {
|
|
display: none !important;
|
|
}
|
|
|
|
/* Elements marked with data-no-print attribute */
|
|
[data-no-print] {
|
|
display: none !important;
|
|
}
|
|
|
|
/* Toolbar, buttons, and action elements */
|
|
[data-testid*="toolbar"],
|
|
[data-testid*="-toolbar"],
|
|
.plugin-toolbar,
|
|
button:not([data-print-keep]),
|
|
.no-print {
|
|
display: none !important;
|
|
}
|
|
|
|
/* ---- Page setup ---- */
|
|
@page {
|
|
margin: 1.5cm;
|
|
}
|
|
|
|
html, body {
|
|
margin: 0 !important;
|
|
padding: 0 !important;
|
|
font-size: 12pt !important;
|
|
color: #000 !important;
|
|
background: #fff !important;
|
|
line-height: 1.4 !important;
|
|
}
|
|
|
|
/* Remove fixed/sticky positioning that breaks print */
|
|
* {
|
|
position: static !important;
|
|
overflow: visible !important;
|
|
}
|
|
|
|
/* Allow content to flow naturally */
|
|
.flex, .flex-col, .flex-1 {
|
|
display: block !important;
|
|
}
|
|
|
|
.overflow-hidden, .overflow-y-auto, .overflow-x-auto {
|
|
overflow: visible !important;
|
|
}
|
|
|
|
.h-full, .min-h-0 {
|
|
height: auto !important;
|
|
min-height: 0 !important;
|
|
}
|
|
|
|
/* ---- Show print-only elements ---- */
|
|
[data-print-only] {
|
|
display: block !important;
|
|
}
|
|
|
|
[data-print-only].inline {
|
|
display: inline !important;
|
|
}
|
|
|
|
/* Print header for documents */
|
|
.print-header {
|
|
display: block !important;
|
|
border-bottom: 2px solid #000;
|
|
padding-bottom: 8px;
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.print-header h1 {
|
|
font-size: 18pt;
|
|
margin: 0 0 4px 0;
|
|
}
|
|
|
|
.print-header .print-date {
|
|
font-size: 10pt;
|
|
color: #666;
|
|
}
|
|
|
|
/* ---- Format tables for print ---- */
|
|
table {
|
|
width: 100% !important;
|
|
border-collapse: collapse !important;
|
|
page-break-inside: auto !important;
|
|
}
|
|
|
|
thead {
|
|
display: table-header-group !important;
|
|
}
|
|
|
|
tr {
|
|
page-break-inside: avoid !important;
|
|
page-break-after: auto !important;
|
|
}
|
|
|
|
th, td {
|
|
border: 1px solid #ccc !important;
|
|
padding: 4px 8px !important;
|
|
font-size: 11pt !important;
|
|
text-align: left !important;
|
|
color: #000 !important;
|
|
}
|
|
|
|
th {
|
|
background: #f5f5f5 !important;
|
|
font-weight: 600 !important;
|
|
}
|
|
|
|
/* ---- Format cards for print ---- */
|
|
.card,
|
|
[class*="rounded-lg"],
|
|
[class*="shadow-sm"] {
|
|
border: 1px solid #ddd !important;
|
|
box-shadow: none !important;
|
|
border-radius: 4px !important;
|
|
margin-bottom: 12px !important;
|
|
padding: 12px !important;
|
|
}
|
|
|
|
/* Background colors to light shades for print readability */
|
|
[class*="bg-white"] {
|
|
background: #fff !important;
|
|
}
|
|
|
|
[class*="bg-secondary-50"],
|
|
[class*="bg-secondary-100"] {
|
|
background: #f9f9f9 !important;
|
|
}
|
|
|
|
[class*="bg-primary-50"],
|
|
[class*="bg-primary-100"] {
|
|
background: #f0f0f0 !important;
|
|
}
|
|
|
|
/* ---- Typography for print ---- */
|
|
h1, h2, h3, h4, h5, h6 {
|
|
page-break-after: avoid !important;
|
|
color: #000 !important;
|
|
}
|
|
|
|
h1 { font-size: 18pt !important; }
|
|
h2 { font-size: 15pt !important; }
|
|
h3 { font-size: 13pt !important; }
|
|
h4 { font-size: 12pt !important; }
|
|
|
|
p, li {
|
|
font-size: 11pt !important;
|
|
color: #000 !important;
|
|
}
|
|
|
|
a {
|
|
color: #000 !important;
|
|
text-decoration: none !important;
|
|
}
|
|
|
|
/* ---- Hide specific interactive elements ---- */
|
|
input[type="search"],
|
|
input[type="text"],
|
|
select,
|
|
textarea {
|
|
border: 1px solid #ccc !important;
|
|
background: #fff !important;
|
|
}
|
|
|
|
/* Images */
|
|
img {
|
|
max-width: 100% !important;
|
|
height: auto !important;
|
|
}
|
|
|
|
/* Avoid page breaks inside critical content */
|
|
[data-testid="contact-detail"],
|
|
[data-testid="reports-content"],
|
|
[data-testid="calendar-view"] {
|
|
page-break-inside: auto !important;
|
|
}
|
|
}
|
|
|
|
/* Screen: hide print-only elements */
|
|
@media screen {
|
|
[data-print-only] {
|
|
display: none !important;
|
|
}
|
|
}
|