@next-degree/pickle-shared-js 0.6.48 → 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 +18 -7
- package/dist/components/jobPost/JobDescription.cjs.map +1 -1
- package/dist/components/jobPost/JobDescription.js +18 -7
- 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 +105 -90
- 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 +105 -90
- 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 +18 -7
- package/dist/components/ui/ReadMore.cjs.map +1 -1
- package/dist/components/ui/ReadMore.js +18 -7
- package/dist/components/ui/ReadMore.js.map +1 -1
- package/dist/components/ui/Select.cjs +68 -70
- package/dist/components/ui/Select.cjs.map +1 -1
- package/dist/components/ui/Select.js +66 -68
- package/dist/components/ui/Select.js.map +1 -1
- package/dist/components/ui/StepTabs.cjs +92 -0
- package/dist/components/ui/StepTabs.cjs.map +1 -0
- package/dist/components/ui/StepTabs.d.cts +13 -0
- package/dist/components/ui/StepTabs.d.ts +13 -0
- package/dist/components/ui/StepTabs.js +58 -0
- package/dist/components/ui/StepTabs.js.map +1 -0
- 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-mYUVo6Ek.d.cts → displayText-CQRZ2fOT.d.cts} +2 -2
- package/dist/{displayText-DDf9iWyg.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 +763 -738
- 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 +772 -747
- 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_latest-Dn5s8beY.d.cts → job_posting_service_latest-CKITrYyz.d.cts} +230 -230
- package/dist/{job_posting_service_latest-Dn5s8beY.d.ts → job_posting_service_latest-CKITrYyz.d.ts} +230 -230
- 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 +371 -6
- 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 +28 -6
- package/dist/{company_service_latest-DelYl1hO.d.cts → company_service_latest-8IMr2hMZ.d.cts} +244 -244
- package/dist/{company_service_latest-DelYl1hO.d.ts → company_service_latest-8IMr2hMZ.d.ts} +244 -244
- package/dist/{shared_pickle_output_latest-DbAgINuf.d.cts → shared_pickle_output_latest-Cwf2EMdH.d.cts} +17 -17
- package/dist/{shared_pickle_output_latest-DbAgINuf.d.ts → shared_pickle_output_latest-Cwf2EMdH.d.ts} +17 -17
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,306 +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 setValueOnEnter = (event, value2) => event.key === "Enter" && handleChange(value2);
|
|
198
|
-
const chipLabels = selected?.map((s) => options?.find(({ value: value2 }) => value2 === s)).filter(Boolean);
|
|
199
|
-
function handleLabels() {
|
|
200
|
-
if (multiselect) {
|
|
201
|
-
return selected.map((o) => options?.find((option) => option.value === o)?.title).join(", ");
|
|
202
|
-
}
|
|
203
|
-
return options?.find((option) => option.value === selected.join())?.title;
|
|
204
|
-
}
|
|
205
|
-
function handleOnOpenChange(isOpen) {
|
|
206
|
-
if (!multiselect || isOpen) setOpen(isOpen);
|
|
207
|
-
}
|
|
208
|
-
function handleChange(newValue) {
|
|
209
|
-
let newSelected = [];
|
|
210
|
-
setSelected((prev) => {
|
|
211
|
-
newSelected = prev.includes(newValue) ? prev.filter((item) => item !== newValue) : [...prev, newValue];
|
|
212
|
-
return multiselect ? newSelected : [newValue];
|
|
213
|
-
});
|
|
214
|
-
onChange?.(multiselect ? newSelected : newValue);
|
|
215
|
-
}
|
|
216
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
217
|
-
"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",
|
|
218
203
|
{
|
|
219
|
-
className: cn(
|
|
220
|
-
|
|
221
|
-
|
|
204
|
+
className: cn(
|
|
205
|
+
"text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
206
|
+
className
|
|
207
|
+
),
|
|
208
|
+
...props,
|
|
222
209
|
children: [
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
{
|
|
226
|
-
text: label,
|
|
227
|
-
htmlFor: props.name,
|
|
228
|
-
required: props.required,
|
|
229
|
-
description,
|
|
230
|
-
className: classNames?.label
|
|
231
|
-
}
|
|
232
|
-
),
|
|
233
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
234
|
-
SelectPrimitive.Root,
|
|
235
|
-
{
|
|
236
|
-
open,
|
|
237
|
-
value: selected.join(","),
|
|
238
|
-
onOpenChange: handleOnOpenChange,
|
|
239
|
-
onValueChange: multiselect ? void 0 : handleChange,
|
|
240
|
-
defaultValue: typeof defaultValue === "string" ? defaultValue : void 0,
|
|
241
|
-
dir: dir === "rtl" ? "rtl" : "ltr",
|
|
242
|
-
...rest,
|
|
243
|
-
children: [
|
|
244
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
245
|
-
SelectPrimitive.Trigger,
|
|
246
|
-
{
|
|
247
|
-
ref,
|
|
248
|
-
className: cn(
|
|
249
|
-
"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",
|
|
250
|
-
classNames?.trigger
|
|
251
|
-
),
|
|
252
|
-
children: [
|
|
253
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "truncate", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
254
|
-
SelectPrimitive.Value,
|
|
255
|
-
{
|
|
256
|
-
placeholder: placeholder ?? "Select an option",
|
|
257
|
-
"aria-label": handleLabels(),
|
|
258
|
-
children: handleLabels()
|
|
259
|
-
}
|
|
260
|
-
) }),
|
|
261
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
262
|
-
import_lucide_react2.ChevronDownIcon,
|
|
263
|
-
{
|
|
264
|
-
className: "transform text-black group-data-[state=open]:rotate-180",
|
|
265
|
-
size: "16"
|
|
266
|
-
}
|
|
267
|
-
)
|
|
268
|
-
]
|
|
269
|
-
}
|
|
270
|
-
),
|
|
271
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.Portal, { container: containerRef.current, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
272
|
-
SelectPrimitive.Content,
|
|
273
|
-
{
|
|
274
|
-
hideWhenDetached: true,
|
|
275
|
-
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",
|
|
276
|
-
position: "popper",
|
|
277
|
-
sideOffset: 4,
|
|
278
|
-
onPointerDownOutside: toggleOpen,
|
|
279
|
-
onKeyDown: closeOnEscape,
|
|
280
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(SelectPrimitive.Viewport, { children: [
|
|
281
|
-
multiselect && !!chipLabels?.length && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
282
|
-
SelectPrimitive.Group,
|
|
283
|
-
{
|
|
284
|
-
className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
|
|
285
|
-
"data-testid": "selected-labels",
|
|
286
|
-
children: chipLabels?.map(
|
|
287
|
-
(chip) => chip && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Chip_default, { size: "small", variant: "primary", children: [
|
|
288
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: chip.title }),
|
|
289
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
290
|
-
import_lucide_react2.X,
|
|
291
|
-
{
|
|
292
|
-
size: 18,
|
|
293
|
-
"data-testid": `chip-remove-${chip.value}`,
|
|
294
|
-
className: "cursor-pointer",
|
|
295
|
-
onClick: () => handleChange(chip.value)
|
|
296
|
-
}
|
|
297
|
-
)
|
|
298
|
-
] }, chip.title)
|
|
299
|
-
)
|
|
300
|
-
}
|
|
301
|
-
),
|
|
302
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Separator, {}),
|
|
303
|
-
options?.map(({ id: id2, title, value: value2 }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
304
|
-
SelectPrimitive.Item,
|
|
305
|
-
{
|
|
306
|
-
value: value2,
|
|
307
|
-
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",
|
|
308
|
-
"data-state": selected.includes(value2) ? "checked" : "unchecked",
|
|
309
|
-
onKeyDown: (e) => setValueOnEnter(e, value2),
|
|
310
|
-
onClick: () => handleChange(value2),
|
|
311
|
-
children: [
|
|
312
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.ItemText, { children: title }),
|
|
313
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
314
|
-
import_lucide_react2.CheckIcon,
|
|
315
|
-
{
|
|
316
|
-
className: "absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
|
|
317
|
-
size: 16
|
|
318
|
-
}
|
|
319
|
-
)
|
|
320
|
-
]
|
|
321
|
-
},
|
|
322
|
-
id2
|
|
323
|
-
))
|
|
324
|
-
] })
|
|
325
|
-
}
|
|
326
|
-
) })
|
|
327
|
-
]
|
|
328
|
-
}
|
|
329
|
-
),
|
|
330
|
-
/* @__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*" })
|
|
331
212
|
]
|
|
332
213
|
}
|
|
333
|
-
);
|
|
334
|
-
}
|
|
335
|
-
);
|
|
336
|
-
Select.displayName = "Select";
|
|
337
|
-
var Select_default = Select;
|
|
338
|
-
|
|
339
|
-
// src/components/ui/Checkbox.tsx
|
|
340
|
-
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
|
|
341
|
-
var import_lucide_react3 = require("lucide-react");
|
|
342
|
-
var import_react2 = require("react");
|
|
343
|
-
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
344
|
-
var CheckboxToggle = (0, import_react2.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
345
|
-
CheckboxPrimitive.Root,
|
|
346
|
-
{
|
|
347
|
-
ref,
|
|
348
|
-
className: cn(
|
|
349
|
-
"group",
|
|
350
|
-
"peer",
|
|
351
|
-
"h-5",
|
|
352
|
-
"w-5",
|
|
353
|
-
"shrink-0",
|
|
354
|
-
"rounded-md",
|
|
355
|
-
"border",
|
|
356
|
-
"border-grey-10",
|
|
357
|
-
"outline",
|
|
358
|
-
"outline-1",
|
|
359
|
-
"outline-offset-2",
|
|
360
|
-
"outline-transparent",
|
|
361
|
-
"hover:border-grey-20",
|
|
362
|
-
"focus:outline-purple-100",
|
|
363
|
-
"active:border-green-80",
|
|
364
|
-
"disabled:cursor-not-allowed",
|
|
365
|
-
"disabled:opacity-50",
|
|
366
|
-
"data-[state=checked]:bg-green-80",
|
|
367
|
-
"data-[state=indeterminate]:bg-green-80",
|
|
368
|
-
"data-[state=checked]:text-white",
|
|
369
|
-
"data-[state=indeterminate]:text-primary-foreground",
|
|
370
|
-
props.disabled && "data-[state=checked]:text-foreground bg-grey-20 data-[state=checked]:bg-grey-20",
|
|
371
|
-
className
|
|
372
214
|
),
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
/* @__PURE__ */ (0,
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
}
|
|
379
|
-
));
|
|
380
|
-
CheckboxToggle.displayName = CheckboxPrimitive.Root.displayName;
|
|
381
|
-
var Checkbox = (0, import_react2.forwardRef)(
|
|
382
|
-
({ classNames, children, ...props }, ref) => {
|
|
383
|
-
const { disabled } = props;
|
|
384
|
-
const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`;
|
|
385
|
-
const labelClassName = disabled ? "text-grey-40 pointer-events-none" : "";
|
|
386
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: cn("flex space-x-2", classNames?.wrapper), children: [
|
|
387
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CheckboxToggle, { id, disabled, ref, ...props }),
|
|
388
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("label", { htmlFor: id, className: cn(labelClassName, classNames?.label), children })
|
|
389
|
-
] });
|
|
390
|
-
}
|
|
391
|
-
);
|
|
392
|
-
Checkbox.displayName = "Checkbox";
|
|
393
|
-
var Checkbox_default = Checkbox;
|
|
394
|
-
|
|
395
|
-
// src/components/ui/ListItem.tsx
|
|
396
|
-
var import_lucide_react4 = require("lucide-react");
|
|
397
|
-
var import_lucide_react5 = require("lucide-react");
|
|
398
|
-
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
399
|
-
function ListItem({
|
|
400
|
-
icon,
|
|
401
|
-
hasCheckbox,
|
|
402
|
-
isSelected,
|
|
403
|
-
className,
|
|
404
|
-
title,
|
|
405
|
-
value,
|
|
406
|
-
description,
|
|
407
|
-
...props
|
|
408
|
-
}) {
|
|
409
|
-
const getIconIfValid = (icon2) => {
|
|
410
|
-
if (icon2 in import_lucide_react5.icons) {
|
|
411
|
-
const IconComponent = import_lucide_react5.icons[icon2];
|
|
412
|
-
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(IconComponent, { size: 14 });
|
|
413
|
-
}
|
|
414
|
-
return null;
|
|
415
|
-
};
|
|
416
|
-
const optionIcon = icon ? getIconIfValid(icon) : void 0;
|
|
417
|
-
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
418
|
-
"li",
|
|
419
|
-
{
|
|
420
|
-
className: cn(
|
|
421
|
-
"group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",
|
|
422
|
-
className
|
|
423
|
-
),
|
|
424
|
-
...props,
|
|
425
|
-
"data-state": isSelected ? "checked" : "unchecked",
|
|
426
|
-
children: [
|
|
427
|
-
optionIcon && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "mr-2", children: optionIcon }),
|
|
428
|
-
hasCheckbox && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Checkbox_default, { id: value, checked: isSelected, onClick: (e) => e.preventDefault() }),
|
|
429
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { children: [
|
|
430
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { children: title }),
|
|
431
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-xs text-grey-80", children: description })
|
|
432
|
-
] }),
|
|
433
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
434
|
-
import_lucide_react4.CheckIcon,
|
|
435
|
-
{
|
|
436
|
-
className: "absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",
|
|
437
|
-
size: 16
|
|
438
|
-
}
|
|
439
|
-
)
|
|
440
|
-
]
|
|
441
|
-
}
|
|
442
|
-
);
|
|
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
|
+
] });
|
|
443
220
|
}
|
|
444
|
-
var
|
|
221
|
+
var Label_default = Label;
|
|
445
222
|
|
|
446
223
|
// src/components/ui/Input.tsx
|
|
447
|
-
var
|
|
448
|
-
var
|
|
449
|
-
var import_react3 = require("react");
|
|
450
|
-
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
451
|
-
var Input = (0, import_react3.forwardRef)(
|
|
224
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
225
|
+
var Input = (0, import_react2.forwardRef)(
|
|
452
226
|
({ label, error, description, theme, icon, onClear, value, onChange, classNames, ...props }, ref) => {
|
|
453
227
|
const handleClear = () => {
|
|
454
228
|
onChange?.({ target: { value: "" } });
|
|
455
229
|
onClear?.();
|
|
456
230
|
};
|
|
457
|
-
const IconComponent = icon &&
|
|
231
|
+
const IconComponent = icon && import_lucide_react3.icons[icon];
|
|
458
232
|
const placeholder = props.placeholder ?? (icon === "Search" ? "Search..." : "");
|
|
459
233
|
const hasIcon = !!icon;
|
|
460
234
|
const iconColor = theme === "dark" ? "text-white" : "text-grey-80";
|
|
461
|
-
return /* @__PURE__ */ (0,
|
|
462
|
-
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)(
|
|
463
237
|
Label_default,
|
|
464
238
|
{
|
|
465
239
|
text: label,
|
|
@@ -469,14 +243,14 @@ var Input = (0, import_react3.forwardRef)(
|
|
|
469
243
|
className: classNames?.label
|
|
470
244
|
}
|
|
471
245
|
),
|
|
472
|
-
/* @__PURE__ */ (0,
|
|
473
|
-
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)(
|
|
474
248
|
IconComponent,
|
|
475
249
|
{
|
|
476
250
|
className: `absolute left-3 h-4 w-4 ${iconColor} opacity-50 group-hover:opacity-100`
|
|
477
251
|
}
|
|
478
252
|
),
|
|
479
|
-
/* @__PURE__ */ (0,
|
|
253
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
480
254
|
"input",
|
|
481
255
|
{
|
|
482
256
|
className: cn(inputVariants({ theme, hasIcon })),
|
|
@@ -488,8 +262,8 @@ var Input = (0, import_react3.forwardRef)(
|
|
|
488
262
|
...props
|
|
489
263
|
}
|
|
490
264
|
),
|
|
491
|
-
hasIcon && value && /* @__PURE__ */ (0,
|
|
492
|
-
|
|
265
|
+
hasIcon && value && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
266
|
+
import_lucide_react3.X,
|
|
493
267
|
{
|
|
494
268
|
className: `absolute right-3 h-4 w-4 cursor-pointer ${iconColor}`,
|
|
495
269
|
onClick: handleClear,
|
|
@@ -497,7 +271,7 @@ var Input = (0, import_react3.forwardRef)(
|
|
|
497
271
|
}
|
|
498
272
|
)
|
|
499
273
|
] }),
|
|
500
|
-
/* @__PURE__ */ (0,
|
|
274
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ErrorMessage_default, { message: error })
|
|
501
275
|
] });
|
|
502
276
|
}
|
|
503
277
|
);
|
|
@@ -548,13 +322,64 @@ var inputVariants = (0, import_cva2.cva)(
|
|
|
548
322
|
theme: "light",
|
|
549
323
|
hasIcon: false
|
|
550
324
|
}
|
|
551
|
-
}
|
|
552
|
-
);
|
|
553
|
-
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;
|
|
554
379
|
|
|
555
380
|
// src/components/ui/MapComponent.tsx
|
|
556
381
|
var import_react_google_maps = require("@vis.gl/react-google-maps");
|
|
557
|
-
var
|
|
382
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
558
383
|
function MapComponent({
|
|
559
384
|
apiKey,
|
|
560
385
|
mapId,
|
|
@@ -564,7 +389,7 @@ function MapComponent({
|
|
|
564
389
|
}) {
|
|
565
390
|
const defaultPosition = { lat: 40.715021, lng: -74.00459 };
|
|
566
391
|
const defaultZoom = 11;
|
|
567
|
-
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)(
|
|
568
393
|
import_react_google_maps.Map,
|
|
569
394
|
{
|
|
570
395
|
defaultZoom: position ? zoom : defaultZoom,
|
|
@@ -573,24 +398,28 @@ function MapComponent({
|
|
|
573
398
|
keyboardShortcuts: false,
|
|
574
399
|
disableDefaultUI: true,
|
|
575
400
|
zoomControl: true,
|
|
576
|
-
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" }) })
|
|
577
402
|
}
|
|
578
403
|
) }) });
|
|
579
404
|
}
|
|
580
405
|
var MapComponent_default = MapComponent;
|
|
581
406
|
|
|
407
|
+
// src/components/ui/PlacesQueryInput.tsx
|
|
408
|
+
var import_lucide_react8 = require("lucide-react");
|
|
409
|
+
var import_react3 = require("react");
|
|
410
|
+
|
|
582
411
|
// src/components/primitives/command.tsx
|
|
583
412
|
var import_cmdk = require("cmdk");
|
|
584
|
-
var
|
|
585
|
-
var
|
|
413
|
+
var import_lucide_react7 = require("lucide-react");
|
|
414
|
+
var React3 = __toESM(require("react"), 1);
|
|
586
415
|
|
|
587
416
|
// src/components/primitives/dialog.tsx
|
|
588
417
|
var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
589
|
-
var
|
|
590
|
-
var
|
|
591
|
-
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");
|
|
592
421
|
var DialogPortal = DialogPrimitive.Portal;
|
|
593
|
-
var DialogOverlay =
|
|
422
|
+
var DialogOverlay = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
594
423
|
DialogPrimitive.Overlay,
|
|
595
424
|
{
|
|
596
425
|
ref,
|
|
@@ -602,31 +431,31 @@ var DialogOverlay = React3.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
602
431
|
}
|
|
603
432
|
));
|
|
604
433
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
605
|
-
var DialogContent =
|
|
606
|
-
/* @__PURE__ */ (0,
|
|
607
|
-
/* @__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)(
|
|
608
437
|
DialogPrimitive.Content,
|
|
609
438
|
{
|
|
610
439
|
ref,
|
|
611
440
|
className: cn(
|
|
612
|
-
"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",
|
|
613
442
|
className
|
|
614
443
|
),
|
|
615
444
|
...props,
|
|
616
445
|
children: [
|
|
617
446
|
children,
|
|
618
|
-
/* @__PURE__ */ (0,
|
|
619
|
-
/* @__PURE__ */ (0,
|
|
620
|
-
/* @__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" })
|
|
621
450
|
] })
|
|
622
451
|
]
|
|
623
452
|
}
|
|
624
453
|
)
|
|
625
454
|
] }));
|
|
626
455
|
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
627
|
-
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 });
|
|
628
457
|
DialogHeader.displayName = "DialogHeader";
|
|
629
|
-
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0,
|
|
458
|
+
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
630
459
|
"div",
|
|
631
460
|
{
|
|
632
461
|
className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className),
|
|
@@ -634,7 +463,7 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_r
|
|
|
634
463
|
}
|
|
635
464
|
);
|
|
636
465
|
DialogFooter.displayName = "DialogFooter";
|
|
637
|
-
var DialogTitle =
|
|
466
|
+
var DialogTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
638
467
|
DialogPrimitive.Title,
|
|
639
468
|
{
|
|
640
469
|
ref,
|
|
@@ -643,7 +472,7 @@ var DialogTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
643
472
|
}
|
|
644
473
|
));
|
|
645
474
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
646
|
-
var DialogDescription =
|
|
475
|
+
var DialogDescription = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
647
476
|
DialogPrimitive.Description,
|
|
648
477
|
{
|
|
649
478
|
ref,
|
|
@@ -654,8 +483,8 @@ var DialogDescription = React3.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
654
483
|
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
655
484
|
|
|
656
485
|
// src/components/primitives/command.tsx
|
|
657
|
-
var
|
|
658
|
-
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)(
|
|
659
488
|
import_cmdk.Command,
|
|
660
489
|
{
|
|
661
490
|
ref,
|
|
@@ -667,9 +496,9 @@ var Command = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
|
|
|
667
496
|
}
|
|
668
497
|
));
|
|
669
498
|
Command.displayName = import_cmdk.Command.displayName;
|
|
670
|
-
var CommandInput =
|
|
671
|
-
/* @__PURE__ */ (0,
|
|
672
|
-
/* @__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)(
|
|
673
502
|
import_cmdk.Command.Input,
|
|
674
503
|
{
|
|
675
504
|
ref,
|
|
@@ -682,7 +511,7 @@ var CommandInput = React4.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
682
511
|
)
|
|
683
512
|
] }));
|
|
684
513
|
CommandInput.displayName = import_cmdk.Command.Input.displayName;
|
|
685
|
-
var CommandList =
|
|
514
|
+
var CommandList = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
686
515
|
import_cmdk.Command.List,
|
|
687
516
|
{
|
|
688
517
|
ref,
|
|
@@ -691,9 +520,9 @@ var CommandList = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
691
520
|
}
|
|
692
521
|
));
|
|
693
522
|
CommandList.displayName = import_cmdk.Command.List.displayName;
|
|
694
|
-
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 }));
|
|
695
524
|
CommandEmpty.displayName = import_cmdk.Command.Empty.displayName;
|
|
696
|
-
var CommandGroup =
|
|
525
|
+
var CommandGroup = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
697
526
|
import_cmdk.Command.Group,
|
|
698
527
|
{
|
|
699
528
|
ref,
|
|
@@ -705,7 +534,7 @@ var CommandGroup = React4.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
705
534
|
}
|
|
706
535
|
));
|
|
707
536
|
CommandGroup.displayName = import_cmdk.Command.Group.displayName;
|
|
708
|
-
var CommandSeparator =
|
|
537
|
+
var CommandSeparator = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
709
538
|
import_cmdk.Command.Separator,
|
|
710
539
|
{
|
|
711
540
|
ref,
|
|
@@ -714,7 +543,7 @@ var CommandSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
714
543
|
}
|
|
715
544
|
));
|
|
716
545
|
CommandSeparator.displayName = import_cmdk.Command.Separator.displayName;
|
|
717
|
-
var CommandItem =
|
|
546
|
+
var CommandItem = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
718
547
|
import_cmdk.Command.Item,
|
|
719
548
|
{
|
|
720
549
|
ref,
|
|
@@ -727,7 +556,7 @@ var CommandItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
727
556
|
));
|
|
728
557
|
CommandItem.displayName = import_cmdk.Command.Item.displayName;
|
|
729
558
|
var CommandShortcut = ({ className, ...props }) => {
|
|
730
|
-
return /* @__PURE__ */ (0,
|
|
559
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
731
560
|
"span",
|
|
732
561
|
{
|
|
733
562
|
className: cn("ml-auto text-xs tracking-widest text-neutral-500", className),
|
|
@@ -788,33 +617,37 @@ var geocode = async (address, key) => {
|
|
|
788
617
|
};
|
|
789
618
|
|
|
790
619
|
// src/components/ui/PlacesQueryInput.tsx
|
|
791
|
-
var
|
|
792
|
-
var import_react4 = require("react");
|
|
793
|
-
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
620
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
794
621
|
function PlacesQueryInput({
|
|
795
622
|
apiKey,
|
|
796
623
|
selected,
|
|
797
624
|
onSelect,
|
|
798
625
|
className
|
|
799
626
|
}) {
|
|
800
|
-
const [predictions, setPredictions] = (0,
|
|
801
|
-
const [input, setInput] = (0,
|
|
802
|
-
const [isLoadingPredictions, setIsLoadingPredictions] = (0,
|
|
803
|
-
const [shouldOpenUpward, setShouldOpenUpward] = (0,
|
|
804
|
-
const timeoutRef = (0,
|
|
805
|
-
const inputRef = (0,
|
|
806
|
-
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) => {
|
|
807
634
|
if (timeoutRef.current) {
|
|
808
635
|
clearTimeout(timeoutRef.current);
|
|
809
636
|
}
|
|
810
637
|
timeoutRef.current = setTimeout(async () => {
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
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);
|
|
818
651
|
}
|
|
819
652
|
}, 300);
|
|
820
653
|
}, []);
|
|
@@ -833,7 +666,7 @@ function PlacesQueryInput({
|
|
|
833
666
|
setInput("");
|
|
834
667
|
};
|
|
835
668
|
const handleBlur = () => setTimeout(() => setPredictions(null), 200);
|
|
836
|
-
(0,
|
|
669
|
+
(0, import_react3.useEffect)(() => {
|
|
837
670
|
const checkDropdownPosition = () => {
|
|
838
671
|
if (inputRef.current) {
|
|
839
672
|
const rect = inputRef.current.getBoundingClientRect();
|
|
@@ -845,9 +678,9 @@ function PlacesQueryInput({
|
|
|
845
678
|
window.addEventListener("resize", checkDropdownPosition);
|
|
846
679
|
return () => window.removeEventListener("resize", checkDropdownPosition);
|
|
847
680
|
}, []);
|
|
848
|
-
return /* @__PURE__ */ (0,
|
|
849
|
-
/* @__PURE__ */ (0,
|
|
850
|
-
/* @__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)(
|
|
851
684
|
CommandInput,
|
|
852
685
|
{
|
|
853
686
|
placeholder: "Type an address to search...",
|
|
@@ -856,18 +689,18 @@ function PlacesQueryInput({
|
|
|
856
689
|
className: "truncate pr-8"
|
|
857
690
|
}
|
|
858
691
|
),
|
|
859
|
-
isLoadingPredictions && /* @__PURE__ */ (0,
|
|
860
|
-
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)(
|
|
861
694
|
"button",
|
|
862
695
|
{
|
|
863
696
|
type: "button",
|
|
864
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",
|
|
865
698
|
onClick: handleClear,
|
|
866
|
-
children: /* @__PURE__ */ (0,
|
|
699
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react8.CircleX, { className: "h-4 w-4 text-green-100" })
|
|
867
700
|
}
|
|
868
701
|
)
|
|
869
702
|
] }),
|
|
870
|
-
predictions && /* @__PURE__ */ (0,
|
|
703
|
+
predictions && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
871
704
|
CommandList,
|
|
872
705
|
{
|
|
873
706
|
className: cn(
|
|
@@ -875,8 +708,8 @@ function PlacesQueryInput({
|
|
|
875
708
|
shouldOpenUpward ? "bottom-full" : "top-full"
|
|
876
709
|
),
|
|
877
710
|
children: [
|
|
878
|
-
/* @__PURE__ */ (0,
|
|
879
|
-
/* @__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)(
|
|
880
713
|
CommandItem,
|
|
881
714
|
{
|
|
882
715
|
onSelect: () => handleSelect(prediction),
|
|
@@ -890,17 +723,279 @@ function PlacesQueryInput({
|
|
|
890
723
|
)
|
|
891
724
|
] }) });
|
|
892
725
|
}
|
|
893
|
-
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
|
+
}
|
|
894
989
|
|
|
895
990
|
// src/components/ui/Button.tsx
|
|
896
991
|
var import_react_slot = require("@radix-ui/react-slot");
|
|
897
|
-
var
|
|
992
|
+
var import_cva5 = require("cva");
|
|
898
993
|
var import_react5 = require("react");
|
|
899
|
-
var
|
|
994
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
900
995
|
var Button = (0, import_react5.forwardRef)(
|
|
901
996
|
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
902
997
|
const Component = asChild ? import_react_slot.Slot : "button";
|
|
903
|
-
return /* @__PURE__ */ (0,
|
|
998
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
904
999
|
Component,
|
|
905
1000
|
{
|
|
906
1001
|
className: cn(buttonVariants({ variant, size, className })),
|
|
@@ -911,7 +1006,7 @@ var Button = (0, import_react5.forwardRef)(
|
|
|
911
1006
|
}
|
|
912
1007
|
);
|
|
913
1008
|
Button.displayName = "Button";
|
|
914
|
-
var buttonVariants = (0,
|
|
1009
|
+
var buttonVariants = (0, import_cva5.cva)(
|
|
915
1010
|
[
|
|
916
1011
|
"flex",
|
|
917
1012
|
"items-center",
|
|
@@ -1002,17 +1097,17 @@ var buttonVariants = (0, import_cva3.cva)(
|
|
|
1002
1097
|
);
|
|
1003
1098
|
|
|
1004
1099
|
// src/components/ui/Combobox.tsx
|
|
1005
|
-
var
|
|
1100
|
+
var import_cva6 = require("cva");
|
|
1006
1101
|
var import_lucide_react10 = require("lucide-react");
|
|
1007
|
-
var
|
|
1102
|
+
var import_react6 = require("react");
|
|
1008
1103
|
|
|
1009
1104
|
// src/components/primitives/popover.tsx
|
|
1010
|
-
var React6 = __toESM(require("react"), 1);
|
|
1011
1105
|
var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
|
|
1012
|
-
var
|
|
1106
|
+
var React7 = __toESM(require("react"), 1);
|
|
1107
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1013
1108
|
var Popover = PopoverPrimitive.Root;
|
|
1014
1109
|
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
1015
|
-
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)(
|
|
1016
1111
|
PopoverPrimitive.Content,
|
|
1017
1112
|
{
|
|
1018
1113
|
ref,
|
|
@@ -1027,27 +1122,8 @@ var PopoverContent = React6.forwardRef(({ className, align = "center", sideOffse
|
|
|
1027
1122
|
) }));
|
|
1028
1123
|
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
1029
1124
|
|
|
1030
|
-
// src/components/ui/Badge.tsx
|
|
1031
|
-
var import_cva4 = require("cva");
|
|
1032
|
-
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1033
|
-
var badgeVariants = (0, import_cva4.cva)("rounded-full px-2 py-0.5 text-xs font-semibold", {
|
|
1034
|
-
variants: {
|
|
1035
|
-
variant: {
|
|
1036
|
-
green: "bg-green-90 text-white",
|
|
1037
|
-
pickle: "bg-pickle-100 text-black",
|
|
1038
|
-
purple: "bg-purple-100 text-white"
|
|
1039
|
-
}
|
|
1040
|
-
},
|
|
1041
|
-
defaultVariants: {
|
|
1042
|
-
variant: "green"
|
|
1043
|
-
}
|
|
1044
|
-
});
|
|
1045
|
-
function Badge({ className, variant, ...props }) {
|
|
1046
|
-
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
|
|
1047
|
-
}
|
|
1048
|
-
|
|
1049
1125
|
// src/components/ui/Combobox.tsx
|
|
1050
|
-
var
|
|
1126
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1051
1127
|
var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
1052
1128
|
const {
|
|
1053
1129
|
id,
|
|
@@ -1098,14 +1174,18 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1098
1174
|
};
|
|
1099
1175
|
const handleClear = () => {
|
|
1100
1176
|
setSelected([]);
|
|
1101
|
-
|
|
1177
|
+
if (multiselect) {
|
|
1178
|
+
handleChange?.([]);
|
|
1179
|
+
} else {
|
|
1180
|
+
handleChange?.("");
|
|
1181
|
+
}
|
|
1102
1182
|
};
|
|
1103
1183
|
const handleDisplayValue = () => {
|
|
1104
1184
|
const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(", ") : placeholder;
|
|
1105
1185
|
return isDefault ? defaultLabel : label;
|
|
1106
1186
|
};
|
|
1107
|
-
return /* @__PURE__ */ (0,
|
|
1108
|
-
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)(
|
|
1109
1189
|
Label_default,
|
|
1110
1190
|
{
|
|
1111
1191
|
text: label,
|
|
@@ -1115,15 +1195,15 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1115
1195
|
className: classNames?.label
|
|
1116
1196
|
}
|
|
1117
1197
|
),
|
|
1118
|
-
/* @__PURE__ */ (0,
|
|
1119
|
-
/* @__PURE__ */ (0,
|
|
1120
|
-
/* @__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)(
|
|
1121
1201
|
PopoverTrigger,
|
|
1122
1202
|
{
|
|
1123
1203
|
asChild: true,
|
|
1124
1204
|
disabled: options.length === 0,
|
|
1125
1205
|
"data-testid": `${id ?? name}-combobox-trigger`,
|
|
1126
|
-
children: /* @__PURE__ */ (0,
|
|
1206
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
1127
1207
|
"div",
|
|
1128
1208
|
{
|
|
1129
1209
|
ref,
|
|
@@ -1134,9 +1214,9 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1134
1214
|
),
|
|
1135
1215
|
"aria-expanded": open,
|
|
1136
1216
|
children: [
|
|
1137
|
-
isDefault && IconComponent && /* @__PURE__ */ (0,
|
|
1138
|
-
isChip && !isEmpty && /* @__PURE__ */ (0,
|
|
1139
|
-
/* @__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)(
|
|
1140
1220
|
"span",
|
|
1141
1221
|
{
|
|
1142
1222
|
className: cn(
|
|
@@ -1146,7 +1226,7 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1146
1226
|
children: handleDisplayValue()
|
|
1147
1227
|
}
|
|
1148
1228
|
),
|
|
1149
|
-
showChevron && /* @__PURE__ */ (0,
|
|
1229
|
+
showChevron && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1150
1230
|
import_lucide_react10.ChevronDownIcon,
|
|
1151
1231
|
{
|
|
1152
1232
|
className: "shrink-0 transform group-data-[state=open]:rotate-180",
|
|
@@ -1158,7 +1238,7 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1158
1238
|
)
|
|
1159
1239
|
}
|
|
1160
1240
|
),
|
|
1161
|
-
/* @__PURE__ */ (0,
|
|
1241
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1162
1242
|
PopoverContent,
|
|
1163
1243
|
{
|
|
1164
1244
|
className: cn(
|
|
@@ -1169,16 +1249,16 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1169
1249
|
collisionPadding: 8,
|
|
1170
1250
|
sideOffset: 4,
|
|
1171
1251
|
align: "start",
|
|
1172
|
-
children: /* @__PURE__ */ (0,
|
|
1173
|
-
!hideSearchBox && /* @__PURE__ */ (0,
|
|
1174
|
-
/* @__PURE__ */ (0,
|
|
1175
|
-
/* @__PURE__ */ (0,
|
|
1176
|
-
/* @__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)(
|
|
1177
1257
|
CommandItem,
|
|
1178
1258
|
{
|
|
1179
1259
|
value: option.title,
|
|
1180
1260
|
onSelect: () => handleSelect(option.value),
|
|
1181
|
-
children: /* @__PURE__ */ (0,
|
|
1261
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1182
1262
|
ListItem_default,
|
|
1183
1263
|
{
|
|
1184
1264
|
className: cn(classNames?.items, "truncate py-1"),
|
|
@@ -1191,26 +1271,26 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1191
1271
|
id2
|
|
1192
1272
|
)) })
|
|
1193
1273
|
] }),
|
|
1194
|
-
!!footer && /* @__PURE__ */ (0,
|
|
1274
|
+
!!footer && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Separator, {}),
|
|
1195
1275
|
footer && footer({ close })
|
|
1196
1276
|
] })
|
|
1197
1277
|
}
|
|
1198
1278
|
)
|
|
1199
1279
|
] }),
|
|
1200
|
-
isDefault && !isEmpty && /* @__PURE__ */ (0,
|
|
1280
|
+
isDefault && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1201
1281
|
"button",
|
|
1202
1282
|
{
|
|
1203
1283
|
type: "button",
|
|
1204
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",
|
|
1205
1285
|
onClick: handleClear,
|
|
1206
|
-
children: /* @__PURE__ */ (0,
|
|
1286
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react10.CircleX, { className: "h-4 w-4 text-green-100" })
|
|
1207
1287
|
}
|
|
1208
1288
|
)
|
|
1209
1289
|
] })
|
|
1210
1290
|
] });
|
|
1211
1291
|
});
|
|
1212
1292
|
Combobox.displayName = "Combobox";
|
|
1213
|
-
var triggerVariants = (0,
|
|
1293
|
+
var triggerVariants = (0, import_cva6.cva)(
|
|
1214
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",
|
|
1215
1295
|
{
|
|
1216
1296
|
variants: {
|
|
@@ -1237,10 +1317,10 @@ var triggerVariants = (0, import_cva5.cva)(
|
|
|
1237
1317
|
);
|
|
1238
1318
|
|
|
1239
1319
|
// src/components/ui/Counter.tsx
|
|
1240
|
-
var
|
|
1320
|
+
var import_cva7 = require("cva");
|
|
1241
1321
|
var import_lucide_react11 = require("lucide-react");
|
|
1242
1322
|
var import_react7 = require("react");
|
|
1243
|
-
var
|
|
1323
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1244
1324
|
var Counter = (0, import_react7.forwardRef)(
|
|
1245
1325
|
({ label, error, min, max, step = 1, description, theme, value, classNames, onChange, ...props }, ref) => {
|
|
1246
1326
|
const [count, setCount] = (0, import_react7.useState)(0);
|
|
@@ -1275,13 +1355,13 @@ var Counter = (0, import_react7.forwardRef)(
|
|
|
1275
1355
|
onChange?.(newValue);
|
|
1276
1356
|
setCount(newValue);
|
|
1277
1357
|
};
|
|
1278
|
-
return /* @__PURE__ */ (0,
|
|
1358
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1279
1359
|
"div",
|
|
1280
1360
|
{
|
|
1281
1361
|
className: cn("flex w-auto flex-col gap-1", classNames?.root),
|
|
1282
1362
|
"data-testid": `counter-wrapper-${props.id}`,
|
|
1283
1363
|
children: [
|
|
1284
|
-
label && /* @__PURE__ */ (0,
|
|
1364
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1285
1365
|
Label_default,
|
|
1286
1366
|
{
|
|
1287
1367
|
text: label,
|
|
@@ -1291,17 +1371,17 @@ var Counter = (0, import_react7.forwardRef)(
|
|
|
1291
1371
|
className: classNames?.label
|
|
1292
1372
|
}
|
|
1293
1373
|
),
|
|
1294
|
-
/* @__PURE__ */ (0,
|
|
1295
|
-
/* @__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)(
|
|
1296
1376
|
"button",
|
|
1297
1377
|
{
|
|
1298
1378
|
type: "button",
|
|
1299
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",
|
|
1300
1380
|
onClick: decrement,
|
|
1301
|
-
children: /* @__PURE__ */ (0,
|
|
1381
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react11.Minus, { className: "h-4 w-4 text-green-100" })
|
|
1302
1382
|
}
|
|
1303
1383
|
),
|
|
1304
|
-
/* @__PURE__ */ (0,
|
|
1384
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1305
1385
|
"input",
|
|
1306
1386
|
{
|
|
1307
1387
|
className: cn(counterVariants({ theme }), classNames?.input),
|
|
@@ -1312,24 +1392,24 @@ var Counter = (0, import_react7.forwardRef)(
|
|
|
1312
1392
|
...props
|
|
1313
1393
|
}
|
|
1314
1394
|
),
|
|
1315
|
-
/* @__PURE__ */ (0,
|
|
1395
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1316
1396
|
"button",
|
|
1317
1397
|
{
|
|
1318
1398
|
type: "button",
|
|
1319
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",
|
|
1320
1400
|
onClick: increment,
|
|
1321
|
-
children: /* @__PURE__ */ (0,
|
|
1401
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react11.Plus, { className: "h-4 w-4 text-green-100" })
|
|
1322
1402
|
}
|
|
1323
1403
|
)
|
|
1324
1404
|
] }),
|
|
1325
|
-
/* @__PURE__ */ (0,
|
|
1405
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ErrorMessage_default, { message: error })
|
|
1326
1406
|
]
|
|
1327
1407
|
}
|
|
1328
1408
|
);
|
|
1329
1409
|
}
|
|
1330
1410
|
);
|
|
1331
1411
|
Counter.displayName = "Counter";
|
|
1332
|
-
var counterVariants = (0,
|
|
1412
|
+
var counterVariants = (0, import_cva7.cva)(
|
|
1333
1413
|
[
|
|
1334
1414
|
"border-input",
|
|
1335
1415
|
"placeholder:text-muted-foreground",
|
|
@@ -1379,167 +1459,16 @@ var counterVariants = (0, import_cva6.cva)(
|
|
|
1379
1459
|
}
|
|
1380
1460
|
);
|
|
1381
1461
|
|
|
1382
|
-
// src/components/ui/InputOtp.tsx
|
|
1383
|
-
var import_react8 = require("react");
|
|
1384
|
-
|
|
1385
|
-
// src/components/primitives/input-otp.tsx
|
|
1386
|
-
var React7 = __toESM(require("react"), 1);
|
|
1387
|
-
var import_input_otp = require("input-otp");
|
|
1388
|
-
var import_lucide_react12 = require("lucide-react");
|
|
1389
|
-
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1390
|
-
var InputOTP = React7.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1391
|
-
import_input_otp.OTPInput,
|
|
1392
|
-
{
|
|
1393
|
-
ref,
|
|
1394
|
-
containerClassName: cn(
|
|
1395
|
-
"flex items-center gap-2 has-[:disabled]:opacity-50",
|
|
1396
|
-
containerClassName
|
|
1397
|
-
),
|
|
1398
|
-
className: cn("disabled:cursor-not-allowed", className),
|
|
1399
|
-
...props
|
|
1400
|
-
}
|
|
1401
|
-
));
|
|
1402
|
-
InputOTP.displayName = "InputOTP";
|
|
1403
|
-
var InputOTPGroup = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { ref, className: cn("flex items-center", className), ...props }));
|
|
1404
|
-
InputOTPGroup.displayName = "InputOTPGroup";
|
|
1405
|
-
var InputOTPSlot = React7.forwardRef(({ index, error, className, ...props }, ref) => {
|
|
1406
|
-
const inputOTPContext = React7.useContext(import_input_otp.OTPInputContext);
|
|
1407
|
-
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
|
|
1408
|
-
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
1409
|
-
"div",
|
|
1410
|
-
{
|
|
1411
|
-
ref,
|
|
1412
|
-
className: cn(
|
|
1413
|
-
"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",
|
|
1414
|
-
isActive && "z-10 ring-2 ring-purple-100 ring-offset-white dark:ring-purple-20 dark:ring-offset-purple-100",
|
|
1415
|
-
error && "border-red-500 dark:border-red-400",
|
|
1416
|
-
className
|
|
1417
|
-
),
|
|
1418
|
-
...props,
|
|
1419
|
-
children: [
|
|
1420
|
-
char,
|
|
1421
|
-
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" }) })
|
|
1422
|
-
]
|
|
1423
|
-
}
|
|
1424
|
-
);
|
|
1425
|
-
});
|
|
1426
|
-
InputOTPSlot.displayName = "InputOTPSlot";
|
|
1427
|
-
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, {}) }));
|
|
1428
|
-
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
1429
|
-
|
|
1430
|
-
// src/components/ui/InputOtp.tsx
|
|
1431
|
-
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1432
|
-
var InputOtp = (0, import_react8.forwardRef)(
|
|
1433
|
-
({ digits, label, description, error, ...props }, ref) => {
|
|
1434
|
-
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1435
|
-
"div",
|
|
1436
|
-
{
|
|
1437
|
-
className: "group flex w-full flex-col gap-1",
|
|
1438
|
-
"data-testid": `input-otp-wrapper-${props.id}`,
|
|
1439
|
-
children: [
|
|
1440
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1441
|
-
Label_default,
|
|
1442
|
-
{
|
|
1443
|
-
text: label,
|
|
1444
|
-
htmlFor: props.name,
|
|
1445
|
-
required: props.required,
|
|
1446
|
-
description
|
|
1447
|
-
}
|
|
1448
|
-
),
|
|
1449
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "relative flex flex-row items-center", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1450
|
-
InputOTP,
|
|
1451
|
-
{
|
|
1452
|
-
ref,
|
|
1453
|
-
maxLength: digits,
|
|
1454
|
-
"data-testid": `input-otp-element-${props.id}`,
|
|
1455
|
-
...props,
|
|
1456
|
-
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))
|
|
1457
|
-
}
|
|
1458
|
-
) }),
|
|
1459
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ErrorMessage_default, { message: error })
|
|
1460
|
-
]
|
|
1461
|
-
}
|
|
1462
|
-
);
|
|
1463
|
-
}
|
|
1464
|
-
);
|
|
1465
|
-
InputOtp.displayName = "Input";
|
|
1466
|
-
|
|
1467
|
-
// src/components/primitives/avatar.tsx
|
|
1468
|
-
var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"), 1);
|
|
1469
|
-
var React8 = __toESM(require("react"), 1);
|
|
1470
|
-
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1471
|
-
var AvatarBase = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1472
|
-
AvatarPrimitive.Root,
|
|
1473
|
-
{
|
|
1474
|
-
ref,
|
|
1475
|
-
className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
|
|
1476
|
-
...props
|
|
1477
|
-
}
|
|
1478
|
-
));
|
|
1479
|
-
AvatarBase.displayName = AvatarPrimitive.Root.displayName;
|
|
1480
|
-
var AvatarImage = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1481
|
-
AvatarPrimitive.Image,
|
|
1482
|
-
{
|
|
1483
|
-
ref,
|
|
1484
|
-
className: cn("aspect-square h-full w-full", className),
|
|
1485
|
-
"data-testid": "job-card-avatar",
|
|
1486
|
-
...props
|
|
1487
|
-
}
|
|
1488
|
-
));
|
|
1489
|
-
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
1490
|
-
var AvatarFallback = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1491
|
-
AvatarPrimitive.Fallback,
|
|
1492
|
-
{
|
|
1493
|
-
ref,
|
|
1494
|
-
className: cn(
|
|
1495
|
-
"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",
|
|
1496
|
-
className
|
|
1497
|
-
),
|
|
1498
|
-
...props
|
|
1499
|
-
}
|
|
1500
|
-
));
|
|
1501
|
-
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
1502
|
-
|
|
1503
|
-
// src/components/ui/Avatar.tsx
|
|
1504
|
-
var import_cva7 = require("cva");
|
|
1505
|
-
var import_link = __toESM(require("next/link"), 1);
|
|
1506
|
-
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1507
|
-
function Avatar({ size, src, href, name, ...linkProps }) {
|
|
1508
|
-
const fallbackShort = name?.slice(0, 2);
|
|
1509
|
-
const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
|
|
1510
|
-
const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
|
|
1511
|
-
const renderAvatar = () => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(AvatarBase, { className: avatarVariants({ size }), children: [
|
|
1512
|
-
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(AvatarImage, { src, alt: name }),
|
|
1513
|
-
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(AvatarFallback, { children: fallback?.toUpperCase() })
|
|
1514
|
-
] });
|
|
1515
|
-
if (href) {
|
|
1516
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_link.default, { href, ...linkProps, children: renderAvatar() });
|
|
1517
|
-
}
|
|
1518
|
-
return renderAvatar();
|
|
1519
|
-
}
|
|
1520
|
-
var avatarVariants = (0, import_cva7.cva)("ring ring-white ring-2", {
|
|
1521
|
-
variants: {
|
|
1522
|
-
size: {
|
|
1523
|
-
large: "h-16 w-16",
|
|
1524
|
-
medium: "h-10 w-10",
|
|
1525
|
-
small: "h-8 w-8"
|
|
1526
|
-
}
|
|
1527
|
-
},
|
|
1528
|
-
defaultVariants: {
|
|
1529
|
-
size: "medium"
|
|
1530
|
-
}
|
|
1531
|
-
});
|
|
1532
|
-
|
|
1533
1462
|
// src/components/ui/Icon.tsx
|
|
1534
1463
|
var import_react_slot2 = require("@radix-ui/react-slot");
|
|
1535
1464
|
var import_cva8 = require("cva");
|
|
1536
|
-
var
|
|
1465
|
+
var import_react8 = require("react");
|
|
1537
1466
|
var import_tailwind_merge3 = require("tailwind-merge");
|
|
1538
|
-
var
|
|
1539
|
-
var Icon = (0,
|
|
1467
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1468
|
+
var Icon = (0, import_react8.forwardRef)(
|
|
1540
1469
|
({ variant, size, active = false, readonly = false, className, ...props }, ref) => {
|
|
1541
1470
|
const Component = readonly ? import_react_slot2.Slot : "button";
|
|
1542
|
-
return /* @__PURE__ */ (0,
|
|
1471
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1543
1472
|
Component,
|
|
1544
1473
|
{
|
|
1545
1474
|
className: cn(
|
|
@@ -1599,13 +1528,98 @@ var iconVariants = (0, import_cva8.cva)(
|
|
|
1599
1528
|
medium: ["h-12", "w-12", "p-4"],
|
|
1600
1529
|
large: ["h-14", "w-14", "p-4"]
|
|
1601
1530
|
}
|
|
1602
|
-
},
|
|
1603
|
-
defaultVariants: {
|
|
1604
|
-
variant: "filled",
|
|
1605
|
-
size: "medium"
|
|
1606
|
-
}
|
|
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
|
+
);
|
|
1607
1620
|
}
|
|
1608
1621
|
);
|
|
1622
|
+
InputOtp.displayName = "Input";
|
|
1609
1623
|
|
|
1610
1624
|
// src/components/ui/LinkButton.tsx
|
|
1611
1625
|
var import_link2 = __toESM(require("next/link"), 1);
|
|
@@ -1660,10 +1674,19 @@ function ReadMore({ text, ...props }) {
|
|
|
1660
1674
|
const snippet = createReadMoreText(text, maxWords, isExpanded);
|
|
1661
1675
|
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { ...props, children: [
|
|
1662
1676
|
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { "data-testid": "read-more-text", className: "prose lg:prose-lg", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_markdown.default, { children: snippet }) }),
|
|
1663
|
-
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1677
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1678
|
+
Button,
|
|
1679
|
+
{
|
|
1680
|
+
type: "button",
|
|
1681
|
+
className: "mt-2 flex items-center justify-center",
|
|
1682
|
+
variant: "link",
|
|
1683
|
+
onClick: toggleText,
|
|
1684
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("p", { className: "text-sm font-bold underline underline-offset-2", children: [
|
|
1685
|
+
"Read ",
|
|
1686
|
+
isExpanded ? "less" : "more"
|
|
1687
|
+
] })
|
|
1688
|
+
}
|
|
1689
|
+
)
|
|
1667
1690
|
] });
|
|
1668
1691
|
}
|
|
1669
1692
|
|
|
@@ -1802,7 +1825,11 @@ function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
|
1802
1825
|
const isAcceptedRoute = (r) => !!acceptedRoutes?.find((route) => new RegExp("^" + route + "$", "i").test(r));
|
|
1803
1826
|
const goBack = () => {
|
|
1804
1827
|
const previous = history[history.length - 2];
|
|
1805
|
-
history.length > 1 && isAcceptedRoute(previous)
|
|
1828
|
+
if (history.length > 1 && isAcceptedRoute(previous)) {
|
|
1829
|
+
router.back();
|
|
1830
|
+
} else {
|
|
1831
|
+
router.push(fallbackHref ?? "/");
|
|
1832
|
+
}
|
|
1806
1833
|
};
|
|
1807
1834
|
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1808
1835
|
Icon,
|
|
@@ -1990,102 +2017,6 @@ function JobHeader({
|
|
|
1990
2017
|
// src/components/jobPost/JobPost.tsx
|
|
1991
2018
|
var DateFns = __toESM(require("date-fns"), 1);
|
|
1992
2019
|
|
|
1993
|
-
// src/types/data/shared_pickle_output_latest.ts
|
|
1994
|
-
var shared_pickle_output_latest_exports = {};
|
|
1995
|
-
__export(shared_pickle_output_latest_exports, {
|
|
1996
|
-
CurrencyEnum: () => CurrencyEnum,
|
|
1997
|
-
DetailLevelEnum: () => DetailLevelEnum,
|
|
1998
|
-
TypeEnum: () => TypeEnum,
|
|
1999
|
-
UnitTextEnum: () => UnitTextEnum,
|
|
2000
|
-
imageAssetSchema: () => imageAssetSchema,
|
|
2001
|
-
imageSchema: () => imageSchema,
|
|
2002
|
-
monetaryAmountSchema: () => monetaryAmountSchema,
|
|
2003
|
-
placeSchema: () => placeSchema,
|
|
2004
|
-
postalAddressSchema: () => postalAddressSchema,
|
|
2005
|
-
quantitativeValueSchema: () => quantitativeValueSchema
|
|
2006
|
-
});
|
|
2007
|
-
var import_zod = require("zod");
|
|
2008
|
-
var TypeEnum = import_zod.z.enum(["IMAGE"]);
|
|
2009
|
-
var DetailLevelEnum = import_zod.z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
|
|
2010
|
-
var UnitTextEnum = import_zod.z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
|
|
2011
|
-
var CurrencyEnum = import_zod.z.enum(["EUR", "GBP", "USD"]);
|
|
2012
|
-
var postalAddressSchema = import_zod.z.object({
|
|
2013
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2014
|
-
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2015
|
-
addressCountry: import_zod.z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
|
|
2016
|
-
addressRegion: import_zod.z.optional(import_zod.z.string()).describe("The region in which the locality is, and which is in the country."),
|
|
2017
|
-
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."),
|
|
2018
|
-
streetAddress: import_zod.z.optional(import_zod.z.string()).describe("The street name of the address within the locality."),
|
|
2019
|
-
streetNumber: import_zod.z.optional(import_zod.z.string()).describe("The house of building number within the street."),
|
|
2020
|
-
postalCode: import_zod.z.optional(import_zod.z.string()).describe("The postal code"),
|
|
2021
|
-
description: import_zod.z.optional(import_zod.z.string()).describe("A descriptive string containing the full address.")
|
|
2022
|
-
});
|
|
2023
|
-
var placeSchema = import_zod.z.object({
|
|
2024
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2025
|
-
detailLevel: import_zod.z.optional(DetailLevelEnum),
|
|
2026
|
-
latitude: import_zod.z.optional(import_zod.z.number()).describe("The latitude of a location."),
|
|
2027
|
-
longitude: import_zod.z.optional(import_zod.z.number()).describe("The longitude of a location."),
|
|
2028
|
-
address: import_zod.z.optional(postalAddressSchema).describe("The physical place of the location")
|
|
2029
|
-
});
|
|
2030
|
-
var quantitativeValueSchema = import_zod.z.object({
|
|
2031
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2032
|
-
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2033
|
-
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."),
|
|
2034
|
-
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."),
|
|
2035
|
-
maxValue: import_zod.z.optional(import_zod.z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
|
|
2036
|
-
unitText: UnitTextEnum
|
|
2037
|
-
});
|
|
2038
|
-
var monetaryAmountSchema = import_zod.z.object({
|
|
2039
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2040
|
-
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2041
|
-
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."),
|
|
2042
|
-
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"),
|
|
2043
|
-
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"),
|
|
2044
|
-
value: import_zod.z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
|
|
2045
|
-
currency: import_zod.z.optional(CurrencyEnum)
|
|
2046
|
-
});
|
|
2047
|
-
var imageAssetSchema = import_zod.z.object({
|
|
2048
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2049
|
-
altText: import_zod.z.optional(import_zod.z.string()).describe("The alt text for the image"),
|
|
2050
|
-
assetId: import_zod.z.optional(import_zod.z.string()).describe("The asset ID for the image"),
|
|
2051
|
-
description: import_zod.z.optional(import_zod.z.string()).describe("The description for the image"),
|
|
2052
|
-
extension: import_zod.z.optional(import_zod.z.string()).describe("The extension for the image"),
|
|
2053
|
-
label: import_zod.z.optional(import_zod.z.string()).describe("The label for the image"),
|
|
2054
|
-
mimeType: import_zod.z.optional(import_zod.z.string()).describe("The mime type for the image"),
|
|
2055
|
-
originalFilename: import_zod.z.optional(import_zod.z.string()).describe("The original filename for the image"),
|
|
2056
|
-
path: import_zod.z.optional(import_zod.z.string()).describe("The path for the image"),
|
|
2057
|
-
sha1Hash: import_zod.z.optional(import_zod.z.string()).describe("The SHA1 hash for the image"),
|
|
2058
|
-
size: import_zod.z.optional(import_zod.z.number()).describe("The size for the image"),
|
|
2059
|
-
title: import_zod.z.optional(import_zod.z.string()).describe("The title for the image"),
|
|
2060
|
-
uploadId: import_zod.z.optional(import_zod.z.string()).describe("The upload ID for the image"),
|
|
2061
|
-
url: import_zod.z.optional(import_zod.z.string()).describe("The URL for the image")
|
|
2062
|
-
});
|
|
2063
|
-
var imageSchema = import_zod.z.object({
|
|
2064
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2065
|
-
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2066
|
-
asset: import_zod.z.optional(imageAssetSchema).describe("The asset for the image")
|
|
2067
|
-
});
|
|
2068
|
-
|
|
2069
|
-
// src/lib/salaryRange.ts
|
|
2070
|
-
function salaryRange(salary) {
|
|
2071
|
-
if (!salary) return null;
|
|
2072
|
-
const min = salary.minValue;
|
|
2073
|
-
const max = salary.maxValue;
|
|
2074
|
-
const single = salary.singleValue;
|
|
2075
|
-
const signs = {
|
|
2076
|
-
[CurrencyEnum.Values.USD]: "$",
|
|
2077
|
-
[CurrencyEnum.Values.GBP]: "\xA3",
|
|
2078
|
-
[CurrencyEnum.Values.EUR]: "\u20AC"
|
|
2079
|
-
};
|
|
2080
|
-
const sign = signs[salary.currency ?? CurrencyEnum.Values.USD];
|
|
2081
|
-
if (min == null && max == null && single == null) return null;
|
|
2082
|
-
if (single != null) return sign + single.toLocaleString();
|
|
2083
|
-
if (min === max) return sign + min?.toLocaleString();
|
|
2084
|
-
if (min != null && max != null)
|
|
2085
|
-
return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString();
|
|
2086
|
-
return null;
|
|
2087
|
-
}
|
|
2088
|
-
|
|
2089
2020
|
// src/hooks/useDisplayText.ts
|
|
2090
2021
|
var import_react13 = require("react");
|
|
2091
2022
|
|
|
@@ -2575,6 +2506,102 @@ function formattedJobLocation(job) {
|
|
|
2575
2506
|
return [address, remote].filter(Boolean).join(" | ");
|
|
2576
2507
|
}
|
|
2577
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
|
+
|
|
2578
2605
|
// src/components/jobPost/JobPost.tsx
|
|
2579
2606
|
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
2580
2607
|
function JobPost({
|
|
@@ -2673,24 +2700,6 @@ function JobPost({
|
|
|
2673
2700
|
);
|
|
2674
2701
|
}
|
|
2675
2702
|
|
|
2676
|
-
// src/types/data/job_posting_service_latest.ts
|
|
2677
|
-
var job_posting_service_latest_exports = {};
|
|
2678
|
-
__export(job_posting_service_latest_exports, {
|
|
2679
|
-
BestFitEnum: () => BestFitEnum,
|
|
2680
|
-
ClinicalLicenseEnum: () => ClinicalLicenseEnum,
|
|
2681
|
-
ClinicalSettingEnum: () => ClinicalSettingEnum,
|
|
2682
|
-
ClinicalSpecialtyEnum: () => ClinicalSpecialtyEnum,
|
|
2683
|
-
EmploymentLevelEnum: () => EmploymentLevelEnum,
|
|
2684
|
-
EmploymentTypeEnum: () => EmploymentTypeEnum,
|
|
2685
|
-
JobFunctionEnum: () => JobFunctionEnum,
|
|
2686
|
-
JobLocationTypeEnum: () => JobLocationTypeEnum,
|
|
2687
|
-
PublishStatusEnum: () => PublishStatusEnum2,
|
|
2688
|
-
ShiftEnum: () => ShiftEnum,
|
|
2689
|
-
TypeEnum: () => TypeEnum3,
|
|
2690
|
-
jobPostSchema: () => jobPostSchema
|
|
2691
|
-
});
|
|
2692
|
-
var import_zod3 = require("zod");
|
|
2693
|
-
|
|
2694
2703
|
// src/types/data/company_service_latest.ts
|
|
2695
2704
|
var company_service_latest_exports = {};
|
|
2696
2705
|
__export(company_service_latest_exports, {
|
|
@@ -2838,6 +2847,22 @@ var officeSchema = import_zod2.z.object({
|
|
|
2838
2847
|
});
|
|
2839
2848
|
|
|
2840
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");
|
|
2841
2866
|
var TypeEnum3 = import_zod3.z.enum(["JOB_POST"]);
|
|
2842
2867
|
var JobLocationTypeEnum = import_zod3.z.enum(["FLOAT", "HYBRID", "ONSITE", "REMOTE"]);
|
|
2843
2868
|
var EmploymentTypeEnum = import_zod3.z.enum(["CONTRACT", "FULL_TIME", "INTERNSHIP", "OTHER", "PART_TIME", "PER_DIEM", "TEMPORARY"]);
|