@solace-health/ui 0.10.648 → 0.10.650

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 (36) hide show
  1. package/dist/{chunk-X7YPQI6C.cjs → chunk-4NEMQL2F.cjs} +2 -2
  2. package/dist/{chunk-X7YPQI6C.cjs.map → chunk-4NEMQL2F.cjs.map} +1 -1
  3. package/dist/chunk-BEMWAVU7.js +2 -0
  4. package/dist/chunk-BEMWAVU7.js.map +1 -0
  5. package/dist/{chunk-URSE5UFH.cjs → chunk-GFSGQ5JC.cjs} +2 -2
  6. package/dist/{chunk-URSE5UFH.cjs.map → chunk-GFSGQ5JC.cjs.map} +1 -1
  7. package/dist/{chunk-2RBS6TFZ.js → chunk-GUGAWHJX.js} +2 -2
  8. package/dist/{chunk-2RBS6TFZ.js.map → chunk-GUGAWHJX.js.map} +1 -1
  9. package/dist/chunk-MQIWR2UP.cjs +2 -0
  10. package/dist/chunk-MQIWR2UP.cjs.map +1 -0
  11. package/dist/{chunk-JYIWRQFD.js → chunk-T6EQRPW6.js} +2 -2
  12. package/dist/{chunk-JYIWRQFD.js.map → chunk-T6EQRPW6.js.map} +1 -1
  13. package/dist/metafile-cjs.json +1 -1
  14. package/dist/metafile-esm.json +1 -1
  15. package/dist/v2/card/card.cjs +1 -1
  16. package/dist/v2/card/card.js +1 -1
  17. package/dist/v2/date-picker/date-picker-input.cjs +1 -1
  18. package/dist/v2/date-picker/date-picker-input.js +1 -1
  19. package/dist/v2/date-picker/date-picker.cjs +1 -1
  20. package/dist/v2/date-picker/date-picker.js +1 -1
  21. package/dist/v2/dropzone/dropzone.cjs +1 -1
  22. package/dist/v2/dropzone/dropzone.d.ts +4 -1
  23. package/dist/v2/dropzone/dropzone.js +1 -1
  24. package/dist/v2/dropzone/dropzone.stories.d.ts +1 -0
  25. package/dist/v2/image-preview/image-preview.cjs +1 -1
  26. package/dist/v2/image-preview/image-preview.js +1 -1
  27. package/dist/v2/index.cjs +1 -1
  28. package/dist/v2/index.d.ts +1 -1
  29. package/dist/v2/index.js +1 -1
  30. package/dist/v2/time-select/time-select.cjs +1 -1
  31. package/dist/v2/time-select/time-select.js +1 -1
  32. package/package.json +1 -1
  33. package/dist/chunk-3P5KFJMO.js +0 -2
  34. package/dist/chunk-3P5KFJMO.js.map +0 -1
  35. package/dist/chunk-OCTFPWXI.cjs +0 -2
  36. package/dist/chunk-OCTFPWXI.cjs.map +0 -1
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),jsxRuntime=require('react/jsx-runtime');function s({className:a,size:t="default",...d}){return jsxRuntime.jsx("div",{"data-slot":"card","data-size":t,className:chunkQRO22BPZ_cjs.a("ring-foreground/10 bg-card text-card-foreground group/card flex flex-col gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 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-xl *:[img:last-child]:rounded-b-xl",a),...d})}function n({className:a,hideHeaderDivider:t=false,...d}){return jsxRuntime.jsx("div",{"data-slot":"card-header",className:chunkQRO22BPZ_cjs.a("group/card-header @container/card-header grid auto-rows-min items-center gap-1 rounded-t-xl border-b 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",t&&"border-none [.border-none]:pb-0",a),...d})}function i({className:a,...t}){return jsxRuntime.jsx("div",{"data-slot":"card-title",className:chunkQRO22BPZ_cjs.a("text-base leading-snug font-bold group-data-[size=sm]/card:text-sm",a),...t})}function c({className:a,...t}){return jsxRuntime.jsx("div",{"data-slot":"card-description",className:chunkQRO22BPZ_cjs.a("text-muted-foreground text-sm",a),...t})}function l({className:a,...t}){return jsxRuntime.jsx("div",{"data-slot":"card-action",className:chunkQRO22BPZ_cjs.a("col-start-2 row-start-1 self-start justify-self-end",a),...t})}function p({className:a,...t}){return jsxRuntime.jsx("div",{"data-slot":"card-content",className:chunkQRO22BPZ_cjs.a("px-4 group-data-[size=sm]/card:px-3",a),...t})}function u({className:a,...t}){return jsxRuntime.jsx("div",{"data-slot":"card-footer",className:chunkQRO22BPZ_cjs.a("bg-muted/50 flex items-center rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3",a),...t})}exports.a=s;exports.b=n;exports.c=i;exports.d=c;exports.e=l;exports.f=p;exports.g=u;//# sourceMappingURL=chunk-X7YPQI6C.cjs.map
2
- //# sourceMappingURL=chunk-X7YPQI6C.cjs.map
1
+ 'use strict';var chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),jsxRuntime=require('react/jsx-runtime');function s({className:a,size:t="default",...d}){return jsxRuntime.jsx("div",{"data-slot":"card","data-size":t,className:chunkQRO22BPZ_cjs.a("ring-foreground/10 bg-card text-card-foreground group/card flex flex-col gap-4 overflow-hidden rounded-lg py-4 text-sm ring-1 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",a),...d})}function n({className:a,hideHeaderDivider:t=false,...d}){return jsxRuntime.jsx("div",{"data-slot":"card-header",className:chunkQRO22BPZ_cjs.a("group/card-header @container/card-header grid auto-rows-min items-center gap-1 rounded-t-lg border-b 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",t&&"border-none [.border-none]:pb-0",a),...d})}function i({className:a,...t}){return jsxRuntime.jsx("div",{"data-slot":"card-title",className:chunkQRO22BPZ_cjs.a("text-base leading-snug font-bold group-data-[size=sm]/card:text-sm",a),...t})}function c({className:a,...t}){return jsxRuntime.jsx("div",{"data-slot":"card-description",className:chunkQRO22BPZ_cjs.a("text-muted-foreground text-sm",a),...t})}function l({className:a,...t}){return jsxRuntime.jsx("div",{"data-slot":"card-action",className:chunkQRO22BPZ_cjs.a("col-start-2 row-start-1 self-start justify-self-end",a),...t})}function p({className:a,...t}){return jsxRuntime.jsx("div",{"data-slot":"card-content",className:chunkQRO22BPZ_cjs.a("px-4 group-data-[size=sm]/card:px-3",a),...t})}function u({className:a,...t}){return jsxRuntime.jsx("div",{"data-slot":"card-footer",className:chunkQRO22BPZ_cjs.a("bg-muted/50 flex items-center rounded-b-lg border-t p-4 group-data-[size=sm]/card:p-3",a),...t})}exports.a=s;exports.b=n;exports.c=i;exports.d=c;exports.e=l;exports.f=p;exports.g=u;//# sourceMappingURL=chunk-4NEMQL2F.cjs.map
2
+ //# sourceMappingURL=chunk-4NEMQL2F.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/card/card.tsx"],"names":["Card","className","size","props","jsx","cn","CardHeader","hideHeaderDivider","CardTitle","CardDescription","CardAction","CardContent","CardFooter"],"mappings":"2GAIA,SAASA,CAAAA,CAAK,CACZ,UAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CAAO,SAAA,CACP,GAAGC,CACL,CAAA,CAA8D,CAC5D,OACEC,cAAAA,CAAC,OACC,WAAA,CAAU,MAAA,CACV,WAAA,CAAWF,CAAAA,CACX,UAAWG,mBAAAA,CACT,sVAAA,CACAJ,CACF,CAAA,CACC,GAAGE,EACN,CAEJ,CAEA,SAASG,CAAAA,CAAW,CAClB,SAAA,CAAAL,CAAAA,CACA,kBAAAM,CAAAA,CAAoB,KAAA,CACpB,GAAGJ,CACL,CAAA,CAAkE,CAChE,OACEC,eAAC,KAAA,CAAA,CACC,WAAA,CAAU,cACV,SAAA,CAAWC,mBAAAA,CACT,+SACAE,CAAAA,EAAqB,iCAAA,CACrBN,CACF,CAAA,CACC,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASK,CAAAA,CAAU,CAAE,SAAA,CAAAP,CAAAA,CAAW,GAAGE,CAAM,EAAgC,CACvE,OACEC,eAAC,KAAA,CAAA,CACC,WAAA,CAAU,aACV,SAAA,CAAWC,mBAAAA,CACT,oEAAA,CACAJ,CACF,EACC,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASM,EAAgB,CAAE,SAAA,CAAAR,CAAAA,CAAW,GAAGE,CAAM,CAAA,CAAgC,CAC7E,OACEC,cAAAA,CAAC,KAAA,CAAA,CACC,YAAU,kBAAA,CACV,SAAA,CAAWC,mBAAAA,CAAG,+BAAA,CAAiCJ,CAAS,CAAA,CACvD,GAAGE,EACN,CAEJ,CAEA,SAASO,CAAAA,CAAW,CAAE,SAAA,CAAAT,CAAAA,CAAW,GAAGE,CAAM,CAAA,CAAgC,CACxE,OACEC,cAAAA,CAAC,OACC,WAAA,CAAU,aAAA,CACV,SAAA,CAAWC,mBAAAA,CAAG,sDAAuDJ,CAAS,CAAA,CAC7E,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASQ,CAAAA,CAAY,CAAE,SAAA,CAAAV,EAAW,GAAGE,CAAM,EAAgC,CACzE,OACEC,eAAC,KAAA,CAAA,CACC,WAAA,CAAU,cAAA,CACV,SAAA,CAAWC,oBAAG,qCAAA,CAAuCJ,CAAS,EAC7D,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASS,CAAAA,CAAW,CAAE,UAAAX,CAAAA,CAAW,GAAGE,CAAM,CAAA,CAAgC,CACxE,OACEC,cAAAA,CAAC,KAAA,CAAA,CACC,WAAA,CAAU,aAAA,CACV,UAAWC,mBAAAA,CACT,uFAAA,CACAJ,CACF,CAAA,CACC,GAAGE,EACN,CAEJ","file":"chunk-X7YPQI6C.cjs","sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Card({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<'div'> & { size?: 'default' | 'sm' }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n 'ring-foreground/10 bg-card text-card-foreground group/card flex flex-col gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 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-xl *:[img:last-child]:rounded-b-xl',\n className,\n )}\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-xl border-b 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-xl border-t 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
+ {"version":3,"sources":["../src/v2/card/card.tsx"],"names":["Card","className","size","props","jsx","cn","CardHeader","hideHeaderDivider","CardTitle","CardDescription","CardAction","CardContent","CardFooter"],"mappings":"2GAIA,SAASA,CAAAA,CAAK,CACZ,UAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CAAO,SAAA,CACP,GAAGC,CACL,CAAA,CAA8D,CAC5D,OACEC,cAAAA,CAAC,OACC,WAAA,CAAU,MAAA,CACV,WAAA,CAAWF,CAAAA,CACX,UAAWG,mBAAAA,CACT,sVAAA,CACAJ,CACF,CAAA,CACC,GAAGE,EACN,CAEJ,CAEA,SAASG,CAAAA,CAAW,CAClB,SAAA,CAAAL,CAAAA,CACA,kBAAAM,CAAAA,CAAoB,KAAA,CACpB,GAAGJ,CACL,CAAA,CAAkE,CAChE,OACEC,eAAC,KAAA,CAAA,CACC,WAAA,CAAU,cACV,SAAA,CAAWC,mBAAAA,CACT,+SACAE,CAAAA,EAAqB,iCAAA,CACrBN,CACF,CAAA,CACC,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASK,CAAAA,CAAU,CAAE,SAAA,CAAAP,CAAAA,CAAW,GAAGE,CAAM,EAAgC,CACvE,OACEC,eAAC,KAAA,CAAA,CACC,WAAA,CAAU,aACV,SAAA,CAAWC,mBAAAA,CACT,oEAAA,CACAJ,CACF,EACC,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASM,EAAgB,CAAE,SAAA,CAAAR,CAAAA,CAAW,GAAGE,CAAM,CAAA,CAAgC,CAC7E,OACEC,cAAAA,CAAC,KAAA,CAAA,CACC,YAAU,kBAAA,CACV,SAAA,CAAWC,mBAAAA,CAAG,+BAAA,CAAiCJ,CAAS,CAAA,CACvD,GAAGE,EACN,CAEJ,CAEA,SAASO,CAAAA,CAAW,CAAE,SAAA,CAAAT,CAAAA,CAAW,GAAGE,CAAM,CAAA,CAAgC,CACxE,OACEC,cAAAA,CAAC,OACC,WAAA,CAAU,aAAA,CACV,SAAA,CAAWC,mBAAAA,CAAG,sDAAuDJ,CAAS,CAAA,CAC7E,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASQ,CAAAA,CAAY,CAAE,SAAA,CAAAV,EAAW,GAAGE,CAAM,EAAgC,CACzE,OACEC,eAAC,KAAA,CAAA,CACC,WAAA,CAAU,cAAA,CACV,SAAA,CAAWC,oBAAG,qCAAA,CAAuCJ,CAAS,EAC7D,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASS,CAAAA,CAAW,CAAE,UAAAX,CAAAA,CAAW,GAAGE,CAAM,CAAA,CAAgC,CACxE,OACEC,cAAAA,CAAC,KAAA,CAAA,CACC,WAAA,CAAU,aAAA,CACV,UAAWC,mBAAAA,CACT,uFAAA,CACAJ,CACF,CAAA,CACC,GAAGE,EACN,CAEJ","file":"chunk-4NEMQL2F.cjs","sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Card({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<'div'> & { size?: 'default' | 'sm' }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n 'ring-foreground/10 bg-card text-card-foreground group/card flex flex-col gap-4 overflow-hidden rounded-lg py-4 text-sm ring-1 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 className,\n )}\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 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 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"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-BAN2U7YX.js';import {a as a$1}from'./chunk-YTIIAU4W.js';import {useDropzone}from'react-dropzone';import {LuFileWarning,LuUpload}from'react-icons/lu';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var P={"image/jpeg":[".jpeg",".jpg"],"image/png":[".png"],"image/avif":[".avif"],"image/heic":[".heic"],"image/webp":[".webp"],"application/pdf":[".pdf"],"text/csv":[".csv"],"application/xml":[".xml",".xlsx"],"application/msword":[".doc"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":[".docx"]},A=[],F={},j=()=>null,L=({accept:m=P,files:n=A,maxFiles:o=5,maxSizeInMb:l=10,onDrop:f=j,className:g=void 0,wrapperClassName:u=void 0,extraInputProps:c=F,isLoading:d=false,icon:b=void 0,title:x=void 0,subtitle:v=void 0})=>{let i=n.length>=o,{getRootProps:y,getInputProps:h,isDragActive:p}=useDropzone({maxFiles:o,multiple:o>1,onDrop:f,maxSize:l*1024*1024,accept:m,onDropRejected:r=>{r.length>0&&r[0].errors[0].code==="too-many-files"?a.error(`Too many files. Please upload up to ${o} files at a time.`):r.length>0&&r[0].errors[0].code==="file-too-large"?a.error(`File is too large. Please upload files smaller than ${l} MB.`):a.error("File type not supported");},disabled:n.length>=o}),N={...h(),...c,disabled:d||c.disabled};return jsx("div",{className:a$1("flex min-h-48 flex-col gap-4 hover:cursor-pointer",p&&"border-grey-700 opacity-75",i&&"hover:cursor-not-allowed",u),...y(),children:jsx("div",{className:a$1("bg-grey-100 border-grey-300 flex w-full flex-col items-center justify-center rounded-lg border-2 border-dashed py-10 text-center",i&&!p&&"border-red-300",g),children:i?jsxs("div",{className:"text flex flex-col items-center",children:[jsx(LuFileWarning,{className:"h-8 w-8 text-red-500"}),jsxs("div",{className:"strong mt-4",children:["Maximum ",o," file limit reached"]})]}):jsxs(Fragment,{children:[jsx("input",{...N}),d?jsx("div",{className:"h-8 w-8 animate-spin rounded-full border-4 border-gray-300 border-t-gray-700"}):b??jsx(LuUpload,{className:"h-8 w-8 text-gray-700"}),jsxs("div",{className:"text-grey-700 mt-4 flex flex-col gap-1",children:[x??jsx("p",{className:"text-body-lg",children:"Drag an image or click to browse"}),v??jsxs("p",{className:"text-body-sm",children:[l," MB max file size"]})]})]})})})};export{L as a};//# sourceMappingURL=chunk-BEMWAVU7.js.map
2
+ //# sourceMappingURL=chunk-BEMWAVU7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/v2/dropzone/dropzone.tsx"],"names":["defaultAcceptedFileTypes","stableArray","stableObject","stableFunc","Dropzone","accept","files","maxFiles","maxSizeInMb","onDrop","className","wrapperClassName","extraInputProps","isLoading","icon","title","subtitle","overMaxFileLimit","getRootProps","getInputProps","isDragActive","useDropzone","errorList","toast","inputProps","jsx","cn","jsxs","LuFileWarning","Fragment","LuUpload"],"mappings":"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","file":"chunk-BEMWAVU7.js","sourcesContent":["import { Accept, useDropzone } from 'react-dropzone';\nimport { LuFileWarning, LuUpload } from 'react-icons/lu';\nimport { toast } from '@/v2/toast/toaster';\nimport { cn } from '@/lib/utils';\n\nconst defaultAcceptedFileTypes = {\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'image/png': ['.png'],\n 'image/avif': ['.avif'],\n 'image/heic': ['.heic'],\n 'image/webp': ['.webp'],\n 'application/pdf': ['.pdf'],\n 'text/csv': ['.csv'],\n 'application/xml': ['.xml', '.xlsx'],\n 'application/msword': ['.doc'],\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ['.docx'],\n};\nconst stableArray: File[] = [];\nconst stableObject = {};\nconst stableFunc = () => null;\n\nexport type DropzoneProps = {\n accept?: Accept;\n files?: File[];\n maxFiles?: number;\n maxSizeInMb?: number;\n onDrop?: (acceptedFiles: File[]) => void;\n className?: string;\n wrapperClassName?: string;\n extraInputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n isLoading?: boolean;\n icon?: React.ReactNode;\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n};\n\nexport const Dropzone = ({\n accept = defaultAcceptedFileTypes,\n files = stableArray,\n maxFiles = 5,\n maxSizeInMb = 10,\n onDrop = stableFunc,\n className = undefined,\n wrapperClassName = undefined,\n extraInputProps = stableObject,\n isLoading = false,\n icon = undefined,\n title = undefined,\n subtitle = undefined,\n}: DropzoneProps) => {\n const overMaxFileLimit = files.length >= maxFiles;\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n maxFiles,\n multiple: maxFiles > 1,\n onDrop,\n maxSize: maxSizeInMb * 1024 * 1024,\n accept,\n onDropRejected: (errorList) => {\n if (errorList.length > 0 && errorList[0].errors[0].code === 'too-many-files') {\n toast.error(`Too many files. Please upload up to ${maxFiles} files at a time.`);\n } else if (errorList.length > 0 && errorList[0].errors[0].code === 'file-too-large') {\n toast.error(`File is too large. Please upload files smaller than ${maxSizeInMb} MB.`);\n } else {\n toast.error('File type not supported');\n }\n },\n disabled: files.length >= maxFiles,\n });\n\n const inputProps = {\n ...getInputProps(),\n ...extraInputProps,\n disabled: isLoading || extraInputProps.disabled,\n };\n\n return (\n <div\n className={cn(\n 'flex min-h-48 flex-col gap-4 hover:cursor-pointer',\n isDragActive && 'border-grey-700 opacity-75',\n overMaxFileLimit && 'hover:cursor-not-allowed',\n wrapperClassName,\n )}\n {...getRootProps()}\n >\n <div\n className={cn(\n 'bg-grey-100 border-grey-300 flex w-full flex-col items-center justify-center rounded-lg border-2 border-dashed py-10 text-center',\n overMaxFileLimit && !isDragActive && 'border-red-300',\n className,\n )}\n >\n {overMaxFileLimit ? (\n <div className=\"text flex flex-col items-center\">\n <LuFileWarning className=\"h-8 w-8 text-red-500\" />\n <div className=\"strong mt-4\">Maximum {maxFiles} file limit reached</div>\n </div>\n ) : (\n <>\n <input {...inputProps} />\n {isLoading ? (\n <div className=\"h-8 w-8 animate-spin rounded-full border-4 border-gray-300 border-t-gray-700\" />\n ) : (\n (icon ?? <LuUpload className=\"h-8 w-8 text-gray-700\" />)\n )}\n <div className=\"text-grey-700 mt-4 flex flex-col gap-1\">\n {title ?? <p className=\"text-body-lg\">Drag an image or click to browse</p>}\n {subtitle ?? <p className=\"text-body-sm\">{maxSizeInMb} MB max file size</p>}\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n"]}
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkJ3F5C3FQ_cjs=require('./chunk-J3F5C3FQ.cjs'),chunkQAGOBPAT_cjs=require('./chunk-QAGOBPAT.cjs'),chunkSV7GB6CH_cjs=require('./chunk-SV7GB6CH.cjs'),chunk6LFWXW2S_cjs=require('./chunk-6LFWXW2S.cjs'),chunk25P3XDJA_cjs=require('./chunk-25P3XDJA.cjs'),chunkOUGYUQUB_cjs=require('./chunk-OUGYUQUB.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),react=require('react'),lu=require('react-icons/lu'),N=require('dayjs'),jsxRuntime=require('react/jsx-runtime'),ae=require('react-easy-crop'),luxon=require('luxon');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var N__default=/*#__PURE__*/_interopDefault(N);var ae__default=/*#__PURE__*/_interopDefault(ae);function Q(r){let o=r.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 W(r){if(r.length!==10)return;let o=r.split("/");if(o.length!==3||o[2].length!==4)return;let t=parseInt(o[0],10),n=parseInt(o[1],10),e=parseInt(o[2],10);if(Number.isNaN(t)||Number.isNaN(n)||Number.isNaN(e))return;let l=new Date(e,t-1,n);if(!(l.getFullYear()!==e||l.getMonth()!==t-1||l.getDate()!==n))return l}function ee({className:r,wrapperClassName:o,value:t,onChange:n,disabled:e=false,calendarProps:l,placeholder:f="MM/DD/YYYY",variant:g}){let[u,p]=react.useState(false),[v,b]=react.useState(t),[i,x]=react.useState(t?N__default.default(t).format("MM/DD/YYYY"):""),d=react.useRef(t?N__default.default(t).format("MM/DD/YYYY"):"");react.useEffect(()=>{let a=t?N__default.default(t).format("MM/DD/YYYY"):"";a!==d.current&&(d.current=a,x(a),t&&b(t));},[t]);let m=a=>{let C=Q(a.target.value);x(C);let z=W(C);z?(d.current=C,n?.(z)):C===""&&(d.current="",n?.(void 0));},w=a=>{a.key==="ArrowDown"&&(a.preventDefault(),p(true)),!/[0-9/]/.test(a.key)&&!["Backspace","Delete","ArrowLeft","ArrowRight","ArrowUp","Tab"].includes(a.key)&&!a.metaKey&&!a.ctrlKey&&a.preventDefault();};return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative w-full",o),children:[jsxRuntime.jsx("input",{type:"text","data-slot":"input",className:chunkQRO22BPZ_cjs.a(chunkOUGYUQUB_cjs.a({variant:g}),"pr-10",r),value:i,placeholder:f,onChange:m,onKeyDown:w,disabled:e}),jsxRuntime.jsxs(chunkSV7GB6CH_cjs.a,{open:!e&&u,onOpenChange:p,children:[jsxRuntime.jsx(chunkSV7GB6CH_cjs.b,{asChild:true,children:jsxRuntime.jsx(chunk25P3XDJA_cjs.b,{variant:"ghost-icon",size:"sm",className:"absolute top-1/2 right-1 -translate-y-1/2",disabled:e,"aria-label":"Select date",type:"button",children:jsxRuntime.jsx(lu.LuCalendar,{})})}),jsxRuntime.jsx(chunkSV7GB6CH_cjs.c,{className:"w-auto overflow-hidden p-0",align:"end",sideOffset:10,children:jsxRuntime.jsx(chunk6LFWXW2S_cjs.b,{mode:"single",selected:t,month:v,onMonthChange:b,onSelect:a=>{let C=a?N__default.default(a).format("MM/DD/YYYY"):"";d.current=C,x(C),n?.(a),p(false);},...l})})]})]})}var ie=({alt:r,className:o="",containerClassName:t="",imagePreview:n=void 0,cropper:e=void 0})=>{let[l,f]=react.useState(false),g=!n||!l,u=!!e;return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("flex max-w-[386px] flex-col",o),children:[jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative h-60 rounded-md border",t),children:[n&&u?jsxRuntime.jsx(ae__default.default,{image:n,crop:e.crop,zoom:e.zoom,aspect:e.aspect,objectFit:"contain",onCropChange:e.setCrop,onZoomChange:e.setZoom,onCropComplete:e.onCropComplete,onMediaLoaded:()=>f(true),showGrid:false}):n&&jsxRuntime.jsx("img",{alt:r,className:`m-auto h-full w-full object-contain transition-opacity duration-300 ${l?"opacity-100":"opacity-0"}`,src:n,onLoad:()=>f(true),draggable:false}),g&&jsxRuntime.jsx("div",{"aria-label":n?"Loading image":"Awaiting image",className:"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r"})]}),!g&&u&&jsxRuntime.jsxs("div",{className:"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4",children:[jsxRuntime.jsxs("div",{className:"flex w-full items-center gap-3",children:[jsxRuntime.jsx(chunk25P3XDJA_cjs.b,{"aria-label":"zoom out",onClick:()=>e.setZoom(Math.max(e.zoom-.1,1)),className:"h-8",variant:"ghost-icon",children:jsxRuntime.jsx(lu.LuZoomOut,{})}),jsxRuntime.jsx(chunkQAGOBPAT_cjs.a,{value:[e.zoom],min:1,max:3,step:.01,onValueChange:p=>e.setZoom(p[0]),className:"w-full sm:flex-50",classNames:{thumb:"border-2 border-green-800",range:"bg-green-900"}}),jsxRuntime.jsx(chunk25P3XDJA_cjs.b,{"aria-label":"zoom in",onClick:()=>e.setZoom(Math.min(e.zoom+.1,3)),variant:"ghost-icon",className:"h-8",children:jsxRuntime.jsx(lu.LuZoomIn,{})})]}),jsxRuntime.jsxs(chunk25P3XDJA_cjs.b,{onClick:e.reset,variant:"ghost",className:"h-8 p-2",children:[jsxRuntime.jsx(lu.LuRefreshCcw,{}),"Reset"]})]})]})};var U="00:00",$="24:00",Z=r=>luxon.DateTime.fromFormat(r,"HH:mm").isValid,K=({startTime:r=U,endTime:o=$,interval:t=30,onChange:n=void 0,className:e="",placeholder:l="Select one",size:f="default",portal:g=true,...u})=>{Z(r)||(console.error(`Invalid startTime: ${r}`),r=U),Z(o)||(console.error(`Invalid endTime: ${o}`),o=$);let p=react.useMemo(()=>{let i=luxon.DateTime.fromFormat(o,"HH:mm"),x=luxon.Duration.fromObject({minutes:t}),d=[],m=luxon.DateTime.fromFormat(r,"HH:mm");for(;m<=i;){let w=m.toFormat("HH:mm");w==="00:00"&&m.equals(i)&&(w="24:00"),d.push({label:m.toFormat("h:mm a"),value:{hour:m.toFormat("HH"),min:m.toFormat("mm"),raw:w,formatted:m.toFormat("h:mm a")}}),m=m.plus(x);}return d},[r,o,t]),v=p.map(i=>({label:i.label,value:i.value.raw}));return jsxRuntime.jsxs(chunkJ3F5C3FQ_cjs.a,{onValueChange:i=>{let x=p.find(d=>d.value.raw===i);x&&n?.(x);},...u,children:[jsxRuntime.jsx(chunkJ3F5C3FQ_cjs.d,{className:chunkQRO22BPZ_cjs.a("max-w-[240px] md:w-[150px]",e),size:f,children:jsxRuntime.jsx(chunkJ3F5C3FQ_cjs.c,{placeholder:l})}),jsxRuntime.jsx(chunkJ3F5C3FQ_cjs.g,{position:"popper",className:"max-h-90",portal:g,children:v.map(i=>jsxRuntime.jsx(chunkJ3F5C3FQ_cjs.i,{className:"h-10",value:i.value,children:i.label},i.value))})]})},Ye=K;function me({className:r="",wrapperClassName:o="",value:t=void 0,onChange:n=void 0,disabled:e=false,calendarProps:l=void 0,placeholder:f="Pick a date",inputProps:g=void 0,showCalendarIcon:u=true}){let[p,v]=react.useState(false),b=i=>{n?.(i),v(false);};return jsxRuntime.jsxs(chunkSV7GB6CH_cjs.a,{open:!e&&p,onOpenChange:v,children:[jsxRuntime.jsxs(chunkSV7GB6CH_cjs.b,{className:chunkQRO22BPZ_cjs.a("focus-visible:ring-ring/50 hover:enabled:border-dark-green focus:enabled:border-dark-green focus-visible:border-dark-green relative flex w-full items-center rounded-md transition-all outline-none focus-within:shadow focus-within:shadow-green-300 focus-visible:ring-[3px] focus:enabled:shadow-green-300",o),children:[jsxRuntime.jsx(chunkOUGYUQUB_cjs.b,{className:chunkQRO22BPZ_cjs.a(u&&"pl-10",p?"border-dark-green":"",r),value:t?N__default.default(t).format("MM/DD/YYYY"):"",placeholder:f,readOnly:true,disabled:e,...g}),u&&jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2",e?"text-gray-400":"cursor-pointer text-black"),children:jsxRuntime.jsx(lu.LuCalendar,{size:16})})]}),jsxRuntime.jsx(chunkSV7GB6CH_cjs.c,{className:"w-auto overflow-hidden p-0",align:"start",children:jsxRuntime.jsx(chunk6LFWXW2S_cjs.b,{mode:"single",selected:t?N__default.default(t).toDate():void 0,onSelect:b,...l})})]})}exports.a=me;exports.b=ee;exports.c=ie;exports.d=K;exports.e=Ye;//# sourceMappingURL=chunk-URSE5UFH.cjs.map
2
- //# sourceMappingURL=chunk-URSE5UFH.cjs.map
1
+ 'use strict';var chunkJ3F5C3FQ_cjs=require('./chunk-J3F5C3FQ.cjs'),chunkQAGOBPAT_cjs=require('./chunk-QAGOBPAT.cjs'),chunkSV7GB6CH_cjs=require('./chunk-SV7GB6CH.cjs'),chunk6LFWXW2S_cjs=require('./chunk-6LFWXW2S.cjs'),chunk25P3XDJA_cjs=require('./chunk-25P3XDJA.cjs'),chunkOUGYUQUB_cjs=require('./chunk-OUGYUQUB.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),react=require('react'),lu=require('react-icons/lu'),N=require('dayjs'),jsxRuntime=require('react/jsx-runtime'),ae=require('react-easy-crop'),luxon=require('luxon');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var N__default=/*#__PURE__*/_interopDefault(N);var ae__default=/*#__PURE__*/_interopDefault(ae);function Q(r){let o=r.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 W(r){if(r.length!==10)return;let o=r.split("/");if(o.length!==3||o[2].length!==4)return;let t=parseInt(o[0],10),n=parseInt(o[1],10),e=parseInt(o[2],10);if(Number.isNaN(t)||Number.isNaN(n)||Number.isNaN(e))return;let s=new Date(e,t-1,n);if(!(s.getFullYear()!==e||s.getMonth()!==t-1||s.getDate()!==n))return s}function ee({className:r,wrapperClassName:o,value:t,onChange:n,disabled:e=false,calendarProps:s,placeholder:f="MM/DD/YYYY",variant:g}){let[u,p]=react.useState(false),[v,b]=react.useState(t),[i,x]=react.useState(t?N__default.default(t).format("MM/DD/YYYY"):""),d=react.useRef(t?N__default.default(t).format("MM/DD/YYYY"):"");react.useEffect(()=>{let a=t?N__default.default(t).format("MM/DD/YYYY"):"";a!==d.current&&(d.current=a,x(a),t&&b(t));},[t]);let m=a=>{let C=Q(a.target.value);x(C);let z=W(C);z?(d.current=C,n?.(z)):C===""&&(d.current="",n?.(void 0));},w=a=>{a.key==="ArrowDown"&&(a.preventDefault(),p(true)),!/[0-9/]/.test(a.key)&&!["Backspace","Delete","ArrowLeft","ArrowRight","ArrowUp","Tab"].includes(a.key)&&!a.metaKey&&!a.ctrlKey&&a.preventDefault();};return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative w-full",o),children:[jsxRuntime.jsx("input",{type:"text","data-slot":"input",className:chunkQRO22BPZ_cjs.a(chunkOUGYUQUB_cjs.a({variant:g}),"pr-10",r),value:i,placeholder:f,onChange:m,onKeyDown:w,disabled:e}),jsxRuntime.jsxs(chunkSV7GB6CH_cjs.a,{open:!e&&u,onOpenChange:p,children:[jsxRuntime.jsx(chunkSV7GB6CH_cjs.b,{asChild:true,children:jsxRuntime.jsx(chunk25P3XDJA_cjs.b,{variant:"ghost-icon",size:"sm",className:"absolute top-1/2 right-1 -translate-y-1/2",disabled:e,"aria-label":"Select date",type:"button",children:jsxRuntime.jsx(lu.LuCalendar,{})})}),jsxRuntime.jsx(chunkSV7GB6CH_cjs.c,{className:"w-auto overflow-hidden p-0",align:"end",sideOffset:10,children:jsxRuntime.jsx(chunk6LFWXW2S_cjs.b,{mode:"single",selected:t,month:v,onMonthChange:b,onSelect:a=>{let C=a?N__default.default(a).format("MM/DD/YYYY"):"";d.current=C,x(C),n?.(a),p(false);},...s})})]})]})}var ie=({alt:r,className:o="",containerClassName:t="",imagePreview:n=void 0,cropper:e=void 0})=>{let[s,f]=react.useState(false),g=!n||!s,u=!!e;return jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("flex max-w-[386px] flex-col",o),children:[jsxRuntime.jsxs("div",{className:chunkQRO22BPZ_cjs.a("relative h-60 rounded-md border",t),children:[n&&u?jsxRuntime.jsx(ae__default.default,{image:n,crop:e.crop,zoom:e.zoom,aspect:e.aspect,objectFit:"contain",onCropChange:e.setCrop,onZoomChange:e.setZoom,onCropComplete:e.onCropComplete,onMediaLoaded:()=>f(true),showGrid:false}):n&&jsxRuntime.jsx("img",{alt:r,className:`m-auto h-full w-full object-contain transition-opacity duration-300 ${s?"opacity-100":"opacity-0"}`,src:n,onLoad:()=>f(true),draggable:false}),g&&jsxRuntime.jsx("div",{"aria-label":n?"Loading image":"Awaiting image",className:"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r"})]}),!g&&u&&jsxRuntime.jsxs("div",{className:"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4",children:[jsxRuntime.jsxs("div",{className:"flex w-full items-center gap-3",children:[jsxRuntime.jsx(chunk25P3XDJA_cjs.b,{"aria-label":"zoom out",onClick:()=>e.setZoom(Math.max(e.zoom-.1,1)),className:"h-8",variant:"ghost-icon",children:jsxRuntime.jsx(lu.LuZoomOut,{})}),jsxRuntime.jsx(chunkQAGOBPAT_cjs.a,{value:[e.zoom],min:1,max:3,step:.01,onValueChange:p=>e.setZoom(p[0]),className:"w-full sm:flex-50",classNames:{thumb:"border-2 border-green-800",range:"bg-green-900"}}),jsxRuntime.jsx(chunk25P3XDJA_cjs.b,{"aria-label":"zoom in",onClick:()=>e.setZoom(Math.min(e.zoom+.1,3)),variant:"ghost-icon",className:"h-8",children:jsxRuntime.jsx(lu.LuZoomIn,{})})]}),jsxRuntime.jsxs(chunk25P3XDJA_cjs.b,{onClick:e.reset,variant:"ghost",className:"h-8 p-2",children:[jsxRuntime.jsx(lu.LuRefreshCcw,{}),"Reset"]})]})]})};var U="00:00",$="24:00",Z=r=>luxon.DateTime.fromFormat(r,"HH:mm").isValid,K=({startTime:r=U,endTime:o=$,interval:t=30,onChange:n=void 0,className:e="",placeholder:s="Select one",size:f="default",portal:g=true,...u})=>{Z(r)||(console.error(`Invalid startTime: ${r}`),r=U),Z(o)||(console.error(`Invalid endTime: ${o}`),o=$);let p=react.useMemo(()=>{let i=luxon.DateTime.fromFormat(o,"HH:mm"),x=luxon.Duration.fromObject({minutes:t}),d=[],m=luxon.DateTime.fromFormat(r,"HH:mm");for(;m<=i;){let w=m.toFormat("HH:mm");w==="00:00"&&m.equals(i)&&(w="24:00"),d.push({label:m.toFormat("h:mm a"),value:{hour:m.toFormat("HH"),min:m.toFormat("mm"),raw:w,formatted:m.toFormat("h:mm a")}}),m=m.plus(x);}return d},[r,o,t]),v=p.map(i=>({label:i.label,value:i.value.raw}));return jsxRuntime.jsxs(chunkJ3F5C3FQ_cjs.a,{onValueChange:i=>{let x=p.find(d=>d.value.raw===i);x&&n?.(x);},...u,children:[jsxRuntime.jsx(chunkJ3F5C3FQ_cjs.d,{className:chunkQRO22BPZ_cjs.a("max-w-[240px] md:w-[150px]",e),size:f,children:jsxRuntime.jsx(chunkJ3F5C3FQ_cjs.c,{placeholder:s})}),jsxRuntime.jsx(chunkJ3F5C3FQ_cjs.g,{position:"popper",className:"max-h-90",portal:g,children:v.map(i=>jsxRuntime.jsx(chunkJ3F5C3FQ_cjs.i,{className:"h-10",value:i.value,children:i.label},i.value))})]})},Ye=K;function me({className:r="",wrapperClassName:o="",value:t=void 0,onChange:n=void 0,disabled:e=false,calendarProps:s=void 0,placeholder:f="Pick a date",inputProps:g=void 0,showCalendarIcon:u=true}){let[p,v]=react.useState(false),b=i=>{n?.(i),v(false);};return jsxRuntime.jsxs(chunkSV7GB6CH_cjs.a,{open:!e&&p,onOpenChange:v,children:[jsxRuntime.jsxs(chunkSV7GB6CH_cjs.b,{className:chunkQRO22BPZ_cjs.a("focus-visible:ring-ring/50 hover:enabled:border-dark-green focus:enabled:border-dark-green focus-visible:border-dark-green relative flex w-full items-center rounded-md transition-all outline-none focus-within:shadow focus-within:shadow-green-300 focus-visible:ring-[3px] focus:enabled:shadow-green-300",o),children:[jsxRuntime.jsx(chunkOUGYUQUB_cjs.b,{className:chunkQRO22BPZ_cjs.a(u&&"pl-10",p?"border-dark-green":"",r),value:t?N__default.default(t).format("MM/DD/YYYY"):"",placeholder:f,readOnly:true,disabled:e,...g}),u&&jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2",e?"text-gray-400":"cursor-pointer text-black"),children:jsxRuntime.jsx(lu.LuCalendar,{size:16})})]}),jsxRuntime.jsx(chunkSV7GB6CH_cjs.c,{className:"w-auto overflow-hidden p-0",align:"start",children:jsxRuntime.jsx(chunk6LFWXW2S_cjs.b,{mode:"single",selected:t?N__default.default(t).toDate():void 0,onSelect:b,...s})})]})}exports.a=me;exports.b=ee;exports.c=ie;exports.d=K;exports.e=Ye;//# sourceMappingURL=chunk-GFSGQ5JC.cjs.map
2
+ //# sourceMappingURL=chunk-GFSGQ5JC.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/date-picker/date-picker-input.tsx","../src/v2/image-preview/image-preview.tsx","../src/v2/time-select/time-select.tsx","../src/v2/date-picker/date-picker.tsx"],"names":["maskDate","value","digits","parseDate","parts","month","day","year","date","DatePickerInput","className","wrapperClassName","onChange","disabled","calendarProps","placeholder","variant","open","setOpen","useState","setMonth","inputValue","setInputValue","dayjs","lastSyncedRef","useRef","useEffect","formatted","handleInputChange","e","masked","parsed","handleKeyDown","jsxs","cn","jsx","inputVariants","Popover","PopoverTrigger","Button","LuCalendar","PopoverContent","Calendar","d","ImagePreview","alt","containerClassName","imagePreview","cropper","loaded","setLoaded","showLoader","enableCrop","Cropper","LuZoomOut","Slider","v","LuZoomIn","LuRefreshCcw","START_TIME_DEFAULT","END_TIME_DEFAULT","isValidTime","time","DateTime","TimeSelect","startTime","endTime","interval","size","portal","inputProps","intervals","useMemo","dtEnd","durationInterval","Duration","res","i","raw","options","Select","SelectTrigger","SelectValue","SelectContent","option","SelectItem","time_select_default","DatePicker","showCalendarIcon","handleSelect","val","Input"],"mappings":"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","file":"chunk-URSE5UFH.cjs","sourcesContent":["import * as React from 'react';\nimport { ComponentProps, useEffect, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport { Calendar, Button, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '../input/input';\n\nfunction maskDate(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 8);\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n}\n\nfunction parseDate(value: string): Date | undefined {\n if (value.length !== 10) return undefined;\n const parts = value.split('/');\n if (parts.length !== 3 || parts[2].length !== 4) return undefined;\n const month = parseInt(parts[0], 10);\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n if (Number.isNaN(month) || Number.isNaN(day) || Number.isNaN(year)) return undefined;\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return undefined;\n }\n return date;\n}\n\nexport type DatePickerInputProps = {\n className?: string;\n wrapperClassName?: string;\n value?: Date;\n onChange?: (value: Date | undefined) => void;\n disabled?: boolean;\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n placeholder?: string;\n variant?: 'default' | 'invalid';\n};\n\nexport function DatePickerInput({\n className,\n wrapperClassName,\n value,\n onChange,\n disabled = false,\n calendarProps,\n placeholder = 'MM/DD/YYYY',\n variant,\n}: DatePickerInputProps) {\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState<Date | undefined>(value);\n const [inputValue, setInputValue] = useState<string>(\n value ? dayjs(value).format('MM/DD/YYYY') : '',\n );\n // Track the last value we synced from props to avoid overwriting partial user input\n const lastSyncedRef = useRef(value ? dayjs(value).format('MM/DD/YYYY') : '');\n\n useEffect(() => {\n const formatted = value ? dayjs(value).format('MM/DD/YYYY') : '';\n if (formatted !== lastSyncedRef.current) {\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n if (value) setMonth(value);\n }\n }, [value]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const masked = maskDate(e.target.value);\n setInputValue(masked);\n const parsed = parseDate(masked);\n if (parsed) {\n lastSyncedRef.current = masked;\n onChange?.(parsed);\n } else if (masked === '') {\n lastSyncedRef.current = '';\n onChange?.(undefined);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n }\n if (\n !/[0-9/]/.test(e.key) &&\n !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'Tab'].includes(e.key) &&\n !e.metaKey &&\n !e.ctrlKey\n ) {\n e.preventDefault();\n }\n };\n\n return (\n <div className={cn('relative w-full', wrapperClassName)}>\n <input\n type=\"text\"\n data-slot=\"input\"\n className={cn(inputVariants({ variant }), 'pr-10', className)}\n value={inputValue}\n placeholder={placeholder}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n />\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost-icon\"\n size=\"sm\"\n className=\"absolute top-1/2 right-1 -translate-y-1/2\"\n disabled={disabled}\n aria-label=\"Select date\"\n type=\"button\"\n >\n <LuCalendar />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"end\" sideOffset={10}>\n <Calendar\n mode=\"single\"\n selected={value}\n month={month}\n onMonthChange={setMonth}\n onSelect={(d) => {\n const formatted = d ? dayjs(d).format('MM/DD/YYYY') : '';\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n onChange?.(d);\n setOpen(false);\n }}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","import { useState } from 'react';\nimport { LuRefreshCcw, LuZoomIn, LuZoomOut } from 'react-icons/lu';\nimport Cropper from 'react-easy-crop';\nimport { Button, Slider } from '../index';\nimport type { UseImageCropper } from './useImageCropper';\nimport { cn } from '@/lib/utils';\n\nexport type ImagePreviewProps = {\n alt: string;\n className?: string;\n containerClassName?: string;\n imagePreview?: string; // optional so we can show skeleton while awaiting URL\n cropper?: UseImageCropper; // when provided, show cropping UI\n};\n\nexport const ImagePreview = ({\n alt,\n className = '',\n containerClassName = '',\n imagePreview = undefined,\n cropper = undefined,\n}: ImagePreviewProps) => {\n const [loaded, setLoaded] = useState(false);\n const showLoader = !imagePreview || !loaded;\n const enableCrop = !!cropper;\n\n return (\n <div className={cn(`flex max-w-[386px] flex-col`, className)}>\n <div className={cn('relative h-60 rounded-md border', containerClassName)}>\n {imagePreview && enableCrop ? (\n <Cropper\n image={imagePreview}\n crop={cropper.crop}\n zoom={cropper.zoom}\n aspect={cropper.aspect}\n objectFit=\"contain\"\n onCropChange={cropper.setCrop}\n onZoomChange={cropper.setZoom}\n onCropComplete={cropper.onCropComplete}\n onMediaLoaded={() => setLoaded(true)}\n showGrid={false}\n />\n ) : (\n imagePreview && (\n <img\n alt={alt}\n className={`m-auto h-full w-full object-contain transition-opacity duration-300 ${loaded ? 'opacity-100' : 'opacity-0'}`}\n src={imagePreview}\n onLoad={() => setLoaded(true)}\n draggable={false}\n />\n )\n )}\n\n {showLoader && (\n <div\n aria-label={imagePreview ? 'Loading image' : 'Awaiting image'}\n className=\"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r\"\n />\n )}\n </div>\n\n {!showLoader && enableCrop && (\n <div className=\"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4\">\n <div className=\"flex w-full items-center gap-3\">\n <Button\n aria-label=\"zoom out\"\n onClick={() => cropper.setZoom(Math.max(cropper.zoom - 0.1, 1))}\n className=\"h-8\"\n variant=\"ghost-icon\"\n >\n <LuZoomOut />\n </Button>\n\n <Slider\n value={[cropper.zoom]}\n min={1}\n max={3}\n step={0.01}\n onValueChange={(v: number[]) => cropper.setZoom(v[0])}\n className=\"w-full sm:flex-50\"\n classNames={{ thumb: 'border-2 border-green-800', range: 'bg-green-900' }}\n />\n\n <Button\n aria-label=\"zoom in\"\n onClick={() => cropper.setZoom(Math.min(cropper.zoom + 0.1, 3))}\n variant=\"ghost-icon\"\n className=\"h-8\"\n >\n <LuZoomIn />\n </Button>\n </div>\n\n <Button onClick={cropper.reset} variant=\"ghost\" className=\"h-8 p-2\">\n <LuRefreshCcw />\n Reset\n </Button>\n </div>\n )}\n </div>\n );\n};\n","import { DateTime, Duration } from 'luxon';\nimport { useMemo } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/v2';\nimport { cn } from '@/lib/utils';\n\nexport type Interval = {\n label: string;\n value: {\n hour: string;\n min: string;\n raw: string;\n formatted: string;\n };\n};\n\ntype Props = {\n startTime?: string;\n endTime?: string;\n interval?: number;\n onChange?: (e: Interval) => void;\n className?: string;\n placeholder?: string;\n size?: 'default' | 'sm';\n portal?: boolean;\n [inputProps: string]: unknown;\n};\n\nconst START_TIME_DEFAULT = '00:00';\nconst END_TIME_DEFAULT = '24:00';\n\nconst isValidTime = (time: string) => {\n const dt = DateTime.fromFormat(time, 'HH:mm');\n return dt.isValid;\n};\n\nexport const TimeSelect = ({\n startTime = START_TIME_DEFAULT,\n endTime = END_TIME_DEFAULT,\n interval = 30,\n onChange = undefined,\n className = '',\n placeholder = 'Select one',\n size = 'default',\n portal = true,\n ...inputProps\n}: Props) => {\n if (!isValidTime(startTime)) {\n console.error(`Invalid startTime: ${startTime}`);\n // eslint-disable-next-line no-param-reassign\n startTime = START_TIME_DEFAULT;\n }\n if (!isValidTime(endTime)) {\n console.error(`Invalid endTime: ${endTime}`);\n // eslint-disable-next-line no-param-reassign\n endTime = END_TIME_DEFAULT;\n }\n\n const intervals = useMemo((): Interval[] => {\n const dtEnd = DateTime.fromFormat(endTime, 'HH:mm');\n const durationInterval = Duration.fromObject({ minutes: interval });\n const res = [];\n let i = DateTime.fromFormat(startTime, 'HH:mm');\n while (i <= dtEnd) {\n let raw = i.toFormat('HH:mm');\n // Avoid duplicate keys for \"00:00\" and \"00:00\" (end of day)\n if (raw === '00:00' && i.equals(dtEnd)) raw = '24:00';\n\n res.push({\n label: i.toFormat('h:mm a'),\n value: {\n hour: i.toFormat('HH'),\n min: i.toFormat('mm'),\n raw,\n formatted: i.toFormat('h:mm a'),\n },\n });\n i = i.plus(durationInterval);\n }\n\n return res;\n }, [startTime, endTime, interval]);\n\n const options = intervals.map((time) => ({\n label: time.label,\n value: time.value.raw,\n }));\n\n const handleOnSelect = (e: unknown) => {\n const interval = intervals.find((time) => time.value.raw === e);\n\n if (!interval) return;\n\n onChange?.(interval);\n };\n\n return (\n <Select onValueChange={handleOnSelect} {...inputProps}>\n <SelectTrigger className={cn('max-w-[240px] md:w-[150px]', className)} size={size}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {options.map((option) => (\n // Note that labels and values here may appear to be duplicates\n // For example, \"00:00\" and \"24:00\" will both have the same value \"00:00\"\n <SelectItem className=\"h-10\" key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n","import * as React from 'react';\nimport { ComponentProps, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport { Calendar, Input, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { InputProps } from '@/v2/input/input';\n\nexport type DatePickerProps = {\n className?: string;\n wrapperClassName?: string;\n value?: Date;\n onChange?: (value: Date | undefined) => void;\n disabled?: boolean;\n // NOTE: Disallow changing this to a range-picker by forcing mode to \"single\" and using value instead of selected\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n placeholder?: string;\n inputProps?: InputProps;\n showCalendarIcon?: boolean;\n};\n\nexport function DatePicker({\n className = '',\n wrapperClassName = '',\n value = undefined,\n onChange = undefined,\n disabled = false,\n calendarProps = undefined,\n placeholder = 'Pick a date',\n inputProps = undefined,\n showCalendarIcon = true,\n}: DatePickerProps & ComponentProps<typeof Calendar>) {\n const [open, setOpen] = useState<boolean>(false);\n\n const handleSelect = (val: Date | undefined) => {\n onChange?.(val);\n setOpen(false);\n };\n\n return (\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger\n className={cn(\n 'focus-visible:ring-ring/50 hover:enabled:border-dark-green focus:enabled:border-dark-green focus-visible:border-dark-green relative flex w-full items-center rounded-md transition-all outline-none focus-within:shadow focus-within:shadow-green-300 focus-visible:ring-[3px] focus:enabled:shadow-green-300',\n wrapperClassName,\n )}\n >\n <Input\n className={cn(showCalendarIcon && 'pl-10', open ? 'border-dark-green' : '', className)}\n value={value ? dayjs(value).format('MM/DD/YYYY') : ''}\n placeholder={placeholder}\n readOnly\n disabled={disabled}\n {...inputProps}\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 </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={value ? dayjs(value).toDate() : undefined}\n onSelect={handleSelect}\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","DatePicker","showCalendarIcon","handleSelect","val","Input"],"mappings":"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","file":"chunk-GFSGQ5JC.cjs","sourcesContent":["import * as React from 'react';\nimport { ComponentProps, useEffect, useRef, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport { Calendar, Button, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { inputVariants } from '../input/input';\n\nfunction maskDate(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 8);\n if (digits.length <= 2) return digits;\n if (digits.length <= 4) return `${digits.slice(0, 2)}/${digits.slice(2)}`;\n return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;\n}\n\nfunction parseDate(value: string): Date | undefined {\n if (value.length !== 10) return undefined;\n const parts = value.split('/');\n if (parts.length !== 3 || parts[2].length !== 4) return undefined;\n const month = parseInt(parts[0], 10);\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n if (Number.isNaN(month) || Number.isNaN(day) || Number.isNaN(year)) return undefined;\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return undefined;\n }\n return date;\n}\n\nexport type DatePickerInputProps = {\n className?: string;\n wrapperClassName?: string;\n value?: Date;\n onChange?: (value: Date | undefined) => void;\n disabled?: boolean;\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n placeholder?: string;\n variant?: 'default' | 'invalid';\n};\n\nexport function DatePickerInput({\n className,\n wrapperClassName,\n value,\n onChange,\n disabled = false,\n calendarProps,\n placeholder = 'MM/DD/YYYY',\n variant,\n}: DatePickerInputProps) {\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState<Date | undefined>(value);\n const [inputValue, setInputValue] = useState<string>(\n value ? dayjs(value).format('MM/DD/YYYY') : '',\n );\n // Track the last value we synced from props to avoid overwriting partial user input\n const lastSyncedRef = useRef(value ? dayjs(value).format('MM/DD/YYYY') : '');\n\n useEffect(() => {\n const formatted = value ? dayjs(value).format('MM/DD/YYYY') : '';\n if (formatted !== lastSyncedRef.current) {\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n if (value) setMonth(value);\n }\n }, [value]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const masked = maskDate(e.target.value);\n setInputValue(masked);\n const parsed = parseDate(masked);\n if (parsed) {\n lastSyncedRef.current = masked;\n onChange?.(parsed);\n } else if (masked === '') {\n lastSyncedRef.current = '';\n onChange?.(undefined);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n }\n if (\n !/[0-9/]/.test(e.key) &&\n !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'Tab'].includes(e.key) &&\n !e.metaKey &&\n !e.ctrlKey\n ) {\n e.preventDefault();\n }\n };\n\n return (\n <div className={cn('relative w-full', wrapperClassName)}>\n <input\n type=\"text\"\n data-slot=\"input\"\n className={cn(inputVariants({ variant }), 'pr-10', className)}\n value={inputValue}\n placeholder={placeholder}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n />\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost-icon\"\n size=\"sm\"\n className=\"absolute top-1/2 right-1 -translate-y-1/2\"\n disabled={disabled}\n aria-label=\"Select date\"\n type=\"button\"\n >\n <LuCalendar />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"end\" sideOffset={10}>\n <Calendar\n mode=\"single\"\n selected={value}\n month={month}\n onMonthChange={setMonth}\n onSelect={(d) => {\n const formatted = d ? dayjs(d).format('MM/DD/YYYY') : '';\n lastSyncedRef.current = formatted;\n setInputValue(formatted);\n onChange?.(d);\n setOpen(false);\n }}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","import { useState } from 'react';\nimport { LuRefreshCcw, LuZoomIn, LuZoomOut } from 'react-icons/lu';\nimport Cropper from 'react-easy-crop';\nimport { Button, Slider } from '../index';\nimport type { UseImageCropper } from './useImageCropper';\nimport { cn } from '@/lib/utils';\n\nexport type ImagePreviewProps = {\n alt: string;\n className?: string;\n containerClassName?: string;\n imagePreview?: string; // optional so we can show skeleton while awaiting URL\n cropper?: UseImageCropper; // when provided, show cropping UI\n};\n\nexport const ImagePreview = ({\n alt,\n className = '',\n containerClassName = '',\n imagePreview = undefined,\n cropper = undefined,\n}: ImagePreviewProps) => {\n const [loaded, setLoaded] = useState(false);\n const showLoader = !imagePreview || !loaded;\n const enableCrop = !!cropper;\n\n return (\n <div className={cn(`flex max-w-[386px] flex-col`, className)}>\n <div className={cn('relative h-60 rounded-md border', containerClassName)}>\n {imagePreview && enableCrop ? (\n <Cropper\n image={imagePreview}\n crop={cropper.crop}\n zoom={cropper.zoom}\n aspect={cropper.aspect}\n objectFit=\"contain\"\n onCropChange={cropper.setCrop}\n onZoomChange={cropper.setZoom}\n onCropComplete={cropper.onCropComplete}\n onMediaLoaded={() => setLoaded(true)}\n showGrid={false}\n />\n ) : (\n imagePreview && (\n <img\n alt={alt}\n className={`m-auto h-full w-full object-contain transition-opacity duration-300 ${loaded ? 'opacity-100' : 'opacity-0'}`}\n src={imagePreview}\n onLoad={() => setLoaded(true)}\n draggable={false}\n />\n )\n )}\n\n {showLoader && (\n <div\n aria-label={imagePreview ? 'Loading image' : 'Awaiting image'}\n className=\"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r\"\n />\n )}\n </div>\n\n {!showLoader && enableCrop && (\n <div className=\"mt-3 flex flex-col items-center justify-between gap-1 px-1 sm:flex-row sm:gap-4\">\n <div className=\"flex w-full items-center gap-3\">\n <Button\n aria-label=\"zoom out\"\n onClick={() => cropper.setZoom(Math.max(cropper.zoom - 0.1, 1))}\n className=\"h-8\"\n variant=\"ghost-icon\"\n >\n <LuZoomOut />\n </Button>\n\n <Slider\n value={[cropper.zoom]}\n min={1}\n max={3}\n step={0.01}\n onValueChange={(v: number[]) => cropper.setZoom(v[0])}\n className=\"w-full sm:flex-50\"\n classNames={{ thumb: 'border-2 border-green-800', range: 'bg-green-900' }}\n />\n\n <Button\n aria-label=\"zoom in\"\n onClick={() => cropper.setZoom(Math.min(cropper.zoom + 0.1, 3))}\n variant=\"ghost-icon\"\n className=\"h-8\"\n >\n <LuZoomIn />\n </Button>\n </div>\n\n <Button onClick={cropper.reset} variant=\"ghost\" className=\"h-8 p-2\">\n <LuRefreshCcw />\n Reset\n </Button>\n </div>\n )}\n </div>\n );\n};\n","import { DateTime, Duration } from 'luxon';\nimport { useMemo } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/v2';\nimport { cn } from '@/lib/utils';\n\nexport type Interval = {\n label: string;\n value: {\n hour: string;\n min: string;\n raw: string;\n formatted: string;\n };\n};\n\ntype Props = {\n startTime?: string;\n endTime?: string;\n interval?: number;\n onChange?: (e: Interval) => void;\n className?: string;\n placeholder?: string;\n size?: 'default' | 'sm';\n portal?: boolean;\n [inputProps: string]: unknown;\n};\n\nconst START_TIME_DEFAULT = '00:00';\nconst END_TIME_DEFAULT = '24:00';\n\nconst isValidTime = (time: string) => {\n const dt = DateTime.fromFormat(time, 'HH:mm');\n return dt.isValid;\n};\n\nexport const TimeSelect = ({\n startTime = START_TIME_DEFAULT,\n endTime = END_TIME_DEFAULT,\n interval = 30,\n onChange = undefined,\n className = '',\n placeholder = 'Select one',\n size = 'default',\n portal = true,\n ...inputProps\n}: Props) => {\n if (!isValidTime(startTime)) {\n console.error(`Invalid startTime: ${startTime}`);\n // eslint-disable-next-line no-param-reassign\n startTime = START_TIME_DEFAULT;\n }\n if (!isValidTime(endTime)) {\n console.error(`Invalid endTime: ${endTime}`);\n // eslint-disable-next-line no-param-reassign\n endTime = END_TIME_DEFAULT;\n }\n\n const intervals = useMemo((): Interval[] => {\n const dtEnd = DateTime.fromFormat(endTime, 'HH:mm');\n const durationInterval = Duration.fromObject({ minutes: interval });\n const res = [];\n let i = DateTime.fromFormat(startTime, 'HH:mm');\n while (i <= dtEnd) {\n let raw = i.toFormat('HH:mm');\n // Avoid duplicate keys for \"00:00\" and \"00:00\" (end of day)\n if (raw === '00:00' && i.equals(dtEnd)) raw = '24:00';\n\n res.push({\n label: i.toFormat('h:mm a'),\n value: {\n hour: i.toFormat('HH'),\n min: i.toFormat('mm'),\n raw,\n formatted: i.toFormat('h:mm a'),\n },\n });\n i = i.plus(durationInterval);\n }\n\n return res;\n }, [startTime, endTime, interval]);\n\n const options = intervals.map((time) => ({\n label: time.label,\n value: time.value.raw,\n }));\n\n const handleOnSelect = (e: unknown) => {\n const interval = intervals.find((time) => time.value.raw === e);\n\n if (!interval) return;\n\n onChange?.(interval);\n };\n\n return (\n <Select onValueChange={handleOnSelect} {...inputProps}>\n <SelectTrigger className={cn('max-w-[240px] md:w-[150px]', className)} size={size}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent position=\"popper\" className=\"max-h-90\" portal={portal}>\n {options.map((option) => (\n // Note that labels and values here may appear to be duplicates\n // For example, \"00:00\" and \"24:00\" will both have the same value \"00:00\"\n <SelectItem className=\"h-10\" key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n};\n\nexport default TimeSelect;\n","import * as React from 'react';\nimport { ComponentProps, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport { Calendar, Input, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { InputProps } from '@/v2/input/input';\n\nexport type DatePickerProps = {\n className?: string;\n wrapperClassName?: string;\n value?: Date;\n onChange?: (value: Date | undefined) => void;\n disabled?: boolean;\n // NOTE: Disallow changing this to a range-picker by forcing mode to \"single\" and using value instead of selected\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n placeholder?: string;\n inputProps?: InputProps;\n showCalendarIcon?: boolean;\n};\n\nexport function DatePicker({\n className = '',\n wrapperClassName = '',\n value = undefined,\n onChange = undefined,\n disabled = false,\n calendarProps = undefined,\n placeholder = 'Pick a date',\n inputProps = undefined,\n showCalendarIcon = true,\n}: DatePickerProps & ComponentProps<typeof Calendar>) {\n const [open, setOpen] = useState<boolean>(false);\n\n const handleSelect = (val: Date | undefined) => {\n onChange?.(val);\n setOpen(false);\n };\n\n return (\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger\n className={cn(\n 'focus-visible:ring-ring/50 hover:enabled:border-dark-green focus:enabled:border-dark-green focus-visible:border-dark-green relative flex w-full items-center rounded-md transition-all outline-none focus-within:shadow focus-within:shadow-green-300 focus-visible:ring-[3px] focus:enabled:shadow-green-300',\n wrapperClassName,\n )}\n >\n <Input\n className={cn(showCalendarIcon && 'pl-10', open ? 'border-dark-green' : '', className)}\n value={value ? dayjs(value).format('MM/DD/YYYY') : ''}\n placeholder={placeholder}\n readOnly\n disabled={disabled}\n {...inputProps}\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 </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={value ? dayjs(value).toDate() : undefined}\n onSelect={handleSelect}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n );\n}\n"]}
@@ -1,2 +1,2 @@
1
- import {a}from'./chunk-YTIIAU4W.js';import {jsx}from'react/jsx-runtime';function s({className:a$1,size:t="default",...d}){return jsx("div",{"data-slot":"card","data-size":t,className:a("ring-foreground/10 bg-card text-card-foreground group/card flex flex-col gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 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-xl *:[img:last-child]:rounded-b-xl",a$1),...d})}function n({className:a$1,hideHeaderDivider:t=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-xl border-b 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",t&&"border-none [.border-none]:pb-0",a$1),...d})}function i({className:a$1,...t}){return jsx("div",{"data-slot":"card-title",className:a("text-base leading-snug font-bold group-data-[size=sm]/card:text-sm",a$1),...t})}function c({className:a$1,...t}){return jsx("div",{"data-slot":"card-description",className:a("text-muted-foreground text-sm",a$1),...t})}function l({className:a$1,...t}){return jsx("div",{"data-slot":"card-action",className:a("col-start-2 row-start-1 self-start justify-self-end",a$1),...t})}function p({className:a$1,...t}){return jsx("div",{"data-slot":"card-content",className:a("px-4 group-data-[size=sm]/card:px-3",a$1),...t})}function u({className:a$1,...t}){return jsx("div",{"data-slot":"card-footer",className:a("bg-muted/50 flex items-center rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3",a$1),...t})}export{s as a,n as b,i as c,c as d,l as e,p as f,u as g};//# sourceMappingURL=chunk-2RBS6TFZ.js.map
2
- //# sourceMappingURL=chunk-2RBS6TFZ.js.map
1
+ import {a}from'./chunk-YTIIAU4W.js';import {jsx}from'react/jsx-runtime';function s({className:a$1,size:t="default",...d}){return jsx("div",{"data-slot":"card","data-size":t,className:a("ring-foreground/10 bg-card text-card-foreground group/card flex flex-col gap-4 overflow-hidden rounded-lg py-4 text-sm ring-1 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",a$1),...d})}function n({className:a$1,hideHeaderDivider:t=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 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",t&&"border-none [.border-none]:pb-0",a$1),...d})}function i({className:a$1,...t}){return jsx("div",{"data-slot":"card-title",className:a("text-base leading-snug font-bold group-data-[size=sm]/card:text-sm",a$1),...t})}function c({className:a$1,...t}){return jsx("div",{"data-slot":"card-description",className:a("text-muted-foreground text-sm",a$1),...t})}function l({className:a$1,...t}){return jsx("div",{"data-slot":"card-action",className:a("col-start-2 row-start-1 self-start justify-self-end",a$1),...t})}function p({className:a$1,...t}){return jsx("div",{"data-slot":"card-content",className:a("px-4 group-data-[size=sm]/card:px-3",a$1),...t})}function u({className:a$1,...t}){return jsx("div",{"data-slot":"card-footer",className:a("bg-muted/50 flex items-center rounded-b-lg border-t p-4 group-data-[size=sm]/card:p-3",a$1),...t})}export{s as a,n as b,i as c,c as d,l as e,p as f,u as g};//# sourceMappingURL=chunk-GUGAWHJX.js.map
2
+ //# sourceMappingURL=chunk-GUGAWHJX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/v2/card/card.tsx"],"names":["Card","className","size","props","jsx","cn","CardHeader","hideHeaderDivider","CardTitle","CardDescription","CardAction","CardContent","CardFooter"],"mappings":"wEAIA,SAASA,CAAAA,CAAK,CACZ,UAAAC,GAAAA,CACA,IAAA,CAAAC,CAAAA,CAAO,SAAA,CACP,GAAGC,CACL,CAAA,CAA8D,CAC5D,OACEC,GAAAA,CAAC,OACC,WAAA,CAAU,MAAA,CACV,WAAA,CAAWF,CAAAA,CACX,UAAWG,CAAAA,CACT,sVAAA,CACAJ,GACF,CAAA,CACC,GAAGE,EACN,CAEJ,CAEA,SAASG,CAAAA,CAAW,CAClB,SAAA,CAAAL,GAAAA,CACA,kBAAAM,CAAAA,CAAoB,KAAA,CACpB,GAAGJ,CACL,CAAA,CAAkE,CAChE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,cACV,SAAA,CAAWC,CAAAA,CACT,+SACAE,CAAAA,EAAqB,iCAAA,CACrBN,GACF,CAAA,CACC,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASK,CAAAA,CAAU,CAAE,SAAA,CAAAP,GAAAA,CAAW,GAAGE,CAAM,EAAgC,CACvE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,aACV,SAAA,CAAWC,CAAAA,CACT,oEAAA,CACAJ,GACF,EACC,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASM,EAAgB,CAAE,SAAA,CAAAR,GAAAA,CAAW,GAAGE,CAAM,CAAA,CAAgC,CAC7E,OACEC,GAAAA,CAAC,KAAA,CAAA,CACC,YAAU,kBAAA,CACV,SAAA,CAAWC,CAAAA,CAAG,+BAAA,CAAiCJ,GAAS,CAAA,CACvD,GAAGE,EACN,CAEJ,CAEA,SAASO,CAAAA,CAAW,CAAE,SAAA,CAAAT,GAAAA,CAAW,GAAGE,CAAM,CAAA,CAAgC,CACxE,OACEC,GAAAA,CAAC,OACC,WAAA,CAAU,aAAA,CACV,SAAA,CAAWC,CAAAA,CAAG,sDAAuDJ,GAAS,CAAA,CAC7E,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASQ,CAAAA,CAAY,CAAE,SAAA,CAAAV,IAAW,GAAGE,CAAM,EAAgC,CACzE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,cAAA,CACV,SAAA,CAAWC,EAAG,qCAAA,CAAuCJ,GAAS,EAC7D,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASS,CAAAA,CAAW,CAAE,UAAAX,GAAAA,CAAW,GAAGE,CAAM,CAAA,CAAgC,CACxE,OACEC,GAAAA,CAAC,KAAA,CAAA,CACC,WAAA,CAAU,aAAA,CACV,UAAWC,CAAAA,CACT,uFAAA,CACAJ,GACF,CAAA,CACC,GAAGE,EACN,CAEJ","file":"chunk-2RBS6TFZ.js","sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Card({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<'div'> & { size?: 'default' | 'sm' }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n 'ring-foreground/10 bg-card text-card-foreground group/card flex flex-col gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 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-xl *:[img:last-child]:rounded-b-xl',\n className,\n )}\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-xl border-b 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-xl border-t 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
+ {"version":3,"sources":["../src/v2/card/card.tsx"],"names":["Card","className","size","props","jsx","cn","CardHeader","hideHeaderDivider","CardTitle","CardDescription","CardAction","CardContent","CardFooter"],"mappings":"wEAIA,SAASA,CAAAA,CAAK,CACZ,UAAAC,GAAAA,CACA,IAAA,CAAAC,CAAAA,CAAO,SAAA,CACP,GAAGC,CACL,CAAA,CAA8D,CAC5D,OACEC,GAAAA,CAAC,OACC,WAAA,CAAU,MAAA,CACV,WAAA,CAAWF,CAAAA,CACX,UAAWG,CAAAA,CACT,sVAAA,CACAJ,GACF,CAAA,CACC,GAAGE,EACN,CAEJ,CAEA,SAASG,CAAAA,CAAW,CAClB,SAAA,CAAAL,GAAAA,CACA,kBAAAM,CAAAA,CAAoB,KAAA,CACpB,GAAGJ,CACL,CAAA,CAAkE,CAChE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,cACV,SAAA,CAAWC,CAAAA,CACT,+SACAE,CAAAA,EAAqB,iCAAA,CACrBN,GACF,CAAA,CACC,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASK,CAAAA,CAAU,CAAE,SAAA,CAAAP,GAAAA,CAAW,GAAGE,CAAM,EAAgC,CACvE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,aACV,SAAA,CAAWC,CAAAA,CACT,oEAAA,CACAJ,GACF,EACC,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASM,EAAgB,CAAE,SAAA,CAAAR,GAAAA,CAAW,GAAGE,CAAM,CAAA,CAAgC,CAC7E,OACEC,GAAAA,CAAC,KAAA,CAAA,CACC,YAAU,kBAAA,CACV,SAAA,CAAWC,CAAAA,CAAG,+BAAA,CAAiCJ,GAAS,CAAA,CACvD,GAAGE,EACN,CAEJ,CAEA,SAASO,CAAAA,CAAW,CAAE,SAAA,CAAAT,GAAAA,CAAW,GAAGE,CAAM,CAAA,CAAgC,CACxE,OACEC,GAAAA,CAAC,OACC,WAAA,CAAU,aAAA,CACV,SAAA,CAAWC,CAAAA,CAAG,sDAAuDJ,GAAS,CAAA,CAC7E,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASQ,CAAAA,CAAY,CAAE,SAAA,CAAAV,IAAW,GAAGE,CAAM,EAAgC,CACzE,OACEC,IAAC,KAAA,CAAA,CACC,WAAA,CAAU,cAAA,CACV,SAAA,CAAWC,EAAG,qCAAA,CAAuCJ,GAAS,EAC7D,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASS,CAAAA,CAAW,CAAE,UAAAX,GAAAA,CAAW,GAAGE,CAAM,CAAA,CAAgC,CACxE,OACEC,GAAAA,CAAC,KAAA,CAAA,CACC,WAAA,CAAU,aAAA,CACV,UAAWC,CAAAA,CACT,uFAAA,CACAJ,GACF,CAAA,CACC,GAAGE,EACN,CAEJ","file":"chunk-GUGAWHJX.js","sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Card({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<'div'> & { size?: 'default' | 'sm' }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n 'ring-foreground/10 bg-card text-card-foreground group/card flex flex-col gap-4 overflow-hidden rounded-lg py-4 text-sm ring-1 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 className,\n )}\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 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 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"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkOCM6L6SZ_cjs=require('./chunk-OCM6L6SZ.cjs'),chunkQRO22BPZ_cjs=require('./chunk-QRO22BPZ.cjs'),reactDropzone=require('react-dropzone'),lu=require('react-icons/lu'),jsxRuntime=require('react/jsx-runtime');var P={"image/jpeg":[".jpeg",".jpg"],"image/png":[".png"],"image/avif":[".avif"],"image/heic":[".heic"],"image/webp":[".webp"],"application/pdf":[".pdf"],"text/csv":[".csv"],"application/xml":[".xml",".xlsx"],"application/msword":[".doc"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":[".docx"]},A=[],F={},j=()=>null,L=({accept:m=P,files:n=A,maxFiles:o=5,maxSizeInMb:l=10,onDrop:f=j,className:g=void 0,wrapperClassName:u=void 0,extraInputProps:c=F,isLoading:d=false,icon:b=void 0,title:x=void 0,subtitle:v=void 0})=>{let i=n.length>=o,{getRootProps:y,getInputProps:h,isDragActive:p}=reactDropzone.useDropzone({maxFiles:o,multiple:o>1,onDrop:f,maxSize:l*1024*1024,accept:m,onDropRejected:r=>{r.length>0&&r[0].errors[0].code==="too-many-files"?chunkOCM6L6SZ_cjs.a.error(`Too many files. Please upload up to ${o} files at a time.`):r.length>0&&r[0].errors[0].code==="file-too-large"?chunkOCM6L6SZ_cjs.a.error(`File is too large. Please upload files smaller than ${l} MB.`):chunkOCM6L6SZ_cjs.a.error("File type not supported");},disabled:n.length>=o}),N={...h(),...c,disabled:d||c.disabled};return jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("flex min-h-48 flex-col gap-4 hover:cursor-pointer",p&&"border-grey-700 opacity-75",i&&"hover:cursor-not-allowed",u),...y(),children:jsxRuntime.jsx("div",{className:chunkQRO22BPZ_cjs.a("bg-grey-100 border-grey-300 flex w-full flex-col items-center justify-center rounded-lg border-2 border-dashed py-10 text-center",i&&!p&&"border-red-300",g),children:i?jsxRuntime.jsxs("div",{className:"text flex flex-col items-center",children:[jsxRuntime.jsx(lu.LuFileWarning,{className:"h-8 w-8 text-red-500"}),jsxRuntime.jsxs("div",{className:"strong mt-4",children:["Maximum ",o," file limit reached"]})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("input",{...N}),d?jsxRuntime.jsx("div",{className:"h-8 w-8 animate-spin rounded-full border-4 border-gray-300 border-t-gray-700"}):b??jsxRuntime.jsx(lu.LuUpload,{className:"h-8 w-8 text-gray-700"}),jsxRuntime.jsxs("div",{className:"text-grey-700 mt-4 flex flex-col gap-1",children:[x??jsxRuntime.jsx("p",{className:"text-body-lg",children:"Drag an image or click to browse"}),v??jsxRuntime.jsxs("p",{className:"text-body-sm",children:[l," MB max file size"]})]})]})})})};exports.a=L;//# sourceMappingURL=chunk-MQIWR2UP.cjs.map
2
+ //# sourceMappingURL=chunk-MQIWR2UP.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/v2/dropzone/dropzone.tsx"],"names":["defaultAcceptedFileTypes","stableArray","stableObject","stableFunc","Dropzone","accept","files","maxFiles","maxSizeInMb","onDrop","className","wrapperClassName","extraInputProps","isLoading","icon","title","subtitle","overMaxFileLimit","getRootProps","getInputProps","isDragActive","useDropzone","errorList","toast","inputProps","jsx","cn","jsxs","LuFileWarning","Fragment","LuUpload"],"mappings":"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","file":"chunk-MQIWR2UP.cjs","sourcesContent":["import { Accept, useDropzone } from 'react-dropzone';\nimport { LuFileWarning, LuUpload } from 'react-icons/lu';\nimport { toast } from '@/v2/toast/toaster';\nimport { cn } from '@/lib/utils';\n\nconst defaultAcceptedFileTypes = {\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'image/png': ['.png'],\n 'image/avif': ['.avif'],\n 'image/heic': ['.heic'],\n 'image/webp': ['.webp'],\n 'application/pdf': ['.pdf'],\n 'text/csv': ['.csv'],\n 'application/xml': ['.xml', '.xlsx'],\n 'application/msword': ['.doc'],\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ['.docx'],\n};\nconst stableArray: File[] = [];\nconst stableObject = {};\nconst stableFunc = () => null;\n\nexport type DropzoneProps = {\n accept?: Accept;\n files?: File[];\n maxFiles?: number;\n maxSizeInMb?: number;\n onDrop?: (acceptedFiles: File[]) => void;\n className?: string;\n wrapperClassName?: string;\n extraInputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n isLoading?: boolean;\n icon?: React.ReactNode;\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n};\n\nexport const Dropzone = ({\n accept = defaultAcceptedFileTypes,\n files = stableArray,\n maxFiles = 5,\n maxSizeInMb = 10,\n onDrop = stableFunc,\n className = undefined,\n wrapperClassName = undefined,\n extraInputProps = stableObject,\n isLoading = false,\n icon = undefined,\n title = undefined,\n subtitle = undefined,\n}: DropzoneProps) => {\n const overMaxFileLimit = files.length >= maxFiles;\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n maxFiles,\n multiple: maxFiles > 1,\n onDrop,\n maxSize: maxSizeInMb * 1024 * 1024,\n accept,\n onDropRejected: (errorList) => {\n if (errorList.length > 0 && errorList[0].errors[0].code === 'too-many-files') {\n toast.error(`Too many files. Please upload up to ${maxFiles} files at a time.`);\n } else if (errorList.length > 0 && errorList[0].errors[0].code === 'file-too-large') {\n toast.error(`File is too large. Please upload files smaller than ${maxSizeInMb} MB.`);\n } else {\n toast.error('File type not supported');\n }\n },\n disabled: files.length >= maxFiles,\n });\n\n const inputProps = {\n ...getInputProps(),\n ...extraInputProps,\n disabled: isLoading || extraInputProps.disabled,\n };\n\n return (\n <div\n className={cn(\n 'flex min-h-48 flex-col gap-4 hover:cursor-pointer',\n isDragActive && 'border-grey-700 opacity-75',\n overMaxFileLimit && 'hover:cursor-not-allowed',\n wrapperClassName,\n )}\n {...getRootProps()}\n >\n <div\n className={cn(\n 'bg-grey-100 border-grey-300 flex w-full flex-col items-center justify-center rounded-lg border-2 border-dashed py-10 text-center',\n overMaxFileLimit && !isDragActive && 'border-red-300',\n className,\n )}\n >\n {overMaxFileLimit ? (\n <div className=\"text flex flex-col items-center\">\n <LuFileWarning className=\"h-8 w-8 text-red-500\" />\n <div className=\"strong mt-4\">Maximum {maxFiles} file limit reached</div>\n </div>\n ) : (\n <>\n <input {...inputProps} />\n {isLoading ? (\n <div className=\"h-8 w-8 animate-spin rounded-full border-4 border-gray-300 border-t-gray-700\" />\n ) : (\n (icon ?? <LuUpload className=\"h-8 w-8 text-gray-700\" />)\n )}\n <div className=\"text-grey-700 mt-4 flex flex-col gap-1\">\n {title ?? <p className=\"text-body-lg\">Drag an image or click to browse</p>}\n {subtitle ?? <p className=\"text-body-sm\">{maxSizeInMb} MB max file size</p>}\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\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-BKEHRG63.js';import {b as b$1}from'./chunk-YCZSXQP4.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 N from'dayjs';import {jsxs,jsx}from'react/jsx-runtime';import ae from'react-easy-crop';import {DateTime,Duration}from'luxon';function Q(r){let o=r.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 W(r){if(r.length!==10)return;let o=r.split("/");if(o.length!==3||o[2].length!==4)return;let t=parseInt(o[0],10),n=parseInt(o[1],10),e=parseInt(o[2],10);if(Number.isNaN(t)||Number.isNaN(n)||Number.isNaN(e))return;let l=new Date(e,t-1,n);if(!(l.getFullYear()!==e||l.getMonth()!==t-1||l.getDate()!==n))return l}function ee({className:r,wrapperClassName:o,value:t,onChange:n,disabled:e=false,calendarProps:l,placeholder:f="MM/DD/YYYY",variant:g}){let[u,p]=useState(false),[v,b$3]=useState(t),[i,x]=useState(t?N(t).format("MM/DD/YYYY"):""),d=useRef(t?N(t).format("MM/DD/YYYY"):"");useEffect(()=>{let a=t?N(t).format("MM/DD/YYYY"):"";a!==d.current&&(d.current=a,x(a),t&&b$3(t));},[t]);let m=a=>{let C=Q(a.target.value);x(C);let z=W(C);z?(d.current=C,n?.(z)):C===""&&(d.current="",n?.(void 0));},w=a=>{a.key==="ArrowDown"&&(a.preventDefault(),p(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:g}),"pr-10",r),value:i,placeholder:f,onChange:m,onKeyDown:w,disabled:e}),jsxs(a$2,{open:!e&&u,onOpenChange:p,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:e,"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:t,month:v,onMonthChange:b$3,onSelect:a=>{let C=a?N(a).format("MM/DD/YYYY"):"";d.current=C,x(C),n?.(a),p(false);},...l})})]})]})}var ie=({alt:r,className:o="",containerClassName:t="",imagePreview:n=void 0,cropper:e=void 0})=>{let[l,f]=useState(false),g=!n||!l,u=!!e;return jsxs("div",{className:a("flex max-w-[386px] flex-col",o),children:[jsxs("div",{className:a("relative h-60 rounded-md border",t),children:[n&&u?jsx(ae,{image:n,crop:e.crop,zoom:e.zoom,aspect:e.aspect,objectFit:"contain",onCropChange:e.setCrop,onZoomChange:e.setZoom,onCropComplete:e.onCropComplete,onMediaLoaded:()=>f(true),showGrid:false}):n&&jsx("img",{alt:r,className:`m-auto h-full w-full object-contain transition-opacity duration-300 ${l?"opacity-100":"opacity-0"}`,src:n,onLoad:()=>f(true),draggable:false}),g&&jsx("div",{"aria-label":n?"Loading image":"Awaiting image",className:"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r"})]}),!g&&u&&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:()=>e.setZoom(Math.max(e.zoom-.1,1)),className:"h-8",variant:"ghost-icon",children:jsx(LuZoomOut,{})}),jsx(a$3,{value:[e.zoom],min:1,max:3,step:.01,onValueChange:p=>e.setZoom(p[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:()=>e.setZoom(Math.min(e.zoom+.1,3)),variant:"ghost-icon",className:"h-8",children:jsx(LuZoomIn,{})})]}),jsxs(b$1,{onClick:e.reset,variant:"ghost",className:"h-8 p-2",children:[jsx(LuRefreshCcw,{}),"Reset"]})]})]})};var U="00:00",$="24:00",Z=r=>DateTime.fromFormat(r,"HH:mm").isValid,K=({startTime:r=U,endTime:o=$,interval:t=30,onChange:n=void 0,className:e="",placeholder:l="Select one",size:f="default",portal:g$1=true,...u})=>{Z(r)||(console.error(`Invalid startTime: ${r}`),r=U),Z(o)||(console.error(`Invalid endTime: ${o}`),o=$);let p=useMemo(()=>{let i=DateTime.fromFormat(o,"HH:mm"),x=Duration.fromObject({minutes:t}),d=[],m=DateTime.fromFormat(r,"HH:mm");for(;m<=i;){let w=m.toFormat("HH:mm");w==="00:00"&&m.equals(i)&&(w="24:00"),d.push({label:m.toFormat("h:mm a"),value:{hour:m.toFormat("HH"),min:m.toFormat("mm"),raw:w,formatted:m.toFormat("h:mm a")}}),m=m.plus(x);}return d},[r,o,t]),v=p.map(i=>({label:i.label,value:i.value.raw}));return jsxs(a$4,{onValueChange:i=>{let x=p.find(d=>d.value.raw===i);x&&n?.(x);},...u,children:[jsx(d,{className:a("max-w-[240px] md:w-[150px]",e),size:f,children:jsx(c$1,{placeholder:l})}),jsx(g,{position:"popper",className:"max-h-90",portal:g$1,children:v.map(i$1=>jsx(i,{className:"h-10",value:i$1.value,children:i$1.label},i$1.value))})]})},Ye=K;function me({className:r="",wrapperClassName:o="",value:t=void 0,onChange:n=void 0,disabled:e=false,calendarProps:l=void 0,placeholder:f="Pick a date",inputProps:g=void 0,showCalendarIcon:u=true}){let[p,v]=useState(false),b$1=i=>{n?.(i),v(false);};return jsxs(a$2,{open:!e&&p,onOpenChange:v,children:[jsxs(b,{className:a("focus-visible:ring-ring/50 hover:enabled:border-dark-green focus:enabled:border-dark-green focus-visible:border-dark-green relative flex w-full items-center rounded-md transition-all outline-none focus-within:shadow focus-within:shadow-green-300 focus-visible:ring-[3px] focus:enabled:shadow-green-300",o),children:[jsx(b$3,{className:a(u&&"pl-10",p?"border-dark-green":"",r),value:t?N(t).format("MM/DD/YYYY"):"",placeholder:f,readOnly:true,disabled:e,...g}),u&&jsx("div",{className:a("absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2",e?"text-gray-400":"cursor-pointer text-black"),children:jsx(LuCalendar,{size:16})})]}),jsx(c,{className:"w-auto overflow-hidden p-0",align:"start",children:jsx(b$2,{mode:"single",selected:t?N(t).toDate():void 0,onSelect:b$1,...l})})]})}export{me as a,ee as b,ie as c,K as d,Ye as e};//# sourceMappingURL=chunk-JYIWRQFD.js.map
2
- //# sourceMappingURL=chunk-JYIWRQFD.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-BKEHRG63.js';import {b as b$1}from'./chunk-YCZSXQP4.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 N from'dayjs';import {jsxs,jsx}from'react/jsx-runtime';import ae from'react-easy-crop';import {DateTime,Duration}from'luxon';function Q(r){let o=r.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 W(r){if(r.length!==10)return;let o=r.split("/");if(o.length!==3||o[2].length!==4)return;let t=parseInt(o[0],10),n=parseInt(o[1],10),e=parseInt(o[2],10);if(Number.isNaN(t)||Number.isNaN(n)||Number.isNaN(e))return;let s=new Date(e,t-1,n);if(!(s.getFullYear()!==e||s.getMonth()!==t-1||s.getDate()!==n))return s}function ee({className:r,wrapperClassName:o,value:t,onChange:n,disabled:e=false,calendarProps:s,placeholder:f="MM/DD/YYYY",variant:g}){let[u,p]=useState(false),[v,b$3]=useState(t),[i,x]=useState(t?N(t).format("MM/DD/YYYY"):""),d=useRef(t?N(t).format("MM/DD/YYYY"):"");useEffect(()=>{let a=t?N(t).format("MM/DD/YYYY"):"";a!==d.current&&(d.current=a,x(a),t&&b$3(t));},[t]);let m=a=>{let C=Q(a.target.value);x(C);let z=W(C);z?(d.current=C,n?.(z)):C===""&&(d.current="",n?.(void 0));},w=a=>{a.key==="ArrowDown"&&(a.preventDefault(),p(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:g}),"pr-10",r),value:i,placeholder:f,onChange:m,onKeyDown:w,disabled:e}),jsxs(a$2,{open:!e&&u,onOpenChange:p,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:e,"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:t,month:v,onMonthChange:b$3,onSelect:a=>{let C=a?N(a).format("MM/DD/YYYY"):"";d.current=C,x(C),n?.(a),p(false);},...s})})]})]})}var ie=({alt:r,className:o="",containerClassName:t="",imagePreview:n=void 0,cropper:e=void 0})=>{let[s,f]=useState(false),g=!n||!s,u=!!e;return jsxs("div",{className:a("flex max-w-[386px] flex-col",o),children:[jsxs("div",{className:a("relative h-60 rounded-md border",t),children:[n&&u?jsx(ae,{image:n,crop:e.crop,zoom:e.zoom,aspect:e.aspect,objectFit:"contain",onCropChange:e.setCrop,onZoomChange:e.setZoom,onCropComplete:e.onCropComplete,onMediaLoaded:()=>f(true),showGrid:false}):n&&jsx("img",{alt:r,className:`m-auto h-full w-full object-contain transition-opacity duration-300 ${s?"opacity-100":"opacity-0"}`,src:n,onLoad:()=>f(true),draggable:false}),g&&jsx("div",{"aria-label":n?"Loading image":"Awaiting image",className:"from-grey-300 to-grey-300 absolute inset-0 animate-pulse bg-gradient-to-r"})]}),!g&&u&&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:()=>e.setZoom(Math.max(e.zoom-.1,1)),className:"h-8",variant:"ghost-icon",children:jsx(LuZoomOut,{})}),jsx(a$3,{value:[e.zoom],min:1,max:3,step:.01,onValueChange:p=>e.setZoom(p[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:()=>e.setZoom(Math.min(e.zoom+.1,3)),variant:"ghost-icon",className:"h-8",children:jsx(LuZoomIn,{})})]}),jsxs(b$1,{onClick:e.reset,variant:"ghost",className:"h-8 p-2",children:[jsx(LuRefreshCcw,{}),"Reset"]})]})]})};var U="00:00",$="24:00",Z=r=>DateTime.fromFormat(r,"HH:mm").isValid,K=({startTime:r=U,endTime:o=$,interval:t=30,onChange:n=void 0,className:e="",placeholder:s="Select one",size:f="default",portal:g$1=true,...u})=>{Z(r)||(console.error(`Invalid startTime: ${r}`),r=U),Z(o)||(console.error(`Invalid endTime: ${o}`),o=$);let p=useMemo(()=>{let i=DateTime.fromFormat(o,"HH:mm"),x=Duration.fromObject({minutes:t}),d=[],m=DateTime.fromFormat(r,"HH:mm");for(;m<=i;){let w=m.toFormat("HH:mm");w==="00:00"&&m.equals(i)&&(w="24:00"),d.push({label:m.toFormat("h:mm a"),value:{hour:m.toFormat("HH"),min:m.toFormat("mm"),raw:w,formatted:m.toFormat("h:mm a")}}),m=m.plus(x);}return d},[r,o,t]),v=p.map(i=>({label:i.label,value:i.value.raw}));return jsxs(a$4,{onValueChange:i=>{let x=p.find(d=>d.value.raw===i);x&&n?.(x);},...u,children:[jsx(d,{className:a("max-w-[240px] md:w-[150px]",e),size:f,children:jsx(c$1,{placeholder:s})}),jsx(g,{position:"popper",className:"max-h-90",portal:g$1,children:v.map(i$1=>jsx(i,{className:"h-10",value:i$1.value,children:i$1.label},i$1.value))})]})},Ye=K;function me({className:r="",wrapperClassName:o="",value:t=void 0,onChange:n=void 0,disabled:e=false,calendarProps:s=void 0,placeholder:f="Pick a date",inputProps:g=void 0,showCalendarIcon:u=true}){let[p,v]=useState(false),b$1=i=>{n?.(i),v(false);};return jsxs(a$2,{open:!e&&p,onOpenChange:v,children:[jsxs(b,{className:a("focus-visible:ring-ring/50 hover:enabled:border-dark-green focus:enabled:border-dark-green focus-visible:border-dark-green relative flex w-full items-center rounded-md transition-all outline-none focus-within:shadow focus-within:shadow-green-300 focus-visible:ring-[3px] focus:enabled:shadow-green-300",o),children:[jsx(b$3,{className:a(u&&"pl-10",p?"border-dark-green":"",r),value:t?N(t).format("MM/DD/YYYY"):"",placeholder:f,readOnly:true,disabled:e,...g}),u&&jsx("div",{className:a("absolute top-1/2 left-4 h-4 w-4 -translate-y-1/2",e?"text-gray-400":"cursor-pointer text-black"),children:jsx(LuCalendar,{size:16})})]}),jsx(c,{className:"w-auto overflow-hidden p-0",align:"start",children:jsx(b$2,{mode:"single",selected:t?N(t).toDate():void 0,onSelect:b$1,...s})})]})}export{me as a,ee as b,ie as c,K as d,Ye as e};//# sourceMappingURL=chunk-T6EQRPW6.js.map
2
+ //# sourceMappingURL=chunk-T6EQRPW6.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","DatePicker","showCalendarIcon","handleSelect","val","Input"],"mappings":"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","file":"chunk-JYIWRQFD.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 * as React from 'react';\nimport { ComponentProps, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport { Calendar, Input, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { InputProps } from '@/v2/input/input';\n\nexport type DatePickerProps = {\n className?: string;\n wrapperClassName?: string;\n value?: Date;\n onChange?: (value: Date | undefined) => void;\n disabled?: boolean;\n // NOTE: Disallow changing this to a range-picker by forcing mode to \"single\" and using value instead of selected\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n placeholder?: string;\n inputProps?: InputProps;\n showCalendarIcon?: boolean;\n};\n\nexport function DatePicker({\n className = '',\n wrapperClassName = '',\n value = undefined,\n onChange = undefined,\n disabled = false,\n calendarProps = undefined,\n placeholder = 'Pick a date',\n inputProps = undefined,\n showCalendarIcon = true,\n}: DatePickerProps & ComponentProps<typeof Calendar>) {\n const [open, setOpen] = useState<boolean>(false);\n\n const handleSelect = (val: Date | undefined) => {\n onChange?.(val);\n setOpen(false);\n };\n\n return (\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger\n className={cn(\n 'focus-visible:ring-ring/50 hover:enabled:border-dark-green focus:enabled:border-dark-green focus-visible:border-dark-green relative flex w-full items-center rounded-md transition-all outline-none focus-within:shadow focus-within:shadow-green-300 focus-visible:ring-[3px] focus:enabled:shadow-green-300',\n wrapperClassName,\n )}\n >\n <Input\n className={cn(showCalendarIcon && 'pl-10', open ? 'border-dark-green' : '', className)}\n value={value ? dayjs(value).format('MM/DD/YYYY') : ''}\n placeholder={placeholder}\n readOnly\n disabled={disabled}\n {...inputProps}\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 </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={value ? dayjs(value).toDate() : undefined}\n onSelect={handleSelect}\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","DatePicker","showCalendarIcon","handleSelect","val","Input"],"mappings":"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","file":"chunk-T6EQRPW6.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 * as React from 'react';\nimport { ComponentProps, useState } from 'react';\nimport { LuCalendar } from 'react-icons/lu';\nimport dayjs from 'dayjs';\nimport { Calendar, Input, Popover, PopoverContent, PopoverTrigger } from '@/v2';\nimport { cn } from '@/lib/utils';\nimport { InputProps } from '@/v2/input/input';\n\nexport type DatePickerProps = {\n className?: string;\n wrapperClassName?: string;\n value?: Date;\n onChange?: (value: Date | undefined) => void;\n disabled?: boolean;\n // NOTE: Disallow changing this to a range-picker by forcing mode to \"single\" and using value instead of selected\n calendarProps?: Omit<ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect'>;\n placeholder?: string;\n inputProps?: InputProps;\n showCalendarIcon?: boolean;\n};\n\nexport function DatePicker({\n className = '',\n wrapperClassName = '',\n value = undefined,\n onChange = undefined,\n disabled = false,\n calendarProps = undefined,\n placeholder = 'Pick a date',\n inputProps = undefined,\n showCalendarIcon = true,\n}: DatePickerProps & ComponentProps<typeof Calendar>) {\n const [open, setOpen] = useState<boolean>(false);\n\n const handleSelect = (val: Date | undefined) => {\n onChange?.(val);\n setOpen(false);\n };\n\n return (\n <Popover open={!disabled && open} onOpenChange={setOpen}>\n <PopoverTrigger\n className={cn(\n 'focus-visible:ring-ring/50 hover:enabled:border-dark-green focus:enabled:border-dark-green focus-visible:border-dark-green relative flex w-full items-center rounded-md transition-all outline-none focus-within:shadow focus-within:shadow-green-300 focus-visible:ring-[3px] focus:enabled:shadow-green-300',\n wrapperClassName,\n )}\n >\n <Input\n className={cn(showCalendarIcon && 'pl-10', open ? 'border-dark-green' : '', className)}\n value={value ? dayjs(value).format('MM/DD/YYYY') : ''}\n placeholder={placeholder}\n readOnly\n disabled={disabled}\n {...inputProps}\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 </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={value ? dayjs(value).toDate() : undefined}\n onSelect={handleSelect}\n {...calendarProps}\n />\n </PopoverContent>\n </Popover>\n );\n}\n"]}