@next-degree/pickle-shared-js 0.15.2 → 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-NCEXSFMC.js → chunk-556GH3CB.js} +4 -4
  8. package/dist/{chunk-NCEXSFMC.js.map → chunk-556GH3CB.js.map} +1 -1
  9. package/dist/{chunk-F3FYMCRO.js → chunk-5IFDS3CJ.js} +3 -3
  10. package/dist/{chunk-F3FYMCRO.js.map → chunk-5IFDS3CJ.js.map} +1 -1
  11. package/dist/{chunk-5EUHR4DQ.cjs → chunk-7PVEU6NQ.cjs} +13 -13
  12. package/dist/{chunk-5EUHR4DQ.cjs.map → chunk-7PVEU6NQ.cjs.map} +1 -1
  13. package/dist/{chunk-K76RPF2X.js → chunk-CPZFINPG.js} +3 -3
  14. package/dist/{chunk-K76RPF2X.js.map → chunk-CPZFINPG.js.map} +1 -1
  15. package/dist/{chunk-ILLYEM3G.cjs → chunk-E244YSGF.cjs} +31 -42
  16. package/dist/chunk-E244YSGF.cjs.map +1 -0
  17. package/dist/{chunk-LV6BHE7Q.cjs → chunk-HDQBXWSS.cjs} +12 -3
  18. package/dist/chunk-HDQBXWSS.cjs.map +1 -0
  19. package/dist/{chunk-R73HWAYA.js → chunk-KKYX5Y5N.js} +3 -3
  20. package/dist/{chunk-R73HWAYA.js.map → chunk-KKYX5Y5N.js.map} +1 -1
  21. package/dist/{chunk-NEKYNDRG.js → chunk-KMHPNIJQ.js} +3 -3
  22. package/dist/{chunk-NEKYNDRG.js.map → chunk-KMHPNIJQ.js.map} +1 -1
  23. package/dist/{chunk-5NQTYPZG.js → chunk-KRG4BXBL.js} +3 -3
  24. package/dist/{chunk-5NQTYPZG.js.map → chunk-KRG4BXBL.js.map} +1 -1
  25. package/dist/{chunk-CQHERJ3J.js → chunk-M4WUWRGI.js} +4 -4
  26. package/dist/chunk-M4WUWRGI.js.map +1 -0
  27. package/dist/{chunk-CEVBQ664.cjs → chunk-MNDXLLWH.cjs} +9 -9
  28. package/dist/{chunk-CEVBQ664.cjs.map → chunk-MNDXLLWH.cjs.map} +1 -1
  29. package/dist/{chunk-567FG76G.cjs → chunk-OXDKVZZ5.cjs} +4 -4
  30. package/dist/{chunk-567FG76G.cjs.map → chunk-OXDKVZZ5.cjs.map} +1 -1
  31. package/dist/{chunk-4E3ANVRR.js → chunk-OZJZVEF2.js} +3 -3
  32. package/dist/{chunk-4E3ANVRR.js.map → chunk-OZJZVEF2.js.map} +1 -1
  33. package/dist/{chunk-4IMEF4J5.cjs → chunk-PU52LECH.cjs} +4 -4
  34. package/dist/{chunk-4IMEF4J5.cjs.map → chunk-PU52LECH.cjs.map} +1 -1
  35. package/dist/{chunk-ZSNEG5J7.js → chunk-SRIUPNYK.js} +12 -3
  36. package/dist/chunk-SRIUPNYK.js.map +1 -0
  37. package/dist/{chunk-ZILKCCXQ.cjs → chunk-VBRVZZ2I.cjs} +4 -4
  38. package/dist/chunk-VBRVZZ2I.cjs.map +1 -0
  39. package/dist/{chunk-QURNDLRE.js → chunk-VE3GPIUQ.js} +19 -9
  40. package/dist/chunk-VE3GPIUQ.js.map +1 -0
  41. package/dist/{chunk-W4QTU3U6.js → chunk-VLAFOLD6.js} +4 -4
  42. package/dist/{chunk-W4QTU3U6.js.map → chunk-VLAFOLD6.js.map} +1 -1
  43. package/dist/{chunk-7NYMASRN.js → chunk-VSQKQNTT.js} +26 -37
  44. package/dist/chunk-VSQKQNTT.js.map +1 -0
  45. package/dist/{chunk-XKLOANYB.cjs → chunk-WRULIQZE.cjs} +19 -9
  46. package/dist/chunk-WRULIQZE.cjs.map +1 -0
  47. package/dist/{chunk-LFWX5GEE.cjs → chunk-YOQY4H6Z.cjs} +8 -8
  48. package/dist/{chunk-LFWX5GEE.cjs.map → chunk-YOQY4H6Z.cjs.map} +1 -1
  49. package/dist/{company_service_sanity-CCbS8ElX.d.cts → company_service_sanity-Br0R7m-A.d.cts} +271 -271
  50. package/dist/{company_service_sanity-B1Xg7ISJ.d.ts → company_service_sanity-DF01qvTz.d.ts} +271 -271
  51. package/dist/components/jobCard/JobLocation.d.cts +1 -1
  52. package/dist/components/jobCard/JobLocation.d.ts +1 -1
  53. package/dist/components/jobPost/JobDescription.cjs +4 -4
  54. package/dist/components/jobPost/JobDescription.js +3 -3
  55. package/dist/components/jobPost/JobPost.cjs +9 -9
  56. package/dist/components/jobPost/JobPost.d.cts +1 -1
  57. package/dist/components/jobPost/JobPost.d.ts +1 -1
  58. package/dist/components/jobPost/JobPost.js +8 -8
  59. package/dist/components/primitives/command.cjs +11 -11
  60. package/dist/components/primitives/command.d.cts +1 -1
  61. package/dist/components/primitives/command.d.ts +1 -1
  62. package/dist/components/primitives/command.js +2 -2
  63. package/dist/components/primitives/dialog.cjs +11 -11
  64. package/dist/components/primitives/dialog.js +1 -1
  65. package/dist/components/ui/Button.cjs +3 -3
  66. package/dist/components/ui/Button.d.cts +1 -1
  67. package/dist/components/ui/Button.d.ts +1 -1
  68. package/dist/components/ui/Button.js +1 -1
  69. package/dist/components/ui/Combobox.cjs +5 -6
  70. package/dist/components/ui/Combobox.d.cts +4 -3
  71. package/dist/components/ui/Combobox.d.ts +4 -3
  72. package/dist/components/ui/Combobox.js +4 -5
  73. package/dist/components/ui/ListItem.cjs +2 -4
  74. package/dist/components/ui/ListItem.js +1 -3
  75. package/dist/components/ui/ModalDialog.cjs +4 -4
  76. package/dist/components/ui/ModalDialog.js +3 -3
  77. package/dist/components/ui/PlacesQueryInput.cjs +4 -4
  78. package/dist/components/ui/PlacesQueryInput.js +3 -3
  79. package/dist/components/ui/ReadMore.cjs +3 -3
  80. package/dist/components/ui/ReadMore.js +2 -2
  81. package/dist/components/ui/buttonShadcn.d.cts +1 -1
  82. package/dist/components/ui/buttonShadcn.d.ts +1 -1
  83. package/dist/{displayText-Ck0qovrl.d.cts → displayText-BDPndCI9.d.cts} +2 -2
  84. package/dist/{displayText-ClDGmi1J.d.ts → displayText-EpnIpZ38.d.ts} +2 -2
  85. package/dist/hooks/useDisplayText.cjs +4 -4
  86. package/dist/hooks/useDisplayText.d.cts +3 -3
  87. package/dist/hooks/useDisplayText.d.ts +3 -3
  88. package/dist/hooks/useDisplayText.js +3 -3
  89. package/dist/index.cjs +27 -27
  90. package/dist/index.d.cts +6 -6
  91. package/dist/index.d.ts +6 -6
  92. package/dist/index.js +14 -14
  93. package/dist/{job_posting_service_latest-DfX8Y4gB.d.cts → job_posting_service_latest-B6Trs6sX.d.cts} +177 -177
  94. package/dist/{job_posting_service_latest-DfX8Y4gB.d.ts → job_posting_service_latest-B6Trs6sX.d.ts} +177 -177
  95. package/dist/{job_posting_service_latest-Bk53vj02.d.cts → job_posting_service_latest-BKz5U2Gp.d.cts} +177 -177
  96. package/dist/{job_posting_service_latest-Bk53vj02.d.ts → job_posting_service_latest-BKz5U2Gp.d.ts} +177 -177
  97. package/dist/{job_posting_service_sanity-BSxLNte3.d.cts → job_posting_service_sanity-BN7XcVxU.d.cts} +357 -357
  98. package/dist/{job_posting_service_sanity-C6aPb8kp.d.ts → job_posting_service_sanity-BNQsNQs2.d.ts} +357 -357
  99. package/dist/lib/locations.d.cts +3 -3
  100. package/dist/lib/locations.d.ts +3 -3
  101. package/dist/lib/mappings.d.cts +3 -3
  102. package/dist/lib/mappings.d.ts +3 -3
  103. package/dist/lib/salaryRange.d.cts +1 -1
  104. package/dist/lib/salaryRange.d.ts +1 -1
  105. package/dist/services/displayText.cjs +3 -3
  106. package/dist/services/displayText.d.cts +3 -3
  107. package/dist/services/displayText.d.ts +3 -3
  108. package/dist/services/displayText.js +2 -2
  109. package/dist/styles/globals.css +15 -3
  110. package/dist/styles/globals.css.map +1 -1
  111. package/dist/types/data/company_service_latest.d.cts +1 -1
  112. package/dist/types/data/company_service_latest.d.ts +1 -1
  113. package/dist/types/data/job_posting_service_latest.d.cts +1 -1
  114. package/dist/types/data/job_posting_service_latest.d.ts +1 -1
  115. package/dist/types/data/shared_pickle_output_latest.d.cts +1 -1
  116. package/dist/types/data/shared_pickle_output_latest.d.ts +1 -1
  117. package/dist/types/index.d.cts +5 -5
  118. package/dist/types/index.d.ts +5 -5
  119. package/dist/types/latest/company_service_latest.d.cts +1 -1
  120. package/dist/types/latest/company_service_latest.d.ts +1 -1
  121. package/dist/types/latest/custom/company_service_sanity.d.cts +3 -3
  122. package/dist/types/latest/custom/company_service_sanity.d.ts +3 -3
  123. package/dist/types/latest/custom/job_posting_service_sanity.d.cts +3 -3
  124. package/dist/types/latest/custom/job_posting_service_sanity.d.ts +3 -3
  125. package/dist/types/latest/job_posting_service_latest.d.cts +1 -1
  126. package/dist/types/latest/job_posting_service_latest.d.ts +1 -1
  127. package/dist/types/latest/shared_pickle_output_latest.d.cts +1 -1
  128. package/dist/types/latest/shared_pickle_output_latest.d.ts +1 -1
  129. package/package.json +1 -1
  130. package/dist/chunk-7NYMASRN.js.map +0 -1
  131. package/dist/chunk-CQHERJ3J.js.map +0 -1
  132. package/dist/chunk-ILLYEM3G.cjs.map +0 -1
  133. package/dist/chunk-LV6BHE7Q.cjs.map +0 -1
  134. package/dist/chunk-QURNDLRE.js.map +0 -1
  135. package/dist/chunk-XKLOANYB.cjs.map +0 -1
  136. package/dist/chunk-ZILKCCXQ.cjs.map +0 -1
  137. package/dist/chunk-ZSNEG5J7.js.map +0 -1
  138. package/dist/{company_service_latest-CVgoQ8Mc.d.cts → company_service_latest-C7Moeufo.d.cts} +174 -174
  139. package/dist/{company_service_latest-CVgoQ8Mc.d.ts → company_service_latest-C7Moeufo.d.ts} +174 -174
  140. package/dist/{company_service_latest-oWEnaiRd.d.cts → company_service_latest-CITz7F53.d.cts} +174 -174
  141. package/dist/{company_service_latest-oWEnaiRd.d.ts → company_service_latest-CITz7F53.d.ts} +174 -174
  142. package/dist/{shared_pickle_output_latest-BVF7Zh2H.d.cts → shared_pickle_output_latest--XZhOUyE.d.cts} +11 -11
  143. package/dist/{shared_pickle_output_latest-BVF7Zh2H.d.ts → shared_pickle_output_latest--XZhOUyE.d.ts} +11 -11
  144. package/dist/{shared_pickle_output_latest-BjRRmT8R.d.cts → shared_pickle_output_latest-DKOmTyYk.d.cts} +11 -11
  145. package/dist/{shared_pickle_output_latest-BjRRmT8R.d.ts → shared_pickle_output_latest-DKOmTyYk.d.ts} +11 -11
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkZILKCCXQ_cjs = require('./chunk-ZILKCCXQ.cjs');
3
+ var chunkVBRVZZ2I_cjs = require('./chunk-VBRVZZ2I.cjs');
4
4
  var chunkMGWZXPMF_cjs = require('./chunk-MGWZXPMF.cjs');
5
5
  var cmdk = require('cmdk');
6
6
  var lucideReact = require('lucide-react');
@@ -40,7 +40,7 @@ var Command = React__namespace.forwardRef(({ className, ...props }, ref) => /* @
40
40
  ));
41
41
  Command.displayName = cmdk.Command.displayName;
42
42
  var CommandDialog = ({ children, ...props }) => {
43
- return /* @__PURE__ */ jsxRuntime.jsx(chunkZILKCCXQ_cjs.Dialog, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx(chunkZILKCCXQ_cjs.DialogContent, { className: "overflow-hidden p-0 shadow-lg", children: /* @__PURE__ */ jsxRuntime.jsx(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-neutral-500 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) }) });
43
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkVBRVZZ2I_cjs.Dialog, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx(chunkVBRVZZ2I_cjs.DialogContent, { className: "overflow-hidden p-0 shadow-lg", children: /* @__PURE__ */ jsxRuntime.jsx(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-neutral-500 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) }) });
44
44
  };
45
45
  var CommandInput = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
46
46
  "div",
@@ -128,5 +128,5 @@ exports.CommandItem = CommandItem;
128
128
  exports.CommandList = CommandList;
129
129
  exports.CommandSeparator = CommandSeparator;
130
130
  exports.CommandShortcut = CommandShortcut;
131
- //# sourceMappingURL=chunk-VBLDMVVW.cjs.map
132
- //# sourceMappingURL=chunk-VBLDMVVW.cjs.map
131
+ //# sourceMappingURL=chunk-2XIO3WQ2.cjs.map
132
+ //# sourceMappingURL=chunk-2XIO3WQ2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/primitives/command.tsx"],"names":["React","jsx","CommandPrimitive","cn","Dialog","DialogContent","jsxs","Search"],"mappings":"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","file":"chunk-VBLDMVVW.cjs","sourcesContent":["'use client'\n\nimport { type DialogProps } from '@radix-ui/react-dialog'\nimport { Command as CommandPrimitive } from 'cmdk'\nimport { Search } from 'lucide-react'\nimport * as React from 'react'\n\nimport { Dialog, DialogContent } from '@/components/primitives/dialog'\nimport { cn } from '@/lib/utils'\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-xl bg-white text-neutral-950',\n className\n )}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\ntype CommandDialogProps = DialogProps\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-neutral-500 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div\n className=\"m-1 flex items-center rounded-lg border border-grey-20 px-3\"\n cmdk-input-wrapper=\"\"\n >\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-9 w-full rounded-md bg-transparent py-2 text-sm text-grey-80 outline-none placeholder:text-grey-50 disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n />\n </div>\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn('overflow-y-auto overflow-x-hidden', className)}\n {...props}\n />\n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />\n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'overflow-hidden p-1 text-neutral-950 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-neutral-500',\n className\n )}\n {...props}\n />\n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 h-px bg-neutral-200', className)}\n {...props}\n />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-xl px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-neutral-100 data-[selected=true]:text-neutral-900 data-[disabled=true]:opacity-50\",\n className\n )}\n {...props}\n />\n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn('ml-auto text-xs tracking-widest text-neutral-500', className)}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = 'CommandShortcut'\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n}\n"]}
1
+ {"version":3,"sources":["../src/components/primitives/command.tsx"],"names":["React","jsx","CommandPrimitive","cn","Dialog","DialogContent","jsxs","Search"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUM,IAAA,OAAA,GAAgBA,4BAGpB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAC1B,qBAAAC,cAAA;AAAA,EAACC,YAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAW,EAAAC,oBAAA;AAAA,MACT,kFAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,OAAA,CAAQ,cAAcD,YAAiB,CAAA,WAAA;AAIvC,IAAM,gBAAgB,CAAC,EAAE,QAAU,EAAA,GAAG,OAAgC,KAAA;AACpE,EAAA,uBACGD,cAAA,CAAAG,wBAAA,EAAA,EAAQ,GAAG,KAAA,EACV,yCAACC,+BAAc,EAAA,EAAA,SAAA,EAAU,+BACvB,EAAA,QAAA,kBAAAJ,cAAA,CAAC,OAAQ,EAAA,EAAA,SAAA,EAAU,wWAChB,EAAA,QAAA,EACH,GACF,CACF,EAAA,CAAA;AAEJ;AAEM,IAAA,YAAA,GAAqBD,4BAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAC1B,qBAAAM,eAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAU,EAAA,6DAAA;AAAA,IACV,oBAAmB,EAAA,EAAA;AAAA,IAEnB,QAAA,EAAA;AAAA,sBAACL,cAAA,CAAAM,kBAAA,EAAA,EAAO,WAAU,kCAAmC,EAAA,CAAA;AAAA,sBACrDN,cAAA;AAAA,QAACC,YAAiB,CAAA,KAAA;AAAA,QAAjB;AAAA,UACC,GAAA;AAAA,UACA,SAAW,EAAAC,oBAAA;AAAA,YACT,2JAAA;AAAA,YACA;AAAA,WACF;AAAA,UACC,GAAG;AAAA;AAAA;AACN;AAAA;AACF,CACD;AAED,YAAa,CAAA,WAAA,GAAcD,aAAiB,KAAM,CAAA,WAAA;AAE5C,IAAA,WAAA,GAAoBF,4BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAC1B,qBAAAC,cAAA;AAAA,EAACC,YAAiB,CAAA,IAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAWC,oBAAG,CAAA,mCAAA,EAAqC,SAAS,CAAA;AAAA,IAC3D,GAAG;AAAA;AACN,CACD;AAED,WAAY,CAAA,WAAA,GAAcD,aAAiB,IAAK,CAAA,WAAA;AAEhD,IAAM,YAAqB,GAAAF,gBAAA,CAAA,UAAA,CAGzB,CAAC,KAAA,EAAO,wBACPC,cAAA,CAAAC,YAAA,CAAiB,KAAjB,EAAA,EAAuB,GAAU,EAAA,SAAA,EAAU,0BAA4B,EAAA,GAAG,OAAO,CACnF;AAED,YAAa,CAAA,WAAA,GAAcA,aAAiB,KAAM,CAAA,WAAA;AAE5C,IAAA,YAAA,GAAqBF,4BAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAC1B,qBAAAC,cAAA;AAAA,EAACC,YAAiB,CAAA,KAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAW,EAAAC,oBAAA;AAAA,MACT,oNAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AAED,YAAa,CAAA,WAAA,GAAcD,aAAiB,KAAM,CAAA,WAAA;AAE5C,IAAA,gBAAA,GAAyBF,4BAG7B,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAC1B,qBAAAC,cAAA;AAAA,EAACC,YAAiB,CAAA,SAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAWC,oBAAG,CAAA,2BAAA,EAA6B,SAAS,CAAA;AAAA,IACnD,GAAG;AAAA;AACN,CACD;AACD,gBAAiB,CAAA,WAAA,GAAcD,aAAiB,SAAU,CAAA,WAAA;AAEpD,IAAA,WAAA,GAAoBF,4BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAC1B,qBAAAC,cAAA;AAAA,EAACC,YAAiB,CAAA,IAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAW,EAAAC,oBAAA;AAAA,MACT,wPAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AAED,WAAY,CAAA,WAAA,GAAcD,aAAiB,IAAK,CAAA,WAAA;AAEhD,IAAM,kBAAkB,CAAC,EAAE,SAAW,EAAA,GAAG,OAAmD,KAAA;AAC1F,EACE,uBAAAD,cAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWE,oBAAG,CAAA,kDAAA,EAAoD,SAAS,CAAA;AAAA,MAC1E,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,eAAA,CAAgB,WAAc,GAAA,iBAAA","file":"chunk-2XIO3WQ2.cjs","sourcesContent":["'use client'\n\nimport { type DialogProps } from '@radix-ui/react-dialog'\nimport { Command as CommandPrimitive } from 'cmdk'\nimport { Search } from 'lucide-react'\nimport * as React from 'react'\n\nimport { Dialog, DialogContent } from '@/components/primitives/dialog'\nimport { cn } from '@/lib/utils'\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-xl bg-white text-neutral-950',\n className\n )}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\ntype CommandDialogProps = DialogProps\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-neutral-500 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div\n className=\"m-1 flex items-center rounded-lg border border-grey-20 px-3\"\n cmdk-input-wrapper=\"\"\n >\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-9 w-full rounded-md bg-transparent py-2 text-sm text-grey-80 outline-none placeholder:text-grey-50 disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n />\n </div>\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn('overflow-y-auto overflow-x-hidden', className)}\n {...props}\n />\n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />\n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'overflow-hidden p-1 text-neutral-950 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-neutral-500',\n className\n )}\n {...props}\n />\n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 h-px bg-neutral-200', className)}\n {...props}\n />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-xl px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-neutral-100 data-[selected=true]:text-neutral-900 data-[disabled=true]:opacity-50\",\n className\n )}\n {...props}\n />\n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn('ml-auto text-xs tracking-widest text-neutral-500', className)}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = 'CommandShortcut'\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkJZVRCP3M_cjs = require('./chunk-JZVRCP3M.cjs');
4
3
  var chunkXUTLQ573_cjs = require('./chunk-XUTLQ573.cjs');
4
+ var chunkJZVRCP3M_cjs = require('./chunk-JZVRCP3M.cjs');
5
5
 
6
6
  // src/services/displayText.tsx
7
7
  var DisplayTextService = class {
@@ -33,5 +33,5 @@ var DisplayTextService = class {
33
33
  };
34
34
 
35
35
  exports.DisplayTextService = DisplayTextService;
36
- //# sourceMappingURL=chunk-ZZCTMR2F.cjs.map
37
- //# sourceMappingURL=chunk-ZZCTMR2F.cjs.map
36
+ //# sourceMappingURL=chunk-2YUUVN7E.cjs.map
37
+ //# sourceMappingURL=chunk-2YUUVN7E.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/services/displayText.tsx"],"names":["defaultMappings","DisplayTextScopeNotFoundError","displayTexts","DisplayTextValueNotFoundError"],"mappings":";;;;;;AAiCO,IAAM,qBAAN,MAAwD;AAAA,EAI7D,YAAY,cAA2C,EAAA;AAHvD,IAAA,IAAA,CAAiB,eAAqC,GAAA,IAAA;AAIpD,IAAA,IAAA,CAAK,QAAW,GAAA;AAAA,MACd,GAAGA,iCAAA;AAAA;AAAA,MACH,GAAG;AAAA;AAAA,KACL;AAAA;AACF,EAEA,MAAM,cACJ,CAAA,KAAA,EACA,KACA,EAAA,QAAA,GAA8B,KAAK,eAClB,EAAA;AACjB,IAAM,MAAA,YAAA,GAAe,IAAK,CAAA,QAAA,CAAS,KAAK,CAAA;AAExC,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAM,MAAA,IAAIC,gDAA8B,KAAK,CAAA;AAAA;AAG/C,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACxB,MAAM,MAAA,mBAAA,GAAsB,KAAM,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,KAAK,cAAe,CAAA,KAAA,EAAO,CAAG,EAAA,QAAQ,CAAC,CAAA;AACpF,MAAA,MAAMC,aAAe,GAAA,MAAM,OAAQ,CAAA,GAAA,CAAI,mBAAmB,CAAA;AAC1D,MAAOA,OAAAA,aAAAA,CAAa,OAAO,CAAC,CAAA,KAAM,CAAC,CAAC,CAAC,CAAE,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA;AAGlD,IAAM,MAAA,YAAA,GAAe,aAAa,KAAK,CAAA;AAEvC,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAM,MAAA,IAAIC,+CAA8B,CAAA,KAAA,EAAO,KAAK,CAAA;AAAA;AAGtD,IAAA,OAAO,aAAa,QAAQ,CAAA,IAAK,YAAa,CAAA,IAAA,CAAK,eAAe,CAAK,IAAA,KAAA;AAAA;AAE3E","file":"chunk-ZZCTMR2F.cjs","sourcesContent":["import { type z } from 'zod'\n\nimport { defaultMappings } from '@/lib/mappings'\nimport {\n DisplayTextScopeNotFoundError,\n DisplayTextValueNotFoundError,\n} from '@/types/displayText.errors'\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst SUPPORTED_LANGUAGES = ['en'] as const\ntype SupportedLanguage = (typeof SUPPORTED_LANGUAGES)[number]\n\n// Define the display text configuration type for Zod enums\nexport type ServiceMappings = typeof defaultMappings\n\ntype ZodEnumValue<T> = T extends z.ZodEnum<[string, ...string[]]> ? z.infer<T> : never\n\nexport type DisplayTextConfig<T = string> = {\n [K in T extends z.ZodEnum<[string, ...string[]]> ? ZodEnumValue<T> : string]: {\n [L in SupportedLanguage]: string\n }\n} & Record<string, { [L in SupportedLanguage]: string }>\n\n// Define the expected interface for the service\nexport interface IDisplayTextService {\n getDisplayText: (\n scope: keyof ServiceMappings,\n value: string | string[],\n language?: SupportedLanguage\n ) => Promise<string>\n}\n\n// define the service\nexport class DisplayTextService implements IDisplayTextService {\n private readonly defaultLanguage: SupportedLanguage = 'en'\n private readonly mappings: ServiceMappings\n\n constructor(customMappings?: Partial<ServiceMappings>) {\n this.mappings = {\n ...defaultMappings, // Use all pre-defined mappings as defaults\n ...customMappings, // Override with any custom mappings if provided\n }\n }\n\n async getDisplayText(\n scope: keyof ServiceMappings,\n value: string | string[],\n language: SupportedLanguage = this.defaultLanguage\n ): Promise<string> {\n const scopeMapping = this.mappings[scope]\n\n if (!scopeMapping) {\n throw new DisplayTextScopeNotFoundError(scope)\n }\n\n if (Array.isArray(value)) {\n const displayTextPromises = value.map((v) => this.getDisplayText(scope, v, language))\n const displayTexts = await Promise.all(displayTextPromises)\n return displayTexts.filter((v) => !!v).join(', ')\n }\n\n const displayTexts = scopeMapping[value]\n\n if (!displayTexts) {\n throw new DisplayTextValueNotFoundError(value, scope)\n }\n\n return displayTexts[language] || displayTexts[this.defaultLanguage] || value\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/services/displayText.tsx"],"names":["defaultMappings","DisplayTextScopeNotFoundError","displayTexts","DisplayTextValueNotFoundError"],"mappings":";;;;;;AAiCO,IAAM,qBAAN,MAAwD;AAAA,EAI7D,YAAY,cAA2C,EAAA;AAHvD,IAAA,IAAA,CAAiB,eAAqC,GAAA,IAAA;AAIpD,IAAA,IAAA,CAAK,QAAW,GAAA;AAAA,MACd,GAAGA,iCAAA;AAAA;AAAA,MACH,GAAG;AAAA;AAAA,KACL;AAAA;AACF,EAEA,MAAM,cACJ,CAAA,KAAA,EACA,KACA,EAAA,QAAA,GAA8B,KAAK,eAClB,EAAA;AACjB,IAAM,MAAA,YAAA,GAAe,IAAK,CAAA,QAAA,CAAS,KAAK,CAAA;AAExC,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAM,MAAA,IAAIC,gDAA8B,KAAK,CAAA;AAAA;AAG/C,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACxB,MAAM,MAAA,mBAAA,GAAsB,KAAM,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,KAAK,cAAe,CAAA,KAAA,EAAO,CAAG,EAAA,QAAQ,CAAC,CAAA;AACpF,MAAA,MAAMC,aAAe,GAAA,MAAM,OAAQ,CAAA,GAAA,CAAI,mBAAmB,CAAA;AAC1D,MAAOA,OAAAA,aAAAA,CAAa,OAAO,CAAC,CAAA,KAAM,CAAC,CAAC,CAAC,CAAE,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA;AAGlD,IAAM,MAAA,YAAA,GAAe,aAAa,KAAK,CAAA;AAEvC,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAM,MAAA,IAAIC,+CAA8B,CAAA,KAAA,EAAO,KAAK,CAAA;AAAA;AAGtD,IAAA,OAAO,aAAa,QAAQ,CAAA,IAAK,YAAa,CAAA,IAAA,CAAK,eAAe,CAAK,IAAA,KAAA;AAAA;AAE3E","file":"chunk-2YUUVN7E.cjs","sourcesContent":["import { type z } from 'zod'\n\nimport { defaultMappings } from '@/lib/mappings'\nimport {\n DisplayTextScopeNotFoundError,\n DisplayTextValueNotFoundError,\n} from '@/types/displayText.errors'\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst SUPPORTED_LANGUAGES = ['en'] as const\ntype SupportedLanguage = (typeof SUPPORTED_LANGUAGES)[number]\n\n// Define the display text configuration type for Zod enums\nexport type ServiceMappings = typeof defaultMappings\n\ntype ZodEnumValue<T> = T extends z.ZodEnum<[string, ...string[]]> ? z.infer<T> : never\n\nexport type DisplayTextConfig<T = string> = {\n [K in T extends z.ZodEnum<[string, ...string[]]> ? ZodEnumValue<T> : string]: {\n [L in SupportedLanguage]: string\n }\n} & Record<string, { [L in SupportedLanguage]: string }>\n\n// Define the expected interface for the service\nexport interface IDisplayTextService {\n getDisplayText: (\n scope: keyof ServiceMappings,\n value: string | string[],\n language?: SupportedLanguage\n ) => Promise<string>\n}\n\n// define the service\nexport class DisplayTextService implements IDisplayTextService {\n private readonly defaultLanguage: SupportedLanguage = 'en'\n private readonly mappings: ServiceMappings\n\n constructor(customMappings?: Partial<ServiceMappings>) {\n this.mappings = {\n ...defaultMappings, // Use all pre-defined mappings as defaults\n ...customMappings, // Override with any custom mappings if provided\n }\n }\n\n async getDisplayText(\n scope: keyof ServiceMappings,\n value: string | string[],\n language: SupportedLanguage = this.defaultLanguage\n ): Promise<string> {\n const scopeMapping = this.mappings[scope]\n\n if (!scopeMapping) {\n throw new DisplayTextScopeNotFoundError(scope)\n }\n\n if (Array.isArray(value)) {\n const displayTextPromises = value.map((v) => this.getDisplayText(scope, v, language))\n const displayTexts = await Promise.all(displayTextPromises)\n return displayTexts.filter((v) => !!v).join(', ')\n }\n\n const displayTexts = scopeMapping[value]\n\n if (!displayTexts) {\n throw new DisplayTextValueNotFoundError(value, scope)\n }\n\n return displayTexts[language] || displayTexts[this.defaultLanguage] || value\n }\n}\n"]}
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var chunk4IMEF4J5_cjs = require('./chunk-4IMEF4J5.cjs');
3
+ var chunkPU52LECH_cjs = require('./chunk-PU52LECH.cjs');
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
 
6
6
  function JobDescription({ description }) {
7
7
  if (!description) return null;
8
8
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full flex-col gap-2", children: [
9
9
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xl font-bold", children: "Job Description" }),
10
- /* @__PURE__ */ jsxRuntime.jsx(chunk4IMEF4J5_cjs.ReadMore, { text: description })
10
+ /* @__PURE__ */ jsxRuntime.jsx(chunkPU52LECH_cjs.ReadMore, { text: description })
11
11
  ] });
12
12
  }
13
13
 
14
14
  exports.JobDescription = JobDescription;
15
- //# sourceMappingURL=chunk-QRMNGILI.cjs.map
16
- //# sourceMappingURL=chunk-QRMNGILI.cjs.map
15
+ //# sourceMappingURL=chunk-4F2PRKMM.cjs.map
16
+ //# sourceMappingURL=chunk-4F2PRKMM.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/jobPost/JobDescription.tsx"],"names":["jsxs","jsx","ReadMore"],"mappings":";;;;;AAMO,SAAS,cAAA,CAAe,EAAE,WAAA,EAAoC,EAAA;AACnE,EAAI,IAAA,CAAC,aAAoB,OAAA,IAAA;AAEzB,EACE,uBAAAA,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,4BACb,EAAA,QAAA,EAAA;AAAA,oBAACC,cAAA,CAAA,IAAA,EAAA,EAAG,SAAU,EAAA,mBAAA,EAAoB,QAAe,EAAA,iBAAA,EAAA,CAAA;AAAA,oBACjDA,cAAA,CAACC,0BAAS,EAAA,EAAA,IAAA,EAAM,WAAa,EAAA;AAAA,GAC/B,EAAA,CAAA;AAEJ","file":"chunk-QRMNGILI.cjs","sourcesContent":["import { ReadMore } from '@/components/ui/ReadMore'\n\nexport type JobDescriptionProps = {\n description?: string\n}\n\nexport function JobDescription({ description }: JobDescriptionProps) {\n if (!description) return null\n\n return (\n <div className=\"flex w-full flex-col gap-2\">\n <h3 className=\"text-xl font-bold\">Job Description</h3>\n <ReadMore text={description} />\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/components/jobPost/JobDescription.tsx"],"names":["jsxs","jsx","ReadMore"],"mappings":";;;;;AAMO,SAAS,cAAA,CAAe,EAAE,WAAA,EAAoC,EAAA;AACnE,EAAI,IAAA,CAAC,aAAoB,OAAA,IAAA;AAEzB,EACE,uBAAAA,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,4BACb,EAAA,QAAA,EAAA;AAAA,oBAACC,cAAA,CAAA,IAAA,EAAA,EAAG,SAAU,EAAA,mBAAA,EAAoB,QAAe,EAAA,iBAAA,EAAA,CAAA;AAAA,oBACjDA,cAAA,CAACC,0BAAS,EAAA,EAAA,IAAA,EAAM,WAAa,EAAA;AAAA,GAC/B,EAAA,CAAA;AAEJ","file":"chunk-4F2PRKMM.cjs","sourcesContent":["import { ReadMore } from '@/components/ui/ReadMore'\n\nexport type JobDescriptionProps = {\n description?: string\n}\n\nexport function JobDescription({ description }: JobDescriptionProps) {\n if (!description) return null\n\n return (\n <div className=\"flex w-full flex-col gap-2\">\n <h3 className=\"text-xl font-bold\">Job Description</h3>\n <ReadMore text={description} />\n </div>\n )\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  import { CompanyInformation } from './chunk-J3UEZGEG.js';
2
2
  import { CompanyTake } from './chunk-MF24QPA6.js';
3
- import { JobDescription } from './chunk-5NQTYPZG.js';
3
+ import { JobDescription } from './chunk-KRG4BXBL.js';
4
4
  import { JobHeader } from './chunk-6Z6T5WWS.js';
5
5
  import { salaryRange } from './chunk-PLPEZUCB.js';
6
6
  import { cn } from './chunk-2FGZQI42.js';
7
7
  import { CompanyBenefits } from './chunk-BLMWXMW4.js';
8
- import { useDisplayText } from './chunk-K76RPF2X.js';
8
+ import { useDisplayText } from './chunk-CPZFINPG.js';
9
9
  import { getAddressList } from './chunk-KZBS5RNE.js';
10
10
  import * as DateFns from 'date-fns';
11
11
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -111,5 +111,5 @@ function JobPost({
111
111
  }
112
112
 
113
113
  export { JobPost };
114
- //# sourceMappingURL=chunk-NCEXSFMC.js.map
115
- //# sourceMappingURL=chunk-NCEXSFMC.js.map
114
+ //# sourceMappingURL=chunk-556GH3CB.js.map
115
+ //# sourceMappingURL=chunk-556GH3CB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/jobPost/JobPost.tsx"],"names":[],"mappings":"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","file":"chunk-NCEXSFMC.js","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":[],"mappings":";;;;;;;;;;;;AA2BO,SAAS,OAAQ,CAAA;AAAA,EACtB,GAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAA2B,EAAA;AACzB,EAAA,MAAM,uBAA0B,GAAA,cAAA,CAAe,gBAAkB,EAAA,GAAA,CAAI,cAAc,CAAA;AACnF,EAAA,MAAM,wBAA2B,GAAA,cAAA,CAAe,iBAAmB,EAAA,GAAA,CAAI,eAAe,CAAA;AACtF,EAAA,MAAM,oBAAuB,GAAA,cAAA,CAAe,aAAe,EAAA,GAAA,CAAI,WAAW,CAAA;AAC1E,EAAM,MAAA,kBAAA,GAAqB,eAAe,GAAG,CAAA;AAC7C,EAAM,MAAA,eAAA,GAAkB,WAAY,CAAA,GAAA,CAAI,eAAe,CAAA;AACvD,EAAA,MAAM,gBAAwB,OAAoB,CAAA,mBAAA,CAAA,IAAI,IAAK,CAAA,GAAA,CAAI,UAAoB,CAAG,EAAA;AAAA,IACpF,SAAW,EAAA;AAAA,GACZ,CAAA;AAED,EAAA,MAAM,IAAO,GAAA;AAAA,IACX,CAAC,CAAC,eAAmB,IAAA;AAAA,MACnB,IAAM,EAAA,UAAA;AAAA,MACN,IAAM,EAAA,QAAA;AAAA,MACN,KAAO,EAAA;AAAA,KACT;AAAA,IACA,CAAC,CAAC,uBAA2B,IAAA;AAAA,MAC3B,IAAM,EAAA,oBAAA;AAAA,MACN,IAAM,EAAA,gBAAA;AAAA,MACN,KAAO,EAAA;AAAA,KACT;AAAA,IACA,CAAC,CAAC,wBAA4B,IAAA;AAAA,MAC5B,IAAM,EAAA,aAAA;AAAA,MACN,IAAM,EAAA,OAAA;AAAA,MACN,KAAO,EAAA;AAAA,KACT;AAAA,IACA,CAAC,CAAC,oBAAwB,IAAA;AAAA,MACxB,IAAM,EAAA,oBAAA;AAAA,MACN,IAAM,EAAA,aAAA;AAAA,MACN,KAAO,EAAA;AAAA,KACT;AAAA,IACA,GAAG,kBAAA,CAAmB,GAAI,CAAA,CAAC,KAAW,MAAA;AAAA,MACpC,IAAM,EAAA,SAAA;AAAA,MACN,IAAM,EAAA,UAAA;AAAA,MACN;AAAA,KACA,CAAA;AAAA,IACF,MAAO,CAAA,CAAC,CAAM,KAAA,CAAC,CAAC,CAAC,CAAA;AAEnB,EACE,uBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAA,EAAA;AAAA,QACT,2BAAA;AAAA,QACA,CAAC,UAAc,IAAA;AAAA,OACjB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,OAAO,GAAI,CAAA,KAAA;AAAA,YACX,SAAA;AAAA,YACA,UAAA,EAAY,IAAI,kBAAoB,EAAA,WAAA;AAAA,YACpC,SAAW,EAAA,GAAA,CAAI,kBAAoB,EAAA,IAAA,EAAM,KAAO,EAAA,GAAA;AAAA,YAChD,SAAA,EAAW,CAAC,GAAI,CAAA,kBAAA,EAAoB,eAAe,EAAI,EAAA,CAAA,OAAA,EAAU,aAAa,CAAE,CAAA,CAAA;AAAA,YAChF,OAAA;AAAA,YACA,UAAA;AAAA,YACA,UAAA;AAAA,YACA,gBAAkB,EAAA,YAAA;AAAA,YAClB,kBAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,wBAEA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,0BACb,EAAA,QAAA,EAAA;AAAA,0BAAC,GAAA,CAAA,cAAA,EAAA,EAAe,WAAa,EAAA,GAAA,CAAI,WAAa,EAAA,CAAA;AAAA,0BAE9C,GAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,SAAA;AAAA,cACA,OAAA,EAAS,GAAI,CAAA,kBAAA,EAAoB,UAAY,EAAA;AAAA;AAAA,WAC/C;AAAA,0BAEA,GAAA;AAAA,YAAC,kBAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,GAAI,CAAA,kBAAA,EAAoB,WAAe,IAAA,EAAA;AAAA,cAC7C,GAAA,EAAK,GAAI,CAAA,kBAAA,EAAoB,iBAAmB,EAAA,UAAA;AAAA,cAChD,OAAA,EAAS,GAAI,CAAA,kBAAA,EAAoB,iBAAmB,EAAA,cAAA;AAAA,cACpD,GAAA,EAAK,GAAI,CAAA,kBAAA,EAAoB,UAAY,EAAA,UAAA;AAAA,cACzC,OAAA,EAAS,IAAI,kBAAoB,EAAA;AAAA;AAAA,WACnC;AAAA,0BAEA,GAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,QAAU,EAAA,GAAA,CAAI,kBAAoB,EAAA,cAAA,EAAgB,iBAC9C,GAAI,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,KAAK,CACnB,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,MAAS;AAAA;AAAA;AAClC,SACF,EAAA;AAAA;AAAA;AAAA,GACF;AAEJ","file":"chunk-556GH3CB.js","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,4 +1,4 @@
1
- import { Button } from './chunk-ZSNEG5J7.js';
1
+ import { Button } from './chunk-SRIUPNYK.js';
2
2
  import { useState, useEffect } from 'react';
3
3
  import Markdown from 'react-markdown';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -48,5 +48,5 @@ function ReadMore({ text, ...props }) {
48
48
  }
49
49
 
50
50
  export { ReadMore };
51
- //# sourceMappingURL=chunk-F3FYMCRO.js.map
52
- //# sourceMappingURL=chunk-F3FYMCRO.js.map
51
+ //# sourceMappingURL=chunk-5IFDS3CJ.js.map
52
+ //# sourceMappingURL=chunk-5IFDS3CJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/ReadMore.tsx"],"names":["text","maxWords","isExpanded","snippet"],"mappings":";;;;;AAWO,SAAS,QAAS,CAAA,EAAE,IAAM,EAAA,GAAG,OAAkC,EAAA;AACpE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,GAAG,CAAA;AAE5C,EAAA,MAAM,cAAiB,GAAA,IAAA,CAAK,KAAM,CAAA,GAAG,EAAE,MAAS,GAAA,QAAA;AAEhD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,MAAM,cAAc,MAAO,CAAA,UAAA;AAC3B,MAAA,IAAI,eAAe,GAAK,EAAA;AACtB,QAAA,WAAA,CAAY,EAAE,CAAA;AAAA,OACT,MAAA;AACL,QAAA,WAAA,CAAY,GAAG,CAAA;AAAA;AACjB,KACF;AAEA,IAAe,cAAA,EAAA;AACf,IAAO,MAAA,CAAA,gBAAA,CAAiB,UAAU,cAAc,CAAA;AAEhD,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAoB,CAAA,QAAA,EAAU,cAAc,CAAA;AAAA,GAClE,EAAG,EAAE,CAAA;AAEL,EAAS,SAAA,kBAAA,CAAmBA,KAAcC,EAAAA,SAAAA,EAAkBC,WAA6B,EAAA;AACvF,IAAI,IAAA,CAAC,gBAAuBF,OAAAA,KAAAA;AAE5B,IAAM,MAAA,KAAA,GAAQA,KAAK,CAAA,KAAA,CAAM,GAAG,CAAA;AAC5B,IAAMG,MAAAA,QAAAA,GAAUD,cAAaF,KAAO,GAAA,KAAA,CAAM,MAAM,CAAGC,EAAAA,SAAQ,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA;AACrE,IAAM,MAAA,YAAA,GAAeC,cAAa,EAAK,GAAA,KAAA;AACvC,IAAO,OAAA,CAAA,EAAGC,QAAO,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA;AAAA;AAGnC,EAAA,MAAM,UAAa,GAAA,MAAM,aAAc,CAAA,CAAC,UAAU,CAAA;AAElD,EAAA,MAAM,OAAU,GAAA,kBAAA,CAAmB,IAAM,EAAA,QAAA,EAAU,UAAU,CAAA;AAE7D,EACE,uBAAA,IAAA,CAAC,KAAK,EAAA,EAAA,GAAG,KACP,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,KAAA,EAAA,EAAI,eAAY,gBAAiB,EAAA,SAAA,EAAU,qBAC1C,QAAC,kBAAA,GAAA,CAAA,QAAA,EAAA,EAAU,mBAAQ,CACrB,EAAA,CAAA;AAAA,IACC,cACC,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,IAAK,EAAA,QAAA;AAAA,QACL,SAAU,EAAA,uCAAA;AAAA,QACV,OAAQ,EAAA,MAAA;AAAA,QACR,OAAS,EAAA,UAAA;AAAA,QAET,QAAA,kBAAA,IAAA,CAAC,GAAE,EAAA,EAAA,SAAA,EAAU,gDAAiD,EAAA,QAAA,EAAA;AAAA,UAAA,OAAA;AAAA,UACtD,aAAa,MAAS,GAAA;AAAA,SAC9B,EAAA;AAAA;AAAA;AACF,GAEJ,EAAA,CAAA;AAEJ","file":"chunk-F3FYMCRO.js","sourcesContent":["'use client'\n\nimport { type 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 const isOverMaxWords = text.split(' ').length > maxWords\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 if (!isOverMaxWords) return text\n\n const words = text.split(' ')\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 {isOverMaxWords && (\n <Button\n type=\"button\"\n className=\"mt-2 flex items-center justify-center\"\n variant=\"link\"\n onClick={toggleText}\n >\n <p className=\"text-sm font-bold underline underline-offset-2\">\n Read {isExpanded ? 'less' : 'more'}\n </p>\n </Button>\n )}\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/components/ui/ReadMore.tsx"],"names":["text","maxWords","isExpanded","snippet"],"mappings":";;;;;AAWO,SAAS,QAAS,CAAA,EAAE,IAAM,EAAA,GAAG,OAAkC,EAAA;AACpE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,GAAG,CAAA;AAE5C,EAAA,MAAM,cAAiB,GAAA,IAAA,CAAK,KAAM,CAAA,GAAG,EAAE,MAAS,GAAA,QAAA;AAEhD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,MAAM,cAAc,MAAO,CAAA,UAAA;AAC3B,MAAA,IAAI,eAAe,GAAK,EAAA;AACtB,QAAA,WAAA,CAAY,EAAE,CAAA;AAAA,OACT,MAAA;AACL,QAAA,WAAA,CAAY,GAAG,CAAA;AAAA;AACjB,KACF;AAEA,IAAe,cAAA,EAAA;AACf,IAAO,MAAA,CAAA,gBAAA,CAAiB,UAAU,cAAc,CAAA;AAEhD,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAoB,CAAA,QAAA,EAAU,cAAc,CAAA;AAAA,GAClE,EAAG,EAAE,CAAA;AAEL,EAAS,SAAA,kBAAA,CAAmBA,KAAcC,EAAAA,SAAAA,EAAkBC,WAA6B,EAAA;AACvF,IAAI,IAAA,CAAC,gBAAuBF,OAAAA,KAAAA;AAE5B,IAAM,MAAA,KAAA,GAAQA,KAAK,CAAA,KAAA,CAAM,GAAG,CAAA;AAC5B,IAAMG,MAAAA,QAAAA,GAAUD,cAAaF,KAAO,GAAA,KAAA,CAAM,MAAM,CAAGC,EAAAA,SAAQ,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA;AACrE,IAAM,MAAA,YAAA,GAAeC,cAAa,EAAK,GAAA,KAAA;AACvC,IAAO,OAAA,CAAA,EAAGC,QAAO,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA;AAAA;AAGnC,EAAA,MAAM,UAAa,GAAA,MAAM,aAAc,CAAA,CAAC,UAAU,CAAA;AAElD,EAAA,MAAM,OAAU,GAAA,kBAAA,CAAmB,IAAM,EAAA,QAAA,EAAU,UAAU,CAAA;AAE7D,EACE,uBAAA,IAAA,CAAC,KAAK,EAAA,EAAA,GAAG,KACP,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,KAAA,EAAA,EAAI,eAAY,gBAAiB,EAAA,SAAA,EAAU,qBAC1C,QAAC,kBAAA,GAAA,CAAA,QAAA,EAAA,EAAU,mBAAQ,CACrB,EAAA,CAAA;AAAA,IACC,cACC,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,IAAK,EAAA,QAAA;AAAA,QACL,SAAU,EAAA,uCAAA;AAAA,QACV,OAAQ,EAAA,MAAA;AAAA,QACR,OAAS,EAAA,UAAA;AAAA,QAET,QAAA,kBAAA,IAAA,CAAC,GAAE,EAAA,EAAA,SAAA,EAAU,gDAAiD,EAAA,QAAA,EAAA;AAAA,UAAA,OAAA;AAAA,UACtD,aAAa,MAAS,GAAA;AAAA,SAC9B,EAAA;AAAA;AAAA;AACF,GAEJ,EAAA,CAAA;AAEJ","file":"chunk-5IFDS3CJ.js","sourcesContent":["'use client'\n\nimport { type 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 const isOverMaxWords = text.split(' ').length > maxWords\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 if (!isOverMaxWords) return text\n\n const words = text.split(' ')\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 {isOverMaxWords && (\n <Button\n type=\"button\"\n className=\"mt-2 flex items-center justify-center\"\n variant=\"link\"\n onClick={toggleText}\n >\n <p className=\"text-sm font-bold underline underline-offset-2\">\n Read {isExpanded ? 'less' : 'more'}\n </p>\n </Button>\n )}\n </div>\n )\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkLV6BHE7Q_cjs = require('./chunk-LV6BHE7Q.cjs');
4
- var chunkZILKCCXQ_cjs = require('./chunk-ZILKCCXQ.cjs');
3
+ var chunkHDQBXWSS_cjs = require('./chunk-HDQBXWSS.cjs');
4
+ var chunkVBRVZZ2I_cjs = require('./chunk-VBRVZZ2I.cjs');
5
5
  var chunkMGWZXPMF_cjs = require('./chunk-MGWZXPMF.cjs');
6
6
  var lucideReact = require('lucide-react');
7
7
  var jsxRuntime = require('react/jsx-runtime');
@@ -30,9 +30,9 @@ function ModalDialog({
30
30
  onClose();
31
31
  }
32
32
  };
33
- return /* @__PURE__ */ jsxRuntime.jsx(chunkZILKCCXQ_cjs.Dialog, { open: isOpen, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkZILKCCXQ_cjs.DialogContent, { className: chunkMGWZXPMF_cjs.cn("flex flex-col", classNames?.content), children: [
33
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkVBRVZZ2I_cjs.Dialog, { open: isOpen, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkVBRVZZ2I_cjs.DialogContent, { className: chunkMGWZXPMF_cjs.cn("flex flex-col", classNames?.content), children: [
34
34
  /* @__PURE__ */ jsxRuntime.jsxs(
35
- chunkZILKCCXQ_cjs.DialogHeader,
35
+ chunkVBRVZZ2I_cjs.DialogHeader,
36
36
  {
37
37
  className: chunkMGWZXPMF_cjs.cn(
38
38
  "flex flex-row items-center justify-between gap-2 border-b border-grey-10 px-6 py-4",
@@ -40,22 +40,22 @@ function ModalDialog({
40
40
  ),
41
41
  children: [
42
42
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
43
- /* @__PURE__ */ jsxRuntime.jsxs(chunkZILKCCXQ_cjs.DialogTitle, { className: chunkMGWZXPMF_cjs.cn(classNames?.title), children: [
43
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkVBRVZZ2I_cjs.DialogTitle, { className: chunkMGWZXPMF_cjs.cn(classNames?.title), children: [
44
44
  titleIcon && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-row items-center gap-2", children: [
45
45
  titleIcon,
46
46
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: title })
47
47
  ] }),
48
48
  !titleIcon && title
49
49
  ] }),
50
- description ? /* @__PURE__ */ jsxRuntime.jsx(chunkZILKCCXQ_cjs.DialogDescription, { className: chunkMGWZXPMF_cjs.cn(classNames?.description), children: description }) : /* @__PURE__ */ jsxRuntime.jsx(chunkZILKCCXQ_cjs.DialogDescription, { className: "sr-only", children: "No description provided" })
50
+ description ? /* @__PURE__ */ jsxRuntime.jsx(chunkVBRVZZ2I_cjs.DialogDescription, { className: chunkMGWZXPMF_cjs.cn(classNames?.description), children: description }) : /* @__PURE__ */ jsxRuntime.jsx(chunkVBRVZZ2I_cjs.DialogDescription, { className: "sr-only", children: "No description provided" })
51
51
  ] }),
52
- /* @__PURE__ */ jsxRuntime.jsx(chunkZILKCCXQ_cjs.DialogClose, { disabled: isSubmitting, className: "m-0", "aria-label": "Close", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-5 w-5" }) })
52
+ /* @__PURE__ */ jsxRuntime.jsx(chunkVBRVZZ2I_cjs.DialogClose, { disabled: isSubmitting, className: "m-0", "aria-label": "Close", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-5 w-5" }) })
53
53
  ]
54
54
  }
55
55
  ),
56
56
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkMGWZXPMF_cjs.cn("px-6", classNames?.body), children }),
57
57
  footer && (footer.primary || footer.secondary || footer.tertiary) && /* @__PURE__ */ jsxRuntime.jsxs(
58
- chunkZILKCCXQ_cjs.DialogFooter,
58
+ chunkVBRVZZ2I_cjs.DialogFooter,
59
59
  {
60
60
  className: chunkMGWZXPMF_cjs.cn(
61
61
  "flex items-center gap-2 border-t border-grey-10 px-6 py-4",
@@ -63,7 +63,7 @@ function ModalDialog({
63
63
  ),
64
64
  children: [
65
65
  footer.tertiary && /* @__PURE__ */ jsxRuntime.jsx(
66
- chunkLV6BHE7Q_cjs.Button,
66
+ chunkHDQBXWSS_cjs.Button,
67
67
  {
68
68
  type: "button",
69
69
  size: footer.tertiary.size || "small",
@@ -76,7 +76,7 @@ function ModalDialog({
76
76
  }
77
77
  ),
78
78
  footer.secondary && /* @__PURE__ */ jsxRuntime.jsx(
79
- chunkLV6BHE7Q_cjs.Button,
79
+ chunkHDQBXWSS_cjs.Button,
80
80
  {
81
81
  type: "button",
82
82
  size: footer.secondary.size || "small",
@@ -89,7 +89,7 @@ function ModalDialog({
89
89
  }
90
90
  ),
91
91
  footer.primary && /* @__PURE__ */ jsxRuntime.jsx(
92
- chunkLV6BHE7Q_cjs.Button,
92
+ chunkHDQBXWSS_cjs.Button,
93
93
  {
94
94
  type: "button",
95
95
  size: footer.primary.size || "small",
@@ -108,5 +108,5 @@ function ModalDialog({
108
108
  }
109
109
 
110
110
  exports.ModalDialog = ModalDialog;
111
- //# sourceMappingURL=chunk-5EUHR4DQ.cjs.map
112
- //# sourceMappingURL=chunk-5EUHR4DQ.cjs.map
111
+ //# sourceMappingURL=chunk-7PVEU6NQ.cjs.map
112
+ //# sourceMappingURL=chunk-7PVEU6NQ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/ModalDialog.tsx"],"names":["jsx","Dialog","jsxs","DialogContent","cn","DialogHeader","DialogTitle","DialogDescription","DialogClose","X","DialogFooter","Button"],"mappings":";;;;;;;;AA6DO,SAAS,WAAY,CAAA;AAAA,EAC1B,MAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAe,GAAA,KAAA;AAAA,EACf,KAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAqB,EAAA;AACnB,EAAM,MAAA,gBAAA,GAAmB,CAAC,IAAkB,KAAA;AAE1C,IAAI,IAAA,CAAC,QAAQ,YAAc,EAAA;AACzB,MAAA;AAAA;AAIF,IAAA,IAAI,YAAc,EAAA;AAChB,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA;AAAA;AAIF,IAAI,IAAA,CAAC,QAAQ,OAAS,EAAA;AACpB,MAAQ,OAAA,EAAA;AAAA;AACV,GACF;AAEA,EAAA,uBACGA,cAAA,CAAAC,wBAAA,EAAA,EAAO,IAAM,EAAA,MAAA,EAAQ,YAAc,EAAA,gBAAA,EAClC,QAAC,kBAAAC,eAAA,CAAAC,+BAAA,EAAA,EAAc,SAAW,EAAAC,oBAAA,CAAG,eAAiB,EAAA,UAAA,EAAY,OAAO,CAC/D,EAAA,QAAA,EAAA;AAAA,oBAAAF,eAAA;AAAA,MAACG,8BAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAAD,oBAAA;AAAA,UACT,oFAAA;AAAA,UACA,UAAY,EAAA;AAAA,SACd;AAAA,QAEA,QAAA,EAAA;AAAA,0BAACF,eAAA,CAAA,KAAA,EAAA,EAAI,WAAU,qBACb,EAAA,QAAA,EAAA;AAAA,4BAAAA,eAAA,CAACI,6BAAY,EAAA,EAAA,SAAA,EAAWF,oBAAG,CAAA,UAAA,EAAY,KAAK,CACzC,EAAA,QAAA,EAAA;AAAA,cACC,SAAA,oBAAAF,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,kCACZ,EAAA,QAAA,EAAA;AAAA,gBAAA,SAAA;AAAA,gCACDF,cAAA,CAAC,UAAM,QAAM,EAAA,KAAA,EAAA;AAAA,eACf,EAAA,CAAA;AAAA,cAED,CAAC,SAAa,IAAA;AAAA,aACjB,EAAA,CAAA;AAAA,YACC,WACC,mBAAAA,cAAA,CAACO,mCAAkB,EAAA,EAAA,SAAA,EAAWH,qBAAG,UAAY,EAAA,WAAW,CACrD,EAAA,QAAA,EAAA,WAAA,EACH,CAEA,mBAAAJ,cAAA,CAACO,mCAAkB,EAAA,EAAA,SAAA,EAAU,WAAU,QAAuB,EAAA,yBAAA,EAAA;AAAA,WAElE,EAAA,CAAA;AAAA,0BACCP,cAAA,CAAAQ,6BAAA,EAAA,EAAY,QAAU,EAAA,YAAA,EAAc,SAAU,EAAA,KAAA,EAAM,YAAW,EAAA,OAAA,EAC9D,QAAC,kBAAAR,cAAA,CAAAS,aAAA,EAAA,EAAE,SAAU,EAAA,SAAA,EAAU,CACzB,EAAA;AAAA;AAAA;AAAA,KACF;AAAA,oBAEAT,cAAA,CAAC,SAAI,SAAW,EAAAI,oBAAA,CAAG,QAAQ,UAAY,EAAA,IAAI,GAAI,QAAS,EAAA,CAAA;AAAA,IAEvD,WAAW,MAAO,CAAA,OAAA,IAAW,MAAO,CAAA,SAAA,IAAa,OAAO,QACvD,CAAA,oBAAAF,eAAA;AAAA,MAACQ,8BAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAAN,oBAAA;AAAA,UACT,2DAAA;AAAA,UACA,UAAY,EAAA;AAAA,SACd;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,QACN,oBAAAJ,cAAA;AAAA,YAACW,wBAAA;AAAA,YAAA;AAAA,cACC,IAAK,EAAA,QAAA;AAAA,cACL,IAAA,EAAM,MAAO,CAAA,QAAA,CAAS,IAAQ,IAAA,OAAA;AAAA,cAC9B,OAAA,EAAS,MAAO,CAAA,QAAA,CAAS,OAAW,IAAA,MAAA;AAAA,cACpC,OAAA,EAAS,OAAO,QAAS,CAAA,OAAA;AAAA,cACzB,QAAA,EAAU,MAAO,CAAA,QAAA,CAAS,QAAY,IAAA,YAAA;AAAA,cACtC,SAAA,EAAW,OAAO,QAAS,CAAA,SAAA;AAAA,cAC3B,SAAW,EAAAP,oBAAA,CAAG,QAAU,EAAA,MAAA,CAAO,SAAS,SAAS,CAAA;AAAA,cAEhD,iBAAO,QAAS,CAAA;AAAA;AAAA,WACnB;AAAA,UAED,OAAO,SACN,oBAAAJ,cAAA;AAAA,YAACW,wBAAA;AAAA,YAAA;AAAA,cACC,IAAK,EAAA,QAAA;AAAA,cACL,IAAA,EAAM,MAAO,CAAA,SAAA,CAAU,IAAQ,IAAA,OAAA;AAAA,cAC/B,OAAA,EAAS,MAAO,CAAA,SAAA,CAAU,OAAW,IAAA,SAAA;AAAA,cACrC,OAAA,EAAS,OAAO,SAAU,CAAA,OAAA;AAAA,cAC1B,QAAA,EAAU,MAAO,CAAA,SAAA,CAAU,QAAY,IAAA,YAAA;AAAA,cACvC,SAAA,EAAW,OAAO,SAAU,CAAA,SAAA;AAAA,cAC5B,SAAW,EAAAP,oBAAA,CAAG,QAAU,EAAA,MAAA,CAAO,UAAU,SAAS,CAAA;AAAA,cAEjD,iBAAO,SAAU,CAAA;AAAA;AAAA,WACpB;AAAA,UAED,OAAO,OACN,oBAAAJ,cAAA;AAAA,YAACW,wBAAA;AAAA,YAAA;AAAA,cACC,IAAK,EAAA,QAAA;AAAA,cACL,IAAA,EAAM,MAAO,CAAA,OAAA,CAAQ,IAAQ,IAAA,OAAA;AAAA,cAC7B,OAAA,EAAS,MAAO,CAAA,OAAA,CAAQ,OAAW,IAAA,SAAA;AAAA,cACnC,OAAA,EAAS,OAAO,OAAQ,CAAA,OAAA;AAAA,cACxB,QAAA,EAAU,MAAO,CAAA,OAAA,CAAQ,QAAY,IAAA,YAAA;AAAA,cACrC,SAAA,EAAW,OAAO,OAAQ,CAAA,SAAA;AAAA,cAC1B,SAAW,EAAAP,oBAAA,CAAG,QAAU,EAAA,MAAA,CAAO,QAAQ,SAAS,CAAA;AAAA,cAE/C,iBAAO,OAAQ,CAAA;AAAA;AAAA;AAClB;AAAA;AAAA;AAEJ,GAAA,EAEJ,CACF,EAAA,CAAA;AAEJ","file":"chunk-5EUHR4DQ.cjs","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":["jsx","Dialog","jsxs","DialogContent","cn","DialogHeader","DialogTitle","DialogDescription","DialogClose","X","DialogFooter","Button"],"mappings":"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","file":"chunk-7PVEU6NQ.cjs","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,4 +1,4 @@
1
- import { DisplayTextService } from './chunk-4E3ANVRR.js';
1
+ import { DisplayTextService } from './chunk-OZJZVEF2.js';
2
2
  import { DisplayTextValueNotFoundError } from './chunk-YB2USB4M.js';
3
3
  import { useState, useMemo, useEffect } from 'react';
4
4
 
@@ -33,5 +33,5 @@ var useDisplayText = (scope, value) => {
33
33
  };
34
34
 
35
35
  export { useDisplayText };
36
- //# sourceMappingURL=chunk-K76RPF2X.js.map
37
- //# sourceMappingURL=chunk-K76RPF2X.js.map
36
+ //# sourceMappingURL=chunk-CPZFINPG.js.map
37
+ //# sourceMappingURL=chunk-CPZFINPG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/useDisplayText.ts"],"names":[],"mappings":";;;;AAKa,IAAA,cAAA,GAAiB,CAC5B,KAAA,EACA,KACG,KAAA;AACH,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,EAAE,CAAA;AACjD,EAAA,MAAM,iBAAiB,OAAQ,CAAA,MAAM,IAAI,kBAAmB,EAAA,EAAG,EAAE,CAAA;AAEjE,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,CAAC,cAAkB,IAAA,CAAC,KAAO,EAAA;AAC7B,MAAA,cAAA,CAAe,EAAE,CAAA;AACjB,MAAA;AAAA;AAEF,IAAA,KAAA,CAAM,YAAY;AAChB,MAAI,IAAA;AACF,QAAA,MAAM,MAAS,GAAA,MAAM,cAAe,CAAA,cAAA,CAAe,OAAO,KAAK,CAAA;AAC/D,QAAI,IAAA,OAAO,WAAW,QAAU,EAAA;AAC9B,UAAA,cAAA,CAAe,MAAM,CAAA;AAAA,SAChB,MAAA;AACL,UAAQ,OAAA,CAAA,KAAA,CAAM,sCAAsC,MAAM,CAAA;AAAA;AAC5D,eACO,KAAO,EAAA;AACd,QAAA,IAAI,iBAAiB,6BAA+B,EAAA;AAClD,UAAQ,OAAA,CAAA,IAAA,CAAK,iCAAiC,KAAK,CAAA;AACnD,UAAe,cAAA,CAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACvB,MAAA;AACL,UAAQ,OAAA,CAAA,KAAA,CAAM,qCAAqC,KAAK,CAAA;AACxD,UAAe,cAAA,CAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA;AAC9B;AACF,KACC,GAAA;AAAA,GACF,EAAA,CAAC,KAAO,EAAA,KAAA,EAAO,cAAc,CAAC,CAAA;AAEjC,EAAO,OAAA,WAAA;AACT","file":"chunk-K76RPF2X.js","sourcesContent":["import { useEffect, useMemo, useState } from 'react'\n\nimport { DisplayTextService, type ServiceMappings } from '@/services/displayText'\nimport { DisplayTextValueNotFoundError } from '@/types/displayText.errors'\n\nexport const useDisplayText = (\n scope: keyof ServiceMappings,\n value: string | string[] | undefined | null\n) => {\n const [displayText, setDisplayText] = useState('')\n const displayService = useMemo(() => new DisplayTextService(), [])\n\n useEffect(() => {\n if (!displayService || !value) {\n setDisplayText('')\n return\n }\n void (async () => {\n try {\n const result = await displayService.getDisplayText(scope, value)\n if (typeof result === 'string') {\n setDisplayText(result)\n } else {\n console.error('Expected a string result, but got:', result)\n }\n } catch (error) {\n if (error instanceof DisplayTextValueNotFoundError) {\n console.warn('Display text value not found:', value)\n setDisplayText(String(value))\n } else {\n console.error('Unexpected error formatting text:', error)\n setDisplayText(String(value))\n }\n }\n })()\n }, [scope, value, displayService])\n\n return displayText\n}\n"]}
1
+ {"version":3,"sources":["../src/hooks/useDisplayText.ts"],"names":[],"mappings":";;;;AAKa,IAAA,cAAA,GAAiB,CAC5B,KAAA,EACA,KACG,KAAA;AACH,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,EAAE,CAAA;AACjD,EAAA,MAAM,iBAAiB,OAAQ,CAAA,MAAM,IAAI,kBAAmB,EAAA,EAAG,EAAE,CAAA;AAEjE,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,CAAC,cAAkB,IAAA,CAAC,KAAO,EAAA;AAC7B,MAAA,cAAA,CAAe,EAAE,CAAA;AACjB,MAAA;AAAA;AAEF,IAAA,KAAA,CAAM,YAAY;AAChB,MAAI,IAAA;AACF,QAAA,MAAM,MAAS,GAAA,MAAM,cAAe,CAAA,cAAA,CAAe,OAAO,KAAK,CAAA;AAC/D,QAAI,IAAA,OAAO,WAAW,QAAU,EAAA;AAC9B,UAAA,cAAA,CAAe,MAAM,CAAA;AAAA,SAChB,MAAA;AACL,UAAQ,OAAA,CAAA,KAAA,CAAM,sCAAsC,MAAM,CAAA;AAAA;AAC5D,eACO,KAAO,EAAA;AACd,QAAA,IAAI,iBAAiB,6BAA+B,EAAA;AAClD,UAAQ,OAAA,CAAA,IAAA,CAAK,iCAAiC,KAAK,CAAA;AACnD,UAAe,cAAA,CAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACvB,MAAA;AACL,UAAQ,OAAA,CAAA,KAAA,CAAM,qCAAqC,KAAK,CAAA;AACxD,UAAe,cAAA,CAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA;AAC9B;AACF,KACC,GAAA;AAAA,GACF,EAAA,CAAC,KAAO,EAAA,KAAA,EAAO,cAAc,CAAC,CAAA;AAEjC,EAAO,OAAA,WAAA;AACT","file":"chunk-CPZFINPG.js","sourcesContent":["import { useEffect, useMemo, useState } from 'react'\n\nimport { DisplayTextService, type ServiceMappings } from '@/services/displayText'\nimport { DisplayTextValueNotFoundError } from '@/types/displayText.errors'\n\nexport const useDisplayText = (\n scope: keyof ServiceMappings,\n value: string | string[] | undefined | null\n) => {\n const [displayText, setDisplayText] = useState('')\n const displayService = useMemo(() => new DisplayTextService(), [])\n\n useEffect(() => {\n if (!displayService || !value) {\n setDisplayText('')\n return\n }\n void (async () => {\n try {\n const result = await displayService.getDisplayText(scope, value)\n if (typeof result === 'string') {\n setDisplayText(result)\n } else {\n console.error('Expected a string result, but got:', result)\n }\n } catch (error) {\n if (error instanceof DisplayTextValueNotFoundError) {\n console.warn('Display text value not found:', value)\n setDisplayText(String(value))\n } else {\n console.error('Unexpected error formatting text:', error)\n setDisplayText(String(value))\n }\n }\n })()\n }, [scope, value, displayService])\n\n return displayText\n}\n"]}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkXKLOANYB_cjs = require('./chunk-XKLOANYB.cjs');
3
+ var chunkWRULIQZE_cjs = require('./chunk-WRULIQZE.cjs');
4
4
  var chunkXWQI5MC3_cjs = require('./chunk-XWQI5MC3.cjs');
5
5
  var chunkLTJXX7NG_cjs = require('./chunk-LTJXX7NG.cjs');
6
6
  var chunkSJ2X3D2Z_cjs = require('./chunk-SJ2X3D2Z.cjs');
7
7
  var chunkXO6LO5CU_cjs = require('./chunk-XO6LO5CU.cjs');
8
8
  var chunkYNREEZ75_cjs = require('./chunk-YNREEZ75.cjs');
9
- var chunkVBLDMVVW_cjs = require('./chunk-VBLDMVVW.cjs');
9
+ var chunk2XIO3WQ2_cjs = require('./chunk-2XIO3WQ2.cjs');
10
10
  var chunkMGWZXPMF_cjs = require('./chunk-MGWZXPMF.cjs');
11
11
  var cva = require('cva');
12
12
  var lucideReact = require('lucide-react');
@@ -34,52 +34,41 @@ var Combobox = react.forwardRef((props, ref) => {
34
34
  onChange: handleChange,
35
35
  children: footer
36
36
  } = props;
37
- const [selected, setSelected] = react.useState([]);
38
37
  const [open, setOpen] = react.useState(false);
39
38
  const containerRef = react.useRef(null);
40
- const isUserUpdate = react.useRef(false);
41
- const IconComponent = icon && lucideReact.icons[icon];
39
+ const IconComponent = icon;
42
40
  const hideSearchBox = options?.length <= 5;
43
41
  const isDefault = variant === "default";
44
42
  const isChip = variant === "chip";
43
+ const optionsByValue = react.useMemo(
44
+ () => new Map(options.map((o) => [o.value, o])),
45
+ [options]
46
+ );
47
+ const selected = react.useMemo(() => {
48
+ const valueArray = multiselect ? value ?? [] : value ? [value] : [];
49
+ return valueArray.map((v) => optionsByValue.get(v)).filter((v) => v !== void 0);
50
+ }, [value, multiselect, optionsByValue]);
45
51
  const isEmpty = selected.length === 0;
46
52
  const showChevron = isDefault ? isEmpty : true;
47
53
  const close = () => setOpen(false);
48
- react.useEffect(() => {
49
- if (!isUserUpdate.current) {
50
- const valueArray = multiselect ? value ?? [] : value ? [value] : [];
51
- setSelected(
52
- valueArray.map((v) => options.find((o) => o.value === v)).filter((v) => v !== void 0)
53
- );
54
- }
55
- }, [value, options, multiselect]);
56
- react.useEffect(() => {
57
- if (isUserUpdate.current) {
58
- if (multiselect) {
59
- handleChange?.(selected.map((o) => o.value));
60
- } else {
61
- handleChange?.(selected[0]?.value ?? "");
62
- }
63
- isUserUpdate.current = false;
64
- }
65
- }, [selected, multiselect, handleChange]);
66
- const updateMultiSelect = (prev, option) => {
67
- return prev.some((o) => o.value === option.value) ? prev.filter((v) => v !== option) : [...prev, option];
68
- };
69
- const handleSelect = (value2) => {
70
- const option = options.find((o) => o.value === value2);
54
+ const handleSelect = (nextValue) => {
55
+ const option = optionsByValue.get(nextValue);
71
56
  if (!option || option.disabled) return;
72
- isUserUpdate.current = true;
73
57
  if (multiselect) {
74
- setSelected((prev) => updateMultiSelect(prev, option));
58
+ const current = Array.isArray(value) ? value : [];
59
+ const next = current.includes(option.value) ? current.filter((v) => v !== option.value) : [...current, option.value];
60
+ handleChange?.(next);
75
61
  } else {
76
- setSelected([option]);
62
+ handleChange?.(option.value);
77
63
  close();
78
64
  }
79
65
  };
80
66
  const handleClear = () => {
81
- isUserUpdate.current = true;
82
- setSelected([]);
67
+ if (multiselect) {
68
+ handleChange?.([]);
69
+ } else {
70
+ handleChange?.("");
71
+ }
83
72
  };
84
73
  const handleDisplayValue = () => {
85
74
  const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(", ") : placeholder;
@@ -151,19 +140,19 @@ var Combobox = react.forwardRef((props, ref) => {
151
140
  collisionPadding: 8,
152
141
  sideOffset: 4,
153
142
  align: "start",
154
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkVBLDMVVW_cjs.Command, { children: [
155
- !hideSearchBox && /* @__PURE__ */ jsxRuntime.jsx(chunkVBLDMVVW_cjs.CommandInput, { placeholder: "Search..." }),
156
- /* @__PURE__ */ jsxRuntime.jsxs(chunkVBLDMVVW_cjs.CommandList, { children: [
157
- /* @__PURE__ */ jsxRuntime.jsx(chunkVBLDMVVW_cjs.CommandEmpty, { children: "No results" }),
158
- /* @__PURE__ */ jsxRuntime.jsx(chunkVBLDMVVW_cjs.CommandGroup, { children: options.map(({ id: id2, disabled, ...option }) => /* @__PURE__ */ jsxRuntime.jsx(
159
- chunkVBLDMVVW_cjs.CommandItem,
143
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunk2XIO3WQ2_cjs.Command, { children: [
144
+ !hideSearchBox && /* @__PURE__ */ jsxRuntime.jsx(chunk2XIO3WQ2_cjs.CommandInput, { placeholder: "Search..." }),
145
+ /* @__PURE__ */ jsxRuntime.jsxs(chunk2XIO3WQ2_cjs.CommandList, { children: [
146
+ /* @__PURE__ */ jsxRuntime.jsx(chunk2XIO3WQ2_cjs.CommandEmpty, { children: "No results" }),
147
+ /* @__PURE__ */ jsxRuntime.jsx(chunk2XIO3WQ2_cjs.CommandGroup, { children: options.map(({ id: id2, disabled, ...option }) => /* @__PURE__ */ jsxRuntime.jsx(
148
+ chunk2XIO3WQ2_cjs.CommandItem,
160
149
  {
161
150
  value: option.title,
162
151
  disabled,
163
152
  onSelect: () => handleSelect(option.value),
164
153
  className: chunkMGWZXPMF_cjs.cn(disabled && "cursor-not-allowed opacity-50"),
165
154
  children: /* @__PURE__ */ jsxRuntime.jsx(
166
- chunkXKLOANYB_cjs.ListItem_default,
155
+ chunkWRULIQZE_cjs.ListItem_default,
167
156
  {
168
157
  className: chunkMGWZXPMF_cjs.cn(classNames?.items, "truncate py-1"),
169
158
  isSelected: selected.some((s) => s.value === option.value),
@@ -223,5 +212,5 @@ var triggerVariants = cva.cva(
223
212
  );
224
213
 
225
214
  exports.Combobox = Combobox;
226
- //# sourceMappingURL=chunk-ILLYEM3G.cjs.map
227
- //# sourceMappingURL=chunk-ILLYEM3G.cjs.map
215
+ //# sourceMappingURL=chunk-E244YSGF.cjs.map
216
+ //# sourceMappingURL=chunk-E244YSGF.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/Combobox.tsx"],"names":["forwardRef","useState","useRef","useMemo","jsxs","cn","jsx","Label_default","Popover","PopoverTrigger","Badge","ChevronDownIcon","PopoverContent","Command","CommandInput","CommandList","CommandEmpty","CommandGroup","id","CommandItem","ListItem_default","Separator","CircleX","ErrorMessage_default","cva"],"mappings":";;;;;;;;;;;;;;;AAyDO,IAAM,QAAW,GAAAA,gBAAA,CAA0C,CAAC,KAAA,EAAO,GAAQ,KAAA;AAChF,EAAM,MAAA;AAAA,IACJ,EAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAY,GAAA,IAAA;AAAA,IACZ,OAAU,GAAA,SAAA;AAAA,IACV,IAAA;AAAA,IACA,IAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAU,EAAA,YAAA;AAAA,IACV,QAAU,EAAA;AAAA,GACR,GAAA,KAAA;AACJ,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIC,eAAS,KAAK,CAAA;AACtC,EAAM,MAAA,YAAA,GAAeC,aAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,aAAgB,GAAA,IAAA;AACtB,EAAM,MAAA,aAAA,GAAgB,SAAS,MAAU,IAAA,CAAA;AACzC,EAAA,MAAM,YAAY,OAAY,KAAA,SAAA;AAC9B,EAAA,MAAM,SAAS,OAAY,KAAA,MAAA;AAC3B,EAAA,MAAM,cAAiB,GAAAC,aAAA;AAAA,IACrB,MAAM,IAAI,GAAI,CAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,CAAM,KAAA,CAAC,CAAE,CAAA,KAAA,EAAO,CAAC,CAAU,CAAC,CAAA;AAAA,IACvD,CAAC,OAAO;AAAA,GACV;AACA,EAAM,MAAA,QAAA,GAAWA,cAAQ,MAAM;AAC7B,IAAM,MAAA,UAAA,GAAa,cAAgB,KAAS,IAAA,KAAmB,KAAQ,GAAA,CAAC,KAAe,CAAA,GAAI,EAAC;AAC5F,IAAA,OAAO,UAAW,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,cAAe,CAAA,GAAA,CAAI,CAAC,CAAC,CAAE,CAAA,MAAA,CAAO,CAAC,CAAA,KAAmB,MAAM,MAAS,CAAA;AAAA,GAC7F,EAAA,CAAC,KAAO,EAAA,WAAA,EAAa,cAAc,CAAC,CAAA;AACvC,EAAM,MAAA,OAAA,GAAU,SAAS,MAAW,KAAA,CAAA;AACpC,EAAM,MAAA,WAAA,GAAc,YAAY,OAAU,GAAA,IAAA;AAC1C,EAAM,MAAA,KAAA,GAAQ,MAAM,OAAA,CAAQ,KAAK,CAAA;AAEjC,EAAM,MAAA,YAAA,GAAe,CAAC,SAAsB,KAAA;AAC1C,IAAM,MAAA,MAAA,GAAS,cAAe,CAAA,GAAA,CAAI,SAAS,CAAA;AAC3C,IAAI,IAAA,CAAC,MAAU,IAAA,MAAA,CAAO,QAAU,EAAA;AAEhC,IAAA,IAAI,WAAa,EAAA;AACf,MAAA,MAAM,UAAW,KAAM,CAAA,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,EAAC;AACjD,MAAA,MAAM,OAAO,OAAQ,CAAA,QAAA,CAAS,OAAO,KAAK,CAAA,GACtC,QAAQ,MAAO,CAAA,CAAC,CAAM,KAAA,CAAA,KAAM,OAAO,KAAK,CAAA,GACxC,CAAC,GAAG,OAAA,EAAS,OAAO,KAAK,CAAA;AAC7B,MAAA,YAAA,GAAe,IAAI,CAAA;AAAA,KACd,MAAA;AACL,MAAA,YAAA,GAAe,OAAO,KAAK,CAAA;AAC3B,MAAM,KAAA,EAAA;AAAA;AACR,GACF;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,WAAa,EAAA;AACf,MAAA,YAAA,GAAe,EAAE,CAAA;AAAA,KACZ,MAAA;AACL,MAAA,YAAA,GAAe,EAAE,CAAA;AAAA;AACnB,GACF;AAEA,EAAA,MAAM,qBAAqB,MAAM;AAC/B,IAAA,MAAM,YAAe,GAAA,CAAC,OAAU,GAAA,QAAA,CAAS,GAAI,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,KAAK,CAAA,CAAE,IAAK,CAAA,IAAI,CAAI,GAAA,WAAA;AAC1E,IAAA,OAAO,YAAY,YAAe,GAAA,KAAA;AAAA,GACpC;AAEA,EACE,uBAAAC,eAAA,CAAC,SAAI,GAAK,EAAA,YAAA,EAAc,WAAWC,oBAAG,CAAA,qBAAA,EAAuB,SAAS,CACnE,EAAA,QAAA,EAAA;AAAA,IACC,SAAA,oBAAAC,cAAA;AAAA,MAACC,+BAAA;AAAA,MAAA;AAAA,QACC,IAAM,EAAA,KAAA;AAAA,QACN,OAAS,EAAA,IAAA;AAAA,QACT,QAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAW,UAAY,EAAA;AAAA;AAAA,KACzB;AAAA,oBAGFH,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,eACb,EAAA,QAAA,EAAA;AAAA,sBAACA,eAAA,CAAAI,yBAAA,EAAA,EAAQ,IAAY,EAAA,YAAA,EAAc,OACjC,EAAA,QAAA,EAAA;AAAA,wBAAAF,cAAA;AAAA,UAACG,gCAAA;AAAA,UAAA;AAAA,YACC,OAAO,EAAA,IAAA;AAAA,YACP,QAAA,EAAU,QAAQ,MAAW,KAAA,CAAA;AAAA,YAC7B,aAAA,EAAa,CAAG,EAAA,EAAA,IAAM,IAAI,CAAA,iBAAA,CAAA;AAAA,YAE1B,QAAA,kBAAAL,eAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,GAAA;AAAA,gBACA,SAAW,EAAAC,oBAAA;AAAA,kBACT,eAAgB,CAAA,EAAE,OAAS,EAAA,IAAA,EAAM,CAAA;AAAA,kBACjC,SAAA,IAAa,CAAC,OAAW,IAAA,OAAA;AAAA,kBACzB,UAAY,EAAA;AAAA,iBACd;AAAA,gBACA,eAAe,EAAA,IAAA;AAAA,gBAEd,QAAA,EAAA;AAAA,kBAAA,SAAA,IAAa,aAAiB,oBAAAC,cAAA,CAAC,aAAc,EAAA,EAAA,SAAA,EAAU,kBAAmB,EAAA,CAAA;AAAA,kBAC1E,MAAA,IAAU,CAAC,OAAW,oBAAAA,cAAA,CAACI,2BAAM,OAAQ,EAAA,QAAA,EAAU,mBAAS,MAAO,EAAA,CAAA;AAAA,kCAEhEJ,cAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAW,EAAAD,oBAAA;AAAA,wBACT,gCAAA;AAAA,wBACA,aAAa,OAAW,IAAA;AAAA,uBAC1B;AAAA,sBAEC,QAAmB,EAAA,kBAAA;AAAA;AAAA,mBACtB;AAAA,kBAEC,WACC,oBAAAC,cAAA;AAAA,oBAACK,2BAAA;AAAA,oBAAA;AAAA,sBACC,SAAU,EAAA,uDAAA;AAAA,sBACV,IAAK,EAAA;AAAA;AAAA;AACP;AAAA;AAAA;AAEJ;AAAA,SACF;AAAA,wBAEAL,cAAA;AAAA,UAACM,gCAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,SAAY,GAAA,YAAA,CAAa,OAAU,GAAA,MAAA;AAAA,YAC9C,SAAW,EAAAP,oBAAA;AAAA,cACT,mDAAA;AAAA,cACA,kDAAA;AAAA,cACA,UAAY,EAAA;AAAA,aACd;AAAA,YACA,gBAAkB,EAAA,CAAA;AAAA,YAClB,UAAY,EAAA,CAAA;AAAA,YACZ,KAAM,EAAA,OAAA;AAAA,YAEN,0CAACQ,yBACE,EAAA,EAAA,QAAA,EAAA;AAAA,cAAA,CAAC,aAAiB,oBAAAP,cAAA,CAACQ,8BAAa,EAAA,EAAA,WAAA,EAAY,WAAY,EAAA,CAAA;AAAA,8CAExDC,6BACC,EAAA,EAAA,QAAA,EAAA;AAAA,gCAAAT,cAAA,CAACU,kCAAa,QAAU,EAAA,YAAA,EAAA,CAAA;AAAA,gCACxBV,cAAA,CAACW,8BACE,EAAA,EAAA,QAAA,EAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,EAAE,EAAA,EAAAC,GAAI,EAAA,QAAA,EAAU,GAAG,MAAA,EAC/B,qBAAAZ,cAAA;AAAA,kBAACa,6BAAA;AAAA,kBAAA;AAAA,oBAEC,OAAO,MAAO,CAAA,KAAA;AAAA,oBACd,QAAA;AAAA,oBACA,QAAU,EAAA,MAAM,YAAa,CAAA,MAAA,CAAO,KAAK,CAAA;AAAA,oBACzC,SAAA,EAAWd,oBAAG,CAAA,QAAA,IAAY,+BAA+B,CAAA;AAAA,oBAEzD,QAAA,kBAAAC,cAAA;AAAA,sBAACc,kCAAA;AAAA,sBAAA;AAAA,wBACC,SAAW,EAAAf,oBAAA,CAAG,UAAY,EAAA,KAAA,EAAO,eAAe,CAAA;AAAA,wBAChD,UAAA,EAAY,SAAS,IAAK,CAAA,CAAC,MAAM,CAAE,CAAA,KAAA,KAAU,OAAO,KAAK,CAAA;AAAA,wBACzD,WAAa,EAAA,WAAA;AAAA,wBACZ,GAAG;AAAA;AAAA;AACN,mBAAA;AAAA,kBAXKa;AAAA,iBAaR,CACH,EAAA;AAAA,eACF,EAAA,CAAA;AAAA,cAEC,CAAC,CAAC,MAAU,oBAAAZ,cAAA,CAACe,2BAAU,EAAA,EAAA,CAAA;AAAA,cACvB,MAAU,IAAA,MAAA,CAAO,EAAE,KAAA,EAAO;AAAA,aAC7B,EAAA;AAAA;AAAA;AACF,OACF,EAAA,CAAA;AAAA,MAEC,SAAA,IAAa,CAAC,OACb,oBAAAf,cAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAK,EAAA,QAAA;AAAA,UACL,SAAU,EAAA,4HAAA;AAAA,UACV,OAAS,EAAA,WAAA;AAAA,UAET,QAAA,kBAAAA,cAAA,CAACgB,mBAAQ,EAAA,EAAA,SAAA,EAAU,wBAAyB,EAAA;AAAA;AAAA;AAC9C,KAEJ,EAAA,CAAA;AAAA,oBAEAhB,cAAA,CAACiB,sCAAa,EAAA,EAAA,OAAA,EAAS,KAAO,EAAA;AAAA,GAChC,EAAA,CAAA;AAEJ,CAAC;AACD,QAAA,CAAS,WAAc,GAAA,UAAA;AAEvB,IAAM,eAAkB,GAAAC,OAAA;AAAA,EACtB,6JAAA;AAAA,EACA;AAAA,IACE,QAAU,EAAA;AAAA,MACR,OAAS,EAAA;AAAA,QACP,OAAA,EAAS,CAAC,QAAA,EAAU,YAAY,CAAA;AAAA,QAChC,IAAM,EAAA;AAAA,UACJ,WAAA;AAAA,UACA,aAAA;AAAA,UACA,4BAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,KAAO,EAAA,CAAC,KAAO,EAAA,MAAA,EAAQ,QAAQ,SAAS,CAAA;AAAA,QACxC,MAAQ,EAAA,CAAC,KAAO,EAAA,MAAA,EAAQ,QAAQ,SAAS,CAAA;AAAA,QACzC,KAAO,EAAA,CAAC,MAAQ,EAAA,MAAA,EAAQ,QAAQ,WAAW,CAAA;AAAA,QAC3C,MAAQ,EAAA,CAAC,MAAQ,EAAA,MAAA,EAAQ,QAAQ,WAAW;AAAA;AAC9C,KACF;AAAA,IACA,eAAiB,EAAA;AAAA,MACf,OAAS,EAAA,SAAA;AAAA,MACT,IAAM,EAAA;AAAA;AACR;AAEJ,CAAA","file":"chunk-E244YSGF.cjs","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"]}