@recruitnepal/shared-packages 1.3.0 → 1.5.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.
@@ -43,6 +43,10 @@ export type JobDescriptionClientProps = {
43
43
  onSave?: () => void;
44
44
  onShare?: (method: 'copy' | 'whatsapp' | 'viber' | 'messenger') => void;
45
45
  onLoginRequired?: (action: 'apply' | 'save') => void;
46
+ /** Optional: URL search params (e.g. from useSearchParams()). If not provided, uses window.location.search */
47
+ searchParams?: URLSearchParams | null;
48
+ /** Optional: redirect to login (e.g. router.push('/login')). If not provided, uses window.location.href = '/login' */
49
+ navigateToLogin?: () => void;
46
50
  /** Utility functions */
47
51
  capitalize?: (str: string) => string;
48
52
  sanitizeHTML?: (html: string) => string;
@@ -55,5 +59,5 @@ export type JobDescriptionClientProps = {
55
59
  chain: string;
56
60
  };
57
61
  };
58
- export default function JobDescriptionClient({ job, slug, token, sessionStatus, personalDetailId, imageBaseURL, Button, Badge, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, Sheet, SheetContent, SheetDescription, Image, Link, LoadingButton, ScreeningQuestionsPanel, CVSelectionPanel, EasyApply, randomTraining, randomDlyticaCourse, onApply, onSave, onShare, onLoginRequired, capitalize, sanitizeHTML, extractPlainText, shareIcons, }: JobDescriptionClientProps): import("react/jsx-runtime").JSX.Element;
62
+ export default function JobDescriptionClient({ job, slug, token, sessionStatus, personalDetailId, imageBaseURL, Button, Badge, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, Sheet, SheetContent, SheetDescription, Image, Link, LoadingButton, ScreeningQuestionsPanel, CVSelectionPanel, EasyApply, randomTraining, randomDlyticaCourse, onApply, onSave, onShare, onLoginRequired, capitalize, sanitizeHTML, extractPlainText, shareIcons, searchParams: searchParamsProp, navigateToLogin, }: JobDescriptionClientProps): import("react/jsx-runtime").JSX.Element;
59
63
  //# sourceMappingURL=JobDescriptionClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"JobDescriptionClient.d.ts","sourceRoot":"","sources":["../../src/components/JobDescriptionClient.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JobDescriptionClient.d.ts","sourceRoot":"","sources":["../../src/components/JobDescriptionClient.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { useState, useEffect } from 'react';
4
- import { useRouter, useSearchParams } from 'next/navigation';
5
4
  import { useSavedVacancyMutations } from '../hooks/useSavedVacancyMutations';
6
5
  import { useSavedVacancyList } from '../hooks/useSavedVacancyList';
7
6
  import { useApplicantMutations } from '../hooks/useApplicantMutations';
@@ -21,9 +20,9 @@ const getSalaryText = (job) => {
21
20
  }
22
21
  return job.salary_type || 'Not Disclosed';
23
22
  };
24
- export default function JobDescriptionClient({ job, slug, token, sessionStatus = 'unauthenticated', personalDetailId, imageBaseURL = '', Button, Badge, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, Sheet, SheetContent, SheetDescription, Image, Link, LoadingButton, ScreeningQuestionsPanel, CVSelectionPanel, EasyApply, randomTraining, randomDlyticaCourse, onApply, onSave, onShare, onLoginRequired, capitalize = (str) => str, sanitizeHTML = (html) => html, extractPlainText = (html) => html.replace(/<[^>]*>/g, ''), shareIcons, }) {
25
- const router = useRouter();
26
- const searchParams = useSearchParams();
23
+ export default function JobDescriptionClient({ job, slug, token, sessionStatus = 'unauthenticated', personalDetailId, imageBaseURL = '', Button, Badge, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, Sheet, SheetContent, SheetDescription, Image, Link, LoadingButton, ScreeningQuestionsPanel, CVSelectionPanel, EasyApply, randomTraining, randomDlyticaCourse, onApply, onSave, onShare, onLoginRequired, capitalize = (str) => str, sanitizeHTML = (html) => html, extractPlainText = (html) => html.replace(/<[^>]*>/g, ''), shareIcons, searchParams: searchParamsProp, navigateToLogin, }) {
24
+ const searchParams = searchParamsProp ??
25
+ (typeof window !== 'undefined' ? new URLSearchParams(window.location.search) : new URLSearchParams());
27
26
  const [openJobOverview, setOpenJobOverview] = useState(false);
28
27
  const [openQuestions, setOpenQuestions] = useState(false);
29
28
  const [isEasyApplyOpen, setIsEasyApplyOpen] = useState(false);
@@ -151,7 +150,10 @@ export default function JobDescriptionClient({ job, slug, token, sessionStatus =
151
150
  const confirmLoginRedirect = () => {
152
151
  if (pendingAction) {
153
152
  setAuthDialogOpen(false);
154
- router.push('/login');
153
+ if (navigateToLogin)
154
+ navigateToLogin();
155
+ else if (typeof window !== 'undefined')
156
+ window.location.href = '/login';
155
157
  }
156
158
  };
157
159
  const companyLogoSrc = job.company_logo
@@ -10,6 +10,10 @@ export type JobsClientProps = {
10
10
  initialLocation: string;
11
11
  initialCategory: string;
12
12
  totalJobs: number;
13
+ /** Optional: pass URL search params from your router (e.g. useSearchParams() in Next). If not provided, uses window.location.search */
14
+ searchParams?: URLSearchParams | null;
15
+ /** Optional: called when search changes so you can update the URL (e.g. router.push in Next). If not provided, uses history.pushState */
16
+ onNavigate?: (url: string) => void;
13
17
  /** Optional header component */
14
18
  headerComponent?: React.ComponentType<{
15
19
  jobCount: number;
@@ -23,6 +27,6 @@ export type JobsClientProps = {
23
27
  /** Optional className for the container */
24
28
  className?: string;
25
29
  };
26
- export default function JobsClient({ initialVacancies, initialQuery, initialLocation, initialCategory, totalJobs, headerComponent: HeaderComponent, jobListingComponent: JobListingComponent, className, }: JobsClientProps): import("react/jsx-runtime").JSX.Element;
30
+ export default function JobsClient({ initialVacancies, initialQuery, initialLocation, initialCategory, totalJobs, searchParams: searchParamsProp, onNavigate, headerComponent: HeaderComponent, jobListingComponent: JobListingComponent, className, }: JobsClientProps): import("react/jsx-runtime").JSX.Element;
27
31
  export {};
28
32
  //# sourceMappingURL=JobsClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"JobsClient.d.ts","sourceRoot":"","sources":["../../src/components/JobsClient.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,KAAK,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAExE,MAAM,MAAM,eAAe,GAAG;IAC5B,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QACpC,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;KACxC,CAAC,CAAC;IACH,qCAAqC;IACrC,mBAAmB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QACxC,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,SAAS,EACT,eAAe,EAAE,eAAe,EAChC,mBAAmB,EAAE,mBAAmB,EACxC,SAAS,GACV,EAAE,eAAe,2CA0FjB"}
1
+ {"version":3,"file":"JobsClient.d.ts","sourceRoot":"","sources":["../../src/components/JobsClient.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,KAAK,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAOxE,MAAM,MAAM,eAAe,GAAG;IAC5B,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,uIAAuI;IACvI,YAAY,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACtC,yIAAyI;IACzI,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,gCAAgC;IAChC,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QACpC,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;KACxC,CAAC,CAAC;IACH,qCAAqC;IACrC,mBAAmB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QACxC,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,SAAS,EACT,YAAY,EAAE,gBAAgB,EAC9B,UAAU,EACV,eAAe,EAAE,eAAe,EAChC,mBAAmB,EAAE,mBAAmB,EACxC,SAAS,GACV,EAAE,eAAe,2CAyFjB"}
@@ -1,50 +1,58 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useEffect, useState } from 'react';
4
- import { useRouter, useSearchParams } from 'next/navigation';
5
- export default function JobsClient({ initialVacancies, initialQuery, initialLocation, initialCategory, totalJobs, headerComponent: HeaderComponent, jobListingComponent: JobListingComponent, className, }) {
6
- const router = useRouter();
7
- const searchParams = useSearchParams();
3
+ import { useCallback, useEffect, useState } from 'react';
4
+ function getDefaultSearchParams() {
5
+ if (typeof window === 'undefined')
6
+ return new URLSearchParams();
7
+ return new URLSearchParams(window.location.search);
8
+ }
9
+ export default function JobsClient({ initialVacancies, initialQuery, initialLocation, initialCategory, totalJobs, searchParams: searchParamsProp, onNavigate, headerComponent: HeaderComponent, jobListingComponent: JobListingComponent, className, }) {
10
+ const [urlParams, setUrlParams] = useState(getDefaultSearchParams);
11
+ const searchParams = searchParamsProp ?? urlParams;
8
12
  const [_filter, setFilter] = useState({
9
13
  keyword: initialQuery,
10
14
  location: initialLocation,
11
15
  category: initialCategory ? initialCategory.split(',') : [],
12
16
  });
13
- const handleSearch = (next) => {
17
+ const handleSearch = useCallback((next) => {
14
18
  setFilter(next);
15
- const url = new URL(window.location.href);
19
+ const url = new URL(typeof window !== 'undefined' ? window.location.href : 'http://localhost');
16
20
  const kw = next.keyword.trim();
17
- if (kw) {
21
+ if (kw)
18
22
  url.searchParams.set('query', kw);
19
- }
20
- else {
23
+ else
21
24
  url.searchParams.delete('query');
22
- }
23
25
  const loc = next.location.trim();
24
- if (loc) {
26
+ if (loc)
25
27
  url.searchParams.set('location', loc);
26
- }
27
- else {
28
+ else
28
29
  url.searchParams.delete('location');
29
- }
30
- if (next.category.length > 0) {
30
+ if (next.category.length > 0)
31
31
  url.searchParams.set('category', next.category.join(','));
32
- }
33
- else {
32
+ else
34
33
  url.searchParams.delete('category');
34
+ const urlStr = url.toString();
35
+ if (onNavigate) {
36
+ onNavigate(urlStr);
35
37
  }
36
- // Use push to trigger server-side re-render with new params
37
- router.push(url.toString());
38
- };
39
- // Sync filter state with URL params when they change (e.g., back/forward navigation)
38
+ else if (typeof window !== 'undefined') {
39
+ window.history.pushState({}, '', urlStr);
40
+ setUrlParams(new URLSearchParams(url.search));
41
+ }
42
+ }, [onNavigate]);
40
43
  useEffect(() => {
41
44
  setFilter({
42
45
  keyword: searchParams?.get('query') || '',
43
46
  location: searchParams?.get('location') || '',
44
- category: searchParams?.get('category')
45
- ? searchParams.get('category').split(',')
46
- : [],
47
+ category: searchParams?.get('category') ? searchParams.get('category').split(',') : [],
47
48
  });
48
49
  }, [searchParams]);
50
+ useEffect(() => {
51
+ if (searchParamsProp != null)
52
+ return;
53
+ const onPopState = () => setUrlParams(getDefaultSearchParams());
54
+ window.addEventListener('popstate', onPopState);
55
+ return () => window.removeEventListener('popstate', onPopState);
56
+ }, [searchParamsProp]);
49
57
  return (_jsxs("div", { className: className, children: [HeaderComponent ? (_jsx(HeaderComponent, { jobCount: totalJobs, handleSearch: handleSearch })) : (_jsxs("div", { className: "p-4 border-b", children: [_jsxs("p", { className: "text-sm text-gray-600", children: [totalJobs, " job", totalJobs !== 1 ? 's' : '', " found"] }), _jsx("p", { className: "text-xs text-gray-500 mt-1", children: "Provide a headerComponent prop to customize the header" })] })), _jsx("div", { className: "max-w-7xl px-6 mx-auto mt-12", children: JobListingComponent ? (_jsx(JobListingComponent, { joblist: initialVacancies, jobCount: totalJobs })) : (_jsx("div", { className: "space-y-4", children: initialVacancies.length === 0 ? (_jsx("p", { className: "text-center text-gray-500 py-8", children: "No jobs found" })) : (initialVacancies.map((job) => (_jsxs("div", { className: "p-4 border rounded-lg hover:shadow-md transition-shadow", children: [_jsx("h3", { className: "font-semibold text-lg", children: job.title }), _jsx("p", { className: "text-sm text-gray-600 mt-1", children: job.company_name }), _jsx("p", { className: "text-xs text-gray-500 mt-1", children: job.location }), _jsx("p", { className: "text-xs text-gray-500 mt-1", children: "Provide a jobListingComponent prop to customize the listing" })] }, job.id)))) })) })] }));
50
58
  }
@@ -26,7 +26,7 @@ export declare const easyApplyUserSchema: z.ZodObject<{
26
26
  email: z.ZodString;
27
27
  phone_no: z.ZodString;
28
28
  current_address: z.ZodString;
29
- current_status: z.ZodString;
29
+ current_status: z.ZodEnum<["open to work", "open to switch", "part time", "freelance", "not looking"]>;
30
30
  two_wheeler: z.ZodDefault<z.ZodBoolean>;
31
31
  driving_license: z.ZodDefault<z.ZodBoolean>;
32
32
  salary_expectation: z.ZodEffects<z.ZodObject<{
@@ -62,7 +62,7 @@ export declare const easyApplyUserSchema: z.ZodObject<{
62
62
  email: string;
63
63
  phone_no: string;
64
64
  current_address: string;
65
- current_status: string;
65
+ current_status: "open to work" | "open to switch" | "part time" | "freelance" | "not looking";
66
66
  two_wheeler: boolean;
67
67
  driving_license: boolean;
68
68
  salary_expectation: {
@@ -80,7 +80,7 @@ export declare const easyApplyUserSchema: z.ZodObject<{
80
80
  email: string;
81
81
  phone_no: string;
82
82
  current_address: string;
83
- current_status: string;
83
+ current_status: "open to work" | "open to switch" | "part time" | "freelance" | "not looking";
84
84
  salary_expectation: {
85
85
  min: number;
86
86
  max: number;
@@ -111,7 +111,7 @@ export declare const useEasyApplyFormHook: ({ vacancyId, isIntern, token, onSucc
111
111
  email: string;
112
112
  phone_no: string;
113
113
  current_address: string;
114
- current_status: string;
114
+ current_status: "open to work" | "open to switch" | "part time" | "freelance" | "not looking";
115
115
  two_wheeler: boolean;
116
116
  driving_license: boolean;
117
117
  salary_expectation: {
@@ -129,7 +129,7 @@ export declare const useEasyApplyFormHook: ({ vacancyId, isIntern, token, onSucc
129
129
  email: string;
130
130
  phone_no: string;
131
131
  current_address: string;
132
- current_status: string;
132
+ current_status: "open to work" | "open to switch" | "part time" | "freelance" | "not looking";
133
133
  two_wheeler: boolean;
134
134
  driving_license: boolean;
135
135
  salary_expectation: {
@@ -1 +1 @@
1
- {"version":3,"file":"useEasyApplyFormHook.d.ts","sourceRoot":"","sources":["../../src/hooks/useEasyApplyFormHook.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,qBAAqB;;;;;;;;;EAGhC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;WAAiC,CAAC;AAErE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsB9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC7E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AA+B/E,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,0HAA0H;IAC1H,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACtD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,qDAMlC,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAqDV,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoErC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"useEasyApplyFormHook.d.ts","sourceRoot":"","sources":["../../src/hooks/useEasyApplyFormHook.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,eAAO,MAAM,qBAAqB;;;;;;;;;EAGhC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;WAAiC,CAAC;AAErE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwB9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC7E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AA+B/E,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,0HAA0H;IAC1H,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACtD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,qDAMlC,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAqDV,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoErC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -4,6 +4,7 @@ import { useForm } from 'react-hook-form';
4
4
  import { zodResolver } from '@hookform/resolvers/zod';
5
5
  import { z } from 'zod';
6
6
  import { useEasyApplyMutations } from './useEasyApplyMutations';
7
+ import { WORK_STATUS_VALUES } from '../types/easy-apply';
7
8
  // Schemas
8
9
  const salaryExpectationSchema = z
9
10
  .object({
@@ -36,7 +37,9 @@ export const easyApplyUserSchema = z.object({
36
37
  current_address: z
37
38
  .string()
38
39
  .min(1, { message: 'Current address is required' }),
39
- current_status: z.string().min(1, { message: 'Current status is required' }),
40
+ current_status: z.enum(WORK_STATUS_VALUES, {
41
+ errorMap: () => ({ message: 'Please select a valid current status' }),
42
+ }),
40
43
  two_wheeler: z.boolean().default(false),
41
44
  driving_license: z.boolean().default(false),
42
45
  salary_expectation: salaryExpectationSchema,
@@ -82,7 +85,7 @@ export const useEasyApplyFormHook = ({ vacancyId, isIntern = false, token, onSuc
82
85
  email: '',
83
86
  phone_no: '',
84
87
  current_address: '',
85
- current_status: '',
88
+ current_status: 'open to work',
86
89
  two_wheeler: false,
87
90
  driving_license: false,
88
91
  salary_expectation: { min: 10000, max: 20000 },
@@ -11,7 +11,7 @@ type Config = {
11
11
  isIntern?: boolean;
12
12
  /** Optional token for authenticated requests */
13
13
  token?: string;
14
- /** Optional search params - if not provided, will try to use next/navigation useSearchParams */
14
+ /** Optional search params - if not provided, uses window.location.search when in browser */
15
15
  searchParams?: URLSearchParams | null;
16
16
  };
17
17
  type UnifiedPagination = {
@@ -1 +1 @@
1
- {"version":3,"file":"useGetAllVacancy.d.ts","sourceRoot":"","sources":["../../src/hooks/useGetAllVacancy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAiB,gBAAgB,EAAc,MAAM,UAAU,CAAC;AAO5E,KAAK,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC;AAE5B,KAAK,MAAM,GAAG;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gGAAgG;IAChG,YAAY,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CACvC,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAkBF,eAAO,MAAM,gBAAgB,GAAI,mHAU9B,MAAW;;;;;;;;;;iBAnBD,MAAM;kBACL,MAAM;kBACN,MAAM;kBACN,MAAM;iBACP,MAAM;cACT,MAAM;;CAgOf,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"useGetAllVacancy.d.ts","sourceRoot":"","sources":["../../src/hooks/useGetAllVacancy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAiB,gBAAgB,EAAc,MAAM,UAAU,CAAC;AAE5E,KAAK,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC;AAE5B,KAAK,MAAM,GAAG;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,YAAY,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CACvC,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAkBF,eAAO,MAAM,gBAAgB,GAAI,mHAU9B,MAAW;;;;;;;;;;iBAnBD,MAAM;kBACL,MAAM;kBACN,MAAM;kBACN,MAAM;iBACP,MAAM;cACT,MAAM;;CAiOf,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1,16 +1,12 @@
1
1
  'use client';
2
2
  import { useQuery } from '@tanstack/react-query';
3
3
  import { apiRequest } from '../utils/api-request';
4
- // Import useSearchParams from next/navigation
5
- // Next.js is a peer dependency, so this should be available
6
- // If not using Next.js, provide searchParams in the config
7
- import { useSearchParams as useNextSearchParams } from 'next/navigation';
8
4
  export const useGetAllVacancy = ({ publicFetch = true, mode = 'all', page, limit, companyId, forceStatus, isIntern = false, token, searchParams: providedSearchParams, } = {}) => {
9
5
  const isReady = !!token || publicFetch;
10
- // Use Next.js hook if no searchParams provided
11
- // If not using Next.js, provide searchParams in config
12
- const nextSearchParams = !providedSearchParams ? useNextSearchParams() : null;
13
- const searchParams = providedSearchParams ?? nextSearchParams ?? new URLSearchParams();
6
+ const searchParams = providedSearchParams ??
7
+ (typeof window !== 'undefined'
8
+ ? new URLSearchParams(window.location.search)
9
+ : new URLSearchParams());
14
10
  const searchQuery = searchParams?.get('query') || '';
15
11
  const urlLimit = Number(searchParams?.get('pageLimit') || '50');
16
12
  const location = searchParams?.get('location') || '';
package/dist/index.d.ts CHANGED
@@ -3,7 +3,8 @@ export type { SingleVacancyRes, VacancyApiRes, Pagination, ExperienceLevel, } fr
3
3
  export type { ApplicantItem, ApplicantApiResponse, ApplicantPayload, } from './types/applicant';
4
4
  export type { SavedVacancyItem, SavedVacancyApiResponse, SavedVacancyPayload, } from './types/saved-vacancy';
5
5
  export type { Question, AnswerOption, VacancyQuestionsResponse, } from './types/questions';
6
- export type { QuestionsAPIRes, ScreeningAnswersApiResNew, } from './types/easy-apply';
6
+ export { WORKSTATUS, WORK_STATUS_VALUES, } from './types/easy-apply';
7
+ export type { WorkStatusValue, QuestionsAPIRes, ScreeningAnswersApiResNew, } from './types/easy-apply';
7
8
  export { apiRequest } from './utils/api-request';
8
9
  export type { ApiResponse } from './utils/api-request';
9
10
  export { useGetAllVacancy } from './hooks/useGetAllVacancy';
@@ -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,YAAY,EACV,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":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // API Client
2
2
  export { initApi, getBaseURL, API } from './api-client';
3
+ export { WORKSTATUS, WORK_STATUS_VALUES, } from './types/easy-apply';
3
4
  // Utils
4
5
  export { apiRequest } from './utils/api-request';
5
6
  // Hooks
@@ -1,3 +1,11 @@
1
+ /** Allowed values for current status (work status) in easy apply */
2
+ export declare const WORK_STATUS_VALUES: readonly ["open to work", "open to switch", "part time", "freelance", "not looking"];
3
+ export type WorkStatusValue = (typeof WORK_STATUS_VALUES)[number];
4
+ export declare const WORKSTATUS: Array<{
5
+ label: string;
6
+ value: WorkStatusValue;
7
+ description: string;
8
+ }>;
1
9
  /** API response for application questions (used by easy apply) */
2
10
  export interface QuestionsAPIRes {
3
11
  data: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"easy-apply.d.ts","sourceRoot":"","sources":["../../src/types/easy-apply.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,KAAK,CAAC;QACV,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,mBAAmB,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;QACtF,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;KAC3E,CAAC,CAAC;IACH,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;AAED,mDAAmD;AACnD,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,KAAK,CAAC;QACV,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;QACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC,CAAC;CACJ"}
1
+ {"version":3,"file":"easy-apply.d.ts","sourceRoot":"","sources":["../../src/types/easy-apply.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,sFAMrB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB,CA2BA,CAAC;AAEF,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,KAAK,CAAC;QACV,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,mBAAmB,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;QACtF,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;KAC3E,CAAC,CAAC;IACH,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;AAED,mDAAmD;AACnD,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,KAAK,CAAC;QACV,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;QACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC,CAAC;CACJ"}
@@ -1 +1,35 @@
1
- export {};
1
+ /** Allowed values for current status (work status) in easy apply */
2
+ export const WORK_STATUS_VALUES = [
3
+ 'open to work',
4
+ 'open to switch',
5
+ 'part time',
6
+ 'freelance',
7
+ 'not looking',
8
+ ];
9
+ export const WORKSTATUS = [
10
+ {
11
+ label: 'Open to work',
12
+ value: 'open to work',
13
+ description: 'Looking for new opportunities and available to join immediately.',
14
+ },
15
+ {
16
+ label: 'Open to Switch',
17
+ value: 'open to switch',
18
+ description: 'Currently employed but open to better roles and growth opportunities',
19
+ },
20
+ {
21
+ label: 'Part Time',
22
+ value: 'part time',
23
+ description: 'Seeking part-time roles or project-based work with flexible hours.',
24
+ },
25
+ {
26
+ label: 'Freelance',
27
+ value: 'freelance',
28
+ description: 'Available for freelance, remote, or project-based assignments.',
29
+ },
30
+ {
31
+ label: 'Not Looking',
32
+ value: 'not looking',
33
+ description: 'Currently engaged in a role and not seeking new opportunities.',
34
+ },
35
+ ];
package/package.json CHANGED
@@ -1,45 +1,44 @@
1
- {
2
- "name": "@recruitnepal/shared-packages",
3
- "version": "1.3.0",
4
- "description": "Shared UI components and hooks for Recruit Nepal projects",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "scripts": {
8
- "build": "tsc",
9
- "dev": "tsc --watch",
10
- "prepublishOnly": "npm run build"
11
- },
12
- "keywords": [
13
- "react",
14
- "nextjs",
15
- "recruit-nepal",
16
- "shared-components"
17
- ],
18
- "author": "",
19
- "license": "MIT",
20
- "peerDependencies": {
21
- "react": "^18.2.0",
22
- "react-dom": "^18.2.0",
23
- "next": "^14.0.0",
24
- "@tanstack/react-query": "^5.50.0",
25
- "zod": "^3.22.0",
26
- "react-hook-form": "^7.49.0",
27
- "@hookform/resolvers": "^3.3.0"
28
- },
29
- "dependencies": {
30
- "axios": "^1.7.8"
31
- },
32
- "devDependencies": {
33
- "@types/node": "^20.11.17",
34
- "@types/react": "^18.2.55",
35
- "@types/react-dom": "^18.2.19",
36
- "typescript": "^5.3.3",
37
- "zod": "^3.22.0",
38
- "react-hook-form": "^7.49.0",
39
- "@hookform/resolvers": "^3.3.0"
40
- },
41
- "files": [
42
- "dist",
43
- "README.md"
44
- ]
45
- }
1
+ {
2
+ "name": "@recruitnepal/shared-packages",
3
+ "version": "1.5.0",
4
+ "description": "Shared UI components and hooks for Recruit Nepal projects",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "dev": "tsc --watch",
10
+ "prepublishOnly": "npm run build"
11
+ },
12
+ "keywords": [
13
+ "react",
14
+ "nextjs",
15
+ "recruit-nepal",
16
+ "shared-components"
17
+ ],
18
+ "author": "",
19
+ "license": "MIT",
20
+ "peerDependencies": {
21
+ "react": "^18.2.0",
22
+ "react-dom": "^18.2.0",
23
+ "@tanstack/react-query": "^5.50.0",
24
+ "zod": "^3.22.0",
25
+ "react-hook-form": "^7.49.0",
26
+ "@hookform/resolvers": "^3.3.0"
27
+ },
28
+ "dependencies": {
29
+ "axios": "^1.7.8"
30
+ },
31
+ "devDependencies": {
32
+ "@types/node": "^20.11.17",
33
+ "@types/react": "^18.2.55",
34
+ "@types/react-dom": "^18.2.19",
35
+ "typescript": "^5.3.3",
36
+ "zod": "^3.22.0",
37
+ "react-hook-form": "^7.49.0",
38
+ "@hookform/resolvers": "^3.3.0"
39
+ },
40
+ "files": [
41
+ "dist",
42
+ "README.md"
43
+ ]
44
+ }