feat: Add CMD+K command palette with ninja-keys integration

Implement a command palette accessible via CMD+K/Ctrl+K using the ninja-keys
web component. Features include:

- New /api/cmd-k endpoint serving dynamic CV entries (experiences, projects, courses)
- Language-aware responses with 1-hour cache headers
- Scroll-to-section functionality for quick navigation
- Enhanced keyboard shortcuts modal with CMD+K documentation
- Comprehensive test coverage for API and UI interactions

Also includes cleanup of deprecated debug test files and various UI polish
improvements to contact form, themes, and action bar components.
This commit is contained in:
juanatsap
2025-12-01 13:03:06 +00:00
parent 976b8ae2e2
commit 9a848e8c53
45 changed files with 3070 additions and 1587 deletions
+3
View File
@@ -45,6 +45,7 @@ type Personal struct {
type Experience struct {
Position string `json:"position"`
Company string `json:"company"`
CompanyID string `json:"companyID,omitempty"` // Unique ID for scrolling/navigation
CompanyURL string `json:"companyURL,omitempty"` // Optional URL for company website
CompanyLogo string `json:"companyLogo"`
Location string `json:"location"`
@@ -91,6 +92,7 @@ type Project struct {
Title string `json:"title"`
ProjectName string `json:"projectName,omitempty"` // Optional: linkable part of title
ProjectDesc string `json:"projectDesc,omitempty"` // Optional: non-linkable description part
ProjectID string `json:"projectID,omitempty"` // Unique ID for scrolling/navigation
URL string `json:"url"`
ProjectLogo string `json:"projectLogo,omitempty"` // Optional logo filename
GitRepoUrl string `json:"gitRepoUrl,omitempty"` // Optional git repository URL for dynamic dates
@@ -127,6 +129,7 @@ type Certification struct {
type Course struct {
Title string `json:"title"`
Institution string `json:"institution"`
CourseID string `json:"courseID,omitempty"` // Unique ID for scrolling/navigation
CourseLogo string `json:"courseLogo,omitempty"` // Optional logo filename
Location string `json:"location"`
Date string `json:"date"`