@next-degree/pickle-shared-js 0.5.31 → 0.6.43

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.
Files changed (239) hide show
  1. package/dist/company_service_latest-Dwf4Fkjr.d.cts +2641 -0
  2. package/dist/company_service_latest-Dwf4Fkjr.d.ts +2641 -0
  3. package/dist/components/buttons/BackButton.cjs +161 -0
  4. package/dist/components/buttons/BackButton.cjs.map +1 -0
  5. package/dist/components/buttons/BackButton.d.cts +9 -0
  6. package/dist/components/buttons/BackButton.d.ts +9 -0
  7. package/dist/components/buttons/BackButton.js +137 -0
  8. package/dist/components/buttons/BackButton.js.map +1 -0
  9. package/dist/components/company/CompanyBenefits.cjs +38 -0
  10. package/dist/components/company/CompanyBenefits.cjs.map +1 -0
  11. package/dist/components/company/CompanyBenefits.d.cts +8 -0
  12. package/dist/components/company/CompanyBenefits.d.ts +8 -0
  13. package/dist/components/company/CompanyBenefits.js +13 -0
  14. package/dist/components/company/CompanyBenefits.js.map +1 -0
  15. package/dist/components/company/CompanyInformation.cjs +112 -0
  16. package/dist/components/company/CompanyInformation.cjs.map +1 -0
  17. package/dist/components/company/CompanyInformation.d.cts +12 -0
  18. package/dist/components/company/CompanyInformation.d.ts +12 -0
  19. package/dist/components/company/CompanyInformation.js +75 -0
  20. package/dist/components/company/CompanyInformation.js.map +1 -0
  21. package/dist/components/company/CompanyTake.cjs +140 -0
  22. package/dist/components/company/CompanyTake.cjs.map +1 -0
  23. package/dist/components/company/CompanyTake.d.cts +9 -0
  24. package/dist/components/company/CompanyTake.d.ts +9 -0
  25. package/dist/components/company/CompanyTake.js +104 -0
  26. package/dist/components/company/CompanyTake.js.map +1 -0
  27. package/dist/components/jobPost/JobDescription.cjs +205 -0
  28. package/dist/components/jobPost/JobDescription.cjs.map +1 -0
  29. package/dist/components/jobPost/JobDescription.d.cts +8 -0
  30. package/dist/components/jobPost/JobDescription.d.ts +8 -0
  31. package/dist/components/jobPost/JobDescription.js +168 -0
  32. package/dist/components/jobPost/JobDescription.js.map +1 -0
  33. package/dist/components/jobPost/JobHeader.cjs +436 -0
  34. package/dist/components/jobPost/JobHeader.cjs.map +1 -0
  35. package/dist/components/jobPost/JobHeader.d.cts +26 -0
  36. package/dist/components/jobPost/JobHeader.d.ts +26 -0
  37. package/dist/components/jobPost/JobHeader.js +423 -0
  38. package/dist/components/jobPost/JobHeader.js.map +1 -0
  39. package/dist/components/jobPost/JobPost.cjs +1349 -0
  40. package/dist/components/jobPost/JobPost.cjs.map +1 -0
  41. package/dist/components/jobPost/JobPost.d.cts +16 -0
  42. package/dist/components/jobPost/JobPost.d.ts +16 -0
  43. package/dist/components/jobPost/JobPost.js +1336 -0
  44. package/dist/components/jobPost/JobPost.js.map +1 -0
  45. package/dist/components/primitives/avatar.cjs +88 -0
  46. package/dist/components/primitives/avatar.cjs.map +1 -0
  47. package/dist/components/primitives/avatar.d.cts +13 -0
  48. package/dist/components/primitives/avatar.d.ts +13 -0
  49. package/dist/components/primitives/avatar.js +52 -0
  50. package/dist/components/primitives/avatar.js.map +1 -0
  51. package/dist/components/primitives/command.d.cts +3 -3
  52. package/dist/components/primitives/command.d.ts +3 -3
  53. package/dist/components/ui/Avatar.cjs +117 -0
  54. package/dist/components/ui/Avatar.cjs.map +1 -0
  55. package/dist/components/ui/Avatar.d.cts +16 -0
  56. package/dist/components/ui/Avatar.d.ts +16 -0
  57. package/dist/components/ui/Avatar.js +79 -0
  58. package/dist/components/ui/Avatar.js.map +1 -0
  59. package/dist/components/ui/Icon.cjs +114 -0
  60. package/dist/components/ui/Icon.cjs.map +1 -0
  61. package/dist/components/ui/Icon.d.cts +15 -0
  62. package/dist/components/ui/Icon.d.ts +15 -0
  63. package/dist/components/ui/Icon.js +89 -0
  64. package/dist/components/ui/Icon.js.map +1 -0
  65. package/dist/{app/layout.cjs → components/ui/LinkButton.cjs} +25 -35
  66. package/dist/components/ui/LinkButton.cjs.map +1 -0
  67. package/dist/components/ui/LinkButton.d.cts +29 -0
  68. package/dist/components/ui/LinkButton.d.ts +29 -0
  69. package/dist/components/ui/LinkButton.js +26 -0
  70. package/dist/components/ui/LinkButton.js.map +1 -0
  71. package/dist/components/ui/ReadMore.cjs +194 -0
  72. package/dist/components/ui/ReadMore.cjs.map +1 -0
  73. package/dist/components/ui/ReadMore.d.cts +9 -0
  74. package/dist/components/ui/ReadMore.d.ts +9 -0
  75. package/dist/components/ui/ReadMore.js +160 -0
  76. package/dist/components/ui/ReadMore.js.map +1 -0
  77. package/dist/contexts/WindowHistoryProvider.cjs +48 -0
  78. package/dist/contexts/WindowHistoryProvider.cjs.map +1 -0
  79. package/dist/contexts/WindowHistoryProvider.d.cts +11 -0
  80. package/dist/contexts/WindowHistoryProvider.d.ts +11 -0
  81. package/dist/contexts/WindowHistoryProvider.js +23 -0
  82. package/dist/contexts/WindowHistoryProvider.js.map +1 -0
  83. package/dist/displayText-C1qKqRYc.d.cts +48 -0
  84. package/dist/displayText-D-OzRlJf.d.ts +48 -0
  85. package/dist/hooks/useDisplayText.cjs +502 -0
  86. package/dist/hooks/useDisplayText.cjs.map +1 -0
  87. package/dist/hooks/useDisplayText.d.cts +8 -0
  88. package/dist/hooks/useDisplayText.d.ts +8 -0
  89. package/dist/hooks/useDisplayText.js +477 -0
  90. package/dist/hooks/useDisplayText.js.map +1 -0
  91. package/dist/hooks/useWindowHistory.cjs +46 -0
  92. package/dist/hooks/useWindowHistory.cjs.map +1 -0
  93. package/dist/hooks/useWindowHistory.d.cts +7 -0
  94. package/dist/hooks/useWindowHistory.d.ts +7 -0
  95. package/dist/hooks/useWindowHistory.js +21 -0
  96. package/dist/hooks/useWindowHistory.js.map +1 -0
  97. package/dist/index.cjs +1434 -2
  98. package/dist/index.cjs.map +1 -1
  99. package/dist/index.d.cts +21 -0
  100. package/dist/index.d.ts +21 -0
  101. package/dist/index.js +1443 -1
  102. package/dist/index.js.map +1 -1
  103. package/dist/job_posting_service_latest-D0AsiA4a.d.cts +2789 -0
  104. package/dist/job_posting_service_latest-D0AsiA4a.d.ts +2789 -0
  105. package/dist/lib/icons.cjs +53 -0
  106. package/dist/lib/icons.cjs.map +1 -0
  107. package/dist/lib/icons.d.cts +27 -0
  108. package/dist/lib/icons.d.ts +27 -0
  109. package/dist/lib/icons.js +49 -0
  110. package/dist/lib/icons.js.map +1 -0
  111. package/dist/lib/locations.cjs +45 -0
  112. package/dist/lib/locations.cjs.map +1 -0
  113. package/dist/lib/locations.d.cts +8 -0
  114. package/dist/lib/locations.d.ts +8 -0
  115. package/dist/lib/locations.js +19 -0
  116. package/dist/lib/locations.js.map +1 -0
  117. package/dist/lib/mappings.cjs +443 -0
  118. package/dist/lib/mappings.cjs.map +1 -0
  119. package/dist/lib/mappings.d.cts +4 -0
  120. package/dist/lib/mappings.d.ts +4 -0
  121. package/dist/lib/mappings.js +409 -0
  122. package/dist/lib/mappings.js.map +1 -0
  123. package/dist/lib/salaryRange.cjs +90 -0
  124. package/dist/lib/salaryRange.cjs.map +1 -0
  125. package/dist/lib/salaryRange.d.cts +6 -0
  126. package/dist/lib/salaryRange.d.ts +6 -0
  127. package/dist/lib/salaryRange.js +63 -0
  128. package/dist/lib/salaryRange.js.map +1 -0
  129. package/dist/services/displayText.cjs +470 -0
  130. package/dist/services/displayText.cjs.map +1 -0
  131. package/dist/services/displayText.d.cts +4 -0
  132. package/dist/services/displayText.d.ts +4 -0
  133. package/dist/services/displayText.js +443 -0
  134. package/dist/services/displayText.js.map +1 -0
  135. package/dist/shared_pickle_output_latest-DX6GQoVn.d.cts +194 -0
  136. package/dist/shared_pickle_output_latest-DX6GQoVn.d.ts +194 -0
  137. package/dist/styles/globals.css +817 -0
  138. package/dist/styles/globals.css.map +1 -1
  139. package/dist/types/data/company_service_latest.cjs +228 -0
  140. package/dist/types/data/company_service_latest.cjs.map +1 -0
  141. package/dist/types/data/company_service_latest.d.cts +2 -0
  142. package/dist/types/data/company_service_latest.d.ts +2 -0
  143. package/dist/types/data/company_service_latest.js +186 -0
  144. package/dist/types/data/company_service_latest.js.map +1 -0
  145. package/dist/types/data/job_posting_service_latest.cjs +266 -0
  146. package/dist/types/data/job_posting_service_latest.cjs.map +1 -0
  147. package/dist/types/data/job_posting_service_latest.d.cts +2 -0
  148. package/dist/types/data/job_posting_service_latest.d.ts +2 -0
  149. package/dist/types/data/job_posting_service_latest.js +230 -0
  150. package/dist/types/data/job_posting_service_latest.js.map +1 -0
  151. package/dist/types/data/shared_pickle_output_latest.cjs +82 -0
  152. package/dist/types/data/shared_pickle_output_latest.cjs.map +1 -0
  153. package/dist/types/data/shared_pickle_output_latest.d.cts +2 -0
  154. package/dist/types/data/shared_pickle_output_latest.d.ts +2 -0
  155. package/dist/types/data/shared_pickle_output_latest.js +50 -0
  156. package/dist/types/data/shared_pickle_output_latest.js.map +1 -0
  157. package/dist/types/displayText.errors.cjs +44 -0
  158. package/dist/types/displayText.errors.cjs.map +1 -0
  159. package/dist/types/displayText.errors.d.cts +8 -0
  160. package/dist/types/displayText.errors.d.ts +8 -0
  161. package/dist/types/displayText.errors.js +18 -0
  162. package/dist/types/displayText.errors.js.map +1 -0
  163. package/package.json +19 -7
  164. package/dist/AmbitBold-3SZZPYLH.otf +0 -0
  165. package/dist/AmbitBoldItalic-JSHFTN4A.otf +0 -0
  166. package/dist/AmbitRegular-MB5U7O3L.otf +0 -0
  167. package/dist/app/layout.cjs.map +0 -1
  168. package/dist/app/layout.css +0 -1423
  169. package/dist/app/layout.css.map +0 -1
  170. package/dist/app/layout.d.cts +0 -11
  171. package/dist/app/layout.d.ts +0 -11
  172. package/dist/app/layout.js +0 -36
  173. package/dist/app/layout.js.map +0 -1
  174. package/dist/app/page.cjs +0 -1607
  175. package/dist/app/page.cjs.map +0 -1
  176. package/dist/app/page.d.cts +0 -5
  177. package/dist/app/page.d.ts +0 -5
  178. package/dist/app/page.js +0 -1581
  179. package/dist/app/page.js.map +0 -1
  180. package/dist/assets/fonts/AmbitBold.cjs +0 -3
  181. package/dist/assets/fonts/AmbitBold.cjs.map +0 -1
  182. package/dist/assets/fonts/AmbitBold.d.cts +0 -2
  183. package/dist/assets/fonts/AmbitBold.d.ts +0 -2
  184. package/dist/assets/fonts/AmbitBold.js +0 -6
  185. package/dist/assets/fonts/AmbitBold.js.map +0 -1
  186. package/dist/assets/fonts/AmbitBoldItalic.cjs +0 -3
  187. package/dist/assets/fonts/AmbitBoldItalic.cjs.map +0 -1
  188. package/dist/assets/fonts/AmbitBoldItalic.d.cts +0 -2
  189. package/dist/assets/fonts/AmbitBoldItalic.d.ts +0 -2
  190. package/dist/assets/fonts/AmbitBoldItalic.js +0 -6
  191. package/dist/assets/fonts/AmbitBoldItalic.js.map +0 -1
  192. package/dist/assets/fonts/AmbitRegular.cjs +0 -3
  193. package/dist/assets/fonts/AmbitRegular.cjs.map +0 -1
  194. package/dist/assets/fonts/AmbitRegular.d.cts +0 -2
  195. package/dist/assets/fonts/AmbitRegular.d.ts +0 -2
  196. package/dist/assets/fonts/AmbitRegular.js +0 -6
  197. package/dist/assets/fonts/AmbitRegular.js.map +0 -1
  198. package/dist/components/demos/ComboboxDemo.cjs +0 -814
  199. package/dist/components/demos/ComboboxDemo.cjs.map +0 -1
  200. package/dist/components/demos/ComboboxDemo.d.cts +0 -5
  201. package/dist/components/demos/ComboboxDemo.d.ts +0 -5
  202. package/dist/components/demos/ComboboxDemo.js +0 -786
  203. package/dist/components/demos/ComboboxDemo.js.map +0 -1
  204. package/dist/components/demos/CounterDemo.cjs +0 -270
  205. package/dist/components/demos/CounterDemo.cjs.map +0 -1
  206. package/dist/components/demos/CounterDemo.d.cts +0 -5
  207. package/dist/components/demos/CounterDemo.d.ts +0 -5
  208. package/dist/components/demos/CounterDemo.js +0 -238
  209. package/dist/components/demos/CounterDemo.js.map +0 -1
  210. package/dist/components/demos/InputDemo.cjs +0 -225
  211. package/dist/components/demos/InputDemo.cjs.map +0 -1
  212. package/dist/components/demos/InputDemo.d.cts +0 -5
  213. package/dist/components/demos/InputDemo.d.ts +0 -5
  214. package/dist/components/demos/InputDemo.js +0 -192
  215. package/dist/components/demos/InputDemo.js.map +0 -1
  216. package/dist/components/demos/MapComponentDemo.cjs +0 -129
  217. package/dist/components/demos/MapComponentDemo.cjs.map +0 -1
  218. package/dist/components/demos/MapComponentDemo.d.cts +0 -5
  219. package/dist/components/demos/MapComponentDemo.d.ts +0 -5
  220. package/dist/components/demos/MapComponentDemo.js +0 -107
  221. package/dist/components/demos/MapComponentDemo.js.map +0 -1
  222. package/dist/components/demos/PlacesQueryInputDemo.cjs +0 -341
  223. package/dist/components/demos/PlacesQueryInputDemo.cjs.map +0 -1
  224. package/dist/components/demos/PlacesQueryInputDemo.d.cts +0 -5
  225. package/dist/components/demos/PlacesQueryInputDemo.d.ts +0 -5
  226. package/dist/components/demos/PlacesQueryInputDemo.js +0 -309
  227. package/dist/components/demos/PlacesQueryInputDemo.js.map +0 -1
  228. package/dist/components/demos/SelectDemo.cjs +0 -365
  229. package/dist/components/demos/SelectDemo.cjs.map +0 -1
  230. package/dist/components/demos/SelectDemo.d.cts +0 -5
  231. package/dist/components/demos/SelectDemo.d.ts +0 -5
  232. package/dist/components/demos/SelectDemo.js +0 -337
  233. package/dist/components/demos/SelectDemo.js.map +0 -1
  234. package/dist/components/demos/index.cjs +0 -1600
  235. package/dist/components/demos/index.cjs.map +0 -1
  236. package/dist/components/demos/index.d.cts +0 -5
  237. package/dist/components/demos/index.d.ts +0 -5
  238. package/dist/components/demos/index.js +0 -1574
  239. package/dist/components/demos/index.js.map +0 -1
@@ -0,0 +1,168 @@
1
+ // src/components/ui/ReadMore.tsx
2
+ import { useEffect, useState } from "react";
3
+ import Markdown from "react-markdown";
4
+
5
+ // src/lib/utils.ts
6
+ import { clsx } from "clsx";
7
+ import { twMerge } from "tailwind-merge";
8
+ function cn(...inputs) {
9
+ return twMerge(clsx(inputs));
10
+ }
11
+
12
+ // src/components/ui/Button.tsx
13
+ import { Slot } from "@radix-ui/react-slot";
14
+ import { cva } from "cva";
15
+ import { forwardRef } from "react";
16
+ import { jsx } from "react/jsx-runtime";
17
+ var Button = forwardRef(
18
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
19
+ const Component = asChild ? Slot : "button";
20
+ return /* @__PURE__ */ jsx(
21
+ Component,
22
+ {
23
+ className: cn(buttonVariants({ variant, size, className })),
24
+ ref,
25
+ ...props
26
+ }
27
+ );
28
+ }
29
+ );
30
+ Button.displayName = "Button";
31
+ var buttonVariants = cva(
32
+ [
33
+ "flex",
34
+ "items-center",
35
+ "justify-center",
36
+ "gap-2",
37
+ "rounded-full",
38
+ "font-bold",
39
+ "outline-2",
40
+ "outline-offset-2",
41
+ "outline-dashed",
42
+ "outline-transparent"
43
+ ],
44
+ {
45
+ variants: {
46
+ variant: {
47
+ neutral: [
48
+ "bg-black",
49
+ "text-white",
50
+ "hover:bg-grey-90",
51
+ "active:bg-grey-80",
52
+ "focus:outline-purple-100",
53
+ "disabled:text-grey-40",
54
+ "disabled:bg-grey-10"
55
+ ],
56
+ primary: [
57
+ "bg-pickle-100",
58
+ "text-black",
59
+ "hover:bg-pickle-80",
60
+ "active:bg-pickle-60",
61
+ "focus:outline-purple-100",
62
+ "disabled:text-grey-40",
63
+ "disabled:bg-grey-10"
64
+ ],
65
+ secondary: [
66
+ "bg-green-80",
67
+ "text-white",
68
+ "hover:bg-green-90",
69
+ "active:bg-green-100",
70
+ "focus:outline-pickle-100",
71
+ "disabled:text-grey-40",
72
+ "disabled:bg-grey-10"
73
+ ],
74
+ transparent: [
75
+ "text-white",
76
+ "hover:bg-green-80",
77
+ "active:bg-green-100",
78
+ "focus:outline-pickle-100",
79
+ "disabled:text-grey-40"
80
+ ],
81
+ link: [
82
+ "leading-tight",
83
+ "text-black",
84
+ "underline",
85
+ "hover:text-purple-100",
86
+ "focus:text-black",
87
+ "focus:outline-purple-100",
88
+ "active:text-purple-80"
89
+ ]
90
+ },
91
+ size: {
92
+ small: ["h-10", "text-sm", "px-4", "py-2"],
93
+ medium: ["h-12", "text-base", "px-6", "py-3"],
94
+ large: ["h-14", "text-lg", "px-8", "py-4"]
95
+ }
96
+ },
97
+ defaultVariants: {
98
+ variant: "neutral",
99
+ size: "medium"
100
+ },
101
+ compoundVariants: [
102
+ {
103
+ variant: "link",
104
+ size: "small",
105
+ class: ["h-3", "text-xs", "p-0"]
106
+ },
107
+ {
108
+ variant: "link",
109
+ size: "medium",
110
+ class: ["h-4", "text-sm", "p-0"]
111
+ },
112
+ {
113
+ variant: "link",
114
+ size: "large",
115
+ class: ["h-6", "text-base", "p-0"]
116
+ }
117
+ ]
118
+ }
119
+ );
120
+
121
+ // src/components/ui/ReadMore.tsx
122
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
123
+ function ReadMore({ text, ...props }) {
124
+ const [isExpanded, setIsExpanded] = useState(false);
125
+ const [maxWords, setMaxWords] = useState(160);
126
+ useEffect(() => {
127
+ const updateMaxWords = () => {
128
+ const windowWidth = window.innerWidth;
129
+ if (windowWidth <= 768) {
130
+ setMaxWords(50);
131
+ } else {
132
+ setMaxWords(160);
133
+ }
134
+ };
135
+ updateMaxWords();
136
+ window.addEventListener("resize", updateMaxWords);
137
+ return () => window.removeEventListener("resize", updateMaxWords);
138
+ }, []);
139
+ function createReadMoreText(text2, maxWords2, isExpanded2) {
140
+ const words = text2.split(" ");
141
+ const snippet2 = isExpanded2 ? text2 : words.slice(0, maxWords2).join(" ");
142
+ const readMoreText = isExpanded2 ? "" : "...";
143
+ return `${snippet2} ${readMoreText}`;
144
+ }
145
+ const toggleText = () => setIsExpanded(!isExpanded);
146
+ const snippet = createReadMoreText(text, maxWords, isExpanded);
147
+ return /* @__PURE__ */ jsxs("div", { ...props, children: [
148
+ /* @__PURE__ */ jsx2("div", { "data-testid": "read-more-text", className: "prose lg:prose-lg", children: /* @__PURE__ */ jsx2(Markdown, { children: snippet }) }),
149
+ /* @__PURE__ */ jsx2(Button, { className: "mt-2 flex items-center justify-center", variant: "link", onClick: toggleText, children: /* @__PURE__ */ jsxs("p", { className: "text-sm font-bold underline underline-offset-2", children: [
150
+ "Read ",
151
+ isExpanded ? "less" : "more"
152
+ ] }) })
153
+ ] });
154
+ }
155
+
156
+ // src/components/jobPost/JobDescription.tsx
157
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
158
+ function JobDescription({ description }) {
159
+ if (!description) return null;
160
+ return /* @__PURE__ */ jsxs2("div", { className: "flex w-full flex-col gap-2", children: [
161
+ /* @__PURE__ */ jsx3("h3", { className: "text-xl font-bold", children: "Job Description" }),
162
+ /* @__PURE__ */ jsx3(ReadMore, { text: description })
163
+ ] });
164
+ }
165
+ export {
166
+ JobDescription
167
+ };
168
+ //# sourceMappingURL=JobDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/ui/ReadMore.tsx","../../../src/lib/utils.ts","../../../src/components/ui/Button.tsx","../../../src/components/jobPost/JobDescription.tsx"],"sourcesContent":["'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","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"],"mappings":"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","names":["jsx","text","maxWords","isExpanded","snippet","jsx","jsxs"]}
@@ -0,0 +1,436 @@
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/jobPost/JobHeader.tsx
32
+ var JobHeader_exports = {};
33
+ __export(JobHeader_exports, {
34
+ JobHeader: () => JobHeader
35
+ });
36
+ module.exports = __toCommonJS(JobHeader_exports);
37
+ var import_lucide_react3 = require("lucide-react");
38
+ var import_image = __toESM(require("next/image"), 1);
39
+
40
+ // src/components/buttons/BackButton.tsx
41
+ var import_lucide_react = require("lucide-react");
42
+ var import_navigation2 = require("next/navigation");
43
+
44
+ // src/components/ui/Icon.tsx
45
+ var import_react_slot = require("@radix-ui/react-slot");
46
+ var import_cva = require("cva");
47
+ var import_react = require("react");
48
+ var import_tailwind_merge2 = require("tailwind-merge");
49
+
50
+ // src/lib/utils.ts
51
+ var import_clsx = require("clsx");
52
+ var import_tailwind_merge = require("tailwind-merge");
53
+ function cn(...inputs) {
54
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
55
+ }
56
+
57
+ // src/components/ui/Icon.tsx
58
+ var import_jsx_runtime = require("react/jsx-runtime");
59
+ var Icon = (0, import_react.forwardRef)(
60
+ ({ variant, size, active = false, readonly = false, className, ...props }, ref) => {
61
+ const Component = readonly ? import_react_slot.Slot : "button";
62
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
63
+ Component,
64
+ {
65
+ className: cn(
66
+ (0, import_tailwind_merge2.twMerge)(iconVariants({ variant: active ? "active" : variant, size })),
67
+ className
68
+ ),
69
+ ...props,
70
+ ref
71
+ }
72
+ );
73
+ }
74
+ );
75
+ Icon.displayName = "Icon";
76
+ var iconVariants = (0, import_cva.cva)(
77
+ [
78
+ "inline-flex",
79
+ "items-center",
80
+ "rounded-full",
81
+ "outline-2",
82
+ "outline-offset-2",
83
+ "outline-dashed",
84
+ "outline-transparent",
85
+ "disabled:text-grey-40",
86
+ "disabled:bg-transparent",
87
+ "disabled:pointer-events-none"
88
+ ],
89
+ {
90
+ variants: {
91
+ variant: {
92
+ filled: [
93
+ "border",
94
+ "border-green-80",
95
+ "bg-green-90",
96
+ "text-white",
97
+ "hover:bg-green-80",
98
+ "active:bg-green-80",
99
+ "focus:outline-pickle-100",
100
+ "disabled:bg-green-70"
101
+ ],
102
+ transparent: [
103
+ "text-black",
104
+ "hover:bg-grey-5",
105
+ "active:bg-grey-10",
106
+ "focus:outline-purple-100"
107
+ ],
108
+ tonal: [
109
+ "border",
110
+ "border-grey-5",
111
+ "hover:border-grey-10",
112
+ "active:border-grey-20",
113
+ "focus:outline-purple-100"
114
+ ],
115
+ active: ["text-black", "bg-pickle-100"]
116
+ },
117
+ size: {
118
+ small: ["h-10", "w-10", "p-3"],
119
+ medium: ["h-12", "w-12", "p-4"],
120
+ large: ["h-14", "w-14", "p-4"]
121
+ }
122
+ },
123
+ defaultVariants: {
124
+ variant: "filled",
125
+ size: "medium"
126
+ }
127
+ }
128
+ );
129
+
130
+ // src/hooks/useWindowHistory.ts
131
+ var import_react3 = require("react");
132
+
133
+ // src/contexts/WindowHistoryProvider.tsx
134
+ var import_navigation = require("next/navigation");
135
+ var import_react2 = require("react");
136
+ var import_jsx_runtime2 = require("react/jsx-runtime");
137
+ var WindowHistoryContext = (0, import_react2.createContext)({});
138
+
139
+ // src/hooks/useWindowHistory.ts
140
+ function useWindowHistory() {
141
+ const windowHistoryContext = (0, import_react3.useContext)(WindowHistoryContext);
142
+ if (Object.keys(windowHistoryContext).length === 0) {
143
+ throw new Error("useWindowHistory was used outside of its WindowHistoryContext");
144
+ }
145
+ return windowHistoryContext;
146
+ }
147
+
148
+ // src/components/buttons/BackButton.tsx
149
+ var import_jsx_runtime3 = require("react/jsx-runtime");
150
+ function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
151
+ const { history } = useWindowHistory();
152
+ const router = (0, import_navigation2.useRouter)();
153
+ const isAcceptedRoute = (r) => !!acceptedRoutes?.find((route) => new RegExp("^" + route + "$", "i").test(r));
154
+ const goBack = () => {
155
+ const previous = history[history.length - 2];
156
+ history.length > 1 && isAcceptedRoute(previous) ? router.back() : router.push(fallbackHref ?? "/");
157
+ };
158
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
159
+ Icon,
160
+ {
161
+ "aria-label": "back button",
162
+ variant: "transparent",
163
+ size: "small",
164
+ onClick: goBack,
165
+ className,
166
+ ...props,
167
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.X, {})
168
+ }
169
+ );
170
+ }
171
+
172
+ // src/components/ui/Chip.tsx
173
+ var import_cva2 = require("cva");
174
+ var import_tailwind_merge3 = require("tailwind-merge");
175
+ var import_jsx_runtime4 = require("react/jsx-runtime");
176
+ var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: (0, import_tailwind_merge3.twMerge)(chipVariants({ variant, size, className })), ...props });
177
+ var chipVariants = (0, import_cva2.cva)(["flex", "items-center", "rounded-3xl", "border", "w-fit"], {
178
+ variants: {
179
+ variant: {
180
+ neutral: ["text-grey-80", "border-grey-10"],
181
+ primary: ["text-purple-100", "border-purple-20"],
182
+ danger: ["text-pumpkin-100", "border-pumpkin-20"],
183
+ onboarding: ["text-green-100", "bg-green-10", "cursor-pointer"],
184
+ onboardingSelected: ["text-white", "bg-green-90", "cursor-pointer"]
185
+ },
186
+ size: {
187
+ small: ["text-sm", "leading-5", "px-2", "py-1", "gap-1.5"],
188
+ medium: ["text-base", "leading-6", "px-3", "py-2", "gap-2"]
189
+ }
190
+ },
191
+ defaultVariants: {
192
+ variant: "neutral",
193
+ size: "medium"
194
+ }
195
+ });
196
+ var Chip_default = Chip;
197
+
198
+ // src/components/primitives/avatar.tsx
199
+ var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"), 1);
200
+ var React = __toESM(require("react"), 1);
201
+ var import_jsx_runtime5 = require("react/jsx-runtime");
202
+ var AvatarBase = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
203
+ AvatarPrimitive.Root,
204
+ {
205
+ ref,
206
+ className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
207
+ ...props
208
+ }
209
+ ));
210
+ AvatarBase.displayName = AvatarPrimitive.Root.displayName;
211
+ var AvatarImage = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
212
+ AvatarPrimitive.Image,
213
+ {
214
+ ref,
215
+ className: cn("aspect-square h-full w-full", className),
216
+ "data-testid": "job-card-avatar",
217
+ ...props
218
+ }
219
+ ));
220
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
221
+ var AvatarFallback = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
222
+ AvatarPrimitive.Fallback,
223
+ {
224
+ ref,
225
+ className: cn(
226
+ "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",
227
+ className
228
+ ),
229
+ ...props
230
+ }
231
+ ));
232
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
233
+
234
+ // src/components/ui/Avatar.tsx
235
+ var import_cva3 = require("cva");
236
+ var import_link = __toESM(require("next/link"), 1);
237
+ var import_jsx_runtime6 = require("react/jsx-runtime");
238
+ function Avatar({ size, src, href, name, ...linkProps }) {
239
+ const fallbackShort = name?.slice(0, 2);
240
+ const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
241
+ const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
242
+ const renderAvatar = () => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(AvatarBase, { className: avatarVariants({ size }), children: [
243
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(AvatarImage, { src, alt: name }),
244
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(AvatarFallback, { children: fallback?.toUpperCase() })
245
+ ] });
246
+ if (href) {
247
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_link.default, { href, ...linkProps, children: renderAvatar() });
248
+ }
249
+ return renderAvatar();
250
+ }
251
+ var avatarVariants = (0, import_cva3.cva)("ring ring-white ring-2", {
252
+ variants: {
253
+ size: {
254
+ large: "h-16 w-16",
255
+ medium: "h-10 w-10",
256
+ small: "h-8 w-8"
257
+ }
258
+ },
259
+ defaultVariants: {
260
+ size: "medium"
261
+ }
262
+ });
263
+
264
+ // src/lib/icons.ts
265
+ var import_lucide_react2 = require("lucide-react");
266
+ var iconMap = {
267
+ house: import_lucide_react2.Home,
268
+ layers: import_lucide_react2.Layers,
269
+ users: import_lucide_react2.Users,
270
+ settings: import_lucide_react2.Settings,
271
+ building: import_lucide_react2.Building,
272
+ bell: import_lucide_react2.Bell,
273
+ wallet: import_lucide_react2.Wallet,
274
+ contact: import_lucide_react2.Contact,
275
+ banknote: import_lucide_react2.Banknote,
276
+ "message-square-dot": import_lucide_react2.MessageSquareDot,
277
+ "life-buoy": import_lucide_react2.LifeBuoy,
278
+ "building-2": import_lucide_react2.Building2,
279
+ "gallery-vertical-end": import_lucide_react2.GalleryVerticalEnd,
280
+ "square-kanban": import_lucide_react2.SquareKanban,
281
+ "briefcase-business": import_lucide_react2.BriefcaseBusiness,
282
+ "circle-user": import_lucide_react2.CircleUser,
283
+ "key-round": import_lucide_react2.KeyRound,
284
+ "clock-2": import_lucide_react2.Clock2,
285
+ "circle-user-round": import_lucide_react2.CircleUserRound,
286
+ "map-pin": import_lucide_react2.MapPin
287
+ };
288
+
289
+ // src/components/jobPost/JobHeader.tsx
290
+ var import_jsx_runtime7 = require("react/jsx-runtime");
291
+ function JobHeader({
292
+ title,
293
+ subtitles,
294
+ standalone,
295
+ bannerSrc,
296
+ avatarSrc,
297
+ avatarName,
298
+ avatarHref,
299
+ backFallbackHref,
300
+ backAcceptedRoutes,
301
+ actions,
302
+ tags
303
+ }) {
304
+ const renderIcon = (icon) => {
305
+ const Icon2 = iconMap[icon];
306
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon2, { size: 18 });
307
+ };
308
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
309
+ "div",
310
+ {
311
+ "data-testid": "job-header-root",
312
+ className: cn(
313
+ "-mt-8 flex w-full flex-col items-center justify-between gap-6 md:-mt-0",
314
+ !standalone && "rounded-3xl"
315
+ ),
316
+ children: [
317
+ !standalone && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("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: [
318
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
319
+ import_image.default,
320
+ {
321
+ className: "h-full w-full rounded-t-3xl object-cover",
322
+ src: bannerSrc,
323
+ alt: "job banner",
324
+ fill: true
325
+ }
326
+ ),
327
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
328
+ BackButton,
329
+ {
330
+ acceptedRoutes: backAcceptedRoutes,
331
+ fallbackHref: backFallbackHref,
332
+ className: "absolute right-2 top-2 flex items-center justify-center text-white sm:hidden",
333
+ "data-testid": "job-header-back-button"
334
+ }
335
+ ),
336
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
337
+ "div",
338
+ {
339
+ className: "absolute left-4 top-8 md:left-6 md:top-16 lg:top-24",
340
+ "data-testid": "job-header-avatar",
341
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
342
+ Avatar,
343
+ {
344
+ size: "large",
345
+ target: "_blank",
346
+ href: avatarHref,
347
+ name: avatarName,
348
+ src: avatarSrc,
349
+ rel: "noopener noreferrer"
350
+ }
351
+ )
352
+ }
353
+ )
354
+ ] }),
355
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex w-full flex-col items-start justify-start gap-4 px-6", children: [
356
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col md:flex-row", children: [
357
+ standalone && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "-mt-4 mr-4 md:mt-0", "data-testid": "job-header-avatar", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
358
+ Avatar,
359
+ {
360
+ size: "large",
361
+ target: "_blank",
362
+ href: avatarHref,
363
+ name: avatarName,
364
+ src: avatarSrc,
365
+ rel: "noopener noreferrer"
366
+ }
367
+ ) }),
368
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "prose mt-4 flex w-full items-center text-grey-80 lg:prose-lg", children: subtitles?.map((subtitle, i) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
369
+ "div",
370
+ {
371
+ "data-testid": `job-header-subtitle-${i}`,
372
+ className: "flex items-center",
373
+ children: [
374
+ subtitle,
375
+ i < subtitles.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react3.Dot, { className: "mx-1 shrink-0", size: 10 })
376
+ ]
377
+ },
378
+ subtitle
379
+ )) })
380
+ ] }),
381
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
382
+ "div",
383
+ {
384
+ "data-testid": "job-header-content",
385
+ className: "mt-2 flex w-full flex-row flex-wrap items-center justify-between gap-1",
386
+ children: [
387
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
388
+ "h2",
389
+ {
390
+ "data-testid": "job-header-title",
391
+ className: "break-word max-w-full text-2xl font-bold text-black sm:max-w-2xl md:max-w-lg",
392
+ children: title
393
+ }
394
+ ),
395
+ !!actions && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
396
+ "div",
397
+ {
398
+ className: "flex w-full justify-end gap-2 md:w-auto",
399
+ "data-testid": "job-header-actions",
400
+ children: actions
401
+ }
402
+ )
403
+ ]
404
+ }
405
+ ),
406
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
407
+ "div",
408
+ {
409
+ "data-testid": "job-header-tags",
410
+ className: "flex flex-row flex-wrap items-center justify-start gap-2",
411
+ children: tags?.map(({ name, label, icon }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
412
+ Chip_default,
413
+ {
414
+ size: "small",
415
+ variant: "neutral",
416
+ "aria-label": name,
417
+ "data-testid": `job-header-tag-${name}`,
418
+ children: [
419
+ renderIcon(icon),
420
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: label })
421
+ ]
422
+ },
423
+ name
424
+ ))
425
+ }
426
+ )
427
+ ] })
428
+ ]
429
+ }
430
+ );
431
+ }
432
+ // Annotate the CommonJS export names for ESM import in node:
433
+ 0 && (module.exports = {
434
+ JobHeader
435
+ });
436
+ //# sourceMappingURL=JobHeader.cjs.map