@solace-health/ui 0.10.668 → 0.10.670
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.
- package/dist/{chunk-QOIWWR24.cjs → chunk-2E7ZG247.cjs} +2 -2
- package/dist/{chunk-QOIWWR24.cjs.map → chunk-2E7ZG247.cjs.map} +1 -1
- package/dist/{chunk-FXLG3LU3.cjs → chunk-3WAG2NWA.cjs} +2 -2
- package/dist/{chunk-FXLG3LU3.cjs.map → chunk-3WAG2NWA.cjs.map} +1 -1
- package/dist/{chunk-VO2GGQ2X.js → chunk-6T7SXJ44.js} +2 -2
- package/dist/{chunk-VO2GGQ2X.js.map → chunk-6T7SXJ44.js.map} +1 -1
- package/dist/{chunk-3N4EBY5Q.js → chunk-74AGGELC.js} +2 -2
- package/dist/{chunk-3N4EBY5Q.js.map → chunk-74AGGELC.js.map} +1 -1
- package/dist/{chunk-2BUA2PCN.cjs → chunk-DJ5RP6A2.cjs} +2 -2
- package/dist/{chunk-2BUA2PCN.cjs.map → chunk-DJ5RP6A2.cjs.map} +1 -1
- package/dist/{chunk-BCJNTCHK.js → chunk-EJBXIBM4.js} +2 -2
- package/dist/{chunk-BCJNTCHK.js.map → chunk-EJBXIBM4.js.map} +1 -1
- package/dist/{chunk-VTYXYLTK.cjs → chunk-EZK5NRS6.cjs} +2 -2
- package/dist/{chunk-VTYXYLTK.cjs.map → chunk-EZK5NRS6.cjs.map} +1 -1
- package/dist/{chunk-6TGWLOLD.js → chunk-FDMT42JJ.js} +2 -2
- package/dist/{chunk-6TGWLOLD.js.map → chunk-FDMT42JJ.js.map} +1 -1
- package/dist/chunk-FFAC2CCY.cjs +2 -0
- package/dist/chunk-FFAC2CCY.cjs.map +1 -0
- package/dist/{chunk-QUD4HTUP.cjs → chunk-FMFRB4JI.cjs} +2 -2
- package/dist/chunk-FMFRB4JI.cjs.map +1 -0
- package/dist/{chunk-FBXJ2VCI.js → chunk-FQGC44HX.js} +2 -2
- package/dist/{chunk-FBXJ2VCI.js.map → chunk-FQGC44HX.js.map} +1 -1
- package/dist/{chunk-ETZDR7A5.cjs → chunk-H37HOXIG.cjs} +2 -2
- package/dist/{chunk-ETZDR7A5.cjs.map → chunk-H37HOXIG.cjs.map} +1 -1
- package/dist/chunk-IRMVTSQ3.cjs +2 -0
- package/dist/chunk-IRMVTSQ3.cjs.map +1 -0
- package/dist/chunk-LFGDYEFJ.js +27 -0
- package/dist/chunk-LFGDYEFJ.js.map +1 -0
- package/dist/{chunk-ONAYZGIC.js → chunk-M2YQU26J.js} +2 -2
- package/dist/{chunk-ONAYZGIC.js.map → chunk-M2YQU26J.js.map} +1 -1
- package/dist/{chunk-JE6P5GU3.js → chunk-M7LXLMUQ.js} +2 -2
- package/dist/{chunk-JE6P5GU3.js.map → chunk-M7LXLMUQ.js.map} +1 -1
- package/dist/{chunk-KIKR45SH.js → chunk-MERMPFZT.js} +2 -2
- package/dist/{chunk-KIKR45SH.js.map → chunk-MERMPFZT.js.map} +1 -1
- package/dist/chunk-NVFC45IS.js +2 -0
- package/dist/chunk-NVFC45IS.js.map +1 -0
- package/dist/{chunk-HP66FPW5.cjs → chunk-O7A6NMSW.cjs} +2 -2
- package/dist/{chunk-HP66FPW5.cjs.map → chunk-O7A6NMSW.cjs.map} +1 -1
- package/dist/{chunk-WMOD232S.js → chunk-OYN4D5J3.js} +2 -2
- package/dist/{chunk-WMOD232S.js.map → chunk-OYN4D5J3.js.map} +1 -1
- package/dist/{chunk-UVZVZAGK.js → chunk-PVA67MWT.js} +2 -2
- package/dist/{chunk-UVZVZAGK.js.map → chunk-PVA67MWT.js.map} +1 -1
- package/dist/chunk-QHNRUAYJ.js +2 -0
- package/dist/chunk-QHNRUAYJ.js.map +1 -0
- package/dist/{chunk-Z6BTLUPD.js → chunk-R2R3QR2N.js} +2 -2
- package/dist/{chunk-Z6BTLUPD.js.map → chunk-R2R3QR2N.js.map} +1 -1
- package/dist/{chunk-3TNSGXJ6.cjs → chunk-RQTTULKO.cjs} +2 -2
- package/dist/{chunk-3TNSGXJ6.cjs.map → chunk-RQTTULKO.cjs.map} +1 -1
- package/dist/{chunk-L4FOTU2K.cjs → chunk-RXR3BZZK.cjs} +2 -2
- package/dist/{chunk-L4FOTU2K.cjs.map → chunk-RXR3BZZK.cjs.map} +1 -1
- package/dist/{chunk-DJD7UZPR.cjs → chunk-SBGL7Q6I.cjs} +2 -2
- package/dist/{chunk-DJD7UZPR.cjs.map → chunk-SBGL7Q6I.cjs.map} +1 -1
- package/dist/{chunk-VTBYJGTJ.cjs → chunk-SC4FK5N3.cjs} +2 -2
- package/dist/{chunk-VTBYJGTJ.cjs.map → chunk-SC4FK5N3.cjs.map} +1 -1
- package/dist/chunk-SP2L5FI7.js +2 -0
- package/dist/chunk-SP2L5FI7.js.map +1 -0
- package/dist/{chunk-SMTXYI6Q.js → chunk-STIYYCSL.js} +2 -2
- package/dist/{chunk-SMTXYI6Q.js.map → chunk-STIYYCSL.js.map} +1 -1
- package/dist/chunk-UIJEPPNJ.cjs +27 -0
- package/dist/chunk-UIJEPPNJ.cjs.map +1 -0
- package/dist/{chunk-C45VZ526.cjs → chunk-UIKSYA4B.cjs} +2 -2
- package/dist/{chunk-C45VZ526.cjs.map → chunk-UIKSYA4B.cjs.map} +1 -1
- package/dist/{chunk-E7W73IO3.cjs → chunk-UJH4JKQC.cjs} +2 -2
- package/dist/{chunk-E7W73IO3.cjs.map → chunk-UJH4JKQC.cjs.map} +1 -1
- package/dist/{chunk-X7HU4N6X.cjs → chunk-URUWP25E.cjs} +2 -2
- package/dist/{chunk-X7HU4N6X.cjs.map → chunk-URUWP25E.cjs.map} +1 -1
- package/dist/{chunk-FMPII2NF.js → chunk-VIPOYVA3.js} +2 -2
- package/dist/{chunk-FMPII2NF.js.map → chunk-VIPOYVA3.js.map} +1 -1
- package/dist/{chunk-MPGPI6LC.js → chunk-XOWSDMW5.js} +2 -2
- package/dist/{chunk-MPGPI6LC.js.map → chunk-XOWSDMW5.js.map} +1 -1
- package/dist/{chunk-SM7PYFD2.cjs → chunk-ZZW5IT44.cjs} +2 -2
- package/dist/{chunk-SM7PYFD2.cjs.map → chunk-ZZW5IT44.cjs.map} +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/v2/address-input/address-input.cjs +1 -1
- package/dist/v2/address-input/address-input.js +1 -1
- package/dist/v2/button/button.cjs +1 -1
- package/dist/v2/button/button.js +1 -1
- package/dist/v2/calendar/calendar.cjs +1 -1
- package/dist/v2/calendar/calendar.js +1 -1
- package/dist/v2/card/card.cjs +1 -1
- package/dist/v2/card/card.d.ts +7 -2
- package/dist/v2/card/card.js +1 -1
- package/dist/v2/carousel/carousel.cjs +1 -1
- package/dist/v2/carousel/carousel.js +1 -1
- package/dist/v2/checkbox/button-checkbox.cjs +1 -1
- package/dist/v2/checkbox/button-checkbox.js +1 -1
- package/dist/v2/checkbox-group/checkbox-group.cjs +1 -1
- package/dist/v2/checkbox-group/checkbox-group.js +1 -1
- package/dist/v2/combobox/combobox.cjs +1 -1
- package/dist/v2/combobox/combobox.js +1 -1
- package/dist/v2/command/command.cjs +1 -1
- package/dist/v2/command/command.js +1 -1
- package/dist/v2/date-picker/date-picker-input.cjs +1 -1
- package/dist/v2/date-picker/date-picker-input.js +1 -1
- package/dist/v2/date-picker/date-picker.cjs +1 -1
- package/dist/v2/date-picker/date-picker.js +1 -1
- package/dist/v2/dialog/dialog.cjs +1 -1
- package/dist/v2/dialog/dialog.js +1 -1
- package/dist/v2/drawer/drawer.cjs +1 -1
- package/dist/v2/drawer/drawer.js +1 -1
- package/dist/v2/flex-drawer/flex-drawer.cjs +1 -1
- package/dist/v2/flex-drawer/flex-drawer.js +1 -1
- package/dist/v2/image-preview/image-preview.cjs +1 -1
- package/dist/v2/image-preview/image-preview.js +1 -1
- package/dist/v2/index.cjs +1 -1
- package/dist/v2/index.js +1 -1
- package/dist/v2/input/formatters.cjs +1 -1
- package/dist/v2/input/formatters.d.ts +1 -0
- package/dist/v2/input/formatters.js +1 -1
- package/dist/v2/input/input.cjs +1 -1
- package/dist/v2/input/input.d.ts +1 -1
- package/dist/v2/input/input.js +1 -1
- package/dist/v2/input/input.stories.d.ts +1 -0
- package/dist/v2/multiselect/components/MultiSelectCommandGroup.cjs +1 -1
- package/dist/v2/multiselect/components/MultiSelectCommandGroup.js +1 -1
- package/dist/v2/multiselect/components/MultiSelectDropdown.cjs +1 -1
- package/dist/v2/multiselect/components/MultiSelectDropdown.js +1 -1
- package/dist/v2/multiselect/multiselect.cjs +1 -1
- package/dist/v2/multiselect/multiselect.js +1 -1
- package/dist/v2/time-select/time-select.cjs +1 -1
- package/dist/v2/time-select/time-select.js +1 -1
- package/package.json +3 -2
- package/dist/chunk-3TXN7A2Z.js +0 -2
- package/dist/chunk-3TXN7A2Z.js.map +0 -1
- package/dist/chunk-6LESB5UU.js +0 -27
- package/dist/chunk-6LESB5UU.js.map +0 -1
- package/dist/chunk-7X6KFDGZ.cjs +0 -2
- package/dist/chunk-7X6KFDGZ.cjs.map +0 -1
- package/dist/chunk-JH4FQUIS.js +0 -2
- package/dist/chunk-JH4FQUIS.js.map +0 -1
- package/dist/chunk-KKTQL7QK.js +0 -2
- package/dist/chunk-KKTQL7QK.js.map +0 -1
- package/dist/chunk-OUGYUQUB.cjs +0 -27
- package/dist/chunk-OUGYUQUB.cjs.map +0 -1
- package/dist/chunk-QUD4HTUP.cjs.map +0 -1
- package/dist/chunk-Z2MOZQCG.cjs +0 -2
- package/dist/chunk-Z2MOZQCG.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/carousel/carousel.tsx"],"names":["CarouselContext","useCarousel","context","Carousel","orientation","opts","setApi","plugins","className","children","props","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","selectedIndex","setSelectedIndex","slideCount","setSlideCount","onSelect","scrollPrev","scrollNext","jsx","cn","CarouselContent","CarouselItem","CarouselPrevious","variant","size","jsxs","Button","LuArrowLeft","CarouselNext","LuArrowRight","CarouselFraction"],"mappings":"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","file":"chunk-ONAYZGIC.js","sourcesContent":["import * as React from 'react';\nimport useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react';\nimport { LuArrowLeft, LuArrowRight } from 'react-icons/lu';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/v2/button/button';\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: 'horizontal' | 'vertical';\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n selectedIndex: number;\n slideCount: number;\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error('useCarousel must be used within a <Carousel />');\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = 'horizontal',\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'horizontal' ? 'x' : 'y',\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [slideCount, setSlideCount] = React.useState(0);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n setSelectedIndex(api.selectedScrollSnap());\n setSlideCount(api.scrollSnapList().length);\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on('reInit', onSelect);\n api.on('select', onSelect);\n\n // eslint-disable-next-line consistent-return\n return () => {\n api?.off('select', onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value={{\n carouselRef,\n api,\n opts,\n orientation: orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n selectedIndex,\n slideCount,\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n className={cn('relative', className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<'div'>) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\" data-slot=\"carousel-content\">\n <div\n className={cn('flex', orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col', className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<'div'>) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n 'min-w-0 shrink-0 grow-0 basis-full',\n orientation === 'horizontal' ? 'pl-4' : 'pt-4',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = 'outline',\n size = 'sm',\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n 'absolute size-8 rounded-full',\n orientation === 'horizontal'\n ? 'top-1/2 -left-12 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <LuArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = 'outline',\n size = 'sm',\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n 'absolute size-8 rounded-full',\n orientation === 'horizontal'\n ? 'top-1/2 -right-12 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <LuArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nfunction CarouselFraction({ className, ...props }: React.ComponentProps<'div'>) {\n const { slideCount, selectedIndex } = useCarousel();\n\n if (slideCount <= 1) return null;\n\n return (\n <div\n className={cn('text-muted-foreground text-sm', className)}\n data-slot=\"carousel-fraction\"\n {...props}\n >\n {selectedIndex + 1}/{slideCount}\n </div>\n );\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n CarouselFraction,\n useCarousel,\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/v2/carousel/carousel.tsx"],"names":["CarouselContext","useCarousel","context","Carousel","orientation","opts","setApi","plugins","className","children","props","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","selectedIndex","setSelectedIndex","slideCount","setSlideCount","onSelect","scrollPrev","scrollNext","jsx","cn","CarouselContent","CarouselItem","CarouselPrevious","variant","size","jsxs","Button","LuArrowLeft","CarouselNext","LuArrowRight","CarouselFraction"],"mappings":"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","file":"chunk-M2YQU26J.js","sourcesContent":["import * as React from 'react';\nimport useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react';\nimport { LuArrowLeft, LuArrowRight } from 'react-icons/lu';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/v2/button/button';\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: 'horizontal' | 'vertical';\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n selectedIndex: number;\n slideCount: number;\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error('useCarousel must be used within a <Carousel />');\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = 'horizontal',\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'horizontal' ? 'x' : 'y',\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [slideCount, setSlideCount] = React.useState(0);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n setSelectedIndex(api.selectedScrollSnap());\n setSlideCount(api.scrollSnapList().length);\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on('reInit', onSelect);\n api.on('select', onSelect);\n\n // eslint-disable-next-line consistent-return\n return () => {\n api?.off('select', onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value={{\n carouselRef,\n api,\n opts,\n orientation: orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n selectedIndex,\n slideCount,\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n className={cn('relative', className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<'div'>) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\" data-slot=\"carousel-content\">\n <div\n className={cn('flex', orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col', className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<'div'>) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n 'min-w-0 shrink-0 grow-0 basis-full',\n orientation === 'horizontal' ? 'pl-4' : 'pt-4',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = 'outline',\n size = 'sm',\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n 'absolute size-8 rounded-full',\n orientation === 'horizontal'\n ? 'top-1/2 -left-12 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <LuArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = 'outline',\n size = 'sm',\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n 'absolute size-8 rounded-full',\n orientation === 'horizontal'\n ? 'top-1/2 -right-12 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <LuArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nfunction CarouselFraction({ className, ...props }: React.ComponentProps<'div'>) {\n const { slideCount, selectedIndex } = useCarousel();\n\n if (slideCount <= 1) return null;\n\n return (\n <div\n className={cn('text-muted-foreground text-sm', className)}\n data-slot=\"carousel-fraction\"\n {...props}\n >\n {selectedIndex + 1}/{slideCount}\n </div>\n );\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n CarouselFraction,\n useCarousel,\n};\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {b as b$2}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {b as b$2}from'./chunk-SP2L5FI7.js';import {a}from'./chunk-YTIIAU4W.js';import {b as b$1}from'./chunk-6MYNQMQU.js';import*as u from'react';import {Drawer}from'vaul';import {LuX}from'react-icons/lu';import {jsx,jsxs}from'react/jsx-runtime';function x({autoFocus:t=true,...e}){let{isMobile:a,isTablet:i}=b$1(),n=!a&&!i;return jsx(Drawer.Root,{"data-slot":"drawer",handleOnly:n,autoFocus:t,...e})}function C({...t}){return jsx(Drawer.Trigger,{"data-slot":"drawer-trigger",...t})}function f({...t}){return jsx(Drawer.Portal,{"data-slot":"drawer-portal",...t})}function v({...t}){return jsx(Drawer.Close,{"data-slot":"drawer-close",...t})}var b=u.forwardRef(({className:t,...e},a$1)=>jsx(Drawer.Overlay,{ref:a$1,"data-slot":"drawer-overlay",className:a("z-modal-stacking-context fixed inset-0 bg-black/50",t),...e}));function R({className:t,children:e,...a$1}){let i=/\bw-(\w+)\b/.test(t??""),{isMobile:n,isTablet:w}=b$1(),m=!n&&!w;return jsxs(f,{"data-slot":"drawer-portal",children:[jsx(b,{}),jsxs(Drawer.Content,{"data-slot":"drawer-content",className:a("group/drawer-content bg-background z-modal-stacking-context fixed flex h-auto flex-col",m?"!select-auto":"","data-[vaul-drawer-direction=top]:inset-x-0","data-[vaul-drawer-direction=top]:top-0","data-[vaul-drawer-direction=top]:mb-24","data-[vaul-drawer-direction=top]:max-h-[80vh]","data-[vaul-drawer-direction=top]:rounded-b-lg","data-[vaul-drawer-direction=top]:border-b","data-[vaul-drawer-direction=bottom]:inset-x-0","data-[vaul-drawer-direction=bottom]:bottom-0","data-[vaul-drawer-direction=bottom]:mt-24","data-[vaul-drawer-direction=bottom]:max-h-[80vh]","data-[vaul-drawer-direction=bottom]:rounded-t-lg","data-[vaul-drawer-direction=bottom]:border-t","data-[vaul-drawer-direction=right]:inset-y-0","data-[vaul-drawer-direction=right]:right-0","data-[vaul-drawer-direction=right]:border-l","data-[vaul-drawer-direction=right]:rounded-l-md",!i&&"data-[vaul-drawer-direction=right]:w-3/4",!i&&"data-[vaul-drawer-direction=right]:sm:max-w-md","data-[vaul-drawer-direction=left]:inset-y-0","data-[vaul-drawer-direction=left]:left-0","data-[vaul-drawer-direction=left]:border-r","data-[vaul-drawer-direction=left]:rounded-r-md",!i&&"data-[vaul-drawer-direction=left]:w-3/4",!i&&"data-[vaul-drawer-direction=left]:sm:max-w-sm",t),...a$1,children:[jsx("div",{className:"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block"}),e]})]})}function T({className:t,showClose:e=false,...a$1}){return jsxs("div",{"data-slot":"drawer-header",className:a("relative flex flex-col gap-0.5 border-b p-4 text-left md:gap-1.5 md:p-8",t),...a$1,children:[e&&jsx(v,{className:"focus:ring-ring absolute rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none","aria-label":"Close",asChild:true,children:jsx(b$2,{variant:"ghost-secondary",className:"text-primary absolute top-1/2 right-4 h-8 w-8 -translate-y-1/2 p-0",children:jsx(LuX,{})})}),a$1.children]})}function k({className:t,...e}){return jsx("div",{"data-slot":"drawer-footer",className:a("mt-auto flex gap-2 border-t p-4 md:p-8",t),...e})}function N({className:t,...e}){return jsx(Drawer.Title,{"data-slot":"drawer-title",className:a("text-display-md",t),...e})}function O({...t}){return jsx(Drawer.Description,{"data-slot":"drawer-description",...t})}export{x as a,C as b,f as c,v as d,b as e,R as f,T as g,k as h,N as i,O as j};//# sourceMappingURL=chunk-M7LXLMUQ.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-M7LXLMUQ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/drawer/drawer.tsx"],"names":["Drawer","autoFocus","props","isMobile","isTablet","useWindowSize_default","handleOnly","jsx","DrawerPrimitive","DrawerTrigger","DrawerPortal","DrawerClose","DrawerOverlay","className","ref","cn","DrawerContent","children","hasWidth","allowUserSelect","jsxs","DrawerHeader","showClose","Button","LuX","DrawerFooter","DrawerTitle","DrawerDescription"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/v2/drawer/drawer.tsx"],"names":["Drawer","autoFocus","props","isMobile","isTablet","useWindowSize_default","handleOnly","jsx","DrawerPrimitive","DrawerTrigger","DrawerPortal","DrawerClose","DrawerOverlay","className","ref","cn","DrawerContent","children","hasWidth","allowUserSelect","jsxs","DrawerHeader","showClose","Button","LuX","DrawerFooter","DrawerTitle","DrawerDescription"],"mappings":"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","file":"chunk-M7LXLMUQ.js","sourcesContent":["import * as React from 'react';\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { LuX } from 'react-icons/lu';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/v2/button/button';\nimport { useWindowSize } from '@/hooks';\n\nfunction Drawer({ autoFocus = true, ...props }: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n const { isMobile, isTablet } = useWindowSize();\n // Invert the default behavior of vaul's drawer: https://vaul.emilkowal.ski/api#root\n // Desktop users can click the X or overlay to close, so we can disable dragging the drawer itself to close\n // this lets us allow users them to select text in the drawer without accidentally closing it\n const handleOnly = !isMobile && !isTablet;\n return (\n <DrawerPrimitive.Root\n data-slot=\"drawer\"\n handleOnly={handleOnly}\n // Invert the default behavior of vaul's drawer to always autoFocus by default\n // This ensures that keyboard users see focus moved to the drawer when it opens\n // unless explicitly disabled\n autoFocus={autoFocus}\n {...props}\n />\n );\n}\n\nfunction DrawerTrigger({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n}\n\n// NOTE: forwardRef for radix (underlying library for vaul)\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n data-slot=\"drawer-overlay\"\n className={cn('z-modal-stacking-context fixed inset-0 bg-black/50', className)}\n {...props}\n />\n));\n\nfunction DrawerContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n const hasWidth = /\\bw-(\\w+)\\b/.test(className ?? '');\n\n const { isMobile, isTablet } = useWindowSize();\n // Desktop users can click the X or overlay to close, so we can disable dragging the drawer itself to close\n // this lets us allow users them to select text in the drawer without accidentally closing it\n const allowUserSelect = !isMobile && !isTablet;\n\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n 'group/drawer-content bg-background z-modal-stacking-context fixed flex h-auto flex-col',\n\n allowUserSelect ? '!select-auto' : '',\n\n // top drawer\n 'data-[vaul-drawer-direction=top]:inset-x-0',\n 'data-[vaul-drawer-direction=top]:top-0',\n 'data-[vaul-drawer-direction=top]:mb-24',\n 'data-[vaul-drawer-direction=top]:max-h-[80vh]',\n 'data-[vaul-drawer-direction=top]:rounded-b-lg',\n 'data-[vaul-drawer-direction=top]:border-b',\n\n // bottom drawer\n 'data-[vaul-drawer-direction=bottom]:inset-x-0',\n 'data-[vaul-drawer-direction=bottom]:bottom-0',\n 'data-[vaul-drawer-direction=bottom]:mt-24',\n 'data-[vaul-drawer-direction=bottom]:max-h-[80vh]',\n 'data-[vaul-drawer-direction=bottom]:rounded-t-lg',\n 'data-[vaul-drawer-direction=bottom]:border-t',\n\n // right drawer\n 'data-[vaul-drawer-direction=right]:inset-y-0',\n 'data-[vaul-drawer-direction=right]:right-0',\n 'data-[vaul-drawer-direction=right]:border-l',\n 'data-[vaul-drawer-direction=right]:rounded-l-md',\n !hasWidth && 'data-[vaul-drawer-direction=right]:w-3/4',\n !hasWidth && 'data-[vaul-drawer-direction=right]:sm:max-w-md',\n\n // left drawer\n 'data-[vaul-drawer-direction=left]:inset-y-0',\n 'data-[vaul-drawer-direction=left]:left-0',\n 'data-[vaul-drawer-direction=left]:border-r',\n 'data-[vaul-drawer-direction=left]:rounded-r-md',\n !hasWidth && 'data-[vaul-drawer-direction=left]:w-3/4',\n !hasWidth && 'data-[vaul-drawer-direction=left]:sm:max-w-sm',\n className,\n )}\n {...props}\n >\n <div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({\n className,\n showClose = false,\n ...props\n}: React.ComponentProps<'div'> & { showClose?: boolean }) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n 'relative flex flex-col gap-0.5 border-b p-4 text-left md:gap-1.5 md:p-8',\n className,\n )}\n {...props}\n >\n {showClose && (\n <DrawerClose\n className=\"focus:ring-ring absolute rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\"\n aria-label=\"Close\"\n asChild\n >\n <Button\n variant=\"ghost-secondary\"\n className=\"text-primary absolute top-1/2 right-4 h-8 w-8 -translate-y-1/2 p-0\"\n >\n <LuX />\n </Button>\n </DrawerClose>\n )}\n {props.children}\n </div>\n );\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn('mt-auto flex gap-2 border-t p-4 md:p-8', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerTitle({ className, ...props }: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn('text-display-md', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return <DrawerPrimitive.Description data-slot=\"drawer-description\" {...props} />;\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n};\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {b}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {b}from'./chunk-LFGDYEFJ.js';import w,{getGeocode}from'use-places-autocomplete';import {useRef,useState,useCallback,useEffect}from'react';import {useLoadScript}from'@react-google-maps/api';import {jsxs,jsx}from'react/jsx-runtime';var x=u=>{let s="",d="",l="",i="",a="";u.address_components.forEach(r=>{r.types.some(p=>{switch(p){case "locality":return s=r.long_name,true;case "sublocality":case "administrative_area_level_3":case "neighborhood":return s=s||r.long_name,true;case "administrative_area_level_1":return d=r.short_name,true;case "street_number":return l=r.short_name,true;case "route":return i=r.short_name,true;case "postal_code":return a=r.short_name,true;default:return false}});});let n=u.geometry.location.lat(),c=u.geometry.location.lng(),m=`${l} ${i}`.trim();return {city:s,state:d,street:m,zip:a,lat:n,long:c}},R=2,S=({onSelectAddress:u=void 0,...s})=>{let d=useRef(null),l=useRef(`address-input-${Math.random().toString(36).slice(2)}-listbox`),[i,a]=useState(-1),{suggestions:{data:n=[]},setValue:c,clearSuggestions:m}=w({requestOptions:{componentRestrictions:{country:"us"}}}),r=useCallback(()=>{m(),a(-1);},[m]);useEffect(()=>{let e=o=>{d.current&&!d.current.contains(o.target)&&r();},t=o=>{o.key==="Escape"&&r();};return n.length>0&&(document.addEventListener("mousedown",e),document.addEventListener("keydown",t)),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t);}},[n.length,r]),useEffect(()=>{n.length===0?a(-1):a(e=>e<0?e:Math.min(e,n.length-1));},[n.length]);let p=e=>{c(e,false),r(),!(e.length<=R)&&getGeocode({address:e}).then(t=>{if(!t||t.length===0)return;let o=x(t[0]);u?.(o);});},A=useCallback(e=>{c(e),a(-1);},[c]),_=i>=0?`${l.current}-option-${i}`:void 0;return jsxs("div",{className:"relative",children:[jsx(b,{...s,onChange:e=>{s.onChange?.(e),A(e.target.value);},onKeyDown:e=>{if(s.onKeyDown?.(e),!e.defaultPrevented){if(!n.length){e.key==="Escape"&&r();return}if(e.key==="ArrowDown"){e.preventDefault(),a(t=>{let o=t+1;return o>=n.length||o<0?0:o});return}if(e.key==="ArrowUp"){e.preventDefault(),a(t=>t<=0?n.length-1:t-1);return}if(e.key==="Enter"&&i>=0){e.preventDefault();let t=n[i];t&&p(t.description);return}e.key==="Escape"&&(e.preventDefault(),r());}},role:"combobox","aria-expanded":n.length>0,"aria-controls":n.length>0?l.current:void 0,"aria-activedescendant":_,"aria-autocomplete":"list"}),n.length>0&&jsx("div",{ref:d,id:l.current,role:"listbox",className:"z-modal-stacking-context absolute mt-1 max-h-60 w-full overflow-auto rounded-md border border-gray-200 bg-white shadow-lg",children:n.map((e,t)=>{let o=`${l.current}-option-${t}`,v=t===i;return jsx("div",{id:o,role:"option","aria-selected":v,tabIndex:-1,className:`cursor-pointer px-3 py-2 text-sm hover:bg-green-100 ${v?"bg-green-100":""}`,onMouseEnter:()=>a(t),onMouseDown:g=>g.preventDefault(),onClick:()=>p(e.description),onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),p(e.description));},children:e.description},e.place_id)})})]})},P=["places"],H=({googleMapsApiKey:u,onSelectAddress:s=void 0,...d})=>{let{isLoaded:l,loadError:i}=useLoadScript({googleMapsApiKey:u,libraries:P});return !l||i?jsx(b,{...d}):jsx(S,{onSelectAddress:s,...d})};export{S as a,H as b};//# sourceMappingURL=chunk-MERMPFZT.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-MERMPFZT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/address-input/address-input.tsx"],"names":["getAddressAttributes","result","city","state","streetNumber","streetName","zip","component","type","lat","long","street","MIN_ADDRESS_LENGTH","AddressInputInternal","onSelectAddress","rest","dropdownRef","useRef","listboxIdRef","highlightedIndex","setHighlightedIndex","useState","data","setValue","clearSuggestions","usePlacesAutocomplete","closeSuggestions","useCallback","useEffect","handleClickOutside","event","handleEscape","current","handleAddressSelect","address","getGeocode","results","formattedResults","handleAddressOnChange","inputValue","highlightedOptionId","jsxs","jsx","Input","next","suggestion","index","optionId","isHighlighted","libraries","AddressInput","googleMapsApiKey","props","isLoaded","loadError","useLoadScript"],"mappings":"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","file":"chunk-KIKR45SH.js","sourcesContent":["import usePlacesAutocomplete, { GeocodeResult, getGeocode } from 'use-places-autocomplete';\nimport { ComponentProps, useCallback, useEffect, useRef, useState } from 'react';\nimport { useLoadScript } from '@react-google-maps/api';\nimport { Input } from '../input/input';\n\nconst getAddressAttributes = (result: GeocodeResult) => {\n let city = '';\n let state = '';\n let streetNumber = '';\n let streetName = '';\n let zip = '';\n\n result.address_components.forEach((component) => {\n component.types.some((type) => {\n switch (type) {\n case 'locality':\n city = component.long_name; // Always prefer locality\n return true;\n case 'sublocality':\n case 'administrative_area_level_3':\n case 'neighborhood':\n city = city || component.long_name; // sets if no city\n return true;\n case 'administrative_area_level_1':\n state = component.short_name;\n return true;\n case 'street_number':\n streetNumber = component.short_name;\n return true;\n case 'route':\n streetName = component.short_name;\n return true;\n case 'postal_code':\n zip = component.short_name;\n return true;\n default:\n return false;\n }\n });\n });\n\n const lat = result.geometry.location.lat();\n const long = result.geometry.location.lng();\n const street = `${streetNumber} ${streetName}`.trim();\n\n return { city, state, street, zip, lat, long };\n};\n\ntype InputProps = ComponentProps<typeof Input>;\n\nexport type AddressResults = {\n city: string;\n state: string;\n street: string;\n zip: string;\n lat: number;\n long: number;\n};\n\ntype AddressInputProps = InputProps & {\n onSelectAddress?: (results: AddressResults) => void;\n};\n\nconst MIN_ADDRESS_LENGTH = 2;\n\nexport const AddressInputInternal = ({\n onSelectAddress = undefined,\n ...rest\n}: AddressInputProps) => {\n const dropdownRef = useRef<HTMLDivElement>(null);\n const listboxIdRef = useRef(`address-input-${Math.random().toString(36).slice(2)}-listbox`);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n const {\n suggestions: { data = [] },\n setValue,\n clearSuggestions,\n } = usePlacesAutocomplete({\n requestOptions: {\n componentRestrictions: { country: 'us' },\n },\n });\n\n const closeSuggestions = useCallback(() => {\n clearSuggestions();\n setHighlightedIndex(-1);\n }, [clearSuggestions]);\n\n // Handle click outside to close suggestions\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n closeSuggestions();\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n closeSuggestions();\n }\n };\n\n if (data.length > 0) {\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleEscape);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleEscape);\n };\n }, [data.length, closeSuggestions]);\n\n useEffect(() => {\n if (data.length === 0) {\n setHighlightedIndex(-1);\n } else {\n setHighlightedIndex((current) => {\n if (current < 0) {\n return current;\n }\n\n return Math.min(current, data.length - 1);\n });\n }\n }, [data.length]);\n\n const handleAddressSelect = (address: string) => {\n setValue(address, false);\n closeSuggestions();\n\n if (address.length <= MIN_ADDRESS_LENGTH) {\n return;\n }\n\n getGeocode({ address }).then((results) => {\n if (!results || results.length === 0) {\n return;\n }\n\n const formattedResults = getAddressAttributes(results[0]);\n onSelectAddress?.(formattedResults);\n });\n };\n\n const handleAddressOnChange = useCallback(\n (inputValue: string) => {\n setValue(inputValue);\n setHighlightedIndex(-1);\n },\n [setValue],\n );\n\n const highlightedOptionId =\n highlightedIndex >= 0 ? `${listboxIdRef.current}-option-${highlightedIndex}` : undefined;\n\n return (\n <div className=\"relative\">\n <Input\n {...rest}\n onChange={(e) => {\n rest.onChange?.(e);\n handleAddressOnChange(e.target.value);\n }}\n onKeyDown={(e) => {\n rest.onKeyDown?.(e);\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (!data.length) {\n if (e.key === 'Escape') {\n closeSuggestions();\n }\n return;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setHighlightedIndex((current) => {\n const next = current + 1;\n if (next >= data.length || next < 0) {\n return 0;\n }\n return next;\n });\n return;\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setHighlightedIndex((current) => {\n if (current <= 0) {\n return data.length - 1;\n }\n return current - 1;\n });\n return;\n }\n\n if (e.key === 'Enter' && highlightedIndex >= 0) {\n e.preventDefault();\n const suggestion = data[highlightedIndex];\n if (suggestion) {\n handleAddressSelect(suggestion.description);\n }\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n closeSuggestions();\n }\n }}\n role=\"combobox\"\n aria-expanded={data.length > 0}\n aria-controls={data.length > 0 ? listboxIdRef.current : undefined}\n aria-activedescendant={highlightedOptionId}\n aria-autocomplete=\"list\"\n />\n {data.length > 0 && (\n <div\n ref={dropdownRef}\n id={listboxIdRef.current}\n role=\"listbox\"\n className=\"z-modal-stacking-context absolute mt-1 max-h-60 w-full overflow-auto rounded-md border border-gray-200 bg-white shadow-lg\"\n >\n {data.map((suggestion, index) => {\n const optionId = `${listboxIdRef.current}-option-${index}`;\n const isHighlighted = index === highlightedIndex;\n\n return (\n <div\n key={suggestion.place_id}\n id={optionId}\n role=\"option\"\n aria-selected={isHighlighted}\n tabIndex={-1}\n className={`cursor-pointer px-3 py-2 text-sm hover:bg-green-100 ${\n isHighlighted ? 'bg-green-100' : ''\n }`}\n onMouseEnter={() => setHighlightedIndex(index)}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => handleAddressSelect(suggestion.description)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleAddressSelect(suggestion.description);\n }\n }}\n >\n {suggestion.description}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\nconst libraries: ['places'] = ['places'];\n\nexport const AddressInput = ({\n googleMapsApiKey,\n onSelectAddress = undefined,\n ...props\n}: AddressInputProps & { googleMapsApiKey: string }) => {\n const { isLoaded, loadError } = useLoadScript({\n googleMapsApiKey,\n libraries,\n });\n // if not loaded or error, return regular input\n if (!isLoaded || loadError) {\n return <Input {...props} />;\n }\n return <AddressInputInternal onSelectAddress={onSelectAddress} {...props} />;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/v2/address-input/address-input.tsx"],"names":["getAddressAttributes","result","city","state","streetNumber","streetName","zip","component","type","lat","long","street","MIN_ADDRESS_LENGTH","AddressInputInternal","onSelectAddress","rest","dropdownRef","useRef","listboxIdRef","highlightedIndex","setHighlightedIndex","useState","data","setValue","clearSuggestions","usePlacesAutocomplete","closeSuggestions","useCallback","useEffect","handleClickOutside","event","handleEscape","current","handleAddressSelect","address","getGeocode","results","formattedResults","handleAddressOnChange","inputValue","highlightedOptionId","jsxs","jsx","Input","next","suggestion","index","optionId","isHighlighted","libraries","AddressInput","googleMapsApiKey","props","isLoaded","loadError","useLoadScript"],"mappings":"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","file":"chunk-MERMPFZT.js","sourcesContent":["import usePlacesAutocomplete, { GeocodeResult, getGeocode } from 'use-places-autocomplete';\nimport { ComponentProps, useCallback, useEffect, useRef, useState } from 'react';\nimport { useLoadScript } from '@react-google-maps/api';\nimport { Input } from '../input/input';\n\nconst getAddressAttributes = (result: GeocodeResult) => {\n let city = '';\n let state = '';\n let streetNumber = '';\n let streetName = '';\n let zip = '';\n\n result.address_components.forEach((component) => {\n component.types.some((type) => {\n switch (type) {\n case 'locality':\n city = component.long_name; // Always prefer locality\n return true;\n case 'sublocality':\n case 'administrative_area_level_3':\n case 'neighborhood':\n city = city || component.long_name; // sets if no city\n return true;\n case 'administrative_area_level_1':\n state = component.short_name;\n return true;\n case 'street_number':\n streetNumber = component.short_name;\n return true;\n case 'route':\n streetName = component.short_name;\n return true;\n case 'postal_code':\n zip = component.short_name;\n return true;\n default:\n return false;\n }\n });\n });\n\n const lat = result.geometry.location.lat();\n const long = result.geometry.location.lng();\n const street = `${streetNumber} ${streetName}`.trim();\n\n return { city, state, street, zip, lat, long };\n};\n\ntype InputProps = ComponentProps<typeof Input>;\n\nexport type AddressResults = {\n city: string;\n state: string;\n street: string;\n zip: string;\n lat: number;\n long: number;\n};\n\ntype AddressInputProps = InputProps & {\n onSelectAddress?: (results: AddressResults) => void;\n};\n\nconst MIN_ADDRESS_LENGTH = 2;\n\nexport const AddressInputInternal = ({\n onSelectAddress = undefined,\n ...rest\n}: AddressInputProps) => {\n const dropdownRef = useRef<HTMLDivElement>(null);\n const listboxIdRef = useRef(`address-input-${Math.random().toString(36).slice(2)}-listbox`);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n const {\n suggestions: { data = [] },\n setValue,\n clearSuggestions,\n } = usePlacesAutocomplete({\n requestOptions: {\n componentRestrictions: { country: 'us' },\n },\n });\n\n const closeSuggestions = useCallback(() => {\n clearSuggestions();\n setHighlightedIndex(-1);\n }, [clearSuggestions]);\n\n // Handle click outside to close suggestions\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n closeSuggestions();\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n closeSuggestions();\n }\n };\n\n if (data.length > 0) {\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleEscape);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleEscape);\n };\n }, [data.length, closeSuggestions]);\n\n useEffect(() => {\n if (data.length === 0) {\n setHighlightedIndex(-1);\n } else {\n setHighlightedIndex((current) => {\n if (current < 0) {\n return current;\n }\n\n return Math.min(current, data.length - 1);\n });\n }\n }, [data.length]);\n\n const handleAddressSelect = (address: string) => {\n setValue(address, false);\n closeSuggestions();\n\n if (address.length <= MIN_ADDRESS_LENGTH) {\n return;\n }\n\n getGeocode({ address }).then((results) => {\n if (!results || results.length === 0) {\n return;\n }\n\n const formattedResults = getAddressAttributes(results[0]);\n onSelectAddress?.(formattedResults);\n });\n };\n\n const handleAddressOnChange = useCallback(\n (inputValue: string) => {\n setValue(inputValue);\n setHighlightedIndex(-1);\n },\n [setValue],\n );\n\n const highlightedOptionId =\n highlightedIndex >= 0 ? `${listboxIdRef.current}-option-${highlightedIndex}` : undefined;\n\n return (\n <div className=\"relative\">\n <Input\n {...rest}\n onChange={(e) => {\n rest.onChange?.(e);\n handleAddressOnChange(e.target.value);\n }}\n onKeyDown={(e) => {\n rest.onKeyDown?.(e);\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (!data.length) {\n if (e.key === 'Escape') {\n closeSuggestions();\n }\n return;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setHighlightedIndex((current) => {\n const next = current + 1;\n if (next >= data.length || next < 0) {\n return 0;\n }\n return next;\n });\n return;\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setHighlightedIndex((current) => {\n if (current <= 0) {\n return data.length - 1;\n }\n return current - 1;\n });\n return;\n }\n\n if (e.key === 'Enter' && highlightedIndex >= 0) {\n e.preventDefault();\n const suggestion = data[highlightedIndex];\n if (suggestion) {\n handleAddressSelect(suggestion.description);\n }\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n closeSuggestions();\n }\n }}\n role=\"combobox\"\n aria-expanded={data.length > 0}\n aria-controls={data.length > 0 ? listboxIdRef.current : undefined}\n aria-activedescendant={highlightedOptionId}\n aria-autocomplete=\"list\"\n />\n {data.length > 0 && (\n <div\n ref={dropdownRef}\n id={listboxIdRef.current}\n role=\"listbox\"\n className=\"z-modal-stacking-context absolute mt-1 max-h-60 w-full overflow-auto rounded-md border border-gray-200 bg-white shadow-lg\"\n >\n {data.map((suggestion, index) => {\n const optionId = `${listboxIdRef.current}-option-${index}`;\n const isHighlighted = index === highlightedIndex;\n\n return (\n <div\n key={suggestion.place_id}\n id={optionId}\n role=\"option\"\n aria-selected={isHighlighted}\n tabIndex={-1}\n className={`cursor-pointer px-3 py-2 text-sm hover:bg-green-100 ${\n isHighlighted ? 'bg-green-100' : ''\n }`}\n onMouseEnter={() => setHighlightedIndex(index)}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => handleAddressSelect(suggestion.description)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleAddressSelect(suggestion.description);\n }\n }}\n >\n {suggestion.description}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\nconst libraries: ['places'] = ['places'];\n\nexport const AddressInput = ({\n googleMapsApiKey,\n onSelectAddress = undefined,\n ...props\n}: AddressInputProps & { googleMapsApiKey: string }) => {\n const { isLoaded, loadError } = useLoadScript({\n googleMapsApiKey,\n libraries,\n });\n // if not loaded or error, return regular input\n if (!isLoaded || loadError) {\n return <Input {...props} />;\n }\n return <AddressInputInternal onSelectAddress={onSelectAddress} {...props} />;\n};\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-YTIIAU4W.js';import {cva}from'class-variance-authority';import {jsx}from'react/jsx-runtime';var n=cva("bg-card text-card-foreground group/card flex flex-col gap-4 overflow-hidden rounded-lg border border-gray-200 py-4 text-sm shadow-sm has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg",{variants:{variant:{default:"",selected:"border-green bg-green-100"}},defaultVariants:{variant:"default"}});function l({className:a$1,size:r="default",variant:d,...o}){return jsx("div",{"data-slot":"card","data-size":r,className:a(n({variant:d}),a$1),...o})}function m({className:a$1,hideHeaderDivider:r=false,...d}){return jsx("div",{"data-slot":"card-header",className:a("group/card-header @container/card-header grid auto-rows-min items-center gap-1 rounded-t-lg border-b border-gray-200 px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",r&&"border-none [.border-none]:pb-0",a$1),...d})}function u({className:a$1,...r}){return jsx("div",{"data-slot":"card-title",className:a("text-base leading-snug font-bold group-data-[size=sm]/card:text-sm",a$1),...r})}function f({className:a$1,...r}){return jsx("div",{"data-slot":"card-description",className:a("text-muted-foreground text-sm",a$1),...r})}function g({className:a$1,...r}){return jsx("div",{"data-slot":"card-action",className:a("col-start-2 row-start-1 self-start justify-self-end",a$1),...r})}function b({className:a$1,...r}){return jsx("div",{"data-slot":"card-content",className:a("px-4 group-data-[size=sm]/card:px-3",a$1),...r})}function v({className:a$1,...r}){return jsx("div",{"data-slot":"card-footer",className:a("bg-muted/50 flex items-center rounded-b-lg border-t border-gray-200 p-4 group-data-[size=sm]/card:p-3",a$1),...r})}export{l as a,m as b,u as c,f as d,g as e,b as f,v as g};//# sourceMappingURL=chunk-NVFC45IS.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-NVFC45IS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/v2/card/card.tsx"],"names":["cardVariants","cva","Card","className","size","variant","props","jsx","cn","CardHeader","hideHeaderDivider","CardTitle","CardDescription","CardAction","CardContent","CardFooter"],"mappings":"mHAIA,IAAMA,CAAAA,CAAeC,GAAAA,CACnB,6VAAA,CACA,CACE,SAAU,CACR,OAAA,CAAS,CACP,OAAA,CAAS,EAAA,CACT,SAAU,2BACZ,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SACX,CACF,CACF,EAMA,SAASC,CAAAA,CAAK,CAAE,SAAA,CAAAC,GAAAA,CAAW,IAAA,CAAAC,CAAAA,CAAO,SAAA,CAAW,OAAA,CAAAC,EAAS,GAAGC,CAAM,EAAc,CAC3E,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,MAAA,CACV,WAAA,CAAWH,CAAAA,CACX,SAAA,CAAWI,EAAGR,CAAAA,CAAa,CAAE,QAAAK,CAAQ,CAAC,EAAGF,GAAS,CAAA,CACjD,GAAGG,CAAAA,CACN,CAEJ,CAEA,SAASG,CAAAA,CAAW,CAClB,UAAAN,GAAAA,CACA,iBAAA,CAAAO,EAAoB,KAAA,CACpB,GAAGJ,CACL,CAAA,CAAkE,CAChE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,cACV,SAAA,CAAWC,CAAAA,CACT,+TACAE,CAAAA,EAAqB,iCAAA,CACrBP,GACF,CAAA,CACC,GAAGG,CAAAA,CACN,CAEJ,CAEA,SAASK,EAAU,CAAE,SAAA,CAAAR,IAAW,GAAGG,CAAM,CAAA,CAAgC,CACvE,OACEC,GAAAA,CAAC,OACC,WAAA,CAAU,YAAA,CACV,UAAWC,CAAAA,CACT,oEAAA,CACAL,GACF,CAAA,CACC,GAAGG,CAAAA,CACN,CAEJ,CAEA,SAASM,EAAgB,CAAE,SAAA,CAAAT,IAAW,GAAGG,CAAM,EAAgC,CAC7E,OACEC,GAAAA,CAAC,KAAA,CAAA,CACC,WAAA,CAAU,kBAAA,CACV,UAAWC,CAAAA,CAAG,+BAAA,CAAiCL,GAAS,CAAA,CACvD,GAAGG,EACN,CAEJ,CAEA,SAASO,CAAAA,CAAW,CAAE,SAAA,CAAAV,IAAW,GAAGG,CAAM,EAAgC,CACxE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,aAAA,CACV,SAAA,CAAWC,CAAAA,CAAG,qDAAA,CAAuDL,GAAS,CAAA,CAC7E,GAAGG,EACN,CAEJ,CAEA,SAASQ,CAAAA,CAAY,CAAE,SAAA,CAAAX,GAAAA,CAAW,GAAGG,CAAM,EAAgC,CACzE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,eACV,SAAA,CAAWC,CAAAA,CAAG,qCAAA,CAAuCL,GAAS,CAAA,CAC7D,GAAGG,EACN,CAEJ,CAEA,SAASS,CAAAA,CAAW,CAAE,UAAAZ,GAAAA,CAAW,GAAGG,CAAM,CAAA,CAAgC,CACxE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,cACV,SAAA,CAAWC,CAAAA,CACT,wGACAL,GACF,CAAA,CACC,GAAGG,CAAAA,CACN,CAEJ","file":"chunk-NVFC45IS.js","sourcesContent":["import * as React from 'react';\nimport { cva, VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\n\nconst cardVariants = cva(\n 'bg-card text-card-foreground group/card flex flex-col gap-4 overflow-hidden rounded-lg border border-gray-200 py-4 text-sm shadow-sm has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg',\n {\n variants: {\n variant: {\n default: '',\n selected: 'border-green bg-green-100',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ntype CardProps = React.ComponentProps<'div'> & { size?: 'default' | 'sm' } & VariantProps<\n typeof cardVariants\n >;\n\nfunction Card({ className, size = 'default', variant, ...props }: CardProps) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(cardVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction CardHeader({\n className,\n hideHeaderDivider = false,\n ...props\n}: React.ComponentProps<'div'> & { hideHeaderDivider?: boolean }) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n 'group/card-header @container/card-header grid auto-rows-min items-center gap-1 rounded-t-lg border-b border-gray-200 px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3',\n hideHeaderDivider && 'border-none [.border-none]:pb-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\n 'text-base leading-snug font-bold group-data-[size=sm]/card:text-sm',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn('col-start-2 row-start-1 self-start justify-self-end', className)}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn('px-4 group-data-[size=sm]/card:px-3', className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n 'bg-muted/50 flex items-center rounded-b-lg border-t border-gray-200 p-4 group-data-[size=sm]/card:p-3',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent };\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var chunkJ3F5C3FQ_cjs=require('./chunk-J3F5C3FQ.cjs'),chunkQAGOBPAT_cjs=require('./chunk-QAGOBPAT.cjs'),chunkSV7GB6CH_cjs=require('./chunk-SV7GB6CH.cjs'),
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
'use strict';var chunkJ3F5C3FQ_cjs=require('./chunk-J3F5C3FQ.cjs'),chunkQAGOBPAT_cjs=require('./chunk-QAGOBPAT.cjs'),chunkSV7GB6CH_cjs=require('./chunk-SV7GB6CH.cjs'),chunkDJ5RP6A2_cjs=require('./chunk-DJ5RP6A2.cjs'),chunkFMFRB4JI_cjs=require('./chunk-FMFRB4JI.cjs'),chunkUIJEPPNJ_cjs=require('./chunk-UIJEPPNJ.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),react=require('react'),lu=require('react-icons/lu'),T=require('dayjs'),Se=require('dayjs/plugin/customParseFormat.js'),reactImask=require('react-imask'),reactDayPicker=require('react-day-picker'),jsxRuntime=require('react/jsx-runtime'),be=require('react-easy-crop'),luxon=require('luxon');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var T__default=/*#__PURE__*/_interopDefault(T);var Se__default=/*#__PURE__*/_interopDefault(Se);var be__default=/*#__PURE__*/_interopDefault(be);function fe(n){let o=n.replace(/\D/g,"").slice(0,8);return o.length<=2?o:o.length<=4?`${o.slice(0,2)}/${o.slice(2)}`:`${o.slice(0,2)}/${o.slice(2,4)}/${o.slice(4)}`}function ge(n){if(n.length!==10)return;let o=n.split("/");if(o.length!==3||o[2].length!==4)return;let e=parseInt(o[0],10),r=parseInt(o[1],10),t=parseInt(o[2],10);if(Number.isNaN(e)||Number.isNaN(r)||Number.isNaN(t))return;let p=new Date(t,e-1,r);if(!(p.getFullYear()!==t||p.getMonth()!==e-1||p.getDate()!==r))return p}function De({className:n,wrapperClassName:o,value:e,onChange:r,disabled:t=false,calendarProps:p,placeholder:h="MM/DD/YYYY",variant:D}){let[f,m]=react.useState(false),[v,w]=react.useState(e),[i,c]=react.useState(e?T__default.default(e).format("MM/DD/YYYY"):""),d=react.useRef(e?T__default.default(e).format("MM/DD/YYYY"):"");react.useEffect(()=>{let a=e?T__default.default(e).format("MM/DD/YYYY"):"";a!==d.current&&(d.current=a,c(a),e&&w(e));},[e]);let l=a=>{let g=fe(a.target.value);c(g);let S=ge(g);S?(d.current=g,r?.(S)):g===""&&(d.current="",r?.(void 0));},b=a=>{a.key==="ArrowDown"&&(a.preventDefault(),m(true)),!/[0-9/]/.test(a.key)&&!["Backspace","Delete","ArrowLeft","ArrowRight","ArrowUp","Tab"].includes(a.key)&&!a.metaKey&&!a.ctrlKey&&a.preventDefault();};return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative w-full",o),children:[jsxRuntime.jsx("input",{type:"text","data-slot":"input",className:chunkQRO22BPZ_cjs.a(chunkUIJEPPNJ_cjs.a({variant:D}),"pr-10",n),value:i,placeholder:h,onChange:l,onKeyDown:b,disabled:t}),jsxRuntime.jsxs(chunkSV7GB6CH_cjs.a,{open:!t&&f,onOpenChange:m,children:[jsxRuntime.jsx(chunkSV7GB6CH_cjs.b,{asChild:true,children:jsxRuntime.jsx(chunkFMFRB4JI_cjs.b,{variant:"ghost-icon",size:"sm",className:"absolute top-1/2 right-1 -translate-y-1/2",disabled:t,"aria-label":"Select date",type:"button",children:jsxRuntime.jsx(lu.LuCalendar,{})})}),jsxRuntime.jsx(chunkSV7GB6CH_cjs.c,{className:"w-auto overflow-hidden p-0",align:"end",sideOffset:10,children:jsxRuntime.jsx(chunkDJ5RP6A2_cjs.b,{mode:"single",selected:e,month:v,onMonthChange:w,onSelect:a=>{let g=a?T__default.default(a).format("MM/DD/YYYY"):"";d.current=g,c(g),r?.(a),m(false);},...p})})]})]})}var Pe=({alt:n,className:o="",containerClassName:e="",imagePreview:r=void 0,cropper:t=void 0})=>{let[p,h]=react.useState(false),D=!r||!p,f=!!t;return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("flex max-w-[386px] flex-col",o),children:[jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative h-60 rounded-md border",e),children:[r&&f?jsxRuntime.jsx(be__default.default,{image:r,crop:t.crop,zoom:t.zoom,aspect:t.aspect,objectFit:"contain",onCropChange:t.setCrop,onZoomChange:t.setZoom,onCropComplete:t.onCropComplete,onMediaLoaded:()=>h(true),showGrid:false}):r&&jsxRuntime.jsx("img",{alt:n,className:`m-auto h-full w-full object-contain transition-opacity duration-300 ${p?"opacity-100":"opacity-0"}`,src:r,onLoad:()=>h(true),draggable:false}),D&&jsxRuntime.jsx("div",{"aria-label":r?"Loading image":"Awaiting image",className:"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r"})]}),!D&&f&&jsxRuntime.jsxs("div",{className:"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4",children:[jsxRuntime.jsxs("div",{className:"flex w-full items-center gap-3",children:[jsxRuntime.jsx(chunkFMFRB4JI_cjs.b,{"aria-label":"zoom out",onClick:()=>t.setZoom(Math.max(t.zoom-.1,1)),className:"h-8",variant:"ghost-icon",children:jsxRuntime.jsx(lu.LuZoomOut,{})}),jsxRuntime.jsx(chunkQAGOBPAT_cjs.a,{value:[t.zoom],min:1,max:3,step:.01,onValueChange:m=>t.setZoom(m[0]),className:"w-full sm:flex-50",classNames:{thumb:"border-2 border-green-800",range:"bg-green-900"}}),jsxRuntime.jsx(chunkFMFRB4JI_cjs.b,{"aria-label":"zoom in",onClick:()=>t.setZoom(Math.min(t.zoom+.1,3)),variant:"ghost-icon",className:"h-8",children:jsxRuntime.jsx(lu.LuZoomIn,{})})]}),jsxRuntime.jsxs(chunkFMFRB4JI_cjs.b,{onClick:t.reset,variant:"ghost",className:"h-8 p-2",children:[jsxRuntime.jsx(lu.LuRefreshCcw,{}),"Reset"]})]})]})};var W="00:00",ee="24:00",te=n=>luxon.DateTime.fromFormat(n,"HH:mm").isValid,oe=({startTime:n=W,endTime:o=ee,interval:e=30,onChange:r=void 0,className:t="",placeholder:p="Select one",size:h="default",portal:D=true,...f})=>{te(n)||(console.error(`Invalid startTime: ${n}`),n=W),te(o)||(console.error(`Invalid endTime: ${o}`),o=ee);let m=react.useMemo(()=>{let i=luxon.DateTime.fromFormat(o,"HH:mm"),c=luxon.Duration.fromObject({minutes:e}),d=[],l=luxon.DateTime.fromFormat(n,"HH:mm");for(;l<=i;){let b=l.toFormat("HH:mm");b==="00:00"&&l.equals(i)&&(b="24:00"),d.push({label:l.toFormat("h:mm a"),value:{hour:l.toFormat("HH"),min:l.toFormat("mm"),raw:b,formatted:l.toFormat("h:mm a")}}),l=l.plus(c);}return d},[n,o,e]),v=m.map(i=>({label:i.label,value:i.value.raw}));return jsxRuntime.jsxs(chunkJ3F5C3FQ_cjs.a,{onValueChange:i=>{let c=m.find(d=>d.value.raw===i);c&&r?.(c);},...f,children:[jsxRuntime.jsx(chunkJ3F5C3FQ_cjs.d,{className:chunkQRO22BPZ_cjs.a("max-w-[240px] md:w-[150px]",t),size:h,children:jsxRuntime.jsx(chunkJ3F5C3FQ_cjs.c,{placeholder:p})}),jsxRuntime.jsx(chunkJ3F5C3FQ_cjs.g,{position:"popper",className:"max-h-90",portal:D,children:v.map(i=>jsxRuntime.jsx(chunkJ3F5C3FQ_cjs.i,{className:"h-10",value:i.value,children:i.label},i.value))})]})},Qe=oe;T__default.default.extend(Se__default.default);var ae="MM/DD/YYYY",Fe="00/00/0000",X=["MM/DD/YYYY","MM/D/YYYY","M/DD/YYYY","M/D/YYYY","YYYY-MM-DD"];function I(n){return n?T__default.default(n).format(ae):""}function Ie({className:n="",wrapperClassName:o="",value:e=void 0,onChange:r=void 0,disabled:t=false,calendarProps:p=void 0,placeholder:h,inputProps:D=void 0,showCalendarIcon:f=true,editable:m=false}){let[v,w]=react.useState(false),i=h??(m?ae:"Pick a date"),[c,d]=react.useState(void 0),l=react.useRef(e);e!==l.current&&(l.current=e,c!==void 0&&d(void 0));let b=c??e,a=s=>p?.disabled?!reactDayPicker.isMatch(s,p.disabled):true,g=react.useRef(r);g.current=r;let S=react.useRef(a);S.current=a;let{ref:q,setValue:B}=reactImask.useIMask({mask:Fe,lazy:true,overwrite:false},{onComplete:s=>{let C=T__default.default(s,X,true);C.isValid()&&S.current(C.toDate())&&g.current?.(C.toDate());}}),ie=s=>{r?.(s),B(I(s)),w(false);},se=s=>{let C=s.clipboardData.getData("text").trim(),E=T__default.default(C,X,true);if(E.isValid()&&a(E.toDate())){s.preventDefault();let J=E.toDate();r?.(J),B(I(J));}},pe=()=>{B(I(e));},le=()=>{let s=q.current?.value??"";if(s===""){e!==void 0&&r?.(void 0);return}let C=T__default.default(s,X,true);C.isValid()&&a(C.toDate())&&r?.(C.toDate()),B(I(e));},me=chunkQRO22BPZ_cjs.a(chunkUIJEPPNJ_cjs.a(),f&&"pl-10",v?"border-dark-green":"",n);return jsxRuntime.jsxs(chunkSV7GB6CH_cjs.a,{open:!t&&v,onOpenChange:w,children:[jsxRuntime.jsx(chunkSV7GB6CH_cjs.b,{asChild:true,children:jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative flex w-full items-center rounded-md",o),children:[m?jsxRuntime.jsx("input",{ref:q,defaultValue:I(e),className:me,placeholder:i,disabled:t,onFocus:pe,onPaste:se,onBlur:s=>{le(),D?.onBlur?.(s);}}):jsxRuntime.jsx(chunkUIJEPPNJ_cjs.b,{className:chunkQRO22BPZ_cjs.a(f&&"pl-10",v?"border-dark-green":"",n),...D,value:I(e),placeholder:i,readOnly:true,disabled:t}),f&&jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2",t?"text-gray-400":"cursor-pointer text-black"),children:jsxRuntime.jsx(lu.LuCalendar,{size:16})})]})}),jsxRuntime.jsx(chunkSV7GB6CH_cjs.c,{className:"w-auto overflow-hidden p-0",align:"start",onOpenAutoFocus:m?s=>s.preventDefault():void 0,children:jsxRuntime.jsx(chunkDJ5RP6A2_cjs.b,{mode:"single",selected:e?T__default.default(e).toDate():void 0,onSelect:ie,...m?{month:b,onMonthChange:d}:{},...p})})]})}exports.a=Ie;exports.b=De;exports.c=Pe;exports.d=oe;exports.e=Qe;//# sourceMappingURL=chunk-O7A6NMSW.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-O7A6NMSW.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/date-picker/date-picker-input.tsx","../src/v2/image-preview/image-preview.tsx","../src/v2/time-select/time-select.tsx","../src/v2/date-picker/date-picker.tsx"],"names":["maskDate","value","digits","parseDate","parts","month","day","year","date","DatePickerInput","className","wrapperClassName","onChange","disabled","calendarProps","placeholder","variant","open","setOpen","useState","setMonth","inputValue","setInputValue","dayjs","lastSyncedRef","useRef","useEffect","formatted","handleInputChange","e","masked","parsed","handleKeyDown","jsxs","cn","jsx","inputVariants","Popover","PopoverTrigger","Button","LuCalendar","PopoverContent","Calendar","d","ImagePreview","alt","containerClassName","imagePreview","cropper","loaded","setLoaded","showLoader","enableCrop","Cropper","LuZoomOut","Slider","v","LuZoomIn","LuRefreshCcw","START_TIME_DEFAULT","END_TIME_DEFAULT","isValidTime","time","DateTime","TimeSelect","startTime","endTime","interval","size","portal","inputProps","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","options","Select","SelectTrigger","SelectValue","SelectContent","option","SelectItem","time_select_default","customParseFormat","DISPLAY_FORMAT","INPUT_MASK","ACCEPTED_INPUT_FORMATS","formatDate","DatePicker","placeholderProp","showCalendarIcon","editable","navigatedMonth","setNavigatedMonth","prevValueForMonth","calendarMonth","isDateAllowed","isMatch","onChangeRef","isDateAllowedRef","maskRef","setMaskValue","useIMask","maskedValue","handleSelect","val","handlePaste","pasted","handleFocus","handleBlur","current","inputClasses","Input"],"mappings":"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","file":"chunk-HP66FPW5.cjs","sourcesContent":["import * as React from 'react';\nimport { ComponentProps, useEffect, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport { Calendar, Button, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '../input/input';\n\nfunction maskDate(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 8);\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n}\n\nfunction parseDate(value: string): Date | undefined {\n if (value.length !== 10) return undefined;\n const parts = value.split('/');\n if (parts.length !== 3 || parts[2].length !== 4) return undefined;\n const month = parseInt(parts[0], 10);\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n if (Number.isNaN(month) || Number.isNaN(day) || Number.isNaN(year)) return undefined;\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return undefined;\n }\n return date;\n}\n\nexport type DatePickerInputProps = {\n className?: string;\n wrapperClassName?: string;\n value?: Date;\n onChange?: (value: Date | undefined) => void;\n disabled?: boolean;\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n placeholder?: string;\n variant?: 'default' | 'invalid';\n};\n\nexport function DatePickerInput({\n className,\n wrapperClassName,\n value,\n onChange,\n disabled = false,\n calendarProps,\n placeholder = 'MM/DD/YYYY',\n variant,\n}: DatePickerInputProps) {\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState<Date | undefined>(value);\n const [inputValue, setInputValue] = useState<string>(\n value ? dayjs(value).format('MM/DD/YYYY') : '',\n );\n // Track the last value we synced from props to avoid overwriting partial user input\n const lastSyncedRef = useRef(value ? dayjs(value).format('MM/DD/YYYY') : '');\n\n useEffect(() => {\n const formatted = value ? dayjs(value).format('MM/DD/YYYY') : '';\n if (formatted !== lastSyncedRef.current) {\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n if (value) setMonth(value);\n }\n }, [value]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const masked = maskDate(e.target.value);\n setInputValue(masked);\n const parsed = parseDate(masked);\n if (parsed) {\n lastSyncedRef.current = masked;\n onChange?.(parsed);\n } else if (masked === '') {\n lastSyncedRef.current = '';\n onChange?.(undefined);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n }\n if (\n !/[0-9/]/.test(e.key) &&\n !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'Tab'].includes(e.key) &&\n !e.metaKey &&\n !e.ctrlKey\n ) {\n e.preventDefault();\n }\n };\n\n return (\n <div className={cn('relative w-full', wrapperClassName)}>\n <input\n type=\"text\"\n data-slot=\"input\"\n className={cn(inputVariants({ variant }), 'pr-10', className)}\n value={inputValue}\n placeholder={placeholder}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n />\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost-icon\"\n size=\"sm\"\n className=\"absolute top-1/2 right-1 -translate-y-1/2\"\n disabled={disabled}\n aria-label=\"Select date\"\n type=\"button\"\n >\n <LuCalendar />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"end\" sideOffset={10}>\n <Calendar\n mode=\"single\"\n selected={value}\n month={month}\n onMonthChange={setMonth}\n onSelect={(d) => {\n const formatted = d ? dayjs(d).format('MM/DD/YYYY') : '';\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n onChange?.(d);\n setOpen(false);\n }}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","import { useState } from 'react';\nimport { LuRefreshCcw, LuZoomIn, LuZoomOut } from 'react-icons/lu';\nimport Cropper from 'react-easy-crop';\nimport { Button, Slider } from '../index';\nimport type { UseImageCropper } from './useImageCropper';\nimport { cn } from '@/lib/utils';\n\nexport type ImagePreviewProps = {\n alt: string;\n className?: string;\n containerClassName?: string;\n imagePreview?: string; // optional so we can show skeleton while awaiting URL\n cropper?: UseImageCropper; // when provided, show cropping UI\n};\n\nexport const ImagePreview = ({\n alt,\n className = '',\n containerClassName = '',\n imagePreview = undefined,\n cropper = undefined,\n}: ImagePreviewProps) => {\n const [loaded, setLoaded] = useState(false);\n const showLoader = !imagePreview || !loaded;\n const enableCrop = !!cropper;\n\n return (\n <div className={cn(`flex max-w-[386px] flex-col`, className)}>\n <div className={cn('relative h-60 rounded-md border', containerClassName)}>\n {imagePreview && enableCrop ? (\n <Cropper\n image={imagePreview}\n crop={cropper.crop}\n zoom={cropper.zoom}\n aspect={cropper.aspect}\n objectFit=\"contain\"\n onCropChange={cropper.setCrop}\n onZoomChange={cropper.setZoom}\n onCropComplete={cropper.onCropComplete}\n onMediaLoaded={() => setLoaded(true)}\n showGrid={false}\n />\n ) : (\n imagePreview && (\n <img\n alt={alt}\n className={`m-auto h-full w-full object-contain transition-opacity duration-300 ${loaded ? 'opacity-100' : 'opacity-0'}`}\n src={imagePreview}\n onLoad={() => setLoaded(true)}\n draggable={false}\n />\n )\n )}\n\n {showLoader && (\n <div\n aria-label={imagePreview ? 'Loading image' : 'Awaiting image'}\n className=\"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r\"\n />\n )}\n </div>\n\n {!showLoader && enableCrop && (\n <div className=\"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4\">\n <div className=\"flex w-full items-center gap-3\">\n <Button\n aria-label=\"zoom out\"\n onClick={() => cropper.setZoom(Math.max(cropper.zoom - 0.1, 1))}\n className=\"h-8\"\n variant=\"ghost-icon\"\n >\n <LuZoomOut />\n </Button>\n\n <Slider\n value={[cropper.zoom]}\n min={1}\n max={3}\n step={0.01}\n onValueChange={(v: number[]) => cropper.setZoom(v[0])}\n className=\"w-full sm:flex-50\"\n classNames={{ thumb: 'border-2 border-green-800', range: 'bg-green-900' }}\n />\n\n <Button\n aria-label=\"zoom in\"\n onClick={() => cropper.setZoom(Math.min(cropper.zoom + 0.1, 3))}\n variant=\"ghost-icon\"\n className=\"h-8\"\n >\n <LuZoomIn />\n </Button>\n </div>\n\n <Button onClick={cropper.reset} variant=\"ghost\" className=\"h-8 p-2\">\n <LuRefreshCcw />\n Reset\n </Button>\n </div>\n )}\n </div>\n );\n};\n","import { DateTime, Duration } from 'luxon';\nimport { useMemo } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/v2';\nimport { cn } from '@/lib/utils';\n\nexport type Interval = {\n label: string;\n value: {\n hour: string;\n min: string;\n raw: string;\n formatted: string;\n };\n};\n\ntype Props = {\n startTime?: string;\n endTime?: string;\n interval?: number;\n onChange?: (e: Interval) => void;\n className?: string;\n placeholder?: string;\n size?: 'default' | 'sm';\n portal?: boolean;\n [inputProps: string]: unknown;\n};\n\nconst START_TIME_DEFAULT = '00:00';\nconst END_TIME_DEFAULT = '24:00';\n\nconst isValidTime = (time: string) => {\n const dt = DateTime.fromFormat(time, 'HH:mm');\n return dt.isValid;\n};\n\nexport const TimeSelect = ({\n startTime = START_TIME_DEFAULT,\n endTime = END_TIME_DEFAULT,\n interval = 30,\n onChange = undefined,\n className = '',\n placeholder = 'Select one',\n size = 'default',\n portal = true,\n ...inputProps\n}: Props) => {\n if (!isValidTime(startTime)) {\n console.error(`Invalid startTime: ${startTime}`);\n // eslint-disable-next-line no-param-reassign\n startTime = START_TIME_DEFAULT;\n }\n if (!isValidTime(endTime)) {\n console.error(`Invalid endTime: ${endTime}`);\n // eslint-disable-next-line no-param-reassign\n endTime = END_TIME_DEFAULT;\n }\n\n const intervals = useMemo((): Interval[] => {\n const dtEnd = DateTime.fromFormat(endTime, 'HH:mm');\n const durationInterval = Duration.fromObject({ minutes: interval });\n const res = [];\n let i = DateTime.fromFormat(startTime, 'HH:mm');\n while (i <= dtEnd) {\n let raw = i.toFormat('HH:mm');\n // Avoid duplicate keys for \"00:00\" and \"00:00\" (end of day)\n if (raw === '00:00' && i.equals(dtEnd)) raw = '24:00';\n\n res.push({\n label: i.toFormat('h:mm a'),\n value: {\n hour: i.toFormat('HH'),\n min: i.toFormat('mm'),\n raw,\n formatted: i.toFormat('h:mm a'),\n },\n });\n i = i.plus(durationInterval);\n }\n\n return res;\n }, [startTime, endTime, interval]);\n\n const options = intervals.map((time) => ({\n label: time.label,\n value: time.value.raw,\n }));\n\n const handleOnSelect = (e: unknown) => {\n const interval = intervals.find((time) => time.value.raw === e);\n\n if (!interval) return;\n\n onChange?.(interval);\n };\n\n return (\n <Select onValueChange={handleOnSelect} {...inputProps}>\n <SelectTrigger className={cn('max-w-[240px] md:w-[150px]', className)} size={size}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {options.map((option) => (\n // Note that labels and values here may appear to be duplicates\n // For example, \"00:00\" and \"24:00\" will both have the same value \"00:00\"\n <SelectItem className=\"h-10\" key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n","import { ComponentProps, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport { useIMask } from 'react-imask';\nimport { isMatch } from 'react-day-picker';\nimport { Calendar, Input, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '@/v2/input/input';\nimport type { InputProps } from '@/v2/input/input';\n\ndayjs.extend(customParseFormat);\n\n/** Display and input format for dates. Also used as the placeholder when `editable` is true. */\nconst DISPLAY_FORMAT = 'MM/DD/YYYY';\n\n/** IMask pattern — each `0` is a required digit, slashes are fixed literals. */\nconst INPUT_MASK = '00/00/0000';\n\n/**\n * Formats accepted when parsing typed or pasted input (dayjs strict mode).\n * Ordered from most specific to least specific to avoid ambiguous matches.\n */\nconst ACCEPTED_INPUT_FORMATS = ['MM/DD/YYYY', 'MM/D/YYYY', 'M/DD/YYYY', 'M/D/YYYY', 'YYYY-MM-DD'];\n\nexport type DatePickerProps = {\n /** Additional class name(s) applied to the input element. */\n className?: string;\n /** Additional class name(s) applied to the outer popover trigger wrapper. */\n wrapperClassName?: string;\n /** The currently selected date. `undefined` means no date is selected. */\n value?: Date;\n /** Called when the selected date changes. Receives `undefined` when the date is cleared. */\n onChange?: (value: Date | undefined) => void;\n /** When `true`, the picker is non-interactive. */\n disabled?: boolean;\n /**\n * Props forwarded to the underlying `Calendar` component (react-day-picker).\n * Use `disabled` within this object to restrict selectable dates — these\n * constraints apply to both calendar clicks and typed input when `editable` is `true`.\n *\n * @example\n * ```tsx\n * <DatePicker calendarProps={{ disabled: [{ before: new Date() }] }} />\n * ```\n */\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n /**\n * Input placeholder text. Defaults to `\"Pick a date\"` in read-only mode\n * and `\"MM/DD/YYYY\"` when `editable` is `true`.\n */\n placeholder?: string;\n /** Props forwarded to the underlying `Input` component. */\n inputProps?: InputProps;\n /** Whether to show the calendar icon inside the input. @default true */\n showCalendarIcon?: boolean;\n /**\n * When `true`, the input accepts typed and pasted dates in `MM/DD/YYYY` format.\n * Slashes are auto-inserted, non-numeric characters are rejected, and common\n * formats like `M/D/YYYY` and `YYYY-MM-DD` are accepted on paste.\n * Dates that fall in `calendarProps.disabled` ranges are rejected.\n *\n * When `false` (default), the input is read-only and dates can only be\n * selected via the calendar popover.\n *\n * @default false\n */\n editable?: boolean;\n};\n\nfunction formatDate(date: Date | undefined): string {\n return date ? dayjs(date).format(DISPLAY_FORMAT) : '';\n}\n\n/**\n * A date picker that combines a text input with a calendar popover.\n *\n * By default the input is read-only — dates are selected via the calendar.\n * Set `editable` to allow typing or pasting dates in `MM/DD/YYYY` format.\n */\nexport function DatePicker({\n className = '',\n wrapperClassName = '',\n value = undefined,\n onChange = undefined,\n disabled = false,\n calendarProps = undefined,\n placeholder: placeholderProp,\n inputProps = undefined,\n showCalendarIcon = true,\n editable = false,\n}: DatePickerProps) {\n const [open, setOpen] = useState(false);\n const placeholder = placeholderProp ?? (editable ? DISPLAY_FORMAT : 'Pick a date');\n\n // Calendar month: derived from value, with user navigation override.\n // When value changes, navigation resets to the new value's month.\n const [navigatedMonth, setNavigatedMonth] = useState<Date | undefined>(undefined);\n const prevValueForMonth = useRef(value);\n if (value !== prevValueForMonth.current) {\n prevValueForMonth.current = value;\n if (navigatedMonth !== undefined) {\n setNavigatedMonth(undefined);\n }\n }\n const calendarMonth = navigatedMonth ?? value;\n\n const isDateAllowed = (date: Date): boolean => {\n if (!calendarProps?.disabled) {\n return true;\n }\n return !isMatch(date, calendarProps.disabled);\n };\n\n // Refs ensure IMask callbacks always see the latest values without re-creating the mask\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const isDateAllowedRef = useRef(isDateAllowed);\n isDateAllowedRef.current = isDateAllowed;\n\n const { ref: maskRef, setValue: setMaskValue } = useIMask<HTMLInputElement>(\n { mask: INPUT_MASK, lazy: true, overwrite: false },\n {\n onComplete: (maskedValue) => {\n const parsed = dayjs(maskedValue, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowedRef.current(parsed.toDate())) {\n onChangeRef.current?.(parsed.toDate());\n }\n },\n },\n );\n\n const handleSelect = (val: Date | undefined) => {\n onChange?.(val);\n setMaskValue(formatDate(val));\n setOpen(false);\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pasted = e.clipboardData.getData('text').trim();\n const parsed = dayjs(pasted, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n e.preventDefault();\n const date = parsed.toDate();\n onChange?.(date);\n setMaskValue(formatDate(date));\n }\n // If we can't parse it, let IMask handle it naturally\n };\n\n const handleFocus = () => {\n // Sync the mask to the current value on focus — handles external parent resets\n setMaskValue(formatDate(value));\n };\n\n const handleBlur = () => {\n const current = maskRef.current?.value ?? '';\n if (current === '') {\n if (value !== undefined) {\n onChange?.(undefined);\n }\n return;\n }\n const parsed = dayjs(current, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n onChange?.(parsed.toDate());\n }\n // Revert to last valid display value\n setMaskValue(formatDate(value));\n };\n\n const inputClasses = cn(\n inputVariants(),\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n );\n\n return (\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <div className={cn('relative flex w-full items-center rounded-md', wrapperClassName)}>\n {editable ? (\n <input\n ref={maskRef}\n defaultValue={formatDate(value)}\n className={inputClasses}\n placeholder={placeholder}\n disabled={disabled}\n onFocus={handleFocus}\n onPaste={handlePaste}\n onBlur={(e) => {\n handleBlur();\n inputProps?.onBlur?.(e);\n }}\n />\n ) : (\n <Input\n className={cn(\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n )}\n {...inputProps}\n value={formatDate(value)}\n placeholder={placeholder}\n readOnly\n disabled={disabled}\n />\n )}\n {showCalendarIcon && (\n <div\n className={cn(\n 'absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2',\n disabled ? 'text-gray-400' : 'cursor-pointer text-black',\n )}\n >\n <LuCalendar size={16} />\n </div>\n )}\n </div>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-auto overflow-hidden p-0\"\n align=\"start\"\n onOpenAutoFocus={editable ? (e) => e.preventDefault() : undefined}\n >\n <Calendar\n mode=\"single\"\n selected={value ? dayjs(value).toDate() : undefined}\n onSelect={handleSelect}\n {...(editable ? { month: calendarMonth, onMonthChange: setNavigatedMonth } : {})}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/v2/date-picker/date-picker-input.tsx","../src/v2/image-preview/image-preview.tsx","../src/v2/time-select/time-select.tsx","../src/v2/date-picker/date-picker.tsx"],"names":["maskDate","value","digits","parseDate","parts","month","day","year","date","DatePickerInput","className","wrapperClassName","onChange","disabled","calendarProps","placeholder","variant","open","setOpen","useState","setMonth","inputValue","setInputValue","dayjs","lastSyncedRef","useRef","useEffect","formatted","handleInputChange","e","masked","parsed","handleKeyDown","jsxs","cn","jsx","inputVariants","Popover","PopoverTrigger","Button","LuCalendar","PopoverContent","Calendar","d","ImagePreview","alt","containerClassName","imagePreview","cropper","loaded","setLoaded","showLoader","enableCrop","Cropper","LuZoomOut","Slider","v","LuZoomIn","LuRefreshCcw","START_TIME_DEFAULT","END_TIME_DEFAULT","isValidTime","time","DateTime","TimeSelect","startTime","endTime","interval","size","portal","inputProps","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","options","Select","SelectTrigger","SelectValue","SelectContent","option","SelectItem","time_select_default","customParseFormat","DISPLAY_FORMAT","INPUT_MASK","ACCEPTED_INPUT_FORMATS","formatDate","DatePicker","placeholderProp","showCalendarIcon","editable","navigatedMonth","setNavigatedMonth","prevValueForMonth","calendarMonth","isDateAllowed","isMatch","onChangeRef","isDateAllowedRef","maskRef","setMaskValue","useIMask","maskedValue","handleSelect","val","handlePaste","pasted","handleFocus","handleBlur","current","inputClasses","Input"],"mappings":"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","file":"chunk-O7A6NMSW.cjs","sourcesContent":["import * as React from 'react';\nimport { ComponentProps, useEffect, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport { Calendar, Button, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '../input/input';\n\nfunction maskDate(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 8);\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n}\n\nfunction parseDate(value: string): Date | undefined {\n if (value.length !== 10) return undefined;\n const parts = value.split('/');\n if (parts.length !== 3 || parts[2].length !== 4) return undefined;\n const month = parseInt(parts[0], 10);\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n if (Number.isNaN(month) || Number.isNaN(day) || Number.isNaN(year)) return undefined;\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return undefined;\n }\n return date;\n}\n\nexport type DatePickerInputProps = {\n className?: string;\n wrapperClassName?: string;\n value?: Date;\n onChange?: (value: Date | undefined) => void;\n disabled?: boolean;\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n placeholder?: string;\n variant?: 'default' | 'invalid';\n};\n\nexport function DatePickerInput({\n className,\n wrapperClassName,\n value,\n onChange,\n disabled = false,\n calendarProps,\n placeholder = 'MM/DD/YYYY',\n variant,\n}: DatePickerInputProps) {\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState<Date | undefined>(value);\n const [inputValue, setInputValue] = useState<string>(\n value ? dayjs(value).format('MM/DD/YYYY') : '',\n );\n // Track the last value we synced from props to avoid overwriting partial user input\n const lastSyncedRef = useRef(value ? dayjs(value).format('MM/DD/YYYY') : '');\n\n useEffect(() => {\n const formatted = value ? dayjs(value).format('MM/DD/YYYY') : '';\n if (formatted !== lastSyncedRef.current) {\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n if (value) setMonth(value);\n }\n }, [value]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const masked = maskDate(e.target.value);\n setInputValue(masked);\n const parsed = parseDate(masked);\n if (parsed) {\n lastSyncedRef.current = masked;\n onChange?.(parsed);\n } else if (masked === '') {\n lastSyncedRef.current = '';\n onChange?.(undefined);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n }\n if (\n !/[0-9/]/.test(e.key) &&\n !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'Tab'].includes(e.key) &&\n !e.metaKey &&\n !e.ctrlKey\n ) {\n e.preventDefault();\n }\n };\n\n return (\n <div className={cn('relative w-full', wrapperClassName)}>\n <input\n type=\"text\"\n data-slot=\"input\"\n className={cn(inputVariants({ variant }), 'pr-10', className)}\n value={inputValue}\n placeholder={placeholder}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n />\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost-icon\"\n size=\"sm\"\n className=\"absolute top-1/2 right-1 -translate-y-1/2\"\n disabled={disabled}\n aria-label=\"Select date\"\n type=\"button\"\n >\n <LuCalendar />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"end\" sideOffset={10}>\n <Calendar\n mode=\"single\"\n selected={value}\n month={month}\n onMonthChange={setMonth}\n onSelect={(d) => {\n const formatted = d ? dayjs(d).format('MM/DD/YYYY') : '';\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n onChange?.(d);\n setOpen(false);\n }}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","import { useState } from 'react';\nimport { LuRefreshCcw, LuZoomIn, LuZoomOut } from 'react-icons/lu';\nimport Cropper from 'react-easy-crop';\nimport { Button, Slider } from '../index';\nimport type { UseImageCropper } from './useImageCropper';\nimport { cn } from '@/lib/utils';\n\nexport type ImagePreviewProps = {\n alt: string;\n className?: string;\n containerClassName?: string;\n imagePreview?: string; // optional so we can show skeleton while awaiting URL\n cropper?: UseImageCropper; // when provided, show cropping UI\n};\n\nexport const ImagePreview = ({\n alt,\n className = '',\n containerClassName = '',\n imagePreview = undefined,\n cropper = undefined,\n}: ImagePreviewProps) => {\n const [loaded, setLoaded] = useState(false);\n const showLoader = !imagePreview || !loaded;\n const enableCrop = !!cropper;\n\n return (\n <div className={cn(`flex max-w-[386px] flex-col`, className)}>\n <div className={cn('relative h-60 rounded-md border', containerClassName)}>\n {imagePreview && enableCrop ? (\n <Cropper\n image={imagePreview}\n crop={cropper.crop}\n zoom={cropper.zoom}\n aspect={cropper.aspect}\n objectFit=\"contain\"\n onCropChange={cropper.setCrop}\n onZoomChange={cropper.setZoom}\n onCropComplete={cropper.onCropComplete}\n onMediaLoaded={() => setLoaded(true)}\n showGrid={false}\n />\n ) : (\n imagePreview && (\n <img\n alt={alt}\n className={`m-auto h-full w-full object-contain transition-opacity duration-300 ${loaded ? 'opacity-100' : 'opacity-0'}`}\n src={imagePreview}\n onLoad={() => setLoaded(true)}\n draggable={false}\n />\n )\n )}\n\n {showLoader && (\n <div\n aria-label={imagePreview ? 'Loading image' : 'Awaiting image'}\n className=\"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r\"\n />\n )}\n </div>\n\n {!showLoader && enableCrop && (\n <div className=\"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4\">\n <div className=\"flex w-full items-center gap-3\">\n <Button\n aria-label=\"zoom out\"\n onClick={() => cropper.setZoom(Math.max(cropper.zoom - 0.1, 1))}\n className=\"h-8\"\n variant=\"ghost-icon\"\n >\n <LuZoomOut />\n </Button>\n\n <Slider\n value={[cropper.zoom]}\n min={1}\n max={3}\n step={0.01}\n onValueChange={(v: number[]) => cropper.setZoom(v[0])}\n className=\"w-full sm:flex-50\"\n classNames={{ thumb: 'border-2 border-green-800', range: 'bg-green-900' }}\n />\n\n <Button\n aria-label=\"zoom in\"\n onClick={() => cropper.setZoom(Math.min(cropper.zoom + 0.1, 3))}\n variant=\"ghost-icon\"\n className=\"h-8\"\n >\n <LuZoomIn />\n </Button>\n </div>\n\n <Button onClick={cropper.reset} variant=\"ghost\" className=\"h-8 p-2\">\n <LuRefreshCcw />\n Reset\n </Button>\n </div>\n )}\n </div>\n );\n};\n","import { DateTime, Duration } from 'luxon';\nimport { useMemo } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/v2';\nimport { cn } from '@/lib/utils';\n\nexport type Interval = {\n label: string;\n value: {\n hour: string;\n min: string;\n raw: string;\n formatted: string;\n };\n};\n\ntype Props = {\n startTime?: string;\n endTime?: string;\n interval?: number;\n onChange?: (e: Interval) => void;\n className?: string;\n placeholder?: string;\n size?: 'default' | 'sm';\n portal?: boolean;\n [inputProps: string]: unknown;\n};\n\nconst START_TIME_DEFAULT = '00:00';\nconst END_TIME_DEFAULT = '24:00';\n\nconst isValidTime = (time: string) => {\n const dt = DateTime.fromFormat(time, 'HH:mm');\n return dt.isValid;\n};\n\nexport const TimeSelect = ({\n startTime = START_TIME_DEFAULT,\n endTime = END_TIME_DEFAULT,\n interval = 30,\n onChange = undefined,\n className = '',\n placeholder = 'Select one',\n size = 'default',\n portal = true,\n ...inputProps\n}: Props) => {\n if (!isValidTime(startTime)) {\n console.error(`Invalid startTime: ${startTime}`);\n // eslint-disable-next-line no-param-reassign\n startTime = START_TIME_DEFAULT;\n }\n if (!isValidTime(endTime)) {\n console.error(`Invalid endTime: ${endTime}`);\n // eslint-disable-next-line no-param-reassign\n endTime = END_TIME_DEFAULT;\n }\n\n const intervals = useMemo((): Interval[] => {\n const dtEnd = DateTime.fromFormat(endTime, 'HH:mm');\n const durationInterval = Duration.fromObject({ minutes: interval });\n const res = [];\n let i = DateTime.fromFormat(startTime, 'HH:mm');\n while (i <= dtEnd) {\n let raw = i.toFormat('HH:mm');\n // Avoid duplicate keys for \"00:00\" and \"00:00\" (end of day)\n if (raw === '00:00' && i.equals(dtEnd)) raw = '24:00';\n\n res.push({\n label: i.toFormat('h:mm a'),\n value: {\n hour: i.toFormat('HH'),\n min: i.toFormat('mm'),\n raw,\n formatted: i.toFormat('h:mm a'),\n },\n });\n i = i.plus(durationInterval);\n }\n\n return res;\n }, [startTime, endTime, interval]);\n\n const options = intervals.map((time) => ({\n label: time.label,\n value: time.value.raw,\n }));\n\n const handleOnSelect = (e: unknown) => {\n const interval = intervals.find((time) => time.value.raw === e);\n\n if (!interval) return;\n\n onChange?.(interval);\n };\n\n return (\n <Select onValueChange={handleOnSelect} {...inputProps}>\n <SelectTrigger className={cn('max-w-[240px] md:w-[150px]', className)} size={size}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {options.map((option) => (\n // Note that labels and values here may appear to be duplicates\n // For example, \"00:00\" and \"24:00\" will both have the same value \"00:00\"\n <SelectItem className=\"h-10\" key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n","import { ComponentProps, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport { useIMask } from 'react-imask';\nimport { isMatch } from 'react-day-picker';\nimport { Calendar, Input, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '@/v2/input/input';\nimport type { InputProps } from '@/v2/input/input';\n\ndayjs.extend(customParseFormat);\n\n/** Display and input format for dates. Also used as the placeholder when `editable` is true. */\nconst DISPLAY_FORMAT = 'MM/DD/YYYY';\n\n/** IMask pattern — each `0` is a required digit, slashes are fixed literals. */\nconst INPUT_MASK = '00/00/0000';\n\n/**\n * Formats accepted when parsing typed or pasted input (dayjs strict mode).\n * Ordered from most specific to least specific to avoid ambiguous matches.\n */\nconst ACCEPTED_INPUT_FORMATS = ['MM/DD/YYYY', 'MM/D/YYYY', 'M/DD/YYYY', 'M/D/YYYY', 'YYYY-MM-DD'];\n\nexport type DatePickerProps = {\n /** Additional class name(s) applied to the input element. */\n className?: string;\n /** Additional class name(s) applied to the outer popover trigger wrapper. */\n wrapperClassName?: string;\n /** The currently selected date. `undefined` means no date is selected. */\n value?: Date;\n /** Called when the selected date changes. Receives `undefined` when the date is cleared. */\n onChange?: (value: Date | undefined) => void;\n /** When `true`, the picker is non-interactive. */\n disabled?: boolean;\n /**\n * Props forwarded to the underlying `Calendar` component (react-day-picker).\n * Use `disabled` within this object to restrict selectable dates — these\n * constraints apply to both calendar clicks and typed input when `editable` is `true`.\n *\n * @example\n * ```tsx\n * <DatePicker calendarProps={{ disabled: [{ before: new Date() }] }} />\n * ```\n */\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n /**\n * Input placeholder text. Defaults to `\"Pick a date\"` in read-only mode\n * and `\"MM/DD/YYYY\"` when `editable` is `true`.\n */\n placeholder?: string;\n /** Props forwarded to the underlying `Input` component. */\n inputProps?: InputProps;\n /** Whether to show the calendar icon inside the input. @default true */\n showCalendarIcon?: boolean;\n /**\n * When `true`, the input accepts typed and pasted dates in `MM/DD/YYYY` format.\n * Slashes are auto-inserted, non-numeric characters are rejected, and common\n * formats like `M/D/YYYY` and `YYYY-MM-DD` are accepted on paste.\n * Dates that fall in `calendarProps.disabled` ranges are rejected.\n *\n * When `false` (default), the input is read-only and dates can only be\n * selected via the calendar popover.\n *\n * @default false\n */\n editable?: boolean;\n};\n\nfunction formatDate(date: Date | undefined): string {\n return date ? dayjs(date).format(DISPLAY_FORMAT) : '';\n}\n\n/**\n * A date picker that combines a text input with a calendar popover.\n *\n * By default the input is read-only — dates are selected via the calendar.\n * Set `editable` to allow typing or pasting dates in `MM/DD/YYYY` format.\n */\nexport function DatePicker({\n className = '',\n wrapperClassName = '',\n value = undefined,\n onChange = undefined,\n disabled = false,\n calendarProps = undefined,\n placeholder: placeholderProp,\n inputProps = undefined,\n showCalendarIcon = true,\n editable = false,\n}: DatePickerProps) {\n const [open, setOpen] = useState(false);\n const placeholder = placeholderProp ?? (editable ? DISPLAY_FORMAT : 'Pick a date');\n\n // Calendar month: derived from value, with user navigation override.\n // When value changes, navigation resets to the new value's month.\n const [navigatedMonth, setNavigatedMonth] = useState<Date | undefined>(undefined);\n const prevValueForMonth = useRef(value);\n if (value !== prevValueForMonth.current) {\n prevValueForMonth.current = value;\n if (navigatedMonth !== undefined) {\n setNavigatedMonth(undefined);\n }\n }\n const calendarMonth = navigatedMonth ?? value;\n\n const isDateAllowed = (date: Date): boolean => {\n if (!calendarProps?.disabled) {\n return true;\n }\n return !isMatch(date, calendarProps.disabled);\n };\n\n // Refs ensure IMask callbacks always see the latest values without re-creating the mask\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const isDateAllowedRef = useRef(isDateAllowed);\n isDateAllowedRef.current = isDateAllowed;\n\n const { ref: maskRef, setValue: setMaskValue } = useIMask<HTMLInputElement>(\n { mask: INPUT_MASK, lazy: true, overwrite: false },\n {\n onComplete: (maskedValue) => {\n const parsed = dayjs(maskedValue, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowedRef.current(parsed.toDate())) {\n onChangeRef.current?.(parsed.toDate());\n }\n },\n },\n );\n\n const handleSelect = (val: Date | undefined) => {\n onChange?.(val);\n setMaskValue(formatDate(val));\n setOpen(false);\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pasted = e.clipboardData.getData('text').trim();\n const parsed = dayjs(pasted, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n e.preventDefault();\n const date = parsed.toDate();\n onChange?.(date);\n setMaskValue(formatDate(date));\n }\n // If we can't parse it, let IMask handle it naturally\n };\n\n const handleFocus = () => {\n // Sync the mask to the current value on focus — handles external parent resets\n setMaskValue(formatDate(value));\n };\n\n const handleBlur = () => {\n const current = maskRef.current?.value ?? '';\n if (current === '') {\n if (value !== undefined) {\n onChange?.(undefined);\n }\n return;\n }\n const parsed = dayjs(current, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n onChange?.(parsed.toDate());\n }\n // Revert to last valid display value\n setMaskValue(formatDate(value));\n };\n\n const inputClasses = cn(\n inputVariants(),\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n );\n\n return (\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <div className={cn('relative flex w-full items-center rounded-md', wrapperClassName)}>\n {editable ? (\n <input\n ref={maskRef}\n defaultValue={formatDate(value)}\n className={inputClasses}\n placeholder={placeholder}\n disabled={disabled}\n onFocus={handleFocus}\n onPaste={handlePaste}\n onBlur={(e) => {\n handleBlur();\n inputProps?.onBlur?.(e);\n }}\n />\n ) : (\n <Input\n className={cn(\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n )}\n {...inputProps}\n value={formatDate(value)}\n placeholder={placeholder}\n readOnly\n disabled={disabled}\n />\n )}\n {showCalendarIcon && (\n <div\n className={cn(\n 'absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2',\n disabled ? 'text-gray-400' : 'cursor-pointer text-black',\n )}\n >\n <LuCalendar size={16} />\n </div>\n )}\n </div>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-auto overflow-hidden p-0\"\n align=\"start\"\n onOpenAutoFocus={editable ? (e) => e.preventDefault() : undefined}\n >\n <Calendar\n mode=\"single\"\n selected={value ? dayjs(value).toDate() : undefined}\n onSelect={handleSelect}\n {...(editable ? { month: calendarMonth, onMonthChange: setNavigatedMonth } : {})}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n );\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a}from'./chunk-Z2IHO2AX.js';import {a as a$1}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a}from'./chunk-Z2IHO2AX.js';import {a as a$1}from'./chunk-XOWSDMW5.js';import {d,h}from'./chunk-STIYYCSL.js';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var g=({uniqueId:t,open:p,loading:l,options:o,selected:c,toggleOption:a$2,onSearch:d$1,scrollbarRef:r,inputRef:f,emptyIndicator:R,loadingIndicator:n,selectFirstItem:M})=>jsx("div",{className:"relative",children:p&&jsx(d,{id:t,className:"bg-popover text-popover-foreground animate-in absolute top-1 z-10 w-full rounded-md border shadow-xs outline-none",onMouseLeave:()=>{r.current=false;},onMouseEnter:()=>{r.current=true;},onMouseUp:()=>{f?.current?.focus();},children:l&&n?n:jsxs(Fragment,{children:[jsx(a,{onSearch:d$1,options:o,emptyIndicator:R}),!M&&jsx(h,{value:"-",className:"hidden"}),jsx(a$1,{options:o,uniqueId:t,selected:c,toggleOption:a$2})]})})});export{g as a};//# sourceMappingURL=chunk-OYN4D5J3.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-OYN4D5J3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/multiselect/components/MultiSelectDropdown.tsx"],"names":["MultiSelectDropdown","uniqueId","open","loading","options","selected","toggleOption","onSearch","scrollbarRef","inputRef","emptyIndicator","loadingIndicator","selectFirstItem","jsx","CommandList","jsxs","Fragment","EmptyItem","CommandItem","MultiSelectCommandGroup"],"mappings":"uKAgBO,IAAMA,CAAAA,CAAsB,CAAC,CAClC,QAAA,CAAAC,CAAAA,CACA,KAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,YAAA,CAAAC,GAAAA,CACA,QAAA,CAAAC,GAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CACF,CAAA,GAEIC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UAAA,CACZ,QAAA,CAAAX,GACCW,GAAAA,CAACC,CAAAA,CAAA,CACC,EAAA,CAAIb,CAAAA,CACJ,SAAA,CAAU,mHAAA,CACV,YAAA,CAAc,IAAM,CAElBO,CAAAA,CAAa,OAAA,CAAU,MAEzB,CAAA,CACA,aAAc,IAAM,CAElBA,CAAAA,CAAa,OAAA,CAAU,KAEzB,CAAA,CACA,UAAW,IAAM,CACfC,CAAAA,EAAU,OAAA,EAAS,KAAA,GACrB,EAEC,QAAA,CAAAN,CAAAA,EAAWQ,CAAAA,CACVA,CAAAA,CAEAI,IAAAA,CAAAC,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAH,GAAAA,CAACI,CAAAA,CAAA,CAAgB,QAAA,CAAAV,GAAAA,CAAU,OAAA,CAAAH,EAAS,cAAA,CAAAM,CAAAA,CAAkB,CAAA,CACrD,CAACE,CAAAA,EAAmBC,GAAAA,CAACK,EAAA,CAAY,KAAA,CAAM,GAAA,CAAI,SAAA,CAAU,QAAA,CAAS,CAAA,CAC/DL,IAACM,GAAAA,CAAA,CAA8B,OAAA,CAAAf,CAAAA,CAAS,QAAA,CAAAH,CAAAA,CAAU,QAAA,CAAAI,CAAAA,CAAU,YAAA,CAAAC,GAAAA,CAAgB,CAAA,CAAA,CAC9E,CAAA,CAEJ,CAAA,CAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/v2/multiselect/components/MultiSelectDropdown.tsx"],"names":["MultiSelectDropdown","uniqueId","open","loading","options","selected","toggleOption","onSearch","scrollbarRef","inputRef","emptyIndicator","loadingIndicator","selectFirstItem","jsx","CommandList","jsxs","Fragment","EmptyItem","CommandItem","MultiSelectCommandGroup"],"mappings":"uKAgBO,IAAMA,CAAAA,CAAsB,CAAC,CAClC,QAAA,CAAAC,CAAAA,CACA,KAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,YAAA,CAAAC,GAAAA,CACA,QAAA,CAAAC,GAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CACF,CAAA,GAEIC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UAAA,CACZ,QAAA,CAAAX,GACCW,GAAAA,CAACC,CAAAA,CAAA,CACC,EAAA,CAAIb,CAAAA,CACJ,SAAA,CAAU,mHAAA,CACV,YAAA,CAAc,IAAM,CAElBO,CAAAA,CAAa,OAAA,CAAU,MAEzB,CAAA,CACA,aAAc,IAAM,CAElBA,CAAAA,CAAa,OAAA,CAAU,KAEzB,CAAA,CACA,UAAW,IAAM,CACfC,CAAAA,EAAU,OAAA,EAAS,KAAA,GACrB,EAEC,QAAA,CAAAN,CAAAA,EAAWQ,CAAAA,CACVA,CAAAA,CAEAI,IAAAA,CAAAC,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAH,GAAAA,CAACI,CAAAA,CAAA,CAAgB,QAAA,CAAAV,GAAAA,CAAU,OAAA,CAAAH,EAAS,cAAA,CAAAM,CAAAA,CAAkB,CAAA,CACrD,CAACE,CAAAA,EAAmBC,GAAAA,CAACK,EAAA,CAAY,KAAA,CAAM,GAAA,CAAI,SAAA,CAAU,QAAA,CAAS,CAAA,CAC/DL,IAACM,GAAAA,CAAA,CAA8B,OAAA,CAAAf,CAAAA,CAAS,QAAA,CAAAH,CAAAA,CAAU,QAAA,CAAAI,CAAAA,CAAU,YAAA,CAAAC,GAAAA,CAAgB,CAAA,CAAA,CAC9E,CAAA,CAEJ,CAAA,CAEJ","file":"chunk-OYN4D5J3.js","sourcesContent":["import { CommandItem, CommandList } from '@/v2/command/command';\nimport { MultiSelectProps } from '../types';\nimport { MultiSelectCommandGroup } from './MultiSelectCommandGroup';\nimport { EmptyItem } from './EmptyItem';\nimport type { UseRefsReturn } from '../hooks/useRefs';\nimport { UseMultiSelectReturn } from '../hooks/useMultiSelect';\nimport { UseInteractionsReturn } from '../hooks/useInteractions';\n\ntype Props = Pick<\n MultiSelectProps,\n 'loading' | 'loadingIndicator' | 'emptyIndicator' | 'onSearch' | 'selectFirstItem'\n> &\n Pick<UseRefsReturn, 'inputRef' | 'scrollbarRef'> &\n Pick<UseMultiSelectReturn, 'uniqueId' | 'open' | 'selected' | 'options'> &\n Pick<UseInteractionsReturn, 'toggleOption'>;\n\nexport const MultiSelectDropdown = ({\n uniqueId,\n open,\n loading,\n options,\n selected,\n toggleOption,\n onSearch,\n scrollbarRef,\n inputRef,\n emptyIndicator,\n loadingIndicator,\n selectFirstItem,\n}: Props) => {\n return (\n <div className=\"relative\">\n {open && (\n <CommandList\n id={uniqueId}\n className=\"bg-popover text-popover-foreground animate-in absolute top-1 z-10 w-full rounded-md border shadow-xs outline-none\"\n onMouseLeave={() => {\n // eslint-disable-next-line no-param-reassign\n scrollbarRef.current = false;\n // setOnScrollbar(false);\n }}\n onMouseEnter={() => {\n // eslint-disable-next-line no-param-reassign\n scrollbarRef.current = true;\n // setOnScrollbar(true);\n }}\n onMouseUp={() => {\n inputRef?.current?.focus();\n }}\n >\n {loading && loadingIndicator ? (\n loadingIndicator\n ) : (\n <>\n <EmptyItem {...{ onSearch, options, emptyIndicator }} />\n {!selectFirstItem && <CommandItem value=\"-\" className=\"hidden\" />}\n <MultiSelectCommandGroup {...{ options, uniqueId, selected, toggleOption }} />\n </>\n )}\n </CommandList>\n )}\n </div>\n );\n};\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {b}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {b}from'./chunk-SP2L5FI7.js';import {a as a$1}from'./chunk-J3GR47HY.js';import {a}from'./chunk-YTIIAU4W.js';import w,{useRef,useState,useLayoutEffect}from'react';import {useSpring,animated}from'@react-spring/web';import {LuChevronLeft,LuChevronRight}from'react-icons/lu';import {jsx,jsxs}from'react/jsx-runtime';function E({isOpen:t,drawerPosition:e,className:o,...l}){let i=e==="right"?jsx(LuChevronLeft,{}):jsx(LuChevronRight,{}),s=e==="right"?jsx(LuChevronRight,{}):jsx(LuChevronLeft,{});return jsx(b,{size:"sm",variant:"secondary-icon-rounded",className:a("absolute top-16 z-10",{"left-[-16px]":e==="right","right-[-16px]":e==="left"},o),...l,children:t?s:i})}function S({className:t="",children:e,...o}){return jsx("div",{className:a("flex h-auto w-full flex-col",t),...o,children:e})}function $({className:t="",children:e,...o}){return jsx("div",{className:a("flex h-full w-full flex-col",t),...o,children:e})}function k({className:t="",children:e,...o}){return jsx("div",{className:a("flex w-full items-end justify-between",t),...o,children:e})}function j({position:t,className:e="",children:o,isOpen:l,collapsedWidth:i="4rem",defaultWidth:s,...R}){let d=useRef(null),[c,P]=useState(0),[u,D]=useState(0),p=null,m=null,h=null,x=[];w.Children.toArray(o).forEach(a=>{if(w.isValidElement(a))switch(a.type){case E:p=a;break;case S:m=a;break;case k:h=a;break;default:x.push(a);}}),useLayoutEffect(()=>{d.current&&(D(a$1(s,d.current)),P(a$1(i,d.current)));},[i,s]);let C=useSpring({width:l?u:c,minWidth:l?u:c,config:{tension:250,friction:30}});return jsxs("div",{className:"relative flex",children:[p,jsx(animated.div,{role:"region",className:a("flex-drawer-outer relative z-1 overflow-x-hidden shadow-md",{"rounded-l-md border-l":t==="right","rounded-r-md border-r":t==="left"}),style:C,ref:d,children:jsx("div",{style:{width:`${u}px`},className:a("flex-drawer-fixed absolute top-0 h-full px-4 py-6",{"right-0":t==="left"},e),...R,children:jsxs("div",{className:a("flex-drawer-inner flex h-full flex-col transition-discrete duration-300 ease-out",{"hidden opacity-0":!l,"visible opacity-100":l}),children:[m,x,h]})})})]})}export{E as a,S as b,$ as c,k as d,j as e};//# sourceMappingURL=chunk-PVA67MWT.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-PVA67MWT.js.map
|