@next-degree/pickle-shared-js 0.6.50 → 0.7.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/company_service_latest-DFxfjA2x.d.cts +4369 -0
- package/dist/company_service_latest-DFxfjA2x.d.ts +4369 -0
- package/dist/company_service_sanity--Aw-Y3Us.d.cts +7611 -0
- package/dist/company_service_sanity-B5FBDl-4.d.ts +7611 -0
- package/dist/components/buttons/BackButton.cjs +5 -1
- package/dist/components/buttons/BackButton.cjs.map +1 -1
- package/dist/components/buttons/BackButton.js +5 -1
- package/dist/components/buttons/BackButton.js.map +1 -1
- package/dist/components/company/CompanyTake.cjs +4 -2
- package/dist/components/company/CompanyTake.cjs.map +1 -1
- package/dist/components/company/CompanyTake.js +4 -2
- package/dist/components/company/CompanyTake.js.map +1 -1
- package/dist/components/jobPost/JobDescription.cjs +5 -3
- package/dist/components/jobPost/JobDescription.cjs.map +1 -1
- package/dist/components/jobPost/JobDescription.js +5 -3
- package/dist/components/jobPost/JobDescription.js.map +1 -1
- package/dist/components/jobPost/JobHeader.cjs +43 -37
- package/dist/components/jobPost/JobHeader.cjs.map +1 -1
- package/dist/components/jobPost/JobHeader.js +42 -36
- package/dist/components/jobPost/JobHeader.js.map +1 -1
- package/dist/components/jobPost/JobPost.cjs +92 -86
- package/dist/components/jobPost/JobPost.cjs.map +1 -1
- package/dist/components/jobPost/JobPost.d.cts +1 -1
- package/dist/components/jobPost/JobPost.d.ts +1 -1
- package/dist/components/jobPost/JobPost.js +92 -86
- package/dist/components/jobPost/JobPost.js.map +1 -1
- package/dist/components/primitives/avatar.cjs.map +1 -1
- package/dist/components/primitives/avatar.js.map +1 -1
- package/dist/components/primitives/command.cjs +6 -4
- package/dist/components/primitives/command.cjs.map +1 -1
- package/dist/components/primitives/command.d.cts +7 -7
- package/dist/components/primitives/command.d.ts +7 -7
- package/dist/components/primitives/command.js +6 -4
- package/dist/components/primitives/command.js.map +1 -1
- package/dist/components/primitives/dialog.cjs +4 -4
- package/dist/components/primitives/dialog.cjs.map +1 -1
- package/dist/components/primitives/dialog.js +6 -4
- package/dist/components/primitives/dialog.js.map +1 -1
- package/dist/components/primitives/input-otp.cjs +2 -2
- package/dist/components/primitives/input-otp.cjs.map +1 -1
- package/dist/components/primitives/input-otp.d.cts +2 -2
- package/dist/components/primitives/input-otp.d.ts +2 -2
- package/dist/components/primitives/input-otp.js +2 -2
- package/dist/components/primitives/input-otp.js.map +1 -1
- package/dist/components/primitives/popover.cjs +1 -1
- package/dist/components/primitives/popover.cjs.map +1 -1
- package/dist/components/primitives/popover.d.cts +1 -1
- package/dist/components/primitives/popover.d.ts +1 -1
- package/dist/components/primitives/popover.js +1 -1
- package/dist/components/primitives/popover.js.map +1 -1
- package/dist/components/primitives/separator.cjs.map +1 -1
- package/dist/components/primitives/separator.js.map +1 -1
- package/dist/components/primitives/tooltip.cjs.map +1 -1
- package/dist/components/primitives/tooltip.js.map +1 -1
- package/dist/components/ui/Avatar.cjs +2 -2
- package/dist/components/ui/Avatar.cjs.map +1 -1
- package/dist/components/ui/Avatar.js +4 -2
- package/dist/components/ui/Avatar.js.map +1 -1
- package/dist/components/ui/Badge.cjs.map +1 -1
- package/dist/components/ui/Badge.js.map +1 -1
- package/dist/components/ui/Button.cjs +3 -3
- package/dist/components/ui/Button.cjs.map +1 -1
- package/dist/components/ui/Button.d.cts +33 -0
- package/dist/components/ui/Button.d.ts +33 -0
- package/dist/components/ui/Button.js +5 -3
- package/dist/components/ui/Button.js.map +1 -1
- package/dist/components/ui/Checkbox.cjs.map +1 -1
- package/dist/components/ui/Checkbox.js.map +1 -1
- package/dist/components/ui/Combobox.cjs +111 -103
- package/dist/components/ui/Combobox.cjs.map +1 -1
- package/dist/components/ui/Combobox.d.cts +1 -1
- package/dist/components/ui/Combobox.d.ts +1 -1
- package/dist/components/ui/Combobox.js +108 -100
- package/dist/components/ui/Combobox.js.map +1 -1
- package/dist/components/ui/Counter.cjs +3 -1
- package/dist/components/ui/Counter.cjs.map +1 -1
- package/dist/components/ui/Counter.js +3 -1
- package/dist/components/ui/Counter.js.map +1 -1
- package/dist/components/ui/DatePicker.cjs +318 -0
- package/dist/components/ui/DatePicker.cjs.map +1 -0
- package/dist/components/ui/DatePicker.d.cts +16 -0
- package/dist/components/ui/DatePicker.d.ts +16 -0
- package/dist/components/ui/DatePicker.js +284 -0
- package/dist/components/ui/DatePicker.js.map +1 -0
- package/dist/components/ui/ErrorMessage.cjs.map +1 -1
- package/dist/components/ui/ErrorMessage.js.map +1 -1
- package/dist/components/ui/Icon.cjs.map +1 -1
- package/dist/components/ui/Icon.js.map +1 -1
- package/dist/components/ui/Input.cjs +3 -1
- package/dist/components/ui/Input.cjs.map +1 -1
- package/dist/components/ui/Input.d.cts +29 -0
- package/dist/components/ui/Input.d.ts +29 -0
- package/dist/components/ui/Input.js +3 -1
- package/dist/components/ui/Input.js.map +1 -1
- package/dist/components/ui/InputOtp.cjs +62 -58
- package/dist/components/ui/InputOtp.cjs.map +1 -1
- package/dist/components/ui/InputOtp.js +62 -58
- package/dist/components/ui/InputOtp.js.map +1 -1
- package/dist/components/ui/Label.cjs +5 -3
- package/dist/components/ui/Label.cjs.map +1 -1
- package/dist/components/ui/Label.js +7 -3
- package/dist/components/ui/Label.js.map +1 -1
- package/dist/components/ui/ListItem.cjs +7 -7
- package/dist/components/ui/ListItem.cjs.map +1 -1
- package/dist/components/ui/ListItem.js +10 -8
- package/dist/components/ui/ListItem.js.map +1 -1
- package/dist/components/ui/MapComponent.cjs.map +1 -1
- package/dist/components/ui/MapComponent.js +1 -1
- package/dist/components/ui/MapComponent.js.map +1 -1
- package/dist/components/ui/PlacesQueryInput.cjs +21 -13
- package/dist/components/ui/PlacesQueryInput.cjs.map +1 -1
- package/dist/components/ui/PlacesQueryInput.js +23 -13
- package/dist/components/ui/PlacesQueryInput.js.map +1 -1
- package/dist/components/ui/ReadMore.cjs +5 -3
- package/dist/components/ui/ReadMore.cjs.map +1 -1
- package/dist/components/ui/ReadMore.js +5 -3
- package/dist/components/ui/ReadMore.js.map +1 -1
- package/dist/components/ui/Select.cjs +63 -59
- package/dist/components/ui/Select.cjs.map +1 -1
- package/dist/components/ui/Select.js +61 -57
- package/dist/components/ui/Select.js.map +1 -1
- package/dist/components/ui/StepTabs.cjs.map +1 -1
- package/dist/components/ui/StepTabs.d.cts +1 -1
- package/dist/components/ui/StepTabs.d.ts +1 -1
- package/dist/components/ui/StepTabs.js.map +1 -1
- package/dist/components/ui/buttonShadcn.cjs +94 -0
- package/dist/components/ui/buttonShadcn.cjs.map +1 -0
- package/dist/components/ui/buttonShadcn.d.cts +14 -0
- package/dist/components/ui/buttonShadcn.d.ts +14 -0
- package/dist/components/ui/buttonShadcn.js +58 -0
- package/dist/components/ui/buttonShadcn.js.map +1 -0
- package/dist/components/ui/calendar.cjs +152 -0
- package/dist/components/ui/calendar.cjs.map +1 -0
- package/dist/components/ui/calendar.d.cts +11 -0
- package/dist/components/ui/calendar.d.ts +11 -0
- package/dist/components/ui/calendar.js +118 -0
- package/dist/components/ui/calendar.js.map +1 -0
- package/dist/{displayText-BCQw5Qq-.d.cts → displayText-6TMMBOmQ.d.cts} +2 -2
- package/dist/{displayText-Bqmpx1Va.d.ts → displayText-BCC_oy5I.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 +1090 -880
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -13
- package/dist/index.d.ts +14 -13
- package/dist/index.js +1078 -869
- package/dist/index.js.map +1 -1
- package/dist/job_posting_service_latest-B5tqLSgo.d.cts +4247 -0
- package/dist/job_posting_service_latest-B5tqLSgo.d.ts +4247 -0
- package/dist/job_posting_service_sanity-CeX9tlpb.d.ts +8093 -0
- package/dist/job_posting_service_sanity-D5Znr6Ba.d.cts +8093 -0
- package/dist/lib/google.cjs.map +1 -1
- package/dist/lib/google.js.map +1 -1
- package/dist/lib/locations.cjs.map +1 -1
- package/dist/lib/locations.d.cts +2 -2
- package/dist/lib/locations.d.ts +2 -2
- package/dist/lib/locations.js.map +1 -1
- package/dist/lib/mappings.cjs.map +1 -1
- package/dist/lib/mappings.d.cts +3 -3
- package/dist/lib/mappings.d.ts +3 -3
- package/dist/lib/mappings.js.map +1 -1
- package/dist/lib/salaryRange.cjs.map +1 -1
- package/dist/lib/salaryRange.d.cts +1 -1
- package/dist/lib/salaryRange.d.ts +1 -1
- package/dist/lib/salaryRange.js.map +1 -1
- package/dist/lib/utils.cjs.map +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/services/displayText.cjs.map +1 -1
- package/dist/services/displayText.d.cts +3 -3
- package/dist/services/displayText.d.ts +3 -3
- package/dist/services/displayText.js.map +1 -1
- package/dist/shared_pickle_output_latest-Bwfg5B4p.d.cts +350 -0
- package/dist/shared_pickle_output_latest-Bwfg5B4p.d.ts +350 -0
- package/dist/styles/globals.css +275 -0
- package/dist/styles/globals.css.map +1 -1
- package/dist/types/data/company_service_latest.cjs.map +1 -1
- package/dist/types/data/company_service_latest.d.cts +1 -1
- package/dist/types/data/company_service_latest.d.ts +1 -1
- package/dist/types/data/company_service_latest.js.map +1 -1
- package/dist/types/data/job_posting_service_latest.cjs +3 -1
- package/dist/types/data/job_posting_service_latest.cjs.map +1 -1
- package/dist/types/data/job_posting_service_latest.d.cts +1 -1
- package/dist/types/data/job_posting_service_latest.d.ts +1 -1
- package/dist/types/data/job_posting_service_latest.js +3 -1
- package/dist/types/data/job_posting_service_latest.js.map +1 -1
- package/dist/types/data/shared_pickle_output_latest.cjs.map +1 -1
- package/dist/types/data/shared_pickle_output_latest.d.cts +1 -1
- package/dist/types/data/shared_pickle_output_latest.d.ts +1 -1
- package/dist/types/data/shared_pickle_output_latest.js.map +1 -1
- package/dist/types/index.cjs +505 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +10 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.js +479 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/latest/company_service_latest.cjs +251 -0
- package/dist/types/latest/company_service_latest.cjs.map +1 -0
- package/dist/types/latest/company_service_latest.d.cts +2 -0
- package/dist/types/latest/company_service_latest.d.ts +2 -0
- package/dist/types/latest/company_service_latest.js +210 -0
- package/dist/types/latest/company_service_latest.js.map +1 -0
- package/dist/types/latest/custom/company_service_sanity.cjs +325 -0
- package/dist/types/latest/custom/company_service_sanity.cjs.map +1 -0
- package/dist/types/latest/custom/company_service_sanity.d.cts +4 -0
- package/dist/types/latest/custom/company_service_sanity.d.ts +4 -0
- package/dist/types/latest/custom/company_service_sanity.js +288 -0
- package/dist/types/latest/custom/company_service_sanity.js.map +1 -0
- package/dist/types/latest/custom/custom_sanity_models.cjs +43 -0
- package/dist/types/latest/custom/custom_sanity_models.cjs.map +1 -0
- package/dist/types/latest/custom/custom_sanity_models.d.cts +30 -0
- package/dist/types/latest/custom/custom_sanity_models.d.ts +30 -0
- package/dist/types/latest/custom/custom_sanity_models.js +17 -0
- package/dist/types/latest/custom/custom_sanity_models.js.map +1 -0
- package/dist/types/latest/custom/job_posting_service_sanity.cjs +376 -0
- package/dist/types/latest/custom/job_posting_service_sanity.cjs.map +1 -0
- package/dist/types/latest/custom/job_posting_service_sanity.d.cts +5 -0
- package/dist/types/latest/custom/job_posting_service_sanity.d.ts +5 -0
- package/dist/types/latest/custom/job_posting_service_sanity.js +331 -0
- package/dist/types/latest/custom/job_posting_service_sanity.js.map +1 -0
- package/dist/types/latest/job_posting_service_latest.cjs +293 -0
- package/dist/types/latest/job_posting_service_latest.cjs.map +1 -0
- package/dist/types/latest/job_posting_service_latest.d.cts +2 -0
- package/dist/types/latest/job_posting_service_latest.d.ts +2 -0
- package/dist/types/latest/job_posting_service_latest.js +257 -0
- package/dist/types/latest/job_posting_service_latest.js.map +1 -0
- package/dist/types/latest/shared_pickle_output_latest.cjs +109 -0
- package/dist/types/latest/shared_pickle_output_latest.cjs.map +1 -0
- package/dist/types/latest/shared_pickle_output_latest.d.cts +2 -0
- package/dist/types/latest/shared_pickle_output_latest.d.ts +2 -0
- package/dist/types/latest/shared_pickle_output_latest.js +75 -0
- package/dist/types/latest/shared_pickle_output_latest.js.map +1 -0
- package/package.json +27 -9
- package/dist/{company_service_latest-B7KhyYDc.d.cts → company_service_latest-BUKbZgpZ.d.cts} +306 -306
- package/dist/{company_service_latest-B7KhyYDc.d.ts → company_service_latest-BUKbZgpZ.d.ts} +306 -306
- package/dist/{job_posting_service_latest-C2z66hFK.d.cts → job_posting_service_latest-2KcpupDl.d.cts} +271 -271
- package/dist/{job_posting_service_latest-C2z66hFK.d.ts → job_posting_service_latest-2KcpupDl.d.ts} +271 -271
- package/dist/{shared_pickle_output_latest-_L9GxVle.d.cts → shared_pickle_output_latest-D2n-PRlx.d.cts} +20 -20
- package/dist/{shared_pickle_output_latest-_L9GxVle.d.ts → shared_pickle_output_latest-D2n-PRlx.d.ts} +20 -20
package/dist/index.js
CHANGED
|
@@ -4,14 +4,11 @@ var __export = (target, all) => {
|
|
|
4
4
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
5
|
};
|
|
6
6
|
|
|
7
|
-
// src/components/ui/
|
|
8
|
-
import * as
|
|
9
|
-
import {
|
|
7
|
+
// src/components/ui/Checkbox.tsx
|
|
8
|
+
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
9
|
+
import { Check, Minus } from "lucide-react";
|
|
10
10
|
import {
|
|
11
|
-
forwardRef
|
|
12
|
-
useEffect,
|
|
13
|
-
useRef,
|
|
14
|
-
useState
|
|
11
|
+
forwardRef
|
|
15
12
|
} from "react";
|
|
16
13
|
|
|
17
14
|
// src/lib/utils.ts
|
|
@@ -21,267 +18,9 @@ function cn(...inputs) {
|
|
|
21
18
|
return twMerge(clsx(inputs));
|
|
22
19
|
}
|
|
23
20
|
|
|
24
|
-
// src/components/ui/ErrorMessage.tsx
|
|
25
|
-
import { jsx } from "react/jsx-runtime";
|
|
26
|
-
function ErrorMessage({ message, className, ...props }) {
|
|
27
|
-
if (!message) return null;
|
|
28
|
-
return /* @__PURE__ */ jsx("p", { className: cn("px-1 text-xs text-red-600", className), ...props, children: message });
|
|
29
|
-
}
|
|
30
|
-
var ErrorMessage_default = ErrorMessage;
|
|
31
|
-
|
|
32
|
-
// src/components/primitives/tooltip.tsx
|
|
33
|
-
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
34
|
-
import * as React from "react";
|
|
35
|
-
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
36
|
-
var TooltipProvider = TooltipPrimitive.Provider;
|
|
37
|
-
var Tooltip = TooltipPrimitive.Root;
|
|
38
|
-
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
39
|
-
var TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx2(
|
|
40
|
-
TooltipPrimitive.Content,
|
|
41
|
-
{
|
|
42
|
-
ref,
|
|
43
|
-
sideOffset,
|
|
44
|
-
className: cn(
|
|
45
|
-
"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",
|
|
46
|
-
className
|
|
47
|
-
),
|
|
48
|
-
...props
|
|
49
|
-
}
|
|
50
|
-
));
|
|
51
|
-
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
52
|
-
|
|
53
|
-
// src/components/ui/Label.tsx
|
|
54
|
-
import { InfoIcon } from "lucide-react";
|
|
55
|
-
import { jsx as jsx3, jsxs } from "react/jsx-runtime";
|
|
56
|
-
function Label({ text, required, description, className, ...props }) {
|
|
57
|
-
if (!text) return null;
|
|
58
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-row gap-1", children: [
|
|
59
|
-
/* @__PURE__ */ jsxs(
|
|
60
|
-
"label",
|
|
61
|
-
{
|
|
62
|
-
className: cn(
|
|
63
|
-
"text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
64
|
-
className
|
|
65
|
-
),
|
|
66
|
-
...props,
|
|
67
|
-
children: [
|
|
68
|
-
text,
|
|
69
|
-
required && /* @__PURE__ */ jsx3("span", { className: "text-red-600", children: "\xA0*" })
|
|
70
|
-
]
|
|
71
|
-
}
|
|
72
|
-
),
|
|
73
|
-
!!description && /* @__PURE__ */ jsx3(TooltipProvider, { children: /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
74
|
-
/* @__PURE__ */ jsx3(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx3(InfoIcon, { className: "h-4 w-4" }) }),
|
|
75
|
-
/* @__PURE__ */ jsx3(TooltipContent, { className: "max-w-48", children: description })
|
|
76
|
-
] }) })
|
|
77
|
-
] });
|
|
78
|
-
}
|
|
79
|
-
var Label_default = Label;
|
|
80
|
-
|
|
81
|
-
// src/components/ui/Chip.tsx
|
|
82
|
-
import { cva } from "cva";
|
|
83
|
-
import { twMerge as twMerge2 } from "tailwind-merge";
|
|
84
|
-
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
85
|
-
var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ jsx4("div", { className: twMerge2(chipVariants({ variant, size, className })), ...props });
|
|
86
|
-
var chipVariants = cva(["flex", "items-center", "rounded-3xl", "border", "w-fit"], {
|
|
87
|
-
variants: {
|
|
88
|
-
variant: {
|
|
89
|
-
neutral: ["text-grey-80", "border-grey-10"],
|
|
90
|
-
primary: ["text-purple-100", "border-purple-20"],
|
|
91
|
-
danger: ["text-pumpkin-100", "border-pumpkin-20"],
|
|
92
|
-
onboarding: ["text-green-100", "bg-green-10", "cursor-pointer"],
|
|
93
|
-
onboardingSelected: ["text-white", "bg-green-90", "cursor-pointer"]
|
|
94
|
-
},
|
|
95
|
-
size: {
|
|
96
|
-
small: ["text-sm", "leading-5", "px-2", "py-1", "gap-1.5"],
|
|
97
|
-
medium: ["text-base", "leading-6", "px-3", "py-2", "gap-2"]
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
defaultVariants: {
|
|
101
|
-
variant: "neutral",
|
|
102
|
-
size: "medium"
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
var Chip_default = Chip;
|
|
106
|
-
|
|
107
|
-
// src/components/primitives/separator.tsx
|
|
108
|
-
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
109
|
-
import * as React2 from "react";
|
|
110
|
-
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
111
|
-
var Separator = React2.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
112
|
-
SeparatorPrimitive.Root,
|
|
113
|
-
{
|
|
114
|
-
ref,
|
|
115
|
-
decorative,
|
|
116
|
-
orientation,
|
|
117
|
-
className: cn(
|
|
118
|
-
"shrink-0 bg-grey-10",
|
|
119
|
-
orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
|
|
120
|
-
className
|
|
121
|
-
),
|
|
122
|
-
...props
|
|
123
|
-
}
|
|
124
|
-
));
|
|
125
|
-
Separator.displayName = SeparatorPrimitive.Root.displayName;
|
|
126
|
-
|
|
127
|
-
// src/components/ui/Select.tsx
|
|
128
|
-
import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
129
|
-
var Select = forwardRef3(
|
|
130
|
-
({ label, options, placeholder, multiselect, description, classNames, error, id, ...props }, ref) => {
|
|
131
|
-
const { value, defaultValue, dir, className, onChange, ...rest } = props;
|
|
132
|
-
const [selected, setSelected] = useState([]);
|
|
133
|
-
const [open, setOpen] = useState(false);
|
|
134
|
-
const containerRef = useRef(null);
|
|
135
|
-
useEffect(() => {
|
|
136
|
-
if (!value) return setSelected([]);
|
|
137
|
-
setSelected(Array.isArray(value) ? value : [value]);
|
|
138
|
-
}, [value]);
|
|
139
|
-
const toggleOpen = () => setOpen((prev) => !prev);
|
|
140
|
-
const closeOnEscape = (event) => event.key === "Escape" && setOpen(false);
|
|
141
|
-
const handleOnOpenChange = (isOpen) => (!multiselect || isOpen) && setOpen(isOpen);
|
|
142
|
-
const setValueOnEnter = (event, value2) => event.key === "Enter" && handleChange(value2);
|
|
143
|
-
const getLabel = () => selected.map((o) => options?.find((option) => option.value === o)?.title).join(", ");
|
|
144
|
-
const chipLabels = selected?.map((s) => options?.find(({ value: value2 }) => value2 === s)).filter(Boolean);
|
|
145
|
-
function handleChange(newValue) {
|
|
146
|
-
if (newValue === "" && !multiselect) return;
|
|
147
|
-
let newSelected = [];
|
|
148
|
-
setSelected((prev) => {
|
|
149
|
-
newSelected = prev.includes(newValue) ? prev.filter((item) => item !== newValue) : [...prev, newValue];
|
|
150
|
-
return multiselect ? newSelected : [newValue];
|
|
151
|
-
});
|
|
152
|
-
onChange?.(multiselect ? newSelected : newValue);
|
|
153
|
-
}
|
|
154
|
-
return /* @__PURE__ */ jsxs2(
|
|
155
|
-
"div",
|
|
156
|
-
{
|
|
157
|
-
className: cn("flex w-full flex-col gap-1", className),
|
|
158
|
-
ref: containerRef,
|
|
159
|
-
"data-testid": `${(label ?? id)?.toLowerCase()}-select-element`,
|
|
160
|
-
children: [
|
|
161
|
-
/* @__PURE__ */ jsx6(
|
|
162
|
-
Label_default,
|
|
163
|
-
{
|
|
164
|
-
text: label,
|
|
165
|
-
htmlFor: props.name,
|
|
166
|
-
required: props.required,
|
|
167
|
-
description,
|
|
168
|
-
className: classNames?.label
|
|
169
|
-
}
|
|
170
|
-
),
|
|
171
|
-
/* @__PURE__ */ jsxs2(
|
|
172
|
-
SelectPrimitive.Root,
|
|
173
|
-
{
|
|
174
|
-
open,
|
|
175
|
-
value: selected.join(","),
|
|
176
|
-
onOpenChange: handleOnOpenChange,
|
|
177
|
-
onValueChange: multiselect ? void 0 : handleChange,
|
|
178
|
-
defaultValue: typeof defaultValue === "string" ? defaultValue : void 0,
|
|
179
|
-
dir: dir === "rtl" ? "rtl" : "ltr",
|
|
180
|
-
...rest,
|
|
181
|
-
children: [
|
|
182
|
-
/* @__PURE__ */ jsxs2(
|
|
183
|
-
SelectPrimitive.Trigger,
|
|
184
|
-
{
|
|
185
|
-
ref,
|
|
186
|
-
className: cn(
|
|
187
|
-
"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",
|
|
188
|
-
classNames?.trigger
|
|
189
|
-
),
|
|
190
|
-
children: [
|
|
191
|
-
/* @__PURE__ */ jsx6("span", { className: "truncate", children: /* @__PURE__ */ jsx6(
|
|
192
|
-
SelectPrimitive.Value,
|
|
193
|
-
{
|
|
194
|
-
placeholder: placeholder ?? "Select an option",
|
|
195
|
-
"aria-label": getLabel(),
|
|
196
|
-
children: getLabel()
|
|
197
|
-
}
|
|
198
|
-
) }),
|
|
199
|
-
/* @__PURE__ */ jsx6(
|
|
200
|
-
ChevronDownIcon,
|
|
201
|
-
{
|
|
202
|
-
className: "transform text-black group-data-[state=open]:rotate-180",
|
|
203
|
-
size: "16"
|
|
204
|
-
}
|
|
205
|
-
)
|
|
206
|
-
]
|
|
207
|
-
}
|
|
208
|
-
),
|
|
209
|
-
/* @__PURE__ */ jsx6(SelectPrimitive.Portal, { container: containerRef.current, children: /* @__PURE__ */ jsx6(
|
|
210
|
-
SelectPrimitive.Content,
|
|
211
|
-
{
|
|
212
|
-
hideWhenDetached: true,
|
|
213
|
-
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",
|
|
214
|
-
position: "popper",
|
|
215
|
-
sideOffset: 4,
|
|
216
|
-
onPointerDownOutside: toggleOpen,
|
|
217
|
-
onKeyDown: closeOnEscape,
|
|
218
|
-
children: /* @__PURE__ */ jsxs2(SelectPrimitive.Viewport, { children: [
|
|
219
|
-
multiselect && !!chipLabels?.length && /* @__PURE__ */ jsx6(
|
|
220
|
-
SelectPrimitive.Group,
|
|
221
|
-
{
|
|
222
|
-
className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
|
|
223
|
-
"data-testid": "selected-labels",
|
|
224
|
-
children: chipLabels?.map(
|
|
225
|
-
(chip) => chip && /* @__PURE__ */ jsxs2(Chip_default, { size: "small", variant: "primary", children: [
|
|
226
|
-
/* @__PURE__ */ jsx6("span", { children: chip.title }),
|
|
227
|
-
/* @__PURE__ */ jsx6(
|
|
228
|
-
X,
|
|
229
|
-
{
|
|
230
|
-
size: 18,
|
|
231
|
-
"data-testid": `chip-remove-${chip.value}`,
|
|
232
|
-
className: "cursor-pointer",
|
|
233
|
-
onClick: () => handleChange(chip.value)
|
|
234
|
-
}
|
|
235
|
-
)
|
|
236
|
-
] }, chip.title)
|
|
237
|
-
)
|
|
238
|
-
}
|
|
239
|
-
),
|
|
240
|
-
/* @__PURE__ */ jsx6(Separator, {}),
|
|
241
|
-
options?.map(({ id: id2, title, value: value2 }) => /* @__PURE__ */ jsxs2(
|
|
242
|
-
SelectPrimitive.Item,
|
|
243
|
-
{
|
|
244
|
-
value: value2,
|
|
245
|
-
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",
|
|
246
|
-
"data-state": selected.includes(value2) ? "checked" : "unchecked",
|
|
247
|
-
onKeyDown: (e) => setValueOnEnter(e, value2),
|
|
248
|
-
onClick: () => handleChange(value2),
|
|
249
|
-
children: [
|
|
250
|
-
/* @__PURE__ */ jsx6(SelectPrimitive.ItemText, { children: title }),
|
|
251
|
-
/* @__PURE__ */ jsx6(
|
|
252
|
-
CheckIcon,
|
|
253
|
-
{
|
|
254
|
-
className: "absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
|
|
255
|
-
size: 16
|
|
256
|
-
}
|
|
257
|
-
)
|
|
258
|
-
]
|
|
259
|
-
},
|
|
260
|
-
id2
|
|
261
|
-
))
|
|
262
|
-
] })
|
|
263
|
-
}
|
|
264
|
-
) })
|
|
265
|
-
]
|
|
266
|
-
}
|
|
267
|
-
),
|
|
268
|
-
/* @__PURE__ */ jsx6(ErrorMessage_default, { message: error })
|
|
269
|
-
]
|
|
270
|
-
}
|
|
271
|
-
);
|
|
272
|
-
}
|
|
273
|
-
);
|
|
274
|
-
Select.displayName = "Select";
|
|
275
|
-
var Select_default = Select;
|
|
276
|
-
|
|
277
21
|
// src/components/ui/Checkbox.tsx
|
|
278
|
-
import
|
|
279
|
-
|
|
280
|
-
import {
|
|
281
|
-
forwardRef as forwardRef4
|
|
282
|
-
} from "react";
|
|
283
|
-
import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
284
|
-
var CheckboxToggle = forwardRef4(({ className, ...props }, ref) => /* @__PURE__ */ jsx7(
|
|
22
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
23
|
+
var CheckboxToggle = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
285
24
|
CheckboxPrimitive.Root,
|
|
286
25
|
{
|
|
287
26
|
ref,
|
|
@@ -311,95 +50,131 @@ var CheckboxToggle = forwardRef4(({ className, ...props }, ref) => /* @__PURE__
|
|
|
311
50
|
className
|
|
312
51
|
),
|
|
313
52
|
...props,
|
|
314
|
-
children: /* @__PURE__ */
|
|
315
|
-
/* @__PURE__ */
|
|
316
|
-
/* @__PURE__ */
|
|
53
|
+
children: /* @__PURE__ */ jsxs(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: [
|
|
54
|
+
/* @__PURE__ */ jsx(Check, { className: "hidden h-4 w-4 group-data-[state=checked]:block" }),
|
|
55
|
+
/* @__PURE__ */ jsx(Minus, { className: "hidden h-4 w-4 group-data-[state=indeterminate]:block" })
|
|
317
56
|
] })
|
|
318
57
|
}
|
|
319
58
|
));
|
|
320
59
|
CheckboxToggle.displayName = CheckboxPrimitive.Root.displayName;
|
|
321
|
-
var Checkbox =
|
|
60
|
+
var Checkbox = forwardRef(
|
|
322
61
|
({ classNames, children, ...props }, ref) => {
|
|
323
62
|
const { disabled } = props;
|
|
324
63
|
const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`;
|
|
325
64
|
const labelClassName = disabled ? "text-grey-40 pointer-events-none" : "";
|
|
326
|
-
return /* @__PURE__ */
|
|
327
|
-
/* @__PURE__ */
|
|
328
|
-
/* @__PURE__ */
|
|
65
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex space-x-2", classNames?.wrapper), children: [
|
|
66
|
+
/* @__PURE__ */ jsx(CheckboxToggle, { id, disabled, ref, ...props }),
|
|
67
|
+
/* @__PURE__ */ jsx("label", { htmlFor: id, className: cn(labelClassName, classNames?.label), children })
|
|
329
68
|
] });
|
|
330
69
|
}
|
|
331
70
|
);
|
|
332
71
|
Checkbox.displayName = "Checkbox";
|
|
333
72
|
var Checkbox_default = Checkbox;
|
|
334
73
|
|
|
335
|
-
// src/components/ui/
|
|
336
|
-
import {
|
|
337
|
-
import {
|
|
338
|
-
import { jsx as
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
return /* @__PURE__ */ jsx8(IconComponent, { size: 14 });
|
|
353
|
-
}
|
|
354
|
-
return null;
|
|
355
|
-
};
|
|
356
|
-
const optionIcon = icon ? getIconIfValid(icon) : void 0;
|
|
357
|
-
return /* @__PURE__ */ jsxs4(
|
|
358
|
-
"li",
|
|
359
|
-
{
|
|
360
|
-
className: cn(
|
|
361
|
-
"group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",
|
|
362
|
-
className
|
|
363
|
-
),
|
|
364
|
-
...props,
|
|
365
|
-
"data-state": isSelected ? "checked" : "unchecked",
|
|
366
|
-
children: [
|
|
367
|
-
optionIcon && /* @__PURE__ */ jsx8("span", { className: "mr-2", children: optionIcon }),
|
|
368
|
-
hasCheckbox && /* @__PURE__ */ jsx8(Checkbox_default, { id: value, checked: isSelected, onClick: (e) => e.preventDefault() }),
|
|
369
|
-
/* @__PURE__ */ jsxs4("div", { children: [
|
|
370
|
-
/* @__PURE__ */ jsx8("p", { children: title }),
|
|
371
|
-
/* @__PURE__ */ jsx8("p", { className: "text-xs text-grey-80", children: description })
|
|
372
|
-
] }),
|
|
373
|
-
/* @__PURE__ */ jsx8(
|
|
374
|
-
CheckIcon2,
|
|
375
|
-
{
|
|
376
|
-
className: "absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",
|
|
377
|
-
size: 16
|
|
378
|
-
}
|
|
379
|
-
)
|
|
380
|
-
]
|
|
74
|
+
// src/components/ui/Chip.tsx
|
|
75
|
+
import { cva } from "cva";
|
|
76
|
+
import { twMerge as twMerge2 } from "tailwind-merge";
|
|
77
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
78
|
+
var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ jsx2("div", { className: twMerge2(chipVariants({ variant, size, className })), ...props });
|
|
79
|
+
var chipVariants = cva(["flex", "items-center", "rounded-3xl", "border", "w-fit"], {
|
|
80
|
+
variants: {
|
|
81
|
+
variant: {
|
|
82
|
+
neutral: ["text-grey-80", "border-grey-10"],
|
|
83
|
+
primary: ["text-purple-100", "border-purple-20"],
|
|
84
|
+
danger: ["text-pumpkin-100", "border-pumpkin-20"],
|
|
85
|
+
onboarding: ["text-green-100", "bg-green-10", "cursor-pointer"],
|
|
86
|
+
onboardingSelected: ["text-white", "bg-green-90", "cursor-pointer"]
|
|
87
|
+
},
|
|
88
|
+
size: {
|
|
89
|
+
small: ["text-sm", "leading-5", "px-2", "py-1", "gap-1.5"],
|
|
90
|
+
medium: ["text-base", "leading-6", "px-3", "py-2", "gap-2"]
|
|
381
91
|
}
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
92
|
+
},
|
|
93
|
+
defaultVariants: {
|
|
94
|
+
variant: "neutral",
|
|
95
|
+
size: "medium"
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
var Chip_default = Chip;
|
|
385
99
|
|
|
386
100
|
// src/components/ui/Input.tsx
|
|
387
101
|
import { cva as cva2 } from "cva";
|
|
388
|
-
import { icons
|
|
389
|
-
import { forwardRef as
|
|
390
|
-
|
|
391
|
-
|
|
102
|
+
import { icons, X } from "lucide-react";
|
|
103
|
+
import { forwardRef as forwardRef3 } from "react";
|
|
104
|
+
|
|
105
|
+
// src/components/ui/ErrorMessage.tsx
|
|
106
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
107
|
+
function ErrorMessage({ message, className, ...props }) {
|
|
108
|
+
if (!message) return null;
|
|
109
|
+
return /* @__PURE__ */ jsx3("p", { className: cn("px-1 text-xs text-red-600", className), ...props, children: message });
|
|
110
|
+
}
|
|
111
|
+
var ErrorMessage_default = ErrorMessage;
|
|
112
|
+
|
|
113
|
+
// src/components/ui/Label.tsx
|
|
114
|
+
import { InfoIcon } from "lucide-react";
|
|
115
|
+
|
|
116
|
+
// src/components/primitives/tooltip.tsx
|
|
117
|
+
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
118
|
+
import * as React from "react";
|
|
119
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
120
|
+
var TooltipProvider = TooltipPrimitive.Provider;
|
|
121
|
+
var Tooltip = TooltipPrimitive.Root;
|
|
122
|
+
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
123
|
+
var TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx4(
|
|
124
|
+
TooltipPrimitive.Content,
|
|
125
|
+
{
|
|
126
|
+
ref,
|
|
127
|
+
sideOffset,
|
|
128
|
+
className: cn(
|
|
129
|
+
"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",
|
|
130
|
+
className
|
|
131
|
+
),
|
|
132
|
+
...props
|
|
133
|
+
}
|
|
134
|
+
));
|
|
135
|
+
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
136
|
+
|
|
137
|
+
// src/components/ui/Label.tsx
|
|
138
|
+
import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
139
|
+
function Label({ text, required, description, className, ...props }) {
|
|
140
|
+
if (!text) return null;
|
|
141
|
+
return /* @__PURE__ */ jsxs2("div", { className: "flex w-full flex-row gap-1", children: [
|
|
142
|
+
/* @__PURE__ */ jsxs2(
|
|
143
|
+
"label",
|
|
144
|
+
{
|
|
145
|
+
className: cn(
|
|
146
|
+
"text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
147
|
+
className
|
|
148
|
+
),
|
|
149
|
+
...props,
|
|
150
|
+
children: [
|
|
151
|
+
text,
|
|
152
|
+
required && /* @__PURE__ */ jsx5("span", { className: "text-red-600", children: "\xA0*" })
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
),
|
|
156
|
+
!!description && /* @__PURE__ */ jsx5(TooltipProvider, { children: /* @__PURE__ */ jsxs2(Tooltip, { children: [
|
|
157
|
+
/* @__PURE__ */ jsx5(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx5(InfoIcon, { className: "h-4 w-4" }) }),
|
|
158
|
+
/* @__PURE__ */ jsx5(TooltipContent, { className: "max-w-48", children: description })
|
|
159
|
+
] }) })
|
|
160
|
+
] });
|
|
161
|
+
}
|
|
162
|
+
var Label_default = Label;
|
|
163
|
+
|
|
164
|
+
// src/components/ui/Input.tsx
|
|
165
|
+
import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
166
|
+
var Input = forwardRef3(
|
|
392
167
|
({ label, error, description, theme, icon, onClear, value, onChange, classNames, ...props }, ref) => {
|
|
393
168
|
const handleClear = () => {
|
|
394
169
|
onChange?.({ target: { value: "" } });
|
|
395
170
|
onClear?.();
|
|
396
171
|
};
|
|
397
|
-
const IconComponent = icon &&
|
|
172
|
+
const IconComponent = icon && icons[icon];
|
|
398
173
|
const placeholder = props.placeholder ?? (icon === "Search" ? "Search..." : "");
|
|
399
174
|
const hasIcon = !!icon;
|
|
400
175
|
const iconColor = theme === "dark" ? "text-white" : "text-grey-80";
|
|
401
|
-
return /* @__PURE__ */
|
|
402
|
-
label && /* @__PURE__ */
|
|
176
|
+
return /* @__PURE__ */ jsxs3("div", { className: "group flex w-full flex-col gap-1", "data-testid": `input-wrapper-${props.id}`, children: [
|
|
177
|
+
label && /* @__PURE__ */ jsx6(
|
|
403
178
|
Label_default,
|
|
404
179
|
{
|
|
405
180
|
text: label,
|
|
@@ -409,14 +184,14 @@ var Input = forwardRef5(
|
|
|
409
184
|
className: classNames?.label
|
|
410
185
|
}
|
|
411
186
|
),
|
|
412
|
-
/* @__PURE__ */
|
|
413
|
-
IconComponent && /* @__PURE__ */
|
|
187
|
+
/* @__PURE__ */ jsxs3("div", { className: "relative flex flex-row items-center", children: [
|
|
188
|
+
IconComponent && /* @__PURE__ */ jsx6(
|
|
414
189
|
IconComponent,
|
|
415
190
|
{
|
|
416
191
|
className: `absolute left-3 h-4 w-4 ${iconColor} opacity-50 group-hover:opacity-100`
|
|
417
192
|
}
|
|
418
193
|
),
|
|
419
|
-
/* @__PURE__ */
|
|
194
|
+
/* @__PURE__ */ jsx6(
|
|
420
195
|
"input",
|
|
421
196
|
{
|
|
422
197
|
className: cn(inputVariants({ theme, hasIcon })),
|
|
@@ -428,8 +203,8 @@ var Input = forwardRef5(
|
|
|
428
203
|
...props
|
|
429
204
|
}
|
|
430
205
|
),
|
|
431
|
-
hasIcon && value && /* @__PURE__ */
|
|
432
|
-
|
|
206
|
+
hasIcon && value && /* @__PURE__ */ jsx6(
|
|
207
|
+
X,
|
|
433
208
|
{
|
|
434
209
|
className: `absolute right-3 h-4 w-4 cursor-pointer ${iconColor}`,
|
|
435
210
|
onClick: handleClear,
|
|
@@ -437,7 +212,7 @@ var Input = forwardRef5(
|
|
|
437
212
|
}
|
|
438
213
|
)
|
|
439
214
|
] }),
|
|
440
|
-
/* @__PURE__ */
|
|
215
|
+
/* @__PURE__ */ jsx6(ErrorMessage_default, { message: error })
|
|
441
216
|
] });
|
|
442
217
|
}
|
|
443
218
|
);
|
|
@@ -492,9 +267,60 @@ var inputVariants = cva2(
|
|
|
492
267
|
);
|
|
493
268
|
var Input_default = Input;
|
|
494
269
|
|
|
270
|
+
// src/components/ui/ListItem.tsx
|
|
271
|
+
import { CheckIcon } from "lucide-react";
|
|
272
|
+
import { icons as icons2 } from "lucide-react";
|
|
273
|
+
import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
274
|
+
function ListItem({
|
|
275
|
+
icon,
|
|
276
|
+
hasCheckbox,
|
|
277
|
+
isSelected,
|
|
278
|
+
className,
|
|
279
|
+
title,
|
|
280
|
+
value,
|
|
281
|
+
description,
|
|
282
|
+
...props
|
|
283
|
+
}) {
|
|
284
|
+
const getIconIfValid = (icon2) => {
|
|
285
|
+
if (icon2 in icons2) {
|
|
286
|
+
const IconComponent = icons2[icon2];
|
|
287
|
+
return /* @__PURE__ */ jsx7(IconComponent, { size: 14 });
|
|
288
|
+
}
|
|
289
|
+
return null;
|
|
290
|
+
};
|
|
291
|
+
const optionIcon = icon ? getIconIfValid(icon) : void 0;
|
|
292
|
+
return /* @__PURE__ */ jsxs4(
|
|
293
|
+
"li",
|
|
294
|
+
{
|
|
295
|
+
className: cn(
|
|
296
|
+
"group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",
|
|
297
|
+
className
|
|
298
|
+
),
|
|
299
|
+
...props,
|
|
300
|
+
"data-state": isSelected ? "checked" : "unchecked",
|
|
301
|
+
children: [
|
|
302
|
+
optionIcon && /* @__PURE__ */ jsx7("span", { className: "mr-2", children: optionIcon }),
|
|
303
|
+
hasCheckbox && /* @__PURE__ */ jsx7(Checkbox_default, { id: value, checked: isSelected, onClick: (e) => e.preventDefault() }),
|
|
304
|
+
/* @__PURE__ */ jsxs4("div", { children: [
|
|
305
|
+
/* @__PURE__ */ jsx7("p", { children: title }),
|
|
306
|
+
/* @__PURE__ */ jsx7("p", { className: "text-xs text-grey-80", children: description })
|
|
307
|
+
] }),
|
|
308
|
+
/* @__PURE__ */ jsx7(
|
|
309
|
+
CheckIcon,
|
|
310
|
+
{
|
|
311
|
+
className: "absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",
|
|
312
|
+
size: 16
|
|
313
|
+
}
|
|
314
|
+
)
|
|
315
|
+
]
|
|
316
|
+
}
|
|
317
|
+
);
|
|
318
|
+
}
|
|
319
|
+
var ListItem_default = ListItem;
|
|
320
|
+
|
|
495
321
|
// src/components/ui/MapComponent.tsx
|
|
496
|
-
import { APIProvider, Map,
|
|
497
|
-
import { jsx as
|
|
322
|
+
import { AdvancedMarker, APIProvider, Map, Pin } from "@vis.gl/react-google-maps";
|
|
323
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
498
324
|
function MapComponent({
|
|
499
325
|
apiKey,
|
|
500
326
|
mapId,
|
|
@@ -504,7 +330,7 @@ function MapComponent({
|
|
|
504
330
|
}) {
|
|
505
331
|
const defaultPosition = { lat: 40.715021, lng: -74.00459 };
|
|
506
332
|
const defaultZoom = 11;
|
|
507
|
-
return /* @__PURE__ */
|
|
333
|
+
return /* @__PURE__ */ jsx8(APIProvider, { apiKey, children: /* @__PURE__ */ jsx8("div", { className: cn("h-screen max-w-full", className), children: /* @__PURE__ */ jsx8(
|
|
508
334
|
Map,
|
|
509
335
|
{
|
|
510
336
|
defaultZoom: position ? zoom : defaultZoom,
|
|
@@ -513,24 +339,28 @@ function MapComponent({
|
|
|
513
339
|
keyboardShortcuts: false,
|
|
514
340
|
disableDefaultUI: true,
|
|
515
341
|
zoomControl: true,
|
|
516
|
-
children: position && /* @__PURE__ */
|
|
342
|
+
children: position && /* @__PURE__ */ jsx8(AdvancedMarker, { position, children: /* @__PURE__ */ jsx8(Pin, { background: "#0B5441", borderColor: "#EBFDF1", glyphColor: "#D4F500" }) })
|
|
517
343
|
}
|
|
518
344
|
) }) });
|
|
519
345
|
}
|
|
520
346
|
var MapComponent_default = MapComponent;
|
|
521
347
|
|
|
348
|
+
// src/components/ui/PlacesQueryInput.tsx
|
|
349
|
+
import { CircleX, LoaderCircle } from "lucide-react";
|
|
350
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
351
|
+
|
|
522
352
|
// src/components/primitives/command.tsx
|
|
523
353
|
import { Command as CommandPrimitive } from "cmdk";
|
|
524
354
|
import { Search } from "lucide-react";
|
|
525
|
-
import * as
|
|
355
|
+
import * as React3 from "react";
|
|
526
356
|
|
|
527
357
|
// src/components/primitives/dialog.tsx
|
|
528
358
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
529
|
-
import { X as
|
|
530
|
-
import * as
|
|
531
|
-
import { jsx as
|
|
359
|
+
import { X as X2 } from "lucide-react";
|
|
360
|
+
import * as React2 from "react";
|
|
361
|
+
import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
532
362
|
var DialogPortal = DialogPrimitive.Portal;
|
|
533
|
-
var DialogOverlay =
|
|
363
|
+
var DialogOverlay = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
|
|
534
364
|
DialogPrimitive.Overlay,
|
|
535
365
|
{
|
|
536
366
|
ref,
|
|
@@ -542,31 +372,31 @@ var DialogOverlay = React3.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
542
372
|
}
|
|
543
373
|
));
|
|
544
374
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
545
|
-
var DialogContent =
|
|
546
|
-
/* @__PURE__ */
|
|
547
|
-
/* @__PURE__ */
|
|
375
|
+
var DialogContent = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs5(DialogPortal, { children: [
|
|
376
|
+
/* @__PURE__ */ jsx9(DialogOverlay, {}),
|
|
377
|
+
/* @__PURE__ */ jsxs5(
|
|
548
378
|
DialogPrimitive.Content,
|
|
549
379
|
{
|
|
550
380
|
ref,
|
|
551
381
|
className: cn(
|
|
552
|
-
"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%]
|
|
382
|
+
"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",
|
|
553
383
|
className
|
|
554
384
|
),
|
|
555
385
|
...props,
|
|
556
386
|
children: [
|
|
557
387
|
children,
|
|
558
|
-
/* @__PURE__ */
|
|
559
|
-
/* @__PURE__ */
|
|
560
|
-
/* @__PURE__ */
|
|
388
|
+
/* @__PURE__ */ jsxs5(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: [
|
|
389
|
+
/* @__PURE__ */ jsx9(X2, { className: "h-4 w-4" }),
|
|
390
|
+
/* @__PURE__ */ jsx9("span", { className: "sr-only", children: "Close" })
|
|
561
391
|
] })
|
|
562
392
|
]
|
|
563
393
|
}
|
|
564
394
|
)
|
|
565
395
|
] }));
|
|
566
396
|
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
567
|
-
var DialogHeader = ({ className, ...props }) => /* @__PURE__ */
|
|
397
|
+
var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx9("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props });
|
|
568
398
|
DialogHeader.displayName = "DialogHeader";
|
|
569
|
-
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */
|
|
399
|
+
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx9(
|
|
570
400
|
"div",
|
|
571
401
|
{
|
|
572
402
|
className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className),
|
|
@@ -574,7 +404,7 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx11(
|
|
|
574
404
|
}
|
|
575
405
|
);
|
|
576
406
|
DialogFooter.displayName = "DialogFooter";
|
|
577
|
-
var DialogTitle =
|
|
407
|
+
var DialogTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
|
|
578
408
|
DialogPrimitive.Title,
|
|
579
409
|
{
|
|
580
410
|
ref,
|
|
@@ -583,7 +413,7 @@ var DialogTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
583
413
|
}
|
|
584
414
|
));
|
|
585
415
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
586
|
-
var DialogDescription =
|
|
416
|
+
var DialogDescription = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
|
|
587
417
|
DialogPrimitive.Description,
|
|
588
418
|
{
|
|
589
419
|
ref,
|
|
@@ -594,8 +424,8 @@ var DialogDescription = React3.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
594
424
|
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
595
425
|
|
|
596
426
|
// src/components/primitives/command.tsx
|
|
597
|
-
import { jsx as
|
|
598
|
-
var Command =
|
|
427
|
+
import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
428
|
+
var Command = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
599
429
|
CommandPrimitive,
|
|
600
430
|
{
|
|
601
431
|
ref,
|
|
@@ -607,9 +437,9 @@ var Command = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
|
|
|
607
437
|
}
|
|
608
438
|
));
|
|
609
439
|
Command.displayName = CommandPrimitive.displayName;
|
|
610
|
-
var CommandInput =
|
|
611
|
-
/* @__PURE__ */
|
|
612
|
-
/* @__PURE__ */
|
|
440
|
+
var CommandInput = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs6("div", { className: "m-1 flex items-center rounded-xl border px-3", "cmdk-input-wrapper": "", children: [
|
|
441
|
+
/* @__PURE__ */ jsx10(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
|
|
442
|
+
/* @__PURE__ */ jsx10(
|
|
613
443
|
CommandPrimitive.Input,
|
|
614
444
|
{
|
|
615
445
|
ref,
|
|
@@ -622,7 +452,7 @@ var CommandInput = React4.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
622
452
|
)
|
|
623
453
|
] }));
|
|
624
454
|
CommandInput.displayName = CommandPrimitive.Input.displayName;
|
|
625
|
-
var CommandList =
|
|
455
|
+
var CommandList = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
626
456
|
CommandPrimitive.List,
|
|
627
457
|
{
|
|
628
458
|
ref,
|
|
@@ -631,9 +461,9 @@ var CommandList = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
631
461
|
}
|
|
632
462
|
));
|
|
633
463
|
CommandList.displayName = CommandPrimitive.List.displayName;
|
|
634
|
-
var CommandEmpty =
|
|
464
|
+
var CommandEmpty = React3.forwardRef((props, ref) => /* @__PURE__ */ jsx10(CommandPrimitive.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
|
|
635
465
|
CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
|
|
636
|
-
var CommandGroup =
|
|
466
|
+
var CommandGroup = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
637
467
|
CommandPrimitive.Group,
|
|
638
468
|
{
|
|
639
469
|
ref,
|
|
@@ -645,7 +475,7 @@ var CommandGroup = React4.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
645
475
|
}
|
|
646
476
|
));
|
|
647
477
|
CommandGroup.displayName = CommandPrimitive.Group.displayName;
|
|
648
|
-
var CommandSeparator =
|
|
478
|
+
var CommandSeparator = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
649
479
|
CommandPrimitive.Separator,
|
|
650
480
|
{
|
|
651
481
|
ref,
|
|
@@ -654,7 +484,7 @@ var CommandSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
654
484
|
}
|
|
655
485
|
));
|
|
656
486
|
CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
|
|
657
|
-
var CommandItem =
|
|
487
|
+
var CommandItem = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
658
488
|
CommandPrimitive.Item,
|
|
659
489
|
{
|
|
660
490
|
ref,
|
|
@@ -667,7 +497,7 @@ var CommandItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
667
497
|
));
|
|
668
498
|
CommandItem.displayName = CommandPrimitive.Item.displayName;
|
|
669
499
|
var CommandShortcut = ({ className, ...props }) => {
|
|
670
|
-
return /* @__PURE__ */
|
|
500
|
+
return /* @__PURE__ */ jsx10(
|
|
671
501
|
"span",
|
|
672
502
|
{
|
|
673
503
|
className: cn("ml-auto text-xs tracking-widest text-neutral-500", className),
|
|
@@ -728,33 +558,37 @@ var geocode = async (address, key) => {
|
|
|
728
558
|
};
|
|
729
559
|
|
|
730
560
|
// src/components/ui/PlacesQueryInput.tsx
|
|
731
|
-
import {
|
|
732
|
-
import { useState as useState2, useCallback, useRef as useRef2, useEffect as useEffect2 } from "react";
|
|
733
|
-
import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
561
|
+
import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
734
562
|
function PlacesQueryInput({
|
|
735
563
|
apiKey,
|
|
736
564
|
selected,
|
|
737
565
|
onSelect,
|
|
738
566
|
className
|
|
739
567
|
}) {
|
|
740
|
-
const [predictions, setPredictions] =
|
|
741
|
-
const [input, setInput] =
|
|
742
|
-
const [isLoadingPredictions, setIsLoadingPredictions] =
|
|
743
|
-
const [shouldOpenUpward, setShouldOpenUpward] =
|
|
744
|
-
const timeoutRef =
|
|
745
|
-
const inputRef =
|
|
568
|
+
const [predictions, setPredictions] = useState(null);
|
|
569
|
+
const [input, setInput] = useState(selected?.description ?? "");
|
|
570
|
+
const [isLoadingPredictions, setIsLoadingPredictions] = useState(false);
|
|
571
|
+
const [shouldOpenUpward, setShouldOpenUpward] = useState(false);
|
|
572
|
+
const timeoutRef = useRef(null);
|
|
573
|
+
const inputRef = useRef(null);
|
|
746
574
|
const debouncedAutocomplete = useCallback((value) => {
|
|
747
575
|
if (timeoutRef.current) {
|
|
748
576
|
clearTimeout(timeoutRef.current);
|
|
749
577
|
}
|
|
750
578
|
timeoutRef.current = setTimeout(async () => {
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
579
|
+
try {
|
|
580
|
+
if (value.length > 2) {
|
|
581
|
+
setIsLoadingPredictions(true);
|
|
582
|
+
const fetchedPredictions = await autocomplete(value, apiKey);
|
|
583
|
+
setIsLoadingPredictions(false);
|
|
584
|
+
setPredictions(fetchedPredictions ?? []);
|
|
585
|
+
} else {
|
|
586
|
+
setPredictions(null);
|
|
587
|
+
}
|
|
588
|
+
} catch (error) {
|
|
589
|
+
setIsLoadingPredictions(false);
|
|
590
|
+
setPredictions([]);
|
|
591
|
+
console.error("Autocomplete error:", error);
|
|
758
592
|
}
|
|
759
593
|
}, 300);
|
|
760
594
|
}, []);
|
|
@@ -773,7 +607,7 @@ function PlacesQueryInput({
|
|
|
773
607
|
setInput("");
|
|
774
608
|
};
|
|
775
609
|
const handleBlur = () => setTimeout(() => setPredictions(null), 200);
|
|
776
|
-
|
|
610
|
+
useEffect(() => {
|
|
777
611
|
const checkDropdownPosition = () => {
|
|
778
612
|
if (inputRef.current) {
|
|
779
613
|
const rect = inputRef.current.getBoundingClientRect();
|
|
@@ -785,9 +619,9 @@ function PlacesQueryInput({
|
|
|
785
619
|
window.addEventListener("resize", checkDropdownPosition);
|
|
786
620
|
return () => window.removeEventListener("resize", checkDropdownPosition);
|
|
787
621
|
}, []);
|
|
788
|
-
return /* @__PURE__ */
|
|
789
|
-
/* @__PURE__ */
|
|
790
|
-
/* @__PURE__ */
|
|
622
|
+
return /* @__PURE__ */ jsx11("div", { className: cn("relative w-full", className), ref: inputRef, onBlur: handleBlur, children: /* @__PURE__ */ jsxs7(Command, { children: [
|
|
623
|
+
/* @__PURE__ */ jsxs7("div", { className: "relative w-full", children: [
|
|
624
|
+
/* @__PURE__ */ jsx11(
|
|
791
625
|
CommandInput,
|
|
792
626
|
{
|
|
793
627
|
placeholder: "Type an address to search...",
|
|
@@ -796,18 +630,18 @@ function PlacesQueryInput({
|
|
|
796
630
|
className: "truncate pr-8"
|
|
797
631
|
}
|
|
798
632
|
),
|
|
799
|
-
isLoadingPredictions && /* @__PURE__ */
|
|
800
|
-
input && /* @__PURE__ */
|
|
633
|
+
isLoadingPredictions && /* @__PURE__ */ jsx11(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" }),
|
|
634
|
+
input && /* @__PURE__ */ jsx11(
|
|
801
635
|
"button",
|
|
802
636
|
{
|
|
803
637
|
type: "button",
|
|
804
638
|
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",
|
|
805
639
|
onClick: handleClear,
|
|
806
|
-
children: /* @__PURE__ */
|
|
640
|
+
children: /* @__PURE__ */ jsx11(CircleX, { className: "h-4 w-4 text-green-100" })
|
|
807
641
|
}
|
|
808
642
|
)
|
|
809
643
|
] }),
|
|
810
|
-
predictions && /* @__PURE__ */
|
|
644
|
+
predictions && /* @__PURE__ */ jsxs7(
|
|
811
645
|
CommandList,
|
|
812
646
|
{
|
|
813
647
|
className: cn(
|
|
@@ -815,8 +649,8 @@ function PlacesQueryInput({
|
|
|
815
649
|
shouldOpenUpward ? "bottom-full" : "top-full"
|
|
816
650
|
),
|
|
817
651
|
children: [
|
|
818
|
-
/* @__PURE__ */
|
|
819
|
-
/* @__PURE__ */
|
|
652
|
+
/* @__PURE__ */ jsx11(CommandEmpty, { children: "No results" }),
|
|
653
|
+
/* @__PURE__ */ jsx11(CommandGroup, { children: predictions.map((prediction) => /* @__PURE__ */ jsx11(
|
|
820
654
|
CommandItem,
|
|
821
655
|
{
|
|
822
656
|
onSelect: () => handleSelect(prediction),
|
|
@@ -827,20 +661,287 @@ function PlacesQueryInput({
|
|
|
827
661
|
)) })
|
|
828
662
|
]
|
|
829
663
|
}
|
|
830
|
-
)
|
|
831
|
-
] }) });
|
|
664
|
+
)
|
|
665
|
+
] }) });
|
|
666
|
+
}
|
|
667
|
+
var PlacesQueryInput_default = PlacesQueryInput;
|
|
668
|
+
|
|
669
|
+
// src/components/ui/Select.tsx
|
|
670
|
+
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
671
|
+
import { CheckIcon as CheckIcon2, ChevronDownIcon, X as X3 } from "lucide-react";
|
|
672
|
+
import {
|
|
673
|
+
forwardRef as forwardRef7,
|
|
674
|
+
useEffect as useEffect2,
|
|
675
|
+
useRef as useRef2,
|
|
676
|
+
useState as useState2
|
|
677
|
+
} from "react";
|
|
678
|
+
|
|
679
|
+
// src/components/primitives/separator.tsx
|
|
680
|
+
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
681
|
+
import * as React4 from "react";
|
|
682
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
683
|
+
var Separator = React4.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx12(
|
|
684
|
+
SeparatorPrimitive.Root,
|
|
685
|
+
{
|
|
686
|
+
ref,
|
|
687
|
+
decorative,
|
|
688
|
+
orientation,
|
|
689
|
+
className: cn(
|
|
690
|
+
"shrink-0 bg-grey-10",
|
|
691
|
+
orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
|
|
692
|
+
className
|
|
693
|
+
),
|
|
694
|
+
...props
|
|
695
|
+
}
|
|
696
|
+
));
|
|
697
|
+
Separator.displayName = SeparatorPrimitive.Root.displayName;
|
|
698
|
+
|
|
699
|
+
// src/components/ui/Select.tsx
|
|
700
|
+
import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
701
|
+
var Select = forwardRef7(
|
|
702
|
+
({ label, options, placeholder, multiselect, description, classNames, error, id, ...props }, ref) => {
|
|
703
|
+
const { value, defaultValue, dir, className, onChange, ...rest } = props;
|
|
704
|
+
const [selected, setSelected] = useState2([]);
|
|
705
|
+
const [open, setOpen] = useState2(false);
|
|
706
|
+
const containerRef = useRef2(null);
|
|
707
|
+
useEffect2(() => {
|
|
708
|
+
if (!value) return setSelected([]);
|
|
709
|
+
setSelected(Array.isArray(value) ? value : [value]);
|
|
710
|
+
}, [value]);
|
|
711
|
+
const toggleOpen = () => setOpen((prev) => !prev);
|
|
712
|
+
const closeOnEscape = (event) => event.key === "Escape" && setOpen(false);
|
|
713
|
+
const handleOnOpenChange = (isOpen) => (!multiselect || isOpen) && setOpen(isOpen);
|
|
714
|
+
const setValueOnEnter = (event, value2) => event.key === "Enter" && handleChange(value2);
|
|
715
|
+
const getLabel = () => selected.map((o) => options?.find((option) => option.value === o)?.title).join(", ");
|
|
716
|
+
const chipLabels = selected?.map((s) => options?.find(({ value: value2 }) => value2 === s)).filter(Boolean);
|
|
717
|
+
function handleChange(newValue) {
|
|
718
|
+
if (newValue === "" && !multiselect) return;
|
|
719
|
+
let newSelected = [];
|
|
720
|
+
setSelected((prev) => {
|
|
721
|
+
newSelected = prev.includes(newValue) ? prev.filter((item) => item !== newValue) : [...prev, newValue];
|
|
722
|
+
return multiselect ? newSelected : [newValue];
|
|
723
|
+
});
|
|
724
|
+
onChange?.(multiselect ? newSelected : newValue);
|
|
725
|
+
}
|
|
726
|
+
return /* @__PURE__ */ jsxs8(
|
|
727
|
+
"div",
|
|
728
|
+
{
|
|
729
|
+
className: cn("flex w-full flex-col gap-1", className),
|
|
730
|
+
ref: containerRef,
|
|
731
|
+
"data-testid": `${(label ?? id)?.toLowerCase()}-select-element`,
|
|
732
|
+
children: [
|
|
733
|
+
/* @__PURE__ */ jsx13(
|
|
734
|
+
Label_default,
|
|
735
|
+
{
|
|
736
|
+
text: label,
|
|
737
|
+
htmlFor: props.name,
|
|
738
|
+
required: props.required,
|
|
739
|
+
description,
|
|
740
|
+
className: classNames?.label
|
|
741
|
+
}
|
|
742
|
+
),
|
|
743
|
+
/* @__PURE__ */ jsxs8(
|
|
744
|
+
SelectPrimitive.Root,
|
|
745
|
+
{
|
|
746
|
+
open,
|
|
747
|
+
value: selected.join(","),
|
|
748
|
+
onOpenChange: handleOnOpenChange,
|
|
749
|
+
onValueChange: multiselect ? void 0 : handleChange,
|
|
750
|
+
defaultValue: typeof defaultValue === "string" ? defaultValue : void 0,
|
|
751
|
+
dir: dir === "rtl" ? "rtl" : "ltr",
|
|
752
|
+
...rest,
|
|
753
|
+
children: [
|
|
754
|
+
/* @__PURE__ */ jsxs8(
|
|
755
|
+
SelectPrimitive.Trigger,
|
|
756
|
+
{
|
|
757
|
+
ref,
|
|
758
|
+
className: cn(
|
|
759
|
+
"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",
|
|
760
|
+
classNames?.trigger
|
|
761
|
+
),
|
|
762
|
+
children: [
|
|
763
|
+
/* @__PURE__ */ jsx13("span", { className: "truncate", children: /* @__PURE__ */ jsx13(
|
|
764
|
+
SelectPrimitive.Value,
|
|
765
|
+
{
|
|
766
|
+
placeholder: placeholder ?? "Select an option",
|
|
767
|
+
"aria-label": getLabel(),
|
|
768
|
+
children: getLabel()
|
|
769
|
+
}
|
|
770
|
+
) }),
|
|
771
|
+
/* @__PURE__ */ jsx13(
|
|
772
|
+
ChevronDownIcon,
|
|
773
|
+
{
|
|
774
|
+
className: "transform text-black group-data-[state=open]:rotate-180",
|
|
775
|
+
size: "16"
|
|
776
|
+
}
|
|
777
|
+
)
|
|
778
|
+
]
|
|
779
|
+
}
|
|
780
|
+
),
|
|
781
|
+
/* @__PURE__ */ jsx13(SelectPrimitive.Portal, { container: containerRef.current, children: /* @__PURE__ */ jsx13(
|
|
782
|
+
SelectPrimitive.Content,
|
|
783
|
+
{
|
|
784
|
+
hideWhenDetached: true,
|
|
785
|
+
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",
|
|
786
|
+
position: "popper",
|
|
787
|
+
sideOffset: 4,
|
|
788
|
+
onPointerDownOutside: toggleOpen,
|
|
789
|
+
onKeyDown: closeOnEscape,
|
|
790
|
+
children: /* @__PURE__ */ jsxs8(SelectPrimitive.Viewport, { children: [
|
|
791
|
+
multiselect && !!chipLabels?.length && /* @__PURE__ */ jsx13(
|
|
792
|
+
SelectPrimitive.Group,
|
|
793
|
+
{
|
|
794
|
+
className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
|
|
795
|
+
"data-testid": "selected-labels",
|
|
796
|
+
children: chipLabels?.map(
|
|
797
|
+
(chip) => chip && /* @__PURE__ */ jsxs8(Chip_default, { size: "small", variant: "primary", children: [
|
|
798
|
+
/* @__PURE__ */ jsx13("span", { children: chip.title }),
|
|
799
|
+
/* @__PURE__ */ jsx13(
|
|
800
|
+
X3,
|
|
801
|
+
{
|
|
802
|
+
size: 18,
|
|
803
|
+
"data-testid": `chip-remove-${chip.value}`,
|
|
804
|
+
className: "cursor-pointer",
|
|
805
|
+
onClick: () => handleChange(chip.value)
|
|
806
|
+
}
|
|
807
|
+
)
|
|
808
|
+
] }, chip.title)
|
|
809
|
+
)
|
|
810
|
+
}
|
|
811
|
+
),
|
|
812
|
+
/* @__PURE__ */ jsx13(Separator, {}),
|
|
813
|
+
options?.map(({ id: id2, title, value: value2 }) => /* @__PURE__ */ jsxs8(
|
|
814
|
+
SelectPrimitive.Item,
|
|
815
|
+
{
|
|
816
|
+
value: value2,
|
|
817
|
+
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",
|
|
818
|
+
"data-state": selected.includes(value2) ? "checked" : "unchecked",
|
|
819
|
+
onKeyDown: (e) => setValueOnEnter(e, value2),
|
|
820
|
+
onClick: () => handleChange(value2),
|
|
821
|
+
children: [
|
|
822
|
+
/* @__PURE__ */ jsx13(SelectPrimitive.ItemText, { children: title }),
|
|
823
|
+
/* @__PURE__ */ jsx13(
|
|
824
|
+
CheckIcon2,
|
|
825
|
+
{
|
|
826
|
+
className: "absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
|
|
827
|
+
size: 16
|
|
828
|
+
}
|
|
829
|
+
)
|
|
830
|
+
]
|
|
831
|
+
},
|
|
832
|
+
id2
|
|
833
|
+
))
|
|
834
|
+
] })
|
|
835
|
+
}
|
|
836
|
+
) })
|
|
837
|
+
]
|
|
838
|
+
}
|
|
839
|
+
),
|
|
840
|
+
/* @__PURE__ */ jsx13(ErrorMessage_default, { message: error })
|
|
841
|
+
]
|
|
842
|
+
}
|
|
843
|
+
);
|
|
844
|
+
}
|
|
845
|
+
);
|
|
846
|
+
Select.displayName = "Select";
|
|
847
|
+
var Select_default = Select;
|
|
848
|
+
|
|
849
|
+
// src/components/ui/Avatar.tsx
|
|
850
|
+
import { cva as cva3 } from "cva";
|
|
851
|
+
import Link from "next/link";
|
|
852
|
+
|
|
853
|
+
// src/components/primitives/avatar.tsx
|
|
854
|
+
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
855
|
+
import * as React5 from "react";
|
|
856
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
857
|
+
var AvatarBase = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
|
|
858
|
+
AvatarPrimitive.Root,
|
|
859
|
+
{
|
|
860
|
+
ref,
|
|
861
|
+
className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
|
|
862
|
+
...props
|
|
863
|
+
}
|
|
864
|
+
));
|
|
865
|
+
AvatarBase.displayName = AvatarPrimitive.Root.displayName;
|
|
866
|
+
var AvatarImage = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
|
|
867
|
+
AvatarPrimitive.Image,
|
|
868
|
+
{
|
|
869
|
+
ref,
|
|
870
|
+
className: cn("aspect-square h-full w-full", className),
|
|
871
|
+
"data-testid": "job-card-avatar",
|
|
872
|
+
...props
|
|
873
|
+
}
|
|
874
|
+
));
|
|
875
|
+
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
876
|
+
var AvatarFallback = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
|
|
877
|
+
AvatarPrimitive.Fallback,
|
|
878
|
+
{
|
|
879
|
+
ref,
|
|
880
|
+
className: cn(
|
|
881
|
+
"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",
|
|
882
|
+
className
|
|
883
|
+
),
|
|
884
|
+
...props
|
|
885
|
+
}
|
|
886
|
+
));
|
|
887
|
+
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
888
|
+
|
|
889
|
+
// src/components/ui/Avatar.tsx
|
|
890
|
+
import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
891
|
+
function Avatar({ size, src, href, name, ...linkProps }) {
|
|
892
|
+
const fallbackShort = name?.slice(0, 2);
|
|
893
|
+
const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
|
|
894
|
+
const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
|
|
895
|
+
const renderAvatar = () => /* @__PURE__ */ jsxs9(AvatarBase, { className: avatarVariants({ size }), children: [
|
|
896
|
+
/* @__PURE__ */ jsx15(AvatarImage, { src, alt: name }),
|
|
897
|
+
/* @__PURE__ */ jsx15(AvatarFallback, { children: fallback?.toUpperCase() })
|
|
898
|
+
] });
|
|
899
|
+
if (href) {
|
|
900
|
+
return /* @__PURE__ */ jsx15(Link, { href, ...linkProps, children: renderAvatar() });
|
|
901
|
+
}
|
|
902
|
+
return renderAvatar();
|
|
903
|
+
}
|
|
904
|
+
var avatarVariants = cva3("ring ring-white ring-2", {
|
|
905
|
+
variants: {
|
|
906
|
+
size: {
|
|
907
|
+
large: "h-16 w-16",
|
|
908
|
+
medium: "h-10 w-10",
|
|
909
|
+
small: "h-8 w-8"
|
|
910
|
+
}
|
|
911
|
+
},
|
|
912
|
+
defaultVariants: {
|
|
913
|
+
size: "medium"
|
|
914
|
+
}
|
|
915
|
+
});
|
|
916
|
+
|
|
917
|
+
// src/components/ui/Badge.tsx
|
|
918
|
+
import { cva as cva4 } from "cva";
|
|
919
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
920
|
+
var badgeVariants = cva4("rounded-full px-2 py-0.5 text-xs font-semibold", {
|
|
921
|
+
variants: {
|
|
922
|
+
variant: {
|
|
923
|
+
green: "bg-green-90 text-white",
|
|
924
|
+
pickle: "bg-pickle-100 text-black",
|
|
925
|
+
purple: "bg-purple-100 text-white"
|
|
926
|
+
}
|
|
927
|
+
},
|
|
928
|
+
defaultVariants: {
|
|
929
|
+
variant: "green"
|
|
930
|
+
}
|
|
931
|
+
});
|
|
932
|
+
function Badge({ className, variant, ...props }) {
|
|
933
|
+
return /* @__PURE__ */ jsx16("div", { className: cn(badgeVariants({ variant }), className), ...props });
|
|
832
934
|
}
|
|
833
|
-
var PlacesQueryInput_default = PlacesQueryInput;
|
|
834
935
|
|
|
835
936
|
// src/components/ui/Button.tsx
|
|
836
937
|
import { Slot } from "@radix-ui/react-slot";
|
|
837
|
-
import { cva as
|
|
838
|
-
import { forwardRef as
|
|
839
|
-
import { jsx as
|
|
840
|
-
var Button =
|
|
938
|
+
import { cva as cva5 } from "cva";
|
|
939
|
+
import { forwardRef as forwardRef9 } from "react";
|
|
940
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
941
|
+
var Button = forwardRef9(
|
|
841
942
|
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
842
943
|
const Component = asChild ? Slot : "button";
|
|
843
|
-
return /* @__PURE__ */
|
|
944
|
+
return /* @__PURE__ */ jsx17(
|
|
844
945
|
Component,
|
|
845
946
|
{
|
|
846
947
|
className: cn(buttonVariants({ variant, size, className })),
|
|
@@ -851,7 +952,7 @@ var Button = forwardRef8(
|
|
|
851
952
|
}
|
|
852
953
|
);
|
|
853
954
|
Button.displayName = "Button";
|
|
854
|
-
var buttonVariants =
|
|
955
|
+
var buttonVariants = cva5(
|
|
855
956
|
[
|
|
856
957
|
"flex",
|
|
857
958
|
"items-center",
|
|
@@ -942,17 +1043,17 @@ var buttonVariants = cva3(
|
|
|
942
1043
|
);
|
|
943
1044
|
|
|
944
1045
|
// src/components/ui/Combobox.tsx
|
|
945
|
-
import {
|
|
1046
|
+
import { cva as cva6 } from "cva";
|
|
946
1047
|
import { ChevronDownIcon as ChevronDownIcon2, CircleX as CircleX2, icons as icons3 } from "lucide-react";
|
|
947
|
-
import {
|
|
1048
|
+
import { forwardRef as forwardRef11, useEffect as useEffect3, useState as useState3 } from "react";
|
|
948
1049
|
|
|
949
1050
|
// src/components/primitives/popover.tsx
|
|
950
|
-
import * as React6 from "react";
|
|
951
1051
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
952
|
-
import
|
|
1052
|
+
import * as React7 from "react";
|
|
1053
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
953
1054
|
var Popover = PopoverPrimitive.Root;
|
|
954
1055
|
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
955
|
-
var PopoverContent =
|
|
1056
|
+
var PopoverContent = React7.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx18(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx18(
|
|
956
1057
|
PopoverPrimitive.Content,
|
|
957
1058
|
{
|
|
958
1059
|
ref,
|
|
@@ -967,28 +1068,9 @@ var PopoverContent = React6.forwardRef(({ className, align = "center", sideOffse
|
|
|
967
1068
|
) }));
|
|
968
1069
|
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
969
1070
|
|
|
970
|
-
// src/components/ui/Badge.tsx
|
|
971
|
-
import { cva as cva4 } from "cva";
|
|
972
|
-
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
973
|
-
var badgeVariants = cva4("rounded-full px-2 py-0.5 text-xs font-semibold", {
|
|
974
|
-
variants: {
|
|
975
|
-
variant: {
|
|
976
|
-
green: "bg-green-90 text-white",
|
|
977
|
-
pickle: "bg-pickle-100 text-black",
|
|
978
|
-
purple: "bg-purple-100 text-white"
|
|
979
|
-
}
|
|
980
|
-
},
|
|
981
|
-
defaultVariants: {
|
|
982
|
-
variant: "green"
|
|
983
|
-
}
|
|
984
|
-
});
|
|
985
|
-
function Badge({ className, variant, ...props }) {
|
|
986
|
-
return /* @__PURE__ */ jsx16("div", { className: cn(badgeVariants({ variant }), className), ...props });
|
|
987
|
-
}
|
|
988
|
-
|
|
989
1071
|
// src/components/ui/Combobox.tsx
|
|
990
|
-
import { jsx as
|
|
991
|
-
var Combobox =
|
|
1072
|
+
import { jsx as jsx19, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1073
|
+
var Combobox = forwardRef11((props, ref) => {
|
|
992
1074
|
const {
|
|
993
1075
|
id,
|
|
994
1076
|
name,
|
|
@@ -1038,14 +1120,18 @@ var Combobox = forwardRef10((props, ref) => {
|
|
|
1038
1120
|
};
|
|
1039
1121
|
const handleClear = () => {
|
|
1040
1122
|
setSelected([]);
|
|
1041
|
-
|
|
1123
|
+
if (multiselect) {
|
|
1124
|
+
handleChange?.([]);
|
|
1125
|
+
} else {
|
|
1126
|
+
handleChange?.("");
|
|
1127
|
+
}
|
|
1042
1128
|
};
|
|
1043
1129
|
const handleDisplayValue = () => {
|
|
1044
1130
|
const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(", ") : placeholder;
|
|
1045
1131
|
return isDefault ? defaultLabel : label;
|
|
1046
1132
|
};
|
|
1047
|
-
return /* @__PURE__ */
|
|
1048
|
-
isDefault && /* @__PURE__ */
|
|
1133
|
+
return /* @__PURE__ */ jsxs10("div", { className: cn("flex flex-col gap-1", className), children: [
|
|
1134
|
+
isDefault && /* @__PURE__ */ jsx19(
|
|
1049
1135
|
Label_default,
|
|
1050
1136
|
{
|
|
1051
1137
|
text: label,
|
|
@@ -1055,15 +1141,15 @@ var Combobox = forwardRef10((props, ref) => {
|
|
|
1055
1141
|
className: classNames?.label
|
|
1056
1142
|
}
|
|
1057
1143
|
),
|
|
1058
|
-
/* @__PURE__ */
|
|
1059
|
-
/* @__PURE__ */
|
|
1060
|
-
/* @__PURE__ */
|
|
1144
|
+
/* @__PURE__ */ jsxs10("div", { className: "relative flex", children: [
|
|
1145
|
+
/* @__PURE__ */ jsxs10(Popover, { open, onOpenChange: setOpen, children: [
|
|
1146
|
+
/* @__PURE__ */ jsx19(
|
|
1061
1147
|
PopoverTrigger,
|
|
1062
1148
|
{
|
|
1063
1149
|
asChild: true,
|
|
1064
1150
|
disabled: options.length === 0,
|
|
1065
1151
|
"data-testid": `${id ?? name}-combobox-trigger`,
|
|
1066
|
-
children: /* @__PURE__ */
|
|
1152
|
+
children: /* @__PURE__ */ jsxs10(
|
|
1067
1153
|
"div",
|
|
1068
1154
|
{
|
|
1069
1155
|
ref,
|
|
@@ -1074,9 +1160,9 @@ var Combobox = forwardRef10((props, ref) => {
|
|
|
1074
1160
|
),
|
|
1075
1161
|
"aria-expanded": open,
|
|
1076
1162
|
children: [
|
|
1077
|
-
isDefault && IconComponent && /* @__PURE__ */
|
|
1078
|
-
isChip && !isEmpty && /* @__PURE__ */
|
|
1079
|
-
/* @__PURE__ */
|
|
1163
|
+
isDefault && IconComponent && /* @__PURE__ */ jsx19(IconComponent, { className: "h-4 w-4 shrink-0" }),
|
|
1164
|
+
isChip && !isEmpty && /* @__PURE__ */ jsx19(Badge, { variant: "purple", children: selected.length }),
|
|
1165
|
+
/* @__PURE__ */ jsx19(
|
|
1080
1166
|
"span",
|
|
1081
1167
|
{
|
|
1082
1168
|
className: cn(
|
|
@@ -1086,7 +1172,7 @@ var Combobox = forwardRef10((props, ref) => {
|
|
|
1086
1172
|
children: handleDisplayValue()
|
|
1087
1173
|
}
|
|
1088
1174
|
),
|
|
1089
|
-
showChevron && /* @__PURE__ */
|
|
1175
|
+
showChevron && /* @__PURE__ */ jsx19(
|
|
1090
1176
|
ChevronDownIcon2,
|
|
1091
1177
|
{
|
|
1092
1178
|
className: "shrink-0 transform group-data-[state=open]:rotate-180",
|
|
@@ -1098,7 +1184,7 @@ var Combobox = forwardRef10((props, ref) => {
|
|
|
1098
1184
|
)
|
|
1099
1185
|
}
|
|
1100
1186
|
),
|
|
1101
|
-
/* @__PURE__ */
|
|
1187
|
+
/* @__PURE__ */ jsx19(
|
|
1102
1188
|
PopoverContent,
|
|
1103
1189
|
{
|
|
1104
1190
|
className: cn(
|
|
@@ -1109,16 +1195,16 @@ var Combobox = forwardRef10((props, ref) => {
|
|
|
1109
1195
|
collisionPadding: 8,
|
|
1110
1196
|
sideOffset: 4,
|
|
1111
1197
|
align: "start",
|
|
1112
|
-
children: /* @__PURE__ */
|
|
1113
|
-
!hideSearchBox && /* @__PURE__ */
|
|
1114
|
-
/* @__PURE__ */
|
|
1115
|
-
/* @__PURE__ */
|
|
1116
|
-
/* @__PURE__ */
|
|
1198
|
+
children: /* @__PURE__ */ jsxs10(Command, { children: [
|
|
1199
|
+
!hideSearchBox && /* @__PURE__ */ jsx19(CommandInput, { placeholder: "Search..." }),
|
|
1200
|
+
/* @__PURE__ */ jsxs10(CommandList, { children: [
|
|
1201
|
+
/* @__PURE__ */ jsx19(CommandEmpty, { children: "No results" }),
|
|
1202
|
+
/* @__PURE__ */ jsx19(CommandGroup, { children: options.map(({ id: id2, ...option }) => /* @__PURE__ */ jsx19(
|
|
1117
1203
|
CommandItem,
|
|
1118
1204
|
{
|
|
1119
1205
|
value: option.title,
|
|
1120
1206
|
onSelect: () => handleSelect(option.value),
|
|
1121
|
-
children: /* @__PURE__ */
|
|
1207
|
+
children: /* @__PURE__ */ jsx19(
|
|
1122
1208
|
ListItem_default,
|
|
1123
1209
|
{
|
|
1124
1210
|
className: cn(classNames?.items, "truncate py-1"),
|
|
@@ -1131,26 +1217,26 @@ var Combobox = forwardRef10((props, ref) => {
|
|
|
1131
1217
|
id2
|
|
1132
1218
|
)) })
|
|
1133
1219
|
] }),
|
|
1134
|
-
!!footer && /* @__PURE__ */
|
|
1220
|
+
!!footer && /* @__PURE__ */ jsx19(Separator, {}),
|
|
1135
1221
|
footer && footer({ close })
|
|
1136
1222
|
] })
|
|
1137
1223
|
}
|
|
1138
1224
|
)
|
|
1139
1225
|
] }),
|
|
1140
|
-
isDefault && !isEmpty && /* @__PURE__ */
|
|
1226
|
+
isDefault && !isEmpty && /* @__PURE__ */ jsx19(
|
|
1141
1227
|
"button",
|
|
1142
1228
|
{
|
|
1143
1229
|
type: "button",
|
|
1144
1230
|
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",
|
|
1145
1231
|
onClick: handleClear,
|
|
1146
|
-
children: /* @__PURE__ */
|
|
1232
|
+
children: /* @__PURE__ */ jsx19(CircleX2, { className: "h-4 w-4 text-green-100" })
|
|
1147
1233
|
}
|
|
1148
1234
|
)
|
|
1149
1235
|
] })
|
|
1150
1236
|
] });
|
|
1151
1237
|
});
|
|
1152
1238
|
Combobox.displayName = "Combobox";
|
|
1153
|
-
var triggerVariants =
|
|
1239
|
+
var triggerVariants = cva6(
|
|
1154
1240
|
"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",
|
|
1155
1241
|
{
|
|
1156
1242
|
variants: {
|
|
@@ -1177,11 +1263,11 @@ var triggerVariants = cva5(
|
|
|
1177
1263
|
);
|
|
1178
1264
|
|
|
1179
1265
|
// src/components/ui/Counter.tsx
|
|
1180
|
-
import { cva as
|
|
1266
|
+
import { cva as cva7 } from "cva";
|
|
1181
1267
|
import { Minus as Minus2, Plus } from "lucide-react";
|
|
1182
|
-
import { forwardRef as
|
|
1183
|
-
import { jsx as
|
|
1184
|
-
var Counter =
|
|
1268
|
+
import { forwardRef as forwardRef12, useEffect as useEffect4, useState as useState4 } from "react";
|
|
1269
|
+
import { jsx as jsx20, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1270
|
+
var Counter = forwardRef12(
|
|
1185
1271
|
({ label, error, min, max, step = 1, description, theme, value, classNames, onChange, ...props }, ref) => {
|
|
1186
1272
|
const [count, setCount] = useState4(0);
|
|
1187
1273
|
useEffect4(() => {
|
|
@@ -1215,13 +1301,13 @@ var Counter = forwardRef11(
|
|
|
1215
1301
|
onChange?.(newValue);
|
|
1216
1302
|
setCount(newValue);
|
|
1217
1303
|
};
|
|
1218
|
-
return /* @__PURE__ */
|
|
1304
|
+
return /* @__PURE__ */ jsxs11(
|
|
1219
1305
|
"div",
|
|
1220
1306
|
{
|
|
1221
1307
|
className: cn("flex w-auto flex-col gap-1", classNames?.root),
|
|
1222
1308
|
"data-testid": `counter-wrapper-${props.id}`,
|
|
1223
1309
|
children: [
|
|
1224
|
-
label && /* @__PURE__ */
|
|
1310
|
+
label && /* @__PURE__ */ jsx20(
|
|
1225
1311
|
Label_default,
|
|
1226
1312
|
{
|
|
1227
1313
|
text: label,
|
|
@@ -1231,255 +1317,104 @@ var Counter = forwardRef11(
|
|
|
1231
1317
|
className: classNames?.label
|
|
1232
1318
|
}
|
|
1233
1319
|
),
|
|
1234
|
-
/* @__PURE__ */
|
|
1235
|
-
/* @__PURE__ */
|
|
1236
|
-
"button",
|
|
1237
|
-
{
|
|
1238
|
-
type: "button",
|
|
1239
|
-
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",
|
|
1240
|
-
onClick: decrement,
|
|
1241
|
-
children: /* @__PURE__ */ jsx18(Minus2, { className: "h-4 w-4 text-green-100" })
|
|
1242
|
-
}
|
|
1243
|
-
),
|
|
1244
|
-
/* @__PURE__ */ jsx18(
|
|
1245
|
-
"input",
|
|
1246
|
-
{
|
|
1247
|
-
className: cn(counterVariants({ theme }), classNames?.input),
|
|
1248
|
-
ref,
|
|
1249
|
-
value: count,
|
|
1250
|
-
onChange: handleChange,
|
|
1251
|
-
"data-testid": `counter-element-${props.id}`,
|
|
1252
|
-
...props
|
|
1253
|
-
}
|
|
1254
|
-
),
|
|
1255
|
-
/* @__PURE__ */ jsx18(
|
|
1320
|
+
/* @__PURE__ */ jsxs11("div", { className: "relative flex w-[122px] flex-row items-center", children: [
|
|
1321
|
+
/* @__PURE__ */ jsx20(
|
|
1256
1322
|
"button",
|
|
1257
1323
|
{
|
|
1258
1324
|
type: "button",
|
|
1259
|
-
className: "absolute inset-y-0
|
|
1260
|
-
onClick:
|
|
1261
|
-
children: /* @__PURE__ */
|
|
1262
|
-
}
|
|
1263
|
-
)
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
"px-3",
|
|
1286
|
-
"pt-0.5",
|
|
1287
|
-
"text-sm",
|
|
1288
|
-
"text-center",
|
|
1289
|
-
"shadow-sm",
|
|
1290
|
-
"ring-grey-50",
|
|
1291
|
-
"transition-colors",
|
|
1292
|
-
"focus-visible:outline-none",
|
|
1293
|
-
"focus-visible:ring-1",
|
|
1294
|
-
"disabled:cursor-not-allowed",
|
|
1295
|
-
"disabled:opacity-50",
|
|
1296
|
-
"appearance-none",
|
|
1297
|
-
"[&::-webkit-search-cancel-button]:appearance-none",
|
|
1298
|
-
"[&::-webkit-search-decoration]:appearance-none",
|
|
1299
|
-
"[&::-webkit-search-results-button]:appearance-none",
|
|
1300
|
-
"[&::-webkit-search-results-decoration]:appearance-none",
|
|
1301
|
-
"[&::-ms-clear]:display-none",
|
|
1302
|
-
"[&::-ms-reveal]:display-none"
|
|
1303
|
-
],
|
|
1304
|
-
{
|
|
1305
|
-
variants: {
|
|
1306
|
-
theme: {
|
|
1307
|
-
light: "text-grey-80 border",
|
|
1308
|
-
dark: "text-white"
|
|
1309
|
-
},
|
|
1310
|
-
hasIcon: {
|
|
1311
|
-
false: "pl-3",
|
|
1312
|
-
true: "pl-8"
|
|
1313
|
-
}
|
|
1314
|
-
},
|
|
1315
|
-
defaultVariants: {
|
|
1316
|
-
theme: "light",
|
|
1317
|
-
hasIcon: false
|
|
1318
|
-
}
|
|
1319
|
-
}
|
|
1320
|
-
);
|
|
1321
|
-
|
|
1322
|
-
// src/components/ui/InputOtp.tsx
|
|
1323
|
-
import { forwardRef as forwardRef13 } from "react";
|
|
1324
|
-
|
|
1325
|
-
// src/components/primitives/input-otp.tsx
|
|
1326
|
-
import * as React7 from "react";
|
|
1327
|
-
import { OTPInput, OTPInputContext } from "input-otp";
|
|
1328
|
-
import { Dot } from "lucide-react";
|
|
1329
|
-
import { jsx as jsx19, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1330
|
-
var InputOTP = React7.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx19(
|
|
1331
|
-
OTPInput,
|
|
1332
|
-
{
|
|
1333
|
-
ref,
|
|
1334
|
-
containerClassName: cn(
|
|
1335
|
-
"flex items-center gap-2 has-[:disabled]:opacity-50",
|
|
1336
|
-
containerClassName
|
|
1337
|
-
),
|
|
1338
|
-
className: cn("disabled:cursor-not-allowed", className),
|
|
1339
|
-
...props
|
|
1340
|
-
}
|
|
1341
|
-
));
|
|
1342
|
-
InputOTP.displayName = "InputOTP";
|
|
1343
|
-
var InputOTPGroup = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19("div", { ref, className: cn("flex items-center", className), ...props }));
|
|
1344
|
-
InputOTPGroup.displayName = "InputOTPGroup";
|
|
1345
|
-
var InputOTPSlot = React7.forwardRef(({ index, error, className, ...props }, ref) => {
|
|
1346
|
-
const inputOTPContext = React7.useContext(OTPInputContext);
|
|
1347
|
-
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
|
|
1348
|
-
return /* @__PURE__ */ jsxs11(
|
|
1349
|
-
"div",
|
|
1350
|
-
{
|
|
1351
|
-
ref,
|
|
1352
|
-
className: cn(
|
|
1353
|
-
"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",
|
|
1354
|
-
isActive && "z-10 ring-2 ring-purple-100 ring-offset-white dark:ring-purple-20 dark:ring-offset-purple-100",
|
|
1355
|
-
error && "border-red-500 dark:border-red-400",
|
|
1356
|
-
className
|
|
1357
|
-
),
|
|
1358
|
-
...props,
|
|
1359
|
-
children: [
|
|
1360
|
-
char,
|
|
1361
|
-
hasFakeCaret && /* @__PURE__ */ jsx19("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx19("div", { className: "animate-caret-blink h-4 w-px bg-neutral-950 duration-1000 dark:bg-neutral-50" }) })
|
|
1362
|
-
]
|
|
1363
|
-
}
|
|
1364
|
-
);
|
|
1365
|
-
});
|
|
1366
|
-
InputOTPSlot.displayName = "InputOTPSlot";
|
|
1367
|
-
var InputOTPSeparator = React7.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx19("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx19(Dot, {}) }));
|
|
1368
|
-
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
1369
|
-
|
|
1370
|
-
// src/components/ui/InputOtp.tsx
|
|
1371
|
-
import { jsx as jsx20, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1372
|
-
var InputOtp = forwardRef13(
|
|
1373
|
-
({ digits, label, description, error, ...props }, ref) => {
|
|
1374
|
-
return /* @__PURE__ */ jsxs12(
|
|
1375
|
-
"div",
|
|
1376
|
-
{
|
|
1377
|
-
className: "group flex w-full flex-col gap-1",
|
|
1378
|
-
"data-testid": `input-otp-wrapper-${props.id}`,
|
|
1379
|
-
children: [
|
|
1380
|
-
label && /* @__PURE__ */ jsx20(
|
|
1381
|
-
Label_default,
|
|
1382
|
-
{
|
|
1383
|
-
text: label,
|
|
1384
|
-
htmlFor: props.name,
|
|
1385
|
-
required: props.required,
|
|
1386
|
-
description
|
|
1387
|
-
}
|
|
1388
|
-
),
|
|
1389
|
-
/* @__PURE__ */ jsx20("div", { className: "relative flex flex-row items-center", children: /* @__PURE__ */ jsx20(
|
|
1390
|
-
InputOTP,
|
|
1391
|
-
{
|
|
1392
|
-
ref,
|
|
1393
|
-
maxLength: digits,
|
|
1394
|
-
"data-testid": `input-otp-element-${props.id}`,
|
|
1395
|
-
...props,
|
|
1396
|
-
children: [...Array(digits)].map((_, index) => /* @__PURE__ */ jsx20(InputOTPGroup, { children: /* @__PURE__ */ jsx20(InputOTPSlot, { index, error: Boolean(error) }) }, index))
|
|
1397
|
-
}
|
|
1398
|
-
) }),
|
|
1325
|
+
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",
|
|
1326
|
+
onClick: decrement,
|
|
1327
|
+
children: /* @__PURE__ */ jsx20(Minus2, { className: "h-4 w-4 text-green-100" })
|
|
1328
|
+
}
|
|
1329
|
+
),
|
|
1330
|
+
/* @__PURE__ */ jsx20(
|
|
1331
|
+
"input",
|
|
1332
|
+
{
|
|
1333
|
+
className: cn(counterVariants({ theme }), classNames?.input),
|
|
1334
|
+
ref,
|
|
1335
|
+
value: count,
|
|
1336
|
+
onChange: handleChange,
|
|
1337
|
+
"data-testid": `counter-element-${props.id}`,
|
|
1338
|
+
...props
|
|
1339
|
+
}
|
|
1340
|
+
),
|
|
1341
|
+
/* @__PURE__ */ jsx20(
|
|
1342
|
+
"button",
|
|
1343
|
+
{
|
|
1344
|
+
type: "button",
|
|
1345
|
+
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",
|
|
1346
|
+
onClick: increment,
|
|
1347
|
+
children: /* @__PURE__ */ jsx20(Plus, { className: "h-4 w-4 text-green-100" })
|
|
1348
|
+
}
|
|
1349
|
+
)
|
|
1350
|
+
] }),
|
|
1399
1351
|
/* @__PURE__ */ jsx20(ErrorMessage_default, { message: error })
|
|
1400
1352
|
]
|
|
1401
1353
|
}
|
|
1402
1354
|
);
|
|
1403
1355
|
}
|
|
1404
1356
|
);
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
"
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1357
|
+
Counter.displayName = "Counter";
|
|
1358
|
+
var counterVariants = cva7(
|
|
1359
|
+
[
|
|
1360
|
+
"border-input",
|
|
1361
|
+
"placeholder:text-muted-foreground",
|
|
1362
|
+
"focus-visible:ring-ring",
|
|
1363
|
+
"inline-flex",
|
|
1364
|
+
"w-[122px]",
|
|
1365
|
+
"h-11",
|
|
1366
|
+
"items-center",
|
|
1367
|
+
"justify-start",
|
|
1368
|
+
"gap-3",
|
|
1369
|
+
"rounded-lg",
|
|
1370
|
+
"bg-transparent",
|
|
1371
|
+
"px-3",
|
|
1372
|
+
"pt-0.5",
|
|
1373
|
+
"text-sm",
|
|
1374
|
+
"text-center",
|
|
1375
|
+
"shadow-sm",
|
|
1376
|
+
"ring-grey-50",
|
|
1377
|
+
"transition-colors",
|
|
1378
|
+
"focus-visible:outline-none",
|
|
1379
|
+
"focus-visible:ring-1",
|
|
1380
|
+
"disabled:cursor-not-allowed",
|
|
1381
|
+
"disabled:opacity-50",
|
|
1382
|
+
"appearance-none",
|
|
1383
|
+
"[&::-webkit-search-cancel-button]:appearance-none",
|
|
1384
|
+
"[&::-webkit-search-decoration]:appearance-none",
|
|
1385
|
+
"[&::-webkit-search-results-button]:appearance-none",
|
|
1386
|
+
"[&::-webkit-search-results-decoration]:appearance-none",
|
|
1387
|
+
"[&::-ms-clear]:display-none",
|
|
1388
|
+
"[&::-ms-reveal]:display-none"
|
|
1389
|
+
],
|
|
1432
1390
|
{
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
import { jsx as jsx22, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1447
|
-
function Avatar({ size, src, href, name, ...linkProps }) {
|
|
1448
|
-
const fallbackShort = name?.slice(0, 2);
|
|
1449
|
-
const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
|
|
1450
|
-
const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
|
|
1451
|
-
const renderAvatar = () => /* @__PURE__ */ jsxs13(AvatarBase, { className: avatarVariants({ size }), children: [
|
|
1452
|
-
/* @__PURE__ */ jsx22(AvatarImage, { src, alt: name }),
|
|
1453
|
-
/* @__PURE__ */ jsx22(AvatarFallback, { children: fallback?.toUpperCase() })
|
|
1454
|
-
] });
|
|
1455
|
-
if (href) {
|
|
1456
|
-
return /* @__PURE__ */ jsx22(Link, { href, ...linkProps, children: renderAvatar() });
|
|
1457
|
-
}
|
|
1458
|
-
return renderAvatar();
|
|
1459
|
-
}
|
|
1460
|
-
var avatarVariants = cva7("ring ring-white ring-2", {
|
|
1461
|
-
variants: {
|
|
1462
|
-
size: {
|
|
1463
|
-
large: "h-16 w-16",
|
|
1464
|
-
medium: "h-10 w-10",
|
|
1465
|
-
small: "h-8 w-8"
|
|
1391
|
+
variants: {
|
|
1392
|
+
theme: {
|
|
1393
|
+
light: "text-grey-80 border",
|
|
1394
|
+
dark: "text-white"
|
|
1395
|
+
},
|
|
1396
|
+
hasIcon: {
|
|
1397
|
+
false: "pl-3",
|
|
1398
|
+
true: "pl-8"
|
|
1399
|
+
}
|
|
1400
|
+
},
|
|
1401
|
+
defaultVariants: {
|
|
1402
|
+
theme: "light",
|
|
1403
|
+
hasIcon: false
|
|
1466
1404
|
}
|
|
1467
|
-
},
|
|
1468
|
-
defaultVariants: {
|
|
1469
|
-
size: "medium"
|
|
1470
1405
|
}
|
|
1471
|
-
|
|
1406
|
+
);
|
|
1472
1407
|
|
|
1473
1408
|
// src/components/ui/Icon.tsx
|
|
1474
1409
|
import { Slot as Slot2 } from "@radix-ui/react-slot";
|
|
1475
1410
|
import { cva as cva8 } from "cva";
|
|
1476
|
-
import { forwardRef as
|
|
1411
|
+
import { forwardRef as forwardRef13 } from "react";
|
|
1477
1412
|
import { twMerge as twMerge3 } from "tailwind-merge";
|
|
1478
|
-
import { jsx as
|
|
1479
|
-
var Icon =
|
|
1413
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
1414
|
+
var Icon = forwardRef13(
|
|
1480
1415
|
({ variant, size, active = false, readonly = false, className, ...props }, ref) => {
|
|
1481
1416
|
const Component = readonly ? Slot2 : "button";
|
|
1482
|
-
return /* @__PURE__ */
|
|
1417
|
+
return /* @__PURE__ */ jsx21(
|
|
1483
1418
|
Component,
|
|
1484
1419
|
{
|
|
1485
1420
|
className: cn(
|
|
@@ -1547,6 +1482,91 @@ var iconVariants = cva8(
|
|
|
1547
1482
|
}
|
|
1548
1483
|
);
|
|
1549
1484
|
|
|
1485
|
+
// src/components/ui/InputOtp.tsx
|
|
1486
|
+
import { forwardRef as forwardRef15 } from "react";
|
|
1487
|
+
|
|
1488
|
+
// src/components/primitives/input-otp.tsx
|
|
1489
|
+
import { OTPInput, OTPInputContext } from "input-otp";
|
|
1490
|
+
import { Dot } from "lucide-react";
|
|
1491
|
+
import * as React8 from "react";
|
|
1492
|
+
import { jsx as jsx22, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1493
|
+
var InputOTP = React8.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx22(
|
|
1494
|
+
OTPInput,
|
|
1495
|
+
{
|
|
1496
|
+
ref,
|
|
1497
|
+
containerClassName: cn(
|
|
1498
|
+
"flex items-center gap-2 has-[:disabled]:opacity-50",
|
|
1499
|
+
containerClassName
|
|
1500
|
+
),
|
|
1501
|
+
className: cn("disabled:cursor-not-allowed", className),
|
|
1502
|
+
...props
|
|
1503
|
+
}
|
|
1504
|
+
));
|
|
1505
|
+
InputOTP.displayName = "InputOTP";
|
|
1506
|
+
var InputOTPGroup = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22("div", { ref, className: cn("flex items-center", className), ...props }));
|
|
1507
|
+
InputOTPGroup.displayName = "InputOTPGroup";
|
|
1508
|
+
var InputOTPSlot = React8.forwardRef(({ index, error, className, ...props }, ref) => {
|
|
1509
|
+
const inputOTPContext = React8.useContext(OTPInputContext);
|
|
1510
|
+
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
|
|
1511
|
+
return /* @__PURE__ */ jsxs12(
|
|
1512
|
+
"div",
|
|
1513
|
+
{
|
|
1514
|
+
ref,
|
|
1515
|
+
className: cn(
|
|
1516
|
+
"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",
|
|
1517
|
+
isActive && "z-10 ring-2 ring-purple-100 ring-offset-white dark:ring-purple-20 dark:ring-offset-purple-100",
|
|
1518
|
+
error && "border-red-500 dark:border-red-400",
|
|
1519
|
+
className
|
|
1520
|
+
),
|
|
1521
|
+
...props,
|
|
1522
|
+
children: [
|
|
1523
|
+
char,
|
|
1524
|
+
hasFakeCaret && /* @__PURE__ */ jsx22("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx22("div", { className: "h-4 w-px animate-caret-blink bg-neutral-950 duration-1000 dark:bg-neutral-50" }) })
|
|
1525
|
+
]
|
|
1526
|
+
}
|
|
1527
|
+
);
|
|
1528
|
+
});
|
|
1529
|
+
InputOTPSlot.displayName = "InputOTPSlot";
|
|
1530
|
+
var InputOTPSeparator = React8.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx22("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx22(Dot, {}) }));
|
|
1531
|
+
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
1532
|
+
|
|
1533
|
+
// src/components/ui/InputOtp.tsx
|
|
1534
|
+
import { jsx as jsx23, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1535
|
+
var InputOtp = forwardRef15(
|
|
1536
|
+
({ digits, label, description, error, ...props }, ref) => {
|
|
1537
|
+
return /* @__PURE__ */ jsxs13(
|
|
1538
|
+
"div",
|
|
1539
|
+
{
|
|
1540
|
+
className: "group flex w-full flex-col gap-1",
|
|
1541
|
+
"data-testid": `input-otp-wrapper-${props.id}`,
|
|
1542
|
+
children: [
|
|
1543
|
+
label && /* @__PURE__ */ jsx23(
|
|
1544
|
+
Label_default,
|
|
1545
|
+
{
|
|
1546
|
+
text: label,
|
|
1547
|
+
htmlFor: props.name,
|
|
1548
|
+
required: props.required,
|
|
1549
|
+
description
|
|
1550
|
+
}
|
|
1551
|
+
),
|
|
1552
|
+
/* @__PURE__ */ jsx23("div", { className: "relative flex flex-row items-center", children: /* @__PURE__ */ jsx23(
|
|
1553
|
+
InputOTP,
|
|
1554
|
+
{
|
|
1555
|
+
ref,
|
|
1556
|
+
maxLength: digits,
|
|
1557
|
+
"data-testid": `input-otp-element-${props.id}`,
|
|
1558
|
+
...props,
|
|
1559
|
+
children: [...Array(digits)].map((_, index) => /* @__PURE__ */ jsx23(InputOTPGroup, { children: /* @__PURE__ */ jsx23(InputOTPSlot, { index, error: Boolean(error) }) }, index))
|
|
1560
|
+
}
|
|
1561
|
+
) }),
|
|
1562
|
+
/* @__PURE__ */ jsx23(ErrorMessage_default, { message: error })
|
|
1563
|
+
]
|
|
1564
|
+
}
|
|
1565
|
+
);
|
|
1566
|
+
}
|
|
1567
|
+
);
|
|
1568
|
+
InputOtp.displayName = "Input";
|
|
1569
|
+
|
|
1550
1570
|
// src/components/ui/LinkButton.tsx
|
|
1551
1571
|
import Link2 from "next/link";
|
|
1552
1572
|
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
@@ -1616,18 +1636,204 @@ function ReadMore({ text, ...props }) {
|
|
|
1616
1636
|
] });
|
|
1617
1637
|
}
|
|
1618
1638
|
|
|
1639
|
+
// src/components/ui/DatePicker.tsx
|
|
1640
|
+
import { cva as cva10 } from "cva";
|
|
1641
|
+
import { forwardRef as forwardRef17, useEffect as useEffect6, useState as useState6 } from "react";
|
|
1642
|
+
import { format } from "date-fns";
|
|
1643
|
+
|
|
1644
|
+
// src/components/ui/calendar.tsx
|
|
1645
|
+
import { ChevronLeft, ChevronRight } from "lucide-react";
|
|
1646
|
+
import { DayPicker } from "react-day-picker";
|
|
1647
|
+
|
|
1648
|
+
// src/components/ui/buttonShadcn.tsx
|
|
1649
|
+
import * as React9 from "react";
|
|
1650
|
+
import { Slot as Slot3 } from "@radix-ui/react-slot";
|
|
1651
|
+
import { cva as cva9 } from "class-variance-authority";
|
|
1652
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
1653
|
+
var buttonVariants2 = cva9(
|
|
1654
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-neutral-950 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 dark:focus-visible:ring-neutral-300",
|
|
1655
|
+
{
|
|
1656
|
+
variants: {
|
|
1657
|
+
variant: {
|
|
1658
|
+
default: "bg-neutral-900 text-neutral-50 shadow hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/90",
|
|
1659
|
+
destructive: "bg-red-500 text-neutral-50 shadow-sm hover:bg-red-500/90 dark:bg-red-900 dark:text-neutral-50 dark:hover:bg-red-900/90",
|
|
1660
|
+
outline: "border border-neutral-200 bg-white shadow-sm hover:bg-neutral-100 hover:text-neutral-900 dark:border-neutral-800 dark:bg-neutral-950 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",
|
|
1661
|
+
secondary: "bg-neutral-100 text-neutral-900 shadow-sm hover:bg-neutral-100/80 dark:bg-neutral-800 dark:text-neutral-50 dark:hover:bg-neutral-800/80",
|
|
1662
|
+
ghost: "hover:bg-neutral-100 hover:text-neutral-900 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",
|
|
1663
|
+
link: "text-neutral-900 underline-offset-4 hover:underline dark:text-neutral-50"
|
|
1664
|
+
},
|
|
1665
|
+
size: {
|
|
1666
|
+
default: "h-9 px-4 py-2",
|
|
1667
|
+
sm: "h-8 rounded-md px-3 text-xs",
|
|
1668
|
+
lg: "h-10 rounded-md px-8",
|
|
1669
|
+
icon: "h-9 w-9"
|
|
1670
|
+
}
|
|
1671
|
+
},
|
|
1672
|
+
defaultVariants: {
|
|
1673
|
+
variant: "default",
|
|
1674
|
+
size: "default"
|
|
1675
|
+
}
|
|
1676
|
+
}
|
|
1677
|
+
);
|
|
1678
|
+
var Button2 = React9.forwardRef(
|
|
1679
|
+
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
1680
|
+
const Comp = asChild ? Slot3 : "button";
|
|
1681
|
+
return /* @__PURE__ */ jsx26(
|
|
1682
|
+
Comp,
|
|
1683
|
+
{
|
|
1684
|
+
className: cn(buttonVariants2({ variant, size, className })),
|
|
1685
|
+
ref,
|
|
1686
|
+
...props
|
|
1687
|
+
}
|
|
1688
|
+
);
|
|
1689
|
+
}
|
|
1690
|
+
);
|
|
1691
|
+
Button2.displayName = "Button";
|
|
1692
|
+
|
|
1693
|
+
// src/components/ui/calendar.tsx
|
|
1694
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
1695
|
+
function Calendar({
|
|
1696
|
+
className,
|
|
1697
|
+
classNames,
|
|
1698
|
+
showOutsideDays = true,
|
|
1699
|
+
...props
|
|
1700
|
+
}) {
|
|
1701
|
+
return /* @__PURE__ */ jsx27(
|
|
1702
|
+
DayPicker,
|
|
1703
|
+
{
|
|
1704
|
+
showOutsideDays,
|
|
1705
|
+
className: cn("p-3", className),
|
|
1706
|
+
classNames: {
|
|
1707
|
+
months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
|
|
1708
|
+
month: "space-y-4",
|
|
1709
|
+
caption: "flex justify-center pt-1 relative items-center",
|
|
1710
|
+
caption_label: "text-sm font-medium",
|
|
1711
|
+
nav: "space-x-1 flex items-center",
|
|
1712
|
+
nav_button: cn(
|
|
1713
|
+
buttonVariants2({ variant: "outline" }),
|
|
1714
|
+
"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
|
|
1715
|
+
),
|
|
1716
|
+
nav_button_previous: "absolute left-1",
|
|
1717
|
+
nav_button_next: "absolute right-1",
|
|
1718
|
+
table: "w-full border-collapse space-y-1",
|
|
1719
|
+
head_row: "flex",
|
|
1720
|
+
head_cell: "text-neutral-500 rounded-md w-8 font-normal text-[0.8rem] dark:text-neutral-400",
|
|
1721
|
+
row: "flex w-full mt-2",
|
|
1722
|
+
cell: cn(
|
|
1723
|
+
"relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-neutral-100 [&:has([aria-selected].day-outside)]:bg-neutral-100/50 [&:has([aria-selected].day-range-end)]:rounded-r-md dark:[&:has([aria-selected])]:bg-neutral-800 dark:[&:has([aria-selected].day-outside)]:bg-neutral-800/50",
|
|
1724
|
+
props.mode === "range" ? "[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md" : "[&:has([aria-selected])]:rounded-md"
|
|
1725
|
+
),
|
|
1726
|
+
day: cn(
|
|
1727
|
+
buttonVariants2({ variant: "ghost" }),
|
|
1728
|
+
"h-8 w-8 p-0 font-normal aria-selected:opacity-100"
|
|
1729
|
+
),
|
|
1730
|
+
day_range_start: "day-range-start",
|
|
1731
|
+
day_range_end: "day-range-end",
|
|
1732
|
+
day_selected: "bg-neutral-900 text-neutral-50 hover:bg-neutral-900 hover:text-neutral-50 focus:bg-neutral-900 focus:text-neutral-50 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50 dark:hover:text-neutral-900 dark:focus:bg-neutral-50 dark:focus:text-neutral-900",
|
|
1733
|
+
day_today: "bg-neutral-100 text-neutral-900 dark:bg-neutral-800 dark:text-neutral-50",
|
|
1734
|
+
day_outside: "day-outside text-neutral-500 aria-selected:bg-neutral-100/50 aria-selected:text-neutral-500 dark:text-neutral-400 dark:aria-selected:bg-neutral-800/50 dark:aria-selected:text-neutral-400",
|
|
1735
|
+
day_disabled: "text-neutral-500 opacity-50 dark:text-neutral-400",
|
|
1736
|
+
day_range_middle: "aria-selected:bg-neutral-100 aria-selected:text-neutral-900 dark:aria-selected:bg-neutral-800 dark:aria-selected:text-neutral-50",
|
|
1737
|
+
day_hidden: "invisible",
|
|
1738
|
+
...classNames
|
|
1739
|
+
},
|
|
1740
|
+
components: {
|
|
1741
|
+
IconLeft: ({ className: className2, ...props2 }) => /* @__PURE__ */ jsx27(ChevronLeft, { className: cn("h-4 w-4", className2), ...props2 }),
|
|
1742
|
+
IconRight: ({ className: className2, ...props2 }) => /* @__PURE__ */ jsx27(ChevronRight, { className: cn("h-4 w-4", className2), ...props2 })
|
|
1743
|
+
},
|
|
1744
|
+
...props
|
|
1745
|
+
}
|
|
1746
|
+
);
|
|
1747
|
+
}
|
|
1748
|
+
Calendar.displayName = "Calendar";
|
|
1749
|
+
|
|
1750
|
+
// src/components/ui/DatePicker.tsx
|
|
1751
|
+
import { Calendar as CalendarIcon } from "lucide-react";
|
|
1752
|
+
import { jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1753
|
+
var DatePicker = forwardRef17(({ label, description, required, classNames, value, onChange, error }, ref) => {
|
|
1754
|
+
const [date, setDate] = useState6(null);
|
|
1755
|
+
useEffect6(() => {
|
|
1756
|
+
setDate(value ?? null);
|
|
1757
|
+
}, [value]);
|
|
1758
|
+
const handleDateSelect = (dateSelected) => {
|
|
1759
|
+
if (!dateSelected) return;
|
|
1760
|
+
onChange?.(dateSelected);
|
|
1761
|
+
setDate(dateSelected);
|
|
1762
|
+
};
|
|
1763
|
+
return /* @__PURE__ */ jsxs15("div", { className: cn("flex w-auto flex-col gap-1"), children: [
|
|
1764
|
+
label && /* @__PURE__ */ jsx28(
|
|
1765
|
+
Label_default,
|
|
1766
|
+
{
|
|
1767
|
+
text: label,
|
|
1768
|
+
required,
|
|
1769
|
+
description,
|
|
1770
|
+
className: classNames?.label
|
|
1771
|
+
}
|
|
1772
|
+
),
|
|
1773
|
+
/* @__PURE__ */ jsxs15(Popover, { children: [
|
|
1774
|
+
/* @__PURE__ */ jsx28(PopoverTrigger, { children: /* @__PURE__ */ jsxs15("div", { className: cn(datePickerStyle()), children: [
|
|
1775
|
+
/* @__PURE__ */ jsx28(CalendarIcon, { size: 16 }),
|
|
1776
|
+
date ? format(date, "MM/dd/yyyy") : "Select a date"
|
|
1777
|
+
] }) }),
|
|
1778
|
+
/* @__PURE__ */ jsx28(PopoverContent, { ref, children: /* @__PURE__ */ jsx28(
|
|
1779
|
+
Calendar,
|
|
1780
|
+
{
|
|
1781
|
+
mode: "single",
|
|
1782
|
+
selected: date || void 0,
|
|
1783
|
+
onSelect: handleDateSelect,
|
|
1784
|
+
captionLayout: "dropdown",
|
|
1785
|
+
showOutsideDays: true
|
|
1786
|
+
}
|
|
1787
|
+
) })
|
|
1788
|
+
] }),
|
|
1789
|
+
/* @__PURE__ */ jsx28(ErrorMessage_default, { message: error })
|
|
1790
|
+
] });
|
|
1791
|
+
});
|
|
1792
|
+
var datePickerStyle = cva10(
|
|
1793
|
+
[
|
|
1794
|
+
"placeholder:text-muted-foreground",
|
|
1795
|
+
"focus-visible:ring-ring",
|
|
1796
|
+
"inline-flex",
|
|
1797
|
+
"w-full",
|
|
1798
|
+
"h-11",
|
|
1799
|
+
"items-center",
|
|
1800
|
+
"justify-start",
|
|
1801
|
+
"gap-3",
|
|
1802
|
+
"rounded-lg",
|
|
1803
|
+
"bg-transparent",
|
|
1804
|
+
"px-3",
|
|
1805
|
+
"pt-0.5",
|
|
1806
|
+
"text-sm",
|
|
1807
|
+
"shadow-sm",
|
|
1808
|
+
"ring-grey-50",
|
|
1809
|
+
"transition-colors",
|
|
1810
|
+
"focus-visible:outline-none",
|
|
1811
|
+
"focus-visible:ring-1",
|
|
1812
|
+
"disabled:cursor-not-allowed",
|
|
1813
|
+
"disabled:opacity-50",
|
|
1814
|
+
"appearance-none",
|
|
1815
|
+
"[&::-webkit-search-cancel-button]:appearance-none",
|
|
1816
|
+
"[&::-webkit-search-decoration]:appearance-none",
|
|
1817
|
+
"[&::-webkit-search-results-button]:appearance-none",
|
|
1818
|
+
"[&::-webkit-search-results-decoration]:appearance-none",
|
|
1819
|
+
"[&::-ms-clear]:display-none",
|
|
1820
|
+
"[&::-ms-reveal]:display-none",
|
|
1821
|
+
"text-grey-80 border"
|
|
1822
|
+
]
|
|
1823
|
+
);
|
|
1824
|
+
|
|
1619
1825
|
// src/components/company/CompanyBenefits.tsx
|
|
1620
|
-
import { jsx as
|
|
1826
|
+
import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1621
1827
|
function CompanyBenefits({ benefits }) {
|
|
1622
1828
|
if (!benefits) return null;
|
|
1623
|
-
return /* @__PURE__ */
|
|
1624
|
-
/* @__PURE__ */
|
|
1625
|
-
/* @__PURE__ */
|
|
1829
|
+
return /* @__PURE__ */ jsxs16("div", { className: "flex flex-col gap-2", "data-testid": "company-benefits", children: [
|
|
1830
|
+
/* @__PURE__ */ jsx29("h2", { className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg", children: "Company benefits" }),
|
|
1831
|
+
/* @__PURE__ */ jsx29("ul", { className: "flex flex-col gap-3", children: benefits.map((benefit, i) => /* @__PURE__ */ jsx29("li", { className: "text-base text-grey-80", children: benefit }, `${benefit}-${i}`)) })
|
|
1626
1832
|
] });
|
|
1627
1833
|
}
|
|
1628
1834
|
|
|
1629
1835
|
// src/components/company/CompanyInformation.tsx
|
|
1630
|
-
import { jsx as
|
|
1836
|
+
import { jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1631
1837
|
function CompanyInformation({
|
|
1632
1838
|
name,
|
|
1633
1839
|
how,
|
|
@@ -1635,8 +1841,8 @@ function CompanyInformation({
|
|
|
1635
1841
|
wow,
|
|
1636
1842
|
website
|
|
1637
1843
|
}) {
|
|
1638
|
-
return /* @__PURE__ */
|
|
1639
|
-
/* @__PURE__ */
|
|
1844
|
+
return /* @__PURE__ */ jsxs17("div", { className: "flex flex-col gap-2", children: [
|
|
1845
|
+
/* @__PURE__ */ jsxs17(
|
|
1640
1846
|
"h2",
|
|
1641
1847
|
{
|
|
1642
1848
|
"data-testid": "company-name",
|
|
@@ -1647,22 +1853,22 @@ function CompanyInformation({
|
|
|
1647
1853
|
]
|
|
1648
1854
|
}
|
|
1649
1855
|
),
|
|
1650
|
-
how && /* @__PURE__ */
|
|
1651
|
-
mission && /* @__PURE__ */
|
|
1652
|
-
/* @__PURE__ */
|
|
1653
|
-
/* @__PURE__ */
|
|
1654
|
-
/* @__PURE__ */
|
|
1856
|
+
how && /* @__PURE__ */ jsx30("p", { "data-testid": "company-information", className: "text-base text-grey-80", children: how }),
|
|
1857
|
+
mission && /* @__PURE__ */ jsxs17("div", { className: "flex gap-2", children: [
|
|
1858
|
+
/* @__PURE__ */ jsx30("span", { children: "\u{1F680}" }),
|
|
1859
|
+
/* @__PURE__ */ jsxs17("p", { className: "text-base text-grey-80", children: [
|
|
1860
|
+
/* @__PURE__ */ jsx30("span", { className: "pr-1 font-bold", children: "Mission" }),
|
|
1655
1861
|
mission
|
|
1656
1862
|
] })
|
|
1657
1863
|
] }),
|
|
1658
|
-
wow && /* @__PURE__ */
|
|
1659
|
-
/* @__PURE__ */
|
|
1660
|
-
/* @__PURE__ */
|
|
1661
|
-
/* @__PURE__ */
|
|
1864
|
+
wow && /* @__PURE__ */ jsxs17("div", { className: "flex gap-2", children: [
|
|
1865
|
+
/* @__PURE__ */ jsx30("span", { children: "\u{1F31F}" }),
|
|
1866
|
+
/* @__PURE__ */ jsxs17("p", { className: "text-base text-grey-80", children: [
|
|
1867
|
+
/* @__PURE__ */ jsx30("span", { className: "pr-1 font-bold", children: "Wow Factor" }),
|
|
1662
1868
|
wow
|
|
1663
1869
|
] })
|
|
1664
1870
|
] }),
|
|
1665
|
-
website && /* @__PURE__ */
|
|
1871
|
+
website && /* @__PURE__ */ jsx30("div", { className: "pt-2", children: /* @__PURE__ */ jsx30(
|
|
1666
1872
|
LinkButton,
|
|
1667
1873
|
{
|
|
1668
1874
|
"data-testid": "company-website-link",
|
|
@@ -1676,22 +1882,22 @@ function CompanyInformation({
|
|
|
1676
1882
|
}
|
|
1677
1883
|
|
|
1678
1884
|
// src/components/company/CompanyTake.tsx
|
|
1679
|
-
import { jsx as
|
|
1885
|
+
import { jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1680
1886
|
function CompanyTake({ content, avatarSrc }) {
|
|
1681
1887
|
if (!content) return null;
|
|
1682
|
-
return /* @__PURE__ */
|
|
1888
|
+
return /* @__PURE__ */ jsxs18(
|
|
1683
1889
|
"div",
|
|
1684
1890
|
{
|
|
1685
1891
|
"data-testid": "company-take",
|
|
1686
1892
|
className: "align-center w-full justify-start rounded-2xl bg-green-90 p-6",
|
|
1687
1893
|
children: [
|
|
1688
|
-
/* @__PURE__ */
|
|
1689
|
-
/* @__PURE__ */
|
|
1690
|
-
/* @__PURE__ */
|
|
1691
|
-
/* @__PURE__ */
|
|
1692
|
-
/* @__PURE__ */
|
|
1693
|
-
/* @__PURE__ */
|
|
1694
|
-
/* @__PURE__ */
|
|
1894
|
+
/* @__PURE__ */ jsx31("p", { className: "text-lg font-bold text-white sm:text-xl", children: "The Real Dill \u2618\uFE0F" }),
|
|
1895
|
+
/* @__PURE__ */ jsx31("div", { className: "mt-2 flex items-center justify-start", children: /* @__PURE__ */ jsx31("p", { className: "text-sm font-normal text-grey-10", children: content }) }),
|
|
1896
|
+
/* @__PURE__ */ jsxs18("div", { className: "mt-8 flex w-full items-center gap-3", children: [
|
|
1897
|
+
/* @__PURE__ */ jsx31(Avatar, { name: "Jon Lee", src: avatarSrc }),
|
|
1898
|
+
/* @__PURE__ */ jsxs18("div", { className: "flex flex-col flex-wrap items-start", children: [
|
|
1899
|
+
/* @__PURE__ */ jsx31("p", { className: "text-sm font-bold text-white", children: "Jon Lee, PT, DPT, OCS, FAAOMPT, MBA" }),
|
|
1900
|
+
/* @__PURE__ */ jsx31("p", { className: "text-xs font-normal text-grey-30", children: "Pickle co-founder" })
|
|
1695
1901
|
] })
|
|
1696
1902
|
] })
|
|
1697
1903
|
]
|
|
@@ -1700,12 +1906,12 @@ function CompanyTake({ content, avatarSrc }) {
|
|
|
1700
1906
|
}
|
|
1701
1907
|
|
|
1702
1908
|
// src/components/jobPost/JobDescription.tsx
|
|
1703
|
-
import { jsx as
|
|
1909
|
+
import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1704
1910
|
function JobDescription({ description }) {
|
|
1705
1911
|
if (!description) return null;
|
|
1706
|
-
return /* @__PURE__ */
|
|
1707
|
-
/* @__PURE__ */
|
|
1708
|
-
/* @__PURE__ */
|
|
1912
|
+
return /* @__PURE__ */ jsxs19("div", { className: "flex w-full flex-col gap-2", children: [
|
|
1913
|
+
/* @__PURE__ */ jsx32("h3", { className: "text-xl font-bold", children: "Job Description" }),
|
|
1914
|
+
/* @__PURE__ */ jsx32(ReadMore, { text: description })
|
|
1709
1915
|
] });
|
|
1710
1916
|
}
|
|
1711
1917
|
|
|
@@ -1722,19 +1928,19 @@ import { useContext as useContext2 } from "react";
|
|
|
1722
1928
|
|
|
1723
1929
|
// src/contexts/WindowHistoryProvider.tsx
|
|
1724
1930
|
import { useSearchParams } from "next/navigation";
|
|
1725
|
-
import { createContext, useEffect as
|
|
1726
|
-
import { jsx as
|
|
1931
|
+
import { createContext, useEffect as useEffect7, useMemo, useState as useState7 } from "react";
|
|
1932
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
1727
1933
|
var WindowHistoryContext = createContext({});
|
|
1728
1934
|
function WindowHistoryProvider({ children }) {
|
|
1729
|
-
const [history, setHistory] =
|
|
1935
|
+
const [history, setHistory] = useState7([]);
|
|
1730
1936
|
const searchParams = useSearchParams();
|
|
1731
|
-
|
|
1937
|
+
useEffect7(() => {
|
|
1732
1938
|
setHistory(
|
|
1733
1939
|
(prev) => prev.at(-1) === window.location.href ? prev : [...prev, window.location.href]
|
|
1734
1940
|
);
|
|
1735
1941
|
}, [searchParams]);
|
|
1736
1942
|
const contextValue = useMemo(() => ({ history }), [history]);
|
|
1737
|
-
return /* @__PURE__ */
|
|
1943
|
+
return /* @__PURE__ */ jsx33(WindowHistoryContext.Provider, { value: contextValue, children });
|
|
1738
1944
|
}
|
|
1739
1945
|
|
|
1740
1946
|
// src/hooks/useWindowHistory.ts
|
|
@@ -1744,16 +1950,20 @@ function useWindowHistory() {
|
|
|
1744
1950
|
}
|
|
1745
1951
|
|
|
1746
1952
|
// src/components/buttons/BackButton.tsx
|
|
1747
|
-
import { jsx as
|
|
1953
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
1748
1954
|
function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
1749
1955
|
const { history } = useWindowHistory();
|
|
1750
1956
|
const router = useRouter();
|
|
1751
1957
|
const isAcceptedRoute = (r) => !!acceptedRoutes?.find((route) => new RegExp("^" + route + "$", "i").test(r));
|
|
1752
1958
|
const goBack = () => {
|
|
1753
1959
|
const previous = history[history.length - 2];
|
|
1754
|
-
history.length > 1 && isAcceptedRoute(previous)
|
|
1960
|
+
if (history.length > 1 && isAcceptedRoute(previous)) {
|
|
1961
|
+
router.back();
|
|
1962
|
+
} else {
|
|
1963
|
+
router.push(fallbackHref ?? "/");
|
|
1964
|
+
}
|
|
1755
1965
|
};
|
|
1756
|
-
return /* @__PURE__ */
|
|
1966
|
+
return /* @__PURE__ */ jsx34(
|
|
1757
1967
|
Icon,
|
|
1758
1968
|
{
|
|
1759
1969
|
"aria-label": "back button",
|
|
@@ -1762,7 +1972,7 @@ function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
|
1762
1972
|
onClick: goBack,
|
|
1763
1973
|
className,
|
|
1764
1974
|
...props,
|
|
1765
|
-
children: /* @__PURE__ */
|
|
1975
|
+
children: /* @__PURE__ */ jsx34(X4, {})
|
|
1766
1976
|
}
|
|
1767
1977
|
);
|
|
1768
1978
|
}
|
|
@@ -1814,7 +2024,7 @@ var iconMap = {
|
|
|
1814
2024
|
};
|
|
1815
2025
|
|
|
1816
2026
|
// src/components/jobPost/JobHeader.tsx
|
|
1817
|
-
import { jsx as
|
|
2027
|
+
import { jsx as jsx35, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1818
2028
|
function JobHeader({
|
|
1819
2029
|
title,
|
|
1820
2030
|
subtitles,
|
|
@@ -1830,9 +2040,9 @@ function JobHeader({
|
|
|
1830
2040
|
}) {
|
|
1831
2041
|
const renderIcon = (icon) => {
|
|
1832
2042
|
const Icon2 = iconMap[icon];
|
|
1833
|
-
return /* @__PURE__ */
|
|
2043
|
+
return /* @__PURE__ */ jsx35(Icon2, { size: 18 });
|
|
1834
2044
|
};
|
|
1835
|
-
return /* @__PURE__ */
|
|
2045
|
+
return /* @__PURE__ */ jsxs20(
|
|
1836
2046
|
"div",
|
|
1837
2047
|
{
|
|
1838
2048
|
"data-testid": "job-header-root",
|
|
@@ -1841,8 +2051,8 @@ function JobHeader({
|
|
|
1841
2051
|
!standalone && "rounded-3xl"
|
|
1842
2052
|
),
|
|
1843
2053
|
children: [
|
|
1844
|
-
!standalone && /* @__PURE__ */
|
|
1845
|
-
/* @__PURE__ */
|
|
2054
|
+
!standalone && /* @__PURE__ */ jsxs20("div", { className: "relative flex min-h-16 w-full items-center rounded-t-3xl bg-transparent md:min-h-24 md:flex-row lg:min-h-32", children: [
|
|
2055
|
+
/* @__PURE__ */ jsx35(
|
|
1846
2056
|
Image2,
|
|
1847
2057
|
{
|
|
1848
2058
|
className: "h-full w-full rounded-t-3xl object-cover",
|
|
@@ -1851,7 +2061,7 @@ function JobHeader({
|
|
|
1851
2061
|
fill: true
|
|
1852
2062
|
}
|
|
1853
2063
|
),
|
|
1854
|
-
/* @__PURE__ */
|
|
2064
|
+
/* @__PURE__ */ jsx35(
|
|
1855
2065
|
BackButton,
|
|
1856
2066
|
{
|
|
1857
2067
|
acceptedRoutes: backAcceptedRoutes,
|
|
@@ -1860,12 +2070,12 @@ function JobHeader({
|
|
|
1860
2070
|
"data-testid": "job-header-back-button"
|
|
1861
2071
|
}
|
|
1862
2072
|
),
|
|
1863
|
-
/* @__PURE__ */
|
|
2073
|
+
/* @__PURE__ */ jsx35(
|
|
1864
2074
|
"div",
|
|
1865
2075
|
{
|
|
1866
2076
|
className: "absolute left-4 top-8 md:left-6 md:top-16 lg:top-24",
|
|
1867
2077
|
"data-testid": "job-header-avatar",
|
|
1868
|
-
children: /* @__PURE__ */
|
|
2078
|
+
children: /* @__PURE__ */ jsx35(
|
|
1869
2079
|
Avatar,
|
|
1870
2080
|
{
|
|
1871
2081
|
size: "large",
|
|
@@ -1879,9 +2089,9 @@ function JobHeader({
|
|
|
1879
2089
|
}
|
|
1880
2090
|
)
|
|
1881
2091
|
] }),
|
|
1882
|
-
/* @__PURE__ */
|
|
1883
|
-
/* @__PURE__ */
|
|
1884
|
-
standalone && /* @__PURE__ */
|
|
2092
|
+
/* @__PURE__ */ jsxs20("div", { className: "flex w-full flex-col items-start justify-start gap-4 px-6", children: [
|
|
2093
|
+
/* @__PURE__ */ jsxs20("div", { className: "flex flex-col md:flex-row", children: [
|
|
2094
|
+
standalone && /* @__PURE__ */ jsx35("div", { className: "-mt-4 mr-4 md:mt-0", "data-testid": "job-header-avatar", children: /* @__PURE__ */ jsx35(
|
|
1885
2095
|
Avatar,
|
|
1886
2096
|
{
|
|
1887
2097
|
size: "large",
|
|
@@ -1892,26 +2102,26 @@ function JobHeader({
|
|
|
1892
2102
|
rel: "noopener noreferrer"
|
|
1893
2103
|
}
|
|
1894
2104
|
) }),
|
|
1895
|
-
/* @__PURE__ */
|
|
2105
|
+
/* @__PURE__ */ jsx35("div", { className: "prose mt-4 flex w-full items-center text-grey-80 lg:prose-lg", children: subtitles?.map((subtitle, i) => /* @__PURE__ */ jsxs20(
|
|
1896
2106
|
"div",
|
|
1897
2107
|
{
|
|
1898
2108
|
"data-testid": `job-header-subtitle-${i}`,
|
|
1899
2109
|
className: "flex items-center",
|
|
1900
2110
|
children: [
|
|
1901
2111
|
subtitle,
|
|
1902
|
-
i < subtitles.length - 1 && /* @__PURE__ */
|
|
2112
|
+
i < subtitles.length - 1 && /* @__PURE__ */ jsx35(Dot2, { className: "mx-1 shrink-0", size: 10 })
|
|
1903
2113
|
]
|
|
1904
2114
|
},
|
|
1905
2115
|
subtitle
|
|
1906
2116
|
)) })
|
|
1907
2117
|
] }),
|
|
1908
|
-
/* @__PURE__ */
|
|
2118
|
+
/* @__PURE__ */ jsxs20(
|
|
1909
2119
|
"div",
|
|
1910
2120
|
{
|
|
1911
2121
|
"data-testid": "job-header-content",
|
|
1912
2122
|
className: "mt-2 flex w-full flex-row flex-wrap items-center justify-between gap-1",
|
|
1913
2123
|
children: [
|
|
1914
|
-
/* @__PURE__ */
|
|
2124
|
+
/* @__PURE__ */ jsx35(
|
|
1915
2125
|
"h2",
|
|
1916
2126
|
{
|
|
1917
2127
|
"data-testid": "job-header-title",
|
|
@@ -1919,7 +2129,7 @@ function JobHeader({
|
|
|
1919
2129
|
children: title
|
|
1920
2130
|
}
|
|
1921
2131
|
),
|
|
1922
|
-
!!actions && /* @__PURE__ */
|
|
2132
|
+
!!actions && /* @__PURE__ */ jsx35(
|
|
1923
2133
|
"div",
|
|
1924
2134
|
{
|
|
1925
2135
|
className: "flex w-full justify-end gap-2 md:w-auto",
|
|
@@ -1930,12 +2140,12 @@ function JobHeader({
|
|
|
1930
2140
|
]
|
|
1931
2141
|
}
|
|
1932
2142
|
),
|
|
1933
|
-
/* @__PURE__ */
|
|
2143
|
+
/* @__PURE__ */ jsx35(
|
|
1934
2144
|
"div",
|
|
1935
2145
|
{
|
|
1936
2146
|
"data-testid": "job-header-tags",
|
|
1937
2147
|
className: "flex flex-row flex-wrap items-center justify-start gap-2",
|
|
1938
|
-
children: tags?.map(({ name, label, icon }) => /* @__PURE__ */
|
|
2148
|
+
children: tags?.map(({ name, label, icon }) => /* @__PURE__ */ jsxs20(
|
|
1939
2149
|
Chip_default,
|
|
1940
2150
|
{
|
|
1941
2151
|
size: "small",
|
|
@@ -1944,7 +2154,7 @@ function JobHeader({
|
|
|
1944
2154
|
"data-testid": `job-header-tag-${name}`,
|
|
1945
2155
|
children: [
|
|
1946
2156
|
renderIcon(icon),
|
|
1947
|
-
/* @__PURE__ */
|
|
2157
|
+
/* @__PURE__ */ jsx35("span", { children: label })
|
|
1948
2158
|
]
|
|
1949
2159
|
},
|
|
1950
2160
|
name
|
|
@@ -1960,104 +2170,8 @@ function JobHeader({
|
|
|
1960
2170
|
// src/components/jobPost/JobPost.tsx
|
|
1961
2171
|
import * as DateFns from "date-fns";
|
|
1962
2172
|
|
|
1963
|
-
// src/types/data/shared_pickle_output_latest.ts
|
|
1964
|
-
var shared_pickle_output_latest_exports = {};
|
|
1965
|
-
__export(shared_pickle_output_latest_exports, {
|
|
1966
|
-
CurrencyEnum: () => CurrencyEnum,
|
|
1967
|
-
DetailLevelEnum: () => DetailLevelEnum,
|
|
1968
|
-
TypeEnum: () => TypeEnum,
|
|
1969
|
-
UnitTextEnum: () => UnitTextEnum,
|
|
1970
|
-
imageAssetSchema: () => imageAssetSchema,
|
|
1971
|
-
imageSchema: () => imageSchema,
|
|
1972
|
-
monetaryAmountSchema: () => monetaryAmountSchema,
|
|
1973
|
-
placeSchema: () => placeSchema,
|
|
1974
|
-
postalAddressSchema: () => postalAddressSchema,
|
|
1975
|
-
quantitativeValueSchema: () => quantitativeValueSchema
|
|
1976
|
-
});
|
|
1977
|
-
import { z } from "zod";
|
|
1978
|
-
var TypeEnum = z.enum(["IMAGE"]);
|
|
1979
|
-
var DetailLevelEnum = z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
|
|
1980
|
-
var UnitTextEnum = z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
|
|
1981
|
-
var CurrencyEnum = z.enum(["EUR", "GBP", "USD"]);
|
|
1982
|
-
var postalAddressSchema = z.object({
|
|
1983
|
-
version: z.literal("1.0.0").default("1.0.0"),
|
|
1984
|
-
type: z.string().describe("Document type used for schema"),
|
|
1985
|
-
addressCountry: z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
|
|
1986
|
-
addressRegion: z.optional(z.string()).describe("The region in which the locality is, and which is in the country."),
|
|
1987
|
-
addressLocality: z.optional(z.string()).describe("The locality in which the street address is, and which is in the region. In the US this would be city."),
|
|
1988
|
-
streetAddress: z.optional(z.string()).describe("The street name of the address within the locality."),
|
|
1989
|
-
streetNumber: z.optional(z.string()).describe("The house of building number within the street."),
|
|
1990
|
-
postalCode: z.optional(z.string()).describe("The postal code"),
|
|
1991
|
-
description: z.optional(z.string()).describe("A descriptive string containing the full address.")
|
|
1992
|
-
});
|
|
1993
|
-
var placeSchema = z.object({
|
|
1994
|
-
version: z.literal("1.0.0").default("1.0.0"),
|
|
1995
|
-
detailLevel: z.optional(DetailLevelEnum),
|
|
1996
|
-
latitude: z.optional(z.number()).describe("The latitude of a location."),
|
|
1997
|
-
longitude: z.optional(z.number()).describe("The longitude of a location."),
|
|
1998
|
-
address: z.optional(postalAddressSchema).describe("The physical place of the location")
|
|
1999
|
-
});
|
|
2000
|
-
var quantitativeValueSchema = z.object({
|
|
2001
|
-
version: z.literal("1.0.0").default("1.0.0"),
|
|
2002
|
-
type: z.string().describe("Document type used for schema"),
|
|
2003
|
-
value: z.optional(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."),
|
|
2004
|
-
minValue: z.optional(z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
|
|
2005
|
-
maxValue: z.optional(z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
|
|
2006
|
-
unitText: UnitTextEnum
|
|
2007
|
-
});
|
|
2008
|
-
var monetaryAmountSchema = z.object({
|
|
2009
|
-
version: z.literal("1.0.0").default("1.0.0"),
|
|
2010
|
-
type: z.string().describe("Document type used for schema"),
|
|
2011
|
-
singleValue: z.optional(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."),
|
|
2012
|
-
minValue: z.optional(z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
|
|
2013
|
-
maxValue: z.optional(z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
|
|
2014
|
-
value: z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
|
|
2015
|
-
currency: z.optional(CurrencyEnum)
|
|
2016
|
-
});
|
|
2017
|
-
var imageAssetSchema = z.object({
|
|
2018
|
-
version: z.literal("1.0.0").default("1.0.0"),
|
|
2019
|
-
altText: z.optional(z.string()).describe("The alt text for the image"),
|
|
2020
|
-
assetId: z.optional(z.string()).describe("The asset ID for the image"),
|
|
2021
|
-
description: z.optional(z.string()).describe("The description for the image"),
|
|
2022
|
-
extension: z.optional(z.string()).describe("The extension for the image"),
|
|
2023
|
-
label: z.optional(z.string()).describe("The label for the image"),
|
|
2024
|
-
mimeType: z.optional(z.string()).describe("The mime type for the image"),
|
|
2025
|
-
originalFilename: z.optional(z.string()).describe("The original filename for the image"),
|
|
2026
|
-
path: z.optional(z.string()).describe("The path for the image"),
|
|
2027
|
-
sha1Hash: z.optional(z.string()).describe("The SHA1 hash for the image"),
|
|
2028
|
-
size: z.optional(z.number()).describe("The size for the image"),
|
|
2029
|
-
title: z.optional(z.string()).describe("The title for the image"),
|
|
2030
|
-
uploadId: z.optional(z.string()).describe("The upload ID for the image"),
|
|
2031
|
-
url: z.optional(z.string()).describe("The URL for the image")
|
|
2032
|
-
});
|
|
2033
|
-
var imageSchema = z.object({
|
|
2034
|
-
version: z.literal("1.0.0").default("1.0.0"),
|
|
2035
|
-
type: z.string().describe("Document type used for schema"),
|
|
2036
|
-
asset: z.optional(imageAssetSchema).describe("The asset for the image")
|
|
2037
|
-
});
|
|
2038
|
-
|
|
2039
|
-
// src/lib/salaryRange.ts
|
|
2040
|
-
function salaryRange(salary) {
|
|
2041
|
-
if (!salary) return null;
|
|
2042
|
-
const min = salary.minValue;
|
|
2043
|
-
const max = salary.maxValue;
|
|
2044
|
-
const single = salary.singleValue;
|
|
2045
|
-
const signs = {
|
|
2046
|
-
[CurrencyEnum.Values.USD]: "$",
|
|
2047
|
-
[CurrencyEnum.Values.GBP]: "\xA3",
|
|
2048
|
-
[CurrencyEnum.Values.EUR]: "\u20AC"
|
|
2049
|
-
};
|
|
2050
|
-
const sign = signs[salary.currency ?? CurrencyEnum.Values.USD];
|
|
2051
|
-
if (min == null && max == null && single == null) return null;
|
|
2052
|
-
if (single != null) return sign + single.toLocaleString();
|
|
2053
|
-
if (min === max) return sign + min?.toLocaleString();
|
|
2054
|
-
if (min != null && max != null)
|
|
2055
|
-
return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString();
|
|
2056
|
-
return null;
|
|
2057
|
-
}
|
|
2058
|
-
|
|
2059
2173
|
// src/hooks/useDisplayText.ts
|
|
2060
|
-
import { useEffect as
|
|
2174
|
+
import { useEffect as useEffect8, useMemo as useMemo2, useState as useState8 } from "react";
|
|
2061
2175
|
|
|
2062
2176
|
// src/lib/mappings.ts
|
|
2063
2177
|
var employmentTypeDisplayText = {
|
|
@@ -2501,9 +2615,9 @@ var DisplayTextService = class {
|
|
|
2501
2615
|
|
|
2502
2616
|
// src/hooks/useDisplayText.ts
|
|
2503
2617
|
var useDisplayText = (scope, value) => {
|
|
2504
|
-
const [displayText, setDisplayText] =
|
|
2618
|
+
const [displayText, setDisplayText] = useState8("");
|
|
2505
2619
|
const displayService = useMemo2(() => new DisplayTextService(), []);
|
|
2506
|
-
|
|
2620
|
+
useEffect8(() => {
|
|
2507
2621
|
if (!displayService || !value) {
|
|
2508
2622
|
setDisplayText("");
|
|
2509
2623
|
return;
|
|
@@ -2545,8 +2659,104 @@ function formattedJobLocation(job) {
|
|
|
2545
2659
|
return [address, remote].filter(Boolean).join(" | ");
|
|
2546
2660
|
}
|
|
2547
2661
|
|
|
2662
|
+
// src/types/data/shared_pickle_output_latest.ts
|
|
2663
|
+
var shared_pickle_output_latest_exports = {};
|
|
2664
|
+
__export(shared_pickle_output_latest_exports, {
|
|
2665
|
+
CurrencyEnum: () => CurrencyEnum,
|
|
2666
|
+
DetailLevelEnum: () => DetailLevelEnum,
|
|
2667
|
+
TypeEnum: () => TypeEnum,
|
|
2668
|
+
UnitTextEnum: () => UnitTextEnum,
|
|
2669
|
+
imageAssetSchema: () => imageAssetSchema,
|
|
2670
|
+
imageSchema: () => imageSchema,
|
|
2671
|
+
monetaryAmountSchema: () => monetaryAmountSchema,
|
|
2672
|
+
placeSchema: () => placeSchema,
|
|
2673
|
+
postalAddressSchema: () => postalAddressSchema,
|
|
2674
|
+
quantitativeValueSchema: () => quantitativeValueSchema
|
|
2675
|
+
});
|
|
2676
|
+
import { z } from "zod";
|
|
2677
|
+
var TypeEnum = z.enum(["IMAGE"]);
|
|
2678
|
+
var DetailLevelEnum = z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
|
|
2679
|
+
var UnitTextEnum = z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
|
|
2680
|
+
var CurrencyEnum = z.enum(["EUR", "GBP", "USD"]);
|
|
2681
|
+
var postalAddressSchema = z.object({
|
|
2682
|
+
version: z.literal("1.0.0").default("1.0.0"),
|
|
2683
|
+
type: z.string().describe("Document type used for schema"),
|
|
2684
|
+
addressCountry: z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
|
|
2685
|
+
addressRegion: z.optional(z.string()).describe("The region in which the locality is, and which is in the country."),
|
|
2686
|
+
addressLocality: z.optional(z.string()).describe("The locality in which the street address is, and which is in the region. In the US this would be city."),
|
|
2687
|
+
streetAddress: z.optional(z.string()).describe("The street name of the address within the locality."),
|
|
2688
|
+
streetNumber: z.optional(z.string()).describe("The house of building number within the street."),
|
|
2689
|
+
postalCode: z.optional(z.string()).describe("The postal code"),
|
|
2690
|
+
description: z.optional(z.string()).describe("A descriptive string containing the full address.")
|
|
2691
|
+
});
|
|
2692
|
+
var placeSchema = z.object({
|
|
2693
|
+
version: z.literal("1.0.0").default("1.0.0"),
|
|
2694
|
+
detailLevel: z.optional(DetailLevelEnum),
|
|
2695
|
+
latitude: z.optional(z.number()).describe("The latitude of a location."),
|
|
2696
|
+
longitude: z.optional(z.number()).describe("The longitude of a location."),
|
|
2697
|
+
address: z.optional(postalAddressSchema).describe("The physical place of the location")
|
|
2698
|
+
});
|
|
2699
|
+
var quantitativeValueSchema = z.object({
|
|
2700
|
+
version: z.literal("1.0.0").default("1.0.0"),
|
|
2701
|
+
type: z.string().describe("Document type used for schema"),
|
|
2702
|
+
value: z.optional(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."),
|
|
2703
|
+
minValue: z.optional(z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
|
|
2704
|
+
maxValue: z.optional(z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
|
|
2705
|
+
unitText: UnitTextEnum
|
|
2706
|
+
});
|
|
2707
|
+
var monetaryAmountSchema = z.object({
|
|
2708
|
+
version: z.literal("1.0.0").default("1.0.0"),
|
|
2709
|
+
type: z.string().describe("Document type used for schema"),
|
|
2710
|
+
singleValue: z.optional(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."),
|
|
2711
|
+
minValue: z.optional(z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
|
|
2712
|
+
maxValue: z.optional(z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
|
|
2713
|
+
value: z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
|
|
2714
|
+
currency: z.optional(CurrencyEnum)
|
|
2715
|
+
});
|
|
2716
|
+
var imageAssetSchema = z.object({
|
|
2717
|
+
version: z.literal("1.0.0").default("1.0.0"),
|
|
2718
|
+
altText: z.optional(z.string()).describe("The alt text for the image"),
|
|
2719
|
+
assetId: z.optional(z.string()).describe("The asset ID for the image"),
|
|
2720
|
+
description: z.optional(z.string()).describe("The description for the image"),
|
|
2721
|
+
extension: z.optional(z.string()).describe("The extension for the image"),
|
|
2722
|
+
label: z.optional(z.string()).describe("The label for the image"),
|
|
2723
|
+
mimeType: z.optional(z.string()).describe("The mime type for the image"),
|
|
2724
|
+
originalFilename: z.optional(z.string()).describe("The original filename for the image"),
|
|
2725
|
+
path: z.optional(z.string()).describe("The path for the image"),
|
|
2726
|
+
sha1Hash: z.optional(z.string()).describe("The SHA1 hash for the image"),
|
|
2727
|
+
size: z.optional(z.number()).describe("The size for the image"),
|
|
2728
|
+
title: z.optional(z.string()).describe("The title for the image"),
|
|
2729
|
+
uploadId: z.optional(z.string()).describe("The upload ID for the image"),
|
|
2730
|
+
url: z.optional(z.string()).describe("The URL for the image")
|
|
2731
|
+
});
|
|
2732
|
+
var imageSchema = z.object({
|
|
2733
|
+
version: z.literal("1.0.0").default("1.0.0"),
|
|
2734
|
+
type: z.string().describe("Document type used for schema"),
|
|
2735
|
+
asset: z.optional(imageAssetSchema).describe("The asset for the image")
|
|
2736
|
+
});
|
|
2737
|
+
|
|
2738
|
+
// src/lib/salaryRange.ts
|
|
2739
|
+
function salaryRange(salary) {
|
|
2740
|
+
if (!salary) return null;
|
|
2741
|
+
const min = salary.minValue;
|
|
2742
|
+
const max = salary.maxValue;
|
|
2743
|
+
const single = salary.singleValue;
|
|
2744
|
+
const signs = {
|
|
2745
|
+
[CurrencyEnum.Values.USD]: "$",
|
|
2746
|
+
[CurrencyEnum.Values.GBP]: "\xA3",
|
|
2747
|
+
[CurrencyEnum.Values.EUR]: "\u20AC"
|
|
2748
|
+
};
|
|
2749
|
+
const sign = signs[salary.currency ?? CurrencyEnum.Values.USD];
|
|
2750
|
+
if (min == null && max == null && single == null) return null;
|
|
2751
|
+
if (single != null) return sign + single.toLocaleString();
|
|
2752
|
+
if (min === max) return sign + min?.toLocaleString();
|
|
2753
|
+
if (min != null && max != null)
|
|
2754
|
+
return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString();
|
|
2755
|
+
return null;
|
|
2756
|
+
}
|
|
2757
|
+
|
|
2548
2758
|
// src/components/jobPost/JobPost.tsx
|
|
2549
|
-
import { jsx as
|
|
2759
|
+
import { jsx as jsx36, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2550
2760
|
function JobPost({
|
|
2551
2761
|
job,
|
|
2552
2762
|
bannerSrc,
|
|
@@ -2590,7 +2800,7 @@ function JobPost({
|
|
|
2590
2800
|
label: formattedLocation
|
|
2591
2801
|
}
|
|
2592
2802
|
].filter((t) => !!t);
|
|
2593
|
-
return /* @__PURE__ */
|
|
2803
|
+
return /* @__PURE__ */ jsxs21(
|
|
2594
2804
|
"div",
|
|
2595
2805
|
{
|
|
2596
2806
|
className: cn(
|
|
@@ -2598,7 +2808,7 @@ function JobPost({
|
|
|
2598
2808
|
!standalone && "border-1 rounded-3xl border-grey-5"
|
|
2599
2809
|
),
|
|
2600
2810
|
children: [
|
|
2601
|
-
/* @__PURE__ */
|
|
2811
|
+
/* @__PURE__ */ jsx36(
|
|
2602
2812
|
JobHeader,
|
|
2603
2813
|
{
|
|
2604
2814
|
title: job.title,
|
|
@@ -2612,16 +2822,16 @@ function JobPost({
|
|
|
2612
2822
|
tags
|
|
2613
2823
|
}
|
|
2614
2824
|
),
|
|
2615
|
-
/* @__PURE__ */
|
|
2616
|
-
/* @__PURE__ */
|
|
2617
|
-
/* @__PURE__ */
|
|
2825
|
+
/* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-8 px-6", children: [
|
|
2826
|
+
/* @__PURE__ */ jsx36(JobDescription, { description: job.description }),
|
|
2827
|
+
/* @__PURE__ */ jsx36(
|
|
2618
2828
|
CompanyTake,
|
|
2619
2829
|
{
|
|
2620
2830
|
avatarSrc,
|
|
2621
2831
|
content: job.hiringOrganization?.companyNdg?.companyNdgTake
|
|
2622
2832
|
}
|
|
2623
2833
|
),
|
|
2624
|
-
/* @__PURE__ */
|
|
2834
|
+
/* @__PURE__ */ jsx36(
|
|
2625
2835
|
CompanyInformation,
|
|
2626
2836
|
{
|
|
2627
2837
|
name: job.hiringOrganization?.companyName ?? "",
|
|
@@ -2631,7 +2841,7 @@ function JobPost({
|
|
|
2631
2841
|
website: job.hiringOrganization?.companyWebsite
|
|
2632
2842
|
}
|
|
2633
2843
|
),
|
|
2634
|
-
/* @__PURE__ */
|
|
2844
|
+
/* @__PURE__ */ jsx36(
|
|
2635
2845
|
CompanyBenefits,
|
|
2636
2846
|
{
|
|
2637
2847
|
benefits: job.hiringOrganization?.companyCareers?.companyBenefits?.map((b) => b.title).filter((d) => d !== void 0)
|
|
@@ -2643,24 +2853,6 @@ function JobPost({
|
|
|
2643
2853
|
);
|
|
2644
2854
|
}
|
|
2645
2855
|
|
|
2646
|
-
// src/types/data/job_posting_service_latest.ts
|
|
2647
|
-
var job_posting_service_latest_exports = {};
|
|
2648
|
-
__export(job_posting_service_latest_exports, {
|
|
2649
|
-
BestFitEnum: () => BestFitEnum,
|
|
2650
|
-
ClinicalLicenseEnum: () => ClinicalLicenseEnum,
|
|
2651
|
-
ClinicalSettingEnum: () => ClinicalSettingEnum,
|
|
2652
|
-
ClinicalSpecialtyEnum: () => ClinicalSpecialtyEnum,
|
|
2653
|
-
EmploymentLevelEnum: () => EmploymentLevelEnum,
|
|
2654
|
-
EmploymentTypeEnum: () => EmploymentTypeEnum,
|
|
2655
|
-
JobFunctionEnum: () => JobFunctionEnum,
|
|
2656
|
-
JobLocationTypeEnum: () => JobLocationTypeEnum,
|
|
2657
|
-
PublishStatusEnum: () => PublishStatusEnum2,
|
|
2658
|
-
ShiftEnum: () => ShiftEnum,
|
|
2659
|
-
TypeEnum: () => TypeEnum3,
|
|
2660
|
-
jobPostSchema: () => jobPostSchema
|
|
2661
|
-
});
|
|
2662
|
-
import { z as z3 } from "zod";
|
|
2663
|
-
|
|
2664
2856
|
// src/types/data/company_service_latest.ts
|
|
2665
2857
|
var company_service_latest_exports = {};
|
|
2666
2858
|
__export(company_service_latest_exports, {
|
|
@@ -2808,6 +3000,22 @@ var officeSchema = z2.object({
|
|
|
2808
3000
|
});
|
|
2809
3001
|
|
|
2810
3002
|
// src/types/data/job_posting_service_latest.ts
|
|
3003
|
+
var job_posting_service_latest_exports = {};
|
|
3004
|
+
__export(job_posting_service_latest_exports, {
|
|
3005
|
+
BestFitEnum: () => BestFitEnum,
|
|
3006
|
+
ClinicalLicenseEnum: () => ClinicalLicenseEnum,
|
|
3007
|
+
ClinicalSettingEnum: () => ClinicalSettingEnum,
|
|
3008
|
+
ClinicalSpecialtyEnum: () => ClinicalSpecialtyEnum,
|
|
3009
|
+
EmploymentLevelEnum: () => EmploymentLevelEnum,
|
|
3010
|
+
EmploymentTypeEnum: () => EmploymentTypeEnum,
|
|
3011
|
+
JobFunctionEnum: () => JobFunctionEnum,
|
|
3012
|
+
JobLocationTypeEnum: () => JobLocationTypeEnum,
|
|
3013
|
+
PublishStatusEnum: () => PublishStatusEnum2,
|
|
3014
|
+
ShiftEnum: () => ShiftEnum,
|
|
3015
|
+
TypeEnum: () => TypeEnum3,
|
|
3016
|
+
jobPostSchema: () => jobPostSchema
|
|
3017
|
+
});
|
|
3018
|
+
import { z as z3 } from "zod";
|
|
2811
3019
|
var TypeEnum3 = z3.enum(["JOB_POST"]);
|
|
2812
3020
|
var JobLocationTypeEnum = z3.enum(["FLOAT", "HYBRID", "ONSITE", "REMOTE"]);
|
|
2813
3021
|
var EmploymentTypeEnum = z3.enum(["CONTRACT", "FULL_TIME", "INTERNSHIP", "OTHER", "PART_TIME", "PER_DIEM", "TEMPORARY"]);
|
|
@@ -2868,6 +3076,7 @@ export {
|
|
|
2868
3076
|
company_service_latest_exports as CompanyService,
|
|
2869
3077
|
CompanyTake,
|
|
2870
3078
|
Counter,
|
|
3079
|
+
DatePicker,
|
|
2871
3080
|
Icon,
|
|
2872
3081
|
Input_default as Input,
|
|
2873
3082
|
InputOtp,
|