mrshanebarron / markdown
Markdown content renderer for Laravel. Supports Livewire and Blade.
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/mrshanebarron/markdown
Requires
- php: ^8.1
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.0
This package is auto-updated.
Last update: 2025-12-14 04:34:18 UTC
README
Markdown content renderer with syntax highlighting. Built for Laravel with support for Livewire, Blade, and Alpine.js.
Installation
composer require mrshanebarron/markdown
The service provider will be auto-discovered. If you need to register it manually:
// config/app.php 'providers' => [ // ... MrShaneBarron\Markdown\MarkdownServiceProvider::class, ];
Usage
Livewire Component
<livewire:ld-markdown />
Blade Component
<x-ld-markdown />
With Props
<x-ld-markdown content='' :sanitize="true" :allowHtml="false" />
Props
| Prop | Type | Default | Description |
|---|---|---|---|
content |
string | '' |
Markdown content to render |
sanitize |
boolean | true |
Sanitize HTML output |
allowHtml |
boolean | false |
Allow raw HTML in markdown |
Configuration
Publish the config file:
php artisan vendor:publish --tag=ld-markdown-config
This will create a config/ld-markdown.php file where you can customize default values.
Customization
Publishing Views
Customize the component appearance by publishing the views:
php artisan vendor:publish --tag=ld-markdown-views
Views will be published to resources/views/vendor/ld-markdown/.
Styling
The component uses Tailwind CSS classes by default. You can customize styles by:
- Publishing views and modifying the Blade templates
- Using the
classattribute to add custom classes - Overriding default styles in your CSS
<x-ld-markdown class="custom-class" />
Events
The component dispatches Livewire events you can listen to:
| Event | Payload | Description |
|---|---|---|
markdown:updated |
Component data | Fired when state changes |
markdown:initialized |
Initial data | Fired on component mount |
// In your Livewire component protected $listeners = ['markdown:updated' => 'handleUpdate']; public function handleUpdate($data) { // Handle the update }
Alpine.js Integration
The component works seamlessly with Alpine.js:
<div x-data="{ ' }} selected: null {{ ' }"> <x-ld-markdown x-model="selected" /> <p x-text="selected"></p> </div>
Requirements
- PHP 8.1+
- Laravel 10.x, 11.x, or 12.x
- Livewire 3.x
- Tailwind CSS 3.x (optional, for default styling)
Testing
composer test
Changelog
Please see CHANGELOG for recent changes.
Contributing
Contributions are welcome! Please see CONTRIBUTING for details.
Security
If you discover a security vulnerability, please email shane@sbarron.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.