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