@recruitnepal/shared-packages 1.5.0 → 1.7.0

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 (85) hide show
  1. package/dist/components/common/NoData.d.ts +8 -0
  2. package/dist/components/common/NoData.d.ts.map +1 -0
  3. package/dist/components/common/NoData.js +4 -0
  4. package/dist/components/cv/TemplatePicker.d.ts +14 -0
  5. package/dist/components/cv/TemplatePicker.d.ts.map +1 -0
  6. package/dist/components/cv/TemplatePicker.js +161 -0
  7. package/dist/components/cv/TemplateRenderer.d.ts +20 -0
  8. package/dist/components/cv/TemplateRenderer.d.ts.map +1 -0
  9. package/dist/components/cv/TemplateRenderer.js +14 -0
  10. package/dist/components/ui/BulletListTextarea.d.ts +19 -0
  11. package/dist/components/ui/BulletListTextarea.d.ts.map +1 -0
  12. package/dist/components/ui/BulletListTextarea.js +60 -0
  13. package/dist/components/ui/DesignationSelect.d.ts +13 -0
  14. package/dist/components/ui/DesignationSelect.d.ts.map +1 -0
  15. package/dist/components/ui/DesignationSelect.js +78 -0
  16. package/dist/components/ui/IndustrySelect.d.ts +13 -0
  17. package/dist/components/ui/IndustrySelect.d.ts.map +1 -0
  18. package/dist/components/ui/IndustrySelect.js +78 -0
  19. package/dist/components/ui/MultiSelectOptions.d.ts +18 -0
  20. package/dist/components/ui/MultiSelectOptions.d.ts.map +1 -0
  21. package/dist/components/ui/MultiSelectOptions.js +85 -0
  22. package/dist/components/ui/RatingStars.d.ts +10 -0
  23. package/dist/components/ui/RatingStars.d.ts.map +1 -0
  24. package/dist/components/ui/RatingStars.js +10 -0
  25. package/dist/components/ui/command.d.ts +68 -0
  26. package/dist/components/ui/command.d.ts.map +1 -0
  27. package/dist/components/ui/command.js +24 -0
  28. package/dist/components/ui/popover.d.ts +7 -0
  29. package/dist/components/ui/popover.d.ts.map +1 -0
  30. package/dist/components/ui/popover.js +10 -0
  31. package/dist/hooks/useDebounce.d.ts +2 -0
  32. package/dist/hooks/useDebounce.d.ts.map +1 -0
  33. package/dist/hooks/useDebounce.js +9 -0
  34. package/dist/hooks/useDesignations.d.ts +51 -0
  35. package/dist/hooks/useDesignations.d.ts.map +1 -0
  36. package/dist/hooks/useDesignations.js +117 -0
  37. package/dist/hooks/useIndustries.d.ts +51 -0
  38. package/dist/hooks/useIndustries.d.ts.map +1 -0
  39. package/dist/hooks/useIndustries.js +118 -0
  40. package/dist/hooks/useSkills.d.ts +19 -0
  41. package/dist/hooks/useSkills.d.ts.map +1 -0
  42. package/dist/hooks/useSkills.js +39 -0
  43. package/dist/index.d.ts +34 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +28 -0
  46. package/dist/stores/cvDrafts.store.d.ts +44 -0
  47. package/dist/stores/cvDrafts.store.d.ts.map +1 -0
  48. package/dist/stores/cvDrafts.store.js +86 -0
  49. package/dist/stores/cvLayout.store.d.ts +24 -0
  50. package/dist/stores/cvLayout.store.d.ts.map +1 -0
  51. package/dist/stores/cvLayout.store.js +116 -0
  52. package/dist/stores/cvPreview.store.d.ts +29 -0
  53. package/dist/stores/cvPreview.store.d.ts.map +1 -0
  54. package/dist/stores/cvPreview.store.js +80 -0
  55. package/dist/types/cv-blocks.types.d.ts +44 -0
  56. package/dist/types/cv-blocks.types.d.ts.map +1 -0
  57. package/dist/types/cv-blocks.types.js +1 -0
  58. package/dist/types/cv-draft.types.d.ts +32 -0
  59. package/dist/types/cv-draft.types.d.ts.map +1 -0
  60. package/dist/types/cv-draft.types.js +1 -0
  61. package/dist/types/template.types.d.ts +122 -0
  62. package/dist/types/template.types.d.ts.map +1 -0
  63. package/dist/types/template.types.js +1 -0
  64. package/dist/utils/cn.d.ts +2 -0
  65. package/dist/utils/cn.d.ts.map +1 -0
  66. package/dist/utils/cn.js +3 -0
  67. package/dist/utils/commonDropdownOptions.d.ts +6 -0
  68. package/dist/utils/commonDropdownOptions.d.ts.map +1 -0
  69. package/dist/utils/commonDropdownOptions.js +15 -0
  70. package/dist/utils/cv/pdf/printReset.d.ts +3 -0
  71. package/dist/utils/cv/pdf/printReset.d.ts.map +1 -0
  72. package/dist/utils/cv/pdf/printReset.js +41 -0
  73. package/dist/utils/cv/pdf/styles/base.d.ts +2 -0
  74. package/dist/utils/cv/pdf/styles/base.d.ts.map +1 -0
  75. package/dist/utils/cv/pdf/styles/base.js +44 -0
  76. package/dist/utils/cv/pdf/styles/preprocessCssClient.d.ts +3 -0
  77. package/dist/utils/cv/pdf/styles/preprocessCssClient.d.ts.map +1 -0
  78. package/dist/utils/cv/pdf/styles/preprocessCssClient.js +33 -0
  79. package/dist/utils/cv-block-converter.d.ts +11 -0
  80. package/dist/utils/cv-block-converter.d.ts.map +1 -0
  81. package/dist/utils/cv-block-converter.js +83 -0
  82. package/dist/utils/generateSearchQuery.d.ts +2 -0
  83. package/dist/utils/generateSearchQuery.d.ts.map +1 -0
  84. package/dist/utils/generateSearchQuery.js +5 -0
  85. package/package.json +51 -44
@@ -0,0 +1,39 @@
1
+ 'use client';
2
+ import { useInfiniteQuery } from '@tanstack/react-query';
3
+ import { apiRequest } from '../utils/api-request';
4
+ import { generateSearchQuery } from '../utils/generateSearchQuery';
5
+ export const useSkills = ({ limit = 50, batchSize = 1, queryObject = {}, token, } = {}) => {
6
+ const skillsQuery = useInfiniteQuery({
7
+ queryKey: ['skills', limit, batchSize, queryObject],
8
+ initialPageParam: 1,
9
+ enabled: true,
10
+ queryFn: async ({ pageParam = 1 }) => {
11
+ const pagesToFetch = Array.from({ length: batchSize }, (_, i) => pageParam + i);
12
+ const results = await Promise.all(pagesToFetch.map(async (page) => {
13
+ const searchQuery = generateSearchQuery({ ...queryObject, page, limit });
14
+ const res = await apiRequest({
15
+ endpoint: `/skills?${searchQuery}`,
16
+ method: 'GET',
17
+ token: token ?? undefined,
18
+ });
19
+ if (!res.success) {
20
+ const msg = (res.errors?.general?.[0]) || (res.errors && Object.values(res.errors)[0]?.[0]) || 'Failed to fetch skills';
21
+ throw new Error(String(msg));
22
+ }
23
+ const payload = res.data;
24
+ return {
25
+ data: payload.data ?? [],
26
+ page,
27
+ pages: payload.pagination?.pages ?? 1,
28
+ nextPage: payload.pagination?.nextPage ?? null,
29
+ };
30
+ }));
31
+ const merged = results.flatMap((r) => r.data);
32
+ const last = results[results.length - 1];
33
+ const nextPage = last.nextPage != null && last.page < last.pages ? last.nextPage : null;
34
+ return { data: merged, nextPage, totalPages: last.pages };
35
+ },
36
+ getNextPageParam: (lastPage) => lastPage.nextPage ?? undefined,
37
+ });
38
+ return { skillsQuery };
39
+ };
package/dist/index.d.ts CHANGED
@@ -7,6 +7,9 @@ export { WORKSTATUS, WORK_STATUS_VALUES, } from './types/easy-apply';
7
7
  export type { WorkStatusValue, QuestionsAPIRes, ScreeningAnswersApiResNew, } from './types/easy-apply';
8
8
  export { apiRequest } from './utils/api-request';
9
9
  export type { ApiResponse } from './utils/api-request';
10
+ export { generateSearchQuery } from './utils/generateSearchQuery';
11
+ export { monthsDropdown, yearsDropdown } from './utils/commonDropdownOptions';
12
+ export { cn } from './utils/cn';
10
13
  export { useGetAllVacancy } from './hooks/useGetAllVacancy';
11
14
  export { default as useGetAllVacancyDefault } from './hooks/useGetAllVacancy';
12
15
  export { useSavedVacancyMutations } from './hooks/useSavedVacancyMutations';
@@ -19,8 +22,39 @@ export { useEasyApplyMutations } from './hooks/useEasyApplyMutations';
19
22
  export type { UseEasyApplyMutationsParams } from './hooks/useEasyApplyMutations';
20
23
  export { useEasyApplyFormHook, easyApplyUserSchema, screeningAnswerSchema, screeningAnswersSchema, } from './hooks/useEasyApplyFormHook';
21
24
  export type { EasyApplyFormValues, EasyApplyScreeningAnswer, EasyApplyScreeningAnswers, UseEasyApplyFormHookParams, } from './hooks/useEasyApplyFormHook';
25
+ export { useDebounce } from './hooks/useDebounce';
26
+ export { useSkills } from './hooks/useSkills';
27
+ export type { Skill, UseSkillsParams } from './hooks/useSkills';
28
+ export { useIndustries } from './hooks/useIndustries';
29
+ export type { Industry, IndustryPayload, UseIndustriesParams } from './hooks/useIndustries';
30
+ export { useDesignations } from './hooks/useDesignations';
31
+ export type { Designation, DesignationPayload, UseDesignationsParams } from './hooks/useDesignations';
22
32
  export { default as JobsClient } from './components/JobsClient';
23
33
  export type { JobsClientProps } from './components/JobsClient';
24
34
  export { default as JobDescriptionClient } from './components/JobDescriptionClient';
25
35
  export type { JobDescriptionClientProps } from './components/JobDescriptionClient';
36
+ export type { TemplateData, TemplatePersonalInfo, TemplateSections, TemplateExperience, TemplateEducation, TemplateProject, TemplateSkill, TemplateSkillCategory, TemplateCertification, TemplateLanguage, TemplateReference, TemplateTraining, TemplateLink, TemplateProps, } from './types/template.types';
37
+ export type { CvBlock, CvBlockType, CvBlockStyle, CvLayout, } from './types/cv-blocks.types';
38
+ export type { CvDraft, CreateCvDraftPayload, UpdateCvDraftPayload, CvDraftListResponse, } from './types/cv-draft.types';
39
+ export { convertTemplateToBlocks, getDefaultColumns, getDefaultStyles, } from './utils/cv-block-converter';
40
+ export { preprocessTemplateCssClient, clearCssCacheClient, } from './utils/cv/pdf/styles/preprocessCssClient';
41
+ export { useCvPreview } from './stores/cvPreview.store';
42
+ export { useCvLayout } from './stores/cvLayout.store';
43
+ export { useCvDraftsStore } from './stores/cvDrafts.store';
44
+ export { default as TemplateRenderer } from './components/cv/TemplateRenderer';
45
+ export type { CvTemplateRegistry, TemplateRendererProps } from './components/cv/TemplateRenderer';
46
+ export { default as TemplatePicker } from './components/cv/TemplatePicker';
47
+ export type { TemplatePickerProps } from './components/cv/TemplatePicker';
48
+ export { generateSampleTemplateData } from './components/cv/TemplatePicker';
49
+ export { RatingStars } from './components/ui/RatingStars';
50
+ export { BulletListTextarea } from './components/ui/BulletListTextarea';
51
+ export type { BulletListTextareaProps } from './components/ui/BulletListTextarea';
52
+ export { default as IndustrySelect } from './components/ui/IndustrySelect';
53
+ export type { IndustrySelectProps } from './components/ui/IndustrySelect';
54
+ export { default as DesignationSelect } from './components/ui/DesignationSelect';
55
+ export type { DesignationSelectProps } from './components/ui/DesignationSelect';
56
+ export { MultiSelectOptions } from './components/ui/MultiSelectOptions';
57
+ export { NoData } from './components/common/NoData';
58
+ export { Popover, PopoverTrigger, PopoverContent } from './components/ui/popover';
59
+ export { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, } from './components/ui/command';
26
60
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGxD,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,UAAU,EACV,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,eAAe,EACf,eAAe,EACf,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACpF,YAAY,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,6 +3,9 @@ export { initApi, getBaseURL, API } from './api-client';
3
3
  export { WORKSTATUS, WORK_STATUS_VALUES, } from './types/easy-apply';
4
4
  // Utils
5
5
  export { apiRequest } from './utils/api-request';
6
+ export { generateSearchQuery } from './utils/generateSearchQuery';
7
+ export { monthsDropdown, yearsDropdown } from './utils/commonDropdownOptions';
8
+ export { cn } from './utils/cn';
6
9
  // Hooks
7
10
  export { useGetAllVacancy } from './hooks/useGetAllVacancy';
8
11
  export { default as useGetAllVacancyDefault } from './hooks/useGetAllVacancy';
@@ -14,6 +17,31 @@ export { useVacancyQuestions } from './hooks/useVacancyQuestions';
14
17
  export { useShareJob } from './hooks/useShareJob';
15
18
  export { useEasyApplyMutations } from './hooks/useEasyApplyMutations';
16
19
  export { useEasyApplyFormHook, easyApplyUserSchema, screeningAnswerSchema, screeningAnswersSchema, } from './hooks/useEasyApplyFormHook';
20
+ export { useDebounce } from './hooks/useDebounce';
21
+ export { useSkills } from './hooks/useSkills';
22
+ export { useIndustries } from './hooks/useIndustries';
23
+ export { useDesignations } from './hooks/useDesignations';
17
24
  // Components
18
25
  export { default as JobsClient } from './components/JobsClient';
19
26
  export { default as JobDescriptionClient } from './components/JobDescriptionClient';
27
+ // CV Builder: utils
28
+ export { convertTemplateToBlocks, getDefaultColumns, getDefaultStyles, } from './utils/cv-block-converter';
29
+ export { preprocessTemplateCssClient, clearCssCacheClient, } from './utils/cv/pdf/styles/preprocessCssClient';
30
+ // CV Builder: stores
31
+ export { useCvPreview } from './stores/cvPreview.store';
32
+ export { useCvLayout } from './stores/cvLayout.store';
33
+ export { useCvDraftsStore } from './stores/cvDrafts.store';
34
+ // CV Builder: components (registry-based; no templates in package)
35
+ export { default as TemplateRenderer } from './components/cv/TemplateRenderer';
36
+ export { default as TemplatePicker } from './components/cv/TemplatePicker';
37
+ export { generateSampleTemplateData } from './components/cv/TemplatePicker';
38
+ // UI Components
39
+ export { RatingStars } from './components/ui/RatingStars';
40
+ export { BulletListTextarea } from './components/ui/BulletListTextarea';
41
+ export { default as IndustrySelect } from './components/ui/IndustrySelect';
42
+ export { default as DesignationSelect } from './components/ui/DesignationSelect';
43
+ export { MultiSelectOptions } from './components/ui/MultiSelectOptions';
44
+ export { NoData } from './components/common/NoData';
45
+ // UI Primitives (Popover, Command)
46
+ export { Popover, PopoverTrigger, PopoverContent } from './components/ui/popover';
47
+ export { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, } from './components/ui/command';
@@ -0,0 +1,44 @@
1
+ import type { TemplateData } from '../types/template.types';
2
+ import type { CvDraft } from '../types/cv-draft.types';
3
+ type LocalCvDraft = {
4
+ id: string;
5
+ name: string;
6
+ template: string;
7
+ cv_data: TemplateData | null;
8
+ isAnonymous: boolean;
9
+ backendId?: string;
10
+ createdAt: string;
11
+ updatedAt: string;
12
+ };
13
+ type CvDraftsState = {
14
+ drafts: LocalCvDraft[];
15
+ currentDraftId: string | null;
16
+ setCurrentDraft: (id: string | null) => void;
17
+ addDraft: (draft: Omit<LocalCvDraft, 'id' | 'createdAt' | 'updatedAt'>) => string;
18
+ updateDraft: (id: string, updates: Partial<LocalCvDraft>) => void;
19
+ deleteDraft: (id: string) => void;
20
+ getCurrentDraft: () => LocalCvDraft | null;
21
+ getDraftById: (id: string) => LocalCvDraft | null;
22
+ syncDraftToBackend: (localId: string, backendId: string) => void;
23
+ loadDraftsFromBackend: (backendDrafts: CvDraft[]) => void;
24
+ clearDrafts: () => void;
25
+ };
26
+ export declare const useCvDraftsStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<CvDraftsState>, "persist"> & {
27
+ persist: {
28
+ setOptions: (options: Partial<import("zustand/middleware").PersistOptions<CvDraftsState, {
29
+ drafts: LocalCvDraft[];
30
+ currentDraftId: string | null;
31
+ }>>) => void;
32
+ clearStorage: () => void;
33
+ rehydrate: () => Promise<void> | void;
34
+ hasHydrated: () => boolean;
35
+ onHydrate: (fn: (state: CvDraftsState) => void) => () => void;
36
+ onFinishHydration: (fn: (state: CvDraftsState) => void) => () => void;
37
+ getOptions: () => Partial<import("zustand/middleware").PersistOptions<CvDraftsState, {
38
+ drafts: LocalCvDraft[];
39
+ currentDraftId: string | null;
40
+ }>>;
41
+ };
42
+ }>;
43
+ export {};
44
+ //# sourceMappingURL=cvDrafts.store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cvDrafts.store.d.ts","sourceRoot":"","sources":["../../src/stores/cvDrafts.store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7C,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK,MAAM,CAAC;IAClF,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IAClE,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,eAAe,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;IAC3C,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,YAAY,GAAG,IAAI,CAAC;IAClD,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,qBAAqB,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC1D,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;EAyG5B,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { create } from 'zustand';
2
+ import { persist } from 'zustand/middleware';
3
+ export const useCvDraftsStore = create()(persist((set, get) => ({
4
+ drafts: [],
5
+ currentDraftId: null,
6
+ setCurrentDraft: (id) => set({ currentDraftId: id }),
7
+ addDraft: (draft) => {
8
+ const id = `local_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
9
+ const newDraft = {
10
+ ...draft,
11
+ id,
12
+ createdAt: new Date().toISOString(),
13
+ updatedAt: new Date().toISOString(),
14
+ };
15
+ set((state) => ({
16
+ drafts: [...state.drafts, newDraft],
17
+ currentDraftId: id,
18
+ }));
19
+ return id;
20
+ },
21
+ updateDraft: (id, updates) => {
22
+ set((state) => ({
23
+ drafts: state.drafts.map((d) => d.id === id ? { ...d, ...updates, updatedAt: new Date().toISOString() } : d),
24
+ }));
25
+ },
26
+ deleteDraft: (id) => {
27
+ set((state) => ({
28
+ drafts: state.drafts.filter((d) => d.id !== id),
29
+ currentDraftId: state.currentDraftId === id ? null : state.currentDraftId,
30
+ }));
31
+ },
32
+ getCurrentDraft: () => {
33
+ const { drafts, currentDraftId } = get();
34
+ return drafts.find((d) => d.id === currentDraftId) || null;
35
+ },
36
+ getDraftById: (id) => {
37
+ const { drafts } = get();
38
+ return drafts.find((d) => d.id === id) || null;
39
+ },
40
+ syncDraftToBackend: (localId, backendId) => {
41
+ set((state) => ({
42
+ drafts: state.drafts.map((d) => d.id === localId ? { ...d, backendId } : d),
43
+ }));
44
+ },
45
+ loadDraftsFromBackend: (backendDrafts) => {
46
+ const { drafts: existingDrafts } = get();
47
+ const activeDrafts = backendDrafts.filter((draft) => draft.is_active !== false);
48
+ const syncedDrafts = activeDrafts.map((backendDraft) => {
49
+ const existing = existingDrafts.find((d) => d.backendId === backendDraft.id);
50
+ if (existing) {
51
+ return {
52
+ ...existing,
53
+ name: backendDraft.name,
54
+ template: backendDraft.template,
55
+ cv_data: backendDraft.cv_data,
56
+ updatedAt: backendDraft.updated_at,
57
+ isAnonymous: false,
58
+ backendId: backendDraft.id,
59
+ };
60
+ }
61
+ return {
62
+ id: `backend_${backendDraft.id}`,
63
+ name: backendDraft.name,
64
+ template: backendDraft.template,
65
+ cv_data: backendDraft.cv_data,
66
+ isAnonymous: false,
67
+ backendId: backendDraft.id,
68
+ createdAt: backendDraft.created_at,
69
+ updatedAt: backendDraft.updated_at,
70
+ };
71
+ });
72
+ const anonymousDrafts = existingDrafts.filter((d) => d.isAnonymous);
73
+ const backendIds = new Set(activeDrafts.map((d) => d.id));
74
+ const validSyncedDrafts = existingDrafts.filter((d) => !d.isAnonymous && d.backendId && backendIds.has(d.backendId));
75
+ const newSyncedDrafts = syncedDrafts.filter((d) => !validSyncedDrafts.some((e) => e.backendId === d.backendId));
76
+ const mergedDrafts = [...anonymousDrafts, ...validSyncedDrafts, ...newSyncedDrafts];
77
+ set({ drafts: mergedDrafts });
78
+ },
79
+ clearDrafts: () => set({ drafts: [], currentDraftId: null }),
80
+ }), {
81
+ name: 'cv-drafts-storage',
82
+ partialize: (state) => ({
83
+ drafts: state.drafts.filter((d) => d.isAnonymous),
84
+ currentDraftId: state.currentDraftId,
85
+ }),
86
+ }));
@@ -0,0 +1,24 @@
1
+ import type { CvLayout, CvBlock } from '../types/cv-blocks.types';
2
+ import type { TemplateData } from '../types/template.types';
3
+ type CvLayoutState = {
4
+ layout: CvLayout | null;
5
+ isEditMode: boolean;
6
+ loadTemplate: (templateSlug: string, data: TemplateData) => void;
7
+ addBlock: (block: CvBlock) => void;
8
+ updateBlock: (id: string, updates: Partial<CvBlock>) => void;
9
+ deleteBlock: (id: string) => void;
10
+ moveBlock: (id: string, newPosition: {
11
+ column?: number;
12
+ order?: number;
13
+ }) => void;
14
+ reorderBlocks: (ids: string[]) => void;
15
+ setGridColumns: (columns: number) => void;
16
+ setGlobalStyle: (key: string, value: unknown) => void;
17
+ toggleEditMode: () => void;
18
+ saveLayout: () => Promise<void>;
19
+ loadSavedLayout: (layoutId: string) => Promise<void>;
20
+ reset: () => void;
21
+ };
22
+ export declare const useCvLayout: import("zustand").UseBoundStore<import("zustand").StoreApi<CvLayoutState>>;
23
+ export {};
24
+ //# sourceMappingURL=cvLayout.store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cvLayout.store.d.ts","sourceRoot":"","sources":["../../src/stores/cvLayout.store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAO5D,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACjE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAClF,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACvC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACtD,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,WAAW,4EA+HrB,CAAC"}
@@ -0,0 +1,116 @@
1
+ import { create } from 'zustand';
2
+ import { convertTemplateToBlocks, getDefaultColumns, getDefaultStyles, } from '../utils/cv-block-converter';
3
+ export const useCvLayout = create((set, get) => ({
4
+ layout: null,
5
+ isEditMode: false,
6
+ loadTemplate: (templateSlug, data) => {
7
+ const blocks = convertTemplateToBlocks(templateSlug, data);
8
+ const layout = {
9
+ id: `layout-${Date.now()}`,
10
+ name: `${templateSlug} - Custom`,
11
+ template: templateSlug,
12
+ grid: {
13
+ columns: getDefaultColumns(templateSlug),
14
+ gap: 16,
15
+ width: 210,
16
+ },
17
+ blocks,
18
+ globalStyles: getDefaultStyles(templateSlug),
19
+ };
20
+ set({ layout });
21
+ },
22
+ addBlock: (block) => set((state) => ({
23
+ layout: state.layout
24
+ ? { ...state.layout, blocks: [...state.layout.blocks, block] }
25
+ : null,
26
+ })),
27
+ updateBlock: (id, updates) => set((state) => ({
28
+ layout: state.layout
29
+ ? {
30
+ ...state.layout,
31
+ blocks: state.layout.blocks.map((b) => b.id === id ? { ...b, ...updates } : b),
32
+ }
33
+ : null,
34
+ })),
35
+ deleteBlock: (id) => set((state) => ({
36
+ layout: state.layout
37
+ ? {
38
+ ...state.layout,
39
+ blocks: state.layout.blocks.filter((b) => b.id !== id),
40
+ }
41
+ : null,
42
+ })),
43
+ moveBlock: (id, { column, order }) => set((state) => {
44
+ if (!state.layout)
45
+ return state;
46
+ return {
47
+ layout: {
48
+ ...state.layout,
49
+ blocks: state.layout.blocks.map((b) => {
50
+ if (b.id === id) {
51
+ return {
52
+ ...b,
53
+ style: {
54
+ ...b.style,
55
+ gridColumn: column !== undefined ? column : b.style.gridColumn,
56
+ order: order !== undefined ? order : b.style.order,
57
+ },
58
+ };
59
+ }
60
+ return b;
61
+ }),
62
+ },
63
+ };
64
+ }),
65
+ reorderBlocks: (ids) => set((state) => {
66
+ if (!state.layout)
67
+ return state;
68
+ const blockMap = new Map(state.layout.blocks.map((b) => [b.id, b]));
69
+ const reordered = ids
70
+ .map((id) => blockMap.get(id))
71
+ .filter(Boolean);
72
+ return {
73
+ layout: { ...state.layout, blocks: reordered },
74
+ };
75
+ }),
76
+ setGridColumns: (columns) => set((state) => ({
77
+ layout: state.layout
78
+ ? { ...state.layout, grid: { ...state.layout.grid, columns } }
79
+ : null,
80
+ })),
81
+ setGlobalStyle: (key, value) => set((state) => ({
82
+ layout: state.layout
83
+ ? {
84
+ ...state.layout,
85
+ globalStyles: { ...state.layout.globalStyles, [key]: value },
86
+ }
87
+ : null,
88
+ })),
89
+ toggleEditMode: () => set((state) => ({ isEditMode: !state.isEditMode })),
90
+ saveLayout: async () => {
91
+ const { layout } = get();
92
+ if (!layout)
93
+ return;
94
+ try {
95
+ if (typeof localStorage !== 'undefined') {
96
+ localStorage.setItem('cv-layout-draft', JSON.stringify(layout));
97
+ }
98
+ }
99
+ catch (_err) {
100
+ /* noop */
101
+ }
102
+ },
103
+ loadSavedLayout: async (_layoutId) => {
104
+ try {
105
+ if (typeof localStorage === 'undefined')
106
+ return;
107
+ const saved = localStorage.getItem('cv-layout-draft');
108
+ if (saved)
109
+ set({ layout: JSON.parse(saved) });
110
+ }
111
+ catch (_err) {
112
+ /* noop */
113
+ }
114
+ },
115
+ reset: () => set({ layout: null }),
116
+ }));
@@ -0,0 +1,29 @@
1
+ import type { TemplateData, TemplateSections, TemplatePersonalInfo } from '../types/template.types';
2
+ type CvPreviewState = {
3
+ slug: string;
4
+ live: TemplateData | null;
5
+ setSlug: (s: string) => void;
6
+ setPersonal: (p: Partial<TemplatePersonalInfo>) => void;
7
+ setSections: (s: Partial<TemplateSections>) => void;
8
+ setAll: (d: TemplateData) => void;
9
+ reset: () => void;
10
+ };
11
+ export declare const useCvPreview: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<CvPreviewState>, "persist"> & {
12
+ persist: {
13
+ setOptions: (options: Partial<import("zustand/middleware").PersistOptions<CvPreviewState, {
14
+ slug: string;
15
+ live: TemplateData | null;
16
+ }>>) => void;
17
+ clearStorage: () => void;
18
+ rehydrate: () => Promise<void> | void;
19
+ hasHydrated: () => boolean;
20
+ onHydrate: (fn: (state: CvPreviewState) => void) => () => void;
21
+ onFinishHydration: (fn: (state: CvPreviewState) => void) => () => void;
22
+ getOptions: () => Partial<import("zustand/middleware").PersistOptions<CvPreviewState, {
23
+ slug: string;
24
+ live: TemplateData | null;
25
+ }>>;
26
+ };
27
+ }>;
28
+ export {};
29
+ //# sourceMappingURL=cvPreview.store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cvPreview.store.d.ts","sourceRoot":"","sources":["../../src/stores/cvPreview.store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAEjC,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,WAAW,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC;IACxD,WAAW,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACpD,MAAM,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;EAsFxB,CAAC"}
@@ -0,0 +1,80 @@
1
+ import { create } from 'zustand';
2
+ import { persist } from 'zustand/middleware';
3
+ export const useCvPreview = create()(persist((set) => ({
4
+ slug: 'professional',
5
+ live: null,
6
+ setSlug: (slug) => set({ slug }),
7
+ setPersonal: (p) => set((st) => {
8
+ if (st.live) {
9
+ return {
10
+ live: { ...st.live, personalInfo: { ...st.live.personalInfo, ...p } },
11
+ };
12
+ }
13
+ return {
14
+ live: {
15
+ personalInfo: {
16
+ firstName: '',
17
+ lastName: '',
18
+ email: '',
19
+ phone: '',
20
+ location: { city: '', state: '', country: 'Nepal' },
21
+ summary: '',
22
+ links: [],
23
+ ...p,
24
+ },
25
+ sections: {
26
+ education: [],
27
+ experience: [],
28
+ projects: [],
29
+ skills: [],
30
+ certifications: [],
31
+ languages: [],
32
+ references: [],
33
+ trainings: [],
34
+ },
35
+ },
36
+ };
37
+ }),
38
+ setSections: (s) => set((st) => {
39
+ if (st.live) {
40
+ return {
41
+ live: {
42
+ ...st.live,
43
+ sections: {
44
+ ...st.live.sections,
45
+ ...Object.fromEntries(Object.entries(s).map(([k, v]) => [
46
+ k,
47
+ Array.isArray(v) ? v : st.live.sections[k],
48
+ ])),
49
+ },
50
+ },
51
+ };
52
+ }
53
+ return {
54
+ live: {
55
+ personalInfo: {
56
+ firstName: '',
57
+ lastName: '',
58
+ email: '',
59
+ phone: '',
60
+ location: { city: '', state: '', country: 'Nepal' },
61
+ summary: '',
62
+ links: [],
63
+ },
64
+ sections: {
65
+ education: [],
66
+ experience: [],
67
+ projects: [],
68
+ skills: [],
69
+ certifications: [],
70
+ languages: [],
71
+ references: [],
72
+ trainings: [],
73
+ ...s,
74
+ },
75
+ },
76
+ };
77
+ }),
78
+ setAll: (d) => set({ live: d }),
79
+ reset: () => set({ live: null }),
80
+ }), { name: 'cv-preview-storage', partialize: (state) => ({ slug: state.slug, live: state.live }) }));
@@ -0,0 +1,44 @@
1
+ export type CvBlockType = 'header' | 'summary' | 'experience' | 'education' | 'skills' | 'projects' | 'certifications' | 'languages' | 'references' | 'custom-text';
2
+ export type CvBlockStyle = {
3
+ gridColumn?: number | string;
4
+ gridRow?: number | string;
5
+ order?: number;
6
+ marginTop?: number;
7
+ marginBottom?: number;
8
+ padding?: number;
9
+ fontSize?: string;
10
+ fontWeight?: string;
11
+ color?: string;
12
+ backgroundColor?: string;
13
+ borderRadius?: number;
14
+ border?: string;
15
+ };
16
+ export type CvBlock = {
17
+ id: string;
18
+ type: CvBlockType;
19
+ data: unknown;
20
+ style: CvBlockStyle;
21
+ minWidth?: number;
22
+ maxWidth?: number;
23
+ resizable?: boolean;
24
+ movable?: boolean;
25
+ deletable?: boolean;
26
+ };
27
+ export type CvLayout = {
28
+ id: string;
29
+ name: string;
30
+ template: string;
31
+ grid: {
32
+ columns: number;
33
+ gap: number;
34
+ width: number;
35
+ };
36
+ blocks: CvBlock[];
37
+ globalStyles: {
38
+ fontFamily?: string;
39
+ primaryColor?: string;
40
+ backgroundColor?: string;
41
+ textColor?: string;
42
+ };
43
+ };
44
+ //# sourceMappingURL=cv-blocks.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cv-blocks.types.d.ts","sourceRoot":"","sources":["../../src/types/cv-blocks.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,UAAU,GACV,gBAAgB,GAChB,WAAW,GACX,YAAY,GACZ,aAAa,CAAC;AAElB,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,YAAY,EAAE;QACZ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,32 @@
1
+ import type { TemplateData } from './template.types';
2
+ export interface CvDraft {
3
+ id: string;
4
+ user_id: string | null;
5
+ name: string;
6
+ template: string;
7
+ cv_data: TemplateData;
8
+ is_active: boolean;
9
+ created_at: string;
10
+ updated_at: string;
11
+ }
12
+ export interface CreateCvDraftPayload {
13
+ name?: string;
14
+ template?: string;
15
+ cv_data: TemplateData;
16
+ }
17
+ export interface UpdateCvDraftPayload {
18
+ name?: string;
19
+ template?: string;
20
+ cv_data?: TemplateData;
21
+ is_active?: boolean;
22
+ }
23
+ export interface CvDraftListResponse {
24
+ data: CvDraft[];
25
+ pagination?: {
26
+ total: number;
27
+ page: number;
28
+ pages: number;
29
+ nextPage: number | null;
30
+ };
31
+ }
32
+ //# sourceMappingURL=cv-draft.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cv-draft.types.d.ts","sourceRoot":"","sources":["../../src/types/cv-draft.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,CAAC;CACH"}
@@ -0,0 +1 @@
1
+ export {};