Compare commits

...

17 Commits

Author SHA1 Message Date
c28bd3cd59 New Crowdin translations by GitHub Action 2025-11-03 00:12:20 +00:00
6fcb7a4845 Merge pull request #2419 from AmruthPillai/l10n
New Translations from Crowdin
2025-10-18 22:32:56 +02:00
213f96b189 Merge pull request #2415 from GouravNG/feat/rich-input-highlight
[Feature] Highlight the selected options under Rich inputs.
2025-10-18 22:32:23 +02:00
e8d6d4ad3a Merge pull request #2412 from alay-dev/main
fix(template): fix gengar template summary section not rendering in sidebar
2025-10-18 22:31:10 +02:00
87370cfdf0 Apply suggestion from @AmruthPillai 2025-10-18 22:30:51 +02:00
112a644927 Merge pull request #2410 from JuanJesusAlejoSillero/main
docs: add Gengar, Glalie, and Leafish templates while also updating image paths to relative in-repo URLs in README.md
2025-10-18 22:29:49 +02:00
2977e3528a New Crowdin translations by GitHub Action 2025-10-18 00:10:39 +00:00
21fd079f94 feat(rich-input): updating datastate on pressing rich input options
- when selecting the rich input option earlier only aria-pressed="true" was changing and not datastate now updated the code to manually update the data-state
2025-10-13 22:52:25 +05:30
9bdc61b50d feat(rich-input): Highlight the selected options of rich inputs 2025-10-13 22:07:01 +05:30
2de24d5b55 fix(template): fix gengar template summary section not rendering in sidebar 2025-10-12 18:49:44 +05:30
1cba9d0fb9 Merge branch 'AmruthPillai:main' into main 2025-10-11 11:02:20 +05:30
8f532bf4a6 docs: add Gengar, Glalie, and Leafish templates while also updating image paths to relative in-repo URLs in README.md 2025-10-11 01:24:51 +02:00
4efdabd475 Merge branch 'main' of github.com:AmruthPillai/Reactive-Resume 2025-10-09 00:10:28 +02:00
8803101dcd fix for long waiting times 2025-10-09 00:10:25 +02:00
a4a9381b65 Merge pull request #2408 from AmruthPillai/dependabot/npm_and_yarn/npm_and_yarn-2752d6d8c0
Bump nodemailer from 6.10.1 to 7.0.7 in the npm_and_yarn group across 1 directory
2025-10-08 21:55:09 +02:00
618d42019e Bump nodemailer in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the / directory: [nodemailer](https://github.com/nodemailer/nodemailer).


Updates `nodemailer` from 6.10.1 to 7.0.7
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v6.10.1...v7.0.7)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-version: 7.0.7
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-08 19:51:38 +00:00
313fe47050 Merge pull request #1 from GouravNG/revert/EnvExampleFile
revert: readded the .env.example file
2025-10-07 21:56:25 +05:30
7 changed files with 462 additions and 426 deletions

View File

@ -37,17 +37,21 @@ Start creating your standout resume with Reactive Resume today!
## Templates
| Azurill | Bronzor | Chikorita |
| ------------------------------------------------------------ | ----------------------------------------------------------- | ----------------------------------------------------------- |
| <img src="https://i.imgur.com/jKgo04C.jpeg" width="200px" /> | <img src="https://i.imgur.com/DFNQZP2.jpg" width="200px" /> | <img src="https://i.imgur.com/Dwv8Y7f.jpg" width="200px" /> |
| Azurill | Bronzor | Chikorita |
| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| <img src="./apps/client/public/templates/jpg/azurill.jpg" width="200px" /> | <img src="./apps/client/public/templates/jpg/bronzor.jpg" width="200px" /> | <img src="./apps/client/public/templates/jpg/chikorita.jpg" width="200px" /> |
| Ditto | Kakuna | Nosepass |
| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- |
| <img src="https://i.imgur.com/6c5lASL.jpg" width="200px" /> | <img src="https://i.imgur.com/268ML3t.jpg" width="200px" /> | <img src="https://i.imgur.com/npRLsPS.jpg" width="200px" /> |
| Ditto | Gengar | Glalie |
| -------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| <img src="./apps/client/public/templates/jpg/ditto.jpg" width="200px" /> | <img src="./apps/client/public/templates/jpg/gengar.jpg" width="200px" /> | <img src="./apps/client/public/templates/jpg/glalie.jpg" width="200px" /> |
| Onyx | Pikachu | Rhyhorn |
| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- |
| <img src="https://i.imgur.com/cxplXOW.jpg" width="200px" /> | <img src="https://i.imgur.com/Y9f7qsh.jpg" width="200px" /> | <img src="https://i.imgur.com/h4kQxy2.jpg" width="200px" /> |
| Kakuna | Leafish | Nosepass |
| ---------------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| <img src="./apps/client/public/templates/jpg/kakuna.jpg" width="200px" /> | <img src="./apps/client/public/templates/jpg/leafish.jpg" width="200px" /> | <img src="./apps/client/public/templates/jpg/nosepass.jpg" width="200px" /> |
| Onyx | Pikachu | Rhyhorn |
| ------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| <img src="./apps/client/public/templates/jpg/onyx.jpg" width="200px" /> | <img src="./apps/client/public/templates/jpg/pikachu.jpg" width="200px" /> | <img src="./apps/client/public/templates/jpg/rhyhorn.jpg" width="200px" /> |
## Features

View File

@ -531,6 +531,11 @@ const mapSectionToComponent = (section: SectionKey) => {
case "education": {
return <Education />;
}
case "summary": {
return <Summary />;
}
case "awards": {
return <Awards />;
}
@ -592,8 +597,6 @@ export const Gengar = ({ columns, isFirstPage = false }: TemplateProps) => {
</div>
<div className={cn("main group", sidebar.length > 0 ? "col-span-2" : "col-span-3")}>
{isFirstPage && <Summary />}
<div className="p-custom space-y-4">
{main.map((section) => (
<Fragment key={section}>{mapSectionToComponent(section)}</Fragment>

File diff suppressed because it is too large Load Diff

View File

@ -139,8 +139,6 @@ export class PrinterService {
page.waitForSelector('[data-page="1"]', { timeout: 15_000 }),
]);
await page.waitForNetworkIdle({ idleTime: 500, timeout: 15_000 });
const pagesBuffer: Buffer[] = [];
const processPage = async (index: number) => {

View File

@ -151,6 +151,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive("bold")}
disabled={!editor.can().chain().toggleBold().run()}
data-state={editor.isActive("bold") ? "on" : "off"}
onPressedChange={() => editor.chain().focus().toggleBold().run()}
>
<TextBIcon />
@ -163,6 +164,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive("italic")}
disabled={!editor.can().chain().focus().toggleItalic().run()}
data-state={editor.isActive("italic") ? "on" : "off"}
onPressedChange={() => editor.chain().focus().toggleItalic().run()}
>
<TextItalicIcon />
@ -175,6 +177,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive("strike")}
disabled={!editor.can().chain().focus().toggleStrike().run()}
data-state={editor.isActive("strike") ? "on" : "off"}
onPressedChange={() => editor.chain().focus().toggleStrike().run()}
>
<TextStrikethroughIcon />
@ -187,6 +190,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive("underline")}
disabled={!editor.can().chain().focus().toggleUnderline().run()}
data-state={editor.isActive("underline") ? "on" : "off"}
onPressedChange={() => editor.chain().focus().toggleUnderline().run()}
>
<TextAUnderlineIcon />
@ -199,6 +203,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive("highlight")}
disabled={!editor.can().chain().focus().toggleHighlight().run()}
data-state={editor.isActive("highlight") ? "on" : "off"}
onPressedChange={() => editor.chain().focus().toggleHighlight().run()}
>
<HighlighterCircleIcon />
@ -217,6 +222,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive("code")}
disabled={!editor.can().chain().focus().toggleCode().run()}
data-state={editor.isActive("code") ? "on" : "off"}
onPressedChange={() => editor.chain().focus().toggleCode().run()}
>
<CodeIconImport />
@ -229,6 +235,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive("codeBlock")}
disabled={!editor.can().chain().focus().toggleCodeBlock().run()}
data-state={editor.isActive("codeBlock") ? "on" : "off"}
onPressedChange={() => editor.chain().focus().toggleCodeBlock().run()}
>
<CodeBlockIconImport />
@ -241,6 +248,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive("heading", { level: 1 })}
disabled={!editor.can().chain().focus().toggleHeading({ level: 1 }).run()}
data-state={editor.isActive("heading", { level: 1 }) ? "on" : "off"}
onPressedChange={() => editor.chain().focus().toggleHeading({ level: 1 }).run()}
>
<TextHOneIcon />
@ -253,6 +261,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive("heading", { level: 2 })}
disabled={!editor.can().chain().focus().toggleHeading({ level: 2 }).run()}
data-state={editor.isActive("heading", { level: 2 }) ? "on" : "off"}
onPressedChange={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}
>
<TextHTwoIcon />
@ -265,6 +274,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive("heading", { level: 3 })}
disabled={!editor.can().chain().focus().toggleHeading({ level: 3 }).run()}
data-state={editor.isActive("heading", { level: 3 }) ? "on" : "off"}
onPressedChange={() => editor.chain().focus().toggleHeading({ level: 3 }).run()}
>
<TextHThreeIcon />
@ -276,6 +286,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
size="sm"
type="button"
pressed={editor.isActive("paragraph")}
data-state={editor.isActive("paragraph") ? "on" : "off"}
onPressedChange={() => editor.chain().focus().setParagraph().run()}
>
<ParagraphIconImport />
@ -288,6 +299,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive({ textAlign: "left" })}
disabled={!editor.can().chain().focus().setTextAlign("left").run()}
data-state={editor.isActive({ textAlign: "left" }) ? "on" : "off"}
onPressedChange={() => editor.chain().focus().setTextAlign("left").run()}
>
<TextAlignLeftIcon />
@ -300,6 +312,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive({ textAlign: "center" })}
disabled={!editor.can().chain().focus().setTextAlign("center").run()}
data-state={editor.isActive({ textAlign: "center" }) ? "on" : "off"}
onPressedChange={() => editor.chain().focus().setTextAlign("center").run()}
>
<TextAlignCenterIcon />
@ -312,6 +325,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive({ textAlign: "right" })}
disabled={!editor.can().chain().focus().setTextAlign("right").run()}
data-state={editor.isActive({ textAlign: "right" }) ? "on" : "off"}
onPressedChange={() => editor.chain().focus().setTextAlign("right").run()}
>
<TextAlignRightIcon />
@ -324,6 +338,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive({ textAlign: "justify" })}
disabled={!editor.can().chain().focus().setTextAlign("justify").run()}
data-state={editor.isActive({ textAlign: "justify" }) ? "on" : "off"}
onPressedChange={() => editor.chain().focus().setTextAlign("justify").run()}
>
<TextAlignJustifyIcon />
@ -336,6 +351,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive("bulletList")}
disabled={!editor.can().chain().focus().toggleBulletList().run()}
data-state={editor.isActive("bulletList") ? "on" : "off"}
onPressedChange={() => editor.chain().focus().toggleBulletList().run()}
>
<ListBulletsIcon />
@ -348,6 +364,7 @@ const Toolbar = ({ editor }: { editor: Editor }) => {
type="button"
pressed={editor.isActive("orderedList")}
disabled={!editor.can().chain().focus().toggleOrderedList().run()}
data-state={editor.isActive("orderedList") ? "on" : "off"}
onPressedChange={() => editor.chain().focus().toggleOrderedList().run()}
>
<ListNumbersIcon />

View File

@ -1,7 +1,7 @@
{
"name": "@reactive-resume/source",
"description": "A free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume.",
"version": "4.5.1",
"version": "4.5.2",
"license": "MIT",
"private": true,
"packageManager": "pnpm@10.18.1",
@ -211,7 +211,7 @@
"nestjs-minio-client": "^2.2.0",
"nestjs-prisma": "^0.26.0",
"nestjs-zod": "^3.0.0",
"nodemailer": "^6.10.1",
"nodemailer": "^7.0.7",
"openai": "^4.104.0",
"otplib": "^12.0.1",
"papaparse": "^5.5.3",

38
pnpm-lock.yaml generated
View File

@ -40,7 +40,7 @@ importers:
version: 4.14.1(react@18.3.1)
'@nestjs-modules/mailer':
specifier: ^2.0.2
version: 2.0.2(@nestjs/common@10.4.20(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20)(nodemailer@6.10.1)
version: 2.0.2(@nestjs/common@10.4.20(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20)(nodemailer@7.0.7)
'@nestjs/axios':
specifier: ^3.1.3
version: 3.1.3(@nestjs/common@10.4.20(reflect-metadata@0.2.2)(rxjs@7.8.2))(axios@1.12.2)(rxjs@7.8.2)
@ -264,8 +264,8 @@ importers:
specifier: ^3.0.0
version: 3.0.0(@nestjs/common@10.4.20(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20)(@nestjs/swagger@7.4.2(@nestjs/common@10.4.20(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20)(reflect-metadata@0.2.2))(zod@3.25.76)
nodemailer:
specifier: ^6.10.1
version: 6.10.1
specifier: ^7.0.7
version: 7.0.7
openai:
specifier: ^4.104.0
version: 4.104.0(ws@8.18.0)(zod@3.25.76)
@ -9028,6 +9028,10 @@ packages:
resolution: {integrity: sha512-9O00Vh89/Ld2EcVCqJ/etd7u20UhME0f/NToPfArwPEe1Don1zy4mAIz6ariRr7mJ2RDxtaDzN0WJVdVXPtZaw==}
engines: {node: '>=6.0.0'}
nodemailer@7.0.7:
resolution: {integrity: sha512-jGOaRznodf62TVzdyhKt/f1Q/c3kYynk8629sgJHpRzGZj01ezbgMMWJSAjHADcwTKxco3B68/R+KHJY2T5BaA==}
engines: {node: '>=6.0.0'}
nopt@7.2.1:
resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
@ -10019,7 +10023,7 @@ packages:
puppeteer@23.11.1:
resolution: {integrity: sha512-53uIX3KR5en8l7Vd8n5DUv90Ae9QDQsyIthaUFVzwV6yU750RjqRznEtNMBT20VthqAdemnJN+hxVdmMHKt7Zw==}
engines: {node: '>=18'}
deprecated: < 24.10.2 is no longer supported
deprecated: < 24.15.0 is no longer supported
hasBin: true
pure-rand@6.1.0:
@ -10497,6 +10501,11 @@ packages:
engines: {node: '>=10'}
hasBin: true
semver@7.7.3:
resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
engines: {node: '>=10'}
hasBin: true
send@0.19.0:
resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
engines: {node: '>= 0.8.0'}
@ -14247,13 +14256,13 @@ snapshots:
'@tybys/wasm-util': 0.10.1
optional: true
'@nestjs-modules/mailer@2.0.2(@nestjs/common@10.4.20(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20)(nodemailer@6.10.1)':
'@nestjs-modules/mailer@2.0.2(@nestjs/common@10.4.20(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20)(nodemailer@7.0.7)':
dependencies:
'@css-inline/css-inline': 0.14.1
'@nestjs/common': 10.4.20(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/core': 10.4.20(@nestjs/common@10.4.20(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.20)(reflect-metadata@0.2.2)(rxjs@7.8.2)
glob: 10.3.12
nodemailer: 6.10.1
nodemailer: 7.0.7
optionalDependencies:
'@types/ejs': 3.1.5
'@types/mjml': 4.7.4
@ -15206,7 +15215,7 @@ snapshots:
'@opentelemetry/core': 1.24.1(@opentelemetry/api@1.9.0)
'@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.24.1
semver: 7.7.2
semver: 7.7.3
transitivePeerDependencies:
- supports-color
@ -15291,7 +15300,7 @@ snapshots:
'@types/shimmer': 1.2.0
import-in-the-middle: 1.4.2
require-in-the-middle: 7.5.2
semver: 7.7.2
semver: 7.7.3
shimmer: 1.2.1
transitivePeerDependencies:
- supports-color
@ -15304,7 +15313,7 @@ snapshots:
'@types/shimmer': 1.2.0
import-in-the-middle: 1.7.1
require-in-the-middle: 7.5.2
semver: 7.7.2
semver: 7.7.3
shimmer: 1.2.1
transitivePeerDependencies:
- supports-color
@ -15316,7 +15325,7 @@ snapshots:
'@types/shimmer': 1.2.0
import-in-the-middle: 1.7.4
require-in-the-middle: 7.5.2
semver: 7.7.2
semver: 7.7.3
shimmer: 1.2.1
transitivePeerDependencies:
- supports-color
@ -22510,11 +22519,14 @@ snapshots:
long-timeout: 0.1.1
sorted-array-functions: 1.3.0
nodemailer@6.10.1: {}
nodemailer@6.10.1:
optional: true
nodemailer@7.0.4:
optional: true
nodemailer@7.0.7: {}
nopt@7.2.1:
dependencies:
abbrev: 2.0.0
@ -24132,6 +24144,8 @@ snapshots:
semver@7.7.2: {}
semver@7.7.3: {}
send@0.19.0:
dependencies:
debug: 2.6.9
@ -25341,7 +25355,7 @@ snapshots:
dependencies:
'@volar/typescript': 2.4.23
'@vue/language-core': 2.0.29(typescript@5.9.3)
semver: 7.7.2
semver: 7.7.3
typescript: 5.9.3
optional: true