UNPKG

@papernote/ui

Version:

A modern React component library with a paper notebook aesthetic - minimal, professional, and expressive

217 lines (184 loc) 4.65 kB
/** * Spreadsheet Component Styles * * Custom styling for react-spreadsheet to match notebook-ui's paper aesthetic */ /* Container */ .spreadsheet-container { width: 100%; overflow: auto; background-color: #fafaf9; /* paper-50 */ border-radius: 0.5rem; border: 1px solid #e7e5e4; /* stone-200 */ } /* Spreadsheet base */ .notebook-spreadsheet { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-size: 0.875rem; color: #1c1917; /* ink-900 */ } /* Table styling */ .notebook-spreadsheet table { border-collapse: separate; border-spacing: 0; background-color: #ffffff; width: 100%; } /* Cell styling */ .notebook-spreadsheet td { border: 1px solid #e7e5e4; /* stone-200 */ padding: 0; background-color: #ffffff; transition: background-color 0.15s ease; } /* Cell hover */ .notebook-spreadsheet td:hover { background-color: #fafaf9; /* paper-50 */ } /* Selected cell */ .notebook-spreadsheet td.Spreadsheet__active-cell { border: 2px solid #334155; /* primary-700 */ box-shadow: 0 0 0 1px #334155; background-color: #ffffff; z-index: 10; } /* Header cells (row/column labels) */ .notebook-spreadsheet th { background-color: #f5f5f4; /* stone-100 */ color: #57534e; /* ink-600 */ border: 1px solid #e7e5e4; /* stone-200 */ padding: 0.5rem; font-weight: 600; font-size: 0.75rem; text-align: center; position: sticky; z-index: 5; } /* Column headers */ .notebook-spreadsheet thead th { top: 0; z-index: 10; } /* Row headers */ .notebook-spreadsheet tbody th { left: 0; z-index: 5; } /* Corner header (top-left cell) */ .notebook-spreadsheet thead th:first-child { left: 0; z-index: 15; } /* Cell input */ .notebook-spreadsheet .Spreadsheet__data-editor { width: 100%; height: 100%; border: none; outline: none; padding: 0.5rem; font-family: inherit; font-size: inherit; color: inherit; background-color: #ffffff; box-sizing: border-box; } .notebook-spreadsheet .Spreadsheet__data-editor:focus { background-color: #ffffff; border: 2px solid #334155; /* primary-700 */ padding: calc(0.5rem - 1px); } /* Cell with formula indicator */ .notebook-spreadsheet .Spreadsheet__cell--formula { font-style: italic; background-color: #f0fdf4; /* success-50 */ } /* Read-only cells */ .notebook-spreadsheet .Spreadsheet__cell--readonly { background-color: #f5f5f4; /* stone-100 */ color: #78716c; /* ink-500 */ } /* Selection highlight */ .notebook-spreadsheet .Spreadsheet__cell--selected { background-color: #e0f2fe; /* primary-100 */ } /* Cell error state */ .notebook-spreadsheet .Spreadsheet__cell--error { background-color: #fef2f2; /* error-50 */ color: #991b1b; /* error-800 */ } /* Cell value display */ .notebook-spreadsheet .Spreadsheet__value { padding: 0.5rem; min-height: 2rem; display: flex; align-items: center; } /* Number cells - align right */ .notebook-spreadsheet .Spreadsheet__cell--number .Spreadsheet__value { justify-content: flex-end; font-variant-numeric: tabular-nums; } /* Empty cells */ .notebook-spreadsheet .Spreadsheet__cell--empty .Spreadsheet__value { color: #a8a29e; /* ink-400 */ } /* Copy/paste indicator */ .notebook-spreadsheet .Spreadsheet__floating-rect { border: 2px dashed #334155; /* primary-700 */ background-color: rgba(51, 65, 85, 0.1); pointer-events: none; } /* Scrollbar styling for webkit browsers */ .spreadsheet-container::-webkit-scrollbar { width: 12px; height: 12px; } .spreadsheet-container::-webkit-scrollbar-track { background-color: #fafaf9; /* paper-50 */ border-radius: 0.5rem; } .spreadsheet-container::-webkit-scrollbar-thumb { background-color: #d6d3d1; /* stone-300 */ border-radius: 0.5rem; border: 2px solid #fafaf9; } .spreadsheet-container::-webkit-scrollbar-thumb:hover { background-color: #a8a29e; /* ink-400 */ } /* Loading state */ .spreadsheet-container.loading { opacity: 0.6; pointer-events: none; } /* Responsive adjustments */ @media (max-width: 768px) { .notebook-spreadsheet { font-size: 0.75rem; } .notebook-spreadsheet .Spreadsheet__value { padding: 0.375rem; min-height: 1.75rem; } .notebook-spreadsheet .Spreadsheet__data-editor { padding: 0.375rem; } .notebook-spreadsheet th { padding: 0.375rem; font-size: 0.6875rem; } } /* Print styles */ @media print { .spreadsheet-container { border: none; overflow: visible; } .notebook-spreadsheet td, .notebook-spreadsheet th { border-color: #000; } .notebook-spreadsheet .Spreadsheet__active-cell { border: 1px solid #000; box-shadow: none; } }