Height: sheet height auto-calculated from row count (26px/row + toolbar),
no more cutoff at 21 rows. Row count set to exact (no padding).
Box borders: thick colored outside border + thin inner grid lines.
Content zone: light gray grid lines on all cells.
Headers: bold (bl=1) for is_header rows. Larger font detected via
word_box height comparison (>1.3x median → fs=12 + bold).
Box cells: light tinted background from box_bg_hex.
Header cells in boxes: slightly stronger tint.
Multi-line cells: text wrap enabled (tb='2'), \n preserved.
Bullet points (•) and indentation preserved in cell text.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Each zone becomes its own Excel sheet tab with independent column widths:
- Sheet "Vokabeln": main content zone with EN/DE/example columns
- Sheet "Pounds and euros": Box 1 with its own 4-column layout
- Sheet "German leihen": Box 2 with single column for flowing text
This solves the column-width conflict: boxes have different column
widths optimized for their content, which is impossible in a single
unified sheet (Excel limitation: column width is per-column, not per-cell).
Sheet tabs visible at bottom (showSheetTabs: true).
Box sheets get colored tab (from box_bg_hex).
First sheet active by default.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Install @fortune-sheet/react (MIT, v1.0.4) as Excel-like spreadsheet
component. New SpreadsheetView.tsx converts unified grid data to
Fortune Sheet format (celldata, merge config, column/row sizes).
StepAnsicht now has Spreadsheet/Grid toggle:
- Spreadsheet mode: full Fortune Sheet with toolbar (bold, italic,
color, borders, merge cells, text wrap, undo/redo)
- Grid mode: existing GridTable for quick editing
Box-origin cells get light tinted background in spreadsheet view.
Colspan cells converted to Fortune Sheet merge format.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>