@next-degree/pickle-shared-js 0.5.31 → 0.6.44
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-DQ5joNqO.d.cts +4243 -0
- package/dist/company_service_latest-DQ5joNqO.d.ts +4243 -0
- package/dist/components/buttons/BackButton.cjs +161 -0
- package/dist/components/buttons/BackButton.cjs.map +1 -0
- package/dist/components/buttons/BackButton.d.cts +9 -0
- package/dist/components/buttons/BackButton.d.ts +9 -0
- package/dist/components/buttons/BackButton.js +137 -0
- package/dist/components/buttons/BackButton.js.map +1 -0
- package/dist/components/company/CompanyBenefits.cjs +38 -0
- package/dist/components/company/CompanyBenefits.cjs.map +1 -0
- package/dist/components/company/CompanyBenefits.d.cts +8 -0
- package/dist/components/company/CompanyBenefits.d.ts +8 -0
- package/dist/components/company/CompanyBenefits.js +13 -0
- package/dist/components/company/CompanyBenefits.js.map +1 -0
- package/dist/components/company/CompanyInformation.cjs +112 -0
- package/dist/components/company/CompanyInformation.cjs.map +1 -0
- package/dist/components/company/CompanyInformation.d.cts +12 -0
- package/dist/components/company/CompanyInformation.d.ts +12 -0
- package/dist/components/company/CompanyInformation.js +75 -0
- package/dist/components/company/CompanyInformation.js.map +1 -0
- package/dist/components/company/CompanyTake.cjs +140 -0
- package/dist/components/company/CompanyTake.cjs.map +1 -0
- package/dist/components/company/CompanyTake.d.cts +9 -0
- package/dist/components/company/CompanyTake.d.ts +9 -0
- package/dist/components/company/CompanyTake.js +104 -0
- package/dist/components/company/CompanyTake.js.map +1 -0
- package/dist/components/jobPost/JobDescription.cjs +205 -0
- package/dist/components/jobPost/JobDescription.cjs.map +1 -0
- package/dist/components/jobPost/JobDescription.d.cts +8 -0
- package/dist/components/jobPost/JobDescription.d.ts +8 -0
- package/dist/components/jobPost/JobDescription.js +168 -0
- package/dist/components/jobPost/JobDescription.js.map +1 -0
- package/dist/components/jobPost/JobHeader.cjs +436 -0
- package/dist/components/jobPost/JobHeader.cjs.map +1 -0
- package/dist/components/jobPost/JobHeader.d.cts +26 -0
- package/dist/components/jobPost/JobHeader.d.ts +26 -0
- package/dist/components/jobPost/JobHeader.js +423 -0
- package/dist/components/jobPost/JobHeader.js.map +1 -0
- package/dist/components/jobPost/JobPost.cjs +1371 -0
- package/dist/components/jobPost/JobPost.cjs.map +1 -0
- package/dist/components/jobPost/JobPost.d.cts +16 -0
- package/dist/components/jobPost/JobPost.d.ts +16 -0
- package/dist/components/jobPost/JobPost.js +1358 -0
- package/dist/components/jobPost/JobPost.js.map +1 -0
- package/dist/components/primitives/avatar.cjs +88 -0
- package/dist/components/primitives/avatar.cjs.map +1 -0
- package/dist/components/primitives/avatar.d.cts +13 -0
- package/dist/components/primitives/avatar.d.ts +13 -0
- package/dist/components/primitives/avatar.js +52 -0
- package/dist/components/primitives/avatar.js.map +1 -0
- package/dist/components/primitives/command.d.cts +3 -3
- package/dist/components/primitives/command.d.ts +3 -3
- package/dist/components/ui/Avatar.cjs +117 -0
- package/dist/components/ui/Avatar.cjs.map +1 -0
- package/dist/components/ui/Avatar.d.cts +16 -0
- package/dist/components/ui/Avatar.d.ts +16 -0
- package/dist/components/ui/Avatar.js +79 -0
- package/dist/components/ui/Avatar.js.map +1 -0
- package/dist/components/ui/Icon.cjs +114 -0
- package/dist/components/ui/Icon.cjs.map +1 -0
- package/dist/components/ui/Icon.d.cts +15 -0
- package/dist/components/ui/Icon.d.ts +15 -0
- package/dist/components/ui/Icon.js +89 -0
- package/dist/components/ui/Icon.js.map +1 -0
- package/dist/{app/layout.cjs → components/ui/LinkButton.cjs} +25 -35
- package/dist/components/ui/LinkButton.cjs.map +1 -0
- package/dist/components/ui/LinkButton.d.cts +29 -0
- package/dist/components/ui/LinkButton.d.ts +29 -0
- package/dist/components/ui/LinkButton.js +26 -0
- package/dist/components/ui/LinkButton.js.map +1 -0
- package/dist/components/ui/ReadMore.cjs +194 -0
- package/dist/components/ui/ReadMore.cjs.map +1 -0
- package/dist/components/ui/ReadMore.d.cts +9 -0
- package/dist/components/ui/ReadMore.d.ts +9 -0
- package/dist/components/ui/ReadMore.js +160 -0
- package/dist/components/ui/ReadMore.js.map +1 -0
- package/dist/contexts/WindowHistoryProvider.cjs +48 -0
- package/dist/contexts/WindowHistoryProvider.cjs.map +1 -0
- package/dist/contexts/WindowHistoryProvider.d.cts +11 -0
- package/dist/contexts/WindowHistoryProvider.d.ts +11 -0
- package/dist/contexts/WindowHistoryProvider.js +23 -0
- package/dist/contexts/WindowHistoryProvider.js.map +1 -0
- package/dist/displayText-BvUjsvAx.d.cts +48 -0
- package/dist/displayText-CDK-QDbc.d.ts +48 -0
- package/dist/hooks/useDisplayText.cjs +502 -0
- package/dist/hooks/useDisplayText.cjs.map +1 -0
- package/dist/hooks/useDisplayText.d.cts +8 -0
- package/dist/hooks/useDisplayText.d.ts +8 -0
- package/dist/hooks/useDisplayText.js +477 -0
- package/dist/hooks/useDisplayText.js.map +1 -0
- package/dist/hooks/useWindowHistory.cjs +46 -0
- package/dist/hooks/useWindowHistory.cjs.map +1 -0
- package/dist/hooks/useWindowHistory.d.cts +7 -0
- package/dist/hooks/useWindowHistory.d.ts +7 -0
- package/dist/hooks/useWindowHistory.js +21 -0
- package/dist/hooks/useWindowHistory.js.map +1 -0
- package/dist/index.cjs +1459 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +21 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.js +1468 -1
- package/dist/index.js.map +1 -1
- package/dist/job_posting_service_latest-Uc2AcDWn.d.cts +4109 -0
- package/dist/job_posting_service_latest-Uc2AcDWn.d.ts +4109 -0
- package/dist/lib/icons.cjs +53 -0
- package/dist/lib/icons.cjs.map +1 -0
- package/dist/lib/icons.d.cts +27 -0
- package/dist/lib/icons.d.ts +27 -0
- package/dist/lib/icons.js +49 -0
- package/dist/lib/icons.js.map +1 -0
- package/dist/lib/locations.cjs +45 -0
- package/dist/lib/locations.cjs.map +1 -0
- package/dist/lib/locations.d.cts +8 -0
- package/dist/lib/locations.d.ts +8 -0
- package/dist/lib/locations.js +19 -0
- package/dist/lib/locations.js.map +1 -0
- package/dist/lib/mappings.cjs +443 -0
- package/dist/lib/mappings.cjs.map +1 -0
- package/dist/lib/mappings.d.cts +4 -0
- package/dist/lib/mappings.d.ts +4 -0
- package/dist/lib/mappings.js +409 -0
- package/dist/lib/mappings.js.map +1 -0
- package/dist/lib/salaryRange.cjs +111 -0
- package/dist/lib/salaryRange.cjs.map +1 -0
- package/dist/lib/salaryRange.d.cts +6 -0
- package/dist/lib/salaryRange.d.ts +6 -0
- package/dist/lib/salaryRange.js +84 -0
- package/dist/lib/salaryRange.js.map +1 -0
- package/dist/services/displayText.cjs +470 -0
- package/dist/services/displayText.cjs.map +1 -0
- package/dist/services/displayText.d.cts +4 -0
- package/dist/services/displayText.d.ts +4 -0
- package/dist/services/displayText.js +443 -0
- package/dist/services/displayText.js.map +1 -0
- package/dist/shared_pickle_output_latest-DUO_efBh.d.cts +334 -0
- package/dist/shared_pickle_output_latest-DUO_efBh.d.ts +334 -0
- package/dist/styles/globals.css +817 -0
- package/dist/styles/globals.css.map +1 -1
- package/dist/types/data/company_service_latest.cjs +249 -0
- package/dist/types/data/company_service_latest.cjs.map +1 -0
- package/dist/types/data/company_service_latest.d.cts +2 -0
- package/dist/types/data/company_service_latest.d.ts +2 -0
- package/dist/types/data/company_service_latest.js +208 -0
- package/dist/types/data/company_service_latest.js.map +1 -0
- package/dist/types/data/job_posting_service_latest.cjs +289 -0
- package/dist/types/data/job_posting_service_latest.cjs.map +1 -0
- package/dist/types/data/job_posting_service_latest.d.cts +2 -0
- package/dist/types/data/job_posting_service_latest.d.ts +2 -0
- package/dist/types/data/job_posting_service_latest.js +253 -0
- package/dist/types/data/job_posting_service_latest.js.map +1 -0
- package/dist/types/data/shared_pickle_output_latest.cjs +107 -0
- package/dist/types/data/shared_pickle_output_latest.cjs.map +1 -0
- package/dist/types/data/shared_pickle_output_latest.d.cts +2 -0
- package/dist/types/data/shared_pickle_output_latest.d.ts +2 -0
- package/dist/types/data/shared_pickle_output_latest.js +73 -0
- package/dist/types/data/shared_pickle_output_latest.js.map +1 -0
- package/dist/types/displayText.errors.cjs +44 -0
- package/dist/types/displayText.errors.cjs.map +1 -0
- package/dist/types/displayText.errors.d.cts +8 -0
- package/dist/types/displayText.errors.d.ts +8 -0
- package/dist/types/displayText.errors.js +18 -0
- package/dist/types/displayText.errors.js.map +1 -0
- package/package.json +19 -7
- package/dist/AmbitBold-3SZZPYLH.otf +0 -0
- package/dist/AmbitBoldItalic-JSHFTN4A.otf +0 -0
- package/dist/AmbitRegular-MB5U7O3L.otf +0 -0
- package/dist/app/layout.cjs.map +0 -1
- package/dist/app/layout.css +0 -1423
- package/dist/app/layout.css.map +0 -1
- package/dist/app/layout.d.cts +0 -11
- package/dist/app/layout.d.ts +0 -11
- package/dist/app/layout.js +0 -36
- package/dist/app/layout.js.map +0 -1
- package/dist/app/page.cjs +0 -1607
- package/dist/app/page.cjs.map +0 -1
- package/dist/app/page.d.cts +0 -5
- package/dist/app/page.d.ts +0 -5
- package/dist/app/page.js +0 -1581
- package/dist/app/page.js.map +0 -1
- package/dist/assets/fonts/AmbitBold.cjs +0 -3
- package/dist/assets/fonts/AmbitBold.cjs.map +0 -1
- package/dist/assets/fonts/AmbitBold.d.cts +0 -2
- package/dist/assets/fonts/AmbitBold.d.ts +0 -2
- package/dist/assets/fonts/AmbitBold.js +0 -6
- package/dist/assets/fonts/AmbitBold.js.map +0 -1
- package/dist/assets/fonts/AmbitBoldItalic.cjs +0 -3
- package/dist/assets/fonts/AmbitBoldItalic.cjs.map +0 -1
- package/dist/assets/fonts/AmbitBoldItalic.d.cts +0 -2
- package/dist/assets/fonts/AmbitBoldItalic.d.ts +0 -2
- package/dist/assets/fonts/AmbitBoldItalic.js +0 -6
- package/dist/assets/fonts/AmbitBoldItalic.js.map +0 -1
- package/dist/assets/fonts/AmbitRegular.cjs +0 -3
- package/dist/assets/fonts/AmbitRegular.cjs.map +0 -1
- package/dist/assets/fonts/AmbitRegular.d.cts +0 -2
- package/dist/assets/fonts/AmbitRegular.d.ts +0 -2
- package/dist/assets/fonts/AmbitRegular.js +0 -6
- package/dist/assets/fonts/AmbitRegular.js.map +0 -1
- package/dist/components/demos/ComboboxDemo.cjs +0 -814
- package/dist/components/demos/ComboboxDemo.cjs.map +0 -1
- package/dist/components/demos/ComboboxDemo.d.cts +0 -5
- package/dist/components/demos/ComboboxDemo.d.ts +0 -5
- package/dist/components/demos/ComboboxDemo.js +0 -786
- package/dist/components/demos/ComboboxDemo.js.map +0 -1
- package/dist/components/demos/CounterDemo.cjs +0 -270
- package/dist/components/demos/CounterDemo.cjs.map +0 -1
- package/dist/components/demos/CounterDemo.d.cts +0 -5
- package/dist/components/demos/CounterDemo.d.ts +0 -5
- package/dist/components/demos/CounterDemo.js +0 -238
- package/dist/components/demos/CounterDemo.js.map +0 -1
- package/dist/components/demos/InputDemo.cjs +0 -225
- package/dist/components/demos/InputDemo.cjs.map +0 -1
- package/dist/components/demos/InputDemo.d.cts +0 -5
- package/dist/components/demos/InputDemo.d.ts +0 -5
- package/dist/components/demos/InputDemo.js +0 -192
- package/dist/components/demos/InputDemo.js.map +0 -1
- package/dist/components/demos/MapComponentDemo.cjs +0 -129
- package/dist/components/demos/MapComponentDemo.cjs.map +0 -1
- package/dist/components/demos/MapComponentDemo.d.cts +0 -5
- package/dist/components/demos/MapComponentDemo.d.ts +0 -5
- package/dist/components/demos/MapComponentDemo.js +0 -107
- package/dist/components/demos/MapComponentDemo.js.map +0 -1
- package/dist/components/demos/PlacesQueryInputDemo.cjs +0 -341
- package/dist/components/demos/PlacesQueryInputDemo.cjs.map +0 -1
- package/dist/components/demos/PlacesQueryInputDemo.d.cts +0 -5
- package/dist/components/demos/PlacesQueryInputDemo.d.ts +0 -5
- package/dist/components/demos/PlacesQueryInputDemo.js +0 -309
- package/dist/components/demos/PlacesQueryInputDemo.js.map +0 -1
- package/dist/components/demos/SelectDemo.cjs +0 -365
- package/dist/components/demos/SelectDemo.cjs.map +0 -1
- package/dist/components/demos/SelectDemo.d.cts +0 -5
- package/dist/components/demos/SelectDemo.d.ts +0 -5
- package/dist/components/demos/SelectDemo.js +0 -337
- package/dist/components/demos/SelectDemo.js.map +0 -1
- package/dist/components/demos/index.cjs +0 -1600
- package/dist/components/demos/index.cjs.map +0 -1
- package/dist/components/demos/index.d.cts +0 -5
- package/dist/components/demos/index.d.ts +0 -5
- package/dist/components/demos/index.js +0 -1574
- package/dist/components/demos/index.js.map +0 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// src/components/ui/LinkButton.tsx
|
|
2
|
+
import Link from "next/link";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
var LinkButton = ({
|
|
5
|
+
disabled = false,
|
|
6
|
+
useAnchor = false,
|
|
7
|
+
children,
|
|
8
|
+
href,
|
|
9
|
+
...props
|
|
10
|
+
}) => {
|
|
11
|
+
const Component = useAnchor ? "a" : Link;
|
|
12
|
+
return /* @__PURE__ */ jsx(
|
|
13
|
+
Component,
|
|
14
|
+
{
|
|
15
|
+
href,
|
|
16
|
+
className: `inline-flex items-center justify-center gap-2 rounded-full text-sm font-bold leading-tight text-black underline outline-dashed outline-2 outline-offset-2 outline-transparent hover:text-purple-100 focus:text-black focus:outline-purple-100 active:text-purple-80 ${disabled ? "pointer-events-none text-grey-40" : ""} `,
|
|
17
|
+
...disabled && { "aria-disabled": true, tabIndex: -1 },
|
|
18
|
+
...props,
|
|
19
|
+
children
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// src/components/company/CompanyInformation.tsx
|
|
25
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
26
|
+
function CompanyInformation({
|
|
27
|
+
name,
|
|
28
|
+
how,
|
|
29
|
+
mission,
|
|
30
|
+
wow,
|
|
31
|
+
website
|
|
32
|
+
}) {
|
|
33
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
34
|
+
/* @__PURE__ */ jsxs(
|
|
35
|
+
"h2",
|
|
36
|
+
{
|
|
37
|
+
"data-testid": "company-name",
|
|
38
|
+
className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg",
|
|
39
|
+
children: [
|
|
40
|
+
"About ",
|
|
41
|
+
name
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
),
|
|
45
|
+
how && /* @__PURE__ */ jsx2("p", { "data-testid": "company-information", className: "text-base text-grey-80", children: how }),
|
|
46
|
+
mission && /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
|
|
47
|
+
/* @__PURE__ */ jsx2("span", { children: "\u{1F680}" }),
|
|
48
|
+
/* @__PURE__ */ jsxs("p", { className: "text-base text-grey-80", children: [
|
|
49
|
+
/* @__PURE__ */ jsx2("span", { className: "pr-1 font-bold", children: "Mission" }),
|
|
50
|
+
mission
|
|
51
|
+
] })
|
|
52
|
+
] }),
|
|
53
|
+
wow && /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
|
|
54
|
+
/* @__PURE__ */ jsx2("span", { children: "\u{1F31F}" }),
|
|
55
|
+
/* @__PURE__ */ jsxs("p", { className: "text-base text-grey-80", children: [
|
|
56
|
+
/* @__PURE__ */ jsx2("span", { className: "pr-1 font-bold", children: "Wow Factor" }),
|
|
57
|
+
wow
|
|
58
|
+
] })
|
|
59
|
+
] }),
|
|
60
|
+
website && /* @__PURE__ */ jsx2("div", { className: "pt-2", children: /* @__PURE__ */ jsx2(
|
|
61
|
+
LinkButton,
|
|
62
|
+
{
|
|
63
|
+
"data-testid": "company-website-link",
|
|
64
|
+
href: website,
|
|
65
|
+
target: "_blank",
|
|
66
|
+
rel: "noopener noreferrer",
|
|
67
|
+
children: "Website"
|
|
68
|
+
}
|
|
69
|
+
) })
|
|
70
|
+
] });
|
|
71
|
+
}
|
|
72
|
+
export {
|
|
73
|
+
CompanyInformation
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=CompanyInformation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ui/LinkButton.tsx","../../../src/components/company/CompanyInformation.tsx"],"sourcesContent":["import Link from 'next/link'\nimport React from 'react'\n\nexport interface LinkButtonProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'>,\n Omit<React.ComponentProps<typeof Link>, 'href'> {\n disabled?: boolean\n href: string // Ensures href is always required and compatible with both\n useAnchor?: boolean // New prop to decide between <a> and <Link>\n}\n\n/**\n * A custom button component that can render a link using either\n * Next.js's Link component or a regular <a> tag based on a prop.\n *\n * @component\n * @example\n * ```tsx\n * <LinkButton href=\"/about\">About</LinkButton>\n * ```\n *\n * @param {object} props - The component props.\n * @param {boolean} [props.disabled=false] - Determines if the button is disabled.\n * @param {boolean} [props.useAnchor=false] - Whether to render a regular <a> instead of Next.js Link.\n * @param {React.ReactNode} props.children - The content of the button.\n * @param {string} props.href - The URL the button points to.\n * @returns {JSX.Element} The rendered LinkButton component.\n */\nexport const LinkButton = ({\n disabled = false,\n useAnchor = false,\n children,\n href,\n ...props\n}: LinkButtonProps) => {\n const Component = useAnchor ? 'a' : Link\n\n return (\n <Component\n href={href}\n className={`inline-flex items-center justify-center gap-2 rounded-full text-sm font-bold leading-tight text-black underline outline-dashed outline-2 outline-offset-2 outline-transparent hover:text-purple-100 focus:text-black focus:outline-purple-100 active:text-purple-80 ${disabled ? 'pointer-events-none text-grey-40' : ''} `}\n {...(disabled && { 'aria-disabled': true, tabIndex: -1 })}\n {...props}\n >\n {children}\n </Component>\n )\n}\n","import { LinkButton } from '@/components/ui/LinkButton'\n\nexport type CompanyInformationProps = {\n name: string\n how?: string\n mission?: string\n wow?: string\n website?: string\n}\n\nexport function CompanyInformation({\n name,\n how,\n mission,\n wow,\n website,\n}: Readonly<CompanyInformationProps>) {\n return (\n <div className=\"flex flex-col gap-2\">\n <h2\n data-testid=\"company-name\"\n className=\"break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg\"\n >\n About {name}\n </h2>\n\n {how && (\n <p data-testid=\"company-information\" className=\"text-base text-grey-80\">\n {how}\n </p>\n )}\n\n {mission && (\n <div className=\"flex gap-2\">\n <span>🚀</span>\n <p className=\"text-base text-grey-80\">\n <span className=\"pr-1 font-bold\">Mission</span>\n {mission}\n </p>\n </div>\n )}\n\n {wow && (\n <div className=\"flex gap-2\">\n <span>🌟</span>\n <p className=\"text-base text-grey-80\">\n <span className=\"pr-1 font-bold\">Wow Factor</span>\n {wow}\n </p>\n </div>\n )}\n\n {website && (\n <div className=\"pt-2\">\n <LinkButton\n data-testid=\"company-website-link\"\n href={website}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Website\n </LinkButton>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":";AAAA,OAAO,UAAU;AAsCb;AAVG,IAAM,aAAa,CAAC;AAAA,EACzB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAuB;AACrB,QAAM,YAAY,YAAY,MAAM;AAEpC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,uQAAuQ,WAAW,qCAAqC,EAAE;AAAA,MACnU,GAAI,YAAY,EAAE,iBAAiB,MAAM,UAAU,GAAG;AAAA,MACtD,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;AC5BM,SAQE,OAAAA,MARF;AATC,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsC;AACpC,SACE,qBAAC,SAAI,WAAU,uBACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,eAAY;AAAA,QACZ,WAAU;AAAA,QACX;AAAA;AAAA,UACQ;AAAA;AAAA;AAAA,IACT;AAAA,IAEC,OACC,gBAAAA,KAAC,OAAE,eAAY,uBAAsB,WAAU,0BAC5C,eACH;AAAA,IAGD,WACC,qBAAC,SAAI,WAAU,cACb;AAAA,sBAAAA,KAAC,UAAK,uBAAE;AAAA,MACR,qBAAC,OAAE,WAAU,0BACX;AAAA,wBAAAA,KAAC,UAAK,WAAU,kBAAiB,qBAAO;AAAA,QACvC;AAAA,SACH;AAAA,OACF;AAAA,IAGD,OACC,qBAAC,SAAI,WAAU,cACb;AAAA,sBAAAA,KAAC,UAAK,uBAAE;AAAA,MACR,qBAAC,OAAE,WAAU,0BACX;AAAA,wBAAAA,KAAC,UAAK,WAAU,kBAAiB,wBAAU;AAAA,QAC1C;AAAA,SACH;AAAA,OACF;AAAA,IAGD,WACC,gBAAAA,KAAC,SAAI,WAAU,QACb,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,eAAY;AAAA,QACZ,MAAM;AAAA,QACN,QAAO;AAAA,QACP,KAAI;AAAA,QACL;AAAA;AAAA,IAED,GACF;AAAA,KAEJ;AAEJ;","names":["jsx"]}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
|
|
31
|
+
// src/components/company/CompanyTake.tsx
|
|
32
|
+
var CompanyTake_exports = {};
|
|
33
|
+
__export(CompanyTake_exports, {
|
|
34
|
+
CompanyTake: () => CompanyTake
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(CompanyTake_exports);
|
|
37
|
+
|
|
38
|
+
// src/components/primitives/avatar.tsx
|
|
39
|
+
var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"), 1);
|
|
40
|
+
var React = __toESM(require("react"), 1);
|
|
41
|
+
|
|
42
|
+
// src/lib/utils.ts
|
|
43
|
+
var import_clsx = require("clsx");
|
|
44
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
45
|
+
function cn(...inputs) {
|
|
46
|
+
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// src/components/primitives/avatar.tsx
|
|
50
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
51
|
+
var AvatarBase = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
52
|
+
AvatarPrimitive.Root,
|
|
53
|
+
{
|
|
54
|
+
ref,
|
|
55
|
+
className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
|
|
56
|
+
...props
|
|
57
|
+
}
|
|
58
|
+
));
|
|
59
|
+
AvatarBase.displayName = AvatarPrimitive.Root.displayName;
|
|
60
|
+
var AvatarImage = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
61
|
+
AvatarPrimitive.Image,
|
|
62
|
+
{
|
|
63
|
+
ref,
|
|
64
|
+
className: cn("aspect-square h-full w-full", className),
|
|
65
|
+
"data-testid": "job-card-avatar",
|
|
66
|
+
...props
|
|
67
|
+
}
|
|
68
|
+
));
|
|
69
|
+
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
70
|
+
var AvatarFallback = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
71
|
+
AvatarPrimitive.Fallback,
|
|
72
|
+
{
|
|
73
|
+
ref,
|
|
74
|
+
className: cn(
|
|
75
|
+
"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",
|
|
76
|
+
className
|
|
77
|
+
),
|
|
78
|
+
...props
|
|
79
|
+
}
|
|
80
|
+
));
|
|
81
|
+
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
82
|
+
|
|
83
|
+
// src/components/ui/Avatar.tsx
|
|
84
|
+
var import_cva = require("cva");
|
|
85
|
+
var import_link = __toESM(require("next/link"), 1);
|
|
86
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
87
|
+
function Avatar({ size, src, href, name, ...linkProps }) {
|
|
88
|
+
const fallbackShort = name?.slice(0, 2);
|
|
89
|
+
const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
|
|
90
|
+
const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
|
|
91
|
+
const renderAvatar = () => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(AvatarBase, { className: avatarVariants({ size }), children: [
|
|
92
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(AvatarImage, { src, alt: name }),
|
|
93
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(AvatarFallback, { children: fallback?.toUpperCase() })
|
|
94
|
+
] });
|
|
95
|
+
if (href) {
|
|
96
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_link.default, { href, ...linkProps, children: renderAvatar() });
|
|
97
|
+
}
|
|
98
|
+
return renderAvatar();
|
|
99
|
+
}
|
|
100
|
+
var avatarVariants = (0, import_cva.cva)("ring ring-white ring-2", {
|
|
101
|
+
variants: {
|
|
102
|
+
size: {
|
|
103
|
+
large: "h-16 w-16",
|
|
104
|
+
medium: "h-10 w-10",
|
|
105
|
+
small: "h-8 w-8"
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
defaultVariants: {
|
|
109
|
+
size: "medium"
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
// src/components/company/CompanyTake.tsx
|
|
114
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
115
|
+
function CompanyTake({ content, avatarSrc }) {
|
|
116
|
+
if (!content) return null;
|
|
117
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
118
|
+
"div",
|
|
119
|
+
{
|
|
120
|
+
"data-testid": "company-take",
|
|
121
|
+
className: "align-center w-full justify-start rounded-2xl bg-green-90 p-6",
|
|
122
|
+
children: [
|
|
123
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-lg font-bold text-white sm:text-xl", children: "The Real Dill \u2618\uFE0F" }),
|
|
124
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "mt-2 flex items-center justify-start", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-sm font-normal text-grey-10", children: content }) }),
|
|
125
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "mt-8 flex w-full items-center gap-3", children: [
|
|
126
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Avatar, { name: "Jon Lee", src: avatarSrc }),
|
|
127
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex flex-col flex-wrap items-start", children: [
|
|
128
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-sm font-bold text-white", children: "Jon Lee, PT, DPT, OCS, FAAOMPT, MBA" }),
|
|
129
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: "text-xs font-normal text-grey-30", children: "Pickle co-founder" })
|
|
130
|
+
] })
|
|
131
|
+
] })
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
137
|
+
0 && (module.exports = {
|
|
138
|
+
CompanyTake
|
|
139
|
+
});
|
|
140
|
+
//# sourceMappingURL=CompanyTake.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/company/CompanyTake.tsx","../../../src/components/primitives/avatar.tsx","../../../src/lib/utils.ts","../../../src/components/ui/Avatar.tsx"],"sourcesContent":["'use client'\n\nimport { Avatar } from '@/components/ui/Avatar'\n\ninterface Props {\n content?: string\n avatarSrc?: string\n}\n\nexport function CompanyTake({ content, avatarSrc }: Readonly<Props>) {\n if (!content) return null\n\n return (\n <div\n data-testid=\"company-take\"\n className=\"align-center w-full justify-start rounded-2xl bg-green-90 p-6\"\n >\n <p className=\"text-lg font-bold text-white sm:text-xl\">The Real Dill ☘️</p>\n <div className=\"mt-2 flex items-center justify-start\">\n <p className=\"text-sm font-normal text-grey-10\">{content}</p>\n </div>\n <div className=\"mt-8 flex w-full items-center gap-3\">\n <Avatar name=\"Jon Lee\" src={avatarSrc} />\n <div className=\"flex flex-col flex-wrap items-start\">\n <p className=\"text-sm font-bold text-white\">Jon Lee, PT, DPT, OCS, FAAOMPT, MBA</p>\n <p className=\"text-xs font-normal text-grey-30\">Pickle co-founder</p>\n </div>\n </div>\n </div>\n )\n}\n","'use client'\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\n/**\n * Adapted from Radix Primitives Avatar\n * https://ui.shadcn.com/docs/components/avatar\n * Changes made to support custom size prop and to export Avatar wrapper component\n */\n\nexport const AvatarBase = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn('relative flex shrink-0 overflow-hidden rounded-full', className)}\n {...props}\n />\n))\nAvatarBase.displayName = AvatarPrimitive.Root.displayName\n\nexport const AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn('aspect-square h-full w-full', className)}\n data-testid=\"job-card-avatar\"\n {...props}\n />\n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nexport const AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n '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',\n className\n )}\n {...props}\n />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { AvatarBase, AvatarFallback, AvatarImage } from '@/components/primitives/avatar'\nimport { cva, VariantProps } from 'cva'\nimport Link from 'next/link'\nimport { ComponentProps } from 'react'\n\nexport type AvatarProps = VariantProps<typeof avatarVariants> &\n Omit<ComponentProps<'a'>, 'href'> & {\n src?: string\n href?: string\n name?: string\n }\n\nexport function Avatar({ size, src, href, name, ...linkProps }: AvatarProps) {\n const fallbackShort = name?.slice(0, 2)\n const fallbackWords = name\n ?.split(' ')\n .map((n) => n[0])\n .join('')\n .slice(0, 2)\n\n const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort\n\n const renderAvatar = () => (\n <AvatarBase className={avatarVariants({ size })}>\n <AvatarImage src={src} alt={name} />\n <AvatarFallback>{fallback?.toUpperCase()}</AvatarFallback>\n </AvatarBase>\n )\n\n if (href) {\n return (\n <Link href={href} {...linkProps}>\n {renderAvatar()}\n </Link>\n )\n }\n\n return renderAvatar()\n}\n\nexport const avatarVariants = cva('ring ring-white ring-2', {\n variants: {\n size: {\n large: 'h-16 w-16',\n medium: 'h-10 w-10',\n small: 'h-8 w-8',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,sBAAiC;AACjC,YAAuB;;;ACHvB,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;ADYE;AAJK,IAAM,aAAmB,iBAG9B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW,GAAG,uDAAuD,SAAS;AAAA,IAC7E,GAAG;AAAA;AACN,CACD;AACD,WAAW,cAA8B,qBAAK;AAEvC,IAAM,cAAoB,iBAG/B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW,GAAG,+BAA+B,SAAS;AAAA,IACtD,eAAY;AAAA,IACX,GAAG;AAAA;AACN,CACD;AACD,YAAY,cAA8B,sBAAM;AAEzC,IAAM,iBAAuB,iBAGlC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,eAAe,cAA8B,yBAAS;;;AElDtD,iBAAkC;AAClC,kBAAiB;AAqBb,IAAAA,sBAAA;AAXG,SAAS,OAAO,EAAE,MAAM,KAAK,MAAM,MAAM,GAAG,UAAU,GAAgB;AAC3E,QAAM,gBAAgB,MAAM,MAAM,GAAG,CAAC;AACtC,QAAM,gBAAgB,MAClB,MAAM,GAAG,EACV,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EACf,KAAK,EAAE,EACP,MAAM,GAAG,CAAC;AAEb,QAAM,WAAW,iBAAiB,cAAc,SAAS,IAAI,gBAAgB;AAE7E,QAAM,eAAe,MACnB,8CAAC,cAAW,WAAW,eAAe,EAAE,KAAK,CAAC,GAC5C;AAAA,iDAAC,eAAY,KAAU,KAAK,MAAM;AAAA,IAClC,6CAAC,kBAAgB,oBAAU,YAAY,GAAE;AAAA,KAC3C;AAGF,MAAI,MAAM;AACR,WACE,6CAAC,YAAAC,SAAA,EAAK,MAAa,GAAG,WACnB,uBAAa,GAChB;AAAA,EAEJ;AAEA,SAAO,aAAa;AACtB;AAEO,IAAM,qBAAiB,gBAAI,0BAA0B;AAAA,EAC1D,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;;;AHlCK,IAAAC,sBAAA;AARC,SAAS,YAAY,EAAE,SAAS,UAAU,GAAoB;AACnE,MAAI,CAAC,QAAS,QAAO;AAErB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAY;AAAA,MACZ,WAAU;AAAA,MAEV;AAAA,qDAAC,OAAE,WAAU,2CAA0C,wCAAgB;AAAA,QACvE,6CAAC,SAAI,WAAU,wCACb,uDAAC,OAAE,WAAU,oCAAoC,mBAAQ,GAC3D;AAAA,QACA,8CAAC,SAAI,WAAU,uCACb;AAAA,uDAAC,UAAO,MAAK,WAAU,KAAK,WAAW;AAAA,UACvC,8CAAC,SAAI,WAAU,uCACb;AAAA,yDAAC,OAAE,WAAU,gCAA+B,iDAAmC;AAAA,YAC/E,6CAAC,OAAE,WAAU,oCAAmC,+BAAiB;AAAA,aACnE;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ;","names":["import_jsx_runtime","Link","import_jsx_runtime"]}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/components/primitives/avatar.tsx
|
|
4
|
+
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
|
|
7
|
+
// src/lib/utils.ts
|
|
8
|
+
import { clsx } from "clsx";
|
|
9
|
+
import { twMerge } from "tailwind-merge";
|
|
10
|
+
function cn(...inputs) {
|
|
11
|
+
return twMerge(clsx(inputs));
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// src/components/primitives/avatar.tsx
|
|
15
|
+
import { jsx } from "react/jsx-runtime";
|
|
16
|
+
var AvatarBase = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
17
|
+
AvatarPrimitive.Root,
|
|
18
|
+
{
|
|
19
|
+
ref,
|
|
20
|
+
className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
|
|
21
|
+
...props
|
|
22
|
+
}
|
|
23
|
+
));
|
|
24
|
+
AvatarBase.displayName = AvatarPrimitive.Root.displayName;
|
|
25
|
+
var AvatarImage = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
26
|
+
AvatarPrimitive.Image,
|
|
27
|
+
{
|
|
28
|
+
ref,
|
|
29
|
+
className: cn("aspect-square h-full w-full", className),
|
|
30
|
+
"data-testid": "job-card-avatar",
|
|
31
|
+
...props
|
|
32
|
+
}
|
|
33
|
+
));
|
|
34
|
+
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
35
|
+
var AvatarFallback = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
36
|
+
AvatarPrimitive.Fallback,
|
|
37
|
+
{
|
|
38
|
+
ref,
|
|
39
|
+
className: cn(
|
|
40
|
+
"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",
|
|
41
|
+
className
|
|
42
|
+
),
|
|
43
|
+
...props
|
|
44
|
+
}
|
|
45
|
+
));
|
|
46
|
+
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
47
|
+
|
|
48
|
+
// src/components/ui/Avatar.tsx
|
|
49
|
+
import { cva } from "cva";
|
|
50
|
+
import Link from "next/link";
|
|
51
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
52
|
+
function Avatar({ size, src, href, name, ...linkProps }) {
|
|
53
|
+
const fallbackShort = name?.slice(0, 2);
|
|
54
|
+
const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
|
|
55
|
+
const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
|
|
56
|
+
const renderAvatar = () => /* @__PURE__ */ jsxs(AvatarBase, { className: avatarVariants({ size }), children: [
|
|
57
|
+
/* @__PURE__ */ jsx2(AvatarImage, { src, alt: name }),
|
|
58
|
+
/* @__PURE__ */ jsx2(AvatarFallback, { children: fallback?.toUpperCase() })
|
|
59
|
+
] });
|
|
60
|
+
if (href) {
|
|
61
|
+
return /* @__PURE__ */ jsx2(Link, { href, ...linkProps, children: renderAvatar() });
|
|
62
|
+
}
|
|
63
|
+
return renderAvatar();
|
|
64
|
+
}
|
|
65
|
+
var avatarVariants = cva("ring ring-white ring-2", {
|
|
66
|
+
variants: {
|
|
67
|
+
size: {
|
|
68
|
+
large: "h-16 w-16",
|
|
69
|
+
medium: "h-10 w-10",
|
|
70
|
+
small: "h-8 w-8"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
defaultVariants: {
|
|
74
|
+
size: "medium"
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// src/components/company/CompanyTake.tsx
|
|
79
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
80
|
+
function CompanyTake({ content, avatarSrc }) {
|
|
81
|
+
if (!content) return null;
|
|
82
|
+
return /* @__PURE__ */ jsxs2(
|
|
83
|
+
"div",
|
|
84
|
+
{
|
|
85
|
+
"data-testid": "company-take",
|
|
86
|
+
className: "align-center w-full justify-start rounded-2xl bg-green-90 p-6",
|
|
87
|
+
children: [
|
|
88
|
+
/* @__PURE__ */ jsx3("p", { className: "text-lg font-bold text-white sm:text-xl", children: "The Real Dill \u2618\uFE0F" }),
|
|
89
|
+
/* @__PURE__ */ jsx3("div", { className: "mt-2 flex items-center justify-start", children: /* @__PURE__ */ jsx3("p", { className: "text-sm font-normal text-grey-10", children: content }) }),
|
|
90
|
+
/* @__PURE__ */ jsxs2("div", { className: "mt-8 flex w-full items-center gap-3", children: [
|
|
91
|
+
/* @__PURE__ */ jsx3(Avatar, { name: "Jon Lee", src: avatarSrc }),
|
|
92
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex flex-col flex-wrap items-start", children: [
|
|
93
|
+
/* @__PURE__ */ jsx3("p", { className: "text-sm font-bold text-white", children: "Jon Lee, PT, DPT, OCS, FAAOMPT, MBA" }),
|
|
94
|
+
/* @__PURE__ */ jsx3("p", { className: "text-xs font-normal text-grey-30", children: "Pickle co-founder" })
|
|
95
|
+
] })
|
|
96
|
+
] })
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
export {
|
|
102
|
+
CompanyTake
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=CompanyTake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/primitives/avatar.tsx","../../../src/lib/utils.ts","../../../src/components/ui/Avatar.tsx","../../../src/components/company/CompanyTake.tsx"],"sourcesContent":["'use client'\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\n/**\n * Adapted from Radix Primitives Avatar\n * https://ui.shadcn.com/docs/components/avatar\n * Changes made to support custom size prop and to export Avatar wrapper component\n */\n\nexport const AvatarBase = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn('relative flex shrink-0 overflow-hidden rounded-full', className)}\n {...props}\n />\n))\nAvatarBase.displayName = AvatarPrimitive.Root.displayName\n\nexport const AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn('aspect-square h-full w-full', className)}\n data-testid=\"job-card-avatar\"\n {...props}\n />\n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nexport const AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n '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',\n className\n )}\n {...props}\n />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { AvatarBase, AvatarFallback, AvatarImage } from '@/components/primitives/avatar'\nimport { cva, VariantProps } from 'cva'\nimport Link from 'next/link'\nimport { ComponentProps } from 'react'\n\nexport type AvatarProps = VariantProps<typeof avatarVariants> &\n Omit<ComponentProps<'a'>, 'href'> & {\n src?: string\n href?: string\n name?: string\n }\n\nexport function Avatar({ size, src, href, name, ...linkProps }: AvatarProps) {\n const fallbackShort = name?.slice(0, 2)\n const fallbackWords = name\n ?.split(' ')\n .map((n) => n[0])\n .join('')\n .slice(0, 2)\n\n const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort\n\n const renderAvatar = () => (\n <AvatarBase className={avatarVariants({ size })}>\n <AvatarImage src={src} alt={name} />\n <AvatarFallback>{fallback?.toUpperCase()}</AvatarFallback>\n </AvatarBase>\n )\n\n if (href) {\n return (\n <Link href={href} {...linkProps}>\n {renderAvatar()}\n </Link>\n )\n }\n\n return renderAvatar()\n}\n\nexport const avatarVariants = cva('ring ring-white ring-2', {\n variants: {\n size: {\n large: 'h-16 w-16',\n medium: 'h-10 w-10',\n small: 'h-8 w-8',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n})\n","'use client'\n\nimport { Avatar } from '@/components/ui/Avatar'\n\ninterface Props {\n content?: string\n avatarSrc?: string\n}\n\nexport function CompanyTake({ content, avatarSrc }: Readonly<Props>) {\n if (!content) return null\n\n return (\n <div\n data-testid=\"company-take\"\n className=\"align-center w-full justify-start rounded-2xl bg-green-90 p-6\"\n >\n <p className=\"text-lg font-bold text-white sm:text-xl\">The Real Dill ☘️</p>\n <div className=\"mt-2 flex items-center justify-start\">\n <p className=\"text-sm font-normal text-grey-10\">{content}</p>\n </div>\n <div className=\"mt-8 flex w-full items-center gap-3\">\n <Avatar name=\"Jon Lee\" src={avatarSrc} />\n <div className=\"flex flex-col flex-wrap items-start\">\n <p className=\"text-sm font-bold text-white\">Jon Lee, PT, DPT, OCS, FAAOMPT, MBA</p>\n <p className=\"text-xs font-normal text-grey-30\">Pickle co-founder</p>\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":";;;AAEA,YAAY,qBAAqB;AACjC,YAAY,WAAW;;;ACHvB,SAA0B,YAAY;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ADYE;AAJK,IAAM,aAAmB,iBAG9B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW,GAAG,uDAAuD,SAAS;AAAA,IAC7E,GAAG;AAAA;AACN,CACD;AACD,WAAW,cAA8B,qBAAK;AAEvC,IAAM,cAAoB,iBAG/B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW,GAAG,+BAA+B,SAAS;AAAA,IACtD,eAAY;AAAA,IACX,GAAG;AAAA;AACN,CACD;AACD,YAAY,cAA8B,sBAAM;AAEzC,IAAM,iBAAuB,iBAGlC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B;AAAA,EAAiB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,eAAe,cAA8B,yBAAS;;;AElDtD,SAAS,WAAyB;AAClC,OAAO,UAAU;AAqBb,SACE,OAAAA,MADF;AAXG,SAAS,OAAO,EAAE,MAAM,KAAK,MAAM,MAAM,GAAG,UAAU,GAAgB;AAC3E,QAAM,gBAAgB,MAAM,MAAM,GAAG,CAAC;AACtC,QAAM,gBAAgB,MAClB,MAAM,GAAG,EACV,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EACf,KAAK,EAAE,EACP,MAAM,GAAG,CAAC;AAEb,QAAM,WAAW,iBAAiB,cAAc,SAAS,IAAI,gBAAgB;AAE7E,QAAM,eAAe,MACnB,qBAAC,cAAW,WAAW,eAAe,EAAE,KAAK,CAAC,GAC5C;AAAA,oBAAAA,KAAC,eAAY,KAAU,KAAK,MAAM;AAAA,IAClC,gBAAAA,KAAC,kBAAgB,oBAAU,YAAY,GAAE;AAAA,KAC3C;AAGF,MAAI,MAAM;AACR,WACE,gBAAAA,KAAC,QAAK,MAAa,GAAG,WACnB,uBAAa,GAChB;AAAA,EAEJ;AAEA,SAAO,aAAa;AACtB;AAEO,IAAM,iBAAiB,IAAI,0BAA0B;AAAA,EAC1D,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;;;AClCK,gBAAAC,MAME,QAAAC,aANF;AARC,SAAS,YAAY,EAAE,SAAS,UAAU,GAAoB;AACnE,MAAI,CAAC,QAAS,QAAO;AAErB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,eAAY;AAAA,MACZ,WAAU;AAAA,MAEV;AAAA,wBAAAD,KAAC,OAAE,WAAU,2CAA0C,wCAAgB;AAAA,QACvE,gBAAAA,KAAC,SAAI,WAAU,wCACb,0BAAAA,KAAC,OAAE,WAAU,oCAAoC,mBAAQ,GAC3D;AAAA,QACA,gBAAAC,MAAC,SAAI,WAAU,uCACb;AAAA,0BAAAD,KAAC,UAAO,MAAK,WAAU,KAAK,WAAW;AAAA,UACvC,gBAAAC,MAAC,SAAI,WAAU,uCACb;AAAA,4BAAAD,KAAC,OAAE,WAAU,gCAA+B,iDAAmC;AAAA,YAC/E,gBAAAA,KAAC,OAAE,WAAU,oCAAmC,+BAAiB;AAAA,aACnE;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ;","names":["jsx","jsx","jsxs"]}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/components/jobPost/JobDescription.tsx
|
|
31
|
+
var JobDescription_exports = {};
|
|
32
|
+
__export(JobDescription_exports, {
|
|
33
|
+
JobDescription: () => JobDescription
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(JobDescription_exports);
|
|
36
|
+
|
|
37
|
+
// src/components/ui/ReadMore.tsx
|
|
38
|
+
var import_react2 = require("react");
|
|
39
|
+
var import_react_markdown = __toESM(require("react-markdown"), 1);
|
|
40
|
+
|
|
41
|
+
// src/lib/utils.ts
|
|
42
|
+
var import_clsx = require("clsx");
|
|
43
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
44
|
+
function cn(...inputs) {
|
|
45
|
+
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// src/components/ui/Button.tsx
|
|
49
|
+
var import_react_slot = require("@radix-ui/react-slot");
|
|
50
|
+
var import_cva = require("cva");
|
|
51
|
+
var import_react = require("react");
|
|
52
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
53
|
+
var Button = (0, import_react.forwardRef)(
|
|
54
|
+
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
55
|
+
const Component = asChild ? import_react_slot.Slot : "button";
|
|
56
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
57
|
+
Component,
|
|
58
|
+
{
|
|
59
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
60
|
+
ref,
|
|
61
|
+
...props
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
Button.displayName = "Button";
|
|
67
|
+
var buttonVariants = (0, import_cva.cva)(
|
|
68
|
+
[
|
|
69
|
+
"flex",
|
|
70
|
+
"items-center",
|
|
71
|
+
"justify-center",
|
|
72
|
+
"gap-2",
|
|
73
|
+
"rounded-full",
|
|
74
|
+
"font-bold",
|
|
75
|
+
"outline-2",
|
|
76
|
+
"outline-offset-2",
|
|
77
|
+
"outline-dashed",
|
|
78
|
+
"outline-transparent"
|
|
79
|
+
],
|
|
80
|
+
{
|
|
81
|
+
variants: {
|
|
82
|
+
variant: {
|
|
83
|
+
neutral: [
|
|
84
|
+
"bg-black",
|
|
85
|
+
"text-white",
|
|
86
|
+
"hover:bg-grey-90",
|
|
87
|
+
"active:bg-grey-80",
|
|
88
|
+
"focus:outline-purple-100",
|
|
89
|
+
"disabled:text-grey-40",
|
|
90
|
+
"disabled:bg-grey-10"
|
|
91
|
+
],
|
|
92
|
+
primary: [
|
|
93
|
+
"bg-pickle-100",
|
|
94
|
+
"text-black",
|
|
95
|
+
"hover:bg-pickle-80",
|
|
96
|
+
"active:bg-pickle-60",
|
|
97
|
+
"focus:outline-purple-100",
|
|
98
|
+
"disabled:text-grey-40",
|
|
99
|
+
"disabled:bg-grey-10"
|
|
100
|
+
],
|
|
101
|
+
secondary: [
|
|
102
|
+
"bg-green-80",
|
|
103
|
+
"text-white",
|
|
104
|
+
"hover:bg-green-90",
|
|
105
|
+
"active:bg-green-100",
|
|
106
|
+
"focus:outline-pickle-100",
|
|
107
|
+
"disabled:text-grey-40",
|
|
108
|
+
"disabled:bg-grey-10"
|
|
109
|
+
],
|
|
110
|
+
transparent: [
|
|
111
|
+
"text-white",
|
|
112
|
+
"hover:bg-green-80",
|
|
113
|
+
"active:bg-green-100",
|
|
114
|
+
"focus:outline-pickle-100",
|
|
115
|
+
"disabled:text-grey-40"
|
|
116
|
+
],
|
|
117
|
+
link: [
|
|
118
|
+
"leading-tight",
|
|
119
|
+
"text-black",
|
|
120
|
+
"underline",
|
|
121
|
+
"hover:text-purple-100",
|
|
122
|
+
"focus:text-black",
|
|
123
|
+
"focus:outline-purple-100",
|
|
124
|
+
"active:text-purple-80"
|
|
125
|
+
]
|
|
126
|
+
},
|
|
127
|
+
size: {
|
|
128
|
+
small: ["h-10", "text-sm", "px-4", "py-2"],
|
|
129
|
+
medium: ["h-12", "text-base", "px-6", "py-3"],
|
|
130
|
+
large: ["h-14", "text-lg", "px-8", "py-4"]
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
defaultVariants: {
|
|
134
|
+
variant: "neutral",
|
|
135
|
+
size: "medium"
|
|
136
|
+
},
|
|
137
|
+
compoundVariants: [
|
|
138
|
+
{
|
|
139
|
+
variant: "link",
|
|
140
|
+
size: "small",
|
|
141
|
+
class: ["h-3", "text-xs", "p-0"]
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
variant: "link",
|
|
145
|
+
size: "medium",
|
|
146
|
+
class: ["h-4", "text-sm", "p-0"]
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
variant: "link",
|
|
150
|
+
size: "large",
|
|
151
|
+
class: ["h-6", "text-base", "p-0"]
|
|
152
|
+
}
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
// src/components/ui/ReadMore.tsx
|
|
158
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
159
|
+
function ReadMore({ text, ...props }) {
|
|
160
|
+
const [isExpanded, setIsExpanded] = (0, import_react2.useState)(false);
|
|
161
|
+
const [maxWords, setMaxWords] = (0, import_react2.useState)(160);
|
|
162
|
+
(0, import_react2.useEffect)(() => {
|
|
163
|
+
const updateMaxWords = () => {
|
|
164
|
+
const windowWidth = window.innerWidth;
|
|
165
|
+
if (windowWidth <= 768) {
|
|
166
|
+
setMaxWords(50);
|
|
167
|
+
} else {
|
|
168
|
+
setMaxWords(160);
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
updateMaxWords();
|
|
172
|
+
window.addEventListener("resize", updateMaxWords);
|
|
173
|
+
return () => window.removeEventListener("resize", updateMaxWords);
|
|
174
|
+
}, []);
|
|
175
|
+
function createReadMoreText(text2, maxWords2, isExpanded2) {
|
|
176
|
+
const words = text2.split(" ");
|
|
177
|
+
const snippet2 = isExpanded2 ? text2 : words.slice(0, maxWords2).join(" ");
|
|
178
|
+
const readMoreText = isExpanded2 ? "" : "...";
|
|
179
|
+
return `${snippet2} ${readMoreText}`;
|
|
180
|
+
}
|
|
181
|
+
const toggleText = () => setIsExpanded(!isExpanded);
|
|
182
|
+
const snippet = createReadMoreText(text, maxWords, isExpanded);
|
|
183
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { ...props, children: [
|
|
184
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { "data-testid": "read-more-text", className: "prose lg:prose-lg", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_markdown.default, { children: snippet }) }),
|
|
185
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Button, { className: "mt-2 flex items-center justify-center", variant: "link", onClick: toggleText, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("p", { className: "text-sm font-bold underline underline-offset-2", children: [
|
|
186
|
+
"Read ",
|
|
187
|
+
isExpanded ? "less" : "more"
|
|
188
|
+
] }) })
|
|
189
|
+
] });
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// src/components/jobPost/JobDescription.tsx
|
|
193
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
194
|
+
function JobDescription({ description }) {
|
|
195
|
+
if (!description) return null;
|
|
196
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex w-full flex-col gap-2", children: [
|
|
197
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h3", { className: "text-xl font-bold", children: "Job Description" }),
|
|
198
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ReadMore, { text: description })
|
|
199
|
+
] });
|
|
200
|
+
}
|
|
201
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
202
|
+
0 && (module.exports = {
|
|
203
|
+
JobDescription
|
|
204
|
+
});
|
|
205
|
+
//# sourceMappingURL=JobDescription.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/jobPost/JobDescription.tsx","../../../src/components/ui/ReadMore.tsx","../../../src/lib/utils.ts","../../../src/components/ui/Button.tsx"],"sourcesContent":["import { ReadMore } from '@/components/ui/ReadMore'\n\nexport type JobDescriptionProps = {\n description?: string\n}\n\nexport function JobDescription({ description }: JobDescriptionProps) {\n if (!description) return null\n\n return (\n <div className=\"flex w-full flex-col gap-2\">\n <h3 className=\"text-xl font-bold\">Job Description</h3>\n <ReadMore text={description} />\n </div>\n )\n}\n","'use client'\n\nimport { ComponentProps, useEffect, useState } from 'react'\nimport Markdown from 'react-markdown'\n\nimport { Button } from '@/components/ui/Button'\n\nexport type ReadMoreProps = ComponentProps<'div'> & {\n text: string\n}\n\nexport function ReadMore({ text, ...props }: Readonly<ReadMoreProps>) {\n const [isExpanded, setIsExpanded] = useState(false)\n const [maxWords, setMaxWords] = useState(160)\n\n useEffect(() => {\n const updateMaxWords = () => {\n const windowWidth = window.innerWidth\n if (windowWidth <= 768) {\n setMaxWords(50)\n } else {\n setMaxWords(160)\n }\n }\n\n updateMaxWords()\n window.addEventListener('resize', updateMaxWords)\n\n return () => window.removeEventListener('resize', updateMaxWords)\n }, [])\n\n function createReadMoreText(text: string, maxWords: number, isExpanded: boolean): string {\n const words = text.split(' ')\n\n const snippet = isExpanded ? text : words.slice(0, maxWords).join(' ')\n const readMoreText = isExpanded ? '' : '...'\n return `${snippet} ${readMoreText}`\n }\n\n const toggleText = () => setIsExpanded(!isExpanded)\n\n const snippet = createReadMoreText(text, maxWords, isExpanded)\n\n return (\n <div {...props}>\n <div data-testid=\"read-more-text\" className=\"prose lg:prose-lg\">\n <Markdown>{snippet}</Markdown>\n </div>\n <Button className=\"mt-2 flex items-center justify-center\" variant=\"link\" onClick={toggleText}>\n <p className=\"text-sm font-bold underline underline-offset-2\">\n Read {isExpanded ? 'less' : 'more'}\n </p>\n </Button>\n </div>\n )\n}\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { cn } from '@/lib/utils'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'cva'\nimport React, { forwardRef } from 'react'\n\ninterface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Component = asChild ? Slot : 'button'\n\n return (\n <Component\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = 'Button'\n\nconst buttonVariants = cva(\n [\n 'flex',\n 'items-center',\n 'justify-center',\n 'gap-2',\n 'rounded-full',\n 'font-bold',\n 'outline-2',\n 'outline-offset-2',\n 'outline-dashed',\n 'outline-transparent',\n ],\n {\n variants: {\n variant: {\n neutral: [\n 'bg-black',\n 'text-white',\n 'hover:bg-grey-90',\n 'active:bg-grey-80',\n 'focus:outline-purple-100',\n 'disabled:text-grey-40',\n 'disabled:bg-grey-10',\n ],\n primary: [\n 'bg-pickle-100',\n 'text-black',\n 'hover:bg-pickle-80',\n 'active:bg-pickle-60',\n 'focus:outline-purple-100',\n 'disabled:text-grey-40',\n 'disabled:bg-grey-10',\n ],\n secondary: [\n 'bg-green-80',\n 'text-white',\n 'hover:bg-green-90',\n 'active:bg-green-100',\n 'focus:outline-pickle-100',\n 'disabled:text-grey-40',\n 'disabled:bg-grey-10',\n ],\n transparent: [\n 'text-white',\n 'hover:bg-green-80',\n 'active:bg-green-100',\n 'focus:outline-pickle-100',\n 'disabled:text-grey-40',\n ],\n link: [\n 'leading-tight',\n 'text-black',\n 'underline',\n 'hover:text-purple-100',\n 'focus:text-black',\n 'focus:outline-purple-100',\n 'active:text-purple-80',\n ],\n },\n size: {\n small: ['h-10', 'text-sm', 'px-4', 'py-2'],\n medium: ['h-12', 'text-base', 'px-6', 'py-3'],\n large: ['h-14', 'text-lg', 'px-8', 'py-4'],\n },\n },\n defaultVariants: {\n variant: 'neutral',\n size: 'medium',\n },\n compoundVariants: [\n {\n variant: 'link',\n size: 'small',\n class: ['h-3', 'text-xs', 'p-0'],\n },\n {\n variant: 'link',\n size: 'medium',\n class: ['h-4', 'text-sm', 'p-0'],\n },\n {\n variant: 'link',\n size: 'large',\n class: ['h-6', 'text-base', 'p-0'],\n },\n ],\n }\n)\n"],"mappings":"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","names":["import_react","import_jsx_runtime","text","maxWords","isExpanded","snippet","Markdown","import_jsx_runtime"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
type JobDescriptionProps = {
|
|
4
|
+
description?: string;
|
|
5
|
+
};
|
|
6
|
+
declare function JobDescription({ description }: JobDescriptionProps): react_jsx_runtime.JSX.Element | null;
|
|
7
|
+
|
|
8
|
+
export { JobDescription, type JobDescriptionProps };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
type JobDescriptionProps = {
|
|
4
|
+
description?: string;
|
|
5
|
+
};
|
|
6
|
+
declare function JobDescription({ description }: JobDescriptionProps): react_jsx_runtime.JSX.Element | null;
|
|
7
|
+
|
|
8
|
+
export { JobDescription, type JobDescriptionProps };
|