@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/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-6TGWLOLD.js","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-FDMT42JJ.js","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"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime');var n=classVarianceAuthority.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,size:r="default",variant:d,...o}){return jsxRuntime.jsx("div",{"data-slot":"card","data-size":r,className:chunkQRO22BPZ_cjs.a(n({variant:d}),a),...o})}function m({className:a,hideHeaderDivider:r=false,...d}){return jsxRuntime.jsx("div",{"data-slot":"card-header",className:chunkQRO22BPZ_cjs.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),...d})}function u({className:a,...r}){return jsxRuntime.jsx("div",{"data-slot":"card-title",className:chunkQRO22BPZ_cjs.a("text-base leading-snug font-bold group-data-[size=sm]/card:text-sm",a),...r})}function f({className:a,...r}){return jsxRuntime.jsx("div",{"data-slot":"card-description",className:chunkQRO22BPZ_cjs.a("text-muted-foreground text-sm",a),...r})}function g({className:a,...r}){return jsxRuntime.jsx("div",{"data-slot":"card-action",className:chunkQRO22BPZ_cjs.a("col-start-2 row-start-1 self-start justify-self-end",a),...r})}function b({className:a,...r}){return jsxRuntime.jsx("div",{"data-slot":"card-content",className:chunkQRO22BPZ_cjs.a("px-4 group-data-[size=sm]/card:px-3",a),...r})}function v({className:a,...r}){return jsxRuntime.jsx("div",{"data-slot":"card-footer",className:chunkQRO22BPZ_cjs.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),...r})}exports.a=l;exports.b=m;exports.c=u;exports.d=f;exports.e=g;exports.f=b;exports.g=v;//# sourceMappingURL=chunk-FFAC2CCY.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-FFAC2CCY.cjs.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":"sKAIA,IAAMA,CAAAA,CAAeC,0BAAAA,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,CAAAA,CAAW,IAAA,CAAAC,CAAAA,CAAO,SAAA,CAAW,OAAA,CAAAC,EAAS,GAAGC,CAAM,EAAc,CAC3E,OACEC,eAAC,KAAA,CAAA,CACC,WAAA,CAAU,MAAA,CACV,WAAA,CAAWH,CAAAA,CACX,SAAA,CAAWI,oBAAGR,CAAAA,CAAa,CAAE,QAAAK,CAAQ,CAAC,EAAGF,CAAS,CAAA,CACjD,GAAGG,CAAAA,CACN,CAEJ,CAEA,SAASG,CAAAA,CAAW,CAClB,UAAAN,CAAAA,CACA,iBAAA,CAAAO,EAAoB,KAAA,CACpB,GAAGJ,CACL,CAAA,CAAkE,CAChE,OACEC,eAAC,KAAA,CAAA,CACC,WAAA,CAAU,cACV,SAAA,CAAWC,mBAAAA,CACT,+TACAE,CAAAA,EAAqB,iCAAA,CACrBP,CACF,CAAA,CACC,GAAGG,CAAAA,CACN,CAEJ,CAEA,SAASK,EAAU,CAAE,SAAA,CAAAR,EAAW,GAAGG,CAAM,CAAA,CAAgC,CACvE,OACEC,cAAAA,CAAC,OACC,WAAA,CAAU,YAAA,CACV,UAAWC,mBAAAA,CACT,oEAAA,CACAL,CACF,CAAA,CACC,GAAGG,CAAAA,CACN,CAEJ,CAEA,SAASM,EAAgB,CAAE,SAAA,CAAAT,EAAW,GAAGG,CAAM,EAAgC,CAC7E,OACEC,cAAAA,CAAC,KAAA,CAAA,CACC,WAAA,CAAU,kBAAA,CACV,UAAWC,mBAAAA,CAAG,+BAAA,CAAiCL,CAAS,CAAA,CACvD,GAAGG,EACN,CAEJ,CAEA,SAASO,CAAAA,CAAW,CAAE,SAAA,CAAAV,EAAW,GAAGG,CAAM,EAAgC,CACxE,OACEC,eAAC,KAAA,CAAA,CACC,WAAA,CAAU,aAAA,CACV,SAAA,CAAWC,mBAAAA,CAAG,qDAAA,CAAuDL,CAAS,CAAA,CAC7E,GAAGG,EACN,CAEJ,CAEA,SAASQ,CAAAA,CAAY,CAAE,SAAA,CAAAX,CAAAA,CAAW,GAAGG,CAAM,EAAgC,CACzE,OACEC,eAAC,KAAA,CAAA,CACC,WAAA,CAAU,eACV,SAAA,CAAWC,mBAAAA,CAAG,qCAAA,CAAuCL,CAAS,CAAA,CAC7D,GAAGG,EACN,CAEJ,CAEA,SAASS,CAAAA,CAAW,CAAE,UAAAZ,CAAAA,CAAW,GAAGG,CAAM,CAAA,CAAgC,CACxE,OACEC,eAAC,KAAA,CAAA,CACC,WAAA,CAAU,cACV,SAAA,CAAWC,mBAAAA,CACT,wGACAL,CACF,CAAA,CACC,GAAGG,CAAAA,CACN,CAEJ","file":"chunk-FFAC2CCY.cjs","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 chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),chunkXY4I4IUO_cjs=require('./chunk-XY4I4IUO.cjs'),s=require('react'),reactSlot=require('@radix-ui/react-slot'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var s__namespace=/*#__PURE__*/_interopNamespace(s);var o="bg-dark-green text-primary-foreground hover:bg-green active:bg-green disabled:bg-gray-200 disabled:text-secondary-foreground",t="bg-white text-dark-green border border-dark-green hover:bg-green-100 active:bg-green-100 disabled:bg-white disabled:text-secondary-foreground disabled:border-gray-300",v=classVarianceAuthority.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-bold transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-5 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer",{variants:{variant:{primary:o,outline:t,ghost:"text-dark-green hover:bg-green-200 active:bg-green-200","ghost-secondary":"text-gray-700 hover:bg-gray-200 active:bg-gray-200",link:"text-dark-green underline-offset-4 underline font-normal disabled:text-secondary-foreground hover:text-green-700 active:text-green-700",danger:"bg-red text-primary-foreground hover:bg-red-400 active:bg-red-400 disabled:bg-gray-200 disabled:text-secondary-foreground","danger-outline":"bg-white text-destructive border border-destructive hover:bg-red-100 active:bg-red-100 disabled:bg-white disabled:text-secondary-foreground disabled:border-gray-300","danger-ghost":"bg-transparent text-destructive border-none hover:bg-red-100 active:bg-red-100 disabled:bg-white disabled:text-secondary-foreground","danger-link":"text-red-600 hover:text-red-400 active:text-red-400 underline-offset-4 underline font-normal disabled:text-secondary-foreground","primary-icon":`${o} py-0! px-0! aspect-square
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
'use strict';var chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),chunkXY4I4IUO_cjs=require('./chunk-XY4I4IUO.cjs'),s=require('react'),reactSlot=require('@radix-ui/react-slot'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var s__namespace=/*#__PURE__*/_interopNamespace(s);var o="bg-dark-green text-primary-foreground hover:bg-green active:bg-green disabled:bg-gray-200 disabled:text-secondary-foreground",t="bg-white text-dark-green border border-dark-green hover:bg-green-100 active:bg-green-100 disabled:bg-white disabled:text-secondary-foreground disabled:border-gray-300",v=classVarianceAuthority.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-bold transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-5 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer",{variants:{variant:{primary:o,outline:t,ghost:"text-dark-green hover:bg-green-200 active:bg-green-200","ghost-secondary":"text-gray-700 hover:bg-gray-200 active:bg-gray-200",link:"text-dark-green underline-offset-4 underline font-normal disabled:text-secondary-foreground hover:text-green-700 active:text-green-700",danger:"bg-red text-primary-foreground hover:bg-red-400 active:bg-red-400 disabled:bg-gray-200 disabled:text-secondary-foreground","danger-outline":"bg-white text-destructive border border-destructive hover:bg-red-100 active:bg-red-100 disabled:bg-white disabled:text-secondary-foreground disabled:border-gray-300","danger-ghost":"bg-transparent text-destructive border-none hover:bg-red-100 active:bg-red-100 disabled:bg-white disabled:text-secondary-foreground","danger-link":"text-red-600 hover:text-red-400 active:text-red-400 underline-offset-4 underline font-normal disabled:text-secondary-foreground","primary-icon":`${o} py-0! px-0! aspect-square`,"primary-icon-rounded":`${o} py-0! px-0! aspect-square rounded-full`,"outline-icon":`${t} py-0! px-0! aspect-square`,"outline-icon-rounded":`${t} py-0! px-0! aspect-square rounded-full`,"ghost-icon":"hover:bg-green-200 active:bg-green-200 py-0! px-0! aspect-square","ghost-icon-rounded":"hover:bg-green-200 active:bg-green-200 py-0! px-0! aspect-square rounded-full","ai-primary":"[background-image:linear-gradient(220deg,theme(colors.purple.400),theme(colors.gold.500))] px-[1px]! py-[1px]! hover:shadow-sm active:shadow-sm font-normal","ai-secondary":"bg-border px-[1px]! py-[1px]! hover:[background-image:linear-gradient(220deg,theme(colors.purple.400),theme(colors.gold.500))] hover:shadow-sm active:[background-image:linear-gradient(220deg,theme(colors.purple.400),theme(colors.gold.500))] active:shadow-sm font-normal",secondary:"border bg-glass hover:border-dark-gray active:border-dark-gray font-normal","secondary-icon":"border bg-glass hover:border-dark-gray active:border-dark-gray py-0! px-0! aspect-square","secondary-icon-rounded":"border bg-glass hover:border-dark-gray active:border-dark-gray py-0! px-0! aspect-square rounded-full"},size:{default:"px-4 h-12",sm:"px-3 py-xs h-8 [&_svg:not([class*='size-'])]:size-4"}},defaultVariants:{variant:"primary",size:"default"},compoundVariants:[{size:"sm",variant:["primary-icon","outline-icon","ghost-icon","secondary-icon"],class:"rounded-sm"}]}),z=s__namespace.forwardRef(({className:g,type:l="button",variant:e,size:a,asChild:p=false,children:n=null,...c},b)=>jsxRuntime.jsx(p?reactSlot.Slot:"button",{"data-slot":"button",className:chunkQRO22BPZ_cjs.a(v({variant:e,size:a,className:g})),type:l,ref:b,...c,children:e==="ai-primary"||e==="ai-secondary"?jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("flex items-center gap-2 rounded-[7px] bg-white",e==="ai-primary"?"hover:bg-lightpolaris-gradient active:bg-lightpolaris-gradient":"bg-glass",a==="sm"?"h-[30px] px-2":"h-[46px] px-3"),children:[jsxRuntime.jsx(chunkXY4I4IUO_cjs.a,{})," ",n]}):n}));exports.a=v;exports.b=z;//# sourceMappingURL=chunk-FMFRB4JI.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-FMFRB4JI.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/v2/button/button.tsx"],"names":["primaryButtonStyles","outlineButtonStyles","buttonVariants","cva","Button","s","className","type","variant","size","asChild","children","props","ref","jsx","Slot","cn","jsxs","SparklesBold"],"mappings":"+nBAOMA,CAAAA,CACJ,8HAAA,CAEIC,EACJ,wKAAA,CAEIC,CAAAA,CAAiBC,2BACrB,kcAAA,CACA,CACE,SAAU,CACR,OAAA,CAAS,CACP,OAAA,CAASH,CAAAA,CACT,QAASC,CAAAA,CACT,KAAA,CAAO,yDACP,iBAAA,CAAmB,oDAAA,CACnB,KAAM,wIAAA,CAEN,MAAA,CACE,4HACF,gBAAA,CACE,sKAAA,CACF,eACE,qIAAA,CACF,aAAA,CACE,kIAEF,cAAA,CAAgB,CAAA,EAAGD,CAAmB,CAAA,0BAAA,CAAA,CACtC,sBAAA,CAAwB,GAAGA,CAAmB,CAAA,uCAAA,CAAA,CAE9C,eAAgB,CAAA,EAAGC,CAAmB,6BACtC,sBAAA,CAAwB,CAAA,EAAGA,CAAmB,CAAA,uCAAA,CAAA,CAE9C,YAAA,CAAc,mEACd,oBAAA,CACE,+EAAA,CAEF,aACE,6JAAA,CACF,cAAA,CACE,gRAEF,SAAA,CAAW,4EAAA,CACX,iBACE,0FAAA,CACF,wBAAA,CACE,uGACJ,CAAA,CACA,IAAA,CAAM,CACJ,OAAA,CAAS,WAAA,CACT,GAAI,qDACN,CACF,EACA,eAAA,CAAiB,CACf,QAAS,SAAA,CACT,IAAA,CAAM,SACR,CAAA,CACA,gBAAA,CAAkB,CAChB,CACE,IAAA,CAAM,KACN,OAAA,CAAS,CAAC,eAAgB,cAAA,CAAgB,YAAA,CAAc,gBAAgB,CAAA,CACxE,KAAA,CAAO,YACT,CACF,CACF,CACF,CAAA,CASMG,CAAAA,CAAeC,wBACnB,CACE,CAAE,UAAAC,CAAAA,CAAW,IAAA,CAAAC,EAAO,QAAA,CAAU,OAAA,CAAAC,EAAS,IAAA,CAAAC,CAAAA,CAAM,QAAAC,CAAAA,CAAU,KAAA,CAAO,SAAAC,CAAAA,CAAW,IAAA,CAAM,GAAGC,CAAM,CAAA,CACxFC,IAKEC,cAAAA,CAHWJ,CAAAA,CAAUK,eAAO,QAAA,CAG3B,CACC,YAAU,QAAA,CACV,SAAA,CAAWC,oBAAGd,CAAAA,CAAe,CAAE,QAAAM,CAAAA,CAAS,IAAA,CAAAC,EAAM,SAAA,CAAAH,CAAU,CAAC,CAAC,CAAA,CAC1D,KAAMC,CAAAA,CACN,GAAA,CAAKM,EACJ,GAAGD,CAAAA,CAEH,SAAAJ,CAAAA,GAAY,YAAA,EAAgBA,IAAY,cAAA,CACvCS,eAAAA,CAAC,OACC,SAAA,CAAWD,mBAAAA,CACT,iDACAR,CAAAA,GAAY,YAAA,CACR,iEACA,UAAA,CACJC,CAAAA,GAAS,KAAO,eAAA,CAAkB,eACpC,EAEA,QAAA,CAAA,CAAAK,cAAAA,CAACI,oBAAA,EAAa,CAAA,CAAE,IAAEP,CAAAA,CAAAA,CACpB,CAAA,CAEAA,EAEJ,CAGN","file":"chunk-FMFRB4JI.cjs","sourcesContent":["import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\nimport { SparklesBold } from '@/Icons';\n\nconst primaryButtonStyles =\n 'bg-dark-green text-primary-foreground hover:bg-green active:bg-green disabled:bg-gray-200 disabled:text-secondary-foreground';\n\nconst outlineButtonStyles =\n 'bg-white text-dark-green border border-dark-green hover:bg-green-100 active:bg-green-100 disabled:bg-white disabled:text-secondary-foreground disabled:border-gray-300';\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-bold transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-5 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer\",\n {\n variants: {\n variant: {\n primary: primaryButtonStyles,\n outline: outlineButtonStyles,\n ghost: 'text-dark-green hover:bg-green-200 active:bg-green-200',\n 'ghost-secondary': 'text-gray-700 hover:bg-gray-200 active:bg-gray-200',\n link: 'text-dark-green underline-offset-4 underline font-normal disabled:text-secondary-foreground hover:text-green-700 active:text-green-700',\n\n danger:\n 'bg-red text-primary-foreground hover:bg-red-400 active:bg-red-400 disabled:bg-gray-200 disabled:text-secondary-foreground',\n 'danger-outline':\n 'bg-white text-destructive border border-destructive hover:bg-red-100 active:bg-red-100 disabled:bg-white disabled:text-secondary-foreground disabled:border-gray-300',\n 'danger-ghost':\n 'bg-transparent text-destructive border-none hover:bg-red-100 active:bg-red-100 disabled:bg-white disabled:text-secondary-foreground',\n 'danger-link':\n 'text-red-600 hover:text-red-400 active:text-red-400 underline-offset-4 underline font-normal disabled:text-secondary-foreground',\n\n 'primary-icon': `${primaryButtonStyles} py-0! px-0! aspect-square`,\n 'primary-icon-rounded': `${primaryButtonStyles} py-0! px-0! aspect-square rounded-full`,\n\n 'outline-icon': `${outlineButtonStyles} py-0! px-0! aspect-square`,\n 'outline-icon-rounded': `${outlineButtonStyles} py-0! px-0! aspect-square rounded-full`,\n\n 'ghost-icon': 'hover:bg-green-200 active:bg-green-200 py-0! px-0! aspect-square',\n 'ghost-icon-rounded':\n 'hover:bg-green-200 active:bg-green-200 py-0! px-0! aspect-square rounded-full',\n\n 'ai-primary':\n '[background-image:linear-gradient(220deg,theme(colors.purple.400),theme(colors.gold.500))] px-[1px]! py-[1px]! hover:shadow-sm active:shadow-sm font-normal',\n 'ai-secondary':\n 'bg-border px-[1px]! py-[1px]! hover:[background-image:linear-gradient(220deg,theme(colors.purple.400),theme(colors.gold.500))] hover:shadow-sm active:[background-image:linear-gradient(220deg,theme(colors.purple.400),theme(colors.gold.500))] active:shadow-sm font-normal',\n\n secondary: 'border bg-glass hover:border-dark-gray active:border-dark-gray font-normal',\n 'secondary-icon':\n 'border bg-glass hover:border-dark-gray active:border-dark-gray py-0! px-0! aspect-square',\n 'secondary-icon-rounded':\n 'border bg-glass hover:border-dark-gray active:border-dark-gray py-0! px-0! aspect-square rounded-full',\n },\n size: {\n default: 'px-4 h-12',\n sm: \"px-3 py-xs h-8 [&_svg:not([class*='size-'])]:size-4\",\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'default',\n },\n compoundVariants: [\n {\n size: 'sm',\n variant: ['primary-icon', 'outline-icon', 'ghost-icon', 'secondary-icon'],\n class: 'rounded-sm',\n },\n ],\n },\n);\n\ntype ButtonSize = VariantProps<typeof buttonVariants>['size'];\n\nexport type ButtonProps = React.ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n };\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n { className, type = 'button', variant, size, asChild = false, children = null, ...props },\n ref,\n ) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n type={type}\n ref={ref}\n {...props}\n >\n {variant === 'ai-primary' || variant === 'ai-secondary' ? (\n <div\n className={cn(\n 'flex items-center gap-2 rounded-[7px] bg-white',\n variant === 'ai-primary'\n ? 'hover:bg-lightpolaris-gradient active:bg-lightpolaris-gradient'\n : 'bg-glass',\n size === 'sm' ? 'h-[30px] px-2' : 'h-[46px] px-3',\n )}\n >\n <SparklesBold /> {children}\n </div>\n ) : (\n children\n )}\n </Comp>\n );\n },\n);\n\nexport { Button, buttonVariants, type ButtonSize };\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {b,a as a$1}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {b,a as a$1}from'./chunk-SP2L5FI7.js';import {a}from'./chunk-YTIIAU4W.js';import {useRef,useEffect}from'react';import {LuChevronLeft,LuChevronRight,LuChevronDown}from'react-icons/lu';import {getDefaultClassNames,DayPicker}from'react-day-picker';import {jsx}from'react/jsx-runtime';function _({className:n,rootRef:r,...a$1}){return jsx("div",{"data-slot":"calendar",ref:r,className:a(n),...a$1})}function v({className:n,orientation:r,...a$1}){return r==="left"?jsx(LuChevronLeft,{className:a("size-4",n),...a$1}):r==="right"?jsx(LuChevronRight,{className:a("size-4",n),...a$1}):jsx(LuChevronDown,{className:a("size-4",n),...a$1})}function k({children:n,...r}){return jsx("td",{...r,children:jsx("div",{className:"flex size-(--cell-size) items-center justify-center text-center",children:n})})}function z({className:n,day:r,modifiers:a$1,...o}){let u=getDefaultClassNames(),l=useRef(null);return useEffect(()=>{a$1.focused&&l.current?.focus();},[a$1.focused]),jsx(b,{ref:l,variant:"ghost","data-day":r.date.toLocaleDateString(),"data-today":a$1.today&&!a$1.selected,"data-selected-single":a$1.selected&&!a$1.range_start&&!a$1.range_end&&!a$1.range_middle,"data-range-start":a$1.range_start,"data-range-end":a$1.range_end,"data-range-middle":a$1.range_middle,className:a("text-primary","data-[today=true]:bg-accent","data-[today=true]:text-accent-foreground","data-[today=true]:rounded-md","data-[selected-single=true]:bg-green-800","data-[selected-single=true]:text-primary-foreground","data-[range-start=true]:bg-green-800","data-[range-start=true]:text-primary-foreground","data-[range-end=true]:bg-green-800","data-[range-end=true]:text-primary-foreground","data-[range-middle=true]:bg-green-300","data-[range-middle=true]:text-black","data-[range-start=true]:rounded-md","data-[range-start=true]:rounded-l-md","data-[range-end=true]:rounded-md","data-[range-end=true]:rounded-r-md","data-[range-middle=true]:rounded-none","group-data-[focused=true]/day:relative","group-data-[focused=true]/day:z-10","group-data-[focused=true]/day:border-ring","group-data-[focused=true]/day:ring-[3px]","group-data-[focused=true]/day:ring-ring/50","hover:bg-green-100","dark:hover:text-accent-foreground","flex","aspect-square","size-auto","w-full","min-w-(--cell-size)","flex-col","gap-1","leading-none","font-normal","h-9","[&>span]:text-xs","[&>span]:opacity-70",u.day,n),...o})}function E({className:n,classNames:r,showOutsideDays:a$2=true,captionLayout:o="dropdown",buttonVariant:u="ghost",formatters:l,components:f,...s}){let t=getDefaultClassNames();return jsx(DayPicker,{showOutsideDays:a$2,className:a("bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,n),captionLayout:o,endMonth:new Date(new Date().getFullYear()+10,11),formatters:{formatMonthDropdown:m=>m.toLocaleString("default",{month:"short"}),...l},classNames:{root:a("w-fit",t.root),months:a("relative flex flex-col gap-4 md:flex-row",t.months),month:a("flex w-full flex-col gap-4",t.month),nav:a("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",t.nav),button_previous:a(a$1({variant:u}),"size-(--cell-size) p-0 select-none aria-disabled:opacity-50",t.button_previous),button_next:a(a$1({variant:u}),"size-(--cell-size) p-0 select-none aria-disabled:opacity-50",t.button_next),month_caption:a("flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)",t.month_caption),dropdowns:a("flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium",t.dropdowns),dropdown_root:a("has-focus:border-ring border-input has-focus:ring-ring/50 relative rounded-md border shadow-xs has-focus:ring-[3px]",t.dropdown_root),dropdown:a("absolute inset-0 opacity-0",t.dropdown),caption_label:a("font-bold select-none",o==="label"?"text-base":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-base [&>svg]:size-3.5",t.caption_label),table:"w-full border-collapse",weekdays:a("flex",t.weekdays),weekday:a("text-muted-foreground flex-1 rounded-md text-[0.8rem] font-normal select-none",t.weekday),week:a("mt-2 flex w-full",t.week),week_number_header:a("w-(--cell-size) select-none",t.week_number_header),week_number:a("text-muted-foreground text-[0.8rem] select-none",t.week_number),day:a("group/day relative aspect-square h-full w-full p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",t.day),range_start:a("bg-accent rounded-l-md",t.range_start),range_middle:a("rounded-none",t.range_middle),range_end:a("bg-accent rounded-r-md",t.range_end),today:a(t.today),outside:a("text-muted-foreground aria-selected:text-muted-foreground",t.outside),disabled:a("text-muted-foreground opacity-50",t.disabled),hidden:a("invisible",t.hidden),...r},components:{Root:_,Chevron:v,DayButton:z,WeekNumber:k,...f},defaultMonth:s.mode==="single"?s.selected:void 0,...s})}export{z as a,E as b};//# sourceMappingURL=chunk-FQGC44HX.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-FQGC44HX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/calendar/calendar.tsx"],"names":["CalendarRoot","className","rootRef","props","jsx","cn","CalendarChevron","orientation","LuChevronLeft","LuChevronRight","LuChevronDown","CalendarWeekNumber","children","CalendarDayButton","day","modifiers","defaultClassNames","getDefaultClassNames","ref","useRef","useEffect","Button","Calendar","classNames","showOutsideDays","captionLayout","buttonVariant","formatters","components","DayPicker","date","buttonVariants"],"mappings":"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","file":"chunk-FBXJ2VCI.js","sourcesContent":["import { ComponentProps, HTMLAttributes, Ref, useEffect, useRef } from 'react';\nimport { LuChevronDown, LuChevronLeft, LuChevronRight } from 'react-icons/lu';\nimport { DayButton, DayPicker, getDefaultClassNames } from 'react-day-picker';\n\nimport { cn } from '@/lib/utils';\nimport { Button, buttonVariants } from '../button/button';\n\nfunction CalendarRoot({\n className,\n rootRef,\n ...props\n}: {\n className?: string;\n rootRef?: Ref<HTMLDivElement>;\n} & HTMLAttributes<HTMLDivElement>) {\n return <div data-slot=\"calendar\" ref={rootRef} className={cn(className)} {...props} />;\n}\n\nfunction CalendarChevron({\n className,\n orientation,\n ...props\n}: {\n className?: string | undefined;\n size?: number | undefined;\n disabled?: boolean | undefined;\n orientation?: 'left' | 'right' | 'down' | 'up' | undefined;\n}) {\n if (orientation === 'left') {\n return <LuChevronLeft className={cn('size-4', className)} {...props} />;\n }\n\n if (orientation === 'right') {\n return <LuChevronRight className={cn('size-4', className)} {...props} />;\n }\n\n return <LuChevronDown className={cn('size-4', className)} {...props} />;\n}\n\nfunction CalendarWeekNumber({ children, ...props }: React.HTMLAttributes<HTMLTableCellElement>) {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n );\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames();\n\n const ref = useRef<HTMLButtonElement>(null);\n useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n data-day={day.date.toLocaleDateString()}\n data-today={modifiers.today && !modifiers.selected}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'text-primary',\n\n // State-based styling for selected and ranged dates\n 'data-[today=true]:bg-accent',\n 'data-[today=true]:text-accent-foreground',\n 'data-[today=true]:rounded-md',\n 'data-[selected-single=true]:bg-green-800',\n 'data-[selected-single=true]:text-primary-foreground',\n 'data-[range-start=true]:bg-green-800',\n 'data-[range-start=true]:text-primary-foreground',\n 'data-[range-end=true]:bg-green-800',\n 'data-[range-end=true]:text-primary-foreground',\n 'data-[range-middle=true]:bg-green-300',\n 'data-[range-middle=true]:text-black',\n\n // Rounded corners for range positioning\n 'data-[range-start=true]:rounded-md',\n 'data-[range-start=true]:rounded-l-md',\n 'data-[range-end=true]:rounded-md',\n 'data-[range-end=true]:rounded-r-md',\n 'data-[range-middle=true]:rounded-none',\n\n // Focus/Interaction states\n 'group-data-[focused=true]/day:relative',\n 'group-data-[focused=true]/day:z-10',\n 'group-data-[focused=true]/day:border-ring',\n 'group-data-[focused=true]/day:ring-[3px]',\n 'group-data-[focused=true]/day:ring-ring/50',\n\n // Hover\n 'hover:bg-green-100',\n 'dark:hover:text-accent-foreground',\n\n // Layout and spacing\n 'flex',\n 'aspect-square',\n 'size-auto',\n 'w-full',\n 'min-w-(--cell-size)',\n 'flex-col',\n 'gap-1',\n 'leading-none',\n 'font-normal',\n 'h-9',\n '[&>span]:text-xs',\n '[&>span]:opacity-70',\n defaultClassNames.day,\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'dropdown',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: ComponentProps<typeof DayPicker> & {\n buttonVariant?: ComponentProps<typeof Button>['variant'];\n}) {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className,\n )}\n captionLayout={captionLayout}\n endMonth={new Date(new Date().getFullYear() + 10, 11)} // Ensure that user can navigate past current year (just kick it out 10 years)\n formatters={{\n formatMonthDropdown: (date) => date.toLocaleString('default', { month: 'short' }),\n ...formatters,\n }}\n classNames={{\n root: cn('w-fit', defaultClassNames.root),\n months: cn('relative flex flex-col gap-4 md:flex-row', defaultClassNames.months),\n month: cn('flex w-full flex-col gap-4', defaultClassNames.month),\n nav: cn(\n 'absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1',\n defaultClassNames.nav,\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) p-0 select-none aria-disabled:opacity-50',\n defaultClassNames.button_previous,\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) p-0 select-none aria-disabled:opacity-50',\n defaultClassNames.button_next,\n ),\n month_caption: cn(\n 'flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)',\n defaultClassNames.month_caption,\n ),\n dropdowns: cn(\n 'flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium',\n defaultClassNames.dropdowns,\n ),\n dropdown_root: cn(\n 'has-focus:border-ring border-input has-focus:ring-ring/50 relative rounded-md border shadow-xs has-focus:ring-[3px]',\n defaultClassNames.dropdown_root,\n ),\n dropdown: cn('absolute inset-0 opacity-0', defaultClassNames.dropdown),\n caption_label: cn(\n 'font-bold select-none',\n captionLayout === 'label'\n ? 'text-base'\n : '[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-base [&>svg]:size-3.5',\n defaultClassNames.caption_label,\n ),\n table: 'w-full border-collapse',\n weekdays: cn('flex', defaultClassNames.weekdays),\n weekday: cn(\n 'text-muted-foreground flex-1 rounded-md text-[0.8rem] font-normal select-none',\n defaultClassNames.weekday,\n ),\n week: cn('mt-2 flex w-full', defaultClassNames.week),\n week_number_header: cn('w-(--cell-size) select-none', defaultClassNames.week_number_header),\n week_number: cn(\n 'text-muted-foreground text-[0.8rem] select-none',\n defaultClassNames.week_number,\n ),\n day: cn(\n 'group/day relative aspect-square h-full w-full p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md',\n defaultClassNames.day,\n ),\n range_start: cn('bg-accent rounded-l-md', defaultClassNames.range_start),\n range_middle: cn('rounded-none', defaultClassNames.range_middle),\n range_end: cn('bg-accent rounded-r-md', defaultClassNames.range_end),\n today: cn(defaultClassNames.today),\n outside: cn(\n 'text-muted-foreground aria-selected:text-muted-foreground',\n defaultClassNames.outside,\n ),\n disabled: cn('text-muted-foreground opacity-50', defaultClassNames.disabled),\n hidden: cn('invisible', defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: CalendarRoot,\n Chevron: CalendarChevron,\n DayButton: CalendarDayButton,\n WeekNumber: CalendarWeekNumber,\n ...components,\n }}\n defaultMonth={props.mode === 'single' ? props.selected : undefined}\n {...props}\n />\n );\n}\n\nexport { Calendar, CalendarDayButton };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/v2/calendar/calendar.tsx"],"names":["CalendarRoot","className","rootRef","props","jsx","cn","CalendarChevron","orientation","LuChevronLeft","LuChevronRight","LuChevronDown","CalendarWeekNumber","children","CalendarDayButton","day","modifiers","defaultClassNames","getDefaultClassNames","ref","useRef","useEffect","Button","Calendar","classNames","showOutsideDays","captionLayout","buttonVariant","formatters","components","DayPicker","date","buttonVariants"],"mappings":"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","file":"chunk-FQGC44HX.js","sourcesContent":["import { ComponentProps, HTMLAttributes, Ref, useEffect, useRef } from 'react';\nimport { LuChevronDown, LuChevronLeft, LuChevronRight } from 'react-icons/lu';\nimport { DayButton, DayPicker, getDefaultClassNames } from 'react-day-picker';\n\nimport { cn } from '@/lib/utils';\nimport { Button, buttonVariants } from '../button/button';\n\nfunction CalendarRoot({\n className,\n rootRef,\n ...props\n}: {\n className?: string;\n rootRef?: Ref<HTMLDivElement>;\n} & HTMLAttributes<HTMLDivElement>) {\n return <div data-slot=\"calendar\" ref={rootRef} className={cn(className)} {...props} />;\n}\n\nfunction CalendarChevron({\n className,\n orientation,\n ...props\n}: {\n className?: string | undefined;\n size?: number | undefined;\n disabled?: boolean | undefined;\n orientation?: 'left' | 'right' | 'down' | 'up' | undefined;\n}) {\n if (orientation === 'left') {\n return <LuChevronLeft className={cn('size-4', className)} {...props} />;\n }\n\n if (orientation === 'right') {\n return <LuChevronRight className={cn('size-4', className)} {...props} />;\n }\n\n return <LuChevronDown className={cn('size-4', className)} {...props} />;\n}\n\nfunction CalendarWeekNumber({ children, ...props }: React.HTMLAttributes<HTMLTableCellElement>) {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n );\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames();\n\n const ref = useRef<HTMLButtonElement>(null);\n useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n data-day={day.date.toLocaleDateString()}\n data-today={modifiers.today && !modifiers.selected}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'text-primary',\n\n // State-based styling for selected and ranged dates\n 'data-[today=true]:bg-accent',\n 'data-[today=true]:text-accent-foreground',\n 'data-[today=true]:rounded-md',\n 'data-[selected-single=true]:bg-green-800',\n 'data-[selected-single=true]:text-primary-foreground',\n 'data-[range-start=true]:bg-green-800',\n 'data-[range-start=true]:text-primary-foreground',\n 'data-[range-end=true]:bg-green-800',\n 'data-[range-end=true]:text-primary-foreground',\n 'data-[range-middle=true]:bg-green-300',\n 'data-[range-middle=true]:text-black',\n\n // Rounded corners for range positioning\n 'data-[range-start=true]:rounded-md',\n 'data-[range-start=true]:rounded-l-md',\n 'data-[range-end=true]:rounded-md',\n 'data-[range-end=true]:rounded-r-md',\n 'data-[range-middle=true]:rounded-none',\n\n // Focus/Interaction states\n 'group-data-[focused=true]/day:relative',\n 'group-data-[focused=true]/day:z-10',\n 'group-data-[focused=true]/day:border-ring',\n 'group-data-[focused=true]/day:ring-[3px]',\n 'group-data-[focused=true]/day:ring-ring/50',\n\n // Hover\n 'hover:bg-green-100',\n 'dark:hover:text-accent-foreground',\n\n // Layout and spacing\n 'flex',\n 'aspect-square',\n 'size-auto',\n 'w-full',\n 'min-w-(--cell-size)',\n 'flex-col',\n 'gap-1',\n 'leading-none',\n 'font-normal',\n 'h-9',\n '[&>span]:text-xs',\n '[&>span]:opacity-70',\n defaultClassNames.day,\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'dropdown',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: ComponentProps<typeof DayPicker> & {\n buttonVariant?: ComponentProps<typeof Button>['variant'];\n}) {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className,\n )}\n captionLayout={captionLayout}\n endMonth={new Date(new Date().getFullYear() + 10, 11)} // Ensure that user can navigate past current year (just kick it out 10 years)\n formatters={{\n formatMonthDropdown: (date) => date.toLocaleString('default', { month: 'short' }),\n ...formatters,\n }}\n classNames={{\n root: cn('w-fit', defaultClassNames.root),\n months: cn('relative flex flex-col gap-4 md:flex-row', defaultClassNames.months),\n month: cn('flex w-full flex-col gap-4', defaultClassNames.month),\n nav: cn(\n 'absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1',\n defaultClassNames.nav,\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) p-0 select-none aria-disabled:opacity-50',\n defaultClassNames.button_previous,\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) p-0 select-none aria-disabled:opacity-50',\n defaultClassNames.button_next,\n ),\n month_caption: cn(\n 'flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)',\n defaultClassNames.month_caption,\n ),\n dropdowns: cn(\n 'flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium',\n defaultClassNames.dropdowns,\n ),\n dropdown_root: cn(\n 'has-focus:border-ring border-input has-focus:ring-ring/50 relative rounded-md border shadow-xs has-focus:ring-[3px]',\n defaultClassNames.dropdown_root,\n ),\n dropdown: cn('absolute inset-0 opacity-0', defaultClassNames.dropdown),\n caption_label: cn(\n 'font-bold select-none',\n captionLayout === 'label'\n ? 'text-base'\n : '[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-base [&>svg]:size-3.5',\n defaultClassNames.caption_label,\n ),\n table: 'w-full border-collapse',\n weekdays: cn('flex', defaultClassNames.weekdays),\n weekday: cn(\n 'text-muted-foreground flex-1 rounded-md text-[0.8rem] font-normal select-none',\n defaultClassNames.weekday,\n ),\n week: cn('mt-2 flex w-full', defaultClassNames.week),\n week_number_header: cn('w-(--cell-size) select-none', defaultClassNames.week_number_header),\n week_number: cn(\n 'text-muted-foreground text-[0.8rem] select-none',\n defaultClassNames.week_number,\n ),\n day: cn(\n 'group/day relative aspect-square h-full w-full p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md',\n defaultClassNames.day,\n ),\n range_start: cn('bg-accent rounded-l-md', defaultClassNames.range_start),\n range_middle: cn('rounded-none', defaultClassNames.range_middle),\n range_end: cn('bg-accent rounded-r-md', defaultClassNames.range_end),\n today: cn(defaultClassNames.today),\n outside: cn(\n 'text-muted-foreground aria-selected:text-muted-foreground',\n defaultClassNames.outside,\n ),\n disabled: cn('text-muted-foreground opacity-50', defaultClassNames.disabled),\n hidden: cn('invisible', defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: CalendarRoot,\n Chevron: CalendarChevron,\n DayButton: CalendarDayButton,\n WeekNumber: CalendarWeekNumber,\n ...components,\n }}\n defaultMonth={props.mode === 'single' ? props.selected : undefined}\n {...props}\n />\n );\n}\n\nexport { Calendar, CalendarDayButton };\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var chunkAYDT2WNR_cjs=require('./chunk-AYDT2WNR.cjs'),chunkUQH4L66A_cjs=require('./chunk-UQH4L66A.cjs'),chunkDBJQ7H6H_cjs=require('./chunk-DBJQ7H6H.cjs'),chunkNQNIXM6Z_cjs=require('./chunk-NQNIXM6Z.cjs'),chunk4VLWKHXC_cjs=require('./chunk-4VLWKHXC.cjs'),chunkPM4UNYHM_cjs=require('./chunk-PM4UNYHM.cjs'),chunkUYX4D44N_cjs=require('./chunk-UYX4D44N.cjs'),chunkKLVOKO56_cjs=require('./chunk-KLVOKO56.cjs'),
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
'use strict';var chunkAYDT2WNR_cjs=require('./chunk-AYDT2WNR.cjs'),chunkUQH4L66A_cjs=require('./chunk-UQH4L66A.cjs'),chunkDBJQ7H6H_cjs=require('./chunk-DBJQ7H6H.cjs'),chunkNQNIXM6Z_cjs=require('./chunk-NQNIXM6Z.cjs'),chunk4VLWKHXC_cjs=require('./chunk-4VLWKHXC.cjs'),chunkPM4UNYHM_cjs=require('./chunk-PM4UNYHM.cjs'),chunkUYX4D44N_cjs=require('./chunk-UYX4D44N.cjs'),chunkKLVOKO56_cjs=require('./chunk-KLVOKO56.cjs'),chunkUJH4JKQC_cjs=require('./chunk-UJH4JKQC.cjs'),chunkEZK5NRS6_cjs=require('./chunk-EZK5NRS6.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var ae=react.forwardRef((C,P)=>{let{id:x,value:s,onChange:D,placeholder:F,defaultOptions:T=[],options:K=[],delay:V,onSearch:n,triggerSearchOnOpen:W,loading:B=false,loadingIndicator:E,emptyIndicator:H,maxSelected:k=0,onMaxSelected:q,hidePlaceholderWhenSelected:L=true,disabled:a,className:Y,classNames:z,badgeWrapperClassName:A,badgeClassName:G,getBadgeClassName:J=()=>"",selectFirstItem:Q=true,commandProps:e,inputProps:U,persistInputOnSelect:X=false,persistInputOnBlur:Z=false}=C,{inputRef:t,commandRef:c,onSearchRef:_,scrollbarRef:u,prevExternalOptionsRef:$}=chunkKLVOKO56_cjs.a({onSearch:n}),{uniqueId:p,open:o,setOpen:m,selected:r,setSelected:l,options:j,setOptions:ee,inputSearchValue:te,setInputSearchValue:d,debouncedSearchTerm:re}=chunkUYX4D44N_cjs.a({id:x,value:s,defaultOptions:T,delay:V}),{toggleOption:f,handleKeyDown:oe}=chunkPM4UNYHM_cjs.a({open:o,selected:r,maxSelected:k,onChange:D,onMaxSelected:q,setInputSearchValue:d,commandRef:c,inputRef:t,setSelected:l,setOpen:m,persistInputOnSelect:X});chunkAYDT2WNR_cjs.a({debouncedSearchTerm:re,open:o,onSearchRef:_,triggerSearchOnOpen:W}),chunkUQH4L66A_cjs.a({externalOptions:K,setOptions:ee,prevExternalOptionsRef:$}),chunkDBJQ7H6H_cjs.a({value:s,setSelected:l}),react.useImperativeHandle(P,()=>({selectedValue:[...r],input:t.current,focus:()=>t?.current?.focus(),reset:()=>l([])}),[r,t,l]);let le=react.useCallback(()=>{if(e?.filter)return e.filter},[e?.filter]);return jsxRuntime.jsxs(chunkEZK5NRS6_cjs.a,{ref:c,...e,onKeyDown:S=>{oe(S),e?.onKeyDown?.(S);},className:chunkQRO22BPZ_cjs.a("h-auto overflow-visible bg-transparent",e?.className),shouldFilter:e?.shouldFilter!==void 0?e.shouldFilter:!n,filter:le(),children:[jsxRuntime.jsx(chunk4VLWKHXC_cjs.a,{open:o,disabled:a,inputRef:t,selected:r,uniqueId:p,className:Y,children:jsxRuntime.jsx(chunkNQNIXM6Z_cjs.a,{selected:r,scrollbarRef:u,toggleOption:f,inputProps:U,inputRef:t,open:o,setOpen:m,placeholder:F,hidePlaceholderWhenSelected:L,disabled:a,classNames:z,badgeWrapperClassName:A,badgeClassName:G,getBadgeClassName:J,inputSearchValue:te,setInputSearchValue:d,persistInputOnBlur:Z})}),jsxRuntime.jsx(chunkUJH4JKQC_cjs.a,{uniqueId:p,scrollbarRef:u,open:o,loading:B,options:j,selected:r,toggleOption:f,onSearch:n,inputRef:t,emptyIndicator:H,loadingIndicator:E,selectFirstItem:Q})]})});ae.displayName="MultiSelect";exports.a=ae;//# sourceMappingURL=chunk-H37HOXIG.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-H37HOXIG.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/v2/multiselect/multiselect.tsx"],"names":["MultiSelect","forwardRef","props","ref","id","value","onChange","placeholder","externalDefaultOptions","externalOptions","delay","onSearch","triggerSearchOnOpen","loading","loadingIndicator","emptyIndicator","maxSelected","onMaxSelected","hidePlaceholderWhenSelected","disabled","className","classNames","badgeWrapperClassName","badgeClassName","getBadgeClassName","selectFirstItem","commandProps","inputProps","persistInputOnSelect","persistInputOnBlur","inputRef","commandRef","onSearchRef","scrollbarRef","prevExternalOptionsRef","useRefs","uniqueId","open","setOpen","selected","setSelected","options","setOptions","inputSearchValue","setInputSearchValue","debouncedSearchTerm","useMultiSelect","toggleOption","handleKeyDown","useInteractions","useSearch","useSyncOptions","useSyncSelected","useImperativeHandle","commandFilter","useCallback","jsxs","Command","e","cn","jsx","MultiSelectTrigger","MultiSelectInput","MultiSelectDropdown"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/v2/multiselect/multiselect.tsx"],"names":["MultiSelect","forwardRef","props","ref","id","value","onChange","placeholder","externalDefaultOptions","externalOptions","delay","onSearch","triggerSearchOnOpen","loading","loadingIndicator","emptyIndicator","maxSelected","onMaxSelected","hidePlaceholderWhenSelected","disabled","className","classNames","badgeWrapperClassName","badgeClassName","getBadgeClassName","selectFirstItem","commandProps","inputProps","persistInputOnSelect","persistInputOnBlur","inputRef","commandRef","onSearchRef","scrollbarRef","prevExternalOptionsRef","useRefs","uniqueId","open","setOpen","selected","setSelected","options","setOptions","inputSearchValue","setInputSearchValue","debouncedSearchTerm","useMultiSelect","toggleOption","handleKeyDown","useInteractions","useSearch","useSyncOptions","useSyncSelected","useImperativeHandle","commandFilter","useCallback","jsxs","Command","e","cn","jsx","MultiSelectTrigger","MultiSelectInput","MultiSelectDropdown"],"mappings":"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","file":"chunk-H37HOXIG.cjs","sourcesContent":["import { forwardRef, Ref, useCallback, useImperativeHandle } from 'react';\nimport { Command } from '@/v2/command/command';\nimport { cn } from '@/lib/utils';\nimport { MultiSelectProps, MultiSelectRef } from './types';\nimport { useMultiSelect } from './hooks/useMultiSelect';\nimport { useRefs } from './hooks/useRefs';\nimport { useInteractions } from './hooks/useInteractions';\nimport { useSearch } from './hooks/useSearch';\nimport { MultiSelectTrigger } from './components/MultiSelectTrigger';\nimport { MultiSelectInput } from './components/MultiSelectInput';\nimport { MultiSelectDropdown } from './components/MultiSelectDropdown';\nimport { useSyncOptions } from './hooks/useSyncOptions';\nimport { useSyncSelected } from './hooks/useSyncSelected';\n\nexport const MultiSelect = forwardRef<MultiSelectRef, MultiSelectProps>(\n (props: MultiSelectProps, ref: Ref<MultiSelectRef>) => {\n const {\n id,\n value,\n onChange,\n placeholder,\n defaultOptions: externalDefaultOptions = [],\n options: externalOptions = [],\n delay,\n onSearch,\n triggerSearchOnOpen,\n loading = false,\n loadingIndicator,\n emptyIndicator,\n maxSelected = 0,\n onMaxSelected,\n hidePlaceholderWhenSelected = true,\n disabled,\n className,\n classNames,\n badgeWrapperClassName,\n badgeClassName,\n getBadgeClassName = () => '',\n selectFirstItem = true,\n commandProps,\n inputProps,\n persistInputOnSelect = false,\n persistInputOnBlur = false,\n } = props;\n\n const { inputRef, commandRef, onSearchRef, scrollbarRef, prevExternalOptionsRef } = useRefs({\n onSearch,\n });\n\n const {\n uniqueId,\n open,\n setOpen,\n selected,\n setSelected,\n options,\n setOptions,\n inputSearchValue,\n setInputSearchValue,\n debouncedSearchTerm,\n } = useMultiSelect({\n id,\n value,\n defaultOptions: externalDefaultOptions,\n delay,\n });\n\n const { toggleOption, handleKeyDown } = useInteractions({\n open,\n selected,\n maxSelected,\n onChange,\n onMaxSelected,\n setInputSearchValue,\n commandRef,\n inputRef,\n setSelected,\n setOpen,\n persistInputOnSelect,\n });\n\n useSearch({\n debouncedSearchTerm,\n open,\n onSearchRef,\n triggerSearchOnOpen,\n });\n\n useSyncOptions({\n externalOptions,\n setOptions,\n prevExternalOptionsRef,\n });\n\n useSyncSelected({\n value,\n setSelected,\n });\n\n useImperativeHandle(\n ref,\n () => ({\n selectedValue: [...selected],\n input: inputRef.current as HTMLInputElement,\n focus: () => inputRef?.current?.focus(),\n reset: () => setSelected([]),\n }),\n [selected, inputRef, setSelected],\n );\n\n const commandFilter = useCallback(() => {\n if (commandProps?.filter) {\n return commandProps.filter;\n }\n\n // Using default filter in `cmdk`. We don't have to provide it.\n return undefined;\n }, [commandProps?.filter]);\n\n return (\n <Command\n ref={commandRef}\n {...commandProps}\n onKeyDown={(e) => {\n handleKeyDown(e);\n commandProps?.onKeyDown?.(e);\n }}\n className={cn('h-auto overflow-visible bg-transparent', commandProps?.className)}\n shouldFilter={\n commandProps?.shouldFilter !== undefined ? commandProps.shouldFilter : !onSearch\n } // When onSearch is provided, we don't want to filter the options. You can still override it.\n filter={commandFilter()}\n >\n <MultiSelectTrigger {...{ open, disabled, inputRef, selected, uniqueId, className }}>\n <MultiSelectInput\n {...{\n selected,\n scrollbarRef,\n toggleOption,\n inputProps,\n inputRef,\n open,\n setOpen,\n placeholder,\n hidePlaceholderWhenSelected,\n disabled,\n classNames,\n badgeWrapperClassName,\n badgeClassName,\n getBadgeClassName,\n inputSearchValue,\n setInputSearchValue,\n persistInputOnBlur,\n }}\n />\n </MultiSelectTrigger>\n\n <MultiSelectDropdown\n {...{\n uniqueId,\n scrollbarRef,\n open,\n loading,\n options,\n selected,\n toggleOption,\n onSearch,\n inputRef,\n emptyIndicator,\n loadingIndicator,\n selectFirstItem,\n }}\n />\n </Command>\n );\n },\n);\n\nMultiSelect.displayName = 'MultiSelect';\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';function i(t){let e=t.replace(/\D/g,"").slice(0,10);return e.length===0?"":e.length<=3?`(${e}`:e.length<=6?`(${e.slice(0,3)}) ${e.slice(3)}`:`(${e.slice(0,3)}) ${e.slice(3,6)}-${e.slice(6)}`}function n(t){let e=t.replace(/\D/g,"");return e===""?"":String(parseInt(e,10))}exports.a=i;exports.b=n;//# sourceMappingURL=chunk-IRMVTSQ3.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-IRMVTSQ3.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/v2/input/formatters.ts"],"names":["maskPhone","value","digits","maskPositiveInteger"],"mappings":"aAAO,SAASA,EAAUC,CAAAA,CAAuB,CAC/C,IAAMC,CAAAA,CAASD,EAAM,OAAA,CAAQ,KAAA,CAAO,EAAE,CAAA,CAAE,MAAM,CAAA,CAAG,EAAE,CAAA,CAEnD,OAAIC,EAAO,MAAA,GAAW,CAAA,CAAU,EAAA,CAC5BA,CAAAA,CAAO,QAAU,CAAA,CAAU,CAAA,CAAA,EAAIA,CAAM,CAAA,CAAA,CACrCA,EAAO,MAAA,EAAU,CAAA,CAAU,CAAA,CAAA,EAAIA,CAAAA,CAAO,MAAM,CAAA,CAAG,CAAC,CAAC,CAAA,EAAA,EAAKA,CAAAA,CAAO,MAAM,CAAC,CAAC,CAAA,CAAA,CAClE,CAAA,CAAA,EAAIA,EAAO,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,KAAKA,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAO,MAAM,CAAC,CAAC,EACzE,CAEO,SAASC,CAAAA,CAAoBF,CAAAA,CAAuB,CACzD,IAAMC,CAAAA,CAASD,CAAAA,CAAM,OAAA,CAAQ,MAAO,EAAE,CAAA,CACtC,OAAOC,CAAAA,GAAW,GAAK,EAAA,CAAK,MAAA,CAAO,SAASA,CAAAA,CAAQ,EAAE,CAAC,CACzD","file":"chunk-IRMVTSQ3.cjs","sourcesContent":["export function maskPhone(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 10);\n\n if (digits.length === 0) return '';\n if (digits.length <= 3) return `(${digits}`;\n if (digits.length <= 6) return `(${digits.slice(0, 3)}) ${digits.slice(3)}`;\n return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;\n}\n\nexport function maskPositiveInteger(value: string): string {\n const digits = value.replace(/\\D/g, '');\n return digits === '' ? '' : String(parseInt(digits, 10));\n}\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {b,a}from'./chunk-QHNRUAYJ.js';import {a as a$1}from'./chunk-YTIIAU4W.js';import*as u from'react';import {useState,useEffect}from'react';import {cva}from'class-variance-authority';import {HiOutlineExclamationCircle}from'react-icons/hi2';import {LuSearch,LuX,LuClock4}from'react-icons/lu';import {jsxs,jsx}from'react/jsx-runtime';var _=cva(`
|
|
2
|
+
flex items-center h-12 w-full min-w-0 rounded-md border bg-white px-3 py-3 text-base transition-all outline-none
|
|
3
|
+
dark:bg-input/30 border-input shadow-xs
|
|
4
|
+
placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground
|
|
5
|
+
file:inline-flex file:h-6 file:mr-2 file:border-0 file:text-foreground
|
|
6
|
+
disabled:cursor-not-allowed disabled:opacity-50 disabled:pointer-events-none disabled:bg-gray-200
|
|
7
|
+
focus-visible:ring-ring/50 focus-visible:ring-[3px]
|
|
8
|
+
`,{variants:{variant:{default:`
|
|
9
|
+
hover:enabled:border-dark-green
|
|
10
|
+
focus:enabled:border-dark-green
|
|
11
|
+
focus:enabled:shadow-green-300
|
|
12
|
+
focus-within:shadow
|
|
13
|
+
focus-within:shadow-green-300
|
|
14
|
+
focus-visible:border-dark-green
|
|
15
|
+
`,invalid:`
|
|
16
|
+
border-destructive
|
|
17
|
+
hover:border-destructive
|
|
18
|
+
focus:border-destructive
|
|
19
|
+
focus:shadow-red-100
|
|
20
|
+
focus-within:shadow
|
|
21
|
+
focus-within:shadow-red-100
|
|
22
|
+
focus-visible:border-destructive
|
|
23
|
+
aria-invalid:ring-destructive/20
|
|
24
|
+
dark:aria-invalid:ring-destructive/40
|
|
25
|
+
aria-invalid:border-destructive
|
|
26
|
+
`,search:"pr-8 [&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-cancel-button]:display-none"}},defaultVariants:{variant:"default"}}),j={default:{inputType:"text",mask:l=>l},phone:{inputType:"tel",mask:a},"positive-integer":{inputType:"text",inputMode:"numeric",mask:b}},q=u.forwardRef(({className:l,variant:i,type:T,wrapperClassName:C=void 0,label:s,helperText:f,charLength:c,value:t,defaultValue:M,onChange:b,id:F,labelProps:L,format:p="default",...g},E)=>{let a=j[p],n=p!=="default",v=n?a.inputType:T,P=n?a.inputMode:void 0,[m,h]=useState(()=>{let e=t??M??"";return a.mask(e)}),y=F||u.useId(),V=t!==void 0?t:m,w=(()=>{if(t!==void 0)return V;if(n)return m})(),x=String(w??"").length>0,H=String(w??"").length,K=t!==void 0?{value:a.mask(t)}:n?{value:m}:{};useEffect(()=>{n&&t!==void 0&&h(a.mask(t));},[t,p]);let k=e=>{if(n){let I=a.mask(e.target.value);h(I),b?.({...e,target:{...e.target,value:I}});}else b?.(e);},A=e=>{if(n){if(e.metaKey||e.ctrlKey)return;!/[0-9/]/.test(e.key)&&!["Backspace","Delete","ArrowLeft","ArrowRight","Tab"].includes(e.key)&&e.preventDefault();}g.onKeyDown?.(e);};return jsxs("div",{className:a$1("relative w-full",C),children:[s&&(typeof s=="string"?jsx("label",{htmlFor:y,className:"header-xs text-primary mb-2 block font-bold",...L,children:s}):s),jsxs("div",{className:"relative",children:[jsx("input",{ref:E,id:y,type:v,inputMode:P,"data-slot":"input",className:a$1(_({variant:i}),l),onChange:k,onKeyDown:A,...K,...g}),i==="invalid"&&jsx(HiOutlineExclamationCircle,{size:"1.5rem",className:"text-destructive pointer-events-none absolute top-3 right-2"}),i==="search"&&!x&&jsx(LuSearch,{size:"1.25rem",className:"pointer-events-none absolute top-3.5 right-3 text-black"}),i==="search"&&x&&jsx(LuX,{size:"1.25rem",className:"absolute top-3.5 right-3 cursor-pointer text-black","aria-label":"Clear search",role:"button",onClick:()=>{k?.({target:{value:""}});}}),v==="time"&&jsx(LuClock4,{size:"1.25rem",className:"text-muted-foreground pointer-events-none absolute top-3.5 right-3"})]}),(f||c)&&jsxs("div",{className:"mt-2 flex items-center justify-between",children:[jsx("span",{className:a$1("text-sm",i==="invalid"?"text-destructive":"text-secondary"),children:f||""}),c&&jsxs("span",{className:a$1("text-sm",i==="invalid"?"text-destructive":"text-secondary"),children:[H,"/",c]})]})]})});q.displayName="Input";export{_ as a,q as b};//# sourceMappingURL=chunk-LFGDYEFJ.js.map
|
|
27
|
+
//# sourceMappingURL=chunk-LFGDYEFJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/v2/input/input.tsx"],"names":["inputVariants","cva","FORMAT_CONFIGS","value","maskPhone","maskPositiveInteger","Input","className","variant","passedType","wrapperClassName","label","helperText","charLength","defaultValue","onChange","id","labelProps","format","props","ref","formatConfig","isFormatted","type","inputMode","internalValue","setInternalValue","useState","initial","inputId","currentValue","displayValue","hasValue","currentLength","valueProps","useEffect","handleChange","formatted","handleKeyDown","jsxs","cn","jsx","HiOutlineExclamationCircle","LuSearch","LuX","LuClock4"],"mappings":"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","file":"chunk-LFGDYEFJ.js","sourcesContent":["import * as React from 'react';\nimport { ForwardedRef, useEffect, useState } from 'react';\nimport { cva, VariantProps } from 'class-variance-authority';\nimport { HiOutlineExclamationCircle } from 'react-icons/hi2';\nimport { LuClock4, LuSearch, LuX } from 'react-icons/lu';\n\nimport { cn } from '@/lib/utils';\nimport { maskPhone, maskPositiveInteger } from './formatters';\n\nconst inputVariants = cva(\n `\n flex items-center h-12 w-full min-w-0 rounded-md border bg-white px-3 py-3 text-base transition-all outline-none\n dark:bg-input/30 border-input shadow-xs\n placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground\n file:inline-flex file:h-6 file:mr-2 file:border-0 file:text-foreground\n disabled:cursor-not-allowed disabled:opacity-50 disabled:pointer-events-none disabled:bg-gray-200\n focus-visible:ring-ring/50 focus-visible:ring-[3px] \n `,\n {\n variants: {\n variant: {\n default: `\n hover:enabled:border-dark-green \n focus:enabled:border-dark-green\n focus:enabled:shadow-green-300\n focus-within:shadow\n focus-within:shadow-green-300\n focus-visible:border-dark-green \n `,\n invalid: `\n border-destructive\n hover:border-destructive\n focus:border-destructive\n focus:shadow-red-100\n focus-within:shadow\n focus-within:shadow-red-100\n focus-visible:border-destructive\n aria-invalid:ring-destructive/20\n dark:aria-invalid:ring-destructive/40\n aria-invalid:border-destructive \n `,\n // Hide chrome default search clear button with ::-webkit-search-cancel-button\n search:\n 'pr-8 [&::-webkit-search-cancel-button]:appearance-none [&::-webkit-search-cancel-button]:display-none',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ntype FormatConfig = {\n inputType: React.HTMLInputTypeAttribute;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n mask: (value: string) => string;\n};\n\nexport type InputFormat = 'default' | 'phone' | 'positive-integer';\n\nconst FORMAT_CONFIGS: Record<InputFormat, FormatConfig> = {\n default: {\n inputType: 'text',\n mask: (value) => value,\n },\n phone: {\n inputType: 'tel',\n mask: maskPhone,\n },\n 'positive-integer': {\n inputType: 'text',\n inputMode: 'numeric',\n mask: maskPositiveInteger,\n },\n};\n\nexport type InputProps = React.ComponentProps<'input'> &\n VariantProps<typeof inputVariants> & {\n wrapperClassName?: string;\n label?: React.ReactNode;\n helperText?: string;\n charLength?: number;\n labelProps?: React.ComponentProps<'label'>;\n format?: InputFormat;\n };\n\nconst Input = React.forwardRef(\n (\n {\n className,\n variant,\n type: passedType,\n wrapperClassName = undefined,\n label,\n helperText,\n charLength,\n value,\n defaultValue,\n onChange,\n id,\n labelProps,\n format = 'default',\n ...props\n }: InputProps,\n ref?: ForwardedRef<HTMLInputElement>,\n ) => {\n const formatConfig = FORMAT_CONFIGS[format];\n const isFormatted = format !== 'default';\n const type = isFormatted ? formatConfig.inputType : passedType;\n const inputMode = isFormatted ? formatConfig.inputMode : undefined;\n\n const [internalValue, setInternalValue] = useState<string>(() => {\n const initial = (value ?? defaultValue ?? '') as string;\n return formatConfig.mask(initial);\n });\n\n const inputId = id || React.useId();\n\n const currentValue = value !== undefined ? value : internalValue;\n\n const displayValue = (() => {\n if (value !== undefined) return currentValue;\n if (isFormatted) return internalValue;\n return undefined;\n })();\n\n const hasValue = String(displayValue ?? '').length > 0;\n const currentLength = String(displayValue ?? '').length;\n\n const valueProps = (() => {\n if (value !== undefined) return { value: formatConfig.mask(value as string) };\n if (isFormatted) return { value: internalValue };\n return {};\n })();\n\n useEffect(() => {\n if (isFormatted && value !== undefined) {\n setInternalValue(formatConfig.mask(value as string));\n }\n }, [value, format]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (isFormatted) {\n const formatted = formatConfig.mask(e.target.value);\n setInternalValue(formatted);\n onChange?.({ ...e, target: { ...e.target, value: formatted } });\n } else {\n onChange?.(e);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (isFormatted) {\n // Allow events to pass with keyboard shortcuts (Cmd/Ctrl + key)\n if (e.metaKey || e.ctrlKey) {\n return;\n }\n\n if (\n !/[0-9/]/.test(e.key) &&\n !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Tab'].includes(e.key)\n ) {\n e.preventDefault();\n }\n }\n props.onKeyDown?.(e);\n };\n\n return (\n <div className={cn('relative w-full', wrapperClassName)}>\n {label &&\n (typeof label === 'string' ? (\n <label\n htmlFor={inputId}\n className=\"header-xs text-primary mb-2 block font-bold\"\n {...labelProps}\n >\n {label}\n </label>\n ) : (\n label\n ))}\n <div className=\"relative\">\n <input\n ref={ref}\n id={inputId}\n type={type}\n inputMode={inputMode}\n data-slot=\"input\"\n className={cn(inputVariants({ variant }), className)}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n {...valueProps}\n {...props}\n />\n {variant === 'invalid' && (\n <HiOutlineExclamationCircle\n size=\"1.5rem\"\n className=\"text-destructive pointer-events-none absolute top-3 right-2\"\n />\n )}\n\n {variant === 'search' && !hasValue && (\n <LuSearch\n size=\"1.25rem\"\n className=\"pointer-events-none absolute top-3.5 right-3 text-black\"\n />\n )}\n {variant === 'search' && hasValue && (\n <LuX\n size=\"1.25rem\"\n className=\"absolute top-3.5 right-3 cursor-pointer text-black\"\n aria-label=\"Clear search\"\n role=\"button\"\n onClick={() => {\n const event = {\n target: { value: '' },\n } as React.ChangeEvent<HTMLInputElement>;\n handleChange?.(event);\n }}\n />\n )}\n\n {type === 'time' && (\n <LuClock4\n size=\"1.25rem\"\n className=\"text-muted-foreground pointer-events-none absolute top-3.5 right-3\"\n />\n )}\n </div>\n {(helperText || charLength) && (\n <div className=\"mt-2 flex items-center justify-between\">\n <span\n className={cn(\n 'text-sm',\n variant === 'invalid' ? 'text-destructive' : 'text-secondary',\n )}\n >\n {helperText || ''}\n </span>\n {charLength && (\n <span\n className={cn(\n 'text-sm',\n variant === 'invalid' ? 'text-destructive' : 'text-secondary',\n )}\n >\n {currentLength}/{charLength}\n </span>\n )}\n </div>\n )}\n </div>\n );\n },\n);\n\nInput.displayName = 'Input';\n\nexport { Input, inputVariants };\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {b}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {b}from'./chunk-SP2L5FI7.js';import {a}from'./chunk-YTIIAU4W.js';import*as e from'react';import w from'embla-carousel-react';import {LuArrowLeft,LuArrowRight}from'react-icons/lu';import {jsx,jsxs}from'react/jsx-runtime';var v=e.createContext(null);function d(){let t=e.useContext(v);if(!t)throw new Error("useCarousel must be used within a <Carousel />");return t}function T({orientation:t="horizontal",opts:l,setApi:o,plugins:s,className:u,children:c,...i}){let[x,r]=w({...l,axis:t==="horizontal"?"x":"y"},s),[P,R]=e.useState(false),[y,b]=e.useState(false),[N,S]=e.useState(0),[h,z]=e.useState(0),p=e.useCallback(C=>{C&&(R(C.canScrollPrev()),b(C.canScrollNext()),S(C.selectedScrollSnap()),z(C.scrollSnapList().length));},[]),g=e.useCallback(()=>{r?.scrollPrev();},[r]),E=e.useCallback(()=>{r?.scrollNext();},[r]);return e.useEffect(()=>{!r||!o||o(r);},[r,o]),e.useEffect(()=>{if(r)return p(r),r.on("reInit",p),r.on("select",p),()=>{r?.off("select",p);}},[r,p]),jsx(v.Provider,{value:{carouselRef:x,api:r,opts:l,orientation:t||(l?.axis==="y"?"vertical":"horizontal"),selectedIndex:N,slideCount:h,scrollPrev:g,scrollNext:E,canScrollPrev:P,canScrollNext:y},children:jsx("div",{className:a("relative",u),role:"region","aria-roledescription":"carousel","data-slot":"carousel",...i,children:c})})}function O({className:t,...l}){let{carouselRef:o,orientation:s}=d();return jsx("div",{ref:o,className:"overflow-hidden","data-slot":"carousel-content",children:jsx("div",{className:a("flex",s==="horizontal"?"-ml-4":"-mt-4 flex-col",t),...l})})}function F({className:t,...l}){let{orientation:o}=d();return jsx("div",{role:"group","aria-roledescription":"slide","data-slot":"carousel-item",className:a("min-w-0 shrink-0 grow-0 basis-full",o==="horizontal"?"pl-4":"pt-4",t),...l})}function j({className:t,variant:l="outline",size:o="sm",...s}){let{orientation:u,scrollPrev:c,canScrollPrev:i}=d();return jsxs(b,{"data-slot":"carousel-previous",variant:l,size:o,className:a("absolute size-8 rounded-full",u==="horizontal"?"top-1/2 -left-12 -translate-y-1/2":"-top-12 left-1/2 -translate-x-1/2 rotate-90",t),disabled:!i,onClick:c,...s,children:[jsx(LuArrowLeft,{}),jsx("span",{className:"sr-only",children:"Previous slide"})]})}function q({className:t,variant:l="outline",size:o="sm",...s}){let{orientation:u,scrollNext:c,canScrollNext:i}=d();return jsxs(b,{"data-slot":"carousel-next",variant:l,size:o,className:a("absolute size-8 rounded-full",u==="horizontal"?"top-1/2 -right-12 -translate-y-1/2":"-bottom-12 left-1/2 -translate-x-1/2 rotate-90",t),disabled:!i,onClick:c,...s,children:[jsx(LuArrowRight,{}),jsx("span",{className:"sr-only",children:"Next slide"})]})}function D({className:t,...l}){let{slideCount:o,selectedIndex:s}=d();return o<=1?null:jsxs("div",{className:a("text-muted-foreground text-sm",t),"data-slot":"carousel-fraction",...l,children:[s+1,"/",o]})}export{d as a,T as b,O as c,F as d,j as e,q as f,D as g};//# sourceMappingURL=chunk-M2YQU26J.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-M2YQU26J.js.map
|