@cavuno/board 1.31.0 → 1.33.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.
package/dist/format.mjs CHANGED
@@ -202,6 +202,54 @@ var EN_LABELS = {
202
202
  volunteer: "Volunteer",
203
203
  other: "Other"
204
204
  };
205
+ var DE_LABELS = {
206
+ on_site: "Vor Ort",
207
+ hybrid: "Hybrid",
208
+ remote: "Remote",
209
+ full_time: "Vollzeit",
210
+ part_time: "Teilzeit",
211
+ contract: "Freiberuflich",
212
+ internship: "Praktikum",
213
+ temporary: "Befristet",
214
+ volunteer: "Ehrenamtlich",
215
+ other: "Sonstiges"
216
+ };
217
+ var FR_LABELS = {
218
+ on_site: "Sur site",
219
+ hybrid: "Hybride",
220
+ remote: "T\xE9l\xE9travail",
221
+ full_time: "Temps plein",
222
+ part_time: "Temps partiel",
223
+ contract: "Contrat",
224
+ internship: "Stage",
225
+ temporary: "Temporaire",
226
+ volunteer: "B\xE9n\xE9volat",
227
+ other: "Autre"
228
+ };
229
+ var VOCABULARIES = {
230
+ en: EN_LABELS,
231
+ de: DE_LABELS,
232
+ fr: FR_LABELS
233
+ };
234
+ var OVERRIDE_KEYS = {
235
+ on_site: "onSiteLabel",
236
+ hybrid: "hybridLabel",
237
+ remote: "remoteLabel",
238
+ full_time: "fullTimeLabel",
239
+ part_time: "partTimeLabel",
240
+ contract: "contractLabel",
241
+ internship: "internshipLabel",
242
+ temporary: "temporaryLabel",
243
+ volunteer: "volunteerLabel",
244
+ entry_level: "seniorityEntryLevel",
245
+ associate: "seniorityAssociate",
246
+ mid_level: "seniorityMidLevel",
247
+ senior: "senioritySenior",
248
+ lead: "seniorityLead",
249
+ principal: "seniorityPrincipal",
250
+ director: "seniorityDirector",
251
+ executive: "seniorityExecutive"
252
+ };
205
253
  var SENIORITY_KEYS = /* @__PURE__ */ new Set([
206
254
  "entry_level",
207
255
  "associate",
@@ -212,12 +260,20 @@ var SENIORITY_KEYS = /* @__PURE__ */ new Set([
212
260
  "director",
213
261
  "executive"
214
262
  ]);
215
- function fieldLabel(locale, value) {
263
+ function storedOverride(value, labels) {
264
+ const key = OVERRIDE_KEYS[value];
265
+ const override = key ? labels?.jobCardLabels?.[key] : void 0;
266
+ return typeof override === "string" && override.trim() !== "" ? override : null;
267
+ }
268
+ function fieldLabel(locale, value, labels) {
216
269
  if (!value) return null;
270
+ const override = storedOverride(value, labels);
271
+ if (override) return override;
217
272
  if (SENIORITY_KEYS.has(value)) {
218
273
  return getSalaryLexicon(locale).seniority[value];
219
274
  }
220
- return EN_LABELS[value] ?? value;
275
+ const vocabulary = VOCABULARIES[locale] ?? EN_LABELS;
276
+ return vocabulary[value] ?? EN_LABELS[value] ?? value;
221
277
  }
222
278
 
223
279
  // src/format/location.ts
@@ -490,7 +546,508 @@ function resolveCustomFieldDisplay(definitions, values) {
490
546
  }
491
547
  return entries;
492
548
  }
549
+
550
+ // src/format/ui-copy.ts
551
+ var PUBLIC_LABEL_GROUPS = [
552
+ "jobCardLabels",
553
+ "navLabels",
554
+ "breadcrumbsLabels",
555
+ "footerLabels",
556
+ "entityLabels",
557
+ "jobSearchLabels",
558
+ "globalPaginationLabels",
559
+ "blogSharedLabels",
560
+ "salaryLabels"
561
+ ];
562
+ var EN2 = {
563
+ jobCard: {
564
+ featuredLabel: "Featured",
565
+ aiRankedLabel: "AI-ranked",
566
+ sortNewestLabel: "Most recent",
567
+ sortSalaryHighLabel: "Salary: high to low"
568
+ },
569
+ jobSearch: {
570
+ headingJobs: "Jobs",
571
+ keywordLabel: "Keyword",
572
+ keywordPlaceholder: "Search jobs\u2026",
573
+ locationLabel: "Location",
574
+ locationPlaceholder: "City or region",
575
+ workplacePlaceholder: "Workplace",
576
+ anyWorkplaceLabel: "Any workplace",
577
+ typePlaceholder: "Type",
578
+ anyTypeLabel: "Any type",
579
+ sortPlaceholder: "Sort",
580
+ loadMoreLabel: "Load more",
581
+ noJobsMatchText: "No jobs match \u2014 try clearing a filter."
582
+ },
583
+ jobDetail: {
584
+ categoriesHeading: "Categories",
585
+ skillsHeading: "Skills",
586
+ additionalDetailsHeading: "Additional details",
587
+ customFieldYesLabel: "Yes",
588
+ customFieldNoLabel: "No",
589
+ locationsLabel: "Locations",
590
+ workPermitsLabel: "Work permits",
591
+ timezonesLabel: "Timezones",
592
+ educationLabel: "Education",
593
+ experienceLabel: "Experience",
594
+ worldwideLabel: "Worldwide",
595
+ noExperienceRequiredLabel: "No experience required",
596
+ experienceYears: (years) => `${years}+ years`,
597
+ posted: (published) => `Posted ${published}`,
598
+ noDescriptionText: "No description provided.",
599
+ viewCompanyProfileLabel: "View company profile",
600
+ similarJobsHeading: "Similar jobs",
601
+ breadcrumbAriaLabel: "Breadcrumb"
602
+ },
603
+ apply: {
604
+ applyButtonText: "Apply for this job",
605
+ applyingLabel: "Applying\u2026",
606
+ applyOnEmployerSiteLabel: "Apply on employer site",
607
+ signInToApplyLabel: "Sign in to apply",
608
+ verifyEmailToApplyLabel: "Verify email to apply",
609
+ appliedViewApplicationsLabel: "Applied \u2014 view applications",
610
+ applicationSubmitError: "Something went wrong. Please try again."
611
+ },
612
+ alerts: {
613
+ jobAlertTitle: "Get job alerts",
614
+ jobAlertEmailPlaceholder: "you@example.com",
615
+ jobAlertButtonText: "Get alerts",
616
+ subscribingLabel: "Subscribing\u2026",
617
+ jobAlertSuccessToast: "Check your email to confirm your subscription.",
618
+ jobAlertDuplicateToast: "You're already subscribed to this alert.",
619
+ jobAlertErrorToast: "Something went wrong. Please try again.",
620
+ sectionAriaLabel: "Job alerts",
621
+ emailAriaLabel: "email",
622
+ submitAriaLabel: "get job alerts"
623
+ },
624
+ copyLink: {
625
+ copyLinkLabel: "Copy link",
626
+ copiedLabel: "Copied",
627
+ ariaLabel: "copy link"
628
+ },
629
+ salary: {
630
+ comparisonHeadlineAverage: "Average salary",
631
+ perYearSuffix: "/ year",
632
+ comparisonPercentile25Label: "25th percentile",
633
+ medianLabel: "Median",
634
+ comparisonPercentile75Label: "75th percentile",
635
+ basedOnLabel: "Based on",
636
+ seniorityTableHeaderLevel: "Level",
637
+ seniorityTableHeaderAvg: "Average",
638
+ boardBaselineLabel: "Board baseline",
639
+ seniorityTableHeaderDiff: "vs. board",
640
+ faqHeading: "Frequently asked questions"
641
+ },
642
+ nav: {
643
+ home: "Jobs",
644
+ companies: "Companies",
645
+ pricing: "Pricing",
646
+ talent: "Talent",
647
+ post: "Post a job",
648
+ blog: "Blog"
649
+ },
650
+ footer: {
651
+ forCandidatesHeading: "For Candidates",
652
+ forCompaniesHeading: "For Companies",
653
+ resourcesHeading: "Resources",
654
+ aboutHeading: "About",
655
+ websiteLabel: "Website",
656
+ aboutLabel: "About",
657
+ contactLabel: "Contact us",
658
+ locationsLabel: "Locations",
659
+ salariesLabel: "Salaries",
660
+ sitemapLabel: "Sitemap",
661
+ termsOfServiceLabel: "Terms of Service",
662
+ privacyPolicyLabel: "Privacy Policy",
663
+ cookiePolicyLabel: "Cookie Policy",
664
+ impressumLabel: "Impressum",
665
+ allRightsReservedText: "All rights reserved.",
666
+ copyrightPrefix: "\xA9 {{year}} {{board_name}}.",
667
+ poweredByText: "Powered by",
668
+ defaultDescription: "Discover the latest roles from {{board_name}}."
669
+ },
670
+ breadcrumbs: {
671
+ home: "Home",
672
+ jobs: "Jobs",
673
+ locations: "Locations",
674
+ salaries: "Salaries",
675
+ companies: "Companies",
676
+ skills: "Skills",
677
+ titles: "Titles",
678
+ blog: "Blog",
679
+ post: "Post a Job",
680
+ pricing: "Pricing",
681
+ about: "About",
682
+ impressum: "Impressum",
683
+ termsOfService: "Terms of Service",
684
+ privacyPolicy: "Privacy Policy",
685
+ cookiePolicy: "Cookie Policy",
686
+ talent: "Talent"
687
+ },
688
+ pagination: {
689
+ ariaLabel: "Pagination",
690
+ previousLabel: "Previous",
691
+ nextLabel: "Next"
692
+ },
693
+ blog: {
694
+ bylineLabel: "By",
695
+ readingTimeLabel: "min read",
696
+ searchLabel: "Search",
697
+ searchPlaceholder: "Search posts...",
698
+ clearButtonLabel: "Clear search",
699
+ tagFilterLabel: "Topics",
700
+ tagFilterAllLabel: "All",
701
+ emptyTitle: "No matching posts",
702
+ emptyDescription: "Try adjusting your search or clearing your filters.",
703
+ emptyResetLabel: "Clear filters"
704
+ },
705
+ entity: {
706
+ jobSingular: "job",
707
+ jobPlural: "jobs",
708
+ companySingular: "company",
709
+ companyPlural: "companies"
710
+ }
711
+ };
712
+ var DE2 = {
713
+ jobCard: {
714
+ featuredLabel: "Hervorgehoben",
715
+ aiRankedLabel: "KI-sortiert",
716
+ sortNewestLabel: "Neueste zuerst",
717
+ sortSalaryHighLabel: "Gehalt: absteigend"
718
+ },
719
+ jobSearch: {
720
+ headingJobs: "Jobs",
721
+ keywordLabel: "Stichwort",
722
+ keywordPlaceholder: "Jobtitel oder -beschreibungen suchen",
723
+ locationLabel: "Standort",
724
+ locationPlaceholder: "Stadt, Land oder Region",
725
+ workplacePlaceholder: "Arbeitsmodell",
726
+ anyWorkplaceLabel: "Alle Arbeitsmodelle",
727
+ typePlaceholder: "Anstellungsart",
728
+ anyTypeLabel: "Alle Anstellungsarten",
729
+ sortPlaceholder: "Sortieren",
730
+ loadMoreLabel: "Mehr laden",
731
+ noJobsMatchText: "Keine passenden Jobs \u2014 setze einen Filter zur\xFCck."
732
+ },
733
+ jobDetail: {
734
+ categoriesHeading: "Kategorien",
735
+ skillsHeading: "F\xE4higkeiten",
736
+ additionalDetailsHeading: "Weitere Details",
737
+ customFieldYesLabel: "Ja",
738
+ customFieldNoLabel: "Nein",
739
+ locationsLabel: "Standorte",
740
+ workPermitsLabel: "Arbeitserlaubnis",
741
+ timezonesLabel: "Zeitzonen",
742
+ educationLabel: "Ausbildung",
743
+ experienceLabel: "Berufserfahrung",
744
+ worldwideLabel: "Weltweit",
745
+ noExperienceRequiredLabel: "Keine Berufserfahrung erforderlich",
746
+ experienceYears: (years) => `${years}+ Jahre`,
747
+ posted: (published) => `Ver\xF6ffentlicht ${published}`,
748
+ noDescriptionText: "Keine Beschreibung vorhanden.",
749
+ viewCompanyProfileLabel: "Unternehmensprofil ansehen",
750
+ similarJobsHeading: "\xC4hnliche Jobs",
751
+ breadcrumbAriaLabel: "Seitenpfad"
752
+ },
753
+ apply: {
754
+ applyButtonText: "Jetzt bewerben",
755
+ applyingLabel: "Wird gesendet \u2026",
756
+ applyOnEmployerSiteLabel: "Beim Unternehmen bewerben",
757
+ signInToApplyLabel: "Zum Bewerben anmelden",
758
+ verifyEmailToApplyLabel: "E-Mail best\xE4tigen, um dich zu bewerben",
759
+ appliedViewApplicationsLabel: "Beworben \u2014 Bewerbungen ansehen",
760
+ applicationSubmitError: "Etwas ist schiefgelaufen. Bitte versuche es erneut."
761
+ },
762
+ alerts: {
763
+ jobAlertTitle: "Job-Benachrichtigungen erhalten",
764
+ jobAlertEmailPlaceholder: "name@beispiel.de",
765
+ jobAlertButtonText: "Abonnieren",
766
+ subscribingLabel: "Wird abonniert \u2026",
767
+ jobAlertSuccessToast: "\xDCberpr\xFCfe deine E-Mails, um dein Abonnement zu best\xE4tigen.",
768
+ jobAlertDuplicateToast: "Du hast diese Benachrichtigung bereits abonniert.",
769
+ jobAlertErrorToast: "Etwas ist schiefgelaufen. Bitte versuche es erneut.",
770
+ sectionAriaLabel: "Job-Benachrichtigungen",
771
+ emailAriaLabel: "E-Mail",
772
+ submitAriaLabel: "Job-Benachrichtigungen erhalten"
773
+ },
774
+ copyLink: {
775
+ copyLinkLabel: "Link kopieren",
776
+ copiedLabel: "Kopiert",
777
+ ariaLabel: "Link kopieren"
778
+ },
779
+ salary: {
780
+ comparisonHeadlineAverage: "Durchschnittsgehalt",
781
+ perYearSuffix: "/ Jahr",
782
+ comparisonPercentile25Label: "25. Perzentil",
783
+ medianLabel: "Median",
784
+ comparisonPercentile75Label: "75. Perzentil",
785
+ basedOnLabel: "Basierend auf",
786
+ seniorityTableHeaderLevel: "Erfahrungslevel",
787
+ seniorityTableHeaderAvg: "Durchschnitt",
788
+ boardBaselineLabel: "Board-Durchschnitt",
789
+ seniorityTableHeaderDiff: "vs. Board",
790
+ faqHeading: "H\xE4ufig gestellte Fragen"
791
+ },
792
+ nav: {
793
+ home: "Jobs",
794
+ companies: "Unternehmen",
795
+ pricing: "Preise",
796
+ talent: "Talente",
797
+ post: "Job ver\xF6ffentlichen",
798
+ blog: "Blog"
799
+ },
800
+ footer: {
801
+ forCandidatesHeading: "F\xFCr Kandidaten",
802
+ forCompaniesHeading: "F\xFCr Unternehmen",
803
+ resourcesHeading: "Ressourcen",
804
+ aboutHeading: "\xDCber uns",
805
+ websiteLabel: "Website",
806
+ aboutLabel: "\xDCber uns",
807
+ contactLabel: "Kontakt",
808
+ locationsLabel: "Standorte",
809
+ salariesLabel: "Geh\xE4lter",
810
+ sitemapLabel: "Sitemap",
811
+ termsOfServiceLabel: "Nutzungsbedingungen",
812
+ privacyPolicyLabel: "Datenschutzerkl\xE4rung",
813
+ cookiePolicyLabel: "Cookie-Richtlinie",
814
+ impressumLabel: "Impressum",
815
+ allRightsReservedText: "Alle Rechte vorbehalten.",
816
+ copyrightPrefix: "\xA9 {{year}} {{board_name}}.",
817
+ poweredByText: "Bereitgestellt von",
818
+ defaultDescription: "Entdecke die neuesten Stellen von {{board_name}}."
819
+ },
820
+ breadcrumbs: {
821
+ home: "Startseite",
822
+ jobs: "Jobs",
823
+ locations: "Standorte",
824
+ salaries: "Geh\xE4lter",
825
+ companies: "Unternehmen",
826
+ skills: "F\xE4higkeiten",
827
+ titles: "Berufsbezeichnungen",
828
+ blog: "Blog",
829
+ post: "Job ver\xF6ffentlichen",
830
+ pricing: "Preise",
831
+ about: "\xDCber uns",
832
+ impressum: "Impressum",
833
+ termsOfService: "Nutzungsbedingungen",
834
+ privacyPolicy: "Datenschutzerkl\xE4rung",
835
+ cookiePolicy: "Cookie-Richtlinie",
836
+ talent: "Talente"
837
+ },
838
+ pagination: {
839
+ ariaLabel: "Seitennummerierung",
840
+ previousLabel: "Zur\xFCck",
841
+ nextLabel: "Weiter"
842
+ },
843
+ blog: {
844
+ bylineLabel: "Von",
845
+ readingTimeLabel: "Minuten Lesezeit",
846
+ searchLabel: "Suche",
847
+ searchPlaceholder: "Artikel suchen...",
848
+ clearButtonLabel: "Suche leeren",
849
+ tagFilterLabel: "Themen",
850
+ tagFilterAllLabel: "Alle",
851
+ emptyTitle: "Keine passenden Artikel gefunden",
852
+ emptyDescription: "Versuche, deine Suche anzupassen oder die Filter zur\xFCckzusetzen.",
853
+ emptyResetLabel: "Filter zur\xFCcksetzen"
854
+ },
855
+ entity: {
856
+ jobSingular: "Job",
857
+ jobPlural: "Jobs",
858
+ companySingular: "Unternehmen",
859
+ companyPlural: "Unternehmen"
860
+ }
861
+ };
862
+ var FR = {
863
+ jobCard: {
864
+ featuredLabel: "\xC0 la une",
865
+ aiRankedLabel: "Classement IA",
866
+ sortNewestLabel: "Plus r\xE9centes",
867
+ sortSalaryHighLabel: "Salaire : d\xE9croissant"
868
+ },
869
+ jobSearch: {
870
+ headingJobs: "Offres d'emploi",
871
+ keywordLabel: "Mot-cl\xE9",
872
+ keywordPlaceholder: "Rechercher une offre\u2026",
873
+ locationLabel: "Lieu",
874
+ locationPlaceholder: "Ville ou r\xE9gion",
875
+ workplacePlaceholder: "Mode de travail",
876
+ anyWorkplaceLabel: "Tous les modes de travail",
877
+ typePlaceholder: "Type de contrat",
878
+ anyTypeLabel: "Tous les types",
879
+ sortPlaceholder: "Trier",
880
+ loadMoreLabel: "Voir plus",
881
+ noJobsMatchText: "Aucune offre ne correspond \u2014 essayez de retirer un filtre."
882
+ },
883
+ jobDetail: {
884
+ categoriesHeading: "Cat\xE9gories",
885
+ skillsHeading: "Comp\xE9tences",
886
+ additionalDetailsHeading: "Informations compl\xE9mentaires",
887
+ customFieldYesLabel: "Oui",
888
+ customFieldNoLabel: "Non",
889
+ locationsLabel: "Lieux",
890
+ workPermitsLabel: "Permis de travail",
891
+ timezonesLabel: "Fuseaux horaires",
892
+ educationLabel: "Formation",
893
+ experienceLabel: "Exp\xE9rience",
894
+ worldwideLabel: "Monde entier",
895
+ noExperienceRequiredLabel: "Aucune exp\xE9rience requise",
896
+ experienceYears: (years) => `${years}+ ans`,
897
+ posted: (published) => `Publi\xE9e ${published}`,
898
+ noDescriptionText: "Aucune description fournie.",
899
+ viewCompanyProfileLabel: "Voir le profil de l'entreprise",
900
+ similarJobsHeading: "Offres similaires",
901
+ breadcrumbAriaLabel: "Fil d'Ariane"
902
+ },
903
+ apply: {
904
+ applyButtonText: "Postuler \xE0 cette offre",
905
+ applyingLabel: "Envoi en cours\u2026",
906
+ applyOnEmployerSiteLabel: "Postuler sur le site de l'employeur",
907
+ signInToApplyLabel: "Connectez-vous pour postuler",
908
+ verifyEmailToApplyLabel: "V\xE9rifiez votre e-mail pour postuler",
909
+ appliedViewApplicationsLabel: "Candidature envoy\xE9e \u2014 voir mes candidatures",
910
+ applicationSubmitError: "Une erreur est survenue. Veuillez r\xE9essayer."
911
+ },
912
+ alerts: {
913
+ jobAlertTitle: "Recevoir des alertes emploi",
914
+ jobAlertEmailPlaceholder: "vous@exemple.fr",
915
+ jobAlertButtonText: "Activer les alertes",
916
+ subscribingLabel: "Abonnement en cours\u2026",
917
+ jobAlertSuccessToast: "V\xE9rifiez votre e-mail pour confirmer votre abonnement.",
918
+ jobAlertDuplicateToast: "Vous \xEAtes d\xE9j\xE0 abonn\xE9 \xE0 cette alerte.",
919
+ jobAlertErrorToast: "Une erreur est survenue. Veuillez r\xE9essayer.",
920
+ sectionAriaLabel: "Alertes emploi",
921
+ emailAriaLabel: "e-mail",
922
+ submitAriaLabel: "recevoir des alertes emploi"
923
+ },
924
+ copyLink: {
925
+ copyLinkLabel: "Copier le lien",
926
+ copiedLabel: "Copi\xE9",
927
+ ariaLabel: "copier le lien"
928
+ },
929
+ salary: {
930
+ comparisonHeadlineAverage: "Salaire moyen",
931
+ perYearSuffix: "/ an",
932
+ comparisonPercentile25Label: "25e percentile",
933
+ medianLabel: "M\xE9diane",
934
+ comparisonPercentile75Label: "75e percentile",
935
+ basedOnLabel: "Bas\xE9 sur",
936
+ seniorityTableHeaderLevel: "Niveau",
937
+ seniorityTableHeaderAvg: "Moyenne",
938
+ boardBaselineLabel: "R\xE9f\xE9rence du site",
939
+ seniorityTableHeaderDiff: "vs site",
940
+ faqHeading: "Questions fr\xE9quentes"
941
+ },
942
+ nav: {
943
+ home: "Offres",
944
+ companies: "Entreprises",
945
+ pricing: "Tarifs",
946
+ talent: "Talents",
947
+ post: "Publier une offre",
948
+ blog: "Blog"
949
+ },
950
+ footer: {
951
+ forCandidatesHeading: "Pour les candidats",
952
+ forCompaniesHeading: "Pour les entreprises",
953
+ resourcesHeading: "Ressources",
954
+ aboutHeading: "\xC0 propos",
955
+ websiteLabel: "Site web",
956
+ aboutLabel: "\xC0 propos",
957
+ contactLabel: "Nous contacter",
958
+ locationsLabel: "Lieux",
959
+ salariesLabel: "Salaires",
960
+ sitemapLabel: "Plan du site",
961
+ termsOfServiceLabel: "Conditions d'utilisation",
962
+ privacyPolicyLabel: "Politique de confidentialit\xE9",
963
+ cookiePolicyLabel: "Politique de cookies",
964
+ impressumLabel: "Mentions l\xE9gales",
965
+ allRightsReservedText: "Tous droits r\xE9serv\xE9s.",
966
+ copyrightPrefix: "\xA9 {{year}} {{board_name}}.",
967
+ poweredByText: "Propuls\xE9 par",
968
+ defaultDescription: "D\xE9couvrez les derni\xE8res offres de {{board_name}}."
969
+ },
970
+ breadcrumbs: {
971
+ home: "Accueil",
972
+ jobs: "Offres",
973
+ locations: "Lieux",
974
+ salaries: "Salaires",
975
+ companies: "Entreprises",
976
+ skills: "Comp\xE9tences",
977
+ titles: "Intitul\xE9s de poste",
978
+ blog: "Blog",
979
+ post: "Publier une offre",
980
+ pricing: "Tarifs",
981
+ about: "\xC0 propos",
982
+ impressum: "Mentions l\xE9gales",
983
+ termsOfService: "Conditions d'utilisation",
984
+ privacyPolicy: "Politique de confidentialit\xE9",
985
+ cookiePolicy: "Politique de cookies",
986
+ talent: "Talents"
987
+ },
988
+ pagination: {
989
+ ariaLabel: "Pagination",
990
+ previousLabel: "Pr\xE9c\xE9dent",
991
+ nextLabel: "Suivant"
992
+ },
993
+ blog: {
994
+ bylineLabel: "Par",
995
+ readingTimeLabel: "min de lecture",
996
+ searchLabel: "Recherche",
997
+ searchPlaceholder: "Rechercher un article...",
998
+ clearButtonLabel: "Effacer la recherche",
999
+ tagFilterLabel: "Th\xE8mes",
1000
+ tagFilterAllLabel: "Tous",
1001
+ emptyTitle: "Aucun article correspondant",
1002
+ emptyDescription: "Essayez de modifier votre recherche ou de r\xE9initialiser les filtres.",
1003
+ emptyResetLabel: "R\xE9initialiser les filtres"
1004
+ },
1005
+ entity: {
1006
+ jobSingular: "offre",
1007
+ jobPlural: "offres",
1008
+ companySingular: "entreprise",
1009
+ companyPlural: "entreprises"
1010
+ }
1011
+ };
1012
+ var CATALOGS = { en: EN2, de: DE2, fr: FR };
1013
+ function mergeGroup(group, overrides) {
1014
+ if (!overrides) return group;
1015
+ const out = { ...group };
1016
+ for (const [key, value] of Object.entries(group)) {
1017
+ if (typeof value !== "string") continue;
1018
+ const override = overrides[key];
1019
+ if (typeof override === "string" && override.trim() !== "") {
1020
+ out[key] = override;
1021
+ }
1022
+ }
1023
+ return out;
1024
+ }
1025
+ var GROUP_OVERRIDE_SOURCE = {
1026
+ jobCard: "jobCardLabels",
1027
+ jobSearch: "jobSearchLabels",
1028
+ jobDetail: "jobCardLabels",
1029
+ apply: "jobCardLabels",
1030
+ alerts: "jobCardLabels",
1031
+ copyLink: "jobCardLabels",
1032
+ salary: "salaryLabels",
1033
+ nav: "navLabels",
1034
+ footer: "footerLabels",
1035
+ breadcrumbs: "breadcrumbsLabels",
1036
+ pagination: "globalPaginationLabels",
1037
+ blog: "blogSharedLabels",
1038
+ entity: "entityLabels"
1039
+ };
1040
+ function uiCopy(language, labels) {
1041
+ const catalog = language && CATALOGS[language] || EN2;
1042
+ if (!labels) return catalog;
1043
+ const resolved = {};
1044
+ for (const [group, source] of Object.entries(GROUP_OVERRIDE_SOURCE)) {
1045
+ resolved[group] = mergeGroup(catalog[group], labels[source]);
1046
+ }
1047
+ return resolved;
1048
+ }
493
1049
  export {
1050
+ PUBLIC_LABEL_GROUPS,
494
1051
  cardLocationLabel,
495
1052
  companyIntro,
496
1053
  fieldLabel,
@@ -501,5 +1058,6 @@ export {
501
1058
  fullJobToCard,
502
1059
  getSalaryLexicon,
503
1060
  locationLabel,
504
- resolveCustomFieldDisplay
1061
+ resolveCustomFieldDisplay,
1062
+ uiCopy
505
1063
  };
package/dist/index.d.mts CHANGED
@@ -1,8 +1,8 @@
1
- import { b as Schemas, R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, c as components, d as JobsListQuery, e as JobCardListEnvelope, f as JobsSearchBody, g as JobCardSearchEnvelope, h as JobsSimilarQuery, i as SearchEnvelope } from './jobs-Dmz8uexp.mjs';
2
- export { j as CustomFieldValue, C as CustomFieldValues, k as EducationRequirement, l as JobCompany, J as JobSort, O as OfficeLocation, P as PublicJob, a as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-Dmz8uexp.mjs';
3
- export { C as CustomFieldDefinition, a as CustomFieldOption, b as CustomFieldType, P as PublicBoard, c as PublicBoardAnalytics, d as PublicBoardFeatures, e as PublicBoardTheme } from './board-BS8Ax7hz.mjs';
4
- import { b as CompaniesListQuery, c as CompanyListEnvelope, d as CompaniesSearchBody, e as CompanyJobsListQuery, f as CompanySimilarQuery, g as CompanyMarketsListQuery, h as SalaryDetailQuery, i as BlogPostsListQuery, j as BlogSimilarQuery, k as BlogSearchBody } from './salaries-QXFAyysR.mjs';
5
- export { B as BlogAuthorEmbed, l as BlogTagEmbed, C as CompanyCategorySalary, m as CompanyMarket, n as CompanyMarketRef, a as CompanySalary, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, q as PublicBlogAdjacentPosts, r as PublicBlogAuthor, s as PublicBlogPost, P as PublicBlogPostSummary, t as PublicBlogTag, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, D as SkillLocationsIndex, S as SkillSalaryDetail, E as TitleLocationSalary, F as TitleLocationsIndex, T as TitleSalaryDetail } from './salaries-QXFAyysR.mjs';
1
+ import { b as Schemas, R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, c as components, d as JobsListQuery, e as JobCardListEnvelope, f as JobsSearchBody, g as JobCardSearchEnvelope, h as JobsSimilarQuery, i as SearchEnvelope } from './jobs-Di4AV-02.mjs';
2
+ export { j as CustomFieldValue, C as CustomFieldValues, k as EducationRequirement, l as JobCompany, J as JobSort, O as OfficeLocation, P as PublicJob, a as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-Di4AV-02.mjs';
3
+ export { C as CustomFieldDefinition, a as CustomFieldOption, b as CustomFieldType, P as PublicBoard, c as PublicBoardAnalytics, d as PublicBoardFeatures, e as PublicBoardTheme } from './board-BTVapQiL.mjs';
4
+ import { b as CompaniesListQuery, c as CompanyListEnvelope, d as CompaniesSearchBody, e as CompanyJobsListQuery, f as CompanySimilarQuery, g as CompanyMarketsListQuery, h as SalaryDetailQuery, i as BlogPostsListQuery, j as BlogSimilarQuery, k as BlogSearchBody } from './salaries-D-BGZpDC.mjs';
5
+ export { B as BlogAuthorEmbed, l as BlogTagEmbed, C as CompanyCategorySalary, m as CompanyMarket, n as CompanyMarketRef, a as CompanySalary, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, q as PublicBlogAdjacentPosts, r as PublicBlogAuthor, s as PublicBlogPost, P as PublicBlogPostSummary, t as PublicBlogTag, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, D as SkillLocationsIndex, S as SkillSalaryDetail, E as TitleLocationSalary, F as TitleLocationsIndex, T as TitleSalaryDetail } from './salaries-D-BGZpDC.mjs';
6
6
 
7
7
  type Awaitable<T> = T | Promise<T>;
8
8
  /**
@@ -204,7 +204,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
204
204
  * constant because the package is platform-neutral and cannot read
205
205
  * package.json at runtime.
206
206
  */
207
- declare const SDK_VERSION = "1.31.0";
207
+ declare const SDK_VERSION = "1.33.0";
208
208
 
209
209
  type SavedJob = Schemas['SavedJob'];
210
210
  type SavedJobsListQuery = {
@@ -733,6 +733,11 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
733
733
  };
734
734
  } | null;
735
735
  customFields: components["schemas"]["CustomFieldDefinition"][];
736
+ labels: {
737
+ [key: string]: {
738
+ [key: string]: string;
739
+ };
740
+ };
736
741
  }>;
737
742
  /**
738
743
  * Board SEO infra — `ads.txt`, IndexNow key, Google site-verification, and
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { b as Schemas, R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, c as components, d as JobsListQuery, e as JobCardListEnvelope, f as JobsSearchBody, g as JobCardSearchEnvelope, h as JobsSimilarQuery, i as SearchEnvelope } from './jobs-Dmz8uexp.js';
2
- export { j as CustomFieldValue, C as CustomFieldValues, k as EducationRequirement, l as JobCompany, J as JobSort, O as OfficeLocation, P as PublicJob, a as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-Dmz8uexp.js';
3
- export { C as CustomFieldDefinition, a as CustomFieldOption, b as CustomFieldType, P as PublicBoard, c as PublicBoardAnalytics, d as PublicBoardFeatures, e as PublicBoardTheme } from './board--nLjpneU.js';
4
- import { b as CompaniesListQuery, c as CompanyListEnvelope, d as CompaniesSearchBody, e as CompanyJobsListQuery, f as CompanySimilarQuery, g as CompanyMarketsListQuery, h as SalaryDetailQuery, i as BlogPostsListQuery, j as BlogSimilarQuery, k as BlogSearchBody } from './salaries-CrtQBy81.js';
5
- export { B as BlogAuthorEmbed, l as BlogTagEmbed, C as CompanyCategorySalary, m as CompanyMarket, n as CompanyMarketRef, a as CompanySalary, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, q as PublicBlogAdjacentPosts, r as PublicBlogAuthor, s as PublicBlogPost, P as PublicBlogPostSummary, t as PublicBlogTag, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, D as SkillLocationsIndex, S as SkillSalaryDetail, E as TitleLocationSalary, F as TitleLocationsIndex, T as TitleSalaryDetail } from './salaries-CrtQBy81.js';
1
+ import { b as Schemas, R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, c as components, d as JobsListQuery, e as JobCardListEnvelope, f as JobsSearchBody, g as JobCardSearchEnvelope, h as JobsSimilarQuery, i as SearchEnvelope } from './jobs-Di4AV-02.js';
2
+ export { j as CustomFieldValue, C as CustomFieldValues, k as EducationRequirement, l as JobCompany, J as JobSort, O as OfficeLocation, P as PublicJob, a as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-Di4AV-02.js';
3
+ export { C as CustomFieldDefinition, a as CustomFieldOption, b as CustomFieldType, P as PublicBoard, c as PublicBoardAnalytics, d as PublicBoardFeatures, e as PublicBoardTheme } from './board-0yI5ZRJw.js';
4
+ import { b as CompaniesListQuery, c as CompanyListEnvelope, d as CompaniesSearchBody, e as CompanyJobsListQuery, f as CompanySimilarQuery, g as CompanyMarketsListQuery, h as SalaryDetailQuery, i as BlogPostsListQuery, j as BlogSimilarQuery, k as BlogSearchBody } from './salaries-B-zJKjkk.js';
5
+ export { B as BlogAuthorEmbed, l as BlogTagEmbed, C as CompanyCategorySalary, m as CompanyMarket, n as CompanyMarketRef, a as CompanySalary, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, q as PublicBlogAdjacentPosts, r as PublicBlogAuthor, s as PublicBlogPost, P as PublicBlogPostSummary, t as PublicBlogTag, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, D as SkillLocationsIndex, S as SkillSalaryDetail, E as TitleLocationSalary, F as TitleLocationsIndex, T as TitleSalaryDetail } from './salaries-B-zJKjkk.js';
6
6
 
7
7
  type Awaitable<T> = T | Promise<T>;
8
8
  /**
@@ -204,7 +204,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
204
204
  * constant because the package is platform-neutral and cannot read
205
205
  * package.json at runtime.
206
206
  */
207
- declare const SDK_VERSION = "1.31.0";
207
+ declare const SDK_VERSION = "1.33.0";
208
208
 
209
209
  type SavedJob = Schemas['SavedJob'];
210
210
  type SavedJobsListQuery = {
@@ -733,6 +733,11 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
733
733
  };
734
734
  } | null;
735
735
  customFields: components["schemas"]["CustomFieldDefinition"][];
736
+ labels: {
737
+ [key: string]: {
738
+ [key: string]: string;
739
+ };
740
+ };
736
741
  }>;
737
742
  /**
738
743
  * Board SEO infra — `ads.txt`, IndexNow key, Google site-verification, and
package/dist/index.js CHANGED
@@ -312,7 +312,7 @@ async function clearSession(storage) {
312
312
  }
313
313
 
314
314
  // src/version.ts
315
- var SDK_VERSION = "1.31.0";
315
+ var SDK_VERSION = "1.33.0";
316
316
 
317
317
  // src/client.ts
318
318
  function isRawBody(body) {
package/dist/index.mjs CHANGED
@@ -265,7 +265,7 @@ async function clearSession(storage) {
265
265
  }
266
266
 
267
267
  // src/version.ts
268
- var SDK_VERSION = "1.31.0";
268
+ var SDK_VERSION = "1.33.0";
269
269
 
270
270
  // src/client.ts
271
271
  function isRawBody(body) {