@inploi/plugin-job-search 9.0.0 → 9.0.2

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 (98) hide show
  1. package/README.md +5 -0
  2. package/cdn/index.js +16 -18
  3. package/cdn/style.css +1 -1
  4. package/dist/index.cjs +1 -2
  5. package/dist/index.d.cts +977 -0
  6. package/dist/index.d.ts +977 -2
  7. package/dist/index.js +147 -175
  8. package/dist/{job-search-eb64050e.js → job-search-C39oHZb7.js} +1804 -1959
  9. package/dist/job-search-C9kyIrbM.cjs +60 -0
  10. package/dist/map-B3T2x-f7.cjs +1 -0
  11. package/dist/map-DVf9u_B8.js +286 -0
  12. package/dist/{map-attribution-96798686.js → map-attribution-By9wrlPf.js} +7 -14
  13. package/dist/mapbox-gl-BvQCqDX3.cjs +3073 -0
  14. package/dist/{mapbox-gl-0f446975.js → mapbox-gl-D9aqTRUT.js} +13146 -16312
  15. package/dist/style.css +1 -1
  16. package/dist/utils.cjs +1 -1
  17. package/dist/utils.d.cts +622 -0
  18. package/dist/utils.d.ts +622 -3
  19. package/dist/utils.js +11 -12
  20. package/package.json +25 -15
  21. package/dist/components/button.d.ts +0 -60
  22. package/dist/components/combobox.d.ts +0 -27
  23. package/dist/components/error-boundary.d.ts +0 -23
  24. package/dist/components/filter-content.active.d.ts +0 -246
  25. package/dist/components/filter-section.d.ts +0 -18
  26. package/dist/components/filter.d.ts +0 -24
  27. package/dist/components/geo-search.d.ts +0 -37
  28. package/dist/components/geo-search.geocode.d.ts +0 -34
  29. package/dist/components/geo-search.geocode.test.d.ts +0 -1
  30. package/dist/components/geo-search.locate-button.d.ts +0 -8
  31. package/dist/components/geo-search.location-input.d.ts +0 -12
  32. package/dist/components/geo-search.location-input.test.d.ts +0 -1
  33. package/dist/components/geo-search.utils.d.ts +0 -19
  34. package/dist/components/geo-search.utils.test.d.ts +0 -1
  35. package/dist/components/icon.d.ts +0 -33
  36. package/dist/components/job-card.d.ts +0 -17
  37. package/dist/components/job-search.alerts.test.d.ts +0 -1
  38. package/dist/components/job-search.d.ts +0 -56
  39. package/dist/components/keyword-search.d.ts +0 -6
  40. package/dist/components/map.attribution.test.d.ts +0 -1
  41. package/dist/components/map.d.ts +0 -12
  42. package/dist/components/map.imports.test.d.ts +0 -1
  43. package/dist/components/map.mapbox.d.ts +0 -11
  44. package/dist/components/map.maplibre.d.ts +0 -12
  45. package/dist/components/map.test.d.ts +0 -1
  46. package/dist/components/map.types.d.ts +0 -46
  47. package/dist/components/natural-language-section.d.ts +0 -9
  48. package/dist/components/palette-debugger.d.ts +0 -1
  49. package/dist/components/result-order.d.ts +0 -6
  50. package/dist/components/results-list.d.ts +0 -26
  51. package/dist/components/results-map.d.ts +0 -22
  52. package/dist/components/results.d.ts +0 -28
  53. package/dist/components/roving-text.d.ts +0 -6
  54. package/dist/components/skeleton-text.d.ts +0 -3
  55. package/dist/components/tag.d.ts +0 -60
  56. package/dist/components/view-switch.d.ts +0 -64
  57. package/dist/index.cdn.d.ts +0 -9
  58. package/dist/index.dev.d.ts +0 -1
  59. package/dist/job-search-941c04d7.cjs +0 -60
  60. package/dist/job-search.api.d.ts +0 -682
  61. package/dist/job-search.api.test.d.ts +0 -1
  62. package/dist/job-search.api.typetest.d.ts +0 -1
  63. package/dist/job-search.constants.d.ts +0 -7
  64. package/dist/job-search.d.ts +0 -296
  65. package/dist/job-search.schemas.d.ts +0 -183
  66. package/dist/lib/cache-key.d.ts +0 -7
  67. package/dist/lib/cache-key.test.d.ts +0 -1
  68. package/dist/lib/countries.d.ts +0 -4
  69. package/dist/lib/countries.test.d.ts +0 -1
  70. package/dist/lib/currency.test.d.ts +0 -1
  71. package/dist/lib/deep-set.d.ts +0 -8
  72. package/dist/lib/deep-set.test.d.ts +0 -1
  73. package/dist/lib/distance.d.ts +0 -11
  74. package/dist/lib/distance.test.d.ts +0 -1
  75. package/dist/lib/hooks.d.ts +0 -8
  76. package/dist/lib/i18n.d.ts +0 -587
  77. package/dist/lib/map-attribution.d.ts +0 -8
  78. package/dist/lib/map-library-cdn.test.d.ts +0 -1
  79. package/dist/lib/map-style.d.ts +0 -8
  80. package/dist/lib/map-style.test.d.ts +0 -1
  81. package/dist/lib/match.d.ts +0 -35
  82. package/dist/lib/match.test.d.ts +0 -1
  83. package/dist/lib/sort.d.ts +0 -4
  84. package/dist/lib/sort.test.d.ts +0 -1
  85. package/dist/lib/type-utils.d.ts +0 -56
  86. package/dist/lib/utils.d.ts +0 -16
  87. package/dist/lib/utils.test.d.ts +0 -1
  88. package/dist/map-00ee82df.js +0 -300
  89. package/dist/map-109de8da.cjs +0 -2
  90. package/dist/mapbox-gl-11152b6e.cjs +0 -3073
  91. package/dist/mocks/browser.d.ts +0 -1
  92. package/dist/mocks/handlers.d.ts +0 -26
  93. package/dist/style/theme.d.ts +0 -7
  94. package/dist/style/theme.utils.d.ts +0 -6
  95. package/dist/style/tokens.d.ts +0 -148
  96. /package/dist/{common.geo-transport-CJGUJXTA-aba25ae8.cjs → common.geo-transport-CJGUJXTA-BmDm5A18.cjs} +0 -0
  97. /package/dist/{common.geo-transport-CJGUJXTA-e1f9b82a.js → common.geo-transport-CJGUJXTA-H3__EeqQ.js} +0 -0
  98. /package/dist/{map-attribution-0b24769c.cjs → map-attribution-DyuZ3dMC.cjs} +0 -0
@@ -0,0 +1,977 @@
1
+ import type { AnalyticsService } from '@inploi/sdk' with { 'resolution-mode': 'import' };
2
+ import type { ApiClient } from '@inploi/sdk' with { 'resolution-mode': 'import' };
3
+ import type { FeedbackPlugin } from '@inploi/plugin-feedback' with { 'resolution-mode': 'import' };
4
+ import type { feedbackPlugin } from '@inploi/plugin-feedback' with { 'resolution-mode': 'import' };
5
+ import type { FeedbackPluginParams } from '@inploi/plugin-feedback' with { 'resolution-mode': 'import' };
6
+ import type { InploiRpcClient } from '@inploi/sdk' with { 'resolution-mode': 'import' };
7
+ import type { InploiSdkEnvironment } from '@inploi/sdk' with { 'resolution-mode': 'import' };
8
+ import type { jobAlertsPlugin } from '@inploi/plugin-job-alerts' with { 'resolution-mode': 'import' };
9
+ import type { JobAlertsPluginParams } from '@inploi/plugin-job-alerts' with { 'resolution-mode': 'import' };
10
+ import type { Logger } from '@inploi/sdk' with { 'resolution-mode': 'import' };
11
+
12
+ declare type ColorPaletteConfig = {
13
+ /** Number between 0 and 360. Number above or below range will loop. */
14
+ hue: number;
15
+ /** Float between 0 and 2. Acts as a multiplier to the original generated palette. */
16
+ chroma: number;
17
+ };
18
+
19
+ export declare const createJobSearchDomManager: (logger: Logger) => {
20
+ getRenderTargetElement: (widgetId: string | undefined) => Element;
21
+ };
22
+
23
+ declare const createTFunction: <T extends {
24
+ readonly type_to_search_jobs: "Type to search jobs";
25
+ readonly type_to_search: "Type to search";
26
+ readonly jobs_found: {
27
+ readonly one: "{{count}} job found";
28
+ readonly other: "{{count}} jobs found";
29
+ };
30
+ readonly no_jobs_found: "No jobs found";
31
+ readonly no_jobs_found_description: "We could not find any jobs matching your filtering criteria.";
32
+ readonly jobs_loading_error: "We’re having trouble loading available jobs.";
33
+ readonly filters_loading_error: "We’re having trouble loading available filters.";
34
+ readonly no_filter_options_available: "No filter options available.";
35
+ readonly clear: "Clear";
36
+ readonly selected: "selected";
37
+ readonly done: "Done";
38
+ readonly close: "Close";
39
+ readonly new: "NEW";
40
+ readonly posted: "Posted";
41
+ readonly distance_away: "{{distance}} away";
42
+ readonly retry: "Retry";
43
+ readonly widget_unavailable: "Sorry, this widget is unavailable at the moment.";
44
+ readonly load_more_count: "Load {{count}} more";
45
+ readonly of_remaining_count: "of {{count}} remaining";
46
+ readonly today: "today";
47
+ readonly over_30_days_ago: "over 30 days ago";
48
+ readonly in_over_30_days: "in over 30 days";
49
+ readonly up_to: "Up to";
50
+ readonly from: "From";
51
+ readonly invalid_salary: "Invalid salary";
52
+ readonly competitive: "Competitive";
53
+ readonly natural_language_input: "Type anything";
54
+ readonly great_match: "Great match";
55
+ readonly advanced_mode: "Filters";
56
+ readonly simple_mode: "Hide filters";
57
+ readonly ai_disclaimer: "Results may not be perfect. AI-powered search can occasionally suggest unrelated content.";
58
+ readonly geo_error_timeout: "Timed out. Please type your location manually.";
59
+ readonly geo_error_permission_denied: "Please allow location access to use this feature.";
60
+ readonly geo_error_position_unavailable: "Could not locate you. Please type your location manually.";
61
+ readonly geo_my_location: "My location";
62
+ readonly geo_locating: "Locating you...";
63
+ readonly geo_search_placeholder: "Search for a location";
64
+ readonly geo_clear_search: "Clear location search";
65
+ readonly location_provided: "Provided location";
66
+ readonly search_label: "What";
67
+ readonly geo_label: "Where";
68
+ readonly geo_range_label: "Within";
69
+ readonly geo_suggestions_error: "Could not get the suggested locations.";
70
+ readonly geo_no_match: "We couldn’t find that place. Try a town, city or postcode.";
71
+ readonly geo_query_too_short: "Type at least 3 letters of a town, city or postcode.";
72
+ readonly geo_choose_location: "Press Enter or choose a suggestion to search near this place.";
73
+ readonly geo_any_distance: "Any distance";
74
+ readonly feedback: "How was your search experience?";
75
+ readonly list: "List";
76
+ readonly map: "Map";
77
+ readonly map_gesture_windows: "Use Ctrl + scroll to zoom the map";
78
+ readonly map_gesture_mac: "Use ⌘ + scroll to zoom the map";
79
+ readonly map_gesture_mobile: "Use two fingers to move the map";
80
+ readonly map_unavailable: "Map unavailable";
81
+ readonly loading_jobs: "Loading jobs…";
82
+ readonly map_jobs_error: "We’re having trouble loading jobs in the area";
83
+ readonly map_has_more_title: "Not showing all the jobs in this area";
84
+ readonly map_has_more_description: "Zoom in to refine your search further";
85
+ readonly map_jobs_showing: {
86
+ readonly one: "Showing {{count}} job";
87
+ readonly other: "Showing {{count}} jobs";
88
+ };
89
+ readonly page: "Page";
90
+ readonly reset: "Reset";
91
+ readonly sort_by: "Sort by";
92
+ readonly sort_most_relevant: "Most relevant";
93
+ readonly sort_closest: "Closest";
94
+ readonly sort_newest: "Newest";
95
+ readonly 'job.employment_type.FULL_TIME': "Full-time";
96
+ readonly 'job.employment_type.PART_TIME': "Part-time";
97
+ readonly 'job.employment_type.CONTRACT': "Contractor";
98
+ readonly 'job.employment_type.TEMPORARY': "Temporary";
99
+ readonly 'job.employment_type.INTERN': "Internship";
100
+ readonly 'job.employment_type.VOLUNTEER': "Volunteer";
101
+ readonly 'job.employment_type.OTHER': "Other";
102
+ readonly 'job.location_type.LOCATION': "On-site";
103
+ readonly 'job.location_type.REMOTE': "Remote";
104
+ readonly 'job.location_type.HYBRID': "Hybrid";
105
+ } = {
106
+ readonly type_to_search_jobs: "Type to search jobs";
107
+ readonly type_to_search: "Type to search";
108
+ readonly jobs_found: {
109
+ readonly one: "{{count}} job found";
110
+ readonly other: "{{count}} jobs found";
111
+ };
112
+ readonly no_jobs_found: "No jobs found";
113
+ readonly no_jobs_found_description: "We could not find any jobs matching your filtering criteria.";
114
+ readonly jobs_loading_error: "We’re having trouble loading available jobs.";
115
+ readonly filters_loading_error: "We’re having trouble loading available filters.";
116
+ readonly no_filter_options_available: "No filter options available.";
117
+ readonly clear: "Clear";
118
+ readonly selected: "selected";
119
+ readonly done: "Done";
120
+ readonly close: "Close";
121
+ readonly new: "NEW";
122
+ readonly posted: "Posted";
123
+ readonly distance_away: "{{distance}} away";
124
+ readonly retry: "Retry";
125
+ readonly widget_unavailable: "Sorry, this widget is unavailable at the moment.";
126
+ readonly load_more_count: "Load {{count}} more";
127
+ readonly of_remaining_count: "of {{count}} remaining";
128
+ readonly today: "today";
129
+ readonly over_30_days_ago: "over 30 days ago";
130
+ readonly in_over_30_days: "in over 30 days";
131
+ readonly up_to: "Up to";
132
+ readonly from: "From";
133
+ readonly invalid_salary: "Invalid salary";
134
+ readonly competitive: "Competitive";
135
+ readonly natural_language_input: "Type anything";
136
+ readonly great_match: "Great match";
137
+ readonly advanced_mode: "Filters";
138
+ readonly simple_mode: "Hide filters";
139
+ readonly ai_disclaimer: "Results may not be perfect. AI-powered search can occasionally suggest unrelated content.";
140
+ readonly geo_error_timeout: "Timed out. Please type your location manually.";
141
+ readonly geo_error_permission_denied: "Please allow location access to use this feature.";
142
+ readonly geo_error_position_unavailable: "Could not locate you. Please type your location manually.";
143
+ readonly geo_my_location: "My location";
144
+ readonly geo_locating: "Locating you...";
145
+ readonly geo_search_placeholder: "Search for a location";
146
+ readonly geo_clear_search: "Clear location search";
147
+ readonly location_provided: "Provided location";
148
+ readonly search_label: "What";
149
+ readonly geo_label: "Where";
150
+ readonly geo_range_label: "Within";
151
+ readonly geo_suggestions_error: "Could not get the suggested locations.";
152
+ readonly geo_no_match: "We couldn’t find that place. Try a town, city or postcode.";
153
+ readonly geo_query_too_short: "Type at least 3 letters of a town, city or postcode.";
154
+ readonly geo_choose_location: "Press Enter or choose a suggestion to search near this place.";
155
+ readonly geo_any_distance: "Any distance";
156
+ readonly feedback: "How was your search experience?";
157
+ readonly list: "List";
158
+ readonly map: "Map";
159
+ readonly map_gesture_windows: "Use Ctrl + scroll to zoom the map";
160
+ readonly map_gesture_mac: "Use ⌘ + scroll to zoom the map";
161
+ readonly map_gesture_mobile: "Use two fingers to move the map";
162
+ readonly map_unavailable: "Map unavailable";
163
+ readonly loading_jobs: "Loading jobs…";
164
+ readonly map_jobs_error: "We’re having trouble loading jobs in the area";
165
+ readonly map_has_more_title: "Not showing all the jobs in this area";
166
+ readonly map_has_more_description: "Zoom in to refine your search further";
167
+ readonly map_jobs_showing: {
168
+ readonly one: "Showing {{count}} job";
169
+ readonly other: "Showing {{count}} jobs";
170
+ };
171
+ readonly page: "Page";
172
+ readonly reset: "Reset";
173
+ readonly sort_by: "Sort by";
174
+ readonly sort_most_relevant: "Most relevant";
175
+ readonly sort_closest: "Closest";
176
+ readonly sort_newest: "Newest";
177
+ readonly 'job.employment_type.FULL_TIME': "Full-time";
178
+ readonly 'job.employment_type.PART_TIME': "Part-time";
179
+ readonly 'job.employment_type.CONTRACT': "Contractor";
180
+ readonly 'job.employment_type.TEMPORARY': "Temporary";
181
+ readonly 'job.employment_type.INTERN': "Internship";
182
+ readonly 'job.employment_type.VOLUNTEER': "Volunteer";
183
+ readonly 'job.employment_type.OTHER': "Other";
184
+ readonly 'job.location_type.LOCATION': "On-site";
185
+ readonly 'job.location_type.REMOTE': "Remote";
186
+ readonly 'job.location_type.HYBRID': "Hybrid";
187
+ }>(options: {
188
+ overrides: Partial<TranslationDict< {
189
+ readonly type_to_search_jobs: "Type to search jobs";
190
+ readonly type_to_search: "Type to search";
191
+ readonly jobs_found: {
192
+ readonly one: "{{count}} job found";
193
+ readonly other: "{{count}} jobs found";
194
+ };
195
+ readonly no_jobs_found: "No jobs found";
196
+ readonly no_jobs_found_description: "We could not find any jobs matching your filtering criteria.";
197
+ readonly jobs_loading_error: "We’re having trouble loading available jobs.";
198
+ readonly filters_loading_error: "We’re having trouble loading available filters.";
199
+ readonly no_filter_options_available: "No filter options available.";
200
+ readonly clear: "Clear";
201
+ readonly selected: "selected";
202
+ readonly done: "Done";
203
+ readonly close: "Close";
204
+ readonly new: "NEW";
205
+ readonly posted: "Posted";
206
+ readonly distance_away: "{{distance}} away";
207
+ readonly retry: "Retry";
208
+ readonly widget_unavailable: "Sorry, this widget is unavailable at the moment.";
209
+ readonly load_more_count: "Load {{count}} more";
210
+ readonly of_remaining_count: "of {{count}} remaining";
211
+ readonly today: "today";
212
+ readonly over_30_days_ago: "over 30 days ago";
213
+ readonly in_over_30_days: "in over 30 days";
214
+ readonly up_to: "Up to";
215
+ readonly from: "From";
216
+ readonly invalid_salary: "Invalid salary";
217
+ readonly competitive: "Competitive";
218
+ readonly natural_language_input: "Type anything";
219
+ readonly great_match: "Great match";
220
+ readonly advanced_mode: "Filters";
221
+ readonly simple_mode: "Hide filters";
222
+ readonly ai_disclaimer: "Results may not be perfect. AI-powered search can occasionally suggest unrelated content.";
223
+ readonly geo_error_timeout: "Timed out. Please type your location manually.";
224
+ readonly geo_error_permission_denied: "Please allow location access to use this feature.";
225
+ readonly geo_error_position_unavailable: "Could not locate you. Please type your location manually.";
226
+ readonly geo_my_location: "My location";
227
+ readonly geo_locating: "Locating you...";
228
+ readonly geo_search_placeholder: "Search for a location";
229
+ readonly geo_clear_search: "Clear location search";
230
+ readonly location_provided: "Provided location";
231
+ readonly search_label: "What";
232
+ readonly geo_label: "Where";
233
+ readonly geo_range_label: "Within";
234
+ readonly geo_suggestions_error: "Could not get the suggested locations.";
235
+ readonly geo_no_match: "We couldn’t find that place. Try a town, city or postcode.";
236
+ readonly geo_query_too_short: "Type at least 3 letters of a town, city or postcode.";
237
+ readonly geo_choose_location: "Press Enter or choose a suggestion to search near this place.";
238
+ readonly geo_any_distance: "Any distance";
239
+ readonly feedback: "How was your search experience?";
240
+ readonly list: "List";
241
+ readonly map: "Map";
242
+ readonly map_gesture_windows: "Use Ctrl + scroll to zoom the map";
243
+ readonly map_gesture_mac: "Use ⌘ + scroll to zoom the map";
244
+ readonly map_gesture_mobile: "Use two fingers to move the map";
245
+ readonly map_unavailable: "Map unavailable";
246
+ readonly loading_jobs: "Loading jobs…";
247
+ readonly map_jobs_error: "We’re having trouble loading jobs in the area";
248
+ readonly map_has_more_title: "Not showing all the jobs in this area";
249
+ readonly map_has_more_description: "Zoom in to refine your search further";
250
+ readonly map_jobs_showing: {
251
+ readonly one: "Showing {{count}} job";
252
+ readonly other: "Showing {{count}} jobs";
253
+ };
254
+ readonly page: "Page";
255
+ readonly reset: "Reset";
256
+ readonly sort_by: "Sort by";
257
+ readonly sort_most_relevant: "Most relevant";
258
+ readonly sort_closest: "Closest";
259
+ readonly sort_newest: "Newest";
260
+ readonly 'job.employment_type.FULL_TIME': "Full-time";
261
+ readonly 'job.employment_type.PART_TIME': "Part-time";
262
+ readonly 'job.employment_type.CONTRACT': "Contractor";
263
+ readonly 'job.employment_type.TEMPORARY': "Temporary";
264
+ readonly 'job.employment_type.INTERN': "Internship";
265
+ readonly 'job.employment_type.VOLUNTEER': "Volunteer";
266
+ readonly 'job.employment_type.OTHER': "Other";
267
+ readonly 'job.location_type.LOCATION': "On-site";
268
+ readonly 'job.location_type.REMOTE': "Remote";
269
+ readonly 'job.location_type.HYBRID': "Hybrid";
270
+ }>>;
271
+ locale: string | undefined;
272
+ }) => TFn<T>;
273
+
274
+ export declare type CustomDataKey = `custom_data.${string}`;
275
+
276
+ export declare const defaultTerms: {
277
+ readonly type_to_search_jobs: "Type to search jobs";
278
+ readonly type_to_search: "Type to search";
279
+ readonly jobs_found: {
280
+ readonly one: "{{count}} job found";
281
+ readonly other: "{{count}} jobs found";
282
+ };
283
+ readonly no_jobs_found: "No jobs found";
284
+ readonly no_jobs_found_description: "We could not find any jobs matching your filtering criteria.";
285
+ readonly jobs_loading_error: "We’re having trouble loading available jobs.";
286
+ readonly filters_loading_error: "We’re having trouble loading available filters.";
287
+ readonly no_filter_options_available: "No filter options available.";
288
+ readonly clear: "Clear";
289
+ readonly selected: "selected";
290
+ readonly done: "Done";
291
+ readonly close: "Close";
292
+ readonly new: "NEW";
293
+ readonly posted: "Posted";
294
+ readonly distance_away: "{{distance}} away";
295
+ readonly retry: "Retry";
296
+ readonly widget_unavailable: "Sorry, this widget is unavailable at the moment.";
297
+ readonly load_more_count: "Load {{count}} more";
298
+ readonly of_remaining_count: "of {{count}} remaining";
299
+ readonly today: "today";
300
+ readonly over_30_days_ago: "over 30 days ago";
301
+ readonly in_over_30_days: "in over 30 days";
302
+ readonly up_to: "Up to";
303
+ readonly from: "From";
304
+ readonly invalid_salary: "Invalid salary";
305
+ readonly competitive: "Competitive";
306
+ readonly natural_language_input: "Type anything";
307
+ readonly great_match: "Great match";
308
+ readonly advanced_mode: "Filters";
309
+ readonly simple_mode: "Hide filters";
310
+ readonly ai_disclaimer: "Results may not be perfect. AI-powered search can occasionally suggest unrelated content.";
311
+ readonly geo_error_timeout: "Timed out. Please type your location manually.";
312
+ readonly geo_error_permission_denied: "Please allow location access to use this feature.";
313
+ readonly geo_error_position_unavailable: "Could not locate you. Please type your location manually.";
314
+ readonly geo_my_location: "My location";
315
+ readonly geo_locating: "Locating you...";
316
+ readonly geo_search_placeholder: "Search for a location";
317
+ readonly geo_clear_search: "Clear location search";
318
+ readonly location_provided: "Provided location";
319
+ readonly search_label: "What";
320
+ readonly geo_label: "Where";
321
+ readonly geo_range_label: "Within";
322
+ readonly geo_suggestions_error: "Could not get the suggested locations.";
323
+ readonly geo_no_match: "We couldn’t find that place. Try a town, city or postcode.";
324
+ readonly geo_query_too_short: "Type at least 3 letters of a town, city or postcode.";
325
+ readonly geo_choose_location: "Press Enter or choose a suggestion to search near this place.";
326
+ readonly geo_any_distance: "Any distance";
327
+ readonly feedback: "How was your search experience?";
328
+ readonly list: "List";
329
+ readonly map: "Map";
330
+ readonly map_gesture_windows: "Use Ctrl + scroll to zoom the map";
331
+ readonly map_gesture_mac: "Use ⌘ + scroll to zoom the map";
332
+ readonly map_gesture_mobile: "Use two fingers to move the map";
333
+ readonly map_unavailable: "Map unavailable";
334
+ readonly loading_jobs: "Loading jobs…";
335
+ readonly map_jobs_error: "We’re having trouble loading jobs in the area";
336
+ readonly map_has_more_title: "Not showing all the jobs in this area";
337
+ readonly map_has_more_description: "Zoom in to refine your search further";
338
+ readonly map_jobs_showing: {
339
+ readonly one: "Showing {{count}} job";
340
+ readonly other: "Showing {{count}} jobs";
341
+ };
342
+ readonly page: "Page";
343
+ readonly reset: "Reset";
344
+ readonly sort_by: "Sort by";
345
+ readonly sort_most_relevant: "Most relevant";
346
+ readonly sort_closest: "Closest";
347
+ readonly sort_newest: "Newest";
348
+ readonly 'job.employment_type.FULL_TIME': "Full-time";
349
+ readonly 'job.employment_type.PART_TIME': "Part-time";
350
+ readonly 'job.employment_type.CONTRACT': "Contractor";
351
+ readonly 'job.employment_type.TEMPORARY': "Temporary";
352
+ readonly 'job.employment_type.INTERN': "Internship";
353
+ readonly 'job.employment_type.VOLUNTEER': "Volunteer";
354
+ readonly 'job.employment_type.OTHER': "Other";
355
+ readonly 'job.location_type.LOCATION': "On-site";
356
+ readonly 'job.location_type.REMOTE': "Remote";
357
+ readonly 'job.location_type.HYBRID': "Hybrid";
358
+ };
359
+
360
+ export declare type DisplayableFilterProperty = {
361
+ key: /** Enter any key or traverse any custom_data object returned by the job with dot-separated keys.
362
+ * @example `custom_data.location.city`
363
+ */ FilterKey | CustomDataKey;
364
+ transform?: (value: unknown) => string | string[] | null;
365
+ };
366
+
367
+ /** Given a string with double curly braces, returns the content of all curly braces. */
368
+ declare type ExtractParams<T extends string> = T extends `${infer Head}{{${infer Param}}}${infer Tail}` ? Param | ExtractParams<Tail> : never;
369
+
370
+ export declare const FILTER_KEYS: readonly ["locale", "company_name", "employment_type", "location_type", "pay_type", "pay_currency", "pay_mask", "pay", "pay_min", "pay_max", "title", "industry", "category", "skills", "town", "city", "country", "contract_type", "pay_display"];
371
+
372
+ export declare type FilterKey = (typeof FILTER_KEYS)[number];
373
+
374
+ export declare type FilterProperty = {
375
+ key: FilterKey | CustomDataKey;
376
+ /** The label to display for the property.
377
+ * Represents a human-readable name for the property.
378
+ */
379
+ label: string;
380
+ /** Override the default icon.
381
+ * Icons are already suggested for each property, but you can override them.
382
+ */
383
+ icon?: IconName;
384
+ /** Hides the property from the UI
385
+ * You can use this property to hard-code searches without allowing the user to modify or view them.
386
+ */
387
+ hidden?: boolean;
388
+ /** The **fixed** value for the filter. Cannot be removed or changed. */
389
+ value?: string | string[];
390
+ /** The **default** value for the filter. Can be removed or changed, but defaults to it during initial load. */
391
+ defaultValue?: string | string[];
392
+ /** Whether users can search from the available results.
393
+ * @default false
394
+ */
395
+ searchable?: boolean;
396
+ /** Whether users can select one or multiple values.
397
+ * @default `'one'`
398
+ */
399
+ select: 'one' | 'many';
400
+ /** How to show results
401
+ * @default "all"
402
+ * @description
403
+ * - "all" will show all results
404
+ * - "only-available" (⚠️ leads to layout shifts) will show results that are available for the current filters
405
+ */
406
+ results?: 'only-available' | 'all';
407
+ /** How to sort the suggestions
408
+ * @default { by: 'results-count', order: 'ascending' }
409
+ * @description
410
+ * - 'results-count' will sort the suggestions by the number of results they have
411
+ * - 'alphabetically' will sort the suggestions alphabetically
412
+ * - 'numerically' will sort the suggestions numerically, coercing any string values to numbers
413
+ */
414
+ sortSuggestions?: {
415
+ by: 'results-count' | 'alphabetically' | 'numerically';
416
+ order: 'ascending' | 'descending';
417
+ };
418
+ };
419
+
420
+ declare type FilterValue = {
421
+ select: 'one';
422
+ value: string | undefined;
423
+ } | {
424
+ select: 'many';
425
+ value: string[] | undefined;
426
+ };
427
+
428
+ declare type FontSettings = {
429
+ fontFamily: string;
430
+ weight: 'normal' | 'bold' | 'lighter' | 'bolder' | number;
431
+ style: 'normal' | 'italic';
432
+ };
433
+
434
+ declare type GeoBounds = {
435
+ type: 'bounds';
436
+ sw: {
437
+ lat: number;
438
+ lng: number;
439
+ };
440
+ ne: {
441
+ lat: number;
442
+ lng: number;
443
+ };
444
+ };
445
+
446
+ declare type GeoSearchFilter = {
447
+ type: 'provided';
448
+ coords?: {
449
+ lat: number;
450
+ lng: number;
451
+ };
452
+ radius: number;
453
+ /** The place as the candidate chose it; absent when the search came from a URL. */
454
+ label?: string;
455
+ } | {
456
+ type: 'ip';
457
+ radius: number;
458
+ } | GeoBounds;
459
+
460
+ declare const getJobSearchResults: ({ rpcClient, signal, state, page, t, prioritySegment, locale, fallbackLocale, }: {
461
+ rpcClient: InploiRpcClient;
462
+ signal?: AbortSignal;
463
+ state: JobSearchState;
464
+ page?: number;
465
+ t: TFunction;
466
+ prioritySegment: string | undefined;
467
+ locale: string | undefined;
468
+ fallbackLocale: string | undefined;
469
+ }) => Promise<{
470
+ pagination: {
471
+ total: number;
472
+ current_page: number;
473
+ per_page: number;
474
+ last_page: number;
475
+ };
476
+ results: {
477
+ id: number;
478
+ createdAt: string | null;
479
+ company: {
480
+ name: string;
481
+ logo: string | null;
482
+ };
483
+ pay: string | null;
484
+ title: string;
485
+ contractType: string | null;
486
+ href: string;
487
+ relativePostedDate: string;
488
+ customData: {
489
+ [x: string]: any;
490
+ } | null;
491
+ raw: {
492
+ location_type: string;
493
+ employment_type: string;
494
+ id: number;
495
+ company_name: string;
496
+ company_logo: string | null;
497
+ pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null;
498
+ pay_currency: string;
499
+ pay_mask: boolean;
500
+ pay_display: boolean;
501
+ pay: string | null;
502
+ pay_min: string | null;
503
+ pay_max: string | null;
504
+ title: string;
505
+ contract_type: string | null;
506
+ created_at: string | null;
507
+ custom_data: {
508
+ [x: string]: any;
509
+ } | null;
510
+ href: string;
511
+ industry: string | null;
512
+ category: string | null;
513
+ skills: string | null;
514
+ town: string | null;
515
+ city: string | null;
516
+ country: string | null;
517
+ vector_distance: string | null;
518
+ coordinates?: {
519
+ lat: number;
520
+ lng: number;
521
+ } | null | undefined;
522
+ distance_meters: number | null;
523
+ locale?: string | null | undefined;
524
+ };
525
+ distanceMeters: number | null;
526
+ match: string | null;
527
+ }[];
528
+ }>;
529
+
530
+ declare type HintedString<KnownValues> = (string & {}) | KnownValues;
531
+
532
+ declare type IconName = 'briefcase' | 'brand' | 'building' | 'circles' | 'clock' | 'filter' | 'globe' | 'magnifier' | 'magnifierSimple' | 'mapPin' | 'pay' | 'sunset' | 'x' | 'plus' | 'chevron-right' | 'ai' | 'target-location' | 'warning' | 'map' | 'list';
533
+
534
+ export declare type JobSearchDomManager = ReturnType<typeof createJobSearchDomManager>;
535
+
536
+ export declare const jobSearchPlugin: () => ({ apiClient, rpcClient, logger, analytics }: {
537
+ apiClient: ApiClient;
538
+ rpcClient: InploiRpcClient;
539
+ logger: Logger;
540
+ analytics: AnalyticsService;
541
+ publishableKey?: string;
542
+ env?: InploiSdkEnvironment;
543
+ }) => {
544
+ /** Returns a string with the initial rendering state of the UI.
545
+ * Useful when server-side rendering to avoid CLS.
546
+ */
547
+ prerender: (params: PrerenderJobSearchPluginParams) => Promise<{
548
+ html: string;
549
+ data: {
550
+ jobs: {
551
+ pagination: {
552
+ total: number;
553
+ current_page: number;
554
+ per_page: number;
555
+ last_page: number;
556
+ };
557
+ results: {
558
+ id: number;
559
+ createdAt: string | null;
560
+ company: {
561
+ name: string;
562
+ logo: string | null;
563
+ };
564
+ pay: string | null;
565
+ title: string;
566
+ contractType: string | null;
567
+ href: string;
568
+ relativePostedDate: string;
569
+ customData: {
570
+ [x: string]: any;
571
+ } | null;
572
+ raw: {
573
+ location_type: string;
574
+ employment_type: string;
575
+ id: number;
576
+ company_name: string;
577
+ company_logo: string | null;
578
+ pay_type: "ANNUALLY" | "HOURLY" | "MONTHLY" | "WEEKLY" | "DAILY" | null;
579
+ pay_currency: string;
580
+ pay_mask: boolean;
581
+ pay_display: boolean;
582
+ pay: string | null;
583
+ pay_min: string | null;
584
+ pay_max: string | null;
585
+ title: string;
586
+ contract_type: string | null;
587
+ created_at: string | null;
588
+ custom_data: {
589
+ [x: string]: any;
590
+ } | null;
591
+ href: string;
592
+ industry: string | null;
593
+ category: string | null;
594
+ skills: string | null;
595
+ town: string | null;
596
+ city: string | null;
597
+ country: string | null;
598
+ vector_distance: string | null;
599
+ coordinates?: {
600
+ lat: number;
601
+ lng: number;
602
+ } | null | undefined;
603
+ distance_meters: number | null;
604
+ locale?: string | null | undefined;
605
+ };
606
+ distanceMeters: number | null;
607
+ match: string | null;
608
+ }[];
609
+ };
610
+ } | undefined;
611
+ }>;
612
+ /** Renders the Job Search Plugin inside the container element. */
613
+ render: (params: RenderJobSearchPluginParams) => Promise<void>;
614
+ };
615
+
616
+ export declare type JobSearchPluginCardOverrides = {
617
+ /** Use only if you want to override the default salary property. */
618
+ salary?: DisplayableFilterProperty;
619
+ /** Overrides the link to the job. */
620
+ baseUrl?: (jobId: string) => string;
621
+ /** Overrides the default behavior of the click event. */
622
+ onClick?: (e: TargetedEvent<HTMLAnchorElement, MouseEvent>) => void;
623
+ /** Overrides the default behavior of the hover event. */
624
+ onMouseEnter?: (e: TargetedEvent<HTMLAnchorElement, MouseEvent>) => void;
625
+ };
626
+
627
+ export declare interface JobSearchPluginI18nParams {
628
+ /** Only see jobs in this locale */
629
+ locale: string | undefined;
630
+ /** Fallback locale to use if jobs in the preferred locale are not available */
631
+ fallbackLocale: string | undefined;
632
+ }
633
+
634
+ export declare interface JobSearchPluginParams {
635
+ /** Used to identify the specific widget you want to render, in case there are multiple instances of the widget on the page.*/
636
+ widgetId?: string;
637
+ theme: {
638
+ mode: 'light' | 'dark';
639
+ corners: 'rounded' | 'soft' | 'sharp';
640
+ highlights: 'stroke' | 'fill';
641
+ accent: ColorPaletteConfig;
642
+ neutral?: ColorPaletteConfig;
643
+ monetary?: ColorPaletteConfig;
644
+ typography: Partial<FontSettings> & Partial<Record<TextStyle, Partial<FontSettings>>>;
645
+ /** Applies to the filter section on desktop. Override to ensure the filters are stuck to the top of the viewport,
646
+ * but not obscured by the header. This is useful when the header is sticky on your website.
647
+ * @default 112px
648
+ */
649
+ filtersOffsetTopPx?: number;
650
+ accessibility?: {
651
+ highContrast: boolean;
652
+ reducedMotion: boolean;
653
+ };
654
+ };
655
+ /** Array of properties because _order matters_ to display them. */
656
+ properties: FilterProperty[];
657
+ jobCard: {
658
+ subheading: DisplayableFilterProperty | null;
659
+ infoTags: DisplayableFilterProperty[];
660
+ logo?: 'hidden' | '1:1' | '2:1';
661
+ /**
662
+ * Whether to show the posted date or not.
663
+ * @default 'show'
664
+ * @description
665
+ * - 'show' will show the posted date and the "NEW" badge if the job is new (less than 7 days old).
666
+ * - 'hide' will hide the posted date.
667
+ * - 'only-new' will only show the "NEW" badge if the job is new.
668
+ */
669
+ postedDate?: 'hide' | 'show' | 'only-new';
670
+ /** Time *in days* for a job to be considered new
671
+ * @default 7
672
+ */
673
+ newUnderDays?: number;
674
+ overrides?: JobSearchPluginCardOverrides;
675
+ /**
676
+ * Specifies how the job link should be opened.
677
+ * @default 'redirect'
678
+ * @description
679
+ * - 'redirect': Navigates to the job's URL in the current tab.
680
+ * - 'redirect-new-tab': Opens the job's URL in a new tab.
681
+ */
682
+ openJob?: 'redirect' | 'redirect-new-tab';
683
+ };
684
+ initialState: JobSearchState | ((params: Omit<JobSearchPluginParams, 'initialState'>) => JobSearchState);
685
+ /** Enables searching for jobs by keyword */
686
+ enableKeywordSearch?: boolean;
687
+ geolocation?: {
688
+ enabled: boolean;
689
+ distanceUnit?: 'miles' | 'km';
690
+ };
691
+ naturalLanguageSearch?: {
692
+ /** Enables searching for jobs by natural language */
693
+ enabled: boolean;
694
+ /** Suggestion searches */
695
+ suggestions: string[];
696
+ };
697
+ /** Override terms used in the plugin */
698
+ terms?: JobSearchTranslationTerms;
699
+ i18n?: JobSearchPluginI18nParams;
700
+ /** Provide a plugin instance to enable job alerts. */
701
+ alerts?: {
702
+ plugin: ReturnType<typeof jobAlertsPlugin> | Promise<{
703
+ jobAlertsPlugin: typeof jobAlertsPlugin;
704
+ }>;
705
+ params: Pick<JobAlertsPluginParams, 'config' | 'terms'>;
706
+ };
707
+ /** Provide a plugin instance to enable feedback. */
708
+ feedback?: {
709
+ plugin: FeedbackPlugin | Promise<{
710
+ feedbackPlugin: typeof feedbackPlugin;
711
+ }>;
712
+ params?: {
713
+ terms?: FeedbackPluginParams['terms'];
714
+ theme: Partial<FeedbackPluginParams['theme']>;
715
+ };
716
+ };
717
+ map?: {
718
+ enabled: boolean;
719
+ /** The map rendering library. Mapbox loads only when set explicitly. @default 'maplibre' */
720
+ renderer?: 'mapbox' | 'maplibre';
721
+ /** @deprecated Used only by Mapbox; will be removed when the Mapbox renderer is retired. */
722
+ accessToken?: string;
723
+ /** MapLibre: a style id (e.g. `default`) or HTTPS URL. Mapbox: a style URL, including `mapbox://`. */
724
+ style?: string;
725
+ pinColor?: string;
726
+ defaultCenter?: [number, number];
727
+ };
728
+ results?: {
729
+ prioritySegment?: string;
730
+ };
731
+ }
732
+
733
+ declare type JobSearchState = {
734
+ filters: Record<string, FilterValue | undefined>;
735
+ query: string;
736
+ mode: 'query' | 'vector';
737
+ /** Omit to retain the API's contextual default ranking. */
738
+ resultOrder?: 'newest';
739
+ geo?: GeoSearchFilter | undefined;
740
+ page: number;
741
+ view: 'list' | 'map';
742
+ };
743
+
744
+ /** Visual theme for the Job Search UI. */
745
+ export declare type JobSearchTheme = JobSearchPluginParams['theme'];
746
+
747
+ export declare type JobSearchTranslationTerms = Parameters<typeof createTFunction>[0]['overrides'] | undefined;
748
+
749
+ export declare interface PrerenderJobSearchPluginParams extends JobSearchPluginParams {
750
+ /** If true, the data needed to display the first page of results
751
+ * will be fetched from the server. This is recommended if SEO is important
752
+ * or you want your page to be progressively enhanced. */
753
+ withData: boolean;
754
+ }
755
+
756
+ export declare interface RenderJobSearchPluginParams extends JobSearchPluginParams {
757
+ /** When provided with initial data, the client side bundle will hydrate
758
+ * the already present SSR content, avoiding any loading.
759
+ */
760
+ initialData?: {
761
+ jobs: Awaited<ReturnType<typeof getJobSearchResults>>;
762
+ };
763
+ onStateChange: (partialState: Partial<JobSearchState>) => void;
764
+ }
765
+
766
+ /** Preact's `TargetedEvent`, spelled out so the published types don't need Preact's: the DOM event, with `currentTarget` typed. */
767
+ declare type TargetedEvent<Target extends EventTarget, TypedEvent extends Event> = Omit<TypedEvent, 'currentTarget'> & {
768
+ readonly currentTarget: Target;
769
+ };
770
+
771
+ declare type Terms = Record<string, string | TranslationWithPlurals>;
772
+
773
+ declare type TextStyle = keyof typeof textStyles;
774
+
775
+ declare const textStyles: {
776
+ readonly filter: "filter";
777
+ readonly tag: "tag";
778
+ readonly input: "input";
779
+ readonly jobHeading: "jobHeading";
780
+ };
781
+
782
+ declare interface TFn<TTerms extends Terms> {
783
+ <K extends TranslationKeyWithParams<TTerms>>(key: K, options: TTerms[K] extends string ? {
784
+ [_Term in ExtractParams<TTerms[K]>]: number | string;
785
+ } : {
786
+ [_Term in ExtractParams<TTerms[K][keyof TTerms[K]] & string> | 'count']: number | string;
787
+ }): string;
788
+ <T extends Exclude<keyof (keyof TranslationDict<TTerms>), TranslationKeyWithParams<TTerms>>>(key: T): string;
789
+ <T extends keyof TranslationDict<TTerms>>(key: T, options?: {
790
+ [key: string]: string | number;
791
+ }): string;
792
+ }
793
+
794
+ declare type TFunction = ReturnType<typeof useTranslation>['t'];
795
+
796
+ declare type TranslationDict<TTerms extends Terms> = {
797
+ [K in keyof TTerms]: TTerms[K] extends TranslationWithPlurals ? {
798
+ [J in keyof TTerms[K]]: HintedString<TTerms[K][J]>;
799
+ } : HintedString<TTerms[K]>;
800
+ };
801
+
802
+ declare type TranslationKeyWithParams<TTerms extends Terms> = {
803
+ [K in keyof TTerms]: TTerms[K] extends TranslationWithPlurals ? K : ExtractParams<TTerms[K] & string> extends never ? never : K;
804
+ }[keyof TranslationDict<TTerms>];
805
+
806
+ declare type TranslationWithPlurals = Partial<Record<Intl.LDMLPluralRule, string>>;
807
+
808
+ declare const useTranslation: <T extends {
809
+ readonly type_to_search_jobs: "Type to search jobs";
810
+ readonly type_to_search: "Type to search";
811
+ readonly jobs_found: {
812
+ readonly one: "{{count}} job found";
813
+ readonly other: "{{count}} jobs found";
814
+ };
815
+ readonly no_jobs_found: "No jobs found";
816
+ readonly no_jobs_found_description: "We could not find any jobs matching your filtering criteria.";
817
+ readonly jobs_loading_error: "We’re having trouble loading available jobs.";
818
+ readonly filters_loading_error: "We’re having trouble loading available filters.";
819
+ readonly no_filter_options_available: "No filter options available.";
820
+ readonly clear: "Clear";
821
+ readonly selected: "selected";
822
+ readonly done: "Done";
823
+ readonly close: "Close";
824
+ readonly new: "NEW";
825
+ readonly posted: "Posted";
826
+ readonly distance_away: "{{distance}} away";
827
+ readonly retry: "Retry";
828
+ readonly widget_unavailable: "Sorry, this widget is unavailable at the moment.";
829
+ readonly load_more_count: "Load {{count}} more";
830
+ readonly of_remaining_count: "of {{count}} remaining";
831
+ readonly today: "today";
832
+ readonly over_30_days_ago: "over 30 days ago";
833
+ readonly in_over_30_days: "in over 30 days";
834
+ readonly up_to: "Up to";
835
+ readonly from: "From";
836
+ readonly invalid_salary: "Invalid salary";
837
+ readonly competitive: "Competitive";
838
+ readonly natural_language_input: "Type anything";
839
+ readonly great_match: "Great match";
840
+ readonly advanced_mode: "Filters";
841
+ readonly simple_mode: "Hide filters";
842
+ readonly ai_disclaimer: "Results may not be perfect. AI-powered search can occasionally suggest unrelated content.";
843
+ readonly geo_error_timeout: "Timed out. Please type your location manually.";
844
+ readonly geo_error_permission_denied: "Please allow location access to use this feature.";
845
+ readonly geo_error_position_unavailable: "Could not locate you. Please type your location manually.";
846
+ readonly geo_my_location: "My location";
847
+ readonly geo_locating: "Locating you...";
848
+ readonly geo_search_placeholder: "Search for a location";
849
+ readonly geo_clear_search: "Clear location search";
850
+ readonly location_provided: "Provided location";
851
+ readonly search_label: "What";
852
+ readonly geo_label: "Where";
853
+ readonly geo_range_label: "Within";
854
+ readonly geo_suggestions_error: "Could not get the suggested locations.";
855
+ readonly geo_no_match: "We couldn’t find that place. Try a town, city or postcode.";
856
+ readonly geo_query_too_short: "Type at least 3 letters of a town, city or postcode.";
857
+ readonly geo_choose_location: "Press Enter or choose a suggestion to search near this place.";
858
+ readonly geo_any_distance: "Any distance";
859
+ readonly feedback: "How was your search experience?";
860
+ readonly list: "List";
861
+ readonly map: "Map";
862
+ readonly map_gesture_windows: "Use Ctrl + scroll to zoom the map";
863
+ readonly map_gesture_mac: "Use ⌘ + scroll to zoom the map";
864
+ readonly map_gesture_mobile: "Use two fingers to move the map";
865
+ readonly map_unavailable: "Map unavailable";
866
+ readonly loading_jobs: "Loading jobs…";
867
+ readonly map_jobs_error: "We’re having trouble loading jobs in the area";
868
+ readonly map_has_more_title: "Not showing all the jobs in this area";
869
+ readonly map_has_more_description: "Zoom in to refine your search further";
870
+ readonly map_jobs_showing: {
871
+ readonly one: "Showing {{count}} job";
872
+ readonly other: "Showing {{count}} jobs";
873
+ };
874
+ readonly page: "Page";
875
+ readonly reset: "Reset";
876
+ readonly sort_by: "Sort by";
877
+ readonly sort_most_relevant: "Most relevant";
878
+ readonly sort_closest: "Closest";
879
+ readonly sort_newest: "Newest";
880
+ readonly 'job.employment_type.FULL_TIME': "Full-time";
881
+ readonly 'job.employment_type.PART_TIME': "Part-time";
882
+ readonly 'job.employment_type.CONTRACT': "Contractor";
883
+ readonly 'job.employment_type.TEMPORARY': "Temporary";
884
+ readonly 'job.employment_type.INTERN': "Internship";
885
+ readonly 'job.employment_type.VOLUNTEER': "Volunteer";
886
+ readonly 'job.employment_type.OTHER': "Other";
887
+ readonly 'job.location_type.LOCATION': "On-site";
888
+ readonly 'job.location_type.REMOTE': "Remote";
889
+ readonly 'job.location_type.HYBRID': "Hybrid";
890
+ } = {
891
+ readonly type_to_search_jobs: "Type to search jobs";
892
+ readonly type_to_search: "Type to search";
893
+ readonly jobs_found: {
894
+ readonly one: "{{count}} job found";
895
+ readonly other: "{{count}} jobs found";
896
+ };
897
+ readonly no_jobs_found: "No jobs found";
898
+ readonly no_jobs_found_description: "We could not find any jobs matching your filtering criteria.";
899
+ readonly jobs_loading_error: "We’re having trouble loading available jobs.";
900
+ readonly filters_loading_error: "We’re having trouble loading available filters.";
901
+ readonly no_filter_options_available: "No filter options available.";
902
+ readonly clear: "Clear";
903
+ readonly selected: "selected";
904
+ readonly done: "Done";
905
+ readonly close: "Close";
906
+ readonly new: "NEW";
907
+ readonly posted: "Posted";
908
+ readonly distance_away: "{{distance}} away";
909
+ readonly retry: "Retry";
910
+ readonly widget_unavailable: "Sorry, this widget is unavailable at the moment.";
911
+ readonly load_more_count: "Load {{count}} more";
912
+ readonly of_remaining_count: "of {{count}} remaining";
913
+ readonly today: "today";
914
+ readonly over_30_days_ago: "over 30 days ago";
915
+ readonly in_over_30_days: "in over 30 days";
916
+ readonly up_to: "Up to";
917
+ readonly from: "From";
918
+ readonly invalid_salary: "Invalid salary";
919
+ readonly competitive: "Competitive";
920
+ readonly natural_language_input: "Type anything";
921
+ readonly great_match: "Great match";
922
+ readonly advanced_mode: "Filters";
923
+ readonly simple_mode: "Hide filters";
924
+ readonly ai_disclaimer: "Results may not be perfect. AI-powered search can occasionally suggest unrelated content.";
925
+ readonly geo_error_timeout: "Timed out. Please type your location manually.";
926
+ readonly geo_error_permission_denied: "Please allow location access to use this feature.";
927
+ readonly geo_error_position_unavailable: "Could not locate you. Please type your location manually.";
928
+ readonly geo_my_location: "My location";
929
+ readonly geo_locating: "Locating you...";
930
+ readonly geo_search_placeholder: "Search for a location";
931
+ readonly geo_clear_search: "Clear location search";
932
+ readonly location_provided: "Provided location";
933
+ readonly search_label: "What";
934
+ readonly geo_label: "Where";
935
+ readonly geo_range_label: "Within";
936
+ readonly geo_suggestions_error: "Could not get the suggested locations.";
937
+ readonly geo_no_match: "We couldn’t find that place. Try a town, city or postcode.";
938
+ readonly geo_query_too_short: "Type at least 3 letters of a town, city or postcode.";
939
+ readonly geo_choose_location: "Press Enter or choose a suggestion to search near this place.";
940
+ readonly geo_any_distance: "Any distance";
941
+ readonly feedback: "How was your search experience?";
942
+ readonly list: "List";
943
+ readonly map: "Map";
944
+ readonly map_gesture_windows: "Use Ctrl + scroll to zoom the map";
945
+ readonly map_gesture_mac: "Use ⌘ + scroll to zoom the map";
946
+ readonly map_gesture_mobile: "Use two fingers to move the map";
947
+ readonly map_unavailable: "Map unavailable";
948
+ readonly loading_jobs: "Loading jobs…";
949
+ readonly map_jobs_error: "We’re having trouble loading jobs in the area";
950
+ readonly map_has_more_title: "Not showing all the jobs in this area";
951
+ readonly map_has_more_description: "Zoom in to refine your search further";
952
+ readonly map_jobs_showing: {
953
+ readonly one: "Showing {{count}} job";
954
+ readonly other: "Showing {{count}} jobs";
955
+ };
956
+ readonly page: "Page";
957
+ readonly reset: "Reset";
958
+ readonly sort_by: "Sort by";
959
+ readonly sort_most_relevant: "Most relevant";
960
+ readonly sort_closest: "Closest";
961
+ readonly sort_newest: "Newest";
962
+ readonly 'job.employment_type.FULL_TIME': "Full-time";
963
+ readonly 'job.employment_type.PART_TIME': "Part-time";
964
+ readonly 'job.employment_type.CONTRACT': "Contractor";
965
+ readonly 'job.employment_type.TEMPORARY': "Temporary";
966
+ readonly 'job.employment_type.INTERN': "Internship";
967
+ readonly 'job.employment_type.VOLUNTEER': "Volunteer";
968
+ readonly 'job.employment_type.OTHER': "Other";
969
+ readonly 'job.location_type.LOCATION': "On-site";
970
+ readonly 'job.location_type.REMOTE': "Remote";
971
+ readonly 'job.location_type.HYBRID': "Hybrid";
972
+ }>() => {
973
+ t: TFn<T>;
974
+ locale: string | undefined;
975
+ };
976
+
977
+ export { }