diff --git a/web/src/views/settings/ResumeProfileView.vue b/web/src/views/settings/ResumeProfileView.vue index 4c9675f..11b42aa 100644 --- a/web/src/views/settings/ResumeProfileView.vue +++ b/web/src/views/settings/ResumeProfileView.vue @@ -56,6 +56,23 @@

{{ uploadError }}

+ +
+ Content synced from Resume Library — {{ fmtDate(store.lastSynced) }}. + Changes here update the default library entry when you save. +
+ + +
+

Career Summary

+

Used in cover letter generation and as your professional introduction.

+
+ + +
+
+

Personal Information

@@ -130,6 +147,57 @@
+ +
+

Education

+
+
+ Education {{ idx + 1 }} + +
+
+ + +
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+ +
+ + +
+

Achievements

+

Awards, certifications, open-source projects, publications.

+
+ + +
+ +
+

Preferences & Availability

@@ -302,6 +370,10 @@ function handleFileSelect(event: Event) { uploadError.value = null } +function fmtDate(iso: string) { + return new Date(iso).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }) +} + async function handleUpload() { const file = pendingFile.value if (!file) return @@ -407,4 +479,34 @@ h3 { font-size: 1rem; font-weight: 600; margin-bottom: var(--space-3); } .toggle-btn { margin-left: 10px; padding: 2px 10px; background: transparent; border: 1px solid var(--color-border); border-radius: 4px; color: var(--color-text-muted); cursor: pointer; font-size: 0.78rem; } .loading { text-align: center; padding: var(--space-8); color: var(--color-text-muted); } .replace-section { background: var(--color-surface-alt); border-radius: 8px; padding: var(--space-4); } +.sync-status-label { + font-size: 0.82rem; color: var(--color-text-muted); + border-left: 3px solid var(--color-primary); + padding: var(--space-2) var(--space-3); + margin-bottom: var(--space-6); + background: color-mix(in srgb, var(--color-primary) 6%, var(--color-surface-alt)); + border-radius: 0 var(--radius-sm) var(--radius-sm) 0; +} +.achievement-row { + display: flex; gap: var(--space-2); align-items: center; margin-bottom: var(--space-2); +} +.achievement-row input { flex: 1; } +.btn-remove { + background: none; border: 1px solid var(--color-border); + border-radius: var(--radius-sm); padding: 2px var(--space-2); + cursor: pointer; color: var(--color-text-muted); font-size: 0.8rem; + white-space: nowrap; +} +.btn-remove:hover { color: var(--color-error, #dc2626); border-color: var(--color-error, #dc2626); } +.field-row-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-3); } +.btn-secondary { + padding: 7px 16px; background: transparent; + border: 1px solid var(--color-border); border-radius: 6px; + color: var(--color-text-muted); cursor: pointer; font-size: 0.85rem; +} +.btn-secondary:hover { border-color: var(--color-accent); color: var(--color-accent); } +.experience-card__header { + display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-3); +} +.experience-card__label { font-size: 0.82rem; color: var(--color-text-muted); font-weight: 500; }