@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.
Files changed (273) hide show
  1. package/dist/components/domain/resume/resume-editor/resume-editor.cjs +13 -5
  2. package/dist/components/domain/resume/resume-editor/resume-editor.cjs.map +1 -1
  3. package/dist/components/domain/resume/resume-editor/resume-editor.d.cts +1 -1
  4. package/dist/components/domain/resume/resume-editor/resume-editor.d.ts +1 -1
  5. package/dist/components/domain/resume/resume-editor/resume-editor.js +19 -6
  6. package/dist/components/domain/resume/resume-editor/resume-editor.js.map +1 -1
  7. package/dist/components/domain/resume/resume-editor/sections/academic-info.cjs +1 -1
  8. package/dist/components/domain/resume/resume-editor/sections/academic-info.cjs.map +1 -1
  9. package/dist/components/domain/resume/resume-editor/sections/academic-info.js +1 -1
  10. package/dist/components/domain/resume/resume-editor/sections/academic-info.js.map +1 -1
  11. package/dist/components/domain/resume/resume-editor/sections/activities.cjs +25 -11
  12. package/dist/components/domain/resume/resume-editor/sections/activities.cjs.map +1 -1
  13. package/dist/components/domain/resume/resume-editor/sections/activities.js +25 -11
  14. package/dist/components/domain/resume/resume-editor/sections/activities.js.map +1 -1
  15. package/dist/components/domain/resume/resume-editor/sections/certifications.cjs +27 -12
  16. package/dist/components/domain/resume/resume-editor/sections/certifications.cjs.map +1 -1
  17. package/dist/components/domain/resume/resume-editor/sections/certifications.js +27 -12
  18. package/dist/components/domain/resume/resume-editor/sections/certifications.js.map +1 -1
  19. package/dist/components/domain/resume/resume-editor/sections/education.cjs +25 -11
  20. package/dist/components/domain/resume/resume-editor/sections/education.cjs.map +1 -1
  21. package/dist/components/domain/resume/resume-editor/sections/education.js +25 -11
  22. package/dist/components/domain/resume/resume-editor/sections/education.js.map +1 -1
  23. package/dist/components/domain/resume/resume-editor/sections/experience.cjs +25 -11
  24. package/dist/components/domain/resume/resume-editor/sections/experience.cjs.map +1 -1
  25. package/dist/components/domain/resume/resume-editor/sections/experience.js +25 -11
  26. package/dist/components/domain/resume/resume-editor/sections/experience.js.map +1 -1
  27. package/dist/components/domain/resume/resume-editor/sections/personal-info.cjs +1 -1
  28. package/dist/components/domain/resume/resume-editor/sections/personal-info.cjs.map +1 -1
  29. package/dist/components/domain/resume/resume-editor/sections/personal-info.js +1 -1
  30. package/dist/components/domain/resume/resume-editor/sections/personal-info.js.map +1 -1
  31. package/dist/components/domain/resume/resume-editor/sections/preferences.cjs +2 -2
  32. package/dist/components/domain/resume/resume-editor/sections/preferences.cjs.map +1 -1
  33. package/dist/components/domain/resume/resume-editor/sections/preferences.js +2 -2
  34. package/dist/components/domain/resume/resume-editor/sections/preferences.js.map +1 -1
  35. package/dist/components/domain/resume/resume-editor/sections/requirements.cjs +19 -11
  36. package/dist/components/domain/resume/resume-editor/sections/requirements.cjs.map +1 -1
  37. package/dist/components/domain/resume/resume-editor/sections/requirements.js +29 -12
  38. package/dist/components/domain/resume/resume-editor/sections/requirements.js.map +1 -1
  39. package/dist/components/domain/resume/resume-editor/sections/skills.cjs +30 -10
  40. package/dist/components/domain/resume/resume-editor/sections/skills.cjs.map +1 -1
  41. package/dist/components/domain/resume/resume-editor/sections/skills.js +30 -10
  42. package/dist/components/domain/resume/resume-editor/sections/skills.js.map +1 -1
  43. package/dist/components/domain/resume/resume-preview/resume-preview.cjs +27 -11
  44. package/dist/components/domain/resume/resume-preview/resume-preview.cjs.map +1 -1
  45. package/dist/components/domain/resume/resume-preview/resume-preview.js +27 -11
  46. package/dist/components/domain/resume/resume-preview/resume-preview.js.map +1 -1
  47. package/dist/components/domain/resume/resume-preview/sections/contact-skills.cjs +31 -15
  48. package/dist/components/domain/resume/resume-preview/sections/contact-skills.cjs.map +1 -1
  49. package/dist/components/domain/resume/resume-preview/sections/contact-skills.js +31 -15
  50. package/dist/components/domain/resume/resume-preview/sections/contact-skills.js.map +1 -1
  51. package/dist/components/domain/resume/resume-preview/sections/experience-education.cjs +131 -73
  52. package/dist/components/domain/resume/resume-preview/sections/experience-education.cjs.map +1 -1
  53. package/dist/components/domain/resume/resume-preview/sections/experience-education.d.cts +1 -1
  54. package/dist/components/domain/resume/resume-preview/sections/experience-education.d.ts +1 -1
  55. package/dist/components/domain/resume/resume-preview/sections/experience-education.js +131 -73
  56. package/dist/components/domain/resume/resume-preview/sections/experience-education.js.map +1 -1
  57. package/dist/components/domain/resume/resume-preview/sections/footer-preview.cjs +2 -2
  58. package/dist/components/domain/resume/resume-preview/sections/footer-preview.cjs.map +1 -1
  59. package/dist/components/domain/resume/resume-preview/sections/footer-preview.js +2 -2
  60. package/dist/components/domain/resume/resume-preview/sections/footer-preview.js.map +1 -1
  61. package/dist/components/domain/resume/resume-preview/sections/header-preview.cjs +7 -7
  62. package/dist/components/domain/resume/resume-preview/sections/header-preview.cjs.map +1 -1
  63. package/dist/components/domain/resume/resume-preview/sections/header-preview.js +7 -7
  64. package/dist/components/domain/resume/resume-preview/sections/header-preview.js.map +1 -1
  65. package/dist/components/domain/resume/resume.cjs +46 -29
  66. package/dist/components/domain/resume/resume.cjs.map +1 -1
  67. package/dist/components/domain/resume/resume.js +46 -29
  68. package/dist/components/domain/resume/resume.js.map +1 -1
  69. package/dist/components/ui/accordion/accordion.cjs +1 -3
  70. package/dist/components/ui/accordion/accordion.cjs.map +1 -1
  71. package/dist/components/ui/accordion/accordion.js +1 -3
  72. package/dist/components/ui/accordion/accordion.js.map +1 -1
  73. package/dist/components/ui/alert/alert.cjs +12 -25
  74. package/dist/components/ui/alert/alert.cjs.map +1 -1
  75. package/dist/components/ui/alert/alert.js +12 -25
  76. package/dist/components/ui/alert/alert.js.map +1 -1
  77. package/dist/components/ui/alert-dialog/alert-dialog.cjs +12 -46
  78. package/dist/components/ui/alert-dialog/alert-dialog.cjs.map +1 -1
  79. package/dist/components/ui/alert-dialog/alert-dialog.js +12 -46
  80. package/dist/components/ui/alert-dialog/alert-dialog.js.map +1 -1
  81. package/dist/components/ui/autocomplete/autocomplete.cjs +12 -12
  82. package/dist/components/ui/autocomplete/autocomplete.cjs.map +1 -1
  83. package/dist/components/ui/autocomplete/autocomplete.js +12 -12
  84. package/dist/components/ui/autocomplete/autocomplete.js.map +1 -1
  85. package/dist/components/ui/avatar/avatar.cjs +1 -4
  86. package/dist/components/ui/avatar/avatar.cjs.map +1 -1
  87. package/dist/components/ui/avatar/avatar.js +1 -4
  88. package/dist/components/ui/avatar/avatar.js.map +1 -1
  89. package/dist/components/ui/badge/badge.cjs +1 -8
  90. package/dist/components/ui/badge/badge.cjs.map +1 -1
  91. package/dist/components/ui/badge/badge.js +1 -8
  92. package/dist/components/ui/badge/badge.js.map +1 -1
  93. package/dist/components/ui/breadcrumb/breadcrumb.cjs +6 -19
  94. package/dist/components/ui/breadcrumb/breadcrumb.cjs.map +1 -1
  95. package/dist/components/ui/breadcrumb/breadcrumb.js +6 -19
  96. package/dist/components/ui/breadcrumb/breadcrumb.js.map +1 -1
  97. package/dist/components/ui/button/button.cjs.map +1 -1
  98. package/dist/components/ui/button/button.js.map +1 -1
  99. package/dist/components/ui/calendar/calendar.cjs +1 -6
  100. package/dist/components/ui/calendar/calendar.cjs.map +1 -1
  101. package/dist/components/ui/calendar/calendar.js +1 -6
  102. package/dist/components/ui/calendar/calendar.js.map +1 -1
  103. package/dist/components/ui/card/card.cjs +7 -17
  104. package/dist/components/ui/card/card.cjs.map +1 -1
  105. package/dist/components/ui/card/card.js +7 -17
  106. package/dist/components/ui/card/card.js.map +1 -1
  107. package/dist/components/ui/carousel/carousel.cjs +4 -11
  108. package/dist/components/ui/carousel/carousel.cjs.map +1 -1
  109. package/dist/components/ui/carousel/carousel.js +4 -11
  110. package/dist/components/ui/carousel/carousel.js.map +1 -1
  111. package/dist/components/ui/checkbox/checkbox.cjs +1 -7
  112. package/dist/components/ui/checkbox/checkbox.cjs.map +1 -1
  113. package/dist/components/ui/checkbox/checkbox.js +1 -7
  114. package/dist/components/ui/checkbox/checkbox.js.map +1 -1
  115. package/dist/components/ui/collapsible/collapsible.cjs.map +1 -1
  116. package/dist/components/ui/collapsible/collapsible.js.map +1 -1
  117. package/dist/components/ui/combobox/combobox.cjs +1 -3
  118. package/dist/components/ui/combobox/combobox.cjs.map +1 -1
  119. package/dist/components/ui/combobox/combobox.js +1 -3
  120. package/dist/components/ui/combobox/combobox.js.map +1 -1
  121. package/dist/components/ui/command/command.cjs +7 -24
  122. package/dist/components/ui/command/command.cjs.map +1 -1
  123. package/dist/components/ui/command/command.js +7 -24
  124. package/dist/components/ui/command/command.js.map +1 -1
  125. package/dist/components/ui/context-menu/context-menu.cjs +4 -18
  126. package/dist/components/ui/context-menu/context-menu.cjs.map +1 -1
  127. package/dist/components/ui/context-menu/context-menu.js +4 -18
  128. package/dist/components/ui/context-menu/context-menu.js.map +1 -1
  129. package/dist/components/ui/date-picker/date-picker.cjs +21 -57
  130. package/dist/components/ui/date-picker/date-picker.cjs.map +1 -1
  131. package/dist/components/ui/date-picker/date-picker.js +22 -62
  132. package/dist/components/ui/date-picker/date-picker.js.map +1 -1
  133. package/dist/components/ui/dialog/dialog.cjs +12 -29
  134. package/dist/components/ui/dialog/dialog.cjs.map +1 -1
  135. package/dist/components/ui/dialog/dialog.js +12 -29
  136. package/dist/components/ui/dialog/dialog.js.map +1 -1
  137. package/dist/components/ui/drawer/drawer.cjs +9 -23
  138. package/dist/components/ui/drawer/drawer.cjs.map +1 -1
  139. package/dist/components/ui/drawer/drawer.js +9 -23
  140. package/dist/components/ui/drawer/drawer.js.map +1 -1
  141. package/dist/components/ui/dropdown-menu/dropdown-menu.cjs +3 -16
  142. package/dist/components/ui/dropdown-menu/dropdown-menu.cjs.map +1 -1
  143. package/dist/components/ui/dropdown-menu/dropdown-menu.js +3 -16
  144. package/dist/components/ui/dropdown-menu/dropdown-menu.js.map +1 -1
  145. package/dist/components/ui/form/form.cjs +7 -24
  146. package/dist/components/ui/form/form.cjs.map +1 -1
  147. package/dist/components/ui/form/form.js +7 -24
  148. package/dist/components/ui/form/form.js.map +1 -1
  149. package/dist/components/ui/hover-card/hover-card.cjs +2 -6
  150. package/dist/components/ui/hover-card/hover-card.cjs.map +1 -1
  151. package/dist/components/ui/hover-card/hover-card.js +2 -6
  152. package/dist/components/ui/hover-card/hover-card.js.map +1 -1
  153. package/dist/components/ui/icon/icon.cjs +1 -1
  154. package/dist/components/ui/icon/icon.cjs.map +1 -1
  155. package/dist/components/ui/icon/icon.js +1 -1
  156. package/dist/components/ui/icon/icon.js.map +1 -1
  157. package/dist/components/ui/input/input.cjs +1 -1
  158. package/dist/components/ui/input/input.cjs.map +1 -1
  159. package/dist/components/ui/input/input.js +1 -1
  160. package/dist/components/ui/input/input.js.map +1 -1
  161. package/dist/components/ui/input-field/input-field.cjs +1 -1
  162. package/dist/components/ui/input-field/input-field.cjs.map +1 -1
  163. package/dist/components/ui/input-field/input-field.js +1 -1
  164. package/dist/components/ui/input-field/input-field.js.map +1 -1
  165. package/dist/components/ui/input-otp/input-otp.cjs +5 -15
  166. package/dist/components/ui/input-otp/input-otp.cjs.map +1 -1
  167. package/dist/components/ui/input-otp/input-otp.js +5 -15
  168. package/dist/components/ui/input-otp/input-otp.js.map +1 -1
  169. package/dist/components/ui/label/label.cjs +2 -5
  170. package/dist/components/ui/label/label.cjs.map +1 -1
  171. package/dist/components/ui/label/label.js +2 -5
  172. package/dist/components/ui/label/label.js.map +1 -1
  173. package/dist/components/ui/loading-state/loading-state.cjs +3 -8
  174. package/dist/components/ui/loading-state/loading-state.cjs.map +1 -1
  175. package/dist/components/ui/loading-state/loading-state.d.cts +1 -1
  176. package/dist/components/ui/loading-state/loading-state.d.ts +1 -1
  177. package/dist/components/ui/loading-state/loading-state.js +3 -8
  178. package/dist/components/ui/loading-state/loading-state.js.map +1 -1
  179. package/dist/components/ui/menubar/menubar.cjs +5 -21
  180. package/dist/components/ui/menubar/menubar.cjs.map +1 -1
  181. package/dist/components/ui/menubar/menubar.js +5 -21
  182. package/dist/components/ui/menubar/menubar.js.map +1 -1
  183. package/dist/components/ui/month-year-picker/month-year-picker.cjs +5 -23
  184. package/dist/components/ui/month-year-picker/month-year-picker.cjs.map +1 -1
  185. package/dist/components/ui/month-year-picker/month-year-picker.js +6 -28
  186. package/dist/components/ui/month-year-picker/month-year-picker.js.map +1 -1
  187. package/dist/components/ui/multi-select/multi-select.cjs +12 -29
  188. package/dist/components/ui/multi-select/multi-select.cjs.map +1 -1
  189. package/dist/components/ui/multi-select/multi-select.js +12 -29
  190. package/dist/components/ui/multi-select/multi-select.js.map +1 -1
  191. package/dist/components/ui/navigation-menu/navigation-menu.cjs +7 -13
  192. package/dist/components/ui/navigation-menu/navigation-menu.cjs.map +1 -1
  193. package/dist/components/ui/navigation-menu/navigation-menu.js +7 -13
  194. package/dist/components/ui/navigation-menu/navigation-menu.js.map +1 -1
  195. package/dist/components/ui/pagination/pagination.cjs +4 -18
  196. package/dist/components/ui/pagination/pagination.cjs.map +1 -1
  197. package/dist/components/ui/pagination/pagination.js +4 -18
  198. package/dist/components/ui/pagination/pagination.js.map +1 -1
  199. package/dist/components/ui/popover/popover.cjs.map +1 -1
  200. package/dist/components/ui/popover/popover.js.map +1 -1
  201. package/dist/components/ui/progress/progress.cjs +2 -2
  202. package/dist/components/ui/progress/progress.cjs.map +1 -1
  203. package/dist/components/ui/progress/progress.js +2 -2
  204. package/dist/components/ui/progress/progress.js.map +1 -1
  205. package/dist/components/ui/radio-group/radio-group.cjs +1 -8
  206. package/dist/components/ui/radio-group/radio-group.cjs.map +1 -1
  207. package/dist/components/ui/radio-group/radio-group.js +1 -8
  208. package/dist/components/ui/radio-group/radio-group.js.map +1 -1
  209. package/dist/components/ui/resizable/resizable.cjs +3 -6
  210. package/dist/components/ui/resizable/resizable.cjs.map +1 -1
  211. package/dist/components/ui/resizable/resizable.js +4 -11
  212. package/dist/components/ui/resizable/resizable.js.map +1 -1
  213. package/dist/components/ui/rich-text-editor/rich-text-editor.cjs +25 -37
  214. package/dist/components/ui/rich-text-editor/rich-text-editor.cjs.map +1 -1
  215. package/dist/components/ui/rich-text-editor/rich-text-editor.js +25 -37
  216. package/dist/components/ui/rich-text-editor/rich-text-editor.js.map +1 -1
  217. package/dist/components/ui/scroll-area/scroll-area.cjs.map +1 -1
  218. package/dist/components/ui/scroll-area/scroll-area.js.map +1 -1
  219. package/dist/components/ui/section-loader/section-loader.cjs +4 -15
  220. package/dist/components/ui/section-loader/section-loader.cjs.map +1 -1
  221. package/dist/components/ui/section-loader/section-loader.js +4 -15
  222. package/dist/components/ui/section-loader/section-loader.js.map +1 -1
  223. package/dist/components/ui/select/select.cjs +11 -29
  224. package/dist/components/ui/select/select.cjs.map +1 -1
  225. package/dist/components/ui/select/select.js +11 -29
  226. package/dist/components/ui/select/select.js.map +1 -1
  227. package/dist/components/ui/separator/separator.cjs +14 -16
  228. package/dist/components/ui/separator/separator.cjs.map +1 -1
  229. package/dist/components/ui/separator/separator.js +14 -16
  230. package/dist/components/ui/separator/separator.js.map +1 -1
  231. package/dist/components/ui/sheet/sheet.cjs +10 -24
  232. package/dist/components/ui/sheet/sheet.cjs.map +1 -1
  233. package/dist/components/ui/sheet/sheet.js +10 -24
  234. package/dist/components/ui/sheet/sheet.js.map +1 -1
  235. package/dist/components/ui/skeleton/skeleton.cjs +2 -11
  236. package/dist/components/ui/skeleton/skeleton.cjs.map +1 -1
  237. package/dist/components/ui/skeleton/skeleton.js +2 -11
  238. package/dist/components/ui/skeleton/skeleton.js.map +1 -1
  239. package/dist/components/ui/slider/slider.cjs +1 -4
  240. package/dist/components/ui/slider/slider.cjs.map +1 -1
  241. package/dist/components/ui/slider/slider.js +1 -4
  242. package/dist/components/ui/slider/slider.js.map +1 -1
  243. package/dist/components/ui/sonner/sonner.cjs.map +1 -1
  244. package/dist/components/ui/sonner/sonner.js.map +1 -1
  245. package/dist/components/ui/spinner/spinner.cjs +1 -1
  246. package/dist/components/ui/spinner/spinner.cjs.map +1 -1
  247. package/dist/components/ui/spinner/spinner.js +1 -1
  248. package/dist/components/ui/spinner/spinner.js.map +1 -1
  249. package/dist/components/ui/switch/switch.cjs.map +1 -1
  250. package/dist/components/ui/switch/switch.js.map +1 -1
  251. package/dist/components/ui/table/table.cjs +6 -28
  252. package/dist/components/ui/table/table.cjs.map +1 -1
  253. package/dist/components/ui/table/table.js +6 -28
  254. package/dist/components/ui/table/table.js.map +1 -1
  255. package/dist/components/ui/tabs/tabs.cjs.map +1 -1
  256. package/dist/components/ui/tabs/tabs.js.map +1 -1
  257. package/dist/components/ui/textarea/textarea.cjs +1 -4
  258. package/dist/components/ui/textarea/textarea.cjs.map +1 -1
  259. package/dist/components/ui/textarea/textarea.js +1 -4
  260. package/dist/components/ui/textarea/textarea.js.map +1 -1
  261. package/dist/components/ui/toast/toast.cjs +3 -12
  262. package/dist/components/ui/toast/toast.cjs.map +1 -1
  263. package/dist/components/ui/toast/toast.js +3 -12
  264. package/dist/components/ui/toast/toast.js.map +1 -1
  265. package/dist/components/ui/toggle/toggle.cjs.map +1 -1
  266. package/dist/components/ui/toggle/toggle.js.map +1 -1
  267. package/dist/components/ui/toggle-group/toggle-group.cjs +1 -4
  268. package/dist/components/ui/toggle-group/toggle-group.cjs.map +1 -1
  269. package/dist/components/ui/toggle-group/toggle-group.js +1 -4
  270. package/dist/components/ui/toggle-group/toggle-group.js.map +1 -1
  271. package/dist/components/ui/tooltip/tooltip.cjs.map +1 -1
  272. package/dist/components/ui/tooltip/tooltip.js.map +1 -1
  273. 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({ id: `temp-skill-${Math.random().toString(36).substring(2, 9)}`, name: "", type: type === "hard" ? "T\xE9cnica" : "Interpersonal", verified: false });
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)("label", { htmlFor: `verified-${type}-${item.id}`, className: "text-sm text-muted-foreground flex items-center gap-1", children: "Verificado" })
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:text-destructive hover:bg-destructive/10",
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: "w-4 h-4" })
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)(import_ui.Button, { variant: "outline", className: "w-full flex items-center justify-center gap-2 mt-2", onClick: () => handleAdd(type), children: [
93
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Plus, { className: "w-4 h-4" }),
94
- "A\xF1adir habilidad"
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 pb-4", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ui.Tabs, { defaultValue: "hard", className: "w-full", children: [
98
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ui.TabsList, { className: "w-full grid grid-cols-2", children: [
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 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 = (type: 'hard' | 'soft', index: number, field: keyof CVSkillItem, value: any) => {\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({ id: `temp-skill-${Math.random().toString(36).substring(2, 9)}`, name: \"\", type: type === 'hard' ? 'Técnica' : 'Interpersonal', verified: false });\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 htmlFor={`verified-${type}-${item.id}`} className=\"text-sm text-muted-foreground flex items-center gap-1\">\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:text-destructive hover:bg-destructive/10\"\n onClick={() => handleRemove(type, index)}\n >\n <Trash2 className=\"w-4 h-4\" />\n </Button>\n </div>\n ))}\n <Button variant=\"outline\" className=\"w-full flex items-center justify-center gap-2 mt-2\" onClick={() => handleAdd(type)}>\n <Plus className=\"w-4 h-4\" />\n Añadir habilidad\n </Button>\n </div>\n );\n\n return (\n <div className=\"pt-2 pb-4\">\n <Tabs defaultValue=\"hard\" className=\"w-full\">\n <TabsList className=\"w-full grid grid-cols-2\">\n <TabsTrigger value=\"hard\">Técnicas</TabsTrigger>\n <TabsTrigger value=\"soft\">Interpersonales</TabsTrigger>\n </TabsList>\n <TabsContent value=\"hard\">\n {renderSkillList('hard', hard)}\n </TabsContent>\n <TabsContent value=\"soft\">\n {renderSkillList('soft', soft)}\n </TabsContent>\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
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({ id: `temp-skill-${Math.random().toString(36).substring(2, 9)}`, name: "", type: type === "hard" ? "T\xE9cnica" : "Interpersonal", verified: false });
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("label", { htmlFor: `verified-${type}-${item.id}`, className: "text-sm text-muted-foreground flex items-center gap-1", children: "Verificado" })
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:text-destructive hover:bg-destructive/10",
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: "w-4 h-4" })
77
+ children: /* @__PURE__ */ jsx(Trash2, { className: "h-4 w-4" })
66
78
  }
67
79
  )
68
80
  ] }, item.id)),
69
- /* @__PURE__ */ jsxs(Button, { variant: "outline", className: "w-full flex items-center justify-center gap-2 mt-2", onClick: () => handleAdd(type), children: [
70
- /* @__PURE__ */ jsx(Plus, { className: "w-4 h-4" }),
71
- "A\xF1adir habilidad"
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 pb-4", children: /* @__PURE__ */ jsxs(Tabs, { defaultValue: "hard", className: "w-full", children: [
75
- /* @__PURE__ */ jsxs(TabsList, { className: "w-full grid grid-cols-2", children: [
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 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 = (type: 'hard' | 'soft', index: number, field: keyof CVSkillItem, value: any) => {\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({ id: `temp-skill-${Math.random().toString(36).substring(2, 9)}`, name: \"\", type: type === 'hard' ? 'Técnica' : 'Interpersonal', verified: false });\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 htmlFor={`verified-${type}-${item.id}`} className=\"text-sm text-muted-foreground flex items-center gap-1\">\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:text-destructive hover:bg-destructive/10\"\n onClick={() => handleRemove(type, index)}\n >\n <Trash2 className=\"w-4 h-4\" />\n </Button>\n </div>\n ))}\n <Button variant=\"outline\" className=\"w-full flex items-center justify-center gap-2 mt-2\" onClick={() => handleAdd(type)}>\n <Plus className=\"w-4 h-4\" />\n Añadir habilidad\n </Button>\n </div>\n );\n\n return (\n <div className=\"pt-2 pb-4\">\n <Tabs defaultValue=\"hard\" className=\"w-full\">\n <TabsList className=\"w-full grid grid-cols-2\">\n <TabsTrigger value=\"hard\">Técnicas</TabsTrigger>\n <TabsTrigger value=\"soft\">Interpersonales</TabsTrigger>\n </TabsList>\n <TabsContent value=\"hard\">\n {renderSkillList('hard', hard)}\n </TabsContent>\n <TabsContent value=\"soft\">\n {renderSkillList('soft', soft)}\n </TabsContent>\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
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("@/components/domain/resume/resume-preview/sections/header-preview");
37
- var import_contact_skills = require("@/components/domain/resume/resume-preview/sections/contact-skills");
38
- var import_experience_education = require("@/components/domain/resume/resume-preview/sections/experience-education");
39
- var import_footer_preview = require("@/components/domain/resume/resume-preview/sections/footer-preview");
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: "w-full min-h-[1056px] bg-card text-card-foreground border border-border shadow-2xl rounded-sm p-8 sm:p-12 md:p-16 flex flex-col mx-auto relative",
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 top-0 left-0 w-full h-2 ${theme ? "" : "bg-gradient-to-r from-primary to-primary/50"}`,
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)(import_header_preview.HeaderPreview, { data, headerSlot, theme, hideFields }),
58
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid grid-cols-1 lg:grid-cols-12 gap-10 mt-8", children: [
59
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "lg:col-span-4 lg:pr-6 space-y-8", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_contact_skills.ContactSkills, { data, hideFields, hideSections }) }),
60
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "hidden lg:block absolute left-[33.33%] top-48 bottom-16 w-px bg-border/40" }),
61
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "lg:col-span-8 space-y-8", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_experience_education.ExperienceEducation, { data, theme, hideFields, hideSections }) })
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 \"@/components/domain/resume/types\";\nimport { HeaderPreview } from \"@/components/domain/resume/resume-preview/sections/header-preview\";\nimport { ContactSkills } from \"@/components/domain/resume/resume-preview/sections/contact-skills\";\nimport { ExperienceEducation } from \"@/components/domain/resume/resume-preview/sections/experience-education\";\nimport { FooterPreview } from \"@/components/domain/resume/resume-preview/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=\"w-full min-h-[1056px] bg-card text-card-foreground border border-border shadow-2xl rounded-sm p-8 sm:p-12 md:p-16 flex flex-col mx-auto relative\"\n >\n {/* Subtle decorative top bar */}\n <div\n className={`absolute top-0 left-0 w-full h-2 ${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 data={data} headerSlot={headerSlot} theme={theme} hideFields={hideFields} />\n )}\n\n {/* Main Content Layout */}\n <div className=\"grid grid-cols-1 lg:grid-cols-12 gap-10 mt-8\">\n\n {/* Left Column (4/12) */}\n <div className=\"lg:col-span-4 lg:pr-6 space-y-8\">\n <ContactSkills data={data} hideFields={hideFields} hideSections={hideSections} />\n </div>\n\n {/* Vertical Divider for desktop */}\n <div className=\"hidden lg:block absolute left-[33.33%] top-48 bottom-16 w-px bg-border/40\" />\n\n {/* Right Column (8/12) */}\n <div className=\"lg:col-span-8 space-y-8\">\n <ExperienceEducation data={data} theme={theme} hideFields={hideFields} hideSections={hideSections} />\n </div>\n\n </div>\n\n <FooterPreview />\n </div>\n );\n }\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BgB;AA1BhB,YAAuB;AAEvB,4BAA8B;AAC9B,4BAA8B;AAC9B,kCAAoC;AACpC,4BAA8B;AAUvB,MAAM,gBAAgB,MAAM;AAAA,EAC/B,SAASA,eAAc,EAAE,MAAM,YAAY,OAAO,aAAa,CAAC,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK;AACzF,UAAM,aAAa,QAAQ,EAAE,iBAAiB,MAAM,IAAI;AAExD,WACI;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA,IAAG;AAAA,QACH,WAAU;AAAA,QAGV;AAAA;AAAA,YAAC;AAAA;AAAA,cACG,WAAW,oCAAoC,QAAQ,KAAK,6CAA6C;AAAA,cACzG,OAAO;AAAA;AAAA,UACX;AAAA,UAGC,CAAC,aAAa,SAAS,yBAAsB,KAC1C,4CAAC,uCAAc,MAAY,YAAwB,OAAc,YAAwB;AAAA,UAI7F,6CAAC,SAAI,WAAU,gDAGX;AAAA,wDAAC,SAAI,WAAU,mCACX,sDAAC,uCAAc,MAAY,YAAwB,cAA4B,GACnF;AAAA,YAGA,4CAAC,SAAI,WAAU,6EAA4E;AAAA,YAG3F,4CAAC,SAAI,WAAU,2BACX,sDAAC,mDAAoB,MAAY,OAAc,YAAwB,cAA4B,GACvG;AAAA,aAEJ;AAAA,UAEA,4CAAC,uCAAc;AAAA;AAAA;AAAA,IACnB;AAAA,EAER;AACJ;","names":["ResumePreview"]}
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 "@/components/domain/resume/resume-preview/sections/header-preview";
4
- import { ContactSkills } from "@/components/domain/resume/resume-preview/sections/contact-skills";
5
- import { ExperienceEducation } from "@/components/domain/resume/resume-preview/sections/experience-education";
6
- import { FooterPreview } from "@/components/domain/resume/resume-preview/sections/footer-preview";
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: "w-full min-h-[1056px] bg-card text-card-foreground border border-border shadow-2xl rounded-sm p-8 sm:p-12 md:p-16 flex flex-col mx-auto relative",
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 top-0 left-0 w-full h-2 ${theme ? "" : "bg-gradient-to-r from-primary to-primary/50"}`,
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(HeaderPreview, { data, headerSlot, theme, hideFields }),
25
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-12 gap-10 mt-8", children: [
26
- /* @__PURE__ */ jsx("div", { className: "lg:col-span-4 lg:pr-6 space-y-8", children: /* @__PURE__ */ jsx(ContactSkills, { data, hideFields, hideSections }) }),
27
- /* @__PURE__ */ jsx("div", { className: "hidden lg:block absolute left-[33.33%] top-48 bottom-16 w-px bg-border/40" }),
28
- /* @__PURE__ */ jsx("div", { className: "lg:col-span-8 space-y-8", children: /* @__PURE__ */ jsx(ExperienceEducation, { data, theme, hideFields, hideSections }) })
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 \"@/components/domain/resume/types\";\nimport { HeaderPreview } from \"@/components/domain/resume/resume-preview/sections/header-preview\";\nimport { ContactSkills } from \"@/components/domain/resume/resume-preview/sections/contact-skills\";\nimport { ExperienceEducation } from \"@/components/domain/resume/resume-preview/sections/experience-education\";\nimport { FooterPreview } from \"@/components/domain/resume/resume-preview/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=\"w-full min-h-[1056px] bg-card text-card-foreground border border-border shadow-2xl rounded-sm p-8 sm:p-12 md:p-16 flex flex-col mx-auto relative\"\n >\n {/* Subtle decorative top bar */}\n <div\n className={`absolute top-0 left-0 w-full h-2 ${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 data={data} headerSlot={headerSlot} theme={theme} hideFields={hideFields} />\n )}\n\n {/* Main Content Layout */}\n <div className=\"grid grid-cols-1 lg:grid-cols-12 gap-10 mt-8\">\n\n {/* Left Column (4/12) */}\n <div className=\"lg:col-span-4 lg:pr-6 space-y-8\">\n <ContactSkills data={data} hideFields={hideFields} hideSections={hideSections} />\n </div>\n\n {/* Vertical Divider for desktop */}\n <div className=\"hidden lg:block absolute left-[33.33%] top-48 bottom-16 w-px bg-border/40\" />\n\n {/* Right Column (8/12) */}\n <div className=\"lg:col-span-8 space-y-8\">\n <ExperienceEducation data={data} theme={theme} hideFields={hideFields} hideSections={hideSections} />\n </div>\n\n </div>\n\n <FooterPreview />\n </div>\n );\n }\n);\n"],"mappings":"AA0BgB,cAWA,YAXA;AA1BhB,YAAY,WAAW;AAEvB,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,2BAA2B;AACpC,SAAS,qBAAqB;AAUvB,MAAM,gBAAgB,MAAM;AAAA,EAC/B,SAASA,eAAc,EAAE,MAAM,YAAY,OAAO,aAAa,CAAC,GAAG,eAAe,CAAC,EAAE,GAAG,KAAK;AACzF,UAAM,aAAa,QAAQ,EAAE,iBAAiB,MAAM,IAAI;AAExD,WACI;AAAA,MAAC;AAAA;AAAA,QACG;AAAA,QACA,IAAG;AAAA,QACH,WAAU;AAAA,QAGV;AAAA;AAAA,YAAC;AAAA;AAAA,cACG,WAAW,oCAAoC,QAAQ,KAAK,6CAA6C;AAAA,cACzG,OAAO;AAAA;AAAA,UACX;AAAA,UAGC,CAAC,aAAa,SAAS,yBAAsB,KAC1C,oBAAC,iBAAc,MAAY,YAAwB,OAAc,YAAwB;AAAA,UAI7F,qBAAC,SAAI,WAAU,gDAGX;AAAA,gCAAC,SAAI,WAAU,mCACX,8BAAC,iBAAc,MAAY,YAAwB,cAA4B,GACnF;AAAA,YAGA,oBAAC,SAAI,WAAU,6EAA4E;AAAA,YAG3F,oBAAC,SAAI,WAAU,2BACX,8BAAC,uBAAoB,MAAY,OAAc,YAAwB,cAA4B,GACvG;AAAA,aAEJ;AAAA,UAEA,oBAAC,iBAAc;AAAA;AAAA;AAAA,IACnB;AAAA,EAER;AACJ;","names":["ResumePreview"]}
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: "text-xl font-bold text-primary flex items-center gap-2 border-b border-border pb-2", children: [
33
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.User, { className: "w-5 h-5 text-primary" }),
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 mt-4", children: [
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: "w-4 h-4 text-muted-foreground flex-shrink-0" }),
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: "w-4 h-4 text-muted-foreground flex-shrink-0" }),
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: "w-4 h-4 text-muted-foreground flex-shrink-0 mt-0.5" }),
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: "text-xl font-bold text-primary flex items-center gap-2 border-b border-border pb-2", children: [
57
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Code, { className: "w-5 h-5 text-primary" }),
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 mt-4", children: hardSkills.map((skill) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ui.Badge, { variant: "outline", className: "text-muted-foreground text-sm py-1 px-3 bg-muted/20 border-border/80 pdf-badge", children: [
61
- skill.name,
62
- skill.verified && !hideFields.includes("skills.hard.verified") && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.CheckCircle2, { className: "w-3.5 h-3.5 ml-1.5 text-primary-foreground/90" })
63
- ] }, skill.id)) })
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: "text-xl font-bold text-primary flex items-center gap-2 border-b border-border pb-2", children: [
67
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Users, { className: "w-5 h-5 text-primary" }),
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 mt-4", children: softSkills.map((skill) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ui.Badge, { variant: "outline", className: "text-muted-foreground text-sm py-1 px-3 bg-muted/20 border-border/80 pdf-badge", children: skill.name }, skill.id)) })
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 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=\"text-xl font-bold text-primary flex items-center gap-2 border-b border-border pb-2\">\n <User className=\"w-5 h-5 text-primary\" />\n Contacto\n </h3>\n <div className=\"space-y-3 mt-4\">\n {data.email && !hideFields.includes(\"email\") && (\n <div className=\"flex items-center gap-3 text-sm text-foreground\">\n <Mail className=\"w-4 h-4 text-muted-foreground flex-shrink-0\" />\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=\"w-4 h-4 text-muted-foreground flex-shrink-0\" />\n <span className=\"font-medium\">{data.phone_number}</span>\n </div>\n )}\n {(data.city || data.address) && (!hideFields.includes(\"city\") || !hideFields.includes(\"address\")) && (\n <div className=\"flex items-start gap-3 text-sm text-foreground\">\n <MapPin className=\"w-4 h-4 text-muted-foreground flex-shrink-0 mt-0.5\" />\n <span className=\"font-medium leading-tight\">\n {[\n !hideFields.includes(\"address\") ? data.address : null,\n !hideFields.includes(\"city\") ? data.city : null\n ].filter(Boolean).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=\"text-xl font-bold text-primary flex items-center gap-2 border-b border-border pb-2\">\n <Code className=\"w-5 h-5 text-primary\" />\n Habilidades Técnicas\n </h3>\n <div className=\"flex flex-wrap gap-2 mt-4\">\n {hardSkills.map((skill) => (\n <Badge key={skill.id} variant=\"outline\" className=\"text-muted-foreground text-sm py-1 px-3 bg-muted/20 border-border/80 pdf-badge\">\n {skill.name}\n {skill.verified && !hideFields.includes(\"skills.hard.verified\") && (\n <CheckCircle2 className=\"w-3.5 h-3.5 ml-1.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=\"text-xl font-bold text-primary flex items-center gap-2 border-b border-border pb-2\">\n <Users className=\"w-5 h-5 text-primary\" />\n Aptitudes\n </h3>\n <div className=\"flex flex-wrap gap-2 mt-4\">\n {softSkills.map((skill) => (\n <Badge key={skill.id} variant=\"outline\" className=\"text-muted-foreground text-sm py-1 px-3 bg-muted/20 border-border/80 pdf-badge\">\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;AAkBgB;AAjBhB,gBAAsB;AACtB,0BAAqE;AAQ9D,SAAS,cAAc,EAAE,MAAM,aAAa,CAAC,GAAG,eAAe,CAAC,EAAE,GAAuB;AAC5F,QAAM,aAAa,KAAK,QAAQ,QAAQ,CAAC;AACzC,QAAM,aAAa,KAAK,QAAQ,QAAQ,CAAC;AAEzC,SACI,6CAAC,SAAI,WAAU,cAEX;AAAA,iDAAC,SAAI,WAAU,aACX;AAAA,mDAAC,QAAG,WAAU,sFACV;AAAA,oDAAC,4BAAK,WAAU,wBAAuB;AAAA,QAAE;AAAA,SAE7C;AAAA,MACA,6CAAC,SAAI,WAAU,kBACV;AAAA,aAAK,SAAS,CAAC,WAAW,SAAS,OAAO,KACvC,6CAAC,SAAI,WAAU,mDACX;AAAA,sDAAC,4BAAK,WAAU,+CAA8C;AAAA,UAC9D,4CAAC,UAAK,WAAU,yBAAyB,eAAK,OAAM;AAAA,WACxD;AAAA,QAEH,KAAK,gBAAgB,CAAC,WAAW,SAAS,cAAc,KACrD,6CAAC,SAAI,WAAU,mDACX;AAAA,sDAAC,6BAAM,WAAU,+CAA8C;AAAA,UAC/D,4CAAC,UAAK,WAAU,eAAe,eAAK,cAAa;AAAA,WACrD;AAAA,SAEF,KAAK,QAAQ,KAAK,aAAa,CAAC,WAAW,SAAS,MAAM,KAAK,CAAC,WAAW,SAAS,SAAS,MAC3F,6CAAC,SAAI,WAAU,kDACX;AAAA,sDAAC,8BAAO,WAAU,sDAAqD;AAAA,UACvE,4CAAC,UAAK,WAAU,6BACX;AAAA,YACG,CAAC,WAAW,SAAS,SAAS,IAAI,KAAK,UAAU;AAAA,YACjD,CAAC,WAAW,SAAS,MAAM,IAAI,KAAK,OAAO;AAAA,UAC/C,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI,GAC/B;AAAA,WACJ;AAAA,SAER;AAAA,OACJ;AAAA,IAGC,CAAC,aAAa,SAAS,aAAa,KACjC,6CAAC,SAAI,WAAU,aACV;AAAA,iBAAW,SAAS,KACjB,6CAAC,SAAI,WAAU,aACX;AAAA,qDAAC,QAAG,WAAU,sFACV;AAAA,sDAAC,4BAAK,WAAU,wBAAuB;AAAA,UAAE;AAAA,WAE7C;AAAA,QACA,4CAAC,SAAI,WAAU,6BACV,qBAAW,IAAI,CAAC,UACb,6CAAC,mBAAqB,SAAQ,WAAU,WAAU,kFAC7C;AAAA,gBAAM;AAAA,UACN,MAAM,YAAY,CAAC,WAAW,SAAS,sBAAsB,KAC1D,4CAAC,oCAAa,WAAU,iDAAgD;AAAA,aAHpE,MAAM,EAKlB,CACH,GACL;AAAA,SACJ;AAAA,MAGH,WAAW,SAAS,KACjB,6CAAC,SAAI,WAAU,aACX;AAAA,qDAAC,QAAG,WAAU,sFACV;AAAA,sDAAC,6BAAM,WAAU,wBAAuB;AAAA,UAAE;AAAA,WAE9C;AAAA,QACA,4CAAC,SAAI,WAAU,6BACV,qBAAW,IAAI,CAAC,UACb,4CAAC,mBAAqB,SAAQ,WAAU,WAAU,kFAC7C,gBAAM,QADC,MAAM,EAElB,CACH,GACL;AAAA,SACJ;AAAA,OAER;AAAA,KAER;AAER;","names":[]}
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":[]}