@ginia/ui 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/domain/resume/resume-editor/resume-editor.cjs +13 -5
- package/dist/components/domain/resume/resume-editor/resume-editor.cjs.map +1 -1
- package/dist/components/domain/resume/resume-editor/resume-editor.d.cts +1 -1
- package/dist/components/domain/resume/resume-editor/resume-editor.d.ts +1 -1
- package/dist/components/domain/resume/resume-editor/resume-editor.js +19 -6
- package/dist/components/domain/resume/resume-editor/resume-editor.js.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/academic-info.cjs +1 -1
- package/dist/components/domain/resume/resume-editor/sections/academic-info.cjs.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/academic-info.js +1 -1
- package/dist/components/domain/resume/resume-editor/sections/academic-info.js.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/activities.cjs +25 -11
- package/dist/components/domain/resume/resume-editor/sections/activities.cjs.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/activities.js +25 -11
- package/dist/components/domain/resume/resume-editor/sections/activities.js.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/certifications.cjs +27 -12
- package/dist/components/domain/resume/resume-editor/sections/certifications.cjs.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/certifications.js +27 -12
- package/dist/components/domain/resume/resume-editor/sections/certifications.js.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/education.cjs +25 -11
- package/dist/components/domain/resume/resume-editor/sections/education.cjs.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/education.js +25 -11
- package/dist/components/domain/resume/resume-editor/sections/education.js.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/experience.cjs +25 -11
- package/dist/components/domain/resume/resume-editor/sections/experience.cjs.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/experience.js +25 -11
- package/dist/components/domain/resume/resume-editor/sections/experience.js.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/personal-info.cjs +1 -1
- package/dist/components/domain/resume/resume-editor/sections/personal-info.cjs.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/personal-info.js +1 -1
- package/dist/components/domain/resume/resume-editor/sections/personal-info.js.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/preferences.cjs +2 -2
- package/dist/components/domain/resume/resume-editor/sections/preferences.cjs.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/preferences.js +2 -2
- package/dist/components/domain/resume/resume-editor/sections/preferences.js.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/requirements.cjs +19 -11
- package/dist/components/domain/resume/resume-editor/sections/requirements.cjs.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/requirements.js +29 -12
- package/dist/components/domain/resume/resume-editor/sections/requirements.js.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/skills.cjs +30 -10
- package/dist/components/domain/resume/resume-editor/sections/skills.cjs.map +1 -1
- package/dist/components/domain/resume/resume-editor/sections/skills.js +30 -10
- package/dist/components/domain/resume/resume-editor/sections/skills.js.map +1 -1
- package/dist/components/domain/resume/resume-preview/resume-preview.cjs +27 -11
- package/dist/components/domain/resume/resume-preview/resume-preview.cjs.map +1 -1
- package/dist/components/domain/resume/resume-preview/resume-preview.js +27 -11
- package/dist/components/domain/resume/resume-preview/resume-preview.js.map +1 -1
- package/dist/components/domain/resume/resume-preview/sections/contact-skills.cjs +31 -15
- package/dist/components/domain/resume/resume-preview/sections/contact-skills.cjs.map +1 -1
- package/dist/components/domain/resume/resume-preview/sections/contact-skills.js +31 -15
- package/dist/components/domain/resume/resume-preview/sections/contact-skills.js.map +1 -1
- package/dist/components/domain/resume/resume-preview/sections/experience-education.cjs +131 -73
- package/dist/components/domain/resume/resume-preview/sections/experience-education.cjs.map +1 -1
- package/dist/components/domain/resume/resume-preview/sections/experience-education.d.cts +1 -1
- package/dist/components/domain/resume/resume-preview/sections/experience-education.d.ts +1 -1
- package/dist/components/domain/resume/resume-preview/sections/experience-education.js +131 -73
- package/dist/components/domain/resume/resume-preview/sections/experience-education.js.map +1 -1
- package/dist/components/domain/resume/resume-preview/sections/footer-preview.cjs +2 -2
- package/dist/components/domain/resume/resume-preview/sections/footer-preview.cjs.map +1 -1
- package/dist/components/domain/resume/resume-preview/sections/footer-preview.js +2 -2
- package/dist/components/domain/resume/resume-preview/sections/footer-preview.js.map +1 -1
- package/dist/components/domain/resume/resume-preview/sections/header-preview.cjs +7 -7
- package/dist/components/domain/resume/resume-preview/sections/header-preview.cjs.map +1 -1
- package/dist/components/domain/resume/resume-preview/sections/header-preview.js +7 -7
- package/dist/components/domain/resume/resume-preview/sections/header-preview.js.map +1 -1
- package/dist/components/domain/resume/resume.cjs +46 -29
- package/dist/components/domain/resume/resume.cjs.map +1 -1
- package/dist/components/domain/resume/resume.js +46 -29
- package/dist/components/domain/resume/resume.js.map +1 -1
- package/dist/components/ui/accordion/accordion.cjs +1 -3
- package/dist/components/ui/accordion/accordion.cjs.map +1 -1
- package/dist/components/ui/accordion/accordion.js +1 -3
- package/dist/components/ui/accordion/accordion.js.map +1 -1
- package/dist/components/ui/alert/alert.cjs +12 -25
- package/dist/components/ui/alert/alert.cjs.map +1 -1
- package/dist/components/ui/alert/alert.js +12 -25
- package/dist/components/ui/alert/alert.js.map +1 -1
- package/dist/components/ui/alert-dialog/alert-dialog.cjs +12 -46
- package/dist/components/ui/alert-dialog/alert-dialog.cjs.map +1 -1
- package/dist/components/ui/alert-dialog/alert-dialog.js +12 -46
- package/dist/components/ui/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/components/ui/autocomplete/autocomplete.cjs +12 -12
- package/dist/components/ui/autocomplete/autocomplete.cjs.map +1 -1
- package/dist/components/ui/autocomplete/autocomplete.js +12 -12
- package/dist/components/ui/autocomplete/autocomplete.js.map +1 -1
- package/dist/components/ui/avatar/avatar.cjs +1 -4
- package/dist/components/ui/avatar/avatar.cjs.map +1 -1
- package/dist/components/ui/avatar/avatar.js +1 -4
- package/dist/components/ui/avatar/avatar.js.map +1 -1
- package/dist/components/ui/badge/badge.cjs +1 -8
- package/dist/components/ui/badge/badge.cjs.map +1 -1
- package/dist/components/ui/badge/badge.js +1 -8
- package/dist/components/ui/badge/badge.js.map +1 -1
- package/dist/components/ui/breadcrumb/breadcrumb.cjs +6 -19
- package/dist/components/ui/breadcrumb/breadcrumb.cjs.map +1 -1
- package/dist/components/ui/breadcrumb/breadcrumb.js +6 -19
- package/dist/components/ui/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/components/ui/button/button.cjs.map +1 -1
- package/dist/components/ui/button/button.js.map +1 -1
- package/dist/components/ui/calendar/calendar.cjs +1 -6
- package/dist/components/ui/calendar/calendar.cjs.map +1 -1
- package/dist/components/ui/calendar/calendar.js +1 -6
- package/dist/components/ui/calendar/calendar.js.map +1 -1
- package/dist/components/ui/card/card.cjs +7 -17
- package/dist/components/ui/card/card.cjs.map +1 -1
- package/dist/components/ui/card/card.js +7 -17
- package/dist/components/ui/card/card.js.map +1 -1
- package/dist/components/ui/carousel/carousel.cjs +4 -11
- package/dist/components/ui/carousel/carousel.cjs.map +1 -1
- package/dist/components/ui/carousel/carousel.js +4 -11
- package/dist/components/ui/carousel/carousel.js.map +1 -1
- package/dist/components/ui/checkbox/checkbox.cjs +1 -7
- package/dist/components/ui/checkbox/checkbox.cjs.map +1 -1
- package/dist/components/ui/checkbox/checkbox.js +1 -7
- package/dist/components/ui/checkbox/checkbox.js.map +1 -1
- package/dist/components/ui/collapsible/collapsible.cjs.map +1 -1
- package/dist/components/ui/collapsible/collapsible.js.map +1 -1
- package/dist/components/ui/combobox/combobox.cjs +1 -3
- package/dist/components/ui/combobox/combobox.cjs.map +1 -1
- package/dist/components/ui/combobox/combobox.js +1 -3
- package/dist/components/ui/combobox/combobox.js.map +1 -1
- package/dist/components/ui/command/command.cjs +7 -24
- package/dist/components/ui/command/command.cjs.map +1 -1
- package/dist/components/ui/command/command.js +7 -24
- package/dist/components/ui/command/command.js.map +1 -1
- package/dist/components/ui/context-menu/context-menu.cjs +4 -18
- package/dist/components/ui/context-menu/context-menu.cjs.map +1 -1
- package/dist/components/ui/context-menu/context-menu.js +4 -18
- package/dist/components/ui/context-menu/context-menu.js.map +1 -1
- package/dist/components/ui/date-picker/date-picker.cjs +21 -57
- package/dist/components/ui/date-picker/date-picker.cjs.map +1 -1
- package/dist/components/ui/date-picker/date-picker.js +22 -62
- package/dist/components/ui/date-picker/date-picker.js.map +1 -1
- package/dist/components/ui/dialog/dialog.cjs +12 -29
- package/dist/components/ui/dialog/dialog.cjs.map +1 -1
- package/dist/components/ui/dialog/dialog.js +12 -29
- package/dist/components/ui/dialog/dialog.js.map +1 -1
- package/dist/components/ui/drawer/drawer.cjs +9 -23
- package/dist/components/ui/drawer/drawer.cjs.map +1 -1
- package/dist/components/ui/drawer/drawer.js +9 -23
- package/dist/components/ui/drawer/drawer.js.map +1 -1
- package/dist/components/ui/dropdown-menu/dropdown-menu.cjs +3 -16
- package/dist/components/ui/dropdown-menu/dropdown-menu.cjs.map +1 -1
- package/dist/components/ui/dropdown-menu/dropdown-menu.js +3 -16
- package/dist/components/ui/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/components/ui/form/form.cjs +7 -24
- package/dist/components/ui/form/form.cjs.map +1 -1
- package/dist/components/ui/form/form.js +7 -24
- package/dist/components/ui/form/form.js.map +1 -1
- package/dist/components/ui/hover-card/hover-card.cjs +2 -6
- package/dist/components/ui/hover-card/hover-card.cjs.map +1 -1
- package/dist/components/ui/hover-card/hover-card.js +2 -6
- package/dist/components/ui/hover-card/hover-card.js.map +1 -1
- package/dist/components/ui/icon/icon.cjs +1 -1
- package/dist/components/ui/icon/icon.cjs.map +1 -1
- package/dist/components/ui/icon/icon.js +1 -1
- package/dist/components/ui/icon/icon.js.map +1 -1
- package/dist/components/ui/input/input.cjs +1 -1
- package/dist/components/ui/input/input.cjs.map +1 -1
- package/dist/components/ui/input/input.js +1 -1
- package/dist/components/ui/input/input.js.map +1 -1
- package/dist/components/ui/input-field/input-field.cjs +1 -1
- package/dist/components/ui/input-field/input-field.cjs.map +1 -1
- package/dist/components/ui/input-field/input-field.js +1 -1
- package/dist/components/ui/input-field/input-field.js.map +1 -1
- package/dist/components/ui/input-otp/input-otp.cjs +5 -15
- package/dist/components/ui/input-otp/input-otp.cjs.map +1 -1
- package/dist/components/ui/input-otp/input-otp.js +5 -15
- package/dist/components/ui/input-otp/input-otp.js.map +1 -1
- package/dist/components/ui/label/label.cjs +2 -5
- package/dist/components/ui/label/label.cjs.map +1 -1
- package/dist/components/ui/label/label.js +2 -5
- package/dist/components/ui/label/label.js.map +1 -1
- package/dist/components/ui/loading-state/loading-state.cjs +3 -8
- package/dist/components/ui/loading-state/loading-state.cjs.map +1 -1
- package/dist/components/ui/loading-state/loading-state.d.cts +1 -1
- package/dist/components/ui/loading-state/loading-state.d.ts +1 -1
- package/dist/components/ui/loading-state/loading-state.js +3 -8
- package/dist/components/ui/loading-state/loading-state.js.map +1 -1
- package/dist/components/ui/menubar/menubar.cjs +5 -21
- package/dist/components/ui/menubar/menubar.cjs.map +1 -1
- package/dist/components/ui/menubar/menubar.js +5 -21
- package/dist/components/ui/menubar/menubar.js.map +1 -1
- package/dist/components/ui/month-year-picker/month-year-picker.cjs +5 -23
- package/dist/components/ui/month-year-picker/month-year-picker.cjs.map +1 -1
- package/dist/components/ui/month-year-picker/month-year-picker.js +6 -28
- package/dist/components/ui/month-year-picker/month-year-picker.js.map +1 -1
- package/dist/components/ui/multi-select/multi-select.cjs +12 -29
- package/dist/components/ui/multi-select/multi-select.cjs.map +1 -1
- package/dist/components/ui/multi-select/multi-select.js +12 -29
- package/dist/components/ui/multi-select/multi-select.js.map +1 -1
- package/dist/components/ui/navigation-menu/navigation-menu.cjs +7 -13
- package/dist/components/ui/navigation-menu/navigation-menu.cjs.map +1 -1
- package/dist/components/ui/navigation-menu/navigation-menu.js +7 -13
- package/dist/components/ui/navigation-menu/navigation-menu.js.map +1 -1
- package/dist/components/ui/pagination/pagination.cjs +4 -18
- package/dist/components/ui/pagination/pagination.cjs.map +1 -1
- package/dist/components/ui/pagination/pagination.js +4 -18
- package/dist/components/ui/pagination/pagination.js.map +1 -1
- package/dist/components/ui/popover/popover.cjs.map +1 -1
- package/dist/components/ui/popover/popover.js.map +1 -1
- package/dist/components/ui/progress/progress.cjs +2 -2
- package/dist/components/ui/progress/progress.cjs.map +1 -1
- package/dist/components/ui/progress/progress.js +2 -2
- package/dist/components/ui/progress/progress.js.map +1 -1
- package/dist/components/ui/radio-group/radio-group.cjs +1 -8
- package/dist/components/ui/radio-group/radio-group.cjs.map +1 -1
- package/dist/components/ui/radio-group/radio-group.js +1 -8
- package/dist/components/ui/radio-group/radio-group.js.map +1 -1
- package/dist/components/ui/resizable/resizable.cjs +3 -6
- package/dist/components/ui/resizable/resizable.cjs.map +1 -1
- package/dist/components/ui/resizable/resizable.js +4 -11
- package/dist/components/ui/resizable/resizable.js.map +1 -1
- package/dist/components/ui/rich-text-editor/rich-text-editor.cjs +25 -37
- package/dist/components/ui/rich-text-editor/rich-text-editor.cjs.map +1 -1
- package/dist/components/ui/rich-text-editor/rich-text-editor.js +25 -37
- package/dist/components/ui/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/components/ui/scroll-area/scroll-area.cjs.map +1 -1
- package/dist/components/ui/scroll-area/scroll-area.js.map +1 -1
- package/dist/components/ui/section-loader/section-loader.cjs +4 -15
- package/dist/components/ui/section-loader/section-loader.cjs.map +1 -1
- package/dist/components/ui/section-loader/section-loader.js +4 -15
- package/dist/components/ui/section-loader/section-loader.js.map +1 -1
- package/dist/components/ui/select/select.cjs +11 -29
- package/dist/components/ui/select/select.cjs.map +1 -1
- package/dist/components/ui/select/select.js +11 -29
- package/dist/components/ui/select/select.js.map +1 -1
- package/dist/components/ui/separator/separator.cjs +14 -16
- package/dist/components/ui/separator/separator.cjs.map +1 -1
- package/dist/components/ui/separator/separator.js +14 -16
- package/dist/components/ui/separator/separator.js.map +1 -1
- package/dist/components/ui/sheet/sheet.cjs +10 -24
- package/dist/components/ui/sheet/sheet.cjs.map +1 -1
- package/dist/components/ui/sheet/sheet.js +10 -24
- package/dist/components/ui/sheet/sheet.js.map +1 -1
- package/dist/components/ui/skeleton/skeleton.cjs +2 -11
- package/dist/components/ui/skeleton/skeleton.cjs.map +1 -1
- package/dist/components/ui/skeleton/skeleton.js +2 -11
- package/dist/components/ui/skeleton/skeleton.js.map +1 -1
- package/dist/components/ui/slider/slider.cjs +1 -4
- package/dist/components/ui/slider/slider.cjs.map +1 -1
- package/dist/components/ui/slider/slider.js +1 -4
- package/dist/components/ui/slider/slider.js.map +1 -1
- package/dist/components/ui/sonner/sonner.cjs.map +1 -1
- package/dist/components/ui/sonner/sonner.js.map +1 -1
- package/dist/components/ui/spinner/spinner.cjs +1 -1
- package/dist/components/ui/spinner/spinner.cjs.map +1 -1
- package/dist/components/ui/spinner/spinner.js +1 -1
- package/dist/components/ui/spinner/spinner.js.map +1 -1
- package/dist/components/ui/switch/switch.cjs.map +1 -1
- package/dist/components/ui/switch/switch.js.map +1 -1
- package/dist/components/ui/table/table.cjs +6 -28
- package/dist/components/ui/table/table.cjs.map +1 -1
- package/dist/components/ui/table/table.js +6 -28
- package/dist/components/ui/table/table.js.map +1 -1
- package/dist/components/ui/tabs/tabs.cjs.map +1 -1
- package/dist/components/ui/tabs/tabs.js.map +1 -1
- package/dist/components/ui/textarea/textarea.cjs +1 -4
- package/dist/components/ui/textarea/textarea.cjs.map +1 -1
- package/dist/components/ui/textarea/textarea.js +1 -4
- package/dist/components/ui/textarea/textarea.js.map +1 -1
- package/dist/components/ui/toast/toast.cjs +3 -12
- package/dist/components/ui/toast/toast.cjs.map +1 -1
- package/dist/components/ui/toast/toast.js +3 -12
- package/dist/components/ui/toast/toast.js.map +1 -1
- package/dist/components/ui/toggle/toggle.cjs.map +1 -1
- package/dist/components/ui/toggle/toggle.js.map +1 -1
- package/dist/components/ui/toggle-group/toggle-group.cjs +1 -4
- package/dist/components/ui/toggle-group/toggle-group.cjs.map +1 -1
- package/dist/components/ui/toggle-group/toggle-group.js +1 -4
- package/dist/components/ui/toggle-group/toggle-group.js.map +1 -1
- package/dist/components/ui/tooltip/tooltip.cjs.map +1 -1
- package/dist/components/ui/tooltip/tooltip.js.map +1 -1
- package/package.json +1 -1
|
@@ -39,7 +39,12 @@ function SkillsSection({ data, onChange, hideFields = [] }) {
|
|
|
39
39
|
};
|
|
40
40
|
const handleAdd = (type) => {
|
|
41
41
|
const list = [...type === "hard" ? hard : soft];
|
|
42
|
-
list.push({
|
|
42
|
+
list.push({
|
|
43
|
+
id: `temp-skill-${Math.random().toString(36).substring(2, 9)}`,
|
|
44
|
+
name: "",
|
|
45
|
+
type: type === "hard" ? "T\xE9cnica" : "Interpersonal",
|
|
46
|
+
verified: false
|
|
47
|
+
});
|
|
43
48
|
onChange({
|
|
44
49
|
skills: {
|
|
45
50
|
...data.skills,
|
|
@@ -76,26 +81,41 @@ function SkillsSection({ data, onChange, hideFields = [] }) {
|
|
|
76
81
|
onCheckedChange: (checked) => handleUpdate(type, index, "verified", !!checked)
|
|
77
82
|
}
|
|
78
83
|
),
|
|
79
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
84
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
85
|
+
"label",
|
|
86
|
+
{
|
|
87
|
+
htmlFor: `verified-${type}-${item.id}`,
|
|
88
|
+
className: "flex items-center gap-1 text-sm text-muted-foreground",
|
|
89
|
+
children: "Verificado"
|
|
90
|
+
}
|
|
91
|
+
)
|
|
80
92
|
] }),
|
|
81
93
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
82
94
|
import_ui.Button,
|
|
83
95
|
{
|
|
84
96
|
variant: "ghost",
|
|
85
97
|
size: "sm",
|
|
86
|
-
className: "h-7 px-2 text-muted-foreground hover:
|
|
98
|
+
className: "h-7 px-2 text-muted-foreground hover:bg-destructive/10 hover:text-destructive",
|
|
87
99
|
onClick: () => handleRemove(type, index),
|
|
88
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Trash2, { className: "
|
|
100
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Trash2, { className: "h-4 w-4" })
|
|
89
101
|
}
|
|
90
102
|
)
|
|
91
103
|
] }, item.id)),
|
|
92
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
104
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
105
|
+
import_ui.Button,
|
|
106
|
+
{
|
|
107
|
+
variant: "outline",
|
|
108
|
+
className: "mt-2 flex w-full items-center justify-center gap-2",
|
|
109
|
+
onClick: () => handleAdd(type),
|
|
110
|
+
children: [
|
|
111
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Plus, { className: "h-4 w-4" }),
|
|
112
|
+
"A\xF1adir habilidad"
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
)
|
|
96
116
|
] });
|
|
97
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "pt-2
|
|
98
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ui.TabsList, { className: "w-full grid
|
|
117
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "pb-4 pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ui.Tabs, { defaultValue: "hard", className: "w-full", children: [
|
|
118
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ui.TabsList, { className: "grid w-full grid-cols-2", children: [
|
|
99
119
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ui.TabsTrigger, { value: "hard", children: "T\xE9cnicas" }),
|
|
100
120
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ui.TabsTrigger, { value: "soft", children: "Interpersonales" })
|
|
101
121
|
] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/domain/resume/resume-editor/sections/skills.tsx"],"sourcesContent":["import { CandidateProfile, CVSkillItem } from \"../../types\";\nimport { Input, Button, Tabs, TabsList, TabsTrigger, TabsContent, Checkbox } from \"../../../../ui\";\nimport { Plus, Trash2 } from \"lucide-react\";\n\ninterface SkillsProps {\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/domain/resume/resume-editor/sections/skills.tsx"],"sourcesContent":["import { CandidateProfile, CVSkillItem } from \"../../types\";\nimport { Input, Button, Tabs, TabsList, TabsTrigger, TabsContent, Checkbox } from \"../../../../ui\";\nimport { Plus, Trash2 } from \"lucide-react\";\n\ninterface SkillsProps {\n data: CandidateProfile;\n onChange: (partial: Partial<CandidateProfile>) => void;\n hideFields?: string[];\n}\n\nexport function SkillsSection({ data, onChange, hideFields = [] }: SkillsProps) {\n const hard = data.skills?.hard || [];\n const soft = data.skills?.soft || [];\n\n const handleUpdate = (\n type: \"hard\" | \"soft\",\n index: number,\n field: keyof CVSkillItem,\n value: any,\n ) => {\n const list = [...(type === \"hard\" ? hard : soft)];\n list[index] = { ...list[index], [field]: value };\n\n onChange({\n skills: {\n ...data.skills,\n [type]: list,\n },\n });\n };\n\n const handleAdd = (type: \"hard\" | \"soft\") => {\n const list = [...(type === \"hard\" ? hard : soft)];\n list.push({\n id: `temp-skill-${Math.random().toString(36).substring(2, 9)}`,\n name: \"\",\n type: type === \"hard\" ? \"Técnica\" : \"Interpersonal\",\n verified: false,\n });\n\n onChange({\n skills: {\n ...data.skills,\n [type]: list,\n },\n });\n };\n\n const handleRemove = (type: \"hard\" | \"soft\", index: number) => {\n const list = (type === \"hard\" ? hard : soft).filter((_, i) => i !== index);\n\n onChange({\n skills: {\n ...data.skills,\n [type]: list,\n },\n });\n };\n\n const renderSkillList = (type: \"hard\" | \"soft\", items: CVSkillItem[]) => (\n <div className=\"space-y-3 pt-4\">\n {items.map((item, index) => (\n <div key={item.id} className=\"flex items-center gap-3\">\n <Input\n className=\"flex-1\"\n placeholder=\"Nombre de la habilidad\"\n value={item.name}\n onChange={(e) => handleUpdate(type, index, \"name\", e.target.value)}\n />\n {!hideFields.includes(\"skills.verified\") && (\n <div className=\"flex items-center gap-2\">\n <Checkbox\n id={`verified-${type}-${item.id}`}\n checked={item.verified}\n onCheckedChange={(checked) => handleUpdate(type, index, \"verified\", !!checked)}\n />\n <label\n htmlFor={`verified-${type}-${item.id}`}\n className=\"flex items-center gap-1 text-sm text-muted-foreground\"\n >\n Verificado\n </label>\n </div>\n )}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2 text-muted-foreground hover:bg-destructive/10 hover:text-destructive\"\n onClick={() => handleRemove(type, index)}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n ))}\n <Button\n variant=\"outline\"\n className=\"mt-2 flex w-full items-center justify-center gap-2\"\n onClick={() => handleAdd(type)}\n >\n <Plus className=\"h-4 w-4\" />\n Añadir habilidad\n </Button>\n </div>\n );\n\n return (\n <div className=\"pb-4 pt-2\">\n <Tabs defaultValue=\"hard\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-2\">\n <TabsTrigger value=\"hard\">Técnicas</TabsTrigger>\n <TabsTrigger value=\"soft\">Interpersonales</TabsTrigger>\n </TabsList>\n <TabsContent value=\"hard\">{renderSkillList(\"hard\", hard)}</TabsContent>\n <TabsContent value=\"soft\">{renderSkillList(\"soft\", soft)}</TabsContent>\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -16,7 +16,12 @@ function SkillsSection({ data, onChange, hideFields = [] }) {
|
|
|
16
16
|
};
|
|
17
17
|
const handleAdd = (type) => {
|
|
18
18
|
const list = [...type === "hard" ? hard : soft];
|
|
19
|
-
list.push({
|
|
19
|
+
list.push({
|
|
20
|
+
id: `temp-skill-${Math.random().toString(36).substring(2, 9)}`,
|
|
21
|
+
name: "",
|
|
22
|
+
type: type === "hard" ? "T\xE9cnica" : "Interpersonal",
|
|
23
|
+
verified: false
|
|
24
|
+
});
|
|
20
25
|
onChange({
|
|
21
26
|
skills: {
|
|
22
27
|
...data.skills,
|
|
@@ -53,26 +58,41 @@ function SkillsSection({ data, onChange, hideFields = [] }) {
|
|
|
53
58
|
onCheckedChange: (checked) => handleUpdate(type, index, "verified", !!checked)
|
|
54
59
|
}
|
|
55
60
|
),
|
|
56
|
-
/* @__PURE__ */ jsx(
|
|
61
|
+
/* @__PURE__ */ jsx(
|
|
62
|
+
"label",
|
|
63
|
+
{
|
|
64
|
+
htmlFor: `verified-${type}-${item.id}`,
|
|
65
|
+
className: "flex items-center gap-1 text-sm text-muted-foreground",
|
|
66
|
+
children: "Verificado"
|
|
67
|
+
}
|
|
68
|
+
)
|
|
57
69
|
] }),
|
|
58
70
|
/* @__PURE__ */ jsx(
|
|
59
71
|
Button,
|
|
60
72
|
{
|
|
61
73
|
variant: "ghost",
|
|
62
74
|
size: "sm",
|
|
63
|
-
className: "h-7 px-2 text-muted-foreground hover:
|
|
75
|
+
className: "h-7 px-2 text-muted-foreground hover:bg-destructive/10 hover:text-destructive",
|
|
64
76
|
onClick: () => handleRemove(type, index),
|
|
65
|
-
children: /* @__PURE__ */ jsx(Trash2, { className: "
|
|
77
|
+
children: /* @__PURE__ */ jsx(Trash2, { className: "h-4 w-4" })
|
|
66
78
|
}
|
|
67
79
|
)
|
|
68
80
|
] }, item.id)),
|
|
69
|
-
/* @__PURE__ */ jsxs(
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
81
|
+
/* @__PURE__ */ jsxs(
|
|
82
|
+
Button,
|
|
83
|
+
{
|
|
84
|
+
variant: "outline",
|
|
85
|
+
className: "mt-2 flex w-full items-center justify-center gap-2",
|
|
86
|
+
onClick: () => handleAdd(type),
|
|
87
|
+
children: [
|
|
88
|
+
/* @__PURE__ */ jsx(Plus, { className: "h-4 w-4" }),
|
|
89
|
+
"A\xF1adir habilidad"
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
)
|
|
73
93
|
] });
|
|
74
|
-
return /* @__PURE__ */ jsx("div", { className: "pt-2
|
|
75
|
-
/* @__PURE__ */ jsxs(TabsList, { className: "w-full grid
|
|
94
|
+
return /* @__PURE__ */ jsx("div", { className: "pb-4 pt-2", children: /* @__PURE__ */ jsxs(Tabs, { defaultValue: "hard", className: "w-full", children: [
|
|
95
|
+
/* @__PURE__ */ jsxs(TabsList, { className: "grid w-full grid-cols-2", children: [
|
|
76
96
|
/* @__PURE__ */ jsx(TabsTrigger, { value: "hard", children: "T\xE9cnicas" }),
|
|
77
97
|
/* @__PURE__ */ jsx(TabsTrigger, { value: "soft", children: "Interpersonales" })
|
|
78
98
|
] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/domain/resume/resume-editor/sections/skills.tsx"],"sourcesContent":["import { CandidateProfile, CVSkillItem } from \"../../types\";\nimport { Input, Button, Tabs, TabsList, TabsTrigger, TabsContent, Checkbox } from \"../../../../ui\";\nimport { Plus, Trash2 } from \"lucide-react\";\n\ninterface SkillsProps {\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/domain/resume/resume-editor/sections/skills.tsx"],"sourcesContent":["import { CandidateProfile, CVSkillItem } from \"../../types\";\nimport { Input, Button, Tabs, TabsList, TabsTrigger, TabsContent, Checkbox } from \"../../../../ui\";\nimport { Plus, Trash2 } from \"lucide-react\";\n\ninterface SkillsProps {\n data: CandidateProfile;\n onChange: (partial: Partial<CandidateProfile>) => void;\n hideFields?: string[];\n}\n\nexport function SkillsSection({ data, onChange, hideFields = [] }: SkillsProps) {\n const hard = data.skills?.hard || [];\n const soft = data.skills?.soft || [];\n\n const handleUpdate = (\n type: \"hard\" | \"soft\",\n index: number,\n field: keyof CVSkillItem,\n value: any,\n ) => {\n const list = [...(type === \"hard\" ? hard : soft)];\n list[index] = { ...list[index], [field]: value };\n\n onChange({\n skills: {\n ...data.skills,\n [type]: list,\n },\n });\n };\n\n const handleAdd = (type: \"hard\" | \"soft\") => {\n const list = [...(type === \"hard\" ? hard : soft)];\n list.push({\n id: `temp-skill-${Math.random().toString(36).substring(2, 9)}`,\n name: \"\",\n type: type === \"hard\" ? \"Técnica\" : \"Interpersonal\",\n verified: false,\n });\n\n onChange({\n skills: {\n ...data.skills,\n [type]: list,\n },\n });\n };\n\n const handleRemove = (type: \"hard\" | \"soft\", index: number) => {\n const list = (type === \"hard\" ? hard : soft).filter((_, i) => i !== index);\n\n onChange({\n skills: {\n ...data.skills,\n [type]: list,\n },\n });\n };\n\n const renderSkillList = (type: \"hard\" | \"soft\", items: CVSkillItem[]) => (\n <div className=\"space-y-3 pt-4\">\n {items.map((item, index) => (\n <div key={item.id} className=\"flex items-center gap-3\">\n <Input\n className=\"flex-1\"\n placeholder=\"Nombre de la habilidad\"\n value={item.name}\n onChange={(e) => handleUpdate(type, index, \"name\", e.target.value)}\n />\n {!hideFields.includes(\"skills.verified\") && (\n <div className=\"flex items-center gap-2\">\n <Checkbox\n id={`verified-${type}-${item.id}`}\n checked={item.verified}\n onCheckedChange={(checked) => handleUpdate(type, index, \"verified\", !!checked)}\n />\n <label\n htmlFor={`verified-${type}-${item.id}`}\n className=\"flex items-center gap-1 text-sm text-muted-foreground\"\n >\n Verificado\n </label>\n </div>\n )}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2 text-muted-foreground hover:bg-destructive/10 hover:text-destructive\"\n onClick={() => handleRemove(type, index)}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n ))}\n <Button\n variant=\"outline\"\n className=\"mt-2 flex w-full items-center justify-center gap-2\"\n onClick={() => handleAdd(type)}\n >\n <Plus className=\"h-4 w-4\" />\n Añadir habilidad\n </Button>\n </div>\n );\n\n return (\n <div className=\"pb-4 pt-2\">\n <Tabs defaultValue=\"hard\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-2\">\n <TabsTrigger value=\"hard\">Técnicas</TabsTrigger>\n <TabsTrigger value=\"soft\">Interpersonales</TabsTrigger>\n </TabsList>\n <TabsContent value=\"hard\">{renderSkillList(\"hard\", hard)}</TabsContent>\n <TabsContent value=\"soft\">{renderSkillList(\"soft\", soft)}</TabsContent>\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -33,10 +33,10 @@ __export(resume_preview_exports, {
|
|
|
33
33
|
module.exports = __toCommonJS(resume_preview_exports);
|
|
34
34
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
35
35
|
var React = __toESM(require("react"), 1);
|
|
36
|
-
var import_header_preview = require("
|
|
37
|
-
var import_contact_skills = require("
|
|
38
|
-
var import_experience_education = require("
|
|
39
|
-
var import_footer_preview = require("
|
|
36
|
+
var import_header_preview = require("./sections/header-preview");
|
|
37
|
+
var import_contact_skills = require("./sections/contact-skills");
|
|
38
|
+
var import_experience_education = require("./sections/experience-education");
|
|
39
|
+
var import_footer_preview = require("./sections/footer-preview");
|
|
40
40
|
const ResumePreview = React.forwardRef(
|
|
41
41
|
function ResumePreview2({ data, headerSlot, theme, hideFields = [], hideSections = [] }, ref) {
|
|
42
42
|
const themeStyle = theme ? { backgroundColor: theme } : void 0;
|
|
@@ -45,20 +45,36 @@ const ResumePreview = React.forwardRef(
|
|
|
45
45
|
{
|
|
46
46
|
ref,
|
|
47
47
|
id: "resume-capture-area",
|
|
48
|
-
className: "
|
|
48
|
+
className: "relative mx-auto flex min-h-[1056px] w-full flex-col rounded-sm border border-border bg-card p-8 text-card-foreground shadow-2xl sm:p-12 md:p-16",
|
|
49
49
|
children: [
|
|
50
50
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51
51
|
"div",
|
|
52
52
|
{
|
|
53
|
-
className: `absolute
|
|
53
|
+
className: `absolute left-0 top-0 h-2 w-full ${theme ? "" : "bg-gradient-to-r from-primary to-primary/50"}`,
|
|
54
54
|
style: themeStyle
|
|
55
55
|
}
|
|
56
56
|
),
|
|
57
|
-
!hideSections.includes("Informaci\xF3n personal") && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
57
|
+
!hideSections.includes("Informaci\xF3n personal") && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
58
|
+
import_header_preview.HeaderPreview,
|
|
59
|
+
{
|
|
60
|
+
data,
|
|
61
|
+
headerSlot,
|
|
62
|
+
theme,
|
|
63
|
+
hideFields
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mt-8 grid grid-cols-1 gap-10 lg:grid-cols-12", children: [
|
|
67
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "space-y-8 lg:col-span-4 lg:pr-6", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_contact_skills.ContactSkills, { data, hideFields, hideSections }) }),
|
|
68
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute bottom-16 left-[33.33%] top-48 hidden w-px bg-border/40 lg:block" }),
|
|
69
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "space-y-8 lg:col-span-8", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
70
|
+
import_experience_education.ExperienceEducation,
|
|
71
|
+
{
|
|
72
|
+
data,
|
|
73
|
+
theme,
|
|
74
|
+
hideFields,
|
|
75
|
+
hideSections
|
|
76
|
+
}
|
|
77
|
+
) })
|
|
62
78
|
] }),
|
|
63
79
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_footer_preview.FooterPreview, {})
|
|
64
80
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/domain/resume/resume-preview/resume-preview.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { CandidateProfile } from \"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/domain/resume/resume-preview/resume-preview.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { CandidateProfile } from \"../types\";\nimport { HeaderPreview } from \"./sections/header-preview\";\nimport { ContactSkills } from \"./sections/contact-skills\";\nimport { ExperienceEducation } from \"./sections/experience-education\";\nimport { FooterPreview } from \"./sections/footer-preview\";\n\nexport interface ResumePreviewProps {\n data: CandidateProfile;\n headerSlot?: React.ReactNode;\n theme?: string;\n hideFields?: string[];\n hideSections?: string[];\n}\n\nexport const ResumePreview = React.forwardRef<HTMLDivElement, ResumePreviewProps>(\n function ResumePreview({ data, headerSlot, theme, hideFields = [], hideSections = [] }, ref) {\n const themeStyle = theme ? { backgroundColor: theme } : undefined;\n\n return (\n <div\n ref={ref}\n id=\"resume-capture-area\"\n className=\"relative mx-auto flex min-h-[1056px] w-full flex-col rounded-sm border border-border bg-card p-8 text-card-foreground shadow-2xl sm:p-12 md:p-16\"\n >\n {/* Subtle decorative top bar */}\n <div\n className={`absolute left-0 top-0 h-2 w-full ${theme ? \"\" : \"bg-gradient-to-r from-primary to-primary/50\"}`}\n style={themeStyle}\n />\n\n {/* Header Profile */}\n {!hideSections.includes(\"Información personal\") && (\n <HeaderPreview\n data={data}\n headerSlot={headerSlot}\n theme={theme}\n hideFields={hideFields}\n />\n )}\n\n {/* Main Content Layout */}\n <div className=\"mt-8 grid grid-cols-1 gap-10 lg:grid-cols-12\">\n {/* Left Column (4/12) */}\n <div className=\"space-y-8 lg:col-span-4 lg:pr-6\">\n <ContactSkills data={data} hideFields={hideFields} hideSections={hideSections} />\n </div>\n\n {/* Vertical Divider for desktop */}\n <div className=\"absolute bottom-16 left-[33.33%] top-48 hidden w-px bg-border/40 lg:block\" />\n\n {/* Right Column (8/12) */}\n <div className=\"space-y-8 lg:col-span-8\">\n <ExperienceEducation\n data={data}\n theme={theme}\n hideFields={hideFields}\n hideSections={hideSections}\n />\n </div>\n </div>\n\n <FooterPreview />\n </div>\n );\n },\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BQ;AA1BR,YAAuB;AAEvB,4BAA8B;AAC9B,4BAA8B;AAC9B,kCAAoC;AACpC,4BAA8B;AAUvB,MAAM,gBAAgB,MAAM;AAAA,EACjC,SAASA,eAAc,EAAE,MAAM,YAAY,OAAO,aAAa,CAAC,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK;AAC3F,UAAM,aAAa,QAAQ,EAAE,iBAAiB,MAAM,IAAI;AAExD,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,IAAG;AAAA,QACH,WAAU;AAAA,QAGV;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,oCAAoC,QAAQ,KAAK,6CAA6C;AAAA,cACzG,OAAO;AAAA;AAAA,UACT;AAAA,UAGC,CAAC,aAAa,SAAS,yBAAsB,KAC5C;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,UACF;AAAA,UAIF,6CAAC,SAAI,WAAU,gDAEb;AAAA,wDAAC,SAAI,WAAU,mCACb,sDAAC,uCAAc,MAAY,YAAwB,cAA4B,GACjF;AAAA,YAGA,4CAAC,SAAI,WAAU,6EAA4E;AAAA,YAG3F,4CAAC,SAAI,WAAU,2BACb;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA;AAAA,YACF,GACF;AAAA,aACF;AAAA,UAEA,4CAAC,uCAAc;AAAA;AAAA;AAAA,IACjB;AAAA,EAEJ;AACF;","names":["ResumePreview"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
|
-
import { HeaderPreview } from "
|
|
4
|
-
import { ContactSkills } from "
|
|
5
|
-
import { ExperienceEducation } from "
|
|
6
|
-
import { FooterPreview } from "
|
|
3
|
+
import { HeaderPreview } from "./sections/header-preview";
|
|
4
|
+
import { ContactSkills } from "./sections/contact-skills";
|
|
5
|
+
import { ExperienceEducation } from "./sections/experience-education";
|
|
6
|
+
import { FooterPreview } from "./sections/footer-preview";
|
|
7
7
|
const ResumePreview = React.forwardRef(
|
|
8
8
|
function ResumePreview2({ data, headerSlot, theme, hideFields = [], hideSections = [] }, ref) {
|
|
9
9
|
const themeStyle = theme ? { backgroundColor: theme } : void 0;
|
|
@@ -12,20 +12,36 @@ const ResumePreview = React.forwardRef(
|
|
|
12
12
|
{
|
|
13
13
|
ref,
|
|
14
14
|
id: "resume-capture-area",
|
|
15
|
-
className: "
|
|
15
|
+
className: "relative mx-auto flex min-h-[1056px] w-full flex-col rounded-sm border border-border bg-card p-8 text-card-foreground shadow-2xl sm:p-12 md:p-16",
|
|
16
16
|
children: [
|
|
17
17
|
/* @__PURE__ */ jsx(
|
|
18
18
|
"div",
|
|
19
19
|
{
|
|
20
|
-
className: `absolute
|
|
20
|
+
className: `absolute left-0 top-0 h-2 w-full ${theme ? "" : "bg-gradient-to-r from-primary to-primary/50"}`,
|
|
21
21
|
style: themeStyle
|
|
22
22
|
}
|
|
23
23
|
),
|
|
24
|
-
!hideSections.includes("Informaci\xF3n personal") && /* @__PURE__ */ jsx(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
!hideSections.includes("Informaci\xF3n personal") && /* @__PURE__ */ jsx(
|
|
25
|
+
HeaderPreview,
|
|
26
|
+
{
|
|
27
|
+
data,
|
|
28
|
+
headerSlot,
|
|
29
|
+
theme,
|
|
30
|
+
hideFields
|
|
31
|
+
}
|
|
32
|
+
),
|
|
33
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-8 grid grid-cols-1 gap-10 lg:grid-cols-12", children: [
|
|
34
|
+
/* @__PURE__ */ jsx("div", { className: "space-y-8 lg:col-span-4 lg:pr-6", children: /* @__PURE__ */ jsx(ContactSkills, { data, hideFields, hideSections }) }),
|
|
35
|
+
/* @__PURE__ */ jsx("div", { className: "absolute bottom-16 left-[33.33%] top-48 hidden w-px bg-border/40 lg:block" }),
|
|
36
|
+
/* @__PURE__ */ jsx("div", { className: "space-y-8 lg:col-span-8", children: /* @__PURE__ */ jsx(
|
|
37
|
+
ExperienceEducation,
|
|
38
|
+
{
|
|
39
|
+
data,
|
|
40
|
+
theme,
|
|
41
|
+
hideFields,
|
|
42
|
+
hideSections
|
|
43
|
+
}
|
|
44
|
+
) })
|
|
29
45
|
] }),
|
|
30
46
|
/* @__PURE__ */ jsx(FooterPreview, {})
|
|
31
47
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/domain/resume/resume-preview/resume-preview.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { CandidateProfile } from \"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/domain/resume/resume-preview/resume-preview.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { CandidateProfile } from \"../types\";\nimport { HeaderPreview } from \"./sections/header-preview\";\nimport { ContactSkills } from \"./sections/contact-skills\";\nimport { ExperienceEducation } from \"./sections/experience-education\";\nimport { FooterPreview } from \"./sections/footer-preview\";\n\nexport interface ResumePreviewProps {\n data: CandidateProfile;\n headerSlot?: React.ReactNode;\n theme?: string;\n hideFields?: string[];\n hideSections?: string[];\n}\n\nexport const ResumePreview = React.forwardRef<HTMLDivElement, ResumePreviewProps>(\n function ResumePreview({ data, headerSlot, theme, hideFields = [], hideSections = [] }, ref) {\n const themeStyle = theme ? { backgroundColor: theme } : undefined;\n\n return (\n <div\n ref={ref}\n id=\"resume-capture-area\"\n className=\"relative mx-auto flex min-h-[1056px] w-full flex-col rounded-sm border border-border bg-card p-8 text-card-foreground shadow-2xl sm:p-12 md:p-16\"\n >\n {/* Subtle decorative top bar */}\n <div\n className={`absolute left-0 top-0 h-2 w-full ${theme ? \"\" : \"bg-gradient-to-r from-primary to-primary/50\"}`}\n style={themeStyle}\n />\n\n {/* Header Profile */}\n {!hideSections.includes(\"Información personal\") && (\n <HeaderPreview\n data={data}\n headerSlot={headerSlot}\n theme={theme}\n hideFields={hideFields}\n />\n )}\n\n {/* Main Content Layout */}\n <div className=\"mt-8 grid grid-cols-1 gap-10 lg:grid-cols-12\">\n {/* Left Column (4/12) */}\n <div className=\"space-y-8 lg:col-span-4 lg:pr-6\">\n <ContactSkills data={data} hideFields={hideFields} hideSections={hideSections} />\n </div>\n\n {/* Vertical Divider for desktop */}\n <div className=\"absolute bottom-16 left-[33.33%] top-48 hidden w-px bg-border/40 lg:block\" />\n\n {/* Right Column (8/12) */}\n <div className=\"space-y-8 lg:col-span-8\">\n <ExperienceEducation\n data={data}\n theme={theme}\n hideFields={hideFields}\n hideSections={hideSections}\n />\n </div>\n </div>\n\n <FooterPreview />\n </div>\n );\n },\n);\n"],"mappings":"AA0BQ,cAgBA,YAhBA;AA1BR,YAAY,WAAW;AAEvB,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,2BAA2B;AACpC,SAAS,qBAAqB;AAUvB,MAAM,gBAAgB,MAAM;AAAA,EACjC,SAASA,eAAc,EAAE,MAAM,YAAY,OAAO,aAAa,CAAC,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK;AAC3F,UAAM,aAAa,QAAQ,EAAE,iBAAiB,MAAM,IAAI;AAExD,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,IAAG;AAAA,QACH,WAAU;AAAA,QAGV;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,oCAAoC,QAAQ,KAAK,6CAA6C;AAAA,cACzG,OAAO;AAAA;AAAA,UACT;AAAA,UAGC,CAAC,aAAa,SAAS,yBAAsB,KAC5C;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,UACF;AAAA,UAIF,qBAAC,SAAI,WAAU,gDAEb;AAAA,gCAAC,SAAI,WAAU,mCACb,8BAAC,iBAAc,MAAY,YAAwB,cAA4B,GACjF;AAAA,YAGA,oBAAC,SAAI,WAAU,6EAA4E;AAAA,YAG3F,oBAAC,SAAI,WAAU,2BACb;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA;AAAA,YACF,GACF;AAAA,aACF;AAAA,UAEA,oBAAC,iBAAc;AAAA;AAAA;AAAA,IACjB;AAAA,EAEJ;AACF;","names":["ResumePreview"]}
|
|
@@ -29,21 +29,21 @@ function ContactSkills({ data, hideFields = [], hideSections = [] }) {
|
|
|
29
29
|
const softSkills = data.skills?.soft || [];
|
|
30
30
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-10", children: [
|
|
31
31
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-4", children: [
|
|
32
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("h3", { className: "
|
|
33
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.User, { className: "
|
|
32
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("h3", { className: "flex items-center gap-2 border-b border-border pb-2 text-xl font-bold text-primary", children: [
|
|
33
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.User, { className: "h-5 w-5 text-primary" }),
|
|
34
34
|
"Contacto"
|
|
35
35
|
] }),
|
|
36
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-3
|
|
36
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mt-4 space-y-3", children: [
|
|
37
37
|
data.email && !hideFields.includes("email") && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-3 text-sm text-foreground", children: [
|
|
38
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Mail, { className: "
|
|
38
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Mail, { className: "h-4 w-4 flex-shrink-0 text-muted-foreground" }),
|
|
39
39
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "break-all font-medium", children: data.email })
|
|
40
40
|
] }),
|
|
41
41
|
data.phone_number && !hideFields.includes("phone_number") && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-3 text-sm text-foreground", children: [
|
|
42
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Phone, { className: "
|
|
42
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Phone, { className: "h-4 w-4 flex-shrink-0 text-muted-foreground" }),
|
|
43
43
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "font-medium", children: data.phone_number })
|
|
44
44
|
] }),
|
|
45
45
|
(data.city || data.address) && (!hideFields.includes("city") || !hideFields.includes("address")) && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-start gap-3 text-sm text-foreground", children: [
|
|
46
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.MapPin, { className: "
|
|
46
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.MapPin, { className: "mt-0.5 h-4 w-4 flex-shrink-0 text-muted-foreground" }),
|
|
47
47
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "font-medium leading-tight", children: [
|
|
48
48
|
!hideFields.includes("address") ? data.address : null,
|
|
49
49
|
!hideFields.includes("city") ? data.city : null
|
|
@@ -53,21 +53,37 @@ function ContactSkills({ data, hideFields = [], hideSections = [] }) {
|
|
|
53
53
|
] }),
|
|
54
54
|
!hideSections.includes("Habilidades") && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-6", children: [
|
|
55
55
|
hardSkills.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-4", children: [
|
|
56
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("h3", { className: "
|
|
57
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Code, { className: "
|
|
56
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("h3", { className: "flex items-center gap-2 border-b border-border pb-2 text-xl font-bold text-primary", children: [
|
|
57
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Code, { className: "h-5 w-5 text-primary" }),
|
|
58
58
|
"Habilidades T\xE9cnicas"
|
|
59
59
|
] }),
|
|
60
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex flex-wrap gap-2
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-4 flex flex-wrap gap-2", children: hardSkills.map((skill) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
61
|
+
import_ui.Badge,
|
|
62
|
+
{
|
|
63
|
+
variant: "outline",
|
|
64
|
+
className: "pdf-badge border-border/80 bg-muted/20 px-3 py-1 text-sm text-muted-foreground",
|
|
65
|
+
children: [
|
|
66
|
+
skill.name,
|
|
67
|
+
skill.verified && !hideFields.includes("skills.hard.verified") && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.CheckCircle2, { className: "ml-1.5 h-3.5 w-3.5 text-primary-foreground/90" })
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
skill.id
|
|
71
|
+
)) })
|
|
64
72
|
] }),
|
|
65
73
|
softSkills.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-4", children: [
|
|
66
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("h3", { className: "
|
|
67
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Users, { className: "
|
|
74
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("h3", { className: "flex items-center gap-2 border-b border-border pb-2 text-xl font-bold text-primary", children: [
|
|
75
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Users, { className: "h-5 w-5 text-primary" }),
|
|
68
76
|
"Aptitudes"
|
|
69
77
|
] }),
|
|
70
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex flex-wrap gap-2
|
|
78
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-4 flex flex-wrap gap-2", children: softSkills.map((skill) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
79
|
+
import_ui.Badge,
|
|
80
|
+
{
|
|
81
|
+
variant: "outline",
|
|
82
|
+
className: "pdf-badge border-border/80 bg-muted/20 px-3 py-1 text-sm text-muted-foreground",
|
|
83
|
+
children: skill.name
|
|
84
|
+
},
|
|
85
|
+
skill.id
|
|
86
|
+
)) })
|
|
71
87
|
] })
|
|
72
88
|
] })
|
|
73
89
|
] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/domain/resume/resume-preview/sections/contact-skills.tsx"],"sourcesContent":["import { CandidateProfile } from \"../../types\";\nimport { Badge } from \"../../../../ui\";\nimport { User, Mail, Phone, MapPin, Code, CheckCircle2, Users } from \"lucide-react\";\n\ninterface ContactSkillsProps {\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/domain/resume/resume-preview/sections/contact-skills.tsx"],"sourcesContent":["import { CandidateProfile } from \"../../types\";\nimport { Badge } from \"../../../../ui\";\nimport { User, Mail, Phone, MapPin, Code, CheckCircle2, Users } from \"lucide-react\";\n\ninterface ContactSkillsProps {\n data: CandidateProfile;\n hideFields?: string[];\n hideSections?: string[];\n}\n\nexport function ContactSkills({ data, hideFields = [], hideSections = [] }: ContactSkillsProps) {\n const hardSkills = data.skills?.hard || [];\n const softSkills = data.skills?.soft || [];\n\n return (\n <div className=\"space-y-10\">\n {/* Contacto */}\n <div className=\"space-y-4\">\n <h3 className=\"flex items-center gap-2 border-b border-border pb-2 text-xl font-bold text-primary\">\n <User className=\"h-5 w-5 text-primary\" />\n Contacto\n </h3>\n <div className=\"mt-4 space-y-3\">\n {data.email && !hideFields.includes(\"email\") && (\n <div className=\"flex items-center gap-3 text-sm text-foreground\">\n <Mail className=\"h-4 w-4 flex-shrink-0 text-muted-foreground\" />\n <span className=\"break-all font-medium\">{data.email}</span>\n </div>\n )}\n {data.phone_number && !hideFields.includes(\"phone_number\") && (\n <div className=\"flex items-center gap-3 text-sm text-foreground\">\n <Phone className=\"h-4 w-4 flex-shrink-0 text-muted-foreground\" />\n <span className=\"font-medium\">{data.phone_number}</span>\n </div>\n )}\n {(data.city || data.address) &&\n (!hideFields.includes(\"city\") || !hideFields.includes(\"address\")) && (\n <div className=\"flex items-start gap-3 text-sm text-foreground\">\n <MapPin className=\"mt-0.5 h-4 w-4 flex-shrink-0 text-muted-foreground\" />\n <span className=\"font-medium leading-tight\">\n {[\n !hideFields.includes(\"address\") ? data.address : null,\n !hideFields.includes(\"city\") ? data.city : null,\n ]\n .filter(Boolean)\n .join(\", \")}\n </span>\n </div>\n )}\n </div>\n </div>\n\n {/* Skills */}\n {!hideSections.includes(\"Habilidades\") && (\n <div className=\"space-y-6\">\n {hardSkills.length > 0 && (\n <div className=\"space-y-4\">\n <h3 className=\"flex items-center gap-2 border-b border-border pb-2 text-xl font-bold text-primary\">\n <Code className=\"h-5 w-5 text-primary\" />\n Habilidades Técnicas\n </h3>\n <div className=\"mt-4 flex flex-wrap gap-2\">\n {hardSkills.map((skill) => (\n <Badge\n key={skill.id}\n variant=\"outline\"\n className=\"pdf-badge border-border/80 bg-muted/20 px-3 py-1 text-sm text-muted-foreground\"\n >\n {skill.name}\n {skill.verified && !hideFields.includes(\"skills.hard.verified\") && (\n <CheckCircle2 className=\"ml-1.5 h-3.5 w-3.5 text-primary-foreground/90\" />\n )}\n </Badge>\n ))}\n </div>\n </div>\n )}\n\n {softSkills.length > 0 && (\n <div className=\"space-y-4\">\n <h3 className=\"flex items-center gap-2 border-b border-border pb-2 text-xl font-bold text-primary\">\n <Users className=\"h-5 w-5 text-primary\" />\n Aptitudes\n </h3>\n <div className=\"mt-4 flex flex-wrap gap-2\">\n {softSkills.map((skill) => (\n <Badge\n key={skill.id}\n variant=\"outline\"\n className=\"pdf-badge border-border/80 bg-muted/20 px-3 py-1 text-sm text-muted-foreground\"\n >\n {skill.name}\n </Badge>\n ))}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBQ;AAjBR,gBAAsB;AACtB,0BAAqE;AAQ9D,SAAS,cAAc,EAAE,MAAM,aAAa,CAAC,GAAG,eAAe,CAAC,EAAE,GAAuB;AAC9F,QAAM,aAAa,KAAK,QAAQ,QAAQ,CAAC;AACzC,QAAM,aAAa,KAAK,QAAQ,QAAQ,CAAC;AAEzC,SACE,6CAAC,SAAI,WAAU,cAEb;AAAA,iDAAC,SAAI,WAAU,aACb;AAAA,mDAAC,QAAG,WAAU,sFACZ;AAAA,oDAAC,4BAAK,WAAU,wBAAuB;AAAA,QAAE;AAAA,SAE3C;AAAA,MACA,6CAAC,SAAI,WAAU,kBACZ;AAAA,aAAK,SAAS,CAAC,WAAW,SAAS,OAAO,KACzC,6CAAC,SAAI,WAAU,mDACb;AAAA,sDAAC,4BAAK,WAAU,+CAA8C;AAAA,UAC9D,4CAAC,UAAK,WAAU,yBAAyB,eAAK,OAAM;AAAA,WACtD;AAAA,QAED,KAAK,gBAAgB,CAAC,WAAW,SAAS,cAAc,KACvD,6CAAC,SAAI,WAAU,mDACb;AAAA,sDAAC,6BAAM,WAAU,+CAA8C;AAAA,UAC/D,4CAAC,UAAK,WAAU,eAAe,eAAK,cAAa;AAAA,WACnD;AAAA,SAEA,KAAK,QAAQ,KAAK,aACjB,CAAC,WAAW,SAAS,MAAM,KAAK,CAAC,WAAW,SAAS,SAAS,MAC7D,6CAAC,SAAI,WAAU,kDACb;AAAA,sDAAC,8BAAO,WAAU,sDAAqD;AAAA,UACvE,4CAAC,UAAK,WAAU,6BACb;AAAA,YACC,CAAC,WAAW,SAAS,SAAS,IAAI,KAAK,UAAU;AAAA,YACjD,CAAC,WAAW,SAAS,MAAM,IAAI,KAAK,OAAO;AAAA,UAC7C,EACG,OAAO,OAAO,EACd,KAAK,IAAI,GACd;AAAA,WACF;AAAA,SAEN;AAAA,OACF;AAAA,IAGC,CAAC,aAAa,SAAS,aAAa,KACnC,6CAAC,SAAI,WAAU,aACZ;AAAA,iBAAW,SAAS,KACnB,6CAAC,SAAI,WAAU,aACb;AAAA,qDAAC,QAAG,WAAU,sFACZ;AAAA,sDAAC,4BAAK,WAAU,wBAAuB;AAAA,UAAE;AAAA,WAE3C;AAAA,QACA,4CAAC,SAAI,WAAU,6BACZ,qBAAW,IAAI,CAAC,UACf;AAAA,UAAC;AAAA;AAAA,YAEC,SAAQ;AAAA,YACR,WAAU;AAAA,YAET;AAAA,oBAAM;AAAA,cACN,MAAM,YAAY,CAAC,WAAW,SAAS,sBAAsB,KAC5D,4CAAC,oCAAa,WAAU,iDAAgD;AAAA;AAAA;AAAA,UANrE,MAAM;AAAA,QAQb,CACD,GACH;AAAA,SACF;AAAA,MAGD,WAAW,SAAS,KACnB,6CAAC,SAAI,WAAU,aACb;AAAA,qDAAC,QAAG,WAAU,sFACZ;AAAA,sDAAC,6BAAM,WAAU,wBAAuB;AAAA,UAAE;AAAA,WAE5C;AAAA,QACA,4CAAC,SAAI,WAAU,6BACZ,qBAAW,IAAI,CAAC,UACf;AAAA,UAAC;AAAA;AAAA,YAEC,SAAQ;AAAA,YACR,WAAU;AAAA,YAET,gBAAM;AAAA;AAAA,UAJF,MAAM;AAAA,QAKb,CACD,GACH;AAAA,SACF;AAAA,OAEJ;AAAA,KAEJ;AAEJ;","names":[]}
|