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

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 (49) hide show
  1. package/dist/app/layout.css +41 -0
  2. package/dist/app/layout.css.map +1 -1
  3. package/dist/app/page.cjs +238 -8
  4. package/dist/app/page.cjs.map +1 -1
  5. package/dist/app/page.js +238 -8
  6. package/dist/app/page.js.map +1 -1
  7. package/dist/components/demos/MapComponentDemo.cjs +129 -0
  8. package/dist/components/demos/MapComponentDemo.cjs.map +1 -0
  9. package/dist/components/demos/MapComponentDemo.d.cts +5 -0
  10. package/dist/components/demos/MapComponentDemo.d.ts +5 -0
  11. package/dist/components/demos/MapComponentDemo.js +107 -0
  12. package/dist/components/demos/MapComponentDemo.js.map +1 -0
  13. package/dist/components/demos/PlacesQueryInputDemo.cjs +341 -0
  14. package/dist/components/demos/PlacesQueryInputDemo.cjs.map +1 -0
  15. package/dist/components/demos/PlacesQueryInputDemo.d.cts +5 -0
  16. package/dist/components/demos/PlacesQueryInputDemo.d.ts +5 -0
  17. package/dist/components/demos/PlacesQueryInputDemo.js +309 -0
  18. package/dist/components/demos/PlacesQueryInputDemo.js.map +1 -0
  19. package/dist/components/demos/index.cjs +236 -6
  20. package/dist/components/demos/index.cjs.map +1 -1
  21. package/dist/components/demos/index.js +236 -6
  22. package/dist/components/demos/index.js.map +1 -1
  23. package/dist/components/ui/MapComponent.cjs +54 -0
  24. package/dist/components/ui/MapComponent.cjs.map +1 -0
  25. package/dist/components/ui/MapComponent.d.cts +15 -0
  26. package/dist/components/ui/MapComponent.d.ts +15 -0
  27. package/dist/components/ui/MapComponent.js +34 -0
  28. package/dist/components/ui/MapComponent.js.map +1 -0
  29. package/dist/components/ui/PlacesQueryInput.cjs +321 -0
  30. package/dist/components/ui/PlacesQueryInput.cjs.map +1 -0
  31. package/dist/components/ui/PlacesQueryInput.d.cts +18 -0
  32. package/dist/components/ui/PlacesQueryInput.d.ts +18 -0
  33. package/dist/components/ui/PlacesQueryInput.js +289 -0
  34. package/dist/components/ui/PlacesQueryInput.js.map +1 -0
  35. package/dist/index.cjs +354 -173
  36. package/dist/index.cjs.map +1 -1
  37. package/dist/index.d.cts +4 -0
  38. package/dist/index.d.ts +4 -0
  39. package/dist/index.js +345 -167
  40. package/dist/index.js.map +1 -1
  41. package/dist/lib/google.cjs +85 -0
  42. package/dist/lib/google.cjs.map +1 -0
  43. package/dist/lib/google.d.cts +26 -0
  44. package/dist/lib/google.d.ts +26 -0
  45. package/dist/lib/google.js +58 -0
  46. package/dist/lib/google.js.map +1 -0
  47. package/dist/styles/globals.css +41 -0
  48. package/dist/styles/globals.css.map +1 -1
  49. package/package.json +23 -21
package/dist/index.cjs CHANGED
@@ -39,8 +39,11 @@ __export(index_exports, {
39
39
  Input: () => Input_default,
40
40
  Label: () => Label_default,
41
41
  ListItem: () => ListItem_default,
42
+ MapComponent: () => MapComponent_default,
43
+ PlacesQueryInput: () => PlacesQueryInput_default,
42
44
  Select: () => Select_default,
43
- cn: () => cn
45
+ cn: () => cn,
46
+ fetchLocation: () => fetchLocation
44
47
  });
45
48
  module.exports = __toCommonJS(index_exports);
46
49
 
@@ -531,132 +534,38 @@ var inputVariants = (0, import_cva2.cva)(
531
534
  );
532
535
  var Input_default = Input;
533
536
 
534
- // src/components/ui/Button.tsx
535
- var import_react_slot = require("@radix-ui/react-slot");
536
- var import_cva3 = require("cva");
537
- var import_react4 = require("react");
537
+ // src/components/ui/MapComponent.tsx
538
+ var import_react_google_maps = require("@vis.gl/react-google-maps");
538
539
  var import_jsx_runtime10 = require("react/jsx-runtime");
539
- var Button = (0, import_react4.forwardRef)(
540
- ({ className, variant, size, asChild = false, ...props }, ref) => {
541
- const Component = asChild ? import_react_slot.Slot : "button";
542
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
543
- Component,
544
- {
545
- className: cn(buttonVariants({ variant, size, className })),
546
- ref,
547
- ...props
548
- }
549
- );
550
- }
551
- );
552
- Button.displayName = "Button";
553
- var buttonVariants = (0, import_cva3.cva)(
554
- [
555
- "flex",
556
- "items-center",
557
- "justify-center",
558
- "gap-2",
559
- "rounded-full",
560
- "font-bold",
561
- "outline-2",
562
- "outline-offset-2",
563
- "outline-dashed",
564
- "outline-transparent"
565
- ],
566
- {
567
- variants: {
568
- variant: {
569
- neutral: [
570
- "bg-black",
571
- "text-white",
572
- "hover:bg-grey-90",
573
- "active:bg-grey-80",
574
- "focus:outline-purple-100",
575
- "disabled:text-grey-40",
576
- "disabled:bg-grey-10"
577
- ],
578
- primary: [
579
- "bg-pickle-100",
580
- "text-black",
581
- "hover:bg-pickle-80",
582
- "active:bg-pickle-60",
583
- "focus:outline-purple-100",
584
- "disabled:text-grey-40",
585
- "disabled:bg-grey-10"
586
- ],
587
- secondary: [
588
- "bg-green-80",
589
- "text-white",
590
- "hover:bg-green-90",
591
- "active:bg-green-100",
592
- "focus:outline-pickle-100",
593
- "disabled:text-grey-40",
594
- "disabled:bg-grey-10"
595
- ],
596
- transparent: [
597
- "text-white",
598
- "hover:bg-green-80",
599
- "active:bg-green-100",
600
- "focus:outline-pickle-100",
601
- "disabled:text-grey-40"
602
- ],
603
- link: [
604
- "leading-tight",
605
- "text-black",
606
- "underline",
607
- "hover:text-purple-100",
608
- "focus:text-black",
609
- "focus:outline-purple-100",
610
- "active:text-purple-80"
611
- ]
612
- },
613
- size: {
614
- small: ["h-10", "text-sm", "px-4", "py-2"],
615
- medium: ["h-12", "text-base", "px-6", "py-3"],
616
- large: ["h-14", "text-lg", "px-8", "py-4"]
617
- }
618
- },
619
- defaultVariants: {
620
- variant: "neutral",
621
- size: "medium"
622
- },
623
- compoundVariants: [
624
- {
625
- variant: "link",
626
- size: "small",
627
- class: ["h-3", "text-xs", "p-0"]
628
- },
629
- {
630
- variant: "link",
631
- size: "medium",
632
- class: ["h-4", "text-sm", "p-0"]
633
- },
634
- {
635
- variant: "link",
636
- size: "large",
637
- class: ["h-6", "text-base", "p-0"]
638
- }
639
- ]
640
- }
641
- );
642
-
643
- // src/components/ui/Combobox.tsx
644
- var import_react5 = require("react");
645
- var import_lucide_react9 = require("lucide-react");
646
- var import_cva5 = require("cva");
540
+ function MapComponent({ apiKey, mapId, position, className, zoom = 15 }) {
541
+ const defaultPosition = { lat: 40.715021, lng: -74.00459 };
542
+ const defaultZoom = 11;
543
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_google_maps.APIProvider, { apiKey, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: cn("h-screen max-w-full", className), children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
544
+ import_react_google_maps.Map,
545
+ {
546
+ zoom: position ? zoom : defaultZoom,
547
+ center: position || defaultPosition,
548
+ mapId,
549
+ keyboardShortcuts: false,
550
+ disableDefaultUI: true,
551
+ children: position && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_google_maps.AdvancedMarker, { position, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_google_maps.Pin, { background: "#0B5441", borderColor: "#EBFDF1", glyphColor: "#D4F500" }) })
552
+ }
553
+ ) }) });
554
+ }
555
+ var MapComponent_default = MapComponent;
647
556
 
648
557
  // src/components/primitives/command.tsx
649
558
  var import_cmdk = require("cmdk");
650
559
  var import_lucide_react8 = require("lucide-react");
651
- var React5 = __toESM(require("react"), 1);
560
+ var React4 = __toESM(require("react"), 1);
652
561
 
653
562
  // src/components/primitives/dialog.tsx
654
563
  var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
655
564
  var import_lucide_react7 = require("lucide-react");
656
- var React4 = __toESM(require("react"), 1);
565
+ var React3 = __toESM(require("react"), 1);
657
566
  var import_jsx_runtime11 = require("react/jsx-runtime");
658
567
  var DialogPortal = DialogPrimitive.Portal;
659
- var DialogOverlay = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
568
+ var DialogOverlay = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
660
569
  DialogPrimitive.Overlay,
661
570
  {
662
571
  ref,
@@ -668,7 +577,7 @@ var DialogOverlay = React4.forwardRef(({ className, ...props }, ref) => /* @__PU
668
577
  }
669
578
  ));
670
579
  DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
671
- var DialogContent = React4.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(DialogPortal, { children: [
580
+ var DialogContent = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(DialogPortal, { children: [
672
581
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DialogOverlay, {}),
673
582
  /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
674
583
  DialogPrimitive.Content,
@@ -700,7 +609,7 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_r
700
609
  }
701
610
  );
702
611
  DialogFooter.displayName = "DialogFooter";
703
- var DialogTitle = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
612
+ var DialogTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
704
613
  DialogPrimitive.Title,
705
614
  {
706
615
  ref,
@@ -709,7 +618,7 @@ var DialogTitle = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
709
618
  }
710
619
  ));
711
620
  DialogTitle.displayName = DialogPrimitive.Title.displayName;
712
- var DialogDescription = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
621
+ var DialogDescription = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
713
622
  DialogPrimitive.Description,
714
623
  {
715
624
  ref,
@@ -721,7 +630,7 @@ DialogDescription.displayName = DialogPrimitive.Description.displayName;
721
630
 
722
631
  // src/components/primitives/command.tsx
723
632
  var import_jsx_runtime12 = require("react/jsx-runtime");
724
- var Command = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
633
+ var Command = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
725
634
  import_cmdk.Command,
726
635
  {
727
636
  ref,
@@ -733,7 +642,7 @@ var Command = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
733
642
  }
734
643
  ));
735
644
  Command.displayName = import_cmdk.Command.displayName;
736
- var CommandInput = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "m-1 flex items-center rounded-xl border px-3", "cmdk-input-wrapper": "", children: [
645
+ var CommandInput = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "m-1 flex items-center rounded-xl border px-3", "cmdk-input-wrapper": "", children: [
737
646
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react8.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
738
647
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
739
648
  import_cmdk.Command.Input,
@@ -748,7 +657,7 @@ var CommandInput = React5.forwardRef(({ className, ...props }, ref) => /* @__PUR
748
657
  )
749
658
  ] }));
750
659
  CommandInput.displayName = import_cmdk.Command.Input.displayName;
751
- var CommandList = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
660
+ var CommandList = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
752
661
  import_cmdk.Command.List,
753
662
  {
754
663
  ref,
@@ -757,9 +666,9 @@ var CommandList = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE
757
666
  }
758
667
  ));
759
668
  CommandList.displayName = import_cmdk.Command.List.displayName;
760
- var CommandEmpty = React5.forwardRef((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_cmdk.Command.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
669
+ var CommandEmpty = React4.forwardRef((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_cmdk.Command.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
761
670
  CommandEmpty.displayName = import_cmdk.Command.Empty.displayName;
762
- var CommandGroup = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
671
+ var CommandGroup = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
763
672
  import_cmdk.Command.Group,
764
673
  {
765
674
  ref,
@@ -771,7 +680,7 @@ var CommandGroup = React5.forwardRef(({ className, ...props }, ref) => /* @__PUR
771
680
  }
772
681
  ));
773
682
  CommandGroup.displayName = import_cmdk.Command.Group.displayName;
774
- var CommandSeparator = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
683
+ var CommandSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
775
684
  import_cmdk.Command.Separator,
776
685
  {
777
686
  ref,
@@ -780,7 +689,7 @@ var CommandSeparator = React5.forwardRef(({ className, ...props }, ref) => /* @_
780
689
  }
781
690
  ));
782
691
  CommandSeparator.displayName = import_cmdk.Command.Separator.displayName;
783
- var CommandItem = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
692
+ var CommandItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
784
693
  import_cmdk.Command.Item,
785
694
  {
786
695
  ref,
@@ -803,13 +712,282 @@ var CommandShortcut = ({ className, ...props }) => {
803
712
  };
804
713
  CommandShortcut.displayName = "CommandShortcut";
805
714
 
715
+ // src/lib/google.ts
716
+ var import_google_maps_services_js = require("@googlemaps/google-maps-services-js");
717
+ var client = new import_google_maps_services_js.Client();
718
+ var autocomplete = async (input, key) => {
719
+ try {
720
+ const response = await client.placeAutocomplete({
721
+ params: { input, key, types: import_google_maps_services_js.PlaceAutocompleteType.address }
722
+ });
723
+ return response.data.predictions;
724
+ } catch (error) {
725
+ console.error(error);
726
+ }
727
+ };
728
+ var fetchLocation = async (place, key) => {
729
+ try {
730
+ if (place.place_id) {
731
+ const placeDetails = await getPlaceDetails(place.place_id, key);
732
+ if (placeDetails) return placeDetails;
733
+ }
734
+ if (place.address) {
735
+ const result = await geocode(place.address, key);
736
+ const firstAddress = result?.[0];
737
+ return firstAddress;
738
+ }
739
+ return void 0;
740
+ } catch (error) {
741
+ console.error("Error fetching location:", error);
742
+ }
743
+ };
744
+ var getPlaceDetails = async (place_id, key) => {
745
+ try {
746
+ const response = await client.placeDetails({
747
+ params: { place_id, key }
748
+ });
749
+ return response.data.result;
750
+ } catch (error) {
751
+ console.error(error);
752
+ }
753
+ };
754
+ var geocode = async (address, key) => {
755
+ try {
756
+ const response = await client.geocode({
757
+ params: { address, key }
758
+ });
759
+ return response.data.results;
760
+ } catch (error) {
761
+ console.error(error);
762
+ }
763
+ };
764
+
765
+ // src/components/ui/PlacesQueryInput.tsx
766
+ var import_lucide_react9 = require("lucide-react");
767
+ var import_react4 = require("react");
768
+ var import_jsx_runtime13 = require("react/jsx-runtime");
769
+ function PlacesQueryInput({
770
+ apiKey,
771
+ selected,
772
+ onSelect,
773
+ className
774
+ }) {
775
+ const [predictions, setPredictions] = (0, import_react4.useState)(null);
776
+ const [input, setInput] = (0, import_react4.useState)(selected?.description ?? "");
777
+ const [isLoadingPredictions, setIsLoadingPredictions] = (0, import_react4.useState)(false);
778
+ const [shouldOpenUpward, setShouldOpenUpward] = (0, import_react4.useState)(false);
779
+ const timeoutRef = (0, import_react4.useRef)(null);
780
+ const inputRef = (0, import_react4.useRef)(null);
781
+ const debouncedAutocomplete = (0, import_react4.useCallback)((value) => {
782
+ if (timeoutRef.current) {
783
+ clearTimeout(timeoutRef.current);
784
+ }
785
+ timeoutRef.current = setTimeout(async () => {
786
+ if (value.length > 2) {
787
+ setIsLoadingPredictions(true);
788
+ const fetchedPredictions = await autocomplete(value, apiKey);
789
+ fetchedPredictions && setIsLoadingPredictions(false);
790
+ setPredictions(fetchedPredictions ?? []);
791
+ } else {
792
+ setPredictions(null);
793
+ }
794
+ }, 300);
795
+ }, []);
796
+ const handleInputChange = (value) => {
797
+ setInput(value);
798
+ debouncedAutocomplete(value);
799
+ };
800
+ const handleSelect = (prediction) => {
801
+ onSelect(prediction);
802
+ setPredictions(null);
803
+ setInput(prediction.description);
804
+ };
805
+ const handleClear = () => {
806
+ onSelect();
807
+ setPredictions(null);
808
+ setInput("");
809
+ };
810
+ const handleBlur = () => setTimeout(() => setPredictions(null), 200);
811
+ (0, import_react4.useEffect)(() => {
812
+ const checkDropdownPosition = () => {
813
+ if (inputRef.current) {
814
+ const rect = inputRef.current.getBoundingClientRect();
815
+ const windowHeight = window.innerHeight;
816
+ setShouldOpenUpward(rect.bottom + 200 > windowHeight);
817
+ }
818
+ };
819
+ checkDropdownPosition();
820
+ window.addEventListener("resize", checkDropdownPosition);
821
+ return () => window.removeEventListener("resize", checkDropdownPosition);
822
+ }, []);
823
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: cn("relative w-full", className), ref: inputRef, onBlur: handleBlur, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Command, { children: [
824
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "relative w-full", children: [
825
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
826
+ CommandInput,
827
+ {
828
+ placeholder: "Type an address to search...",
829
+ value: input,
830
+ onValueChange: handleInputChange,
831
+ className: "truncate pr-8"
832
+ }
833
+ ),
834
+ isLoadingPredictions && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react9.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" }),
835
+ input && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
836
+ "button",
837
+ {
838
+ type: "button",
839
+ 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",
840
+ onClick: handleClear,
841
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react9.CircleX, { className: "h-4 w-4 text-green-100" })
842
+ }
843
+ )
844
+ ] }),
845
+ predictions && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
846
+ CommandList,
847
+ {
848
+ className: cn(
849
+ "absolute z-50 w-full rounded-md border bg-white shadow-lg",
850
+ shouldOpenUpward ? "bottom-full" : "top-full"
851
+ ),
852
+ children: [
853
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(CommandEmpty, { children: "No results" }),
854
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(CommandGroup, { children: predictions.map((prediction) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
855
+ CommandItem,
856
+ {
857
+ onSelect: () => handleSelect(prediction),
858
+ className: "truncate",
859
+ children: prediction.description
860
+ },
861
+ prediction.place_id
862
+ )) })
863
+ ]
864
+ }
865
+ )
866
+ ] }) });
867
+ }
868
+ var PlacesQueryInput_default = PlacesQueryInput;
869
+
870
+ // src/components/ui/Button.tsx
871
+ var import_react_slot = require("@radix-ui/react-slot");
872
+ var import_cva3 = require("cva");
873
+ var import_react5 = require("react");
874
+ var import_jsx_runtime14 = require("react/jsx-runtime");
875
+ var Button = (0, import_react5.forwardRef)(
876
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
877
+ const Component = asChild ? import_react_slot.Slot : "button";
878
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
879
+ Component,
880
+ {
881
+ className: cn(buttonVariants({ variant, size, className })),
882
+ ref,
883
+ ...props
884
+ }
885
+ );
886
+ }
887
+ );
888
+ Button.displayName = "Button";
889
+ var buttonVariants = (0, import_cva3.cva)(
890
+ [
891
+ "flex",
892
+ "items-center",
893
+ "justify-center",
894
+ "gap-2",
895
+ "rounded-full",
896
+ "font-bold",
897
+ "outline-2",
898
+ "outline-offset-2",
899
+ "outline-dashed",
900
+ "outline-transparent"
901
+ ],
902
+ {
903
+ variants: {
904
+ variant: {
905
+ neutral: [
906
+ "bg-black",
907
+ "text-white",
908
+ "hover:bg-grey-90",
909
+ "active:bg-grey-80",
910
+ "focus:outline-purple-100",
911
+ "disabled:text-grey-40",
912
+ "disabled:bg-grey-10"
913
+ ],
914
+ primary: [
915
+ "bg-pickle-100",
916
+ "text-black",
917
+ "hover:bg-pickle-80",
918
+ "active:bg-pickle-60",
919
+ "focus:outline-purple-100",
920
+ "disabled:text-grey-40",
921
+ "disabled:bg-grey-10"
922
+ ],
923
+ secondary: [
924
+ "bg-green-80",
925
+ "text-white",
926
+ "hover:bg-green-90",
927
+ "active:bg-green-100",
928
+ "focus:outline-pickle-100",
929
+ "disabled:text-grey-40",
930
+ "disabled:bg-grey-10"
931
+ ],
932
+ transparent: [
933
+ "text-white",
934
+ "hover:bg-green-80",
935
+ "active:bg-green-100",
936
+ "focus:outline-pickle-100",
937
+ "disabled:text-grey-40"
938
+ ],
939
+ link: [
940
+ "leading-tight",
941
+ "text-black",
942
+ "underline",
943
+ "hover:text-purple-100",
944
+ "focus:text-black",
945
+ "focus:outline-purple-100",
946
+ "active:text-purple-80"
947
+ ]
948
+ },
949
+ size: {
950
+ small: ["h-10", "text-sm", "px-4", "py-2"],
951
+ medium: ["h-12", "text-base", "px-6", "py-3"],
952
+ large: ["h-14", "text-lg", "px-8", "py-4"]
953
+ }
954
+ },
955
+ defaultVariants: {
956
+ variant: "neutral",
957
+ size: "medium"
958
+ },
959
+ compoundVariants: [
960
+ {
961
+ variant: "link",
962
+ size: "small",
963
+ class: ["h-3", "text-xs", "p-0"]
964
+ },
965
+ {
966
+ variant: "link",
967
+ size: "medium",
968
+ class: ["h-4", "text-sm", "p-0"]
969
+ },
970
+ {
971
+ variant: "link",
972
+ size: "large",
973
+ class: ["h-6", "text-base", "p-0"]
974
+ }
975
+ ]
976
+ }
977
+ );
978
+
979
+ // src/components/ui/Combobox.tsx
980
+ var import_react6 = require("react");
981
+ var import_lucide_react10 = require("lucide-react");
982
+ var import_cva5 = require("cva");
983
+
806
984
  // src/components/primitives/popover.tsx
807
985
  var React6 = __toESM(require("react"), 1);
808
986
  var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
809
- var import_jsx_runtime13 = require("react/jsx-runtime");
987
+ var import_jsx_runtime15 = require("react/jsx-runtime");
810
988
  var Popover = PopoverPrimitive.Root;
811
989
  var PopoverTrigger = PopoverPrimitive.Trigger;
812
- var PopoverContent = React6.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
990
+ var PopoverContent = React6.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
813
991
  PopoverPrimitive.Content,
814
992
  {
815
993
  ref,
@@ -826,7 +1004,7 @@ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
826
1004
 
827
1005
  // src/components/ui/Badge.tsx
828
1006
  var import_cva4 = require("cva");
829
- var import_jsx_runtime14 = require("react/jsx-runtime");
1007
+ var import_jsx_runtime16 = require("react/jsx-runtime");
830
1008
  var badgeVariants = (0, import_cva4.cva)("rounded-full px-2 py-0.5 text-xs font-semibold", {
831
1009
  variants: {
832
1010
  variant: {
@@ -840,12 +1018,12 @@ var badgeVariants = (0, import_cva4.cva)("rounded-full px-2 py-0.5 text-xs font-
840
1018
  }
841
1019
  });
842
1020
  function Badge({ className, variant, ...props }) {
843
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
1021
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
844
1022
  }
845
1023
 
846
1024
  // src/components/ui/Combobox.tsx
847
- var import_jsx_runtime15 = require("react/jsx-runtime");
848
- var Combobox = (0, import_react5.forwardRef)((props, ref) => {
1025
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1026
+ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
849
1027
  const {
850
1028
  id,
851
1029
  name,
@@ -864,16 +1042,16 @@ var Combobox = (0, import_react5.forwardRef)((props, ref) => {
864
1042
  onChange: handleChange,
865
1043
  children: footer
866
1044
  } = props;
867
- const [selected, setSelected] = (0, import_react5.useState)([]);
868
- const [open, setOpen] = (0, import_react5.useState)(false);
869
- const IconComponent = icon && import_lucide_react9.icons[icon];
1045
+ const [selected, setSelected] = (0, import_react6.useState)([]);
1046
+ const [open, setOpen] = (0, import_react6.useState)(false);
1047
+ const IconComponent = icon && import_lucide_react10.icons[icon];
870
1048
  const hideSearchBox = options?.length <= 5;
871
1049
  const isDefault = variant === "default";
872
1050
  const isChip = variant === "chip";
873
1051
  const isEmpty = selected.length == 0;
874
1052
  const showChevron = isDefault ? isEmpty : true;
875
1053
  const close = () => setOpen(false);
876
- (0, import_react5.useEffect)(() => {
1054
+ (0, import_react6.useEffect)(() => {
877
1055
  const valueArray = multiselect ? value ?? [] : value ? [value] : [];
878
1056
  setSelected(
879
1057
  valueArray.map((v) => options.find((o) => o.value === v)).filter((v) => v !== void 0)
@@ -901,8 +1079,8 @@ var Combobox = (0, import_react5.forwardRef)((props, ref) => {
901
1079
  const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(", ") : placeholder;
902
1080
  return isDefault ? defaultLabel : label;
903
1081
  };
904
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: cn("flex flex-col gap-1", className), children: [
905
- isDefault && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1082
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: cn("flex flex-col gap-1", className), children: [
1083
+ isDefault && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
906
1084
  Label_default,
907
1085
  {
908
1086
  text: label,
@@ -912,15 +1090,15 @@ var Combobox = (0, import_react5.forwardRef)((props, ref) => {
912
1090
  className: classNames?.label
913
1091
  }
914
1092
  ),
915
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "relative flex", children: [
916
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
917
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1093
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "relative flex", children: [
1094
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
1095
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
918
1096
  PopoverTrigger,
919
1097
  {
920
1098
  asChild: true,
921
1099
  disabled: options.length === 0,
922
1100
  "data-testid": `${id ?? name}-combobox-trigger`,
923
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1101
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
924
1102
  "div",
925
1103
  {
926
1104
  ref,
@@ -931,9 +1109,9 @@ var Combobox = (0, import_react5.forwardRef)((props, ref) => {
931
1109
  ),
932
1110
  "aria-expanded": open,
933
1111
  children: [
934
- isDefault && IconComponent && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(IconComponent, { className: "h-4 w-4 shrink-0" }),
935
- isChip && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Badge, { variant: "purple", children: selected.length }),
936
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1112
+ isDefault && IconComponent && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(IconComponent, { className: "h-4 w-4 shrink-0" }),
1113
+ isChip && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Badge, { variant: "purple", children: selected.length }),
1114
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
937
1115
  "span",
938
1116
  {
939
1117
  className: cn(
@@ -943,8 +1121,8 @@ var Combobox = (0, import_react5.forwardRef)((props, ref) => {
943
1121
  children: handleDisplayValue()
944
1122
  }
945
1123
  ),
946
- showChevron && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
947
- import_lucide_react9.ChevronDownIcon,
1124
+ showChevron && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1125
+ import_lucide_react10.ChevronDownIcon,
948
1126
  {
949
1127
  className: "shrink-0 transform group-data-[state=open]:rotate-180",
950
1128
  size: "16"
@@ -955,7 +1133,7 @@ var Combobox = (0, import_react5.forwardRef)((props, ref) => {
955
1133
  )
956
1134
  }
957
1135
  ),
958
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1136
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
959
1137
  PopoverContent,
960
1138
  {
961
1139
  className: cn(
@@ -966,16 +1144,16 @@ var Combobox = (0, import_react5.forwardRef)((props, ref) => {
966
1144
  collisionPadding: 8,
967
1145
  sideOffset: 4,
968
1146
  align: "start",
969
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Command, { children: [
970
- !hideSearchBox && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(CommandInput, { placeholder: "Search..." }),
971
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(CommandList, { children: [
972
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(CommandEmpty, { children: "No results" }),
973
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(CommandGroup, { children: options.map(({ id: id2, ...option }) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1147
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Command, { children: [
1148
+ !hideSearchBox && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CommandInput, { placeholder: "Search..." }),
1149
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(CommandList, { children: [
1150
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CommandEmpty, { children: "No results" }),
1151
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CommandGroup, { children: options.map(({ id: id2, ...option }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
974
1152
  CommandItem,
975
1153
  {
976
1154
  value: option.title,
977
1155
  onSelect: () => handleSelect(option.value),
978
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1156
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
979
1157
  ListItem_default,
980
1158
  {
981
1159
  className: cn(classNames?.items, "truncate py-1"),
@@ -988,19 +1166,19 @@ var Combobox = (0, import_react5.forwardRef)((props, ref) => {
988
1166
  id2
989
1167
  )) })
990
1168
  ] }),
991
- !!footer && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Separator, {}),
1169
+ !!footer && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Separator, {}),
992
1170
  footer && footer({ close })
993
1171
  ] })
994
1172
  }
995
1173
  )
996
1174
  ] }),
997
- isDefault && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1175
+ isDefault && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
998
1176
  "button",
999
1177
  {
1000
1178
  type: "button",
1001
1179
  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",
1002
1180
  onClick: handleClear,
1003
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react9.CircleX, { className: "h-4 w-4 text-green-100" })
1181
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react10.CircleX, { className: "h-4 w-4 text-green-100" })
1004
1182
  }
1005
1183
  )
1006
1184
  ] })
@@ -1035,13 +1213,13 @@ var triggerVariants = (0, import_cva5.cva)(
1035
1213
 
1036
1214
  // src/components/ui/Counter.tsx
1037
1215
  var import_cva6 = require("cva");
1038
- var import_lucide_react10 = require("lucide-react");
1039
- var import_react6 = require("react");
1040
- var import_jsx_runtime16 = require("react/jsx-runtime");
1041
- var Counter = (0, import_react6.forwardRef)(
1216
+ var import_lucide_react11 = require("lucide-react");
1217
+ var import_react7 = require("react");
1218
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1219
+ var Counter = (0, import_react7.forwardRef)(
1042
1220
  ({ label, error, min, max, step = 1, description, theme, value, classNames, onChange, ...props }, ref) => {
1043
- const [count, setCount] = (0, import_react6.useState)(0);
1044
- (0, import_react6.useEffect)(() => {
1221
+ const [count, setCount] = (0, import_react7.useState)(0);
1222
+ (0, import_react7.useEffect)(() => {
1045
1223
  setCount(value ?? 0);
1046
1224
  }, [value]);
1047
1225
  const handleChange = (e) => {
@@ -1072,13 +1250,13 @@ var Counter = (0, import_react6.forwardRef)(
1072
1250
  onChange?.(newValue);
1073
1251
  setCount(newValue);
1074
1252
  };
1075
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1253
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1076
1254
  "div",
1077
1255
  {
1078
1256
  className: cn("flex w-auto flex-col gap-1", classNames?.root),
1079
1257
  "data-testid": `counter-wrapper-${props.id}`,
1080
1258
  children: [
1081
- label && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1259
+ label && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1082
1260
  Label_default,
1083
1261
  {
1084
1262
  text: label,
@@ -1088,17 +1266,17 @@ var Counter = (0, import_react6.forwardRef)(
1088
1266
  className: classNames?.label
1089
1267
  }
1090
1268
  ),
1091
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "relative flex w-[122px] flex-row items-center", children: [
1092
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1269
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "relative flex w-[122px] flex-row items-center", children: [
1270
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1093
1271
  "button",
1094
1272
  {
1095
1273
  type: "button",
1096
1274
  className: "absolute inset-y-0 left-1 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20",
1097
1275
  onClick: decrement,
1098
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react10.Minus, { className: "h-4 w-4 text-green-100" })
1276
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react11.Minus, { className: "h-4 w-4 text-green-100" })
1099
1277
  }
1100
1278
  ),
1101
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1279
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1102
1280
  "input",
1103
1281
  {
1104
1282
  className: cn(counterVariants({ theme }), classNames?.input),
@@ -1109,17 +1287,17 @@ var Counter = (0, import_react6.forwardRef)(
1109
1287
  ...props
1110
1288
  }
1111
1289
  ),
1112
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1290
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1113
1291
  "button",
1114
1292
  {
1115
1293
  type: "button",
1116
1294
  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",
1117
1295
  onClick: increment,
1118
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react10.Plus, { className: "h-4 w-4 text-green-100" })
1296
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react11.Plus, { className: "h-4 w-4 text-green-100" })
1119
1297
  }
1120
1298
  )
1121
1299
  ] }),
1122
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ErrorMessage_default, { message: error })
1300
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ErrorMessage_default, { message: error })
1123
1301
  ]
1124
1302
  }
1125
1303
  );
@@ -1186,7 +1364,10 @@ var counterVariants = (0, import_cva6.cva)(
1186
1364
  Input,
1187
1365
  Label,
1188
1366
  ListItem,
1367
+ MapComponent,
1368
+ PlacesQueryInput,
1189
1369
  Select,
1190
- cn
1370
+ cn,
1371
+ fetchLocation
1191
1372
  });
1192
1373
  //# sourceMappingURL=index.cjs.map