@solace-health/ui 0.10.701 → 0.10.702

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/dist/AnimatedIcon/index.cjs +1 -1
  2. package/dist/AnimatedIcon/index.js +1 -1
  3. package/dist/BackLink/BackLink.cjs +1 -1
  4. package/dist/BackLink/BackLink.js +1 -1
  5. package/dist/Card/index.cjs +1 -1
  6. package/dist/Card/index.js +1 -1
  7. package/dist/DateDropdown/index.cjs +1 -1
  8. package/dist/DateDropdown/index.js +1 -1
  9. package/dist/DateSelectCalendar/DateSelectCalendar.cjs +1 -1
  10. package/dist/DateSelectCalendar/DateSelectCalendar.js +1 -1
  11. package/dist/Error/index.cjs +1 -1
  12. package/dist/Error/index.js +1 -1
  13. package/dist/ExpandableDrawer/index.cjs +1 -1
  14. package/dist/ExpandableDrawer/index.js +1 -1
  15. package/dist/File/index.cjs +1 -1
  16. package/dist/File/index.js +1 -1
  17. package/dist/Form/AddressSelect/index.cjs +1 -1
  18. package/dist/Form/AddressSelect/index.js +1 -1
  19. package/dist/Form/Checkbox/index.cjs +1 -1
  20. package/dist/Form/Checkbox/index.js +1 -1
  21. package/dist/Form/DateDropdown/index.cjs +1 -1
  22. package/dist/Form/DateDropdown/index.js +1 -1
  23. package/dist/Form/DateSelect/index.cjs +1 -1
  24. package/dist/Form/DateSelect/index.js +1 -1
  25. package/dist/Form/DateTextMaskInput/index.cjs +1 -1
  26. package/dist/Form/DateTextMaskInput/index.js +1 -1
  27. package/dist/Form/FileUpload/index.cjs +1 -1
  28. package/dist/Form/FileUpload/index.js +1 -1
  29. package/dist/Form/Keyword/index.cjs +1 -1
  30. package/dist/Form/Keyword/index.js +1 -1
  31. package/dist/Form/LocationSelect/index.cjs +1 -1
  32. package/dist/Form/LocationSelect/index.js +1 -1
  33. package/dist/Form/Number/index.cjs +1 -1
  34. package/dist/Form/Number/index.js +1 -1
  35. package/dist/Form/OTP/index.cjs +1 -1
  36. package/dist/Form/OTP/index.js +1 -1
  37. package/dist/Form/Radio/index.cjs +1 -1
  38. package/dist/Form/Radio/index.js +1 -1
  39. package/dist/Form/Select/index.cjs +1 -1
  40. package/dist/Form/Select/index.js +1 -1
  41. package/dist/Form/SelectMenu/index.cjs +1 -1
  42. package/dist/Form/SelectMenu/index.js +1 -1
  43. package/dist/Form/SentimentSelector/index.cjs +1 -1
  44. package/dist/Form/SentimentSelector/index.js +1 -1
  45. package/dist/Form/Signature/index.cjs +1 -1
  46. package/dist/Form/Signature/index.js +1 -1
  47. package/dist/Form/Text/index.cjs +1 -1
  48. package/dist/Form/Text/index.js +1 -1
  49. package/dist/Form/TextInput/index.cjs +1 -1
  50. package/dist/Form/TextInput/index.js +1 -1
  51. package/dist/Form/TextInput/styles.cjs +1 -1
  52. package/dist/Form/TextInput/styles.js +1 -1
  53. package/dist/Form/TextInput/text-mask/react/src/reactTextMask.cjs +1 -1
  54. package/dist/Form/TextInput/text-mask/react/src/reactTextMask.js +1 -1
  55. package/dist/Form/TimePicker/index.cjs +1 -1
  56. package/dist/Form/TimePicker/index.js +1 -1
  57. package/dist/Form/TimeSelect/index.cjs +1 -1
  58. package/dist/Form/TimeSelect/index.js +1 -1
  59. package/dist/Form/index.cjs +1 -1
  60. package/dist/Form/index.js +1 -1
  61. package/dist/Form/shared/FormInputLabel.cjs +1 -1
  62. package/dist/Form/shared/FormInputLabel.js +1 -1
  63. package/dist/Form/shared/HelpModal.cjs +1 -1
  64. package/dist/Form/shared/HelpModal.js +1 -1
  65. package/dist/IconSelector/IconSelector.cjs +1 -1
  66. package/dist/IconSelector/IconSelector.js +1 -1
  67. package/dist/Menu/ExpandIcon.cjs +1 -1
  68. package/dist/Menu/ExpandIcon.js +1 -1
  69. package/dist/Menu/index.cjs +1 -1
  70. package/dist/Menu/index.js +1 -1
  71. package/dist/Molecules/FilterPopover/FiltersMenu/FiltersMenu.cjs +1 -1
  72. package/dist/Molecules/FilterPopover/FiltersMenu/FiltersMenu.js +1 -1
  73. package/dist/Molecules/FilterPopover/index.cjs +1 -1
  74. package/dist/Molecules/FilterPopover/index.js +1 -1
  75. package/dist/NavigationMenu/ExpandIcon.cjs +1 -1
  76. package/dist/NavigationMenu/ExpandIcon.js +1 -1
  77. package/dist/NavigationMenu/index.cjs +1 -1
  78. package/dist/NavigationMenu/index.js +1 -1
  79. package/dist/NumberedProgressSteps/index.cjs +1 -1
  80. package/dist/NumberedProgressSteps/index.js +1 -1
  81. package/dist/PreviewDrawer/PreviewDrawer.cjs +1 -1
  82. package/dist/PreviewDrawer/PreviewDrawer.js +1 -1
  83. package/dist/Search/index.cjs +1 -1
  84. package/dist/Search/index.js +1 -1
  85. package/dist/SelectClient/index.cjs +1 -1
  86. package/dist/SelectClient/index.js +1 -1
  87. package/dist/SentimentSelector/index.cjs +1 -1
  88. package/dist/SentimentSelector/index.js +1 -1
  89. package/dist/SortableList/index.cjs +1 -1
  90. package/dist/SortableList/index.js +1 -1
  91. package/dist/TimeSelect/styles.cjs +4 -4
  92. package/dist/TimeSelect/styles.js +1 -1
  93. package/dist/assets/styles/tailwindTheme.css +7 -121
  94. package/dist/{chunk-HCMJMPCZ.cjs → chunk-2KZYFEKJ.cjs} +3 -3
  95. package/dist/{chunk-HCMJMPCZ.cjs.map → chunk-2KZYFEKJ.cjs.map} +1 -1
  96. package/dist/{chunk-LRWKN5IL.js → chunk-2MZHFLKQ.js} +2 -2
  97. package/dist/{chunk-LRWKN5IL.js.map → chunk-2MZHFLKQ.js.map} +1 -1
  98. package/dist/{chunk-7FRM2LZL.cjs → chunk-3HZOTBKZ.cjs} +2 -2
  99. package/dist/{chunk-7FRM2LZL.cjs.map → chunk-3HZOTBKZ.cjs.map} +1 -1
  100. package/dist/{chunk-SHU3LFW5.cjs → chunk-3HZZEZMH.cjs} +2 -2
  101. package/dist/{chunk-SHU3LFW5.cjs.map → chunk-3HZZEZMH.cjs.map} +1 -1
  102. package/dist/{chunk-LKF3BL45.js → chunk-5Q3THPJD.js} +2 -2
  103. package/dist/{chunk-LKF3BL45.js.map → chunk-5Q3THPJD.js.map} +1 -1
  104. package/dist/{chunk-APZMVLOQ.js → chunk-64BW3WOW.js} +3 -3
  105. package/dist/{chunk-APZMVLOQ.js.map → chunk-64BW3WOW.js.map} +1 -1
  106. package/dist/{chunk-DD5A5VMZ.cjs → chunk-7BHLEW4C.cjs} +2 -2
  107. package/dist/chunk-7BHLEW4C.cjs.map +1 -0
  108. package/dist/chunk-7FDSRATF.cjs +2 -0
  109. package/dist/chunk-7FDSRATF.cjs.map +1 -0
  110. package/dist/{chunk-HBGVAFZR.cjs → chunk-7TN7R7BF.cjs} +2 -2
  111. package/dist/{chunk-HBGVAFZR.cjs.map → chunk-7TN7R7BF.cjs.map} +1 -1
  112. package/dist/chunk-7YDYKTYH.js +2 -0
  113. package/dist/{chunk-C4QT2REU.js.map → chunk-7YDYKTYH.js.map} +1 -1
  114. package/dist/chunk-BMEIGKX6.js +2 -0
  115. package/dist/{chunk-CPEWTLAE.js.map → chunk-BMEIGKX6.js.map} +1 -1
  116. package/dist/{chunk-QQCG3BDP.cjs → chunk-CB6G6OIH.cjs} +2 -2
  117. package/dist/{chunk-QQCG3BDP.cjs.map → chunk-CB6G6OIH.cjs.map} +1 -1
  118. package/dist/chunk-CDHIFFS4.js +2 -0
  119. package/dist/chunk-CDHIFFS4.js.map +1 -0
  120. package/dist/{chunk-2J5WMSEN.js → chunk-D3QC25MI.js} +2 -2
  121. package/dist/{chunk-2J5WMSEN.js.map → chunk-D3QC25MI.js.map} +1 -1
  122. package/dist/{chunk-W7WDYG5N.js → chunk-DIHMEGMQ.js} +2 -2
  123. package/dist/{chunk-W7WDYG5N.js.map → chunk-DIHMEGMQ.js.map} +1 -1
  124. package/dist/{chunk-ZTDSRJUJ.cjs → chunk-EJVR3XRG.cjs} +2 -2
  125. package/dist/{chunk-ZTDSRJUJ.cjs.map → chunk-EJVR3XRG.cjs.map} +1 -1
  126. package/dist/chunk-F7ZNHD4C.js +2 -0
  127. package/dist/chunk-F7ZNHD4C.js.map +1 -0
  128. package/dist/{chunk-SKHANIYK.js → chunk-GY2SQISF.js} +2 -2
  129. package/dist/chunk-GY2SQISF.js.map +1 -0
  130. package/dist/{chunk-NYCMLUKP.cjs → chunk-GZVOKBML.cjs} +2 -2
  131. package/dist/{chunk-NYCMLUKP.cjs.map → chunk-GZVOKBML.cjs.map} +1 -1
  132. package/dist/chunk-HG62Z4MZ.cjs +2 -0
  133. package/dist/{chunk-LQ5UGPEI.cjs.map → chunk-HG62Z4MZ.cjs.map} +1 -1
  134. package/dist/{chunk-LFYJWXJ6.cjs → chunk-HGYAKQA3.cjs} +4 -4
  135. package/dist/{chunk-LFYJWXJ6.cjs.map → chunk-HGYAKQA3.cjs.map} +1 -1
  136. package/dist/{chunk-7OKSLNLM.js → chunk-HLHHTNKY.js} +3 -3
  137. package/dist/{chunk-7OKSLNLM.js.map → chunk-HLHHTNKY.js.map} +1 -1
  138. package/dist/{chunk-XTHGIU5X.cjs → chunk-ILEND5TM.cjs} +2 -2
  139. package/dist/{chunk-XTHGIU5X.cjs.map → chunk-ILEND5TM.cjs.map} +1 -1
  140. package/dist/{chunk-4R2KHTSG.cjs → chunk-LMBA2JFO.cjs} +2 -2
  141. package/dist/{chunk-4R2KHTSG.cjs.map → chunk-LMBA2JFO.cjs.map} +1 -1
  142. package/dist/{chunk-Y7VDSCWO.cjs → chunk-MBNVWLVX.cjs} +2 -2
  143. package/dist/{chunk-Y7VDSCWO.cjs.map → chunk-MBNVWLVX.cjs.map} +1 -1
  144. package/dist/{chunk-DWJXUICJ.js → chunk-OHNG7MQY.js} +2 -2
  145. package/dist/{chunk-DWJXUICJ.js.map → chunk-OHNG7MQY.js.map} +1 -1
  146. package/dist/{chunk-QZUVN273.js → chunk-QNYTQJJ7.js} +3 -3
  147. package/dist/{chunk-QZUVN273.js.map → chunk-QNYTQJJ7.js.map} +1 -1
  148. package/dist/{chunk-IRJ3W2BS.js → chunk-SUB2KUSX.js} +2 -2
  149. package/dist/{chunk-IRJ3W2BS.js.map → chunk-SUB2KUSX.js.map} +1 -1
  150. package/dist/{chunk-BACT2F73.cjs → chunk-T53BIHTS.cjs} +4 -4
  151. package/dist/{chunk-BACT2F73.cjs.map → chunk-T53BIHTS.cjs.map} +1 -1
  152. package/dist/{chunk-FAVZZXAX.js → chunk-UJVC7JDT.js} +2 -2
  153. package/dist/{chunk-FAVZZXAX.js.map → chunk-UJVC7JDT.js.map} +1 -1
  154. package/dist/chunk-X2CMJS7F.js +2 -0
  155. package/dist/{chunk-ANIHX243.js.map → chunk-X2CMJS7F.js.map} +1 -1
  156. package/dist/{chunk-AKBXPYUG.js → chunk-XF2UOCDW.js} +2 -2
  157. package/dist/{chunk-AKBXPYUG.js.map → chunk-XF2UOCDW.js.map} +1 -1
  158. package/dist/chunk-XL47QK2N.cjs +2 -0
  159. package/dist/chunk-XL47QK2N.cjs.map +1 -0
  160. package/dist/chunk-XNSQLAZT.cjs +2 -0
  161. package/dist/{chunk-XZWOIOFH.cjs.map → chunk-XNSQLAZT.cjs.map} +1 -1
  162. package/dist/index.cjs +1 -1
  163. package/dist/index.js +1 -1
  164. package/dist/metafile-cjs.json +1 -1
  165. package/dist/metafile-esm.json +1 -1
  166. package/dist/v2/address-input/address-input.cjs +1 -1
  167. package/dist/v2/address-input/address-input.js +1 -1
  168. package/dist/v2/breadcrumb/breadcrumb.cjs +2 -0
  169. package/dist/v2/breadcrumb/breadcrumb.cjs.map +1 -0
  170. package/dist/v2/breadcrumb/breadcrumb.d.ts +36 -0
  171. package/dist/v2/breadcrumb/breadcrumb.js +2 -0
  172. package/dist/v2/breadcrumb/breadcrumb.js.map +1 -0
  173. package/dist/v2/breadcrumb/breadcrumb.stories.d.ts +11 -0
  174. package/dist/v2/combobox/combobox.cjs +1 -1
  175. package/dist/v2/combobox/combobox.js +1 -1
  176. package/dist/v2/command/command.cjs +1 -1
  177. package/dist/v2/command/command.js +1 -1
  178. package/dist/v2/date-picker/date-picker-input.cjs +1 -1
  179. package/dist/v2/date-picker/date-picker-input.js +1 -1
  180. package/dist/v2/date-picker/date-picker.cjs +1 -1
  181. package/dist/v2/date-picker/date-picker.js +1 -1
  182. package/dist/v2/dialog/dialog.cjs +1 -1
  183. package/dist/v2/dialog/dialog.js +1 -1
  184. package/dist/v2/drawer/drawer.cjs +1 -1
  185. package/dist/v2/drawer/drawer.js +1 -1
  186. package/dist/v2/dropzone/dropzone.cjs +1 -1
  187. package/dist/v2/dropzone/dropzone.js +1 -1
  188. package/dist/v2/image-preview/image-preview.cjs +1 -1
  189. package/dist/v2/image-preview/image-preview.js +1 -1
  190. package/dist/v2/index.cjs +1 -1
  191. package/dist/v2/index.d.ts +1 -0
  192. package/dist/v2/index.js +1 -1
  193. package/dist/v2/multiselect/components/MultiSelectCommandGroup.cjs +1 -1
  194. package/dist/v2/multiselect/components/MultiSelectCommandGroup.js +1 -1
  195. package/dist/v2/multiselect/components/MultiSelectDropdown.cjs +1 -1
  196. package/dist/v2/multiselect/components/MultiSelectDropdown.js +1 -1
  197. package/dist/v2/multiselect/multiselect.cjs +1 -1
  198. package/dist/v2/multiselect/multiselect.js +1 -1
  199. package/dist/v2/time-select/time-select.cjs +1 -1
  200. package/dist/v2/time-select/time-select.js +1 -1
  201. package/dist/v2/toast/toaster.cjs +1 -1
  202. package/dist/v2/toast/toaster.js +1 -1
  203. package/package.json +24 -38
  204. package/README.md +0 -125
  205. package/dist/chunk-ANIHX243.js +0 -2
  206. package/dist/chunk-C4QT2REU.js +0 -2
  207. package/dist/chunk-CPEWTLAE.js +0 -2
  208. package/dist/chunk-DD5A5VMZ.cjs.map +0 -1
  209. package/dist/chunk-EGZAP6CJ.cjs +0 -2
  210. package/dist/chunk-EGZAP6CJ.cjs.map +0 -1
  211. package/dist/chunk-J2S7Y3AJ.js +0 -2
  212. package/dist/chunk-J2S7Y3AJ.js.map +0 -1
  213. package/dist/chunk-LQ5UGPEI.cjs +0 -2
  214. package/dist/chunk-SKHANIYK.js.map +0 -1
  215. package/dist/chunk-XZWOIOFH.cjs +0 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/date-picker/date-picker.tsx","../src/v2/date-picker/date-picker-input.tsx","../src/v2/image-preview/image-preview.tsx","../src/v2/time-select/time-select.tsx","../src/v2/address-input/address-input.tsx"],"names":["dayjs","customParseFormat","DISPLAY_FORMAT","INPUT_MASK","ACCEPTED_INPUT_FORMATS","formatDate","date","DatePicker","className","wrapperClassName","value","onChange","disabled","calendarProps","placeholderProp","inputProps","showCalendarIcon","editable","open","setOpen","useState","placeholder","navigatedMonth","setNavigatedMonth","prevValueForMonth","useRef","calendarMonth","isDateAllowed","isMatch","onChangeRef","isDateAllowedRef","maskRef","setMaskValue","useIMask","maskedValue","parsed","handleSelect","val","handlePaste","e","pasted","handleFocus","handleBlur","current","inputClasses","cn","inputVariants","jsxs","Popover","jsx","PopoverTrigger","Input","LuCalendar","PopoverContent","Calendar","maskDate","digits","parseDate","parts","month","day","year","DatePickerInput","variant","setMonth","inputValue","setInputValue","lastSyncedRef","useEffect","formatted","handleInputChange","masked","handleKeyDown","Button","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","triggerIcon","getSublabel","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","Select","SelectTrigger","SelectValue","SelectContent","sublabel","SelectItem","time_select_default","getAddressAttributes","result","city","state","streetNumber","streetName","unit","zip","component","type","escaped","descriptorMatch","lat","long","street","MIN_ADDRESS_LENGTH","AddressInputInternal","onSelectAddress","rest","dropdownRef","listboxIdRef","highlightedIndex","setHighlightedIndex","data","setValue","clearSuggestions","usePlacesAutocomplete","closeSuggestions","useCallback","handleClickOutside","event","handleEscape","handleAddressSelect","address","getGeocode","results","formattedResults","handleAddressOnChange","highlightedOptionId","next","suggestion","index","optionId","isHighlighted","libraries","AddressInput","googleMapsApiKey","props","isLoaded","loadError","useLoadScript"],"mappings":"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","file":"chunk-QQCG3BDP.cjs","sourcesContent":["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","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 type { ReactElement, ReactNode } 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 triggerIcon?: ReactElement;\n getSublabel?: (interval: Interval) => ReactNode;\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 triggerIcon,\n getSublabel,\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 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\n className={cn('max-w-[240px] md:w-[150px]', className)}\n size={size}\n triggerIcon={triggerIcon}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {intervals.map((time) => {\n const sublabel = getSublabel?.(time);\n return (\n <SelectItem\n className={cn(sublabel ? 'h-auto py-2' : 'h-10')}\n key={time.value.raw}\n value={time.value.raw}\n sublabel={sublabel}\n >\n {time.label}\n </SelectItem>\n );\n })}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n","import usePlacesAutocomplete, { type GeocodeResult, getGeocode } from 'use-places-autocomplete';\nimport { type ComponentProps, useCallback, useEffect, useRef, useState } from 'react';\nimport { useLoadScript } from '@react-google-maps/api';\nimport { Input } from '@/v2';\n\nexport type AddressResults = {\n city: string;\n state: string;\n street: string;\n unit: string;\n zip: string;\n lat: number;\n long: number;\n};\n\nexport const getAddressAttributes = (result: GeocodeResult): AddressResults => {\n let city = '';\n let state = '';\n let streetNumber = '';\n let streetName = '';\n let unit = '';\n let zip = '';\n\n result.address_components.forEach((component) => {\n component.types.some((type) => {\n switch (type) {\n case 'locality':\n city = component.long_name; // Always prefer locality\n return true;\n case 'sublocality':\n case 'administrative_area_level_3':\n case 'neighborhood':\n city = city || component.long_name; // sets if no city\n return true;\n case 'administrative_area_level_1':\n state = component.short_name;\n return true;\n case 'street_number':\n streetNumber = component.short_name;\n return true;\n case 'route':\n streetName = component.short_name;\n return true;\n case 'subpremise':\n unit = component.long_name;\n return true;\n case 'postal_code':\n zip = component.short_name;\n return true;\n default:\n return false;\n }\n });\n });\n\n // Google's subpremise is the bare value (e.g. \"4\"), and its descriptor (Apt/Suite/#) only appears in formatted_address\n if (unit) {\n const escaped = unit.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n const descriptorMatch = result.formatted_address?.match(\n new RegExp(\n `(?<![A-Za-z])(?:Apt|Apartment|Suite|Ste|Unit|Bldg|Building|Fl|Floor|Rm|Room|Lot|Space|Spc|Trlr|Trailer|#)\\\\.?\\\\s*#?\\\\s*${escaped}\\\\b`,\n 'i',\n ),\n );\n\n if (descriptorMatch) {\n unit = descriptorMatch[0].trim();\n }\n }\n\n const lat = result.geometry.location.lat();\n const long = result.geometry.location.lng();\n const street = `${streetNumber} ${streetName}`.trim();\n\n return { city, state, street, unit, zip, lat, long };\n};\n\ntype InputProps = ComponentProps<typeof Input>;\n\ntype AddressInputProps = InputProps & {\n onSelectAddress?: (results: AddressResults) => void;\n};\n\nconst MIN_ADDRESS_LENGTH = 2;\n\nexport const AddressInputInternal = ({\n onSelectAddress = undefined,\n ...rest\n}: AddressInputProps) => {\n const dropdownRef = useRef<HTMLDivElement>(null);\n const listboxIdRef = useRef(`address-input-${Math.random().toString(36).slice(2)}-listbox`);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n const {\n suggestions: { data = [] },\n setValue,\n clearSuggestions,\n } = usePlacesAutocomplete({\n requestOptions: {\n componentRestrictions: { country: 'us' },\n },\n });\n\n const closeSuggestions = useCallback(() => {\n clearSuggestions();\n setHighlightedIndex(-1);\n }, [clearSuggestions]);\n\n // Handle click outside to close suggestions\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n closeSuggestions();\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n closeSuggestions();\n }\n };\n\n if (data.length > 0) {\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleEscape);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleEscape);\n };\n }, [data.length, closeSuggestions]);\n\n useEffect(() => {\n if (data.length === 0) {\n setHighlightedIndex(-1);\n } else {\n setHighlightedIndex((current) => {\n if (current < 0) {\n return current;\n }\n\n return Math.min(current, data.length - 1);\n });\n }\n }, [data.length]);\n\n const handleAddressSelect = (address: string) => {\n setValue(address, false);\n closeSuggestions();\n\n if (address.length <= MIN_ADDRESS_LENGTH) {\n return;\n }\n\n getGeocode({ address }).then((results) => {\n if (!results || results.length === 0) {\n return;\n }\n\n const formattedResults = getAddressAttributes(results[0]);\n onSelectAddress?.(formattedResults);\n });\n };\n\n const handleAddressOnChange = useCallback(\n (inputValue: string) => {\n setValue(inputValue);\n setHighlightedIndex(-1);\n },\n [setValue],\n );\n\n const highlightedOptionId =\n highlightedIndex >= 0 ? `${listboxIdRef.current}-option-${highlightedIndex}` : undefined;\n\n return (\n <div className=\"relative\">\n <Input\n {...rest}\n onChange={(e) => {\n rest.onChange?.(e);\n handleAddressOnChange(e.target.value);\n }}\n onKeyDown={(e) => {\n rest.onKeyDown?.(e);\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (!data.length) {\n if (e.key === 'Escape') {\n closeSuggestions();\n }\n return;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setHighlightedIndex((current) => {\n const next = current + 1;\n if (next >= data.length || next < 0) {\n return 0;\n }\n return next;\n });\n return;\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setHighlightedIndex((current) => {\n if (current <= 0) {\n return data.length - 1;\n }\n return current - 1;\n });\n return;\n }\n\n if (e.key === 'Enter' && highlightedIndex >= 0) {\n e.preventDefault();\n const suggestion = data[highlightedIndex];\n if (suggestion) {\n handleAddressSelect(suggestion.description);\n }\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n closeSuggestions();\n }\n }}\n role=\"combobox\"\n aria-expanded={data.length > 0}\n aria-controls={data.length > 0 ? listboxIdRef.current : undefined}\n aria-activedescendant={highlightedOptionId}\n aria-autocomplete=\"list\"\n />\n {data.length > 0 && (\n <div\n ref={dropdownRef}\n id={listboxIdRef.current}\n role=\"listbox\"\n className=\"z-modal-stacking-context absolute mt-1 max-h-60 w-full overflow-auto rounded-md border border-gray-200 bg-white shadow-lg\"\n >\n {data.map((suggestion, index) => {\n const optionId = `${listboxIdRef.current}-option-${index}`;\n const isHighlighted = index === highlightedIndex;\n\n return (\n <div\n key={suggestion.place_id}\n id={optionId}\n role=\"option\"\n aria-selected={isHighlighted}\n tabIndex={-1}\n className={`cursor-pointer px-3 py-2 text-sm hover:bg-green-100 ${\n isHighlighted ? 'bg-green-100' : ''\n }`}\n onMouseEnter={() => setHighlightedIndex(index)}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => handleAddressSelect(suggestion.description)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleAddressSelect(suggestion.description);\n }\n }}\n >\n {suggestion.description}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\nconst libraries: ['places'] = ['places'];\n\nexport const AddressInput = ({\n googleMapsApiKey,\n onSelectAddress = undefined,\n ...props\n}: AddressInputProps & { googleMapsApiKey: string }) => {\n const { isLoaded, loadError } = useLoadScript({\n googleMapsApiKey,\n libraries,\n });\n // if not loaded or error, return regular input\n if (!isLoaded || loadError) {\n return <Input {...props} />;\n }\n return <AddressInputInternal onSelectAddress={onSelectAddress} {...props} />;\n};\n"]}
1
+ {"version":3,"sources":["../src/v2/date-picker/date-picker.tsx","../src/v2/date-picker/date-picker-input.tsx","../src/v2/image-preview/image-preview.tsx","../src/v2/time-select/time-select.tsx","../src/v2/address-input/address-input.tsx"],"names":["dayjs","customParseFormat","DISPLAY_FORMAT","INPUT_MASK","ACCEPTED_INPUT_FORMATS","formatDate","date","DatePicker","className","wrapperClassName","value","onChange","disabled","calendarProps","placeholderProp","inputProps","showCalendarIcon","editable","open","setOpen","useState","placeholder","navigatedMonth","setNavigatedMonth","prevValueForMonth","useRef","calendarMonth","isDateAllowed","isMatch","onChangeRef","isDateAllowedRef","maskRef","setMaskValue","useIMask","maskedValue","parsed","handleSelect","val","handlePaste","e","pasted","handleFocus","handleBlur","current","inputClasses","cn","inputVariants","jsxs","Popover","jsx","PopoverTrigger","Input","LuCalendar","PopoverContent","Calendar","maskDate","digits","parseDate","parts","month","day","year","DatePickerInput","variant","setMonth","inputValue","setInputValue","lastSyncedRef","useEffect","formatted","handleInputChange","masked","handleKeyDown","Button","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","triggerIcon","getSublabel","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","Select","SelectTrigger","SelectValue","SelectContent","sublabel","SelectItem","time_select_default","getAddressAttributes","result","city","state","streetNumber","streetName","unit","zip","component","type","escaped","descriptorMatch","lat","long","street","MIN_ADDRESS_LENGTH","AddressInputInternal","onSelectAddress","rest","dropdownRef","listboxIdRef","highlightedIndex","setHighlightedIndex","data","setValue","clearSuggestions","usePlacesAutocomplete","closeSuggestions","useCallback","handleClickOutside","event","handleEscape","handleAddressSelect","address","getGeocode","results","formattedResults","handleAddressOnChange","highlightedOptionId","next","suggestion","index","optionId","isHighlighted","libraries","AddressInput","googleMapsApiKey","props","isLoaded","loadError","useLoadScript"],"mappings":"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","file":"chunk-CB6G6OIH.cjs","sourcesContent":["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","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 type { ReactElement, ReactNode } 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 triggerIcon?: ReactElement;\n getSublabel?: (interval: Interval) => ReactNode;\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 triggerIcon,\n getSublabel,\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 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\n className={cn('max-w-[240px] md:w-[150px]', className)}\n size={size}\n triggerIcon={triggerIcon}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {intervals.map((time) => {\n const sublabel = getSublabel?.(time);\n return (\n <SelectItem\n className={cn(sublabel ? 'h-auto py-2' : 'h-10')}\n key={time.value.raw}\n value={time.value.raw}\n sublabel={sublabel}\n >\n {time.label}\n </SelectItem>\n );\n })}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n","import usePlacesAutocomplete, { type GeocodeResult, getGeocode } from 'use-places-autocomplete';\nimport { type ComponentProps, useCallback, useEffect, useRef, useState } from 'react';\nimport { useLoadScript } from '@react-google-maps/api';\nimport { Input } from '@/v2';\n\nexport type AddressResults = {\n city: string;\n state: string;\n street: string;\n unit: string;\n zip: string;\n lat: number;\n long: number;\n};\n\nexport const getAddressAttributes = (result: GeocodeResult): AddressResults => {\n let city = '';\n let state = '';\n let streetNumber = '';\n let streetName = '';\n let unit = '';\n let zip = '';\n\n result.address_components.forEach((component) => {\n component.types.some((type) => {\n switch (type) {\n case 'locality':\n city = component.long_name; // Always prefer locality\n return true;\n case 'sublocality':\n case 'administrative_area_level_3':\n case 'neighborhood':\n city = city || component.long_name; // sets if no city\n return true;\n case 'administrative_area_level_1':\n state = component.short_name;\n return true;\n case 'street_number':\n streetNumber = component.short_name;\n return true;\n case 'route':\n streetName = component.short_name;\n return true;\n case 'subpremise':\n unit = component.long_name;\n return true;\n case 'postal_code':\n zip = component.short_name;\n return true;\n default:\n return false;\n }\n });\n });\n\n // Google's subpremise is the bare value (e.g. \"4\"), and its descriptor (Apt/Suite/#) only appears in formatted_address\n if (unit) {\n const escaped = unit.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n const descriptorMatch = result.formatted_address?.match(\n new RegExp(\n `(?<![A-Za-z])(?:Apt|Apartment|Suite|Ste|Unit|Bldg|Building|Fl|Floor|Rm|Room|Lot|Space|Spc|Trlr|Trailer|#)\\\\.?\\\\s*#?\\\\s*${escaped}\\\\b`,\n 'i',\n ),\n );\n\n if (descriptorMatch) {\n unit = descriptorMatch[0].trim();\n }\n }\n\n const lat = result.geometry.location.lat();\n const long = result.geometry.location.lng();\n const street = `${streetNumber} ${streetName}`.trim();\n\n return { city, state, street, unit, zip, lat, long };\n};\n\ntype InputProps = ComponentProps<typeof Input>;\n\ntype AddressInputProps = InputProps & {\n onSelectAddress?: (results: AddressResults) => void;\n};\n\nconst MIN_ADDRESS_LENGTH = 2;\n\nexport const AddressInputInternal = ({\n onSelectAddress = undefined,\n ...rest\n}: AddressInputProps) => {\n const dropdownRef = useRef<HTMLDivElement>(null);\n const listboxIdRef = useRef(`address-input-${Math.random().toString(36).slice(2)}-listbox`);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n const {\n suggestions: { data = [] },\n setValue,\n clearSuggestions,\n } = usePlacesAutocomplete({\n requestOptions: {\n componentRestrictions: { country: 'us' },\n },\n });\n\n const closeSuggestions = useCallback(() => {\n clearSuggestions();\n setHighlightedIndex(-1);\n }, [clearSuggestions]);\n\n // Handle click outside to close suggestions\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n closeSuggestions();\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n closeSuggestions();\n }\n };\n\n if (data.length > 0) {\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleEscape);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleEscape);\n };\n }, [data.length, closeSuggestions]);\n\n useEffect(() => {\n if (data.length === 0) {\n setHighlightedIndex(-1);\n } else {\n setHighlightedIndex((current) => {\n if (current < 0) {\n return current;\n }\n\n return Math.min(current, data.length - 1);\n });\n }\n }, [data.length]);\n\n const handleAddressSelect = (address: string) => {\n setValue(address, false);\n closeSuggestions();\n\n if (address.length <= MIN_ADDRESS_LENGTH) {\n return;\n }\n\n getGeocode({ address }).then((results) => {\n if (!results || results.length === 0) {\n return;\n }\n\n const formattedResults = getAddressAttributes(results[0]);\n onSelectAddress?.(formattedResults);\n });\n };\n\n const handleAddressOnChange = useCallback(\n (inputValue: string) => {\n setValue(inputValue);\n setHighlightedIndex(-1);\n },\n [setValue],\n );\n\n const highlightedOptionId =\n highlightedIndex >= 0 ? `${listboxIdRef.current}-option-${highlightedIndex}` : undefined;\n\n return (\n <div className=\"relative\">\n <Input\n {...rest}\n onChange={(e) => {\n rest.onChange?.(e);\n handleAddressOnChange(e.target.value);\n }}\n onKeyDown={(e) => {\n rest.onKeyDown?.(e);\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (!data.length) {\n if (e.key === 'Escape') {\n closeSuggestions();\n }\n return;\n }\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setHighlightedIndex((current) => {\n const next = current + 1;\n if (next >= data.length || next < 0) {\n return 0;\n }\n return next;\n });\n return;\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setHighlightedIndex((current) => {\n if (current <= 0) {\n return data.length - 1;\n }\n return current - 1;\n });\n return;\n }\n\n if (e.key === 'Enter' && highlightedIndex >= 0) {\n e.preventDefault();\n const suggestion = data[highlightedIndex];\n if (suggestion) {\n handleAddressSelect(suggestion.description);\n }\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n closeSuggestions();\n }\n }}\n role=\"combobox\"\n aria-expanded={data.length > 0}\n aria-controls={data.length > 0 ? listboxIdRef.current : undefined}\n aria-activedescendant={highlightedOptionId}\n aria-autocomplete=\"list\"\n />\n {data.length > 0 && (\n <div\n ref={dropdownRef}\n id={listboxIdRef.current}\n role=\"listbox\"\n className=\"z-modal-stacking-context absolute mt-1 max-h-60 w-full overflow-auto rounded-md border border-gray-200 bg-white shadow-lg\"\n >\n {data.map((suggestion, index) => {\n const optionId = `${listboxIdRef.current}-option-${index}`;\n const isHighlighted = index === highlightedIndex;\n\n return (\n <div\n key={suggestion.place_id}\n id={optionId}\n role=\"option\"\n aria-selected={isHighlighted}\n tabIndex={-1}\n className={`cursor-pointer px-3 py-2 text-sm hover:bg-green-100 ${\n isHighlighted ? 'bg-green-100' : ''\n }`}\n onMouseEnter={() => setHighlightedIndex(index)}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => handleAddressSelect(suggestion.description)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleAddressSelect(suggestion.description);\n }\n }}\n >\n {suggestion.description}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\nconst libraries: ['places'] = ['places'];\n\nexport const AddressInput = ({\n googleMapsApiKey,\n onSelectAddress = undefined,\n ...props\n}: AddressInputProps & { googleMapsApiKey: string }) => {\n const { isLoaded, loadError } = useLoadScript({\n googleMapsApiKey,\n libraries,\n });\n // if not loaded or error, return regular input\n if (!isLoaded || loadError) {\n return <Input {...props} />;\n }\n return <AddressInputInternal onSelectAddress={onSelectAddress} {...props} />;\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import {a as a$1,c,d,f}from'./chunk-5VAGCQBW.js';import {a}from'./chunk-YTIIAU4W.js';import*as x from'react';import {Slot}from'radix-ui/slot';import {LuChevronRight,LuEllipsis}from'react-icons/lu';import {jsx,jsxs}from'react/jsx-runtime';function M({...e}){return jsx("nav",{"aria-label":"breadcrumb","data-slot":"breadcrumb",...e})}function w({className:e,...a$1}){return jsx("ol",{"data-slot":"breadcrumb-list",className:a("text-secondary flex flex-wrap items-center gap-2 text-base break-words",e),...a$1})}function L({className:e,...a$1}){return jsx("li",{"data-slot":"breadcrumb-item",className:a("inline-flex items-center gap-2",e),...a$1})}function C({asChild:e,className:a$1,...t}){return jsx(e?Slot:"a",{"data-slot":"breadcrumb-link",className:a("text-secondary hover:text-primary focus-visible:ring-ring/50 rounded-sm transition-colors outline-none focus-visible:ring-[3px]",a$1),...t})}function E({className:e,...a$1}){return jsx("span",{"data-slot":"breadcrumb-page","aria-current":"page",className:a("text-primary font-normal",e),...a$1})}function S({children:e,className:a$1,...t}){return jsx("li",{"data-slot":"breadcrumb-separator",role:"presentation","aria-hidden":"true",className:a("text-secondary [&>svg]:size-4",a$1),...t,children:e??jsx(LuChevronRight,{})})}function $({className:e,...a$1}){return jsxs("span",{"data-slot":"breadcrumb-ellipsis",className:a("flex size-6 items-center justify-center",e),...a$1,children:[jsx(LuEllipsis,{className:"size-4","aria-hidden":"true"}),jsx("span",{className:"sr-only",children:"More"})]})}function D(e,a){let t=`${String(e.label)}|${e.href??""}`,o=a.slice(0,a.indexOf(e)).filter(l=>`${String(l.label)}|${l.href??""}`===t).length;return `${t}|${o}`}function H({items:e,separator:a,maxItems:t,renderLink:o,...l}){let i=t===void 0?void 0:Math.max(t,3),u=i!==void 0&&e.length>i,p=u?i-1:0,y=u?e.slice(1,e.length-p):[],b=u?[e[0],"ellipsis",...e.slice(e.length-p)]:e,N=(n,d)=>d?jsx(E,{children:n.label}):o?jsx(C,{asChild:true,children:o(n,n.label)}):jsx(C,{href:n.href,onClick:n.onClick,children:n.label});return jsx(M,{...l,children:jsx(w,{children:b.map((n,d$1)=>{let f$1=d$1===b.length-1,P=n==="ellipsis"?"ellipsis":D(n,e);return jsxs(x.Fragment,{children:[jsx(L,{children:n==="ellipsis"?jsxs(a$1,{children:[jsx(c,{className:"focus-visible:ring-ring/50 rounded-sm outline-none focus-visible:ring-[3px]","aria-label":"Show hidden breadcrumbs",children:jsx($,{})}),jsx(d,{align:"start",children:y.map(s=>jsx(f,{asChild:true,children:o?o(s,s.label):jsx("a",{href:s.href,onClick:s.onClick,children:s.label})},D(s,e)))})]}):N(n,f$1)}),!f$1&&jsx(S,{children:a})]},P)})})})}export{M as a,w as b,L as c,C as d,E as e,S as f,$ as g,H as h};//# sourceMappingURL=chunk-CDHIFFS4.js.map
2
+ //# sourceMappingURL=chunk-CDHIFFS4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/v2/breadcrumb/breadcrumb.tsx"],"names":["Breadcrumb","props","jsx","BreadcrumbList","className","cn","BreadcrumbItem","BreadcrumbLink","asChild","Slot","BreadcrumbPage","BreadcrumbSeparator","children","LuChevronRight","BreadcrumbEllipsis","jsxs","LuEllipsis","keyFor","item","items","base","occurrence","other","Breadcrumbs","separator","maxItems","renderLink","limit","collapse","tailCount","hidden","visible","renderCrumb","isLast","entry","index","key","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem"],"mappings":"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","file":"chunk-CDHIFFS4.js","sourcesContent":["import * as React from 'react';\nimport { Slot } from 'radix-ui/slot';\nimport { LuChevronRight, LuEllipsis } from 'react-icons/lu';\n\nimport { cn } from '@/lib/utils';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '../dropdown-menu/dropdown-menu';\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<'nav'>) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />;\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<'ol'>) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n 'text-secondary flex flex-wrap items-center gap-2 text-base break-words',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn('inline-flex items-center gap-2', className)}\n {...props}\n />\n );\n}\n\n/** A link to an ancestor page. Use `asChild` to render your router's link component. */\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<'a'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\n 'text-secondary hover:text-primary focus-visible:ring-ring/50 rounded-sm transition-colors outline-none focus-visible:ring-[3px]',\n className,\n )}\n {...props}\n />\n );\n}\n\n/** The current page. Rendered as non-interactive text in the primary color. */\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n aria-current=\"page\"\n className={cn('text-primary font-normal', className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({ children, className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('text-secondary [&>svg]:size-4', className)}\n {...props}\n >\n {children ?? <LuChevronRight />}\n </li>\n );\n}\n\nfunction BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n className={cn('flex size-6 items-center justify-center', className)}\n {...props}\n >\n <LuEllipsis className=\"size-4\" aria-hidden=\"true\" />\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n\ntype BreadcrumbItemData = {\n label: React.ReactNode;\n /** Omit on the last item (the current page). */\n href?: string;\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n};\n\ntype BreadcrumbsProps = Omit<React.ComponentProps<'nav'>, 'children'> & {\n items: BreadcrumbItemData[];\n /** Custom separator, defaults to a chevron. */\n separator?: React.ReactNode;\n /**\n * Max crumbs shown before the middle ones collapse into an ellipsis menu. The first and last\n * crumbs are always shown. Minimum effective value is 3.\n */\n maxItems?: number;\n /** Render links with your router, e.g. `(item, node) => <Link to={item.href}>{node}</Link>`. */\n renderLink?: (item: BreadcrumbItemData, children: React.ReactNode) => React.ReactNode;\n};\n\n/** Stable key for a crumb: label + href, suffixed by occurrence so duplicates stay unique. */\nfunction keyFor(item: BreadcrumbItemData, items: BreadcrumbItemData[]) {\n const base = `${String(item.label)}|${item.href ?? ''}`;\n const occurrence = items\n .slice(0, items.indexOf(item))\n .filter((other) => `${String(other.label)}|${other.href ?? ''}` === base).length;\n return `${base}|${occurrence}`;\n}\n\n/**\n * Data-driven breadcrumb. The last item is the current page (primary text, not a link); every\n * other item is a secondary-colored link. Built from the `Breadcrumb*` parts above.\n */\nfunction Breadcrumbs({ items, separator, maxItems, renderLink, ...props }: BreadcrumbsProps) {\n const limit = maxItems === undefined ? undefined : Math.max(maxItems, 3);\n const collapse = limit !== undefined && items.length > limit;\n const tailCount = collapse ? limit - 1 : 0;\n const hidden = collapse ? items.slice(1, items.length - tailCount) : [];\n const visible: Array<BreadcrumbItemData | 'ellipsis'> = collapse\n ? [items[0], 'ellipsis', ...items.slice(items.length - tailCount)]\n : items;\n\n const renderCrumb = (item: BreadcrumbItemData, isLast: boolean) => {\n if (isLast) return <BreadcrumbPage>{item.label}</BreadcrumbPage>;\n if (renderLink) {\n return (\n <BreadcrumbLink asChild>\n {renderLink(item, item.label) as React.ReactElement}\n </BreadcrumbLink>\n );\n }\n return (\n <BreadcrumbLink href={item.href} onClick={item.onClick}>\n {item.label}\n </BreadcrumbLink>\n );\n };\n\n return (\n <Breadcrumb {...props}>\n <BreadcrumbList>\n {visible.map((entry, index) => {\n const isLast = index === visible.length - 1;\n const key = entry === 'ellipsis' ? 'ellipsis' : keyFor(entry, items);\n\n return (\n <React.Fragment key={key}>\n <BreadcrumbItem>\n {entry === 'ellipsis' ? (\n <DropdownMenu>\n <DropdownMenuTrigger\n className=\"focus-visible:ring-ring/50 rounded-sm outline-none focus-visible:ring-[3px]\"\n aria-label=\"Show hidden breadcrumbs\"\n >\n <BreadcrumbEllipsis />\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n {hidden.map((item) => (\n <DropdownMenuItem key={keyFor(item, items)} asChild>\n {renderLink ? (\n (renderLink(item, item.label) as React.ReactElement)\n ) : (\n <a href={item.href} onClick={item.onClick}>\n {item.label}\n </a>\n )}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n ) : (\n renderCrumb(entry, isLast)\n )}\n </BreadcrumbItem>\n {!isLast && <BreadcrumbSeparator>{separator}</BreadcrumbSeparator>}\n </React.Fragment>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n );\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n Breadcrumbs,\n type BreadcrumbItemData,\n type BreadcrumbsProps,\n};\n"]}
@@ -1,2 +1,2 @@
1
- import {a,b,c}from'./chunk-YVP6QCW6.js';import {a as a$2,c as c$1,d,e,f,h}from'./chunk-IRJ3W2BS.js';import {a as a$1}from'./chunk-YTIIAU4W.js';import {LuSearch,LuChevronsUpDown,LuCheck}from'react-icons/lu';import {useState}from'react';import {jsxs,jsx}from'react/jsx-runtime';var A=({classNames:r=void 0,disabled:w=false,options:t,preSearchOptions:N=void 0,onSearchChange:P=void 0,onChange:k=void 0,onOpenChange:l=void 0,placeholder:O="Select an option",searchLabel:L="Search...",notFoundMessage:z="Not found.",value:i=void 0,size:T="default",error:d$1=false,shouldFilter:I=true})=>{let[s,p]=useState(false),[_,m]=useState(false),F=_?t:N||t;return jsxs(a,{open:s,onOpenChange:()=>{p(!s),m(false),l?.(!s);},children:[jsxs(b,{"aria-invalid":d$1,disabled:w,className:a$1("focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:border-dark-green inline-flex h-12 w-full shrink-0 cursor-pointer items-center justify-between gap-2 rounded-md border px-4 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:bg-gray-200 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5",T==="sm"&&"py-xs h-8 px-3 [&_svg:not([class*='size-'])]:size-4",r?.trigger),children:[jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[!i&&jsx(LuSearch,{className:a$1(d$1&&"text-red")}),jsx("span",{className:"block min-w-0 truncate",children:i?t.find(e=>e.value===i)?.label:O})]}),jsx(LuChevronsUpDown,{className:"opacity-50"})]}),jsx(c,{align:"start",className:a$1("w-[var(--radix-popover-trigger-width)] p-0",r?.content),children:jsxs(a$2,{shouldFilter:I,children:[jsx(c$1,{placeholder:L,className:a$1("h-9",r?.input),onValueChange:e=>{m(!!e),P?.(e);}}),jsxs(d,{onWheel:e=>e.stopPropagation(),children:[jsx(e,{children:z}),jsx(f,{children:F.map(e=>jsxs(h,{value:e.value,keywords:[typeof e.label=="string"?e.label:"",e.additionalSearchText??""],onSelect:g=>{k?.(g===i?"":g),p(false),l?.(false);},className:r?.item,disabled:e.disabled,children:[e.label,jsx(LuCheck,{className:a$1("ml-auto",i===e.value?"opacity-100":"opacity-0")})]},e.value))})]})]})})]})};export{A as a};//# sourceMappingURL=chunk-2J5WMSEN.js.map
2
- //# sourceMappingURL=chunk-2J5WMSEN.js.map
1
+ import {a,b,c}from'./chunk-YVP6QCW6.js';import {a as a$2,c as c$1,d,e,f,h}from'./chunk-SUB2KUSX.js';import {a as a$1}from'./chunk-YTIIAU4W.js';import {LuSearch,LuChevronsUpDown,LuCheck}from'react-icons/lu';import {useState}from'react';import {jsxs,jsx}from'react/jsx-runtime';var A=({classNames:r=void 0,disabled:w=false,options:t,preSearchOptions:N=void 0,onSearchChange:P=void 0,onChange:k=void 0,onOpenChange:l=void 0,placeholder:O="Select an option",searchLabel:L="Search...",notFoundMessage:z="Not found.",value:i=void 0,size:T="default",error:d$1=false,shouldFilter:I=true})=>{let[s,p]=useState(false),[_,m]=useState(false),F=_?t:N||t;return jsxs(a,{open:s,onOpenChange:()=>{p(!s),m(false),l?.(!s);},children:[jsxs(b,{"aria-invalid":d$1,disabled:w,className:a$1("focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:border-dark-green inline-flex h-12 w-full shrink-0 cursor-pointer items-center justify-between gap-2 rounded-md border px-4 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:bg-gray-200 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5",T==="sm"&&"py-xs h-8 px-3 [&_svg:not([class*='size-'])]:size-4",r?.trigger),children:[jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[!i&&jsx(LuSearch,{className:a$1(d$1&&"text-red")}),jsx("span",{className:"block min-w-0 truncate",children:i?t.find(e=>e.value===i)?.label:O})]}),jsx(LuChevronsUpDown,{className:"opacity-50"})]}),jsx(c,{align:"start",className:a$1("w-[var(--radix-popover-trigger-width)] p-0",r?.content),children:jsxs(a$2,{shouldFilter:I,children:[jsx(c$1,{placeholder:L,className:a$1("h-9",r?.input),onValueChange:e=>{m(!!e),P?.(e);}}),jsxs(d,{onWheel:e=>e.stopPropagation(),children:[jsx(e,{children:z}),jsx(f,{children:F.map(e=>jsxs(h,{value:e.value,keywords:[typeof e.label=="string"?e.label:"",e.additionalSearchText??""],onSelect:g=>{k?.(g===i?"":g),p(false),l?.(false);},className:r?.item,disabled:e.disabled,children:[e.label,jsx(LuCheck,{className:a$1("ml-auto",i===e.value?"opacity-100":"opacity-0")})]},e.value))})]})]})})]})};export{A as a};//# sourceMappingURL=chunk-D3QC25MI.js.map
2
+ //# sourceMappingURL=chunk-D3QC25MI.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/combobox/combobox.tsx"],"names":["Combobox","classNames","disabled","options","preSearchOptions","onSearchChange","onChange","onOpenChange","placeholder","searchLabel","notFoundMessage","value","size","error","shouldFilter","open","setOpen","useState","isSearching","setIsSearching","optionsToDisplay","jsxs","Popover","PopoverTrigger","cn","jsx","LuSearch","item","LuChevronsUpDown","PopoverContent","Command","CommandInput","val","CommandList","CommandEmpty","CommandGroup","CommandItem","currentValue","LuCheck"],"mappings":"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","file":"chunk-2J5WMSEN.js","sourcesContent":["import { LuCheck, LuChevronsUpDown, LuSearch } from 'react-icons/lu';\nimport { useState } from 'react';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/v2/popover/popover';\nimport { cn } from '@/lib/utils';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/v2/command/command';\n\nexport type ComboboxOption = {\n label: string | React.ReactNode;\n value: string;\n additionalSearchText?: string;\n disabled?: boolean;\n};\n\nexport type ComboboxProps = {\n classNames?: {\n content?: string;\n input?: string;\n item?: string;\n trigger?: string;\n };\n disabled?: boolean;\n options: ComboboxOption[];\n preSearchOptions?: ComboboxOption[];\n onSearchChange?: (value: string) => void;\n onChange?: (value: string) => void;\n onOpenChange?: (open: boolean) => void;\n placeholder?: string;\n searchLabel?: string;\n notFoundMessage?: string;\n value?: string;\n size?: 'default' | 'sm';\n error?: boolean;\n shouldFilter?: boolean;\n};\n\nexport const Combobox = ({\n classNames = undefined,\n disabled = false,\n options,\n preSearchOptions = undefined,\n onSearchChange = undefined,\n onChange = undefined,\n onOpenChange = undefined,\n placeholder = 'Select an option',\n searchLabel = 'Search...',\n notFoundMessage = 'Not found.',\n value = undefined,\n size = 'default',\n error = false,\n shouldFilter = true,\n}: ComboboxProps) => {\n const [open, setOpen] = useState(false);\n\n // Allow filtering down to just a subset of options before searching\n // NOTE: preSearchOptions is optional, while options is a required prop that we can fallback to\n const [isSearching, setIsSearching] = useState(false);\n const optionsToDisplay = isSearching ? options : preSearchOptions || options;\n\n const handleOpenChange = () => {\n setOpen(!open);\n setIsSearching(false);\n onOpenChange?.(!open);\n };\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger\n aria-invalid={error}\n disabled={disabled}\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:border-dark-green inline-flex h-12 w-full shrink-0 cursor-pointer items-center justify-between gap-2 rounded-md border px-4 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:bg-gray-200 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5\",\n size === 'sm' && \"py-xs h-8 px-3 [&_svg:not([class*='size-'])]:size-4\",\n classNames?.trigger,\n )}\n >\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n {!value && <LuSearch className={cn(error && 'text-red')} />}\n <span className=\"block min-w-0 truncate\">\n {value ? options.find((item) => item.value === value)?.label : placeholder}\n </span>\n </div>\n <LuChevronsUpDown className=\"opacity-50\" />\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n className={cn('w-[var(--radix-popover-trigger-width)] p-0', classNames?.content)}\n >\n <Command\n shouldFilter={\n // This should be mainly be driven by the presence of the `onSearchChange` function\n // to match multiselect's behavior, however we omit this for backwards compatibility.\n shouldFilter\n }\n >\n <CommandInput\n placeholder={searchLabel}\n className={cn('h-9', classNames?.input)}\n onValueChange={(val) => {\n setIsSearching(!!val);\n onSearchChange?.(val);\n }}\n />\n <CommandList onWheel={(e) => e.stopPropagation()}>\n <CommandEmpty>{notFoundMessage}</CommandEmpty>\n <CommandGroup>\n {optionsToDisplay.map((item) => (\n <CommandItem\n key={item.value}\n value={item.value}\n keywords={[\n typeof item.label === 'string' ? item.label : '',\n item.additionalSearchText ?? '',\n ]}\n onSelect={(currentValue) => {\n onChange?.(currentValue === value ? '' : currentValue);\n setOpen(false);\n onOpenChange?.(false);\n }}\n className={classNames?.item}\n disabled={item.disabled}\n >\n {item.label}\n <LuCheck\n className={cn('ml-auto', value === item.value ? 'opacity-100' : 'opacity-0')}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/v2/combobox/combobox.tsx"],"names":["Combobox","classNames","disabled","options","preSearchOptions","onSearchChange","onChange","onOpenChange","placeholder","searchLabel","notFoundMessage","value","size","error","shouldFilter","open","setOpen","useState","isSearching","setIsSearching","optionsToDisplay","jsxs","Popover","PopoverTrigger","cn","jsx","LuSearch","item","LuChevronsUpDown","PopoverContent","Command","CommandInput","val","CommandList","CommandEmpty","CommandGroup","CommandItem","currentValue","LuCheck"],"mappings":"oRA0CO,IAAMA,CAAAA,CAAW,CAAC,CACvB,UAAA,CAAAC,EAAa,MAAA,CACb,QAAA,CAAAC,CAAAA,CAAW,KAAA,CACX,OAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CAAmB,OACnB,cAAA,CAAAC,CAAAA,CAAiB,MAAA,CACjB,QAAA,CAAAC,CAAAA,CAAW,MAAA,CACX,YAAA,CAAAC,CAAAA,CAAe,OACf,WAAA,CAAAC,CAAAA,CAAc,kBAAA,CACd,WAAA,CAAAC,CAAAA,CAAc,WAAA,CACd,eAAA,CAAAC,CAAAA,CAAkB,aAClB,KAAA,CAAAC,CAAAA,CAAQ,MAAA,CACR,IAAA,CAAAC,CAAAA,CAAO,SAAA,CACP,KAAA,CAAAC,GAAAA,CAAQ,MACR,YAAA,CAAAC,CAAAA,CAAe,IACjB,CAAA,GAAqB,CACnB,GAAM,CAACC,CAAAA,CAAMC,CAAO,EAAIC,QAAAA,CAAS,KAAK,CAAA,CAIhC,CAACC,CAAAA,CAAaC,CAAc,CAAA,CAAIF,QAAAA,CAAS,KAAK,CAAA,CAC9CG,CAAAA,CAAmBF,CAAAA,CAAcf,CAAAA,CAAUC,CAAAA,EAAoBD,CAAAA,CAQrE,OACEkB,IAAAA,CAACC,EAAA,CAAQ,IAAA,CAAMP,CAAAA,CAAM,YAAA,CAPE,IAAM,CAC7BC,CAAAA,CAAQ,CAACD,CAAI,CAAA,CACbI,CAAAA,CAAe,KAAK,CAAA,CACpBZ,IAAe,CAACQ,CAAI,EACtB,CAAA,CAII,UAAAM,IAAAA,CAACE,CAAAA,CAAA,CACC,cAAA,CAAcV,GAAAA,CACd,QAAA,CAAUX,CAAAA,CACV,SAAA,CAAWsB,IACT,8fAAA,CACAZ,CAAAA,GAAS,IAAA,EAAQ,qDAAA,CACjBX,CAAAA,EAAY,OACd,CAAA,CAEA,QAAA,CAAA,CAAAoB,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCAAA,CACZ,QAAA,CAAA,CAAA,CAACV,CAAAA,EAASc,GAAAA,CAACC,QAAAA,CAAA,CAAS,UAAWF,GAAAA,CAAGX,GAAAA,EAAS,UAAU,CAAA,CAAG,EACzDY,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,wBAAA,CACb,SAAAd,CAAAA,CAAQR,CAAAA,CAAQ,IAAA,CAAMwB,CAAAA,EAASA,CAAAA,CAAK,KAAA,GAAUhB,CAAK,CAAA,EAAG,MAAQH,CAAAA,CACjE,CAAA,CAAA,CACF,CAAA,CACAiB,GAAAA,CAACG,gBAAAA,CAAA,CAAiB,SAAA,CAAU,YAAA,CAAa,GAC3C,CAAA,CACAH,GAAAA,CAACI,CAAAA,CAAA,CACC,KAAA,CAAM,OAAA,CACN,SAAA,CAAWL,GAAAA,CAAG,6CAA8CvB,CAAAA,EAAY,OAAO,CAAA,CAE/E,QAAA,CAAAoB,KAACS,GAAAA,CAAA,CACC,YAAA,CAGEhB,CAAAA,CAGF,UAAAW,GAAAA,CAACM,GAAAA,CAAA,CACC,WAAA,CAAatB,CAAAA,CACb,SAAA,CAAWe,GAAAA,CAAG,KAAA,CAAOvB,GAAY,KAAK,CAAA,CACtC,aAAA,CAAgB+B,CAAAA,EAAQ,CACtBb,CAAAA,CAAe,CAAC,CAACa,CAAG,CAAA,CACpB3B,CAAAA,GAAiB2B,CAAG,EACtB,CAAA,CACF,CAAA,CACAX,IAAAA,CAACY,CAAAA,CAAA,CAAY,OAAA,CAAU,CAAA,EAAM,CAAA,CAAE,eAAA,GAC7B,QAAA,CAAA,CAAAR,GAAAA,CAACS,CAAAA,CAAA,CAAc,SAAAxB,CAAAA,CAAgB,CAAA,CAC/Be,GAAAA,CAACU,CAAAA,CAAA,CACE,QAAA,CAAAf,CAAAA,CAAiB,GAAA,CAAKO,GACrBN,IAAAA,CAACe,CAAAA,CAAA,CAEC,KAAA,CAAOT,CAAAA,CAAK,KAAA,CACZ,QAAA,CAAU,CACR,OAAOA,CAAAA,CAAK,KAAA,EAAU,QAAA,CAAWA,CAAAA,CAAK,KAAA,CAAQ,EAAA,CAC9CA,CAAAA,CAAK,oBAAA,EAAwB,EAC/B,CAAA,CACA,QAAA,CAAWU,CAAAA,EAAiB,CAC1B/B,IAAW+B,CAAAA,GAAiB1B,CAAAA,CAAQ,EAAA,CAAK0B,CAAY,EACrDrB,CAAAA,CAAQ,KAAK,CAAA,CACbT,CAAAA,GAAe,KAAK,EACtB,CAAA,CACA,SAAA,CAAWN,GAAY,IAAA,CACvB,QAAA,CAAU0B,CAAAA,CAAK,QAAA,CAEd,QAAA,CAAA,CAAAA,CAAAA,CAAK,KAAA,CACNF,GAAAA,CAACa,QAAA,CACC,SAAA,CAAWd,GAAAA,CAAG,SAAA,CAAWb,CAAAA,GAAUgB,CAAAA,CAAK,KAAA,CAAQ,aAAA,CAAgB,WAAW,CAAA,CAC7E,CAAA,CAAA,CAAA,CAjBKA,CAAAA,CAAK,KAkBZ,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,GACF,CAEJ","file":"chunk-D3QC25MI.js","sourcesContent":["import { LuCheck, LuChevronsUpDown, LuSearch } from 'react-icons/lu';\nimport { useState } from 'react';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/v2/popover/popover';\nimport { cn } from '@/lib/utils';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/v2/command/command';\n\nexport type ComboboxOption = {\n label: string | React.ReactNode;\n value: string;\n additionalSearchText?: string;\n disabled?: boolean;\n};\n\nexport type ComboboxProps = {\n classNames?: {\n content?: string;\n input?: string;\n item?: string;\n trigger?: string;\n };\n disabled?: boolean;\n options: ComboboxOption[];\n preSearchOptions?: ComboboxOption[];\n onSearchChange?: (value: string) => void;\n onChange?: (value: string) => void;\n onOpenChange?: (open: boolean) => void;\n placeholder?: string;\n searchLabel?: string;\n notFoundMessage?: string;\n value?: string;\n size?: 'default' | 'sm';\n error?: boolean;\n shouldFilter?: boolean;\n};\n\nexport const Combobox = ({\n classNames = undefined,\n disabled = false,\n options,\n preSearchOptions = undefined,\n onSearchChange = undefined,\n onChange = undefined,\n onOpenChange = undefined,\n placeholder = 'Select an option',\n searchLabel = 'Search...',\n notFoundMessage = 'Not found.',\n value = undefined,\n size = 'default',\n error = false,\n shouldFilter = true,\n}: ComboboxProps) => {\n const [open, setOpen] = useState(false);\n\n // Allow filtering down to just a subset of options before searching\n // NOTE: preSearchOptions is optional, while options is a required prop that we can fallback to\n const [isSearching, setIsSearching] = useState(false);\n const optionsToDisplay = isSearching ? options : preSearchOptions || options;\n\n const handleOpenChange = () => {\n setOpen(!open);\n setIsSearching(false);\n onOpenChange?.(!open);\n };\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger\n aria-invalid={error}\n disabled={disabled}\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:border-dark-green inline-flex h-12 w-full shrink-0 cursor-pointer items-center justify-between gap-2 rounded-md border px-4 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:bg-gray-200 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5\",\n size === 'sm' && \"py-xs h-8 px-3 [&_svg:not([class*='size-'])]:size-4\",\n classNames?.trigger,\n )}\n >\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n {!value && <LuSearch className={cn(error && 'text-red')} />}\n <span className=\"block min-w-0 truncate\">\n {value ? options.find((item) => item.value === value)?.label : placeholder}\n </span>\n </div>\n <LuChevronsUpDown className=\"opacity-50\" />\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n className={cn('w-[var(--radix-popover-trigger-width)] p-0', classNames?.content)}\n >\n <Command\n shouldFilter={\n // This should be mainly be driven by the presence of the `onSearchChange` function\n // to match multiselect's behavior, however we omit this for backwards compatibility.\n shouldFilter\n }\n >\n <CommandInput\n placeholder={searchLabel}\n className={cn('h-9', classNames?.input)}\n onValueChange={(val) => {\n setIsSearching(!!val);\n onSearchChange?.(val);\n }}\n />\n <CommandList onWheel={(e) => e.stopPropagation()}>\n <CommandEmpty>{notFoundMessage}</CommandEmpty>\n <CommandGroup>\n {optionsToDisplay.map((item) => (\n <CommandItem\n key={item.value}\n value={item.value}\n keywords={[\n typeof item.label === 'string' ? item.label : '',\n item.additionalSearchText ?? '',\n ]}\n onSelect={(currentValue) => {\n onChange?.(currentValue === value ? '' : currentValue);\n setOpen(false);\n onOpenChange?.(false);\n }}\n className={classNames?.item}\n disabled={item.disabled}\n >\n {item.label}\n <LuCheck\n className={cn('ml-auto', value === item.value ? 'opacity-100' : 'opacity-0')}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n};\n"]}
@@ -1,2 +1,2 @@
1
- import {b as b$1}from'./chunk-NNPDHI4P.js';import {a as a$1}from'./chunk-CWXZFXQT.js';import {b}from'./chunk-6MYNQMQU.js';import {a}from'./chunk-YTIIAU4W.js';import {createContext,forwardRef,useContext,useMemo}from'react';import {Drawer}from'vaul';import*as i from'radix-ui/dialog';import {LuX}from'react-icons/lu';import {jsx,jsxs}from'react/jsx-runtime';var s=createContext({isResponsive:true});function z({disableDrawerOnMobile:t=false,...e}){let{isMobile:a}=b(),r=useMemo(()=>({isResponsive:!t}),[t]);return jsx(s.Provider,{value:r,children:a&&!t?jsx(Drawer.Root,{"data-slot":"drawer",direction:"bottom",...e}):jsx(i.Root,{"data-slot":"dialog",...e})})}function B({...t}){let{isMobile:e}=b(),{isResponsive:a}=useContext(s);return e&&a?jsx(Drawer.Trigger,{"data-slot":"drawer-trigger",...t}):jsx(i.Trigger,{"data-slot":"dialog-trigger",...t})}function f({...t}){let{isMobile:e}=b(),{isResponsive:a}=useContext(s);return e&&a?jsx(Drawer.Portal,{"data-slot":"drawer-portal",...t}):jsx(i.Portal,{"data-slot":"dialog-portal",...t})}function w({...t}){let{isMobile:e}=b(),{isResponsive:a}=useContext(s);return e&&a?jsx(Drawer.Close,{"data-slot":"drawer-close",...t}):jsx(i.Close,{"data-slot":"dialog-close",...t})}var P=forwardRef(({className:t,...e},a$1)=>{let{isMobile:r}=b(),{isResponsive:c}=useContext(s);return r&&c?jsx(Drawer.Overlay,{"data-slot":"drawer-overlay",className:a("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 z-modal-stacking-context fixed inset-0 bg-black/50",t),ref:a$1,...e}):jsx(i.Overlay,{"data-slot":"dialog-overlay",className:a("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 z-modal-stacking-context fixed inset-0 bg-black/50",t),ref:a$1,...e})}),O=forwardRef(({className:t,children:e=null,overlayClassName:a$1,...r},c)=>{let{isMobile:x}=b(),{isResponsive:C}=useContext(s);return x&&C?jsxs(f,{"data-slot":"drawer-portal",children:[jsx(P,{className:a$1}),jsx(Drawer.Content,{"data-slot":"drawer-content",className:a("group/drawer-content bg-background z-modal-stacking-context fixed flex h-auto flex-col px-4","data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b","data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t","data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-md","data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm","max-w-dvw!",t),ref:c,...r,children:e})]}):jsxs(f,{"data-slot":"dialog-portal",children:[jsx(P,{className:a$1}),jsx(i.Content,{"data-slot":"dialog-content",className:a("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 z-modal-stacking-context fixed top-[50%] left-[50%] grid w-[550px] max-w-[720px] min-w-[440px] translate-x-[-50%] translate-y-[-50%] rounded-lg border border-gray-300 p-6 shadow-sm duration-200",t),ref:c,...r,children:e})]})});function H({className:t,showCloseButton:e=true,...a$1}){let{isMobile:r}=b(),{isResponsive:c}=useContext(s);return r&&c?jsxs("div",{"data-slot":"drawer-header",className:a("relative flex flex-col gap-0.5 pt-6 pb-4 text-left md:gap-1.5",t),...a$1,children:[e&&jsx(w,{asChild:true,children:jsxs(b$1,{className:"absolute top-5 right-0",size:"sm",variant:"ghost-icon",children:[jsx(LuX,{}),jsx("span",{className:"sr-only",children:"Close dialog"})]})}),a$1.children]}):jsxs("div",{"data-slot":"dialog-header",className:a("relative flex flex-col gap-2 pb-4",t),...a$1,children:[e&&jsx(w,{asChild:true,children:jsxs(b$1,{className:"absolute top-0 right-0",size:"sm",variant:"ghost-icon",children:[jsx(LuX,{}),jsx("span",{className:"sr-only",children:"Close dialog"})]})}),a$1.children]})}function L({className:t,...e}){let{isMobile:a$1}=b(),{isResponsive:r}=useContext(s);return a$1&&r?jsx("div",{"data-slot":"drawer-footer",className:a("mt-auto flex flex-col gap-2 py-4",t),...e}):jsx("div",{"data-slot":"dialog-footer",className:a("mt-2 flex gap-2 pt-3",t),...e})}function E({className:t,...e}){let{isMobile:a$2}=a$1(),{isResponsive:r}=useContext(s);return a$2&&r?jsx(Drawer.Title,{"data-slot":"drawer-title",className:a("font-display pr-6 text-3xl",t),...e}):jsx(i.Title,{"data-slot":"dialog-title",className:a("font-display pr-6 text-3xl leading-none tracking-[0.01rem]",t),...e})}function F({className:t,...e}){let{isMobile:a$1}=b(),{isResponsive:r}=useContext(s);return a$1&&r?jsx(Drawer.Description,{"data-slot":"drawer-description",className:t,...e}):jsx(i.Description,{"data-slot":"dialog-description",className:a("text-muted-foreground text-sm",t),...e})}export{z as a,B as b,f as c,w as d,P as e,O as f,H as g,L as h,E as i,F as j};//# sourceMappingURL=chunk-W7WDYG5N.js.map
2
- //# sourceMappingURL=chunk-W7WDYG5N.js.map
1
+ import {b as b$1}from'./chunk-NNPDHI4P.js';import {a}from'./chunk-YTIIAU4W.js';import {a as a$1}from'./chunk-CWXZFXQT.js';import {b}from'./chunk-6MYNQMQU.js';import {createContext,forwardRef,useContext,useMemo}from'react';import {Drawer}from'vaul';import*as i from'radix-ui/dialog';import {LuX}from'react-icons/lu';import {jsx,jsxs}from'react/jsx-runtime';var s=createContext({isResponsive:true});function z({disableDrawerOnMobile:t=false,...e}){let{isMobile:a}=b(),r=useMemo(()=>({isResponsive:!t}),[t]);return jsx(s.Provider,{value:r,children:a&&!t?jsx(Drawer.Root,{"data-slot":"drawer",direction:"bottom",...e}):jsx(i.Root,{"data-slot":"dialog",...e})})}function B({...t}){let{isMobile:e}=b(),{isResponsive:a}=useContext(s);return e&&a?jsx(Drawer.Trigger,{"data-slot":"drawer-trigger",...t}):jsx(i.Trigger,{"data-slot":"dialog-trigger",...t})}function f({...t}){let{isMobile:e}=b(),{isResponsive:a}=useContext(s);return e&&a?jsx(Drawer.Portal,{"data-slot":"drawer-portal",...t}):jsx(i.Portal,{"data-slot":"dialog-portal",...t})}function w({...t}){let{isMobile:e}=b(),{isResponsive:a}=useContext(s);return e&&a?jsx(Drawer.Close,{"data-slot":"drawer-close",...t}):jsx(i.Close,{"data-slot":"dialog-close",...t})}var P=forwardRef(({className:t,...e},a$1)=>{let{isMobile:r}=b(),{isResponsive:c}=useContext(s);return r&&c?jsx(Drawer.Overlay,{"data-slot":"drawer-overlay",className:a("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 z-modal-stacking-context fixed inset-0 bg-black/50",t),ref:a$1,...e}):jsx(i.Overlay,{"data-slot":"dialog-overlay",className:a("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 z-modal-stacking-context fixed inset-0 bg-black/50",t),ref:a$1,...e})}),O=forwardRef(({className:t,children:e=null,overlayClassName:a$1,...r},c)=>{let{isMobile:x}=b(),{isResponsive:C}=useContext(s);return x&&C?jsxs(f,{"data-slot":"drawer-portal",children:[jsx(P,{className:a$1}),jsx(Drawer.Content,{"data-slot":"drawer-content",className:a("group/drawer-content bg-background z-modal-stacking-context fixed flex h-auto flex-col px-4","data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b","data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t","data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-md","data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm","max-w-dvw!",t),ref:c,...r,children:e})]}):jsxs(f,{"data-slot":"dialog-portal",children:[jsx(P,{className:a$1}),jsx(i.Content,{"data-slot":"dialog-content",className:a("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 z-modal-stacking-context fixed top-[50%] left-[50%] grid w-[550px] max-w-[720px] min-w-[440px] translate-x-[-50%] translate-y-[-50%] rounded-lg border border-gray-300 p-6 shadow-sm duration-200",t),ref:c,...r,children:e})]})});function H({className:t,showCloseButton:e=true,...a$1}){let{isMobile:r}=b(),{isResponsive:c}=useContext(s);return r&&c?jsxs("div",{"data-slot":"drawer-header",className:a("relative flex flex-col gap-0.5 pt-6 pb-4 text-left md:gap-1.5",t),...a$1,children:[e&&jsx(w,{asChild:true,children:jsxs(b$1,{className:"absolute top-5 right-0",size:"sm",variant:"ghost-icon",children:[jsx(LuX,{}),jsx("span",{className:"sr-only",children:"Close dialog"})]})}),a$1.children]}):jsxs("div",{"data-slot":"dialog-header",className:a("relative flex flex-col gap-2 pb-4",t),...a$1,children:[e&&jsx(w,{asChild:true,children:jsxs(b$1,{className:"absolute top-0 right-0",size:"sm",variant:"ghost-icon",children:[jsx(LuX,{}),jsx("span",{className:"sr-only",children:"Close dialog"})]})}),a$1.children]})}function L({className:t,...e}){let{isMobile:a$1}=b(),{isResponsive:r}=useContext(s);return a$1&&r?jsx("div",{"data-slot":"drawer-footer",className:a("mt-auto flex flex-col gap-2 py-4",t),...e}):jsx("div",{"data-slot":"dialog-footer",className:a("mt-2 flex gap-2 pt-3",t),...e})}function E({className:t,...e}){let{isMobile:a$2}=a$1(),{isResponsive:r}=useContext(s);return a$2&&r?jsx(Drawer.Title,{"data-slot":"drawer-title",className:a("font-display pr-6 text-3xl",t),...e}):jsx(i.Title,{"data-slot":"dialog-title",className:a("font-display pr-6 text-3xl leading-none tracking-[0.01rem]",t),...e})}function F({className:t,...e}){let{isMobile:a$1}=b(),{isResponsive:r}=useContext(s);return a$1&&r?jsx(Drawer.Description,{"data-slot":"drawer-description",className:t,...e}):jsx(i.Description,{"data-slot":"dialog-description",className:a("text-muted-foreground text-sm",t),...e})}export{z as a,B as b,f as c,w as d,P as e,O as f,H as g,L as h,E as i,F as j};//# sourceMappingURL=chunk-DIHMEGMQ.js.map
2
+ //# sourceMappingURL=chunk-DIHMEGMQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/dialog/dialog.tsx"],"names":["DialogContext","createContext","Dialog","disableDrawerOnMobile","props","isMobile","useWindowSize_default","contextValue","useMemo","jsx","DrawerPrimitive","DialogTrigger","isResponsive","useContext","DialogPortal","DialogClose","DialogOverlay","forwardRef","className","ref","cn","DialogContent","children","overlayClassName","jsxs","DialogHeader","showCloseButton","Button","LuX","DialogFooter","DialogTitle","useIsMobile","DialogDescription"],"mappings":"oWASA,IAAMA,CAAAA,CAAgBC,aAAAA,CAAc,CAAE,YAAA,CAAc,IAAK,CAAC,CAAA,CAE1D,SAASC,CAAAA,CAAO,CACd,sBAAAC,CAAAA,CAAwB,KAAA,CACxB,GAAGC,CACL,EACqF,CACnF,GAAM,CAAE,QAAA,CAAAC,CAAS,CAAA,CAAIC,CAAAA,EAAc,CAE7BC,CAAAA,CAAeC,QACnB,KAAO,CAAE,YAAA,CAAc,CAACL,CAAsB,CAAA,CAAA,CAC9C,CAACA,CAAqB,CACxB,EAEA,OACEM,GAAAA,CAACT,CAAAA,CAAc,QAAA,CAAd,CAAuB,KAAA,CAAOO,CAAAA,CAC5B,QAAA,CAAAF,CAAAA,EAAY,CAACF,CAAAA,CACZM,GAAAA,CAACC,OAAgB,IAAA,CAAhB,CAAqB,YAAU,QAAA,CAAS,SAAA,CAAU,QAAA,CAAU,GAAGN,EAAO,CAAA,CAEvEK,GAAAA,CAAiB,CAAA,CAAA,IAAA,CAAhB,CAAqB,YAAU,QAAA,CAAU,GAAGL,CAAAA,CAAO,CAAA,CAExD,CAEJ,CAEA,SAASO,CAAAA,CAAc,CACrB,GAAGP,CACL,CAAA,CACkD,CAChD,GAAM,CAAE,QAAA,CAAAC,CAAS,CAAA,CAAIC,CAAAA,GACf,CAAE,YAAA,CAAAM,CAAa,CAAA,CAAIC,WAAWb,CAAa,CAAA,CACjD,OAAIK,CAAAA,EAAYO,CAAAA,CACPH,IAACC,MAAAA,CAAgB,OAAA,CAAhB,CAAwB,WAAA,CAAU,iBAAkB,GAAGN,CAAAA,CAAO,CAAA,CAEjEK,GAAAA,CAAiB,UAAhB,CAAwB,WAAA,CAAU,gBAAA,CAAkB,GAAGL,EAAO,CACxE,CAEA,SAASU,CAAAA,CAAa,CACpB,GAAGV,CACL,CAAA,CAAkG,CAChG,GAAM,CAAE,QAAA,CAAAC,CAAS,CAAA,CAAIC,GAAc,CAC7B,CAAE,YAAA,CAAAM,CAAa,EAAIC,UAAAA,CAAWb,CAAa,EACjD,OAAIK,CAAAA,EAAYO,EACPH,GAAAA,CAACC,MAAAA,CAAgB,MAAA,CAAhB,CAAuB,YAAU,eAAA,CAAiB,GAAGN,CAAAA,CAAO,CAAA,CAE/DK,IAAiB,CAAA,CAAA,MAAA,CAAhB,CAAuB,WAAA,CAAU,eAAA,CAAiB,GAAGL,CAAAA,CAAO,CACtE,CAEA,SAASW,EAAY,CACnB,GAAGX,CACL,CAAA,CAAgG,CAC9F,GAAM,CAAE,QAAA,CAAAC,CAAS,EAAIC,CAAAA,EAAc,CAC7B,CAAE,YAAA,CAAAM,CAAa,CAAA,CAAIC,UAAAA,CAAWb,CAAa,CAAA,CACjD,OAAIK,GAAYO,CAAAA,CACPH,GAAAA,CAACC,MAAAA,CAAgB,KAAA,CAAhB,CAAsB,WAAA,CAAU,cAAA,CAAgB,GAAGN,CAAAA,CAAO,EAE7DK,GAAAA,CAAiB,CAAA,CAAA,KAAA,CAAhB,CAAsB,WAAA,CAAU,eAAgB,GAAGL,CAAAA,CAAO,CACpE,KAEMY,CAAAA,CAAgBC,UAAAA,CAGpB,CAAC,CAAE,UAAAC,CAAAA,CAAW,GAAGd,CAAM,CAAA,CAAGe,MAAQ,CAClC,GAAM,CAAE,QAAA,CAAAd,CAAS,CAAA,CAAIC,CAAAA,GACf,CAAE,YAAA,CAAAM,CAAa,CAAA,CAAIC,UAAAA,CAAWb,CAAa,CAAA,CACjD,OAAIK,CAAAA,EAAYO,CAAAA,CAEZH,GAAAA,CAACC,MAAAA,CAAgB,QAAhB,CACC,WAAA,CAAU,gBAAA,CACV,SAAA,CAAWU,EACT,4KAAA,CACAF,CACF,CAAA,CACA,GAAA,CAAKC,IACJ,GAAGf,CAAAA,CACN,CAAA,CAIFK,GAAAA,CAAiB,UAAhB,CACC,WAAA,CAAU,gBAAA,CACV,SAAA,CAAWW,EACT,4KAAA,CACAF,CACF,CAAA,CACA,GAAA,CAAKC,IACJ,GAAGf,CAAAA,CACN,CAEJ,CAAC,CAAA,CAEKiB,EAAgBJ,UAAAA,CAOpB,CAAC,CAAE,SAAA,CAAAC,EAAW,QAAA,CAAAI,CAAAA,CAAW,IAAA,CAAM,gBAAA,CAAAC,IAAkB,GAAGnB,CAAM,CAAA,CAAGe,CAAAA,GAAQ,CACrE,GAAM,CAAE,SAAAd,CAAS,CAAA,CAAIC,GAAc,CAC7B,CAAE,YAAA,CAAAM,CAAa,EAAIC,UAAAA,CAAWb,CAAa,CAAA,CACjD,OAAIK,GAAYO,CAAAA,CAEZY,IAAAA,CAACV,CAAAA,CAAA,CAAa,YAAU,eAAA,CACtB,QAAA,CAAA,CAAAL,IAACO,CAAAA,CAAA,CAAc,UAAWO,GAAAA,CAAkB,CAAA,CAC5Cd,GAAAA,CAACC,MAAAA,CAAgB,QAAhB,CACC,WAAA,CAAU,gBAAA,CACV,SAAA,CAAWU,EACT,6FAAA,CACA,gQAAA,CACA,qRAAA,CACA,6NAAA,CACA,wNACA,YAAA,CACAF,CACF,CAAA,CACA,GAAA,CAAKC,EACJ,GAAGf,CAAAA,CAEH,QAAA,CAAAkB,CAAAA,CACH,GACF,CAAA,CAIFE,IAAAA,CAACV,CAAAA,CAAA,CAAa,YAAU,eAAA,CACtB,QAAA,CAAA,CAAAL,GAAAA,CAACO,CAAAA,CAAA,CAAc,SAAA,CAAWO,GAAAA,CAAkB,EAC5Cd,GAAAA,CAAiB,CAAA,CAAA,OAAA,CAAhB,CACC,WAAA,CAAU,gBAAA,CACV,SAAA,CAAWW,CAAAA,CACT,uYACAF,CACF,CAAA,CACA,GAAA,CAAKC,CAAAA,CACJ,GAAGf,CAAAA,CAEH,QAAA,CAAAkB,CAAAA,CACH,CAAA,CAAA,CACF,CAEJ,CAAC,EAED,SAASG,CAAAA,CAAa,CACpB,SAAA,CAAAP,CAAAA,CACA,eAAA,CAAAQ,CAAAA,CAAkB,KAClB,GAAGtB,GACL,CAAA,CAEG,CACD,GAAM,CAAE,QAAA,CAAAC,CAAS,CAAA,CAAIC,GAAc,CAC7B,CAAE,aAAAM,CAAa,CAAA,CAAIC,WAAWb,CAAa,CAAA,CACjD,OAAIK,CAAAA,EAAYO,EAEZY,IAAAA,CAAC,KAAA,CAAA,CACC,WAAA,CAAU,eAAA,CACV,UAAWJ,CAAAA,CAAG,+DAAA,CAAiEF,CAAS,CAAA,CACvF,GAAGd,GAAAA,CAEH,QAAA,CAAA,CAAAsB,CAAAA,EACCjB,GAAAA,CAACM,EAAA,CAAY,OAAA,CAAO,IAAA,CAClB,QAAA,CAAAS,KAACG,GAAAA,CAAA,CAAO,SAAA,CAAU,wBAAA,CAAyB,KAAK,IAAA,CAAK,OAAA,CAAQ,YAAA,CAC3D,QAAA,CAAA,CAAAlB,IAACmB,GAAAA,CAAA,EAAI,EACLnB,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,SAAA,CAAU,QAAA,CAAA,cAAA,CAAY,CAAA,CAAA,CACxC,CAAA,CACF,EAEDL,GAAAA,CAAM,QAAA,CAAA,CACT,CAAA,CAIFoB,IAAAA,CAAC,OACC,WAAA,CAAU,eAAA,CACV,SAAA,CAAWJ,CAAAA,CAAG,oCAAqCF,CAAS,CAAA,CAC3D,GAAGd,GAAAA,CAEH,QAAA,CAAA,CAAAsB,GACCjB,GAAAA,CAACM,CAAAA,CAAA,CAAY,OAAA,CAAO,KAClB,QAAA,CAAAS,IAAAA,CAACG,GAAAA,CAAA,CAAO,UAAU,wBAAA,CAAyB,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,aAC3D,QAAA,CAAA,CAAAlB,GAAAA,CAACmB,IAAA,EAAI,CAAA,CACLnB,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,QAAA,CAAA,cAAA,CAAY,GACxC,CAAA,CACF,CAAA,CAEDL,GAAAA,CAAM,QAAA,CAAA,CACT,CAEJ,CAEA,SAASyB,CAAAA,CAAa,CAAE,UAAAX,CAAAA,CAAW,GAAGd,CAAM,CAAA,CAA0B,CACpE,GAAM,CAAE,QAAA,CAAAC,GAAS,EAAIC,CAAAA,EAAc,CAC7B,CAAE,YAAA,CAAAM,CAAa,CAAA,CAAIC,UAAAA,CAAWb,CAAa,CAAA,CACjD,OAAIK,GAAAA,EAAYO,CAAAA,CAEZH,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,gBACV,SAAA,CAAWW,CAAAA,CAAG,kCAAA,CAAoCF,CAAS,EAC1D,GAAGd,CAAAA,CACN,CAAA,CAIFK,GAAAA,CAAC,OAAI,WAAA,CAAU,eAAA,CAAgB,SAAA,CAAWW,CAAAA,CAAG,uBAAwBF,CAAS,CAAA,CAAI,GAAGd,CAAAA,CAAO,CAEhG,CAEA,SAAS0B,CAAAA,CAAY,CACnB,UAAAZ,CAAAA,CACA,GAAGd,CACL,CAAA,CAAgG,CAC9F,GAAM,CAAE,QAAA,CAAAC,GAAS,EAAI0B,GAAAA,EAAY,CAC3B,CAAE,YAAA,CAAAnB,CAAa,EAAIC,UAAAA,CAAWb,CAAa,CAAA,CACjD,OAAIK,KAAYO,CAAAA,CAEZH,GAAAA,CAACC,MAAAA,CAAgB,KAAA,CAAhB,CACC,WAAA,CAAU,cAAA,CACV,SAAA,CAAWU,CAAAA,CAAG,6BAA8BF,CAAS,CAAA,CACpD,GAAGd,CAAAA,CACN,EAIFK,GAAAA,CAAiB,CAAA,CAAA,KAAA,CAAhB,CACC,WAAA,CAAU,eACV,SAAA,CAAWW,CAAAA,CAAG,4DAAA,CAA8DF,CAAS,EACpF,GAAGd,CAAAA,CACN,CAEJ,CAEA,SAAS4B,CAAAA,CAAkB,CACzB,UAAAd,CAAAA,CACA,GAAGd,CACL,CAAA,CACsD,CACpD,GAAM,CAAE,SAAAC,GAAS,CAAA,CAAIC,CAAAA,EAAc,CAC7B,CAAE,YAAA,CAAAM,CAAa,CAAA,CAAIC,UAAAA,CAAWb,CAAa,CAAA,CACjD,OAAIK,KAAYO,CAAAA,CAEZH,GAAAA,CAACC,OAAgB,WAAA,CAAhB,CACC,WAAA,CAAU,oBAAA,CACV,UAAWQ,CAAAA,CACV,GAAGd,CAAAA,CACN,CAAA,CAIFK,IAAiB,CAAA,CAAA,WAAA,CAAhB,CACC,WAAA,CAAU,oBAAA,CACV,UAAWW,CAAAA,CAAG,+BAAA,CAAiCF,CAAS,CAAA,CACvD,GAAGd,EACN,CAEJ","file":"chunk-W7WDYG5N.js","sourcesContent":["import { type ComponentProps, createContext, forwardRef, useContext, useMemo } from 'react';\nimport { Drawer as DrawerPrimitive } from 'vaul';\nimport * as DialogPrimitive from 'radix-ui/dialog';\nimport { LuX } from 'react-icons/lu';\n\nimport { cn } from '@/lib/utils';\nimport { Button } from '../button/button';\nimport { useIsMobile, useWindowSize } from '@/hooks';\n\nconst DialogContext = createContext({ isResponsive: true });\n\nfunction Dialog({\n disableDrawerOnMobile = false,\n ...props\n}: ComponentProps<typeof DialogPrimitive.Root> &\n ComponentProps<typeof DrawerPrimitive.Root> & { disableDrawerOnMobile?: boolean }) {\n const { isMobile } = useWindowSize();\n\n const contextValue = useMemo(\n () => ({ isResponsive: !disableDrawerOnMobile }),\n [disableDrawerOnMobile],\n );\n\n return (\n <DialogContext.Provider value={contextValue}>\n {isMobile && !disableDrawerOnMobile ? (\n <DrawerPrimitive.Root data-slot=\"drawer\" direction=\"bottom\" {...props} />\n ) : (\n <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n )}\n </DialogContext.Provider>\n );\n}\n\nfunction DialogTrigger({\n ...props\n}: ComponentProps<typeof DialogPrimitive.Trigger> &\n ComponentProps<typeof DrawerPrimitive.Trigger>) {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n }\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: ComponentProps<typeof DialogPrimitive.Portal> & ComponentProps<typeof DrawerPrimitive.Portal>) {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n }\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: ComponentProps<typeof DialogPrimitive.Close> & ComponentProps<typeof DrawerPrimitive.Close>) {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n }\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nconst DialogOverlay = forwardRef<\n HTMLDivElement,\n ComponentProps<typeof DialogPrimitive.Overlay> & ComponentProps<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 z-modal-stacking-context fixed inset-0 bg-black/50',\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n }\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 z-modal-stacking-context fixed inset-0 bg-black/50',\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n});\n\nconst DialogContent = forwardRef<\n HTMLDivElement,\n ComponentProps<typeof DialogPrimitive.Content> &\n ComponentProps<typeof DrawerPrimitive.Content> & {\n onBackButtonClick?: () => void;\n overlayClassName?: string | undefined;\n }\n>(({ className, children = null, overlayClassName, ...props }, ref) => {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return (\n <DialogPortal data-slot=\"drawer-portal\">\n <DialogOverlay className={overlayClassName} />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n 'group/drawer-content bg-background z-modal-stacking-context fixed flex h-auto flex-col px-4',\n 'data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b',\n 'data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t',\n 'data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-md',\n 'data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm',\n 'max-w-dvw!',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </DrawerPrimitive.Content>\n </DialogPortal>\n );\n }\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay className={overlayClassName} />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 z-modal-stacking-context fixed top-[50%] left-[50%] grid w-[550px] max-w-[720px] min-w-[440px] translate-x-[-50%] translate-y-[-50%] rounded-lg border border-gray-300 p-6 shadow-sm duration-200',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n});\n\nfunction DialogHeader({\n className,\n showCloseButton = true,\n ...props\n}: ComponentProps<'div'> & {\n showCloseButton?: boolean;\n}) {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn('relative flex flex-col gap-0.5 pt-6 pb-4 text-left md:gap-1.5', className)}\n {...props}\n >\n {showCloseButton && (\n <DialogClose asChild>\n <Button className=\"absolute top-5 right-0\" size=\"sm\" variant=\"ghost-icon\">\n <LuX />\n <span className=\"sr-only\">Close dialog</span>\n </Button>\n </DialogClose>\n )}\n {props.children}\n </div>\n );\n }\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('relative flex flex-col gap-2 pb-4', className)}\n {...props}\n >\n {showCloseButton && (\n <DialogClose asChild>\n <Button className=\"absolute top-0 right-0\" size=\"sm\" variant=\"ghost-icon\">\n <LuX />\n <span className=\"sr-only\">Close dialog</span>\n </Button>\n </DialogClose>\n )}\n {props.children}\n </div>\n );\n}\n\nfunction DialogFooter({ className, ...props }: ComponentProps<'div'>) {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn('mt-auto flex flex-col gap-2 py-4', className)}\n {...props}\n />\n );\n }\n return (\n <div data-slot=\"dialog-footer\" className={cn('mt-2 flex gap-2 pt-3', className)} {...props} />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: ComponentProps<typeof DialogPrimitive.Title> & ComponentProps<typeof DrawerPrimitive.Title>) {\n const { isMobile } = useIsMobile();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn('font-display pr-6 text-3xl', className)}\n {...props}\n />\n );\n }\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('font-display pr-6 text-3xl leading-none tracking-[0.01rem]', className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: ComponentProps<typeof DialogPrimitive.Description> &\n ComponentProps<typeof DrawerPrimitive.Description>) {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={className}\n {...props}\n />\n );\n }\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n"]}
1
+ {"version":3,"sources":["../src/v2/dialog/dialog.tsx"],"names":["DialogContext","createContext","Dialog","disableDrawerOnMobile","props","isMobile","useWindowSize_default","contextValue","useMemo","jsx","DrawerPrimitive","DialogTrigger","isResponsive","useContext","DialogPortal","DialogClose","DialogOverlay","forwardRef","className","ref","cn","DialogContent","children","overlayClassName","jsxs","DialogHeader","showCloseButton","Button","LuX","DialogFooter","DialogTitle","useIsMobile","DialogDescription"],"mappings":"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","file":"chunk-DIHMEGMQ.js","sourcesContent":["import { type ComponentProps, createContext, forwardRef, useContext, useMemo } from 'react';\nimport { Drawer as DrawerPrimitive } from 'vaul';\nimport * as DialogPrimitive from 'radix-ui/dialog';\nimport { LuX } from 'react-icons/lu';\n\nimport { cn } from '@/lib/utils';\nimport { Button } from '../button/button';\nimport { useIsMobile, useWindowSize } from '@/hooks';\n\nconst DialogContext = createContext({ isResponsive: true });\n\nfunction Dialog({\n disableDrawerOnMobile = false,\n ...props\n}: ComponentProps<typeof DialogPrimitive.Root> &\n ComponentProps<typeof DrawerPrimitive.Root> & { disableDrawerOnMobile?: boolean }) {\n const { isMobile } = useWindowSize();\n\n const contextValue = useMemo(\n () => ({ isResponsive: !disableDrawerOnMobile }),\n [disableDrawerOnMobile],\n );\n\n return (\n <DialogContext.Provider value={contextValue}>\n {isMobile && !disableDrawerOnMobile ? (\n <DrawerPrimitive.Root data-slot=\"drawer\" direction=\"bottom\" {...props} />\n ) : (\n <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n )}\n </DialogContext.Provider>\n );\n}\n\nfunction DialogTrigger({\n ...props\n}: ComponentProps<typeof DialogPrimitive.Trigger> &\n ComponentProps<typeof DrawerPrimitive.Trigger>) {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n }\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: ComponentProps<typeof DialogPrimitive.Portal> & ComponentProps<typeof DrawerPrimitive.Portal>) {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n }\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: ComponentProps<typeof DialogPrimitive.Close> & ComponentProps<typeof DrawerPrimitive.Close>) {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n }\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nconst DialogOverlay = forwardRef<\n HTMLDivElement,\n ComponentProps<typeof DialogPrimitive.Overlay> & ComponentProps<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 z-modal-stacking-context fixed inset-0 bg-black/50',\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n }\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 z-modal-stacking-context fixed inset-0 bg-black/50',\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n});\n\nconst DialogContent = forwardRef<\n HTMLDivElement,\n ComponentProps<typeof DialogPrimitive.Content> &\n ComponentProps<typeof DrawerPrimitive.Content> & {\n onBackButtonClick?: () => void;\n overlayClassName?: string | undefined;\n }\n>(({ className, children = null, overlayClassName, ...props }, ref) => {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return (\n <DialogPortal data-slot=\"drawer-portal\">\n <DialogOverlay className={overlayClassName} />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n 'group/drawer-content bg-background z-modal-stacking-context fixed flex h-auto flex-col px-4',\n 'data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b',\n 'data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t',\n 'data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-md',\n 'data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm',\n 'max-w-dvw!',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </DrawerPrimitive.Content>\n </DialogPortal>\n );\n }\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay className={overlayClassName} />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 z-modal-stacking-context fixed top-[50%] left-[50%] grid w-[550px] max-w-[720px] min-w-[440px] translate-x-[-50%] translate-y-[-50%] rounded-lg border border-gray-300 p-6 shadow-sm duration-200',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n});\n\nfunction DialogHeader({\n className,\n showCloseButton = true,\n ...props\n}: ComponentProps<'div'> & {\n showCloseButton?: boolean;\n}) {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn('relative flex flex-col gap-0.5 pt-6 pb-4 text-left md:gap-1.5', className)}\n {...props}\n >\n {showCloseButton && (\n <DialogClose asChild>\n <Button className=\"absolute top-5 right-0\" size=\"sm\" variant=\"ghost-icon\">\n <LuX />\n <span className=\"sr-only\">Close dialog</span>\n </Button>\n </DialogClose>\n )}\n {props.children}\n </div>\n );\n }\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('relative flex flex-col gap-2 pb-4', className)}\n {...props}\n >\n {showCloseButton && (\n <DialogClose asChild>\n <Button className=\"absolute top-0 right-0\" size=\"sm\" variant=\"ghost-icon\">\n <LuX />\n <span className=\"sr-only\">Close dialog</span>\n </Button>\n </DialogClose>\n )}\n {props.children}\n </div>\n );\n}\n\nfunction DialogFooter({ className, ...props }: ComponentProps<'div'>) {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn('mt-auto flex flex-col gap-2 py-4', className)}\n {...props}\n />\n );\n }\n return (\n <div data-slot=\"dialog-footer\" className={cn('mt-2 flex gap-2 pt-3', className)} {...props} />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: ComponentProps<typeof DialogPrimitive.Title> & ComponentProps<typeof DrawerPrimitive.Title>) {\n const { isMobile } = useIsMobile();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn('font-display pr-6 text-3xl', className)}\n {...props}\n />\n );\n }\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('font-display pr-6 text-3xl leading-none tracking-[0.01rem]', className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: ComponentProps<typeof DialogPrimitive.Description> &\n ComponentProps<typeof DrawerPrimitive.Description>) {\n const { isMobile } = useWindowSize();\n const { isResponsive } = useContext(DialogContext);\n if (isMobile && isResponsive) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={className}\n {...props}\n />\n );\n }\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n"]}
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkNALIS6SG_cjs=require('./chunk-NALIS6SG.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),lu=require('react-icons/lu'),sonner=require('sonner'),jsxRuntime=require('react/jsx-runtime');var x=4e3,z=({className:o,duration:r=x,toastOptions:e,position:i,closeButton:c=true,...l})=>{let{isMobile:m}=chunkNALIS6SG_cjs.a(992),d=i??(m?"top-center":"bottom-left"),u={fontFamily:"var(--font-lato)",fontSize:"0.875rem","--toast-duration":`${e?.duration??r}ms`,...e?.style};return jsxRuntime.jsx(sonner.Toaster,{className:chunkQRO22BPZ_cjs.a("toaster group",o),duration:r,position:d,icons:{success:jsxRuntime.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-full bg-green-500",children:jsxRuntime.jsx(lu.LuCheck,{className:"size-4 text-green-900"})}),info:jsxRuntime.jsx("div",{className:"bg-grey-300 flex h-8 w-8 items-center justify-center rounded-full",children:jsxRuntime.jsx(lu.LuInfo,{className:"size-4 text-gray-800"})}),warning:jsxRuntime.jsx("div",{className:"bg-gold-300 flex h-8 w-8 items-center justify-center rounded-full",children:jsxRuntime.jsx(lu.LuTriangleAlert,{className:"text-gold-900 size-4"})}),error:jsxRuntime.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-full bg-red-200",children:jsxRuntime.jsx(lu.LuX,{className:"size-4 text-red-600"})}),loading:jsxRuntime.jsx(lu.LuLoaderCircle,{className:"size-5 animate-spin text-green-600"})},toastOptions:{...e,style:u,classNames:{...e?.classNames,toast:chunkQRO22BPZ_cjs.a("toast-progress overflow-visible!",e?.classNames?.toast),default:chunkQRO22BPZ_cjs.a("text-primary! bg-toast-success! w-[350px]! items-center! rounded-md! border text-sm! md:w-[440px]!",e?.classNames?.default),success:chunkQRO22BPZ_cjs.a("border-green-600!",e?.classNames?.success),error:chunkQRO22BPZ_cjs.a("border-red-300!",e?.classNames?.error),warning:chunkQRO22BPZ_cjs.a("bg-gold-100! border-gold-500!",e?.classNames?.warning),info:chunkQRO22BPZ_cjs.a("border-gray-500!",e?.classNames?.info),title:chunkQRO22BPZ_cjs.a("text-base! font-bold!",e?.classNames?.title),description:chunkQRO22BPZ_cjs.a("text-secondary! text-sm!",e?.classNames?.description),icon:chunkQRO22BPZ_cjs.a("size-8! shrink-0! self-start!",e?.classNames?.icon),actionButton:chunkQRO22BPZ_cjs.a("text-secondary! focus-visible:border-ring! focus-visible:ring-ring/50! mt-auto! h-8! rounded-md! border-none! bg-transparent! py-0! pr-0! pl-0! text-base! font-bold! hover:bg-gray-200! focus:ring-0! focus-visible:ring-[3px]! active:bg-gray-200! md:pr-3! md:pl-3!",e?.classNames?.actionButton),closeButton:"absolute -top-0.5! -right-4! left-auto!"}},closeButton:c,...l})},L=Object.assign((o,r)=>sonner.toast.success(o,r),sonner.toast,{misc:(o,r)=>sonner.toast(o,{...r,icon:r?.icon??jsxRuntime.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-full bg-sky-300",children:jsxRuntime.jsx(lu.LuIterationCcw,{className:"size-4 text-sky-900"})}),className:chunkQRO22BPZ_cjs.a("toast-misc",r?.className)})});exports.a=z;exports.b=L;//# sourceMappingURL=chunk-ZTDSRJUJ.cjs.map
2
- //# sourceMappingURL=chunk-ZTDSRJUJ.cjs.map
1
+ 'use strict';var chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),chunkNALIS6SG_cjs=require('./chunk-NALIS6SG.cjs'),lu=require('react-icons/lu'),sonner=require('sonner'),jsxRuntime=require('react/jsx-runtime');var x=4e3,z=({className:o,duration:r=x,toastOptions:e,position:i,closeButton:c=true,...l})=>{let{isMobile:m}=chunkNALIS6SG_cjs.a(992),d=i??(m?"top-center":"bottom-left"),u={fontFamily:"var(--font-lato)",fontSize:"0.875rem","--toast-duration":`${e?.duration??r}ms`,...e?.style};return jsxRuntime.jsx(sonner.Toaster,{className:chunkQRO22BPZ_cjs.a("toaster group",o),duration:r,position:d,icons:{success:jsxRuntime.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-full bg-green-500",children:jsxRuntime.jsx(lu.LuCheck,{className:"size-4 text-green-900"})}),info:jsxRuntime.jsx("div",{className:"bg-grey-300 flex h-8 w-8 items-center justify-center rounded-full",children:jsxRuntime.jsx(lu.LuInfo,{className:"size-4 text-gray-800"})}),warning:jsxRuntime.jsx("div",{className:"bg-gold-300 flex h-8 w-8 items-center justify-center rounded-full",children:jsxRuntime.jsx(lu.LuTriangleAlert,{className:"text-gold-900 size-4"})}),error:jsxRuntime.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-full bg-red-200",children:jsxRuntime.jsx(lu.LuX,{className:"size-4 text-red-600"})}),loading:jsxRuntime.jsx(lu.LuLoaderCircle,{className:"size-5 animate-spin text-green-600"})},toastOptions:{...e,style:u,classNames:{...e?.classNames,toast:chunkQRO22BPZ_cjs.a("toast-progress overflow-visible!",e?.classNames?.toast),default:chunkQRO22BPZ_cjs.a("text-primary! bg-toast-success! w-[350px]! items-center! rounded-md! border text-sm! md:w-[440px]!",e?.classNames?.default),success:chunkQRO22BPZ_cjs.a("border-green-600!",e?.classNames?.success),error:chunkQRO22BPZ_cjs.a("border-red-300!",e?.classNames?.error),warning:chunkQRO22BPZ_cjs.a("bg-gold-100! border-gold-500!",e?.classNames?.warning),info:chunkQRO22BPZ_cjs.a("border-gray-500!",e?.classNames?.info),title:chunkQRO22BPZ_cjs.a("text-base! font-bold!",e?.classNames?.title),description:chunkQRO22BPZ_cjs.a("text-secondary! text-sm!",e?.classNames?.description),icon:chunkQRO22BPZ_cjs.a("size-8! shrink-0! self-start!",e?.classNames?.icon),actionButton:chunkQRO22BPZ_cjs.a("text-secondary! focus-visible:border-ring! focus-visible:ring-ring/50! mt-auto! h-8! rounded-md! border-none! bg-transparent! py-0! pr-0! pl-0! text-base! font-bold! hover:bg-gray-200! focus:ring-0! focus-visible:ring-[3px]! active:bg-gray-200! md:pr-3! md:pl-3!",e?.classNames?.actionButton),closeButton:"absolute -top-0.5! -right-4! left-auto!"}},closeButton:c,...l})},L=Object.assign((o,r)=>sonner.toast.success(o,r),sonner.toast,{misc:(o,r)=>sonner.toast(o,{...r,icon:r?.icon??jsxRuntime.jsx("div",{className:"flex h-8 w-8 items-center justify-center rounded-full bg-sky-300",children:jsxRuntime.jsx(lu.LuIterationCcw,{className:"size-4 text-sky-900"})}),className:chunkQRO22BPZ_cjs.a("toast-misc",r?.className)})});exports.a=z;exports.b=L;//# sourceMappingURL=chunk-EJVR3XRG.cjs.map
2
+ //# sourceMappingURL=chunk-EJVR3XRG.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/toast/toaster.tsx"],"names":["DEFAULT_TOAST_DURATION","Toaster","className","duration","toastOptions","position","closeButton","props","isMobile","useIsMobile","resolvedPosition","toastStyle","jsx","Sonner","cn","LuCheck","LuInfo","LuTriangleAlert","LuX","LuLoaderCircle","toast","message","options","sonnerToast","LuIterationCcw"],"mappings":"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","file":"chunk-ZTDSRJUJ.cjs","sourcesContent":["import type { CSSProperties } from 'react';\nimport {\n LuCheck,\n LuInfo,\n LuIterationCcw,\n LuLoaderCircle,\n LuTriangleAlert,\n LuX,\n} from 'react-icons/lu';\nimport { Toaster as Sonner, type ToasterProps, toast as sonnerToast } from 'sonner';\nimport { cn } from '@/lib/utils';\nimport { useIsMobile } from '@/hooks/useIsMobile';\n\nconst DEFAULT_TOAST_DURATION = 4000;\n\ntype ToastProgressStyle = CSSProperties & {\n '--toast-duration'?: string;\n};\n\nconst Toaster = ({\n className,\n duration = DEFAULT_TOAST_DURATION,\n toastOptions,\n position,\n closeButton = true,\n ...props\n}: ToasterProps) => {\n const { isMobile } = useIsMobile(992); // \"lg\" media query size - makes tablets use 'top-center' positioning\n const resolvedPosition = position ?? (isMobile ? 'top-center' : 'bottom-left');\n const toastDuration = toastOptions?.duration ?? duration;\n const toastStyle: ToastProgressStyle = {\n fontFamily: 'var(--font-lato)',\n fontSize: '0.875rem',\n '--toast-duration': `${toastDuration}ms`,\n ...toastOptions?.style,\n };\n\n return (\n <Sonner\n className={cn('toaster group', className)}\n duration={duration}\n position={resolvedPosition}\n icons={{\n success: (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-green-500\">\n <LuCheck className=\"size-4 text-green-900\" />\n </div>\n ),\n info: (\n <div className=\"bg-grey-300 flex h-8 w-8 items-center justify-center rounded-full\">\n <LuInfo className=\"size-4 text-gray-800\" />\n </div>\n ),\n warning: (\n <div className=\"bg-gold-300 flex h-8 w-8 items-center justify-center rounded-full\">\n <LuTriangleAlert className=\"text-gold-900 size-4\" />\n </div>\n ),\n error: (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-red-200\">\n <LuX className=\"size-4 text-red-600\" />\n </div>\n ),\n loading: <LuLoaderCircle className=\"size-5 animate-spin text-green-600\" />,\n }}\n toastOptions={{\n ...toastOptions,\n style: toastStyle,\n classNames: {\n ...toastOptions?.classNames,\n toast: cn('toast-progress overflow-visible!', toastOptions?.classNames?.toast),\n default: cn(\n 'text-primary! bg-toast-success! w-[350px]! items-center! rounded-md! border text-sm! md:w-[440px]!',\n toastOptions?.classNames?.default,\n ),\n success: cn('border-green-600!', toastOptions?.classNames?.success),\n error: cn('border-red-300!', toastOptions?.classNames?.error),\n warning: cn('bg-gold-100! border-gold-500!', toastOptions?.classNames?.warning),\n info: cn('border-gray-500!', toastOptions?.classNames?.info),\n title: cn('text-base! font-bold!', toastOptions?.classNames?.title),\n description: cn('text-secondary! text-sm!', toastOptions?.classNames?.description),\n icon: cn('size-8! shrink-0! self-start!', toastOptions?.classNames?.icon),\n actionButton: cn(\n 'text-secondary! focus-visible:border-ring! focus-visible:ring-ring/50! mt-auto! h-8! rounded-md! border-none! bg-transparent! py-0! pr-0! pl-0! text-base! font-bold! hover:bg-gray-200! focus:ring-0! focus-visible:ring-[3px]! active:bg-gray-200! md:pr-3! md:pl-3!',\n toastOptions?.classNames?.actionButton,\n ),\n closeButton: 'absolute -top-0.5! -right-4! left-auto!',\n },\n }}\n closeButton={closeButton}\n {...props}\n />\n );\n};\n\ntype SonnerToast = typeof sonnerToast;\ntype ToastMessage = Parameters<SonnerToast>[0];\ntype ToastOptions = Parameters<SonnerToast>[1];\ntype ToastReturn = ReturnType<SonnerToast>;\n\ntype SolaceToast = SonnerToast & {\n misc: (message: ToastMessage, options?: ToastOptions) => ToastReturn;\n};\n\nconst toast = Object.assign(\n (message: ToastMessage, options?: ToastOptions) => sonnerToast.success(message, options),\n sonnerToast,\n {\n misc: (message: ToastMessage, options?: ToastOptions) =>\n sonnerToast(message, {\n ...options,\n icon: options?.icon ?? (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-sky-300\">\n <LuIterationCcw className=\"size-4 text-sky-900\" />\n </div>\n ),\n className: cn('toast-misc', options?.className),\n }),\n },\n) as SolaceToast;\n\nexport { Toaster, toast };\n"]}
1
+ {"version":3,"sources":["../src/v2/toast/toaster.tsx"],"names":["DEFAULT_TOAST_DURATION","Toaster","className","duration","toastOptions","position","closeButton","props","isMobile","useIsMobile","resolvedPosition","toastStyle","jsx","Sonner","cn","LuCheck","LuInfo","LuTriangleAlert","LuX","LuLoaderCircle","toast","message","options","sonnerToast","LuIterationCcw"],"mappings":"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","file":"chunk-EJVR3XRG.cjs","sourcesContent":["import type { CSSProperties } from 'react';\nimport {\n LuCheck,\n LuInfo,\n LuIterationCcw,\n LuLoaderCircle,\n LuTriangleAlert,\n LuX,\n} from 'react-icons/lu';\nimport { Toaster as Sonner, type ToasterProps, toast as sonnerToast } from 'sonner';\nimport { cn } from '@/lib/utils';\nimport { useIsMobile } from '@/hooks/useIsMobile';\n\nconst DEFAULT_TOAST_DURATION = 4000;\n\ntype ToastProgressStyle = CSSProperties & {\n '--toast-duration'?: string;\n};\n\nconst Toaster = ({\n className,\n duration = DEFAULT_TOAST_DURATION,\n toastOptions,\n position,\n closeButton = true,\n ...props\n}: ToasterProps) => {\n const { isMobile } = useIsMobile(992); // \"lg\" media query size - makes tablets use 'top-center' positioning\n const resolvedPosition = position ?? (isMobile ? 'top-center' : 'bottom-left');\n const toastDuration = toastOptions?.duration ?? duration;\n const toastStyle: ToastProgressStyle = {\n fontFamily: 'var(--font-lato)',\n fontSize: '0.875rem',\n '--toast-duration': `${toastDuration}ms`,\n ...toastOptions?.style,\n };\n\n return (\n <Sonner\n className={cn('toaster group', className)}\n duration={duration}\n position={resolvedPosition}\n icons={{\n success: (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-green-500\">\n <LuCheck className=\"size-4 text-green-900\" />\n </div>\n ),\n info: (\n <div className=\"bg-grey-300 flex h-8 w-8 items-center justify-center rounded-full\">\n <LuInfo className=\"size-4 text-gray-800\" />\n </div>\n ),\n warning: (\n <div className=\"bg-gold-300 flex h-8 w-8 items-center justify-center rounded-full\">\n <LuTriangleAlert className=\"text-gold-900 size-4\" />\n </div>\n ),\n error: (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-red-200\">\n <LuX className=\"size-4 text-red-600\" />\n </div>\n ),\n loading: <LuLoaderCircle className=\"size-5 animate-spin text-green-600\" />,\n }}\n toastOptions={{\n ...toastOptions,\n style: toastStyle,\n classNames: {\n ...toastOptions?.classNames,\n toast: cn('toast-progress overflow-visible!', toastOptions?.classNames?.toast),\n default: cn(\n 'text-primary! bg-toast-success! w-[350px]! items-center! rounded-md! border text-sm! md:w-[440px]!',\n toastOptions?.classNames?.default,\n ),\n success: cn('border-green-600!', toastOptions?.classNames?.success),\n error: cn('border-red-300!', toastOptions?.classNames?.error),\n warning: cn('bg-gold-100! border-gold-500!', toastOptions?.classNames?.warning),\n info: cn('border-gray-500!', toastOptions?.classNames?.info),\n title: cn('text-base! font-bold!', toastOptions?.classNames?.title),\n description: cn('text-secondary! text-sm!', toastOptions?.classNames?.description),\n icon: cn('size-8! shrink-0! self-start!', toastOptions?.classNames?.icon),\n actionButton: cn(\n 'text-secondary! focus-visible:border-ring! focus-visible:ring-ring/50! mt-auto! h-8! rounded-md! border-none! bg-transparent! py-0! pr-0! pl-0! text-base! font-bold! hover:bg-gray-200! focus:ring-0! focus-visible:ring-[3px]! active:bg-gray-200! md:pr-3! md:pl-3!',\n toastOptions?.classNames?.actionButton,\n ),\n closeButton: 'absolute -top-0.5! -right-4! left-auto!',\n },\n }}\n closeButton={closeButton}\n {...props}\n />\n );\n};\n\ntype SonnerToast = typeof sonnerToast;\ntype ToastMessage = Parameters<SonnerToast>[0];\ntype ToastOptions = Parameters<SonnerToast>[1];\ntype ToastReturn = ReturnType<SonnerToast>;\n\ntype SolaceToast = SonnerToast & {\n misc: (message: ToastMessage, options?: ToastOptions) => ToastReturn;\n};\n\nconst toast = Object.assign(\n (message: ToastMessage, options?: ToastOptions) => sonnerToast.success(message, options),\n sonnerToast,\n {\n misc: (message: ToastMessage, options?: ToastOptions) =>\n sonnerToast(message, {\n ...options,\n icon: options?.icon ?? (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-sky-300\">\n <LuIterationCcw className=\"size-4 text-sky-900\" />\n </div>\n ),\n className: cn('toast-misc', options?.className),\n }),\n },\n) as SolaceToast;\n\nexport { Toaster, toast };\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-UJVC7JDT.js';import {a}from'./chunk-YTIIAU4W.js';import {useDropzone}from'react-dropzone';import {LuFileWarning,LuUpload}from'react-icons/lu';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var A={"image/jpeg":[".jpeg",".jpg"],"image/png":[".png"],"image/avif":[".avif"],"image/heic":[".heic"],"image/webp":[".webp"],"application/pdf":[".pdf"],"text/csv":[".csv"],"application/xml":[".xml",".xlsx"],"application/msword":[".doc"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":[".docx"]},F=[],j={},z=()=>null,$=({accept:u=A,files:n=F,maxFiles:o=5,maxSizeInMb:i=10,onDrop:b$1=z,className:v=void 0,wrapperClassName:x=void 0,extraInputProps:p=j,isLoading:m=false,icon:y=void 0,title:l=void 0,subtitle:s=void 0})=>{let d=n.length>=o,{getRootProps:N,getInputProps:h,isDragActive:g}=useDropzone({maxFiles:o,multiple:o>1,onDrop:b$1,maxSize:i*1024*1024,accept:u,onDropRejected:t=>{t.length>0&&t[0].errors[0].code==="too-many-files"?b.error(`Too many files. Please upload up to ${o} files at a time.`):t.length>0&&t[0].errors[0].code==="file-too-large"?b.error(`File is too large. Please upload files smaller than ${i} MB.`):b.error("File type not supported");},disabled:n.length>=o}),f=t=>typeof t=="string",w={...h(),...p,disabled:m||p.disabled};return jsx("div",{className:a("flex min-h-48 flex-col gap-4 hover:cursor-pointer",g&&"border-grey-700 opacity-75",d&&"hover:cursor-not-allowed",x),...N(),children:jsx("div",{className:a("bg-grey-100 border-grey-300 flex w-full flex-col items-center justify-center rounded-lg border-2 border-dashed py-10 text-center",d&&!g&&"border-red-300",v),children:d?jsxs("div",{className:"text flex flex-col items-center",children:[jsx(LuFileWarning,{className:"h-8 w-8 text-red-500"}),jsxs("div",{className:"strong mt-4",children:["Maximum ",o," file limit reached"]})]}):jsxs(Fragment,{children:[jsx("input",{...w}),m?jsx("div",{className:"h-8 w-8 animate-spin rounded-full border-4 border-gray-300 border-t-gray-700"}):y??jsx(LuUpload,{className:"h-8 w-8 text-gray-700"}),jsxs("div",{className:"text-grey-700 mt-4 flex flex-col gap-1",children:[f(l)?jsx("div",{className:"text-body-lg",children:l}):l??jsx("p",{className:"text-body-lg",children:"Drag an image or click to browse"}),f(s)?jsx("div",{className:"text-body-sm",children:s}):s??jsxs("p",{className:"text-body-sm",children:[i," MB max file size"]})]})]})})})};export{$ as a};//# sourceMappingURL=chunk-F7ZNHD4C.js.map
2
+ //# sourceMappingURL=chunk-F7ZNHD4C.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/v2/dropzone/dropzone.tsx"],"names":["defaultAcceptedFileTypes","stableArray","stableObject","stableFunc","Dropzone","accept","files","maxFiles","maxSizeInMb","onDrop","className","wrapperClassName","extraInputProps","isLoading","icon","title","subtitle","overMaxFileLimit","getRootProps","getInputProps","isDragActive","useDropzone","errorList","toast","isString","text","inputProps","jsx","cn","jsxs","LuFileWarning","Fragment","LuUpload"],"mappings":"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","file":"chunk-F7ZNHD4C.js","sourcesContent":["import { Accept, useDropzone } from 'react-dropzone';\nimport { LuFileWarning, LuUpload } from 'react-icons/lu';\nimport { toast } from '@/v2/toast/toaster';\nimport { cn } from '@/lib/utils';\n\nconst defaultAcceptedFileTypes = {\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'image/png': ['.png'],\n 'image/avif': ['.avif'],\n 'image/heic': ['.heic'],\n 'image/webp': ['.webp'],\n 'application/pdf': ['.pdf'],\n 'text/csv': ['.csv'],\n 'application/xml': ['.xml', '.xlsx'],\n 'application/msword': ['.doc'],\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ['.docx'],\n};\nconst stableArray: File[] = [];\nconst stableObject = {};\nconst stableFunc = () => null;\n\nexport type DropzoneProps = {\n accept?: Accept;\n files?: File[];\n maxFiles?: number;\n maxSizeInMb?: number;\n onDrop?: (acceptedFiles: File[]) => void;\n className?: string;\n wrapperClassName?: string;\n extraInputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n isLoading?: boolean;\n icon?: React.ReactNode;\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n};\n\nexport const Dropzone = ({\n accept = defaultAcceptedFileTypes,\n files = stableArray,\n maxFiles = 5,\n maxSizeInMb = 10,\n onDrop = stableFunc,\n className = undefined,\n wrapperClassName = undefined,\n extraInputProps = stableObject,\n isLoading = false,\n icon = undefined,\n title = undefined,\n subtitle = undefined,\n}: DropzoneProps) => {\n const overMaxFileLimit = files.length >= maxFiles;\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n maxFiles,\n multiple: maxFiles > 1,\n onDrop,\n maxSize: maxSizeInMb * 1024 * 1024,\n accept,\n onDropRejected: (errorList) => {\n if (errorList.length > 0 && errorList[0].errors[0].code === 'too-many-files') {\n toast.error(`Too many files. Please upload up to ${maxFiles} files at a time.`);\n } else if (errorList.length > 0 && errorList[0].errors[0].code === 'file-too-large') {\n toast.error(`File is too large. Please upload files smaller than ${maxSizeInMb} MB.`);\n } else {\n toast.error('File type not supported');\n }\n },\n disabled: files.length >= maxFiles,\n });\n\n const isString = (text?: React.ReactNode) => {\n return typeof text === 'string';\n };\n\n const inputProps = {\n ...getInputProps(),\n ...extraInputProps,\n disabled: isLoading || extraInputProps.disabled,\n };\n\n return (\n <div\n className={cn(\n 'flex min-h-48 flex-col gap-4 hover:cursor-pointer',\n isDragActive && 'border-grey-700 opacity-75',\n overMaxFileLimit && 'hover:cursor-not-allowed',\n wrapperClassName,\n )}\n {...getRootProps()}\n >\n <div\n className={cn(\n 'bg-grey-100 border-grey-300 flex w-full flex-col items-center justify-center rounded-lg border-2 border-dashed py-10 text-center',\n overMaxFileLimit && !isDragActive && 'border-red-300',\n className,\n )}\n >\n {overMaxFileLimit ? (\n <div className=\"text flex flex-col items-center\">\n <LuFileWarning className=\"h-8 w-8 text-red-500\" />\n <div className=\"strong mt-4\">Maximum {maxFiles} file limit reached</div>\n </div>\n ) : (\n <>\n <input {...inputProps} />\n {isLoading ? (\n <div className=\"h-8 w-8 animate-spin rounded-full border-4 border-gray-300 border-t-gray-700\" />\n ) : (\n (icon ?? <LuUpload className=\"h-8 w-8 text-gray-700\" />)\n )}\n <div className=\"text-grey-700 mt-4 flex flex-col gap-1\">\n {isString(title) ? (\n <div className=\"text-body-lg\">{title}</div>\n ) : (\n (title ?? <p className=\"text-body-lg\">Drag an image or click to browse</p>)\n )}\n {isString(subtitle) ? (\n <div className=\"text-body-sm\">{subtitle}</div>\n ) : (\n (subtitle ?? <p className=\"text-body-sm\">{maxSizeInMb} MB max file size</p>)\n )}\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n"]}