<!-- SECTION:CUSTOM_INTRO -->

## 🎯 Overview

The **marked-extended-kanban** extension transforms your Markdown into interactive Kanban boards for project management and task tracking. With three flexible view modes, customizable columns, color-coding, and tag support, it's perfect for project documentation, sprint planning, team workflows, and progress tracking directly in your Markdown documents.

### ✨ Key Features

- 📋 **Three View Modes**: Board (Kanban), Table (data), and List (mobile-friendly)
- 🎨 **Customizable Columns**: Multiple columns with custom labels and colors
- 🏷️ **Task Tagging**: Hashtag-based task categorization and filtering
- 📝 **Rich Task Content**: Title, description, and multiple tags per task
- 🔄 **Instant View Switching**: Toggle between views without reload
- 🎯 **Task Count Badges**: Automatic task counting per column
- 📱 **Responsive Design**: Adapts to all screen sizes
- 🌈 **Color Coding**: Visual differentiation with custom column colors
- ♿ **Accessible**: Semantic HTML with proper structure
- 🎨 **Fully Customizable**: Override styles and templates
- 🔧 **Framework Agnostic**: Works with React, Vue, Angular, Svelte, and vanilla JS
- ⚡ **Lightweight**: Minimal overhead with efficient rendering

### 🎪 Live Demo

Experience all view modes in action: [View Demo](https://fsegurai.github.io/marked-extensions)

---

<!-- SECTION:CUSTOM_TOC_USAGE -->

	- [Quick Start](#quick-start)
	- [Syntax & Usage](#syntax--usage)
	- [View Modes](#view-modes)
	- [Column Configuration](#column-configuration)
	- [Task Format](#task-format)
	- [Configuration Options](#configuration-options)
	- [Use Cases](#use-cases)
	- [Aliases](#aliases)

<!-- SECTION:CUSTOM_BASIC_USAGE -->

## Quick Start

### Basic Syntax

**`kanban` is the identifier for the board container, and `column` for individual status columns.**

```markdown
::::kanban{view="board"}

:::column{label="To Do" color="#e74c3c"}
- Task title
  Task description
  #tag1 #tag2
:::columnend

:::column{label="In Progress" color="#f39c12"}
- Another task
  Working on this
  #development
:::columnend

:::column{label="Done" color="#27ae60"}
- Completed task
  All done!
  #completed
:::columnend

::::kanbanend
```

<!-- SECTION:CUSTOM_USAGE_EXAMPLE -->

### Installation

Install the package using your preferred package manager:

```bash
# Using Bun (recommended)
bun add @fsegurai/marked-extended-kanban

# Using npm
npm install @fsegurai/marked-extended-kanban

# Using yarn
yarn add @fsegurai/marked-extended-kanban

# Using pnpm
pnpm add @fsegurai/marked-extended-kanban
```

### Basic Implementation

```javascript
import { marked } from 'marked';
import markedExtendedKanban from '@fsegurai/marked-extended-kanban';

// Import styles (required for functionality)
import '@fsegurai/marked-extended-kanban/styles/kanban.css';
// Optional: Import theme for styled appearance
import '@fsegurai/marked-extended-kanban/styles/kanban-theme.css';

// Register the extension
marked.use(markedExtendedKanban());

// Your markdown content with kanban board
const markdown = `
# Project Sprint Board

::::kanban{view="board"}

:::column{label="📋 Backlog" color="#95a5a6"}
- User authentication
  Implement OAuth 2.0
  #backend #security #high-priority

- Mobile app
  Develop mobile version
  #mobile #future
:::columnend

:::column{label="🔨 To Do" color="#3498db"}
- API endpoints
  Create REST API
  #backend #api

- Database schema
  Design and implement
  #backend #database
:::columnend

:::column{label="⚙️ In Progress" color="#f39c12"}
- Frontend dashboard
  Building React components
  #frontend #react #wip

- Unit tests
  Writing test cases
  #testing #quality
:::columnend

:::column{label="✅ Done" color="#27ae60"}
- Project setup
  Repository and CI/CD configured
  #devops #completed

- Design mockups
  UI/UX designs approved
  #design #completed
:::columnend

::::kanbanend
`;

// Parse and render
const html = marked.parse(markdown);
console.log(html);
```

### Syntax & Usage

#### Basic Board Structure

```markdown
::::kanban{view="board"}

:::column{label="Column Name" color="#hexcolor"}
- Task 1
- Task 2
:::columnend

:::column{label="Another Column"}
- Task 3
:::columnend

::::kanbanend
```

#### Complete Task Format

```markdown
- Task title (first line - required)
  Task description (optional, can be multiple lines)
  More description if needed
  #tag1 #tag2 #tag3 (hashtags for categorization)
```

#### Multiple Columns Example

```markdown
::::kanban{view="board"}

:::column{label="Backlog" color="#95a5a6"}
- Research phase
  Initial research and planning
  #research #planning

- Requirements gathering
  Document all requirements
  #documentation
:::columnend

:::column{label="Design" color="#9b59b6"}
- Wireframes
  Create low-fidelity wireframes
  #design #ux

- Mockups
  High-fidelity designs
  #design #ui
:::columnend

:::column{label="Development" color="#3498db"}
- Backend API
  Implement REST endpoints
  #backend #api

- Frontend UI
  Build React components
  #frontend #react
:::columnend

:::column{label="Testing" color="#f39c12"}
- Unit tests
  Write component tests
  #testing #unit

- Integration tests
  E2E testing
  #testing #e2e
:::columnend

:::column{label="Deployment" color="#27ae60"}
- Staging deploy
  Deploy to staging environment
  #devops #staging

- Production release
  Final production deployment
  #devops #production #complete
:::columnend

::::kanbanend
```

#### Table View Example

For data-focused analysis:

```markdown
::::kanban{view="table"}

:::column{label="Status"}
- Feature A
  Core functionality
  #feature #v1.0

- Bug fix
  Critical issue
  #bug #urgent
:::columnend

:::column{label="Completed"}
- Setup
  Initial configuration
  #setup #done
:::columnend

::::kanbanend
```

#### List View Example

Mobile-friendly vertical layout:

```markdown
::::kanban{view="list"}

:::column{label="Tasks"}
- Task 1
  Description
  #tag

- Task 2
  Another description
  #tag
:::columnend

::::kanbanend
```

<!-- SECTION:CUSTOM_USAGE_NOTES -->

### Styling Your Kanban Boards

This extension injects minimal structural CSS for layout and view mode switching. Visual styling is completely
separated, allowing you to match your design system.

#### Generated HTML Structure

**Board View:**

```html

<div class="marked-extended-kanban" data-view-mode="board">
    <div class="marked-extended-kanban-view-switcher">
        <button class="marked-extended-kanban-view-button active" data-view="board">Board</button>
        <button class="marked-extended-kanban-view-button" data-view="table">Table</button>
        <button class="marked-extended-kanban-view-button" data-view="list">List</button>
    </div>
    <div class="marked-extended-kanban-container">
        <div class="marked-extended-kanban-column">
            <div class="marked-extended-kanban-column-header">
                <h3 class="marked-extended-kanban-column-title">To Do</h3>
                <span class="marked-extended-kanban-column-count">2</span>
            </div>
            <div class="marked-extended-kanban-column-tasks">
                <div class="marked-extended-kanban-task">
                    <h4 class="marked-extended-kanban-task-title">Task Title</h4>
                    <p class="marked-extended-kanban-task-description">Description</p>
                    <div class="marked-extended-kanban-task-tags">
                        <span class="marked-extended-kanban-task-tag">feature</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
```

#### CSS Classes Reference

| Class                                             | Purpose                  | View Mode |
|---------------------------------------------------|--------------------------|-----------|
| `.marked-extended-kanban`                         | Root container           | All       |
| `.marked-extended-kanban[data-view-mode="board"]` | Board view state         | Board     |
| `.marked-extended-kanban[data-view-mode="table"]` | Table view state         | Table     |
| `.marked-extended-kanban[data-view-mode="list"]`  | List view state          | List      |
| `.marked-extended-kanban-view-switcher`           | View mode toggle buttons | All       |
| `.marked-extended-kanban-view-button`             | Individual view button   | All       |
| `.marked-extended-kanban-view-button.active`      | Active view button       | All       |
| `.marked-extended-kanban-container`               | Main content container   | All       |
| `.marked-extended-kanban-column`                  | Column wrapper (board)   | Board     |
| `.marked-extended-kanban-column-header`           | Column header area       | Board     |
| `.marked-extended-kanban-column-title`            | Column title             | Board     |
| `.marked-extended-kanban-column-count`            | Task count badge         | Board     |
| `.marked-extended-kanban-task`                    | Individual task card     | All       |
| `.marked-extended-kanban-task-title`              | Task title               | All       |
| `.marked-extended-kanban-task-description`        | Task description         | All       |
| `.marked-extended-kanban-task-tag`                | Task tags/labels         | All       |
| `.marked-extended-kanban-table`                   | Table element            | Table     |

#### Complete Styling Example

```css
/* View Switcher */
.marked-extended-kanban-view-switcher {
    display: flex;
    gap: 0.5rem;
    margin-bottom: 1rem;
    padding: 0.5rem;
    background: #f5f5f5;
    border-radius: 8px;
    border: 1px solid #e0e0e0;
}

.marked-extended-kanban-view-button {
    padding: 0.5rem 1rem;
    border: none;
    background: transparent;
    border-radius: 4px;
    cursor: pointer;
    font-weight: 500;
    color: #666;
    transition: all 0.2s ease;
}

.marked-extended-kanban-view-button.active {
    background: #0066cc;
    color: white;
}

.marked-extended-kanban-view-button:hover:not(.active) {
    background: #e8e8e8;
}

/* Board View - Columns */
.marked-extended-kanban[data-view-mode="board"] .marked-extended-kanban-container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1rem;
}

.marked-extended-kanban-column {
    background: #fafafa;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    padding: 1rem;
}

.marked-extended-kanban-column-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1rem;
    padding-bottom: 0.75rem;
    border-bottom: 3px solid #0066cc;
}

.marked-extended-kanban-column-title {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 700;
    color: #333;
}

.marked-extended-kanban-column-count {
    background: #e8e8e8;
    color: #666;
    padding: 0.25rem 0.5rem;
    border-radius: 12px;
    font-size: 0.875rem;
    font-weight: 600;
}

/* Task Cards */
.marked-extended-kanban-task {
    background: white;
    border: 1px solid #e0e0e0;
    border-left: 4px solid #0066cc;
    border-radius: 6px;
    padding: 1rem;
    margin-bottom: 0.75rem;
    transition: all 0.2s ease;
    cursor: pointer;
}

.marked-extended-kanban-task:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
}

.marked-extended-kanban-task-title {
    margin: 0 0 0.5rem 0;
    font-size: 1rem;
    font-weight: 600;
    color: #333;
}

.marked-extended-kanban-task-description {
    margin: 0 0 0.75rem 0;
    font-size: 0.875rem;
    color: #666;
    line-height: 1.5;
}

.marked-extended-kanban-task-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.marked-extended-kanban-task-tag {
    background: #f0f0f0;
    color: #333;
    padding: 0.25rem 0.625rem;
    border-radius: 4px;
    font-size: 0.75rem;
    font-weight: 500;
    border: 1px solid #ddd;
}

/* Table View */
.marked-extended-kanban[data-view-mode="table"] .marked-extended-kanban-container {
    overflow-x: auto;
}

.marked-extended-kanban-table {
    width: 100%;
    border-collapse: collapse;
    background: white;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    overflow: hidden;
}

.marked-extended-kanban-table thead {
    background: #f5f5f5;
}

.marked-extended-kanban-table th {
    padding: 1rem;
    text-align: left;
    font-weight: 600;
    color: #333;
    border-bottom: 2px solid #e0e0e0;
}

.marked-extended-kanban-table td {
    padding: 1rem;
    border-bottom: 1px solid #f0f0f0;
}

.marked-extended-kanban-table tbody tr:hover {
    background: #fafafa;
}

/* List View */
.marked-extended-kanban[data-view-mode="list"] .marked-extended-kanban-task {
    border-left: 3px solid #0066cc;
    margin-bottom: 1rem;
}
```

#### Dark Mode Support

```css
/* Dark theme for board view */
body.dark .marked-extended-kanban-view-switcher {
    background: #1c2128;
    border-color: #444c56;
}

body.dark .marked-extended-kanban-view-button {
    color: #d1d5da;
}

body.dark .marked-extended-kanban-view-button.active {
    background: #58a6ff;
    color: white;
}

body.dark .marked-extended-kanban-column {
    background: #22272e;
    border-color: #444c56;
}

body.dark .marked-extended-kanban-task {
    background: #2d333b;
    border-color: #444c56;
    color: #d1d5da;
}

body.dark .marked-extended-kanban-task:hover {
    background: #343b45;
}

/* Dark theme for table view */
body.dark .marked-extended-kanban-table {
    background: #2d333b;
    border-color: #444c56;
}

body.dark .marked-extended-kanban-table th {
    background: #1c2128;
    color: #d1d5da;
}

body.dark .marked-extended-kanban-table td {
    color: #d1d5da;
    border-bottom-color: #444c56;
}
```

#### Column Color Customization

Each column can have custom colors via border-left:

```css
.marked-extended-kanban-column:nth-child(1) .marked-extended-kanban-task {
    border-left-color: #0969da; /* Blue for To Do */
}

.marked-extended-kanban-column:nth-child(2) .marked-extended-kanban-task {
    border-left-color: #c69026; /* Yellow for In Progress */
}

.marked-extended-kanban-column:nth-child(3) .marked-extended-kanban-task {
    border-left-color: #1a7f37; /* Green for Done */
}
```

#### Copy Demo Theme

For complete styling with all 3 view
modes: [kanban-theme.css](https://github.com/fsegurai/marked-extensions/blob/main/demo/styles/extensions/kanban-theme.css)

Check the [demo](https://fsegurai.github.io/marked-extensions) to see all view modes in action.

<!-- SECTION:CUSTOM_SECTIONS -->

### Aliases

The `kanban` and `column` blocks can be rendered using alternative aliases:

* Kanban Aliases
    - `::::kanban` (start) - 4 colons (default)
    - `:::kanban` (start) - 3 colons (alternative)
    - `:kanban` (start) - 1 colon (short)
    - `:kbn` (start) - 1 colon (shortest)
    - `::::kanbanend` (end) - 4 colons (default)
    - `:::kanbanend` (end) - 3 colons (alternative)
    - `:kanbanend` (end) - 1 colon (short)
    - `:kbnend` (end) - 1 colon (shortest)
* Column Aliases
    - `:::column` (start) - 3 colons (default)
    - `:column` (start) - 1 colon (short)
    - `:col` (start) - 1 colon (shortest)
    - `:::columnend` (end) - 3 colons (default)
    - `:columnend` (end) - 1 colon (short)
    - `:colend` (end) - 1 colon (shortest)

### Configuration Options

The marked-extended-kanban extension accepts the following configuration options:

- `className`: The base CSS class name for kanban boards. Defaults to 'marked-extended-kanban.'
- `prefixId`: The prefix ID for kanban elements. Defaults to 'kanban-'.
- `template`: A custom template for the kanban HTML. Defaults to the built-in template.
- `customizeToken`: A function that allows you to customize the token object. Defaults to null.

**Note:** For styling, import CSS/SCSS files manually (see [Importing Styles](#importing-styles)).

Kanban syntax parameters:

- `view`: The view mode for the kanban board ("board", "table", or "list"). Defaults to "board."

Column syntax parameters:

- `label`: The label/title for the column. Defaults to 'Column.'
- `color`: The header color for the column (hex, rgb, or color name). Defaults to '#3498db.'

Task formatting:

- First line: Task title (required)
- Following lines: Task description (optional)
- `#tags`: Hashtags for categorization (optional)

### View Modes

The extension supports three distinct view modes optimized for different use cases:

#### Board View (Default)

Traditional Kanban board with horizontal columns - best for visual task management:

```markdown
::::kanban{view="board"}
:::column{label="To Do"}
- Task 1
:::columnend
:::column{label="Done"}
- Task 2
:::columnend
::::kanbanend
```

**Best for:**
- ✅ Sprint planning and tracking
- ✅ Visual workflow management
- ✅ Team stand-ups
- ✅ Project status overview

**Features:**
- Horizontal column layout
- Drag-drop ready structure
- Visual task cards
- Color-coded columns

#### Table View

Compact tabular format - best for data analysis and reporting:

```markdown
::::kanban{view="table"}
:::column{label="Status"}
- Item 1
  Details
  #tag
:::columnend
::::kanbanend
```

**Best for:**
- ✅ Status reports
- ✅ Data analysis
- ✅ Compact overviews
- ✅ Printing/export

**Features:**
- Compact row-based layout
- Easy scanning
- Sortable columns (with JS)
- Print-friendly

#### List View

Vertical stacked layout - best for mobile and simple task lists:

```markdown
::::kanban{view="list"}
:::column{label="Tasks"}
- Task 1
- Task 2
:::columnend
::::kanbanend
```

**Best for:**
- ✅ Mobile devices
- ✅ Simple task lists
- ✅ Sequential workflows
- ✅ Limited screen space

**Features:**
- Vertical stacking
- Mobile-optimized
- Easy scrolling
- Minimal horizontal space

### Column Configuration

Columns are the core organizational units of your Kanban board:

#### Column Properties

| Property | Type     | Required | Description                    | Example              |
|----------|----------|----------|--------------------------------|----------------------|
| `label`  | `string` | ✅ Yes    | Column title/name              | `"In Progress"`      |
| `color`  | `string` | ❌ No     | Header accent color            | `"#f39c12"`          |

#### Column Examples

**Basic Column:**
```markdown
:::column{label="To Do"}
- Task 1
:::columnend
```

**Column with Color:**
```markdown
:::column{label="In Progress" color="#f39c12"}
- Task in progress
:::columnend
```

**Emoji in Labels:**
```markdown
:::column{label="🚀 Launched" color="#27ae60"}
- Feature released
:::columnend
```

**Multiple Status Columns:**
```markdown
::::kanban{view="board"}

:::column{label="📥 Backlog" color="#95a5a6"}
- Future work
:::columnend

:::column{label="📋 To Do" color="#3498db"}
- Ready to start
:::columnend

:::column{label="⚙️ In Progress" color="#f39c12"}
- Currently working
:::columnend

:::column{label="🔍 Review" color="#9b59b6"}
- Needs review
:::columnend

:::column{label="✅ Done" color="#27ae60"}
- Completed
:::columnend

::::kanbanend
```

### Task Format

Tasks are represented as list items with optional descriptions and tags:

#### Task Structure

```markdown
- Task Title (Line 1 - Required)
  Task description line 1 (Optional)
  Task description line 2 (Optional)
  #tag1 #tag2 #tag3 (Optional hashtags)
```

#### Task Examples

**Minimal Task:**
```markdown
- Write documentation
```

**Task with Description:**
```markdown
- Write documentation
  Complete API reference guide
```

**Task with Tags:**
```markdown
- Write documentation
  #docs #urgent
```

**Complete Task:**
```markdown
- Write API documentation
  Complete reference guide for v2.0
  Include code examples and error codes
  #documentation #api #v2.0 #high-priority
```

**Multiple Tasks:**
```markdown
:::column{label="Development"}
- Implement authentication
  OAuth 2.0 with PKCE
  #backend #security

- Design database schema
  PostgreSQL with migrations
  #backend #database

- Create REST endpoints
  CRUD operations for users
  #backend #api
:::columnend
```

#### Task Formatting Best Practices

**Title:**
- Keep concise (< 60 characters)
- Use action verbs (Implement, Design, Fix, Test)
- Be specific

**Description:**
- Provide context
- Include acceptance criteria
- Link to related issues/docs
- 2-3 lines maximum

**Tags:**
- Use consistent tag names
- Limit to 3-5 tags per task
- Common patterns:
  - Priority: `#high-priority`, `#low-priority`
  - Type: `#feature`, `#bug`, `#enhancement`
  - Area: `#frontend`, `#backend`, `#design`
  - Status: `#blocked`, `#in-review`, `#urgent`

### Configuration Options & Examples

#### Available Options

```javascript
marked.use(markedExtendedKanban({
  className: 'marked-extended-kanban',  // Base CSS class
  defaultView: 'board',                  // Default view mode
  showTaskCount: true,                   // Show task count badges
  template: null,                        // Custom HTML template
  customizeToken: null                   // Token customization function
}));
```

#### Configuration Examples

**Custom Default View:**
```javascript
// Start with table view
marked.use(markedExtendedKanban({
  defaultView: 'table'
}));
```

**Custom Class Name:**
```javascript
// Use custom CSS classes
marked.use(markedExtendedKanban({
  className: 'my-kanban-board'
}));
```

**Hide Task Count:**
```javascript
// Don't show task count badges
marked.use(markedExtendedKanban({
  showTaskCount: false
}));
```

**Token Customization:**
```javascript
// Modify tokens before rendering
marked.use(markedExtendedKanban({
  customizeToken: (token) => {
    // Add custom ID
    token.meta.kanbanId = `board-${Date.now()}`;
    
    // Log for debugging
    console.log('Kanban token:', token);
  }
}));
```

### Best Practices

#### 1. **Limit Columns (3-6)**

```markdown
<!-- Good: 5 manageable columns -->
::::kanban{view="board"}
:::column{label="Backlog"}:::columnend
:::column{label="To Do"}:::columnend
:::column{label="In Progress"}:::columnend
:::column{label="Review"}:::columnend
:::column{label="Done"}:::columnend
::::kanbanend

<!-- Avoid: Too many columns -->
::::kanban{view="board"}
<!-- 10+ columns makes it hard to view -->
::::kanbanend
```

#### 2. **Use Descriptive Labels**

```markdown
<!-- Good: Clear, descriptive labels -->
:::column{label="🔨 Ready for Development" color="#3498db"}
:::column{label="✅ Deployed to Production" color="#27ae60"}

<!-- Avoid: Vague labels -->
:::column{label="Stuff"}
:::column{label="Things"}
```

#### 3. **Apply Consistent Colors**

```markdown
<!-- Good: Consistent color scheme -->
:::column{label="Not Started" color="#95a5a6"}   <!-- Gray -->
:::column{label="In Progress" color="#3498db"}   <!-- Blue -->
:::column{label="Blocked" color="#e74c3c"}       <!-- Red -->
:::column{label="Complete" color="#27ae60"}      <!-- Green -->
```

#### 4. **Keep Task Descriptions Concise**

```markdown
<!-- Good: Concise description -->
- Implement OAuth
  Add OAuth 2.0 authentication
  #backend #security

<!-- Avoid: Overly verbose -->
- Implement OAuth
  We need to implement OAuth 2.0 authentication following the 
  RFC 6749 specification with support for authorization code flow,
  implicit flow, and client credentials flow. We should also consider
  PKCE for mobile clients and ensure proper token refresh handling...
  (continues for many more lines)
```

#### 5. **Use Consistent Tagging**

```markdown
<!-- Good: Consistent tag scheme -->
#backend #frontend #design
#bug #feature #enhancement
#high-priority #low-priority
#v1.0 #v2.0

<!-- Avoid: Inconsistent tags -->
#back-end #BackEnd #BE
#critical #URGENT #high #important
```

#### 6. **Choose Appropriate View Mode**

```markdown
<!-- Board view for visual workflow -->
::::kanban{view="board"}
Multiple columns with visual cards
::::kanbanend

<!-- Table view for status reports -->
::::kanban{view="table"}
Compact data for analysis
::::kanbanend

<!-- List view for mobile or simple lists -->
::::kanban{view="list"}
Vertical stacked tasks
::::kanbanend
```

#### 7. **Group Related Tasks**

```markdown
:::column{label="Frontend Work"}
- Login page
  #frontend #ui

- Dashboard
  #frontend #ui

- User profile
  #frontend #ui
:::columnend
```

### Use Cases

#### 1. **Sprint Planning Board**

```markdown
# Sprint 23 - February 2026

::::kanban{view="board"}

:::column{label="📋 Sprint Backlog" color="#95a5a6"}
- User story mapping
  Define user journeys for new feature
  #planning #ux

- Technical debt review
  Identify areas for refactoring
  #technical-debt #planning
:::columnend

:::column{label="🎯 This Sprint" color="#3498db"}
- OAuth implementation
  Implement OAuth 2.0 with PKCE
  #backend #security #8-points

- Dashboard redesign
  Update dashboard with new design system
  #frontend #design #5-points

- API rate limiting
  Implement rate limiting middleware
  #backend #api #3-points
:::columnend

:::column{label="🔨 In Development" color="#f39c12"}
- User authentication
  OAuth integration in progress
  #backend #security #wip

- Unit tests for API
  Writing test coverage
  #testing #backend #wip
:::columnend

:::column{label="🔍 Code Review" color="#9b59b6"}
- Password reset flow
  Awaiting security review
  #backend #security #review

- Mobile navigation
  UI review requested
  #frontend #mobile #review
:::columnend

:::column{label="✅ Sprint Complete" color="#27ae60"}
- CI/CD pipeline
  GitHub Actions configured
  #devops #completed #2-points

- Database migrations
  All migrations tested
  #backend #database #completed #3-points
:::columnend

::::kanbanend

**Sprint Goal:** Implement secure authentication system
**Team Capacity:** 40 story points
**Sprint Dates:** Feb 10 - Feb 24, 2026
```

#### 2. **Bug Tracking Board**

```markdown
# Bug Tracking Dashboard

::::kanban{view="board"}

:::column{label="🐛 New Bugs" color="#e74c3c"}
- Login fails on iOS
  Users cannot login on Safari iOS
  #bug #critical #ios

- Memory leak in dashboard
  Dashboard slows down after 10 minutes
  #bug #performance #high

- Incorrect date format
  Dates showing in wrong timezone
  #bug #i18n #medium
:::columnend

:::column{label="🔍 Investigating" color="#e67e22"}
- Payment processing errors
  Investigating Stripe webhook issues
  #bug #critical #payment

- Email notifications delayed
  Queue processing investigation
  #bug #medium #notifications
:::columnend

:::column{label="🔧 Fixing" color="#f39c12"}
- API timeout issues
  Optimizing database queries
  #bug #performance #backend

- CSS alignment bug
  Fixing layout on mobile
  #bug #frontend #css
:::columnend

:::column{label="✔️ Testing" color="#3498db"}
- Registration validation
  Testing edge cases
  #bug #qa #frontend

- File upload limits
  Verifying size restrictions
  #bug #qa #backend
:::columnend

:::column{label="✅ Fixed" color="#27ae60"}
- Login redirect loop
  Fixed OAuth state handling
  #bug #fixed #v2.1.3

- Broken image URLs
  Updated CDN configuration
  #bug #fixed #v2.1.3
:::columnend

::::kanbanend

**Critical:** 2 bugs
**High Priority:** 1 bug
**Target Release:** v2.1.4
```

#### 3. **Content Creation Pipeline**

```markdown
# Blog Content Pipeline - Q1 2026

::::kanban{view="board"}

:::column{label="💡 Ideas" color="#9b59b6"}
- AI in healthcare
  Exploring AI applications
  #idea #ai #healthcare

- Microservices patterns
  Common architecture patterns
  #idea #architecture #backend

- TypeScript best practices
  Advanced TypeScript techniques
  #idea #typescript #tutorial
:::columnend

:::column{label="📝 Drafting" color="#3498db"}
- React Server Components
  Deep dive into RSC
  #writing #react #frontend

- Database indexing strategies
  Performance optimization guide
  #writing #database #performance
:::columnend

:::column{label="✏️ Editing" color="#f39c12"}
- API design principles
  RESTful API best practices
  #editing #api #review

- Docker optimization
  Container size reduction tips
  #editing #docker #devops
:::columnend

:::column{label="🎨 Graphics" color="#e67e22"}
- Authentication flow diagrams
  Visual OAuth 2.0 flow
  #graphics #security #design

- Architecture diagrams
  System architecture visuals
  #graphics #architecture #design
:::columnend

:::column{label="📢 Published" color="#27ae60"}
- Getting started with Bun
  Introduction to Bun runtime
  #published #bun #tutorial #1500-views

- WebSocket real-time apps
  Building chat with WebSockets
  #published #websocket #tutorial #2300-views
:::columnend

::::kanbanend

**This Quarter:** 12 articles
**Published:** 8 articles
**In Progress:** 4 articles
```

#### 4. **Product Roadmap**

```markdown
# Product Roadmap 2026

::::kanban{view="table"}

:::column{label="Q1 2026" color="#3498db"}
- Mobile app launch
  iOS and Android apps
  #product #mobile #q1

- API v2.0 release
  New REST API version
  #product #api #q1

- SSO integration
  Enterprise SSO support
  #product #enterprise #q1
:::columnend

:::column{label="Q2 2026" color="#f39c12"}
- Advanced analytics
  Custom dashboards and reports
  #product #analytics #q2

- Webhook system
  Event-driven integrations
  #product #integrations #q2

- Multi-language support
  i18n for 10 languages
  #product #i18n #q2
:::columnend

:::column{label="Q3 2026" color="#e67e22"}
- AI-powered features
  Smart recommendations
  #product #ai #q3

- Real-time collaboration
  Collaborative editing
  #product #collaboration #q3
:::columnend

:::column{label="Q4 2026" color="#9b59b6"}
- Enterprise features
  Advanced security and compliance
  #product #enterprise #q4

- Performance optimization
  Speed improvements
  #product #performance #q4
:::columnend

::::kanbanend
```

#### 5. **Team Onboarding Checklist**

```markdown
# New Developer Onboarding

::::kanban{view="list"}

:::column{label="✅ Day 1 Tasks"}
- Complete HR paperwork
  Sign all required documents
  #onboarding #hr

- Get access credentials
  Email, Slack, GitHub, AWS
  #onboarding #access

- Setup development environment
  Install IDE, Docker, Node.js
  #onboarding #setup

- Meet the team
  Introduction session
  #onboarding #team
:::columnend

:::column{label="📚 Week 1 Training"}
- Review codebase architecture
  Understand system design
  #training #architecture

- Complete security training
  Security policies and practices
  #training #security

- Setup local development
  Clone repos and run locally
  #training #development

- First PR submission
  Fix a good-first-issue
  #training #coding
:::columnend

:::column{label="🚀 Month 1 Goals"}
- Ship first feature
  Complete assigned user story
  #goal #development

- Participate in code reviews
  Review 10+ pull requests
  #goal #collaboration

- Learn deployment process
  Shadow a production deploy
  #goal #devops

- Present at team meeting
  Share learnings with team
  #goal #presentation
:::columnend

::::kanbanend

**Buddy:** Senior Developer
**Manager:** Engineering Lead
**Check-in Schedule:** Weekly
```

### Troubleshooting

#### View Switcher Not Working

**Problem**: Clicking view buttons doesn't change the view.

**Solutions**:

1. **Import JavaScript functionality:**
```javascript
// Ensure styles are imported (they include inline scripts)
import '@fsegurai/marked-extended-kanban/styles/kanban.css';
```

2. **Check for CSP restrictions:**
```html
<!-- Add to allow inline scripts -->
<meta http-equiv="Content-Security-Policy" 
      content="script-src 'self' 'unsafe-inline'">
```

3. **Manual view switching with JavaScript:**
```javascript
function switchKanbanView(kanbanId, view) {
  const board = document.getElementById(kanbanId);
  if (!board) return;
  
  board.setAttribute('data-view-mode', view);
  const container = board.querySelector('.marked-extended-kanban-container');
  const viewsData = document.getElementById(`${kanbanId}-views`);
  
  if (container && viewsData) {
    const views = JSON.parse(viewsData.textContent);
    container.innerHTML = views[view];
  }
  
  // Update active button
  board.querySelectorAll('.marked-extended-kanban-view-button').forEach(btn => {
    btn.classList.remove('active');
  });
  board.querySelector(`[data-view="${view}"]`)?.classList.add('active');
}
```

#### Tasks Not Displaying

**Problem**: Tasks don't appear in columns.

**Solutions**:

1. **Check list formatting:**
```markdown
<!-- Correct: Hyphen + space -->
- Task title
  Description
  #tag

<!-- Wrong: Missing space -->
-Task title  <!-- ❌ -->
```

2. **Verify indentation for descriptions:**
```markdown
- Task title
  Description must be indented (2 spaces)
  #tags also indented
```

3. **Check for empty columns:**
```markdown
<!-- Avoid empty columns -->
:::column{label="Empty"}
:::columnend  <!-- No tasks -->
```

#### Column Colors Not Showing

**Problem**: Custom column colors don't apply.

**Solutions**:

1. **Import theme CSS:**
```javascript
import '@fsegurai/marked-extended-kanban/styles/kanban-theme.css';
```

2. **Use valid color formats:**
```markdown
<!-- Valid formats -->
color="#3498db"      <!-- Hex -->
color="rgb(52, 152, 219)"  <!-- RGB -->
color="blue"         <!-- Named color -->

<!-- Invalid -->
color="3498db"  <!-- ❌ Missing # -->
```

3. **Custom CSS for column colors:**
```css
.marked-extended-kanban-column:nth-child(1) .marked-extended-kanban-column-header {
  border-bottom-color: #e74c3c;
}
```

#### Mobile Display Issues

**Problem**: Board doesn't display well on mobile.

**Solution**:
```markdown
<!-- Use list view for mobile -->
::::kanban{view="list"}
<!-- Tasks display vertically -->
::::kanbanend
```

Or with CSS:
```css
@media (max-width: 768px) {
  .marked-extended-kanban[data-view-mode="board"] .marked-extended-kanban-container {
    grid-template-columns: 1fr;
  }
}
```

#### Tags Not Rendering

**Problem**: Hashtags don't appear as tags.

**Solutions**:

1. **Ensure proper format:**
```markdown
- Task title
  Description
  #tag1 #tag2  <!-- Space between tags -->
```

2. **Check CSS is loaded:**
```javascript
import '@fsegurai/marked-extended-kanban/styles/kanban-theme.css';
```

### Framework Integration

#### React Integration

```tsx
// KanbanBoard.tsx
import { marked } from 'marked';
import markedExtendedKanban from '@fsegurai/marked-extended-kanban';
import '@fsegurai/marked-extended-kanban/styles/kanban.css';
import '@fsegurai/marked-extended-kanban/styles/kanban-theme.css';
import { useEffect, useState } from 'react';

// Configure marked
marked.use(markedExtendedKanban({
  defaultView: 'board',
  showTaskCount: true
}));

interface Props {
  content: string;
  defaultView?: 'board' | 'table' | 'list';
}

export function KanbanBoard({ content, defaultView = 'board' }: Props) {
  const [html, setHtml] = useState('');
  
  useEffect(() => {
    marked.use(markedExtendedKanban({
      defaultView,
      showTaskCount: true
    }));
    
    const parsed = marked.parse(content);
    setHtml(parsed);
  }, [content, defaultView]);
  
  return (
    <div 
      className="kanban-container"
      dangerouslySetInnerHTML={{ __html: html }} 
    />
  );
}

// Usage:
// <KanbanBoard content={sprintBoard} defaultView="board" />
```

#### Vue 3 Integration

```vue
<script setup lang="ts">
import { marked } from 'marked';
import markedExtendedKanban from '@fsegurai/marked-extended-kanban';
import '@fsegurai/marked-extended-kanban/styles/kanban.css';
import '@fsegurai/marked-extended-kanban/styles/kanban-theme.css';
import { computed } from 'vue';

marked.use(markedExtendedKanban({
  defaultView: 'board',
  showTaskCount: true
}));

interface Props {
  content: string;
  viewMode?: 'board' | 'table' | 'list';
  showCount?: boolean;
}

const props = withDefaults(defineProps<Props>(), {
  viewMode: 'board',
  showCount: true
});

const html = computed(() => {
  marked.use(markedExtendedKanban({
    defaultView: props.viewMode,
    showTaskCount: props.showCount
  }));
  return marked.parse(props.content);
});
</script>

<template>
  <div class="kanban-wrapper" v-html="html" />
</template>
```

#### Angular Integration

```typescript
// kanban-board.component.ts
import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
import { marked } from 'marked';
import markedExtendedKanban from '@fsegurai/marked-extended-kanban';

marked.use(markedExtendedKanban({
  defaultView: 'board',
  showTaskCount: true
}));

@Component({
  selector: 'app-kanban-board',
  template: \`<div [innerHTML]="parsedContent"></div>\`,
  styleUrls: [
    '../node_modules/@fsegurai/marked-extended-kanban/styles/kanban.css',
    '../node_modules/@fsegurai/marked-extended-kanban/styles/kanban-theme.css'
  ]
})
export class KanbanBoardComponent implements OnChanges {
  @Input() content: string = '';
  @Input() defaultView: 'board' | 'table' | 'list' = 'board';
  @Input() showTaskCount: boolean = true;
  parsedContent: SafeHtml = '';

  constructor(private sanitizer: DomSanitizer) {}

  ngOnChanges(changes: SimpleChanges): void {
    if (changes['content'] || changes['defaultView'] || changes['showTaskCount']) {
      marked.use(markedExtendedKanban({
        defaultView: this.defaultView,
        showTaskCount: this.showTaskCount
      }));
      
      const html = marked.parse(this.content);
      this.parsedContent = this.sanitizer.bypassSecurityTrustHtml(html);
    }
  }
}
```

### Performance Tips

1. **Limit tasks per column**: Keep under 20 tasks per column for best performance
2. **Use table view for large datasets**: More efficient than board view with many items
3. **Minimize description length**: Keep task descriptions concise
4. **Reduce tag count**: Limit to 5 tags per task

```javascript
// For very large boards
marked.use(markedExtendedKanban({
  showTaskCount: false,  // Reduces DOM operations
  defaultView: 'table'   // More efficient for many items
}));
```

### Contributing

Found a bug or have a feature request? Please open an issue on [GitHub](https://github.com/fsegurai/marked-extensions/issues).

### Related Resources

- [Marked.js Documentation](https://marked.js.org/)
- [Extension Demo](https://fsegurai.github.io/marked-extensions)
- [Source Code](https://github.com/fsegurai/marked-extensions)
- [npm Package](https://www.npmjs.com/package/@fsegurai/marked-extended-kanban)
- [Kanban Methodology Guide](https://github.com/fsegurai/marked-extensions/wiki/kanban-guide)



