@next-degree/pickle-shared-js 0.6.50 → 0.7.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/company_service_latest-DFxfjA2x.d.cts +4369 -0
- package/dist/company_service_latest-DFxfjA2x.d.ts +4369 -0
- package/dist/company_service_sanity--Aw-Y3Us.d.cts +7611 -0
- package/dist/company_service_sanity-B5FBDl-4.d.ts +7611 -0
- package/dist/components/buttons/BackButton.cjs +5 -1
- package/dist/components/buttons/BackButton.cjs.map +1 -1
- package/dist/components/buttons/BackButton.js +5 -1
- package/dist/components/buttons/BackButton.js.map +1 -1
- package/dist/components/company/CompanyTake.cjs +4 -2
- package/dist/components/company/CompanyTake.cjs.map +1 -1
- package/dist/components/company/CompanyTake.js +4 -2
- package/dist/components/company/CompanyTake.js.map +1 -1
- package/dist/components/jobPost/JobDescription.cjs +5 -3
- package/dist/components/jobPost/JobDescription.cjs.map +1 -1
- package/dist/components/jobPost/JobDescription.js +5 -3
- package/dist/components/jobPost/JobDescription.js.map +1 -1
- package/dist/components/jobPost/JobHeader.cjs +43 -37
- package/dist/components/jobPost/JobHeader.cjs.map +1 -1
- package/dist/components/jobPost/JobHeader.js +42 -36
- package/dist/components/jobPost/JobHeader.js.map +1 -1
- package/dist/components/jobPost/JobPost.cjs +92 -86
- package/dist/components/jobPost/JobPost.cjs.map +1 -1
- package/dist/components/jobPost/JobPost.d.cts +1 -1
- package/dist/components/jobPost/JobPost.d.ts +1 -1
- package/dist/components/jobPost/JobPost.js +92 -86
- package/dist/components/jobPost/JobPost.js.map +1 -1
- package/dist/components/primitives/avatar.cjs.map +1 -1
- package/dist/components/primitives/avatar.js.map +1 -1
- package/dist/components/primitives/command.cjs +6 -4
- package/dist/components/primitives/command.cjs.map +1 -1
- package/dist/components/primitives/command.d.cts +7 -7
- package/dist/components/primitives/command.d.ts +7 -7
- package/dist/components/primitives/command.js +6 -4
- package/dist/components/primitives/command.js.map +1 -1
- package/dist/components/primitives/dialog.cjs +4 -4
- package/dist/components/primitives/dialog.cjs.map +1 -1
- package/dist/components/primitives/dialog.js +6 -4
- package/dist/components/primitives/dialog.js.map +1 -1
- package/dist/components/primitives/input-otp.cjs +2 -2
- package/dist/components/primitives/input-otp.cjs.map +1 -1
- package/dist/components/primitives/input-otp.js +2 -2
- package/dist/components/primitives/input-otp.js.map +1 -1
- package/dist/components/primitives/popover.cjs +1 -1
- package/dist/components/primitives/popover.cjs.map +1 -1
- package/dist/components/primitives/popover.d.cts +1 -1
- package/dist/components/primitives/popover.d.ts +1 -1
- package/dist/components/primitives/popover.js +1 -1
- package/dist/components/primitives/popover.js.map +1 -1
- package/dist/components/primitives/separator.cjs.map +1 -1
- package/dist/components/primitives/separator.js.map +1 -1
- package/dist/components/primitives/tooltip.cjs.map +1 -1
- package/dist/components/primitives/tooltip.js.map +1 -1
- package/dist/components/ui/Avatar.cjs +2 -2
- package/dist/components/ui/Avatar.cjs.map +1 -1
- package/dist/components/ui/Avatar.js +4 -2
- package/dist/components/ui/Avatar.js.map +1 -1
- package/dist/components/ui/Badge.cjs.map +1 -1
- package/dist/components/ui/Badge.js.map +1 -1
- package/dist/components/ui/Button.cjs +3 -3
- package/dist/components/ui/Button.cjs.map +1 -1
- package/dist/components/ui/Button.d.cts +33 -0
- package/dist/components/ui/Button.d.ts +33 -0
- package/dist/components/ui/Button.js +5 -3
- package/dist/components/ui/Button.js.map +1 -1
- package/dist/components/ui/Checkbox.cjs.map +1 -1
- package/dist/components/ui/Checkbox.js.map +1 -1
- package/dist/components/ui/Combobox.cjs +111 -103
- package/dist/components/ui/Combobox.cjs.map +1 -1
- package/dist/components/ui/Combobox.d.cts +1 -1
- package/dist/components/ui/Combobox.d.ts +1 -1
- package/dist/components/ui/Combobox.js +108 -100
- package/dist/components/ui/Combobox.js.map +1 -1
- package/dist/components/ui/Counter.cjs +3 -1
- package/dist/components/ui/Counter.cjs.map +1 -1
- package/dist/components/ui/Counter.js +3 -1
- package/dist/components/ui/Counter.js.map +1 -1
- package/dist/components/ui/DatePicker.cjs +318 -0
- package/dist/components/ui/DatePicker.cjs.map +1 -0
- package/dist/components/ui/DatePicker.d.cts +16 -0
- package/dist/components/ui/DatePicker.d.ts +16 -0
- package/dist/components/ui/DatePicker.js +284 -0
- package/dist/components/ui/DatePicker.js.map +1 -0
- package/dist/components/ui/ErrorMessage.cjs.map +1 -1
- package/dist/components/ui/ErrorMessage.js.map +1 -1
- package/dist/components/ui/Icon.cjs.map +1 -1
- package/dist/components/ui/Icon.js.map +1 -1
- package/dist/components/ui/Input.cjs +3 -1
- package/dist/components/ui/Input.cjs.map +1 -1
- package/dist/components/ui/Input.d.cts +29 -0
- package/dist/components/ui/Input.d.ts +29 -0
- package/dist/components/ui/Input.js +3 -1
- package/dist/components/ui/Input.js.map +1 -1
- package/dist/components/ui/InputOtp.cjs +62 -58
- package/dist/components/ui/InputOtp.cjs.map +1 -1
- package/dist/components/ui/InputOtp.js +62 -58
- package/dist/components/ui/InputOtp.js.map +1 -1
- package/dist/components/ui/Label.cjs +5 -3
- package/dist/components/ui/Label.cjs.map +1 -1
- package/dist/components/ui/Label.js +7 -3
- package/dist/components/ui/Label.js.map +1 -1
- package/dist/components/ui/ListItem.cjs +7 -7
- package/dist/components/ui/ListItem.cjs.map +1 -1
- package/dist/components/ui/ListItem.js +10 -8
- package/dist/components/ui/ListItem.js.map +1 -1
- package/dist/components/ui/MapComponent.cjs.map +1 -1
- package/dist/components/ui/MapComponent.js +1 -1
- package/dist/components/ui/MapComponent.js.map +1 -1
- package/dist/components/ui/PlacesQueryInput.cjs +21 -13
- package/dist/components/ui/PlacesQueryInput.cjs.map +1 -1
- package/dist/components/ui/PlacesQueryInput.js +23 -13
- package/dist/components/ui/PlacesQueryInput.js.map +1 -1
- package/dist/components/ui/ReadMore.cjs +5 -3
- package/dist/components/ui/ReadMore.cjs.map +1 -1
- package/dist/components/ui/ReadMore.js +5 -3
- package/dist/components/ui/ReadMore.js.map +1 -1
- package/dist/components/ui/Select.cjs +63 -59
- package/dist/components/ui/Select.cjs.map +1 -1
- package/dist/components/ui/Select.js +61 -57
- package/dist/components/ui/Select.js.map +1 -1
- package/dist/components/ui/StepTabs.cjs.map +1 -1
- package/dist/components/ui/StepTabs.d.cts +1 -1
- package/dist/components/ui/StepTabs.d.ts +1 -1
- package/dist/components/ui/StepTabs.js.map +1 -1
- package/dist/components/ui/buttonShadcn.cjs +94 -0
- package/dist/components/ui/buttonShadcn.cjs.map +1 -0
- package/dist/components/ui/buttonShadcn.d.cts +14 -0
- package/dist/components/ui/buttonShadcn.d.ts +14 -0
- package/dist/components/ui/buttonShadcn.js +58 -0
- package/dist/components/ui/buttonShadcn.js.map +1 -0
- package/dist/components/ui/calendar.cjs +152 -0
- package/dist/components/ui/calendar.cjs.map +1 -0
- package/dist/components/ui/calendar.d.cts +11 -0
- package/dist/components/ui/calendar.d.ts +11 -0
- package/dist/components/ui/calendar.js +118 -0
- package/dist/components/ui/calendar.js.map +1 -0
- package/dist/{displayText-BCQw5Qq-.d.cts → displayText-CQRZ2fOT.d.cts} +2 -2
- package/dist/{displayText-Bqmpx1Va.d.ts → displayText-LlsLfkTS.d.ts} +2 -2
- package/dist/hooks/useDisplayText.cjs.map +1 -1
- package/dist/hooks/useDisplayText.d.cts +3 -3
- package/dist/hooks/useDisplayText.d.ts +3 -3
- package/dist/hooks/useDisplayText.js.map +1 -1
- package/dist/index.cjs +750 -728
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -13
- package/dist/index.d.ts +13 -13
- package/dist/index.js +759 -737
- package/dist/index.js.map +1 -1
- package/dist/job_posting_service_latest-B5tqLSgo.d.cts +4247 -0
- package/dist/job_posting_service_latest-B5tqLSgo.d.ts +4247 -0
- package/dist/job_posting_service_sanity-CeX9tlpb.d.ts +8093 -0
- package/dist/job_posting_service_sanity-D5Znr6Ba.d.cts +8093 -0
- package/dist/lib/google.cjs.map +1 -1
- package/dist/lib/google.js.map +1 -1
- package/dist/lib/locations.cjs.map +1 -1
- package/dist/lib/locations.d.cts +2 -2
- package/dist/lib/locations.d.ts +2 -2
- package/dist/lib/locations.js.map +1 -1
- package/dist/lib/mappings.cjs.map +1 -1
- package/dist/lib/mappings.d.cts +3 -3
- package/dist/lib/mappings.d.ts +3 -3
- package/dist/lib/mappings.js.map +1 -1
- package/dist/lib/salaryRange.cjs.map +1 -1
- package/dist/lib/salaryRange.d.cts +1 -1
- package/dist/lib/salaryRange.d.ts +1 -1
- package/dist/lib/salaryRange.js.map +1 -1
- package/dist/lib/utils.cjs.map +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/services/displayText.cjs.map +1 -1
- package/dist/services/displayText.d.cts +3 -3
- package/dist/services/displayText.d.ts +3 -3
- package/dist/services/displayText.js.map +1 -1
- package/dist/shared_pickle_output_latest-Bwfg5B4p.d.cts +350 -0
- package/dist/shared_pickle_output_latest-Bwfg5B4p.d.ts +350 -0
- package/dist/styles/globals.css +275 -0
- package/dist/styles/globals.css.map +1 -1
- package/dist/types/data/company_service_latest.cjs.map +1 -1
- package/dist/types/data/company_service_latest.d.cts +1 -1
- package/dist/types/data/company_service_latest.d.ts +1 -1
- package/dist/types/data/company_service_latest.js.map +1 -1
- package/dist/types/data/job_posting_service_latest.cjs +3 -1
- package/dist/types/data/job_posting_service_latest.cjs.map +1 -1
- package/dist/types/data/job_posting_service_latest.d.cts +1 -1
- package/dist/types/data/job_posting_service_latest.d.ts +1 -1
- package/dist/types/data/job_posting_service_latest.js +3 -1
- package/dist/types/data/job_posting_service_latest.js.map +1 -1
- package/dist/types/data/shared_pickle_output_latest.cjs.map +1 -1
- package/dist/types/data/shared_pickle_output_latest.d.cts +1 -1
- package/dist/types/data/shared_pickle_output_latest.d.ts +1 -1
- package/dist/types/data/shared_pickle_output_latest.js.map +1 -1
- package/dist/types/index.cjs +505 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +10 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.js +479 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/latest/company_service_latest.cjs +251 -0
- package/dist/types/latest/company_service_latest.cjs.map +1 -0
- package/dist/types/latest/company_service_latest.d.cts +2 -0
- package/dist/types/latest/company_service_latest.d.ts +2 -0
- package/dist/types/latest/company_service_latest.js +210 -0
- package/dist/types/latest/company_service_latest.js.map +1 -0
- package/dist/types/latest/custom/company_service_sanity.cjs +325 -0
- package/dist/types/latest/custom/company_service_sanity.cjs.map +1 -0
- package/dist/types/latest/custom/company_service_sanity.d.cts +4 -0
- package/dist/types/latest/custom/company_service_sanity.d.ts +4 -0
- package/dist/types/latest/custom/company_service_sanity.js +288 -0
- package/dist/types/latest/custom/company_service_sanity.js.map +1 -0
- package/dist/types/latest/custom/custom_sanity_models.cjs +43 -0
- package/dist/types/latest/custom/custom_sanity_models.cjs.map +1 -0
- package/dist/types/latest/custom/custom_sanity_models.d.cts +30 -0
- package/dist/types/latest/custom/custom_sanity_models.d.ts +30 -0
- package/dist/types/latest/custom/custom_sanity_models.js +17 -0
- package/dist/types/latest/custom/custom_sanity_models.js.map +1 -0
- package/dist/types/latest/custom/job_posting_service_sanity.cjs +376 -0
- package/dist/types/latest/custom/job_posting_service_sanity.cjs.map +1 -0
- package/dist/types/latest/custom/job_posting_service_sanity.d.cts +5 -0
- package/dist/types/latest/custom/job_posting_service_sanity.d.ts +5 -0
- package/dist/types/latest/custom/job_posting_service_sanity.js +331 -0
- package/dist/types/latest/custom/job_posting_service_sanity.js.map +1 -0
- package/dist/types/latest/job_posting_service_latest.cjs +293 -0
- package/dist/types/latest/job_posting_service_latest.cjs.map +1 -0
- package/dist/types/latest/job_posting_service_latest.d.cts +2 -0
- package/dist/types/latest/job_posting_service_latest.d.ts +2 -0
- package/dist/types/latest/job_posting_service_latest.js +257 -0
- package/dist/types/latest/job_posting_service_latest.js.map +1 -0
- package/dist/types/latest/shared_pickle_output_latest.cjs +109 -0
- package/dist/types/latest/shared_pickle_output_latest.cjs.map +1 -0
- package/dist/types/latest/shared_pickle_output_latest.d.cts +2 -0
- package/dist/types/latest/shared_pickle_output_latest.d.ts +2 -0
- package/dist/types/latest/shared_pickle_output_latest.js +75 -0
- package/dist/types/latest/shared_pickle_output_latest.js.map +1 -0
- package/package.json +27 -9
- package/dist/{company_service_latest-B7KhyYDc.d.cts → company_service_latest-8IMr2hMZ.d.cts} +142 -142
- package/dist/{company_service_latest-B7KhyYDc.d.ts → company_service_latest-8IMr2hMZ.d.ts} +142 -142
- package/dist/{job_posting_service_latest-C2z66hFK.d.cts → job_posting_service_latest-CKITrYyz.d.cts} +129 -129
- package/dist/{job_posting_service_latest-C2z66hFK.d.ts → job_posting_service_latest-CKITrYyz.d.ts} +129 -129
- package/dist/{shared_pickle_output_latest-_L9GxVle.d.cts → shared_pickle_output_latest-Cwf2EMdH.d.cts} +6 -6
- package/dist/{shared_pickle_output_latest-_L9GxVle.d.ts → shared_pickle_output_latest-Cwf2EMdH.d.ts} +6 -6
package/dist/index.cjs
CHANGED
|
@@ -65,9 +65,9 @@ __export(index_exports, {
|
|
|
65
65
|
});
|
|
66
66
|
module.exports = __toCommonJS(index_exports);
|
|
67
67
|
|
|
68
|
-
// src/components/ui/
|
|
69
|
-
var
|
|
70
|
-
var
|
|
68
|
+
// src/components/ui/Checkbox.tsx
|
|
69
|
+
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
|
|
70
|
+
var import_lucide_react = require("lucide-react");
|
|
71
71
|
var import_react = require("react");
|
|
72
72
|
|
|
73
73
|
// src/lib/utils.ts
|
|
@@ -77,68 +77,64 @@ function cn(...inputs) {
|
|
|
77
77
|
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
// src/components/ui/
|
|
80
|
+
// src/components/ui/Checkbox.tsx
|
|
81
81
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: cn("px-1 text-xs text-red-600", className), ...props, children: message });
|
|
85
|
-
}
|
|
86
|
-
var ErrorMessage_default = ErrorMessage;
|
|
87
|
-
|
|
88
|
-
// src/components/primitives/tooltip.tsx
|
|
89
|
-
var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"), 1);
|
|
90
|
-
var React = __toESM(require("react"), 1);
|
|
91
|
-
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
92
|
-
var TooltipProvider = TooltipPrimitive.Provider;
|
|
93
|
-
var Tooltip = TooltipPrimitive.Root;
|
|
94
|
-
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
95
|
-
var TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
96
|
-
TooltipPrimitive.Content,
|
|
82
|
+
var CheckboxToggle = (0, import_react.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
83
|
+
CheckboxPrimitive.Root,
|
|
97
84
|
{
|
|
98
85
|
ref,
|
|
99
|
-
sideOffset,
|
|
100
86
|
className: cn(
|
|
101
|
-
"
|
|
87
|
+
"group",
|
|
88
|
+
"peer",
|
|
89
|
+
"h-5",
|
|
90
|
+
"w-5",
|
|
91
|
+
"shrink-0",
|
|
92
|
+
"rounded-md",
|
|
93
|
+
"border",
|
|
94
|
+
"border-grey-10",
|
|
95
|
+
"outline",
|
|
96
|
+
"outline-1",
|
|
97
|
+
"outline-offset-2",
|
|
98
|
+
"outline-transparent",
|
|
99
|
+
"hover:border-grey-20",
|
|
100
|
+
"focus:outline-purple-100",
|
|
101
|
+
"active:border-green-80",
|
|
102
|
+
"disabled:cursor-not-allowed",
|
|
103
|
+
"disabled:opacity-50",
|
|
104
|
+
"data-[state=checked]:bg-green-80",
|
|
105
|
+
"data-[state=indeterminate]:bg-green-80",
|
|
106
|
+
"data-[state=checked]:text-white",
|
|
107
|
+
"data-[state=indeterminate]:text-primary-foreground",
|
|
108
|
+
props.disabled && "data-[state=checked]:text-foreground bg-grey-20 data-[state=checked]:bg-grey-20",
|
|
102
109
|
className
|
|
103
110
|
),
|
|
104
|
-
...props
|
|
111
|
+
...props,
|
|
112
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: [
|
|
113
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Check, { className: "hidden h-4 w-4 group-data-[state=checked]:block" }),
|
|
114
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Minus, { className: "hidden h-4 w-4 group-data-[state=indeterminate]:block" })
|
|
115
|
+
] })
|
|
105
116
|
}
|
|
106
117
|
));
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
),
|
|
122
|
-
...props,
|
|
123
|
-
children: [
|
|
124
|
-
text,
|
|
125
|
-
required && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-red-600", children: "\xA0*" })
|
|
126
|
-
]
|
|
127
|
-
}
|
|
128
|
-
),
|
|
129
|
-
!!description && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Tooltip, { children: [
|
|
130
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.InfoIcon, { className: "h-4 w-4" }) }),
|
|
131
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TooltipContent, { className: "max-w-48", children: description })
|
|
132
|
-
] }) })
|
|
133
|
-
] });
|
|
134
|
-
}
|
|
135
|
-
var Label_default = Label;
|
|
118
|
+
CheckboxToggle.displayName = CheckboxPrimitive.Root.displayName;
|
|
119
|
+
var Checkbox = (0, import_react.forwardRef)(
|
|
120
|
+
({ classNames, children, ...props }, ref) => {
|
|
121
|
+
const { disabled } = props;
|
|
122
|
+
const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`;
|
|
123
|
+
const labelClassName = disabled ? "text-grey-40 pointer-events-none" : "";
|
|
124
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: cn("flex space-x-2", classNames?.wrapper), children: [
|
|
125
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CheckboxToggle, { id, disabled, ref, ...props }),
|
|
126
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", { htmlFor: id, className: cn(labelClassName, classNames?.label), children })
|
|
127
|
+
] });
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
Checkbox.displayName = "Checkbox";
|
|
131
|
+
var Checkbox_default = Checkbox;
|
|
136
132
|
|
|
137
133
|
// src/components/ui/Chip.tsx
|
|
138
134
|
var import_cva = require("cva");
|
|
139
135
|
var import_tailwind_merge2 = require("tailwind-merge");
|
|
140
|
-
var
|
|
141
|
-
var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ (0,
|
|
136
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
137
|
+
var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: (0, import_tailwind_merge2.twMerge)(chipVariants({ variant, size, className })), ...props });
|
|
142
138
|
var chipVariants = (0, import_cva.cva)(["flex", "items-center", "rounded-3xl", "border", "w-fit"], {
|
|
143
139
|
variants: {
|
|
144
140
|
variant: {
|
|
@@ -160,300 +156,84 @@ var chipVariants = (0, import_cva.cva)(["flex", "items-center", "rounded-3xl", "
|
|
|
160
156
|
});
|
|
161
157
|
var Chip_default = Chip;
|
|
162
158
|
|
|
163
|
-
// src/components/
|
|
164
|
-
var
|
|
165
|
-
var
|
|
166
|
-
var
|
|
167
|
-
|
|
168
|
-
|
|
159
|
+
// src/components/ui/Input.tsx
|
|
160
|
+
var import_cva2 = require("cva");
|
|
161
|
+
var import_lucide_react3 = require("lucide-react");
|
|
162
|
+
var import_react2 = require("react");
|
|
163
|
+
|
|
164
|
+
// src/components/ui/ErrorMessage.tsx
|
|
165
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
166
|
+
function ErrorMessage({ message, className, ...props }) {
|
|
167
|
+
if (!message) return null;
|
|
168
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: cn("px-1 text-xs text-red-600", className), ...props, children: message });
|
|
169
|
+
}
|
|
170
|
+
var ErrorMessage_default = ErrorMessage;
|
|
171
|
+
|
|
172
|
+
// src/components/ui/Label.tsx
|
|
173
|
+
var import_lucide_react2 = require("lucide-react");
|
|
174
|
+
|
|
175
|
+
// src/components/primitives/tooltip.tsx
|
|
176
|
+
var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"), 1);
|
|
177
|
+
var React = __toESM(require("react"), 1);
|
|
178
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
179
|
+
var TooltipProvider = TooltipPrimitive.Provider;
|
|
180
|
+
var Tooltip = TooltipPrimitive.Root;
|
|
181
|
+
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
182
|
+
var TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
183
|
+
TooltipPrimitive.Content,
|
|
169
184
|
{
|
|
170
185
|
ref,
|
|
171
|
-
|
|
172
|
-
orientation,
|
|
186
|
+
sideOffset,
|
|
173
187
|
className: cn(
|
|
174
|
-
"
|
|
175
|
-
orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
|
|
188
|
+
"z-50 overflow-hidden rounded-md border border-neutral-200 bg-white px-3 py-1.5 text-sm text-neutral-950 shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50",
|
|
176
189
|
className
|
|
177
190
|
),
|
|
178
191
|
...props
|
|
179
192
|
}
|
|
180
193
|
));
|
|
181
|
-
|
|
194
|
+
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
182
195
|
|
|
183
|
-
// src/components/ui/
|
|
184
|
-
var
|
|
185
|
-
|
|
186
|
-
(
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
const containerRef = (0, import_react.useRef)(null);
|
|
191
|
-
(0, import_react.useEffect)(() => {
|
|
192
|
-
if (!value) return setSelected([]);
|
|
193
|
-
setSelected(Array.isArray(value) ? value : [value]);
|
|
194
|
-
}, [value]);
|
|
195
|
-
const toggleOpen = () => setOpen((prev) => !prev);
|
|
196
|
-
const closeOnEscape = (event) => event.key === "Escape" && setOpen(false);
|
|
197
|
-
const handleOnOpenChange = (isOpen) => (!multiselect || isOpen) && setOpen(isOpen);
|
|
198
|
-
const setValueOnEnter = (event, value2) => event.key === "Enter" && handleChange(value2);
|
|
199
|
-
const getLabel = () => selected.map((o) => options?.find((option) => option.value === o)?.title).join(", ");
|
|
200
|
-
const chipLabels = selected?.map((s) => options?.find(({ value: value2 }) => value2 === s)).filter(Boolean);
|
|
201
|
-
function handleChange(newValue) {
|
|
202
|
-
if (newValue === "" && !multiselect) return;
|
|
203
|
-
let newSelected = [];
|
|
204
|
-
setSelected((prev) => {
|
|
205
|
-
newSelected = prev.includes(newValue) ? prev.filter((item) => item !== newValue) : [...prev, newValue];
|
|
206
|
-
return multiselect ? newSelected : [newValue];
|
|
207
|
-
});
|
|
208
|
-
onChange?.(multiselect ? newSelected : newValue);
|
|
209
|
-
}
|
|
210
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
211
|
-
"div",
|
|
196
|
+
// src/components/ui/Label.tsx
|
|
197
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
198
|
+
function Label({ text, required, description, className, ...props }) {
|
|
199
|
+
if (!text) return null;
|
|
200
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex w-full flex-row gap-1", children: [
|
|
201
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
202
|
+
"label",
|
|
212
203
|
{
|
|
213
|
-
className: cn(
|
|
214
|
-
|
|
215
|
-
|
|
204
|
+
className: cn(
|
|
205
|
+
"text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
206
|
+
className
|
|
207
|
+
),
|
|
208
|
+
...props,
|
|
216
209
|
children: [
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
{
|
|
220
|
-
text: label,
|
|
221
|
-
htmlFor: props.name,
|
|
222
|
-
required: props.required,
|
|
223
|
-
description,
|
|
224
|
-
className: classNames?.label
|
|
225
|
-
}
|
|
226
|
-
),
|
|
227
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
228
|
-
SelectPrimitive.Root,
|
|
229
|
-
{
|
|
230
|
-
open,
|
|
231
|
-
value: selected.join(","),
|
|
232
|
-
onOpenChange: handleOnOpenChange,
|
|
233
|
-
onValueChange: multiselect ? void 0 : handleChange,
|
|
234
|
-
defaultValue: typeof defaultValue === "string" ? defaultValue : void 0,
|
|
235
|
-
dir: dir === "rtl" ? "rtl" : "ltr",
|
|
236
|
-
...rest,
|
|
237
|
-
children: [
|
|
238
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
239
|
-
SelectPrimitive.Trigger,
|
|
240
|
-
{
|
|
241
|
-
ref,
|
|
242
|
-
className: cn(
|
|
243
|
-
"group flex h-11 w-full flex-row items-center justify-between gap-3 rounded-lg border px-4 py-3 text-sm font-normal focus:outline-purple-100 disabled:bg-grey-5 data-[placeholder]:text-grey-50 data-[placeholder]:disabled:text-grey-40",
|
|
244
|
-
classNames?.trigger
|
|
245
|
-
),
|
|
246
|
-
children: [
|
|
247
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "truncate", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
248
|
-
SelectPrimitive.Value,
|
|
249
|
-
{
|
|
250
|
-
placeholder: placeholder ?? "Select an option",
|
|
251
|
-
"aria-label": getLabel(),
|
|
252
|
-
children: getLabel()
|
|
253
|
-
}
|
|
254
|
-
) }),
|
|
255
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
256
|
-
import_lucide_react2.ChevronDownIcon,
|
|
257
|
-
{
|
|
258
|
-
className: "transform text-black group-data-[state=open]:rotate-180",
|
|
259
|
-
size: "16"
|
|
260
|
-
}
|
|
261
|
-
)
|
|
262
|
-
]
|
|
263
|
-
}
|
|
264
|
-
),
|
|
265
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.Portal, { container: containerRef.current, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
266
|
-
SelectPrimitive.Content,
|
|
267
|
-
{
|
|
268
|
-
hideWhenDetached: true,
|
|
269
|
-
className: "z-10 max-h-[var(--radix-select-content-available-height)] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-md bg-white py-2 shadow-lg",
|
|
270
|
-
position: "popper",
|
|
271
|
-
sideOffset: 4,
|
|
272
|
-
onPointerDownOutside: toggleOpen,
|
|
273
|
-
onKeyDown: closeOnEscape,
|
|
274
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(SelectPrimitive.Viewport, { children: [
|
|
275
|
-
multiselect && !!chipLabels?.length && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
276
|
-
SelectPrimitive.Group,
|
|
277
|
-
{
|
|
278
|
-
className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
|
|
279
|
-
"data-testid": "selected-labels",
|
|
280
|
-
children: chipLabels?.map(
|
|
281
|
-
(chip) => chip && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Chip_default, { size: "small", variant: "primary", children: [
|
|
282
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: chip.title }),
|
|
283
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
284
|
-
import_lucide_react2.X,
|
|
285
|
-
{
|
|
286
|
-
size: 18,
|
|
287
|
-
"data-testid": `chip-remove-${chip.value}`,
|
|
288
|
-
className: "cursor-pointer",
|
|
289
|
-
onClick: () => handleChange(chip.value)
|
|
290
|
-
}
|
|
291
|
-
)
|
|
292
|
-
] }, chip.title)
|
|
293
|
-
)
|
|
294
|
-
}
|
|
295
|
-
),
|
|
296
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Separator, {}),
|
|
297
|
-
options?.map(({ id: id2, title, value: value2 }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
298
|
-
SelectPrimitive.Item,
|
|
299
|
-
{
|
|
300
|
-
value: value2,
|
|
301
|
-
className: "group relative cursor-pointer px-4 py-2 text-left text-sm hover:bg-purple-50 focus:bg-purple-50 focus:outline-none data-[state=checked]:bg-purple-50 data-[state=checked]:pr-10 data-[state=checked]:text-purple-100",
|
|
302
|
-
"data-state": selected.includes(value2) ? "checked" : "unchecked",
|
|
303
|
-
onKeyDown: (e) => setValueOnEnter(e, value2),
|
|
304
|
-
onClick: () => handleChange(value2),
|
|
305
|
-
children: [
|
|
306
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.ItemText, { children: title }),
|
|
307
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
308
|
-
import_lucide_react2.CheckIcon,
|
|
309
|
-
{
|
|
310
|
-
className: "absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
|
|
311
|
-
size: 16
|
|
312
|
-
}
|
|
313
|
-
)
|
|
314
|
-
]
|
|
315
|
-
},
|
|
316
|
-
id2
|
|
317
|
-
))
|
|
318
|
-
] })
|
|
319
|
-
}
|
|
320
|
-
) })
|
|
321
|
-
]
|
|
322
|
-
}
|
|
323
|
-
),
|
|
324
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ErrorMessage_default, { message: error })
|
|
210
|
+
text,
|
|
211
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-red-600", children: "\xA0*" })
|
|
325
212
|
]
|
|
326
213
|
}
|
|
327
|
-
);
|
|
328
|
-
}
|
|
329
|
-
);
|
|
330
|
-
Select.displayName = "Select";
|
|
331
|
-
var Select_default = Select;
|
|
332
|
-
|
|
333
|
-
// src/components/ui/Checkbox.tsx
|
|
334
|
-
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
|
|
335
|
-
var import_lucide_react3 = require("lucide-react");
|
|
336
|
-
var import_react2 = require("react");
|
|
337
|
-
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
338
|
-
var CheckboxToggle = (0, import_react2.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
339
|
-
CheckboxPrimitive.Root,
|
|
340
|
-
{
|
|
341
|
-
ref,
|
|
342
|
-
className: cn(
|
|
343
|
-
"group",
|
|
344
|
-
"peer",
|
|
345
|
-
"h-5",
|
|
346
|
-
"w-5",
|
|
347
|
-
"shrink-0",
|
|
348
|
-
"rounded-md",
|
|
349
|
-
"border",
|
|
350
|
-
"border-grey-10",
|
|
351
|
-
"outline",
|
|
352
|
-
"outline-1",
|
|
353
|
-
"outline-offset-2",
|
|
354
|
-
"outline-transparent",
|
|
355
|
-
"hover:border-grey-20",
|
|
356
|
-
"focus:outline-purple-100",
|
|
357
|
-
"active:border-green-80",
|
|
358
|
-
"disabled:cursor-not-allowed",
|
|
359
|
-
"disabled:opacity-50",
|
|
360
|
-
"data-[state=checked]:bg-green-80",
|
|
361
|
-
"data-[state=indeterminate]:bg-green-80",
|
|
362
|
-
"data-[state=checked]:text-white",
|
|
363
|
-
"data-[state=indeterminate]:text-primary-foreground",
|
|
364
|
-
props.disabled && "data-[state=checked]:text-foreground bg-grey-20 data-[state=checked]:bg-grey-20",
|
|
365
|
-
className
|
|
366
214
|
),
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
/* @__PURE__ */ (0,
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
}
|
|
373
|
-
));
|
|
374
|
-
CheckboxToggle.displayName = CheckboxPrimitive.Root.displayName;
|
|
375
|
-
var Checkbox = (0, import_react2.forwardRef)(
|
|
376
|
-
({ classNames, children, ...props }, ref) => {
|
|
377
|
-
const { disabled } = props;
|
|
378
|
-
const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`;
|
|
379
|
-
const labelClassName = disabled ? "text-grey-40 pointer-events-none" : "";
|
|
380
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: cn("flex space-x-2", classNames?.wrapper), children: [
|
|
381
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CheckboxToggle, { id, disabled, ref, ...props }),
|
|
382
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("label", { htmlFor: id, className: cn(labelClassName, classNames?.label), children })
|
|
383
|
-
] });
|
|
384
|
-
}
|
|
385
|
-
);
|
|
386
|
-
Checkbox.displayName = "Checkbox";
|
|
387
|
-
var Checkbox_default = Checkbox;
|
|
388
|
-
|
|
389
|
-
// src/components/ui/ListItem.tsx
|
|
390
|
-
var import_lucide_react4 = require("lucide-react");
|
|
391
|
-
var import_lucide_react5 = require("lucide-react");
|
|
392
|
-
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
393
|
-
function ListItem({
|
|
394
|
-
icon,
|
|
395
|
-
hasCheckbox,
|
|
396
|
-
isSelected,
|
|
397
|
-
className,
|
|
398
|
-
title,
|
|
399
|
-
value,
|
|
400
|
-
description,
|
|
401
|
-
...props
|
|
402
|
-
}) {
|
|
403
|
-
const getIconIfValid = (icon2) => {
|
|
404
|
-
if (icon2 in import_lucide_react5.icons) {
|
|
405
|
-
const IconComponent = import_lucide_react5.icons[icon2];
|
|
406
|
-
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(IconComponent, { size: 14 });
|
|
407
|
-
}
|
|
408
|
-
return null;
|
|
409
|
-
};
|
|
410
|
-
const optionIcon = icon ? getIconIfValid(icon) : void 0;
|
|
411
|
-
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
412
|
-
"li",
|
|
413
|
-
{
|
|
414
|
-
className: cn(
|
|
415
|
-
"group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",
|
|
416
|
-
className
|
|
417
|
-
),
|
|
418
|
-
...props,
|
|
419
|
-
"data-state": isSelected ? "checked" : "unchecked",
|
|
420
|
-
children: [
|
|
421
|
-
optionIcon && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "mr-2", children: optionIcon }),
|
|
422
|
-
hasCheckbox && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Checkbox_default, { id: value, checked: isSelected, onClick: (e) => e.preventDefault() }),
|
|
423
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { children: [
|
|
424
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { children: title }),
|
|
425
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-xs text-grey-80", children: description })
|
|
426
|
-
] }),
|
|
427
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
428
|
-
import_lucide_react4.CheckIcon,
|
|
429
|
-
{
|
|
430
|
-
className: "absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",
|
|
431
|
-
size: 16
|
|
432
|
-
}
|
|
433
|
-
)
|
|
434
|
-
]
|
|
435
|
-
}
|
|
436
|
-
);
|
|
215
|
+
!!description && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(Tooltip, { children: [
|
|
216
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.InfoIcon, { className: "h-4 w-4" }) }),
|
|
217
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(TooltipContent, { className: "max-w-48", children: description })
|
|
218
|
+
] }) })
|
|
219
|
+
] });
|
|
437
220
|
}
|
|
438
|
-
var
|
|
221
|
+
var Label_default = Label;
|
|
439
222
|
|
|
440
223
|
// src/components/ui/Input.tsx
|
|
441
|
-
var
|
|
442
|
-
var
|
|
443
|
-
var import_react3 = require("react");
|
|
444
|
-
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
445
|
-
var Input = (0, import_react3.forwardRef)(
|
|
224
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
225
|
+
var Input = (0, import_react2.forwardRef)(
|
|
446
226
|
({ label, error, description, theme, icon, onClear, value, onChange, classNames, ...props }, ref) => {
|
|
447
227
|
const handleClear = () => {
|
|
448
228
|
onChange?.({ target: { value: "" } });
|
|
449
229
|
onClear?.();
|
|
450
230
|
};
|
|
451
|
-
const IconComponent = icon &&
|
|
231
|
+
const IconComponent = icon && import_lucide_react3.icons[icon];
|
|
452
232
|
const placeholder = props.placeholder ?? (icon === "Search" ? "Search..." : "");
|
|
453
233
|
const hasIcon = !!icon;
|
|
454
234
|
const iconColor = theme === "dark" ? "text-white" : "text-grey-80";
|
|
455
|
-
return /* @__PURE__ */ (0,
|
|
456
|
-
label && /* @__PURE__ */ (0,
|
|
235
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "group flex w-full flex-col gap-1", "data-testid": `input-wrapper-${props.id}`, children: [
|
|
236
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
457
237
|
Label_default,
|
|
458
238
|
{
|
|
459
239
|
text: label,
|
|
@@ -463,14 +243,14 @@ var Input = (0, import_react3.forwardRef)(
|
|
|
463
243
|
className: classNames?.label
|
|
464
244
|
}
|
|
465
245
|
),
|
|
466
|
-
/* @__PURE__ */ (0,
|
|
467
|
-
IconComponent && /* @__PURE__ */ (0,
|
|
246
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "relative flex flex-row items-center", children: [
|
|
247
|
+
IconComponent && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
468
248
|
IconComponent,
|
|
469
249
|
{
|
|
470
250
|
className: `absolute left-3 h-4 w-4 ${iconColor} opacity-50 group-hover:opacity-100`
|
|
471
251
|
}
|
|
472
252
|
),
|
|
473
|
-
/* @__PURE__ */ (0,
|
|
253
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
474
254
|
"input",
|
|
475
255
|
{
|
|
476
256
|
className: cn(inputVariants({ theme, hasIcon })),
|
|
@@ -482,8 +262,8 @@ var Input = (0, import_react3.forwardRef)(
|
|
|
482
262
|
...props
|
|
483
263
|
}
|
|
484
264
|
),
|
|
485
|
-
hasIcon && value && /* @__PURE__ */ (0,
|
|
486
|
-
|
|
265
|
+
hasIcon && value && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
266
|
+
import_lucide_react3.X,
|
|
487
267
|
{
|
|
488
268
|
className: `absolute right-3 h-4 w-4 cursor-pointer ${iconColor}`,
|
|
489
269
|
onClick: handleClear,
|
|
@@ -491,7 +271,7 @@ var Input = (0, import_react3.forwardRef)(
|
|
|
491
271
|
}
|
|
492
272
|
)
|
|
493
273
|
] }),
|
|
494
|
-
/* @__PURE__ */ (0,
|
|
274
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ErrorMessage_default, { message: error })
|
|
495
275
|
] });
|
|
496
276
|
}
|
|
497
277
|
);
|
|
@@ -542,13 +322,64 @@ var inputVariants = (0, import_cva2.cva)(
|
|
|
542
322
|
theme: "light",
|
|
543
323
|
hasIcon: false
|
|
544
324
|
}
|
|
545
|
-
}
|
|
546
|
-
);
|
|
547
|
-
var Input_default = Input;
|
|
325
|
+
}
|
|
326
|
+
);
|
|
327
|
+
var Input_default = Input;
|
|
328
|
+
|
|
329
|
+
// src/components/ui/ListItem.tsx
|
|
330
|
+
var import_lucide_react4 = require("lucide-react");
|
|
331
|
+
var import_lucide_react5 = require("lucide-react");
|
|
332
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
333
|
+
function ListItem({
|
|
334
|
+
icon,
|
|
335
|
+
hasCheckbox,
|
|
336
|
+
isSelected,
|
|
337
|
+
className,
|
|
338
|
+
title,
|
|
339
|
+
value,
|
|
340
|
+
description,
|
|
341
|
+
...props
|
|
342
|
+
}) {
|
|
343
|
+
const getIconIfValid = (icon2) => {
|
|
344
|
+
if (icon2 in import_lucide_react5.icons) {
|
|
345
|
+
const IconComponent = import_lucide_react5.icons[icon2];
|
|
346
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(IconComponent, { size: 14 });
|
|
347
|
+
}
|
|
348
|
+
return null;
|
|
349
|
+
};
|
|
350
|
+
const optionIcon = icon ? getIconIfValid(icon) : void 0;
|
|
351
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
352
|
+
"li",
|
|
353
|
+
{
|
|
354
|
+
className: cn(
|
|
355
|
+
"group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",
|
|
356
|
+
className
|
|
357
|
+
),
|
|
358
|
+
...props,
|
|
359
|
+
"data-state": isSelected ? "checked" : "unchecked",
|
|
360
|
+
children: [
|
|
361
|
+
optionIcon && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "mr-2", children: optionIcon }),
|
|
362
|
+
hasCheckbox && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Checkbox_default, { id: value, checked: isSelected, onClick: (e) => e.preventDefault() }),
|
|
363
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { children: [
|
|
364
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { children: title }),
|
|
365
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-xs text-grey-80", children: description })
|
|
366
|
+
] }),
|
|
367
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
368
|
+
import_lucide_react4.CheckIcon,
|
|
369
|
+
{
|
|
370
|
+
className: "absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",
|
|
371
|
+
size: 16
|
|
372
|
+
}
|
|
373
|
+
)
|
|
374
|
+
]
|
|
375
|
+
}
|
|
376
|
+
);
|
|
377
|
+
}
|
|
378
|
+
var ListItem_default = ListItem;
|
|
548
379
|
|
|
549
380
|
// src/components/ui/MapComponent.tsx
|
|
550
381
|
var import_react_google_maps = require("@vis.gl/react-google-maps");
|
|
551
|
-
var
|
|
382
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
552
383
|
function MapComponent({
|
|
553
384
|
apiKey,
|
|
554
385
|
mapId,
|
|
@@ -558,7 +389,7 @@ function MapComponent({
|
|
|
558
389
|
}) {
|
|
559
390
|
const defaultPosition = { lat: 40.715021, lng: -74.00459 };
|
|
560
391
|
const defaultZoom = 11;
|
|
561
|
-
return /* @__PURE__ */ (0,
|
|
392
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_google_maps.APIProvider, { apiKey, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: cn("h-screen max-w-full", className), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
562
393
|
import_react_google_maps.Map,
|
|
563
394
|
{
|
|
564
395
|
defaultZoom: position ? zoom : defaultZoom,
|
|
@@ -567,24 +398,28 @@ function MapComponent({
|
|
|
567
398
|
keyboardShortcuts: false,
|
|
568
399
|
disableDefaultUI: true,
|
|
569
400
|
zoomControl: true,
|
|
570
|
-
children: position && /* @__PURE__ */ (0,
|
|
401
|
+
children: position && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_google_maps.AdvancedMarker, { position, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_google_maps.Pin, { background: "#0B5441", borderColor: "#EBFDF1", glyphColor: "#D4F500" }) })
|
|
571
402
|
}
|
|
572
403
|
) }) });
|
|
573
404
|
}
|
|
574
405
|
var MapComponent_default = MapComponent;
|
|
575
406
|
|
|
407
|
+
// src/components/ui/PlacesQueryInput.tsx
|
|
408
|
+
var import_lucide_react8 = require("lucide-react");
|
|
409
|
+
var import_react3 = require("react");
|
|
410
|
+
|
|
576
411
|
// src/components/primitives/command.tsx
|
|
577
412
|
var import_cmdk = require("cmdk");
|
|
578
|
-
var
|
|
579
|
-
var
|
|
413
|
+
var import_lucide_react7 = require("lucide-react");
|
|
414
|
+
var React3 = __toESM(require("react"), 1);
|
|
580
415
|
|
|
581
416
|
// src/components/primitives/dialog.tsx
|
|
582
417
|
var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
583
|
-
var
|
|
584
|
-
var
|
|
585
|
-
var
|
|
418
|
+
var import_lucide_react6 = require("lucide-react");
|
|
419
|
+
var React2 = __toESM(require("react"), 1);
|
|
420
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
586
421
|
var DialogPortal = DialogPrimitive.Portal;
|
|
587
|
-
var DialogOverlay =
|
|
422
|
+
var DialogOverlay = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
588
423
|
DialogPrimitive.Overlay,
|
|
589
424
|
{
|
|
590
425
|
ref,
|
|
@@ -596,31 +431,31 @@ var DialogOverlay = React3.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
596
431
|
}
|
|
597
432
|
));
|
|
598
433
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
599
|
-
var DialogContent =
|
|
600
|
-
/* @__PURE__ */ (0,
|
|
601
|
-
/* @__PURE__ */ (0,
|
|
434
|
+
var DialogContent = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(DialogPortal, { children: [
|
|
435
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogOverlay, {}),
|
|
436
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
602
437
|
DialogPrimitive.Content,
|
|
603
438
|
{
|
|
604
439
|
ref,
|
|
605
440
|
className: cn(
|
|
606
|
-
"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-neutral-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]
|
|
441
|
+
"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-neutral-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] dark:border-neutral-800 dark:bg-neutral-950 sm:rounded-lg",
|
|
607
442
|
className
|
|
608
443
|
),
|
|
609
444
|
...props,
|
|
610
445
|
children: [
|
|
611
446
|
children,
|
|
612
|
-
/* @__PURE__ */ (0,
|
|
613
|
-
/* @__PURE__ */ (0,
|
|
614
|
-
/* @__PURE__ */ (0,
|
|
447
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-neutral-950 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-neutral-100 data-[state=open]:text-neutral-500 dark:ring-offset-neutral-950 dark:focus:ring-neutral-300 dark:data-[state=open]:bg-neutral-800 dark:data-[state=open]:text-neutral-400", children: [
|
|
448
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react6.X, { className: "h-4 w-4" }),
|
|
449
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "sr-only", children: "Close" })
|
|
615
450
|
] })
|
|
616
451
|
]
|
|
617
452
|
}
|
|
618
453
|
)
|
|
619
454
|
] }));
|
|
620
455
|
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
621
|
-
var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ (0,
|
|
456
|
+
var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props });
|
|
622
457
|
DialogHeader.displayName = "DialogHeader";
|
|
623
|
-
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0,
|
|
458
|
+
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
624
459
|
"div",
|
|
625
460
|
{
|
|
626
461
|
className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className),
|
|
@@ -628,7 +463,7 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_r
|
|
|
628
463
|
}
|
|
629
464
|
);
|
|
630
465
|
DialogFooter.displayName = "DialogFooter";
|
|
631
|
-
var DialogTitle =
|
|
466
|
+
var DialogTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
632
467
|
DialogPrimitive.Title,
|
|
633
468
|
{
|
|
634
469
|
ref,
|
|
@@ -637,7 +472,7 @@ var DialogTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
637
472
|
}
|
|
638
473
|
));
|
|
639
474
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
640
|
-
var DialogDescription =
|
|
475
|
+
var DialogDescription = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
641
476
|
DialogPrimitive.Description,
|
|
642
477
|
{
|
|
643
478
|
ref,
|
|
@@ -648,8 +483,8 @@ var DialogDescription = React3.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
648
483
|
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
649
484
|
|
|
650
485
|
// src/components/primitives/command.tsx
|
|
651
|
-
var
|
|
652
|
-
var Command =
|
|
486
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
487
|
+
var Command = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
653
488
|
import_cmdk.Command,
|
|
654
489
|
{
|
|
655
490
|
ref,
|
|
@@ -661,9 +496,9 @@ var Command = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
|
|
|
661
496
|
}
|
|
662
497
|
));
|
|
663
498
|
Command.displayName = import_cmdk.Command.displayName;
|
|
664
|
-
var CommandInput =
|
|
665
|
-
/* @__PURE__ */ (0,
|
|
666
|
-
/* @__PURE__ */ (0,
|
|
499
|
+
var CommandInput = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "m-1 flex items-center rounded-xl border px-3", "cmdk-input-wrapper": "", children: [
|
|
500
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_lucide_react7.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
|
|
501
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
667
502
|
import_cmdk.Command.Input,
|
|
668
503
|
{
|
|
669
504
|
ref,
|
|
@@ -676,7 +511,7 @@ var CommandInput = React4.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
676
511
|
)
|
|
677
512
|
] }));
|
|
678
513
|
CommandInput.displayName = import_cmdk.Command.Input.displayName;
|
|
679
|
-
var CommandList =
|
|
514
|
+
var CommandList = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
680
515
|
import_cmdk.Command.List,
|
|
681
516
|
{
|
|
682
517
|
ref,
|
|
@@ -685,9 +520,9 @@ var CommandList = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
685
520
|
}
|
|
686
521
|
));
|
|
687
522
|
CommandList.displayName = import_cmdk.Command.List.displayName;
|
|
688
|
-
var CommandEmpty =
|
|
523
|
+
var CommandEmpty = React3.forwardRef((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_cmdk.Command.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
|
|
689
524
|
CommandEmpty.displayName = import_cmdk.Command.Empty.displayName;
|
|
690
|
-
var CommandGroup =
|
|
525
|
+
var CommandGroup = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
691
526
|
import_cmdk.Command.Group,
|
|
692
527
|
{
|
|
693
528
|
ref,
|
|
@@ -699,7 +534,7 @@ var CommandGroup = React4.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
699
534
|
}
|
|
700
535
|
));
|
|
701
536
|
CommandGroup.displayName = import_cmdk.Command.Group.displayName;
|
|
702
|
-
var CommandSeparator =
|
|
537
|
+
var CommandSeparator = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
703
538
|
import_cmdk.Command.Separator,
|
|
704
539
|
{
|
|
705
540
|
ref,
|
|
@@ -708,7 +543,7 @@ var CommandSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
708
543
|
}
|
|
709
544
|
));
|
|
710
545
|
CommandSeparator.displayName = import_cmdk.Command.Separator.displayName;
|
|
711
|
-
var CommandItem =
|
|
546
|
+
var CommandItem = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
712
547
|
import_cmdk.Command.Item,
|
|
713
548
|
{
|
|
714
549
|
ref,
|
|
@@ -721,7 +556,7 @@ var CommandItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
721
556
|
));
|
|
722
557
|
CommandItem.displayName = import_cmdk.Command.Item.displayName;
|
|
723
558
|
var CommandShortcut = ({ className, ...props }) => {
|
|
724
|
-
return /* @__PURE__ */ (0,
|
|
559
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
725
560
|
"span",
|
|
726
561
|
{
|
|
727
562
|
className: cn("ml-auto text-xs tracking-widest text-neutral-500", className),
|
|
@@ -782,33 +617,37 @@ var geocode = async (address, key) => {
|
|
|
782
617
|
};
|
|
783
618
|
|
|
784
619
|
// src/components/ui/PlacesQueryInput.tsx
|
|
785
|
-
var
|
|
786
|
-
var import_react4 = require("react");
|
|
787
|
-
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
620
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
788
621
|
function PlacesQueryInput({
|
|
789
622
|
apiKey,
|
|
790
623
|
selected,
|
|
791
624
|
onSelect,
|
|
792
625
|
className
|
|
793
626
|
}) {
|
|
794
|
-
const [predictions, setPredictions] = (0,
|
|
795
|
-
const [input, setInput] = (0,
|
|
796
|
-
const [isLoadingPredictions, setIsLoadingPredictions] = (0,
|
|
797
|
-
const [shouldOpenUpward, setShouldOpenUpward] = (0,
|
|
798
|
-
const timeoutRef = (0,
|
|
799
|
-
const inputRef = (0,
|
|
800
|
-
const debouncedAutocomplete = (0,
|
|
627
|
+
const [predictions, setPredictions] = (0, import_react3.useState)(null);
|
|
628
|
+
const [input, setInput] = (0, import_react3.useState)(selected?.description ?? "");
|
|
629
|
+
const [isLoadingPredictions, setIsLoadingPredictions] = (0, import_react3.useState)(false);
|
|
630
|
+
const [shouldOpenUpward, setShouldOpenUpward] = (0, import_react3.useState)(false);
|
|
631
|
+
const timeoutRef = (0, import_react3.useRef)(null);
|
|
632
|
+
const inputRef = (0, import_react3.useRef)(null);
|
|
633
|
+
const debouncedAutocomplete = (0, import_react3.useCallback)((value) => {
|
|
801
634
|
if (timeoutRef.current) {
|
|
802
635
|
clearTimeout(timeoutRef.current);
|
|
803
636
|
}
|
|
804
637
|
timeoutRef.current = setTimeout(async () => {
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
638
|
+
try {
|
|
639
|
+
if (value.length > 2) {
|
|
640
|
+
setIsLoadingPredictions(true);
|
|
641
|
+
const fetchedPredictions = await autocomplete(value, apiKey);
|
|
642
|
+
setIsLoadingPredictions(false);
|
|
643
|
+
setPredictions(fetchedPredictions ?? []);
|
|
644
|
+
} else {
|
|
645
|
+
setPredictions(null);
|
|
646
|
+
}
|
|
647
|
+
} catch (error) {
|
|
648
|
+
setIsLoadingPredictions(false);
|
|
649
|
+
setPredictions([]);
|
|
650
|
+
console.error("Autocomplete error:", error);
|
|
812
651
|
}
|
|
813
652
|
}, 300);
|
|
814
653
|
}, []);
|
|
@@ -827,7 +666,7 @@ function PlacesQueryInput({
|
|
|
827
666
|
setInput("");
|
|
828
667
|
};
|
|
829
668
|
const handleBlur = () => setTimeout(() => setPredictions(null), 200);
|
|
830
|
-
(0,
|
|
669
|
+
(0, import_react3.useEffect)(() => {
|
|
831
670
|
const checkDropdownPosition = () => {
|
|
832
671
|
if (inputRef.current) {
|
|
833
672
|
const rect = inputRef.current.getBoundingClientRect();
|
|
@@ -839,9 +678,9 @@ function PlacesQueryInput({
|
|
|
839
678
|
window.addEventListener("resize", checkDropdownPosition);
|
|
840
679
|
return () => window.removeEventListener("resize", checkDropdownPosition);
|
|
841
680
|
}, []);
|
|
842
|
-
return /* @__PURE__ */ (0,
|
|
843
|
-
/* @__PURE__ */ (0,
|
|
844
|
-
/* @__PURE__ */ (0,
|
|
681
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: cn("relative w-full", className), ref: inputRef, onBlur: handleBlur, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Command, { children: [
|
|
682
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "relative w-full", children: [
|
|
683
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
845
684
|
CommandInput,
|
|
846
685
|
{
|
|
847
686
|
placeholder: "Type an address to search...",
|
|
@@ -850,18 +689,18 @@ function PlacesQueryInput({
|
|
|
850
689
|
className: "truncate pr-8"
|
|
851
690
|
}
|
|
852
691
|
),
|
|
853
|
-
isLoadingPredictions && /* @__PURE__ */ (0,
|
|
854
|
-
input && /* @__PURE__ */ (0,
|
|
692
|
+
isLoadingPredictions && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react8.LoaderCircle, { className: "absolute inset-y-0 right-2 my-auto flex h-8 w-8 animate-spin items-center justify-center rounded-full text-green-100" }),
|
|
693
|
+
input && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
855
694
|
"button",
|
|
856
695
|
{
|
|
857
696
|
type: "button",
|
|
858
697
|
className: "absolute inset-y-0 right-2 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20",
|
|
859
698
|
onClick: handleClear,
|
|
860
|
-
children: /* @__PURE__ */ (0,
|
|
699
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react8.CircleX, { className: "h-4 w-4 text-green-100" })
|
|
861
700
|
}
|
|
862
701
|
)
|
|
863
702
|
] }),
|
|
864
|
-
predictions && /* @__PURE__ */ (0,
|
|
703
|
+
predictions && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
865
704
|
CommandList,
|
|
866
705
|
{
|
|
867
706
|
className: cn(
|
|
@@ -869,8 +708,8 @@ function PlacesQueryInput({
|
|
|
869
708
|
shouldOpenUpward ? "bottom-full" : "top-full"
|
|
870
709
|
),
|
|
871
710
|
children: [
|
|
872
|
-
/* @__PURE__ */ (0,
|
|
873
|
-
/* @__PURE__ */ (0,
|
|
711
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CommandEmpty, { children: "No results" }),
|
|
712
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CommandGroup, { children: predictions.map((prediction) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
874
713
|
CommandItem,
|
|
875
714
|
{
|
|
876
715
|
onSelect: () => handleSelect(prediction),
|
|
@@ -884,17 +723,279 @@ function PlacesQueryInput({
|
|
|
884
723
|
)
|
|
885
724
|
] }) });
|
|
886
725
|
}
|
|
887
|
-
var PlacesQueryInput_default = PlacesQueryInput;
|
|
726
|
+
var PlacesQueryInput_default = PlacesQueryInput;
|
|
727
|
+
|
|
728
|
+
// src/components/ui/Select.tsx
|
|
729
|
+
var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
|
|
730
|
+
var import_lucide_react9 = require("lucide-react");
|
|
731
|
+
var import_react4 = require("react");
|
|
732
|
+
|
|
733
|
+
// src/components/primitives/separator.tsx
|
|
734
|
+
var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
|
|
735
|
+
var React4 = __toESM(require("react"), 1);
|
|
736
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
737
|
+
var Separator = React4.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
738
|
+
SeparatorPrimitive.Root,
|
|
739
|
+
{
|
|
740
|
+
ref,
|
|
741
|
+
decorative,
|
|
742
|
+
orientation,
|
|
743
|
+
className: cn(
|
|
744
|
+
"shrink-0 bg-grey-10",
|
|
745
|
+
orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
|
|
746
|
+
className
|
|
747
|
+
),
|
|
748
|
+
...props
|
|
749
|
+
}
|
|
750
|
+
));
|
|
751
|
+
Separator.displayName = SeparatorPrimitive.Root.displayName;
|
|
752
|
+
|
|
753
|
+
// src/components/ui/Select.tsx
|
|
754
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
755
|
+
var Select = (0, import_react4.forwardRef)(
|
|
756
|
+
({ label, options, placeholder, multiselect, description, classNames, error, id, ...props }, ref) => {
|
|
757
|
+
const { value, defaultValue, dir, className, onChange, ...rest } = props;
|
|
758
|
+
const [selected, setSelected] = (0, import_react4.useState)([]);
|
|
759
|
+
const [open, setOpen] = (0, import_react4.useState)(false);
|
|
760
|
+
const containerRef = (0, import_react4.useRef)(null);
|
|
761
|
+
(0, import_react4.useEffect)(() => {
|
|
762
|
+
if (!value) return setSelected([]);
|
|
763
|
+
setSelected(Array.isArray(value) ? value : [value]);
|
|
764
|
+
}, [value]);
|
|
765
|
+
const toggleOpen = () => setOpen((prev) => !prev);
|
|
766
|
+
const closeOnEscape = (event) => event.key === "Escape" && setOpen(false);
|
|
767
|
+
const handleOnOpenChange = (isOpen) => (!multiselect || isOpen) && setOpen(isOpen);
|
|
768
|
+
const setValueOnEnter = (event, value2) => event.key === "Enter" && handleChange(value2);
|
|
769
|
+
const getLabel = () => selected.map((o) => options?.find((option) => option.value === o)?.title).join(", ");
|
|
770
|
+
const chipLabels = selected?.map((s) => options?.find(({ value: value2 }) => value2 === s)).filter(Boolean);
|
|
771
|
+
function handleChange(newValue) {
|
|
772
|
+
if (newValue === "" && !multiselect) return;
|
|
773
|
+
let newSelected = [];
|
|
774
|
+
setSelected((prev) => {
|
|
775
|
+
newSelected = prev.includes(newValue) ? prev.filter((item) => item !== newValue) : [...prev, newValue];
|
|
776
|
+
return multiselect ? newSelected : [newValue];
|
|
777
|
+
});
|
|
778
|
+
onChange?.(multiselect ? newSelected : newValue);
|
|
779
|
+
}
|
|
780
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
781
|
+
"div",
|
|
782
|
+
{
|
|
783
|
+
className: cn("flex w-full flex-col gap-1", className),
|
|
784
|
+
ref: containerRef,
|
|
785
|
+
"data-testid": `${(label ?? id)?.toLowerCase()}-select-element`,
|
|
786
|
+
children: [
|
|
787
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
788
|
+
Label_default,
|
|
789
|
+
{
|
|
790
|
+
text: label,
|
|
791
|
+
htmlFor: props.name,
|
|
792
|
+
required: props.required,
|
|
793
|
+
description,
|
|
794
|
+
className: classNames?.label
|
|
795
|
+
}
|
|
796
|
+
),
|
|
797
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
798
|
+
SelectPrimitive.Root,
|
|
799
|
+
{
|
|
800
|
+
open,
|
|
801
|
+
value: selected.join(","),
|
|
802
|
+
onOpenChange: handleOnOpenChange,
|
|
803
|
+
onValueChange: multiselect ? void 0 : handleChange,
|
|
804
|
+
defaultValue: typeof defaultValue === "string" ? defaultValue : void 0,
|
|
805
|
+
dir: dir === "rtl" ? "rtl" : "ltr",
|
|
806
|
+
...rest,
|
|
807
|
+
children: [
|
|
808
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
809
|
+
SelectPrimitive.Trigger,
|
|
810
|
+
{
|
|
811
|
+
ref,
|
|
812
|
+
className: cn(
|
|
813
|
+
"group flex h-11 w-full flex-row items-center justify-between gap-3 rounded-lg border px-4 py-3 text-sm font-normal focus:outline-purple-100 disabled:bg-grey-5 data-[placeholder]:text-grey-50 data-[placeholder]:disabled:text-grey-40",
|
|
814
|
+
classNames?.trigger
|
|
815
|
+
),
|
|
816
|
+
children: [
|
|
817
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "truncate", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
818
|
+
SelectPrimitive.Value,
|
|
819
|
+
{
|
|
820
|
+
placeholder: placeholder ?? "Select an option",
|
|
821
|
+
"aria-label": getLabel(),
|
|
822
|
+
children: getLabel()
|
|
823
|
+
}
|
|
824
|
+
) }),
|
|
825
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
826
|
+
import_lucide_react9.ChevronDownIcon,
|
|
827
|
+
{
|
|
828
|
+
className: "transform text-black group-data-[state=open]:rotate-180",
|
|
829
|
+
size: "16"
|
|
830
|
+
}
|
|
831
|
+
)
|
|
832
|
+
]
|
|
833
|
+
}
|
|
834
|
+
),
|
|
835
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectPrimitive.Portal, { container: containerRef.current, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
836
|
+
SelectPrimitive.Content,
|
|
837
|
+
{
|
|
838
|
+
hideWhenDetached: true,
|
|
839
|
+
className: "z-10 max-h-[var(--radix-select-content-available-height)] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-md bg-white py-2 shadow-lg",
|
|
840
|
+
position: "popper",
|
|
841
|
+
sideOffset: 4,
|
|
842
|
+
onPointerDownOutside: toggleOpen,
|
|
843
|
+
onKeyDown: closeOnEscape,
|
|
844
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(SelectPrimitive.Viewport, { children: [
|
|
845
|
+
multiselect && !!chipLabels?.length && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
846
|
+
SelectPrimitive.Group,
|
|
847
|
+
{
|
|
848
|
+
className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
|
|
849
|
+
"data-testid": "selected-labels",
|
|
850
|
+
children: chipLabels?.map(
|
|
851
|
+
(chip) => chip && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Chip_default, { size: "small", variant: "primary", children: [
|
|
852
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: chip.title }),
|
|
853
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
854
|
+
import_lucide_react9.X,
|
|
855
|
+
{
|
|
856
|
+
size: 18,
|
|
857
|
+
"data-testid": `chip-remove-${chip.value}`,
|
|
858
|
+
className: "cursor-pointer",
|
|
859
|
+
onClick: () => handleChange(chip.value)
|
|
860
|
+
}
|
|
861
|
+
)
|
|
862
|
+
] }, chip.title)
|
|
863
|
+
)
|
|
864
|
+
}
|
|
865
|
+
),
|
|
866
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Separator, {}),
|
|
867
|
+
options?.map(({ id: id2, title, value: value2 }) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
868
|
+
SelectPrimitive.Item,
|
|
869
|
+
{
|
|
870
|
+
value: value2,
|
|
871
|
+
className: "group relative cursor-pointer px-4 py-2 text-left text-sm hover:bg-purple-50 focus:bg-purple-50 focus:outline-none data-[state=checked]:bg-purple-50 data-[state=checked]:pr-10 data-[state=checked]:text-purple-100",
|
|
872
|
+
"data-state": selected.includes(value2) ? "checked" : "unchecked",
|
|
873
|
+
onKeyDown: (e) => setValueOnEnter(e, value2),
|
|
874
|
+
onClick: () => handleChange(value2),
|
|
875
|
+
children: [
|
|
876
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectPrimitive.ItemText, { children: title }),
|
|
877
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
878
|
+
import_lucide_react9.CheckIcon,
|
|
879
|
+
{
|
|
880
|
+
className: "absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
|
|
881
|
+
size: 16
|
|
882
|
+
}
|
|
883
|
+
)
|
|
884
|
+
]
|
|
885
|
+
},
|
|
886
|
+
id2
|
|
887
|
+
))
|
|
888
|
+
] })
|
|
889
|
+
}
|
|
890
|
+
) })
|
|
891
|
+
]
|
|
892
|
+
}
|
|
893
|
+
),
|
|
894
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ErrorMessage_default, { message: error })
|
|
895
|
+
]
|
|
896
|
+
}
|
|
897
|
+
);
|
|
898
|
+
}
|
|
899
|
+
);
|
|
900
|
+
Select.displayName = "Select";
|
|
901
|
+
var Select_default = Select;
|
|
902
|
+
|
|
903
|
+
// src/components/ui/Avatar.tsx
|
|
904
|
+
var import_cva3 = require("cva");
|
|
905
|
+
var import_link = __toESM(require("next/link"), 1);
|
|
906
|
+
|
|
907
|
+
// src/components/primitives/avatar.tsx
|
|
908
|
+
var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"), 1);
|
|
909
|
+
var React5 = __toESM(require("react"), 1);
|
|
910
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
911
|
+
var AvatarBase = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
912
|
+
AvatarPrimitive.Root,
|
|
913
|
+
{
|
|
914
|
+
ref,
|
|
915
|
+
className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
|
|
916
|
+
...props
|
|
917
|
+
}
|
|
918
|
+
));
|
|
919
|
+
AvatarBase.displayName = AvatarPrimitive.Root.displayName;
|
|
920
|
+
var AvatarImage = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
921
|
+
AvatarPrimitive.Image,
|
|
922
|
+
{
|
|
923
|
+
ref,
|
|
924
|
+
className: cn("aspect-square h-full w-full", className),
|
|
925
|
+
"data-testid": "job-card-avatar",
|
|
926
|
+
...props
|
|
927
|
+
}
|
|
928
|
+
));
|
|
929
|
+
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
930
|
+
var AvatarFallback = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
931
|
+
AvatarPrimitive.Fallback,
|
|
932
|
+
{
|
|
933
|
+
ref,
|
|
934
|
+
className: cn(
|
|
935
|
+
"flex h-full w-full items-center justify-center rounded-full bg-pumpkin-100 py-2 text-sm font-bold capitalize leading-normal text-white md:text-lg",
|
|
936
|
+
className
|
|
937
|
+
),
|
|
938
|
+
...props
|
|
939
|
+
}
|
|
940
|
+
));
|
|
941
|
+
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
942
|
+
|
|
943
|
+
// src/components/ui/Avatar.tsx
|
|
944
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
945
|
+
function Avatar({ size, src, href, name, ...linkProps }) {
|
|
946
|
+
const fallbackShort = name?.slice(0, 2);
|
|
947
|
+
const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
|
|
948
|
+
const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
|
|
949
|
+
const renderAvatar = () => /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(AvatarBase, { className: avatarVariants({ size }), children: [
|
|
950
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(AvatarImage, { src, alt: name }),
|
|
951
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(AvatarFallback, { children: fallback?.toUpperCase() })
|
|
952
|
+
] });
|
|
953
|
+
if (href) {
|
|
954
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_link.default, { href, ...linkProps, children: renderAvatar() });
|
|
955
|
+
}
|
|
956
|
+
return renderAvatar();
|
|
957
|
+
}
|
|
958
|
+
var avatarVariants = (0, import_cva3.cva)("ring ring-white ring-2", {
|
|
959
|
+
variants: {
|
|
960
|
+
size: {
|
|
961
|
+
large: "h-16 w-16",
|
|
962
|
+
medium: "h-10 w-10",
|
|
963
|
+
small: "h-8 w-8"
|
|
964
|
+
}
|
|
965
|
+
},
|
|
966
|
+
defaultVariants: {
|
|
967
|
+
size: "medium"
|
|
968
|
+
}
|
|
969
|
+
});
|
|
970
|
+
|
|
971
|
+
// src/components/ui/Badge.tsx
|
|
972
|
+
var import_cva4 = require("cva");
|
|
973
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
974
|
+
var badgeVariants = (0, import_cva4.cva)("rounded-full px-2 py-0.5 text-xs font-semibold", {
|
|
975
|
+
variants: {
|
|
976
|
+
variant: {
|
|
977
|
+
green: "bg-green-90 text-white",
|
|
978
|
+
pickle: "bg-pickle-100 text-black",
|
|
979
|
+
purple: "bg-purple-100 text-white"
|
|
980
|
+
}
|
|
981
|
+
},
|
|
982
|
+
defaultVariants: {
|
|
983
|
+
variant: "green"
|
|
984
|
+
}
|
|
985
|
+
});
|
|
986
|
+
function Badge({ className, variant, ...props }) {
|
|
987
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
|
|
988
|
+
}
|
|
888
989
|
|
|
889
990
|
// src/components/ui/Button.tsx
|
|
890
991
|
var import_react_slot = require("@radix-ui/react-slot");
|
|
891
|
-
var
|
|
992
|
+
var import_cva5 = require("cva");
|
|
892
993
|
var import_react5 = require("react");
|
|
893
|
-
var
|
|
994
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
894
995
|
var Button = (0, import_react5.forwardRef)(
|
|
895
996
|
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
896
997
|
const Component = asChild ? import_react_slot.Slot : "button";
|
|
897
|
-
return /* @__PURE__ */ (0,
|
|
998
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
898
999
|
Component,
|
|
899
1000
|
{
|
|
900
1001
|
className: cn(buttonVariants({ variant, size, className })),
|
|
@@ -905,7 +1006,7 @@ var Button = (0, import_react5.forwardRef)(
|
|
|
905
1006
|
}
|
|
906
1007
|
);
|
|
907
1008
|
Button.displayName = "Button";
|
|
908
|
-
var buttonVariants = (0,
|
|
1009
|
+
var buttonVariants = (0, import_cva5.cva)(
|
|
909
1010
|
[
|
|
910
1011
|
"flex",
|
|
911
1012
|
"items-center",
|
|
@@ -996,17 +1097,17 @@ var buttonVariants = (0, import_cva3.cva)(
|
|
|
996
1097
|
);
|
|
997
1098
|
|
|
998
1099
|
// src/components/ui/Combobox.tsx
|
|
999
|
-
var
|
|
1100
|
+
var import_cva6 = require("cva");
|
|
1000
1101
|
var import_lucide_react10 = require("lucide-react");
|
|
1001
|
-
var
|
|
1102
|
+
var import_react6 = require("react");
|
|
1002
1103
|
|
|
1003
1104
|
// src/components/primitives/popover.tsx
|
|
1004
|
-
var React6 = __toESM(require("react"), 1);
|
|
1005
1105
|
var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
|
|
1006
|
-
var
|
|
1106
|
+
var React7 = __toESM(require("react"), 1);
|
|
1107
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1007
1108
|
var Popover = PopoverPrimitive.Root;
|
|
1008
1109
|
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
1009
|
-
var PopoverContent =
|
|
1110
|
+
var PopoverContent = React7.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1010
1111
|
PopoverPrimitive.Content,
|
|
1011
1112
|
{
|
|
1012
1113
|
ref,
|
|
@@ -1021,27 +1122,8 @@ var PopoverContent = React6.forwardRef(({ className, align = "center", sideOffse
|
|
|
1021
1122
|
) }));
|
|
1022
1123
|
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
1023
1124
|
|
|
1024
|
-
// src/components/ui/Badge.tsx
|
|
1025
|
-
var import_cva4 = require("cva");
|
|
1026
|
-
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1027
|
-
var badgeVariants = (0, import_cva4.cva)("rounded-full px-2 py-0.5 text-xs font-semibold", {
|
|
1028
|
-
variants: {
|
|
1029
|
-
variant: {
|
|
1030
|
-
green: "bg-green-90 text-white",
|
|
1031
|
-
pickle: "bg-pickle-100 text-black",
|
|
1032
|
-
purple: "bg-purple-100 text-white"
|
|
1033
|
-
}
|
|
1034
|
-
},
|
|
1035
|
-
defaultVariants: {
|
|
1036
|
-
variant: "green"
|
|
1037
|
-
}
|
|
1038
|
-
});
|
|
1039
|
-
function Badge({ className, variant, ...props }) {
|
|
1040
|
-
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
|
|
1041
|
-
}
|
|
1042
|
-
|
|
1043
1125
|
// src/components/ui/Combobox.tsx
|
|
1044
|
-
var
|
|
1126
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1045
1127
|
var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
1046
1128
|
const {
|
|
1047
1129
|
id,
|
|
@@ -1092,14 +1174,18 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1092
1174
|
};
|
|
1093
1175
|
const handleClear = () => {
|
|
1094
1176
|
setSelected([]);
|
|
1095
|
-
|
|
1177
|
+
if (multiselect) {
|
|
1178
|
+
handleChange?.([]);
|
|
1179
|
+
} else {
|
|
1180
|
+
handleChange?.("");
|
|
1181
|
+
}
|
|
1096
1182
|
};
|
|
1097
1183
|
const handleDisplayValue = () => {
|
|
1098
1184
|
const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(", ") : placeholder;
|
|
1099
1185
|
return isDefault ? defaultLabel : label;
|
|
1100
1186
|
};
|
|
1101
|
-
return /* @__PURE__ */ (0,
|
|
1102
|
-
isDefault && /* @__PURE__ */ (0,
|
|
1187
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: cn("flex flex-col gap-1", className), children: [
|
|
1188
|
+
isDefault && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1103
1189
|
Label_default,
|
|
1104
1190
|
{
|
|
1105
1191
|
text: label,
|
|
@@ -1109,15 +1195,15 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1109
1195
|
className: classNames?.label
|
|
1110
1196
|
}
|
|
1111
1197
|
),
|
|
1112
|
-
/* @__PURE__ */ (0,
|
|
1113
|
-
/* @__PURE__ */ (0,
|
|
1114
|
-
/* @__PURE__ */ (0,
|
|
1198
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "relative flex", children: [
|
|
1199
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
|
|
1200
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1115
1201
|
PopoverTrigger,
|
|
1116
1202
|
{
|
|
1117
1203
|
asChild: true,
|
|
1118
1204
|
disabled: options.length === 0,
|
|
1119
1205
|
"data-testid": `${id ?? name}-combobox-trigger`,
|
|
1120
|
-
children: /* @__PURE__ */ (0,
|
|
1206
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
1121
1207
|
"div",
|
|
1122
1208
|
{
|
|
1123
1209
|
ref,
|
|
@@ -1128,9 +1214,9 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1128
1214
|
),
|
|
1129
1215
|
"aria-expanded": open,
|
|
1130
1216
|
children: [
|
|
1131
|
-
isDefault && IconComponent && /* @__PURE__ */ (0,
|
|
1132
|
-
isChip && !isEmpty && /* @__PURE__ */ (0,
|
|
1133
|
-
/* @__PURE__ */ (0,
|
|
1217
|
+
isDefault && IconComponent && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(IconComponent, { className: "h-4 w-4 shrink-0" }),
|
|
1218
|
+
isChip && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Badge, { variant: "purple", children: selected.length }),
|
|
1219
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1134
1220
|
"span",
|
|
1135
1221
|
{
|
|
1136
1222
|
className: cn(
|
|
@@ -1140,7 +1226,7 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1140
1226
|
children: handleDisplayValue()
|
|
1141
1227
|
}
|
|
1142
1228
|
),
|
|
1143
|
-
showChevron && /* @__PURE__ */ (0,
|
|
1229
|
+
showChevron && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1144
1230
|
import_lucide_react10.ChevronDownIcon,
|
|
1145
1231
|
{
|
|
1146
1232
|
className: "shrink-0 transform group-data-[state=open]:rotate-180",
|
|
@@ -1152,7 +1238,7 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1152
1238
|
)
|
|
1153
1239
|
}
|
|
1154
1240
|
),
|
|
1155
|
-
/* @__PURE__ */ (0,
|
|
1241
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1156
1242
|
PopoverContent,
|
|
1157
1243
|
{
|
|
1158
1244
|
className: cn(
|
|
@@ -1163,16 +1249,16 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1163
1249
|
collisionPadding: 8,
|
|
1164
1250
|
sideOffset: 4,
|
|
1165
1251
|
align: "start",
|
|
1166
|
-
children: /* @__PURE__ */ (0,
|
|
1167
|
-
!hideSearchBox && /* @__PURE__ */ (0,
|
|
1168
|
-
/* @__PURE__ */ (0,
|
|
1169
|
-
/* @__PURE__ */ (0,
|
|
1170
|
-
/* @__PURE__ */ (0,
|
|
1252
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Command, { children: [
|
|
1253
|
+
!hideSearchBox && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CommandInput, { placeholder: "Search..." }),
|
|
1254
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(CommandList, { children: [
|
|
1255
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CommandEmpty, { children: "No results" }),
|
|
1256
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CommandGroup, { children: options.map(({ id: id2, ...option }) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1171
1257
|
CommandItem,
|
|
1172
1258
|
{
|
|
1173
1259
|
value: option.title,
|
|
1174
1260
|
onSelect: () => handleSelect(option.value),
|
|
1175
|
-
children: /* @__PURE__ */ (0,
|
|
1261
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1176
1262
|
ListItem_default,
|
|
1177
1263
|
{
|
|
1178
1264
|
className: cn(classNames?.items, "truncate py-1"),
|
|
@@ -1185,26 +1271,26 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1185
1271
|
id2
|
|
1186
1272
|
)) })
|
|
1187
1273
|
] }),
|
|
1188
|
-
!!footer && /* @__PURE__ */ (0,
|
|
1274
|
+
!!footer && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Separator, {}),
|
|
1189
1275
|
footer && footer({ close })
|
|
1190
1276
|
] })
|
|
1191
1277
|
}
|
|
1192
1278
|
)
|
|
1193
1279
|
] }),
|
|
1194
|
-
isDefault && !isEmpty && /* @__PURE__ */ (0,
|
|
1280
|
+
isDefault && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1195
1281
|
"button",
|
|
1196
1282
|
{
|
|
1197
1283
|
type: "button",
|
|
1198
1284
|
className: "absolute inset-y-0 right-1 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20",
|
|
1199
1285
|
onClick: handleClear,
|
|
1200
|
-
children: /* @__PURE__ */ (0,
|
|
1286
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react10.CircleX, { className: "h-4 w-4 text-green-100" })
|
|
1201
1287
|
}
|
|
1202
1288
|
)
|
|
1203
1289
|
] })
|
|
1204
1290
|
] });
|
|
1205
1291
|
});
|
|
1206
1292
|
Combobox.displayName = "Combobox";
|
|
1207
|
-
var triggerVariants = (0,
|
|
1293
|
+
var triggerVariants = (0, import_cva6.cva)(
|
|
1208
1294
|
"group relative cursor-pointer text-green-100 flex flex-row items-center justify-between gap-2 border border-grey-20 focus:outline-green-80 disabled:bg-grey-5",
|
|
1209
1295
|
{
|
|
1210
1296
|
variants: {
|
|
@@ -1231,10 +1317,10 @@ var triggerVariants = (0, import_cva5.cva)(
|
|
|
1231
1317
|
);
|
|
1232
1318
|
|
|
1233
1319
|
// src/components/ui/Counter.tsx
|
|
1234
|
-
var
|
|
1320
|
+
var import_cva7 = require("cva");
|
|
1235
1321
|
var import_lucide_react11 = require("lucide-react");
|
|
1236
1322
|
var import_react7 = require("react");
|
|
1237
|
-
var
|
|
1323
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1238
1324
|
var Counter = (0, import_react7.forwardRef)(
|
|
1239
1325
|
({ label, error, min, max, step = 1, description, theme, value, classNames, onChange, ...props }, ref) => {
|
|
1240
1326
|
const [count, setCount] = (0, import_react7.useState)(0);
|
|
@@ -1269,13 +1355,13 @@ var Counter = (0, import_react7.forwardRef)(
|
|
|
1269
1355
|
onChange?.(newValue);
|
|
1270
1356
|
setCount(newValue);
|
|
1271
1357
|
};
|
|
1272
|
-
return /* @__PURE__ */ (0,
|
|
1358
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1273
1359
|
"div",
|
|
1274
1360
|
{
|
|
1275
1361
|
className: cn("flex w-auto flex-col gap-1", classNames?.root),
|
|
1276
1362
|
"data-testid": `counter-wrapper-${props.id}`,
|
|
1277
1363
|
children: [
|
|
1278
|
-
label && /* @__PURE__ */ (0,
|
|
1364
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1279
1365
|
Label_default,
|
|
1280
1366
|
{
|
|
1281
1367
|
text: label,
|
|
@@ -1285,17 +1371,17 @@ var Counter = (0, import_react7.forwardRef)(
|
|
|
1285
1371
|
className: classNames?.label
|
|
1286
1372
|
}
|
|
1287
1373
|
),
|
|
1288
|
-
/* @__PURE__ */ (0,
|
|
1289
|
-
/* @__PURE__ */ (0,
|
|
1374
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "relative flex w-[122px] flex-row items-center", children: [
|
|
1375
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1290
1376
|
"button",
|
|
1291
1377
|
{
|
|
1292
1378
|
type: "button",
|
|
1293
1379
|
className: "absolute inset-y-0 left-1 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20",
|
|
1294
1380
|
onClick: decrement,
|
|
1295
|
-
children: /* @__PURE__ */ (0,
|
|
1381
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react11.Minus, { className: "h-4 w-4 text-green-100" })
|
|
1296
1382
|
}
|
|
1297
1383
|
),
|
|
1298
|
-
/* @__PURE__ */ (0,
|
|
1384
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1299
1385
|
"input",
|
|
1300
1386
|
{
|
|
1301
1387
|
className: cn(counterVariants({ theme }), classNames?.input),
|
|
@@ -1306,24 +1392,24 @@ var Counter = (0, import_react7.forwardRef)(
|
|
|
1306
1392
|
...props
|
|
1307
1393
|
}
|
|
1308
1394
|
),
|
|
1309
|
-
/* @__PURE__ */ (0,
|
|
1395
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1310
1396
|
"button",
|
|
1311
1397
|
{
|
|
1312
1398
|
type: "button",
|
|
1313
1399
|
className: "absolute inset-y-0 right-1 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20",
|
|
1314
1400
|
onClick: increment,
|
|
1315
|
-
children: /* @__PURE__ */ (0,
|
|
1401
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react11.Plus, { className: "h-4 w-4 text-green-100" })
|
|
1316
1402
|
}
|
|
1317
1403
|
)
|
|
1318
1404
|
] }),
|
|
1319
|
-
/* @__PURE__ */ (0,
|
|
1405
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ErrorMessage_default, { message: error })
|
|
1320
1406
|
]
|
|
1321
1407
|
}
|
|
1322
1408
|
);
|
|
1323
1409
|
}
|
|
1324
1410
|
);
|
|
1325
1411
|
Counter.displayName = "Counter";
|
|
1326
|
-
var counterVariants = (0,
|
|
1412
|
+
var counterVariants = (0, import_cva7.cva)(
|
|
1327
1413
|
[
|
|
1328
1414
|
"border-input",
|
|
1329
1415
|
"placeholder:text-muted-foreground",
|
|
@@ -1373,167 +1459,16 @@ var counterVariants = (0, import_cva6.cva)(
|
|
|
1373
1459
|
}
|
|
1374
1460
|
);
|
|
1375
1461
|
|
|
1376
|
-
// src/components/ui/InputOtp.tsx
|
|
1377
|
-
var import_react8 = require("react");
|
|
1378
|
-
|
|
1379
|
-
// src/components/primitives/input-otp.tsx
|
|
1380
|
-
var React7 = __toESM(require("react"), 1);
|
|
1381
|
-
var import_input_otp = require("input-otp");
|
|
1382
|
-
var import_lucide_react12 = require("lucide-react");
|
|
1383
|
-
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1384
|
-
var InputOTP = React7.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1385
|
-
import_input_otp.OTPInput,
|
|
1386
|
-
{
|
|
1387
|
-
ref,
|
|
1388
|
-
containerClassName: cn(
|
|
1389
|
-
"flex items-center gap-2 has-[:disabled]:opacity-50",
|
|
1390
|
-
containerClassName
|
|
1391
|
-
),
|
|
1392
|
-
className: cn("disabled:cursor-not-allowed", className),
|
|
1393
|
-
...props
|
|
1394
|
-
}
|
|
1395
|
-
));
|
|
1396
|
-
InputOTP.displayName = "InputOTP";
|
|
1397
|
-
var InputOTPGroup = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { ref, className: cn("flex items-center", className), ...props }));
|
|
1398
|
-
InputOTPGroup.displayName = "InputOTPGroup";
|
|
1399
|
-
var InputOTPSlot = React7.forwardRef(({ index, error, className, ...props }, ref) => {
|
|
1400
|
-
const inputOTPContext = React7.useContext(import_input_otp.OTPInputContext);
|
|
1401
|
-
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
|
|
1402
|
-
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
1403
|
-
"div",
|
|
1404
|
-
{
|
|
1405
|
-
ref,
|
|
1406
|
-
className: cn(
|
|
1407
|
-
"relative flex h-10 w-10 items-center justify-center border-y border-r border-neutral-200 text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md dark:border-neutral-800",
|
|
1408
|
-
isActive && "z-10 ring-2 ring-purple-100 ring-offset-white dark:ring-purple-20 dark:ring-offset-purple-100",
|
|
1409
|
-
error && "border-red-500 dark:border-red-400",
|
|
1410
|
-
className
|
|
1411
|
-
),
|
|
1412
|
-
...props,
|
|
1413
|
-
children: [
|
|
1414
|
-
char,
|
|
1415
|
-
hasFakeCaret && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "animate-caret-blink h-4 w-px bg-neutral-950 duration-1000 dark:bg-neutral-50" }) })
|
|
1416
|
-
]
|
|
1417
|
-
}
|
|
1418
|
-
);
|
|
1419
|
-
});
|
|
1420
|
-
InputOTPSlot.displayName = "InputOTPSlot";
|
|
1421
|
-
var InputOTPSeparator = React7.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react12.Dot, {}) }));
|
|
1422
|
-
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
1423
|
-
|
|
1424
|
-
// src/components/ui/InputOtp.tsx
|
|
1425
|
-
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1426
|
-
var InputOtp = (0, import_react8.forwardRef)(
|
|
1427
|
-
({ digits, label, description, error, ...props }, ref) => {
|
|
1428
|
-
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1429
|
-
"div",
|
|
1430
|
-
{
|
|
1431
|
-
className: "group flex w-full flex-col gap-1",
|
|
1432
|
-
"data-testid": `input-otp-wrapper-${props.id}`,
|
|
1433
|
-
children: [
|
|
1434
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1435
|
-
Label_default,
|
|
1436
|
-
{
|
|
1437
|
-
text: label,
|
|
1438
|
-
htmlFor: props.name,
|
|
1439
|
-
required: props.required,
|
|
1440
|
-
description
|
|
1441
|
-
}
|
|
1442
|
-
),
|
|
1443
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "relative flex flex-row items-center", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1444
|
-
InputOTP,
|
|
1445
|
-
{
|
|
1446
|
-
ref,
|
|
1447
|
-
maxLength: digits,
|
|
1448
|
-
"data-testid": `input-otp-element-${props.id}`,
|
|
1449
|
-
...props,
|
|
1450
|
-
children: [...Array(digits)].map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(InputOTPGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(InputOTPSlot, { index, error: Boolean(error) }) }, index))
|
|
1451
|
-
}
|
|
1452
|
-
) }),
|
|
1453
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ErrorMessage_default, { message: error })
|
|
1454
|
-
]
|
|
1455
|
-
}
|
|
1456
|
-
);
|
|
1457
|
-
}
|
|
1458
|
-
);
|
|
1459
|
-
InputOtp.displayName = "Input";
|
|
1460
|
-
|
|
1461
|
-
// src/components/primitives/avatar.tsx
|
|
1462
|
-
var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"), 1);
|
|
1463
|
-
var React8 = __toESM(require("react"), 1);
|
|
1464
|
-
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1465
|
-
var AvatarBase = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1466
|
-
AvatarPrimitive.Root,
|
|
1467
|
-
{
|
|
1468
|
-
ref,
|
|
1469
|
-
className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
|
|
1470
|
-
...props
|
|
1471
|
-
}
|
|
1472
|
-
));
|
|
1473
|
-
AvatarBase.displayName = AvatarPrimitive.Root.displayName;
|
|
1474
|
-
var AvatarImage = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1475
|
-
AvatarPrimitive.Image,
|
|
1476
|
-
{
|
|
1477
|
-
ref,
|
|
1478
|
-
className: cn("aspect-square h-full w-full", className),
|
|
1479
|
-
"data-testid": "job-card-avatar",
|
|
1480
|
-
...props
|
|
1481
|
-
}
|
|
1482
|
-
));
|
|
1483
|
-
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
1484
|
-
var AvatarFallback = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1485
|
-
AvatarPrimitive.Fallback,
|
|
1486
|
-
{
|
|
1487
|
-
ref,
|
|
1488
|
-
className: cn(
|
|
1489
|
-
"flex h-full w-full items-center justify-center rounded-full bg-pumpkin-100 py-2 text-sm font-bold capitalize leading-normal text-white md:text-lg",
|
|
1490
|
-
className
|
|
1491
|
-
),
|
|
1492
|
-
...props
|
|
1493
|
-
}
|
|
1494
|
-
));
|
|
1495
|
-
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
1496
|
-
|
|
1497
|
-
// src/components/ui/Avatar.tsx
|
|
1498
|
-
var import_cva7 = require("cva");
|
|
1499
|
-
var import_link = __toESM(require("next/link"), 1);
|
|
1500
|
-
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1501
|
-
function Avatar({ size, src, href, name, ...linkProps }) {
|
|
1502
|
-
const fallbackShort = name?.slice(0, 2);
|
|
1503
|
-
const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
|
|
1504
|
-
const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
|
|
1505
|
-
const renderAvatar = () => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(AvatarBase, { className: avatarVariants({ size }), children: [
|
|
1506
|
-
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(AvatarImage, { src, alt: name }),
|
|
1507
|
-
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(AvatarFallback, { children: fallback?.toUpperCase() })
|
|
1508
|
-
] });
|
|
1509
|
-
if (href) {
|
|
1510
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_link.default, { href, ...linkProps, children: renderAvatar() });
|
|
1511
|
-
}
|
|
1512
|
-
return renderAvatar();
|
|
1513
|
-
}
|
|
1514
|
-
var avatarVariants = (0, import_cva7.cva)("ring ring-white ring-2", {
|
|
1515
|
-
variants: {
|
|
1516
|
-
size: {
|
|
1517
|
-
large: "h-16 w-16",
|
|
1518
|
-
medium: "h-10 w-10",
|
|
1519
|
-
small: "h-8 w-8"
|
|
1520
|
-
}
|
|
1521
|
-
},
|
|
1522
|
-
defaultVariants: {
|
|
1523
|
-
size: "medium"
|
|
1524
|
-
}
|
|
1525
|
-
});
|
|
1526
|
-
|
|
1527
1462
|
// src/components/ui/Icon.tsx
|
|
1528
1463
|
var import_react_slot2 = require("@radix-ui/react-slot");
|
|
1529
1464
|
var import_cva8 = require("cva");
|
|
1530
|
-
var
|
|
1465
|
+
var import_react8 = require("react");
|
|
1531
1466
|
var import_tailwind_merge3 = require("tailwind-merge");
|
|
1532
|
-
var
|
|
1533
|
-
var Icon = (0,
|
|
1467
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1468
|
+
var Icon = (0, import_react8.forwardRef)(
|
|
1534
1469
|
({ variant, size, active = false, readonly = false, className, ...props }, ref) => {
|
|
1535
1470
|
const Component = readonly ? import_react_slot2.Slot : "button";
|
|
1536
|
-
return /* @__PURE__ */ (0,
|
|
1471
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1537
1472
|
Component,
|
|
1538
1473
|
{
|
|
1539
1474
|
className: cn(
|
|
@@ -1593,13 +1528,98 @@ var iconVariants = (0, import_cva8.cva)(
|
|
|
1593
1528
|
medium: ["h-12", "w-12", "p-4"],
|
|
1594
1529
|
large: ["h-14", "w-14", "p-4"]
|
|
1595
1530
|
}
|
|
1596
|
-
},
|
|
1597
|
-
defaultVariants: {
|
|
1598
|
-
variant: "filled",
|
|
1599
|
-
size: "medium"
|
|
1600
|
-
}
|
|
1531
|
+
},
|
|
1532
|
+
defaultVariants: {
|
|
1533
|
+
variant: "filled",
|
|
1534
|
+
size: "medium"
|
|
1535
|
+
}
|
|
1536
|
+
}
|
|
1537
|
+
);
|
|
1538
|
+
|
|
1539
|
+
// src/components/ui/InputOtp.tsx
|
|
1540
|
+
var import_react9 = require("react");
|
|
1541
|
+
|
|
1542
|
+
// src/components/primitives/input-otp.tsx
|
|
1543
|
+
var import_input_otp = require("input-otp");
|
|
1544
|
+
var import_lucide_react12 = require("lucide-react");
|
|
1545
|
+
var React8 = __toESM(require("react"), 1);
|
|
1546
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1547
|
+
var InputOTP = React8.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1548
|
+
import_input_otp.OTPInput,
|
|
1549
|
+
{
|
|
1550
|
+
ref,
|
|
1551
|
+
containerClassName: cn(
|
|
1552
|
+
"flex items-center gap-2 has-[:disabled]:opacity-50",
|
|
1553
|
+
containerClassName
|
|
1554
|
+
),
|
|
1555
|
+
className: cn("disabled:cursor-not-allowed", className),
|
|
1556
|
+
...props
|
|
1557
|
+
}
|
|
1558
|
+
));
|
|
1559
|
+
InputOTP.displayName = "InputOTP";
|
|
1560
|
+
var InputOTPGroup = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { ref, className: cn("flex items-center", className), ...props }));
|
|
1561
|
+
InputOTPGroup.displayName = "InputOTPGroup";
|
|
1562
|
+
var InputOTPSlot = React8.forwardRef(({ index, error, className, ...props }, ref) => {
|
|
1563
|
+
const inputOTPContext = React8.useContext(import_input_otp.OTPInputContext);
|
|
1564
|
+
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
|
|
1565
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
1566
|
+
"div",
|
|
1567
|
+
{
|
|
1568
|
+
ref,
|
|
1569
|
+
className: cn(
|
|
1570
|
+
"relative flex h-10 w-10 items-center justify-center border-y border-r border-neutral-200 text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md dark:border-neutral-800",
|
|
1571
|
+
isActive && "z-10 ring-2 ring-purple-100 ring-offset-white dark:ring-purple-20 dark:ring-offset-purple-100",
|
|
1572
|
+
error && "border-red-500 dark:border-red-400",
|
|
1573
|
+
className
|
|
1574
|
+
),
|
|
1575
|
+
...props,
|
|
1576
|
+
children: [
|
|
1577
|
+
char,
|
|
1578
|
+
hasFakeCaret && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "h-4 w-px animate-caret-blink bg-neutral-950 duration-1000 dark:bg-neutral-50" }) })
|
|
1579
|
+
]
|
|
1580
|
+
}
|
|
1581
|
+
);
|
|
1582
|
+
});
|
|
1583
|
+
InputOTPSlot.displayName = "InputOTPSlot";
|
|
1584
|
+
var InputOTPSeparator = React8.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react12.Dot, {}) }));
|
|
1585
|
+
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
1586
|
+
|
|
1587
|
+
// src/components/ui/InputOtp.tsx
|
|
1588
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1589
|
+
var InputOtp = (0, import_react9.forwardRef)(
|
|
1590
|
+
({ digits, label, description, error, ...props }, ref) => {
|
|
1591
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
1592
|
+
"div",
|
|
1593
|
+
{
|
|
1594
|
+
className: "group flex w-full flex-col gap-1",
|
|
1595
|
+
"data-testid": `input-otp-wrapper-${props.id}`,
|
|
1596
|
+
children: [
|
|
1597
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1598
|
+
Label_default,
|
|
1599
|
+
{
|
|
1600
|
+
text: label,
|
|
1601
|
+
htmlFor: props.name,
|
|
1602
|
+
required: props.required,
|
|
1603
|
+
description
|
|
1604
|
+
}
|
|
1605
|
+
),
|
|
1606
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "relative flex flex-row items-center", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1607
|
+
InputOTP,
|
|
1608
|
+
{
|
|
1609
|
+
ref,
|
|
1610
|
+
maxLength: digits,
|
|
1611
|
+
"data-testid": `input-otp-element-${props.id}`,
|
|
1612
|
+
...props,
|
|
1613
|
+
children: [...Array(digits)].map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(InputOTPGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(InputOTPSlot, { index, error: Boolean(error) }) }, index))
|
|
1614
|
+
}
|
|
1615
|
+
) }),
|
|
1616
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ErrorMessage_default, { message: error })
|
|
1617
|
+
]
|
|
1618
|
+
}
|
|
1619
|
+
);
|
|
1601
1620
|
}
|
|
1602
1621
|
);
|
|
1622
|
+
InputOtp.displayName = "Input";
|
|
1603
1623
|
|
|
1604
1624
|
// src/components/ui/LinkButton.tsx
|
|
1605
1625
|
var import_link2 = __toESM(require("next/link"), 1);
|
|
@@ -1805,7 +1825,11 @@ function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
|
1805
1825
|
const isAcceptedRoute = (r) => !!acceptedRoutes?.find((route) => new RegExp("^" + route + "$", "i").test(r));
|
|
1806
1826
|
const goBack = () => {
|
|
1807
1827
|
const previous = history[history.length - 2];
|
|
1808
|
-
history.length > 1 && isAcceptedRoute(previous)
|
|
1828
|
+
if (history.length > 1 && isAcceptedRoute(previous)) {
|
|
1829
|
+
router.back();
|
|
1830
|
+
} else {
|
|
1831
|
+
router.push(fallbackHref ?? "/");
|
|
1832
|
+
}
|
|
1809
1833
|
};
|
|
1810
1834
|
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1811
1835
|
Icon,
|
|
@@ -1993,102 +2017,6 @@ function JobHeader({
|
|
|
1993
2017
|
// src/components/jobPost/JobPost.tsx
|
|
1994
2018
|
var DateFns = __toESM(require("date-fns"), 1);
|
|
1995
2019
|
|
|
1996
|
-
// src/types/data/shared_pickle_output_latest.ts
|
|
1997
|
-
var shared_pickle_output_latest_exports = {};
|
|
1998
|
-
__export(shared_pickle_output_latest_exports, {
|
|
1999
|
-
CurrencyEnum: () => CurrencyEnum,
|
|
2000
|
-
DetailLevelEnum: () => DetailLevelEnum,
|
|
2001
|
-
TypeEnum: () => TypeEnum,
|
|
2002
|
-
UnitTextEnum: () => UnitTextEnum,
|
|
2003
|
-
imageAssetSchema: () => imageAssetSchema,
|
|
2004
|
-
imageSchema: () => imageSchema,
|
|
2005
|
-
monetaryAmountSchema: () => monetaryAmountSchema,
|
|
2006
|
-
placeSchema: () => placeSchema,
|
|
2007
|
-
postalAddressSchema: () => postalAddressSchema,
|
|
2008
|
-
quantitativeValueSchema: () => quantitativeValueSchema
|
|
2009
|
-
});
|
|
2010
|
-
var import_zod = require("zod");
|
|
2011
|
-
var TypeEnum = import_zod.z.enum(["IMAGE"]);
|
|
2012
|
-
var DetailLevelEnum = import_zod.z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
|
|
2013
|
-
var UnitTextEnum = import_zod.z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
|
|
2014
|
-
var CurrencyEnum = import_zod.z.enum(["EUR", "GBP", "USD"]);
|
|
2015
|
-
var postalAddressSchema = import_zod.z.object({
|
|
2016
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2017
|
-
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2018
|
-
addressCountry: import_zod.z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
|
|
2019
|
-
addressRegion: import_zod.z.optional(import_zod.z.string()).describe("The region in which the locality is, and which is in the country."),
|
|
2020
|
-
addressLocality: import_zod.z.optional(import_zod.z.string()).describe("The locality in which the street address is, and which is in the region. In the US this would be city."),
|
|
2021
|
-
streetAddress: import_zod.z.optional(import_zod.z.string()).describe("The street name of the address within the locality."),
|
|
2022
|
-
streetNumber: import_zod.z.optional(import_zod.z.string()).describe("The house of building number within the street."),
|
|
2023
|
-
postalCode: import_zod.z.optional(import_zod.z.string()).describe("The postal code"),
|
|
2024
|
-
description: import_zod.z.optional(import_zod.z.string()).describe("A descriptive string containing the full address.")
|
|
2025
|
-
});
|
|
2026
|
-
var placeSchema = import_zod.z.object({
|
|
2027
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2028
|
-
detailLevel: import_zod.z.optional(DetailLevelEnum),
|
|
2029
|
-
latitude: import_zod.z.optional(import_zod.z.number()).describe("The latitude of a location."),
|
|
2030
|
-
longitude: import_zod.z.optional(import_zod.z.number()).describe("The longitude of a location."),
|
|
2031
|
-
address: import_zod.z.optional(postalAddressSchema).describe("The physical place of the location")
|
|
2032
|
-
});
|
|
2033
|
-
var quantitativeValueSchema = import_zod.z.object({
|
|
2034
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2035
|
-
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2036
|
-
value: import_zod.z.optional(import_zod.z.number()).describe("The single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Typically used for a single salary."),
|
|
2037
|
-
minValue: import_zod.z.optional(import_zod.z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
|
|
2038
|
-
maxValue: import_zod.z.optional(import_zod.z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
|
|
2039
|
-
unitText: UnitTextEnum
|
|
2040
|
-
});
|
|
2041
|
-
var monetaryAmountSchema = import_zod.z.object({
|
|
2042
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2043
|
-
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2044
|
-
singleValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Deprecated - use value.value instead."),
|
|
2045
|
-
minValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
|
|
2046
|
-
maxValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
|
|
2047
|
-
value: import_zod.z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
|
|
2048
|
-
currency: import_zod.z.optional(CurrencyEnum)
|
|
2049
|
-
});
|
|
2050
|
-
var imageAssetSchema = import_zod.z.object({
|
|
2051
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2052
|
-
altText: import_zod.z.optional(import_zod.z.string()).describe("The alt text for the image"),
|
|
2053
|
-
assetId: import_zod.z.optional(import_zod.z.string()).describe("The asset ID for the image"),
|
|
2054
|
-
description: import_zod.z.optional(import_zod.z.string()).describe("The description for the image"),
|
|
2055
|
-
extension: import_zod.z.optional(import_zod.z.string()).describe("The extension for the image"),
|
|
2056
|
-
label: import_zod.z.optional(import_zod.z.string()).describe("The label for the image"),
|
|
2057
|
-
mimeType: import_zod.z.optional(import_zod.z.string()).describe("The mime type for the image"),
|
|
2058
|
-
originalFilename: import_zod.z.optional(import_zod.z.string()).describe("The original filename for the image"),
|
|
2059
|
-
path: import_zod.z.optional(import_zod.z.string()).describe("The path for the image"),
|
|
2060
|
-
sha1Hash: import_zod.z.optional(import_zod.z.string()).describe("The SHA1 hash for the image"),
|
|
2061
|
-
size: import_zod.z.optional(import_zod.z.number()).describe("The size for the image"),
|
|
2062
|
-
title: import_zod.z.optional(import_zod.z.string()).describe("The title for the image"),
|
|
2063
|
-
uploadId: import_zod.z.optional(import_zod.z.string()).describe("The upload ID for the image"),
|
|
2064
|
-
url: import_zod.z.optional(import_zod.z.string()).describe("The URL for the image")
|
|
2065
|
-
});
|
|
2066
|
-
var imageSchema = import_zod.z.object({
|
|
2067
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2068
|
-
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2069
|
-
asset: import_zod.z.optional(imageAssetSchema).describe("The asset for the image")
|
|
2070
|
-
});
|
|
2071
|
-
|
|
2072
|
-
// src/lib/salaryRange.ts
|
|
2073
|
-
function salaryRange(salary) {
|
|
2074
|
-
if (!salary) return null;
|
|
2075
|
-
const min = salary.minValue;
|
|
2076
|
-
const max = salary.maxValue;
|
|
2077
|
-
const single = salary.singleValue;
|
|
2078
|
-
const signs = {
|
|
2079
|
-
[CurrencyEnum.Values.USD]: "$",
|
|
2080
|
-
[CurrencyEnum.Values.GBP]: "\xA3",
|
|
2081
|
-
[CurrencyEnum.Values.EUR]: "\u20AC"
|
|
2082
|
-
};
|
|
2083
|
-
const sign = signs[salary.currency ?? CurrencyEnum.Values.USD];
|
|
2084
|
-
if (min == null && max == null && single == null) return null;
|
|
2085
|
-
if (single != null) return sign + single.toLocaleString();
|
|
2086
|
-
if (min === max) return sign + min?.toLocaleString();
|
|
2087
|
-
if (min != null && max != null)
|
|
2088
|
-
return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString();
|
|
2089
|
-
return null;
|
|
2090
|
-
}
|
|
2091
|
-
|
|
2092
2020
|
// src/hooks/useDisplayText.ts
|
|
2093
2021
|
var import_react13 = require("react");
|
|
2094
2022
|
|
|
@@ -2578,6 +2506,102 @@ function formattedJobLocation(job) {
|
|
|
2578
2506
|
return [address, remote].filter(Boolean).join(" | ");
|
|
2579
2507
|
}
|
|
2580
2508
|
|
|
2509
|
+
// src/types/data/shared_pickle_output_latest.ts
|
|
2510
|
+
var shared_pickle_output_latest_exports = {};
|
|
2511
|
+
__export(shared_pickle_output_latest_exports, {
|
|
2512
|
+
CurrencyEnum: () => CurrencyEnum,
|
|
2513
|
+
DetailLevelEnum: () => DetailLevelEnum,
|
|
2514
|
+
TypeEnum: () => TypeEnum,
|
|
2515
|
+
UnitTextEnum: () => UnitTextEnum,
|
|
2516
|
+
imageAssetSchema: () => imageAssetSchema,
|
|
2517
|
+
imageSchema: () => imageSchema,
|
|
2518
|
+
monetaryAmountSchema: () => monetaryAmountSchema,
|
|
2519
|
+
placeSchema: () => placeSchema,
|
|
2520
|
+
postalAddressSchema: () => postalAddressSchema,
|
|
2521
|
+
quantitativeValueSchema: () => quantitativeValueSchema
|
|
2522
|
+
});
|
|
2523
|
+
var import_zod = require("zod");
|
|
2524
|
+
var TypeEnum = import_zod.z.enum(["IMAGE"]);
|
|
2525
|
+
var DetailLevelEnum = import_zod.z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
|
|
2526
|
+
var UnitTextEnum = import_zod.z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
|
|
2527
|
+
var CurrencyEnum = import_zod.z.enum(["EUR", "GBP", "USD"]);
|
|
2528
|
+
var postalAddressSchema = import_zod.z.object({
|
|
2529
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2530
|
+
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2531
|
+
addressCountry: import_zod.z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
|
|
2532
|
+
addressRegion: import_zod.z.optional(import_zod.z.string()).describe("The region in which the locality is, and which is in the country."),
|
|
2533
|
+
addressLocality: import_zod.z.optional(import_zod.z.string()).describe("The locality in which the street address is, and which is in the region. In the US this would be city."),
|
|
2534
|
+
streetAddress: import_zod.z.optional(import_zod.z.string()).describe("The street name of the address within the locality."),
|
|
2535
|
+
streetNumber: import_zod.z.optional(import_zod.z.string()).describe("The house of building number within the street."),
|
|
2536
|
+
postalCode: import_zod.z.optional(import_zod.z.string()).describe("The postal code"),
|
|
2537
|
+
description: import_zod.z.optional(import_zod.z.string()).describe("A descriptive string containing the full address.")
|
|
2538
|
+
});
|
|
2539
|
+
var placeSchema = import_zod.z.object({
|
|
2540
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2541
|
+
detailLevel: import_zod.z.optional(DetailLevelEnum),
|
|
2542
|
+
latitude: import_zod.z.optional(import_zod.z.number()).describe("The latitude of a location."),
|
|
2543
|
+
longitude: import_zod.z.optional(import_zod.z.number()).describe("The longitude of a location."),
|
|
2544
|
+
address: import_zod.z.optional(postalAddressSchema).describe("The physical place of the location")
|
|
2545
|
+
});
|
|
2546
|
+
var quantitativeValueSchema = import_zod.z.object({
|
|
2547
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2548
|
+
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2549
|
+
value: import_zod.z.optional(import_zod.z.number()).describe("The single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Typically used for a single salary."),
|
|
2550
|
+
minValue: import_zod.z.optional(import_zod.z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
|
|
2551
|
+
maxValue: import_zod.z.optional(import_zod.z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
|
|
2552
|
+
unitText: UnitTextEnum
|
|
2553
|
+
});
|
|
2554
|
+
var monetaryAmountSchema = import_zod.z.object({
|
|
2555
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2556
|
+
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2557
|
+
singleValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Deprecated - use value.value instead."),
|
|
2558
|
+
minValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
|
|
2559
|
+
maxValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
|
|
2560
|
+
value: import_zod.z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
|
|
2561
|
+
currency: import_zod.z.optional(CurrencyEnum)
|
|
2562
|
+
});
|
|
2563
|
+
var imageAssetSchema = import_zod.z.object({
|
|
2564
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2565
|
+
altText: import_zod.z.optional(import_zod.z.string()).describe("The alt text for the image"),
|
|
2566
|
+
assetId: import_zod.z.optional(import_zod.z.string()).describe("The asset ID for the image"),
|
|
2567
|
+
description: import_zod.z.optional(import_zod.z.string()).describe("The description for the image"),
|
|
2568
|
+
extension: import_zod.z.optional(import_zod.z.string()).describe("The extension for the image"),
|
|
2569
|
+
label: import_zod.z.optional(import_zod.z.string()).describe("The label for the image"),
|
|
2570
|
+
mimeType: import_zod.z.optional(import_zod.z.string()).describe("The mime type for the image"),
|
|
2571
|
+
originalFilename: import_zod.z.optional(import_zod.z.string()).describe("The original filename for the image"),
|
|
2572
|
+
path: import_zod.z.optional(import_zod.z.string()).describe("The path for the image"),
|
|
2573
|
+
sha1Hash: import_zod.z.optional(import_zod.z.string()).describe("The SHA1 hash for the image"),
|
|
2574
|
+
size: import_zod.z.optional(import_zod.z.number()).describe("The size for the image"),
|
|
2575
|
+
title: import_zod.z.optional(import_zod.z.string()).describe("The title for the image"),
|
|
2576
|
+
uploadId: import_zod.z.optional(import_zod.z.string()).describe("The upload ID for the image"),
|
|
2577
|
+
url: import_zod.z.optional(import_zod.z.string()).describe("The URL for the image")
|
|
2578
|
+
});
|
|
2579
|
+
var imageSchema = import_zod.z.object({
|
|
2580
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2581
|
+
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2582
|
+
asset: import_zod.z.optional(imageAssetSchema).describe("The asset for the image")
|
|
2583
|
+
});
|
|
2584
|
+
|
|
2585
|
+
// src/lib/salaryRange.ts
|
|
2586
|
+
function salaryRange(salary) {
|
|
2587
|
+
if (!salary) return null;
|
|
2588
|
+
const min = salary.minValue;
|
|
2589
|
+
const max = salary.maxValue;
|
|
2590
|
+
const single = salary.singleValue;
|
|
2591
|
+
const signs = {
|
|
2592
|
+
[CurrencyEnum.Values.USD]: "$",
|
|
2593
|
+
[CurrencyEnum.Values.GBP]: "\xA3",
|
|
2594
|
+
[CurrencyEnum.Values.EUR]: "\u20AC"
|
|
2595
|
+
};
|
|
2596
|
+
const sign = signs[salary.currency ?? CurrencyEnum.Values.USD];
|
|
2597
|
+
if (min == null && max == null && single == null) return null;
|
|
2598
|
+
if (single != null) return sign + single.toLocaleString();
|
|
2599
|
+
if (min === max) return sign + min?.toLocaleString();
|
|
2600
|
+
if (min != null && max != null)
|
|
2601
|
+
return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString();
|
|
2602
|
+
return null;
|
|
2603
|
+
}
|
|
2604
|
+
|
|
2581
2605
|
// src/components/jobPost/JobPost.tsx
|
|
2582
2606
|
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
2583
2607
|
function JobPost({
|
|
@@ -2676,24 +2700,6 @@ function JobPost({
|
|
|
2676
2700
|
);
|
|
2677
2701
|
}
|
|
2678
2702
|
|
|
2679
|
-
// src/types/data/job_posting_service_latest.ts
|
|
2680
|
-
var job_posting_service_latest_exports = {};
|
|
2681
|
-
__export(job_posting_service_latest_exports, {
|
|
2682
|
-
BestFitEnum: () => BestFitEnum,
|
|
2683
|
-
ClinicalLicenseEnum: () => ClinicalLicenseEnum,
|
|
2684
|
-
ClinicalSettingEnum: () => ClinicalSettingEnum,
|
|
2685
|
-
ClinicalSpecialtyEnum: () => ClinicalSpecialtyEnum,
|
|
2686
|
-
EmploymentLevelEnum: () => EmploymentLevelEnum,
|
|
2687
|
-
EmploymentTypeEnum: () => EmploymentTypeEnum,
|
|
2688
|
-
JobFunctionEnum: () => JobFunctionEnum,
|
|
2689
|
-
JobLocationTypeEnum: () => JobLocationTypeEnum,
|
|
2690
|
-
PublishStatusEnum: () => PublishStatusEnum2,
|
|
2691
|
-
ShiftEnum: () => ShiftEnum,
|
|
2692
|
-
TypeEnum: () => TypeEnum3,
|
|
2693
|
-
jobPostSchema: () => jobPostSchema
|
|
2694
|
-
});
|
|
2695
|
-
var import_zod3 = require("zod");
|
|
2696
|
-
|
|
2697
2703
|
// src/types/data/company_service_latest.ts
|
|
2698
2704
|
var company_service_latest_exports = {};
|
|
2699
2705
|
__export(company_service_latest_exports, {
|
|
@@ -2841,6 +2847,22 @@ var officeSchema = import_zod2.z.object({
|
|
|
2841
2847
|
});
|
|
2842
2848
|
|
|
2843
2849
|
// src/types/data/job_posting_service_latest.ts
|
|
2850
|
+
var job_posting_service_latest_exports = {};
|
|
2851
|
+
__export(job_posting_service_latest_exports, {
|
|
2852
|
+
BestFitEnum: () => BestFitEnum,
|
|
2853
|
+
ClinicalLicenseEnum: () => ClinicalLicenseEnum,
|
|
2854
|
+
ClinicalSettingEnum: () => ClinicalSettingEnum,
|
|
2855
|
+
ClinicalSpecialtyEnum: () => ClinicalSpecialtyEnum,
|
|
2856
|
+
EmploymentLevelEnum: () => EmploymentLevelEnum,
|
|
2857
|
+
EmploymentTypeEnum: () => EmploymentTypeEnum,
|
|
2858
|
+
JobFunctionEnum: () => JobFunctionEnum,
|
|
2859
|
+
JobLocationTypeEnum: () => JobLocationTypeEnum,
|
|
2860
|
+
PublishStatusEnum: () => PublishStatusEnum2,
|
|
2861
|
+
ShiftEnum: () => ShiftEnum,
|
|
2862
|
+
TypeEnum: () => TypeEnum3,
|
|
2863
|
+
jobPostSchema: () => jobPostSchema
|
|
2864
|
+
});
|
|
2865
|
+
var import_zod3 = require("zod");
|
|
2844
2866
|
var TypeEnum3 = import_zod3.z.enum(["JOB_POST"]);
|
|
2845
2867
|
var JobLocationTypeEnum = import_zod3.z.enum(["FLOAT", "HYBRID", "ONSITE", "REMOTE"]);
|
|
2846
2868
|
var EmploymentTypeEnum = import_zod3.z.enum(["CONTRACT", "FULL_TIME", "INTERNSHIP", "OTHER", "PART_TIME", "PER_DIEM", "TEMPORARY"]);
|