Version 0.1.2
Overview
Updated 5 min ago
@m2d/table: Markdown Table formatting plugin for @m2d/core. Renders rich, customizable Word tables with column alignment, borders, cell shading, and repeating headers.
✨ Features
- 📊 Native Word Tables: Converts Markdown GFM tables into clean
docx.Tableelements with authentic Word OpenXML borders and paddings. - 🎯 Automatic Column Alignment: Honors Markdown column alignments (
left,center,right) with fallback defaults. - 🎨 Rich Cell Styling: Style headers and data cells with background fills (
shading), custom typography (fonts, sizes, colors), and paragraph spacing via thedataoption. - 📄 Multi-Page Header Repetition: Automatically repeats header rows across page breaks (
tableHeader: true). - 🧱 Block Content in Cells: Seamlessly accommodates nested paragraphs, lists, code snippets, and blockquotes inside table cells (ideal when paired with
@m2d/html).
📦 Installation
$ pnpm add @m2d/table @m2d/core docxor
$ npm install @m2d/table @m2d/core docxor
$ yarn add @m2d/table @m2d/core docx🚀 Quick Start
import { toDocx } from "@m2d/core";
import { tablePlugin } from "@m2d/table";
import remarkGfm from "remark-gfm";
import remarkParse from "remark-parse";
import { unified } from "unified";
const markdown = `
# Quarterly Summary
| Quarter | Revenue | Growth | Status |
| :------ | :-----: | -----: | :----: |
| Q1 | $1.2M | +12% | Active |
| Q2 | $1.5M | +25% | Active |
| Q3 | $1.8M | +20% | Active |
`;
const mdast = unified().use(remarkParse).use(remarkGfm).parse(markdown);
const docxBlob = await toDocx(mdast, {}, {
plugins: [tablePlugin()],
});⚙️ Plugin Options
import { AlignmentType, ShadingType, VerticalAlignTable } from "docx";
tablePlugin({
// Table level properties (width, margins, borders)
tableProps: { ... },
// General row properties
rowProps: { cantSplit: true },
// First row (header) properties
firstRowProps: { tableHeader: true },
// Header cell styling
firstRowCellProps: {
shading: { type: ShadingType.SOLID, fill: "1E293B" },
data: { bold: true, color: "FFFFFF", alignment: AlignmentType.CENTER },
},
// Body cell styling
cellProps: {
data: { size: 20, font: "Segoe UI" },
},
// Alignment configuration
alignments: {
preferMdData: true,
defaultHorizontalAlign: AlignmentType.LEFT,
defaultVerticalAlign: VerticalAlignTable.CENTER,
},
});📚 Deep Dive Guides
- 🎨 Table Styling & Layout Guide: Margins, border styles, widths, and repeating multi-page headers.
- 🔠 Cell Formatting & Alignment Guide: Markdown alignment hierarchy, typography, cell shading, and block content in cells.
License
This library is licensed under the MIT open-source license.
with 💖 by Mayank Kumar Chaudhari