@solace-health/ui 0.10.668 → 0.10.671

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 (139) hide show
  1. package/README.md +9 -2
  2. package/dist/chunk-2DLCWPKO.cjs +27 -0
  3. package/dist/chunk-2DLCWPKO.cjs.map +1 -0
  4. package/dist/{chunk-QOIWWR24.cjs → chunk-2E7ZG247.cjs} +2 -2
  5. package/dist/{chunk-QOIWWR24.cjs.map → chunk-2E7ZG247.cjs.map} +1 -1
  6. package/dist/{chunk-FXLG3LU3.cjs → chunk-3WAG2NWA.cjs} +2 -2
  7. package/dist/{chunk-FXLG3LU3.cjs.map → chunk-3WAG2NWA.cjs.map} +1 -1
  8. package/dist/{chunk-VO2GGQ2X.js → chunk-6T7SXJ44.js} +2 -2
  9. package/dist/{chunk-VO2GGQ2X.js.map → chunk-6T7SXJ44.js.map} +1 -1
  10. package/dist/{chunk-3N4EBY5Q.js → chunk-74AGGELC.js} +2 -2
  11. package/dist/{chunk-3N4EBY5Q.js.map → chunk-74AGGELC.js.map} +1 -1
  12. package/dist/chunk-7QWN4Z56.js +27 -0
  13. package/dist/chunk-7QWN4Z56.js.map +1 -0
  14. package/dist/{chunk-2BUA2PCN.cjs → chunk-DJ5RP6A2.cjs} +2 -2
  15. package/dist/{chunk-2BUA2PCN.cjs.map → chunk-DJ5RP6A2.cjs.map} +1 -1
  16. package/dist/{chunk-BCJNTCHK.js → chunk-EJBXIBM4.js} +2 -2
  17. package/dist/{chunk-BCJNTCHK.js.map → chunk-EJBXIBM4.js.map} +1 -1
  18. package/dist/{chunk-VTYXYLTK.cjs → chunk-EZK5NRS6.cjs} +2 -2
  19. package/dist/{chunk-VTYXYLTK.cjs.map → chunk-EZK5NRS6.cjs.map} +1 -1
  20. package/dist/chunk-FFAC2CCY.cjs +2 -0
  21. package/dist/chunk-FFAC2CCY.cjs.map +1 -0
  22. package/dist/{chunk-QUD4HTUP.cjs → chunk-FMFRB4JI.cjs} +2 -2
  23. package/dist/chunk-FMFRB4JI.cjs.map +1 -0
  24. package/dist/{chunk-FBXJ2VCI.js → chunk-FQGC44HX.js} +2 -2
  25. package/dist/{chunk-FBXJ2VCI.js.map → chunk-FQGC44HX.js.map} +1 -1
  26. package/dist/{chunk-ETZDR7A5.cjs → chunk-H37HOXIG.cjs} +2 -2
  27. package/dist/{chunk-ETZDR7A5.cjs.map → chunk-H37HOXIG.cjs.map} +1 -1
  28. package/dist/chunk-IRMVTSQ3.cjs +2 -0
  29. package/dist/chunk-IRMVTSQ3.cjs.map +1 -0
  30. package/dist/{chunk-DJD7UZPR.cjs → chunk-KXR3HDPA.cjs} +2 -2
  31. package/dist/{chunk-DJD7UZPR.cjs.map → chunk-KXR3HDPA.cjs.map} +1 -1
  32. package/dist/{chunk-ONAYZGIC.js → chunk-M2YQU26J.js} +2 -2
  33. package/dist/{chunk-ONAYZGIC.js.map → chunk-M2YQU26J.js.map} +1 -1
  34. package/dist/{chunk-JE6P5GU3.js → chunk-M7LXLMUQ.js} +2 -2
  35. package/dist/{chunk-JE6P5GU3.js.map → chunk-M7LXLMUQ.js.map} +1 -1
  36. package/dist/chunk-NVFC45IS.js +2 -0
  37. package/dist/chunk-NVFC45IS.js.map +1 -0
  38. package/dist/{chunk-WMOD232S.js → chunk-OYN4D5J3.js} +2 -2
  39. package/dist/{chunk-WMOD232S.js.map → chunk-OYN4D5J3.js.map} +1 -1
  40. package/dist/{chunk-UVZVZAGK.js → chunk-PVA67MWT.js} +2 -2
  41. package/dist/{chunk-UVZVZAGK.js.map → chunk-PVA67MWT.js.map} +1 -1
  42. package/dist/chunk-QHNRUAYJ.js +2 -0
  43. package/dist/chunk-QHNRUAYJ.js.map +1 -0
  44. package/dist/{chunk-Z6BTLUPD.js → chunk-R2R3QR2N.js} +2 -2
  45. package/dist/{chunk-Z6BTLUPD.js.map → chunk-R2R3QR2N.js.map} +1 -1
  46. package/dist/{chunk-6TGWLOLD.js → chunk-R3HGV3DR.js} +2 -2
  47. package/dist/{chunk-6TGWLOLD.js.map → chunk-R3HGV3DR.js.map} +1 -1
  48. package/dist/{chunk-3TNSGXJ6.cjs → chunk-RQTTULKO.cjs} +2 -2
  49. package/dist/{chunk-3TNSGXJ6.cjs.map → chunk-RQTTULKO.cjs.map} +1 -1
  50. package/dist/{chunk-L4FOTU2K.cjs → chunk-RXR3BZZK.cjs} +2 -2
  51. package/dist/{chunk-L4FOTU2K.cjs.map → chunk-RXR3BZZK.cjs.map} +1 -1
  52. package/dist/{chunk-VTBYJGTJ.cjs → chunk-SC4FK5N3.cjs} +2 -2
  53. package/dist/{chunk-VTBYJGTJ.cjs.map → chunk-SC4FK5N3.cjs.map} +1 -1
  54. package/dist/chunk-SP2L5FI7.js +2 -0
  55. package/dist/chunk-SP2L5FI7.js.map +1 -0
  56. package/dist/{chunk-SMTXYI6Q.js → chunk-STIYYCSL.js} +2 -2
  57. package/dist/{chunk-SMTXYI6Q.js.map → chunk-STIYYCSL.js.map} +1 -1
  58. package/dist/{chunk-C45VZ526.cjs → chunk-UIKSYA4B.cjs} +2 -2
  59. package/dist/{chunk-C45VZ526.cjs.map → chunk-UIKSYA4B.cjs.map} +1 -1
  60. package/dist/{chunk-E7W73IO3.cjs → chunk-UJH4JKQC.cjs} +2 -2
  61. package/dist/{chunk-E7W73IO3.cjs.map → chunk-UJH4JKQC.cjs.map} +1 -1
  62. package/dist/{chunk-X7HU4N6X.cjs → chunk-URUWP25E.cjs} +2 -2
  63. package/dist/{chunk-X7HU4N6X.cjs.map → chunk-URUWP25E.cjs.map} +1 -1
  64. package/dist/{chunk-FMPII2NF.js → chunk-VIPOYVA3.js} +2 -2
  65. package/dist/{chunk-FMPII2NF.js.map → chunk-VIPOYVA3.js.map} +1 -1
  66. package/dist/{chunk-KIKR45SH.js → chunk-WHAXVJN5.js} +2 -2
  67. package/dist/{chunk-KIKR45SH.js.map → chunk-WHAXVJN5.js.map} +1 -1
  68. package/dist/{chunk-MPGPI6LC.js → chunk-XOWSDMW5.js} +2 -2
  69. package/dist/{chunk-MPGPI6LC.js.map → chunk-XOWSDMW5.js.map} +1 -1
  70. package/dist/{chunk-HP66FPW5.cjs → chunk-YVXKLKHE.cjs} +2 -2
  71. package/dist/{chunk-HP66FPW5.cjs.map → chunk-YVXKLKHE.cjs.map} +1 -1
  72. package/dist/{chunk-SM7PYFD2.cjs → chunk-ZZW5IT44.cjs} +2 -2
  73. package/dist/{chunk-SM7PYFD2.cjs.map → chunk-ZZW5IT44.cjs.map} +1 -1
  74. package/dist/metafile-cjs.json +1 -1
  75. package/dist/metafile-esm.json +1 -1
  76. package/dist/v2/address-input/address-input.cjs +1 -1
  77. package/dist/v2/address-input/address-input.js +1 -1
  78. package/dist/v2/button/button.cjs +1 -1
  79. package/dist/v2/button/button.js +1 -1
  80. package/dist/v2/calendar/calendar.cjs +1 -1
  81. package/dist/v2/calendar/calendar.js +1 -1
  82. package/dist/v2/card/card.cjs +1 -1
  83. package/dist/v2/card/card.d.ts +7 -2
  84. package/dist/v2/card/card.js +1 -1
  85. package/dist/v2/carousel/carousel.cjs +1 -1
  86. package/dist/v2/carousel/carousel.js +1 -1
  87. package/dist/v2/checkbox/button-checkbox.cjs +1 -1
  88. package/dist/v2/checkbox/button-checkbox.js +1 -1
  89. package/dist/v2/checkbox-group/checkbox-group.cjs +1 -1
  90. package/dist/v2/checkbox-group/checkbox-group.js +1 -1
  91. package/dist/v2/combobox/combobox.cjs +1 -1
  92. package/dist/v2/combobox/combobox.js +1 -1
  93. package/dist/v2/command/command.cjs +1 -1
  94. package/dist/v2/command/command.js +1 -1
  95. package/dist/v2/date-picker/date-picker-input.cjs +1 -1
  96. package/dist/v2/date-picker/date-picker-input.js +1 -1
  97. package/dist/v2/date-picker/date-picker.cjs +1 -1
  98. package/dist/v2/date-picker/date-picker.js +1 -1
  99. package/dist/v2/dialog/dialog.cjs +1 -1
  100. package/dist/v2/dialog/dialog.js +1 -1
  101. package/dist/v2/drawer/drawer.cjs +1 -1
  102. package/dist/v2/drawer/drawer.js +1 -1
  103. package/dist/v2/flex-drawer/flex-drawer.cjs +1 -1
  104. package/dist/v2/flex-drawer/flex-drawer.js +1 -1
  105. package/dist/v2/image-preview/image-preview.cjs +1 -1
  106. package/dist/v2/image-preview/image-preview.js +1 -1
  107. package/dist/v2/index.cjs +1 -1
  108. package/dist/v2/index.js +1 -1
  109. package/dist/v2/input/formatters.cjs +1 -1
  110. package/dist/v2/input/formatters.d.ts +1 -0
  111. package/dist/v2/input/formatters.js +1 -1
  112. package/dist/v2/input/input.cjs +1 -1
  113. package/dist/v2/input/input.d.ts +2 -2
  114. package/dist/v2/input/input.js +1 -1
  115. package/dist/v2/input/input.stories.d.ts +2 -0
  116. package/dist/v2/multiselect/components/MultiSelectCommandGroup.cjs +1 -1
  117. package/dist/v2/multiselect/components/MultiSelectCommandGroup.js +1 -1
  118. package/dist/v2/multiselect/components/MultiSelectDropdown.cjs +1 -1
  119. package/dist/v2/multiselect/components/MultiSelectDropdown.js +1 -1
  120. package/dist/v2/multiselect/multiselect.cjs +1 -1
  121. package/dist/v2/multiselect/multiselect.js +1 -1
  122. package/dist/v2/time-select/time-select.cjs +1 -1
  123. package/dist/v2/time-select/time-select.js +1 -1
  124. package/package.json +7 -6
  125. package/dist/chunk-3TXN7A2Z.js +0 -2
  126. package/dist/chunk-3TXN7A2Z.js.map +0 -1
  127. package/dist/chunk-6LESB5UU.js +0 -27
  128. package/dist/chunk-6LESB5UU.js.map +0 -1
  129. package/dist/chunk-7X6KFDGZ.cjs +0 -2
  130. package/dist/chunk-7X6KFDGZ.cjs.map +0 -1
  131. package/dist/chunk-JH4FQUIS.js +0 -2
  132. package/dist/chunk-JH4FQUIS.js.map +0 -1
  133. package/dist/chunk-KKTQL7QK.js +0 -2
  134. package/dist/chunk-KKTQL7QK.js.map +0 -1
  135. package/dist/chunk-OUGYUQUB.cjs +0 -27
  136. package/dist/chunk-OUGYUQUB.cjs.map +0 -1
  137. package/dist/chunk-QUD4HTUP.cjs.map +0 -1
  138. package/dist/chunk-Z2MOZQCG.cjs +0 -2
  139. package/dist/chunk-Z2MOZQCG.cjs.map +0 -1
@@ -1,2 +1,2 @@
1
- import {b as b$2}from'./chunk-JH4FQUIS.js';import {a}from'./chunk-YTIIAU4W.js';import {b as b$1}from'./chunk-6MYNQMQU.js';import*as u from'react';import {Drawer}from'vaul';import {LuX}from'react-icons/lu';import {jsx,jsxs}from'react/jsx-runtime';function x({autoFocus:t=true,...e}){let{isMobile:a,isTablet:i}=b$1(),n=!a&&!i;return jsx(Drawer.Root,{"data-slot":"drawer",handleOnly:n,autoFocus:t,...e})}function C({...t}){return jsx(Drawer.Trigger,{"data-slot":"drawer-trigger",...t})}function f({...t}){return jsx(Drawer.Portal,{"data-slot":"drawer-portal",...t})}function v({...t}){return jsx(Drawer.Close,{"data-slot":"drawer-close",...t})}var b=u.forwardRef(({className:t,...e},a$1)=>jsx(Drawer.Overlay,{ref:a$1,"data-slot":"drawer-overlay",className:a("z-modal-stacking-context fixed inset-0 bg-black/50",t),...e}));function R({className:t,children:e,...a$1}){let i=/\bw-(\w+)\b/.test(t??""),{isMobile:n,isTablet:w}=b$1(),m=!n&&!w;return jsxs(f,{"data-slot":"drawer-portal",children:[jsx(b,{}),jsxs(Drawer.Content,{"data-slot":"drawer-content",className:a("group/drawer-content bg-background z-modal-stacking-context fixed flex h-auto flex-col",m?"!select-auto":"","data-[vaul-drawer-direction=top]:inset-x-0","data-[vaul-drawer-direction=top]:top-0","data-[vaul-drawer-direction=top]:mb-24","data-[vaul-drawer-direction=top]:max-h-[80vh]","data-[vaul-drawer-direction=top]:rounded-b-lg","data-[vaul-drawer-direction=top]:border-b","data-[vaul-drawer-direction=bottom]:inset-x-0","data-[vaul-drawer-direction=bottom]:bottom-0","data-[vaul-drawer-direction=bottom]:mt-24","data-[vaul-drawer-direction=bottom]:max-h-[80vh]","data-[vaul-drawer-direction=bottom]:rounded-t-lg","data-[vaul-drawer-direction=bottom]:border-t","data-[vaul-drawer-direction=right]:inset-y-0","data-[vaul-drawer-direction=right]:right-0","data-[vaul-drawer-direction=right]:border-l","data-[vaul-drawer-direction=right]:rounded-l-md",!i&&"data-[vaul-drawer-direction=right]:w-3/4",!i&&"data-[vaul-drawer-direction=right]:sm:max-w-md","data-[vaul-drawer-direction=left]:inset-y-0","data-[vaul-drawer-direction=left]:left-0","data-[vaul-drawer-direction=left]:border-r","data-[vaul-drawer-direction=left]:rounded-r-md",!i&&"data-[vaul-drawer-direction=left]:w-3/4",!i&&"data-[vaul-drawer-direction=left]:sm:max-w-sm",t),...a$1,children:[jsx("div",{className:"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block"}),e]})]})}function T({className:t,showClose:e=false,...a$1}){return jsxs("div",{"data-slot":"drawer-header",className:a("relative flex flex-col gap-0.5 border-b p-4 text-left md:gap-1.5 md:p-8",t),...a$1,children:[e&&jsx(v,{className:"focus:ring-ring absolute rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none","aria-label":"Close",asChild:true,children:jsx(b$2,{variant:"ghost-secondary",className:"text-primary absolute top-1/2 right-4 h-8 w-8 -translate-y-1/2 p-0",children:jsx(LuX,{})})}),a$1.children]})}function k({className:t,...e}){return jsx("div",{"data-slot":"drawer-footer",className:a("mt-auto flex gap-2 border-t p-4 md:p-8",t),...e})}function N({className:t,...e}){return jsx(Drawer.Title,{"data-slot":"drawer-title",className:a("text-display-md",t),...e})}function O({...t}){return jsx(Drawer.Description,{"data-slot":"drawer-description",...t})}export{x as a,C as b,f as c,v as d,b as e,R as f,T as g,k as h,N as i,O as j};//# sourceMappingURL=chunk-JE6P5GU3.js.map
2
- //# sourceMappingURL=chunk-JE6P5GU3.js.map
1
+ import {b as b$2}from'./chunk-SP2L5FI7.js';import {a}from'./chunk-YTIIAU4W.js';import {b as b$1}from'./chunk-6MYNQMQU.js';import*as u from'react';import {Drawer}from'vaul';import {LuX}from'react-icons/lu';import {jsx,jsxs}from'react/jsx-runtime';function x({autoFocus:t=true,...e}){let{isMobile:a,isTablet:i}=b$1(),n=!a&&!i;return jsx(Drawer.Root,{"data-slot":"drawer",handleOnly:n,autoFocus:t,...e})}function C({...t}){return jsx(Drawer.Trigger,{"data-slot":"drawer-trigger",...t})}function f({...t}){return jsx(Drawer.Portal,{"data-slot":"drawer-portal",...t})}function v({...t}){return jsx(Drawer.Close,{"data-slot":"drawer-close",...t})}var b=u.forwardRef(({className:t,...e},a$1)=>jsx(Drawer.Overlay,{ref:a$1,"data-slot":"drawer-overlay",className:a("z-modal-stacking-context fixed inset-0 bg-black/50",t),...e}));function R({className:t,children:e,...a$1}){let i=/\bw-(\w+)\b/.test(t??""),{isMobile:n,isTablet:w}=b$1(),m=!n&&!w;return jsxs(f,{"data-slot":"drawer-portal",children:[jsx(b,{}),jsxs(Drawer.Content,{"data-slot":"drawer-content",className:a("group/drawer-content bg-background z-modal-stacking-context fixed flex h-auto flex-col",m?"!select-auto":"","data-[vaul-drawer-direction=top]:inset-x-0","data-[vaul-drawer-direction=top]:top-0","data-[vaul-drawer-direction=top]:mb-24","data-[vaul-drawer-direction=top]:max-h-[80vh]","data-[vaul-drawer-direction=top]:rounded-b-lg","data-[vaul-drawer-direction=top]:border-b","data-[vaul-drawer-direction=bottom]:inset-x-0","data-[vaul-drawer-direction=bottom]:bottom-0","data-[vaul-drawer-direction=bottom]:mt-24","data-[vaul-drawer-direction=bottom]:max-h-[80vh]","data-[vaul-drawer-direction=bottom]:rounded-t-lg","data-[vaul-drawer-direction=bottom]:border-t","data-[vaul-drawer-direction=right]:inset-y-0","data-[vaul-drawer-direction=right]:right-0","data-[vaul-drawer-direction=right]:border-l","data-[vaul-drawer-direction=right]:rounded-l-md",!i&&"data-[vaul-drawer-direction=right]:w-3/4",!i&&"data-[vaul-drawer-direction=right]:sm:max-w-md","data-[vaul-drawer-direction=left]:inset-y-0","data-[vaul-drawer-direction=left]:left-0","data-[vaul-drawer-direction=left]:border-r","data-[vaul-drawer-direction=left]:rounded-r-md",!i&&"data-[vaul-drawer-direction=left]:w-3/4",!i&&"data-[vaul-drawer-direction=left]:sm:max-w-sm",t),...a$1,children:[jsx("div",{className:"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block"}),e]})]})}function T({className:t,showClose:e=false,...a$1}){return jsxs("div",{"data-slot":"drawer-header",className:a("relative flex flex-col gap-0.5 border-b p-4 text-left md:gap-1.5 md:p-8",t),...a$1,children:[e&&jsx(v,{className:"focus:ring-ring absolute rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none","aria-label":"Close",asChild:true,children:jsx(b$2,{variant:"ghost-secondary",className:"text-primary absolute top-1/2 right-4 h-8 w-8 -translate-y-1/2 p-0",children:jsx(LuX,{})})}),a$1.children]})}function k({className:t,...e}){return jsx("div",{"data-slot":"drawer-footer",className:a("mt-auto flex gap-2 border-t p-4 md:p-8",t),...e})}function N({className:t,...e}){return jsx(Drawer.Title,{"data-slot":"drawer-title",className:a("text-display-md",t),...e})}function O({...t}){return jsx(Drawer.Description,{"data-slot":"drawer-description",...t})}export{x as a,C as b,f as c,v as d,b as e,R as f,T as g,k as h,N as i,O as j};//# sourceMappingURL=chunk-M7LXLMUQ.js.map
2
+ //# sourceMappingURL=chunk-M7LXLMUQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/drawer/drawer.tsx"],"names":["Drawer","autoFocus","props","isMobile","isTablet","useWindowSize_default","handleOnly","jsx","DrawerPrimitive","DrawerTrigger","DrawerPortal","DrawerClose","DrawerOverlay","className","ref","cn","DrawerContent","children","hasWidth","allowUserSelect","jsxs","DrawerHeader","showClose","Button","LuX","DrawerFooter","DrawerTitle","DrawerDescription"],"mappings":"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","file":"chunk-JE6P5GU3.js","sourcesContent":["import * as React from 'react';\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { LuX } from 'react-icons/lu';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/v2/button/button';\nimport { useWindowSize } from '@/hooks';\n\nfunction Drawer({ autoFocus = true, ...props }: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n const { isMobile, isTablet } = useWindowSize();\n // Invert the default behavior of vaul's drawer: https://vaul.emilkowal.ski/api#root\n // Desktop users can click the X or overlay to close, so we can disable dragging the drawer itself to close\n // this lets us allow users them to select text in the drawer without accidentally closing it\n const handleOnly = !isMobile && !isTablet;\n return (\n <DrawerPrimitive.Root\n data-slot=\"drawer\"\n handleOnly={handleOnly}\n // Invert the default behavior of vaul's drawer to always autoFocus by default\n // This ensures that keyboard users see focus moved to the drawer when it opens\n // unless explicitly disabled\n autoFocus={autoFocus}\n {...props}\n />\n );\n}\n\nfunction DrawerTrigger({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n}\n\n// NOTE: forwardRef for radix (underlying library for vaul)\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n data-slot=\"drawer-overlay\"\n className={cn('z-modal-stacking-context fixed inset-0 bg-black/50', className)}\n {...props}\n />\n));\n\nfunction DrawerContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n const hasWidth = /\\bw-(\\w+)\\b/.test(className ?? '');\n\n const { isMobile, isTablet } = useWindowSize();\n // Desktop users can click the X or overlay to close, so we can disable dragging the drawer itself to close\n // this lets us allow users them to select text in the drawer without accidentally closing it\n const allowUserSelect = !isMobile && !isTablet;\n\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n 'group/drawer-content bg-background z-modal-stacking-context fixed flex h-auto flex-col',\n\n allowUserSelect ? '!select-auto' : '',\n\n // top drawer\n 'data-[vaul-drawer-direction=top]:inset-x-0',\n 'data-[vaul-drawer-direction=top]:top-0',\n 'data-[vaul-drawer-direction=top]:mb-24',\n 'data-[vaul-drawer-direction=top]:max-h-[80vh]',\n 'data-[vaul-drawer-direction=top]:rounded-b-lg',\n 'data-[vaul-drawer-direction=top]:border-b',\n\n // bottom drawer\n 'data-[vaul-drawer-direction=bottom]:inset-x-0',\n 'data-[vaul-drawer-direction=bottom]:bottom-0',\n 'data-[vaul-drawer-direction=bottom]:mt-24',\n 'data-[vaul-drawer-direction=bottom]:max-h-[80vh]',\n 'data-[vaul-drawer-direction=bottom]:rounded-t-lg',\n 'data-[vaul-drawer-direction=bottom]:border-t',\n\n // right drawer\n 'data-[vaul-drawer-direction=right]:inset-y-0',\n 'data-[vaul-drawer-direction=right]:right-0',\n 'data-[vaul-drawer-direction=right]:border-l',\n 'data-[vaul-drawer-direction=right]:rounded-l-md',\n !hasWidth && 'data-[vaul-drawer-direction=right]:w-3/4',\n !hasWidth && 'data-[vaul-drawer-direction=right]:sm:max-w-md',\n\n // left drawer\n 'data-[vaul-drawer-direction=left]:inset-y-0',\n 'data-[vaul-drawer-direction=left]:left-0',\n 'data-[vaul-drawer-direction=left]:border-r',\n 'data-[vaul-drawer-direction=left]:rounded-r-md',\n !hasWidth && 'data-[vaul-drawer-direction=left]:w-3/4',\n !hasWidth && 'data-[vaul-drawer-direction=left]:sm:max-w-sm',\n className,\n )}\n {...props}\n >\n <div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({\n className,\n showClose = false,\n ...props\n}: React.ComponentProps<'div'> & { showClose?: boolean }) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n 'relative flex flex-col gap-0.5 border-b p-4 text-left md:gap-1.5 md:p-8',\n className,\n )}\n {...props}\n >\n {showClose && (\n <DrawerClose\n className=\"focus:ring-ring absolute rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\"\n aria-label=\"Close\"\n asChild\n >\n <Button\n variant=\"ghost-secondary\"\n className=\"text-primary absolute top-1/2 right-4 h-8 w-8 -translate-y-1/2 p-0\"\n >\n <LuX />\n </Button>\n </DrawerClose>\n )}\n {props.children}\n </div>\n );\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn('mt-auto flex gap-2 border-t p-4 md:p-8', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerTitle({ className, ...props }: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn('text-display-md', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return <DrawerPrimitive.Description data-slot=\"drawer-description\" {...props} />;\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n};\n"]}
1
+ {"version":3,"sources":["../src/v2/drawer/drawer.tsx"],"names":["Drawer","autoFocus","props","isMobile","isTablet","useWindowSize_default","handleOnly","jsx","DrawerPrimitive","DrawerTrigger","DrawerPortal","DrawerClose","DrawerOverlay","className","ref","cn","DrawerContent","children","hasWidth","allowUserSelect","jsxs","DrawerHeader","showClose","Button","LuX","DrawerFooter","DrawerTitle","DrawerDescription"],"mappings":"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","file":"chunk-M7LXLMUQ.js","sourcesContent":["import * as React from 'react';\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { LuX } from 'react-icons/lu';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/v2/button/button';\nimport { useWindowSize } from '@/hooks';\n\nfunction Drawer({ autoFocus = true, ...props }: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n const { isMobile, isTablet } = useWindowSize();\n // Invert the default behavior of vaul's drawer: https://vaul.emilkowal.ski/api#root\n // Desktop users can click the X or overlay to close, so we can disable dragging the drawer itself to close\n // this lets us allow users them to select text in the drawer without accidentally closing it\n const handleOnly = !isMobile && !isTablet;\n return (\n <DrawerPrimitive.Root\n data-slot=\"drawer\"\n handleOnly={handleOnly}\n // Invert the default behavior of vaul's drawer to always autoFocus by default\n // This ensures that keyboard users see focus moved to the drawer when it opens\n // unless explicitly disabled\n autoFocus={autoFocus}\n {...props}\n />\n );\n}\n\nfunction DrawerTrigger({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n}\n\n// NOTE: forwardRef for radix (underlying library for vaul)\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n data-slot=\"drawer-overlay\"\n className={cn('z-modal-stacking-context fixed inset-0 bg-black/50', className)}\n {...props}\n />\n));\n\nfunction DrawerContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n const hasWidth = /\\bw-(\\w+)\\b/.test(className ?? '');\n\n const { isMobile, isTablet } = useWindowSize();\n // Desktop users can click the X or overlay to close, so we can disable dragging the drawer itself to close\n // this lets us allow users them to select text in the drawer without accidentally closing it\n const allowUserSelect = !isMobile && !isTablet;\n\n return (\n <DrawerPortal data-slot=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n 'group/drawer-content bg-background z-modal-stacking-context fixed flex h-auto flex-col',\n\n allowUserSelect ? '!select-auto' : '',\n\n // top drawer\n 'data-[vaul-drawer-direction=top]:inset-x-0',\n 'data-[vaul-drawer-direction=top]:top-0',\n 'data-[vaul-drawer-direction=top]:mb-24',\n 'data-[vaul-drawer-direction=top]:max-h-[80vh]',\n 'data-[vaul-drawer-direction=top]:rounded-b-lg',\n 'data-[vaul-drawer-direction=top]:border-b',\n\n // bottom drawer\n 'data-[vaul-drawer-direction=bottom]:inset-x-0',\n 'data-[vaul-drawer-direction=bottom]:bottom-0',\n 'data-[vaul-drawer-direction=bottom]:mt-24',\n 'data-[vaul-drawer-direction=bottom]:max-h-[80vh]',\n 'data-[vaul-drawer-direction=bottom]:rounded-t-lg',\n 'data-[vaul-drawer-direction=bottom]:border-t',\n\n // right drawer\n 'data-[vaul-drawer-direction=right]:inset-y-0',\n 'data-[vaul-drawer-direction=right]:right-0',\n 'data-[vaul-drawer-direction=right]:border-l',\n 'data-[vaul-drawer-direction=right]:rounded-l-md',\n !hasWidth && 'data-[vaul-drawer-direction=right]:w-3/4',\n !hasWidth && 'data-[vaul-drawer-direction=right]:sm:max-w-md',\n\n // left drawer\n 'data-[vaul-drawer-direction=left]:inset-y-0',\n 'data-[vaul-drawer-direction=left]:left-0',\n 'data-[vaul-drawer-direction=left]:border-r',\n 'data-[vaul-drawer-direction=left]:rounded-r-md',\n !hasWidth && 'data-[vaul-drawer-direction=left]:w-3/4',\n !hasWidth && 'data-[vaul-drawer-direction=left]:sm:max-w-sm',\n className,\n )}\n {...props}\n >\n <div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({\n className,\n showClose = false,\n ...props\n}: React.ComponentProps<'div'> & { showClose?: boolean }) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n 'relative flex flex-col gap-0.5 border-b p-4 text-left md:gap-1.5 md:p-8',\n className,\n )}\n {...props}\n >\n {showClose && (\n <DrawerClose\n className=\"focus:ring-ring absolute rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\"\n aria-label=\"Close\"\n asChild\n >\n <Button\n variant=\"ghost-secondary\"\n className=\"text-primary absolute top-1/2 right-4 h-8 w-8 -translate-y-1/2 p-0\"\n >\n <LuX />\n </Button>\n </DrawerClose>\n )}\n {props.children}\n </div>\n );\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn('mt-auto flex gap-2 border-t p-4 md:p-8', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerTitle({ className, ...props }: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn('text-display-md', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return <DrawerPrimitive.Description data-slot=\"drawer-description\" {...props} />;\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-YTIIAU4W.js';import {cva}from'class-variance-authority';import {jsx}from'react/jsx-runtime';var n=cva("bg-card text-card-foreground group/card flex flex-col gap-4 overflow-hidden rounded-lg border border-gray-200 py-4 text-sm shadow-sm has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg",{variants:{variant:{default:"",selected:"border-green bg-green-100"}},defaultVariants:{variant:"default"}});function l({className:a$1,size:r="default",variant:d,...o}){return jsx("div",{"data-slot":"card","data-size":r,className:a(n({variant:d}),a$1),...o})}function m({className:a$1,hideHeaderDivider:r=false,...d}){return jsx("div",{"data-slot":"card-header",className:a("group/card-header @container/card-header grid auto-rows-min items-center gap-1 rounded-t-lg border-b border-gray-200 px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",r&&"border-none [.border-none]:pb-0",a$1),...d})}function u({className:a$1,...r}){return jsx("div",{"data-slot":"card-title",className:a("text-base leading-snug font-bold group-data-[size=sm]/card:text-sm",a$1),...r})}function f({className:a$1,...r}){return jsx("div",{"data-slot":"card-description",className:a("text-muted-foreground text-sm",a$1),...r})}function g({className:a$1,...r}){return jsx("div",{"data-slot":"card-action",className:a("col-start-2 row-start-1 self-start justify-self-end",a$1),...r})}function b({className:a$1,...r}){return jsx("div",{"data-slot":"card-content",className:a("px-4 group-data-[size=sm]/card:px-3",a$1),...r})}function v({className:a$1,...r}){return jsx("div",{"data-slot":"card-footer",className:a("bg-muted/50 flex items-center rounded-b-lg border-t border-gray-200 p-4 group-data-[size=sm]/card:p-3",a$1),...r})}export{l as a,m as b,u as c,f as d,g as e,b as f,v as g};//# sourceMappingURL=chunk-NVFC45IS.js.map
2
+ //# sourceMappingURL=chunk-NVFC45IS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/v2/card/card.tsx"],"names":["cardVariants","cva","Card","className","size","variant","props","jsx","cn","CardHeader","hideHeaderDivider","CardTitle","CardDescription","CardAction","CardContent","CardFooter"],"mappings":"mHAIA,IAAMA,CAAAA,CAAeC,GAAAA,CACnB,6VAAA,CACA,CACE,SAAU,CACR,OAAA,CAAS,CACP,OAAA,CAAS,EAAA,CACT,SAAU,2BACZ,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SACX,CACF,CACF,EAMA,SAASC,CAAAA,CAAK,CAAE,SAAA,CAAAC,GAAAA,CAAW,IAAA,CAAAC,CAAAA,CAAO,SAAA,CAAW,OAAA,CAAAC,EAAS,GAAGC,CAAM,EAAc,CAC3E,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,MAAA,CACV,WAAA,CAAWH,CAAAA,CACX,SAAA,CAAWI,EAAGR,CAAAA,CAAa,CAAE,QAAAK,CAAQ,CAAC,EAAGF,GAAS,CAAA,CACjD,GAAGG,CAAAA,CACN,CAEJ,CAEA,SAASG,CAAAA,CAAW,CAClB,UAAAN,GAAAA,CACA,iBAAA,CAAAO,EAAoB,KAAA,CACpB,GAAGJ,CACL,CAAA,CAAkE,CAChE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,cACV,SAAA,CAAWC,CAAAA,CACT,+TACAE,CAAAA,EAAqB,iCAAA,CACrBP,GACF,CAAA,CACC,GAAGG,CAAAA,CACN,CAEJ,CAEA,SAASK,EAAU,CAAE,SAAA,CAAAR,IAAW,GAAGG,CAAM,CAAA,CAAgC,CACvE,OACEC,GAAAA,CAAC,OACC,WAAA,CAAU,YAAA,CACV,UAAWC,CAAAA,CACT,oEAAA,CACAL,GACF,CAAA,CACC,GAAGG,CAAAA,CACN,CAEJ,CAEA,SAASM,EAAgB,CAAE,SAAA,CAAAT,IAAW,GAAGG,CAAM,EAAgC,CAC7E,OACEC,GAAAA,CAAC,KAAA,CAAA,CACC,WAAA,CAAU,kBAAA,CACV,UAAWC,CAAAA,CAAG,+BAAA,CAAiCL,GAAS,CAAA,CACvD,GAAGG,EACN,CAEJ,CAEA,SAASO,CAAAA,CAAW,CAAE,SAAA,CAAAV,IAAW,GAAGG,CAAM,EAAgC,CACxE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,aAAA,CACV,SAAA,CAAWC,CAAAA,CAAG,qDAAA,CAAuDL,GAAS,CAAA,CAC7E,GAAGG,EACN,CAEJ,CAEA,SAASQ,CAAAA,CAAY,CAAE,SAAA,CAAAX,GAAAA,CAAW,GAAGG,CAAM,EAAgC,CACzE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,eACV,SAAA,CAAWC,CAAAA,CAAG,qCAAA,CAAuCL,GAAS,CAAA,CAC7D,GAAGG,EACN,CAEJ,CAEA,SAASS,CAAAA,CAAW,CAAE,UAAAZ,GAAAA,CAAW,GAAGG,CAAM,CAAA,CAAgC,CACxE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,cACV,SAAA,CAAWC,CAAAA,CACT,wGACAL,GACF,CAAA,CACC,GAAGG,CAAAA,CACN,CAEJ","file":"chunk-NVFC45IS.js","sourcesContent":["import * as React from 'react';\nimport { cva, VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\n\nconst cardVariants = cva(\n 'bg-card text-card-foreground group/card flex flex-col gap-4 overflow-hidden rounded-lg border border-gray-200 py-4 text-sm shadow-sm has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg',\n {\n variants: {\n variant: {\n default: '',\n selected: 'border-green bg-green-100',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ntype CardProps = React.ComponentProps<'div'> & { size?: 'default' | 'sm' } & VariantProps<\n typeof cardVariants\n >;\n\nfunction Card({ className, size = 'default', variant, ...props }: CardProps) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(cardVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction CardHeader({\n className,\n hideHeaderDivider = false,\n ...props\n}: React.ComponentProps<'div'> & { hideHeaderDivider?: boolean }) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n 'group/card-header @container/card-header grid auto-rows-min items-center gap-1 rounded-t-lg border-b border-gray-200 px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3',\n hideHeaderDivider && 'border-none [.border-none]:pb-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\n 'text-base leading-snug font-bold group-data-[size=sm]/card:text-sm',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn('col-start-2 row-start-1 self-start justify-self-end', className)}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn('px-4 group-data-[size=sm]/card:px-3', className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n 'bg-muted/50 flex items-center rounded-b-lg border-t border-gray-200 p-4 group-data-[size=sm]/card:p-3',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent };\n"]}
@@ -1,2 +1,2 @@
1
- import {a}from'./chunk-Z2IHO2AX.js';import {a as a$1}from'./chunk-MPGPI6LC.js';import {d,h}from'./chunk-SMTXYI6Q.js';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var g=({uniqueId:t,open:p,loading:l,options:o,selected:c,toggleOption:a$2,onSearch:d$1,scrollbarRef:r,inputRef:f,emptyIndicator:R,loadingIndicator:n,selectFirstItem:M})=>jsx("div",{className:"relative",children:p&&jsx(d,{id:t,className:"bg-popover text-popover-foreground animate-in absolute top-1 z-10 w-full rounded-md border shadow-xs outline-none",onMouseLeave:()=>{r.current=false;},onMouseEnter:()=>{r.current=true;},onMouseUp:()=>{f?.current?.focus();},children:l&&n?n:jsxs(Fragment,{children:[jsx(a,{onSearch:d$1,options:o,emptyIndicator:R}),!M&&jsx(h,{value:"-",className:"hidden"}),jsx(a$1,{options:o,uniqueId:t,selected:c,toggleOption:a$2})]})})});export{g as a};//# sourceMappingURL=chunk-WMOD232S.js.map
2
- //# sourceMappingURL=chunk-WMOD232S.js.map
1
+ import {a}from'./chunk-Z2IHO2AX.js';import {a as a$1}from'./chunk-XOWSDMW5.js';import {d,h}from'./chunk-STIYYCSL.js';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var g=({uniqueId:t,open:p,loading:l,options:o,selected:c,toggleOption:a$2,onSearch:d$1,scrollbarRef:r,inputRef:f,emptyIndicator:R,loadingIndicator:n,selectFirstItem:M})=>jsx("div",{className:"relative",children:p&&jsx(d,{id:t,className:"bg-popover text-popover-foreground animate-in absolute top-1 z-10 w-full rounded-md border shadow-xs outline-none",onMouseLeave:()=>{r.current=false;},onMouseEnter:()=>{r.current=true;},onMouseUp:()=>{f?.current?.focus();},children:l&&n?n:jsxs(Fragment,{children:[jsx(a,{onSearch:d$1,options:o,emptyIndicator:R}),!M&&jsx(h,{value:"-",className:"hidden"}),jsx(a$1,{options:o,uniqueId:t,selected:c,toggleOption:a$2})]})})});export{g as a};//# sourceMappingURL=chunk-OYN4D5J3.js.map
2
+ //# sourceMappingURL=chunk-OYN4D5J3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/multiselect/components/MultiSelectDropdown.tsx"],"names":["MultiSelectDropdown","uniqueId","open","loading","options","selected","toggleOption","onSearch","scrollbarRef","inputRef","emptyIndicator","loadingIndicator","selectFirstItem","jsx","CommandList","jsxs","Fragment","EmptyItem","CommandItem","MultiSelectCommandGroup"],"mappings":"uKAgBO,IAAMA,CAAAA,CAAsB,CAAC,CAClC,QAAA,CAAAC,CAAAA,CACA,KAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,YAAA,CAAAC,GAAAA,CACA,QAAA,CAAAC,GAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CACF,CAAA,GAEIC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UAAA,CACZ,QAAA,CAAAX,GACCW,GAAAA,CAACC,CAAAA,CAAA,CACC,EAAA,CAAIb,CAAAA,CACJ,SAAA,CAAU,mHAAA,CACV,YAAA,CAAc,IAAM,CAElBO,CAAAA,CAAa,OAAA,CAAU,MAEzB,CAAA,CACA,aAAc,IAAM,CAElBA,CAAAA,CAAa,OAAA,CAAU,KAEzB,CAAA,CACA,UAAW,IAAM,CACfC,CAAAA,EAAU,OAAA,EAAS,KAAA,GACrB,EAEC,QAAA,CAAAN,CAAAA,EAAWQ,CAAAA,CACVA,CAAAA,CAEAI,IAAAA,CAAAC,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAH,GAAAA,CAACI,CAAAA,CAAA,CAAgB,QAAA,CAAAV,GAAAA,CAAU,OAAA,CAAAH,EAAS,cAAA,CAAAM,CAAAA,CAAkB,CAAA,CACrD,CAACE,CAAAA,EAAmBC,GAAAA,CAACK,EAAA,CAAY,KAAA,CAAM,GAAA,CAAI,SAAA,CAAU,QAAA,CAAS,CAAA,CAC/DL,IAACM,GAAAA,CAAA,CAA8B,OAAA,CAAAf,CAAAA,CAAS,QAAA,CAAAH,CAAAA,CAAU,QAAA,CAAAI,CAAAA,CAAU,YAAA,CAAAC,GAAAA,CAAgB,CAAA,CAAA,CAC9E,CAAA,CAEJ,CAAA,CAEJ","file":"chunk-WMOD232S.js","sourcesContent":["import { CommandItem, CommandList } from '@/v2/command/command';\nimport { MultiSelectProps } from '../types';\nimport { MultiSelectCommandGroup } from './MultiSelectCommandGroup';\nimport { EmptyItem } from './EmptyItem';\nimport type { UseRefsReturn } from '../hooks/useRefs';\nimport { UseMultiSelectReturn } from '../hooks/useMultiSelect';\nimport { UseInteractionsReturn } from '../hooks/useInteractions';\n\ntype Props = Pick<\n MultiSelectProps,\n 'loading' | 'loadingIndicator' | 'emptyIndicator' | 'onSearch' | 'selectFirstItem'\n> &\n Pick<UseRefsReturn, 'inputRef' | 'scrollbarRef'> &\n Pick<UseMultiSelectReturn, 'uniqueId' | 'open' | 'selected' | 'options'> &\n Pick<UseInteractionsReturn, 'toggleOption'>;\n\nexport const MultiSelectDropdown = ({\n uniqueId,\n open,\n loading,\n options,\n selected,\n toggleOption,\n onSearch,\n scrollbarRef,\n inputRef,\n emptyIndicator,\n loadingIndicator,\n selectFirstItem,\n}: Props) => {\n return (\n <div className=\"relative\">\n {open && (\n <CommandList\n id={uniqueId}\n className=\"bg-popover text-popover-foreground animate-in absolute top-1 z-10 w-full rounded-md border shadow-xs outline-none\"\n onMouseLeave={() => {\n // eslint-disable-next-line no-param-reassign\n scrollbarRef.current = false;\n // setOnScrollbar(false);\n }}\n onMouseEnter={() => {\n // eslint-disable-next-line no-param-reassign\n scrollbarRef.current = true;\n // setOnScrollbar(true);\n }}\n onMouseUp={() => {\n inputRef?.current?.focus();\n }}\n >\n {loading && loadingIndicator ? (\n loadingIndicator\n ) : (\n <>\n <EmptyItem {...{ onSearch, options, emptyIndicator }} />\n {!selectFirstItem && <CommandItem value=\"-\" className=\"hidden\" />}\n <MultiSelectCommandGroup {...{ options, uniqueId, selected, toggleOption }} />\n </>\n )}\n </CommandList>\n )}\n </div>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/v2/multiselect/components/MultiSelectDropdown.tsx"],"names":["MultiSelectDropdown","uniqueId","open","loading","options","selected","toggleOption","onSearch","scrollbarRef","inputRef","emptyIndicator","loadingIndicator","selectFirstItem","jsx","CommandList","jsxs","Fragment","EmptyItem","CommandItem","MultiSelectCommandGroup"],"mappings":"uKAgBO,IAAMA,CAAAA,CAAsB,CAAC,CAClC,QAAA,CAAAC,CAAAA,CACA,KAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,YAAA,CAAAC,GAAAA,CACA,QAAA,CAAAC,GAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CACF,CAAA,GAEIC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,UAAA,CACZ,QAAA,CAAAX,GACCW,GAAAA,CAACC,CAAAA,CAAA,CACC,EAAA,CAAIb,CAAAA,CACJ,SAAA,CAAU,mHAAA,CACV,YAAA,CAAc,IAAM,CAElBO,CAAAA,CAAa,OAAA,CAAU,MAEzB,CAAA,CACA,aAAc,IAAM,CAElBA,CAAAA,CAAa,OAAA,CAAU,KAEzB,CAAA,CACA,UAAW,IAAM,CACfC,CAAAA,EAAU,OAAA,EAAS,KAAA,GACrB,EAEC,QAAA,CAAAN,CAAAA,EAAWQ,CAAAA,CACVA,CAAAA,CAEAI,IAAAA,CAAAC,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAH,GAAAA,CAACI,CAAAA,CAAA,CAAgB,QAAA,CAAAV,GAAAA,CAAU,OAAA,CAAAH,EAAS,cAAA,CAAAM,CAAAA,CAAkB,CAAA,CACrD,CAACE,CAAAA,EAAmBC,GAAAA,CAACK,EAAA,CAAY,KAAA,CAAM,GAAA,CAAI,SAAA,CAAU,QAAA,CAAS,CAAA,CAC/DL,IAACM,GAAAA,CAAA,CAA8B,OAAA,CAAAf,CAAAA,CAAS,QAAA,CAAAH,CAAAA,CAAU,QAAA,CAAAI,CAAAA,CAAU,YAAA,CAAAC,GAAAA,CAAgB,CAAA,CAAA,CAC9E,CAAA,CAEJ,CAAA,CAEJ","file":"chunk-OYN4D5J3.js","sourcesContent":["import { CommandItem, CommandList } from '@/v2/command/command';\nimport { MultiSelectProps } from '../types';\nimport { MultiSelectCommandGroup } from './MultiSelectCommandGroup';\nimport { EmptyItem } from './EmptyItem';\nimport type { UseRefsReturn } from '../hooks/useRefs';\nimport { UseMultiSelectReturn } from '../hooks/useMultiSelect';\nimport { UseInteractionsReturn } from '../hooks/useInteractions';\n\ntype Props = Pick<\n MultiSelectProps,\n 'loading' | 'loadingIndicator' | 'emptyIndicator' | 'onSearch' | 'selectFirstItem'\n> &\n Pick<UseRefsReturn, 'inputRef' | 'scrollbarRef'> &\n Pick<UseMultiSelectReturn, 'uniqueId' | 'open' | 'selected' | 'options'> &\n Pick<UseInteractionsReturn, 'toggleOption'>;\n\nexport const MultiSelectDropdown = ({\n uniqueId,\n open,\n loading,\n options,\n selected,\n toggleOption,\n onSearch,\n scrollbarRef,\n inputRef,\n emptyIndicator,\n loadingIndicator,\n selectFirstItem,\n}: Props) => {\n return (\n <div className=\"relative\">\n {open && (\n <CommandList\n id={uniqueId}\n className=\"bg-popover text-popover-foreground animate-in absolute top-1 z-10 w-full rounded-md border shadow-xs outline-none\"\n onMouseLeave={() => {\n // eslint-disable-next-line no-param-reassign\n scrollbarRef.current = false;\n // setOnScrollbar(false);\n }}\n onMouseEnter={() => {\n // eslint-disable-next-line no-param-reassign\n scrollbarRef.current = true;\n // setOnScrollbar(true);\n }}\n onMouseUp={() => {\n inputRef?.current?.focus();\n }}\n >\n {loading && loadingIndicator ? (\n loadingIndicator\n ) : (\n <>\n <EmptyItem {...{ onSearch, options, emptyIndicator }} />\n {!selectFirstItem && <CommandItem value=\"-\" className=\"hidden\" />}\n <MultiSelectCommandGroup {...{ options, uniqueId, selected, toggleOption }} />\n </>\n )}\n </CommandList>\n )}\n </div>\n );\n};\n"]}
@@ -1,2 +1,2 @@
1
- import {b}from'./chunk-JH4FQUIS.js';import {a as a$1}from'./chunk-J3GR47HY.js';import {a}from'./chunk-YTIIAU4W.js';import w,{useRef,useState,useLayoutEffect}from'react';import {useSpring,animated}from'@react-spring/web';import {LuChevronLeft,LuChevronRight}from'react-icons/lu';import {jsx,jsxs}from'react/jsx-runtime';function E({isOpen:t,drawerPosition:e,className:o,...l}){let i=e==="right"?jsx(LuChevronLeft,{}):jsx(LuChevronRight,{}),s=e==="right"?jsx(LuChevronRight,{}):jsx(LuChevronLeft,{});return jsx(b,{size:"sm",variant:"secondary-icon-rounded",className:a("absolute top-16 z-10",{"left-[-16px]":e==="right","right-[-16px]":e==="left"},o),...l,children:t?s:i})}function S({className:t="",children:e,...o}){return jsx("div",{className:a("flex h-auto w-full flex-col",t),...o,children:e})}function $({className:t="",children:e,...o}){return jsx("div",{className:a("flex h-full w-full flex-col",t),...o,children:e})}function k({className:t="",children:e,...o}){return jsx("div",{className:a("flex w-full items-end justify-between",t),...o,children:e})}function j({position:t,className:e="",children:o,isOpen:l,collapsedWidth:i="4rem",defaultWidth:s,...R}){let d=useRef(null),[c,P]=useState(0),[u,D]=useState(0),p=null,m=null,h=null,x=[];w.Children.toArray(o).forEach(a=>{if(w.isValidElement(a))switch(a.type){case E:p=a;break;case S:m=a;break;case k:h=a;break;default:x.push(a);}}),useLayoutEffect(()=>{d.current&&(D(a$1(s,d.current)),P(a$1(i,d.current)));},[i,s]);let C=useSpring({width:l?u:c,minWidth:l?u:c,config:{tension:250,friction:30}});return jsxs("div",{className:"relative flex",children:[p,jsx(animated.div,{role:"region",className:a("flex-drawer-outer relative z-1 overflow-x-hidden shadow-md",{"rounded-l-md border-l":t==="right","rounded-r-md border-r":t==="left"}),style:C,ref:d,children:jsx("div",{style:{width:`${u}px`},className:a("flex-drawer-fixed absolute top-0 h-full px-4 py-6",{"right-0":t==="left"},e),...R,children:jsxs("div",{className:a("flex-drawer-inner flex h-full flex-col transition-discrete duration-300 ease-out",{"hidden opacity-0":!l,"visible opacity-100":l}),children:[m,x,h]})})})]})}export{E as a,S as b,$ as c,k as d,j as e};//# sourceMappingURL=chunk-UVZVZAGK.js.map
2
- //# sourceMappingURL=chunk-UVZVZAGK.js.map
1
+ import {b}from'./chunk-SP2L5FI7.js';import {a as a$1}from'./chunk-J3GR47HY.js';import {a}from'./chunk-YTIIAU4W.js';import w,{useRef,useState,useLayoutEffect}from'react';import {useSpring,animated}from'@react-spring/web';import {LuChevronLeft,LuChevronRight}from'react-icons/lu';import {jsx,jsxs}from'react/jsx-runtime';function E({isOpen:t,drawerPosition:e,className:o,...l}){let i=e==="right"?jsx(LuChevronLeft,{}):jsx(LuChevronRight,{}),s=e==="right"?jsx(LuChevronRight,{}):jsx(LuChevronLeft,{});return jsx(b,{size:"sm",variant:"secondary-icon-rounded",className:a("absolute top-16 z-10",{"left-[-16px]":e==="right","right-[-16px]":e==="left"},o),...l,children:t?s:i})}function S({className:t="",children:e,...o}){return jsx("div",{className:a("flex h-auto w-full flex-col",t),...o,children:e})}function $({className:t="",children:e,...o}){return jsx("div",{className:a("flex h-full w-full flex-col",t),...o,children:e})}function k({className:t="",children:e,...o}){return jsx("div",{className:a("flex w-full items-end justify-between",t),...o,children:e})}function j({position:t,className:e="",children:o,isOpen:l,collapsedWidth:i="4rem",defaultWidth:s,...R}){let d=useRef(null),[c,P]=useState(0),[u,D]=useState(0),p=null,m=null,h=null,x=[];w.Children.toArray(o).forEach(a=>{if(w.isValidElement(a))switch(a.type){case E:p=a;break;case S:m=a;break;case k:h=a;break;default:x.push(a);}}),useLayoutEffect(()=>{d.current&&(D(a$1(s,d.current)),P(a$1(i,d.current)));},[i,s]);let C=useSpring({width:l?u:c,minWidth:l?u:c,config:{tension:250,friction:30}});return jsxs("div",{className:"relative flex",children:[p,jsx(animated.div,{role:"region",className:a("flex-drawer-outer relative z-1 overflow-x-hidden shadow-md",{"rounded-l-md border-l":t==="right","rounded-r-md border-r":t==="left"}),style:C,ref:d,children:jsx("div",{style:{width:`${u}px`},className:a("flex-drawer-fixed absolute top-0 h-full px-4 py-6",{"right-0":t==="left"},e),...R,children:jsxs("div",{className:a("flex-drawer-inner flex h-full flex-col transition-discrete duration-300 ease-out",{"hidden opacity-0":!l,"visible opacity-100":l}),children:[m,x,h]})})})]})}export{E as a,S as b,$ as c,k as d,j as e};//# sourceMappingURL=chunk-PVA67MWT.js.map
2
+ //# sourceMappingURL=chunk-PVA67MWT.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/flex-drawer/flex-drawer.tsx"],"names":["FlexDrawerButton","isOpen","drawerPosition","className","props","OpenIcon","jsx","LuChevronLeft","LuChevronRight","CloseIcon","Button","cn","FlexDrawerHeader","children","FlexDrawerContent","FlexDrawerFooter","FlexDrawer","position","collapsedWidth","defaultWidth","drawerRef","useRef","collapsedPx","setCollapsedPx","useState","drawerWidth","setDrawerWidth","button","header","footer","content","React","child","useLayoutEffect","toPx","outerSpringStyles","useSpring","jsxs","animated"],"mappings":"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","file":"chunk-UVZVZAGK.js","sourcesContent":["import React, {\n ReactNode,\n useLayoutEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n} from 'react';\nimport { useSpring, animated } from '@react-spring/web';\nimport { LuChevronLeft, LuChevronRight } from 'react-icons/lu';\nimport { Button } from '@/v2/button/button';\nimport { toPx } from '@/lib/toPx';\nimport { cn } from '@/lib/utils';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n} & ComponentPropsWithoutRef<'div'>;\n\ntype DrawerProps = {\n isOpen: boolean;\n /** The drawer's position on the screen */\n position: 'right' | 'left';\n /** The default width in CSS units of the open drawer. A number defaults to px. */\n defaultWidth: number | string;\n /** Collapsed drawer width in CSS units. Default 4rem */\n collapsedWidth?: number | string;\n} & Props;\n\ntype FlexDrawerButtonProps = {\n isOpen: boolean;\n drawerPosition: 'right' | 'left';\n} & ComponentPropsWithoutRef<typeof Button>;\n\nfunction FlexDrawerButton({ isOpen, drawerPosition, className, ...props }: FlexDrawerButtonProps) {\n const OpenIcon = drawerPosition === 'right' ? <LuChevronLeft /> : <LuChevronRight />;\n const CloseIcon = drawerPosition === 'right' ? <LuChevronRight /> : <LuChevronLeft />;\n\n return (\n <Button\n size=\"sm\"\n variant=\"secondary-icon-rounded\"\n className={cn(\n 'absolute top-16 z-10',\n {\n 'left-[-16px]': drawerPosition === 'right',\n 'right-[-16px]': drawerPosition === 'left',\n },\n className,\n )}\n {...props}\n >\n {isOpen ? CloseIcon : OpenIcon}\n </Button>\n );\n}\n\nfunction FlexDrawerHeader({ className = '', children, ...props }: Props) {\n return (\n <div className={cn('flex h-auto w-full flex-col', className)} {...props}>\n {children}\n </div>\n );\n}\n\nfunction FlexDrawerContent({ className = '', children, ...props }: Props) {\n return (\n <div className={cn('flex h-full w-full flex-col', className)} {...props}>\n {children}\n </div>\n );\n}\n\nfunction FlexDrawerFooter({ className = '', children, ...props }: Props) {\n return (\n <div className={cn('flex w-full items-end justify-between', className)} {...props}>\n {children}\n </div>\n );\n}\n\nfunction FlexDrawer({\n position,\n className = '',\n children,\n isOpen,\n collapsedWidth = '4rem',\n defaultWidth,\n ...props\n}: DrawerProps) {\n const drawerRef = useRef<HTMLDivElement>(null);\n const [collapsedPx, setCollapsedPx] = useState(0);\n const [drawerWidth, setDrawerWidth] = useState(0);\n\n let button: ReactNode = null;\n let header: ReactNode = null;\n let footer: ReactNode = null;\n const content: ReactNode[] = [];\n\n React.Children.toArray(children).forEach((child) => {\n if (!React.isValidElement(child)) return;\n switch (child.type) {\n case FlexDrawerButton:\n button = child;\n break;\n case FlexDrawerHeader:\n header = child;\n break;\n case FlexDrawerFooter:\n footer = child;\n break;\n\n default:\n content.push(child);\n }\n });\n\n useLayoutEffect(() => {\n if (drawerRef.current) {\n setDrawerWidth(toPx(defaultWidth, drawerRef.current));\n setCollapsedPx(toPx(collapsedWidth, drawerRef.current));\n }\n }, [collapsedWidth, defaultWidth]);\n\n const outerSpringStyles = useSpring({\n width: isOpen ? drawerWidth : collapsedPx,\n minWidth: isOpen ? drawerWidth : collapsedPx,\n config: { tension: 250, friction: 30 },\n });\n\n return (\n <div className=\"relative flex\">\n {button}\n <animated.div\n role=\"region\"\n className={cn('flex-drawer-outer relative z-1 overflow-x-hidden shadow-md', {\n 'rounded-l-md border-l': position === 'right',\n 'rounded-r-md border-r': position === 'left',\n })}\n style={outerSpringStyles}\n ref={drawerRef}\n >\n <div\n style={{\n width: `${drawerWidth}px`,\n }}\n className={cn(\n 'flex-drawer-fixed absolute top-0 h-full px-4 py-6',\n {\n 'right-0': position === 'left',\n },\n\n className,\n )}\n {...props}\n >\n <div\n className={cn(\n 'flex-drawer-inner flex h-full flex-col transition-discrete duration-300 ease-out',\n {\n 'hidden opacity-0': !isOpen,\n 'visible opacity-100': isOpen,\n },\n )}\n >\n {header}\n {content}\n {footer}\n </div>\n </div>\n </animated.div>\n </div>\n );\n}\n\nexport { FlexDrawer, FlexDrawerButton, FlexDrawerHeader, FlexDrawerContent, FlexDrawerFooter };\n"]}
1
+ {"version":3,"sources":["../src/v2/flex-drawer/flex-drawer.tsx"],"names":["FlexDrawerButton","isOpen","drawerPosition","className","props","OpenIcon","jsx","LuChevronLeft","LuChevronRight","CloseIcon","Button","cn","FlexDrawerHeader","children","FlexDrawerContent","FlexDrawerFooter","FlexDrawer","position","collapsedWidth","defaultWidth","drawerRef","useRef","collapsedPx","setCollapsedPx","useState","drawerWidth","setDrawerWidth","button","header","footer","content","React","child","useLayoutEffect","toPx","outerSpringStyles","useSpring","jsxs","animated"],"mappings":"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","file":"chunk-PVA67MWT.js","sourcesContent":["import React, {\n ReactNode,\n useLayoutEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n} from 'react';\nimport { useSpring, animated } from '@react-spring/web';\nimport { LuChevronLeft, LuChevronRight } from 'react-icons/lu';\nimport { Button } from '@/v2/button/button';\nimport { toPx } from '@/lib/toPx';\nimport { cn } from '@/lib/utils';\n\ntype Props = {\n className?: string;\n children: React.ReactNode;\n} & ComponentPropsWithoutRef<'div'>;\n\ntype DrawerProps = {\n isOpen: boolean;\n /** The drawer's position on the screen */\n position: 'right' | 'left';\n /** The default width in CSS units of the open drawer. A number defaults to px. */\n defaultWidth: number | string;\n /** Collapsed drawer width in CSS units. Default 4rem */\n collapsedWidth?: number | string;\n} & Props;\n\ntype FlexDrawerButtonProps = {\n isOpen: boolean;\n drawerPosition: 'right' | 'left';\n} & ComponentPropsWithoutRef<typeof Button>;\n\nfunction FlexDrawerButton({ isOpen, drawerPosition, className, ...props }: FlexDrawerButtonProps) {\n const OpenIcon = drawerPosition === 'right' ? <LuChevronLeft /> : <LuChevronRight />;\n const CloseIcon = drawerPosition === 'right' ? <LuChevronRight /> : <LuChevronLeft />;\n\n return (\n <Button\n size=\"sm\"\n variant=\"secondary-icon-rounded\"\n className={cn(\n 'absolute top-16 z-10',\n {\n 'left-[-16px]': drawerPosition === 'right',\n 'right-[-16px]': drawerPosition === 'left',\n },\n className,\n )}\n {...props}\n >\n {isOpen ? CloseIcon : OpenIcon}\n </Button>\n );\n}\n\nfunction FlexDrawerHeader({ className = '', children, ...props }: Props) {\n return (\n <div className={cn('flex h-auto w-full flex-col', className)} {...props}>\n {children}\n </div>\n );\n}\n\nfunction FlexDrawerContent({ className = '', children, ...props }: Props) {\n return (\n <div className={cn('flex h-full w-full flex-col', className)} {...props}>\n {children}\n </div>\n );\n}\n\nfunction FlexDrawerFooter({ className = '', children, ...props }: Props) {\n return (\n <div className={cn('flex w-full items-end justify-between', className)} {...props}>\n {children}\n </div>\n );\n}\n\nfunction FlexDrawer({\n position,\n className = '',\n children,\n isOpen,\n collapsedWidth = '4rem',\n defaultWidth,\n ...props\n}: DrawerProps) {\n const drawerRef = useRef<HTMLDivElement>(null);\n const [collapsedPx, setCollapsedPx] = useState(0);\n const [drawerWidth, setDrawerWidth] = useState(0);\n\n let button: ReactNode = null;\n let header: ReactNode = null;\n let footer: ReactNode = null;\n const content: ReactNode[] = [];\n\n React.Children.toArray(children).forEach((child) => {\n if (!React.isValidElement(child)) return;\n switch (child.type) {\n case FlexDrawerButton:\n button = child;\n break;\n case FlexDrawerHeader:\n header = child;\n break;\n case FlexDrawerFooter:\n footer = child;\n break;\n\n default:\n content.push(child);\n }\n });\n\n useLayoutEffect(() => {\n if (drawerRef.current) {\n setDrawerWidth(toPx(defaultWidth, drawerRef.current));\n setCollapsedPx(toPx(collapsedWidth, drawerRef.current));\n }\n }, [collapsedWidth, defaultWidth]);\n\n const outerSpringStyles = useSpring({\n width: isOpen ? drawerWidth : collapsedPx,\n minWidth: isOpen ? drawerWidth : collapsedPx,\n config: { tension: 250, friction: 30 },\n });\n\n return (\n <div className=\"relative flex\">\n {button}\n <animated.div\n role=\"region\"\n className={cn('flex-drawer-outer relative z-1 overflow-x-hidden shadow-md', {\n 'rounded-l-md border-l': position === 'right',\n 'rounded-r-md border-r': position === 'left',\n })}\n style={outerSpringStyles}\n ref={drawerRef}\n >\n <div\n style={{\n width: `${drawerWidth}px`,\n }}\n className={cn(\n 'flex-drawer-fixed absolute top-0 h-full px-4 py-6',\n {\n 'right-0': position === 'left',\n },\n\n className,\n )}\n {...props}\n >\n <div\n className={cn(\n 'flex-drawer-inner flex h-full flex-col transition-discrete duration-300 ease-out',\n {\n 'hidden opacity-0': !isOpen,\n 'visible opacity-100': isOpen,\n },\n )}\n >\n {header}\n {content}\n {footer}\n </div>\n </div>\n </animated.div>\n </div>\n );\n}\n\nexport { FlexDrawer, FlexDrawerButton, FlexDrawerHeader, FlexDrawerContent, FlexDrawerFooter };\n"]}
@@ -0,0 +1,2 @@
1
+ function i(t){let e=t.replace(/\D/g,"").slice(0,10);return e.length===0?"":e.length<=3?`(${e}`:e.length<=6?`(${e.slice(0,3)}) ${e.slice(3)}`:`(${e.slice(0,3)}) ${e.slice(3,6)}-${e.slice(6)}`}function n(t){let e=t.replace(/\D/g,"");return e===""?"":String(parseInt(e,10))}export{i as a,n as b};//# sourceMappingURL=chunk-QHNRUAYJ.js.map
2
+ //# sourceMappingURL=chunk-QHNRUAYJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/v2/input/formatters.ts"],"names":["maskPhone","value","digits","maskPositiveInteger"],"mappings":"AAAO,SAASA,EAAUC,CAAAA,CAAuB,CAC/C,IAAMC,CAAAA,CAASD,EAAM,OAAA,CAAQ,KAAA,CAAO,EAAE,CAAA,CAAE,MAAM,CAAA,CAAG,EAAE,CAAA,CAEnD,OAAIC,EAAO,MAAA,GAAW,CAAA,CAAU,EAAA,CAC5BA,CAAAA,CAAO,QAAU,CAAA,CAAU,CAAA,CAAA,EAAIA,CAAM,CAAA,CAAA,CACrCA,EAAO,MAAA,EAAU,CAAA,CAAU,CAAA,CAAA,EAAIA,CAAAA,CAAO,MAAM,CAAA,CAAG,CAAC,CAAC,CAAA,EAAA,EAAKA,CAAAA,CAAO,MAAM,CAAC,CAAC,CAAA,CAAA,CAClE,CAAA,CAAA,EAAIA,EAAO,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,KAAKA,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAO,MAAM,CAAC,CAAC,EACzE,CAEO,SAASC,CAAAA,CAAoBF,CAAAA,CAAuB,CACzD,IAAMC,CAAAA,CAASD,CAAAA,CAAM,OAAA,CAAQ,MAAO,EAAE,CAAA,CACtC,OAAOC,CAAAA,GAAW,GAAK,EAAA,CAAK,MAAA,CAAO,SAASA,CAAAA,CAAQ,EAAE,CAAC,CACzD","file":"chunk-QHNRUAYJ.js","sourcesContent":["export function maskPhone(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 10);\n\n if (digits.length === 0) return '';\n if (digits.length <= 3) return `(${digits}`;\n if (digits.length <= 6) return `(${digits.slice(0, 3)}) ${digits.slice(3)}`;\n return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;\n}\n\nexport function maskPositiveInteger(value: string): string {\n const digits = value.replace(/\\D/g, '');\n return digits === '' ? '' : String(parseInt(digits, 10));\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {b as b$1}from'./chunk-JH4FQUIS.js';import {b as b$2}from'./chunk-JDBEGLQW.js';import {a}from'./chunk-YTIIAU4W.js';import*as b from'react';import {jsx,jsxs}from'react/jsx-runtime';var x=b.forwardRef(({id:l,children:n,className:d,classNames:e={},size:h="default",nestedSection:a$1=null,...o},p)=>jsx(b$1,{variant:"outline",disabled:o.disabled,size:h,asChild:true,className:a(d,e?.base,!!a$1&&"cursor-default"),children:jsxs("div",{ref:p,className:a("h-auto flex-col items-stretch justify-start px-0! select-none",o.checked?"border-dark-green":"border-gray-400",o.disabled&&"text-secondary-foreground hover:text-secondary-foreground border-gray-300 hover:border-gray-300 hover:bg-white",e?.labelComponent),children:[jsxs("label",{htmlFor:l,className:a("flex min-h-12 w-full cursor-pointer items-center gap-2 px-4 py-3 leading-tight whitespace-normal",o.disabled&&"hover:cursor-not-allowed",e?.checkboxWrapper),children:[jsx(b$2,{id:l,...o,variant:"button",classNames:e?.checkbox}),e?.labelText?jsx("span",{className:a(e?.labelText),children:n}):n]}),a$1&&jsx("div",{className:a("mt-1 px-3 pb-3 font-normal",e?.nestedSection),children:a$1})]})}));x.displayName="ButtonCheckbox";export{x as a};//# sourceMappingURL=chunk-Z6BTLUPD.js.map
2
- //# sourceMappingURL=chunk-Z6BTLUPD.js.map
1
+ import {b as b$1}from'./chunk-SP2L5FI7.js';import {b as b$2}from'./chunk-JDBEGLQW.js';import {a}from'./chunk-YTIIAU4W.js';import*as b from'react';import {jsx,jsxs}from'react/jsx-runtime';var x=b.forwardRef(({id:l,children:n,className:d,classNames:e={},size:h="default",nestedSection:a$1=null,...o},p)=>jsx(b$1,{variant:"outline",disabled:o.disabled,size:h,asChild:true,className:a(d,e?.base,!!a$1&&"cursor-default"),children:jsxs("div",{ref:p,className:a("h-auto flex-col items-stretch justify-start px-0! select-none",o.checked?"border-dark-green":"border-gray-400",o.disabled&&"text-secondary-foreground hover:text-secondary-foreground border-gray-300 hover:border-gray-300 hover:bg-white",e?.labelComponent),children:[jsxs("label",{htmlFor:l,className:a("flex min-h-12 w-full cursor-pointer items-center gap-2 px-4 py-3 leading-tight whitespace-normal",o.disabled&&"hover:cursor-not-allowed",e?.checkboxWrapper),children:[jsx(b$2,{id:l,...o,variant:"button",classNames:e?.checkbox}),e?.labelText?jsx("span",{className:a(e?.labelText),children:n}):n]}),a$1&&jsx("div",{className:a("mt-1 px-3 pb-3 font-normal",e?.nestedSection),children:a$1})]})}));x.displayName="ButtonCheckbox";export{x as a};//# sourceMappingURL=chunk-R2R3QR2N.js.map
2
+ //# sourceMappingURL=chunk-R2R3QR2N.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/checkbox/button-checkbox.tsx"],"names":["ButtonCheckbox","id","children","className","classNames","size","nestedSection","props","ref","jsx","Button","cn","jsxs","Checkbox"],"mappings":"2LAgBO,IAAMA,CAAAA,CAAuB,CAAA,CAAA,UAAA,CAKlC,CACE,CAAE,EAAA,CAAAC,CAAAA,CAAI,QAAA,CAAAC,CAAAA,CAAU,SAAA,CAAAC,CAAAA,CAAW,UAAA,CAAAC,CAAAA,CAAa,EAAC,CAAG,IAAA,CAAAC,CAAAA,CAAO,SAAA,CAAW,aAAA,CAAAC,GAAAA,CAAgB,KAAM,GAAGC,CAAM,CAAA,CAC7FC,CAAAA,GAGEC,GAAAA,CAACC,GAAAA,CAAA,CACC,OAAA,CAAQ,SAAA,CACR,QAAA,CAAUH,CAAAA,CAAM,QAAA,CAChB,IAAA,CAAMF,CAAAA,CACN,OAAA,CAAO,IAAA,CACP,UAAWM,CAAAA,CAAGR,CAAAA,CAAWC,CAAAA,EAAY,IAAA,CAAM,CAAC,CAACE,GAAAA,EAAiB,gBAAgB,CAAA,CAE9E,QAAA,CAAAM,IAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKJ,CAAAA,CACL,SAAA,CAAWG,CAAAA,CACT,gEACAJ,CAAAA,CAAM,OAAA,CAAU,mBAAA,CAAsB,iBAAA,CACtCA,CAAAA,CAAM,QAAA,EACJ,gHAAA,CACFH,CAAAA,EAAY,cACd,CAAA,CAEA,QAAA,CAAA,CAAAQ,IAAAA,CAAC,OAAA,CAAA,CACC,OAAA,CAASX,CAAAA,CACT,SAAA,CAAWU,EACT,kGAAA,CACAJ,CAAAA,CAAM,QAAA,EAAY,0BAAA,CAClBH,CAAAA,EAAY,eACd,CAAA,CAEA,QAAA,CAAA,CAAAK,GAAAA,CAACI,GAAAA,CAAA,CAAS,EAAA,CAAIZ,CAAAA,CAAK,GAAGM,CAAAA,CAAO,OAAA,CAAQ,SAAS,UAAA,CAAYH,CAAAA,EAAY,QAAA,CAAU,CAAA,CAC/EA,CAAAA,EAAY,SAAA,CACXK,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAWE,CAAAA,CAAGP,CAAAA,EAAY,SAAS,CAAA,CAAI,QAAA,CAAAF,CAAAA,CAAS,CAAA,CAEtDA,GAEJ,CAAA,CACCI,GAAAA,EACCG,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWE,CAAAA,CAAG,4BAAA,CAA8BP,CAAAA,EAAY,aAAa,CAAA,CACvE,QAAA,CAAAE,GAAAA,CACH,CAAA,CAAA,CAEJ,CAAA,CACF,CAGN,EAEAN,EAAe,WAAA,CAAc,gBAAA","file":"chunk-Z6BTLUPD.js","sourcesContent":["import * as React from 'react';\nimport { cn } from '@/lib/utils';\nimport { Button, type ButtonSize } from '@/v2/button/button';\nimport { Checkbox, type CheckboxProps } from '@/v2/checkbox/checkbox';\nimport type { Slots } from '../types';\n\nexport type ButtonCheckboxSlots = Slots & {\n classNames?: {\n checkboxWrapper?: string;\n labelComponent?: string;\n labelText?: string;\n nestedSection?: string;\n checkbox?: CheckboxProps['classNames'];\n };\n};\n\nexport const ButtonCheckbox = React.forwardRef<\n HTMLDivElement,\n ButtonCheckboxSlots &\n CheckboxProps & { nestedSection?: React.ReactNode | null; size?: ButtonSize }\n>(\n (\n { id, children, className, classNames = {}, size = 'default', nestedSection = null, ...props },\n ref,\n ) => {\n return (\n <Button\n variant=\"outline\"\n disabled={props.disabled}\n size={size}\n asChild\n className={cn(className, classNames?.base, !!nestedSection && 'cursor-default')}\n >\n <div\n ref={ref}\n className={cn(\n 'h-auto flex-col items-stretch justify-start px-0! select-none',\n props.checked ? 'border-dark-green' : 'border-gray-400',\n props.disabled &&\n 'text-secondary-foreground hover:text-secondary-foreground border-gray-300 hover:border-gray-300 hover:bg-white',\n classNames?.labelComponent,\n )}\n >\n <label\n htmlFor={id}\n className={cn(\n 'flex min-h-12 w-full cursor-pointer items-center gap-2 px-4 py-3 leading-tight whitespace-normal',\n props.disabled && 'hover:cursor-not-allowed',\n classNames?.checkboxWrapper,\n )}\n >\n <Checkbox id={id} {...props} variant=\"button\" classNames={classNames?.checkbox} />\n {classNames?.labelText ? (\n <span className={cn(classNames?.labelText)}>{children}</span>\n ) : (\n children\n )}\n </label>\n {nestedSection && (\n <div className={cn('mt-1 px-3 pb-3 font-normal', classNames?.nestedSection)}>\n {nestedSection}\n </div>\n )}\n </div>\n </Button>\n );\n },\n);\n\nButtonCheckbox.displayName = 'ButtonCheckbox';\n"]}
1
+ {"version":3,"sources":["../src/v2/checkbox/button-checkbox.tsx"],"names":["ButtonCheckbox","id","children","className","classNames","size","nestedSection","props","ref","jsx","Button","cn","jsxs","Checkbox"],"mappings":"2LAgBO,IAAMA,CAAAA,CAAuB,CAAA,CAAA,UAAA,CAKlC,CACE,CAAE,EAAA,CAAAC,CAAAA,CAAI,QAAA,CAAAC,CAAAA,CAAU,SAAA,CAAAC,CAAAA,CAAW,UAAA,CAAAC,CAAAA,CAAa,EAAC,CAAG,IAAA,CAAAC,CAAAA,CAAO,SAAA,CAAW,aAAA,CAAAC,GAAAA,CAAgB,KAAM,GAAGC,CAAM,CAAA,CAC7FC,CAAAA,GAGEC,GAAAA,CAACC,GAAAA,CAAA,CACC,OAAA,CAAQ,SAAA,CACR,QAAA,CAAUH,CAAAA,CAAM,QAAA,CAChB,IAAA,CAAMF,CAAAA,CACN,OAAA,CAAO,IAAA,CACP,UAAWM,CAAAA,CAAGR,CAAAA,CAAWC,CAAAA,EAAY,IAAA,CAAM,CAAC,CAACE,GAAAA,EAAiB,gBAAgB,CAAA,CAE9E,QAAA,CAAAM,IAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKJ,CAAAA,CACL,SAAA,CAAWG,CAAAA,CACT,gEACAJ,CAAAA,CAAM,OAAA,CAAU,mBAAA,CAAsB,iBAAA,CACtCA,CAAAA,CAAM,QAAA,EACJ,gHAAA,CACFH,CAAAA,EAAY,cACd,CAAA,CAEA,QAAA,CAAA,CAAAQ,IAAAA,CAAC,OAAA,CAAA,CACC,OAAA,CAASX,CAAAA,CACT,SAAA,CAAWU,EACT,kGAAA,CACAJ,CAAAA,CAAM,QAAA,EAAY,0BAAA,CAClBH,CAAAA,EAAY,eACd,CAAA,CAEA,QAAA,CAAA,CAAAK,GAAAA,CAACI,GAAAA,CAAA,CAAS,EAAA,CAAIZ,CAAAA,CAAK,GAAGM,CAAAA,CAAO,OAAA,CAAQ,SAAS,UAAA,CAAYH,CAAAA,EAAY,QAAA,CAAU,CAAA,CAC/EA,CAAAA,EAAY,SAAA,CACXK,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAWE,CAAAA,CAAGP,CAAAA,EAAY,SAAS,CAAA,CAAI,QAAA,CAAAF,CAAAA,CAAS,CAAA,CAEtDA,GAEJ,CAAA,CACCI,GAAAA,EACCG,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWE,CAAAA,CAAG,4BAAA,CAA8BP,CAAAA,EAAY,aAAa,CAAA,CACvE,QAAA,CAAAE,GAAAA,CACH,CAAA,CAAA,CAEJ,CAAA,CACF,CAGN,EAEAN,EAAe,WAAA,CAAc,gBAAA","file":"chunk-R2R3QR2N.js","sourcesContent":["import * as React from 'react';\nimport { cn } from '@/lib/utils';\nimport { Button, type ButtonSize } from '@/v2/button/button';\nimport { Checkbox, type CheckboxProps } from '@/v2/checkbox/checkbox';\nimport type { Slots } from '../types';\n\nexport type ButtonCheckboxSlots = Slots & {\n classNames?: {\n checkboxWrapper?: string;\n labelComponent?: string;\n labelText?: string;\n nestedSection?: string;\n checkbox?: CheckboxProps['classNames'];\n };\n};\n\nexport const ButtonCheckbox = React.forwardRef<\n HTMLDivElement,\n ButtonCheckboxSlots &\n CheckboxProps & { nestedSection?: React.ReactNode | null; size?: ButtonSize }\n>(\n (\n { id, children, className, classNames = {}, size = 'default', nestedSection = null, ...props },\n ref,\n ) => {\n return (\n <Button\n variant=\"outline\"\n disabled={props.disabled}\n size={size}\n asChild\n className={cn(className, classNames?.base, !!nestedSection && 'cursor-default')}\n >\n <div\n ref={ref}\n className={cn(\n 'h-auto flex-col items-stretch justify-start px-0! select-none',\n props.checked ? 'border-dark-green' : 'border-gray-400',\n props.disabled &&\n 'text-secondary-foreground hover:text-secondary-foreground border-gray-300 hover:border-gray-300 hover:bg-white',\n classNames?.labelComponent,\n )}\n >\n <label\n htmlFor={id}\n className={cn(\n 'flex min-h-12 w-full cursor-pointer items-center gap-2 px-4 py-3 leading-tight whitespace-normal',\n props.disabled && 'hover:cursor-not-allowed',\n classNames?.checkboxWrapper,\n )}\n >\n <Checkbox id={id} {...props} variant=\"button\" classNames={classNames?.checkbox} />\n {classNames?.labelText ? (\n <span className={cn(classNames?.labelText)}>{children}</span>\n ) : (\n children\n )}\n </label>\n {nestedSection && (\n <div className={cn('mt-1 px-3 pb-3 font-normal', classNames?.nestedSection)}>\n {nestedSection}\n </div>\n )}\n </div>\n </Button>\n );\n },\n);\n\nButtonCheckbox.displayName = 'ButtonCheckbox';\n"]}
@@ -1,2 +1,2 @@
1
- import {a as a$4,d,c as c$1,g,i}from'./chunk-AEG63JU5.js';import {a as a$3}from'./chunk-WEDRHQPW.js';import {a as a$2,b,c}from'./chunk-QXJK4OO3.js';import {b as b$2}from'./chunk-FBXJ2VCI.js';import {b as b$1}from'./chunk-JH4FQUIS.js';import {a as a$1,b as b$3}from'./chunk-6LESB5UU.js';import {a}from'./chunk-YTIIAU4W.js';import {useState,useRef,useEffect,useMemo}from'react';import {LuCalendar,LuZoomOut,LuZoomIn,LuRefreshCcw}from'react-icons/lu';import T from'dayjs';import Se from'dayjs/plugin/customParseFormat.js';import {useIMask}from'react-imask';import {isMatch}from'react-day-picker';import {jsxs,jsx}from'react/jsx-runtime';import be from'react-easy-crop';import {DateTime,Duration}from'luxon';function fe(n){let o=n.replace(/\D/g,"").slice(0,8);return o.length<=2?o:o.length<=4?`${o.slice(0,2)}/${o.slice(2)}`:`${o.slice(0,2)}/${o.slice(2,4)}/${o.slice(4)}`}function ge(n){if(n.length!==10)return;let o=n.split("/");if(o.length!==3||o[2].length!==4)return;let e=parseInt(o[0],10),r=parseInt(o[1],10),t=parseInt(o[2],10);if(Number.isNaN(e)||Number.isNaN(r)||Number.isNaN(t))return;let p=new Date(t,e-1,r);if(!(p.getFullYear()!==t||p.getMonth()!==e-1||p.getDate()!==r))return p}function De({className:n,wrapperClassName:o,value:e,onChange:r,disabled:t=false,calendarProps:p,placeholder:h="MM/DD/YYYY",variant:D}){let[f,m]=useState(false),[v,w]=useState(e),[i,c$1]=useState(e?T(e).format("MM/DD/YYYY"):""),d=useRef(e?T(e).format("MM/DD/YYYY"):"");useEffect(()=>{let a=e?T(e).format("MM/DD/YYYY"):"";a!==d.current&&(d.current=a,c$1(a),e&&w(e));},[e]);let l=a=>{let g=fe(a.target.value);c$1(g);let S=ge(g);S?(d.current=g,r?.(S)):g===""&&(d.current="",r?.(void 0));},b$3=a=>{a.key==="ArrowDown"&&(a.preventDefault(),m(true)),!/[0-9/]/.test(a.key)&&!["Backspace","Delete","ArrowLeft","ArrowRight","ArrowUp","Tab"].includes(a.key)&&!a.metaKey&&!a.ctrlKey&&a.preventDefault();};return jsxs("div",{className:a("relative w-full",o),children:[jsx("input",{type:"text","data-slot":"input",className:a(a$1({variant:D}),"pr-10",n),value:i,placeholder:h,onChange:l,onKeyDown:b$3,disabled:t}),jsxs(a$2,{open:!t&&f,onOpenChange:m,children:[jsx(b,{asChild:true,children:jsx(b$1,{variant:"ghost-icon",size:"sm",className:"absolute top-1/2 right-1 -translate-y-1/2",disabled:t,"aria-label":"Select date",type:"button",children:jsx(LuCalendar,{})})}),jsx(c,{className:"w-auto overflow-hidden p-0",align:"end",sideOffset:10,children:jsx(b$2,{mode:"single",selected:e,month:v,onMonthChange:w,onSelect:a=>{let g=a?T(a).format("MM/DD/YYYY"):"";d.current=g,c$1(g),r?.(a),m(false);},...p})})]})]})}var Pe=({alt:n,className:o="",containerClassName:e="",imagePreview:r=void 0,cropper:t=void 0})=>{let[p,h]=useState(false),D=!r||!p,f=!!t;return jsxs("div",{className:a("flex max-w-[386px] flex-col",o),children:[jsxs("div",{className:a("relative h-60 rounded-md border",e),children:[r&&f?jsx(be,{image:r,crop:t.crop,zoom:t.zoom,aspect:t.aspect,objectFit:"contain",onCropChange:t.setCrop,onZoomChange:t.setZoom,onCropComplete:t.onCropComplete,onMediaLoaded:()=>h(true),showGrid:false}):r&&jsx("img",{alt:n,className:`m-auto h-full w-full object-contain transition-opacity duration-300 ${p?"opacity-100":"opacity-0"}`,src:r,onLoad:()=>h(true),draggable:false}),D&&jsx("div",{"aria-label":r?"Loading image":"Awaiting image",className:"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r"})]}),!D&&f&&jsxs("div",{className:"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4",children:[jsxs("div",{className:"flex w-full items-center gap-3",children:[jsx(b$1,{"aria-label":"zoom out",onClick:()=>t.setZoom(Math.max(t.zoom-.1,1)),className:"h-8",variant:"ghost-icon",children:jsx(LuZoomOut,{})}),jsx(a$3,{value:[t.zoom],min:1,max:3,step:.01,onValueChange:m=>t.setZoom(m[0]),className:"w-full sm:flex-50",classNames:{thumb:"border-2 border-green-800",range:"bg-green-900"}}),jsx(b$1,{"aria-label":"zoom in",onClick:()=>t.setZoom(Math.min(t.zoom+.1,3)),variant:"ghost-icon",className:"h-8",children:jsx(LuZoomIn,{})})]}),jsxs(b$1,{onClick:t.reset,variant:"ghost",className:"h-8 p-2",children:[jsx(LuRefreshCcw,{}),"Reset"]})]})]})};var W="00:00",ee="24:00",te=n=>DateTime.fromFormat(n,"HH:mm").isValid,oe=({startTime:n=W,endTime:o=ee,interval:e=30,onChange:r=void 0,className:t="",placeholder:p="Select one",size:h="default",portal:D=true,...f})=>{te(n)||(console.error(`Invalid startTime: ${n}`),n=W),te(o)||(console.error(`Invalid endTime: ${o}`),o=ee);let m=useMemo(()=>{let i=DateTime.fromFormat(o,"HH:mm"),c=Duration.fromObject({minutes:e}),d=[],l=DateTime.fromFormat(n,"HH:mm");for(;l<=i;){let b=l.toFormat("HH:mm");b==="00:00"&&l.equals(i)&&(b="24:00"),d.push({label:l.toFormat("h:mm a"),value:{hour:l.toFormat("HH"),min:l.toFormat("mm"),raw:b,formatted:l.toFormat("h:mm a")}}),l=l.plus(c);}return d},[n,o,e]),v=m.map(i=>({label:i.label,value:i.value.raw}));return jsxs(a$4,{onValueChange:i=>{let c=m.find(d=>d.value.raw===i);c&&r?.(c);},...f,children:[jsx(d,{className:a("max-w-[240px] md:w-[150px]",t),size:h,children:jsx(c$1,{placeholder:p})}),jsx(g,{position:"popper",className:"max-h-90",portal:D,children:v.map(i$1=>jsx(i,{className:"h-10",value:i$1.value,children:i$1.label},i$1.value))})]})},Qe=oe;T.extend(Se);var ae="MM/DD/YYYY",Fe="00/00/0000",X=["MM/DD/YYYY","MM/D/YYYY","M/DD/YYYY","M/D/YYYY","YYYY-MM-DD"];function I(n){return n?T(n).format(ae):""}function Ie({className:n="",wrapperClassName:o="",value:e=void 0,onChange:r=void 0,disabled:t=false,calendarProps:p=void 0,placeholder:h,inputProps:D=void 0,showCalendarIcon:f=true,editable:m=false}){let[v,w]=useState(false),i=h??(m?ae:"Pick a date"),[c$1,d]=useState(void 0),l=useRef(e);e!==l.current&&(l.current=e,c$1!==void 0&&d(void 0));let b$1=c$1??e,a$3=s=>p?.disabled?!isMatch(s,p.disabled):true,g=useRef(r);g.current=r;let S=useRef(a$3);S.current=a$3;let{ref:q,setValue:B}=useIMask({mask:Fe,lazy:true,overwrite:false},{onComplete:s=>{let C=T(s,X,true);C.isValid()&&S.current(C.toDate())&&g.current?.(C.toDate());}}),ie=s=>{r?.(s),B(I(s)),w(false);},se=s=>{let C=s.clipboardData.getData("text").trim(),E=T(C,X,true);if(E.isValid()&&a$3(E.toDate())){s.preventDefault();let J=E.toDate();r?.(J),B(I(J));}},pe=()=>{B(I(e));},le=()=>{let s=q.current?.value??"";if(s===""){e!==void 0&&r?.(void 0);return}let C=T(s,X,true);C.isValid()&&a$3(C.toDate())&&r?.(C.toDate()),B(I(e));},me=a(a$1(),f&&"pl-10",v?"border-dark-green":"",n);return jsxs(a$2,{open:!t&&v,onOpenChange:w,children:[jsx(b,{asChild:true,children:jsxs("div",{className:a("relative flex w-full items-center rounded-md",o),children:[m?jsx("input",{ref:q,defaultValue:I(e),className:me,placeholder:i,disabled:t,onFocus:pe,onPaste:se,onBlur:s=>{le(),D?.onBlur?.(s);}}):jsx(b$3,{className:a(f&&"pl-10",v?"border-dark-green":"",n),...D,value:I(e),placeholder:i,readOnly:true,disabled:t}),f&&jsx("div",{className:a("absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2",t?"text-gray-400":"cursor-pointer text-black"),children:jsx(LuCalendar,{size:16})})]})}),jsx(c,{className:"w-auto overflow-hidden p-0",align:"start",onOpenAutoFocus:m?s=>s.preventDefault():void 0,children:jsx(b$2,{mode:"single",selected:e?T(e).toDate():void 0,onSelect:ie,...m?{month:b$1,onMonthChange:d}:{},...p})})]})}export{Ie as a,De as b,Pe as c,oe as d,Qe as e};//# sourceMappingURL=chunk-6TGWLOLD.js.map
2
- //# sourceMappingURL=chunk-6TGWLOLD.js.map
1
+ import {a as a$4,d,c as c$1,g,i}from'./chunk-AEG63JU5.js';import {a as a$3}from'./chunk-WEDRHQPW.js';import {a as a$2,b,c}from'./chunk-QXJK4OO3.js';import {b as b$2}from'./chunk-FQGC44HX.js';import {b as b$1}from'./chunk-SP2L5FI7.js';import {a as a$1,b as b$3}from'./chunk-7QWN4Z56.js';import {a}from'./chunk-YTIIAU4W.js';import {useState,useRef,useEffect,useMemo}from'react';import {LuCalendar,LuZoomOut,LuZoomIn,LuRefreshCcw}from'react-icons/lu';import T from'dayjs';import Se from'dayjs/plugin/customParseFormat.js';import {useIMask}from'react-imask';import {isMatch}from'react-day-picker';import {jsxs,jsx}from'react/jsx-runtime';import be from'react-easy-crop';import {DateTime,Duration}from'luxon';function fe(n){let o=n.replace(/\D/g,"").slice(0,8);return o.length<=2?o:o.length<=4?`${o.slice(0,2)}/${o.slice(2)}`:`${o.slice(0,2)}/${o.slice(2,4)}/${o.slice(4)}`}function ge(n){if(n.length!==10)return;let o=n.split("/");if(o.length!==3||o[2].length!==4)return;let e=parseInt(o[0],10),r=parseInt(o[1],10),t=parseInt(o[2],10);if(Number.isNaN(e)||Number.isNaN(r)||Number.isNaN(t))return;let p=new Date(t,e-1,r);if(!(p.getFullYear()!==t||p.getMonth()!==e-1||p.getDate()!==r))return p}function De({className:n,wrapperClassName:o,value:e,onChange:r,disabled:t=false,calendarProps:p,placeholder:h="MM/DD/YYYY",variant:D}){let[f,m]=useState(false),[v,w]=useState(e),[i,c$1]=useState(e?T(e).format("MM/DD/YYYY"):""),d=useRef(e?T(e).format("MM/DD/YYYY"):"");useEffect(()=>{let a=e?T(e).format("MM/DD/YYYY"):"";a!==d.current&&(d.current=a,c$1(a),e&&w(e));},[e]);let l=a=>{let g=fe(a.target.value);c$1(g);let S=ge(g);S?(d.current=g,r?.(S)):g===""&&(d.current="",r?.(void 0));},b$3=a=>{a.key==="ArrowDown"&&(a.preventDefault(),m(true)),!/[0-9/]/.test(a.key)&&!["Backspace","Delete","ArrowLeft","ArrowRight","ArrowUp","Tab"].includes(a.key)&&!a.metaKey&&!a.ctrlKey&&a.preventDefault();};return jsxs("div",{className:a("relative w-full",o),children:[jsx("input",{type:"text","data-slot":"input",className:a(a$1({variant:D}),"pr-10",n),value:i,placeholder:h,onChange:l,onKeyDown:b$3,disabled:t}),jsxs(a$2,{open:!t&&f,onOpenChange:m,children:[jsx(b,{asChild:true,children:jsx(b$1,{variant:"ghost-icon",size:"sm",className:"absolute top-1/2 right-1 -translate-y-1/2",disabled:t,"aria-label":"Select date",type:"button",children:jsx(LuCalendar,{})})}),jsx(c,{className:"w-auto overflow-hidden p-0",align:"end",sideOffset:10,children:jsx(b$2,{mode:"single",selected:e,month:v,onMonthChange:w,onSelect:a=>{let g=a?T(a).format("MM/DD/YYYY"):"";d.current=g,c$1(g),r?.(a),m(false);},...p})})]})]})}var Pe=({alt:n,className:o="",containerClassName:e="",imagePreview:r=void 0,cropper:t=void 0})=>{let[p,h]=useState(false),D=!r||!p,f=!!t;return jsxs("div",{className:a("flex max-w-[386px] flex-col",o),children:[jsxs("div",{className:a("relative h-60 rounded-md border",e),children:[r&&f?jsx(be,{image:r,crop:t.crop,zoom:t.zoom,aspect:t.aspect,objectFit:"contain",onCropChange:t.setCrop,onZoomChange:t.setZoom,onCropComplete:t.onCropComplete,onMediaLoaded:()=>h(true),showGrid:false}):r&&jsx("img",{alt:n,className:`m-auto h-full w-full object-contain transition-opacity duration-300 ${p?"opacity-100":"opacity-0"}`,src:r,onLoad:()=>h(true),draggable:false}),D&&jsx("div",{"aria-label":r?"Loading image":"Awaiting image",className:"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r"})]}),!D&&f&&jsxs("div",{className:"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4",children:[jsxs("div",{className:"flex w-full items-center gap-3",children:[jsx(b$1,{"aria-label":"zoom out",onClick:()=>t.setZoom(Math.max(t.zoom-.1,1)),className:"h-8",variant:"ghost-icon",children:jsx(LuZoomOut,{})}),jsx(a$3,{value:[t.zoom],min:1,max:3,step:.01,onValueChange:m=>t.setZoom(m[0]),className:"w-full sm:flex-50",classNames:{thumb:"border-2 border-green-800",range:"bg-green-900"}}),jsx(b$1,{"aria-label":"zoom in",onClick:()=>t.setZoom(Math.min(t.zoom+.1,3)),variant:"ghost-icon",className:"h-8",children:jsx(LuZoomIn,{})})]}),jsxs(b$1,{onClick:t.reset,variant:"ghost",className:"h-8 p-2",children:[jsx(LuRefreshCcw,{}),"Reset"]})]})]})};var W="00:00",ee="24:00",te=n=>DateTime.fromFormat(n,"HH:mm").isValid,oe=({startTime:n=W,endTime:o=ee,interval:e=30,onChange:r=void 0,className:t="",placeholder:p="Select one",size:h="default",portal:D=true,...f})=>{te(n)||(console.error(`Invalid startTime: ${n}`),n=W),te(o)||(console.error(`Invalid endTime: ${o}`),o=ee);let m=useMemo(()=>{let i=DateTime.fromFormat(o,"HH:mm"),c=Duration.fromObject({minutes:e}),d=[],l=DateTime.fromFormat(n,"HH:mm");for(;l<=i;){let b=l.toFormat("HH:mm");b==="00:00"&&l.equals(i)&&(b="24:00"),d.push({label:l.toFormat("h:mm a"),value:{hour:l.toFormat("HH"),min:l.toFormat("mm"),raw:b,formatted:l.toFormat("h:mm a")}}),l=l.plus(c);}return d},[n,o,e]),v=m.map(i=>({label:i.label,value:i.value.raw}));return jsxs(a$4,{onValueChange:i=>{let c=m.find(d=>d.value.raw===i);c&&r?.(c);},...f,children:[jsx(d,{className:a("max-w-[240px] md:w-[150px]",t),size:h,children:jsx(c$1,{placeholder:p})}),jsx(g,{position:"popper",className:"max-h-90",portal:D,children:v.map(i$1=>jsx(i,{className:"h-10",value:i$1.value,children:i$1.label},i$1.value))})]})},Qe=oe;T.extend(Se);var ae="MM/DD/YYYY",Fe="00/00/0000",X=["MM/DD/YYYY","MM/D/YYYY","M/DD/YYYY","M/D/YYYY","YYYY-MM-DD"];function I(n){return n?T(n).format(ae):""}function Ie({className:n="",wrapperClassName:o="",value:e=void 0,onChange:r=void 0,disabled:t=false,calendarProps:p=void 0,placeholder:h,inputProps:D=void 0,showCalendarIcon:f=true,editable:m=false}){let[v,w]=useState(false),i=h??(m?ae:"Pick a date"),[c$1,d]=useState(void 0),l=useRef(e);e!==l.current&&(l.current=e,c$1!==void 0&&d(void 0));let b$1=c$1??e,a$3=s=>p?.disabled?!isMatch(s,p.disabled):true,g=useRef(r);g.current=r;let S=useRef(a$3);S.current=a$3;let{ref:q,setValue:B}=useIMask({mask:Fe,lazy:true,overwrite:false},{onComplete:s=>{let C=T(s,X,true);C.isValid()&&S.current(C.toDate())&&g.current?.(C.toDate());}}),ie=s=>{r?.(s),B(I(s)),w(false);},se=s=>{let C=s.clipboardData.getData("text").trim(),E=T(C,X,true);if(E.isValid()&&a$3(E.toDate())){s.preventDefault();let J=E.toDate();r?.(J),B(I(J));}},pe=()=>{B(I(e));},le=()=>{let s=q.current?.value??"";if(s===""){e!==void 0&&r?.(void 0);return}let C=T(s,X,true);C.isValid()&&a$3(C.toDate())&&r?.(C.toDate()),B(I(e));},me=a(a$1(),f&&"pl-10",v?"border-dark-green":"",n);return jsxs(a$2,{open:!t&&v,onOpenChange:w,children:[jsx(b,{asChild:true,children:jsxs("div",{className:a("relative flex w-full items-center rounded-md",o),children:[m?jsx("input",{ref:q,defaultValue:I(e),className:me,placeholder:i,disabled:t,onFocus:pe,onPaste:se,onBlur:s=>{le(),D?.onBlur?.(s);}}):jsx(b$3,{className:a(f&&"pl-10",v?"border-dark-green":"",n),...D,value:I(e),placeholder:i,readOnly:true,disabled:t}),f&&jsx("div",{className:a("absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2",t?"text-gray-400":"cursor-pointer text-black"),children:jsx(LuCalendar,{size:16})})]})}),jsx(c,{className:"w-auto overflow-hidden p-0",align:"start",onOpenAutoFocus:m?s=>s.preventDefault():void 0,children:jsx(b$2,{mode:"single",selected:e?T(e).toDate():void 0,onSelect:ie,...m?{month:b$1,onMonthChange:d}:{},...p})})]})}export{Ie as a,De as b,Pe as c,oe as d,Qe as e};//# sourceMappingURL=chunk-R3HGV3DR.js.map
2
+ //# sourceMappingURL=chunk-R3HGV3DR.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/date-picker/date-picker-input.tsx","../src/v2/image-preview/image-preview.tsx","../src/v2/time-select/time-select.tsx","../src/v2/date-picker/date-picker.tsx"],"names":["maskDate","value","digits","parseDate","parts","month","day","year","date","DatePickerInput","className","wrapperClassName","onChange","disabled","calendarProps","placeholder","variant","open","setOpen","useState","setMonth","inputValue","setInputValue","dayjs","lastSyncedRef","useRef","useEffect","formatted","handleInputChange","e","masked","parsed","handleKeyDown","jsxs","cn","jsx","inputVariants","Popover","PopoverTrigger","Button","LuCalendar","PopoverContent","Calendar","d","ImagePreview","alt","containerClassName","imagePreview","cropper","loaded","setLoaded","showLoader","enableCrop","Cropper","LuZoomOut","Slider","v","LuZoomIn","LuRefreshCcw","START_TIME_DEFAULT","END_TIME_DEFAULT","isValidTime","time","DateTime","TimeSelect","startTime","endTime","interval","size","portal","inputProps","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","options","Select","SelectTrigger","SelectValue","SelectContent","option","SelectItem","time_select_default","customParseFormat","DISPLAY_FORMAT","INPUT_MASK","ACCEPTED_INPUT_FORMATS","formatDate","DatePicker","placeholderProp","showCalendarIcon","editable","navigatedMonth","setNavigatedMonth","prevValueForMonth","calendarMonth","isDateAllowed","isMatch","onChangeRef","isDateAllowedRef","maskRef","setMaskValue","useIMask","maskedValue","handleSelect","val","handlePaste","pasted","handleFocus","handleBlur","current","inputClasses","Input"],"mappings":"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","file":"chunk-6TGWLOLD.js","sourcesContent":["import * as React from 'react';\nimport { ComponentProps, useEffect, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport { Calendar, Button, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '../input/input';\n\nfunction maskDate(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 8);\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n}\n\nfunction parseDate(value: string): Date | undefined {\n if (value.length !== 10) return undefined;\n const parts = value.split('/');\n if (parts.length !== 3 || parts[2].length !== 4) return undefined;\n const month = parseInt(parts[0], 10);\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n if (Number.isNaN(month) || Number.isNaN(day) || Number.isNaN(year)) return undefined;\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return undefined;\n }\n return date;\n}\n\nexport type DatePickerInputProps = {\n className?: string;\n wrapperClassName?: string;\n value?: Date;\n onChange?: (value: Date | undefined) => void;\n disabled?: boolean;\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n placeholder?: string;\n variant?: 'default' | 'invalid';\n};\n\nexport function DatePickerInput({\n className,\n wrapperClassName,\n value,\n onChange,\n disabled = false,\n calendarProps,\n placeholder = 'MM/DD/YYYY',\n variant,\n}: DatePickerInputProps) {\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState<Date | undefined>(value);\n const [inputValue, setInputValue] = useState<string>(\n value ? dayjs(value).format('MM/DD/YYYY') : '',\n );\n // Track the last value we synced from props to avoid overwriting partial user input\n const lastSyncedRef = useRef(value ? dayjs(value).format('MM/DD/YYYY') : '');\n\n useEffect(() => {\n const formatted = value ? dayjs(value).format('MM/DD/YYYY') : '';\n if (formatted !== lastSyncedRef.current) {\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n if (value) setMonth(value);\n }\n }, [value]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const masked = maskDate(e.target.value);\n setInputValue(masked);\n const parsed = parseDate(masked);\n if (parsed) {\n lastSyncedRef.current = masked;\n onChange?.(parsed);\n } else if (masked === '') {\n lastSyncedRef.current = '';\n onChange?.(undefined);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n }\n if (\n !/[0-9/]/.test(e.key) &&\n !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'Tab'].includes(e.key) &&\n !e.metaKey &&\n !e.ctrlKey\n ) {\n e.preventDefault();\n }\n };\n\n return (\n <div className={cn('relative w-full', wrapperClassName)}>\n <input\n type=\"text\"\n data-slot=\"input\"\n className={cn(inputVariants({ variant }), 'pr-10', className)}\n value={inputValue}\n placeholder={placeholder}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n />\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost-icon\"\n size=\"sm\"\n className=\"absolute top-1/2 right-1 -translate-y-1/2\"\n disabled={disabled}\n aria-label=\"Select date\"\n type=\"button\"\n >\n <LuCalendar />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"end\" sideOffset={10}>\n <Calendar\n mode=\"single\"\n selected={value}\n month={month}\n onMonthChange={setMonth}\n onSelect={(d) => {\n const formatted = d ? dayjs(d).format('MM/DD/YYYY') : '';\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n onChange?.(d);\n setOpen(false);\n }}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","import { useState } from 'react';\nimport { LuRefreshCcw, LuZoomIn, LuZoomOut } from 'react-icons/lu';\nimport Cropper from 'react-easy-crop';\nimport { Button, Slider } from '../index';\nimport type { UseImageCropper } from './useImageCropper';\nimport { cn } from '@/lib/utils';\n\nexport type ImagePreviewProps = {\n alt: string;\n className?: string;\n containerClassName?: string;\n imagePreview?: string; // optional so we can show skeleton while awaiting URL\n cropper?: UseImageCropper; // when provided, show cropping UI\n};\n\nexport const ImagePreview = ({\n alt,\n className = '',\n containerClassName = '',\n imagePreview = undefined,\n cropper = undefined,\n}: ImagePreviewProps) => {\n const [loaded, setLoaded] = useState(false);\n const showLoader = !imagePreview || !loaded;\n const enableCrop = !!cropper;\n\n return (\n <div className={cn(`flex max-w-[386px] flex-col`, className)}>\n <div className={cn('relative h-60 rounded-md border', containerClassName)}>\n {imagePreview && enableCrop ? (\n <Cropper\n image={imagePreview}\n crop={cropper.crop}\n zoom={cropper.zoom}\n aspect={cropper.aspect}\n objectFit=\"contain\"\n onCropChange={cropper.setCrop}\n onZoomChange={cropper.setZoom}\n onCropComplete={cropper.onCropComplete}\n onMediaLoaded={() => setLoaded(true)}\n showGrid={false}\n />\n ) : (\n imagePreview && (\n <img\n alt={alt}\n className={`m-auto h-full w-full object-contain transition-opacity duration-300 ${loaded ? 'opacity-100' : 'opacity-0'}`}\n src={imagePreview}\n onLoad={() => setLoaded(true)}\n draggable={false}\n />\n )\n )}\n\n {showLoader && (\n <div\n aria-label={imagePreview ? 'Loading image' : 'Awaiting image'}\n className=\"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r\"\n />\n )}\n </div>\n\n {!showLoader && enableCrop && (\n <div className=\"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4\">\n <div className=\"flex w-full items-center gap-3\">\n <Button\n aria-label=\"zoom out\"\n onClick={() => cropper.setZoom(Math.max(cropper.zoom - 0.1, 1))}\n className=\"h-8\"\n variant=\"ghost-icon\"\n >\n <LuZoomOut />\n </Button>\n\n <Slider\n value={[cropper.zoom]}\n min={1}\n max={3}\n step={0.01}\n onValueChange={(v: number[]) => cropper.setZoom(v[0])}\n className=\"w-full sm:flex-50\"\n classNames={{ thumb: 'border-2 border-green-800', range: 'bg-green-900' }}\n />\n\n <Button\n aria-label=\"zoom in\"\n onClick={() => cropper.setZoom(Math.min(cropper.zoom + 0.1, 3))}\n variant=\"ghost-icon\"\n className=\"h-8\"\n >\n <LuZoomIn />\n </Button>\n </div>\n\n <Button onClick={cropper.reset} variant=\"ghost\" className=\"h-8 p-2\">\n <LuRefreshCcw />\n Reset\n </Button>\n </div>\n )}\n </div>\n );\n};\n","import { DateTime, Duration } from 'luxon';\nimport { useMemo } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/v2';\nimport { cn } from '@/lib/utils';\n\nexport type Interval = {\n label: string;\n value: {\n hour: string;\n min: string;\n raw: string;\n formatted: string;\n };\n};\n\ntype Props = {\n startTime?: string;\n endTime?: string;\n interval?: number;\n onChange?: (e: Interval) => void;\n className?: string;\n placeholder?: string;\n size?: 'default' | 'sm';\n portal?: boolean;\n [inputProps: string]: unknown;\n};\n\nconst START_TIME_DEFAULT = '00:00';\nconst END_TIME_DEFAULT = '24:00';\n\nconst isValidTime = (time: string) => {\n const dt = DateTime.fromFormat(time, 'HH:mm');\n return dt.isValid;\n};\n\nexport const TimeSelect = ({\n startTime = START_TIME_DEFAULT,\n endTime = END_TIME_DEFAULT,\n interval = 30,\n onChange = undefined,\n className = '',\n placeholder = 'Select one',\n size = 'default',\n portal = true,\n ...inputProps\n}: Props) => {\n if (!isValidTime(startTime)) {\n console.error(`Invalid startTime: ${startTime}`);\n // eslint-disable-next-line no-param-reassign\n startTime = START_TIME_DEFAULT;\n }\n if (!isValidTime(endTime)) {\n console.error(`Invalid endTime: ${endTime}`);\n // eslint-disable-next-line no-param-reassign\n endTime = END_TIME_DEFAULT;\n }\n\n const intervals = useMemo((): Interval[] => {\n const dtEnd = DateTime.fromFormat(endTime, 'HH:mm');\n const durationInterval = Duration.fromObject({ minutes: interval });\n const res = [];\n let i = DateTime.fromFormat(startTime, 'HH:mm');\n while (i <= dtEnd) {\n let raw = i.toFormat('HH:mm');\n // Avoid duplicate keys for \"00:00\" and \"00:00\" (end of day)\n if (raw === '00:00' && i.equals(dtEnd)) raw = '24:00';\n\n res.push({\n label: i.toFormat('h:mm a'),\n value: {\n hour: i.toFormat('HH'),\n min: i.toFormat('mm'),\n raw,\n formatted: i.toFormat('h:mm a'),\n },\n });\n i = i.plus(durationInterval);\n }\n\n return res;\n }, [startTime, endTime, interval]);\n\n const options = intervals.map((time) => ({\n label: time.label,\n value: time.value.raw,\n }));\n\n const handleOnSelect = (e: unknown) => {\n const interval = intervals.find((time) => time.value.raw === e);\n\n if (!interval) return;\n\n onChange?.(interval);\n };\n\n return (\n <Select onValueChange={handleOnSelect} {...inputProps}>\n <SelectTrigger className={cn('max-w-[240px] md:w-[150px]', className)} size={size}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {options.map((option) => (\n // Note that labels and values here may appear to be duplicates\n // For example, \"00:00\" and \"24:00\" will both have the same value \"00:00\"\n <SelectItem className=\"h-10\" key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n","import { ComponentProps, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport { useIMask } from 'react-imask';\nimport { isMatch } from 'react-day-picker';\nimport { Calendar, Input, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '@/v2/input/input';\nimport type { InputProps } from '@/v2/input/input';\n\ndayjs.extend(customParseFormat);\n\n/** Display and input format for dates. Also used as the placeholder when `editable` is true. */\nconst DISPLAY_FORMAT = 'MM/DD/YYYY';\n\n/** IMask pattern — each `0` is a required digit, slashes are fixed literals. */\nconst INPUT_MASK = '00/00/0000';\n\n/**\n * Formats accepted when parsing typed or pasted input (dayjs strict mode).\n * Ordered from most specific to least specific to avoid ambiguous matches.\n */\nconst ACCEPTED_INPUT_FORMATS = ['MM/DD/YYYY', 'MM/D/YYYY', 'M/DD/YYYY', 'M/D/YYYY', 'YYYY-MM-DD'];\n\nexport type DatePickerProps = {\n /** Additional class name(s) applied to the input element. */\n className?: string;\n /** Additional class name(s) applied to the outer popover trigger wrapper. */\n wrapperClassName?: string;\n /** The currently selected date. `undefined` means no date is selected. */\n value?: Date;\n /** Called when the selected date changes. Receives `undefined` when the date is cleared. */\n onChange?: (value: Date | undefined) => void;\n /** When `true`, the picker is non-interactive. */\n disabled?: boolean;\n /**\n * Props forwarded to the underlying `Calendar` component (react-day-picker).\n * Use `disabled` within this object to restrict selectable dates — these\n * constraints apply to both calendar clicks and typed input when `editable` is `true`.\n *\n * @example\n * ```tsx\n * <DatePicker calendarProps={{ disabled: [{ before: new Date() }] }} />\n * ```\n */\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n /**\n * Input placeholder text. Defaults to `\"Pick a date\"` in read-only mode\n * and `\"MM/DD/YYYY\"` when `editable` is `true`.\n */\n placeholder?: string;\n /** Props forwarded to the underlying `Input` component. */\n inputProps?: InputProps;\n /** Whether to show the calendar icon inside the input. @default true */\n showCalendarIcon?: boolean;\n /**\n * When `true`, the input accepts typed and pasted dates in `MM/DD/YYYY` format.\n * Slashes are auto-inserted, non-numeric characters are rejected, and common\n * formats like `M/D/YYYY` and `YYYY-MM-DD` are accepted on paste.\n * Dates that fall in `calendarProps.disabled` ranges are rejected.\n *\n * When `false` (default), the input is read-only and dates can only be\n * selected via the calendar popover.\n *\n * @default false\n */\n editable?: boolean;\n};\n\nfunction formatDate(date: Date | undefined): string {\n return date ? dayjs(date).format(DISPLAY_FORMAT) : '';\n}\n\n/**\n * A date picker that combines a text input with a calendar popover.\n *\n * By default the input is read-only — dates are selected via the calendar.\n * Set `editable` to allow typing or pasting dates in `MM/DD/YYYY` format.\n */\nexport function DatePicker({\n className = '',\n wrapperClassName = '',\n value = undefined,\n onChange = undefined,\n disabled = false,\n calendarProps = undefined,\n placeholder: placeholderProp,\n inputProps = undefined,\n showCalendarIcon = true,\n editable = false,\n}: DatePickerProps) {\n const [open, setOpen] = useState(false);\n const placeholder = placeholderProp ?? (editable ? DISPLAY_FORMAT : 'Pick a date');\n\n // Calendar month: derived from value, with user navigation override.\n // When value changes, navigation resets to the new value's month.\n const [navigatedMonth, setNavigatedMonth] = useState<Date | undefined>(undefined);\n const prevValueForMonth = useRef(value);\n if (value !== prevValueForMonth.current) {\n prevValueForMonth.current = value;\n if (navigatedMonth !== undefined) {\n setNavigatedMonth(undefined);\n }\n }\n const calendarMonth = navigatedMonth ?? value;\n\n const isDateAllowed = (date: Date): boolean => {\n if (!calendarProps?.disabled) {\n return true;\n }\n return !isMatch(date, calendarProps.disabled);\n };\n\n // Refs ensure IMask callbacks always see the latest values without re-creating the mask\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const isDateAllowedRef = useRef(isDateAllowed);\n isDateAllowedRef.current = isDateAllowed;\n\n const { ref: maskRef, setValue: setMaskValue } = useIMask<HTMLInputElement>(\n { mask: INPUT_MASK, lazy: true, overwrite: false },\n {\n onComplete: (maskedValue) => {\n const parsed = dayjs(maskedValue, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowedRef.current(parsed.toDate())) {\n onChangeRef.current?.(parsed.toDate());\n }\n },\n },\n );\n\n const handleSelect = (val: Date | undefined) => {\n onChange?.(val);\n setMaskValue(formatDate(val));\n setOpen(false);\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pasted = e.clipboardData.getData('text').trim();\n const parsed = dayjs(pasted, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n e.preventDefault();\n const date = parsed.toDate();\n onChange?.(date);\n setMaskValue(formatDate(date));\n }\n // If we can't parse it, let IMask handle it naturally\n };\n\n const handleFocus = () => {\n // Sync the mask to the current value on focus — handles external parent resets\n setMaskValue(formatDate(value));\n };\n\n const handleBlur = () => {\n const current = maskRef.current?.value ?? '';\n if (current === '') {\n if (value !== undefined) {\n onChange?.(undefined);\n }\n return;\n }\n const parsed = dayjs(current, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n onChange?.(parsed.toDate());\n }\n // Revert to last valid display value\n setMaskValue(formatDate(value));\n };\n\n const inputClasses = cn(\n inputVariants(),\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n );\n\n return (\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <div className={cn('relative flex w-full items-center rounded-md', wrapperClassName)}>\n {editable ? (\n <input\n ref={maskRef}\n defaultValue={formatDate(value)}\n className={inputClasses}\n placeholder={placeholder}\n disabled={disabled}\n onFocus={handleFocus}\n onPaste={handlePaste}\n onBlur={(e) => {\n handleBlur();\n inputProps?.onBlur?.(e);\n }}\n />\n ) : (\n <Input\n className={cn(\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n )}\n {...inputProps}\n value={formatDate(value)}\n placeholder={placeholder}\n readOnly\n disabled={disabled}\n />\n )}\n {showCalendarIcon && (\n <div\n className={cn(\n 'absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2',\n disabled ? 'text-gray-400' : 'cursor-pointer text-black',\n )}\n >\n <LuCalendar size={16} />\n </div>\n )}\n </div>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-auto overflow-hidden p-0\"\n align=\"start\"\n onOpenAutoFocus={editable ? (e) => e.preventDefault() : undefined}\n >\n <Calendar\n mode=\"single\"\n selected={value ? dayjs(value).toDate() : undefined}\n onSelect={handleSelect}\n {...(editable ? { month: calendarMonth, onMonthChange: setNavigatedMonth } : {})}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/v2/date-picker/date-picker-input.tsx","../src/v2/image-preview/image-preview.tsx","../src/v2/time-select/time-select.tsx","../src/v2/date-picker/date-picker.tsx"],"names":["maskDate","value","digits","parseDate","parts","month","day","year","date","DatePickerInput","className","wrapperClassName","onChange","disabled","calendarProps","placeholder","variant","open","setOpen","useState","setMonth","inputValue","setInputValue","dayjs","lastSyncedRef","useRef","useEffect","formatted","handleInputChange","e","masked","parsed","handleKeyDown","jsxs","cn","jsx","inputVariants","Popover","PopoverTrigger","Button","LuCalendar","PopoverContent","Calendar","d","ImagePreview","alt","containerClassName","imagePreview","cropper","loaded","setLoaded","showLoader","enableCrop","Cropper","LuZoomOut","Slider","v","LuZoomIn","LuRefreshCcw","START_TIME_DEFAULT","END_TIME_DEFAULT","isValidTime","time","DateTime","TimeSelect","startTime","endTime","interval","size","portal","inputProps","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","options","Select","SelectTrigger","SelectValue","SelectContent","option","SelectItem","time_select_default","customParseFormat","DISPLAY_FORMAT","INPUT_MASK","ACCEPTED_INPUT_FORMATS","formatDate","DatePicker","placeholderProp","showCalendarIcon","editable","navigatedMonth","setNavigatedMonth","prevValueForMonth","calendarMonth","isDateAllowed","isMatch","onChangeRef","isDateAllowedRef","maskRef","setMaskValue","useIMask","maskedValue","handleSelect","val","handlePaste","pasted","handleFocus","handleBlur","current","inputClasses","Input"],"mappings":"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","file":"chunk-R3HGV3DR.js","sourcesContent":["import * as React from 'react';\nimport { ComponentProps, useEffect, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport { Calendar, Button, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '../input/input';\n\nfunction maskDate(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 8);\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n}\n\nfunction parseDate(value: string): Date | undefined {\n if (value.length !== 10) return undefined;\n const parts = value.split('/');\n if (parts.length !== 3 || parts[2].length !== 4) return undefined;\n const month = parseInt(parts[0], 10);\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n if (Number.isNaN(month) || Number.isNaN(day) || Number.isNaN(year)) return undefined;\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return undefined;\n }\n return date;\n}\n\nexport type DatePickerInputProps = {\n className?: string;\n wrapperClassName?: string;\n value?: Date;\n onChange?: (value: Date | undefined) => void;\n disabled?: boolean;\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n placeholder?: string;\n variant?: 'default' | 'invalid';\n};\n\nexport function DatePickerInput({\n className,\n wrapperClassName,\n value,\n onChange,\n disabled = false,\n calendarProps,\n placeholder = 'MM/DD/YYYY',\n variant,\n}: DatePickerInputProps) {\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState<Date | undefined>(value);\n const [inputValue, setInputValue] = useState<string>(\n value ? dayjs(value).format('MM/DD/YYYY') : '',\n );\n // Track the last value we synced from props to avoid overwriting partial user input\n const lastSyncedRef = useRef(value ? dayjs(value).format('MM/DD/YYYY') : '');\n\n useEffect(() => {\n const formatted = value ? dayjs(value).format('MM/DD/YYYY') : '';\n if (formatted !== lastSyncedRef.current) {\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n if (value) setMonth(value);\n }\n }, [value]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const masked = maskDate(e.target.value);\n setInputValue(masked);\n const parsed = parseDate(masked);\n if (parsed) {\n lastSyncedRef.current = masked;\n onChange?.(parsed);\n } else if (masked === '') {\n lastSyncedRef.current = '';\n onChange?.(undefined);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n }\n if (\n !/[0-9/]/.test(e.key) &&\n !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'Tab'].includes(e.key) &&\n !e.metaKey &&\n !e.ctrlKey\n ) {\n e.preventDefault();\n }\n };\n\n return (\n <div className={cn('relative w-full', wrapperClassName)}>\n <input\n type=\"text\"\n data-slot=\"input\"\n className={cn(inputVariants({ variant }), 'pr-10', className)}\n value={inputValue}\n placeholder={placeholder}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n />\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost-icon\"\n size=\"sm\"\n className=\"absolute top-1/2 right-1 -translate-y-1/2\"\n disabled={disabled}\n aria-label=\"Select date\"\n type=\"button\"\n >\n <LuCalendar />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"end\" sideOffset={10}>\n <Calendar\n mode=\"single\"\n selected={value}\n month={month}\n onMonthChange={setMonth}\n onSelect={(d) => {\n const formatted = d ? dayjs(d).format('MM/DD/YYYY') : '';\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n onChange?.(d);\n setOpen(false);\n }}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","import { useState } from 'react';\nimport { LuRefreshCcw, LuZoomIn, LuZoomOut } from 'react-icons/lu';\nimport Cropper from 'react-easy-crop';\nimport { Button, Slider } from '../index';\nimport type { UseImageCropper } from './useImageCropper';\nimport { cn } from '@/lib/utils';\n\nexport type ImagePreviewProps = {\n alt: string;\n className?: string;\n containerClassName?: string;\n imagePreview?: string; // optional so we can show skeleton while awaiting URL\n cropper?: UseImageCropper; // when provided, show cropping UI\n};\n\nexport const ImagePreview = ({\n alt,\n className = '',\n containerClassName = '',\n imagePreview = undefined,\n cropper = undefined,\n}: ImagePreviewProps) => {\n const [loaded, setLoaded] = useState(false);\n const showLoader = !imagePreview || !loaded;\n const enableCrop = !!cropper;\n\n return (\n <div className={cn(`flex max-w-[386px] flex-col`, className)}>\n <div className={cn('relative h-60 rounded-md border', containerClassName)}>\n {imagePreview && enableCrop ? (\n <Cropper\n image={imagePreview}\n crop={cropper.crop}\n zoom={cropper.zoom}\n aspect={cropper.aspect}\n objectFit=\"contain\"\n onCropChange={cropper.setCrop}\n onZoomChange={cropper.setZoom}\n onCropComplete={cropper.onCropComplete}\n onMediaLoaded={() => setLoaded(true)}\n showGrid={false}\n />\n ) : (\n imagePreview && (\n <img\n alt={alt}\n className={`m-auto h-full w-full object-contain transition-opacity duration-300 ${loaded ? 'opacity-100' : 'opacity-0'}`}\n src={imagePreview}\n onLoad={() => setLoaded(true)}\n draggable={false}\n />\n )\n )}\n\n {showLoader && (\n <div\n aria-label={imagePreview ? 'Loading image' : 'Awaiting image'}\n className=\"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r\"\n />\n )}\n </div>\n\n {!showLoader && enableCrop && (\n <div className=\"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4\">\n <div className=\"flex w-full items-center gap-3\">\n <Button\n aria-label=\"zoom out\"\n onClick={() => cropper.setZoom(Math.max(cropper.zoom - 0.1, 1))}\n className=\"h-8\"\n variant=\"ghost-icon\"\n >\n <LuZoomOut />\n </Button>\n\n <Slider\n value={[cropper.zoom]}\n min={1}\n max={3}\n step={0.01}\n onValueChange={(v: number[]) => cropper.setZoom(v[0])}\n className=\"w-full sm:flex-50\"\n classNames={{ thumb: 'border-2 border-green-800', range: 'bg-green-900' }}\n />\n\n <Button\n aria-label=\"zoom in\"\n onClick={() => cropper.setZoom(Math.min(cropper.zoom + 0.1, 3))}\n variant=\"ghost-icon\"\n className=\"h-8\"\n >\n <LuZoomIn />\n </Button>\n </div>\n\n <Button onClick={cropper.reset} variant=\"ghost\" className=\"h-8 p-2\">\n <LuRefreshCcw />\n Reset\n </Button>\n </div>\n )}\n </div>\n );\n};\n","import { DateTime, Duration } from 'luxon';\nimport { useMemo } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/v2';\nimport { cn } from '@/lib/utils';\n\nexport type Interval = {\n label: string;\n value: {\n hour: string;\n min: string;\n raw: string;\n formatted: string;\n };\n};\n\ntype Props = {\n startTime?: string;\n endTime?: string;\n interval?: number;\n onChange?: (e: Interval) => void;\n className?: string;\n placeholder?: string;\n size?: 'default' | 'sm';\n portal?: boolean;\n [inputProps: string]: unknown;\n};\n\nconst START_TIME_DEFAULT = '00:00';\nconst END_TIME_DEFAULT = '24:00';\n\nconst isValidTime = (time: string) => {\n const dt = DateTime.fromFormat(time, 'HH:mm');\n return dt.isValid;\n};\n\nexport const TimeSelect = ({\n startTime = START_TIME_DEFAULT,\n endTime = END_TIME_DEFAULT,\n interval = 30,\n onChange = undefined,\n className = '',\n placeholder = 'Select one',\n size = 'default',\n portal = true,\n ...inputProps\n}: Props) => {\n if (!isValidTime(startTime)) {\n console.error(`Invalid startTime: ${startTime}`);\n // eslint-disable-next-line no-param-reassign\n startTime = START_TIME_DEFAULT;\n }\n if (!isValidTime(endTime)) {\n console.error(`Invalid endTime: ${endTime}`);\n // eslint-disable-next-line no-param-reassign\n endTime = END_TIME_DEFAULT;\n }\n\n const intervals = useMemo((): Interval[] => {\n const dtEnd = DateTime.fromFormat(endTime, 'HH:mm');\n const durationInterval = Duration.fromObject({ minutes: interval });\n const res = [];\n let i = DateTime.fromFormat(startTime, 'HH:mm');\n while (i <= dtEnd) {\n let raw = i.toFormat('HH:mm');\n // Avoid duplicate keys for \"00:00\" and \"00:00\" (end of day)\n if (raw === '00:00' && i.equals(dtEnd)) raw = '24:00';\n\n res.push({\n label: i.toFormat('h:mm a'),\n value: {\n hour: i.toFormat('HH'),\n min: i.toFormat('mm'),\n raw,\n formatted: i.toFormat('h:mm a'),\n },\n });\n i = i.plus(durationInterval);\n }\n\n return res;\n }, [startTime, endTime, interval]);\n\n const options = intervals.map((time) => ({\n label: time.label,\n value: time.value.raw,\n }));\n\n const handleOnSelect = (e: unknown) => {\n const interval = intervals.find((time) => time.value.raw === e);\n\n if (!interval) return;\n\n onChange?.(interval);\n };\n\n return (\n <Select onValueChange={handleOnSelect} {...inputProps}>\n <SelectTrigger className={cn('max-w-[240px] md:w-[150px]', className)} size={size}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {options.map((option) => (\n // Note that labels and values here may appear to be duplicates\n // For example, \"00:00\" and \"24:00\" will both have the same value \"00:00\"\n <SelectItem className=\"h-10\" key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n","import { ComponentProps, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport { useIMask } from 'react-imask';\nimport { isMatch } from 'react-day-picker';\nimport { Calendar, Input, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '@/v2/input/input';\nimport type { InputProps } from '@/v2/input/input';\n\ndayjs.extend(customParseFormat);\n\n/** Display and input format for dates. Also used as the placeholder when `editable` is true. */\nconst DISPLAY_FORMAT = 'MM/DD/YYYY';\n\n/** IMask pattern — each `0` is a required digit, slashes are fixed literals. */\nconst INPUT_MASK = '00/00/0000';\n\n/**\n * Formats accepted when parsing typed or pasted input (dayjs strict mode).\n * Ordered from most specific to least specific to avoid ambiguous matches.\n */\nconst ACCEPTED_INPUT_FORMATS = ['MM/DD/YYYY', 'MM/D/YYYY', 'M/DD/YYYY', 'M/D/YYYY', 'YYYY-MM-DD'];\n\nexport type DatePickerProps = {\n /** Additional class name(s) applied to the input element. */\n className?: string;\n /** Additional class name(s) applied to the outer popover trigger wrapper. */\n wrapperClassName?: string;\n /** The currently selected date. `undefined` means no date is selected. */\n value?: Date;\n /** Called when the selected date changes. Receives `undefined` when the date is cleared. */\n onChange?: (value: Date | undefined) => void;\n /** When `true`, the picker is non-interactive. */\n disabled?: boolean;\n /**\n * Props forwarded to the underlying `Calendar` component (react-day-picker).\n * Use `disabled` within this object to restrict selectable dates — these\n * constraints apply to both calendar clicks and typed input when `editable` is `true`.\n *\n * @example\n * ```tsx\n * <DatePicker calendarProps={{ disabled: [{ before: new Date() }] }} />\n * ```\n */\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n /**\n * Input placeholder text. Defaults to `\"Pick a date\"` in read-only mode\n * and `\"MM/DD/YYYY\"` when `editable` is `true`.\n */\n placeholder?: string;\n /** Props forwarded to the underlying `Input` component. */\n inputProps?: InputProps;\n /** Whether to show the calendar icon inside the input. @default true */\n showCalendarIcon?: boolean;\n /**\n * When `true`, the input accepts typed and pasted dates in `MM/DD/YYYY` format.\n * Slashes are auto-inserted, non-numeric characters are rejected, and common\n * formats like `M/D/YYYY` and `YYYY-MM-DD` are accepted on paste.\n * Dates that fall in `calendarProps.disabled` ranges are rejected.\n *\n * When `false` (default), the input is read-only and dates can only be\n * selected via the calendar popover.\n *\n * @default false\n */\n editable?: boolean;\n};\n\nfunction formatDate(date: Date | undefined): string {\n return date ? dayjs(date).format(DISPLAY_FORMAT) : '';\n}\n\n/**\n * A date picker that combines a text input with a calendar popover.\n *\n * By default the input is read-only — dates are selected via the calendar.\n * Set `editable` to allow typing or pasting dates in `MM/DD/YYYY` format.\n */\nexport function DatePicker({\n className = '',\n wrapperClassName = '',\n value = undefined,\n onChange = undefined,\n disabled = false,\n calendarProps = undefined,\n placeholder: placeholderProp,\n inputProps = undefined,\n showCalendarIcon = true,\n editable = false,\n}: DatePickerProps) {\n const [open, setOpen] = useState(false);\n const placeholder = placeholderProp ?? (editable ? DISPLAY_FORMAT : 'Pick a date');\n\n // Calendar month: derived from value, with user navigation override.\n // When value changes, navigation resets to the new value's month.\n const [navigatedMonth, setNavigatedMonth] = useState<Date | undefined>(undefined);\n const prevValueForMonth = useRef(value);\n if (value !== prevValueForMonth.current) {\n prevValueForMonth.current = value;\n if (navigatedMonth !== undefined) {\n setNavigatedMonth(undefined);\n }\n }\n const calendarMonth = navigatedMonth ?? value;\n\n const isDateAllowed = (date: Date): boolean => {\n if (!calendarProps?.disabled) {\n return true;\n }\n return !isMatch(date, calendarProps.disabled);\n };\n\n // Refs ensure IMask callbacks always see the latest values without re-creating the mask\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const isDateAllowedRef = useRef(isDateAllowed);\n isDateAllowedRef.current = isDateAllowed;\n\n const { ref: maskRef, setValue: setMaskValue } = useIMask<HTMLInputElement>(\n { mask: INPUT_MASK, lazy: true, overwrite: false },\n {\n onComplete: (maskedValue) => {\n const parsed = dayjs(maskedValue, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowedRef.current(parsed.toDate())) {\n onChangeRef.current?.(parsed.toDate());\n }\n },\n },\n );\n\n const handleSelect = (val: Date | undefined) => {\n onChange?.(val);\n setMaskValue(formatDate(val));\n setOpen(false);\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pasted = e.clipboardData.getData('text').trim();\n const parsed = dayjs(pasted, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n e.preventDefault();\n const date = parsed.toDate();\n onChange?.(date);\n setMaskValue(formatDate(date));\n }\n // If we can't parse it, let IMask handle it naturally\n };\n\n const handleFocus = () => {\n // Sync the mask to the current value on focus — handles external parent resets\n setMaskValue(formatDate(value));\n };\n\n const handleBlur = () => {\n const current = maskRef.current?.value ?? '';\n if (current === '') {\n if (value !== undefined) {\n onChange?.(undefined);\n }\n return;\n }\n const parsed = dayjs(current, ACCEPTED_INPUT_FORMATS, true);\n if (parsed.isValid() && isDateAllowed(parsed.toDate())) {\n onChange?.(parsed.toDate());\n }\n // Revert to last valid display value\n setMaskValue(formatDate(value));\n };\n\n const inputClasses = cn(\n inputVariants(),\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n );\n\n return (\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <div className={cn('relative flex w-full items-center rounded-md', wrapperClassName)}>\n {editable ? (\n <input\n ref={maskRef}\n defaultValue={formatDate(value)}\n className={inputClasses}\n placeholder={placeholder}\n disabled={disabled}\n onFocus={handleFocus}\n onPaste={handlePaste}\n onBlur={(e) => {\n handleBlur();\n inputProps?.onBlur?.(e);\n }}\n />\n ) : (\n <Input\n className={cn(\n showCalendarIcon && 'pl-10',\n open ? 'border-dark-green' : '',\n className,\n )}\n {...inputProps}\n value={formatDate(value)}\n placeholder={placeholder}\n readOnly\n disabled={disabled}\n />\n )}\n {showCalendarIcon && (\n <div\n className={cn(\n 'absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2',\n disabled ? 'text-gray-400' : 'cursor-pointer text-black',\n )}\n >\n <LuCalendar size={16} />\n </div>\n )}\n </div>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-auto overflow-hidden p-0\"\n align=\"start\"\n onOpenAutoFocus={editable ? (e) => e.preventDefault() : undefined}\n >\n <Calendar\n mode=\"single\"\n selected={value ? dayjs(value).toDate() : undefined}\n onSelect={handleSelect}\n {...(editable ? { month: calendarMonth, onMonthChange: setNavigatedMonth } : {})}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n );\n}\n"]}
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkSV7GB6CH_cjs=require('./chunk-SV7GB6CH.cjs'),chunkVTYXYLTK_cjs=require('./chunk-VTYXYLTK.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),lu=require('react-icons/lu'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var q=({classNames:r=void 0,disabled:w=false,options:t,preSearchOptions:N=void 0,onSearchChange:P=void 0,onChange:k=void 0,onOpenChange:d=void 0,placeholder:O="Select an option",searchLabel:L="Search...",notFoundMessage:z="Not found.",value:i=void 0,size:T="default",error:l=false})=>{let[s,p]=react.useState(false),[I,m]=react.useState(false),_=I?t:N||t;return jsxRuntime.jsxs(chunkSV7GB6CH_cjs.a,{open:s,onOpenChange:()=>{p(!s),m(false),d?.(!s);},children:[jsxRuntime.jsxs(chunkSV7GB6CH_cjs.b,{"aria-invalid":l,disabled:w,className:chunkQRO22BPZ_cjs.a("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:[jsxRuntime.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[!i&&jsxRuntime.jsx(lu.LuSearch,{className:chunkQRO22BPZ_cjs.a(l&&"text-red")}),jsxRuntime.jsx("span",{className:"block min-w-0 truncate",children:i?t.find(e=>e.value===i)?.label:O})]}),jsxRuntime.jsx(lu.LuChevronsUpDown,{className:"opacity-50"})]}),jsxRuntime.jsx(chunkSV7GB6CH_cjs.c,{align:"start",className:chunkQRO22BPZ_cjs.a("w-[var(--radix-popover-trigger-width)] p-0",r?.content),children:jsxRuntime.jsxs(chunkVTYXYLTK_cjs.a,{children:[jsxRuntime.jsx(chunkVTYXYLTK_cjs.c,{placeholder:L,className:chunkQRO22BPZ_cjs.a("h-9",r?.input),onValueChange:e=>{m(!!e),P?.(e);}}),jsxRuntime.jsxs(chunkVTYXYLTK_cjs.d,{onWheel:e=>e.stopPropagation(),children:[jsxRuntime.jsx(chunkVTYXYLTK_cjs.e,{children:z}),jsxRuntime.jsx(chunkVTYXYLTK_cjs.f,{children:_.map(e=>jsxRuntime.jsxs(chunkVTYXYLTK_cjs.h,{value:e.value,keywords:[typeof e.label=="string"?e.label:"",e.additionalSearchText??""],onSelect:g=>{k?.(g===i?"":g),p(false),d?.(false);},className:r?.item,disabled:e.disabled,children:[e.label,jsxRuntime.jsx(lu.LuCheck,{className:chunkQRO22BPZ_cjs.a("ml-auto",i===e.value?"opacity-100":"opacity-0")})]},e.value))})]})]})})]})};exports.a=q;//# sourceMappingURL=chunk-3TNSGXJ6.cjs.map
2
- //# sourceMappingURL=chunk-3TNSGXJ6.cjs.map
1
+ 'use strict';var chunkSV7GB6CH_cjs=require('./chunk-SV7GB6CH.cjs'),chunkEZK5NRS6_cjs=require('./chunk-EZK5NRS6.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),lu=require('react-icons/lu'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var q=({classNames:r=void 0,disabled:w=false,options:t,preSearchOptions:N=void 0,onSearchChange:P=void 0,onChange:k=void 0,onOpenChange:d=void 0,placeholder:O="Select an option",searchLabel:L="Search...",notFoundMessage:z="Not found.",value:i=void 0,size:T="default",error:l=false})=>{let[s,p]=react.useState(false),[I,m]=react.useState(false),_=I?t:N||t;return jsxRuntime.jsxs(chunkSV7GB6CH_cjs.a,{open:s,onOpenChange:()=>{p(!s),m(false),d?.(!s);},children:[jsxRuntime.jsxs(chunkSV7GB6CH_cjs.b,{"aria-invalid":l,disabled:w,className:chunkQRO22BPZ_cjs.a("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:[jsxRuntime.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[!i&&jsxRuntime.jsx(lu.LuSearch,{className:chunkQRO22BPZ_cjs.a(l&&"text-red")}),jsxRuntime.jsx("span",{className:"block min-w-0 truncate",children:i?t.find(e=>e.value===i)?.label:O})]}),jsxRuntime.jsx(lu.LuChevronsUpDown,{className:"opacity-50"})]}),jsxRuntime.jsx(chunkSV7GB6CH_cjs.c,{align:"start",className:chunkQRO22BPZ_cjs.a("w-[var(--radix-popover-trigger-width)] p-0",r?.content),children:jsxRuntime.jsxs(chunkEZK5NRS6_cjs.a,{children:[jsxRuntime.jsx(chunkEZK5NRS6_cjs.c,{placeholder:L,className:chunkQRO22BPZ_cjs.a("h-9",r?.input),onValueChange:e=>{m(!!e),P?.(e);}}),jsxRuntime.jsxs(chunkEZK5NRS6_cjs.d,{onWheel:e=>e.stopPropagation(),children:[jsxRuntime.jsx(chunkEZK5NRS6_cjs.e,{children:z}),jsxRuntime.jsx(chunkEZK5NRS6_cjs.f,{children:_.map(e=>jsxRuntime.jsxs(chunkEZK5NRS6_cjs.h,{value:e.value,keywords:[typeof e.label=="string"?e.label:"",e.additionalSearchText??""],onSelect:g=>{k?.(g===i?"":g),p(false),d?.(false);},className:r?.item,disabled:e.disabled,children:[e.label,jsxRuntime.jsx(lu.LuCheck,{className:chunkQRO22BPZ_cjs.a("ml-auto",i===e.value?"opacity-100":"opacity-0")})]},e.value))})]})]})})]})};exports.a=q;//# sourceMappingURL=chunk-RQTTULKO.cjs.map
2
+ //# sourceMappingURL=chunk-RQTTULKO.cjs.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","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-3TNSGXJ6.cjs","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};\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}: 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 <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","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-RQTTULKO.cjs","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};\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}: 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 <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
- 'use strict';var chunkQUD4HTUP_cjs=require('./chunk-QUD4HTUP.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),chunkNALIS6SG_cjs=require('./chunk-NALIS6SG.cjs'),chunkULTFWLWO_cjs=require('./chunk-ULTFWLWO.cjs'),react=require('react'),vaul=require('vaul'),i=require('@radix-ui/react-dialog'),lu=require('react-icons/lu'),jsxRuntime=require('react/jsx-runtime');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var i__namespace=/*#__PURE__*/_interopNamespace(i);var s=react.createContext({isResponsive:true});function z({disableDrawerOnMobile:t=false,...e}){let{isMobile:a}=chunkULTFWLWO_cjs.b(),r=react.useMemo(()=>({isResponsive:!t}),[t]);return jsxRuntime.jsx(s.Provider,{value:r,children:a&&!t?jsxRuntime.jsx(vaul.Drawer.Root,{"data-slot":"drawer",direction:"bottom",...e}):jsxRuntime.jsx(i__namespace.Root,{"data-slot":"dialog",...e})})}function B({...t}){let{isMobile:e}=chunkULTFWLWO_cjs.b(),{isResponsive:a}=react.useContext(s);return e&&a?jsxRuntime.jsx(vaul.Drawer.Trigger,{"data-slot":"drawer-trigger",...t}):jsxRuntime.jsx(i__namespace.Trigger,{"data-slot":"dialog-trigger",...t})}function f({...t}){let{isMobile:e}=chunkULTFWLWO_cjs.b(),{isResponsive:a}=react.useContext(s);return e&&a?jsxRuntime.jsx(vaul.Drawer.Portal,{"data-slot":"drawer-portal",...t}):jsxRuntime.jsx(i__namespace.Portal,{"data-slot":"dialog-portal",...t})}function P({...t}){let{isMobile:e}=chunkULTFWLWO_cjs.b(),{isResponsive:a}=react.useContext(s);return e&&a?jsxRuntime.jsx(vaul.Drawer.Close,{"data-slot":"drawer-close",...t}):jsxRuntime.jsx(i__namespace.Close,{"data-slot":"dialog-close",...t})}var w=react.forwardRef(({className:t,...e},a)=>{let{isMobile:r}=chunkULTFWLWO_cjs.b(),{isResponsive:c}=react.useContext(s);return r&&c?jsxRuntime.jsx(vaul.Drawer.Overlay,{"data-slot":"drawer-overlay",className:chunkQRO22BPZ_cjs.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,...e}):jsxRuntime.jsx(i__namespace.Overlay,{"data-slot":"dialog-overlay",className:chunkQRO22BPZ_cjs.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,...e})}),O=react.forwardRef(({className:t,children:e=null,overlayClassName:a,...r},c)=>{let{isMobile:C}=chunkULTFWLWO_cjs.b(),{isResponsive:b}=react.useContext(s);return C&&b?jsxRuntime.jsxs(f,{"data-slot":"drawer-portal",children:[jsxRuntime.jsx(w,{className:a}),jsxRuntime.jsx(vaul.Drawer.Content,{"data-slot":"drawer-content",className:chunkQRO22BPZ_cjs.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})]}):jsxRuntime.jsxs(f,{"data-slot":"dialog-portal",children:[jsxRuntime.jsx(w,{className:a}),jsxRuntime.jsx(i__namespace.Content,{"data-slot":"dialog-content",className:chunkQRO22BPZ_cjs.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-[calc(100%-2rem)] max-w-[34.4rem] 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}){let{isMobile:r}=chunkULTFWLWO_cjs.b(),{isResponsive:c}=react.useContext(s);return r&&c?jsxRuntime.jsxs("div",{"data-slot":"drawer-header",className:chunkQRO22BPZ_cjs.a("relative flex flex-col gap-0.5 pt-6 pb-4 text-left md:gap-1.5",t),...a,children:[e&&jsxRuntime.jsx(P,{asChild:true,children:jsxRuntime.jsxs(chunkQUD4HTUP_cjs.b,{className:"absolute top-5 right-0",size:"sm",variant:"ghost-icon",children:[jsxRuntime.jsx(lu.LuX,{}),jsxRuntime.jsx("span",{className:"sr-only",children:"Close dialog"})]})}),a.children]}):jsxRuntime.jsxs("div",{"data-slot":"dialog-header",className:chunkQRO22BPZ_cjs.a("relative flex flex-col gap-2 pb-4",t),...a,children:[e&&jsxRuntime.jsx(P,{asChild:true,children:jsxRuntime.jsxs(chunkQUD4HTUP_cjs.b,{className:"absolute top-0 right-0",size:"sm",variant:"ghost-icon",children:[jsxRuntime.jsx(lu.LuX,{}),jsxRuntime.jsx("span",{className:"sr-only",children:"Close dialog"})]})}),a.children]})}function L({className:t,...e}){let{isMobile:a}=chunkULTFWLWO_cjs.b(),{isResponsive:r}=react.useContext(s);return a&&r?jsxRuntime.jsx("div",{"data-slot":"drawer-footer",className:chunkQRO22BPZ_cjs.a("mt-auto flex flex-col gap-2 py-4",t),...e}):jsxRuntime.jsx("div",{"data-slot":"dialog-footer",className:chunkQRO22BPZ_cjs.a("mt-2 flex gap-2 pt-3",t),...e})}function E({className:t,...e}){let{isMobile:a}=chunkNALIS6SG_cjs.a(),{isResponsive:r}=react.useContext(s);return a&&r?jsxRuntime.jsx(vaul.Drawer.Title,{"data-slot":"drawer-title",className:chunkQRO22BPZ_cjs.a("font-display pr-6 text-3xl",t),...e}):jsxRuntime.jsx(i__namespace.Title,{"data-slot":"dialog-title",className:chunkQRO22BPZ_cjs.a("font-display pr-6 text-3xl leading-none tracking-[0.01rem]",t),...e})}function F({className:t,...e}){let{isMobile:a}=chunkULTFWLWO_cjs.b(),{isResponsive:r}=react.useContext(s);return a&&r?jsxRuntime.jsx(vaul.Drawer.Description,{"data-slot":"drawer-description",className:t,...e}):jsxRuntime.jsx(i__namespace.Description,{"data-slot":"dialog-description",className:chunkQRO22BPZ_cjs.a("text-muted-foreground text-sm",t),...e})}exports.a=z;exports.b=B;exports.c=f;exports.d=P;exports.e=w;exports.f=O;exports.g=H;exports.h=L;exports.i=E;exports.j=F;//# sourceMappingURL=chunk-L4FOTU2K.cjs.map
2
- //# sourceMappingURL=chunk-L4FOTU2K.cjs.map
1
+ 'use strict';var chunkFMFRB4JI_cjs=require('./chunk-FMFRB4JI.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),chunkNALIS6SG_cjs=require('./chunk-NALIS6SG.cjs'),chunkULTFWLWO_cjs=require('./chunk-ULTFWLWO.cjs'),react=require('react'),vaul=require('vaul'),i=require('@radix-ui/react-dialog'),lu=require('react-icons/lu'),jsxRuntime=require('react/jsx-runtime');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var i__namespace=/*#__PURE__*/_interopNamespace(i);var s=react.createContext({isResponsive:true});function z({disableDrawerOnMobile:t=false,...e}){let{isMobile:a}=chunkULTFWLWO_cjs.b(),r=react.useMemo(()=>({isResponsive:!t}),[t]);return jsxRuntime.jsx(s.Provider,{value:r,children:a&&!t?jsxRuntime.jsx(vaul.Drawer.Root,{"data-slot":"drawer",direction:"bottom",...e}):jsxRuntime.jsx(i__namespace.Root,{"data-slot":"dialog",...e})})}function B({...t}){let{isMobile:e}=chunkULTFWLWO_cjs.b(),{isResponsive:a}=react.useContext(s);return e&&a?jsxRuntime.jsx(vaul.Drawer.Trigger,{"data-slot":"drawer-trigger",...t}):jsxRuntime.jsx(i__namespace.Trigger,{"data-slot":"dialog-trigger",...t})}function f({...t}){let{isMobile:e}=chunkULTFWLWO_cjs.b(),{isResponsive:a}=react.useContext(s);return e&&a?jsxRuntime.jsx(vaul.Drawer.Portal,{"data-slot":"drawer-portal",...t}):jsxRuntime.jsx(i__namespace.Portal,{"data-slot":"dialog-portal",...t})}function P({...t}){let{isMobile:e}=chunkULTFWLWO_cjs.b(),{isResponsive:a}=react.useContext(s);return e&&a?jsxRuntime.jsx(vaul.Drawer.Close,{"data-slot":"drawer-close",...t}):jsxRuntime.jsx(i__namespace.Close,{"data-slot":"dialog-close",...t})}var w=react.forwardRef(({className:t,...e},a)=>{let{isMobile:r}=chunkULTFWLWO_cjs.b(),{isResponsive:c}=react.useContext(s);return r&&c?jsxRuntime.jsx(vaul.Drawer.Overlay,{"data-slot":"drawer-overlay",className:chunkQRO22BPZ_cjs.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,...e}):jsxRuntime.jsx(i__namespace.Overlay,{"data-slot":"dialog-overlay",className:chunkQRO22BPZ_cjs.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,...e})}),O=react.forwardRef(({className:t,children:e=null,overlayClassName:a,...r},c)=>{let{isMobile:C}=chunkULTFWLWO_cjs.b(),{isResponsive:b}=react.useContext(s);return C&&b?jsxRuntime.jsxs(f,{"data-slot":"drawer-portal",children:[jsxRuntime.jsx(w,{className:a}),jsxRuntime.jsx(vaul.Drawer.Content,{"data-slot":"drawer-content",className:chunkQRO22BPZ_cjs.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})]}):jsxRuntime.jsxs(f,{"data-slot":"dialog-portal",children:[jsxRuntime.jsx(w,{className:a}),jsxRuntime.jsx(i__namespace.Content,{"data-slot":"dialog-content",className:chunkQRO22BPZ_cjs.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-[calc(100%-2rem)] max-w-[34.4rem] 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}){let{isMobile:r}=chunkULTFWLWO_cjs.b(),{isResponsive:c}=react.useContext(s);return r&&c?jsxRuntime.jsxs("div",{"data-slot":"drawer-header",className:chunkQRO22BPZ_cjs.a("relative flex flex-col gap-0.5 pt-6 pb-4 text-left md:gap-1.5",t),...a,children:[e&&jsxRuntime.jsx(P,{asChild:true,children:jsxRuntime.jsxs(chunkFMFRB4JI_cjs.b,{className:"absolute top-5 right-0",size:"sm",variant:"ghost-icon",children:[jsxRuntime.jsx(lu.LuX,{}),jsxRuntime.jsx("span",{className:"sr-only",children:"Close dialog"})]})}),a.children]}):jsxRuntime.jsxs("div",{"data-slot":"dialog-header",className:chunkQRO22BPZ_cjs.a("relative flex flex-col gap-2 pb-4",t),...a,children:[e&&jsxRuntime.jsx(P,{asChild:true,children:jsxRuntime.jsxs(chunkFMFRB4JI_cjs.b,{className:"absolute top-0 right-0",size:"sm",variant:"ghost-icon",children:[jsxRuntime.jsx(lu.LuX,{}),jsxRuntime.jsx("span",{className:"sr-only",children:"Close dialog"})]})}),a.children]})}function L({className:t,...e}){let{isMobile:a}=chunkULTFWLWO_cjs.b(),{isResponsive:r}=react.useContext(s);return a&&r?jsxRuntime.jsx("div",{"data-slot":"drawer-footer",className:chunkQRO22BPZ_cjs.a("mt-auto flex flex-col gap-2 py-4",t),...e}):jsxRuntime.jsx("div",{"data-slot":"dialog-footer",className:chunkQRO22BPZ_cjs.a("mt-2 flex gap-2 pt-3",t),...e})}function E({className:t,...e}){let{isMobile:a}=chunkNALIS6SG_cjs.a(),{isResponsive:r}=react.useContext(s);return a&&r?jsxRuntime.jsx(vaul.Drawer.Title,{"data-slot":"drawer-title",className:chunkQRO22BPZ_cjs.a("font-display pr-6 text-3xl",t),...e}):jsxRuntime.jsx(i__namespace.Title,{"data-slot":"dialog-title",className:chunkQRO22BPZ_cjs.a("font-display pr-6 text-3xl leading-none tracking-[0.01rem]",t),...e})}function F({className:t,...e}){let{isMobile:a}=chunkULTFWLWO_cjs.b(),{isResponsive:r}=react.useContext(s);return a&&r?jsxRuntime.jsx(vaul.Drawer.Description,{"data-slot":"drawer-description",className:t,...e}):jsxRuntime.jsx(i__namespace.Description,{"data-slot":"dialog-description",className:chunkQRO22BPZ_cjs.a("text-muted-foreground text-sm",t),...e})}exports.a=z;exports.b=B;exports.c=f;exports.d=P;exports.e=w;exports.f=O;exports.g=H;exports.h=L;exports.i=E;exports.j=F;//# sourceMappingURL=chunk-RXR3BZZK.cjs.map
2
+ //# sourceMappingURL=chunk-RXR3BZZK.cjs.map