@inploi/plugin-job-search 0.1.4 → 0.2.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.
@@ -514,6 +514,126 @@ function C$1(t2, l2, c2, p2, u2) {
514
514
  return B2 || ("string" == typeof H2 ? B2 = s$1(H2) : null != H2 && false !== H2 && true !== H2 && (B2 = C$1(H2, l2, "svg" === E2 || "foreignObject" !== E2 && c2, p2, t2))), d$1 && d$1(t2), t2.__ = void 0, m$1 && m$1(t2), !B2 && S.has(E2) ? q2 + "/>" : q2 + ">" + B2 + "</" + E2 + ">";
515
515
  }
516
516
  var S = /* @__PURE__ */ new Set(["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]);
517
+ function r$1(e2) {
518
+ var t2, f2, n2 = "";
519
+ if ("string" == typeof e2 || "number" == typeof e2)
520
+ n2 += e2;
521
+ else if ("object" == typeof e2)
522
+ if (Array.isArray(e2))
523
+ for (t2 = 0; t2 < e2.length; t2++)
524
+ e2[t2] && (f2 = r$1(e2[t2])) && (n2 && (n2 += " "), n2 += f2);
525
+ else
526
+ for (t2 in e2)
527
+ e2[t2] && (n2 && (n2 += " "), n2 += t2);
528
+ return n2;
529
+ }
530
+ function clsx() {
531
+ for (var e2, t2, f2 = 0, n2 = ""; f2 < arguments.length; )
532
+ (e2 = arguments[f2++]) && (t2 = r$1(e2)) && (n2 && (n2 += " "), n2 += t2);
533
+ return n2;
534
+ }
535
+ const falsyToString = (value) => typeof value === "boolean" ? "".concat(value) : value === 0 ? "0" : value;
536
+ const defineConfig = (options) => {
537
+ const cx1 = function() {
538
+ for (var _len = arguments.length, inputs = new Array(_len), _key = 0; _key < _len; _key++) {
539
+ inputs[_key] = arguments[_key];
540
+ }
541
+ var ref, ref1;
542
+ if (typeof (options === null || options === void 0 ? void 0 : (ref = options.hooks) === null || ref === void 0 ? void 0 : ref["cx:done"]) !== "undefined")
543
+ return options === null || options === void 0 ? void 0 : options.hooks["cx:done"](clsx(inputs));
544
+ if (typeof (options === null || options === void 0 ? void 0 : (ref1 = options.hooks) === null || ref1 === void 0 ? void 0 : ref1.onComplete) !== "undefined")
545
+ return options === null || options === void 0 ? void 0 : options.hooks.onComplete(clsx(inputs));
546
+ return clsx(inputs);
547
+ };
548
+ const cva1 = (config) => {
549
+ return (props) => {
550
+ var ref;
551
+ if ((config === null || config === void 0 ? void 0 : config.variants) == null)
552
+ return cx1(config === null || config === void 0 ? void 0 : config.base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
553
+ const { variants, defaultVariants } = config;
554
+ const getVariantClassNames = Object.keys(variants).map((variant) => {
555
+ const variantProp = props === null || props === void 0 ? void 0 : props[variant];
556
+ const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];
557
+ const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);
558
+ return variants[variant][variantKey];
559
+ });
560
+ const defaultsAndProps = { ...defaultVariants, ...props && Object.entries(props).reduce((acc, param) => {
561
+ let [key, value] = param;
562
+ return typeof value === "undefined" ? acc : { ...acc, [key]: value };
563
+ }, {}) };
564
+ const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (ref = config.compoundVariants) === null || ref === void 0 ? void 0 : ref.reduce((acc, param1) => {
565
+ let { class: cvClass, className: cvClassName, ...cvConfig } = param1;
566
+ return Object.entries(cvConfig).every((param) => {
567
+ let [cvKey, cvSelector] = param;
568
+ const selector = defaultsAndProps[cvKey];
569
+ return Array.isArray(cvSelector) ? cvSelector.includes(selector) : selector === cvSelector;
570
+ }) ? [...acc, cvClass, cvClassName] : acc;
571
+ }, []);
572
+ return cx1(config === null || config === void 0 ? void 0 : config.base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
573
+ };
574
+ };
575
+ const compose1 = function() {
576
+ for (var _len = arguments.length, components = new Array(_len), _key = 0; _key < _len; _key++) {
577
+ components[_key] = arguments[_key];
578
+ }
579
+ return (props) => {
580
+ const propsWithoutClass = Object.fromEntries(Object.entries(props || {}).filter((param) => {
581
+ let [key] = param;
582
+ return !["class", "className"].includes(key);
583
+ }));
584
+ return cx1(components.map((component) => component(propsWithoutClass)), props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
585
+ };
586
+ };
587
+ return { compose: compose1, cva: cva1, cx: cx1 };
588
+ };
589
+ const { compose, cva, cx } = defineConfig();
590
+ const btnClass = cva({
591
+ base: "fr animate-selected-tag justify-center touch-hitbox text-style-filter ease-expo-out rounded-interactive relative flex cursor-pointer items-center py-1 transition-all duration-snappy active:scale-95",
592
+ variants: {
593
+ variant: {
594
+ neutral: "bg-interactive-neutral-bg pointer-fine:hover:bg-interactive-neutral-bg-hover text-interactive-neutral-text",
595
+ accent: "bg-interactive-accent-bg pointer-fine:hover:bg-interactive-accent-bg-hover text-interactive-accent-text"
596
+ },
597
+ icon: {
598
+ none: "",
599
+ right: "",
600
+ left: ""
601
+ },
602
+ size: {
603
+ sm: "py-1",
604
+ lg: "py-2"
605
+ }
606
+ },
607
+ compoundVariants: [
608
+ {
609
+ size: "sm",
610
+ icon: "right",
611
+ class: "pl-3 pr-1"
612
+ },
613
+ {
614
+ size: "sm",
615
+ icon: "left",
616
+ class: "pl-1 pr-3"
617
+ },
618
+ {
619
+ size: "sm",
620
+ icon: "none",
621
+ class: "px-3"
622
+ },
623
+ {
624
+ size: "lg",
625
+ icon: "right",
626
+ class: "pl-5 pr-3"
627
+ }
628
+ // { size: 'lg', icon: 'left', class: 'pl-3 pr-5' },
629
+ // { size: 'lg', icon: 'none', class: 'px-5' },
630
+ ],
631
+ defaultVariants: {
632
+ variant: "neutral",
633
+ icon: "none",
634
+ size: "sm"
635
+ }
636
+ });
517
637
  var f$1 = 0;
518
638
  function u$1(e2, t2, n2, o2, i2, u2) {
519
639
  var a2, c2, p2 = {};
@@ -525,7 +645,7 @@ function u$1(e2, t2, n2, o2, i2, u2) {
525
645
  void 0 === p2[c2] && (p2[c2] = a2[c2]);
526
646
  return l$2.vnode && l$2.vnode(l2), l2;
527
647
  }
528
- const Fallback = ({
648
+ const UnstyledErrorView = ({
529
649
  error,
530
650
  resetError
531
651
  }) => {
@@ -556,6 +676,26 @@ const Fallback = ({
556
676
  })]
557
677
  });
558
678
  };
679
+ const ErrorView = ({
680
+ error,
681
+ resetError
682
+ }) => {
683
+ return u$1("div", {
684
+ class: "bg-section-strong-bg ring-section-weak-stroke rounded-section ring-px lg:ring-width-section flex flex-col gap-4 p-4",
685
+ children: [u$1("p", {
686
+ class: "text-neutral-11",
687
+ children: ["An error occured: ", error.message]
688
+ }), u$1("button", {
689
+ class: btnClass({
690
+ variant: "neutral",
691
+ size: "lg",
692
+ class: "border-px flex flex-none flex-nowrap justify-center truncate border-transparent"
693
+ }),
694
+ onClick: resetError,
695
+ children: "Retry"
696
+ })]
697
+ });
698
+ };
559
699
  class ErrorBoundary extends b$2 {
560
700
  constructor() {
561
701
  super(...arguments);
@@ -576,9 +716,9 @@ class ErrorBoundary extends b$2 {
576
716
  render() {
577
717
  if (this.state.error) {
578
718
  const {
579
- Fallback: Fallback2
719
+ Fallback
580
720
  } = this.props;
581
- return u$1(Fallback2, {
721
+ return u$1(Fallback, {
582
722
  error: this.state.error,
583
723
  resetError: () => {
584
724
  this.setState({
@@ -753,10 +893,10 @@ const Icon = ({
753
893
  })
754
894
  });
755
895
  };
756
- var t, r$1, u, i, o = 0, f = [], c = [], e = l$2.__b, a = l$2.__r, v = l$2.diffed, l = l$2.__c, m = l$2.unmount;
896
+ var t, r, u, i, o = 0, f = [], c = [], e = l$2.__b, a = l$2.__r, v = l$2.diffed, l = l$2.__c, m = l$2.unmount;
757
897
  function d(t2, u2) {
758
- l$2.__h && l$2.__h(r$1, t2, o || u2), o = 0;
759
- var i2 = r$1.__H || (r$1.__H = { __: [], __h: [] });
898
+ l$2.__h && l$2.__h(r, t2, o || u2), o = 0;
899
+ var i2 = r.__H || (r.__H = { __: [], __h: [] });
760
900
  return t2 >= i2.__.length && i2.__.push({ __V: c }), i2.__[t2];
761
901
  }
762
902
  function h(n2) {
@@ -767,7 +907,7 @@ function s(n2, u2, i2) {
767
907
  if (o2.t = n2, !o2.__c && (o2.__ = [i2 ? i2(u2) : B$1(void 0, u2), function(n3) {
768
908
  var t2 = o2.__N ? o2.__N[0] : o2.__[0], r2 = o2.t(t2, n3);
769
909
  t2 !== r2 && (o2.__N = [r2, o2.__[1]], o2.__c.setState({}));
770
- }], o2.__c = r$1, !r$1.u)) {
910
+ }], o2.__c = r, !r.u)) {
771
911
  var f2 = function(n3, t2, r2) {
772
912
  if (!o2.__c.__H)
773
913
  return true;
@@ -786,25 +926,25 @@ function s(n2, u2, i2) {
786
926
  }
787
927
  }), !(!i3 && o2.__c.props === n3) && (!c2 || c2.call(this, n3, t2, r2));
788
928
  };
789
- r$1.u = true;
790
- var c2 = r$1.shouldComponentUpdate, e2 = r$1.componentWillUpdate;
791
- r$1.componentWillUpdate = function(n3, t2, r2) {
929
+ r.u = true;
930
+ var c2 = r.shouldComponentUpdate, e2 = r.componentWillUpdate;
931
+ r.componentWillUpdate = function(n3, t2, r2) {
792
932
  if (this.__e) {
793
933
  var u3 = c2;
794
934
  c2 = void 0, f2(n3, t2, r2), c2 = u3;
795
935
  }
796
936
  e2 && e2.call(this, n3, t2, r2);
797
- }, r$1.shouldComponentUpdate = f2;
937
+ }, r.shouldComponentUpdate = f2;
798
938
  }
799
939
  return o2.__N || o2.__;
800
940
  }
801
941
  function p(u2, i2) {
802
942
  var o2 = d(t++, 3);
803
- !l$2.__s && z$1(o2.__H, i2) && (o2.__ = u2, o2.i = i2, r$1.__H.__h.push(o2));
943
+ !l$2.__s && z$1(o2.__H, i2) && (o2.__ = u2, o2.i = i2, r.__H.__h.push(o2));
804
944
  }
805
945
  function y(u2, i2) {
806
946
  var o2 = d(t++, 4);
807
- !l$2.__s && z$1(o2.__H, i2) && (o2.__ = u2, o2.i = i2, r$1.__h.push(o2));
947
+ !l$2.__s && z$1(o2.__H, i2) && (o2.__ = u2, o2.i = i2, r.__h.push(o2));
808
948
  }
809
949
  function _(n2) {
810
950
  return o = 5, F$1(function() {
@@ -830,15 +970,15 @@ function T$1(n2, t2) {
830
970
  }, t2);
831
971
  }
832
972
  function q$1(n2) {
833
- var u2 = r$1.context[n2.__c], i2 = d(t++, 9);
834
- return i2.c = n2, u2 ? (null == i2.__ && (i2.__ = true, u2.sub(r$1)), u2.props.value) : n2.__;
973
+ var u2 = r.context[n2.__c], i2 = d(t++, 9);
974
+ return i2.c = n2, u2 ? (null == i2.__ && (i2.__ = true, u2.sub(r)), u2.props.value) : n2.__;
835
975
  }
836
976
  function x$1(t2, r2) {
837
977
  l$2.useDebugValue && l$2.useDebugValue(r2 ? r2(t2) : t2);
838
978
  }
839
979
  function P$1(n2) {
840
980
  var u2 = d(t++, 10), i2 = h();
841
- return u2.__ = n2, r$1.componentDidCatch || (r$1.componentDidCatch = function(n3, t2) {
981
+ return u2.__ = n2, r.componentDidCatch || (r.componentDidCatch = function(n3, t2) {
842
982
  u2.__ && u2.__(n3, t2), i2[1](n3);
843
983
  }), [i2[0], function() {
844
984
  i2[1](void 0);
@@ -847,7 +987,7 @@ function P$1(n2) {
847
987
  function V$1() {
848
988
  var n2 = d(t++, 11);
849
989
  if (!n2.__) {
850
- for (var u2 = r$1.__v; null !== u2 && !u2.__m && null !== u2.__; )
990
+ for (var u2 = r.__v; null !== u2 && !u2.__m && null !== u2.__; )
851
991
  u2 = u2.__;
852
992
  var i2 = u2.__m || (u2.__m = [0, 0]);
853
993
  n2.__ = "P" + i2[0] + "-" + i2[1]++;
@@ -864,19 +1004,19 @@ function b() {
864
1004
  }
865
1005
  }
866
1006
  l$2.__b = function(n2) {
867
- r$1 = null, e && e(n2);
1007
+ r = null, e && e(n2);
868
1008
  }, l$2.__r = function(n2) {
869
1009
  a && a(n2), t = 0;
870
- var i2 = (r$1 = n2.__c).__H;
871
- i2 && (u === r$1 ? (i2.__h = [], r$1.__h = [], i2.__.forEach(function(n3) {
1010
+ var i2 = (r = n2.__c).__H;
1011
+ i2 && (u === r ? (i2.__h = [], r.__h = [], i2.__.forEach(function(n3) {
872
1012
  n3.__N && (n3.__ = n3.__N), n3.__V = c, n3.__N = n3.i = void 0;
873
- })) : (i2.__h.forEach(k$1), i2.__h.forEach(w$1), i2.__h = [], t = 0)), u = r$1;
1013
+ })) : (i2.__h.forEach(k$1), i2.__h.forEach(w$1), i2.__h = [], t = 0)), u = r;
874
1014
  }, l$2.diffed = function(t2) {
875
1015
  v && v(t2);
876
1016
  var o2 = t2.__c;
877
1017
  o2 && o2.__H && (o2.__H.__h.length && (1 !== f.push(o2) && i === l$2.requestAnimationFrame || ((i = l$2.requestAnimationFrame) || j$1)(b)), o2.__H.__.forEach(function(n2) {
878
1018
  n2.i && (n2.__H = n2.i), n2.__V !== c && (n2.__ = n2.__V), n2.i = void 0, n2.__V = c;
879
- })), u = r$1 = null;
1019
+ })), u = r = null;
880
1020
  }, l$2.__c = function(t2, r2) {
881
1021
  r2.some(function(t3) {
882
1022
  try {
@@ -908,12 +1048,12 @@ function j$1(n2) {
908
1048
  g$1 && (t2 = requestAnimationFrame(r2));
909
1049
  }
910
1050
  function k$1(n2) {
911
- var t2 = r$1, u2 = n2.__c;
912
- "function" == typeof u2 && (n2.__c = void 0, u2()), r$1 = t2;
1051
+ var t2 = r, u2 = n2.__c;
1052
+ "function" == typeof u2 && (n2.__c = void 0, u2()), r = t2;
913
1053
  }
914
1054
  function w$1(n2) {
915
- var t2 = r$1;
916
- n2.__c = n2.__(), r$1 = t2;
1055
+ var t2 = r;
1056
+ n2.__c = n2.__(), r = t2;
917
1057
  }
918
1058
  function z$1(n2, t2) {
919
1059
  return !n2 || n2.length !== t2.length || t2.some(function(t3, r2) {
@@ -926,6 +1066,13 @@ function B$1(n2, t2) {
926
1066
  const JOB_SEARCH_ELEMENT_ID = "inploi-job-search";
927
1067
  const JOB_SEARCH_SCOPE_ELEMENT_ID = "ijs";
928
1068
  const PAGE_SIZE = 10;
1069
+ const cacheKey = (value) => {
1070
+ const filterString = Object.entries(value.filter).sort(([key1], [key2]) => key1.localeCompare(key2)).map(([key, value2]) => {
1071
+ var _a;
1072
+ return (value2 == null ? void 0 : value2.select) === "many" ? `${key}=${(_a = value2.value) == null ? void 0 : _a.sort().join("|")}` : `${key}=${value2 == null ? void 0 : value2.value}`;
1073
+ }).join("&");
1074
+ return `${value.baseKey}::${filterString}`;
1075
+ };
929
1076
  function g(n2, t2) {
930
1077
  for (var e2 in t2)
931
1078
  n2[e2] = t2[e2];
@@ -1965,16 +2112,6 @@ const subscribeCallback = (key, callbacks, callback) => {
1965
2112
  }
1966
2113
  };
1967
2114
  };
1968
- const withMiddleware = (useSWR2, middleware2) => {
1969
- return (...args) => {
1970
- const [key, fn2, config] = normalize(args);
1971
- const uses = (config.use || []).concat(middleware2);
1972
- return useSWR2(key, fn2, {
1973
- ...config,
1974
- use: uses
1975
- });
1976
- };
1977
- };
1978
2115
  setupDevTools();
1979
2116
  const use = wn.use || ((promise) => {
1980
2117
  if (promise.status === "pending") {
@@ -2693,6 +2830,24 @@ function object(entries, arg2, arg3, arg4) {
2693
2830
  }
2694
2831
  };
2695
2832
  }
2833
+ function optional(wrapped, default_) {
2834
+ return {
2835
+ type: "optional",
2836
+ async: false,
2837
+ wrapped,
2838
+ default: default_,
2839
+ _parse(input, info) {
2840
+ if (input === void 0) {
2841
+ const override = getDefault(this);
2842
+ if (override === void 0) {
2843
+ return getOutput(input);
2844
+ }
2845
+ input = override;
2846
+ }
2847
+ return this.wrapped._parse(input, info);
2848
+ }
2849
+ };
2850
+ }
2696
2851
  function string(arg1, arg2) {
2697
2852
  const [message = "Invalid type", pipe] = getDefaultArgs(arg1, arg2);
2698
2853
  return {
@@ -2873,10 +3028,10 @@ const getRelativeTimeDifference = ({
2873
3028
  return diffIn.months < 0 ? "a long time ago" : "in a long time";
2874
3029
  };
2875
3030
  const SEVEN_DAYS_MS = 1e3 * 60 * 60 * 24 * 7;
2876
- const AvailablePropertiesSchema = record(transform(array(coerce(string(), String)), (schema) => schema.map((s2) => ({
2877
- value: s2,
2878
- label: s2
2879
- }))));
3031
+ const AvailablePropertiesSchema = record(array(object({
3032
+ label: coerce(string(), String),
3033
+ value: coerce(string(), String)
3034
+ })));
2880
3035
  const PaginationSchema = object({
2881
3036
  total: number(),
2882
3037
  current_page: number(),
@@ -2893,7 +3048,7 @@ const payPeriods = {
2893
3048
  const JobPayloadSchema = object({
2894
3049
  id: number(),
2895
3050
  company_name: string(),
2896
- employment_type: union([literal("FULL_TIME"), literal("PART_TIME"), literal("TEMPORARY"), literal("CONTRACTOR"), literal("INTERN"), literal("VOLUNTEER"), literal("OTHER")]),
3051
+ employment_type: string(),
2897
3052
  location_type: union([literal("LOCATION"), literal("REMOTE"), literal("HYBRID")]),
2898
3053
  pay_type: union([literal("ANNUALLY"), literal("HOURLY"), literal("MONTHLY"), literal("WEEKLY"), literal("DAILY")]),
2899
3054
  pay_currency: string(),
@@ -2909,15 +3064,17 @@ const JobPayloadSchema = object({
2909
3064
  pay_max: nullable(string()),
2910
3065
  description: string(),
2911
3066
  title: string(),
2912
- coordinates: object({
2913
- lat: number(),
2914
- lng: number()
2915
- }),
2916
3067
  // E.g.: Any varchar, e.g.: "Permanent contract"
2917
3068
  contract_type: nullable(string()),
2918
3069
  created_at: nullable(string()),
2919
3070
  custom_data: nullable(record(any())),
2920
- href: string()
3071
+ href: string(),
3072
+ industry: optional(string()),
3073
+ category: optional(string()),
3074
+ skills: optional(string()),
3075
+ town: optional(string()),
3076
+ city: optional(string()),
3077
+ country: optional(string())
2921
3078
  });
2922
3079
  const JobSchema = transform(JobPayloadSchema, (schema) => {
2923
3080
  const isNew = schema.created_at ? new Date(schema.created_at).getTime() > Date.now() - SEVEN_DAYS_MS : false;
@@ -2941,6 +3098,7 @@ const JobSchema = transform(JobPayloadSchema, (schema) => {
2941
3098
  throw new Error("Invalid pay data");
2942
3099
  })();
2943
3100
  return {
3101
+ raw: schema,
2944
3102
  id: schema.id,
2945
3103
  isNew,
2946
3104
  company: {
@@ -2951,7 +3109,6 @@ const JobSchema = transform(JobPayloadSchema, (schema) => {
2951
3109
  pay,
2952
3110
  description: schema.description,
2953
3111
  title: schema.title,
2954
- coordinates: schema.coordinates,
2955
3112
  contractType: schema.contract_type,
2956
3113
  href: schema.href,
2957
3114
  relativePostedDate: schema.created_at ? getRelativeTimeDifference({
@@ -3048,80 +3205,6 @@ const SWR_SETTINGS = {
3048
3205
  revalidateIfStale: false,
3049
3206
  revalidateFirstPage: false
3050
3207
  };
3051
- const cacheKey = (value) => JSON.stringify(value);
3052
- function r(e2) {
3053
- var t2, f2, n2 = "";
3054
- if ("string" == typeof e2 || "number" == typeof e2)
3055
- n2 += e2;
3056
- else if ("object" == typeof e2)
3057
- if (Array.isArray(e2))
3058
- for (t2 = 0; t2 < e2.length; t2++)
3059
- e2[t2] && (f2 = r(e2[t2])) && (n2 && (n2 += " "), n2 += f2);
3060
- else
3061
- for (t2 in e2)
3062
- e2[t2] && (n2 && (n2 += " "), n2 += t2);
3063
- return n2;
3064
- }
3065
- function clsx() {
3066
- for (var e2, t2, f2 = 0, n2 = ""; f2 < arguments.length; )
3067
- (e2 = arguments[f2++]) && (t2 = r(e2)) && (n2 && (n2 += " "), n2 += t2);
3068
- return n2;
3069
- }
3070
- const falsyToString = (value) => typeof value === "boolean" ? "".concat(value) : value === 0 ? "0" : value;
3071
- const defineConfig = (options) => {
3072
- const cx1 = function() {
3073
- for (var _len = arguments.length, inputs = new Array(_len), _key = 0; _key < _len; _key++) {
3074
- inputs[_key] = arguments[_key];
3075
- }
3076
- var ref, ref1;
3077
- if (typeof (options === null || options === void 0 ? void 0 : (ref = options.hooks) === null || ref === void 0 ? void 0 : ref["cx:done"]) !== "undefined")
3078
- return options === null || options === void 0 ? void 0 : options.hooks["cx:done"](clsx(inputs));
3079
- if (typeof (options === null || options === void 0 ? void 0 : (ref1 = options.hooks) === null || ref1 === void 0 ? void 0 : ref1.onComplete) !== "undefined")
3080
- return options === null || options === void 0 ? void 0 : options.hooks.onComplete(clsx(inputs));
3081
- return clsx(inputs);
3082
- };
3083
- const cva1 = (config) => {
3084
- return (props) => {
3085
- var ref;
3086
- if ((config === null || config === void 0 ? void 0 : config.variants) == null)
3087
- return cx1(config === null || config === void 0 ? void 0 : config.base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
3088
- const { variants, defaultVariants } = config;
3089
- const getVariantClassNames = Object.keys(variants).map((variant) => {
3090
- const variantProp = props === null || props === void 0 ? void 0 : props[variant];
3091
- const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];
3092
- const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);
3093
- return variants[variant][variantKey];
3094
- });
3095
- const defaultsAndProps = { ...defaultVariants, ...props && Object.entries(props).reduce((acc, param) => {
3096
- let [key, value] = param;
3097
- return typeof value === "undefined" ? acc : { ...acc, [key]: value };
3098
- }, {}) };
3099
- const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (ref = config.compoundVariants) === null || ref === void 0 ? void 0 : ref.reduce((acc, param1) => {
3100
- let { class: cvClass, className: cvClassName, ...cvConfig } = param1;
3101
- return Object.entries(cvConfig).every((param) => {
3102
- let [cvKey, cvSelector] = param;
3103
- const selector = defaultsAndProps[cvKey];
3104
- return Array.isArray(cvSelector) ? cvSelector.includes(selector) : selector === cvSelector;
3105
- }) ? [...acc, cvClass, cvClassName] : acc;
3106
- }, []);
3107
- return cx1(config === null || config === void 0 ? void 0 : config.base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
3108
- };
3109
- };
3110
- const compose1 = function() {
3111
- for (var _len = arguments.length, components = new Array(_len), _key = 0; _key < _len; _key++) {
3112
- components[_key] = arguments[_key];
3113
- }
3114
- return (props) => {
3115
- const propsWithoutClass = Object.fromEntries(Object.entries(props || {}).filter((param) => {
3116
- let [key] = param;
3117
- return !["class", "className"].includes(key);
3118
- }));
3119
- return cx1(components.map((component) => component(propsWithoutClass)), props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
3120
- };
3121
- };
3122
- return { compose: compose1, cva: cva1, cx: cx1 };
3123
- };
3124
- const { compose, cva, cx } = defineConfig();
3125
3208
  const tagClass = cva({
3126
3209
  base: "truncate max-w-full block fr font-style-tag font-family-tag font-weight-tag text-style-tag",
3127
3210
  variants: {
@@ -3168,8 +3251,7 @@ const CurrentValueTag = ({
3168
3251
  return null;
3169
3252
  case "loaded":
3170
3253
  case "revalidating": {
3171
- const suggestions = query.data[property.key];
3172
- invariant(suggestions, `API error: no available properties for key “${property.key}”`);
3254
+ const suggestions = query.data[property.key] ?? [];
3173
3255
  const selectedSuggestions = suggestions.filter((s2) => selectedValues.includes(s2.value));
3174
3256
  switch (selectedSuggestions.length) {
3175
3257
  case 0:
@@ -3193,7 +3275,7 @@ const CurrentValueTag = ({
3193
3275
  size: "sm",
3194
3276
  variant: "accentStrong",
3195
3277
  interactive: true,
3196
- class: "truncate tabular-nums"
3278
+ class: "ijs-filter-current truncate tabular-nums"
3197
3279
  }),
3198
3280
  children: selectedSuggestions.length
3199
3281
  });
@@ -3203,53 +3285,6 @@ const CurrentValueTag = ({
3203
3285
  exhaustive(query);
3204
3286
  }
3205
3287
  };
3206
- const btnClass = cva({
3207
- base: "fr animate-selected-tag justify-center touch-hitbox text-style-filter ease-expo-out rounded-interactive relative flex cursor-pointer items-center py-1 transition-all duration-snappy active:scale-95",
3208
- variants: {
3209
- variant: {
3210
- neutral: "bg-interactive-neutral-bg pointer-fine:hover:bg-interactive-neutral-bg-hover text-interactive-neutral-text",
3211
- accent: "bg-interactive-accent-bg pointer-fine:hover:bg-interactive-accent-bg-hover text-interactive-accent-text"
3212
- },
3213
- icon: {
3214
- none: "",
3215
- right: "",
3216
- left: ""
3217
- },
3218
- size: {
3219
- sm: "py-1",
3220
- lg: "py-2"
3221
- }
3222
- },
3223
- compoundVariants: [
3224
- {
3225
- size: "sm",
3226
- icon: "right",
3227
- class: "pl-3 pr-1"
3228
- },
3229
- {
3230
- size: "sm",
3231
- icon: "left",
3232
- class: "pl-1 pr-3"
3233
- },
3234
- {
3235
- size: "sm",
3236
- icon: "none",
3237
- class: "px-3"
3238
- },
3239
- {
3240
- size: "lg",
3241
- icon: "right",
3242
- class: "pl-5 pr-3"
3243
- }
3244
- // { size: 'lg', icon: 'left', class: 'pl-3 pr-5' },
3245
- // { size: 'lg', icon: 'none', class: 'px-5' },
3246
- ],
3247
- defaultVariants: {
3248
- variant: "neutral",
3249
- icon: "none",
3250
- size: "sm"
3251
- }
3252
- });
3253
3288
  const SUGGESTION_COUNT = 8;
3254
3289
  const TAG_HEIGHT = 42;
3255
3290
  const GAP = 8;
@@ -3337,8 +3372,7 @@ const FilterContentActive = ({
3337
3372
  });
3338
3373
  case "revalidating":
3339
3374
  case "loaded": {
3340
- const allSuggestions = unfilteredQuery.data[property.key];
3341
- invariant(allSuggestions, `API error: no available properties for key “${property.key}”`);
3375
+ const allSuggestions = unfilteredQuery.data[property.key] ?? [];
3342
3376
  const filteredSuggestions = search && search.length > 1 ? allSuggestions.filter((s2) => s2.label.toLowerCase().includes(search.toLowerCase())) : allSuggestions;
3343
3377
  const suggestions = filteredSuggestions.map((s2) => ({
3344
3378
  ...s2,
@@ -3388,7 +3422,8 @@ const FilterContentActive = ({
3388
3422
  size: "lg",
3389
3423
  variant: active ? "accentStrong" : "neutralStrong",
3390
3424
  interactive: true,
3391
- disabled: suggestion.disabled
3425
+ disabled: suggestion.disabled,
3426
+ class: "ijs-filter-tag"
3392
3427
  }),
3393
3428
  children: suggestion.label
3394
3429
  })
@@ -3409,6 +3444,7 @@ const FilterContentActive = ({
3409
3444
  class: "font-style-tag font-family-tag font-weight-tag text-style-tag",
3410
3445
  children: "Show More"
3411
3446
  }), u$1(Icon, {
3447
+ "aria-hidden": true,
3412
3448
  name: "plus"
3413
3449
  })]
3414
3450
  })
@@ -3432,6 +3468,7 @@ const FilterContentActive = ({
3432
3468
  onValueChange(void 0);
3433
3469
  },
3434
3470
  children: [u$1(Icon, {
3471
+ "aria-hidden": true,
3435
3472
  name: "x"
3436
3473
  }), " Clear"]
3437
3474
  })
@@ -3470,7 +3507,7 @@ const filterIcons = {
3470
3507
  category: "briefcase"
3471
3508
  };
3472
3509
  const wrapperClass$1 = cva({
3473
- base: "group flex min-w-0 fr overflow-hidden rounded-section text-copy-neutral-lowcontrast ring-width-section transition-all duration-medium ease-expo-out fr-parent [&:has(.fr-child:active)]:scale-[0.975] origin-[50%_1.75rem]",
3510
+ base: "group ijs-filter flex min-w-0 fr overflow-hidden rounded-section text-copy-neutral-lowcontrast ring-width-section transition-all duration-medium ease-expo-out fr-parent [&:has(.fr-child:active)]:scale-[0.975] origin-[50%_1.75rem]",
3474
3511
  variants: {
3475
3512
  hasValue: {
3476
3513
  false: "bg-section-weak-bg ring-section-weak-stroke",
@@ -3543,10 +3580,11 @@ const Filter = ({
3543
3580
  "aria-label": active ? "Close filter" : "Open filter",
3544
3581
  class: headerClass({
3545
3582
  state: active ? "active" : hasValue ? "filled" : "default",
3546
- class: "rounded-section fr-child flex w-full cursor-pointer select-none items-center gap-2 py-4 pl-4"
3583
+ class: "ijs-filter-heading rounded-section fr-child flex w-full cursor-pointer select-none items-center gap-2 py-4 pl-4"
3547
3584
  }),
3548
3585
  onClick: () => onActiveChange(!active),
3549
3586
  children: [u$1(Icon, {
3587
+ "aria-hidden": true,
3550
3588
  class: "flex-none",
3551
3589
  name: icon
3552
3590
  }), u$1("p", {
@@ -3584,8 +3622,8 @@ const Filter = ({
3584
3622
  selectedValues
3585
3623
  })
3586
3624
  }), u$1(Icon, {
3587
- class: chevronClass(),
3588
3625
  "aria-hidden": true,
3626
+ class: chevronClass(),
3589
3627
  name: "chevron-right"
3590
3628
  })]
3591
3629
  })]
@@ -3666,7 +3704,10 @@ const FilterSection = ({
3666
3704
  const [activeKey, setActiveKey] = h((_a = properties[0]) == null ? void 0 : _a.key);
3667
3705
  useFilterKeyboardFocus(activeKey, parentRef);
3668
3706
  const defaultFilters = F$1(() => getFilterDefaults(properties), [properties]);
3669
- const unfilteredQuery = getQueryState(useSWR(cacheKey(defaultFilters), () => getAvailableFilters({
3707
+ const unfilteredQuery = getQueryState(useSWR(cacheKey({
3708
+ filter: defaultFilters,
3709
+ baseKey: "filters"
3710
+ }), () => getAvailableFilters({
3670
3711
  apiClient,
3671
3712
  logger,
3672
3713
  filters: defaultFilters
@@ -3678,7 +3719,10 @@ const FilterSection = ({
3678
3719
  ...appliedFilters,
3679
3720
  [keyToExclude]: defaultFilters[keyToExclude]
3680
3721
  };
3681
- return useSWR(cacheKey(filters), () => getAvailableFilters({
3722
+ return useSWR(cacheKey({
3723
+ filter: filters,
3724
+ baseKey: "filters"
3725
+ }), () => getAvailableFilters({
3682
3726
  apiClient,
3683
3727
  logger,
3684
3728
  filters
@@ -3687,7 +3731,7 @@ const FilterSection = ({
3687
3731
  return u$1("aside", {
3688
3732
  children: u$1("div", {
3689
3733
  role: "tablist",
3690
- class: "top-filters sticky flex flex-col gap-2 px-4 md:px-0",
3734
+ class: "top-filters ijs-filters-section sticky flex flex-col gap-2 px-4 md:px-0",
3691
3735
  children: properties.map((property) => {
3692
3736
  const active = activeKey === property.key;
3693
3737
  const value = appliedFilters[property.key] ?? {
@@ -3711,7 +3755,7 @@ const FilterSection = ({
3711
3755
  const onActiveChange = (active2) => setActiveKey(active2 ? property.key : void 0);
3712
3756
  const useQuery = makeQueryWithoutFilter(property.key);
3713
3757
  return u$1(ErrorBoundary, {
3714
- Fallback,
3758
+ Fallback: ErrorView,
3715
3759
  children: u$1(Filter, {
3716
3760
  unfilteredQuery,
3717
3761
  active,
@@ -3732,212 +3776,9 @@ const FilterSection = ({
3732
3776
  })
3733
3777
  });
3734
3778
  };
3735
- const getFirstPageKey = (getKey) => {
3736
- return serialize(getKey ? getKey(0, null) : null)[0];
3737
- };
3738
- const EMPTY_PROMISE = Promise.resolve();
3739
- const infinite = (useSWRNext) => (getKey, fn2, config) => {
3740
- const didMountRef = _(false);
3741
- const { cache: cache$1, initialSize = 1, revalidateAll = false, persistSize = false, revalidateFirstPage = true, revalidateOnMount = false, parallel = false } = config;
3742
- const [, , , PRELOAD] = SWRGlobalState.get(cache);
3743
- let infiniteKey;
3744
- try {
3745
- infiniteKey = getFirstPageKey(getKey);
3746
- if (infiniteKey)
3747
- infiniteKey = INFINITE_PREFIX + infiniteKey;
3748
- } catch (err) {
3749
- }
3750
- const [get, set, subscribeCache] = createCacheHelper(cache$1, infiniteKey);
3751
- const getSnapshot = T$1(() => {
3752
- const size = isUndefined(get()._l) ? initialSize : get()._l;
3753
- return size;
3754
- }, [
3755
- cache$1,
3756
- infiniteKey,
3757
- initialSize
3758
- ]);
3759
- shimExports.useSyncExternalStore(T$1(
3760
- (callback) => {
3761
- if (infiniteKey)
3762
- return subscribeCache(infiniteKey, () => {
3763
- callback();
3764
- });
3765
- return () => {
3766
- };
3767
- },
3768
- // eslint-disable-next-line react-hooks/exhaustive-deps
3769
- [
3770
- cache$1,
3771
- infiniteKey
3772
- ]
3773
- ), getSnapshot, getSnapshot);
3774
- const resolvePageSize = T$1(() => {
3775
- const cachedPageSize = get()._l;
3776
- return isUndefined(cachedPageSize) ? initialSize : cachedPageSize;
3777
- }, [
3778
- infiniteKey,
3779
- initialSize
3780
- ]);
3781
- const lastPageSizeRef = _(resolvePageSize());
3782
- useIsomorphicLayoutEffect(() => {
3783
- if (!didMountRef.current) {
3784
- didMountRef.current = true;
3785
- return;
3786
- }
3787
- if (infiniteKey) {
3788
- set({
3789
- _l: persistSize ? lastPageSizeRef.current : resolvePageSize()
3790
- });
3791
- }
3792
- }, [
3793
- infiniteKey,
3794
- cache$1
3795
- ]);
3796
- const shouldRevalidateOnMount = revalidateOnMount && !didMountRef.current;
3797
- const swr = useSWRNext(infiniteKey, async (key) => {
3798
- const forceRevalidateAll = get()._i;
3799
- const data = [];
3800
- const pageSize = resolvePageSize();
3801
- const [getCache] = createCacheHelper(cache$1, key);
3802
- const cacheData = getCache().data;
3803
- const revalidators = [];
3804
- let previousPageData = null;
3805
- for (let i2 = 0; i2 < pageSize; ++i2) {
3806
- const [pageKey, pageArg] = serialize(getKey(i2, parallel ? null : previousPageData));
3807
- if (!pageKey) {
3808
- break;
3809
- }
3810
- const [getSWRCache, setSWRCache] = createCacheHelper(cache$1, pageKey);
3811
- let pageData = getSWRCache().data;
3812
- const shouldFetchPage = revalidateAll || forceRevalidateAll || isUndefined(pageData) || revalidateFirstPage && !i2 && !isUndefined(cacheData) || shouldRevalidateOnMount || cacheData && !isUndefined(cacheData[i2]) && !config.compare(cacheData[i2], pageData);
3813
- if (fn2 && shouldFetchPage) {
3814
- const revalidate = async () => {
3815
- const hasPreloadedRequest = pageKey in PRELOAD;
3816
- if (!hasPreloadedRequest) {
3817
- pageData = await fn2(pageArg);
3818
- } else {
3819
- const req = PRELOAD[pageKey];
3820
- delete PRELOAD[pageKey];
3821
- pageData = await req;
3822
- }
3823
- setSWRCache({
3824
- data: pageData,
3825
- _k: pageArg
3826
- });
3827
- data[i2] = pageData;
3828
- };
3829
- if (parallel) {
3830
- revalidators.push(revalidate);
3831
- } else {
3832
- await revalidate();
3833
- }
3834
- } else {
3835
- data[i2] = pageData;
3836
- }
3837
- if (!parallel) {
3838
- previousPageData = pageData;
3839
- }
3840
- }
3841
- if (parallel) {
3842
- await Promise.all(revalidators.map((r2) => r2()));
3843
- }
3844
- set({
3845
- _i: UNDEFINED
3846
- });
3847
- return data;
3848
- }, config);
3849
- const mutate2 = T$1(
3850
- // eslint-disable-next-line func-names
3851
- function(data, opts) {
3852
- const options = typeof opts === "boolean" ? {
3853
- revalidate: opts
3854
- } : opts || {};
3855
- const shouldRevalidate = options.revalidate !== false;
3856
- if (!infiniteKey)
3857
- return EMPTY_PROMISE;
3858
- if (shouldRevalidate) {
3859
- if (!isUndefined(data)) {
3860
- set({
3861
- _i: false
3862
- });
3863
- } else {
3864
- set({
3865
- _i: true
3866
- });
3867
- }
3868
- }
3869
- return arguments.length ? swr.mutate(data, {
3870
- ...options,
3871
- revalidate: shouldRevalidate
3872
- }) : swr.mutate();
3873
- },
3874
- // swr.mutate is always the same reference
3875
- // eslint-disable-next-line react-hooks/exhaustive-deps
3876
- [
3877
- infiniteKey,
3878
- cache$1
3879
- ]
3880
- );
3881
- const setSize = T$1(
3882
- (arg) => {
3883
- if (!infiniteKey)
3884
- return EMPTY_PROMISE;
3885
- const [, changeSize] = createCacheHelper(cache$1, infiniteKey);
3886
- let size;
3887
- if (isFunction(arg)) {
3888
- size = arg(resolvePageSize());
3889
- } else if (typeof arg == "number") {
3890
- size = arg;
3891
- }
3892
- if (typeof size != "number")
3893
- return EMPTY_PROMISE;
3894
- changeSize({
3895
- _l: size
3896
- });
3897
- lastPageSizeRef.current = size;
3898
- const data = [];
3899
- const [getInfiniteCache] = createCacheHelper(cache$1, infiniteKey);
3900
- let previousPageData = null;
3901
- for (let i2 = 0; i2 < size; ++i2) {
3902
- const [pageKey] = serialize(getKey(i2, previousPageData));
3903
- const [getCache] = createCacheHelper(cache$1, pageKey);
3904
- const pageData = pageKey ? getCache().data : UNDEFINED;
3905
- if (isUndefined(pageData)) {
3906
- return mutate2(getInfiniteCache().data);
3907
- }
3908
- data.push(pageData);
3909
- previousPageData = pageData;
3910
- }
3911
- return mutate2(data);
3912
- },
3913
- // exclude getKey from the dependencies, which isn't allowed to change during the lifecycle
3914
- // eslint-disable-next-line react-hooks/exhaustive-deps
3915
- [
3916
- infiniteKey,
3917
- cache$1,
3918
- mutate2,
3919
- resolvePageSize
3920
- ]
3921
- );
3922
- return {
3923
- size: resolvePageSize(),
3924
- setSize,
3925
- mutate: mutate2,
3926
- get data() {
3927
- return swr.data;
3928
- },
3929
- get error() {
3930
- return swr.error;
3931
- },
3932
- get isValidating() {
3933
- return swr.isValidating;
3934
- },
3935
- get isLoading() {
3936
- return swr.isLoading;
3937
- }
3938
- };
3939
- };
3940
- const useSWRInfinite = withMiddleware(useSWR, infinite);
3779
+ function isKeyInObj(key, obj) {
3780
+ return key in obj;
3781
+ }
3941
3782
  const SkeletonText = ({
3942
3783
  chars
3943
3784
  }) => {
@@ -3945,18 +3786,51 @@ const SkeletonText = ({
3945
3786
  style: {
3946
3787
  width: chars + "ch"
3947
3788
  },
3948
- class: "rounded-job-tag block h-[1lh] bg-[currentColor] opacity-25"
3789
+ class: "rounded-job-tag block h-[1lh] min-h-[1em] bg-[currentColor] opacity-25"
3949
3790
  });
3950
3791
  };
3951
3792
  const wrapperClass = cva({
3952
- 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-medium"
3793
+ base: "ijs-job rounded-job-card bg-job-card-bg ring-width-job-card ring-job-card-stroke flex gap-4 fr ease-expo-out min-w-0 p-4 transition-all duration-medium",
3794
+ variants: {
3795
+ interactive: {
3796
+ true: "active:bg-job-card-bg-active active:ring-job-card-stroke-active",
3797
+ false: "animate-skeleton"
3798
+ }
3799
+ },
3800
+ defaultVariants: {
3801
+ interactive: true
3802
+ }
3953
3803
  });
3954
3804
  const badgeClass = cva({
3955
3805
  base: "bg-tag-accent-strong-bg rounded-job-tag text-style-tag text-tag-accent-strong-copy font-weight-tag flex items-center justify-center px-2"
3956
3806
  });
3807
+ const getDisplayableFilterProperty = ({
3808
+ job,
3809
+ property
3810
+ }) => {
3811
+ switch (typeof property) {
3812
+ case "string":
3813
+ if (isKeyInObj(property, job.raw))
3814
+ return job.raw[property];
3815
+ return null;
3816
+ case "object":
3817
+ return job.customData && property.transform(job.customData[property.key]);
3818
+ default:
3819
+ exhaustive(property);
3820
+ }
3821
+ };
3957
3822
  const JobCard = ({
3958
- job
3823
+ job,
3824
+ config
3959
3825
  }) => {
3826
+ const subheading = getDisplayableFilterProperty({
3827
+ job,
3828
+ property: config.subheading
3829
+ });
3830
+ const tags = config.infoTags.map((infoTag) => getDisplayableFilterProperty({
3831
+ job,
3832
+ property: infoTag
3833
+ })).filter(Boolean);
3960
3834
  return u$1("a", {
3961
3835
  href: job.href,
3962
3836
  class: wrapperClass(),
@@ -3964,21 +3838,23 @@ const JobCard = ({
3964
3838
  class: "flex flex-1 flex-col gap-4",
3965
3839
  children: [u$1("div", {
3966
3840
  class: "flex flex-col items-start gap-1",
3967
- children: [job.isNew ? u$1("span", {
3968
- class: badgeClass(),
3969
- children: "NEW"
3970
- }) : u$1("p", {
3971
- class: "text-style-job-card-info text-copy-job-info",
3972
- children: ["Posted ", job.relativePostedDate]
3973
- }), u$1("div", {
3974
- class: "flex flex-col gap-1",
3841
+ children: [u$1("div", {
3842
+ class: "order-2 flex flex-col gap-1",
3975
3843
  children: [u$1("p", {
3976
3844
  class: "text-style-job-heading font-style-job-heading font-weight-job-heading text-copy-neutral font-family-job-heading",
3977
3845
  children: job.title
3978
- }), u$1("p", {
3846
+ }), subheading ? u$1("p", {
3979
3847
  class: "text-style-job-card text-copy-neutral-lowcontrast",
3980
- children: job.company.name
3981
- })]
3848
+ children: subheading
3849
+ }) : null]
3850
+ }), job.isNew ? u$1("span", {
3851
+ class: badgeClass({
3852
+ class: "order-1"
3853
+ }),
3854
+ children: "NEW"
3855
+ }) : u$1("p", {
3856
+ class: "text-style-job-card-info text-copy-job-info order-1",
3857
+ children: ["Posted ", job.relativePostedDate]
3982
3858
  })]
3983
3859
  }), u$1("div", {
3984
3860
  class: "flex flex-col items-start gap-2",
@@ -3988,17 +3864,18 @@ const JobCard = ({
3988
3864
  size: "xs"
3989
3865
  }),
3990
3866
  children: job.pay
3991
- }), job.contractType && u$1("div", {
3867
+ }), tags.length > 0 && u$1("div", {
3992
3868
  class: "flex items-center gap-2",
3993
- children: u$1("span", {
3869
+ children: tags.map((tag) => u$1("span", {
3994
3870
  class: tagClass({
3995
3871
  size: "xs"
3996
3872
  }),
3997
- children: job.contractType
3998
- })
3873
+ children: tag
3874
+ }, tag))
3999
3875
  })]
4000
3876
  })]
4001
3877
  }), u$1("div", {
3878
+ "aria-hidden": true,
4002
3879
  class: "flex items-center",
4003
3880
  children: u$1(Icon, {
4004
3881
  name: "chevron-right",
@@ -4017,7 +3894,7 @@ const JobCardSkeleton = ({
4017
3894
  animationDelay: animationDelay + "s"
4018
3895
  },
4019
3896
  class: wrapperClass({
4020
- class: "animate-skeleton"
3897
+ interactive: false
4021
3898
  }),
4022
3899
  children: [u$1("div", {
4023
3900
  class: "flex flex-1 flex-col gap-4",
@@ -4048,7 +3925,7 @@ const JobCardSkeleton = ({
4048
3925
  class: tagClass({
4049
3926
  variant: "neutralWeak",
4050
3927
  size: "xs",
4051
- class: "h-[1lh] w-[10ch]"
3928
+ class: "h-[1lh] min-h-[1em] w-[10ch]"
4052
3929
  })
4053
3930
  }), u$1("div", {
4054
3931
  class: "flex items-center gap-2",
@@ -4056,18 +3933,19 @@ const JobCardSkeleton = ({
4056
3933
  class: tagClass({
4057
3934
  variant: "neutralWeak",
4058
3935
  size: "xs",
4059
- class: "h-[1lh] w-[6ch]"
3936
+ class: "h-[1lh] min-h-[1em] w-[6ch]"
4060
3937
  })
4061
3938
  }), u$1("span", {
4062
3939
  class: tagClass({
4063
3940
  variant: "neutralWeak",
4064
3941
  size: "xs",
4065
- class: "h-[1lh] w-[8ch]"
3942
+ class: "h-[1lh] min-h-[1em] w-[8ch]"
4066
3943
  })
4067
3944
  })]
4068
3945
  })]
4069
3946
  })]
4070
3947
  }), u$1("div", {
3948
+ "aria-hidden": true,
4071
3949
  class: "flex items-center",
4072
3950
  children: u$1(Icon, {
4073
3951
  name: "chevron-right",
@@ -4104,70 +3982,69 @@ const LoadMore = ({
4104
3982
  });
4105
3983
  }
4106
3984
  };
4107
- const useResultsFocus = (data) => {
4108
- const resultsRef = _(null);
4109
- p(() => {
4110
- var _a;
4111
- if (!data)
4112
- return;
4113
- if (data.length <= 1)
4114
- return;
4115
- const firstNewJob = (_a = resultsRef.current) == null ? void 0 : _a.querySelector(`li[data-page="${data.length}"] > *:is(a, button)`);
4116
- if (firstNewJob instanceof HTMLElement)
4117
- firstNewJob.focus();
4118
- }, [data]);
4119
- return resultsRef;
4120
- };
4121
3985
  const getResultsCount = ({
4122
3986
  pagination
4123
3987
  }) => {
4124
3988
  invariant(pagination.total >= 0);
4125
3989
  if (pagination.total === 1)
4126
3990
  return "1 job found";
4127
- if (pagination.total < pagination.per_page)
4128
- return pagination.total + " jobs found";
4129
- if (pagination.total > pagination.per_page * pagination.current_page)
4130
- return "Showing " + pagination.per_page * pagination.current_page + " of " + pagination.total + " jobs";
4131
- return "Showing all " + pagination.total + " jobs";
3991
+ return `${pagination.total} jobs found`;
4132
3992
  };
4133
3993
  const ResultsSection = ({
4134
3994
  appliedFilters,
4135
3995
  apiClient,
4136
- logger
3996
+ logger,
3997
+ jobCardConfig
3998
+ }) => {
3999
+ const [page, setPage] = h(1);
4000
+ return u$1(g$3, {
4001
+ children: Array.from({
4002
+ length: page
4003
+ }).map((a2, index) => {
4004
+ const isLast = index === page - 1;
4005
+ return u$1(ErrorBoundary, {
4006
+ Fallback: ErrorView,
4007
+ children: u$1(ResultsPage, {
4008
+ appliedFilters,
4009
+ apiClient,
4010
+ logger,
4011
+ page: index + 1,
4012
+ isFirst: index === 0,
4013
+ isLast,
4014
+ fetchNextPage: () => setPage(page + 1),
4015
+ jobCardConfig
4016
+ }, index)
4017
+ }, index);
4018
+ })
4019
+ });
4020
+ };
4021
+ const ResultsPage = ({
4022
+ appliedFilters,
4023
+ apiClient,
4024
+ logger,
4025
+ page,
4026
+ isFirst,
4027
+ isLast,
4028
+ fetchNextPage,
4029
+ jobCardConfig
4137
4030
  }) => {
4138
- const {
4139
- setSize,
4140
- size,
4141
- ...swr
4142
- } = useSWRInfinite((index, prevPageData) => {
4143
- if (prevPageData === null)
4144
- return index + 1 + "/" + cacheKey(appliedFilters);
4145
- if (prevPageData.pagination.last_page === prevPageData.pagination.current_page)
4146
- return null;
4147
- return index + 1 + "/" + JSON.stringify(appliedFilters);
4148
- }, (key) => {
4149
- const page = Number(key.split("/")[0]);
4150
- invariant(!Number.isNaN(page));
4151
- return getJobSearchResults({
4152
- apiClient,
4153
- logger,
4154
- filters: appliedFilters,
4155
- page
4156
- });
4157
- }, SWR_SETTINGS);
4158
4031
  const {
4159
4032
  data,
4160
4033
  error,
4161
4034
  state
4162
- } = getQueryState(swr);
4163
- const fetchNextPage = () => {
4164
- setSize((size2) => size2 + 1);
4165
- };
4166
- const resultsRef = useResultsFocus(data);
4035
+ } = getQueryState(useSWR(cacheKey({
4036
+ filter: appliedFilters,
4037
+ baseKey: page.toString()
4038
+ }), () => getJobSearchResults({
4039
+ apiClient,
4040
+ logger,
4041
+ filters: appliedFilters,
4042
+ page
4043
+ }), SWR_SETTINGS));
4167
4044
  switch (state) {
4168
4045
  case "loading":
4169
4046
  return u$1(g$3, {
4170
- children: [u$1("p", {
4047
+ children: [isFirst && u$1("p", {
4171
4048
  class: "text-style-tag text-copy-job-info animate-skeleton m-0 self-center p-0",
4172
4049
  children: u$1(SkeletonText, {
4173
4050
  chars: 8
@@ -4180,7 +4057,7 @@ const ResultsSection = ({
4180
4057
  }).map((_2, i2) => u$1("li", {
4181
4058
  children: u$1(JobCardSkeleton, {
4182
4059
  seed: i2,
4183
- animationDelay: (i2 - 4) * 0.1
4060
+ animationDelay: (i2 - PAGE_SIZE) * 0.1
4184
4061
  })
4185
4062
  }, i2))
4186
4063
  })]
@@ -4189,12 +4066,12 @@ const ResultsSection = ({
4189
4066
  throw error;
4190
4067
  case "revalidating":
4191
4068
  case "loaded": {
4192
- const firstPage = data[0];
4193
- invariant(firstPage);
4194
- if (firstPage.pagination.total === 0)
4069
+ invariant(data.pagination.current_page === page);
4070
+ if (data.pagination.total === 0)
4195
4071
  return u$1("div", {
4196
4072
  class: "mx-auto flex flex-col items-center gap-2 px-2 py-4 text-center",
4197
4073
  children: [u$1(Icon, {
4074
+ "aria-hidden": true,
4198
4075
  name: "magnifier",
4199
4076
  class: "text-copy-neutral-lowcontrast"
4200
4077
  }), u$1("div", {
@@ -4208,33 +4085,29 @@ const ResultsSection = ({
4208
4085
  })]
4209
4086
  })]
4210
4087
  });
4211
- const lastPage = data[data.length - 1];
4212
- invariant(lastPage);
4213
- const hasMore = lastPage.pagination.last_page !== lastPage.pagination.current_page;
4088
+ const hasMore = data.pagination.last_page !== data.pagination.current_page;
4214
4089
  return u$1(g$3, {
4215
- children: [u$1("p", {
4090
+ children: [isFirst && u$1("p", {
4216
4091
  class: "text-copy-neutral-lowcontrast text-style-tag m-0 p-0 text-center",
4217
4092
  children: getResultsCount({
4218
- pagination: lastPage.pagination
4093
+ pagination: data.pagination
4219
4094
  })
4220
4095
  }), u$1("ul", {
4096
+ "aria-label": `Page ${page}`,
4221
4097
  class: "flex flex-col gap-3",
4222
- ref: resultsRef,
4223
- children: data.map((page) => {
4224
- return page.results.map((job) => {
4225
- return u$1("li", {
4226
- "data-page": page.pagination.current_page,
4227
- class: "ease-expo-out duration-slow transition-opacity",
4228
- style: {
4229
- opacity: state === "revalidating" && size === 1 ? 0.33 : 1
4230
- },
4231
- children: u$1(JobCard, {
4232
- job
4233
- })
4234
- }, job.id);
4235
- });
4098
+ children: data.results.map((job) => {
4099
+ return u$1("li", {
4100
+ class: "ease-expo-out duration-slow transition-opacity",
4101
+ style: {
4102
+ opacity: state === "revalidating" ? 0.33 : 1
4103
+ },
4104
+ children: u$1(JobCard, {
4105
+ job,
4106
+ config: jobCardConfig
4107
+ })
4108
+ }, job.id);
4236
4109
  })
4237
- }), hasMore && LoadMore({
4110
+ }), hasMore && isLast && u$1(LoadMore, {
4238
4111
  state,
4239
4112
  fetchNextPage
4240
4113
  })]
@@ -4267,7 +4140,8 @@ const JobSearch = ({
4267
4140
  apiClient,
4268
4141
  logger,
4269
4142
  properties,
4270
- class: className
4143
+ class: className,
4144
+ jobCardConfig
4271
4145
  }) => {
4272
4146
  const appRef = _(null);
4273
4147
  const [appliedFilters, setAppliedFilters] = h(() => getFilterDefaults(properties));
@@ -4276,9 +4150,9 @@ const JobSearch = ({
4276
4150
  class: className,
4277
4151
  id: JOB_SEARCH_SCOPE_ELEMENT_ID,
4278
4152
  children: u$1("div", {
4279
- class: "bg-app rounded-app font-family-default font-weight-default font-style-default mx-auto flex min-h-screen max-w-screen-lg flex-col gap-4 py-4 md:grid md:grid-cols-3 md:px-4",
4153
+ class: "ijs-app bg-app rounded-app font-family-default font-weight-default font-style-default mx-auto flex min-h-screen max-w-screen-lg flex-col gap-4 py-4 md:grid md:grid-cols-3 md:px-4",
4280
4154
  children: [u$1(ErrorBoundary, {
4281
- Fallback,
4155
+ Fallback: ErrorView,
4282
4156
  children: u$1(FilterSection, {
4283
4157
  appliedFilters,
4284
4158
  onFilterValueChange: (key, value) => {
@@ -4297,19 +4171,138 @@ const JobSearch = ({
4297
4171
  children: u$1("section", {
4298
4172
  class: "bg-section-strong-bg ring-section-weak-stroke rounded-section ring-px lg:ring-width-section flex flex-col gap-4 p-4",
4299
4173
  children: u$1(ErrorBoundary, {
4300
- Fallback,
4174
+ Fallback: ErrorView,
4301
4175
  children: u$1(ResultsSection, {
4302
4176
  appliedFilters,
4303
4177
  logger,
4304
- apiClient
4305
- })
4178
+ apiClient,
4179
+ jobCardConfig
4180
+ }, cacheKey({
4181
+ filter: appliedFilters,
4182
+ baseKey: "resultsSection"
4183
+ }))
4306
4184
  })
4307
4185
  })
4308
4186
  })]
4309
4187
  })
4310
4188
  });
4311
4189
  };
4312
- const tailwind = "#ijs {\n font-size: 16px;\n --tw-content: '';\n}\n\n #ijs * {\n box-sizing: border-box;\n border-style: solid;\n border-width: 0;\n -webkit-tap-highlight-color: transparent;\n font-family: inherit;\n font-style: inherit;\n font-weight: inherit;\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 #ijs :is(a) {\n display: block;\n margin: 0;\n padding: 0;\n border: unset;\n background: unset;\n text-align: unset;\n }\n\n #ijs :is(input),\n #ijs :is(textarea) {\n display: block;\n margin: 0;\n padding: 0;\n min-width: 0;\n max-width: unset;\n width: 100%;\n }\n\n #ijs :is(svg) {\n display: block;\n }\n\n #ijs.reduced-motion * {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n animation-delay: 0s !important;\n }\n\n @media (prefers-reduced-motion) {\n #ijs * {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n animation-delay: 0s !important;\n }\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 .pointer-events-none {\n pointer-events: none;\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 .top-0 {\n top: 0px;\n}\n\n #ijs .isolate {\n isolation: isolate;\n}\n\n #ijs .m-0 {\n margin: 0px;\n}\n\n #ijs .m-11 {\n margin: 2.75rem;\n}\n\n #ijs .m-3 {\n margin: 0.75rem;\n}\n\n #ijs .mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n #ijs .ml-auto {\n margin-left: auto;\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 .shrink-0 {\n flex-shrink: 0;\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-\\[50\\%_1\\.75rem\\] {\n transform-origin: 50% 1.75rem;\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 .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 .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 @keyframes slide-in-bottom {\n\n 0% {\n transform: translateY(-50%);\n }\n\n 100% {\n transform: translateY(0);\n }\n}\n\n #ijs .animate-slide-in-bottom {\n animation: slide-in-bottom .4s cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n #ijs .cursor-default {\n cursor: default;\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 .flex-nowrap {\n flex-wrap: nowrap;\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 .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-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 .self-center {\n align-self: center;\n}\n\n #ijs .overflow-hidden {\n overflow: hidden;\n}\n\n #ijs .overflow-y-auto {\n overflow-y: auto;\n}\n\n #ijs .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n #ijs .rounded-app {\n border-radius: var(--i-radius-app);\n}\n\n #ijs .rounded-input {\n border-radius: var(--i-radius-input);\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-px {\n border-width: 1px;\n}\n\n #ijs .border-solid {\n border-style: solid;\n}\n\n #ijs .border-none {\n border-style: none;\n}\n\n #ijs .border-tag-accent-strong-stroke {\n border-color: var(--i-tag-accent-strong-stroke-color);\n}\n\n #ijs .border-tag-neutral-strong-stroke {\n border-color: var(--i-tag-neutral-strong-stroke-color);\n}\n\n #ijs .border-tag-neutral-weak-stroke {\n border-color: var(--i-tag-neutral-weak-stroke-color);\n}\n\n #ijs .border-transparent {\n border-color: transparent;\n}\n\n #ijs .bg-\\[currentColor\\] {\n background-color: currentColor;\n}\n\n #ijs .bg-app {\n background-color: var(--i-app-bg);\n}\n\n #ijs .bg-interactive-accent-bg {\n background-color: var(--i-interactive-accent-bg);\n}\n\n #ijs .bg-interactive-neutral-bg {\n background-color: var(--i-interactive-neutral-bg);\n}\n\n #ijs .bg-job-card-bg {\n background-color: var(--i-job-card-bg);\n}\n\n #ijs .bg-lowest {\n --tw-bg-opacity: 1;\n background-color: oklch(var(--i-lowest) / var(--tw-bg-opacity));\n}\n\n #ijs .bg-section-strong-bg {\n background-color: var(--i-section-strong-bg);\n}\n\n #ijs .bg-section-weak-bg {\n background-color: var(--i-section-weak-bg);\n}\n\n #ijs .bg-tag-accent-strong-bg {\n background-color: var(--i-tag-accent-strong-bg);\n}\n\n #ijs .bg-tag-monetary-weak-bg {\n background-color: var(--i-tag-monetary-weak-bg);\n}\n\n #ijs .bg-tag-neutral-strong-bg {\n background-color: var(--i-tag-neutral-strong-bg);\n}\n\n #ijs .bg-tag-neutral-weak-bg {\n background-color: var(--i-tag-neutral-weak-bg);\n}\n\n #ijs .p-0 {\n padding: 0px;\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 .pl-1 {\n padding-left: 0.25rem;\n}\n\n #ijs .pl-2 {\n padding-left: 0.5rem;\n}\n\n #ijs .pl-3 {\n padding-left: 0.75rem;\n}\n\n #ijs .pl-4 {\n padding-left: 1rem;\n}\n\n #ijs .pl-5 {\n padding-left: 1.25rem;\n}\n\n #ijs .pr-1 {\n padding-right: 0.25rem;\n}\n\n #ijs .pr-3 {\n padding-right: 0.75rem;\n}\n\n #ijs .pr-5 {\n padding-right: 1.25rem;\n}\n\n #ijs .pt-1 {\n padding-top: 0.25rem;\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-default {\n font-family: var(--i-font);\n}\n\n #ijs .font-family-filter {\n font-family: var(--i-font-filter);\n}\n\n #ijs .font-family-job-heading {\n font-family: var(--i-font-job-heading);\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-input {\n font-size: 1rem;\n line-height: 1.5rem;\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-heading {\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-default {\n font-weight: var(--i-weight-default);\n}\n\n #ijs .font-weight-filter {\n font-weight: var(--i-weight-filter);\n}\n\n #ijs .font-weight-input {\n font-weight: var(--i-weight-input);\n}\n\n #ijs .font-weight-job-heading {\n font-weight: var(--i-weight-job-heading);\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 .tabular-nums {\n --tw-numeric-spacing: tabular-nums;\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 color: var(--i-copy-accent);\n}\n\n #ijs .text-copy-job-info {\n color: var(--i-copy-info);\n}\n\n #ijs .text-copy-neutral {\n color: var(--i-copy);\n}\n\n #ijs .text-copy-neutral-icon {\n color: var(--i-copy-icon);\n}\n\n #ijs .text-copy-neutral-lowcontrast {\n color: var(--i-copy-lowcontrast);\n}\n\n #ijs .text-interactive-accent-text {\n color: var(--i-interactive-accent-text);\n}\n\n #ijs .text-interactive-neutral-text {\n color: var(--i-interactive-neutral-text);\n}\n\n #ijs .text-tag-accent-strong-copy {\n color: var(--i-tag-accent-strong-copy);\n}\n\n #ijs .text-tag-monetary-weak-copy {\n color: var(--i-tag-monetary-weak-copy);\n}\n\n #ijs .text-tag-neutral-strong-copy {\n color: var(--i-tag-neutral-strong-copy);\n}\n\n #ijs .text-tag-neutral-weak-copy {\n color: var(--i-tag-neutral-weak-copy);\n}\n\n #ijs .caret-accent-11 {\n caret-color: oklch(var(--i-a-11) / 1);\n}\n\n #ijs .opacity-20 {\n opacity: 0.2;\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-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\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-color: var(--i-job-card-stroke-color);\n}\n\n #ijs .ring-section-strong-stroke {\n --tw-ring-color: var(--i-section-strong-stroke-color);\n}\n\n #ijs .ring-section-weak-stroke {\n --tw-ring-color: var(--i-section-weak-stroke-color);\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 .transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n #ijs .duration-medium {\n transition-duration: .6s;\n}\n\n #ijs .duration-slow {\n transition-duration: .9s;\n}\n\n #ijs .duration-snappy {\n transition-duration: .4s;\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-default {\n font-style: var(--i-font-style);\n}\n\n #ijs .font-style-filter {\n font-style: var(--i-style-filter);\n}\n\n #ijs .font-style-input {\n font-style: var(--i-style-input);\n}\n\n #ijs .font-style-job-heading {\n font-style: var(--i-style-job-heading);\n}\n\n #ijs .font-style-tag {\n font-style: var(--i-style-tag);\n}\n\n #ijs .top-filters {\n top: var(--i-filters-offset-top);\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-offset-color: oklch(var(--i-lowest) / 1);\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-a-9) / 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 .fr-parent:has(.fr-child:focus-visible) {\n outline: none;\n --tw-ring-offset-width: 1px;\n --tw-ring-offset-color: oklch(var(--i-lowest) / 1);\n --tw-ring-opacity: 1;\n --tw-ring-color: oklch(var(--i-a-9) / 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 .fr-child {}\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 .\\[text-wrap\\:pretty\\] {\n text-wrap: pretty;\n}\n\n #ijs .placeholder\\:text-neutral-10::-moz-placeholder {\n --tw-text-opacity: 1;\n color: oklch(var(--i-n-10) / var(--tw-text-opacity));\n}\n\n #ijs .placeholder\\:text-neutral-10::placeholder {\n --tw-text-opacity: 1;\n color: oklch(var(--i-n-10) / var(--tw-text-opacity));\n}\n\n #ijs .focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n #ijs .active\\:-scale-100:active {\n --tw-scale-x: -1;\n --tw-scale-y: -1;\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\\: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\\:scale-\\[0\\.975\\]:active {\n --tw-scale-x: 0.975;\n --tw-scale-y: 0.975;\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 background-color: var(--i-job-card-bg-active);\n}\n\n #ijs .active\\:ring-job-card-stroke-active:active {\n --tw-ring-color: var(--i-job-card-stroke-color-active);\n}\n\n @media (pointer: coarse) {\n\n #ijs .pointer-coarse\\:overflow-x-auto {\n overflow-x: auto;\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:w-full {\n width: 100%;\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:flex-wrap {\n flex-wrap: wrap;\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:rounded-section {\n border-radius: var(--i-radius-section);\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:bg-app {\n background-color: var(--i-app-bg);\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:p-2 {\n padding: 0.5rem;\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\: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\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:hover\\:bg-interactive-accent-bg-hover:hover {\n background-color: var(--i-interactive-accent-bg-hover);\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:hover\\:bg-interactive-neutral-bg-hover:hover {\n background-color: var(--i-interactive-neutral-bg-hover);\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .group:hover .pointer-fine\\:group-hover\\:text-copy-neutral {\n color: var(--i-copy);\n }\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\\: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\\: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\n #ijs .\\[\\&\\:has\\(\\.fr-child\\:active\\)\\]\\:scale-\\[0\\.975\\]:has(.fr-child:active) {\n --tw-scale-x: 0.975;\n --tw-scale-y: 0.975;\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";
4190
+ const tailwind = "#ijs {\n font-size: 16px;\n --tw-content: '';\n}\n\n #ijs * {\n box-sizing: border-box;\n border-style: solid;\n border-width: 0;\n -webkit-tap-highlight-color: transparent;\n font-family: inherit;\n font-style: inherit;\n font-weight: inherit;\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 #ijs :is(a) {\n display: block;\n margin: 0;\n padding: 0;\n border: unset;\n background: unset;\n text-align: unset;\n }\n\n #ijs :is(input),\n #ijs :is(textarea) {\n display: block;\n margin: 0;\n padding: 0;\n min-width: 0;\n max-width: unset;\n width: 100%;\n }\n\n #ijs :is(svg) {\n display: block;\n }\n\n #ijs.reduced-motion * {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n animation-delay: 0s !important;\n }\n\n @media (prefers-reduced-motion) {\n #ijs * {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n animation-delay: 0s !important;\n }\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 .pointer-events-none {\n pointer-events: none;\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 .top-0 {\n top: 0px;\n}\n\n #ijs .isolate {\n isolation: isolate;\n}\n\n #ijs .order-1 {\n order: 1;\n}\n\n #ijs .order-2 {\n order: 2;\n}\n\n #ijs .m-0 {\n margin: 0px;\n}\n\n #ijs .m-11 {\n margin: 2.75rem;\n}\n\n #ijs .m-3 {\n margin: 0.75rem;\n}\n\n #ijs .mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n #ijs .ml-auto {\n margin-left: auto;\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-\\[1em\\] {\n min-height: 1em;\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 .shrink-0 {\n flex-shrink: 0;\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-\\[50\\%_1\\.75rem\\] {\n transform-origin: 50% 1.75rem;\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 .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 .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.6;\n }\n\n 100% {\n opacity: 0.25;\n }\n}\n\n #ijs .animate-skeleton {\n animation: skeleton 1.2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n @keyframes slide-in-bottom {\n\n 0% {\n transform: translateY(-50%);\n }\n\n 100% {\n transform: translateY(0);\n }\n}\n\n #ijs .animate-slide-in-bottom {\n animation: slide-in-bottom .4s cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n #ijs .cursor-default {\n cursor: default;\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 .flex-nowrap {\n flex-wrap: nowrap;\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 .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-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 .self-center {\n align-self: center;\n}\n\n #ijs .overflow-hidden {\n overflow: hidden;\n}\n\n #ijs .overflow-y-auto {\n overflow-y: auto;\n}\n\n #ijs .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n #ijs .rounded-app {\n border-radius: var(--i-radius-app);\n}\n\n #ijs .rounded-input {\n border-radius: var(--i-radius-input);\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-px {\n border-width: 1px;\n}\n\n #ijs .border-solid {\n border-style: solid;\n}\n\n #ijs .border-none {\n border-style: none;\n}\n\n #ijs .border-tag-accent-strong-stroke {\n border-color: var(--i-tag-accent-strong-stroke-color);\n}\n\n #ijs .border-tag-neutral-strong-stroke {\n border-color: var(--i-tag-neutral-strong-stroke-color);\n}\n\n #ijs .border-tag-neutral-weak-stroke {\n border-color: var(--i-tag-neutral-weak-stroke-color);\n}\n\n #ijs .border-transparent {\n border-color: transparent;\n}\n\n #ijs .bg-\\[currentColor\\] {\n background-color: currentColor;\n}\n\n #ijs .bg-app {\n background-color: var(--i-app-bg);\n}\n\n #ijs .bg-interactive-accent-bg {\n background-color: var(--i-interactive-accent-bg);\n}\n\n #ijs .bg-interactive-neutral-bg {\n background-color: var(--i-interactive-neutral-bg);\n}\n\n #ijs .bg-job-card-bg {\n background-color: var(--i-job-card-bg);\n}\n\n #ijs .bg-lowest {\n background-color: var(--i-color-lowest);\n}\n\n #ijs .bg-section-strong-bg {\n background-color: var(--i-section-strong-bg);\n}\n\n #ijs .bg-section-weak-bg {\n background-color: var(--i-section-weak-bg);\n}\n\n #ijs .bg-tag-accent-strong-bg {\n background-color: var(--i-tag-accent-strong-bg);\n}\n\n #ijs .bg-tag-monetary-weak-bg {\n background-color: var(--i-tag-monetary-weak-bg);\n}\n\n #ijs .bg-tag-neutral-strong-bg {\n background-color: var(--i-tag-neutral-strong-bg);\n}\n\n #ijs .bg-tag-neutral-weak-bg {\n background-color: var(--i-tag-neutral-weak-bg);\n}\n\n #ijs .p-0 {\n padding: 0px;\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 .pl-1 {\n padding-left: 0.25rem;\n}\n\n #ijs .pl-2 {\n padding-left: 0.5rem;\n}\n\n #ijs .pl-3 {\n padding-left: 0.75rem;\n}\n\n #ijs .pl-4 {\n padding-left: 1rem;\n}\n\n #ijs .pl-5 {\n padding-left: 1.25rem;\n}\n\n #ijs .pr-1 {\n padding-right: 0.25rem;\n}\n\n #ijs .pr-3 {\n padding-right: 0.75rem;\n}\n\n #ijs .pr-5 {\n padding-right: 1.25rem;\n}\n\n #ijs .pt-1 {\n padding-top: 0.25rem;\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-default {\n font-family: var(--i-font);\n}\n\n #ijs .font-family-filter {\n font-family: var(--i-font-filter);\n}\n\n #ijs .font-family-job-heading {\n font-family: var(--i-font-job-heading);\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-input {\n font-size: 1rem;\n line-height: 1.5rem;\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-heading {\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-default {\n font-weight: var(--i-weight-default);\n}\n\n #ijs .font-weight-filter {\n font-weight: var(--i-weight-filter);\n}\n\n #ijs .font-weight-input {\n font-weight: var(--i-weight-input);\n}\n\n #ijs .font-weight-job-heading {\n font-weight: var(--i-weight-job-heading);\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 .tabular-nums {\n --tw-numeric-spacing: tabular-nums;\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 color: var(--i-copy-accent);\n}\n\n #ijs .text-copy-job-info {\n color: var(--i-copy-info);\n}\n\n #ijs .text-copy-neutral {\n color: var(--i-copy);\n}\n\n #ijs .text-copy-neutral-icon {\n color: var(--i-copy-icon);\n}\n\n #ijs .text-copy-neutral-lowcontrast {\n color: var(--i-copy-lowcontrast);\n}\n\n #ijs .text-interactive-accent-text {\n color: var(--i-interactive-accent-text);\n}\n\n #ijs .text-interactive-neutral-text {\n color: var(--i-interactive-neutral-text);\n}\n\n #ijs .text-neutral-11 {\n color: var(--i-color-n-11);\n}\n\n #ijs .text-tag-accent-strong-copy {\n color: var(--i-tag-accent-strong-copy);\n}\n\n #ijs .text-tag-monetary-weak-copy {\n color: var(--i-tag-monetary-weak-copy);\n}\n\n #ijs .text-tag-neutral-strong-copy {\n color: var(--i-tag-neutral-strong-copy);\n}\n\n #ijs .text-tag-neutral-weak-copy {\n color: var(--i-tag-neutral-weak-copy);\n}\n\n #ijs .caret-accent-11 {\n caret-color: var(--i-color-a-11);\n}\n\n #ijs .opacity-20 {\n opacity: 0.2;\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-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\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-color: var(--i-job-card-stroke-color);\n}\n\n #ijs .ring-section-strong-stroke {\n --tw-ring-color: var(--i-section-strong-stroke-color);\n}\n\n #ijs .ring-section-weak-stroke {\n --tw-ring-color: var(--i-section-weak-stroke-color);\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 .transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n #ijs .duration-medium {\n transition-duration: .6s;\n}\n\n #ijs .duration-slow {\n transition-duration: .9s;\n}\n\n #ijs .duration-snappy {\n transition-duration: .4s;\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-default {\n font-style: var(--i-font-style);\n}\n\n #ijs .font-style-filter {\n font-style: var(--i-style-filter);\n}\n\n #ijs .font-style-input {\n font-style: var(--i-style-input);\n}\n\n #ijs .font-style-job-heading {\n font-style: var(--i-style-job-heading);\n}\n\n #ijs .font-style-tag {\n font-style: var(--i-style-tag);\n}\n\n #ijs .top-filters {\n top: var(--i-filters-offset-top);\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-offset-color: var(--i-color-lowest);\n --tw-ring-opacity: 1;\n --tw-ring-color: var(--i-color-a-9);\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 .fr-parent:has(.fr-child:focus-visible) {\n outline: none;\n --tw-ring-offset-width: 1px;\n --tw-ring-offset-color: var(--i-color-lowest);\n --tw-ring-opacity: 1;\n --tw-ring-color: var(--i-color-a-9);\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 .fr-child {}\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 .\\[text-wrap\\:pretty\\] {\n text-wrap: pretty;\n}\n\n #ijs .placeholder\\:text-neutral-10::-moz-placeholder {\n color: var(--i-color-n-10);\n}\n\n #ijs .placeholder\\:text-neutral-10::placeholder {\n color: var(--i-color-n-10);\n}\n\n #ijs .focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n #ijs .active\\:-scale-100:active {\n --tw-scale-x: -1;\n --tw-scale-y: -1;\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\\: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\\:scale-\\[0\\.975\\]:active {\n --tw-scale-x: 0.975;\n --tw-scale-y: 0.975;\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 background-color: var(--i-job-card-bg-active);\n}\n\n #ijs .active\\:ring-job-card-stroke-active:active {\n --tw-ring-color: var(--i-job-card-stroke-color-active);\n}\n\n @media (pointer: coarse) {\n\n #ijs .pointer-coarse\\:overflow-x-auto {\n overflow-x: auto;\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:w-full {\n width: 100%;\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:flex-wrap {\n flex-wrap: wrap;\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:rounded-section {\n border-radius: var(--i-radius-section);\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:bg-app {\n background-color: var(--i-app-bg);\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:p-2 {\n padding: 0.5rem;\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\: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\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:hover\\:bg-interactive-accent-bg-hover:hover {\n background-color: var(--i-interactive-accent-bg-hover);\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .pointer-fine\\:hover\\:bg-interactive-neutral-bg-hover:hover {\n background-color: var(--i-interactive-neutral-bg-hover);\n }\n}\n\n @media (pointer: fine) {\n\n #ijs .group:hover .pointer-fine\\:group-hover\\:text-copy-neutral {\n color: var(--i-copy);\n }\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\\: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\\: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\n #ijs .\\[\\&\\:has\\(\\.fr-child\\:active\\)\\]\\:scale-\\[0\\.975\\]:has(.fr-child:active) {\n --tw-scale-x: 0.975;\n --tw-scale-y: 0.975;\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";
4191
+ var __defProp2 = Object.defineProperty;
4192
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
4193
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4194
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
4195
+ var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4196
+ var __spreadValues = (a2, b2) => {
4197
+ for (var prop in b2 || (b2 = {}))
4198
+ if (__hasOwnProp.call(b2, prop))
4199
+ __defNormalProp2(a2, prop, b2[prop]);
4200
+ if (__getOwnPropSymbols)
4201
+ for (var prop of __getOwnPropSymbols(b2)) {
4202
+ if (__propIsEnum.call(b2, prop))
4203
+ __defNormalProp2(a2, prop, b2[prop]);
4204
+ }
4205
+ return a2;
4206
+ };
4207
+ var COLOR_SHADES = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"];
4208
+ var OKLCH_PRESETS = {
4209
+ light: {
4210
+ "1": [98.8, 0.015],
4211
+ "2": [97.8, 0.018],
4212
+ "3": [95.8, 0.025],
4213
+ "4": [92, 0.04],
4214
+ "5": [89, 0.05],
4215
+ "6": [85, 0.07],
4216
+ "7": [80.5, 0.08],
4217
+ "8": [74, 0.11],
4218
+ "9": [60, 0.22],
4219
+ "10": [60.5, 0.2],
4220
+ "11": [50, 0.19],
4221
+ "12": [25, 0.18]
4222
+ },
4223
+ dark: {
4224
+ "1": [19, 0.015],
4225
+ "2": [21, 0.018],
4226
+ "3": [25.5, 0.055],
4227
+ "4": [29.3, 0.084],
4228
+ "5": [33.5, 0.098],
4229
+ "6": [39.05, 0.107],
4230
+ "7": [45, 0.11],
4231
+ "8": [55, 0.13],
4232
+ "9": [60, 0.22],
4233
+ "10": [67, 0.18],
4234
+ "11": [79.3, 0.12],
4235
+ "12": [95, 0.04]
4236
+ }
4237
+ };
4238
+ var getPaletteColor = (hueAngle, chromaMultipler = 1, mode) => (i2) => {
4239
+ const [l2, c2] = OKLCH_PRESETS[mode][i2];
4240
+ const color = "oklch(" + l2 + "% " + c2 * chromaMultipler + " " + hueAngle + ")";
4241
+ return color;
4242
+ };
4243
+ var generatePalette = (params) => {
4244
+ const getColor = getPaletteColor(params.hue, params.chroma, params.mode);
4245
+ return Object.fromEntries(
4246
+ COLOR_SHADES.map(
4247
+ (level) => [params.prefix + level, params.transform ? params.transform(getColor(level)) : getColor(level)]
4248
+ )
4249
+ );
4250
+ };
4251
+ var flatten = (obj) => {
4252
+ const entries = Object.keys(obj).flatMap((key) => {
4253
+ const current = obj[key];
4254
+ if (typeof current === "object" && current !== null) {
4255
+ return Object.keys(current).map((childKey) => {
4256
+ const shade = current[childKey];
4257
+ return [`${String(key)}.${childKey}`, shade];
4258
+ });
4259
+ }
4260
+ return [[key, current]];
4261
+ });
4262
+ return Object.fromEntries(entries);
4263
+ };
4264
+ var asCssVar = (params) => {
4265
+ function genRef(target, path) {
4266
+ const varName = [params.prefix, path.toString().replace(/\./g, "-")].join("");
4267
+ return target === "declaration" ? `--${varName}` : `var(--${varName})`;
4268
+ }
4269
+ return genRef;
4270
+ };
4271
+ var designTokens = () => {
4272
+ return {
4273
+ core: (coreFn) => ({
4274
+ semantic: (semanticFn) => ({
4275
+ component: (componentFn) => ({
4276
+ from: (config) => {
4277
+ const { theme, getToken } = config;
4278
+ const getRef = (path) => getToken("reference", path.toString());
4279
+ const core = coreFn({ theme });
4280
+ const semantic = semanticFn({ theme, core: getRef, raw: { core } });
4281
+ const component = componentFn({
4282
+ theme,
4283
+ core: getRef,
4284
+ semantic: getRef,
4285
+ raw: { core, semantic }
4286
+ });
4287
+ const values = flatten(__spreadValues(__spreadValues(__spreadValues({}, core), semantic), component));
4288
+ return {
4289
+ values,
4290
+ declarations: Object.fromEntries(
4291
+ Object.entries(values).map(([key, value]) => {
4292
+ return [
4293
+ config.getToken("declaration", key),
4294
+ value
4295
+ ];
4296
+ })
4297
+ ),
4298
+ ref: (path) => getToken("reference", path.toString())
4299
+ };
4300
+ }
4301
+ })
4302
+ })
4303
+ })
4304
+ };
4305
+ };
4313
4306
  const match = (m2) => {
4314
4307
  const patterns = [];
4315
4308
  const i2 = (m22) => ({
@@ -4337,143 +4330,12 @@ const match = (m2) => {
4337
4330
  });
4338
4331
  return i2(m2);
4339
4332
  };
4340
- const colorLevels = {
4341
- "1": true,
4342
- "2": true,
4343
- "3": true,
4344
- "4": true,
4345
- "5": true,
4346
- "6": true,
4347
- "7": true,
4348
- "8": true,
4349
- "9": true,
4350
- "10": true,
4351
- "11": true,
4352
- "12": true
4353
- };
4354
- const COLOR_LEVELS = Object.keys(colorLevels);
4355
- const colorPresets = {
4356
- light: {
4357
- "1": {
4358
- l: 98.8,
4359
- c: 0.015
4360
- },
4361
- "2": {
4362
- l: 97.8,
4363
- c: 0.018
4364
- },
4365
- "3": {
4366
- l: 95.8,
4367
- c: 0.025
4368
- },
4369
- "4": {
4370
- l: 92,
4371
- c: 0.04
4372
- },
4373
- "5": {
4374
- l: 89,
4375
- c: 0.05
4376
- },
4377
- "6": {
4378
- l: 85,
4379
- c: 0.07
4380
- },
4381
- "7": {
4382
- l: 80.5,
4383
- c: 0.08
4384
- },
4385
- "8": {
4386
- l: 74,
4387
- c: 0.11
4388
- },
4389
- "9": {
4390
- l: 60,
4391
- c: 0.22
4392
- },
4393
- "10": {
4394
- l: 60.5,
4395
- c: 0.2
4396
- },
4397
- "11": {
4398
- l: 50,
4399
- c: 0.19
4400
- },
4401
- "12": {
4402
- l: 25,
4403
- c: 0.18
4404
- }
4405
- },
4406
- dark: {
4407
- "1": {
4408
- l: 19,
4409
- c: 0.015
4410
- },
4411
- "2": {
4412
- l: 21,
4413
- c: 0.018
4414
- },
4415
- "3": {
4416
- l: 25.5,
4417
- c: 0.055
4418
- },
4419
- "4": {
4420
- l: 29.3,
4421
- c: 0.084
4422
- },
4423
- "5": {
4424
- l: 33.5,
4425
- c: 0.098
4426
- },
4427
- "6": {
4428
- l: 39.05,
4429
- c: 0.107
4430
- },
4431
- "7": {
4432
- l: 45,
4433
- c: 0.11
4434
- },
4435
- "8": {
4436
- l: 55,
4437
- c: 0.13
4438
- },
4439
- "9": {
4440
- l: 60,
4441
- c: 0.22
4442
- },
4443
- "10": {
4444
- l: 67,
4445
- c: 0.18
4446
- },
4447
- "11": {
4448
- l: 79.3,
4449
- c: 0.12
4450
- },
4451
- "12": {
4452
- l: 95,
4453
- c: 0.04
4454
- }
4455
- }
4456
- };
4457
- const getPaletteColor = (hueAngle, chromaMultipler = 1, mode) => (i2) => {
4458
- const {
4459
- c: c2,
4460
- l: l2
4461
- } = colorPresets[mode][i2];
4462
- const color = "oklch(" + l2 + "% " + c2 * chromaMultipler + " " + hueAngle + ")";
4463
- return color;
4464
- };
4465
- const generatePalette = (params) => {
4466
- const getColor = getPaletteColor(params.hue, params.chroma, params.mode);
4467
- return Object.fromEntries(COLOR_LEVELS.map((level) => [params.prefix + level, extractOklch(getColor(level))]));
4468
- };
4469
- const extractOklch = (color) => {
4470
- return color.replace("oklch(", "").replace(")", "");
4471
- };
4472
- const prefixInploi = (v2) => `--i-${v2}`;
4473
- const prefixVar = (v2) => `var(${prefixInploi(v2)})`;
4474
- const [black, white] = ["0 0 0", "100 0 0"];
4475
- const generateColorThemeVars = (theme) => {
4476
- return {
4333
+ const [black, white] = ["oklch(0 0 0)", "oklch(100 0 0)"];
4334
+ const transparent = "transparent";
4335
+ const tokens = designTokens().core(({
4336
+ theme
4337
+ }) => ({
4338
+ color: {
4477
4339
  black,
4478
4340
  white,
4479
4341
  lowest: theme.mode === "light" ? white : black,
@@ -4496,12 +4358,14 @@ const generateColorThemeVars = (theme) => {
4496
4358
  chroma: theme.accent.chroma,
4497
4359
  mode: theme.mode
4498
4360
  })
4499
- };
4500
- };
4501
- const oklch = (color, opacity) => `oklch(${color} / ${opacity ?? 1})`;
4502
- const transparent = oklch(black, 0);
4503
- const generateTokenVars = (theme, color) => {
4361
+ }
4362
+ })).semantic(({
4363
+ core,
4364
+ theme,
4365
+ raw
4366
+ }) => {
4504
4367
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
4368
+ const withOpacity = (token, opacity) => raw.core.color[token].replace(")", ` / ${opacity})`);
4505
4369
  const {
4506
4370
  typography,
4507
4371
  highlights
@@ -4523,28 +4387,28 @@ const generateTokenVars = (theme, color) => {
4523
4387
  "weight-job-heading": ((_j = typography.jobHeading) == null ? void 0 : _j.weight) ?? typography.weight ?? "inherit",
4524
4388
  "style-input": ((_k = typography.input) == null ? void 0 : _k.style) ?? typography.style ?? "inherit",
4525
4389
  "weight-input": ((_l = typography.input) == null ? void 0 : _l.weight) ?? typography.weight ?? "inherit",
4526
- "app-bg": oklch(color.lowest),
4527
- copy: oklch(highContrast ? color.highest : color["n-12"]),
4528
- "copy-lowcontrast": oklch(color["n-11"]),
4529
- "copy-info": oklch(highContrast ? color["n-11"] : color["n-10"]),
4530
- "copy-icon": oklch(highContrast ? color["n-12"] : color["n-11"]),
4531
- "copy-accent": oklch(highContrast ? color.highest : color["a-12"]),
4532
- "copy-accent-lowcontrast": oklch(highContrast ? color["a-12"] : color["a-11"]),
4533
- "copy-accent-icon": oklch(highContrast ? color["a-12"] : color["a-11"]),
4534
- "copy-inverted": oklch(color.lowest),
4535
- "copy-inverted-lowcontrast": oklch(color["n-4"]),
4536
- "copy-inverted-icon": oklch(color["n-3"]),
4537
- "tag-neutral-weak-bg": highlights === "fill" ? oklch(color["n-2"]) : transparent,
4538
- "tag-neutral-weak-copy": oklch(color["n-12"]),
4539
- "tag-neutral-weak-stroke-color": highlights === "stroke" ? oklch(color["n-8"]) : transparent,
4540
- "tag-neutral-strong-bg": highlights === "fill" ? oklch(color["n-12"]) : transparent,
4541
- "tag-neutral-strong-copy": oklch(highlights === "fill" ? color.white : color["n-12"]),
4542
- "tag-neutral-strong-stroke-color": oklch(highContrast ? color["n-12"] : color["n-4"], highlights === "stroke" ? 1 : 0),
4543
- "tag-monetary-weak-bg": oklch(color["m-3"]),
4544
- "tag-monetary-weak-copy": oklch(color["m-11"]),
4545
- "tag-accent-strong-bg": oklch(theme.mode === "dark" ? color["a-9"] : color["a-11"]),
4546
- "tag-accent-strong-copy": oklch(color.white),
4547
- "tag-accent-strong-stroke-color": oklch(black, 0),
4390
+ "app-bg": core("color.lowest"),
4391
+ copy: highContrast ? core("color.highest") : core("color.n-12"),
4392
+ "copy-lowcontrast": core("color.n-11"),
4393
+ "copy-info": highContrast ? core("color.n-11") : core("color.n-10"),
4394
+ "copy-icon": highContrast ? core("color.n-12") : core("color.n-11"),
4395
+ "copy-accent": highContrast ? core("color.highest") : core("color.a-12"),
4396
+ "copy-accent-lowcontrast": highContrast ? core("color.a-12") : core("color.a-11"),
4397
+ "copy-accent-icon": highContrast ? core("color.a-12") : core("color.a-11"),
4398
+ "copy-inverted": core("color.lowest"),
4399
+ "copy-inverted-lowcontrast": core("color.n-4"),
4400
+ "copy-inverted-icon": core("color.n-3"),
4401
+ "tag-neutral-weak-bg": highlights === "fill" ? core("color.n-2") : transparent,
4402
+ "tag-neutral-weak-copy": core("color.n-12"),
4403
+ "tag-neutral-weak-stroke-color": highlights === "stroke" ? core("color.n-8") : transparent,
4404
+ "tag-neutral-strong-bg": highlights === "fill" ? core("color.n-12") : transparent,
4405
+ "tag-neutral-strong-copy": highlights === "fill" ? core("color.white") : core("color.n-12"),
4406
+ "tag-neutral-strong-stroke-color": withOpacity(highContrast ? "n-12" : "n-4", highlights === "stroke" ? 1 : 0),
4407
+ "tag-monetary-weak-bg": core("color.m-3"),
4408
+ "tag-monetary-weak-copy": core("color.m-11"),
4409
+ "tag-accent-strong-bg": theme.mode === "dark" ? core("color.a-9") : core("color.a-11"),
4410
+ "tag-accent-strong-copy": core("color.white"),
4411
+ "tag-accent-strong-stroke-color": transparent,
4548
4412
  "radius-app": match(theme).with({
4549
4413
  corners: "rounded"
4550
4414
  }, () => "2rem").with({
@@ -4578,12 +4442,12 @@ const generateTokenVars = (theme, color) => {
4578
4442
  }, () => "0.25rem").with({
4579
4443
  corners: "sharp"
4580
4444
  }, () => "0").otherwise(),
4581
- "interactive-neutral-bg": oklch(highContrast ? color["n-5"] : color["n-4"], 0.01),
4582
- "interactive-neutral-bg-hover": oklch(highContrast ? color["n-5"] : color["n-4"]),
4583
- "interactive-neutral-text": oklch(color["n-12"]),
4584
- "interactive-accent-bg": oklch(highlights === "fill" ? color["a-4"] : color["a-3"], 0.01),
4585
- "interactive-accent-bg-hover": oklch(highlights === "fill" ? color["a-4"] : color["a-3"]),
4586
- "interactive-accent-text": oklch(color["a-11"]),
4445
+ "interactive-neutral-bg": withOpacity(highContrast ? "n-5" : "n-4", 0.01),
4446
+ "interactive-neutral-bg-hover": highContrast ? core("color.n-5") : core("color.n-4"),
4447
+ "interactive-neutral-text": core("color.n-12"),
4448
+ "interactive-accent-bg": withOpacity(highlights === "fill" ? "a-4" : "a-3", 0.01),
4449
+ "interactive-accent-bg-hover": highlights === "fill" ? core("color.a-4") : core("color.a-3"),
4450
+ "interactive-accent-text": core("color.a-11"),
4587
4451
  "radius-interactive": match(theme).with({
4588
4452
  corners: "rounded"
4589
4453
  }, () => "1.5rem").with({
@@ -4591,43 +4455,42 @@ const generateTokenVars = (theme, color) => {
4591
4455
  }, () => ".5rem").with({
4592
4456
  corners: "sharp"
4593
4457
  }, () => "0").otherwise(),
4594
- "section-weak-bg": highlights === "fill" ? oklch(color["n-2"]) : transparent,
4595
- "section-strong-bg": highlights === "fill" ? highContrast ? oklch(color["n-3"]) : oklch(color["n-2"]) : transparent,
4596
- "section-weak-stroke-color": highlights === "fill" ? transparent : highContrast ? oklch(color["n-7"]) : oklch(color["n-3"]),
4597
- "section-strong-stroke-color": highlights === "fill" ? transparent : highContrast ? oklch(color["n-11"]) : oklch(color["n-4"]),
4458
+ "section-weak-bg": highlights === "fill" ? core("color.n-2") : transparent,
4459
+ "section-strong-bg": highlights === "fill" ? highContrast ? core("color.n-3") : core("color.n-2") : transparent,
4460
+ "section-weak-stroke-color": highlights === "fill" ? transparent : highContrast ? core("color.n-7") : core("color.n-3"),
4461
+ "section-strong-stroke-color": highlights === "fill" ? transparent : highContrast ? core("color.n-11") : core("color.n-4"),
4598
4462
  "section-stroke-width": match(theme).with({
4599
4463
  highlights: "stroke",
4600
4464
  highcontrast: true
4601
4465
  }, () => "1.5px").otherwise(() => "1px"),
4602
4466
  "job-card-bg": match(theme).with({
4603
4467
  highlights: "fill"
4604
- }, () => oklch(color.lowest)).otherwise(() => transparent),
4468
+ }, () => core("color.lowest")).otherwise(() => transparent),
4605
4469
  "job-card-bg-active": match(theme).with({
4606
4470
  highlights: "fill"
4607
- }, () => oklch(color.lowest)).otherwise(() => transparent),
4608
- "job-card-stroke-color": highContrast ? oklch(color["n-10"]) : oklch(color["n-4"]),
4609
- "job-card-stroke-color-active": oklch(color["a-9"]),
4471
+ }, () => core("color.lowest")).otherwise(() => transparent),
4472
+ "job-card-stroke-color": highContrast ? core("color.n-10") : core("color.n-4"),
4473
+ "job-card-stroke-color-active": core("color.a-9"),
4610
4474
  "job-card-stroke-width": match(theme).with({
4611
4475
  highlights: "stroke",
4612
4476
  highcontrast: true
4613
4477
  }, () => "1.5px").otherwise(() => "1px")
4614
4478
  };
4615
- };
4479
+ }).component(() => ({}));
4480
+ const asInploiVar = asCssVar({
4481
+ prefix: "i-"
4482
+ });
4616
4483
  const generateColorThemeCss = (theme) => {
4617
- const generated = generateColorThemeVars(theme);
4618
- const prefixedVars = new Proxy(generated, {
4619
- get: (_2, prop) => prefixVar(prop)
4620
- });
4621
- const tokenCss = Object.entries(generateTokenVars(theme, prefixedVars)).map(([key, value]) => `${prefixInploi(key)}: ${value};`);
4622
- const colorsCss = Object.entries(generated).map(([key, value]) => {
4623
- invariant(key);
4624
- return `${prefixInploi(key)}: ${value};`;
4484
+ const core = tokens.from({
4485
+ theme,
4486
+ getToken: asInploiVar
4625
4487
  });
4488
+ const tokenCss = Object.entries(core.declarations).map(([key, value]) => `${key}: ${value};`);
4626
4489
  return `#${JOB_SEARCH_SCOPE_ELEMENT_ID} {
4627
- ${colorsCss.concat(tokenCss).join("\n")}
4490
+ ${tokenCss.concat(tokenCss).join("\n")}
4628
4491
  }`;
4629
4492
  };
4630
- 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"];
4493
+ const FILTER_KEYS = ["company_name", "employment_type", "location_type", "pay_type", "pay_currency", "pay_mask", "pay", "pay_min", "pay_max", "title", "industry", "category", "skills", "town", "city", "country", "contract_type", "pay_display"];
4631
4494
  const createJobSearchDomManager = () => {
4632
4495
  return {
4633
4496
  getRenderTargetElement: () => {
@@ -4650,7 +4513,7 @@ const jobSearchPlugin = (params) => sdk.createPlugin(({
4650
4513
  id: "inploi-job-search-theme"
4651
4514
  }, generateColorThemeCss(params.theme))];
4652
4515
  const App = y$2(ErrorBoundary, {
4653
- Fallback
4516
+ Fallback: UnstyledErrorView
4654
4517
  }, [styleElements, y$2(IconSpritesheet, {
4655
4518
  theme: params.theme
4656
4519
  }), y$2(JobSearch, {
@@ -4658,7 +4521,8 @@ const jobSearchPlugin = (params) => sdk.createPlugin(({
4658
4521
  apiClient,
4659
4522
  logger,
4660
4523
  analytics,
4661
- class: ((_a = params.theme.accessibility) == null ? void 0 : _a.reducedMotion) ? "reduced-motion" : void 0
4524
+ class: ((_a = params.theme.accessibility) == null ? void 0 : _a.reducedMotion) ? "reduced-motion" : void 0,
4525
+ jobCardConfig: params.jobCard
4662
4526
  })]);
4663
4527
  return {
4664
4528
  /** Returns a string with the initial rendering state of the UI.