@inploi/plugin-job-search 0.0.4 → 0.0.6

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.
@@ -512,7 +512,75 @@ function C$1(t2, l2, c4, p2, u2) {
512
512
  return B2 || ("string" == typeof H2 ? B2 = s$1(H2) : null != H2 && false !== H2 && true !== H2 && (B2 = C$1(H2, l2, "svg" === E2 || "foreignObject" !== E2 && c4, p2, t2))), d$1 && d$1(t2), t2.__ = void 0, m$1 && m$1(t2), !B2 && S.has(E2) ? q2 + "/>" : q2 + ">" + B2 + "</" + E2 + ">";
513
513
  }
514
514
  var S = /* @__PURE__ */ new Set(["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]);
515
- var t, r$2, u$1, i, o = 0, f$3 = [], c$1 = [], e$2 = l$2.__b, a = l$2.__r, v = l$2.diffed, l = l$2.__c, m = l$2.unmount;
515
+ var f$3 = 0;
516
+ function u$1(e2, t2, n2, o2, i2, u2) {
517
+ var a2, c4, p2 = {};
518
+ for (c4 in t2)
519
+ "ref" == c4 ? a2 = t2[c4] : p2[c4] = t2[c4];
520
+ var l2 = { type: e2, props: p2, key: n2, ref: a2, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, constructor: void 0, __v: --f$3, __i: -1, __u: 0, __source: i2, __self: u2 };
521
+ if ("function" == typeof e2 && (a2 = e2.defaultProps))
522
+ for (c4 in a2)
523
+ void 0 === p2[c4] && (p2[c4] = a2[c4]);
524
+ return l$2.vnode && l$2.vnode(l2), l2;
525
+ }
526
+ const Fallback = ({
527
+ error,
528
+ resetError
529
+ }) => {
530
+ return u$1("div", {
531
+ style: {
532
+ padding: "0 1rem",
533
+ fontSize: "1rem",
534
+ color: "#333333",
535
+ fontFamily: "'system-ui' 'Helvetica'"
536
+ },
537
+ children: ["Something went wrong.", u$1("br", {}), ' Error Message: "', error.message, '"', u$1("button", {
538
+ onClick: resetError,
539
+ style: {
540
+ background: "#efefef",
541
+ border: "none",
542
+ cursor: "pointer",
543
+ padding: "0.5rem 1rem"
544
+ },
545
+ children: "Retry"
546
+ })]
547
+ });
548
+ };
549
+ class ErrorBoundary extends b$2 {
550
+ constructor() {
551
+ super(...arguments);
552
+ __publicField(this, "state", {
553
+ error: null
554
+ });
555
+ }
556
+ static getDerivedStateFromError(error) {
557
+ return {
558
+ error: error.message
559
+ };
560
+ }
561
+ componentDidCatch(error) {
562
+ this.setState({
563
+ error
564
+ });
565
+ }
566
+ render() {
567
+ if (this.state.error) {
568
+ const {
569
+ Fallback: Fallback2
570
+ } = this.props;
571
+ return u$1(Fallback2, {
572
+ error: this.state.error,
573
+ resetError: () => {
574
+ this.setState({
575
+ error: null
576
+ });
577
+ }
578
+ });
579
+ }
580
+ return this.props.children;
581
+ }
582
+ }
583
+ var t, r$2, u, i, o = 0, f$2 = [], c$1 = [], e$2 = l$2.__b, a = l$2.__r, v = l$2.diffed, l = l$2.__c, m = l$2.unmount;
516
584
  function d(t2, u2) {
517
585
  l$2.__h && l$2.__h(r$2, t2, o || u2), o = 0;
518
586
  var i2 = r$2.__H || (r$2.__H = { __: [], __h: [] });
@@ -614,7 +682,7 @@ function V$1() {
614
682
  return n2.__;
615
683
  }
616
684
  function b() {
617
- for (var t2; t2 = f$3.shift(); )
685
+ for (var t2; t2 = f$2.shift(); )
618
686
  if (t2.__P && t2.__H)
619
687
  try {
620
688
  t2.__H.__h.forEach(k$3), t2.__H.__h.forEach(w$1), t2.__H.__h = [];
@@ -627,15 +695,15 @@ l$2.__b = function(n2) {
627
695
  }, l$2.__r = function(n2) {
628
696
  a && a(n2), t = 0;
629
697
  var i2 = (r$2 = n2.__c).__H;
630
- i2 && (u$1 === r$2 ? (i2.__h = [], r$2.__h = [], i2.__.forEach(function(n3) {
698
+ i2 && (u === r$2 ? (i2.__h = [], r$2.__h = [], i2.__.forEach(function(n3) {
631
699
  n3.__N && (n3.__ = n3.__N), n3.__V = c$1, n3.__N = n3.i = void 0;
632
- })) : (i2.__h.forEach(k$3), i2.__h.forEach(w$1), i2.__h = [], t = 0)), u$1 = r$2;
700
+ })) : (i2.__h.forEach(k$3), i2.__h.forEach(w$1), i2.__h = [], t = 0)), u = r$2;
633
701
  }, l$2.diffed = function(t2) {
634
702
  v && v(t2);
635
703
  var o2 = t2.__c;
636
- o2 && o2.__H && (o2.__H.__h.length && (1 !== f$3.push(o2) && i === l$2.requestAnimationFrame || ((i = l$2.requestAnimationFrame) || j$1)(b)), o2.__H.__.forEach(function(n2) {
704
+ o2 && o2.__H && (o2.__H.__h.length && (1 !== f$2.push(o2) && i === l$2.requestAnimationFrame || ((i = l$2.requestAnimationFrame) || j$1)(b)), o2.__H.__.forEach(function(n2) {
637
705
  n2.i && (n2.__H = n2.i), n2.__V !== c$1 && (n2.__ = n2.__V), n2.i = void 0, n2.__V = c$1;
638
- })), u$1 = r$2 = null;
706
+ })), u = r$2 = null;
639
707
  }, l$2.__c = function(t2, r2) {
640
708
  r2.some(function(t3) {
641
709
  try {
@@ -2138,6 +2206,14 @@ var ValiError = class extends Error {
2138
2206
  this.issues = issues;
2139
2207
  }
2140
2208
  };
2209
+ function coerce(schema, action) {
2210
+ return {
2211
+ ...schema,
2212
+ _parse(input, info) {
2213
+ return schema._parse(action(input), info);
2214
+ }
2215
+ };
2216
+ }
2141
2217
  function getIssues(issues) {
2142
2218
  return { issues };
2143
2219
  }
@@ -2611,7 +2687,7 @@ const getRelativeTimeDifference = ({
2611
2687
  return diffIn.months < 0 ? "a long time ago" : "in a long time";
2612
2688
  };
2613
2689
  const SEVEN_DAYS_MS = 1e3 * 60 * 60 * 24 * 7;
2614
- const AvailablePropertiesSchema = record(array(string()));
2690
+ const AvailablePropertiesSchema = record(array(coerce(string(), String)));
2615
2691
  const PaginationSchema = object({
2616
2692
  total: number(),
2617
2693
  current_page: number(),
@@ -2619,7 +2695,7 @@ const PaginationSchema = object({
2619
2695
  last_page: number()
2620
2696
  });
2621
2697
  const payPeriods = {
2622
- ANNUALY: "per year",
2698
+ ANNUALLY: "per year",
2623
2699
  DAILY: "per day",
2624
2700
  HOURLY: "per hour",
2625
2701
  MONTHLY: "per month",
@@ -2631,14 +2707,14 @@ const JobPayloadSchema = object({
2631
2707
  company_logo: string(),
2632
2708
  employment_type: union([literal("FULL_TIME"), literal("PART_TIME"), literal("TEMPORARY"), literal("CONTRACTOR"), literal("INTERN"), literal("VOLUNTEER"), literal("OTHER")]),
2633
2709
  location_type: union([literal("LOCATION"), literal("REMOTE"), literal("HYBRID")]),
2634
- pay_type: union([literal("ANNUALY"), literal("HOURLY"), literal("MONTHLY"), literal("WEEKLY"), literal("DAILY")]),
2710
+ pay_type: union([literal("ANNUALLY"), literal("HOURLY"), literal("MONTHLY"), literal("WEEKLY"), literal("DAILY")]),
2635
2711
  pay_currency: string(),
2636
2712
  // Whether to mask the pay and show as "competitive"
2637
2713
  pay_mask: boolean(),
2638
2714
  // Whether to display pay at all
2639
2715
  pay_display: boolean(),
2640
2716
  // Decimal numeric string e.g. "12.70"
2641
- pay: string(),
2717
+ pay: nullable(string()),
2642
2718
  // Decimal numeric string e.g. "12.70"
2643
2719
  pay_min: nullable(string()),
2644
2720
  // Decimal numeric string e.g. "12.70"
@@ -2652,7 +2728,7 @@ const JobPayloadSchema = object({
2652
2728
  // E.g.: Any varchar, e.g.: "Permanent contract"
2653
2729
  contract_type: nullable(string()),
2654
2730
  created_at: string(),
2655
- custom_data: record(any())
2731
+ custom_data: nullable(record(any()))
2656
2732
  });
2657
2733
  const JobSchema = transform(JobPayloadSchema, (schema) => {
2658
2734
  const isNew = new Date(schema.created_at).getTime() > Date.now() - SEVEN_DAYS_MS;
@@ -2660,6 +2736,17 @@ const JobSchema = transform(JobPayloadSchema, (schema) => {
2660
2736
  style: "currency",
2661
2737
  currency: schema.pay_currency
2662
2738
  });
2739
+ const pay = (() => {
2740
+ if (schema.pay_display === false)
2741
+ return void 0;
2742
+ if (schema.pay_mask)
2743
+ return "Competitive";
2744
+ if (schema.pay_max && schema.pay_min)
2745
+ return numberFormatter.formatRange(+schema.pay_min, +schema.pay_max);
2746
+ if (schema.pay)
2747
+ return [numberFormatter.format(+schema.pay), payPeriods[schema.pay_type]].join(" ");
2748
+ throw new Error("Invalid pay data");
2749
+ })();
2663
2750
  return {
2664
2751
  id: schema.id,
2665
2752
  isNew,
@@ -2669,7 +2756,7 @@ const JobSchema = transform(JobPayloadSchema, (schema) => {
2669
2756
  },
2670
2757
  employmentType: schema.employment_type,
2671
2758
  locationType: schema.location_type,
2672
- pay: !schema.pay_display ? void 0 : schema.pay_mask ? "Competitive" : schema.pay_max && schema.pay_min ? [numberFormatter.formatRange(+schema.pay_min, +schema.pay_max), payPeriods[schema.pay_type]].join(" ") : [numberFormatter.format(+schema.pay), payPeriods[schema.pay_type]].join(" "),
2759
+ pay,
2673
2760
  description: schema.description,
2674
2761
  title: schema.title,
2675
2762
  coordinates: schema.coordinates,
@@ -2697,7 +2784,6 @@ const getJobSearchResults = async ({
2697
2784
  filters
2698
2785
  }) => {
2699
2786
  try {
2700
- console.log(filters);
2701
2787
  const response = await apiClient.fetch("/search", {
2702
2788
  method: "POST",
2703
2789
  body: JSON.stringify({
@@ -2788,149 +2874,138 @@ const defineConfig = (options) => {
2788
2874
  return { compose: compose1, cva: cva1, cx: cx1 };
2789
2875
  };
2790
2876
  const { compose, cva, cx } = defineConfig();
2791
- var f$2 = 0;
2792
- function u(e2, t2, n2, o2, i2, u2) {
2793
- var a2, c4, p2 = {};
2794
- for (c4 in t2)
2795
- "ref" == c4 ? a2 = t2[c4] : p2[c4] = t2[c4];
2796
- var l2 = { type: e2, props: p2, key: n2, ref: a2, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, constructor: void 0, __v: --f$2, __i: -1, __u: 0, __source: i2, __self: u2 };
2797
- if ("function" == typeof e2 && (a2 = e2.defaultProps))
2798
- for (c4 in a2)
2799
- void 0 === p2[c4] && (p2[c4] = a2[c4]);
2800
- return l$2.vnode && l$2.vnode(l2), l2;
2801
- }
2802
2877
  const icons = {
2803
- briefcase: u(g$3, {
2804
- children: [u("path", {
2878
+ briefcase: u$1(g$3, {
2879
+ children: [u$1("path", {
2805
2880
  d: "M17.25 7.75H6.75C5.64543 7.75 4.75 8.64543 4.75 9.75V16.25C4.75 17.3546 5.64543 18.25 6.75 18.25H17.25C18.3546 18.25 19.25 17.3546 19.25 16.25V9.75C19.25 8.64543 18.3546 7.75 17.25 7.75Z"
2806
- }), u("path", {
2881
+ }), u$1("path", {
2807
2882
  d: "M4.75 11.75H19.25"
2808
- }), u("path", {
2883
+ }), u$1("path", {
2809
2884
  d: "M13.25 12.25V13.25H10.75V12.25H13.25Z"
2810
- }), u("path", {
2885
+ }), u$1("path", {
2811
2886
  d: "M9.25 7.5V6.25C9.25 5.42157 9.92157 4.75 10.75 4.75H13.25C14.0784 4.75 14.75 5.42157 14.75 6.25V7.5"
2812
2887
  })]
2813
2888
  }),
2814
- brand: u(g$3, {
2815
- children: [u("path", {
2889
+ brand: u$1(g$3, {
2890
+ children: [u$1("path", {
2816
2891
  d: "M18.45 13.9901C18.1288 15.031 17.5574 15.9886 16.773 16.773C15.5071 18.0388 13.7902 18.75 12 18.75C10.2098 18.75 8.49289 18.0388 7.22702 16.773C6.44262 15.9886 5.87122 15.031 5.55003 13.9901"
2817
- }), u("path", {
2892
+ }), u$1("path", {
2818
2893
  d: "M9.87868 14.8713C10.1573 15.1499 10.488 15.3709 10.8519 15.5216C11.2159 15.6724 11.606 15.75 12 15.75C12.394 15.75 12.7841 15.6724 13.1481 15.5216C13.512 15.3709 13.8427 15.1499 14.1213 14.8713"
2819
- }), u("path", {
2894
+ }), u$1("path", {
2820
2895
  d: "M17.0791 7.55413C16.7038 7.12546 16.2758 6.74602 15.8053 6.42486"
2821
- }), u("path", {
2896
+ }), u$1("path", {
2822
2897
  d: "M12.8451 5.30311C12.2799 5.23179 11.7079 5.2323 11.1428 5.30465"
2823
- }), u("path", {
2898
+ }), u$1("path", {
2824
2899
  d: "M8.25666 6.38307C7.78259 6.69901 7.35043 7.07369 6.97047 7.49818"
2825
- }), u("circle", {
2900
+ }), u$1("circle", {
2826
2901
  cx: "18.75",
2827
2902
  cy: "12",
2828
2903
  r: "2"
2829
- }), u("circle", {
2904
+ }), u$1("circle", {
2830
2905
  cx: "5.25",
2831
2906
  cy: "12",
2832
2907
  r: "2"
2833
2908
  })]
2834
2909
  }),
2835
- building: u(g$3, {
2836
- children: [u("path", {
2910
+ building: u$1(g$3, {
2911
+ children: [u$1("path", {
2837
2912
  d: "M16.75 10.25H13.75"
2838
- }), u("path", {
2913
+ }), u$1("path", {
2839
2914
  d: "M16.75 13.25H13.75"
2840
- }), u("path", {
2915
+ }), u$1("path", {
2841
2916
  d: "M3 18.25H5.25006M5.25006 18.25V14.25C5.25006 13.1454 6.14549 12.25 7.25006 12.25H10.2501L10.25 8.25003C10.25 6.59316 11.5932 5.25 13.25 5.25H17.25C18.9069 5.25 20.25 6.59315 20.25 8.25V18.25H5.25006Z"
2842
- }), u("path", {
2917
+ }), u$1("path", {
2843
2918
  d: "M10.25 12.25V18.25"
2844
2919
  })]
2845
2920
  }),
2846
- circles: u(g$3, {
2847
- children: [u("path", {
2921
+ circles: u$1(g$3, {
2922
+ children: [u$1("path", {
2848
2923
  d: "M16.773 16.773C15.829 17.717 14.6262 18.3599 13.3169 18.6203C12.0075 18.8808 10.6503 18.7471 9.41689 18.2362C8.18349 17.7253 7.12928 16.8601 6.38758 15.7501C5.64588 14.6401 5.25 13.335 5.25 12C5.25 10.665 5.64588 9.35993 6.38758 8.2499C7.12928 7.13987 8.18349 6.27471 9.41689 5.76381C10.6503 5.25292 12.0075 5.11925 13.3169 5.3797C14.6262 5.64015 15.829 6.28302 16.773 7.22703"
2849
- }), u("path", {
2924
+ }), u$1("path", {
2850
2925
  d: "M9.34835 9.34835C9.8728 8.8239 10.541 8.46675 11.2684 8.32206C11.9958 8.17736 12.7498 8.25162 13.4351 8.53545C14.1203 8.81928 14.706 9.29993 15.118 9.91661C15.5301 10.5333 15.75 11.2583 15.75 12C15.75 12.7417 15.5301 13.4667 15.118 14.0834C14.706 14.7001 14.1203 15.1807 13.4351 15.4645C12.7498 15.7484 11.9958 15.8226 11.2684 15.6779C10.541 15.5333 9.8728 15.1761 9.34835 14.6517"
2851
2926
  })]
2852
2927
  }),
2853
- clock: u(g$3, {
2854
- children: [u("path", {
2928
+ clock: u$1(g$3, {
2929
+ children: [u$1("path", {
2855
2930
  d: "M14 9L12 13L9.5 12"
2856
- }), u("path", {
2931
+ }), u$1("path", {
2857
2932
  d: "M18.75 12C18.75 15.7279 15.7279 18.75 12 18.75C8.27208 18.75 5.25 15.7279 5.25 12C5.25 8.27208 8.27208 5.25 12 5.25C15.7279 5.25 18.75 8.27208 18.75 12Z"
2858
2933
  })]
2859
2934
  }),
2860
- filter: u(g$3, {
2861
- children: u("path", {
2935
+ filter: u$1(g$3, {
2936
+ children: u$1("path", {
2862
2937
  d: "M19.25 7H4.75V8.5L10.25 12.25V17.5H13.75V12.25L19.25 8.5V7Z"
2863
2938
  })
2864
2939
  }),
2865
- globe: u(g$3, {
2866
- children: [u("path", {
2940
+ globe: u$1(g$3, {
2941
+ children: [u$1("path", {
2867
2942
  d: "M5 13.75H19"
2868
- }), u("path", {
2943
+ }), u$1("path", {
2869
2944
  d: "M5 10.25H19"
2870
- }), u("path", {
2945
+ }), u$1("path", {
2871
2946
  d: "M12 4.75C15.5 9.25 15.5 14.75 12.0001 19.25C8.50012 14.75 8.50005 9.25 12 4.75Z"
2872
- }), u("circle", {
2947
+ }), u$1("circle", {
2873
2948
  cx: "12",
2874
2949
  cy: "12",
2875
2950
  r: "7.25"
2876
2951
  })]
2877
2952
  }),
2878
- magnifier: u(g$3, {
2879
- children: [u("path", {
2953
+ magnifier: u$1(g$3, {
2954
+ children: [u$1("path", {
2880
2955
  d: "M15.5659 15.5659C14.4875 16.6442 13.025 17.25 11.5 17.25C9.97501 17.25 8.51247 16.6442 7.43414 15.5659C6.3558 14.4875 5.75 13.025 5.75 11.5C5.75 9.97501 6.3558 8.51247 7.43414 7.43414C8.51247 6.3558 9.97501 5.75 11.5 5.75C13.025 5.75 14.4875 6.3558 15.5659 7.43414C16.6442 8.51247 17.25 9.97501 17.25 11.5C17.25 13.025 16.6442 14.4875 15.5659 15.5659L15.5659 15.5659Z"
2881
- }), u("path", {
2956
+ }), u$1("path", {
2882
2957
  d: "M11.5 8.75C11.8611 8.75 12.2187 8.82113 12.5524 8.95933C12.886 9.09753 13.1892 9.3001 13.4445 9.55546C13.6999 9.81082 13.9025 10.114 14.0407 10.4476C14.1789 10.7813 14.25 11.1389 14.25 11.5"
2883
- }), u("path", {
2958
+ }), u$1("path", {
2884
2959
  d: "M16 16L19 19"
2885
2960
  })]
2886
2961
  }),
2887
- mapPin: u(g$3, {
2888
- children: u(g$3, {
2889
- children: [u("circle", {
2962
+ mapPin: u$1(g$3, {
2963
+ children: u$1(g$3, {
2964
+ children: [u$1("circle", {
2890
2965
  cx: "12",
2891
2966
  cy: "9",
2892
2967
  r: "2"
2893
- }), u("path", {
2968
+ }), u$1("path", {
2894
2969
  d: "M16.2426 16.8358C17.0818 17.1155 17.6532 17.4719 17.8847 17.8598C18.1162 18.2478 17.9974 18.6499 17.5433 19.0154C17.0892 19.3808 16.3201 19.6932 15.3334 19.9129C14.3467 20.1327 13.1867 20.25 12 20.25C10.8133 20.25 9.65327 20.1327 8.66658 19.9129C7.67988 19.6932 6.91085 19.3808 6.45672 19.0154C6.0026 18.6499 5.88378 18.2478 6.11529 17.8598C6.3468 17.4719 6.91825 17.1155 7.75736 16.8358"
2895
- }), u("path", {
2970
+ }), u$1("path", {
2896
2971
  d: "M17.25 9C17.25 13.3995 12 16.75 12 16.75C12 16.75 6.75 13.3995 6.75 9C6.75 6.10051 9.10051 3.75 12 3.75C14.8995 3.75 17.25 6.10051 17.25 9Z"
2897
2972
  })]
2898
2973
  })
2899
2974
  }),
2900
- sunset: u(g$3, {
2901
- children: [u("path", {
2975
+ sunset: u$1(g$3, {
2976
+ children: [u$1("path", {
2902
2977
  d: "M18.5 8.5L17.5 9.5"
2903
- }), u("path", {
2978
+ }), u$1("path", {
2904
2979
  d: "M5.5 8.5L6.5 9.5"
2905
- }), u("path", {
2980
+ }), u$1("path", {
2906
2981
  d: "M12 6L12 7.5"
2907
- }), u("path", {
2982
+ }), u$1("path", {
2908
2983
  d: "M7.5 15.25L7.5 14.25C7.5 13.6591 7.6164 13.0739 7.84254 12.5279C8.06869 11.982 8.40016 11.4859 8.81802 11.068C9.23588 10.6502 9.73196 10.3187 10.2779 10.0925C10.8239 9.8664 11.4091 9.75 12 9.75C12.5909 9.75 13.1761 9.8664 13.7221 10.0925C14.268 10.3187 14.7641 10.6502 15.182 11.068C15.5998 11.4859 15.9313 11.982 16.1575 12.5279C16.3836 13.0739 16.5 13.6591 16.5 14.25V15.25"
2909
- }), u("path", {
2984
+ }), u$1("path", {
2910
2985
  d: "M20.25 15.25H12H3.75"
2911
- }), u("path", {
2986
+ }), u$1("path", {
2912
2987
  d: "M16.25 18.25H12L7.75 18.25"
2913
2988
  })]
2914
2989
  }),
2915
- x: u("path", {
2990
+ x: u$1("path", {
2916
2991
  d: "M8 8l8 8M8 16l8 -8"
2917
2992
  }),
2918
- "chevron-right": u("path", {
2993
+ "chevron-right": u$1("path", {
2919
2994
  d: "M11 8L15 12L11 16"
2920
2995
  })
2921
2996
  };
2922
2997
  const IconSpritesheet = ({
2923
2998
  theme
2924
2999
  }) => {
2925
- return u("svg", {
3000
+ return u$1("svg", {
2926
3001
  xmlns: "http://www.w3.org/2000/svg",
2927
3002
  style: {
2928
3003
  display: "none"
2929
3004
  },
2930
- children: u("defs", {
2931
- children: Object.entries(icons).map(([name, icon]) => u("symbol", {
3005
+ children: u$1("defs", {
3006
+ children: Object.entries(icons).map(([name, icon]) => u$1("symbol", {
2932
3007
  id: `i-icon-${name}`,
2933
- children: u("g", {
3008
+ children: u$1("g", {
2934
3009
  fill: "none",
2935
3010
  "stroke-width": theme.mode === "dark" && theme.highcontrast != true ? "1" : "1.5",
2936
3011
  "stroke-linecap": "round",
@@ -2946,12 +3021,12 @@ const Icon = ({
2946
3021
  name,
2947
3022
  ...props
2948
3023
  }) => {
2949
- return u("svg", {
3024
+ return u$1("svg", {
2950
3025
  viewBox: "0 0 24 24",
2951
3026
  width: 24,
2952
3027
  height: 24,
2953
3028
  ...props,
2954
- children: u("use", {
3029
+ children: u$1("use", {
2955
3030
  href: `#i-icon-${name}`
2956
3031
  })
2957
3032
  });
@@ -3005,6 +3080,7 @@ const btnNextClass = cva({
3005
3080
  }
3006
3081
  }
3007
3082
  });
3083
+ const getSelectedValues = (current) => typeof current.value === "string" ? [current.value] : current.value ?? [];
3008
3084
  const Filter = ({
3009
3085
  filterKey,
3010
3086
  title,
@@ -3017,10 +3093,10 @@ const Filter = ({
3017
3093
  icon,
3018
3094
  state
3019
3095
  }) => {
3020
- const selectedValues = typeof current.value === "string" ? [current.value] : current.value ?? [];
3096
+ const selectedValues = getSelectedValues(current);
3021
3097
  const hasValue = selectedValues.length > 0;
3022
3098
  const showClearButton = hasValue && active == false;
3023
- return u("section", {
3099
+ return u$1("section", {
3024
3100
  "data-filter-key": filterKey,
3025
3101
  role: "tab",
3026
3102
  "aria-label": title,
@@ -3028,40 +3104,39 @@ const Filter = ({
3028
3104
  class: wrapperClass$1({
3029
3105
  hasValue
3030
3106
  }),
3031
- children: [u("div", {
3107
+ children: [u$1("div", {
3032
3108
  class: "w-full min-w-0 flex-1",
3033
- children: [u("button", {
3109
+ children: [u$1("button", {
3034
3110
  "aria-label": active ? "Close filter" : "Open filter",
3035
3111
  class: "ease-expo-out fr rounded-section flex w-full items-center gap-2 px-4 py-4 transition-all duration-300",
3036
3112
  onClick: () => onActiveChange(!active),
3037
- children: [u(Icon, {
3113
+ children: [u$1(Icon, {
3038
3114
  class: iconClass({
3039
3115
  hasValue
3040
3116
  }),
3041
3117
  name: icon
3042
- }), u("p", {
3118
+ }), u$1("p", {
3043
3119
  class: textClass({
3044
3120
  hasValue
3045
3121
  }),
3046
3122
  children: title
3047
3123
  })]
3048
- }), u(FilterInner, {
3124
+ }), u$1(FilterInner, {
3049
3125
  active,
3050
3126
  current,
3051
3127
  onValueChange,
3052
3128
  suggestions,
3053
3129
  onActiveChange,
3054
3130
  onSkip,
3055
- state,
3056
- selectedValues
3131
+ state
3057
3132
  })]
3058
- }), showClearButton && u("div", {
3133
+ }), showClearButton && u$1("div", {
3059
3134
  class: "flex flex-none items-center justify-center p-4",
3060
- children: u("button", {
3135
+ children: u$1("button", {
3061
3136
  "aria-label": "Clear",
3062
3137
  class: "fr touch-hitbox ease-expo-out hover:bg-interactive-accent-bg-hover text-interactive-accent-text rounded-interactive relative cursor-pointer p-1 transition-all duration-300 active:scale-95",
3063
3138
  onClick: () => onValueChange(void 0),
3064
- children: u(Icon, {
3139
+ children: u$1(Icon, {
3065
3140
  name: "x"
3066
3141
  })
3067
3142
  })
@@ -3081,48 +3156,59 @@ const FilterInner = ({
3081
3156
  onValueChange,
3082
3157
  onActiveChange,
3083
3158
  onSkip,
3084
- state,
3085
- selectedValues
3159
+ state
3086
3160
  }) => {
3087
3161
  const currentRef = _(null);
3162
+ const [internalValue, setInternalValue] = h(current);
3163
+ p$2(() => {
3164
+ setInternalValue(current);
3165
+ }, [current]);
3166
+ const selectedValues = getSelectedValues(internalValue);
3088
3167
  const hasValue = selectedValues.length > 0;
3089
3168
  if (active)
3090
- return u("div", {
3169
+ return u$1("div", {
3091
3170
  class: "-mt-4 pt-2",
3092
- children: [u("ul", {
3093
- "aria-label": "Filter options",
3094
- class: "hide-scrollbars flex select-none gap-1.5 overflow-x-auto px-4 pb-1 pt-2",
3095
- children: state === "loading" ? u("li", {
3171
+ children: [state === "loading" ? u$1("div", {
3172
+ class: "flex px-4 pb-1 pt-2",
3173
+ children: u$1("div", {
3096
3174
  "aria-hidden": true,
3097
3175
  class: tagClass$1({
3098
3176
  size: "lg",
3099
3177
  active: false,
3100
3178
  class: "animate-skeleton"
3101
3179
  }),
3102
- children: u("span", {
3180
+ children: u$1("span", {
3103
3181
  class: "inline-block w-[10ch]"
3104
3182
  })
3105
- }) : suggestions.map((suggestion, k2) => {
3183
+ })
3184
+ }) : u$1("ul", {
3185
+ "aria-label": "Filter options",
3186
+ class: "hide-scrollbars flex select-none gap-1.5 overflow-x-auto px-4 pb-1 pt-2",
3187
+ children: suggestions.map((suggestion, k2) => {
3106
3188
  const active2 = selectedValues.includes(suggestion.value);
3107
- return u("li", {
3189
+ return u$1("li", {
3108
3190
  style: {
3109
3191
  animationDelay: k2 * 0.01 + "s"
3110
3192
  },
3111
3193
  class: "animate-appear-tag origin-top",
3112
- children: u("button", {
3194
+ children: u$1("button", {
3113
3195
  "data-filter": true,
3114
3196
  "data-current-value": active2 ? "true" : void 0,
3115
3197
  onClick: () => {
3116
3198
  switch (current.select) {
3117
3199
  case "many": {
3118
- const newValue = toggleInArray(current.value ?? [], suggestion.value);
3119
- onValueChange({
3120
- select: current.select,
3121
- value: newValue.length > 0 ? newValue : void 0
3200
+ const newValue = toggleInArray(selectedValues, suggestion.value);
3201
+ setInternalValue({
3202
+ select: "many",
3203
+ value: newValue
3122
3204
  });
3123
3205
  break;
3124
3206
  }
3125
3207
  case "one":
3208
+ setInternalValue({
3209
+ select: "one",
3210
+ value: suggestion.value
3211
+ });
3126
3212
  onValueChange({
3127
3213
  select: current.select,
3128
3214
  value: suggestion.value
@@ -3140,33 +3226,38 @@ const FilterInner = ({
3140
3226
  })
3141
3227
  }, suggestion.value);
3142
3228
  })
3143
- }), u("div", {
3229
+ }), u$1("div", {
3144
3230
  class: "flex justify-end p-2",
3145
- children: u("button", {
3231
+ children: u$1("button", {
3146
3232
  class: btnNextClass({
3147
3233
  hasValue
3148
3234
  }),
3149
- onClick: () => onSkip(),
3150
- children: [hasValue ? "Done" : "Skip", " ", u(Icon, {
3235
+ onClick: () => {
3236
+ if (hasValue) {
3237
+ onValueChange(internalValue);
3238
+ }
3239
+ onSkip();
3240
+ },
3241
+ children: [hasValue ? "Done" : "Skip", " ", u$1(Icon, {
3151
3242
  name: "chevron-right"
3152
3243
  })]
3153
3244
  }, hasValue ? "done" : "skip")
3154
3245
  })]
3155
3246
  });
3156
3247
  if (hasValue)
3157
- return u("button", {
3248
+ return u$1("button", {
3158
3249
  "aria-label": "Current value",
3159
3250
  tabIndex: -1,
3160
3251
  "data-current-value": "true",
3161
3252
  ref: currentRef,
3162
3253
  class: "fr -mt-4 w-full select-none overflow-hidden px-4 pb-4 pt-2 focus:outline-none",
3163
3254
  onClick: () => onActiveChange(true),
3164
- children: u("ul", {
3255
+ children: u$1("ul", {
3165
3256
  class: "flex flex-wrap gap-1",
3166
3257
  children: suggestions.filter((s2) => selectedValues.includes(s2.value)).map((suggestion) => {
3167
- return u("li", {
3258
+ return u$1("li", {
3168
3259
  class: "animate-selected-tag block max-w-full",
3169
- children: u("span", {
3260
+ children: u$1("span", {
3170
3261
  class: tagClass$1({
3171
3262
  size: "sm",
3172
3263
  active: true
@@ -3205,6 +3296,75 @@ const useFilterKeyboardFocus = (activeKey, ref) => {
3205
3296
  focusFirstAvailableOption(keyToFocus, ref);
3206
3297
  }, [activeKey, previousActiveKey, ref]);
3207
3298
  };
3299
+ const filterIcons = {
3300
+ contract_type: "clock",
3301
+ title: "magnifier",
3302
+ city: "mapPin",
3303
+ town: "mapPin",
3304
+ address_1: "mapPin",
3305
+ address_2: "mapPin",
3306
+ country: "mapPin",
3307
+ company_name: "briefcase",
3308
+ category: "briefcase"
3309
+ };
3310
+ const FilterSection = ({
3311
+ properties,
3312
+ values,
3313
+ availableProperties,
3314
+ onFilterValueChange,
3315
+ state,
3316
+ parentRef
3317
+ }) => {
3318
+ var _a;
3319
+ const [activeKey, setActiveKey] = h((_a = properties[0]) == null ? void 0 : _a.key);
3320
+ useFilterKeyboardFocus(activeKey, parentRef);
3321
+ return u$1("div", {
3322
+ role: "tablist",
3323
+ class: "grid items-stretch gap-2 px-4 md:flex md:flex-col md:px-0",
3324
+ children: properties.map((property) => {
3325
+ var _a2;
3326
+ return u$1(ErrorBoundary, {
3327
+ Fallback,
3328
+ children: u$1(Filter, {
3329
+ icon: property.icon ?? filterIcons[property.key] ?? "filter",
3330
+ filterKey: property.key,
3331
+ title: property.label,
3332
+ suggestions: ((_a2 = availableProperties == null ? void 0 : availableProperties[property.key]) == null ? void 0 : _a2.map((property2) => ({
3333
+ label: property2,
3334
+ value: property2
3335
+ }))) ?? [],
3336
+ onActiveChange: (active) => setActiveKey(active ? property.key : void 0),
3337
+ active: activeKey === property.key,
3338
+ current: values[property.key] ?? {
3339
+ select: property.select,
3340
+ value: void 0
3341
+ },
3342
+ state,
3343
+ onValueChange: (value) => {
3344
+ const newState = onFilterValueChange(property, value, activeKey);
3345
+ setActiveKey(newState.newActiveKey);
3346
+ },
3347
+ onSkip: () => {
3348
+ var _a3;
3349
+ const currentIndex = properties.findIndex((p2) => p2.key === activeKey);
3350
+ const nextPropertyKey = currentIndex !== -1 ? (_a3 = properties[currentIndex + 1]) == null ? void 0 : _a3.key : void 0;
3351
+ setActiveKey(nextPropertyKey);
3352
+ }
3353
+ })
3354
+ }, property.key);
3355
+ })
3356
+ });
3357
+ };
3358
+ const SkeletonText = ({
3359
+ chars
3360
+ }) => {
3361
+ return u$1("span", {
3362
+ style: {
3363
+ width: chars + "ch"
3364
+ },
3365
+ class: "rounded-job-tag inline-block h-[1lh] bg-[currentColor] opacity-25"
3366
+ });
3367
+ };
3208
3368
  const wrapperClass = cva({
3209
3369
  base: "rounded-job-card bg-job-card-bg ring-width-job-card ring-job-card-stroke active:bg-job-card-bg-active active:ring-job-card-stroke-active flex gap-4 fr ease-expo-out min-w-0 p-4 transition-all duration-500"
3210
3370
  });
@@ -3226,57 +3386,118 @@ const tagClass = cva({
3226
3386
  const JobCard = ({
3227
3387
  job
3228
3388
  }) => {
3229
- return u("a", {
3389
+ return u$1("a", {
3230
3390
  href: "",
3231
3391
  class: wrapperClass(),
3232
- children: [u("div", {
3392
+ children: [u$1("div", {
3233
3393
  class: "flex flex-1 flex-col gap-4",
3234
- children: [u("div", {
3394
+ children: [u$1("div", {
3235
3395
  class: "flex flex-col items-start gap-1",
3236
- children: [job.isNew ? u("span", {
3396
+ children: [job.isNew ? u$1("span", {
3237
3397
  class: badgeClass(),
3238
3398
  children: "NEW"
3239
- }) : u("p", {
3399
+ }) : u$1("p", {
3240
3400
  class: "text-style-job-card-info text-copy-job-info",
3241
3401
  children: ["Posted ", job.relativePostedDate]
3242
- }), u("div", {
3402
+ }), u$1("div", {
3243
3403
  class: "flex flex-col gap-1",
3244
- children: [u("p", {
3404
+ children: [u$1("p", {
3245
3405
  class: "text-style-job-card-title text-copy-neutral",
3246
3406
  children: job.title
3247
- }), u("p", {
3407
+ }), u$1("p", {
3248
3408
  class: "text-style-job-card text-copy-neutral-lowcontrast",
3249
3409
  children: job.company.name
3250
3410
  })]
3251
3411
  })]
3252
- }), u("div", {
3412
+ }), u$1("div", {
3253
3413
  class: "flex flex-col items-start gap-2",
3254
- children: [job.pay && u("span", {
3414
+ children: [job.pay && u$1("span", {
3255
3415
  class: tagClass({
3256
3416
  colorScheme: "monetary"
3257
3417
  }),
3258
3418
  children: job.pay
3259
- }), u("div", {
3419
+ }), u$1("div", {
3260
3420
  class: "flex items-center gap-2",
3261
- children: job.contractType && u("span", {
3421
+ children: job.contractType && u$1("span", {
3262
3422
  class: tagClass(),
3263
3423
  children: job.contractType
3264
3424
  })
3265
3425
  })]
3266
3426
  })]
3267
- }), u("div", {
3427
+ }), u$1("div", {
3268
3428
  class: "flex items-center",
3269
- children: u(Icon, {
3429
+ children: u$1(Icon, {
3270
3430
  name: "chevron-right",
3271
3431
  class: "text-copy-neutral-icon"
3272
3432
  })
3273
3433
  })]
3274
3434
  });
3275
3435
  };
3276
- const filterIcons = {
3277
- contract_type: "clock",
3278
- city: "mapPin",
3279
- title: "magnifier"
3436
+ const JobCardSkeleton = ({
3437
+ animationDelay,
3438
+ seed
3439
+ }) => {
3440
+ return u$1("div", {
3441
+ "aria-hidden": true,
3442
+ style: {
3443
+ animationDelay: animationDelay + "s"
3444
+ },
3445
+ class: wrapperClass({
3446
+ class: "animate-skeleton"
3447
+ }),
3448
+ children: [u$1("div", {
3449
+ class: "flex flex-1 flex-col gap-4",
3450
+ children: [u$1("div", {
3451
+ class: "flex flex-col items-start gap-1",
3452
+ children: [u$1("p", {
3453
+ class: "text-style-job-card-info text-copy-job-info",
3454
+ children: u$1(SkeletonText, {
3455
+ chars: 12
3456
+ })
3457
+ }), u$1("div", {
3458
+ class: "flex flex-col gap-1",
3459
+ children: [u$1("p", {
3460
+ class: "text-style-job-card-title text-copy-neutral",
3461
+ children: u$1(SkeletonText, {
3462
+ chars: 13 + (seed + 5) * seed % 7
3463
+ })
3464
+ }), u$1("p", {
3465
+ class: "text-style-job-card text-copy-neutral-lowcontrast",
3466
+ children: u$1(SkeletonText, {
3467
+ chars: 7 + seed * seed % 3
3468
+ })
3469
+ })]
3470
+ })]
3471
+ }), u$1("div", {
3472
+ class: "flex flex-col items-start gap-2",
3473
+ children: [u$1("span", {
3474
+ class: tagClass({
3475
+ colorScheme: "default",
3476
+ class: "h-[1lh] w-[10ch]"
3477
+ })
3478
+ }), u$1("div", {
3479
+ class: "flex items-center gap-2",
3480
+ children: [u$1("span", {
3481
+ class: tagClass({
3482
+ colorScheme: "default",
3483
+ class: "h-[1lh] w-[6ch]"
3484
+ })
3485
+ }), u$1("span", {
3486
+ class: tagClass({
3487
+ colorScheme: "default",
3488
+ class: "h-[1lh] w-[8ch]"
3489
+ })
3490
+ })]
3491
+ })]
3492
+ })]
3493
+ }), u$1("div", {
3494
+ class: "flex items-center",
3495
+ children: u$1(Icon, {
3496
+ name: "chevron-right",
3497
+ class: "text-copy-neutral-icon"
3498
+ })
3499
+ })]
3500
+ });
3280
3501
  };
3281
3502
  const propertiesToDefaultValues = (properties) => properties.reduce((acc, property) => {
3282
3503
  switch (property.select) {
@@ -3331,7 +3552,6 @@ const nextStateFromValue = ({
3331
3552
  default:
3332
3553
  exhaustive(value);
3333
3554
  }
3334
- throw new Error("unreachable");
3335
3555
  };
3336
3556
  const resultCountString = (results) => {
3337
3557
  switch (results) {
@@ -3348,12 +3568,12 @@ const JobSearch = ({
3348
3568
  logger,
3349
3569
  params
3350
3570
  }) => {
3351
- var _a;
3352
3571
  const appRef = _(null);
3353
3572
  const [values, setValues] = h(() => propertiesToDefaultValues(params.properties));
3354
3573
  const {
3355
3574
  data,
3356
- isLoading
3575
+ isLoading,
3576
+ error
3357
3577
  } = useSWR(JSON.stringify(values), () => getJobSearchResults({
3358
3578
  apiClient,
3359
3579
  logger,
@@ -3364,81 +3584,76 @@ const JobSearch = ({
3364
3584
  revalidateOnReconnect: false,
3365
3585
  revalidateIfStale: false
3366
3586
  });
3587
+ if (error) {
3588
+ console.log(error.message);
3589
+ }
3367
3590
  const availableProperties = data == null ? void 0 : data.data.available_properties;
3368
- const [activeKey, setActiveKey] = h((_a = params.properties[0]) == null ? void 0 : _a.key);
3369
- useFilterKeyboardFocus(activeKey, appRef);
3370
- return u(g$3, {
3371
- children: [u(IconSpritesheet, {
3591
+ return u$1(g$3, {
3592
+ children: [u$1(IconSpritesheet, {
3372
3593
  theme: params.theme
3373
- }), u("div", {
3594
+ }), u$1("div", {
3374
3595
  ref: appRef,
3375
3596
  id: JOB_SEARCH_SCOPE_ELEMENT_ID,
3376
- children: u("div", {
3597
+ children: u$1("div", {
3377
3598
  class: "bg-app mx-auto flex min-h-screen max-w-screen-lg flex-col gap-4 py-6 md:grid md:grid-cols-3 md:px-4",
3378
- children: [u("div", {
3379
- role: "tablist",
3380
- class: "grid items-stretch gap-2 px-4 md:flex md:flex-col md:px-0",
3381
- children: params.properties.map((property) => {
3382
- var _a2;
3383
- return u(Filter, {
3384
- icon: filterIcons[property.key] ?? "filter",
3385
- filterKey: property.key,
3386
- title: property.label,
3387
- suggestions: ((_a2 = availableProperties == null ? void 0 : availableProperties[property.key]) == null ? void 0 : _a2.map((property2) => ({
3388
- label: property2,
3389
- value: property2
3390
- }))) ?? [],
3391
- onActiveChange: (active) => setActiveKey(active ? property.key : void 0),
3392
- active: activeKey === property.key,
3393
- current: values[property.key] ?? {
3394
- select: property.select,
3395
- value: void 0
3396
- },
3397
- state: isLoading && !(data == null ? void 0 : data.data.available_properties) ? "loading" : "loaded",
3398
- onValueChange: (value) => {
3399
- const {
3400
- newActiveKey,
3401
- newValue
3402
- } = nextStateFromValue({
3403
- property,
3404
- activeKey,
3405
- value,
3406
- properties: params.properties,
3407
- values
3408
- });
3409
- setActiveKey(newActiveKey);
3410
- setValues({
3411
- ...values,
3412
- [property.key]: newValue
3413
- });
3414
- },
3415
- onSkip: () => {
3416
- var _a3;
3417
- const currentIndex = params.properties.findIndex((p2) => p2.key === activeKey);
3418
- const nextPropertyKey = currentIndex !== -1 ? (_a3 = params.properties[currentIndex + 1]) == null ? void 0 : _a3.key : void 0;
3419
- setActiveKey(nextPropertyKey);
3420
- }
3421
- }, property.key);
3599
+ children: [u$1(ErrorBoundary, {
3600
+ Fallback,
3601
+ children: u$1(FilterSection, {
3602
+ onFilterValueChange: (property, value, activeKey) => {
3603
+ const {
3604
+ newActiveKey,
3605
+ newValue
3606
+ } = nextStateFromValue({
3607
+ property,
3608
+ activeKey,
3609
+ value,
3610
+ properties: params.properties,
3611
+ values
3612
+ });
3613
+ setValues({
3614
+ ...values,
3615
+ [property.key]: newValue
3616
+ });
3617
+ return {
3618
+ newActiveKey,
3619
+ newValue
3620
+ };
3621
+ },
3622
+ availableProperties,
3623
+ values,
3624
+ properties: params.properties,
3625
+ state: isLoading && !(data == null ? void 0 : data.data.available_properties) ? "loading" : "loaded",
3626
+ parentRef: appRef
3422
3627
  })
3423
- }), u("section", {
3628
+ }), u$1("div", {
3424
3629
  class: "md:col-span-2",
3425
- children: u("div", {
3630
+ children: u$1("section", {
3426
3631
  class: "bg-section-strong-bg ring-section-weak-stroke rounded-section ring-px lg:ring-width-section flex flex-col gap-4 p-4",
3427
- children: [data && u("p", {
3632
+ children: [isLoading && !(data == null ? void 0 : data.data) && u$1("div", {
3633
+ class: "flex flex-col gap-3",
3634
+ children: [u$1("p", {
3635
+ class: "text-copy-accent-lowcontrast animate-skeleton text-center",
3636
+ children: u$1(SkeletonText, {
3637
+ chars: 8
3638
+ })
3639
+ }), Array.from({
3640
+ length: 4
3641
+ }).map((_2, i2) => u$1(JobCardSkeleton, {
3642
+ seed: i2,
3643
+ animationDelay: (i2 - 4) * 0.1
3644
+ }, i2))]
3645
+ }), data && u$1("p", {
3428
3646
  class: "text-copy-accent-lowcontrast text-center",
3429
3647
  children: resultCountString(data.pagination.total)
3430
- }), u("ul", {
3648
+ }), u$1("ul", {
3431
3649
  class: "flex flex-col gap-3",
3432
3650
  children: data == null ? void 0 : data.data.results.map((job) => {
3433
- return u("li", {
3434
- children: u(JobCard, {
3651
+ return u$1("li", {
3652
+ children: u$1(JobCard, {
3435
3653
  job
3436
3654
  })
3437
3655
  }, job.id);
3438
3656
  })
3439
- }), u("p", {
3440
- class: "text-copy-accent-lowcontrast text-style-job-card-info text-center",
3441
- children: "You've reached the end of the list."
3442
3657
  })]
3443
3658
  })
3444
3659
  })]
@@ -3446,7 +3661,7 @@ const JobSearch = ({
3446
3661
  })]
3447
3662
  });
3448
3663
  };
3449
- const tailwind = "#ijs {\n font-size: 16px;\n font-family: sans-serif;\n --tw-content: '';\n font-family:\n system-ui,\n -apple-system,\n BlinkMacSystemFont,\n Segoe UI,\n Roboto,\n Oxygen,\n Ubuntu,\n Cantarell,\n Open Sans,\n Helvetica Neue,\n sans-serif;\n}\n\n #ijs * {\n box-sizing: border-box;\n border-style: solid;\n border-width: 0;\n -webkit-tap-highlight-color: transparent;\n }\n\n #ijs ::before,\n #ijs ::after {\n box-sizing: border-box;\n }\n\n #ijs :is(a) {\n text-decoration: none;\n }\n\n #ijs :is(ul, ol) {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n #ijs :is(p) {\n margin: 0;\n padding: 0;\n }\n\n #ijs :is(li) {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n #ijs :is(button) {\n display: block;\n margin: 0;\n padding: 0;\n border: unset;\n background: unset;\n text-align: unset;\n }\n\n #ijs :is(svg) {\n display: block;\n }\n\n #ijs *, #ijs ::before, #ijs ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n #ijs ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n #ijs .container {\n width: 100%;\n}\n\n @media (min-width: 640px) {\n\n #ijs .container {\n max-width: 640px;\n }\n}\n\n @media (min-width: 768px) {\n\n #ijs .container {\n max-width: 768px;\n }\n}\n\n @media (min-width: 1024px) {\n\n #ijs .container {\n max-width: 1024px;\n }\n}\n\n @media (min-width: 1280px) {\n\n #ijs .container {\n max-width: 1280px;\n }\n}\n\n @media (min-width: 1536px) {\n\n #ijs .container {\n max-width: 1536px;\n }\n}\n\n #ijs .visible {\n visibility: visible;\n}\n\n #ijs .invisible {\n visibility: hidden;\n}\n\n #ijs .collapse {\n visibility: collapse;\n}\n\n #ijs .static {\n position: static;\n}\n\n #ijs .fixed {\n position: fixed;\n}\n\n #ijs .absolute {\n position: absolute;\n}\n\n #ijs .relative {\n position: relative;\n}\n\n #ijs .sticky {\n position: sticky;\n}\n\n #ijs .isolate {\n isolation: isolate;\n}\n\n #ijs .m-2 {\n margin: 0.5rem;\n}\n\n #ijs .m-9 {\n margin: 2.25rem;\n}\n\n #ijs .mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n #ijs .-mt-4 {\n margin-top: -1rem;\n}\n\n #ijs .block {\n display: block;\n}\n\n #ijs .inline-block {\n display: inline-block;\n}\n\n #ijs .inline {\n display: inline;\n}\n\n #ijs .flex {\n display: flex;\n}\n\n #ijs .inline-flex {\n display: inline-flex;\n}\n\n #ijs .table {\n display: table;\n}\n\n #ijs .table-row {\n display: table-row;\n}\n\n #ijs .flow-root {\n display: flow-root;\n}\n\n #ijs .grid {\n display: grid;\n}\n\n #ijs .inline-grid {\n display: inline-grid;\n}\n\n #ijs .contents {\n display: contents;\n}\n\n #ijs .list-item {\n display: list-item;\n}\n\n #ijs .\\!hidden {\n display: none !important;\n}\n\n #ijs .hidden {\n display: none;\n}\n\n #ijs .h-8 {\n height: 2rem;\n}\n\n #ijs .min-h-screen {\n min-height: 100vh;\n}\n\n #ijs .w-\\[10ch\\] {\n width: 10ch;\n}\n\n #ijs .w-full {\n width: 100%;\n}\n\n #ijs .min-w-0 {\n min-width: 0px;\n}\n\n #ijs .max-w-full {\n max-width: 100%;\n}\n\n #ijs .max-w-screen-lg {\n max-width: 1024px;\n}\n\n #ijs .flex-1 {\n flex: 1 1 0%;\n}\n\n #ijs .flex-none {\n flex: none;\n}\n\n #ijs .flex-shrink {\n flex-shrink: 1;\n}\n\n #ijs .shrink {\n flex-shrink: 1;\n}\n\n #ijs .flex-grow {\n flex-grow: 1;\n}\n\n #ijs .grow {\n flex-grow: 1;\n}\n\n #ijs .border-collapse {\n border-collapse: collapse;\n}\n\n #ijs .origin-top {\n transform-origin: top;\n}\n\n #ijs .transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n @keyframes appear-tag {\n\n 0% {\n transform: scale(0.9);\n }\n\n 100% {\n transform: scale(1);\n }\n}\n\n #ijs .animate-appear-tag {\n animation: appear-tag 0.6s cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n @keyframes selected-tag {\n\n 0% {\n transform: scale(1.11);\n }\n\n 100% {\n transform: scale(1);\n }\n}\n\n #ijs .animate-selected-tag {\n animation: selected-tag 0.9s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n @keyframes skeleton {\n\n 0% {\n opacity: 0.2;\n }\n\n 50% {\n opacity: 0.5;\n }\n\n 100% {\n opacity: 0.3;\n }\n}\n\n #ijs .animate-skeleton {\n animation: skeleton 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n #ijs .cursor-pointer {\n cursor: pointer;\n}\n\n #ijs .select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n\n #ijs .resize {\n resize: both;\n}\n\n #ijs .flex-col {\n flex-direction: column;\n}\n\n #ijs .flex-wrap {\n flex-wrap: wrap;\n}\n\n #ijs .items-start {\n align-items: flex-start;\n}\n\n #ijs .items-center {\n align-items: center;\n}\n\n #ijs .items-stretch {\n align-items: stretch;\n}\n\n #ijs .justify-end {\n justify-content: flex-end;\n}\n\n #ijs .justify-center {\n justify-content: center;\n}\n\n #ijs .gap-1 {\n gap: 0.25rem;\n}\n\n #ijs .gap-1\\.5 {\n gap: 0.375rem;\n}\n\n #ijs .gap-2 {\n gap: 0.5rem;\n}\n\n #ijs .gap-3 {\n gap: 0.75rem;\n}\n\n #ijs .gap-4 {\n gap: 1rem;\n}\n\n #ijs .overflow-hidden {\n overflow: hidden;\n}\n\n #ijs .overflow-x-auto {\n overflow-x: auto;\n}\n\n #ijs .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n #ijs .whitespace-nowrap {\n white-space: nowrap;\n}\n\n #ijs .rounded-interactive {\n border-radius: var(--i-radius-interactive);\n}\n\n #ijs .rounded-job-card {\n border-radius: var(--i-radius-job-card);\n}\n\n #ijs .rounded-job-tag {\n border-radius: var(--i-radius-job-tag);\n}\n\n #ijs .rounded-section {\n border-radius: var(--i-radius-section);\n}\n\n #ijs .rounded-tag {\n border-radius: var(--i-radius-job-tag);\n}\n\n #ijs .border {\n border-width: 1px;\n}\n\n #ijs .bg-app {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-app-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-job-card-bg {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-job-card-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-section-strong-bg {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-section-strong-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-section-weak-bg {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-section-weak-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-tag-accent-strong-bg {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-tag-accent-strong-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-tag-monetary-weak-bg {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-tag-monetary-weak-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-tag-neutral-strong-bg {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-tag-neutral-strong-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-tag-neutral-weak-bg {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-tag-neutral-weak-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .p-1 {\n padding: 0.25rem;\n}\n\n #ijs .p-2 {\n padding: 0.5rem;\n}\n\n #ijs .p-4 {\n padding: 1rem;\n}\n\n #ijs .px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n\n #ijs .px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n #ijs .px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n #ijs .px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n\n #ijs .py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n\n #ijs .py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n #ijs .py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n\n #ijs .py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n\n #ijs .pb-1 {\n padding-bottom: 0.25rem;\n}\n\n #ijs .pb-4 {\n padding-bottom: 1rem;\n}\n\n #ijs .pl-3 {\n padding-left: 0.75rem;\n}\n\n #ijs .pr-1 {\n padding-right: 0.25rem;\n}\n\n #ijs .pt-2 {\n padding-top: 0.5rem;\n}\n\n #ijs .text-center {\n text-align: center;\n}\n\n #ijs .text-justify {\n text-align: justify;\n}\n\n #ijs .font-family-filter {\n font-family: var(--i-font-filter);\n}\n\n #ijs .font-family-tag {\n font-family: var(--i-font-tag);\n}\n\n #ijs .text-style-filter {\n font-size: 1rem;\n line-height: 1.5rem;\n letter-spacing: -0.01em;\n}\n\n #ijs .text-style-job-card {\n font-size: 0.875rem;\n line-height: 1.125rem;\n}\n\n #ijs .text-style-job-card-info {\n font-size: 0.75rem;\n line-height: 1.125rem;\n}\n\n #ijs .text-style-job-card-title {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n #ijs .text-style-tag {\n font-size: 0.875rem;\n line-height: 1.5rem;\n}\n\n #ijs .font-weight-filter {\n font-weight: var(--i-weight-filter);\n}\n\n #ijs .font-weight-tag {\n font-weight: var(--i-weight-tag);\n}\n\n #ijs .uppercase {\n text-transform: uppercase;\n}\n\n #ijs .lowercase {\n text-transform: lowercase;\n}\n\n #ijs .capitalize {\n text-transform: capitalize;\n}\n\n #ijs .italic {\n font-style: italic;\n}\n\n #ijs .ordinal {\n --tw-ordinal: ordinal;\n font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);\n}\n\n #ijs .text-copy-accent {\n --tw-text-opacity: 1;\n color: oklch(var(--i-copy-accent) / var(--tw-text-opacity));\n}\n\n #ijs .text-copy-accent-icon {\n --tw-text-opacity: 1;\n color: oklch(var(--i-copy-accent-icon) / var(--tw-text-opacity));\n}\n\n #ijs .text-copy-accent-lowcontrast {\n color: oklch(var(--i-copy-accent-lowcontrast) / 0.67);\n}\n\n #ijs .text-copy-job-info {\n --tw-text-opacity: 1;\n color: oklch(var(--i-copy-info) / var(--tw-text-opacity));\n}\n\n #ijs .text-copy-neutral {\n --tw-text-opacity: 1;\n color: oklch(var(--i-copy) / var(--tw-text-opacity));\n}\n\n #ijs .text-copy-neutral-icon {\n --tw-text-opacity: 1;\n color: oklch(var(--i-copy-icon) / var(--tw-text-opacity));\n}\n\n #ijs .text-copy-neutral-lowcontrast {\n --tw-text-opacity: 1;\n color: oklch(var(--i-copy-lowcontrast) / var(--tw-text-opacity));\n}\n\n #ijs .text-interactive-accent-text {\n --tw-text-opacity: 1;\n color: oklch(var(--i-interactive-accent-text) / var(--tw-text-opacity));\n}\n\n #ijs .text-interactive-neutral-text {\n --tw-text-opacity: 1;\n color: oklch(var(--i-interactive-neutral-text) / var(--tw-text-opacity));\n}\n\n #ijs .text-tag-accent-strong-copy {\n --tw-text-opacity: 1;\n color: oklch(var(--i-tag-accent-strong-copy) / var(--tw-text-opacity));\n}\n\n #ijs .text-tag-monetary-weak-copy {\n --tw-text-opacity: 1;\n color: oklch(var(--i-tag-monetary-weak-copy) / var(--tw-text-opacity));\n}\n\n #ijs .text-tag-neutral-strong-copy {\n --tw-text-opacity: 1;\n color: oklch(var(--i-tag-neutral-strong-copy) / var(--tw-text-opacity));\n}\n\n #ijs .text-tag-neutral-weak-copy {\n --tw-text-opacity: 1;\n color: oklch(var(--i-tag-neutral-weak-copy) / var(--tw-text-opacity));\n}\n\n #ijs .shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n #ijs .outline {\n outline-style: solid;\n}\n\n #ijs .ring-px {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #ijs .ring-width-job-card {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(var(--i-job-card-stroke-width) + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #ijs .ring-width-section {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(var(--i-section-stroke-width) + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #ijs .ring-job-card-stroke {\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-job-card-stroke-color) / var(--tw-ring-opacity));\n}\n\n #ijs .ring-section-strong-stroke {\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-section-strong-stroke-color) / var(--tw-ring-opacity));\n}\n\n #ijs .ring-section-weak-stroke {\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-section-weak-stroke-color) / var(--tw-ring-opacity));\n}\n\n #ijs .ring-tag-accent-strong-stroke {\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-tag-accent-strong-stroke-color) / var(--tw-ring-opacity));\n}\n\n #ijs .ring-tag-neutral-strong-stroke {\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-tag-neutral-strong-stroke-color) / var(--tw-ring-opacity));\n}\n\n #ijs .ring-tag-neutral-weak-stroke {\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-tag-neutral-weak-stroke-color) / var(--tw-ring-opacity));\n}\n\n #ijs .blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #ijs .grayscale {\n --tw-grayscale: grayscale(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #ijs .invert {\n --tw-invert: invert(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #ijs .sepia {\n --tw-sepia: sepia(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #ijs .filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #ijs .backdrop-filter {\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n #ijs .transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n #ijs .transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n #ijs .duration-1000 {\n transition-duration: 1000ms;\n}\n\n #ijs .duration-300 {\n transition-duration: 300ms;\n}\n\n #ijs .duration-500 {\n transition-duration: 500ms;\n}\n\n #ijs .ease-expo-out {\n transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n #ijs .font-style-filter {\n font-style: var(--i-style-filter);\n}\n\n #ijs .font-style-tag {\n font-style: var(--i-style-filter);\n}\n\n #ijs .fr {\n outline: none;\n}\n\n #ijs .fr:focus {\n outline: none;\n}\n\n #ijs .fr:focus-visible {\n outline: none;\n --tw-ring-offset-width: 1px;\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-a-7) / 1);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #ijs .hide-scrollbars::-webkit-scrollbar {\n display: none;\n}\n\n #ijs .hide-scrollbars {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n #ijs .touch-hitbox::before {\n content: '';\n position: absolute;\n display: block;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n height: 100%;\n min-height: 44px;\n min-width: 44px;\n z-index: 9999;\n}\n\n #ijs .\\[a-zA-Z0-9-_\\:\\.\\$\\@\\?\\] {\n a-z-a--z0-9-_: .$@?;\n}\n\n #ijs .hover\\:bg-interactive-accent-bg-hover:hover {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-interactive-accent-bg-hover) / var(--tw-bg-opacity));\n}\n\n #ijs .hover\\:bg-interactive-neutral-bg-hover:hover {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-interactive-neutral-bg-hover) / var(--tw-bg-opacity));\n}\n\n #ijs .focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n #ijs .active\\:scale-95:active {\n --tw-scale-x: .95;\n --tw-scale-y: .95;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n #ijs .active\\:bg-job-card-bg-active:active {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-job-card-bg-active) / var(--tw-bg-opacity));\n}\n\n #ijs .active\\:ring-job-card-stroke-active:active {\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-job-card-stroke-color-active) / var(--tw-ring-opacity));\n}\n\n @media (min-width: 768px) {\n\n #ijs .md\\:col-span-2 {\n grid-column: span 2 / span 2;\n }\n}\n\n @media (min-width: 768px) {\n\n #ijs .md\\:flex {\n display: flex;\n }\n}\n\n @media (min-width: 768px) {\n\n #ijs .md\\:grid {\n display: grid;\n }\n}\n\n @media (min-width: 768px) {\n\n #ijs .md\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n}\n\n @media (min-width: 768px) {\n\n #ijs .md\\:flex-col {\n flex-direction: column;\n }\n}\n\n @media (min-width: 768px) {\n\n #ijs .md\\:px-0 {\n padding-left: 0px;\n padding-right: 0px;\n }\n}\n\n @media (min-width: 768px) {\n\n #ijs .md\\:px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n}\n\n @media (min-width: 1024px) {\n\n #ijs .lg\\:ring-width-section {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(var(--i-section-stroke-width) + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n }\n}\n";
3664
+ const tailwind = "#ijs {\n font-size: 16px;\n font-family: sans-serif;\n --tw-content: '';\n font-family:\n system-ui,\n -apple-system,\n BlinkMacSystemFont,\n Segoe UI,\n Roboto,\n Oxygen,\n Ubuntu,\n Cantarell,\n Open Sans,\n Helvetica Neue,\n sans-serif;\n}\n\n #ijs * {\n box-sizing: border-box;\n border-style: solid;\n border-width: 0;\n -webkit-tap-highlight-color: transparent;\n }\n\n #ijs ::before,\n #ijs ::after {\n box-sizing: border-box;\n }\n\n #ijs :is(a) {\n text-decoration: none;\n }\n\n #ijs :is(ul, ol) {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n #ijs :is(p) {\n margin: 0;\n padding: 0;\n }\n\n #ijs :is(li) {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n #ijs :is(button) {\n display: block;\n margin: 0;\n padding: 0;\n border: unset;\n background: unset;\n text-align: unset;\n }\n\n #ijs :is(svg) {\n display: block;\n }\n\n #ijs *, #ijs ::before, #ijs ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n #ijs ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n #ijs .container {\n width: 100%;\n}\n\n @media (min-width: 640px) {\n\n #ijs .container {\n max-width: 640px;\n }\n}\n\n @media (min-width: 768px) {\n\n #ijs .container {\n max-width: 768px;\n }\n}\n\n @media (min-width: 1024px) {\n\n #ijs .container {\n max-width: 1024px;\n }\n}\n\n @media (min-width: 1280px) {\n\n #ijs .container {\n max-width: 1280px;\n }\n}\n\n @media (min-width: 1536px) {\n\n #ijs .container {\n max-width: 1536px;\n }\n}\n\n #ijs .visible {\n visibility: visible;\n}\n\n #ijs .invisible {\n visibility: hidden;\n}\n\n #ijs .collapse {\n visibility: collapse;\n}\n\n #ijs .static {\n position: static;\n}\n\n #ijs .fixed {\n position: fixed;\n}\n\n #ijs .absolute {\n position: absolute;\n}\n\n #ijs .relative {\n position: relative;\n}\n\n #ijs .sticky {\n position: sticky;\n}\n\n #ijs .isolate {\n isolation: isolate;\n}\n\n #ijs .m-2 {\n margin: 0.5rem;\n}\n\n #ijs .m-9 {\n margin: 2.25rem;\n}\n\n #ijs .mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n #ijs .-mt-4 {\n margin-top: -1rem;\n}\n\n #ijs .block {\n display: block;\n}\n\n #ijs .inline-block {\n display: inline-block;\n}\n\n #ijs .inline {\n display: inline;\n}\n\n #ijs .flex {\n display: flex;\n}\n\n #ijs .inline-flex {\n display: inline-flex;\n}\n\n #ijs .table {\n display: table;\n}\n\n #ijs .table-row {\n display: table-row;\n}\n\n #ijs .flow-root {\n display: flow-root;\n}\n\n #ijs .grid {\n display: grid;\n}\n\n #ijs .inline-grid {\n display: inline-grid;\n}\n\n #ijs .contents {\n display: contents;\n}\n\n #ijs .list-item {\n display: list-item;\n}\n\n #ijs .\\!hidden {\n display: none !important;\n}\n\n #ijs .hidden {\n display: none;\n}\n\n #ijs .h-8 {\n height: 2rem;\n}\n\n #ijs .h-\\[1lh\\] {\n height: 1lh;\n}\n\n #ijs .min-h-screen {\n min-height: 100vh;\n}\n\n #ijs .w-\\[10ch\\] {\n width: 10ch;\n}\n\n #ijs .w-\\[6ch\\] {\n width: 6ch;\n}\n\n #ijs .w-\\[8ch\\] {\n width: 8ch;\n}\n\n #ijs .w-full {\n width: 100%;\n}\n\n #ijs .min-w-0 {\n min-width: 0px;\n}\n\n #ijs .max-w-full {\n max-width: 100%;\n}\n\n #ijs .max-w-screen-lg {\n max-width: 1024px;\n}\n\n #ijs .flex-1 {\n flex: 1 1 0%;\n}\n\n #ijs .flex-none {\n flex: none;\n}\n\n #ijs .flex-shrink {\n flex-shrink: 1;\n}\n\n #ijs .shrink {\n flex-shrink: 1;\n}\n\n #ijs .flex-grow {\n flex-grow: 1;\n}\n\n #ijs .grow {\n flex-grow: 1;\n}\n\n #ijs .border-collapse {\n border-collapse: collapse;\n}\n\n #ijs .origin-top {\n transform-origin: top;\n}\n\n #ijs .transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n @keyframes appear-tag {\n\n 0% {\n transform: scale(0.9);\n }\n\n 100% {\n transform: scale(1);\n }\n}\n\n #ijs .animate-appear-tag {\n animation: appear-tag 0.6s cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n @keyframes selected-tag {\n\n 0% {\n transform: scale(1.11);\n }\n\n 100% {\n transform: scale(1);\n }\n}\n\n #ijs .animate-selected-tag {\n animation: selected-tag 0.9s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n @keyframes skeleton {\n\n 0% {\n opacity: 0.2;\n }\n\n 50% {\n opacity: 0.5;\n }\n\n 100% {\n opacity: 0.3;\n }\n}\n\n #ijs .animate-skeleton {\n animation: skeleton 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n #ijs .cursor-pointer {\n cursor: pointer;\n}\n\n #ijs .select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n\n #ijs .resize {\n resize: both;\n}\n\n #ijs .flex-col {\n flex-direction: column;\n}\n\n #ijs .flex-wrap {\n flex-wrap: wrap;\n}\n\n #ijs .items-start {\n align-items: flex-start;\n}\n\n #ijs .items-center {\n align-items: center;\n}\n\n #ijs .items-stretch {\n align-items: stretch;\n}\n\n #ijs .justify-end {\n justify-content: flex-end;\n}\n\n #ijs .justify-center {\n justify-content: center;\n}\n\n #ijs .gap-1 {\n gap: 0.25rem;\n}\n\n #ijs .gap-1\\.5 {\n gap: 0.375rem;\n}\n\n #ijs .gap-2 {\n gap: 0.5rem;\n}\n\n #ijs .gap-3 {\n gap: 0.75rem;\n}\n\n #ijs .gap-4 {\n gap: 1rem;\n}\n\n #ijs .overflow-hidden {\n overflow: hidden;\n}\n\n #ijs .overflow-x-auto {\n overflow-x: auto;\n}\n\n #ijs .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n #ijs .whitespace-nowrap {\n white-space: nowrap;\n}\n\n #ijs .rounded-interactive {\n border-radius: var(--i-radius-interactive);\n}\n\n #ijs .rounded-job-card {\n border-radius: var(--i-radius-job-card);\n}\n\n #ijs .rounded-job-tag {\n border-radius: var(--i-radius-job-tag);\n}\n\n #ijs .rounded-section {\n border-radius: var(--i-radius-section);\n}\n\n #ijs .rounded-tag {\n border-radius: var(--i-radius-job-tag);\n}\n\n #ijs .border {\n border-width: 1px;\n}\n\n #ijs .bg-\\[currentColor\\] {\n background-color: currentColor;\n}\n\n #ijs .bg-app {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-app-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-job-card-bg {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-job-card-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-section-strong-bg {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-section-strong-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-section-weak-bg {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-section-weak-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-tag-accent-strong-bg {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-tag-accent-strong-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-tag-monetary-weak-bg {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-tag-monetary-weak-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-tag-neutral-strong-bg {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-tag-neutral-strong-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-tag-neutral-weak-bg {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-tag-neutral-weak-bg) / var(--tw-bg-opacity));\n}\n\n #ijs .p-1 {\n padding: 0.25rem;\n}\n\n #ijs .p-2 {\n padding: 0.5rem;\n}\n\n #ijs .p-4 {\n padding: 1rem;\n}\n\n #ijs .px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n\n #ijs .px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n #ijs .px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n #ijs .px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n\n #ijs .py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n\n #ijs .py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n #ijs .py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n\n #ijs .py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n\n #ijs .pb-1 {\n padding-bottom: 0.25rem;\n}\n\n #ijs .pb-4 {\n padding-bottom: 1rem;\n}\n\n #ijs .pl-3 {\n padding-left: 0.75rem;\n}\n\n #ijs .pr-1 {\n padding-right: 0.25rem;\n}\n\n #ijs .pt-2 {\n padding-top: 0.5rem;\n}\n\n #ijs .text-center {\n text-align: center;\n}\n\n #ijs .text-justify {\n text-align: justify;\n}\n\n #ijs .font-family-filter {\n font-family: var(--i-font-filter);\n}\n\n #ijs .font-family-tag {\n font-family: var(--i-font-tag);\n}\n\n #ijs .text-style-filter {\n font-size: 1rem;\n line-height: 1.5rem;\n letter-spacing: -0.01em;\n}\n\n #ijs .text-style-job-card {\n font-size: 0.875rem;\n line-height: 1.125rem;\n}\n\n #ijs .text-style-job-card-info {\n font-size: 0.75rem;\n line-height: 1.125rem;\n}\n\n #ijs .text-style-job-card-title {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n #ijs .text-style-tag {\n font-size: 0.875rem;\n line-height: 1.5rem;\n}\n\n #ijs .font-weight-filter {\n font-weight: var(--i-weight-filter);\n}\n\n #ijs .font-weight-tag {\n font-weight: var(--i-weight-tag);\n}\n\n #ijs .uppercase {\n text-transform: uppercase;\n}\n\n #ijs .lowercase {\n text-transform: lowercase;\n}\n\n #ijs .capitalize {\n text-transform: capitalize;\n}\n\n #ijs .italic {\n font-style: italic;\n}\n\n #ijs .ordinal {\n --tw-ordinal: ordinal;\n font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);\n}\n\n #ijs .text-copy-accent {\n --tw-text-opacity: 1;\n color: oklch(var(--i-copy-accent) / var(--tw-text-opacity));\n}\n\n #ijs .text-copy-accent-icon {\n --tw-text-opacity: 1;\n color: oklch(var(--i-copy-accent-icon) / var(--tw-text-opacity));\n}\n\n #ijs .text-copy-accent-lowcontrast {\n color: oklch(var(--i-copy-accent-lowcontrast) / 0.67);\n}\n\n #ijs .text-copy-job-info {\n --tw-text-opacity: 1;\n color: oklch(var(--i-copy-info) / var(--tw-text-opacity));\n}\n\n #ijs .text-copy-neutral {\n --tw-text-opacity: 1;\n color: oklch(var(--i-copy) / var(--tw-text-opacity));\n}\n\n #ijs .text-copy-neutral-icon {\n --tw-text-opacity: 1;\n color: oklch(var(--i-copy-icon) / var(--tw-text-opacity));\n}\n\n #ijs .text-copy-neutral-lowcontrast {\n --tw-text-opacity: 1;\n color: oklch(var(--i-copy-lowcontrast) / var(--tw-text-opacity));\n}\n\n #ijs .text-interactive-accent-text {\n --tw-text-opacity: 1;\n color: oklch(var(--i-interactive-accent-text) / var(--tw-text-opacity));\n}\n\n #ijs .text-interactive-neutral-text {\n --tw-text-opacity: 1;\n color: oklch(var(--i-interactive-neutral-text) / var(--tw-text-opacity));\n}\n\n #ijs .text-tag-accent-strong-copy {\n --tw-text-opacity: 1;\n color: oklch(var(--i-tag-accent-strong-copy) / var(--tw-text-opacity));\n}\n\n #ijs .text-tag-monetary-weak-copy {\n --tw-text-opacity: 1;\n color: oklch(var(--i-tag-monetary-weak-copy) / var(--tw-text-opacity));\n}\n\n #ijs .text-tag-neutral-strong-copy {\n --tw-text-opacity: 1;\n color: oklch(var(--i-tag-neutral-strong-copy) / var(--tw-text-opacity));\n}\n\n #ijs .text-tag-neutral-weak-copy {\n --tw-text-opacity: 1;\n color: oklch(var(--i-tag-neutral-weak-copy) / var(--tw-text-opacity));\n}\n\n #ijs .opacity-25 {\n opacity: 0.25;\n}\n\n #ijs .shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n #ijs .outline {\n outline-style: solid;\n}\n\n #ijs .ring-px {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #ijs .ring-width-job-card {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(var(--i-job-card-stroke-width) + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #ijs .ring-width-section {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(var(--i-section-stroke-width) + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #ijs .ring-job-card-stroke {\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-job-card-stroke-color) / var(--tw-ring-opacity));\n}\n\n #ijs .ring-section-strong-stroke {\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-section-strong-stroke-color) / var(--tw-ring-opacity));\n}\n\n #ijs .ring-section-weak-stroke {\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-section-weak-stroke-color) / var(--tw-ring-opacity));\n}\n\n #ijs .ring-tag-accent-strong-stroke {\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-tag-accent-strong-stroke-color) / var(--tw-ring-opacity));\n}\n\n #ijs .ring-tag-neutral-strong-stroke {\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-tag-neutral-strong-stroke-color) / var(--tw-ring-opacity));\n}\n\n #ijs .ring-tag-neutral-weak-stroke {\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-tag-neutral-weak-stroke-color) / var(--tw-ring-opacity));\n}\n\n #ijs .blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #ijs .grayscale {\n --tw-grayscale: grayscale(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #ijs .invert {\n --tw-invert: invert(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #ijs .sepia {\n --tw-sepia: sepia(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #ijs .filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #ijs .backdrop-filter {\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n #ijs .transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n #ijs .transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n #ijs .duration-1000 {\n transition-duration: 1000ms;\n}\n\n #ijs .duration-300 {\n transition-duration: 300ms;\n}\n\n #ijs .duration-500 {\n transition-duration: 500ms;\n}\n\n #ijs .ease-expo-out {\n transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n #ijs .font-style-filter {\n font-style: var(--i-style-filter);\n}\n\n #ijs .font-style-tag {\n font-style: var(--i-style-filter);\n}\n\n #ijs .fr {\n outline: none;\n}\n\n #ijs .fr:focus {\n outline: none;\n}\n\n #ijs .fr:focus-visible {\n outline: none;\n --tw-ring-offset-width: 1px;\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-a-7) / 1);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #ijs .hide-scrollbars::-webkit-scrollbar {\n display: none;\n}\n\n #ijs .hide-scrollbars {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n #ijs .touch-hitbox::before {\n content: '';\n position: absolute;\n display: block;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n height: 100%;\n min-height: 44px;\n min-width: 44px;\n z-index: 9999;\n}\n\n #ijs .\\[a-zA-Z0-9-_\\:\\.\\$\\@\\?\\] {\n a-z-a--z0-9-_: .$@?;\n}\n\n #ijs .hover\\:bg-interactive-accent-bg-hover:hover {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-interactive-accent-bg-hover) / var(--tw-bg-opacity));\n}\n\n #ijs .hover\\:bg-interactive-neutral-bg-hover:hover {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-interactive-neutral-bg-hover) / var(--tw-bg-opacity));\n}\n\n #ijs .focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n #ijs .active\\:scale-95:active {\n --tw-scale-x: .95;\n --tw-scale-y: .95;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n #ijs .active\\:bg-job-card-bg-active:active {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-job-card-bg-active) / var(--tw-bg-opacity));\n}\n\n #ijs .active\\:ring-job-card-stroke-active:active {\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-job-card-stroke-color-active) / var(--tw-ring-opacity));\n}\n\n @media (min-width: 768px) {\n\n #ijs .md\\:col-span-2 {\n grid-column: span 2 / span 2;\n }\n}\n\n @media (min-width: 768px) {\n\n #ijs .md\\:flex {\n display: flex;\n }\n}\n\n @media (min-width: 768px) {\n\n #ijs .md\\:grid {\n display: grid;\n }\n}\n\n @media (min-width: 768px) {\n\n #ijs .md\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n}\n\n @media (min-width: 768px) {\n\n #ijs .md\\:flex-col {\n flex-direction: column;\n }\n}\n\n @media (min-width: 768px) {\n\n #ijs .md\\:px-0 {\n padding-left: 0px;\n padding-right: 0px;\n }\n}\n\n @media (min-width: 768px) {\n\n #ijs .md\\:px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n}\n\n @media (min-width: 1024px) {\n\n #ijs .lg\\:ring-width-section {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(var(--i-section-stroke-width) + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n }\n}\n";
3450
3665
  const match = (m2) => {
3451
3666
  const patterns = [];
3452
3667
  const i2 = (m22) => ({
@@ -6843,17 +7058,9 @@ const generateColorThemeCss = (theme) => {
6843
7058
  ${colorsCss.concat(tokenCss).join("\n")}
6844
7059
  }`;
6845
7060
  };
7061
+ const FILTER_KEYS = ["company_id", "company_name", "industry", "employment_type", "location_type", "pay_type", "pay_currency", "pay_mask", "pay", "pay_min", "pay_max", "title", "category", "skills", "address_1", "address_2", "town", "city", "postcode", "country", "contract_type", "pay_display"];
6846
7062
  const createJobSearchDomManager = () => {
6847
7063
  return {
6848
- addStyle: (css, id) => {
6849
- const head = document.head;
6850
- const existing = head.querySelector(`style#${id}`);
6851
- existing == null ? void 0 : existing.remove();
6852
- const element = document.createElement("style");
6853
- element.id = id;
6854
- element.innerHTML = css;
6855
- head.appendChild(element);
6856
- },
6857
7064
  getRenderTargetElement: () => {
6858
7065
  const element = document.body.querySelector(`#${JOB_SEARCH_ELEMENT_ID}`);
6859
7066
  invariant(element, `Element with id ${JOB_SEARCH_ELEMENT_ID} not found.`);
@@ -6872,7 +7079,9 @@ const jobSearchPlugin = (params) => createPlugin(({
6872
7079
  }, tailwind), y$2("style", {
6873
7080
  id: "inploi-job-search-theme"
6874
7081
  }, generateColorThemeCss(params.theme))];
6875
- const App = y$2(g$3, {}, [styleElements, y$2(JobSearch, {
7082
+ const App = y$2(ErrorBoundary, {
7083
+ Fallback
7084
+ }, [styleElements, y$2(JobSearch, {
6876
7085
  params,
6877
7086
  apiClient,
6878
7087
  logger,
@@ -6883,7 +7092,7 @@ const jobSearchPlugin = (params) => createPlugin(({
6883
7092
  * Useful when server-side rendering to avoid CLS.
6884
7093
  */
6885
7094
  renderToString: () => {
6886
- return b$1(App);
7095
+ return b$1(y$2(g$3, {}, App));
6887
7096
  },
6888
7097
  /** Renders the Job Search Plugin inside the container element. */
6889
7098
  render: async () => {
@@ -6893,6 +7102,7 @@ const jobSearchPlugin = (params) => createPlugin(({
6893
7102
  };
6894
7103
  });
6895
7104
  export {
7105
+ FILTER_KEYS,
6896
7106
  createJobSearchDomManager,
6897
7107
  jobSearchPlugin
6898
7108
  };