Concept includes a comprehensive set of reusable components built on Bootstrap 5. All components are jQuery-free and use modern JavaScript.
Components follow a consistent pattern:
// JavaScript initialization
import { ComponentName } from './components/component-name.js';
// Initialize on DOM ready
document.addEventListener('DOMContentLoaded', () => {
ComponentName.init();
});
<div class="card">
<div class="card-header">
<h5 class="card-title">Card Title</h5>
</div>
<div class="card-body">
<p class="card-text">Card content goes here.</p>
</div>
</div>
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<strong>Warning!</strong> This is a warning alert.
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<!-- Button trigger -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
Launch modal
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Modal title</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
Modal content
</div>
</div>
</div>
</div>
Most Bootstrap components initialize automatically with data attributes:
<!-- Tooltip -->
<button type="button" data-bs-toggle="tooltip" title="Tooltip text">
Hover me
</button>
<!-- Popover -->
<button type="button" data-bs-toggle="popover" data-bs-content="Popover content">
Click me
</button>
For dynamic content, initialize components manually:
// Initialize all tooltips
const tooltips = document.querySelectorAll('[data-bs-toggle="tooltip"]');
tooltips.forEach(el => new bootstrap.Tooltip(el));
// Initialize specific modal
const modal = new bootstrap.Modal(document.getElementById('myModal'));
modal.show();
// components/custom-component.js
export class CustomComponent {
constructor(element) {
this.element = element;
this.init();
}
init() {
// Component logic
}
static init(selector = '[data-custom-component]') {
document.querySelectorAll(selector).forEach(el => {
new CustomComponent(el);
});
}
}
Explore specific component documentation: