39 lines
1.2 KiB
JavaScript
39 lines
1.2 KiB
JavaScript
/**
|
|
* Content search module for articles and projects
|
|
* Provides specialized search functionality for content items
|
|
*/
|
|
|
|
import { initializeBaseSearch } from './baseSearch.js';
|
|
|
|
/**
|
|
* Initialize search functionality for articles
|
|
* @returns {Object} Alpine.js data object with search functionality
|
|
*/
|
|
export function initializeArticlesSearch() {
|
|
return initializeBaseSearch('.article-item', {
|
|
nameAttribute: 'data-title',
|
|
tagsAttribute: 'data-tags',
|
|
additionalAttributes: ['data-description'],
|
|
noResultsMessage: 'No articles found',
|
|
allItemsMessage: 'Showing all articles',
|
|
resultCountMessage: (count) => `Found ${count} articles`,
|
|
itemLabel: 'articles'
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Initialize search functionality for projects
|
|
* @returns {Object} Alpine.js data object with search functionality
|
|
*/
|
|
export function initializeProjectsSearch() {
|
|
return initializeBaseSearch('.project-item', {
|
|
nameAttribute: 'data-title',
|
|
tagsAttribute: 'data-tags',
|
|
additionalAttributes: ['data-description', 'data-github', 'data-live'],
|
|
noResultsMessage: 'No projects found',
|
|
allItemsMessage: 'Showing all projects',
|
|
resultCountMessage: (count) => `Found ${count} projects`,
|
|
itemLabel: 'projects'
|
|
});
|
|
}
|