@next-degree/pickle-shared-js 0.15.1 → 0.15.3

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 (145) hide show
  1. package/dist/{chunk-VBLDMVVW.cjs → chunk-2XIO3WQ2.cjs} +4 -4
  2. package/dist/{chunk-VBLDMVVW.cjs.map → chunk-2XIO3WQ2.cjs.map} +1 -1
  3. package/dist/{chunk-ZZCTMR2F.cjs → chunk-2YUUVN7E.cjs} +3 -3
  4. package/dist/{chunk-ZZCTMR2F.cjs.map → chunk-2YUUVN7E.cjs.map} +1 -1
  5. package/dist/{chunk-QRMNGILI.cjs → chunk-4F2PRKMM.cjs} +4 -4
  6. package/dist/{chunk-QRMNGILI.cjs.map → chunk-4F2PRKMM.cjs.map} +1 -1
  7. package/dist/{chunk-JGZ2TDX4.js → chunk-556GH3CB.js} +6 -6
  8. package/dist/{chunk-JGZ2TDX4.js.map → chunk-556GH3CB.js.map} +1 -1
  9. package/dist/{chunk-JZLJVA4I.js → chunk-5BJLPYZT.js} +3 -3
  10. package/dist/{chunk-JZLJVA4I.js.map → chunk-5BJLPYZT.js.map} +1 -1
  11. package/dist/{chunk-F3FYMCRO.js → chunk-5IFDS3CJ.js} +3 -3
  12. package/dist/{chunk-F3FYMCRO.js.map → chunk-5IFDS3CJ.js.map} +1 -1
  13. package/dist/{chunk-MSOLVPPR.js → chunk-6Z6T5WWS.js} +4 -4
  14. package/dist/{chunk-MSOLVPPR.js.map → chunk-6Z6T5WWS.js.map} +1 -1
  15. package/dist/{chunk-5EUHR4DQ.cjs → chunk-7PVEU6NQ.cjs} +13 -13
  16. package/dist/{chunk-5EUHR4DQ.cjs.map → chunk-7PVEU6NQ.cjs.map} +1 -1
  17. package/dist/{chunk-K76RPF2X.js → chunk-CPZFINPG.js} +3 -3
  18. package/dist/{chunk-K76RPF2X.js.map → chunk-CPZFINPG.js.map} +1 -1
  19. package/dist/{chunk-CU67BLKX.cjs → chunk-E244YSGF.cjs} +39 -47
  20. package/dist/chunk-E244YSGF.cjs.map +1 -0
  21. package/dist/{chunk-F567WG2X.cjs → chunk-G2XXJEDS.cjs} +6 -6
  22. package/dist/{chunk-F567WG2X.cjs.map → chunk-G2XXJEDS.cjs.map} +1 -1
  23. package/dist/{chunk-LV6BHE7Q.cjs → chunk-HDQBXWSS.cjs} +12 -3
  24. package/dist/chunk-HDQBXWSS.cjs.map +1 -0
  25. package/dist/{chunk-R73HWAYA.js → chunk-KKYX5Y5N.js} +3 -3
  26. package/dist/{chunk-R73HWAYA.js.map → chunk-KKYX5Y5N.js.map} +1 -1
  27. package/dist/{chunk-IXCAC2PV.js → chunk-KMHPNIJQ.js} +4 -4
  28. package/dist/{chunk-IXCAC2PV.js.map → chunk-KMHPNIJQ.js.map} +1 -1
  29. package/dist/{chunk-5NQTYPZG.js → chunk-KRG4BXBL.js} +3 -3
  30. package/dist/{chunk-5NQTYPZG.js.map → chunk-KRG4BXBL.js.map} +1 -1
  31. package/dist/{chunk-CQHERJ3J.js → chunk-M4WUWRGI.js} +4 -4
  32. package/dist/chunk-M4WUWRGI.js.map +1 -0
  33. package/dist/{chunk-U6RELZ6H.cjs → chunk-MNDXLLWH.cjs} +10 -10
  34. package/dist/{chunk-U6RELZ6H.cjs.map → chunk-MNDXLLWH.cjs.map} +1 -1
  35. package/dist/{chunk-567FG76G.cjs → chunk-OXDKVZZ5.cjs} +4 -4
  36. package/dist/{chunk-567FG76G.cjs.map → chunk-OXDKVZZ5.cjs.map} +1 -1
  37. package/dist/{chunk-4E3ANVRR.js → chunk-OZJZVEF2.js} +3 -3
  38. package/dist/{chunk-4E3ANVRR.js.map → chunk-OZJZVEF2.js.map} +1 -1
  39. package/dist/{chunk-4IMEF4J5.cjs → chunk-PU52LECH.cjs} +4 -4
  40. package/dist/{chunk-4IMEF4J5.cjs.map → chunk-PU52LECH.cjs.map} +1 -1
  41. package/dist/{chunk-RKLUMDJB.cjs → chunk-SJ2X3D2Z.cjs} +3 -3
  42. package/dist/chunk-SJ2X3D2Z.cjs.map +1 -0
  43. package/dist/{chunk-ZSNEG5J7.js → chunk-SRIUPNYK.js} +12 -3
  44. package/dist/chunk-SRIUPNYK.js.map +1 -0
  45. package/dist/{chunk-AMMLIOH5.cjs → chunk-TOEADI6J.cjs} +4 -4
  46. package/dist/{chunk-AMMLIOH5.cjs.map → chunk-TOEADI6J.cjs.map} +1 -1
  47. package/dist/{chunk-ZILKCCXQ.cjs → chunk-VBRVZZ2I.cjs} +4 -4
  48. package/dist/chunk-VBRVZZ2I.cjs.map +1 -0
  49. package/dist/{chunk-QURNDLRE.js → chunk-VE3GPIUQ.js} +19 -9
  50. package/dist/chunk-VE3GPIUQ.js.map +1 -0
  51. package/dist/{chunk-W4QTU3U6.js → chunk-VLAFOLD6.js} +4 -4
  52. package/dist/{chunk-W4QTU3U6.js.map → chunk-VLAFOLD6.js.map} +1 -1
  53. package/dist/{chunk-W4QQBNJD.js → chunk-VSQKQNTT.js} +31 -39
  54. package/dist/chunk-VSQKQNTT.js.map +1 -0
  55. package/dist/{chunk-ODHIUBLC.js → chunk-VZZZQZBC.js} +3 -3
  56. package/dist/chunk-VZZZQZBC.js.map +1 -0
  57. package/dist/{chunk-XKLOANYB.cjs → chunk-WRULIQZE.cjs} +19 -9
  58. package/dist/chunk-WRULIQZE.cjs.map +1 -0
  59. package/dist/{chunk-KKJS3J3C.cjs → chunk-YOQY4H6Z.cjs} +11 -11
  60. package/dist/{chunk-KKJS3J3C.cjs.map → chunk-YOQY4H6Z.cjs.map} +1 -1
  61. package/dist/components/jobCard/JobLocation.cjs +1 -1
  62. package/dist/components/jobCard/JobLocation.d.cts +1 -1
  63. package/dist/components/jobCard/JobLocation.d.ts +1 -1
  64. package/dist/components/jobCard/JobLocation.js +1 -1
  65. package/dist/components/jobPost/JobDescription.cjs +4 -4
  66. package/dist/components/jobPost/JobDescription.js +3 -3
  67. package/dist/components/jobPost/JobHeader.cjs +4 -4
  68. package/dist/components/jobPost/JobHeader.js +3 -3
  69. package/dist/components/jobPost/JobPost.cjs +19 -19
  70. package/dist/components/jobPost/JobPost.d.cts +1 -1
  71. package/dist/components/jobPost/JobPost.d.ts +1 -1
  72. package/dist/components/jobPost/JobPost.js +18 -18
  73. package/dist/components/primitives/command.cjs +11 -11
  74. package/dist/components/primitives/command.js +2 -2
  75. package/dist/components/primitives/dialog.cjs +11 -11
  76. package/dist/components/primitives/dialog.js +1 -1
  77. package/dist/components/primitives/popover.cjs +4 -4
  78. package/dist/components/primitives/popover.d.cts +3 -1
  79. package/dist/components/primitives/popover.d.ts +3 -1
  80. package/dist/components/primitives/popover.js +1 -1
  81. package/dist/components/ui/Button.cjs +3 -3
  82. package/dist/components/ui/Button.d.cts +1 -1
  83. package/dist/components/ui/Button.d.ts +1 -1
  84. package/dist/components/ui/Button.js +1 -1
  85. package/dist/components/ui/Combobox.cjs +7 -8
  86. package/dist/components/ui/Combobox.d.cts +5 -3
  87. package/dist/components/ui/Combobox.d.ts +5 -3
  88. package/dist/components/ui/Combobox.js +6 -7
  89. package/dist/components/ui/DatePicker.cjs +3 -3
  90. package/dist/components/ui/DatePicker.js +2 -2
  91. package/dist/components/ui/ListItem.cjs +2 -4
  92. package/dist/components/ui/ListItem.js +1 -3
  93. package/dist/components/ui/ModalDialog.cjs +4 -4
  94. package/dist/components/ui/ModalDialog.js +3 -3
  95. package/dist/components/ui/PlacesQueryInput.cjs +5 -5
  96. package/dist/components/ui/PlacesQueryInput.js +4 -4
  97. package/dist/components/ui/ReadMore.cjs +3 -3
  98. package/dist/components/ui/ReadMore.js +2 -2
  99. package/dist/components/ui/buttonShadcn.d.cts +1 -1
  100. package/dist/components/ui/buttonShadcn.d.ts +1 -1
  101. package/dist/{displayText-DM6guUAX.d.cts → displayText-BDPndCI9.d.cts} +1 -1
  102. package/dist/{displayText-qEuo9Wam.d.ts → displayText-EpnIpZ38.d.ts} +1 -1
  103. package/dist/hooks/useDisplayText.cjs +4 -4
  104. package/dist/hooks/useDisplayText.d.cts +2 -2
  105. package/dist/hooks/useDisplayText.d.ts +2 -2
  106. package/dist/hooks/useDisplayText.js +3 -3
  107. package/dist/index.cjs +57 -57
  108. package/dist/index.d.cts +3 -3
  109. package/dist/index.d.ts +3 -3
  110. package/dist/index.js +30 -30
  111. package/dist/{job_posting_service_sanity-BEg9UHdK.d.cts → job_posting_service_sanity-BN7XcVxU.d.cts} +7 -7
  112. package/dist/{job_posting_service_sanity-BEwJ08pV.d.ts → job_posting_service_sanity-BNQsNQs2.d.ts} +7 -7
  113. package/dist/lib/locations.d.cts +2 -2
  114. package/dist/lib/locations.d.ts +2 -2
  115. package/dist/lib/mappings.d.cts +2 -2
  116. package/dist/lib/mappings.d.ts +2 -2
  117. package/dist/services/displayText.cjs +3 -3
  118. package/dist/services/displayText.d.cts +2 -2
  119. package/dist/services/displayText.d.ts +2 -2
  120. package/dist/services/displayText.js +2 -2
  121. package/dist/styles/globals.css +15 -3
  122. package/dist/styles/globals.css.map +1 -1
  123. package/dist/types/data/job_posting_service_latest.d.cts +1 -1
  124. package/dist/types/data/job_posting_service_latest.d.ts +1 -1
  125. package/dist/types/index.d.cts +2 -2
  126. package/dist/types/index.d.ts +2 -2
  127. package/dist/types/latest/custom/job_posting_service_sanity.d.cts +2 -2
  128. package/dist/types/latest/custom/job_posting_service_sanity.d.ts +2 -2
  129. package/dist/types/latest/job_posting_service_latest.d.cts +1 -1
  130. package/dist/types/latest/job_posting_service_latest.d.ts +1 -1
  131. package/package.json +1 -1
  132. package/dist/chunk-CQHERJ3J.js.map +0 -1
  133. package/dist/chunk-CU67BLKX.cjs.map +0 -1
  134. package/dist/chunk-LV6BHE7Q.cjs.map +0 -1
  135. package/dist/chunk-ODHIUBLC.js.map +0 -1
  136. package/dist/chunk-QURNDLRE.js.map +0 -1
  137. package/dist/chunk-RKLUMDJB.cjs.map +0 -1
  138. package/dist/chunk-W4QQBNJD.js.map +0 -1
  139. package/dist/chunk-XKLOANYB.cjs.map +0 -1
  140. package/dist/chunk-ZILKCCXQ.cjs.map +0 -1
  141. package/dist/chunk-ZSNEG5J7.js.map +0 -1
  142. package/dist/{job_posting_service_latest-BXd2nu_U.d.cts → job_posting_service_latest-B6Trs6sX.d.cts} +2 -2
  143. package/dist/{job_posting_service_latest-BXd2nu_U.d.ts → job_posting_service_latest-B6Trs6sX.d.ts} +2 -2
  144. package/dist/{job_posting_service_latest-Dok46B7B.d.cts → job_posting_service_latest-BKz5U2Gp.d.cts} +2 -2
  145. package/dist/{job_posting_service_latest-Dok46B7B.d.ts → job_posting_service_latest-BKz5U2Gp.d.ts} +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/ModalDialog.tsx"],"names":[],"mappings":"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","file":"chunk-W4QTU3U6.js","sourcesContent":["'use client'\n\nimport { X } from 'lucide-react'\nimport { type ReactNode } from 'react'\n\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/components/primitives/dialog'\nimport { Button } from '@/components/ui/Button'\nimport { cn } from '@/lib/utils'\n\ntype FooterButton = {\n text: string\n onClick: () => void\n variant?: 'primary' | 'secondary' | 'neutral' | 'link'\n size?: 'extra-small' | 'small' | 'medium' | 'large'\n disabled?: boolean\n isLoading?: boolean\n className?: string\n}\n\ntype ModalDialogProps = Readonly<{\n isOpen: boolean\n onOpenChange?: (open: boolean) => void\n onClose?: () => void\n isSubmitting?: boolean\n title: string\n titleIcon?: ReactNode\n description?: ReactNode\n children: ReactNode\n footer?: {\n primary?: FooterButton\n secondary?: FooterButton\n tertiary?: FooterButton\n }\n classNames?: {\n content?: string\n header?: string\n title?: string\n description?: string\n footer?: string\n body?: string\n }\n}>\n\n/**\n * Reusable modal dialog component using Radix UI Dialog\n * Features:\n * - Escape key handling (built into Dialog)\n * - Backdrop click to close (built into Dialog)\n * - Close button with X icon\n * - Accessible with ARIA attributes\n * - Customizable container classNames\n * - Prevents closing when isSubmitting is true\n */\nexport function ModalDialog({\n isOpen,\n onOpenChange,\n onClose,\n isSubmitting = false,\n title,\n titleIcon,\n description,\n children,\n footer,\n classNames,\n}: ModalDialogProps) {\n const handleOpenChange = (open: boolean) => {\n // Prevent closing when submitting\n if (!open && isSubmitting) {\n return\n }\n\n // Call onOpenChange if provided (for boolean-based API)\n if (onOpenChange) {\n onOpenChange(open)\n return\n }\n\n // Call onClose if provided (for callback-based API)\n if (!open && onClose) {\n onClose()\n }\n }\n\n return (\n <Dialog open={isOpen} onOpenChange={handleOpenChange}>\n <DialogContent className={cn('flex flex-col', classNames?.content)}>\n <DialogHeader\n className={cn(\n 'flex flex-row items-center justify-between gap-2 border-b border-grey-10 px-6 py-4',\n classNames?.header\n )}\n >\n <div className=\"flex flex-col gap-1\">\n <DialogTitle className={cn(classNames?.title)}>\n {titleIcon && (\n <div className=\"flex flex-row items-center gap-2\">\n {titleIcon}\n <span>{title}</span>\n </div>\n )}\n {!titleIcon && title}\n </DialogTitle>\n {description ? (\n <DialogDescription className={cn(classNames?.description)}>\n {description}\n </DialogDescription>\n ) : (\n <DialogDescription className=\"sr-only\">No description provided</DialogDescription>\n )}\n </div>\n <DialogClose disabled={isSubmitting} className=\"m-0\" aria-label=\"Close\">\n <X className=\"h-5 w-5\" />\n </DialogClose>\n </DialogHeader>\n\n <div className={cn('px-6', classNames?.body)}>{children}</div>\n\n {footer && (footer.primary || footer.secondary || footer.tertiary) && (\n <DialogFooter\n className={cn(\n 'flex items-center gap-2 border-t border-grey-10 px-6 py-4',\n classNames?.footer\n )}\n >\n {footer.tertiary && (\n <Button\n type=\"button\"\n size={footer.tertiary.size || 'small'}\n variant={footer.tertiary.variant || 'link'}\n onClick={footer.tertiary.onClick}\n disabled={footer.tertiary.disabled || isSubmitting}\n isLoading={footer.tertiary.isLoading}\n className={cn('w-auto', footer.tertiary.className)}\n >\n {footer.tertiary.text}\n </Button>\n )}\n {footer.secondary && (\n <Button\n type=\"button\"\n size={footer.secondary.size || 'small'}\n variant={footer.secondary.variant || 'neutral'}\n onClick={footer.secondary.onClick}\n disabled={footer.secondary.disabled || isSubmitting}\n isLoading={footer.secondary.isLoading}\n className={cn('w-auto', footer.secondary.className)}\n >\n {footer.secondary.text}\n </Button>\n )}\n {footer.primary && (\n <Button\n type=\"button\"\n size={footer.primary.size || 'small'}\n variant={footer.primary.variant || 'primary'}\n onClick={footer.primary.onClick}\n disabled={footer.primary.disabled || isSubmitting}\n isLoading={footer.primary.isLoading}\n className={cn('w-auto', footer.primary.className)}\n >\n {footer.primary.text}\n </Button>\n )}\n </DialogFooter>\n )}\n </DialogContent>\n </Dialog>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/components/ui/ModalDialog.tsx"],"names":[],"mappings":"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","file":"chunk-VLAFOLD6.js","sourcesContent":["'use client'\n\nimport { X } from 'lucide-react'\nimport { type ReactNode } from 'react'\n\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/components/primitives/dialog'\nimport { Button } from '@/components/ui/Button'\nimport { cn } from '@/lib/utils'\n\ntype FooterButton = {\n text: string\n onClick: () => void\n variant?: 'primary' | 'secondary' | 'neutral' | 'link'\n size?: 'extra-small' | 'small' | 'medium' | 'large'\n disabled?: boolean\n isLoading?: boolean\n className?: string\n}\n\ntype ModalDialogProps = Readonly<{\n isOpen: boolean\n onOpenChange?: (open: boolean) => void\n onClose?: () => void\n isSubmitting?: boolean\n title: string\n titleIcon?: ReactNode\n description?: ReactNode\n children: ReactNode\n footer?: {\n primary?: FooterButton\n secondary?: FooterButton\n tertiary?: FooterButton\n }\n classNames?: {\n content?: string\n header?: string\n title?: string\n description?: string\n footer?: string\n body?: string\n }\n}>\n\n/**\n * Reusable modal dialog component using Radix UI Dialog\n * Features:\n * - Escape key handling (built into Dialog)\n * - Backdrop click to close (built into Dialog)\n * - Close button with X icon\n * - Accessible with ARIA attributes\n * - Customizable container classNames\n * - Prevents closing when isSubmitting is true\n */\nexport function ModalDialog({\n isOpen,\n onOpenChange,\n onClose,\n isSubmitting = false,\n title,\n titleIcon,\n description,\n children,\n footer,\n classNames,\n}: ModalDialogProps) {\n const handleOpenChange = (open: boolean) => {\n // Prevent closing when submitting\n if (!open && isSubmitting) {\n return\n }\n\n // Call onOpenChange if provided (for boolean-based API)\n if (onOpenChange) {\n onOpenChange(open)\n return\n }\n\n // Call onClose if provided (for callback-based API)\n if (!open && onClose) {\n onClose()\n }\n }\n\n return (\n <Dialog open={isOpen} onOpenChange={handleOpenChange}>\n <DialogContent className={cn('flex flex-col', classNames?.content)}>\n <DialogHeader\n className={cn(\n 'flex flex-row items-center justify-between gap-2 border-b border-grey-10 px-6 py-4',\n classNames?.header\n )}\n >\n <div className=\"flex flex-col gap-1\">\n <DialogTitle className={cn(classNames?.title)}>\n {titleIcon && (\n <div className=\"flex flex-row items-center gap-2\">\n {titleIcon}\n <span>{title}</span>\n </div>\n )}\n {!titleIcon && title}\n </DialogTitle>\n {description ? (\n <DialogDescription className={cn(classNames?.description)}>\n {description}\n </DialogDescription>\n ) : (\n <DialogDescription className=\"sr-only\">No description provided</DialogDescription>\n )}\n </div>\n <DialogClose disabled={isSubmitting} className=\"m-0\" aria-label=\"Close\">\n <X className=\"h-5 w-5\" />\n </DialogClose>\n </DialogHeader>\n\n <div className={cn('px-6', classNames?.body)}>{children}</div>\n\n {footer && (footer.primary || footer.secondary || footer.tertiary) && (\n <DialogFooter\n className={cn(\n 'flex items-center gap-2 border-t border-grey-10 px-6 py-4',\n classNames?.footer\n )}\n >\n {footer.tertiary && (\n <Button\n type=\"button\"\n size={footer.tertiary.size || 'small'}\n variant={footer.tertiary.variant || 'link'}\n onClick={footer.tertiary.onClick}\n disabled={footer.tertiary.disabled || isSubmitting}\n isLoading={footer.tertiary.isLoading}\n className={cn('w-auto', footer.tertiary.className)}\n >\n {footer.tertiary.text}\n </Button>\n )}\n {footer.secondary && (\n <Button\n type=\"button\"\n size={footer.secondary.size || 'small'}\n variant={footer.secondary.variant || 'neutral'}\n onClick={footer.secondary.onClick}\n disabled={footer.secondary.disabled || isSubmitting}\n isLoading={footer.secondary.isLoading}\n className={cn('w-auto', footer.secondary.className)}\n >\n {footer.secondary.text}\n </Button>\n )}\n {footer.primary && (\n <Button\n type=\"button\"\n size={footer.primary.size || 'small'}\n variant={footer.primary.variant || 'primary'}\n onClick={footer.primary.onClick}\n disabled={footer.primary.disabled || isSubmitting}\n isLoading={footer.primary.isLoading}\n className={cn('w-auto', footer.primary.className)}\n >\n {footer.primary.text}\n </Button>\n )}\n </DialogFooter>\n )}\n </DialogContent>\n </Dialog>\n )\n}\n"]}
@@ -1,14 +1,14 @@
1
- import { ListItem_default } from './chunk-QURNDLRE.js';
1
+ import { ListItem_default } from './chunk-VE3GPIUQ.js';
2
2
  import { Label_default } from './chunk-CAGLLWPR.js';
3
3
  import { ErrorMessage_default } from './chunk-CWTO3NXW.js';
4
- import { Popover, PopoverTrigger, PopoverContent } from './chunk-ODHIUBLC.js';
4
+ import { Popover, PopoverTrigger, PopoverContent } from './chunk-VZZZQZBC.js';
5
5
  import { Separator } from './chunk-FNCPK4RH.js';
6
6
  import { Badge } from './chunk-TVYLTYUK.js';
7
- import { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem } from './chunk-R73HWAYA.js';
7
+ import { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem } from './chunk-KKYX5Y5N.js';
8
8
  import { cn } from './chunk-2FGZQI42.js';
9
9
  import { cva } from 'cva';
10
- import { icons, ChevronDownIcon, CircleX } from 'lucide-react';
11
- import { forwardRef, useState, useRef, useEffect } from 'react';
10
+ import { ChevronDownIcon, CircleX } from 'lucide-react';
11
+ import { forwardRef, useState, useRef, useMemo } from 'react';
12
12
  import { jsxs, jsx } from 'react/jsx-runtime';
13
13
 
14
14
  var Combobox = forwardRef((props, ref) => {
@@ -24,6 +24,7 @@ var Combobox = forwardRef((props, ref) => {
24
24
  multiselect,
25
25
  placeholder,
26
26
  error,
27
+ useAnchor = true,
27
28
  variant = "default",
28
29
  size,
29
30
  icon,
@@ -31,57 +32,47 @@ var Combobox = forwardRef((props, ref) => {
31
32
  onChange: handleChange,
32
33
  children: footer
33
34
  } = props;
34
- const [selected, setSelected] = useState([]);
35
35
  const [open, setOpen] = useState(false);
36
- const isUserUpdate = useRef(false);
37
- const IconComponent = icon && icons[icon];
36
+ const containerRef = useRef(null);
37
+ const IconComponent = icon;
38
38
  const hideSearchBox = options?.length <= 5;
39
39
  const isDefault = variant === "default";
40
40
  const isChip = variant === "chip";
41
+ const optionsByValue = useMemo(
42
+ () => new Map(options.map((o) => [o.value, o])),
43
+ [options]
44
+ );
45
+ const selected = useMemo(() => {
46
+ const valueArray = multiselect ? value ?? [] : value ? [value] : [];
47
+ return valueArray.map((v) => optionsByValue.get(v)).filter((v) => v !== void 0);
48
+ }, [value, multiselect, optionsByValue]);
41
49
  const isEmpty = selected.length === 0;
42
50
  const showChevron = isDefault ? isEmpty : true;
43
51
  const close = () => setOpen(false);
44
- useEffect(() => {
45
- if (!isUserUpdate.current) {
46
- const valueArray = multiselect ? value ?? [] : value ? [value] : [];
47
- setSelected(
48
- valueArray.map((v) => options.find((o) => o.value === v)).filter((v) => v !== void 0)
49
- );
50
- }
51
- }, [value, options, multiselect]);
52
- useEffect(() => {
53
- if (isUserUpdate.current) {
54
- if (multiselect) {
55
- handleChange?.(selected.map((o) => o.value));
56
- } else {
57
- handleChange?.(selected[0]?.value ?? "");
58
- }
59
- isUserUpdate.current = false;
60
- }
61
- }, [selected, multiselect, handleChange]);
62
- const updateMultiSelect = (prev, option) => {
63
- return prev.some((o) => o.value === option.value) ? prev.filter((v) => v !== option) : [...prev, option];
64
- };
65
- const handleSelect = (value2) => {
66
- const option = options.find((o) => o.value === value2);
52
+ const handleSelect = (nextValue) => {
53
+ const option = optionsByValue.get(nextValue);
67
54
  if (!option || option.disabled) return;
68
- isUserUpdate.current = true;
69
55
  if (multiselect) {
70
- setSelected((prev) => updateMultiSelect(prev, option));
56
+ const current = Array.isArray(value) ? value : [];
57
+ const next = current.includes(option.value) ? current.filter((v) => v !== option.value) : [...current, option.value];
58
+ handleChange?.(next);
71
59
  } else {
72
- setSelected([option]);
60
+ handleChange?.(option.value);
73
61
  close();
74
62
  }
75
63
  };
76
64
  const handleClear = () => {
77
- isUserUpdate.current = true;
78
- setSelected([]);
65
+ if (multiselect) {
66
+ handleChange?.([]);
67
+ } else {
68
+ handleChange?.("");
69
+ }
79
70
  };
80
71
  const handleDisplayValue = () => {
81
72
  const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(", ") : placeholder;
82
73
  return isDefault ? defaultLabel : label;
83
74
  };
84
- return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-1", className), children: [
75
+ return /* @__PURE__ */ jsxs("div", { ref: containerRef, className: cn("flex flex-col gap-1", className), children: [
85
76
  isDefault && /* @__PURE__ */ jsx(
86
77
  Label_default,
87
78
  {
@@ -138,6 +129,7 @@ var Combobox = forwardRef((props, ref) => {
138
129
  /* @__PURE__ */ jsx(
139
130
  PopoverContent,
140
131
  {
132
+ container: useAnchor ? containerRef.current : void 0,
141
133
  className: cn(
142
134
  "flex w-full max-w-xs flex-col overflow-hidden p-0",
143
135
  "max-h-[--radix-popover-content-available-height]",
@@ -218,5 +210,5 @@ var triggerVariants = cva(
218
210
  );
219
211
 
220
212
  export { Combobox };
221
- //# sourceMappingURL=chunk-W4QQBNJD.js.map
222
- //# sourceMappingURL=chunk-W4QQBNJD.js.map
213
+ //# sourceMappingURL=chunk-VSQKQNTT.js.map
214
+ //# sourceMappingURL=chunk-VSQKQNTT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/Combobox.tsx"],"names":["id"],"mappings":"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","file":"chunk-VSQKQNTT.js","sourcesContent":["'use client'\n\nimport { cva, type VariantProps } from 'cva'\nimport { ChevronDownIcon, CircleX } from 'lucide-react'\nimport {\n type ComponentProps,\n type ComponentType,\n forwardRef,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/primitives/command'\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/primitives/popover'\nimport { Separator } from '@/components/primitives/separator'\nimport { Badge } from '@/components/ui/Badge'\nimport ErrorMessage from '@/components/ui/ErrorMessage'\nimport Label from '@/components/ui/Label'\nimport ListItem from '@/components/ui/ListItem'\nimport { cn } from '@/lib/utils'\n\ntype Icon = { icon?: ComponentType<{ className?: string }> }\ntype LabelProps = { label?: string; description?: string }\ntype Children = { children?: (props: { close: () => void }) => JSX.Element }\ntype Option = {\n id: string\n value: string\n title: string\n description?: string\n icon?: string\n disabled?: boolean\n}\ntype ClassNames = { label?: string; trigger?: string; items?: string; content?: string }\ntype Shared = {\n options: Option[]\n classNames?: ClassNames\n placeholder?: string\n error?: string\n useAnchor?: boolean\n}\ntype MultiSelect = { multiselect: true; value?: string[]; onChange?: (v: string[]) => void }\ntype SingleSelect = { multiselect?: false; value?: string; onChange?: (v: string) => void }\ntype TriggerVariants = VariantProps<typeof triggerVariants>\ntype SelectProps = Omit<ComponentProps<'select'>, 'value' | 'onChange' | 'size' | 'children'>\ntype Props = TriggerVariants & SelectProps & Children & Shared & Icon & LabelProps\ntype MultiSelectProps = Props & MultiSelect\ntype SingleSelectProps = Props & SingleSelect\ntype ComboboxProps = MultiSelectProps | SingleSelectProps\n\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>((props, ref) => {\n const {\n id,\n name,\n value,\n label,\n options,\n required,\n description,\n classNames,\n multiselect,\n placeholder,\n error,\n useAnchor = true,\n variant = 'default',\n size,\n icon,\n className,\n onChange: handleChange,\n children: footer,\n } = props\n const [open, setOpen] = useState(false)\n const containerRef = useRef<HTMLDivElement>(null)\n const IconComponent = icon\n const hideSearchBox = options?.length <= 5\n const isDefault = variant === 'default'\n const isChip = variant === 'chip'\n const optionsByValue = useMemo(\n () => new Map(options.map((o) => [o.value, o] as const)),\n [options]\n )\n const selected = useMemo(() => {\n const valueArray = multiselect ? ((value ?? []) as string[]) : value ? [value as string] : []\n return valueArray.map((v) => optionsByValue.get(v)).filter((v): v is Option => v !== undefined)\n }, [value, multiselect, optionsByValue])\n const isEmpty = selected.length === 0\n const showChevron = isDefault ? isEmpty : true\n const close = () => setOpen(false)\n\n const handleSelect = (nextValue: string) => {\n const option = optionsByValue.get(nextValue)\n if (!option || option.disabled) return\n\n if (multiselect) {\n const current = (Array.isArray(value) ? value : []) as string[]\n const next = current.includes(option.value)\n ? current.filter((v) => v !== option.value)\n : [...current, option.value]\n handleChange?.(next)\n } else {\n handleChange?.(option.value)\n close()\n }\n }\n\n const handleClear = () => {\n if (multiselect) {\n handleChange?.([])\n } else {\n handleChange?.('')\n }\n }\n\n const handleDisplayValue = () => {\n const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(', ') : placeholder\n return isDefault ? defaultLabel : label\n }\n\n return (\n <div ref={containerRef} className={cn('flex flex-col gap-1', className)}>\n {isDefault && (\n <Label\n text={label}\n htmlFor={name}\n required={required}\n description={description}\n className={classNames?.label}\n />\n )}\n\n <div className=\"relative flex\">\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger\n asChild\n disabled={options.length === 0}\n data-testid={`${id ?? name}-combobox-trigger`}\n >\n <div\n ref={ref}\n className={cn(\n triggerVariants({ variant, size }),\n isDefault && !isEmpty && 'pr-10',\n classNames?.trigger\n )}\n aria-expanded={open}\n >\n {isDefault && IconComponent && <IconComponent className=\"h-4 w-4 shrink-0\" />}\n {isChip && !isEmpty && <Badge variant=\"purple\">{selected.length}</Badge>}\n\n <span\n className={cn(\n 'w-full truncate leading-normal',\n isDefault && isEmpty && 'text-grey-50'\n )}\n >\n {handleDisplayValue()}\n </span>\n\n {showChevron && (\n <ChevronDownIcon\n className=\"shrink-0 transform group-data-[state=open]:rotate-180\"\n size=\"16\"\n />\n )}\n </div>\n </PopoverTrigger>\n\n <PopoverContent\n container={useAnchor ? containerRef.current : undefined}\n className={cn(\n 'flex w-full max-w-xs flex-col overflow-hidden p-0',\n 'max-h-[--radix-popover-content-available-height]',\n classNames?.content\n )}\n collisionPadding={8}\n sideOffset={4}\n align=\"start\"\n >\n <Command>\n {!hideSearchBox && <CommandInput placeholder=\"Search...\" />}\n\n <CommandList>\n <CommandEmpty>No results</CommandEmpty>\n <CommandGroup>\n {options.map(({ id, disabled, ...option }) => (\n <CommandItem\n key={id}\n value={option.title}\n disabled={disabled}\n onSelect={() => handleSelect(option.value)}\n className={cn(disabled && 'cursor-not-allowed opacity-50')}\n >\n <ListItem\n className={cn(classNames?.items, 'truncate py-1')}\n isSelected={selected.some((s) => s.value === option.value)}\n hasCheckbox={multiselect}\n {...option}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n\n {!!footer && <Separator />}\n {footer && footer({ close })}\n </Command>\n </PopoverContent>\n </Popover>\n\n {isDefault && !isEmpty && (\n <button\n type=\"button\"\n className=\"absolute inset-y-0 right-1 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20\"\n onClick={handleClear}\n >\n <CircleX className=\"h-4 w-4 text-green-100\" />\n </button>\n )}\n </div>\n\n <ErrorMessage message={error} />\n </div>\n )\n})\nCombobox.displayName = 'Combobox'\n\nconst triggerVariants = cva(\n 'group relative cursor-pointer text-grey-80 flex flex-row items-center justify-between gap-2 border border-grey-20 focus:outline-green-80 disabled:bg-grey-5',\n {\n variants: {\n variant: {\n default: ['w-full', 'rounded-lg'],\n chip: [\n 'font-bold',\n 'rounded-3xl',\n 'data-[state=open]:bg-black',\n 'data-[state=open]:text-white',\n ],\n },\n size: {\n small: ['h-8', 'py-1', 'px-2', 'text-xs'],\n normal: ['h-9', 'py-2', 'px-3', 'text-sm'],\n large: ['h-10', 'py-2', 'px-4', 'text-base'],\n xlarge: ['h-11', 'py-3', 'px-4', 'text-base'],\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'normal',\n },\n }\n)\n"]}
@@ -5,7 +5,7 @@ import { jsx } from 'react/jsx-runtime';
5
5
 
6
6
  var Popover = PopoverPrimitive.Root;
7
7
  var PopoverTrigger = PopoverPrimitive.Trigger;
8
- var PopoverContent = React.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
8
+ var PopoverContent = React.forwardRef(({ className, align = "center", sideOffset = 4, container, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { container, children: /* @__PURE__ */ jsx(
9
9
  PopoverPrimitive.Content,
10
10
  {
11
11
  ref,
@@ -21,5 +21,5 @@ var PopoverContent = React.forwardRef(({ className, align = "center", sideOffset
21
21
  PopoverContent.displayName = PopoverPrimitive.Content.displayName;
22
22
 
23
23
  export { Popover, PopoverContent, PopoverTrigger };
24
- //# sourceMappingURL=chunk-ODHIUBLC.js.map
25
- //# sourceMappingURL=chunk-ODHIUBLC.js.map
24
+ //# sourceMappingURL=chunk-VZZZQZBC.js.map
25
+ //# sourceMappingURL=chunk-VZZZQZBC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/primitives/popover.tsx"],"names":[],"mappings":";;;;;AAOA,IAAM,OAA2B,GAAA,gBAAA,CAAA;AAEjC,IAAM,cAAkC,GAAA,gBAAA,CAAA;AAMxC,IAAM,iBAAuB,KAG3B,CAAA,UAAA,CAAA,CAAC,EAAE,SAAA,EAAW,QAAQ,QAAU,EAAA,UAAA,GAAa,CAAG,EAAA,SAAA,EAAW,GAAG,KAAM,EAAA,EAAG,wBACrD,GAAA,CAAA,gBAAA,CAAA,MAAA,EAAjB,EAAwB,SACvB,EAAA,QAAA,kBAAA,GAAA;AAAA,EAAkB,gBAAA,CAAA,OAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAW,EAAA,EAAA;AAAA,MACT,yZAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EACF,CACD;AACD,cAAA,CAAe,cAA+B,gBAAQ,CAAA,OAAA,CAAA,WAAA","file":"chunk-VZZZQZBC.js","sourcesContent":["'use client'\n\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport * as React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\ntype PopoverContentProps = React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> & {\n container?: HTMLElement | null\n}\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n PopoverContentProps\n>(({ className, align = 'center', sideOffset = 4, container, ...props }, ref) => (\n <PopoverPrimitive.Portal container={container}>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 rounded-2xl border bg-white p-4 text-black shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverContent, PopoverTrigger }\n"]}
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var chunkPTNATMEI_cjs = require('./chunk-PTNATMEI.cjs');
4
3
  var chunkMGWZXPMF_cjs = require('./chunk-MGWZXPMF.cjs');
5
4
  var lucideReact = require('lucide-react');
6
5
  var jsxRuntime = require('react/jsx-runtime');
@@ -27,22 +26,33 @@ function ListItem({
27
26
  "li",
28
27
  {
29
28
  className: chunkMGWZXPMF_cjs.cn(
30
- "group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",
29
+ "group relative flex w-72 cursor-pointer flex-row items-center gap-2 overflow-hidden text-left text-sm",
31
30
  className
32
31
  ),
33
32
  ...props,
34
33
  "data-state": isSelected ? "checked" : "unchecked",
35
34
  children: [
36
35
  optionIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mr-2", children: optionIcon }),
37
- hasCheckbox && /* @__PURE__ */ jsxRuntime.jsx(chunkPTNATMEI_cjs.Checkbox, { id: value, checked: isSelected, onClick: (e) => e.preventDefault() }),
38
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
39
- /* @__PURE__ */ jsxRuntime.jsx("p", { children: title }),
40
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-grey-80", children: description })
36
+ hasCheckbox && /* @__PURE__ */ jsxRuntime.jsx(
37
+ "div",
38
+ {
39
+ role: "presentation",
40
+ className: chunkMGWZXPMF_cjs.cn(
41
+ "flex h-4 w-4 shrink-0 items-center justify-center rounded border border-grey-60",
42
+ isSelected && "border-green-100 bg-green-100"
43
+ ),
44
+ onClick: (e) => e.preventDefault(),
45
+ children: isSelected && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckIcon, { className: "h-3 w-3 text-white", size: 12 })
46
+ }
47
+ ),
48
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1 overflow-hidden", children: [
49
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate", children: title }),
50
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs text-grey-80", children: description })
41
51
  ] }),
42
52
  /* @__PURE__ */ jsxRuntime.jsx(
43
53
  lucideReact.CheckIcon,
44
54
  {
45
- className: "absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",
55
+ className: "hidden w-6 shrink-0 text-green-100 group-data-[state=checked]:block",
46
56
  size: 16
47
57
  }
48
58
  )
@@ -53,5 +63,5 @@ function ListItem({
53
63
  var ListItem_default = ListItem;
54
64
 
55
65
  exports.ListItem_default = ListItem_default;
56
- //# sourceMappingURL=chunk-XKLOANYB.cjs.map
57
- //# sourceMappingURL=chunk-XKLOANYB.cjs.map
66
+ //# sourceMappingURL=chunk-WRULIQZE.cjs.map
67
+ //# sourceMappingURL=chunk-WRULIQZE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/ListItem.tsx"],"names":["icon","icons","jsx","jsxs","cn","CheckIcon"],"mappings":";;;;;;AAiBA,SAAS,QAAS,CAAA;AAAA,EAChB,IAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAG;AACL,CAAkB,EAAA;AAChB,EAAM,MAAA,cAAA,GAAiB,CAACA,KAA4B,KAAA;AAClD,IAAA,IAAIA,SAAQC,iBAAO,EAAA;AACjB,MAAM,MAAA,aAAA,GAAgBA,kBAAMD,KAAe,CAAA;AAC3C,MAAO,uBAAAE,cAAA,CAAC,aAAc,EAAA,EAAA,IAAA,EAAM,EAAI,EAAA,CAAA;AAAA;AAElC,IAAO,OAAA,IAAA;AAAA,GACT;AAEA,EAAA,MAAM,UAAa,GAAA,IAAA,GAAO,cAAe,CAAA,IAAI,CAAI,GAAA,MAAA;AAEjD,EACE,uBAAAC,eAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAAC,oBAAA;AAAA,QACT,uGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MACJ,YAAA,EAAY,aAAa,SAAY,GAAA,WAAA;AAAA,MAEpC,QAAA,EAAA;AAAA,QAAA,UAAA,oBAAeF,cAAA,CAAA,MAAA,EAAA,EAAK,SAAU,EAAA,MAAA,EAAQ,QAAW,EAAA,UAAA,EAAA,CAAA;AAAA,QACjD,WACC,oBAAAA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,IAAK,EAAA,cAAA;AAAA,YACL,SAAW,EAAAE,oBAAA;AAAA,cACT,iFAAA;AAAA,cACA,UAAc,IAAA;AAAA,aAChB;AAAA,YACA,OAAS,EAAA,CAAC,CAAM,KAAA,CAAA,CAAE,cAAe,EAAA;AAAA,YAEhC,wCAAeF,cAAA,CAAAG,qBAAA,EAAA,EAAU,SAAU,EAAA,oBAAA,EAAqB,MAAM,EAAI,EAAA;AAAA;AAAA,SACrE;AAAA,wBAEFF,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,gCACb,EAAA,QAAA,EAAA;AAAA,0BAACD,cAAA,CAAA,GAAA,EAAA,EAAE,SAAU,EAAA,UAAA,EAAY,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,0BAC9BA,cAAA,CAAA,GAAA,EAAA,EAAE,SAAU,EAAA,+BAAA,EAAiC,QAAY,EAAA,WAAA,EAAA;AAAA,SAC5D,EAAA,CAAA;AAAA,wBAEAA,cAAA;AAAA,UAACG,qBAAA;AAAA,UAAA;AAAA,YACC,SAAU,EAAA,qEAAA;AAAA,YACV,IAAM,EAAA;AAAA;AAAA;AACR;AAAA;AAAA,GACF;AAEJ;AAEA,IAAO,gBAAQ,GAAA","file":"chunk-WRULIQZE.cjs","sourcesContent":["import { CheckIcon } from 'lucide-react'\nimport { icons } from 'lucide-react'\nimport { type ComponentPropsWithoutRef, type ReactNode } from 'react'\n\nimport { cn } from '@/lib/utils'\n\ntype IconKey = keyof typeof icons\n\ninterface ListItemProps extends ComponentPropsWithoutRef<'li'> {\n icon?: string\n hasCheckbox?: boolean\n isSelected?: boolean\n title: string\n value: string\n description?: string\n}\n\nfunction ListItem({\n icon,\n hasCheckbox,\n isSelected,\n className,\n title,\n value,\n description,\n ...props\n}: ListItemProps) {\n const getIconIfValid = (icon: string): ReactNode => {\n if (icon in icons) {\n const IconComponent = icons[icon as IconKey]\n return <IconComponent size={14} />\n }\n return null\n }\n\n const optionIcon = icon ? getIconIfValid(icon) : undefined\n\n return (\n <li\n className={cn(\n 'group relative flex w-72 cursor-pointer flex-row items-center gap-2 overflow-hidden text-left text-sm',\n className\n )}\n {...props}\n data-state={isSelected ? 'checked' : 'unchecked'}\n >\n {optionIcon && <span className=\"mr-2\">{optionIcon}</span>}\n {hasCheckbox && (\n <div\n role=\"presentation\"\n className={cn(\n 'flex h-4 w-4 shrink-0 items-center justify-center rounded border border-grey-60',\n isSelected && 'border-green-100 bg-green-100'\n )}\n onClick={(e) => e.preventDefault()}\n >\n {isSelected && <CheckIcon className=\"h-3 w-3 text-white\" size={12} />}\n </div>\n )}\n <div className=\"min-w-0 flex-1 overflow-hidden\">\n <p className=\"truncate\">{title}</p>\n <p className=\"truncate text-xs text-grey-80\">{description}</p>\n </div>\n\n <CheckIcon\n className=\"hidden w-6 shrink-0 text-green-100 group-data-[state=checked]:block\"\n size={16}\n />\n </li>\n )\n}\n\nexport default ListItem\n"]}
@@ -2,13 +2,13 @@
2
2
 
3
3
  var chunkDWB5TTR6_cjs = require('./chunk-DWB5TTR6.cjs');
4
4
  var chunk46HHHYSV_cjs = require('./chunk-46HHHYSV.cjs');
5
- var chunkQRMNGILI_cjs = require('./chunk-QRMNGILI.cjs');
6
- var chunkAMMLIOH5_cjs = require('./chunk-AMMLIOH5.cjs');
7
- var chunkXAPQTBJR_cjs = require('./chunk-XAPQTBJR.cjs');
5
+ var chunk4F2PRKMM_cjs = require('./chunk-4F2PRKMM.cjs');
6
+ var chunkTOEADI6J_cjs = require('./chunk-TOEADI6J.cjs');
8
7
  var chunkGQNVPLSG_cjs = require('./chunk-GQNVPLSG.cjs');
9
8
  var chunkMGWZXPMF_cjs = require('./chunk-MGWZXPMF.cjs');
10
9
  var chunk4LUPQO4R_cjs = require('./chunk-4LUPQO4R.cjs');
11
- var chunk567FG76G_cjs = require('./chunk-567FG76G.cjs');
10
+ var chunkOXDKVZZ5_cjs = require('./chunk-OXDKVZZ5.cjs');
11
+ var chunkXAPQTBJR_cjs = require('./chunk-XAPQTBJR.cjs');
12
12
  var DateFns = require('date-fns');
13
13
  var jsxRuntime = require('react/jsx-runtime');
14
14
 
@@ -42,9 +42,9 @@ function JobPost({
42
42
  backAcceptedRoutes,
43
43
  actions
44
44
  }) {
45
- const formattedEmploymentType = chunk567FG76G_cjs.useDisplayText("employmentType", job.employmentType);
46
- const formattedEmploymentLevel = chunk567FG76G_cjs.useDisplayText("employmentLevel", job.employmentLevel);
47
- const formattedJobFunction = chunk567FG76G_cjs.useDisplayText("jobFunction", job.jobFunction);
45
+ const formattedEmploymentType = chunkOXDKVZZ5_cjs.useDisplayText("employmentType", job.employmentType);
46
+ const formattedEmploymentLevel = chunkOXDKVZZ5_cjs.useDisplayText("employmentLevel", job.employmentLevel);
47
+ const formattedJobFunction = chunkOXDKVZZ5_cjs.useDisplayText("jobFunction", job.jobFunction);
48
48
  const formattedLocations = chunkXAPQTBJR_cjs.getAddressList(job);
49
49
  const formattedSalary = chunkGQNVPLSG_cjs.salaryRange(job.estimatedSalary);
50
50
  const formattedDate = DateFns__namespace.formatDistanceToNow(new Date(job.datePosted), {
@@ -86,7 +86,7 @@ function JobPost({
86
86
  ),
87
87
  children: [
88
88
  /* @__PURE__ */ jsxRuntime.jsx(
89
- chunkAMMLIOH5_cjs.JobHeader,
89
+ chunkTOEADI6J_cjs.JobHeader,
90
90
  {
91
91
  title: job.title,
92
92
  bannerSrc,
@@ -102,7 +102,7 @@ function JobPost({
102
102
  }
103
103
  ),
104
104
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-8 px-6", children: [
105
- /* @__PURE__ */ jsxRuntime.jsx(chunkQRMNGILI_cjs.JobDescription, { description: job.description }),
105
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4F2PRKMM_cjs.JobDescription, { description: job.description }),
106
106
  /* @__PURE__ */ jsxRuntime.jsx(
107
107
  chunk46HHHYSV_cjs.CompanyTake,
108
108
  {
@@ -133,5 +133,5 @@ function JobPost({
133
133
  }
134
134
 
135
135
  exports.JobPost = JobPost;
136
- //# sourceMappingURL=chunk-KKJS3J3C.cjs.map
137
- //# sourceMappingURL=chunk-KKJS3J3C.cjs.map
136
+ //# sourceMappingURL=chunk-YOQY4H6Z.cjs.map
137
+ //# sourceMappingURL=chunk-YOQY4H6Z.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/jobPost/JobPost.tsx"],"names":["useDisplayText","getAddressList","salaryRange","DateFns","jsxs","cn","jsx","JobHeader","JobDescription","CompanyTake","CompanyInformation","CompanyBenefits"],"mappings":"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","file":"chunk-KKJS3J3C.cjs","sourcesContent":["'use client'\n\nimport * as DateFns from 'date-fns'\nimport { type ReactNode } from 'react'\n\nimport { CompanyBenefits } from '@/components/company/CompanyBenefits'\nimport { CompanyInformation } from '@/components/company/CompanyInformation'\nimport { CompanyTake } from '@/components/company/CompanyTake'\nimport { JobDescription } from '@/components/jobPost/JobDescription'\nimport { JobHeader } from '@/components/jobPost/JobHeader'\nimport { useDisplayText } from '@/hooks/useDisplayText'\nimport { getAddressList } from '@/lib/locations'\nimport { salaryRange } from '@/lib/salaryRange'\nimport { cn } from '@/lib/utils'\nimport { type JobPostModel } from '@/types/data/job_posting_service_latest'\n\nexport type JobPostProps = {\n job: JobPostModel\n bannerSrc: string\n avatarSrc?: string\n standalone?: boolean\n avatarHref?: string\n fallbackHref?: string\n backAcceptedRoutes?: string[]\n actions?: ReactNode\n}\n\nexport function JobPost({\n job,\n bannerSrc,\n avatarSrc,\n standalone,\n avatarHref,\n fallbackHref,\n backAcceptedRoutes,\n actions,\n}: Readonly<JobPostProps>) {\n const formattedEmploymentType = useDisplayText('employmentType', job.employmentType)\n const formattedEmploymentLevel = useDisplayText('employmentLevel', job.employmentLevel)\n const formattedJobFunction = useDisplayText('jobFunction', job.jobFunction)\n const formattedLocations = getAddressList(job)\n const formattedSalary = salaryRange(job.estimatedSalary)\n const formattedDate = DateFns.formatDistanceToNow(new Date(job.datePosted as string), {\n addSuffix: true,\n })\n\n const tags = [\n !!formattedSalary && {\n icon: 'banknote' as const,\n name: 'salary',\n label: formattedSalary,\n },\n !!formattedEmploymentType && {\n icon: 'briefcase-business' as const,\n name: 'employmentType',\n label: formattedEmploymentType,\n },\n !!formattedEmploymentLevel && {\n icon: 'circle-user' as const,\n name: 'level',\n label: formattedEmploymentLevel,\n },\n !!formattedJobFunction && {\n icon: 'briefcase-business' as const,\n name: 'jobFunction',\n label: formattedJobFunction,\n },\n ...formattedLocations.map((label) => ({\n icon: 'map-pin' as const,\n name: 'location',\n label,\n })),\n ].filter((t) => !!t)\n\n return (\n <div\n className={cn(\n 'flex flex-col gap-10 pb-4',\n !standalone && 'border-1 rounded-3xl border-grey-5'\n )}\n >\n <JobHeader\n title={job.title}\n bannerSrc={bannerSrc}\n avatarName={job.hiringOrganization?.companyName}\n avatarSrc={job.hiringOrganization?.logo?.asset?.url}\n subtitles={[job.hiringOrganization?.companyName ?? '', `Posted ${formattedDate}`]}\n actions={actions}\n standalone={standalone}\n avatarHref={avatarHref}\n backFallbackHref={fallbackHref}\n backAcceptedRoutes={backAcceptedRoutes}\n tags={tags}\n />\n\n <div className=\"flex flex-col gap-8 px-6\">\n <JobDescription description={job.description} />\n\n <CompanyTake\n avatarSrc={avatarSrc}\n content={job.hiringOrganization?.companyNDG?.companyNDGTake}\n />\n\n <CompanyInformation\n name={job.hiringOrganization?.companyName ?? ''}\n how={job.hiringOrganization?.companyPhilosophy?.companyHow}\n mission={job.hiringOrganization?.companyPhilosophy?.companyMission}\n wow={job.hiringOrganization?.companyNDG?.companyWow}\n website={job.hiringOrganization?.companyWebsite}\n />\n\n <CompanyBenefits\n benefits={job.hiringOrganization?.companyCareers?.companyBenefits\n ?.map((b) => b.title)\n .filter((d) => d !== undefined)}\n />\n </div>\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/components/jobPost/JobPost.tsx"],"names":["useDisplayText","getAddressList","salaryRange","DateFns","jsxs","cn","jsx","JobHeader","JobDescription","CompanyTake","CompanyInformation","CompanyBenefits"],"mappings":"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","file":"chunk-YOQY4H6Z.cjs","sourcesContent":["'use client'\n\nimport * as DateFns from 'date-fns'\nimport { type ReactNode } from 'react'\n\nimport { CompanyBenefits } from '@/components/company/CompanyBenefits'\nimport { CompanyInformation } from '@/components/company/CompanyInformation'\nimport { CompanyTake } from '@/components/company/CompanyTake'\nimport { JobDescription } from '@/components/jobPost/JobDescription'\nimport { JobHeader } from '@/components/jobPost/JobHeader'\nimport { useDisplayText } from '@/hooks/useDisplayText'\nimport { getAddressList } from '@/lib/locations'\nimport { salaryRange } from '@/lib/salaryRange'\nimport { cn } from '@/lib/utils'\nimport { type JobPostModel } from '@/types/data/job_posting_service_latest'\n\nexport type JobPostProps = {\n job: JobPostModel\n bannerSrc: string\n avatarSrc?: string\n standalone?: boolean\n avatarHref?: string\n fallbackHref?: string\n backAcceptedRoutes?: string[]\n actions?: ReactNode\n}\n\nexport function JobPost({\n job,\n bannerSrc,\n avatarSrc,\n standalone,\n avatarHref,\n fallbackHref,\n backAcceptedRoutes,\n actions,\n}: Readonly<JobPostProps>) {\n const formattedEmploymentType = useDisplayText('employmentType', job.employmentType)\n const formattedEmploymentLevel = useDisplayText('employmentLevel', job.employmentLevel)\n const formattedJobFunction = useDisplayText('jobFunction', job.jobFunction)\n const formattedLocations = getAddressList(job)\n const formattedSalary = salaryRange(job.estimatedSalary)\n const formattedDate = DateFns.formatDistanceToNow(new Date(job.datePosted as string), {\n addSuffix: true,\n })\n\n const tags = [\n !!formattedSalary && {\n icon: 'banknote' as const,\n name: 'salary',\n label: formattedSalary,\n },\n !!formattedEmploymentType && {\n icon: 'briefcase-business' as const,\n name: 'employmentType',\n label: formattedEmploymentType,\n },\n !!formattedEmploymentLevel && {\n icon: 'circle-user' as const,\n name: 'level',\n label: formattedEmploymentLevel,\n },\n !!formattedJobFunction && {\n icon: 'briefcase-business' as const,\n name: 'jobFunction',\n label: formattedJobFunction,\n },\n ...formattedLocations.map((label) => ({\n icon: 'map-pin' as const,\n name: 'location',\n label,\n })),\n ].filter((t) => !!t)\n\n return (\n <div\n className={cn(\n 'flex flex-col gap-10 pb-4',\n !standalone && 'border-1 rounded-3xl border-grey-5'\n )}\n >\n <JobHeader\n title={job.title}\n bannerSrc={bannerSrc}\n avatarName={job.hiringOrganization?.companyName}\n avatarSrc={job.hiringOrganization?.logo?.asset?.url}\n subtitles={[job.hiringOrganization?.companyName ?? '', `Posted ${formattedDate}`]}\n actions={actions}\n standalone={standalone}\n avatarHref={avatarHref}\n backFallbackHref={fallbackHref}\n backAcceptedRoutes={backAcceptedRoutes}\n tags={tags}\n />\n\n <div className=\"flex flex-col gap-8 px-6\">\n <JobDescription description={job.description} />\n\n <CompanyTake\n avatarSrc={avatarSrc}\n content={job.hiringOrganization?.companyNDG?.companyNDGTake}\n />\n\n <CompanyInformation\n name={job.hiringOrganization?.companyName ?? ''}\n how={job.hiringOrganization?.companyPhilosophy?.companyHow}\n mission={job.hiringOrganization?.companyPhilosophy?.companyMission}\n wow={job.hiringOrganization?.companyNDG?.companyWow}\n website={job.hiringOrganization?.companyWebsite}\n />\n\n <CompanyBenefits\n benefits={job.hiringOrganization?.companyCareers?.companyBenefits\n ?.map((b) => b.title)\n .filter((d) => d !== undefined)}\n />\n </div>\n </div>\n )\n}\n"]}
@@ -3,8 +3,8 @@
3
3
  var chunkZCRWSWPJ_cjs = require('../../chunk-ZCRWSWPJ.cjs');
4
4
  require('../../chunk-AEYPJ5YA.cjs');
5
5
  require('../../chunk-6BFFHI2V.cjs');
6
- require('../../chunk-XAPQTBJR.cjs');
7
6
  require('../../chunk-MGWZXPMF.cjs');
7
+ require('../../chunk-XAPQTBJR.cjs');
8
8
  require('../../chunk-Q7SFCCGT.cjs');
9
9
 
10
10
 
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { z } from 'zod';
3
- import { a as jobPostSchema } from '../../job_posting_service_latest-Dok46B7B.cjs';
3
+ import { a as jobPostSchema } from '../../job_posting_service_latest-BKz5U2Gp.cjs';
4
4
 
5
5
  type JobPost = z.infer<typeof jobPostSchema>;
6
6
  type JobLocationProps = {
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { z } from 'zod';
3
- import { a as jobPostSchema } from '../../job_posting_service_latest-Dok46B7B.js';
3
+ import { a as jobPostSchema } from '../../job_posting_service_latest-BKz5U2Gp.js';
4
4
 
5
5
  type JobPost = z.infer<typeof jobPostSchema>;
6
6
  type JobLocationProps = {
@@ -1,8 +1,8 @@
1
1
  export { JobLocation } from '../../chunk-3HO3CCXD.js';
2
2
  import '../../chunk-53OQ6M2O.js';
3
3
  import '../../chunk-LQ4DG6ST.js';
4
- import '../../chunk-KZBS5RNE.js';
5
4
  import '../../chunk-2FGZQI42.js';
5
+ import '../../chunk-KZBS5RNE.js';
6
6
  import '../../chunk-PZ5AY32C.js';
7
7
  //# sourceMappingURL=JobLocation.js.map
8
8
  //# sourceMappingURL=JobLocation.js.map
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkQRMNGILI_cjs = require('../../chunk-QRMNGILI.cjs');
4
- require('../../chunk-4IMEF4J5.cjs');
5
- require('../../chunk-LV6BHE7Q.cjs');
3
+ var chunk4F2PRKMM_cjs = require('../../chunk-4F2PRKMM.cjs');
4
+ require('../../chunk-PU52LECH.cjs');
5
+ require('../../chunk-HDQBXWSS.cjs');
6
6
  require('../../chunk-MGWZXPMF.cjs');
7
7
  require('../../chunk-Q7SFCCGT.cjs');
8
8
 
@@ -10,7 +10,7 @@ require('../../chunk-Q7SFCCGT.cjs');
10
10
 
11
11
  Object.defineProperty(exports, "JobDescription", {
12
12
  enumerable: true,
13
- get: function () { return chunkQRMNGILI_cjs.JobDescription; }
13
+ get: function () { return chunk4F2PRKMM_cjs.JobDescription; }
14
14
  });
15
15
  //# sourceMappingURL=JobDescription.cjs.map
16
16
  //# sourceMappingURL=JobDescription.cjs.map
@@ -1,6 +1,6 @@
1
- export { JobDescription } from '../../chunk-5NQTYPZG.js';
2
- import '../../chunk-F3FYMCRO.js';
3
- import '../../chunk-ZSNEG5J7.js';
1
+ export { JobDescription } from '../../chunk-KRG4BXBL.js';
2
+ import '../../chunk-5IFDS3CJ.js';
3
+ import '../../chunk-SRIUPNYK.js';
4
4
  import '../../chunk-2FGZQI42.js';
5
5
  import '../../chunk-PZ5AY32C.js';
6
6
  //# sourceMappingURL=JobDescription.js.map
@@ -1,22 +1,22 @@
1
1
  'use strict';
2
2
 
3
- var chunkAMMLIOH5_cjs = require('../../chunk-AMMLIOH5.cjs');
4
- require('../../chunk-6BFFHI2V.cjs');
3
+ var chunkTOEADI6J_cjs = require('../../chunk-TOEADI6J.cjs');
5
4
  require('../../chunk-W2UGL7QI.cjs');
5
+ require('../../chunk-6BFFHI2V.cjs');
6
6
  require('../../chunk-IMAHT6W4.cjs');
7
- require('../../chunk-SMDQTPJE.cjs');
8
7
  require('../../chunk-HD3VN7GE.cjs');
9
8
  require('../../chunk-6V7WZMBZ.cjs');
10
9
  require('../../chunk-MGWZXPMF.cjs');
11
10
  require('../../chunk-QOYVMNQ6.cjs');
12
11
  require('../../chunk-IX3GUXML.cjs');
12
+ require('../../chunk-SMDQTPJE.cjs');
13
13
  require('../../chunk-Q7SFCCGT.cjs');
14
14
 
15
15
 
16
16
 
17
17
  Object.defineProperty(exports, "JobHeader", {
18
18
  enumerable: true,
19
- get: function () { return chunkAMMLIOH5_cjs.JobHeader; }
19
+ get: function () { return chunkTOEADI6J_cjs.JobHeader; }
20
20
  });
21
21
  //# sourceMappingURL=JobHeader.cjs.map
22
22
  //# sourceMappingURL=JobHeader.cjs.map
@@ -1,13 +1,13 @@
1
- export { JobHeader } from '../../chunk-MSOLVPPR.js';
2
- import '../../chunk-LQ4DG6ST.js';
1
+ export { JobHeader } from '../../chunk-6Z6T5WWS.js';
3
2
  import '../../chunk-2TEFWPFS.js';
3
+ import '../../chunk-LQ4DG6ST.js';
4
4
  import '../../chunk-FVJL3PEK.js';
5
- import '../../chunk-PONUWUJ7.js';
6
5
  import '../../chunk-IJQTUD3D.js';
7
6
  import '../../chunk-3NDL2JQ7.js';
8
7
  import '../../chunk-2FGZQI42.js';
9
8
  import '../../chunk-SZ5XKNVG.js';
10
9
  import '../../chunk-DXLVRZFU.js';
10
+ import '../../chunk-PONUWUJ7.js';
11
11
  import '../../chunk-PZ5AY32C.js';
12
12
  //# sourceMappingURL=JobHeader.js.map
13
13
  //# sourceMappingURL=JobHeader.js.map
@@ -1,29 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var chunkKKJS3J3C_cjs = require('../../chunk-KKJS3J3C.cjs');
3
+ var chunkYOQY4H6Z_cjs = require('../../chunk-YOQY4H6Z.cjs');
4
4
  require('../../chunk-DWB5TTR6.cjs');
5
5
  require('../../chunk-UXROFDSM.cjs');
6
6
  require('../../chunk-46HHHYSV.cjs');
7
- require('../../chunk-QRMNGILI.cjs');
8
- require('../../chunk-4IMEF4J5.cjs');
9
- require('../../chunk-LV6BHE7Q.cjs');
10
- require('../../chunk-AMMLIOH5.cjs');
11
- require('../../chunk-6BFFHI2V.cjs');
7
+ require('../../chunk-4F2PRKMM.cjs');
8
+ require('../../chunk-PU52LECH.cjs');
9
+ require('../../chunk-HDQBXWSS.cjs');
10
+ require('../../chunk-TOEADI6J.cjs');
12
11
  require('../../chunk-W2UGL7QI.cjs');
12
+ require('../../chunk-6BFFHI2V.cjs');
13
13
  require('../../chunk-IMAHT6W4.cjs');
14
- require('../../chunk-SMDQTPJE.cjs');
15
- require('../../chunk-XAPQTBJR.cjs');
16
14
  require('../../chunk-GQNVPLSG.cjs');
17
- require('../../chunk-HD3VN7GE.cjs');
18
- require('../../chunk-6V7WZMBZ.cjs');
19
- require('../../chunk-MGWZXPMF.cjs');
20
- require('../../chunk-4LUPQO4R.cjs');
21
- require('../../chunk-567FG76G.cjs');
22
- require('../../chunk-ZZCTMR2F.cjs');
23
- require('../../chunk-JZVRCP3M.cjs');
24
- require('../../chunk-QOYVMNQ6.cjs');
25
- require('../../chunk-IX3GUXML.cjs');
26
- require('../../chunk-XUTLQ573.cjs');
27
15
  require('../../chunk-5QXQ2LBB.cjs');
28
16
  require('../../chunk-GN3JZCM3.cjs');
29
17
  require('../../chunk-SPAVM3EE.cjs');
@@ -31,13 +19,25 @@ require('../../chunk-IVPCYGXE.cjs');
31
19
  require('../../chunk-3PARXYUI.cjs');
32
20
  require('../../chunk-L4SZQQK6.cjs');
33
21
  require('../../chunk-LUFPA3WC.cjs');
22
+ require('../../chunk-HD3VN7GE.cjs');
23
+ require('../../chunk-6V7WZMBZ.cjs');
24
+ require('../../chunk-MGWZXPMF.cjs');
25
+ require('../../chunk-4LUPQO4R.cjs');
26
+ require('../../chunk-OXDKVZZ5.cjs');
27
+ require('../../chunk-2YUUVN7E.cjs');
28
+ require('../../chunk-XUTLQ573.cjs');
29
+ require('../../chunk-QOYVMNQ6.cjs');
30
+ require('../../chunk-IX3GUXML.cjs');
31
+ require('../../chunk-SMDQTPJE.cjs');
32
+ require('../../chunk-XAPQTBJR.cjs');
33
+ require('../../chunk-JZVRCP3M.cjs');
34
34
  require('../../chunk-Q7SFCCGT.cjs');
35
35
 
36
36
 
37
37
 
38
38
  Object.defineProperty(exports, "JobPost", {
39
39
  enumerable: true,
40
- get: function () { return chunkKKJS3J3C_cjs.JobPost; }
40
+ get: function () { return chunkYOQY4H6Z_cjs.JobPost; }
41
41
  });
42
42
  //# sourceMappingURL=JobPost.cjs.map
43
43
  //# sourceMappingURL=JobPost.cjs.map
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
- import { J as JobPostModel } from '../../job_posting_service_latest-BXd2nu_U.cjs';
3
+ import { J as JobPostModel } from '../../job_posting_service_latest-B6Trs6sX.cjs';
4
4
  import 'zod';
5
5
 
6
6
  type JobPostProps = {
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
- import { J as JobPostModel } from '../../job_posting_service_latest-BXd2nu_U.js';
3
+ import { J as JobPostModel } from '../../job_posting_service_latest-B6Trs6sX.js';
4
4
  import 'zod';
5
5
 
6
6
  type JobPostProps = {