@next-degree/pickle-shared-js 0.13.7 → 0.14.1

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 (153) hide show
  1. package/dist/{chunk-ZZCTMR2F.cjs → chunk-2YUUVN7E.cjs} +3 -3
  2. package/dist/{chunk-ZZCTMR2F.cjs.map → chunk-2YUUVN7E.cjs.map} +1 -1
  3. package/dist/{chunk-IJV66D4K.cjs → chunk-46EFOSND.cjs} +2 -11
  4. package/dist/chunk-46EFOSND.cjs.map +1 -0
  5. package/dist/{chunk-7NP3NX67.cjs → chunk-4BGH2D62.cjs} +10 -10
  6. package/dist/chunk-4BGH2D62.cjs.map +1 -0
  7. package/dist/{chunk-YVKKQOTE.cjs → chunk-4FETL23S.cjs} +17 -14
  8. package/dist/chunk-4FETL23S.cjs.map +1 -0
  9. package/dist/chunk-5GODYRZA.js +138 -0
  10. package/dist/chunk-5GODYRZA.js.map +1 -0
  11. package/dist/{chunk-U27VO642.js → chunk-62HL22CD.js} +12 -5
  12. package/dist/chunk-62HL22CD.js.map +1 -0
  13. package/dist/chunk-6KGXXX6X.cjs +140 -0
  14. package/dist/chunk-6KGXXX6X.cjs.map +1 -0
  15. package/dist/chunk-73JL5O6N.cjs +95 -0
  16. package/dist/chunk-73JL5O6N.cjs.map +1 -0
  17. package/dist/{chunk-6EW2D7K7.cjs → chunk-7TFFAGVB.cjs} +33 -8
  18. package/dist/chunk-7TFFAGVB.cjs.map +1 -0
  19. package/dist/{chunk-SKMP4FO7.cjs → chunk-ASPUIRWU.cjs} +22 -4
  20. package/dist/chunk-ASPUIRWU.cjs.map +1 -0
  21. package/dist/{chunk-KM5XDOAL.js → chunk-AZ4V3ZLU.js} +2 -11
  22. package/dist/chunk-AZ4V3ZLU.js.map +1 -0
  23. package/dist/{chunk-LFWX5GEE.cjs → chunk-CGCGALTZ.cjs} +6 -6
  24. package/dist/{chunk-LFWX5GEE.cjs.map → chunk-CGCGALTZ.cjs.map} +1 -1
  25. package/dist/{chunk-K76RPF2X.js → chunk-CPZFINPG.js} +3 -3
  26. package/dist/{chunk-K76RPF2X.js.map → chunk-CPZFINPG.js.map} +1 -1
  27. package/dist/{chunk-LT35HARQ.cjs → chunk-EYN3RHOF.cjs} +18 -11
  28. package/dist/chunk-EYN3RHOF.cjs.map +1 -0
  29. package/dist/{chunk-3FQTSGHL.cjs → chunk-F567WG2X.cjs} +47 -35
  30. package/dist/chunk-F567WG2X.cjs.map +1 -0
  31. package/dist/{chunk-GHJACW4X.cjs → chunk-FDGHWRRP.cjs} +27 -8
  32. package/dist/chunk-FDGHWRRP.cjs.map +1 -0
  33. package/dist/{chunk-DUVGFEGU.js → chunk-G4KDEQIL.js} +28 -18
  34. package/dist/chunk-G4KDEQIL.js.map +1 -0
  35. package/dist/chunk-IPP5X4TY.js +53 -0
  36. package/dist/chunk-IPP5X4TY.js.map +1 -0
  37. package/dist/{chunk-XGQU7BQK.js → chunk-JZLJVA4I.js} +47 -35
  38. package/dist/chunk-JZLJVA4I.js.map +1 -0
  39. package/dist/{chunk-C3DCFPJC.cjs → chunk-KBAY4F7D.cjs} +23 -16
  40. package/dist/chunk-KBAY4F7D.cjs.map +1 -0
  41. package/dist/{chunk-3XO3AJR4.js → chunk-N2DDL726.js} +6 -6
  42. package/dist/chunk-N2DDL726.js.map +1 -0
  43. package/dist/{chunk-VB32IBQC.cjs → chunk-N7GS4DZD.cjs} +8 -6
  44. package/dist/chunk-N7GS4DZD.cjs.map +1 -0
  45. package/dist/{chunk-567FG76G.cjs → chunk-OXDKVZZ5.cjs} +4 -4
  46. package/dist/{chunk-567FG76G.cjs.map → chunk-OXDKVZZ5.cjs.map} +1 -1
  47. package/dist/{chunk-4E3ANVRR.js → chunk-OZJZVEF2.js} +3 -3
  48. package/dist/{chunk-4E3ANVRR.js.map → chunk-OZJZVEF2.js.map} +1 -1
  49. package/dist/{chunk-Z5PEOX6F.js → chunk-PU4O76IS.js} +12 -9
  50. package/dist/chunk-PU4O76IS.js.map +1 -0
  51. package/dist/chunk-PVW2B7IC.js +73 -0
  52. package/dist/chunk-PVW2B7IC.js.map +1 -0
  53. package/dist/{chunk-NCEXSFMC.js → chunk-QYSTBZXD.js} +3 -3
  54. package/dist/{chunk-NCEXSFMC.js.map → chunk-QYSTBZXD.js.map} +1 -1
  55. package/dist/{chunk-62OBBM7T.js → chunk-SNHRG4TY.js} +23 -16
  56. package/dist/chunk-SNHRG4TY.js.map +1 -0
  57. package/dist/{chunk-DURKKV2E.js → chunk-TXSLKNR3.js} +6 -4
  58. package/dist/chunk-TXSLKNR3.js.map +1 -0
  59. package/dist/{chunk-EV54AFL4.js → chunk-YJICO3OG.js} +27 -8
  60. package/dist/chunk-YJICO3OG.js.map +1 -0
  61. package/dist/chunk-Z77KENZ6.js +52 -0
  62. package/dist/chunk-Z77KENZ6.js.map +1 -0
  63. package/dist/{chunk-UW6NEKBF.cjs → chunk-ZLANEWSF.cjs} +28 -18
  64. package/dist/chunk-ZLANEWSF.cjs.map +1 -0
  65. package/dist/components/jobPost/JobPost.cjs +6 -6
  66. package/dist/components/jobPost/JobPost.js +5 -5
  67. package/dist/components/primitives/command.cjs +10 -10
  68. package/dist/components/primitives/command.js +1 -1
  69. package/dist/components/primitives/radio-group.cjs +3 -3
  70. package/dist/components/primitives/radio-group.d.cts +9 -1
  71. package/dist/components/primitives/radio-group.d.ts +9 -1
  72. package/dist/components/primitives/radio-group.js +1 -1
  73. package/dist/components/ui/Combobox.cjs +4 -4
  74. package/dist/components/ui/Combobox.d.cts +2 -1
  75. package/dist/components/ui/Combobox.d.ts +2 -1
  76. package/dist/components/ui/Combobox.js +3 -3
  77. package/dist/components/ui/Counter.cjs +2 -2
  78. package/dist/components/ui/Counter.d.cts +2 -2
  79. package/dist/components/ui/Counter.d.ts +2 -2
  80. package/dist/components/ui/Counter.js +1 -1
  81. package/dist/components/ui/DatePicker.cjs +2 -2
  82. package/dist/components/ui/DatePicker.d.cts +8 -3
  83. package/dist/components/ui/DatePicker.d.ts +8 -3
  84. package/dist/components/ui/DatePicker.js +1 -1
  85. package/dist/components/ui/Input.cjs +2 -2
  86. package/dist/components/ui/Input.d.cts +2 -1
  87. package/dist/components/ui/Input.d.ts +2 -1
  88. package/dist/components/ui/Input.js +1 -1
  89. package/dist/components/ui/Map/MapComponent.cjs +4 -4
  90. package/dist/components/ui/Map/MapComponent.js +3 -3
  91. package/dist/components/ui/Map/MapContent.cjs +2 -2
  92. package/dist/components/ui/Map/MapContent.js +1 -1
  93. package/dist/components/ui/Map/hooks.cjs +4 -4
  94. package/dist/components/ui/Map/hooks.js +1 -1
  95. package/dist/components/ui/Map/index.cjs +4 -4
  96. package/dist/components/ui/Map/index.js +3 -3
  97. package/dist/components/ui/PlacesQueryInput.cjs +3 -3
  98. package/dist/components/ui/PlacesQueryInput.d.cts +3 -1
  99. package/dist/components/ui/PlacesQueryInput.d.ts +3 -1
  100. package/dist/components/ui/PlacesQueryInput.js +2 -2
  101. package/dist/components/ui/Radio.cjs +3 -3
  102. package/dist/components/ui/Radio.d.cts +4 -1
  103. package/dist/components/ui/Radio.d.ts +4 -1
  104. package/dist/components/ui/Radio.js +2 -2
  105. package/dist/components/ui/Select.cjs +2 -2
  106. package/dist/components/ui/Select.d.cts +8 -1
  107. package/dist/components/ui/Select.d.ts +8 -1
  108. package/dist/components/ui/Select.js +1 -1
  109. package/dist/components/ui/Switch.cjs +2 -2
  110. package/dist/components/ui/Switch.d.cts +7 -1
  111. package/dist/components/ui/Switch.d.ts +7 -1
  112. package/dist/components/ui/Switch.js +1 -1
  113. package/dist/hooks/useDisplayText.cjs +4 -4
  114. package/dist/hooks/useDisplayText.js +3 -3
  115. package/dist/index.cjs +57 -57
  116. package/dist/index.js +25 -25
  117. package/dist/services/displayText.cjs +3 -3
  118. package/dist/services/displayText.js +2 -2
  119. package/dist/styles/globals.css +53 -26
  120. package/dist/styles/globals.css.map +1 -1
  121. package/package.json +1 -1
  122. package/dist/chunk-2I2TWTPC.js +0 -115
  123. package/dist/chunk-2I2TWTPC.js.map +0 -1
  124. package/dist/chunk-3FQTSGHL.cjs.map +0 -1
  125. package/dist/chunk-3XO3AJR4.js.map +0 -1
  126. package/dist/chunk-62OBBM7T.js.map +0 -1
  127. package/dist/chunk-6EW2D7K7.cjs.map +0 -1
  128. package/dist/chunk-7NP3NX67.cjs.map +0 -1
  129. package/dist/chunk-B7NHA4GE.js +0 -33
  130. package/dist/chunk-B7NHA4GE.js.map +0 -1
  131. package/dist/chunk-C3DCFPJC.cjs.map +0 -1
  132. package/dist/chunk-DURKKV2E.js.map +0 -1
  133. package/dist/chunk-DUVGFEGU.js.map +0 -1
  134. package/dist/chunk-EV54AFL4.js.map +0 -1
  135. package/dist/chunk-FSMBDLNU.js +0 -34
  136. package/dist/chunk-FSMBDLNU.js.map +0 -1
  137. package/dist/chunk-GHJACW4X.cjs.map +0 -1
  138. package/dist/chunk-IJV66D4K.cjs.map +0 -1
  139. package/dist/chunk-KM5XDOAL.js.map +0 -1
  140. package/dist/chunk-LT35HARQ.cjs.map +0 -1
  141. package/dist/chunk-ORVF255B.cjs +0 -55
  142. package/dist/chunk-ORVF255B.cjs.map +0 -1
  143. package/dist/chunk-SKMP4FO7.cjs.map +0 -1
  144. package/dist/chunk-U27VO642.js.map +0 -1
  145. package/dist/chunk-U7LTIWUS.js +0 -28
  146. package/dist/chunk-U7LTIWUS.js.map +0 -1
  147. package/dist/chunk-UW6NEKBF.cjs.map +0 -1
  148. package/dist/chunk-VAHZQJTA.cjs +0 -117
  149. package/dist/chunk-VAHZQJTA.cjs.map +0 -1
  150. package/dist/chunk-VB32IBQC.cjs.map +0 -1
  151. package/dist/chunk-XGQU7BQK.js.map +0 -1
  152. package/dist/chunk-YVKKQOTE.cjs.map +0 -1
  153. package/dist/chunk-Z5PEOX6F.js.map +0 -1
@@ -0,0 +1,95 @@
1
+ 'use strict';
2
+
3
+ var chunkLTJXX7NG_cjs = require('./chunk-LTJXX7NG.cjs');
4
+ var chunkMGWZXPMF_cjs = require('./chunk-MGWZXPMF.cjs');
5
+ var SwitchPrimitive = require('@radix-ui/react-switch');
6
+ var cva = require('cva');
7
+ var react = require('react');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n.default = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ var SwitchPrimitive__namespace = /*#__PURE__*/_interopNamespace(SwitchPrimitive);
29
+
30
+ var switchRootVariants = cva.cva(
31
+ "relative cursor-default rounded-full bg-grey-20 shadow-md outline-none focus:outline-purple-100 data-[state=checked]:bg-green-90",
32
+ {
33
+ variants: {
34
+ size: {
35
+ small: "h-[20px] w-[34px]",
36
+ normal: "h-[25px] w-[42px]",
37
+ large: "h-[30px] w-[50px]"
38
+ }
39
+ },
40
+ defaultVariants: {
41
+ size: "normal"
42
+ }
43
+ }
44
+ );
45
+ var switchThumbVariants = cva.cva(
46
+ "block rounded-full bg-white shadow-[0_2px_2px] transition-transform duration-100 will-change-transform",
47
+ {
48
+ variants: {
49
+ size: {
50
+ small: "h-[16px] w-[16px] translate-x-0.5 data-[state=checked]:translate-x-[15px]",
51
+ normal: "h-[21px] w-[21px] translate-x-0.5 data-[state=checked]:translate-x-[19px]",
52
+ large: "h-[26px] w-[26px] translate-x-0.5 data-[state=checked]:translate-x-[22px]"
53
+ }
54
+ },
55
+ defaultVariants: {
56
+ size: "normal"
57
+ }
58
+ }
59
+ );
60
+ var switchLabelVariants = cva.cva("leading-none text-grey-80", {
61
+ variants: {
62
+ size: {
63
+ small: "pl-3 text-xs",
64
+ normal: "pl-4 text-sm",
65
+ large: "pl-4 text-base"
66
+ }
67
+ },
68
+ defaultVariants: {
69
+ size: "normal"
70
+ }
71
+ });
72
+ var Switch = react.forwardRef(
73
+ ({ label, error, className, size, ...props }, ref) => {
74
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkMGWZXPMF_cjs.cn("flex items-center", props.disabled && "opacity-50"), children: [
75
+ /* @__PURE__ */ jsxRuntime.jsx(
76
+ SwitchPrimitive__namespace.Root,
77
+ {
78
+ className: chunkMGWZXPMF_cjs.cn(switchRootVariants({ size }), className),
79
+ ref,
80
+ ...props,
81
+ children: /* @__PURE__ */ jsxRuntime.jsx(SwitchPrimitive__namespace.Thumb, { className: switchThumbVariants({ size }) })
82
+ }
83
+ ),
84
+ label && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: switchLabelVariants({ size }), htmlFor: props.name, children: [
85
+ label,
86
+ /* @__PURE__ */ jsxRuntime.jsx(chunkLTJXX7NG_cjs.ErrorMessage_default, { message: error, className: "mt-1" })
87
+ ] })
88
+ ] });
89
+ }
90
+ );
91
+ Switch.displayName = "Switch";
92
+
93
+ exports.Switch = Switch;
94
+ //# sourceMappingURL=chunk-73JL5O6N.cjs.map
95
+ //# sourceMappingURL=chunk-73JL5O6N.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/Switch.tsx"],"names":["cva","forwardRef","jsxs","cn","jsx","SwitchPrimitive","ErrorMessage_default"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAM,kBAAqB,GAAAA,OAAA;AAAA,EACzB,kIAAA;AAAA,EACA;AAAA,IACE,QAAU,EAAA;AAAA,MACR,IAAM,EAAA;AAAA,QACJ,KAAO,EAAA,mBAAA;AAAA,QACP,MAAQ,EAAA,mBAAA;AAAA,QACR,KAAO,EAAA;AAAA;AACT,KACF;AAAA,IACA,eAAiB,EAAA;AAAA,MACf,IAAM,EAAA;AAAA;AACR;AAEJ,CAAA;AAEA,IAAM,mBAAsB,GAAAA,OAAA;AAAA,EAC1B,wGAAA;AAAA,EACA;AAAA,IACE,QAAU,EAAA;AAAA,MACR,IAAM,EAAA;AAAA,QACJ,KAAO,EAAA,2EAAA;AAAA,QACP,MAAQ,EAAA,2EAAA;AAAA,QACR,KAAO,EAAA;AAAA;AACT,KACF;AAAA,IACA,eAAiB,EAAA;AAAA,MACf,IAAM,EAAA;AAAA;AACR;AAEJ,CAAA;AAEA,IAAM,mBAAA,GAAsBA,QAAI,2BAA6B,EAAA;AAAA,EAC3D,QAAU,EAAA;AAAA,IACR,IAAM,EAAA;AAAA,MACJ,KAAO,EAAA,cAAA;AAAA,MACP,MAAQ,EAAA,cAAA;AAAA,MACR,KAAO,EAAA;AAAA;AACT,GACF;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,IAAM,EAAA;AAAA;AAEV,CAAC,CAAA;AASM,IAAM,MAAS,GAAAC,gBAAA;AAAA,EACpB,CAAC,EAAE,KAAO,EAAA,KAAA,EAAO,WAAW,IAAM,EAAA,GAAG,KAAM,EAAA,EAAG,GAAQ,KAAA;AACpD,IACE,uBAAAC,eAAA,CAAC,SAAI,SAAW,EAAAC,oBAAA,CAAG,qBAAqB,KAAM,CAAA,QAAA,IAAY,YAAY,CACpE,EAAA,QAAA,EAAA;AAAA,sBAAAC,cAAA;AAAA,QAAiBC,0BAAA,CAAA,IAAA;AAAA,QAAhB;AAAA,UACC,WAAWF,oBAAG,CAAA,kBAAA,CAAmB,EAAE,IAAK,EAAC,GAAG,SAAS,CAAA;AAAA,UACrD,GAAA;AAAA,UACC,GAAG,KAAA;AAAA,UAEJ,QAAA,kBAAAC,cAAA,CAAiBC,kCAAhB,EAAsB,SAAA,EAAW,oBAAoB,EAAE,IAAA,EAAM,CAAG,EAAA;AAAA;AAAA,OACnE;AAAA,MACC,KAAA,oBACEH,eAAA,CAAA,OAAA,EAAA,EAAM,SAAW,EAAA,mBAAA,CAAoB,EAAE,IAAA,EAAM,CAAA,EAAG,OAAS,EAAA,KAAA,CAAM,IAC7D,EAAA,QAAA,EAAA;AAAA,QAAA,KAAA;AAAA,wBAEAE,cAAA,CAAAE,sCAAA,EAAA,EAAa,OAAS,EAAA,KAAA,EAAO,WAAU,MAAO,EAAA;AAAA,OACjD,EAAA;AAAA,KAEJ,EAAA,CAAA;AAAA;AAGN;AACA,MAAA,CAAO,WAAc,GAAA,QAAA","file":"chunk-73JL5O6N.cjs","sourcesContent":["import * as SwitchPrimitive from '@radix-ui/react-switch'\nimport { cva, type VariantProps } from 'cva'\nimport { forwardRef } from 'react'\n\nimport ErrorMessage from '@/components/ui/ErrorMessage'\nimport { cn } from '@/lib/utils'\n\nconst switchRootVariants = cva(\n 'relative cursor-default rounded-full bg-grey-20 shadow-md outline-none focus:outline-purple-100 data-[state=checked]:bg-green-90',\n {\n variants: {\n size: {\n small: 'h-[20px] w-[34px]',\n normal: 'h-[25px] w-[42px]',\n large: 'h-[30px] w-[50px]',\n },\n },\n defaultVariants: {\n size: 'normal',\n },\n }\n)\n\nconst switchThumbVariants = cva(\n 'block rounded-full bg-white shadow-[0_2px_2px] transition-transform duration-100 will-change-transform',\n {\n variants: {\n size: {\n small: 'h-[16px] w-[16px] translate-x-0.5 data-[state=checked]:translate-x-[15px]',\n normal: 'h-[21px] w-[21px] translate-x-0.5 data-[state=checked]:translate-x-[19px]',\n large: 'h-[26px] w-[26px] translate-x-0.5 data-[state=checked]:translate-x-[22px]',\n },\n },\n defaultVariants: {\n size: 'normal',\n },\n }\n)\n\nconst switchLabelVariants = cva('leading-none text-grey-80', {\n variants: {\n size: {\n small: 'pl-3 text-xs',\n normal: 'pl-4 text-sm',\n large: 'pl-4 text-base',\n },\n },\n defaultVariants: {\n size: 'normal',\n },\n})\n\ntype SwitchVariants = VariantProps<typeof switchRootVariants>\n\ninterface Props extends SwitchPrimitive.SwitchProps, SwitchVariants {\n label?: string\n error?: string\n}\n\nexport const Switch = forwardRef<HTMLButtonElement, Props>(\n ({ label, error, className, size, ...props }, ref) => {\n return (\n <div className={cn('flex items-center', props.disabled && 'opacity-50')}>\n <SwitchPrimitive.Root\n className={cn(switchRootVariants({ size }), className)}\n ref={ref}\n {...props}\n >\n <SwitchPrimitive.Thumb className={switchThumbVariants({ size })} />\n </SwitchPrimitive.Root>\n {label && (\n <label className={switchLabelVariants({ size })} htmlFor={props.name}>\n {label}\n\n <ErrorMessage message={error} className=\"mt-1\" />\n </label>\n )}\n </div>\n )\n }\n)\nSwitch.displayName = 'Switch'\n"]}
@@ -2,6 +2,7 @@
2
2
 
3
3
  var chunkMGWZXPMF_cjs = require('./chunk-MGWZXPMF.cjs');
4
4
  var RadioGroupPrimitive = require('@radix-ui/react-radio-group');
5
+ var cva = require('cva');
5
6
  var react = require('react');
6
7
  var jsxRuntime = require('react/jsx-runtime');
7
8
 
@@ -25,27 +26,51 @@ function _interopNamespace(e) {
25
26
 
26
27
  var RadioGroupPrimitive__namespace = /*#__PURE__*/_interopNamespace(RadioGroupPrimitive);
27
28
 
29
+ var radioItemVariants = cva.cva(
30
+ "peer aspect-square rounded-full border border-grey-20 shadow outline outline-1 outline-offset-2 outline-transparent focus:outline-none focus:outline-purple-100 focus-visible:ring-1 focus-visible:ring-ring active:border-green-80 disabled:cursor-not-allowed disabled:opacity-50 group-hover:border-grey-30 data-[state=checked]:border-4 data-[disabled]:border-grey-20 data-[state=checked]:border-green-90 data-[disabled]:bg-grey-10 data-[state=checked]:group-hover:border-green-80",
31
+ {
32
+ variants: {
33
+ size: {
34
+ small: "h-3",
35
+ normal: "h-4",
36
+ large: "h-5"
37
+ }
38
+ },
39
+ defaultVariants: {
40
+ size: "normal"
41
+ }
42
+ }
43
+ );
44
+ var radioLabelVariants = cva.cva("text-grey-80 peer-data-[disabled]:text-grey-40", {
45
+ variants: {
46
+ size: {
47
+ small: "text-xs",
48
+ normal: "text-sm",
49
+ large: "text-base"
50
+ }
51
+ },
52
+ defaultVariants: {
53
+ size: "normal"
54
+ }
55
+ });
28
56
  var RadioGroup = react.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(RadioGroupPrimitive__namespace.Root, { className, ...props, ref }));
29
57
  RadioGroup.displayName = RadioGroupPrimitive__namespace.Root.displayName;
30
- var RadioGroupItem = react.forwardRef(({ className, children, ...props }, ref) => {
58
+ var RadioGroupItem = react.forwardRef(({ className, children, size, ...props }, ref) => {
31
59
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "group flex flex-row items-center gap-2", children: [
32
60
  /* @__PURE__ */ jsxRuntime.jsx(
33
61
  RadioGroupPrimitive__namespace.Item,
34
62
  {
35
63
  ref,
36
- className: chunkMGWZXPMF_cjs.cn(
37
- "peer aspect-square h-4 rounded-full border border-grey-10 shadow outline outline-1 outline-offset-2 outline-transparent focus:outline-none focus:outline-purple-100 focus-visible:ring-1 focus-visible:ring-ring active:border-green-80 disabled:cursor-not-allowed disabled:opacity-50 group-hover:border-grey-20 data-[state=checked]:border-4 data-[disabled]:border-grey-20 data-[state=checked]:border-green-90 data-[disabled]:bg-grey-10 data-[state=checked]:group-hover:border-green-80",
38
- className
39
- ),
64
+ className: chunkMGWZXPMF_cjs.cn(radioItemVariants({ size }), className),
40
65
  ...props
41
66
  }
42
67
  ),
43
- /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: props.id, className: "text-sm peer-data-[disabled]:text-grey-40", children })
68
+ /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: props.id, className: radioLabelVariants({ size }), children })
44
69
  ] });
45
70
  });
46
71
  RadioGroupItem.displayName = RadioGroupPrimitive__namespace.Item.displayName;
47
72
 
48
73
  exports.RadioGroup = RadioGroup;
49
74
  exports.RadioGroupItem = RadioGroupItem;
50
- //# sourceMappingURL=chunk-6EW2D7K7.cjs.map
51
- //# sourceMappingURL=chunk-6EW2D7K7.cjs.map
75
+ //# sourceMappingURL=chunk-7TFFAGVB.cjs.map
76
+ //# sourceMappingURL=chunk-7TFFAGVB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/primitives/radio-group.tsx"],"names":["cva","forwardRef","jsx","RadioGroupPrimitive","jsxs","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,IAAM,iBAAoB,GAAAA,OAAA;AAAA,EACxB,8dAAA;AAAA,EACA;AAAA,IACE,QAAU,EAAA;AAAA,MACR,IAAM,EAAA;AAAA,QACJ,KAAO,EAAA,KAAA;AAAA,QACP,MAAQ,EAAA,KAAA;AAAA,QACR,KAAO,EAAA;AAAA;AACT,KACF;AAAA,IACA,eAAiB,EAAA;AAAA,MACf,IAAM,EAAA;AAAA;AACR;AAEJ,CAAA;AAEA,IAAM,kBAAA,GAAqBA,QAAI,gDAAkD,EAAA;AAAA,EAC/E,QAAU,EAAA;AAAA,IACR,IAAM,EAAA;AAAA,MACJ,KAAO,EAAA,SAAA;AAAA,MACP,MAAQ,EAAA,SAAA;AAAA,MACR,KAAO,EAAA;AAAA;AACT,GACF;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,IAAM,EAAA;AAAA;AAEV,CAAC,CAAA;AAIM,IAAM,aAAaC,gBAGxB,CAAA,CAAC,EAAE,SAAA,EAAW,GAAG,KAAM,EAAA,EAAG,GAC1B,qBAAAC,cAAA,CAAqBC,qCAApB,EAAyB,SAAA,EAAuB,GAAG,KAAA,EAAO,KAAU,CACtE;AACD,UAAA,CAAW,cAAkCA,8BAAK,CAAA,IAAA,CAAA,WAAA;AAQrC,IAAA,cAAA,GAAiBF,gBAG5B,CAAA,CAAC,EAAE,SAAA,EAAW,UAAU,IAAM,EAAA,GAAG,KAAM,EAAA,EAAG,GAAQ,KAAA;AAClD,EACE,uBAAAG,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,wCACb,EAAA,QAAA,EAAA;AAAA,oBAAAF,cAAA;AAAA,MAAqBC,8BAAA,CAAA,IAAA;AAAA,MAApB;AAAA,QACC,GAAA;AAAA,QACA,WAAWE,oBAAG,CAAA,iBAAA,CAAkB,EAAE,IAAK,EAAC,GAAG,SAAS,CAAA;AAAA,QACnD,GAAG;AAAA;AAAA,KACN;AAAA,oBACAH,cAAA,CAAC,OAAM,EAAA,EAAA,OAAA,EAAS,KAAM,CAAA,EAAA,EAAI,SAAW,EAAA,kBAAA,CAAmB,EAAE,IAAA,EAAM,CAAA,EAC7D,QACH,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ,CAAC;AACD,cAAA,CAAe,cAAkCC,8BAAK,CAAA,IAAA,CAAA,WAAA","file":"chunk-7TFFAGVB.cjs","sourcesContent":["'use client'\n\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport { cva, type VariantProps } from 'cva'\nimport {\n type ComponentPropsWithoutRef,\n type ElementRef,\n forwardRef,\n type PropsWithChildren,\n} from 'react'\n\nimport { cn } from '@/lib/utils'\n\nconst radioItemVariants = cva(\n 'peer aspect-square rounded-full border border-grey-20 shadow outline outline-1 outline-offset-2 outline-transparent focus:outline-none focus:outline-purple-100 focus-visible:ring-1 focus-visible:ring-ring active:border-green-80 disabled:cursor-not-allowed disabled:opacity-50 group-hover:border-grey-30 data-[state=checked]:border-4 data-[disabled]:border-grey-20 data-[state=checked]:border-green-90 data-[disabled]:bg-grey-10 data-[state=checked]:group-hover:border-green-80',\n {\n variants: {\n size: {\n small: 'h-3',\n normal: 'h-4',\n large: 'h-5',\n },\n },\n defaultVariants: {\n size: 'normal',\n },\n }\n)\n\nconst radioLabelVariants = cva('text-grey-80 peer-data-[disabled]:text-grey-40', {\n variants: {\n size: {\n small: 'text-xs',\n normal: 'text-sm',\n large: 'text-base',\n },\n },\n defaultVariants: {\n size: 'normal',\n },\n})\n\nexport type RadioSize = VariantProps<typeof radioItemVariants>['size']\n\nexport const RadioGroup = forwardRef<\n ElementRef<typeof RadioGroupPrimitive.Root>,\n ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <RadioGroupPrimitive.Root className={className} {...props} ref={ref} />\n))\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\ntype RadioGroupItemProps = PropsWithChildren<\n ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> & {\n size?: RadioSize\n }\n>\n\nexport const RadioGroupItem = forwardRef<\n ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(({ className, children, size, ...props }, ref) => {\n return (\n <div className=\"group flex flex-row items-center gap-2\">\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(radioItemVariants({ size }), className)}\n {...props}\n />\n <label htmlFor={props.id} className={radioLabelVariants({ size })}>\n {children}\n </label>\n </div>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n"]}
@@ -25,10 +25,28 @@ function useClusters(coordinates, bounds, zoomLevel) {
25
25
  if (!coordinates) return [];
26
26
  return chunkEBKY3MJH_cjs.convertCoordinatesToGeoJSON(coordinates);
27
27
  }, [coordinates]);
28
+ const superclusterBounds = react.useMemo(() => {
29
+ const isInitialBounds = bounds && bounds[0][0] === -180 && bounds[0][1] === -85 && bounds[1][0] === 180 && bounds[1][1] === 85;
30
+ if (!bounds || isInitialBounds) {
31
+ return [-180, -85, 180, 85];
32
+ }
33
+ const [[south, west], [north, east]] = bounds;
34
+ if (!isFinite(south) || !isFinite(west) || !isFinite(north) || !isFinite(east) || south >= north || west >= east) {
35
+ return [-180, -85, 180, 85];
36
+ }
37
+ const latRange = north - south;
38
+ const lngRange = east - west;
39
+ const latBuffer = latRange * 0.1;
40
+ const lngBuffer = lngRange * 0.1;
41
+ const bufferedSouth = Math.max(-85, south - latBuffer);
42
+ const bufferedWest = Math.max(-180, west - lngBuffer);
43
+ const bufferedNorth = Math.min(85, north + latBuffer);
44
+ const bufferedEast = Math.min(180, east + lngBuffer);
45
+ return [bufferedWest, bufferedSouth, bufferedEast, bufferedNorth];
46
+ }, [bounds]);
28
47
  const { clusters, supercluster } = useSupercluster__default.default({
29
48
  points,
30
- bounds: [-180, -85, 180, 85],
31
- // Use global bounds for consistency
49
+ bounds: superclusterBounds,
32
50
  zoom: zoomLevel || 10,
33
51
  options: chunkNLGWU2KI_cjs.CLUSTERING_CONFIG
34
52
  });
@@ -38,5 +56,5 @@ function useClusters(coordinates, bounds, zoomLevel) {
38
56
  exports.useClusters = useClusters;
39
57
  exports.useMapBounds = useMapBounds;
40
58
  exports.useZoomLevel = useZoomLevel;
41
- //# sourceMappingURL=chunk-SKMP4FO7.cjs.map
42
- //# sourceMappingURL=chunk-SKMP4FO7.cjs.map
59
+ //# sourceMappingURL=chunk-ASPUIRWU.cjs.map
60
+ //# sourceMappingURL=chunk-ASPUIRWU.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/Map/hooks.ts"],"names":["useState","useMemo","convertCoordinatesToGeoJSON","useSupercluster","CLUSTERING_CONFIG"],"mappings":";;;;;;;;;;;AAOO,SAAS,aAA0B,YAAgC,EAAA;AACxE,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,cAA+C,CAAA;AAAA,IACzE,CAAC,MAAM,GAAG,CAAA;AAAA,IACV,CAAC,KAAK,EAAE;AAAA,GACT,CAAA;AAID,EAAO,OAAA,EAAE,QAAQ,SAAU,EAAA;AAC7B;AAEO,SAAS,aAAa,WAAqB,EAAA;AAChD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,WAAW,CAAA;AACtD,EAAO,OAAA,EAAE,WAAW,YAAa,EAAA;AACnC;AAEO,SAAS,WAAA,CACd,WACA,EAAA,MAAA,EACA,SACA,EAAA;AACA,EAAM,MAAA,MAAA,GAASC,cAAQ,MAAM;AAC3B,IAAI,IAAA,CAAC,WAAa,EAAA,OAAO,EAAC;AAC1B,IAAA,OAAOC,8CAA+B,WAAW,CAAA;AAAA,GACnD,EAAG,CAAC,WAAW,CAAC,CAAA;AAGhB,EAAM,MAAA,kBAAA,GAAqBD,cAAQ,MAAM;AAEvC,IAAM,MAAA,eAAA,GACJ,MACA,IAAA,MAAA,CAAO,CAAC,CAAA,CAAE,CAAC,CAAM,KAAA,IAAA,IACjB,MAAO,CAAA,CAAC,CAAE,CAAA,CAAC,MAAM,GACjB,IAAA,MAAA,CAAO,CAAC,CAAA,CAAE,CAAC,CAAA,KAAM,OACjB,MAAO,CAAA,CAAC,CAAE,CAAA,CAAC,CAAM,KAAA,EAAA;AAGnB,IAAI,IAAA,CAAC,UAAU,eAAiB,EAAA;AAC9B,MAAA,OAAO,CAAC,IAAA,EAAM,GAAK,EAAA,GAAA,EAAK,EAAE,CAAA;AAAA;AAI5B,IAAM,MAAA,CAAC,CAAC,KAAO,EAAA,IAAI,GAAG,CAAC,KAAA,EAAO,IAAI,CAAC,CAAI,GAAA,MAAA;AAGvC,IAAA,IACE,CAAC,QAAS,CAAA,KAAK,KACf,CAAC,QAAA,CAAS,IAAI,CACd,IAAA,CAAC,SAAS,KAAK,CAAA,IACf,CAAC,QAAS,CAAA,IAAI,KACd,KAAS,IAAA,KAAA,IACT,QAAQ,IACR,EAAA;AACA,MAAA,OAAO,CAAC,IAAA,EAAM,GAAK,EAAA,GAAA,EAAK,EAAE,CAAA;AAAA;AAI5B,IAAA,MAAM,WAAW,KAAQ,GAAA,KAAA;AACzB,IAAA,MAAM,WAAW,IAAO,GAAA,IAAA;AACxB,IAAA,MAAM,YAAY,QAAW,GAAA,GAAA;AAC7B,IAAA,MAAM,YAAY,QAAW,GAAA,GAAA;AAG7B,IAAA,MAAM,aAAgB,GAAA,IAAA,CAAK,GAAI,CAAA,GAAA,EAAK,QAAQ,SAAS,CAAA;AACrD,IAAA,MAAM,YAAe,GAAA,IAAA,CAAK,GAAI,CAAA,IAAA,EAAM,OAAO,SAAS,CAAA;AACpD,IAAA,MAAM,aAAgB,GAAA,IAAA,CAAK,GAAI,CAAA,EAAA,EAAI,QAAQ,SAAS,CAAA;AACpD,IAAA,MAAM,YAAe,GAAA,IAAA,CAAK,GAAI,CAAA,GAAA,EAAK,OAAO,SAAS,CAAA;AAGnD,IAAA,OAAO,CAAC,YAAA,EAAc,aAAe,EAAA,YAAA,EAAc,aAAa,CAAA;AAAA,GAClE,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,EAAE,QAAA,EAAU,YAAa,EAAA,GAAIE,gCAAgB,CAAA;AAAA,IACjD,MAAA;AAAA,IACA,MAAQ,EAAA,kBAAA;AAAA,IACR,MAAM,SAAa,IAAA,EAAA;AAAA,IACnB,OAAS,EAAAC;AAAA,GACV,CAAA;AAED,EAAO,OAAA,EAAE,UAAU,YAAa,EAAA;AAClC","file":"chunk-ASPUIRWU.cjs","sourcesContent":["import { useMemo, useState } from 'react'\nimport useSupercluster from 'use-supercluster'\n\nimport { convertCoordinatesToGeoJSON } from '@/components/ui/Map/clustering'\nimport { CLUSTERING_CONFIG } from '@/components/ui/Map/constants'\nimport type { Coordinate, PinData } from '@/components/ui/Map/types'\n\nexport function useMapBounds<T = PinData>(_coordinates?: Coordinate<T>[]) {\n const [bounds, setBounds] = useState<[[number, number], [number, number]]>([\n [-180, -85],\n [180, 85],\n ])\n\n // Use global bounds for stability - let the map handle the actual bounds\n // This prevents constant recalculation that causes clustering instability\n return { bounds, setBounds }\n}\n\nexport function useZoomLevel(initialZoom: number) {\n const [zoomLevel, setZoomLevel] = useState(initialZoom)\n return { zoomLevel, setZoomLevel }\n}\n\nexport function useClusters<T = PinData>(\n coordinates?: Coordinate<T>[],\n bounds?: [[number, number], [number, number]],\n zoomLevel?: number\n) {\n const points = useMemo(() => {\n if (!coordinates) return []\n return convertCoordinatesToGeoJSON<T>(coordinates)\n }, [coordinates])\n\n // Convert bounds format and add buffer for smoother panning\n const superclusterBounds = useMemo(() => {\n // Check if bounds are still in initial global state\n const isInitialBounds =\n bounds &&\n bounds[0][0] === -180 &&\n bounds[0][1] === -85 &&\n bounds[1][0] === 180 &&\n bounds[1][1] === 85\n\n // If bounds are not set or still initial, use global bounds\n if (!bounds || isInitialBounds) {\n return [-180, -85, 180, 85]\n }\n\n // Extract bounds: [[south, west], [north, east]]\n const [[south, west], [north, east]] = bounds\n\n // Validate bounds\n if (\n !isFinite(south) ||\n !isFinite(west) ||\n !isFinite(north) ||\n !isFinite(east) ||\n south >= north ||\n west >= east\n ) {\n return [-180, -85, 180, 85]\n }\n\n // Calculate buffer (10% of the range in each direction)\n const latRange = north - south\n const lngRange = east - west\n const latBuffer = latRange * 0.1\n const lngBuffer = lngRange * 0.1\n\n // Apply buffer and clamp to valid geographic bounds\n const bufferedSouth = Math.max(-85, south - latBuffer)\n const bufferedWest = Math.max(-180, west - lngBuffer)\n const bufferedNorth = Math.min(85, north + latBuffer)\n const bufferedEast = Math.min(180, east + lngBuffer)\n\n // Convert to useSupercluster format: [west, south, east, north]\n return [bufferedWest, bufferedSouth, bufferedEast, bufferedNorth]\n }, [bounds])\n\n const { clusters, supercluster } = useSupercluster({\n points,\n bounds: superclusterBounds,\n zoom: zoomLevel || 10,\n options: CLUSTERING_CONFIG,\n })\n\n return { clusters, supercluster }\n}\n"]}
@@ -93,15 +93,6 @@ function MapContent({
93
93
  `marker-${cluster.properties.pointId}`
94
94
  );
95
95
  }),
96
- coordinates && clusters.length === 0 && coordinates.map((coord, index) => /* @__PURE__ */ jsx(
97
- IndividualMarker,
98
- {
99
- coordinate: coord,
100
- onPinClick,
101
- onPinHover
102
- },
103
- `fallback-${index}`
104
- )),
105
96
  focusPoint && radiusMiles && /* @__PURE__ */ jsx(
106
97
  FocusCircle,
107
98
  {
@@ -117,5 +108,5 @@ function MapContent({
117
108
  }
118
109
 
119
110
  export { MapContent };
120
- //# sourceMappingURL=chunk-KM5XDOAL.js.map
121
- //# sourceMappingURL=chunk-KM5XDOAL.js.map
111
+ //# sourceMappingURL=chunk-AZ4V3ZLU.js.map
112
+ //# sourceMappingURL=chunk-AZ4V3ZLU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/Map/MapContent.tsx"],"names":[],"mappings":";;;;;;;;;AAYO,SAAS,UAAwB,CAAA;AAAA,EACtC,KAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAuB,EAAA;AACrB,EAAA,MAAM,MAAM,MAAO,EAAA;AACnB,EAAM,MAAA,WAAA,GAAc,eAAe,MAAM,CAAA;AAEzC,EAAA,MAAM,WAAc,GAAA,WAAA;AAAA,IAClB,CAAC,OAAoB,KAAA;AACnB,MAAA,IAAI,GAAK,EAAA;AACP,QAAA,GAAA,CAAI,QAAQ,OAAO,CAAA;AAAA;AACrB,KACF;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AAEA,EAAM,MAAA,mBAAA,GAAsB,CAAC,CAEvB,KAAA;AACJ,IAAI,IAAA,CAAA,CAAE,OAAO,MAAQ,EAAA;AACnB,MAAM,MAAA,MAAA,GAAS,EAAE,MAAO,CAAA,MAAA;AACxB,MAAU,SAAA,CAAA;AAAA,QACR,CAAC,MAAA,CAAO,KAAO,EAAA,MAAA,CAAO,IAAI,CAAA;AAAA,QAC1B,CAAC,MAAA,CAAO,KAAO,EAAA,MAAA,CAAO,IAAI;AAAA,OAC3B,CAAA;AAAA;AACH,GACF;AAEA,EAAM,MAAA,iBAAA,GAAoB,CAAC,CAAoC,KAAA;AAC7D,IAAI,IAAA,CAAA,CAAE,OAAO,IAAM,EAAA;AACjB,MAAa,YAAA,CAAA,CAAA,CAAE,OAAO,IAAI,CAAA;AAAA;AAC5B,GACF;AAEA,EAAM,MAAA,mBAAA,GAAsB,CAAC,CAAoC,KAAA;AAC/D,IAAI,IAAA,CAAA,CAAE,OAAO,IAAM,EAAA;AACjB,MAAa,YAAA,CAAA,CAAA,CAAE,OAAO,IAAI,CAAA;AAAA;AAC5B,GACF;AAEA,EAAA,2BACG,KAAI,EAAA,EAAA,SAAA,EAAW,EAAG,CAAA,8BAAA,EAAgC,SAAS,CAC1D,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,WAAa,EAAA,OAAA;AAAA,MACb,aAAe,EAAA,SAAA;AAAA,MACf,KAAA;AAAA,MACA,iBAAmB,EAAA,IAAA;AAAA,MACnB,gBAAkB,EAAA,IAAA;AAAA,MAClB,WAAa,EAAA,IAAA;AAAA,MACb,eAAiB,EAAA,mBAAA;AAAA,MACjB,aAAe,EAAA,iBAAA;AAAA,MACf,eAAiB,EAAA,mBAAA;AAAA,MAEhB,QAAA,EAAA;AAAA,QAAY,QAAA,IAAA,CAAC,+BACX,GAAA,CAAA,cAAA,EAAA,EAAe,UACd,QAAC,kBAAA,GAAA,CAAA,GAAA,EAAA,EAAK,GAAG,UAAA,EAAY,CACvB,EAAA,CAAA;AAAA,QAGD,WACC,IAAA,QAAA,CAAS,GAAI,CAAA,CAAC,OAAY,KAAA;AACxB,UAAA,MAAM,EAAE,OAAA,EAAS,SAAU,EAAA,GAAI,OAAQ,CAAA,UAAA;AAEvC,UAAA,IAAI,SAAW,EAAA;AACb,YACE,uBAAA,GAAA;AAAA,cAAC,aAAA;AAAA,cAAA;AAAA,gBAEC,OAAA;AAAA,gBACA,WAAA;AAAA,gBACA,UAAA;AAAA,gBACA,UAAA;AAAA,gBACA,WAAA;AAAA,gBACA;AAAA,eAAA;AAAA,cANK,CAAA,QAAA,EAAW,QAAQ,EAAE,CAAA;AAAA,aAO5B;AAAA;AAIJ,UAAA,MAAM,aAAgB,GAAA,WAAA,CAAY,OAAQ,CAAA,UAAA,CAAW,OAAQ,CAAA;AAC7D,UACE,uBAAA,GAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cAEC,UAAY,EAAA,aAAA;AAAA,cACZ,UAAA;AAAA,cACA;AAAA,aAAA;AAAA,YAHK,CAAA,OAAA,EAAU,OAAQ,CAAA,UAAA,CAAW,OAAO,CAAA;AAAA,WAI3C;AAAA,SAEH,CAAA;AAAA,QAEF,cAAc,WACb,oBAAA,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,UAAA;AAAA,YACA,WAAA;AAAA,YACA,GAAA;AAAA,YACA;AAAA;AAAA;AACF;AAAA;AAAA,GAGN,EAAA,CAAA;AAEJ","file":"chunk-AZ4V3ZLU.js","sourcesContent":["'use client'\n\nimport { AdvancedMarker, Map, Pin, useMap, useMapsLibrary } from '@vis.gl/react-google-maps'\nimport { useCallback } from 'react'\n\nimport { ClusterMarker } from '@/components/ui/Map/ClusterMarker'\nimport { PIN_COLORS } from '@/components/ui/Map/constants'\nimport { FocusCircle } from '@/components/ui/Map/FocusCircle'\nimport { IndividualMarker } from '@/components/ui/Map/IndividualMarker'\nimport type { MapContentProps, PinData } from '@/components/ui/Map/types'\nimport { cn } from '@/lib/utils'\n\nexport function MapContent<T = PinData>({\n mapId,\n mapCenter,\n mapZoom,\n position,\n coordinates,\n clusters,\n supercluster,\n onPinHover,\n onPinClick,\n focusPoint,\n radiusMiles,\n className,\n setBounds,\n setZoomLevel,\n}: MapContentProps<T>) {\n const map = useMap()\n const mapsLibrary = useMapsLibrary('maps')\n\n const zoomToLevel = useCallback(\n (newZoom: number) => {\n if (map) {\n map.setZoom(newZoom)\n }\n },\n [map]\n )\n\n const handleBoundsChanged = (e: {\n detail: { bounds: { south: number; west: number; north: number; east: number } }\n }) => {\n if (e.detail.bounds) {\n const bounds = e.detail.bounds\n setBounds([\n [bounds.south, bounds.west],\n [bounds.north, bounds.east],\n ])\n }\n }\n\n const handleZoomChanged = (e: { detail: { zoom: number } }) => {\n if (e.detail.zoom) {\n setZoomLevel(e.detail.zoom)\n }\n }\n\n const handleCameraChanged = (e: { detail: { zoom: number } }) => {\n if (e.detail.zoom) {\n setZoomLevel(e.detail.zoom)\n }\n }\n\n return (\n <div className={cn('relative h-screen max-w-full', className)}>\n <Map\n defaultZoom={mapZoom}\n defaultCenter={mapCenter}\n mapId={mapId}\n keyboardShortcuts={true}\n disableDefaultUI={true}\n zoomControl={true}\n onBoundsChanged={handleBoundsChanged}\n onZoomChanged={handleZoomChanged}\n onCameraChanged={handleCameraChanged}\n >\n {position && !coordinates && (\n <AdvancedMarker position={position}>\n <Pin {...PIN_COLORS} />\n </AdvancedMarker>\n )}\n\n {coordinates &&\n clusters.map((cluster) => {\n const { cluster: isCluster } = cluster.properties\n\n if (isCluster) {\n return (\n <ClusterMarker\n key={`cluster-${cluster.id}`}\n cluster={cluster}\n coordinates={coordinates}\n onPinClick={onPinClick}\n onPinHover={onPinHover}\n zoomToLevel={zoomToLevel}\n supercluster={supercluster}\n />\n )\n }\n\n const originalPoint = coordinates[cluster.properties.pointId!]\n return (\n <IndividualMarker\n key={`marker-${cluster.properties.pointId}`}\n coordinate={originalPoint}\n onPinClick={onPinClick}\n onPinHover={onPinHover}\n />\n )\n })}\n\n {focusPoint && radiusMiles && (\n <FocusCircle\n focusPoint={focusPoint}\n radiusMiles={radiusMiles}\n map={map}\n mapsLibrary={mapsLibrary}\n />\n )}\n </Map>\n </div>\n )\n}\n"]}
@@ -7,7 +7,7 @@ var chunkTOEADI6J_cjs = require('./chunk-TOEADI6J.cjs');
7
7
  var chunkGQNVPLSG_cjs = require('./chunk-GQNVPLSG.cjs');
8
8
  var chunkMGWZXPMF_cjs = require('./chunk-MGWZXPMF.cjs');
9
9
  var chunk4LUPQO4R_cjs = require('./chunk-4LUPQO4R.cjs');
10
- var chunk567FG76G_cjs = require('./chunk-567FG76G.cjs');
10
+ var chunkOXDKVZZ5_cjs = require('./chunk-OXDKVZZ5.cjs');
11
11
  var chunkXAPQTBJR_cjs = require('./chunk-XAPQTBJR.cjs');
12
12
  var DateFns = require('date-fns');
13
13
  var jsxRuntime = require('react/jsx-runtime');
@@ -42,9 +42,9 @@ function JobPost({
42
42
  backAcceptedRoutes,
43
43
  actions
44
44
  }) {
45
- const formattedEmploymentType = chunk567FG76G_cjs.useDisplayText("employmentType", job.employmentType);
46
- const formattedEmploymentLevel = chunk567FG76G_cjs.useDisplayText("employmentLevel", job.employmentLevel);
47
- const formattedJobFunction = chunk567FG76G_cjs.useDisplayText("jobFunction", job.jobFunction);
45
+ const formattedEmploymentType = chunkOXDKVZZ5_cjs.useDisplayText("employmentType", job.employmentType);
46
+ const formattedEmploymentLevel = chunkOXDKVZZ5_cjs.useDisplayText("employmentLevel", job.employmentLevel);
47
+ const formattedJobFunction = chunkOXDKVZZ5_cjs.useDisplayText("jobFunction", job.jobFunction);
48
48
  const formattedLocations = chunkXAPQTBJR_cjs.getAddressList(job);
49
49
  const formattedSalary = chunkGQNVPLSG_cjs.salaryRange(job.estimatedSalary);
50
50
  const formattedDate = DateFns__namespace.formatDistanceToNow(new Date(job.datePosted), {
@@ -133,5 +133,5 @@ function JobPost({
133
133
  }
134
134
 
135
135
  exports.JobPost = JobPost;
136
- //# sourceMappingURL=chunk-LFWX5GEE.cjs.map
137
- //# sourceMappingURL=chunk-LFWX5GEE.cjs.map
136
+ //# sourceMappingURL=chunk-CGCGALTZ.cjs.map
137
+ //# sourceMappingURL=chunk-CGCGALTZ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/jobPost/JobPost.tsx"],"names":["useDisplayText","getAddressList","salaryRange","DateFns","jsxs","cn","jsx","JobHeader","JobDescription","CompanyTake","CompanyInformation","CompanyBenefits"],"mappings":"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","file":"chunk-LFWX5GEE.cjs","sourcesContent":["'use client'\n\nimport * as DateFns from 'date-fns'\nimport { type ReactNode } from 'react'\n\nimport { CompanyBenefits } from '@/components/company/CompanyBenefits'\nimport { CompanyInformation } from '@/components/company/CompanyInformation'\nimport { CompanyTake } from '@/components/company/CompanyTake'\nimport { JobDescription } from '@/components/jobPost/JobDescription'\nimport { JobHeader } from '@/components/jobPost/JobHeader'\nimport { useDisplayText } from '@/hooks/useDisplayText'\nimport { getAddressList } from '@/lib/locations'\nimport { salaryRange } from '@/lib/salaryRange'\nimport { cn } from '@/lib/utils'\nimport { type JobPostModel } from '@/types/data/job_posting_service_latest'\n\nexport type JobPostProps = {\n job: JobPostModel\n bannerSrc: string\n avatarSrc?: string\n standalone?: boolean\n avatarHref?: string\n fallbackHref?: string\n backAcceptedRoutes?: string[]\n actions?: ReactNode\n}\n\nexport function JobPost({\n job,\n bannerSrc,\n avatarSrc,\n standalone,\n avatarHref,\n fallbackHref,\n backAcceptedRoutes,\n actions,\n}: Readonly<JobPostProps>) {\n const formattedEmploymentType = useDisplayText('employmentType', job.employmentType)\n const formattedEmploymentLevel = useDisplayText('employmentLevel', job.employmentLevel)\n const formattedJobFunction = useDisplayText('jobFunction', job.jobFunction)\n const formattedLocations = getAddressList(job)\n const formattedSalary = salaryRange(job.estimatedSalary)\n const formattedDate = DateFns.formatDistanceToNow(new Date(job.datePosted as string), {\n addSuffix: true,\n })\n\n const tags = [\n !!formattedSalary && {\n icon: 'banknote' as const,\n name: 'salary',\n label: formattedSalary,\n },\n !!formattedEmploymentType && {\n icon: 'briefcase-business' as const,\n name: 'employmentType',\n label: formattedEmploymentType,\n },\n !!formattedEmploymentLevel && {\n icon: 'circle-user' as const,\n name: 'level',\n label: formattedEmploymentLevel,\n },\n !!formattedJobFunction && {\n icon: 'briefcase-business' as const,\n name: 'jobFunction',\n label: formattedJobFunction,\n },\n ...formattedLocations.map((label) => ({\n icon: 'map-pin' as const,\n name: 'location',\n label,\n })),\n ].filter((t) => !!t)\n\n return (\n <div\n className={cn(\n 'flex flex-col gap-10 pb-4',\n !standalone && 'border-1 rounded-3xl border-grey-5'\n )}\n >\n <JobHeader\n title={job.title}\n bannerSrc={bannerSrc}\n avatarName={job.hiringOrganization?.companyName}\n avatarSrc={job.hiringOrganization?.logo?.asset?.url}\n subtitles={[job.hiringOrganization?.companyName ?? '', `Posted ${formattedDate}`]}\n actions={actions}\n standalone={standalone}\n avatarHref={avatarHref}\n backFallbackHref={fallbackHref}\n backAcceptedRoutes={backAcceptedRoutes}\n tags={tags}\n />\n\n <div className=\"flex flex-col gap-8 px-6\">\n <JobDescription description={job.description} />\n\n <CompanyTake\n avatarSrc={avatarSrc}\n content={job.hiringOrganization?.companyNDG?.companyNDGTake}\n />\n\n <CompanyInformation\n name={job.hiringOrganization?.companyName ?? ''}\n how={job.hiringOrganization?.companyPhilosophy?.companyHow}\n mission={job.hiringOrganization?.companyPhilosophy?.companyMission}\n wow={job.hiringOrganization?.companyNDG?.companyWow}\n website={job.hiringOrganization?.companyWebsite}\n />\n\n <CompanyBenefits\n benefits={job.hiringOrganization?.companyCareers?.companyBenefits\n ?.map((b) => b.title)\n .filter((d) => d !== undefined)}\n />\n </div>\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/components/jobPost/JobPost.tsx"],"names":["useDisplayText","getAddressList","salaryRange","DateFns","jsxs","cn","jsx","JobHeader","JobDescription","CompanyTake","CompanyInformation","CompanyBenefits"],"mappings":"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","file":"chunk-CGCGALTZ.cjs","sourcesContent":["'use client'\n\nimport * as DateFns from 'date-fns'\nimport { type ReactNode } from 'react'\n\nimport { CompanyBenefits } from '@/components/company/CompanyBenefits'\nimport { CompanyInformation } from '@/components/company/CompanyInformation'\nimport { CompanyTake } from '@/components/company/CompanyTake'\nimport { JobDescription } from '@/components/jobPost/JobDescription'\nimport { JobHeader } from '@/components/jobPost/JobHeader'\nimport { useDisplayText } from '@/hooks/useDisplayText'\nimport { getAddressList } from '@/lib/locations'\nimport { salaryRange } from '@/lib/salaryRange'\nimport { cn } from '@/lib/utils'\nimport { type JobPostModel } from '@/types/data/job_posting_service_latest'\n\nexport type JobPostProps = {\n job: JobPostModel\n bannerSrc: string\n avatarSrc?: string\n standalone?: boolean\n avatarHref?: string\n fallbackHref?: string\n backAcceptedRoutes?: string[]\n actions?: ReactNode\n}\n\nexport function JobPost({\n job,\n bannerSrc,\n avatarSrc,\n standalone,\n avatarHref,\n fallbackHref,\n backAcceptedRoutes,\n actions,\n}: Readonly<JobPostProps>) {\n const formattedEmploymentType = useDisplayText('employmentType', job.employmentType)\n const formattedEmploymentLevel = useDisplayText('employmentLevel', job.employmentLevel)\n const formattedJobFunction = useDisplayText('jobFunction', job.jobFunction)\n const formattedLocations = getAddressList(job)\n const formattedSalary = salaryRange(job.estimatedSalary)\n const formattedDate = DateFns.formatDistanceToNow(new Date(job.datePosted as string), {\n addSuffix: true,\n })\n\n const tags = [\n !!formattedSalary && {\n icon: 'banknote' as const,\n name: 'salary',\n label: formattedSalary,\n },\n !!formattedEmploymentType && {\n icon: 'briefcase-business' as const,\n name: 'employmentType',\n label: formattedEmploymentType,\n },\n !!formattedEmploymentLevel && {\n icon: 'circle-user' as const,\n name: 'level',\n label: formattedEmploymentLevel,\n },\n !!formattedJobFunction && {\n icon: 'briefcase-business' as const,\n name: 'jobFunction',\n label: formattedJobFunction,\n },\n ...formattedLocations.map((label) => ({\n icon: 'map-pin' as const,\n name: 'location',\n label,\n })),\n ].filter((t) => !!t)\n\n return (\n <div\n className={cn(\n 'flex flex-col gap-10 pb-4',\n !standalone && 'border-1 rounded-3xl border-grey-5'\n )}\n >\n <JobHeader\n title={job.title}\n bannerSrc={bannerSrc}\n avatarName={job.hiringOrganization?.companyName}\n avatarSrc={job.hiringOrganization?.logo?.asset?.url}\n subtitles={[job.hiringOrganization?.companyName ?? '', `Posted ${formattedDate}`]}\n actions={actions}\n standalone={standalone}\n avatarHref={avatarHref}\n backFallbackHref={fallbackHref}\n backAcceptedRoutes={backAcceptedRoutes}\n tags={tags}\n />\n\n <div className=\"flex flex-col gap-8 px-6\">\n <JobDescription description={job.description} />\n\n <CompanyTake\n avatarSrc={avatarSrc}\n content={job.hiringOrganization?.companyNDG?.companyNDGTake}\n />\n\n <CompanyInformation\n name={job.hiringOrganization?.companyName ?? ''}\n how={job.hiringOrganization?.companyPhilosophy?.companyHow}\n mission={job.hiringOrganization?.companyPhilosophy?.companyMission}\n wow={job.hiringOrganization?.companyNDG?.companyWow}\n website={job.hiringOrganization?.companyWebsite}\n />\n\n <CompanyBenefits\n benefits={job.hiringOrganization?.companyCareers?.companyBenefits\n ?.map((b) => b.title)\n .filter((d) => d !== undefined)}\n />\n </div>\n </div>\n )\n}\n"]}
@@ -1,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,17 +1,24 @@
1
1
  'use strict';
2
2
 
3
- var chunkC3DCFPJC_cjs = require('./chunk-C3DCFPJC.cjs');
3
+ var chunkKBAY4F7D_cjs = require('./chunk-KBAY4F7D.cjs');
4
4
  var chunkMGWZXPMF_cjs = require('./chunk-MGWZXPMF.cjs');
5
5
  var chunkAMNEAWA7_cjs = require('./chunk-AMNEAWA7.cjs');
6
6
  var lucideReact = require('lucide-react');
7
7
  var react = require('react');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
9
 
10
+ var sizeClasses = {
11
+ small: "h-8 text-xs",
12
+ normal: "h-9 text-sm",
13
+ large: "h-10 text-base",
14
+ xlarge: "h-11 text-base"
15
+ };
10
16
  function PlacesQueryInput({
11
17
  apiKey,
12
18
  selected,
13
19
  onSelect,
14
- className
20
+ className,
21
+ size = "normal"
15
22
  }) {
16
23
  const [predictions, setPredictions] = react.useState(null);
17
24
  const [input, setInput] = react.useState(selected?.description ?? "");
@@ -67,15 +74,15 @@ function PlacesQueryInput({
67
74
  window.addEventListener("resize", checkDropdownPosition);
68
75
  return () => window.removeEventListener("resize", checkDropdownPosition);
69
76
  }, []);
70
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkMGWZXPMF_cjs.cn("relative w-full", className), ref: inputRef, onBlur: handleBlur, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkC3DCFPJC_cjs.Command, { children: [
77
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkMGWZXPMF_cjs.cn("relative w-full", className), ref: inputRef, onBlur: handleBlur, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkKBAY4F7D_cjs.Command, { children: [
71
78
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative w-full", children: [
72
79
  /* @__PURE__ */ jsxRuntime.jsx(
73
- chunkC3DCFPJC_cjs.CommandInput,
80
+ chunkKBAY4F7D_cjs.CommandInput,
74
81
  {
75
82
  placeholder: "Type an address to search...",
76
83
  value: input,
77
84
  onValueChange: handleInputChange,
78
- className: "truncate pr-8"
85
+ className: chunkMGWZXPMF_cjs.cn("truncate pr-8", sizeClasses[size])
79
86
  }
80
87
  ),
81
88
  isLoadingPredictions && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LoaderCircle, { className: "absolute inset-y-0 right-2 my-auto flex h-8 w-8 animate-spin items-center justify-center rounded-full text-green-100" }),
@@ -90,16 +97,16 @@ function PlacesQueryInput({
90
97
  )
91
98
  ] }),
92
99
  predictions && /* @__PURE__ */ jsxRuntime.jsxs(
93
- chunkC3DCFPJC_cjs.CommandList,
100
+ chunkKBAY4F7D_cjs.CommandList,
94
101
  {
95
102
  className: chunkMGWZXPMF_cjs.cn(
96
103
  "absolute z-50 w-full rounded-md border bg-white shadow-lg",
97
104
  shouldOpenUpward ? "bottom-full" : "top-full"
98
105
  ),
99
106
  children: [
100
- /* @__PURE__ */ jsxRuntime.jsx(chunkC3DCFPJC_cjs.CommandEmpty, { children: "No results" }),
101
- /* @__PURE__ */ jsxRuntime.jsx(chunkC3DCFPJC_cjs.CommandGroup, { children: predictions.map((prediction) => /* @__PURE__ */ jsxRuntime.jsx(
102
- chunkC3DCFPJC_cjs.CommandItem,
107
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKBAY4F7D_cjs.CommandEmpty, { children: "No results" }),
108
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKBAY4F7D_cjs.CommandGroup, { children: predictions.map((prediction) => /* @__PURE__ */ jsxRuntime.jsx(
109
+ chunkKBAY4F7D_cjs.CommandItem,
103
110
  {
104
111
  onSelect: () => handleSelect(prediction),
105
112
  className: "truncate",
@@ -115,5 +122,5 @@ function PlacesQueryInput({
115
122
  var PlacesQueryInput_default = PlacesQueryInput;
116
123
 
117
124
  exports.PlacesQueryInput_default = PlacesQueryInput_default;
118
- //# sourceMappingURL=chunk-LT35HARQ.cjs.map
119
- //# sourceMappingURL=chunk-LT35HARQ.cjs.map
125
+ //# sourceMappingURL=chunk-EYN3RHOF.cjs.map
126
+ //# sourceMappingURL=chunk-EYN3RHOF.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/PlacesQueryInput.tsx"],"names":["useState","useRef","useCallback","autocomplete","useEffect","jsx","cn","jsxs","Command","CommandInput","LoaderCircle","CircleX","CommandList","CommandEmpty","CommandGroup","CommandItem"],"mappings":"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","file":"chunk-EYN3RHOF.cjs","sourcesContent":["'use client'\n\nimport { type PlaceAutocompleteResult } from '@googlemaps/google-maps-services-js'\nimport { CircleX, LoaderCircle } from 'lucide-react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/primitives/command'\nimport { autocomplete } from '@/lib/google'\nimport { cn } from '@/lib/utils'\n\n/**\n * The idea is of this type is to have a more specific type for the Place object,\n * without the repos that use it having to import the PlaceAutocompleteResult type.\n * 'place_id' can be used to query the Google Places API directly for more information about the place.\n */\nexport type Place = Pick<PlaceAutocompleteResult, 'description' | 'place_id'>\n\ntype Size = 'small' | 'normal' | 'large' | 'xlarge'\n\ninterface PlacesQueryInputProps {\n apiKey: string\n selected?: Place\n onSelect: (place?: Place) => void\n className?: string\n size?: Size\n}\n\nconst sizeClasses: Record<Size, string> = {\n small: 'h-8 text-xs',\n normal: 'h-9 text-sm',\n large: 'h-10 text-base',\n xlarge: 'h-11 text-base',\n}\n\nfunction PlacesQueryInput({\n apiKey,\n selected,\n onSelect,\n className,\n size = 'normal',\n}: Readonly<PlacesQueryInputProps>) {\n const [predictions, setPredictions] = useState<PlaceAutocompleteResult[] | null>(null)\n const [input, setInput] = useState(selected?.description ?? '')\n const [isLoadingPredictions, setIsLoadingPredictions] = useState(false)\n const [shouldOpenUpward, setShouldOpenUpward] = useState(false)\n const timeoutRef = useRef<NodeJS.Timeout | null>(null)\n const inputRef = useRef<HTMLDivElement | null>(null)\n\n const debouncedAutocomplete = useCallback((value: string) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n timeoutRef.current = setTimeout(async () => {\n try {\n if (value.length > 2) {\n setIsLoadingPredictions(true)\n const fetchedPredictions = await autocomplete(value, apiKey)\n setIsLoadingPredictions(false)\n setPredictions(fetchedPredictions ?? [])\n } else {\n setPredictions(null)\n }\n } catch (error) {\n setIsLoadingPredictions(false)\n setPredictions([])\n console.error('Autocomplete error:', error)\n }\n }, 300)\n }, [])\n\n const handleInputChange = (value: string) => {\n setInput(value)\n debouncedAutocomplete(value)\n }\n\n const handleSelect = (prediction: PlaceAutocompleteResult) => {\n onSelect(prediction)\n setPredictions(null)\n setInput(prediction.description)\n }\n\n const handleClear = () => {\n onSelect()\n setPredictions(null)\n setInput('')\n }\n\n /** Close the dropdown when the input loses focus, with the timeout to allow the user to click on a prediction.\n * */\n const handleBlur = () => setTimeout(() => setPredictions(null), 200)\n\n useEffect(() => {\n const checkDropdownPosition = () => {\n if (inputRef.current) {\n const rect = inputRef.current.getBoundingClientRect()\n const windowHeight = window.innerHeight\n setShouldOpenUpward(rect.bottom + 200 > windowHeight)\n }\n }\n\n checkDropdownPosition()\n window.addEventListener('resize', checkDropdownPosition)\n return () => window.removeEventListener('resize', checkDropdownPosition)\n }, [])\n\n return (\n <div className={cn('relative w-full', className)} ref={inputRef} onBlur={handleBlur}>\n <Command>\n <div className=\"relative w-full\">\n <CommandInput\n placeholder=\"Type an address to search...\"\n value={input}\n onValueChange={handleInputChange}\n className={cn('truncate pr-8', sizeClasses[size])}\n />\n {isLoadingPredictions && (\n <LoaderCircle className=\"absolute inset-y-0 right-2 my-auto flex h-8 w-8 animate-spin items-center justify-center rounded-full text-green-100\" />\n )}\n {input && (\n <button\n type=\"button\"\n className=\"absolute inset-y-0 right-2 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20\"\n onClick={handleClear}\n >\n <CircleX className=\"h-4 w-4 text-green-100\" />\n </button>\n )}\n </div>\n {predictions && (\n <CommandList\n className={cn(\n 'absolute z-50 w-full rounded-md border bg-white shadow-lg',\n shouldOpenUpward ? 'bottom-full' : 'top-full'\n )}\n >\n <CommandEmpty>No results</CommandEmpty>\n <CommandGroup>\n {predictions.map((prediction) => (\n <CommandItem\n key={prediction.place_id}\n onSelect={() => handleSelect(prediction)}\n className=\"truncate\"\n >\n {prediction.description}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n )}\n </Command>\n </div>\n )\n}\n\nexport default PlacesQueryInput\n"]}
@@ -12,7 +12,7 @@ var react = require('react');
12
12
  var jsxRuntime = require('react/jsx-runtime');
13
13
 
14
14
  var DatePicker = react.forwardRef(
15
- ({ label, description, required, classNames, value, onChange, error, id, testId }, ref) => {
15
+ ({ label, description, required, classNames, value, onChange, error, id, testId, size }, ref) => {
16
16
  const [date, setDate] = react.useState(null);
17
17
  react.useEffect(() => {
18
18
  setDate(value ?? null);
@@ -33,7 +33,7 @@ var DatePicker = react.forwardRef(
33
33
  }
34
34
  ),
35
35
  /* @__PURE__ */ jsxRuntime.jsxs(chunkRKLUMDJB_cjs.Popover, { children: [
36
- /* @__PURE__ */ jsxRuntime.jsx(chunkRKLUMDJB_cjs.PopoverTrigger, { "data-testid": testId, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkMGWZXPMF_cjs.cn(datePickerStyle(), classNames?.input), children: [
36
+ /* @__PURE__ */ jsxRuntime.jsx(chunkRKLUMDJB_cjs.PopoverTrigger, { "data-testid": testId, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkMGWZXPMF_cjs.cn(datePickerStyle({ size }), classNames?.input), children: [
37
37
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Calendar, { size: 16 }),
38
38
  date ? dateFns.format(date, "MM/dd/yyyy") : "Select a date"
39
39
  ] }) }),
@@ -53,38 +53,50 @@ var DatePicker = react.forwardRef(
53
53
  ] });
54
54
  }
55
55
  );
56
- var datePickerStyle = cva.cva([
57
- "placeholder:text-muted-foreground",
58
- "focus-visible:ring-ring",
59
- "inline-flex",
60
- "w-full",
61
- "h-11",
62
- "items-center",
63
- "justify-start",
64
- "gap-3",
65
- "rounded-lg",
66
- "bg-transparent",
67
- "px-3",
68
- "pt-0.5",
69
- "text-sm",
70
- "shadow-sm",
71
- "ring-grey-50",
72
- "transition-colors",
73
- "focus-visible:outline-none",
74
- "focus-visible:ring-1",
75
- "disabled:cursor-not-allowed",
76
- "disabled:opacity-50",
77
- "appearance-none",
78
- "[&::-webkit-search-cancel-button]:appearance-none",
79
- "[&::-webkit-search-decoration]:appearance-none",
80
- "[&::-webkit-search-results-button]:appearance-none",
81
- "[&::-webkit-search-results-decoration]:appearance-none",
82
- "[&::-ms-clear]:display-none",
83
- "[&::-ms-reveal]:display-none",
84
- "text-grey-80 border",
85
- "font-normal"
86
- ]);
56
+ var datePickerStyle = cva.cva(
57
+ [
58
+ "placeholder:text-grey-50",
59
+ "focus-visible:ring-ring",
60
+ "inline-flex",
61
+ "w-full",
62
+ "items-center",
63
+ "justify-start",
64
+ "gap-3",
65
+ "rounded-lg",
66
+ "bg-transparent",
67
+ "shadow-sm",
68
+ "transition-colors",
69
+ "focus-visible:outline-none",
70
+ "focus-visible:ring-1",
71
+ "disabled:cursor-not-allowed",
72
+ "disabled:opacity-50",
73
+ "appearance-none",
74
+ "[&::-webkit-search-cancel-button]:appearance-none",
75
+ "[&::-webkit-search-decoration]:appearance-none",
76
+ "[&::-webkit-search-results-button]:appearance-none",
77
+ "[&::-webkit-search-results-decoration]:appearance-none",
78
+ "[&::-ms-clear]:display-none",
79
+ "[&::-ms-reveal]:display-none",
80
+ "text-grey-80",
81
+ "border",
82
+ "border-grey-20",
83
+ "font-normal"
84
+ ],
85
+ {
86
+ variants: {
87
+ size: {
88
+ small: "h-8 px-3 py-1 text-xs",
89
+ normal: "h-9 px-3 py-2 text-sm",
90
+ large: "h-10 px-4 py-2 text-base",
91
+ xlarge: "h-11 px-4 py-3 text-base"
92
+ }
93
+ },
94
+ defaultVariants: {
95
+ size: "normal"
96
+ }
97
+ }
98
+ );
87
99
 
88
100
  exports.DatePicker = DatePicker;
89
- //# sourceMappingURL=chunk-3FQTSGHL.cjs.map
90
- //# sourceMappingURL=chunk-3FQTSGHL.cjs.map
101
+ //# sourceMappingURL=chunk-F567WG2X.cjs.map
102
+ //# sourceMappingURL=chunk-F567WG2X.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/DatePicker.tsx"],"names":["forwardRef","useState","useEffect","cn","jsx","Label_default","Popover","PopoverTrigger","jsxs","CalendarIcon","format","PopoverContent","Calendar","ErrorMessage_default","cva"],"mappings":"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","file":"chunk-F567WG2X.cjs","sourcesContent":["'use client'\n\nimport { cva, type VariantProps } from 'cva'\nimport { format } from 'date-fns'\nimport { Calendar as CalendarIcon } from 'lucide-react'\nimport { forwardRef, useEffect, useState } from 'react'\n\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/primitives/popover'\nimport { Calendar } from '@/components/ui/calendar'\nimport ErrorMessage from '@/components/ui/ErrorMessage'\nimport Label from '@/components/ui/Label'\nimport { cn } from '@/lib/utils'\n\ntype DatePickerVariants = VariantProps<typeof datePickerStyle>\n\ntype Props = DatePickerVariants & {\n label?: string\n description?: string\n required?: boolean\n id?: string\n classNames?: {\n label?: string\n input?: string\n calendar?: string\n }\n value?: Date | null\n onChange?: (date: Date) => void\n error?: string\n testId?: string\n}\n\nexport const DatePicker = forwardRef<HTMLInputElement, Props>(\n ({ label, description, required, classNames, value, onChange, error, id, testId, size }, ref) => {\n const [date, setDate] = useState<Date | null>(null)\n\n useEffect(() => {\n setDate(value ?? null)\n }, [value])\n\n const handleDateSelect = (dateSelected: Date | undefined) => {\n if (!dateSelected) return\n onChange?.(dateSelected)\n setDate(dateSelected)\n }\n\n return (\n <div id={id} className={cn('flex w-auto flex-col gap-1')}>\n {label && (\n <Label\n text={label}\n required={required}\n description={description}\n className={classNames?.label}\n />\n )}\n <Popover>\n <PopoverTrigger data-testid={testId}>\n <div className={cn(datePickerStyle({ size }), classNames?.input)}>\n <CalendarIcon size={16} />\n {date ? format(date, 'MM/dd/yyyy') : 'Select a date'}\n </div>\n </PopoverTrigger>\n <PopoverContent ref={ref}>\n <Calendar\n mode=\"single\"\n selected={date || undefined}\n onSelect={handleDateSelect}\n captionLayout=\"dropdown\"\n showOutsideDays={true}\n className={classNames?.calendar}\n />\n </PopoverContent>\n </Popover>\n\n <ErrorMessage message={error} />\n </div>\n )\n }\n)\n\nconst datePickerStyle = cva(\n [\n 'placeholder:text-grey-50',\n 'focus-visible:ring-ring',\n 'inline-flex',\n 'w-full',\n 'items-center',\n 'justify-start',\n 'gap-3',\n 'rounded-lg',\n 'bg-transparent',\n 'shadow-sm',\n 'transition-colors',\n 'focus-visible:outline-none',\n 'focus-visible:ring-1',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'appearance-none',\n '[&::-webkit-search-cancel-button]:appearance-none',\n '[&::-webkit-search-decoration]:appearance-none',\n '[&::-webkit-search-results-button]:appearance-none',\n '[&::-webkit-search-results-decoration]:appearance-none',\n '[&::-ms-clear]:display-none',\n '[&::-ms-reveal]:display-none',\n 'text-grey-80',\n 'border',\n 'border-grey-20',\n 'font-normal',\n ],\n {\n variants: {\n size: {\n small: 'h-8 px-3 py-1 text-xs',\n normal: 'h-9 px-3 py-2 text-sm',\n large: 'h-10 px-4 py-2 text-base',\n xlarge: 'h-11 px-4 py-3 text-base',\n },\n },\n defaultVariants: {\n size: 'normal',\n },\n }\n)\n"]}