@xploreu/components 0.4.31 → 0.4.32

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 (43) hide show
  1. package/dist/chunk-CLHWA46Z.js +2 -0
  2. package/dist/chunk-CLHWA46Z.js.map +1 -0
  3. package/dist/{chunk-77T5FOYW.js → chunk-ESR5LKGM.js} +2 -2
  4. package/dist/{chunk-77T5FOYW.js.map → chunk-ESR5LKGM.js.map} +1 -1
  5. package/dist/chunk-JH5Z2FR6.js +2 -0
  6. package/dist/chunk-JH5Z2FR6.js.map +1 -0
  7. package/dist/{chunk-EE5QQGMX.js → chunk-JSAE42ES.js} +2 -2
  8. package/dist/{chunk-EE5QQGMX.js.map → chunk-JSAE42ES.js.map} +1 -1
  9. package/dist/{chunk-3QGG35QR.js → chunk-K4MWSMUN.js} +2 -2
  10. package/dist/{chunk-3QGG35QR.js.map → chunk-K4MWSMUN.js.map} +1 -1
  11. package/dist/{chunk-AVJU2H5V.js → chunk-MESDC2EA.js} +2 -2
  12. package/dist/{chunk-AVJU2H5V.js.map → chunk-MESDC2EA.js.map} +1 -1
  13. package/dist/chunk-SG67F45R.js +2 -0
  14. package/dist/chunk-SG67F45R.js.map +1 -0
  15. package/dist/chunk-WYVGUIHL.js +2 -0
  16. package/dist/{chunk-RBLL355H.js.map → chunk-WYVGUIHL.js.map} +1 -1
  17. package/dist/composites/combobox-chip-outside.js +1 -1
  18. package/dist/composites/index.js +1 -1
  19. package/dist/composites/profile-avatar.d.ts +1 -1
  20. package/dist/primitives/alert-dialog.js +1 -1
  21. package/dist/primitives/index.js +1 -1
  22. package/dist/ui/alert-dialog.d.ts +16 -4
  23. package/dist/ui/alert-dialog.js +1 -1
  24. package/dist/ui/avatar.d.ts +1 -1
  25. package/dist/ui/badge.d.ts +1 -1
  26. package/dist/ui/button.d.ts +1 -1
  27. package/dist/ui/date-multiple-picker.js +1 -1
  28. package/dist/ui/date-picker.js +1 -1
  29. package/dist/ui/date-range-picker.js +1 -1
  30. package/dist/ui/dialog.d.ts +3 -1
  31. package/dist/ui/dialog.js +1 -1
  32. package/dist/ui/index.d.ts +15 -2
  33. package/dist/ui/index.js +1 -1
  34. package/dist/ui/input.d.ts +1 -1
  35. package/dist/ui/toast.js +1 -1
  36. package/package.json +1 -1
  37. package/dist/chunk-NY57FUA3.js +0 -2
  38. package/dist/chunk-NY57FUA3.js.map +0 -1
  39. package/dist/chunk-RBLL355H.js +0 -2
  40. package/dist/chunk-VNLYQL75.js +0 -2
  41. package/dist/chunk-VNLYQL75.js.map +0 -1
  42. package/dist/chunk-W7BBHGMN.js +0 -2
  43. package/dist/chunk-W7BBHGMN.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import {b as b$1,c,g,e,d as d$1,f as f$1,j,k as k$1}from'./chunk-WYVGUIHL.js';import {b as b$2}from'./chunk-VNAMAKPG.js';import'react';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs}from'react/jsx-runtime';function f(r){return jsx(b$1,{...r})}function _(r){return jsx(c,{...r})}function b(r){return jsx(g,{...r})}function d({className:r,...t}){return jsx(e,{className:cn("fixed inset-0 z-50 bg-black/50 backdrop-blur-sm",r),...t})}function T({className:r,children:t,...l}){return jsxs(d$1,{children:[jsx(d,{}),jsx(f$1,{className:cn("fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-2rem)] max-w-md translate-x-[-50%] translate-y-[-50%] bg-bg-primary shadow-xp-lg rounded-xl overflow-hidden",r),...l,children:t})]})}function C({className:r,...t}){return jsx("div",{"data-slot":"alert-dialog-header",className:cn("relative px-4 py-3 grid grid-cols-[auto_1fr] items-start bg-bg-primary",r),...t})}function h({className:r,...t}){return jsx("div",{"data-slot":"alert-dialog-content",className:cn("px-4 py-4 max-h-[60vh] overflow-y-auto",r),...t})}function w({className:r,...t}){return jsx("div",{"data-slot":"alert-dialog-footer",className:cn("flex gap-2 items-center justify-end bg-bg-primary px-4 py-3",r),...t})}function k({className:r,...t}){return jsx(j,{className:cn("col-start-2 [&:not(:has(~_[data-slot=alert-dialog-description]))]:row-span-2 [&:not(:has(~_[data-slot=alert-dialog-description]))]:self-center text-label-bold-2 text-text-primary",r),...t})}function B({className:r,...t}){return jsx(k$1,{className:cn("col-start-2 mt-0.5 text-body-regular-3 text-text-secondary",r),...t})}function H({className:r,variant:t="brand",...l}){return jsx("div",{"data-slot":"alert-dialog-icon","data-variant":t,className:cn("row-span-2 flex items-center justify-center rounded-lg mt-px mr-3 p-2.5 [&_svg]:size-4 text-fg-white",t==="brand"&&"bg-bg-brand-solid shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-focus-ring-secondary)]",t==="error"&&"bg-bg-error-solid shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-utility-error-100)]",r),...l})}function N({color:r="destructive",variant:t="primary",...l}){return jsx(b$2,{"data-slot":"alert-dialog-action",color:r,variant:t,...l})}function R({color:r="default",variant:t="secondary",size:l,...c}){return jsx(g,{"data-slot":"alert-dialog-cancel",render:jsx(b$2,{color:r,variant:t,size:l}),...c})}export{f as a,_ as b,b as c,d,T as e,C as f,h as g,w as h,k as i,B as j,H as k,N as l,R as m};//# sourceMappingURL=chunk-CLHWA46Z.js.map
2
+ //# sourceMappingURL=chunk-CLHWA46Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/alert-dialog.tsx"],"names":["AlertDialog","props","jsx","AlertDialogTrigger","AlertDialogClose","AlertDialogBackdrop","className","cn","AlertDialogPopup","children","jsxs","AlertDialogPortal","AlertDialogHeader","AlertDialogContent","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogIcon","variant","AlertDialogAction","color","Button","AlertDialogCancel","size"],"mappings":"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","file":"chunk-CLHWA46Z.js","sourcesContent":["import * as React from 'react';\r\n\r\nimport {\r\n AlertDialog as AlertDialogPrimitive,\r\n AlertDialogTrigger as AlertDialogTriggerPrimitive,\r\n AlertDialogPortal as AlertDialogPortalPrimitive,\r\n AlertDialogBackdrop as AlertDialogBackdropPrimitive,\r\n AlertDialogPopup as AlertDialogPopupPrimitive,\r\n AlertDialogClose as AlertDialogClosePrimitive,\r\n AlertDialogTitle as AlertDialogTitlePrimitive,\r\n AlertDialogDescription as AlertDialogDescriptionPrimitive,\r\n type AlertDialogProps as AlertDialogPrimitiveProps,\r\n type AlertDialogTriggerProps as AlertDialogTriggerPrimitiveProps,\r\n type AlertDialogPortalProps as AlertDialogPortalPrimitiveProps,\r\n type AlertDialogBackdropProps as AlertDialogBackdropPrimitiveProps,\r\n type AlertDialogPopupProps as AlertDialogPopupPrimitiveProps,\r\n type AlertDialogCloseProps as AlertDialogClosePrimitiveProps,\r\n type AlertDialogTitleProps as AlertDialogTitlePrimitiveProps,\r\n type AlertDialogDescriptionProps as AlertDialogDescriptionPrimitiveProps,\r\n} from '../primitives/alert-dialog';\r\nimport { Button } from './button';\r\nimport { cn } from '@xploreu/lib/cn';\r\n\r\ntype AlertDialogProps = AlertDialogPrimitiveProps;\r\n\r\nfunction AlertDialog(props: AlertDialogProps) {\r\n return <AlertDialogPrimitive {...props} />;\r\n}\r\n\r\ntype AlertDialogTriggerProps = AlertDialogTriggerPrimitiveProps;\r\n\r\nfunction AlertDialogTrigger(props: AlertDialogTriggerProps) {\r\n return <AlertDialogTriggerPrimitive {...props} />;\r\n}\r\n\r\ntype AlertDialogCloseProps = AlertDialogClosePrimitiveProps;\r\n\r\nfunction AlertDialogClose(props: AlertDialogCloseProps) {\r\n return <AlertDialogClosePrimitive {...props} />;\r\n}\r\n\r\ntype AlertDialogBackdropProps = AlertDialogBackdropPrimitiveProps;\r\n\r\nfunction AlertDialogBackdrop({ className, ...props }: AlertDialogBackdropProps) {\r\n return (\r\n <AlertDialogBackdropPrimitive\r\n className={cn('fixed inset-0 z-50 bg-black/50 backdrop-blur-sm', className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogPopupProps = AlertDialogPopupPrimitiveProps;\r\n\r\nfunction AlertDialogPopup({ className, children, ...props }: AlertDialogPopupProps) {\r\n return (\r\n <AlertDialogPortalPrimitive>\r\n <AlertDialogBackdrop />\r\n <AlertDialogPopupPrimitive\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-2rem)] max-w-md translate-x-[-50%] translate-y-[-50%] bg-bg-primary shadow-xp-lg rounded-xl overflow-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </AlertDialogPopupPrimitive>\r\n </AlertDialogPortalPrimitive>\r\n );\r\n}\r\n\r\ntype AlertDialogHeaderProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nfunction AlertDialogHeader({ className, ...props }: AlertDialogHeaderProps) {\r\n return (\r\n <div\r\n data-slot=\"alert-dialog-header\"\r\n className={cn(\r\n \"relative px-4 py-3 grid grid-cols-[auto_1fr] items-start bg-bg-primary\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogContentProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nfunction AlertDialogContent({ className, ...props }: AlertDialogContentProps) {\r\n return (\r\n <div\r\n data-slot=\"alert-dialog-content\"\r\n className={cn(\"px-4 py-4 max-h-[60vh] overflow-y-auto\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogFooterProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nfunction AlertDialogFooter({ className, ...props }: AlertDialogFooterProps) {\r\n return (\r\n <div\r\n data-slot=\"alert-dialog-footer\"\r\n className={cn(\r\n \"flex gap-2 items-center justify-end bg-bg-primary px-4 py-3\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogTitleProps = AlertDialogTitlePrimitiveProps;\r\n\r\nfunction AlertDialogTitle({ className, ...props }: AlertDialogTitleProps) {\r\n return (\r\n <AlertDialogTitlePrimitive\r\n className={cn(\r\n \"col-start-2 [&:not(:has(~_[data-slot=alert-dialog-description]))]:row-span-2 [&:not(:has(~_[data-slot=alert-dialog-description]))]:self-center text-label-bold-2 text-text-primary\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogDescriptionProps = AlertDialogDescriptionPrimitiveProps;\r\n\r\nfunction AlertDialogDescription({ className, ...props }: AlertDialogDescriptionProps) {\r\n return (\r\n <AlertDialogDescriptionPrimitive\r\n className={cn(\"col-start-2 mt-0.5 text-body-regular-3 text-text-secondary\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogIconProps = React.ComponentProps<\"div\"> & {\r\n variant?: \"brand\" | \"error\";\r\n};\r\n\r\nfunction AlertDialogIcon({\r\n className,\r\n variant = \"brand\",\r\n ...props\r\n}: AlertDialogIconProps) {\r\n return (\r\n <div\r\n data-slot=\"alert-dialog-icon\"\r\n data-variant={variant}\r\n className={cn(\r\n \"row-span-2 flex items-center justify-center rounded-lg mt-px mr-3 p-2.5 [&_svg]:size-4 text-fg-white\",\r\n variant === \"brand\" &&\r\n \"bg-bg-brand-solid shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-focus-ring-secondary)]\",\r\n variant === \"error\" &&\r\n \"bg-bg-error-solid shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-utility-error-100)]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogActionProps = React.ComponentProps<typeof Button>;\r\n\r\nfunction AlertDialogAction({\r\n color = \"destructive\",\r\n variant = \"primary\",\r\n ...props\r\n}: AlertDialogActionProps) {\r\n return (\r\n <Button\r\n data-slot=\"alert-dialog-action\"\r\n color={color}\r\n variant={variant}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype AlertDialogCancelProps = AlertDialogClosePrimitiveProps & \r\n Pick<React.ComponentProps<typeof Button>, \"color\" | \"variant\" | \"size\">;\r\n\r\nfunction AlertDialogCancel({ \r\n color = \"default\",\r\n variant = \"secondary\",\r\n size,\r\n ...props \r\n}: AlertDialogCancelProps) {\r\n return (\r\n <AlertDialogClosePrimitive\r\n data-slot=\"alert-dialog-cancel\"\r\n render={<Button color={color} variant={variant} size={size} />}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport {\r\n AlertDialog,\r\n AlertDialogTrigger,\r\n AlertDialogClose,\r\n AlertDialogPopup,\r\n AlertDialogHeader,\r\n AlertDialogContent,\r\n AlertDialogFooter,\r\n AlertDialogTitle,\r\n AlertDialogDescription,\r\n AlertDialogIcon,\r\n AlertDialogBackdrop,\r\n AlertDialogAction,\r\n AlertDialogCancel,\r\n type AlertDialogProps,\r\n type AlertDialogTriggerProps,\r\n type AlertDialogCloseProps,\r\n type AlertDialogPopupProps,\r\n type AlertDialogHeaderProps,\r\n type AlertDialogContentProps,\r\n type AlertDialogFooterProps,\r\n type AlertDialogTitleProps,\r\n type AlertDialogDescriptionProps,\r\n type AlertDialogIconProps,\r\n type AlertDialogBackdropProps,\r\n type AlertDialogActionProps,\r\n type AlertDialogCancelProps,\r\n};\r\n"]}
@@ -1,2 +1,2 @@
1
- import {a as a$2}from'./chunk-WWCXHCNU.js';import {a,b,c}from'./chunk-NGSCUYDU.js';import {b as b$1}from'./chunk-VNAMAKPG.js';import {a as a$1}from'./chunk-T7HRX3EC.js';import u from'react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {format,endOfWeek,startOfWeek,endOfMonth,startOfMonth,subMonths,endOfYear,startOfYear,subYears}from'date-fns';import {ChevronDown}from'lucide-react';import'react-day-picker';import {cn}from'@xploreu/lib/cn';import {jsxs,jsx}from'react/jsx-runtime';var N=[{label:"Today",value:"today",getDateRange:()=>{let e=new Date;return {from:e,to:e}}},{value:"last-7-days",label:"Last 7 days",getDateRange:()=>({from:new Date(Date.now()-8640*60*1e3),to:new Date})},{label:"This Week",value:"this-week",getDateRange:()=>{let e=new Date;return {from:startOfWeek(e,{weekStartsOn:1}),to:endOfWeek(e,{weekStartsOn:1})}}},{label:"This Month",value:"this-month",getDateRange:()=>{let e=new Date;return {from:startOfMonth(e),to:endOfMonth(e)}}},{label:"Last 3 Months",value:"last-3-months",getDateRange:()=>{let e=new Date;return {from:subMonths(e,3),to:e}}},{label:"Last 6 Months",value:"last-6-months",getDateRange:()=>{let e=new Date;return {from:subMonths(e,6),to:e}}},{label:"This Year",value:"this-year",getDateRange:()=>{let e=new Date;return {from:startOfYear(e),to:endOfYear(e)}}},{label:"Last Year",value:"last-year",getDateRange:()=>{let e=subYears(new Date,1);return {from:startOfYear(e),to:endOfYear(e)}}},{label:"Custom Range",value:"custom-range",getDateRange:()=>{}}];function ne({className:e,value:P,onValueChange:p,defaultValue:V,required:d,disabled:b$2,placeholder:S="Pick a date",options:D=true,disabledDates:Y}){let T=u.useCallback(t=>{p?.(t);},[p,d]),[a$3,v]=useControlledState({value:P,defaultValue:V,onChange:T}),[q,h]=u.useState(a$3?.from||new Date),[z,B]=u.useState(false),[F,y]=u.useState("days"),f=!!a$3?.from,s=(t,n)=>!t||!n?false:t.getFullYear()===n.getFullYear()&&t.getMonth()===n.getMonth()&&t.getDate()===n.getDate(),W=t=>{if(!a$3?.from||!a$3?.to)return false;if(t.value==="custom-range")return N.every(o=>{if(o.value==="custom-range")return true;let l=o.getDateRange();return !l?.from||!l?.to?true:!(s(a$3.from,l.from)&&s(a$3.to,l.to))});let n=t.getDateRange();return !n?.from||!n?.to?false:s(a$3.from,n.from)&&s(a$3.to,n.to)};return jsxs(a,{open:b$2?false:z,onOpenChange:B,children:[jsx(b,{render:jsxs(b$1,{className:cn("group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors","border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover",f&&"border-border-brand bg-bg-brand-primary text-text-brand-secondary","data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary","disabled:pointer-events-none disabled:opacity-50",e),variant:null,size:null,disabled:b$2,children:[jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[jsx(a$1,{className:cn("size-4 shrink-0",f?"text-fg-brand-primary":"text-fg-quaternary")}),jsx("span",{className:"truncate",children:a$3?.from?a$3.to?`${format(a$3.from,"LLL dd, y")} - ${format(a$3.to,"LLL dd, y")}`:format(a$3.from,"LLL dd, y"):S})]}),jsx(ChevronDown,{className:cn("size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180",f?"text-fg-brand-primary":"text-fg-quaternary")})]})}),jsxs(c,{className:cn("w-auto border-0",D?"rounded-2xl p-xp-lg flex gap-6":"p-xp-none bg-transparent"),children:[D&&jsx("div",{className:"flex flex-col gap-xp-md w-[135px]",children:N.map(t=>{let n=W(t);return jsx(b$1,{className:"justify-start px-xp-xl",variant:n?"tertiary-accent":null,onClick:()=>{let o=t.getDateRange();o&&(v(o),y("days"),h(o.from));},children:t.label},t.value)})}),jsx(a$2,{autoFocus:true,disabled:Y,mode:"range",month:q,navView:F,numberOfMonths:2,selected:a$3,onMonthChange:h,onNavViewChange:y,onSelect:t=>{d&&!t||v(t);}})]})]})}export{ne as a};//# sourceMappingURL=chunk-77T5FOYW.js.map
2
- //# sourceMappingURL=chunk-77T5FOYW.js.map
1
+ import {a as a$2}from'./chunk-WWCXHCNU.js';import {a,b,c}from'./chunk-NGSCUYDU.js';import {a as a$1}from'./chunk-T7HRX3EC.js';import {b as b$1}from'./chunk-VNAMAKPG.js';import u from'react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {format,endOfWeek,startOfWeek,endOfMonth,startOfMonth,subMonths,endOfYear,startOfYear,subYears}from'date-fns';import {ChevronDown}from'lucide-react';import'react-day-picker';import {cn}from'@xploreu/lib/cn';import {jsxs,jsx}from'react/jsx-runtime';var N=[{label:"Today",value:"today",getDateRange:()=>{let e=new Date;return {from:e,to:e}}},{value:"last-7-days",label:"Last 7 days",getDateRange:()=>({from:new Date(Date.now()-8640*60*1e3),to:new Date})},{label:"This Week",value:"this-week",getDateRange:()=>{let e=new Date;return {from:startOfWeek(e,{weekStartsOn:1}),to:endOfWeek(e,{weekStartsOn:1})}}},{label:"This Month",value:"this-month",getDateRange:()=>{let e=new Date;return {from:startOfMonth(e),to:endOfMonth(e)}}},{label:"Last 3 Months",value:"last-3-months",getDateRange:()=>{let e=new Date;return {from:subMonths(e,3),to:e}}},{label:"Last 6 Months",value:"last-6-months",getDateRange:()=>{let e=new Date;return {from:subMonths(e,6),to:e}}},{label:"This Year",value:"this-year",getDateRange:()=>{let e=new Date;return {from:startOfYear(e),to:endOfYear(e)}}},{label:"Last Year",value:"last-year",getDateRange:()=>{let e=subYears(new Date,1);return {from:startOfYear(e),to:endOfYear(e)}}},{label:"Custom Range",value:"custom-range",getDateRange:()=>{}}];function ne({className:e,value:P,onValueChange:p,defaultValue:V,required:d,disabled:b$2,placeholder:S="Pick a date",options:D=true,disabledDates:Y}){let T=u.useCallback(t=>{p?.(t);},[p,d]),[a$3,v]=useControlledState({value:P,defaultValue:V,onChange:T}),[q,h]=u.useState(a$3?.from||new Date),[z,B]=u.useState(false),[F,y]=u.useState("days"),f=!!a$3?.from,s=(t,n)=>!t||!n?false:t.getFullYear()===n.getFullYear()&&t.getMonth()===n.getMonth()&&t.getDate()===n.getDate(),W=t=>{if(!a$3?.from||!a$3?.to)return false;if(t.value==="custom-range")return N.every(o=>{if(o.value==="custom-range")return true;let l=o.getDateRange();return !l?.from||!l?.to?true:!(s(a$3.from,l.from)&&s(a$3.to,l.to))});let n=t.getDateRange();return !n?.from||!n?.to?false:s(a$3.from,n.from)&&s(a$3.to,n.to)};return jsxs(a,{open:b$2?false:z,onOpenChange:B,children:[jsx(b,{render:jsxs(b$1,{className:cn("group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors","border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover",f&&"border-border-brand bg-bg-brand-primary text-text-brand-secondary","data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary","disabled:pointer-events-none disabled:opacity-50",e),variant:null,size:null,disabled:b$2,children:[jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[jsx(a$1,{className:cn("size-4 shrink-0",f?"text-fg-brand-primary":"text-fg-quaternary")}),jsx("span",{className:"truncate",children:a$3?.from?a$3.to?`${format(a$3.from,"LLL dd, y")} - ${format(a$3.to,"LLL dd, y")}`:format(a$3.from,"LLL dd, y"):S})]}),jsx(ChevronDown,{className:cn("size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180",f?"text-fg-brand-primary":"text-fg-quaternary")})]})}),jsxs(c,{className:cn("w-auto border-0",D?"rounded-2xl p-xp-lg flex gap-6":"p-xp-none bg-transparent"),children:[D&&jsx("div",{className:"flex flex-col gap-xp-md w-[135px]",children:N.map(t=>{let n=W(t);return jsx(b$1,{className:"justify-start px-xp-xl",variant:n?"tertiary-accent":null,onClick:()=>{let o=t.getDateRange();o&&(v(o),y("days"),h(o.from));},children:t.label},t.value)})}),jsx(a$2,{autoFocus:true,disabled:Y,mode:"range",month:q,navView:F,numberOfMonths:2,selected:a$3,onMonthChange:h,onNavViewChange:y,onSelect:t=>{d&&!t||v(t);}})]})]})}export{ne as a};//# sourceMappingURL=chunk-ESR5LKGM.js.map
2
+ //# sourceMappingURL=chunk-ESR5LKGM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/date-range-picker.tsx"],"names":["dateRangeOptions","t","now","startOfWeek","endOfWeek","startOfMonth","endOfMonth","subMonths","startOfYear","endOfYear","ly","subYears","DateRangePicker","className","valueProp","onValueChangeProp","defaultValue","required","disabled","placeholder","options","disabledDates","onValueChange","React","value","setValue","useControlledState","currentMonth","setCurrentMonth","isOpen","setIsOpen","navView","setNavView","hasValue","isSameDay","date1","date2","isOptionActive","option","opt","optRange","optionRange","jsxs","Popover","jsx","PopoverTrigger","Button","cn","calendar_icon_default","format","ChevronDown","PopoverPopup","active","dateRange","Calendar","val"],"mappings":"kgBAmDA,IAAMA,CAAAA,CAAsC,CAC1C,CACE,KAAA,CAAO,OAAA,CACP,KAAA,CAAO,OAAA,CACP,aAAc,IAAM,CAAE,IAAMC,CAAAA,CAAI,IAAI,IAAA,CAAQ,OAAO,CAAE,IAAA,CAAMA,EAAG,EAAA,CAAIA,CAAE,CAAE,CACxE,EACA,CACE,KAAA,CAAO,aAAA,CACP,KAAA,CAAO,cACP,YAAA,CAAc,KAAO,CACnB,IAAA,CAAM,IAAI,KAAK,IAAA,CAAK,GAAA,EAAI,CAAI,IAAA,CAAc,GAAK,GAAI,CAAA,CACnD,EAAA,CAAI,IAAI,IACV,CAAA,CACF,CAAA,CACA,CACE,KAAA,CAAO,YACP,KAAA,CAAO,WAAA,CACP,YAAA,CAAc,IAAM,CAClB,IAAMC,CAAAA,CAAM,IAAI,IAAA,CAChB,OAAO,CAAE,IAAA,CAAMC,WAAAA,CAAYD,CAAAA,CAAK,CAAE,YAAA,CAAc,CAAE,CAAC,CAAA,CAAG,GAAIE,SAAAA,CAAUF,CAAAA,CAAK,CAAE,YAAA,CAAc,CAAE,CAAC,CAAE,CAChG,CACF,EACA,CACE,KAAA,CAAO,YAAA,CACP,KAAA,CAAO,aACP,YAAA,CAAc,IAAM,CAAE,IAAMA,EAAM,IAAI,IAAA,CAAQ,OAAO,CAAE,KAAMG,YAAAA,CAAaH,CAAG,CAAA,CAAG,EAAA,CAAII,WAAWJ,CAAG,CAAE,CAAE,CACxG,EACA,CACE,KAAA,CAAO,eAAA,CACP,KAAA,CAAO,gBACP,YAAA,CAAc,IAAM,CAAE,IAAMA,CAAAA,CAAM,IAAI,IAAA,CAAQ,OAAO,CAAE,IAAA,CAAMK,UAAUL,CAAAA,CAAK,CAAC,CAAA,CAAG,EAAA,CAAIA,CAAI,CAAE,CAC5F,CAAA,CACA,CACE,MAAO,eAAA,CACP,KAAA,CAAO,eAAA,CACP,YAAA,CAAc,IAAM,CAAE,IAAMA,CAAAA,CAAM,IAAI,KAAQ,OAAO,CAAE,IAAA,CAAMK,SAAAA,CAAUL,EAAK,CAAC,CAAA,CAAG,EAAA,CAAIA,CAAI,CAAE,CAC5F,CAAA,CACA,CACE,KAAA,CAAO,YACP,KAAA,CAAO,WAAA,CACP,YAAA,CAAc,IAAM,CAAE,IAAMA,CAAAA,CAAM,IAAI,IAAA,CAAQ,OAAO,CAAE,IAAA,CAAMM,WAAAA,CAAYN,CAAG,EAAG,EAAA,CAAIO,SAAAA,CAAUP,CAAG,CAAE,CAAE,CACtG,CAAA,CACA,CACE,KAAA,CAAO,YACP,KAAA,CAAO,WAAA,CACP,YAAA,CAAc,IAAM,CAAE,IAAMQ,CAAAA,CAAKC,QAAAA,CAAS,IAAI,KAAQ,CAAC,CAAA,CAAG,OAAO,CAAE,IAAA,CAAMH,YAAYE,CAAE,CAAA,CAAG,EAAA,CAAID,SAAAA,CAAUC,CAAE,CAAE,CAAE,CAChH,CAAA,CACA,CACE,KAAA,CAAO,cAAA,CACP,KAAA,CAAO,cAAA,CACP,aAAc,IAAG,CAAA,CACnB,CACF,CAAA,CAEA,SAASE,EAAAA,CAAgB,CACvB,SAAA,CAAAC,CAAAA,CACA,MAAOC,CAAAA,CACP,aAAA,CAAeC,CAAAA,CACf,YAAA,CAAAC,EACA,QAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,GAAAA,CACA,YAAAC,CAAAA,CAAc,aAAA,CACd,OAAA,CAAAC,CAAAA,CAAU,KACV,aAAA,CAAAC,CACF,CAAA,CAAyB,CACvB,IAAMC,CAAAA,CAAgBC,CAAAA,CAAM,WAAA,CACzBC,CAAAA,EAAiC,CAClBT,CAAAA,GAAoBS,CAAkB,EAEtD,CAAA,CACA,CAACT,CAAAA,CAAmBE,CAAQ,CAC9B,CAAA,CAEM,CAACO,GAAAA,CAAOC,CAAQ,CAAA,CAAIC,kBAAAA,CAA0C,CAClE,KAAA,CAAOZ,CAAAA,CACP,YAAA,CAAAE,CAAAA,CACA,SAAUM,CACZ,CAAC,CAAA,CAEK,CAACK,EAAcC,CAAe,CAAA,CAAIL,EAAM,QAAA,CAA2BC,GAAAA,EAAO,MAAQ,IAAI,IAAM,CAAA,CAC5F,CAACK,EAAQC,CAAS,CAAA,CAAIP,CAAAA,CAAM,QAAA,CAAS,KAAK,CAAA,CAC1C,CAACQ,CAAAA,CAASC,CAAU,EAAIT,CAAAA,CAAM,QAAA,CAAkB,MAAM,CAAA,CAEtDU,EAAW,CAAC,CAACT,GAAAA,EAAO,IAAA,CAEpBU,EAAY,CAACC,CAAAA,CAAcC,CAAAA,GAC3B,CAACD,GAAS,CAACC,CAAAA,CAAc,KAAA,CAE3BD,CAAAA,CAAM,aAAY,GAAMC,CAAAA,CAAM,WAAA,EAAY,EAC1CD,EAAM,QAAA,EAAS,GAAMC,CAAAA,CAAM,QAAA,IAC3BD,CAAAA,CAAM,OAAA,EAAQ,GAAMC,CAAAA,CAAM,SAAQ,CAIhCC,CAAAA,CAAkBC,CAAAA,EAAqC,CAC3D,GAAI,CAACd,GAAAA,EAAO,IAAA,EAAQ,CAACA,KAAO,EAAA,CAAI,OAAO,MAAA,CACvC,GAAIc,EAAO,KAAA,GAAU,cAAA,CACnB,OAAOtC,CAAAA,CAAiB,MAAOuC,CAAAA,EAAQ,CACrC,GAAIA,CAAAA,CAAI,QAAU,cAAA,CAAgB,OAAO,MACzC,IAAMC,CAAAA,CAAWD,EAAI,YAAA,EAAa,CAClC,OAAI,CAACC,GAAU,IAAA,EAAQ,CAACA,CAAAA,EAAU,EAAA,CAAW,KACtC,EAAEN,CAAAA,CAAUV,GAAAA,CAAM,IAAA,CAAMgB,EAAS,IAAI,CAAA,EAAKN,CAAAA,CAAUV,GAAAA,CAAM,GAAIgB,CAAAA,CAAS,EAAE,CAAA,CAClF,CAAC,EAEH,IAAMC,CAAAA,CAAcH,CAAAA,CAAO,YAAA,GAC3B,OAAI,CAACG,CAAAA,EAAa,IAAA,EAAQ,CAACA,CAAAA,EAAa,EAAA,CAAW,KAAA,CAC5CP,CAAAA,CAAUV,IAAM,IAAA,CAAMiB,CAAAA,CAAY,IAAI,CAAA,EAAKP,EAAUV,GAAAA,CAAM,EAAA,CAAIiB,CAAAA,CAAY,EAAE,CACtF,CAAA,CAEA,OACEC,IAAAA,CAACC,CAAAA,CAAA,CAAQ,IAAA,CAAMzB,GAAAA,CAAW,KAAA,CAAQW,CAAAA,CAAQ,aAAcC,CAAAA,CACtD,QAAA,CAAA,CAAAc,GAAAA,CAACC,CAAAA,CAAA,CACC,MAAA,CACEH,IAAAA,CAACI,GAAAA,CAAA,CACC,UAAWC,EAAAA,CACT,wGAAA,CACA,mFAAA,CACAd,CAAAA,EACA,oEACA,yHAAA,CACA,kDAAA,CACApB,CACF,CAAA,CACA,OAAA,CAAS,KACT,IAAA,CAAM,IAAA,CACN,QAAA,CAAUK,GAAAA,CAEV,UAAAwB,IAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,iCAAA,CACd,UAAAE,GAAAA,CAACI,GAAAA,CAAA,CACC,SAAA,CAAWD,GACT,iBAAA,CACAd,CAAAA,CAAW,uBAAA,CAA0B,oBACvC,EACF,CAAA,CACAW,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,WACb,QAAA,CAAApB,GAAAA,EAAO,IAAA,CACJA,GAAAA,CAAM,GACJ,CAAA,EAAGyB,MAAAA,CAAOzB,GAAAA,CAAM,IAAA,CAAM,WAAW,CAAC,CAAA,GAAA,EAAMyB,MAAAA,CAAOzB,GAAAA,CAAM,GAAI,WAAW,CAAC,CAAA,CAAA,CACrEyB,MAAAA,CAAOzB,IAAM,IAAA,CAAM,WAAW,CAAA,CAChCL,CAAAA,CACN,GACF,CAAA,CACAyB,GAAAA,CAACM,WAAAA,CAAA,CACC,UAAWH,EAAAA,CACT,yEAAA,CACAd,CAAAA,CAAW,uBAAA,CAA0B,oBACvC,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAEJ,CAAA,CACAS,KAACS,CAAAA,CAAA,CACC,SAAA,CAAWJ,EAAAA,CACT,kBACA3B,CAAAA,CAAU,gCAAA,CAAmC,0BAC/C,CAAA,CAEC,UAAAA,CAAAA,EACCwB,GAAAA,CAAC,OAAI,SAAA,CAAU,mCAAA,CACZ,SAAA5C,CAAAA,CAAiB,GAAA,CAAKsC,CAAAA,EAAW,CAChC,IAAMc,CAAAA,CAASf,CAAAA,CAAeC,CAAM,CAAA,CACpC,OACEM,GAAAA,CAACE,GAAAA,CAAA,CAEC,SAAA,CAAU,yBACV,OAAA,CAASM,CAAAA,CAAS,iBAAA,CAAoB,IAAA,CACtC,QAAS,IAAM,CACb,IAAMC,CAAAA,CAAYf,EAAO,YAAA,EAAa,CAClCe,CAAAA,GACF5B,CAAAA,CAAS4B,CAAS,CAAA,CAClBrB,CAAAA,CAAW,MAAM,CAAA,CACjBJ,EAAgByB,CAAAA,CAAU,IAAI,CAAA,EAElC,CAAA,CAEC,SAAAf,CAAAA,CAAO,KAAA,CAAA,CAZHA,CAAAA,CAAO,KAad,CAEJ,CAAC,CAAA,CACH,CAAA,CAEFM,GAAAA,CAACU,IAAA,CACC,SAAA,CAAS,IAAA,CACT,QAAA,CAAUjC,EACV,IAAA,CAAK,OAAA,CACL,KAAA,CAAOM,CAAAA,CACP,QAASI,CAAAA,CACT,cAAA,CAAgB,CAAA,CAChB,QAAA,CAAUP,IACV,aAAA,CAAeI,CAAAA,CACf,eAAA,CAAiBI,CAAAA,CACjB,SAAWuB,CAAAA,EAAQ,CACbtC,CAAAA,EAAY,CAACsC,GACjB9B,CAAAA,CAAS8B,CAAG,EACd,CAAA,CACF,CAAA,CAAA,CACF,GACF,CAEJ","file":"chunk-77T5FOYW.js","sourcesContent":["\"use client\"\r\n\r\nimport React from \"react\"\r\n\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport {\r\n endOfMonth,\r\n endOfWeek,\r\n endOfYear,\r\n format,\r\n startOfMonth,\r\n startOfWeek,\r\n startOfYear,\r\n subMonths,\r\n subYears,\r\n} from \"date-fns\"\r\nimport { ChevronDown } from \"lucide-react\"\r\nimport { type DateRange, type Matcher } from \"react-day-picker\"\r\n\r\nexport type { DateRange }\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { Button } from \"./button\"\r\nimport { Calendar, type NavView } from \"./calendar\"\r\nimport { CalendarIcon } from \"../icons\"\r\nimport { Popover, PopoverPopup, PopoverTrigger } from \"./popover\"\r\n\r\nexport type DateRangePickerProps = {\r\n className?: string\r\n value?: DateRange\r\n defaultValue?: DateRange\r\n required?: boolean\r\n disabled?: boolean\r\n placeholder?: string\r\n options?: boolean\r\n disabledDates?: Matcher | Matcher[] | undefined\r\n} & ({\r\n required: true\r\n onValueChange?: (value: DateRange) => void\r\n} | {\r\n required?: false\r\n onValueChange?: (value: DateRange | undefined) => void\r\n})\r\n\r\ntype DateRangeOption = {\r\n label: string\r\n value: string\r\n getDateRange: () => DateRange | undefined\r\n}\r\n\r\nconst dateRangeOptions: DateRangeOption[] = [\r\n {\r\n label: \"Today\",\r\n value: \"today\",\r\n getDateRange: () => { const t = new Date(); return { from: t, to: t } },\r\n },\r\n {\r\n value: \"last-7-days\",\r\n label: \"Last 7 days\",\r\n getDateRange: () => ({\r\n from: new Date(Date.now() - 6 * 24 * 60 * 60 * 1000), // 6 days in milliseconds\r\n to: new Date(),\r\n }),\r\n },\r\n {\r\n label: \"This Week\",\r\n value: \"this-week\",\r\n getDateRange: () => {\r\n const now = new Date()\r\n return { from: startOfWeek(now, { weekStartsOn: 1 }), to: endOfWeek(now, { weekStartsOn: 1 }) }\r\n },\r\n },\r\n {\r\n label: \"This Month\",\r\n value: \"this-month\",\r\n getDateRange: () => { const now = new Date(); return { from: startOfMonth(now), to: endOfMonth(now) } },\r\n },\r\n {\r\n label: \"Last 3 Months\",\r\n value: \"last-3-months\",\r\n getDateRange: () => { const now = new Date(); return { from: subMonths(now, 3), to: now } },\r\n },\r\n {\r\n label: \"Last 6 Months\",\r\n value: \"last-6-months\",\r\n getDateRange: () => { const now = new Date(); return { from: subMonths(now, 6), to: now } },\r\n },\r\n {\r\n label: \"This Year\",\r\n value: \"this-year\",\r\n getDateRange: () => { const now = new Date(); return { from: startOfYear(now), to: endOfYear(now) } },\r\n },\r\n {\r\n label: \"Last Year\",\r\n value: \"last-year\",\r\n getDateRange: () => { const ly = subYears(new Date(), 1); return { from: startOfYear(ly), to: endOfYear(ly) } },\r\n },\r\n {\r\n label: \"Custom Range\",\r\n value: \"custom-range\",\r\n getDateRange: () => undefined,\r\n },\r\n]\r\n\r\nfunction DateRangePicker({\r\n className,\r\n value: valueProp,\r\n onValueChange: onValueChangeProp,\r\n defaultValue,\r\n required,\r\n disabled,\r\n placeholder = \"Pick a date\",\r\n options = true,\r\n disabledDates,\r\n}: DateRangePickerProps) {\r\n const onValueChange = React.useCallback(\r\n (value: DateRange | undefined) => {\r\n if (required) onValueChangeProp?.(value as DateRange)\r\n else onValueChangeProp?.(value)\r\n },\r\n [onValueChangeProp, required],\r\n )\r\n\r\n const [value, setValue] = useControlledState<DateRange | undefined>({\r\n value: valueProp,\r\n defaultValue,\r\n onChange: onValueChange,\r\n })\r\n\r\n const [currentMonth, setCurrentMonth] = React.useState<Date | undefined>(value?.from || new Date())\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n const [navView, setNavView] = React.useState<NavView>(\"days\")\r\n\r\n const hasValue = !!value?.from\r\n\r\n const isSameDay = (date1?: Date, date2?: Date): boolean => {\r\n if (!date1 || !date2) return false\r\n return (\r\n date1.getFullYear() === date2.getFullYear() &&\r\n date1.getMonth() === date2.getMonth() &&\r\n date1.getDate() === date2.getDate()\r\n )\r\n }\r\n\r\n const isOptionActive = (option: DateRangeOption): boolean => {\r\n if (!value?.from || !value?.to) return false\r\n if (option.value === \"custom-range\") {\r\n return dateRangeOptions.every((opt) => {\r\n if (opt.value === \"custom-range\") return true\r\n const optRange = opt.getDateRange()\r\n if (!optRange?.from || !optRange?.to) return true\r\n return !(isSameDay(value.from, optRange.from) && isSameDay(value.to, optRange.to))\r\n })\r\n }\r\n const optionRange = option.getDateRange()\r\n if (!optionRange?.from || !optionRange?.to) return false\r\n return isSameDay(value.from, optionRange.from) && isSameDay(value.to, optionRange.to)\r\n }\r\n\r\n return (\r\n <Popover open={disabled ? false : isOpen} onOpenChange={setIsOpen}>\r\n <PopoverTrigger\r\n render={\r\n <Button\r\n className={cn(\r\n \"group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors\",\r\n \"border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover\",\r\n hasValue &&\r\n \"border-border-brand bg-bg-brand-primary text-text-brand-secondary\",\r\n \"data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n className,\r\n )}\r\n variant={null}\r\n size={null}\r\n disabled={disabled}\r\n >\r\n <span className=\"flex min-w-0 items-center gap-2\">\r\n <CalendarIcon\r\n className={cn(\r\n \"size-4 shrink-0\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n <span className=\"truncate\">\r\n {value?.from\r\n ? value.to\r\n ? `${format(value.from, \"LLL dd, y\")} - ${format(value.to, \"LLL dd, y\")}`\r\n : format(value.from, \"LLL dd, y\")\r\n : placeholder}\r\n </span>\r\n </span>\r\n <ChevronDown\r\n className={cn(\r\n \"size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n </Button>\r\n }\r\n />\r\n <PopoverPopup\r\n className={cn(\r\n \"w-auto border-0\",\r\n options ? \"rounded-2xl p-xp-lg flex gap-6\" : \"p-xp-none bg-transparent\",\r\n )}\r\n >\r\n {options && (\r\n <div className=\"flex flex-col gap-xp-md w-[135px]\">\r\n {dateRangeOptions.map((option) => {\r\n const active = isOptionActive(option)\r\n return (\r\n <Button\r\n key={option.value}\r\n className=\"justify-start px-xp-xl\"\r\n variant={active ? \"tertiary-accent\" : null}\r\n onClick={() => {\r\n const dateRange = option.getDateRange()\r\n if (dateRange) {\r\n setValue(dateRange)\r\n setNavView(\"days\")\r\n setCurrentMonth(dateRange.from)\r\n }\r\n }}\r\n >\r\n {option.label}\r\n </Button>\r\n )\r\n })}\r\n </div>\r\n )}\r\n <Calendar\r\n autoFocus\r\n disabled={disabledDates}\r\n mode=\"range\"\r\n month={currentMonth}\r\n navView={navView}\r\n numberOfMonths={2}\r\n selected={value}\r\n onMonthChange={setCurrentMonth}\r\n onNavViewChange={setNavView}\r\n onSelect={(val) => {\r\n if (required && !val) return\r\n setValue(val)\r\n }}\r\n />\r\n </PopoverPopup>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { DateRangePicker }\r\n"]}
1
+ {"version":3,"sources":["../src/ui/date-range-picker.tsx"],"names":["dateRangeOptions","t","now","startOfWeek","endOfWeek","startOfMonth","endOfMonth","subMonths","startOfYear","endOfYear","ly","subYears","DateRangePicker","className","valueProp","onValueChangeProp","defaultValue","required","disabled","placeholder","options","disabledDates","onValueChange","React","value","setValue","useControlledState","currentMonth","setCurrentMonth","isOpen","setIsOpen","navView","setNavView","hasValue","isSameDay","date1","date2","isOptionActive","option","opt","optRange","optionRange","jsxs","Popover","jsx","PopoverTrigger","Button","cn","calendar_icon_default","format","ChevronDown","PopoverPopup","active","dateRange","Calendar","val"],"mappings":"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","file":"chunk-ESR5LKGM.js","sourcesContent":["\"use client\"\r\n\r\nimport React from \"react\"\r\n\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport {\r\n endOfMonth,\r\n endOfWeek,\r\n endOfYear,\r\n format,\r\n startOfMonth,\r\n startOfWeek,\r\n startOfYear,\r\n subMonths,\r\n subYears,\r\n} from \"date-fns\"\r\nimport { ChevronDown } from \"lucide-react\"\r\nimport { type DateRange, type Matcher } from \"react-day-picker\"\r\n\r\nexport type { DateRange }\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { Button } from \"./button\"\r\nimport { Calendar, type NavView } from \"./calendar\"\r\nimport { CalendarIcon } from \"../icons\"\r\nimport { Popover, PopoverPopup, PopoverTrigger } from \"./popover\"\r\n\r\nexport type DateRangePickerProps = {\r\n className?: string\r\n value?: DateRange\r\n defaultValue?: DateRange\r\n required?: boolean\r\n disabled?: boolean\r\n placeholder?: string\r\n options?: boolean\r\n disabledDates?: Matcher | Matcher[] | undefined\r\n} & ({\r\n required: true\r\n onValueChange?: (value: DateRange) => void\r\n} | {\r\n required?: false\r\n onValueChange?: (value: DateRange | undefined) => void\r\n})\r\n\r\ntype DateRangeOption = {\r\n label: string\r\n value: string\r\n getDateRange: () => DateRange | undefined\r\n}\r\n\r\nconst dateRangeOptions: DateRangeOption[] = [\r\n {\r\n label: \"Today\",\r\n value: \"today\",\r\n getDateRange: () => { const t = new Date(); return { from: t, to: t } },\r\n },\r\n {\r\n value: \"last-7-days\",\r\n label: \"Last 7 days\",\r\n getDateRange: () => ({\r\n from: new Date(Date.now() - 6 * 24 * 60 * 60 * 1000), // 6 days in milliseconds\r\n to: new Date(),\r\n }),\r\n },\r\n {\r\n label: \"This Week\",\r\n value: \"this-week\",\r\n getDateRange: () => {\r\n const now = new Date()\r\n return { from: startOfWeek(now, { weekStartsOn: 1 }), to: endOfWeek(now, { weekStartsOn: 1 }) }\r\n },\r\n },\r\n {\r\n label: \"This Month\",\r\n value: \"this-month\",\r\n getDateRange: () => { const now = new Date(); return { from: startOfMonth(now), to: endOfMonth(now) } },\r\n },\r\n {\r\n label: \"Last 3 Months\",\r\n value: \"last-3-months\",\r\n getDateRange: () => { const now = new Date(); return { from: subMonths(now, 3), to: now } },\r\n },\r\n {\r\n label: \"Last 6 Months\",\r\n value: \"last-6-months\",\r\n getDateRange: () => { const now = new Date(); return { from: subMonths(now, 6), to: now } },\r\n },\r\n {\r\n label: \"This Year\",\r\n value: \"this-year\",\r\n getDateRange: () => { const now = new Date(); return { from: startOfYear(now), to: endOfYear(now) } },\r\n },\r\n {\r\n label: \"Last Year\",\r\n value: \"last-year\",\r\n getDateRange: () => { const ly = subYears(new Date(), 1); return { from: startOfYear(ly), to: endOfYear(ly) } },\r\n },\r\n {\r\n label: \"Custom Range\",\r\n value: \"custom-range\",\r\n getDateRange: () => undefined,\r\n },\r\n]\r\n\r\nfunction DateRangePicker({\r\n className,\r\n value: valueProp,\r\n onValueChange: onValueChangeProp,\r\n defaultValue,\r\n required,\r\n disabled,\r\n placeholder = \"Pick a date\",\r\n options = true,\r\n disabledDates,\r\n}: DateRangePickerProps) {\r\n const onValueChange = React.useCallback(\r\n (value: DateRange | undefined) => {\r\n if (required) onValueChangeProp?.(value as DateRange)\r\n else onValueChangeProp?.(value)\r\n },\r\n [onValueChangeProp, required],\r\n )\r\n\r\n const [value, setValue] = useControlledState<DateRange | undefined>({\r\n value: valueProp,\r\n defaultValue,\r\n onChange: onValueChange,\r\n })\r\n\r\n const [currentMonth, setCurrentMonth] = React.useState<Date | undefined>(value?.from || new Date())\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n const [navView, setNavView] = React.useState<NavView>(\"days\")\r\n\r\n const hasValue = !!value?.from\r\n\r\n const isSameDay = (date1?: Date, date2?: Date): boolean => {\r\n if (!date1 || !date2) return false\r\n return (\r\n date1.getFullYear() === date2.getFullYear() &&\r\n date1.getMonth() === date2.getMonth() &&\r\n date1.getDate() === date2.getDate()\r\n )\r\n }\r\n\r\n const isOptionActive = (option: DateRangeOption): boolean => {\r\n if (!value?.from || !value?.to) return false\r\n if (option.value === \"custom-range\") {\r\n return dateRangeOptions.every((opt) => {\r\n if (opt.value === \"custom-range\") return true\r\n const optRange = opt.getDateRange()\r\n if (!optRange?.from || !optRange?.to) return true\r\n return !(isSameDay(value.from, optRange.from) && isSameDay(value.to, optRange.to))\r\n })\r\n }\r\n const optionRange = option.getDateRange()\r\n if (!optionRange?.from || !optionRange?.to) return false\r\n return isSameDay(value.from, optionRange.from) && isSameDay(value.to, optionRange.to)\r\n }\r\n\r\n return (\r\n <Popover open={disabled ? false : isOpen} onOpenChange={setIsOpen}>\r\n <PopoverTrigger\r\n render={\r\n <Button\r\n className={cn(\r\n \"group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors\",\r\n \"border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover\",\r\n hasValue &&\r\n \"border-border-brand bg-bg-brand-primary text-text-brand-secondary\",\r\n \"data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n className,\r\n )}\r\n variant={null}\r\n size={null}\r\n disabled={disabled}\r\n >\r\n <span className=\"flex min-w-0 items-center gap-2\">\r\n <CalendarIcon\r\n className={cn(\r\n \"size-4 shrink-0\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n <span className=\"truncate\">\r\n {value?.from\r\n ? value.to\r\n ? `${format(value.from, \"LLL dd, y\")} - ${format(value.to, \"LLL dd, y\")}`\r\n : format(value.from, \"LLL dd, y\")\r\n : placeholder}\r\n </span>\r\n </span>\r\n <ChevronDown\r\n className={cn(\r\n \"size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n </Button>\r\n }\r\n />\r\n <PopoverPopup\r\n className={cn(\r\n \"w-auto border-0\",\r\n options ? \"rounded-2xl p-xp-lg flex gap-6\" : \"p-xp-none bg-transparent\",\r\n )}\r\n >\r\n {options && (\r\n <div className=\"flex flex-col gap-xp-md w-[135px]\">\r\n {dateRangeOptions.map((option) => {\r\n const active = isOptionActive(option)\r\n return (\r\n <Button\r\n key={option.value}\r\n className=\"justify-start px-xp-xl\"\r\n variant={active ? \"tertiary-accent\" : null}\r\n onClick={() => {\r\n const dateRange = option.getDateRange()\r\n if (dateRange) {\r\n setValue(dateRange)\r\n setNavView(\"days\")\r\n setCurrentMonth(dateRange.from)\r\n }\r\n }}\r\n >\r\n {option.label}\r\n </Button>\r\n )\r\n })}\r\n </div>\r\n )}\r\n <Calendar\r\n autoFocus\r\n disabled={disabledDates}\r\n mode=\"range\"\r\n month={currentMonth}\r\n navView={navView}\r\n numberOfMonths={2}\r\n selected={value}\r\n onMonthChange={setCurrentMonth}\r\n onNavViewChange={setNavView}\r\n onSelect={(val) => {\r\n if (required && !val) return\r\n setValue(val)\r\n }}\r\n />\r\n </PopoverPopup>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { DateRangePicker }\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-3733D5Y7.js';import {b,c,g,d,f,h as h$1,i,j as j$1,k,e}from'./chunk-2HZWQU6H.js';import'react';import {XIcon}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs}from'react/jsx-runtime';function A(o){return jsx(b,{...o})}function H(o){return jsx(c,{...o})}function z(o){return jsx(g,{...o})}function h({className:o,...r}){return jsx(e,{className:cn("fixed inset-0 z-50 bg-black/50 backdrop-blur-sm",o),...r})}function B({className:o,children:r,showCloseButton:e=true,closeClassName:t,...p}){return jsxs(d,{children:[jsx(h,{}),jsxs(f,{className:cn("group/dialog-popup fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-2rem)] max-w-lg translate-x-[-50%] translate-y-[-50%] bg-bg-primary shadow-xp-lg rounded-xl overflow-hidden",o),...p,children:[r,e&&jsxs(g,{className:cn("absolute top-3 right-4 rounded-xs transition-colors text-fg-quaternary hover:text-text-primary disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5 mt-px p-2",t),children:[jsx(XIcon,{}),jsx("span",{className:"sr-only",children:"Close"})]})]})]})}function F({className:o,...r}){return jsx(h$1,{className:cn("relative px-4 py-3 grid grid-cols-[auto_1fr] items-start bg-bg-primary border-b border-border-tertiary bg-radial-[100%_200%_at_0%_0%] from-modal-dialog-stop-0 to-bg-primary group-has-[>[data-slot=dialog-close]]/dialog-popup:pr-15",o),...r})}function R({className:o,...r}){return jsx("div",{"data-slot":"dialog-content",className:cn("px-4 py-4 max-h-[60vh] overflow-y-auto",o),...r})}function j({className:o,...r}){return jsx(i,{className:cn("flex gap-2 items-center justify-end bg-bg-primary border-t border-border-tertiary px-4 py-3 shadow-[0px_-1px_24px_0px_var(--color-shadow-xs)] peer-[[data-slot=dialog-content]]:border-0",o),...r})}function I({className:o,...r}){return jsx(j$1,{className:cn("col-start-2 [&:not(:has(~_[data-slot=dialog-description]))]:row-span-2 [&:not(:has(~_[data-slot=dialog-description]))]:self-center text-label-bold-2 text-text-primary",o),...r})}function L({className:o,...r}){return jsx(k,{className:cn("col-start-2 mt-0.5 text-body-regular-3 text-text-secondary",o),...r})}function M({className:o,variant:r="brand",...e}){return jsx("div",{"data-slot":"dialog-icon","data-variant":r,className:cn("row-span-2 flex items-center justify-center rounded-lg mt-px mr-3 p-2.5 [&_svg]:size-4 text-fg-white",r==="brand"&&"bg-bg-brand-solid shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-focus-ring-secondary)]",r==="error"&&"bg-bg-error-solid shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-utility-error-100)]",o),...e})}function V({src:o,imageSrc:r,className:e,avatarClassName:t,avatarImageClassName:p,imageAlt:y,variant:_="profile",...f}){return jsx("div",{"data-slot":"dialog-avatar",className:cn("row-span-2 flex items-center justify-center size-9 rounded-lg mr-3 overflow-hidden bg-bg-primary shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-focus-ring-secondary)]",e),children:jsx(a,{imageSrc:o??r,imageAlt:y,variant:_,bordered:false,badged:false,className:"size-full shrink-0",avatarClassName:cn("size-full shrink-0 rounded-lg",t),avatarImageClassName:cn("size-full object-cover",p),...f})})}export{A as a,H as b,z as c,B as d,F as e,R as f,j as g,I as h,L as i,M as j,V as k};//# sourceMappingURL=chunk-JH5Z2FR6.js.map
2
+ //# sourceMappingURL=chunk-JH5Z2FR6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/dialog.tsx"],"names":["Dialog","props","jsx","DialogTrigger","DialogClose","DialogBackdrop","className","cn","DialogPopup","children","showCloseButton","closeClassName","jsxs","DialogPortal","XIcon","DialogHeader","DialogContent","DialogFooter","DialogTitle","DialogDescription","DialogIcon","variant","DialogAvatar","src","imageSrc","avatarClassName","avatarImageClassName","imageAlt","ProfileAvatar"],"mappings":"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","file":"chunk-JH5Z2FR6.js","sourcesContent":["import * as React from 'react';\r\nimport { XIcon } from 'lucide-react';\r\n\r\nimport {\r\n Dialog as DialogPrimitive,\r\n DialogPopup as DialogPopupPrimitive,\r\n DialogDescription as DialogDescriptionPrimitive,\r\n DialogFooter as DialogFooterPrimitive,\r\n DialogHeader as DialogHeaderPrimitive,\r\n DialogTitle as DialogTitlePrimitive,\r\n DialogTrigger as DialogTriggerPrimitive,\r\n DialogPortal as DialogPortalPrimitive,\r\n DialogBackdrop as DialogBackdropPrimitive,\r\n DialogClose as DialogClosePrimitive,\r\n type DialogProps as DialogPrimitiveProps,\r\n type DialogPopupProps as DialogPopupPrimitiveProps,\r\n type DialogDescriptionProps as DialogDescriptionPrimitiveProps,\r\n type DialogFooterProps as DialogFooterPrimitiveProps,\r\n type DialogHeaderProps as DialogHeaderPrimitiveProps,\r\n type DialogTitleProps as DialogTitlePrimitiveProps,\r\n type DialogTriggerProps as DialogTriggerPrimitiveProps,\r\n type DialogBackdropProps as DialogBackdropPrimitiveProps,\r\n type DialogCloseProps as DialogClosePrimitiveProps,\r\n} from '../primitives/dialog';\r\nimport { ProfileAvatar, type ProfileAvatarVariant } from '../composites/profile-avatar';\r\nimport { cn } from '@xploreu/lib/cn';\r\n\r\ntype DialogProps = DialogPrimitiveProps;\r\n\r\nfunction Dialog(props: DialogProps) {\r\n return <DialogPrimitive {...props} />;\r\n}\r\n\r\ntype DialogTriggerProps = DialogTriggerPrimitiveProps;\r\n\r\nfunction DialogTrigger(props: DialogTriggerProps) {\r\n return <DialogTriggerPrimitive {...props} />;\r\n}\r\n\r\ntype DialogCloseProps = DialogClosePrimitiveProps;\r\n\r\nfunction DialogClose(props: DialogCloseProps) {\r\n return <DialogClosePrimitive {...props} />;\r\n}\r\n\r\ntype DialogBackdropProps = DialogBackdropPrimitiveProps;\r\n\r\nfunction DialogBackdrop({ className, ...props }: DialogBackdropProps) {\r\n return (\r\n <DialogBackdropPrimitive\r\n className={cn('fixed inset-0 z-50 bg-black/50 backdrop-blur-sm', className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype DialogPopupProps = DialogPopupPrimitiveProps & {\r\n showCloseButton?: boolean;\r\n closeClassName?: string;\r\n};\r\n\r\nfunction DialogPopup({\r\n className,\r\n children,\r\n showCloseButton = true,\r\n closeClassName,\r\n ...props\r\n}: DialogPopupProps) {\r\n return (\r\n <DialogPortalPrimitive>\r\n <DialogBackdrop />\r\n <DialogPopupPrimitive\r\n className={cn(\r\n \"group/dialog-popup fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-2rem)] max-w-lg translate-x-[-50%] translate-y-[-50%] bg-bg-primary shadow-xp-lg rounded-xl overflow-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n {showCloseButton && (\r\n <DialogClosePrimitive\r\n className={cn(\r\n \"absolute top-3 right-4 rounded-xs transition-colors text-fg-quaternary hover:text-text-primary disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5 mt-px p-2\",\r\n closeClassName\r\n )}\r\n >\r\n <XIcon />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogClosePrimitive>\r\n )}\r\n </DialogPopupPrimitive>\r\n </DialogPortalPrimitive>\r\n );\r\n}\r\n\r\ntype DialogHeaderProps = DialogHeaderPrimitiveProps;\r\n\r\nfunction DialogHeader({ className, ...props }: DialogHeaderProps) {\r\n return (\r\n <DialogHeaderPrimitive\r\n className={cn(\r\n \"relative px-4 py-3 grid grid-cols-[auto_1fr] items-start bg-bg-primary border-b border-border-tertiary bg-radial-[100%_200%_at_0%_0%] from-modal-dialog-stop-0 to-bg-primary group-has-[>[data-slot=dialog-close]]/dialog-popup:pr-15\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype DialogContentProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nfunction DialogContent({ className, ...props }: DialogContentProps) {\r\n return (\r\n <div\r\n data-slot=\"dialog-content\"\r\n className={cn(\"px-4 py-4 max-h-[60vh] overflow-y-auto\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype DialogFooterProps = DialogFooterPrimitiveProps;\r\n\r\nfunction DialogFooter({ className, ...props }: DialogFooterProps) {\r\n return (\r\n <DialogFooterPrimitive\r\n className={cn(\r\n \"flex gap-2 items-center justify-end bg-bg-primary border-t border-border-tertiary px-4 py-3 shadow-[0px_-1px_24px_0px_var(--color-shadow-xs)] peer-[[data-slot=dialog-content]]:border-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype DialogTitleProps = DialogTitlePrimitiveProps;\r\n\r\nfunction DialogTitle({ className, ...props }: DialogTitleProps) {\r\n return (\r\n <DialogTitlePrimitive\r\n className={cn(\"col-start-2 [&:not(:has(~_[data-slot=dialog-description]))]:row-span-2 [&:not(:has(~_[data-slot=dialog-description]))]:self-center text-label-bold-2 text-text-primary\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype DialogDescriptionProps = DialogDescriptionPrimitiveProps;\r\n\r\nfunction DialogDescription({ className, ...props }: DialogDescriptionProps) {\r\n return (\r\n <DialogDescriptionPrimitive\r\n className={cn(\"col-start-2 mt-0.5 text-body-regular-3 text-text-secondary\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction DialogIcon({ \r\n className, \r\n variant = \"brand\",\r\n ...props \r\n}: React.ComponentProps<\"div\"> & {\r\n variant?: \"brand\" | \"error\"\r\n}) {\r\n return (\r\n <div\r\n data-slot=\"dialog-icon\"\r\n data-variant={variant}\r\n className={cn(\r\n \"row-span-2 flex items-center justify-center rounded-lg mt-px mr-3 p-2.5 [&_svg]:size-4 text-fg-white\",\r\n variant === \"brand\" && \"bg-bg-brand-solid shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-focus-ring-secondary)]\",\r\n variant === \"error\" && \"bg-bg-error-solid shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-utility-error-100)]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype DialogAvatarProps = Omit<React.ComponentProps<typeof ProfileAvatar>, \"size\" | \"bordered\" | \"badged\"> & {\r\n src?: string;\r\n imageAlt?: string;\r\n variant?: ProfileAvatarVariant;\r\n};\r\n\r\nfunction DialogAvatar({\r\n src,\r\n imageSrc,\r\n className,\r\n avatarClassName,\r\n avatarImageClassName,\r\n imageAlt,\r\n variant = \"profile\",\r\n ...props\r\n}: DialogAvatarProps) {\r\n return (\r\n <div\r\n data-slot=\"dialog-avatar\"\r\n className={cn(\r\n \"row-span-2 flex items-center justify-center size-9 rounded-lg mr-3 overflow-hidden bg-bg-primary shadow-[0px_1px_2px_-1px_var(--color-shadow-lg-01),0px_1px_3px_0px_var(--color-shadow-md-01),0px_0px_0px_4px_var(--color-focus-ring-secondary)]\",\r\n className,\r\n )}\r\n >\r\n <ProfileAvatar\r\n imageSrc={src ?? imageSrc}\r\n imageAlt={imageAlt}\r\n variant={variant}\r\n bordered={false}\r\n badged={false}\r\n className=\"size-full shrink-0\"\r\n avatarClassName={cn(\"size-full shrink-0 rounded-lg\", avatarClassName)}\r\n avatarImageClassName={cn(\"size-full object-cover\", avatarImageClassName)}\r\n {...props}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport {\r\n Dialog,\r\n DialogTrigger,\r\n DialogClose,\r\n DialogPopup,\r\n DialogHeader,\r\n DialogContent,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n DialogIcon,\r\n DialogAvatar,\r\n type DialogProps,\r\n type DialogTriggerProps,\r\n type DialogCloseProps,\r\n type DialogPopupProps,\r\n type DialogHeaderProps,\r\n type DialogContentProps,\r\n type DialogFooterProps,\r\n type DialogTitleProps,\r\n type DialogDescriptionProps,\r\n type DialogAvatarProps,\r\n};"]}
@@ -1,2 +1,2 @@
1
- import {a as a$2}from'./chunk-WWCXHCNU.js';import {a,b,c}from'./chunk-NGSCUYDU.js';import {b as b$1}from'./chunk-VNAMAKPG.js';import {a as a$1}from'./chunk-T7HRX3EC.js';import*as t from'react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {format}from'date-fns';import {ChevronDown}from'lucide-react';import'react-day-picker';import {cn}from'@xploreu/lib/cn';import {jsxs,jsx}from'react/jsx-runtime';function E({className:h,value:x,onValueChange:o,defaultValue:y,required:n,disabled:i,placeholder:v="Pick a date",disabledDates:P,dateFormat:C="LLL dd, y",...D}){let k=t.useCallback(e=>{n?e&&o?.(e):o?.(e);},[o,n]),[r,w]=useControlledState({value:x,defaultValue:y,onChange:k}),[N,M]=t.useState(r||new Date),[S,l]=t.useState(false),d=!!r;return jsxs(a,{open:i?false:S,onOpenChange:l,children:[jsx(b,{className:"w-full",render:jsxs(b$1,{className:cn("group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors","border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover",d&&"border-border-brand bg-bg-brand-primary text-text-brand-secondary","data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary","disabled:pointer-events-none disabled:opacity-50",h),variant:null,size:null,disabled:i,children:[jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[jsx(a$1,{className:cn("size-4 shrink-0",d?"text-fg-brand-primary":"text-fg-quaternary")}),jsx("span",{className:"truncate",children:r?format(r,C):v})]}),jsx(ChevronDown,{className:cn("size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180",d?"text-fg-brand-primary":"text-fg-quaternary")})]})}),jsx(c,{className:"w-auto border-0 rounded-[20px] p-xp-none bg-transparent",style:{background:"linear-gradient(180deg, rgba(46, 51, 90, 0) 0%, rgba(28, 27, 51, 0.04) 100%), radial-gradient(146.13% 118.42% at 50% -15.5%, rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0) 99.59%)",backdropFilter:"blur(20px)",boxShadow:"0px 30px 60px 0px #0000001A"},children:jsx(a$2,{autoFocus:true,disabled:P,mode:"single",month:N,selected:r,onMonthChange:M,onSelect:e=>{n&&!e||(w(e),l(false));},...D})})]})}export{E as a};//# sourceMappingURL=chunk-EE5QQGMX.js.map
2
- //# sourceMappingURL=chunk-EE5QQGMX.js.map
1
+ import {a as a$2}from'./chunk-WWCXHCNU.js';import {a,b,c}from'./chunk-NGSCUYDU.js';import {a as a$1}from'./chunk-T7HRX3EC.js';import {b as b$1}from'./chunk-VNAMAKPG.js';import*as t from'react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {format}from'date-fns';import {ChevronDown}from'lucide-react';import'react-day-picker';import {cn}from'@xploreu/lib/cn';import {jsxs,jsx}from'react/jsx-runtime';function E({className:h,value:x,onValueChange:o,defaultValue:y,required:n,disabled:i,placeholder:v="Pick a date",disabledDates:P,dateFormat:C="LLL dd, y",...D}){let k=t.useCallback(e=>{n?e&&o?.(e):o?.(e);},[o,n]),[r,w]=useControlledState({value:x,defaultValue:y,onChange:k}),[N,M]=t.useState(r||new Date),[S,l]=t.useState(false),d=!!r;return jsxs(a,{open:i?false:S,onOpenChange:l,children:[jsx(b,{className:"w-full",render:jsxs(b$1,{className:cn("group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors","border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover",d&&"border-border-brand bg-bg-brand-primary text-text-brand-secondary","data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary","disabled:pointer-events-none disabled:opacity-50",h),variant:null,size:null,disabled:i,children:[jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[jsx(a$1,{className:cn("size-4 shrink-0",d?"text-fg-brand-primary":"text-fg-quaternary")}),jsx("span",{className:"truncate",children:r?format(r,C):v})]}),jsx(ChevronDown,{className:cn("size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180",d?"text-fg-brand-primary":"text-fg-quaternary")})]})}),jsx(c,{className:"w-auto border-0 rounded-[20px] p-xp-none bg-transparent",style:{background:"linear-gradient(180deg, rgba(46, 51, 90, 0) 0%, rgba(28, 27, 51, 0.04) 100%), radial-gradient(146.13% 118.42% at 50% -15.5%, rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0) 99.59%)",backdropFilter:"blur(20px)",boxShadow:"0px 30px 60px 0px #0000001A"},children:jsx(a$2,{autoFocus:true,disabled:P,mode:"single",month:N,selected:r,onMonthChange:M,onSelect:e=>{n&&!e||(w(e),l(false));},...D})})]})}export{E as a};//# sourceMappingURL=chunk-JSAE42ES.js.map
2
+ //# sourceMappingURL=chunk-JSAE42ES.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/date-picker.tsx"],"names":["DatePicker","className","valueProp","onValueChange","defaultValue","required","disabled","placeholder","disabledDates","dateFormat","props","handleValueChange","val","value","setValue","useControlledState","currentMonth","setCurrentMonth","isOpen","setIsOpen","hasValue","jsxs","Popover","jsx","PopoverTrigger","Button","cn","calendar_icon_default","format","ChevronDown","PopoverPopup","Calendar"],"mappings":"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","file":"chunk-EE5QQGMX.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport { format } from \"date-fns\"\r\nimport { ChevronDown } from \"lucide-react\"\r\nimport { type Matcher } from \"react-day-picker\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { CalendarIcon } from \"../icons\"\r\nimport { Button } from \"./button\"\r\nimport { Calendar, type CalendarProps } from \"./calendar\"\r\nimport { Popover, PopoverPopup, PopoverTrigger } from \"./popover\"\r\n\r\nexport type DatePickerProps = {\r\n className?: string\r\n value?: Date\r\n defaultValue?: Date\r\n required?: boolean\r\n disabled?: boolean\r\n placeholder?: string\r\n disabledDates?: Matcher | Matcher[] | undefined\r\n dateFormat?: string\r\n} & ({\r\n required: true\r\n onValueChange?: (value: Date) => void\r\n} | {\r\n required?: false\r\n onValueChange?: (value: Date | undefined) => void\r\n}) & Omit<CalendarProps, \"mode\" | \"selected\" | \"onSelect\" | \"month\" | \"onMonthChange\">\r\n\r\nfunction DatePicker({\r\n className,\r\n value: valueProp,\r\n onValueChange,\r\n defaultValue,\r\n required,\r\n disabled,\r\n placeholder = \"Pick a date\",\r\n disabledDates,\r\n dateFormat = \"LLL dd, y\",\r\n ...props\r\n}: DatePickerProps) {\r\n const handleValueChange = React.useCallback(\r\n (val: Date | undefined) => {\r\n if (required) {\r\n if (val) onValueChange?.(val)\r\n } else {\r\n onValueChange?.(val)\r\n }\r\n },\r\n [onValueChange, required],\r\n )\r\n\r\n const [value, setValue] = useControlledState<Date | undefined>({\r\n value: valueProp,\r\n defaultValue,\r\n onChange: handleValueChange,\r\n })\r\n\r\n const [currentMonth, setCurrentMonth] = React.useState<Date | undefined>(value || new Date())\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n\r\n const hasValue = !!value\r\n\r\n return (\r\n <Popover open={disabled ? false : isOpen} onOpenChange={setIsOpen}>\r\n <PopoverTrigger\r\n className=\"w-full\"\r\n render={\r\n <Button\r\n className={cn(\r\n \"group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors\",\r\n \"border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover\",\r\n hasValue &&\r\n \"border-border-brand bg-bg-brand-primary text-text-brand-secondary\",\r\n \"data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n className,\r\n )}\r\n variant={null}\r\n size={null}\r\n disabled={disabled}\r\n >\r\n <span className=\"flex min-w-0 items-center gap-2\">\r\n <CalendarIcon\r\n className={cn(\r\n \"size-4 shrink-0\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n <span className=\"truncate\">\r\n {value ? format(value, dateFormat) : placeholder}\r\n </span>\r\n </span>\r\n <ChevronDown\r\n className={cn(\r\n \"size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n </Button>\r\n }\r\n />\r\n <PopoverPopup\r\n className=\"w-auto border-0 rounded-[20px] p-xp-none bg-transparent\"\r\n style={{\r\n background:\r\n \"linear-gradient(180deg, rgba(46, 51, 90, 0) 0%, rgba(28, 27, 51, 0.04) 100%), radial-gradient(146.13% 118.42% at 50% -15.5%, rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0) 99.59%)\",\r\n backdropFilter: \"blur(20px)\",\r\n boxShadow: \"0px 30px 60px 0px #0000001A\",\r\n }}\r\n >\r\n <Calendar\r\n autoFocus\r\n disabled={disabledDates}\r\n mode=\"single\"\r\n month={currentMonth}\r\n selected={value}\r\n onMonthChange={setCurrentMonth}\r\n onSelect={(val) => {\r\n if (required && !val) return\r\n setValue(val)\r\n setIsOpen(false)\r\n }}\r\n {...props}\r\n />\r\n </PopoverPopup>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { DatePicker }\r\n"]}
1
+ {"version":3,"sources":["../src/ui/date-picker.tsx"],"names":["DatePicker","className","valueProp","onValueChange","defaultValue","required","disabled","placeholder","disabledDates","dateFormat","props","handleValueChange","val","value","setValue","useControlledState","currentMonth","setCurrentMonth","isOpen","setIsOpen","hasValue","jsxs","Popover","jsx","PopoverTrigger","Button","cn","calendar_icon_default","format","ChevronDown","PopoverPopup","Calendar"],"mappings":"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","file":"chunk-JSAE42ES.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport { format } from \"date-fns\"\r\nimport { ChevronDown } from \"lucide-react\"\r\nimport { type Matcher } from \"react-day-picker\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { CalendarIcon } from \"../icons\"\r\nimport { Button } from \"./button\"\r\nimport { Calendar, type CalendarProps } from \"./calendar\"\r\nimport { Popover, PopoverPopup, PopoverTrigger } from \"./popover\"\r\n\r\nexport type DatePickerProps = {\r\n className?: string\r\n value?: Date\r\n defaultValue?: Date\r\n required?: boolean\r\n disabled?: boolean\r\n placeholder?: string\r\n disabledDates?: Matcher | Matcher[] | undefined\r\n dateFormat?: string\r\n} & ({\r\n required: true\r\n onValueChange?: (value: Date) => void\r\n} | {\r\n required?: false\r\n onValueChange?: (value: Date | undefined) => void\r\n}) & Omit<CalendarProps, \"mode\" | \"selected\" | \"onSelect\" | \"month\" | \"onMonthChange\">\r\n\r\nfunction DatePicker({\r\n className,\r\n value: valueProp,\r\n onValueChange,\r\n defaultValue,\r\n required,\r\n disabled,\r\n placeholder = \"Pick a date\",\r\n disabledDates,\r\n dateFormat = \"LLL dd, y\",\r\n ...props\r\n}: DatePickerProps) {\r\n const handleValueChange = React.useCallback(\r\n (val: Date | undefined) => {\r\n if (required) {\r\n if (val) onValueChange?.(val)\r\n } else {\r\n onValueChange?.(val)\r\n }\r\n },\r\n [onValueChange, required],\r\n )\r\n\r\n const [value, setValue] = useControlledState<Date | undefined>({\r\n value: valueProp,\r\n defaultValue,\r\n onChange: handleValueChange,\r\n })\r\n\r\n const [currentMonth, setCurrentMonth] = React.useState<Date | undefined>(value || new Date())\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n\r\n const hasValue = !!value\r\n\r\n return (\r\n <Popover open={disabled ? false : isOpen} onOpenChange={setIsOpen}>\r\n <PopoverTrigger\r\n className=\"w-full\"\r\n render={\r\n <Button\r\n className={cn(\r\n \"group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors\",\r\n \"border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover\",\r\n hasValue &&\r\n \"border-border-brand bg-bg-brand-primary text-text-brand-secondary\",\r\n \"data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n className,\r\n )}\r\n variant={null}\r\n size={null}\r\n disabled={disabled}\r\n >\r\n <span className=\"flex min-w-0 items-center gap-2\">\r\n <CalendarIcon\r\n className={cn(\r\n \"size-4 shrink-0\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n <span className=\"truncate\">\r\n {value ? format(value, dateFormat) : placeholder}\r\n </span>\r\n </span>\r\n <ChevronDown\r\n className={cn(\r\n \"size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n </Button>\r\n }\r\n />\r\n <PopoverPopup\r\n className=\"w-auto border-0 rounded-[20px] p-xp-none bg-transparent\"\r\n style={{\r\n background:\r\n \"linear-gradient(180deg, rgba(46, 51, 90, 0) 0%, rgba(28, 27, 51, 0.04) 100%), radial-gradient(146.13% 118.42% at 50% -15.5%, rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0) 99.59%)\",\r\n backdropFilter: \"blur(20px)\",\r\n boxShadow: \"0px 30px 60px 0px #0000001A\",\r\n }}\r\n >\r\n <Calendar\r\n autoFocus\r\n disabled={disabledDates}\r\n mode=\"single\"\r\n month={currentMonth}\r\n selected={value}\r\n onMonthChange={setCurrentMonth}\r\n onSelect={(val) => {\r\n if (required && !val) return\r\n setValue(val)\r\n setIsOpen(false)\r\n }}\r\n {...props}\r\n />\r\n </PopoverPopup>\r\n </Popover>\r\n )\r\n}\r\n\r\nexport { DatePicker }\r\n"]}
@@ -1,2 +1,2 @@
1
- import {d,e,b,c,f,g,h,i,j,a,l}from'./chunk-4IAMLCAM.js';import {b as b$1}from'./chunk-VNAMAKPG.js';import {a as a$1}from'./chunk-WI5V5Z76.js';import {b as b$3}from'./chunk-QWCYJC3T.js';import {b as b$4}from'./chunk-4WDDWMBW.js';import {b as b$2}from'./chunk-ZQWDYX2E.js';import'react';import {cn}from'@xploreu/lib/cn';import {XIcon,Loader2Icon}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';function k({...t}){return jsx(d,{...t})}var D={"top-right":"fixed top-4 inset-x-4 sm:inset-x-auto sm:top-4 sm:right-4 sm:left-auto sm:w-full sm:max-w-sm","top-left":"fixed top-4 inset-x-4 sm:inset-x-auto sm:top-4 sm:left-4 sm:right-auto sm:w-full sm:max-w-sm","top-center":"fixed top-4 left-1/2 -translate-x-1/2 w-[calc(100%-2rem)] sm:w-full sm:max-w-sm","bottom-right":"fixed bottom-4 inset-x-4 sm:inset-x-auto sm:bottom-4 sm:right-4 sm:left-auto sm:w-full sm:max-w-sm","bottom-left":"fixed bottom-4 inset-x-4 sm:inset-x-auto sm:bottom-4 sm:left-4 sm:right-auto sm:w-full sm:max-w-sm","bottom-center":"fixed bottom-4 left-1/2 -translate-x-1/2 w-[calc(100%-2rem)] sm:w-full sm:max-w-sm"};function z({className:t,position:o="top-right",...e$1}){return jsx(e,{className:cn("group/viewport pointer-events-none z-[1000] mx-auto outline-none",D[o],t),...e$1})}function A(t){return jsx(b,{...t})}function V({className:t,children:o,style:e,...i}){return jsxs(c,{style:e,className:cn("group/toast pointer-events-auto absolute right-0 z-[calc(1000-var(--toast-index))] w-full shadow-lg will-change-transform outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-focus-ring","bottom-0 origin-bottom rounded-l-[10.4px] rounded-r-lg","data-[position^=top]:top-0 data-[position^=top]:bottom-auto data-[position^=top]:origin-top","[--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc((var(--toast-index)*(var(--height)+var(--gap))*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))]","data-[position^=top]:[--offset-y:calc((var(--toast-index)*(var(--height)+var(--gap)))+var(--toast-swipe-movement-y))]","h-(--height) [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] [transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms]","data-[position^=top]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+(var(--toast-index)*var(--peek))+(var(--shrink)*var(--height))))_scale(var(--scale))]","after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']","group-hover/viewport:data-expanded:h-(--toast-height) group-hover/viewport:data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]","group-focus-within/viewport:data-expanded:h-(--toast-height) group-focus-within/viewport:data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]","data-limited:opacity-0 data-limited:pointer-events-none data-limited:invisible data-starting-style:[transform:translateY(150%)]","data-[position^=top]:data-starting-style:[transform:translateY(-150%)]","[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]","data-[position^=top]:[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(-150%)]","data-ending-style:opacity-0","data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]","data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]","data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]","data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]","group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]","group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]","group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]","group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]","group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]","group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]","group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]","group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]",t),...i,children:[jsx("div",{className:cn("absolute left-0 inset-y-0 w-[10.4px] rounded-l-[10.4px] bg-[linear-gradient(180deg,#377DFA_0%,#185BC2_80%)]","group-data-[type=warning]/toast:bg-[linear-gradient(180deg,#F79009_0%,#B54708_80%)]","group-data-[type=info]/toast:bg-[linear-gradient(180deg,#068BEE_0%,#175BCC_80%)]","group-data-[type=success]/toast:bg-[linear-gradient(180deg,#17B26A_0%,#067647_80%)]","group-data-[type=error]/toast:bg-[linear-gradient(180deg,#F04438_0%,#B42318_80%)]")}),jsx("div",{className:cn("relative border border-border-secondary rounded-lg ml-[2.4px] bg-bg-primary z-10 bg-radial-[100%_200%_at_0%_0%] to-bg-primary","from-modal-dialog-stop-0","group-data-[type=warning]/toast:from-utility-warning-50","group-data-[type=info]/toast:from-utility-blue-50","group-data-[type=success]/toast:from-utility-success-50","group-data-[type=error]/toast:from-utility-error-50"),children:o})]})}function X({className:t,...o}){return jsx(f,{className:cn("flex h-full items-center gap-3 overflow-hidden p-4 transition-opacity duration-250 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-behind/toast:opacity-0 group-hover/viewport:group-data-expanded/toast:opacity-100 group-focus-within/viewport:group-data-expanded/toast:opacity-100",t),...o})}function I({className:t,...o}){return jsx(g,{className:cn("text-label-semibold-2 text-text-primary","group-data-[type=warning]/toast:text-text-warning-primary","group-data-[type=info]/toast:text-text-info-primary","group-data-[type=success]/toast:text-text-success-primary","group-data-[type=error]/toast:text-text-error-primary",t),...o})}function B({className:t,...o}){return jsx(h,{className:cn("text-body-regular-2 text-text-secondary",t),...o})}function S({className:t,render:o=jsx(b$1,{size:"sm",variant:"secondary"}),...e}){return jsx(i,{render:o,className:cn("shrink-0",t),...e})}function R({className:t,children:o,...e}){return jsx(j,{"aria-label":"Close toast",className:cn("relative shrink-0 text-fg-quaternary after:absolute after:-inset-2 after:content-[''] hover:text-text-error-primary size-6 inline-flex items-center justify-center [&_svg:not([class*='size-'])]:size-3.5",t),...e,children:o??jsx(XIcon,{"aria-hidden":"true"})})}function q({type:t}){let o=null;return t==="success"&&(o=jsx(b$2,{className:"text-fg-success-primary"})),t==="info"&&(o=jsx(a$1,{className:"text-fg-info-primary"})),t==="warning"&&(o=jsx(b$3,{className:"text-fg-warning-primary"})),t==="error"&&(o=jsx(b$4,{className:"text-fg-error-primary"})),t==="loading"&&(o=jsx(Loader2Icon,{className:"animate-spin","aria-hidden":"true"})),o?jsx("span",{"data-slot":"toast-icon",className:"shrink-0 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6",children:o}):null}var F=["top-right","top-left","top-center","bottom-right","bottom-left","bottom-center"];function M({defaultPosition:t,position:o,limit:e=3}){let{toasts:i}=l();return i.filter(s=>(s.position??t)===o).map((s,p)=>jsx(V,{toast:s,"data-position":o,"data-behind":p>0?"":void 0,"data-limited":e!==void 0&&p>=e?"":void 0,style:{"--toast-index":p},children:jsxs(X,{children:[jsx(q,{type:s.type}),jsxs("div",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[jsx(I,{}),jsx(B,{})]}),jsx(S,{}),jsx(R,{})]})},s.id))}function K({children:t,position:o="top-right",limit:e=3,toastManager:i=a,...l}){return jsxs(A,{toastManager:i,limit:e,...l,children:[t,jsx(k,{children:F.map(s=>jsx(z,{position:s,children:jsx(M,{defaultPosition:o,position:s,limit:e})},s))})]})}export{k as a,z as b,A as c,V as d,X as e,I as f,B as g,S as h,R as i,K as j};//# sourceMappingURL=chunk-3QGG35QR.js.map
2
- //# sourceMappingURL=chunk-3QGG35QR.js.map
1
+ import {d,e,b,c,f,g,h,i,j,a,l}from'./chunk-4IAMLCAM.js';import {a as a$1}from'./chunk-WI5V5Z76.js';import {b as b$3}from'./chunk-QWCYJC3T.js';import {b as b$4}from'./chunk-4WDDWMBW.js';import {b as b$2}from'./chunk-ZQWDYX2E.js';import {b as b$1}from'./chunk-VNAMAKPG.js';import'react';import {cn}from'@xploreu/lib/cn';import {XIcon,Loader2Icon}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';function k({...t}){return jsx(d,{...t})}var D={"top-right":"fixed top-4 inset-x-4 sm:inset-x-auto sm:top-4 sm:right-4 sm:left-auto sm:w-full sm:max-w-sm","top-left":"fixed top-4 inset-x-4 sm:inset-x-auto sm:top-4 sm:left-4 sm:right-auto sm:w-full sm:max-w-sm","top-center":"fixed top-4 left-1/2 -translate-x-1/2 w-[calc(100%-2rem)] sm:w-full sm:max-w-sm","bottom-right":"fixed bottom-4 inset-x-4 sm:inset-x-auto sm:bottom-4 sm:right-4 sm:left-auto sm:w-full sm:max-w-sm","bottom-left":"fixed bottom-4 inset-x-4 sm:inset-x-auto sm:bottom-4 sm:left-4 sm:right-auto sm:w-full sm:max-w-sm","bottom-center":"fixed bottom-4 left-1/2 -translate-x-1/2 w-[calc(100%-2rem)] sm:w-full sm:max-w-sm"};function z({className:t,position:o="top-right",...e$1}){return jsx(e,{className:cn("group/viewport pointer-events-none z-[1000] mx-auto outline-none",D[o],t),...e$1})}function A(t){return jsx(b,{...t})}function V({className:t,children:o,style:e,...i}){return jsxs(c,{style:e,className:cn("group/toast pointer-events-auto absolute right-0 z-[calc(1000-var(--toast-index))] w-full shadow-lg will-change-transform outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-focus-ring","bottom-0 origin-bottom rounded-l-[10.4px] rounded-r-lg","data-[position^=top]:top-0 data-[position^=top]:bottom-auto data-[position^=top]:origin-top","[--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc((var(--toast-index)*(var(--height)+var(--gap))*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))]","data-[position^=top]:[--offset-y:calc((var(--toast-index)*(var(--height)+var(--gap)))+var(--toast-swipe-movement-y))]","h-(--height) [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] [transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms]","data-[position^=top]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+(var(--toast-index)*var(--peek))+(var(--shrink)*var(--height))))_scale(var(--scale))]","after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']","group-hover/viewport:data-expanded:h-(--toast-height) group-hover/viewport:data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]","group-focus-within/viewport:data-expanded:h-(--toast-height) group-focus-within/viewport:data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]","data-limited:opacity-0 data-limited:pointer-events-none data-limited:invisible data-starting-style:[transform:translateY(150%)]","data-[position^=top]:data-starting-style:[transform:translateY(-150%)]","[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]","data-[position^=top]:[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(-150%)]","data-ending-style:opacity-0","data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]","data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]","data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]","data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]","group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]","group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]","group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]","group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]","group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]","group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]","group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]","group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]",t),...i,children:[jsx("div",{className:cn("absolute left-0 inset-y-0 w-[10.4px] rounded-l-[10.4px] bg-[linear-gradient(180deg,#377DFA_0%,#185BC2_80%)]","group-data-[type=warning]/toast:bg-[linear-gradient(180deg,#F79009_0%,#B54708_80%)]","group-data-[type=info]/toast:bg-[linear-gradient(180deg,#068BEE_0%,#175BCC_80%)]","group-data-[type=success]/toast:bg-[linear-gradient(180deg,#17B26A_0%,#067647_80%)]","group-data-[type=error]/toast:bg-[linear-gradient(180deg,#F04438_0%,#B42318_80%)]")}),jsx("div",{className:cn("relative border border-border-secondary rounded-lg ml-[2.4px] bg-bg-primary z-10 bg-radial-[100%_200%_at_0%_0%] to-bg-primary","from-modal-dialog-stop-0","group-data-[type=warning]/toast:from-utility-warning-50","group-data-[type=info]/toast:from-utility-blue-50","group-data-[type=success]/toast:from-utility-success-50","group-data-[type=error]/toast:from-utility-error-50"),children:o})]})}function X({className:t,...o}){return jsx(f,{className:cn("flex h-full items-center gap-3 overflow-hidden p-4 transition-opacity duration-250 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-behind/toast:opacity-0 group-hover/viewport:group-data-expanded/toast:opacity-100 group-focus-within/viewport:group-data-expanded/toast:opacity-100",t),...o})}function I({className:t,...o}){return jsx(g,{className:cn("text-label-semibold-2 text-text-primary","group-data-[type=warning]/toast:text-text-warning-primary","group-data-[type=info]/toast:text-text-info-primary","group-data-[type=success]/toast:text-text-success-primary","group-data-[type=error]/toast:text-text-error-primary",t),...o})}function B({className:t,...o}){return jsx(h,{className:cn("text-body-regular-2 text-text-secondary",t),...o})}function S({className:t,render:o=jsx(b$1,{size:"sm",variant:"secondary"}),...e}){return jsx(i,{render:o,className:cn("shrink-0",t),...e})}function R({className:t,children:o,...e}){return jsx(j,{"aria-label":"Close toast",className:cn("relative shrink-0 text-fg-quaternary after:absolute after:-inset-2 after:content-[''] hover:text-text-error-primary size-6 inline-flex items-center justify-center [&_svg:not([class*='size-'])]:size-3.5",t),...e,children:o??jsx(XIcon,{"aria-hidden":"true"})})}function q({type:t}){let o=null;return t==="success"&&(o=jsx(b$2,{className:"text-fg-success-primary"})),t==="info"&&(o=jsx(a$1,{className:"text-fg-info-primary"})),t==="warning"&&(o=jsx(b$3,{className:"text-fg-warning-primary"})),t==="error"&&(o=jsx(b$4,{className:"text-fg-error-primary"})),t==="loading"&&(o=jsx(Loader2Icon,{className:"animate-spin","aria-hidden":"true"})),o?jsx("span",{"data-slot":"toast-icon",className:"shrink-0 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6",children:o}):null}var F=["top-right","top-left","top-center","bottom-right","bottom-left","bottom-center"];function M({defaultPosition:t,position:o,limit:e=3}){let{toasts:i}=l();return i.filter(s=>(s.position??t)===o).map((s,p)=>jsx(V,{toast:s,"data-position":o,"data-behind":p>0?"":void 0,"data-limited":e!==void 0&&p>=e?"":void 0,style:{"--toast-index":p},children:jsxs(X,{children:[jsx(q,{type:s.type}),jsxs("div",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[jsx(I,{}),jsx(B,{})]}),jsx(S,{}),jsx(R,{})]})},s.id))}function K({children:t,position:o="top-right",limit:e=3,toastManager:i=a,...l}){return jsxs(A,{toastManager:i,limit:e,...l,children:[t,jsx(k,{children:F.map(s=>jsx(z,{position:s,children:jsx(M,{defaultPosition:o,position:s,limit:e})},s))})]})}export{k as a,z as b,A as c,V as d,X as e,I as f,B as g,S as h,R as i,K as j};//# sourceMappingURL=chunk-K4MWSMUN.js.map
2
+ //# sourceMappingURL=chunk-K4MWSMUN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/toast.tsx"],"names":["ToastPortal","props","jsx","positionVariants","ToastViewport","className","position","cn","ToastProvider","Toast","children","style","jsxs","ToastContent","ToastTitle","ToastDescription","ToastAction","render","Button","ToastClose","XIcon","ToastIcon","type","icon","check_square_icon_default","info_square_icon_default","danger_triangle_icon_default","close_square_icon_default","Loader2Icon","POSITIONS","ToastList","defaultPosition","limit","toasts","useToastManager","item","toastItem","index","Toaster","toastManager","toast","pos"],"mappings":"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","file":"chunk-3QGG35QR.js","sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport {\r\n ToastPortal as ToastPortalPrimitive,\r\n ToastViewport as ToastViewportPrimitive,\r\n ToastProvider as ToastProviderPrimitive,\r\n Toast as ToastPrimitive,\r\n ToastContent as ToastContentPrimitive,\r\n ToastTitle as ToastTitlePrimitive,\r\n ToastDescription as ToastDescriptionPrimitive,\r\n ToastAction as ToastActionPrimitive,\r\n ToastClose as ToastClosePrimitive,\r\n toast,\r\n createToastManager,\r\n useToastManager,\r\n type ToastPortalProps as ToastPortalPrimitiveProps,\r\n type ToastViewportProps as ToastViewportPrimitiveProps,\r\n type ToastProviderProps as ToastProviderPrimitiveProps,\r\n type ToastProps as ToastPrimitiveProps,\r\n type ToastContentProps as ToastContentPrimitiveProps,\r\n type ToastTitleProps as ToastTitlePrimitiveProps,\r\n type ToastDescriptionProps as ToastDescriptionPrimitiveProps,\r\n type ToastActionProps as ToastActionPrimitiveProps,\r\n type ToastCloseProps as ToastClosePrimitiveProps,\r\n} from \"../primitives/toast\";\r\nimport { cn } from \"@xploreu/lib/cn\";\r\nimport {\r\n InfoSquareIcon,\r\n CheckSquareIcon,\r\n CloseSquareIcon,\r\n DangerTriangleIcon,\r\n} from \"../icons\";\r\nimport { Button } from \"./button\";\r\nimport {\r\n XIcon,\r\n Loader2Icon\r\n} from \"lucide-react\"\r\n\r\ntype ToastPortalProps = ToastPortalPrimitiveProps;\r\n\r\nfunction ToastPortal({ ...props }: ToastPortalProps) {\r\n return <ToastPortalPrimitive {...props} />;\r\n}\r\n\r\nexport type ToastPosition =\r\n | \"top-right\"\r\n | \"top-left\"\r\n | \"top-center\"\r\n | \"bottom-right\"\r\n | \"bottom-left\"\r\n | \"bottom-center\";\r\n\r\ndeclare module \"@base-ui/react/toast\" {\r\n interface ToastObject<Data extends object> {\r\n position?: ToastPosition;\r\n }\r\n}\r\n\r\ntype ToastViewportProps = ToastViewportPrimitiveProps & {\r\n position?: ToastPosition;\r\n};\r\n\r\nconst positionVariants: Record<ToastPosition, string> = {\r\n \"top-right\":\r\n \"fixed top-4 inset-x-4 sm:inset-x-auto sm:top-4 sm:right-4 sm:left-auto sm:w-full sm:max-w-sm\",\r\n \"top-left\":\r\n \"fixed top-4 inset-x-4 sm:inset-x-auto sm:top-4 sm:left-4 sm:right-auto sm:w-full sm:max-w-sm\",\r\n \"top-center\":\r\n \"fixed top-4 left-1/2 -translate-x-1/2 w-[calc(100%-2rem)] sm:w-full sm:max-w-sm\",\r\n \"bottom-right\":\r\n \"fixed bottom-4 inset-x-4 sm:inset-x-auto sm:bottom-4 sm:right-4 sm:left-auto sm:w-full sm:max-w-sm\",\r\n \"bottom-left\":\r\n \"fixed bottom-4 inset-x-4 sm:inset-x-auto sm:bottom-4 sm:left-4 sm:right-auto sm:w-full sm:max-w-sm\",\r\n \"bottom-center\":\r\n \"fixed bottom-4 left-1/2 -translate-x-1/2 w-[calc(100%-2rem)] sm:w-full sm:max-w-sm\",\r\n};\r\n\r\nfunction ToastViewport({\r\n className,\r\n position = \"top-right\",\r\n ...props\r\n}: ToastViewportProps) {\r\n return (\r\n <ToastViewportPrimitive\r\n className={cn(\r\n \"group/viewport pointer-events-none z-[1000] mx-auto outline-none\",\r\n positionVariants[position],\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype ToastProviderProps = ToastProviderPrimitiveProps;\r\n\r\nfunction ToastProvider(props: ToastProviderProps) {\r\n return <ToastProviderPrimitive {...props} />;\r\n}\r\n\r\ntype ToastProps = ToastPrimitiveProps\r\n\r\nfunction Toast({\r\n className,\r\n children,\r\n style,\r\n ...props\r\n}: ToastProps) {\r\n return (\r\n <ToastPrimitive\r\n style={style}\r\n className={cn(\r\n \"group/toast pointer-events-auto absolute right-0 z-[calc(1000-var(--toast-index))] w-full shadow-lg will-change-transform outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-focus-ring\",\r\n \"bottom-0 origin-bottom rounded-l-[10.4px] rounded-r-lg\",\r\n \"data-[position^=top]:top-0 data-[position^=top]:bottom-auto data-[position^=top]:origin-top\",\r\n \"[--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc((var(--toast-index)*(var(--height)+var(--gap))*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))]\",\r\n \"data-[position^=top]:[--offset-y:calc((var(--toast-index)*(var(--height)+var(--gap)))+var(--toast-swipe-movement-y))]\",\r\n \"h-(--height) [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] [transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms]\",\r\n \"data-[position^=top]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+(var(--toast-index)*var(--peek))+(var(--shrink)*var(--height))))_scale(var(--scale))]\",\r\n \"after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']\",\r\n \"group-hover/viewport:data-expanded:h-(--toast-height) group-hover/viewport:data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]\",\r\n \"group-focus-within/viewport:data-expanded:h-(--toast-height) group-focus-within/viewport:data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]\",\r\n \"data-limited:opacity-0 data-limited:pointer-events-none data-limited:invisible data-starting-style:[transform:translateY(150%)]\",\r\n \"data-[position^=top]:data-starting-style:[transform:translateY(-150%)]\",\r\n \"[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]\",\r\n \"data-[position^=top]:[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(-150%)]\",\r\n \"data-ending-style:opacity-0\",\r\n \"data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]\",\r\n \"data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]\",\r\n \"data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]\",\r\n \"data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]\",\r\n \"group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]\",\r\n \"group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]\",\r\n \"group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]\",\r\n \"group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]\",\r\n \"group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]\",\r\n \"group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]\",\r\n \"group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]\",\r\n \"group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className={cn(\r\n \"absolute left-0 inset-y-0 w-[10.4px] rounded-l-[10.4px] bg-[linear-gradient(180deg,#377DFA_0%,#185BC2_80%)]\",\r\n \"group-data-[type=warning]/toast:bg-[linear-gradient(180deg,#F79009_0%,#B54708_80%)]\",\r\n \"group-data-[type=info]/toast:bg-[linear-gradient(180deg,#068BEE_0%,#175BCC_80%)]\",\r\n \"group-data-[type=success]/toast:bg-[linear-gradient(180deg,#17B26A_0%,#067647_80%)]\",\r\n \"group-data-[type=error]/toast:bg-[linear-gradient(180deg,#F04438_0%,#B42318_80%)]\",\r\n )} />\r\n <div className={cn(\r\n \"relative border border-border-secondary rounded-lg ml-[2.4px] bg-bg-primary z-10 bg-radial-[100%_200%_at_0%_0%] to-bg-primary\",\r\n \"from-modal-dialog-stop-0\",\r\n \"group-data-[type=warning]/toast:from-utility-warning-50\",\r\n \"group-data-[type=info]/toast:from-utility-blue-50\",\r\n \"group-data-[type=success]/toast:from-utility-success-50\",\r\n \"group-data-[type=error]/toast:from-utility-error-50\",\r\n )}>\r\n {children}\r\n </div>\r\n </ToastPrimitive>\r\n );\r\n}\r\n\r\ntype ToastContentProps = ToastContentPrimitiveProps;\r\n\r\nfunction ToastContent({ className, ...props }: ToastContentProps) {\r\n return (\r\n <ToastContentPrimitive\r\n className={cn(\r\n \"flex h-full items-center gap-3 overflow-hidden p-4 transition-opacity duration-250 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-behind/toast:opacity-0 group-hover/viewport:group-data-expanded/toast:opacity-100 group-focus-within/viewport:group-data-expanded/toast:opacity-100\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype ToastTitleProps = ToastTitlePrimitiveProps;\r\n\r\nfunction ToastTitle({ className, ...props }: ToastTitleProps) {\r\n return (\r\n <ToastTitlePrimitive\r\n className={cn(\r\n \"text-label-semibold-2 text-text-primary\",\r\n \"group-data-[type=warning]/toast:text-text-warning-primary\",\r\n \"group-data-[type=info]/toast:text-text-info-primary\",\r\n \"group-data-[type=success]/toast:text-text-success-primary\",\r\n \"group-data-[type=error]/toast:text-text-error-primary\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype ToastDescriptionProps = ToastDescriptionPrimitiveProps;\r\n\r\nfunction ToastDescription({ className, ...props }: ToastDescriptionProps) {\r\n return (\r\n <ToastDescriptionPrimitive\r\n className={cn(\"text-body-regular-2 text-text-secondary\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype ToastActionProps = ToastActionPrimitiveProps;\r\n\r\nfunction ToastAction({\r\n className,\r\n render = <Button size=\"sm\" variant=\"secondary\" />,\r\n ...props\r\n}: ToastActionProps) {\r\n return (\r\n <ToastActionPrimitive\r\n render={render}\r\n className={cn(\"shrink-0\", className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype ToastCloseProps = ToastClosePrimitiveProps;\r\n\r\nfunction ToastClose({ className, children, ...props }: ToastCloseProps) {\r\n return (\r\n <ToastClosePrimitive\r\n aria-label=\"Close toast\"\r\n className={cn(\r\n \"relative shrink-0 text-fg-quaternary after:absolute after:-inset-2 after:content-[''] hover:text-text-error-primary size-6 inline-flex items-center justify-center [&_svg:not([class*='size-'])]:size-3.5\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children ?? <XIcon aria-hidden=\"true\" />}\r\n </ToastClosePrimitive>\r\n );\r\n}\r\n\r\ntype ToastIconProps = { type: string | undefined }\r\n\r\nfunction ToastIcon({ type }: ToastIconProps) {\r\n let icon: React.ReactNode = null;\r\n\r\n if (type === \"success\") {\r\n icon = <CheckSquareIcon className=\"text-fg-success-primary\" />;\r\n }\r\n\r\n if (type === \"info\") {\r\n icon = <InfoSquareIcon className=\"text-fg-info-primary\" />;\r\n }\r\n\r\n if (type === \"warning\") {\r\n icon = <DangerTriangleIcon className=\"text-fg-warning-primary\" />;\r\n }\r\n\r\n if (type === \"error\") {\r\n icon = <CloseSquareIcon className=\"text-fg-error-primary\" />;\r\n }\r\n\r\n if (type === \"loading\") {\r\n icon = <Loader2Icon className=\"animate-spin\" aria-hidden=\"true\" />\r\n }\r\n\r\n if (!icon) return null;\r\n\r\n return (\r\n <span\r\n data-slot=\"toast-icon\"\r\n className=\"shrink-0 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6\"\r\n >\r\n {icon}\r\n </span>\r\n );\r\n}\r\n\r\nconst POSITIONS: ToastPosition[] = [\r\n \"top-right\",\r\n \"top-left\",\r\n \"top-center\",\r\n \"bottom-right\",\r\n \"bottom-left\",\r\n \"bottom-center\",\r\n];\r\n\r\nfunction ToastList({\r\n defaultPosition,\r\n position,\r\n limit = 3,\r\n}: {\r\n defaultPosition: ToastPosition;\r\n position: ToastPosition;\r\n limit?: number;\r\n}) {\r\n const { toasts } = useToastManager();\r\n const matchingToasts = toasts.filter(\r\n (item) => (item.position ?? defaultPosition) === position\r\n );\r\n\r\n return matchingToasts.map((toastItem, index) => (\r\n <Toast\r\n key={toastItem.id}\r\n toast={toastItem}\r\n data-position={position}\r\n data-behind={index > 0 ? \"\" : undefined}\r\n data-limited={limit !== undefined && index >= limit ? \"\" : undefined}\r\n style={\r\n {\r\n \"--toast-index\": index,\r\n } as React.CSSProperties\r\n }\r\n >\r\n <ToastContent>\r\n <ToastIcon type={toastItem.type} />\r\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\r\n <ToastTitle />\r\n <ToastDescription />\r\n </div>\r\n <ToastAction />\r\n <ToastClose />\r\n </ToastContent>\r\n </Toast>\r\n ));\r\n}\r\n\r\ntype ToasterProps = ToastProviderPrimitiveProps & {\r\n position?: ToastPosition;\r\n limit?: number;\r\n};\r\n\r\nfunction Toaster({\r\n children,\r\n position = \"top-right\",\r\n limit = 3,\r\n toastManager = toast,\r\n ...props\r\n}: ToasterProps) {\r\n return (\r\n <ToastProvider toastManager={toastManager} limit={limit} {...props}>\r\n {children}\r\n <ToastPortal>\r\n {POSITIONS.map((pos) => (\r\n <ToastViewport key={pos} position={pos}>\r\n <ToastList defaultPosition={position} position={pos} limit={limit} />\r\n </ToastViewport>\r\n ))}\r\n </ToastPortal>\r\n </ToastProvider>\r\n );\r\n}\r\n\r\nexport {\r\n Toaster,\r\n Toast,\r\n ToastProvider,\r\n ToastAction,\r\n ToastClose,\r\n ToastContent,\r\n ToastDescription,\r\n ToastPortal,\r\n ToastTitle,\r\n ToastViewport,\r\n toast,\r\n createToastManager,\r\n useToastManager,\r\n type ToasterProps,\r\n type ToastProps,\r\n type ToastProviderProps,\r\n type ToastActionProps,\r\n type ToastCloseProps,\r\n type ToastContentProps,\r\n type ToastDescriptionProps,\r\n type ToastPortalProps,\r\n type ToastTitleProps,\r\n type ToastViewportProps,\r\n};\r\n\r\n\r\n"]}
1
+ {"version":3,"sources":["../src/ui/toast.tsx"],"names":["ToastPortal","props","jsx","positionVariants","ToastViewport","className","position","cn","ToastProvider","Toast","children","style","jsxs","ToastContent","ToastTitle","ToastDescription","ToastAction","render","Button","ToastClose","XIcon","ToastIcon","type","icon","check_square_icon_default","info_square_icon_default","danger_triangle_icon_default","close_square_icon_default","Loader2Icon","POSITIONS","ToastList","defaultPosition","limit","toasts","useToastManager","item","toastItem","index","Toaster","toastManager","toast","pos"],"mappings":"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","file":"chunk-K4MWSMUN.js","sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport {\r\n ToastPortal as ToastPortalPrimitive,\r\n ToastViewport as ToastViewportPrimitive,\r\n ToastProvider as ToastProviderPrimitive,\r\n Toast as ToastPrimitive,\r\n ToastContent as ToastContentPrimitive,\r\n ToastTitle as ToastTitlePrimitive,\r\n ToastDescription as ToastDescriptionPrimitive,\r\n ToastAction as ToastActionPrimitive,\r\n ToastClose as ToastClosePrimitive,\r\n toast,\r\n createToastManager,\r\n useToastManager,\r\n type ToastPortalProps as ToastPortalPrimitiveProps,\r\n type ToastViewportProps as ToastViewportPrimitiveProps,\r\n type ToastProviderProps as ToastProviderPrimitiveProps,\r\n type ToastProps as ToastPrimitiveProps,\r\n type ToastContentProps as ToastContentPrimitiveProps,\r\n type ToastTitleProps as ToastTitlePrimitiveProps,\r\n type ToastDescriptionProps as ToastDescriptionPrimitiveProps,\r\n type ToastActionProps as ToastActionPrimitiveProps,\r\n type ToastCloseProps as ToastClosePrimitiveProps,\r\n} from \"../primitives/toast\";\r\nimport { cn } from \"@xploreu/lib/cn\";\r\nimport {\r\n InfoSquareIcon,\r\n CheckSquareIcon,\r\n CloseSquareIcon,\r\n DangerTriangleIcon,\r\n} from \"../icons\";\r\nimport { Button } from \"./button\";\r\nimport {\r\n XIcon,\r\n Loader2Icon\r\n} from \"lucide-react\"\r\n\r\ntype ToastPortalProps = ToastPortalPrimitiveProps;\r\n\r\nfunction ToastPortal({ ...props }: ToastPortalProps) {\r\n return <ToastPortalPrimitive {...props} />;\r\n}\r\n\r\nexport type ToastPosition =\r\n | \"top-right\"\r\n | \"top-left\"\r\n | \"top-center\"\r\n | \"bottom-right\"\r\n | \"bottom-left\"\r\n | \"bottom-center\";\r\n\r\ndeclare module \"@base-ui/react/toast\" {\r\n interface ToastObject<Data extends object> {\r\n position?: ToastPosition;\r\n }\r\n}\r\n\r\ntype ToastViewportProps = ToastViewportPrimitiveProps & {\r\n position?: ToastPosition;\r\n};\r\n\r\nconst positionVariants: Record<ToastPosition, string> = {\r\n \"top-right\":\r\n \"fixed top-4 inset-x-4 sm:inset-x-auto sm:top-4 sm:right-4 sm:left-auto sm:w-full sm:max-w-sm\",\r\n \"top-left\":\r\n \"fixed top-4 inset-x-4 sm:inset-x-auto sm:top-4 sm:left-4 sm:right-auto sm:w-full sm:max-w-sm\",\r\n \"top-center\":\r\n \"fixed top-4 left-1/2 -translate-x-1/2 w-[calc(100%-2rem)] sm:w-full sm:max-w-sm\",\r\n \"bottom-right\":\r\n \"fixed bottom-4 inset-x-4 sm:inset-x-auto sm:bottom-4 sm:right-4 sm:left-auto sm:w-full sm:max-w-sm\",\r\n \"bottom-left\":\r\n \"fixed bottom-4 inset-x-4 sm:inset-x-auto sm:bottom-4 sm:left-4 sm:right-auto sm:w-full sm:max-w-sm\",\r\n \"bottom-center\":\r\n \"fixed bottom-4 left-1/2 -translate-x-1/2 w-[calc(100%-2rem)] sm:w-full sm:max-w-sm\",\r\n};\r\n\r\nfunction ToastViewport({\r\n className,\r\n position = \"top-right\",\r\n ...props\r\n}: ToastViewportProps) {\r\n return (\r\n <ToastViewportPrimitive\r\n className={cn(\r\n \"group/viewport pointer-events-none z-[1000] mx-auto outline-none\",\r\n positionVariants[position],\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype ToastProviderProps = ToastProviderPrimitiveProps;\r\n\r\nfunction ToastProvider(props: ToastProviderProps) {\r\n return <ToastProviderPrimitive {...props} />;\r\n}\r\n\r\ntype ToastProps = ToastPrimitiveProps\r\n\r\nfunction Toast({\r\n className,\r\n children,\r\n style,\r\n ...props\r\n}: ToastProps) {\r\n return (\r\n <ToastPrimitive\r\n style={style}\r\n className={cn(\r\n \"group/toast pointer-events-auto absolute right-0 z-[calc(1000-var(--toast-index))] w-full shadow-lg will-change-transform outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-focus-ring\",\r\n \"bottom-0 origin-bottom rounded-l-[10.4px] rounded-r-lg\",\r\n \"data-[position^=top]:top-0 data-[position^=top]:bottom-auto data-[position^=top]:origin-top\",\r\n \"[--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc((var(--toast-index)*(var(--height)+var(--gap))*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))]\",\r\n \"data-[position^=top]:[--offset-y:calc((var(--toast-index)*(var(--height)+var(--gap)))+var(--toast-swipe-movement-y))]\",\r\n \"h-(--height) [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] [transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms]\",\r\n \"data-[position^=top]:[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+(var(--toast-index)*var(--peek))+(var(--shrink)*var(--height))))_scale(var(--scale))]\",\r\n \"after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-['']\",\r\n \"group-hover/viewport:data-expanded:h-(--toast-height) group-hover/viewport:data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]\",\r\n \"group-focus-within/viewport:data-expanded:h-(--toast-height) group-focus-within/viewport:data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]\",\r\n \"data-limited:opacity-0 data-limited:pointer-events-none data-limited:invisible data-starting-style:[transform:translateY(150%)]\",\r\n \"data-[position^=top]:data-starting-style:[transform:translateY(-150%)]\",\r\n \"[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(150%)]\",\r\n \"data-[position^=top]:[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(-150%)]\",\r\n \"data-ending-style:opacity-0\",\r\n \"data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]\",\r\n \"data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]\",\r\n \"data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]\",\r\n \"data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]\",\r\n \"group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]\",\r\n \"group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]\",\r\n \"group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]\",\r\n \"group-hover/viewport:data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]\",\r\n \"group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]\",\r\n \"group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]\",\r\n \"group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]\",\r\n \"group-focus-within/viewport:data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className={cn(\r\n \"absolute left-0 inset-y-0 w-[10.4px] rounded-l-[10.4px] bg-[linear-gradient(180deg,#377DFA_0%,#185BC2_80%)]\",\r\n \"group-data-[type=warning]/toast:bg-[linear-gradient(180deg,#F79009_0%,#B54708_80%)]\",\r\n \"group-data-[type=info]/toast:bg-[linear-gradient(180deg,#068BEE_0%,#175BCC_80%)]\",\r\n \"group-data-[type=success]/toast:bg-[linear-gradient(180deg,#17B26A_0%,#067647_80%)]\",\r\n \"group-data-[type=error]/toast:bg-[linear-gradient(180deg,#F04438_0%,#B42318_80%)]\",\r\n )} />\r\n <div className={cn(\r\n \"relative border border-border-secondary rounded-lg ml-[2.4px] bg-bg-primary z-10 bg-radial-[100%_200%_at_0%_0%] to-bg-primary\",\r\n \"from-modal-dialog-stop-0\",\r\n \"group-data-[type=warning]/toast:from-utility-warning-50\",\r\n \"group-data-[type=info]/toast:from-utility-blue-50\",\r\n \"group-data-[type=success]/toast:from-utility-success-50\",\r\n \"group-data-[type=error]/toast:from-utility-error-50\",\r\n )}>\r\n {children}\r\n </div>\r\n </ToastPrimitive>\r\n );\r\n}\r\n\r\ntype ToastContentProps = ToastContentPrimitiveProps;\r\n\r\nfunction ToastContent({ className, ...props }: ToastContentProps) {\r\n return (\r\n <ToastContentPrimitive\r\n className={cn(\r\n \"flex h-full items-center gap-3 overflow-hidden p-4 transition-opacity duration-250 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-behind/toast:opacity-0 group-hover/viewport:group-data-expanded/toast:opacity-100 group-focus-within/viewport:group-data-expanded/toast:opacity-100\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype ToastTitleProps = ToastTitlePrimitiveProps;\r\n\r\nfunction ToastTitle({ className, ...props }: ToastTitleProps) {\r\n return (\r\n <ToastTitlePrimitive\r\n className={cn(\r\n \"text-label-semibold-2 text-text-primary\",\r\n \"group-data-[type=warning]/toast:text-text-warning-primary\",\r\n \"group-data-[type=info]/toast:text-text-info-primary\",\r\n \"group-data-[type=success]/toast:text-text-success-primary\",\r\n \"group-data-[type=error]/toast:text-text-error-primary\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype ToastDescriptionProps = ToastDescriptionPrimitiveProps;\r\n\r\nfunction ToastDescription({ className, ...props }: ToastDescriptionProps) {\r\n return (\r\n <ToastDescriptionPrimitive\r\n className={cn(\"text-body-regular-2 text-text-secondary\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype ToastActionProps = ToastActionPrimitiveProps;\r\n\r\nfunction ToastAction({\r\n className,\r\n render = <Button size=\"sm\" variant=\"secondary\" />,\r\n ...props\r\n}: ToastActionProps) {\r\n return (\r\n <ToastActionPrimitive\r\n render={render}\r\n className={cn(\"shrink-0\", className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype ToastCloseProps = ToastClosePrimitiveProps;\r\n\r\nfunction ToastClose({ className, children, ...props }: ToastCloseProps) {\r\n return (\r\n <ToastClosePrimitive\r\n aria-label=\"Close toast\"\r\n className={cn(\r\n \"relative shrink-0 text-fg-quaternary after:absolute after:-inset-2 after:content-[''] hover:text-text-error-primary size-6 inline-flex items-center justify-center [&_svg:not([class*='size-'])]:size-3.5\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children ?? <XIcon aria-hidden=\"true\" />}\r\n </ToastClosePrimitive>\r\n );\r\n}\r\n\r\ntype ToastIconProps = { type: string | undefined }\r\n\r\nfunction ToastIcon({ type }: ToastIconProps) {\r\n let icon: React.ReactNode = null;\r\n\r\n if (type === \"success\") {\r\n icon = <CheckSquareIcon className=\"text-fg-success-primary\" />;\r\n }\r\n\r\n if (type === \"info\") {\r\n icon = <InfoSquareIcon className=\"text-fg-info-primary\" />;\r\n }\r\n\r\n if (type === \"warning\") {\r\n icon = <DangerTriangleIcon className=\"text-fg-warning-primary\" />;\r\n }\r\n\r\n if (type === \"error\") {\r\n icon = <CloseSquareIcon className=\"text-fg-error-primary\" />;\r\n }\r\n\r\n if (type === \"loading\") {\r\n icon = <Loader2Icon className=\"animate-spin\" aria-hidden=\"true\" />\r\n }\r\n\r\n if (!icon) return null;\r\n\r\n return (\r\n <span\r\n data-slot=\"toast-icon\"\r\n className=\"shrink-0 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-6\"\r\n >\r\n {icon}\r\n </span>\r\n );\r\n}\r\n\r\nconst POSITIONS: ToastPosition[] = [\r\n \"top-right\",\r\n \"top-left\",\r\n \"top-center\",\r\n \"bottom-right\",\r\n \"bottom-left\",\r\n \"bottom-center\",\r\n];\r\n\r\nfunction ToastList({\r\n defaultPosition,\r\n position,\r\n limit = 3,\r\n}: {\r\n defaultPosition: ToastPosition;\r\n position: ToastPosition;\r\n limit?: number;\r\n}) {\r\n const { toasts } = useToastManager();\r\n const matchingToasts = toasts.filter(\r\n (item) => (item.position ?? defaultPosition) === position\r\n );\r\n\r\n return matchingToasts.map((toastItem, index) => (\r\n <Toast\r\n key={toastItem.id}\r\n toast={toastItem}\r\n data-position={position}\r\n data-behind={index > 0 ? \"\" : undefined}\r\n data-limited={limit !== undefined && index >= limit ? \"\" : undefined}\r\n style={\r\n {\r\n \"--toast-index\": index,\r\n } as React.CSSProperties\r\n }\r\n >\r\n <ToastContent>\r\n <ToastIcon type={toastItem.type} />\r\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\r\n <ToastTitle />\r\n <ToastDescription />\r\n </div>\r\n <ToastAction />\r\n <ToastClose />\r\n </ToastContent>\r\n </Toast>\r\n ));\r\n}\r\n\r\ntype ToasterProps = ToastProviderPrimitiveProps & {\r\n position?: ToastPosition;\r\n limit?: number;\r\n};\r\n\r\nfunction Toaster({\r\n children,\r\n position = \"top-right\",\r\n limit = 3,\r\n toastManager = toast,\r\n ...props\r\n}: ToasterProps) {\r\n return (\r\n <ToastProvider toastManager={toastManager} limit={limit} {...props}>\r\n {children}\r\n <ToastPortal>\r\n {POSITIONS.map((pos) => (\r\n <ToastViewport key={pos} position={pos}>\r\n <ToastList defaultPosition={position} position={pos} limit={limit} />\r\n </ToastViewport>\r\n ))}\r\n </ToastPortal>\r\n </ToastProvider>\r\n );\r\n}\r\n\r\nexport {\r\n Toaster,\r\n Toast,\r\n ToastProvider,\r\n ToastAction,\r\n ToastClose,\r\n ToastContent,\r\n ToastDescription,\r\n ToastPortal,\r\n ToastTitle,\r\n ToastViewport,\r\n toast,\r\n createToastManager,\r\n useToastManager,\r\n type ToasterProps,\r\n type ToastProps,\r\n type ToastProviderProps,\r\n type ToastActionProps,\r\n type ToastCloseProps,\r\n type ToastContentProps,\r\n type ToastDescriptionProps,\r\n type ToastPortalProps,\r\n type ToastTitleProps,\r\n type ToastViewportProps,\r\n};\r\n\r\n\r\n"]}
@@ -1,2 +1,2 @@
1
- import {a as a$3}from'./chunk-WWCXHCNU.js';import {a as a$1,b,c}from'./chunk-NGSCUYDU.js';import {b as b$1}from'./chunk-VNAMAKPG.js';import {a as a$2}from'./chunk-T7HRX3EC.js';import {b as b$2,e}from'./chunk-JLZNZFOO.js';import*as a from'react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {format}from'date-fns';import {ChevronDown}from'lucide-react';import'react-day-picker';import {cn}from'@xploreu/lib/cn';import {jsxs,jsx}from'react/jsx-runtime';function Z({className:P,value:M,onValueChange:i,defaultValue:N,required:d,disabled:p,placeholder:k="Pick dates",disabledDates:w,dateFormat:j="LLL dd, y",chipDateFormat:S="d MMM",maxVisible:l,...B}){let R=a.useCallback(e=>{d?e?.length&&i?.(e):i?.(e);},[i,d]),[t,u]=useControlledState({value:M,defaultValue:N,onChange:R}),[z,F]=a.useState(t?.[0]||new Date),[O,T]=a.useState(false),s=!!t?.length,m=a.useMemo(()=>t?[...t].sort((e,n)=>e.getTime()-n.getTime()):[],[t]),V=a.useCallback(e=>{let n=t?.filter(L=>L.getTime()!==e.getTime());d&&!n?.length||u(n);},[t,u,d]),I=l!==void 0?m.slice(0,l):m,b$3=l!==void 0?m.length-l:0;return jsxs("div",{className:"flex flex-col gap-2 w-full",children:[jsxs(a$1,{open:p?false:O,onOpenChange:T,children:[jsx(b,{className:"w-full",render:jsxs(b$1,{className:cn("group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors","border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover",s&&"border-border-brand bg-bg-brand-primary text-text-brand-secondary","data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary","disabled:pointer-events-none disabled:opacity-50",P),variant:null,size:null,disabled:p,children:[jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[jsx(a$2,{className:cn("size-4 shrink-0",s?"text-fg-brand-primary":"text-fg-quaternary")}),jsx("span",{className:"truncate",children:s?`${t.length} ${t.length===1?"date":"dates"} selected`:k})]}),jsx(ChevronDown,{className:cn("size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180",s?"text-fg-brand-primary":"text-fg-quaternary")})]})}),jsx(c,{className:"w-auto border-0 rounded-[20px] p-xp-none bg-transparent",style:{background:"linear-gradient(180deg, rgba(46, 51, 90, 0) 0%, rgba(28, 27, 51, 0.04) 100%), radial-gradient(146.13% 118.42% at 50% -15.5%, rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0) 99.59%)",backdropFilter:"blur(20px)",boxShadow:"0px 30px 60px 0px #0000001A"},children:jsx(a$3,{autoFocus:true,disabled:w,mode:"multiple",month:z,selected:t,onMonthChange:F,onSelect:e=>{d&&!e?.length||u(e);},...B})})]}),s&&jsxs("div",{className:"flex flex-wrap gap-2",children:[I.map(e$1=>jsxs(b$2,{color:"brand",size:"lg",className:"ring-1 ring-border-brand text-body-medium-3",children:[format(e$1,S),!p&&jsx(e,{className:"text-fg-quaternary",onClick:n=>{n.stopPropagation(),V(e$1);}})]},e$1.toISOString())),b$3>0&&jsxs(b$2,{color:"brand",size:"lg",className:"ring-1 ring-border-brand text-body-medium-3",children:["+",b$3]})]})]})}export{Z as a};//# sourceMappingURL=chunk-AVJU2H5V.js.map
2
- //# sourceMappingURL=chunk-AVJU2H5V.js.map
1
+ import {a as a$3}from'./chunk-WWCXHCNU.js';import {a as a$1,b,c}from'./chunk-NGSCUYDU.js';import {a as a$2}from'./chunk-T7HRX3EC.js';import {b as b$2,e}from'./chunk-JLZNZFOO.js';import {b as b$1}from'./chunk-VNAMAKPG.js';import*as a from'react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {format}from'date-fns';import {ChevronDown}from'lucide-react';import'react-day-picker';import {cn}from'@xploreu/lib/cn';import {jsxs,jsx}from'react/jsx-runtime';function Z({className:P,value:M,onValueChange:i,defaultValue:N,required:d,disabled:p,placeholder:k="Pick dates",disabledDates:w,dateFormat:j="LLL dd, y",chipDateFormat:S="d MMM",maxVisible:l,...B}){let R=a.useCallback(e=>{d?e?.length&&i?.(e):i?.(e);},[i,d]),[t,u]=useControlledState({value:M,defaultValue:N,onChange:R}),[z,F]=a.useState(t?.[0]||new Date),[O,T]=a.useState(false),s=!!t?.length,m=a.useMemo(()=>t?[...t].sort((e,n)=>e.getTime()-n.getTime()):[],[t]),V=a.useCallback(e=>{let n=t?.filter(L=>L.getTime()!==e.getTime());d&&!n?.length||u(n);},[t,u,d]),I=l!==void 0?m.slice(0,l):m,b$3=l!==void 0?m.length-l:0;return jsxs("div",{className:"flex flex-col gap-2 w-full",children:[jsxs(a$1,{open:p?false:O,onOpenChange:T,children:[jsx(b,{className:"w-full",render:jsxs(b$1,{className:cn("group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors","border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover",s&&"border-border-brand bg-bg-brand-primary text-text-brand-secondary","data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary","disabled:pointer-events-none disabled:opacity-50",P),variant:null,size:null,disabled:p,children:[jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[jsx(a$2,{className:cn("size-4 shrink-0",s?"text-fg-brand-primary":"text-fg-quaternary")}),jsx("span",{className:"truncate",children:s?`${t.length} ${t.length===1?"date":"dates"} selected`:k})]}),jsx(ChevronDown,{className:cn("size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180",s?"text-fg-brand-primary":"text-fg-quaternary")})]})}),jsx(c,{className:"w-auto border-0 rounded-[20px] p-xp-none bg-transparent",style:{background:"linear-gradient(180deg, rgba(46, 51, 90, 0) 0%, rgba(28, 27, 51, 0.04) 100%), radial-gradient(146.13% 118.42% at 50% -15.5%, rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0) 99.59%)",backdropFilter:"blur(20px)",boxShadow:"0px 30px 60px 0px #0000001A"},children:jsx(a$3,{autoFocus:true,disabled:w,mode:"multiple",month:z,selected:t,onMonthChange:F,onSelect:e=>{d&&!e?.length||u(e);},...B})})]}),s&&jsxs("div",{className:"flex flex-wrap gap-2",children:[I.map(e$1=>jsxs(b$2,{color:"brand",size:"lg",className:"ring-1 ring-border-brand text-body-medium-3",children:[format(e$1,S),!p&&jsx(e,{className:"text-fg-quaternary",onClick:n=>{n.stopPropagation(),V(e$1);}})]},e$1.toISOString())),b$3>0&&jsxs(b$2,{color:"brand",size:"lg",className:"ring-1 ring-border-brand text-body-medium-3",children:["+",b$3]})]})]})}export{Z as a};//# sourceMappingURL=chunk-MESDC2EA.js.map
2
+ //# sourceMappingURL=chunk-MESDC2EA.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/date-multiple-picker.tsx"],"names":["DateMultiplePicker","className","valueProp","onValueChange","defaultValue","required","disabled","placeholder","disabledDates","dateFormat","chipDateFormat","maxVisible","props","handleValueChange","val","value","setValue","useControlledState","currentMonth","setCurrentMonth","isOpen","setIsOpen","hasValue","sortedValue","a","b","handleRemoveDate","dateToRemove","newValue","d","visibleChips","overflowCount","jsxs","Popover","jsx","PopoverTrigger","Button","cn","calendar_icon_default","ChevronDown","PopoverPopup","Calendar","Badge","format","BadgeButton","e"],"mappings":"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","file":"chunk-AVJU2H5V.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport { format } from \"date-fns\"\r\nimport { ChevronDown } from \"lucide-react\"\r\nimport { type Matcher } from \"react-day-picker\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { CalendarIcon } from \"../icons\"\r\nimport { Button } from \"./button\"\r\nimport { Calendar, type CalendarProps } from \"./calendar\"\r\nimport { Popover, PopoverPopup, PopoverTrigger } from \"./popover\"\r\nimport { Badge, BadgeButton } from \"./badge\"\r\n\r\nexport type DateMultiplePickerProps = {\r\n className?: string\r\n value?: Date[]\r\n defaultValue?: Date[]\r\n required?: boolean\r\n disabled?: boolean\r\n placeholder?: string\r\n disabledDates?: Matcher | Matcher[] | undefined\r\n dateFormat?: string\r\n chipDateFormat?: string\r\n /** Maximum number of chips to show outside before collapsing the rest into a \"+N\" chip. */\r\n maxVisible?: number\r\n} & ({\r\n required: true\r\n onValueChange?: (value: Date[]) => void\r\n} | {\r\n required?: false\r\n onValueChange?: (value: Date[] | undefined) => void\r\n}) & Omit<CalendarProps, \"mode\" | \"selected\" | \"onSelect\" | \"month\" | \"onMonthChange\">\r\n\r\nfunction DateMultiplePicker({\r\n className,\r\n value: valueProp,\r\n onValueChange,\r\n defaultValue,\r\n required,\r\n disabled,\r\n placeholder = \"Pick dates\",\r\n disabledDates,\r\n dateFormat = \"LLL dd, y\",\r\n chipDateFormat = \"d MMM\",\r\n maxVisible,\r\n ...props\r\n}: DateMultiplePickerProps) {\r\n const handleValueChange = React.useCallback(\r\n (val: Date[] | undefined) => {\r\n if (required) {\r\n if (val?.length) onValueChange?.(val)\r\n } else {\r\n onValueChange?.(val)\r\n }\r\n },\r\n [onValueChange, required],\r\n )\r\n\r\n const [value, setValue] = useControlledState<Date[] | undefined>({\r\n value: valueProp,\r\n defaultValue,\r\n onChange: handleValueChange,\r\n })\r\n\r\n const [currentMonth, setCurrentMonth] = React.useState<Date | undefined>(value?.[0] || new Date())\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n\r\n const hasValue = !!value?.length\r\n\r\n const sortedValue = React.useMemo(() => {\r\n if (!value) return []\r\n return [...value].sort((a, b) => a.getTime() - b.getTime())\r\n }, [value])\r\n\r\n const handleRemoveDate = React.useCallback(\r\n (dateToRemove: Date) => {\r\n const newValue = value?.filter((d) => d.getTime() !== dateToRemove.getTime())\r\n if (required && !newValue?.length) return\r\n setValue(newValue)\r\n },\r\n [value, setValue, required],\r\n )\r\n\r\n const visibleChips = maxVisible !== undefined ? sortedValue.slice(0, maxVisible) : sortedValue\r\n const overflowCount = maxVisible !== undefined ? sortedValue.length - maxVisible : 0\r\n\r\n return (\r\n <div className=\"flex flex-col gap-2 w-full\">\r\n <Popover open={disabled ? false : isOpen} onOpenChange={setIsOpen}>\r\n <PopoverTrigger\r\n className=\"w-full\"\r\n render={\r\n <Button\r\n className={cn(\r\n \"group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors\",\r\n \"border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover\",\r\n hasValue &&\r\n \"border-border-brand bg-bg-brand-primary text-text-brand-secondary\",\r\n \"data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n className,\r\n )}\r\n variant={null}\r\n size={null}\r\n disabled={disabled}\r\n >\r\n <span className=\"flex min-w-0 items-center gap-2\">\r\n <CalendarIcon\r\n className={cn(\r\n \"size-4 shrink-0\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n <span className=\"truncate\">\r\n {hasValue\r\n ? `${value.length} ${value.length === 1 ? \"date\" : \"dates\"} selected`\r\n : placeholder}\r\n </span>\r\n </span>\r\n <ChevronDown\r\n className={cn(\r\n \"size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n </Button>\r\n }\r\n />\r\n <PopoverPopup\r\n className=\"w-auto border-0 rounded-[20px] p-xp-none bg-transparent\"\r\n style={{\r\n background:\r\n \"linear-gradient(180deg, rgba(46, 51, 90, 0) 0%, rgba(28, 27, 51, 0.04) 100%), radial-gradient(146.13% 118.42% at 50% -15.5%, rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0) 99.59%)\",\r\n backdropFilter: \"blur(20px)\",\r\n boxShadow: \"0px 30px 60px 0px #0000001A\",\r\n }}\r\n >\r\n <Calendar\r\n autoFocus\r\n disabled={disabledDates}\r\n mode=\"multiple\"\r\n month={currentMonth}\r\n selected={value}\r\n onMonthChange={setCurrentMonth}\r\n onSelect={(val) => {\r\n if (required && !val?.length) return\r\n setValue(val)\r\n }}\r\n {...props}\r\n />\r\n </PopoverPopup>\r\n </Popover>\r\n\r\n {hasValue && (\r\n <div className=\"flex flex-wrap gap-2\">\r\n {visibleChips.map((d) => (\r\n <Badge\r\n key={d.toISOString()}\r\n color=\"brand\"\r\n size=\"lg\"\r\n className=\"ring-1 ring-border-brand text-body-medium-3\"\r\n >\r\n {format(d, chipDateFormat)}\r\n {!disabled && (\r\n <BadgeButton\r\n className=\"text-fg-quaternary\"\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n handleRemoveDate(d)\r\n }}\r\n />\r\n )}\r\n </Badge>\r\n ))}\r\n {overflowCount > 0 && (\r\n <Badge\r\n color=\"brand\"\r\n size=\"lg\"\r\n className=\"ring-1 ring-border-brand text-body-medium-3\"\r\n >\r\n +{overflowCount}\r\n </Badge>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport { DateMultiplePicker }"]}
1
+ {"version":3,"sources":["../src/ui/date-multiple-picker.tsx"],"names":["DateMultiplePicker","className","valueProp","onValueChange","defaultValue","required","disabled","placeholder","disabledDates","dateFormat","chipDateFormat","maxVisible","props","handleValueChange","val","value","setValue","useControlledState","currentMonth","setCurrentMonth","isOpen","setIsOpen","hasValue","sortedValue","a","b","handleRemoveDate","dateToRemove","newValue","d","visibleChips","overflowCount","jsxs","Popover","jsx","PopoverTrigger","Button","cn","calendar_icon_default","ChevronDown","PopoverPopup","Calendar","Badge","format","BadgeButton","e"],"mappings":"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","file":"chunk-MESDC2EA.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport { format } from \"date-fns\"\r\nimport { ChevronDown } from \"lucide-react\"\r\nimport { type Matcher } from \"react-day-picker\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { CalendarIcon } from \"../icons\"\r\nimport { Button } from \"./button\"\r\nimport { Calendar, type CalendarProps } from \"./calendar\"\r\nimport { Popover, PopoverPopup, PopoverTrigger } from \"./popover\"\r\nimport { Badge, BadgeButton } from \"./badge\"\r\n\r\nexport type DateMultiplePickerProps = {\r\n className?: string\r\n value?: Date[]\r\n defaultValue?: Date[]\r\n required?: boolean\r\n disabled?: boolean\r\n placeholder?: string\r\n disabledDates?: Matcher | Matcher[] | undefined\r\n dateFormat?: string\r\n chipDateFormat?: string\r\n /** Maximum number of chips to show outside before collapsing the rest into a \"+N\" chip. */\r\n maxVisible?: number\r\n} & ({\r\n required: true\r\n onValueChange?: (value: Date[]) => void\r\n} | {\r\n required?: false\r\n onValueChange?: (value: Date[] | undefined) => void\r\n}) & Omit<CalendarProps, \"mode\" | \"selected\" | \"onSelect\" | \"month\" | \"onMonthChange\">\r\n\r\nfunction DateMultiplePicker({\r\n className,\r\n value: valueProp,\r\n onValueChange,\r\n defaultValue,\r\n required,\r\n disabled,\r\n placeholder = \"Pick dates\",\r\n disabledDates,\r\n dateFormat = \"LLL dd, y\",\r\n chipDateFormat = \"d MMM\",\r\n maxVisible,\r\n ...props\r\n}: DateMultiplePickerProps) {\r\n const handleValueChange = React.useCallback(\r\n (val: Date[] | undefined) => {\r\n if (required) {\r\n if (val?.length) onValueChange?.(val)\r\n } else {\r\n onValueChange?.(val)\r\n }\r\n },\r\n [onValueChange, required],\r\n )\r\n\r\n const [value, setValue] = useControlledState<Date[] | undefined>({\r\n value: valueProp,\r\n defaultValue,\r\n onChange: handleValueChange,\r\n })\r\n\r\n const [currentMonth, setCurrentMonth] = React.useState<Date | undefined>(value?.[0] || new Date())\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n\r\n const hasValue = !!value?.length\r\n\r\n const sortedValue = React.useMemo(() => {\r\n if (!value) return []\r\n return [...value].sort((a, b) => a.getTime() - b.getTime())\r\n }, [value])\r\n\r\n const handleRemoveDate = React.useCallback(\r\n (dateToRemove: Date) => {\r\n const newValue = value?.filter((d) => d.getTime() !== dateToRemove.getTime())\r\n if (required && !newValue?.length) return\r\n setValue(newValue)\r\n },\r\n [value, setValue, required],\r\n )\r\n\r\n const visibleChips = maxVisible !== undefined ? sortedValue.slice(0, maxVisible) : sortedValue\r\n const overflowCount = maxVisible !== undefined ? sortedValue.length - maxVisible : 0\r\n\r\n return (\r\n <div className=\"flex flex-col gap-2 w-full\">\r\n <Popover open={disabled ? false : isOpen} onOpenChange={setIsOpen}>\r\n <PopoverTrigger\r\n className=\"w-full\"\r\n render={\r\n <Button\r\n className={cn(\r\n \"group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors\",\r\n \"border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover\",\r\n hasValue &&\r\n \"border-border-brand bg-bg-brand-primary text-text-brand-secondary\",\r\n \"data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n className,\r\n )}\r\n variant={null}\r\n size={null}\r\n disabled={disabled}\r\n >\r\n <span className=\"flex min-w-0 items-center gap-2\">\r\n <CalendarIcon\r\n className={cn(\r\n \"size-4 shrink-0\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n <span className=\"truncate\">\r\n {hasValue\r\n ? `${value.length} ${value.length === 1 ? \"date\" : \"dates\"} selected`\r\n : placeholder}\r\n </span>\r\n </span>\r\n <ChevronDown\r\n className={cn(\r\n \"size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\",\r\n )}\r\n />\r\n </Button>\r\n }\r\n />\r\n <PopoverPopup\r\n className=\"w-auto border-0 rounded-[20px] p-xp-none bg-transparent\"\r\n style={{\r\n background:\r\n \"linear-gradient(180deg, rgba(46, 51, 90, 0) 0%, rgba(28, 27, 51, 0.04) 100%), radial-gradient(146.13% 118.42% at 50% -15.5%, rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0) 99.59%)\",\r\n backdropFilter: \"blur(20px)\",\r\n boxShadow: \"0px 30px 60px 0px #0000001A\",\r\n }}\r\n >\r\n <Calendar\r\n autoFocus\r\n disabled={disabledDates}\r\n mode=\"multiple\"\r\n month={currentMonth}\r\n selected={value}\r\n onMonthChange={setCurrentMonth}\r\n onSelect={(val) => {\r\n if (required && !val?.length) return\r\n setValue(val)\r\n }}\r\n {...props}\r\n />\r\n </PopoverPopup>\r\n </Popover>\r\n\r\n {hasValue && (\r\n <div className=\"flex flex-wrap gap-2\">\r\n {visibleChips.map((d) => (\r\n <Badge\r\n key={d.toISOString()}\r\n color=\"brand\"\r\n size=\"lg\"\r\n className=\"ring-1 ring-border-brand text-body-medium-3\"\r\n >\r\n {format(d, chipDateFormat)}\r\n {!disabled && (\r\n <BadgeButton\r\n className=\"text-fg-quaternary\"\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n handleRemoveDate(d)\r\n }}\r\n />\r\n )}\r\n </Badge>\r\n ))}\r\n {overflowCount > 0 && (\r\n <Badge\r\n color=\"brand\"\r\n size=\"lg\"\r\n className=\"ring-1 ring-border-brand text-body-medium-3\"\r\n >\r\n +{overflowCount}\r\n </Badge>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport { DateMultiplePicker }"]}
@@ -0,0 +1,2 @@
1
+ import*as i from'react';import {mergeProps}from'@base-ui/react/merge-props';import {useRender}from'@base-ui/react/use-render';import {cva}from'class-variance-authority';import {ArrowRightIcon}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {jsx}from'react/jsx-runtime';var m=cva("inline-flex items-center size-max whitespace-nowrap shrink-0 overflow-hidden transition-colors cursor-pointer group/badge-group gap-2",{variants:{theme:{light:"rounded-xp-full ring-1 ring-inset",modern:"rounded-xp-card-base-md bg-bg-primary text-text-secondary ring-1 ring-inset ring-border-primary shadow-xp-xs hover:bg-bg-secondary"},color:{brand:"",gray:"",error:"",warning:"",success:""},size:{md:"text-body-medium-3",lg:"text-body-medium-2"},align:{leading:"",trailing:""}},compoundVariants:[{theme:"light",color:"brand",className:"bg-utility-brand-50 text-utility-brand-700 ring-utility-brand-200 hover:bg-utility-brand-100"},{theme:"light",color:"gray",className:"bg-utility-gray-50 text-utility-gray-700 ring-utility-gray-200 hover:bg-utility-gray-100"},{theme:"light",color:"error",className:"bg-utility-error-50 text-utility-error-700 ring-utility-error-200 hover:bg-utility-error-100"},{theme:"light",color:"warning",className:"bg-utility-warning-50 text-utility-warning-700 ring-utility-warning-200 hover:bg-utility-warning-100"},{theme:"light",color:"success",className:"bg-utility-success-50 text-utility-success-700 ring-utility-success-200 hover:bg-utility-success-100"},{align:"leading",size:"md",className:"py-1 pl-1 pr-2"},{align:"leading",size:"lg",className:"py-1 pl-1 pr-2.5"},{align:"trailing",size:"md",className:"py-1 pl-2 pr-1"},{align:"trailing",size:"lg",className:"py-1 pl-2.5 pr-1"}],defaultVariants:{theme:"light",color:"brand",size:"md",align:"leading"}}),g=i.createContext({theme:"light",color:"brand",size:"md"});function P({className:t,theme:r="light",color:e="brand",size:o="md",align:a="leading",render:s,children:p,...u}){let x={"data-slot":"badge-group","data-theme":r,"data-color":e,"data-size":o,"data-align":a,className:cn(m({theme:r,color:e,size:o,align:a}),t),children:p};return jsx(g.Provider,{value:{theme:r??"light",color:e??"brand",size:o??"md"},children:useRender({defaultTagName:"div",props:mergeProps(x,u),render:s,state:{slot:"badge-group",theme:r,color:e,size:o,align:a}})})}function h({className:t,children:r,...e}){let{theme:o,color:a,size:s}=i.useContext(g),p={brand:"ring-utility-brand-200 text-utility-brand-700",gray:"ring-utility-gray-200 text-utility-gray-700",error:"ring-utility-error-200 text-utility-error-700",warning:"ring-utility-warning-200 text-utility-warning-700",success:"ring-utility-success-200 text-utility-success-700"},u=cn("inline-flex items-center justify-center font-medium shrink-0",o==="light"&&["rounded-xp-full bg-bg-primary ring-1 ring-inset",p[a]||p.brand,s==="md"?"px-2 py-0.5":"px-2.5 py-0.5"],o==="modern"&&["rounded-xp-card-base-sm bg-bg-primary shadow-xp-xs ring-1 ring-inset ring-border-primary text-text-secondary",s==="md"?"gap-1 px-1.5 py-0.5":"gap-1.5 px-2 py-0.5"],t);return jsx("span",{"data-slot":"badge-group-addon",className:u,...e,children:r})}function B({className:t,children:r=jsx(ArrowRightIcon,{}),...e}){let{color:o}=i.useContext(g),a={brand:"text-utility-brand-500",gray:"text-utility-gray-500",error:"text-utility-error-500",warning:"text-utility-warning-500",success:"text-utility-success-500"};return jsx("span",{"data-slot":"badge-group-icon",className:cn("inline-flex items-center justify-center shrink-0 [&>svg]:size-4 [&>svg]:stroke-[2px] pointer-events-none transition-transform group-hover/badge-group:translate-x-0.5",a[o]||a.brand,t),...e,children:r})}function R({className:t,...r}){let{color:e}=i.useContext(g),o={brand:"bg-utility-brand-500 outline-utility-brand-100",gray:"bg-utility-gray-500 outline-utility-gray-100",error:"bg-utility-error-500 outline-utility-error-100",warning:"bg-utility-warning-500 outline-utility-warning-100",success:"bg-utility-success-500 outline-utility-success-100"};return jsx("span",{"data-slot":"badge-group-dot",className:cn("inline-block size-1.5 shrink-0 rounded-xp-full outline-2 -outline-offset-1",o[e]||o.brand,t),...r})}var C=cva("relative w-full rounded-xp-card-base border p-4 text-text-primary text-body-regular-2 grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-1 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-bg-primary text-text-primary border-border-secondary",destructive:"bg-bg-error-primary text-text-error-primary border-border-error [&>svg]:text-text-error-primary *:data-[slot=alert-title]:text-utility-error-700",warning:"bg-bg-warning-primary text-text-warning-primary border-fg-warning-secondary [&>svg]:text-fg-warning-primary *:data-[slot=alert-title]:text-utility-warning-700",success:"bg-bg-success-primary text-text-success-primary border-fg-success-secondary [&>svg]:text-text-success-primary *:data-[slot=alert-title]:text-utility-success-700",info:"bg-info-bg-primary text-text-info-primary border-fg-info-secondary [&>svg]:text-text-info-primary *:data-[slot=alert-title]:text-utility-blue-700"}},defaultVariants:{variant:"default"}});function M({className:t,variant:r,...e}){return jsx("div",{"data-slot":"alert",role:"alert",className:cn(C({variant:r}),t),...e})}function S({className:t,...r}){return jsx("div",{"data-slot":"alert-title",className:cn("col-start-2 line-clamp-1 min-h-4 text-body-semibold-2 tracking-tight",t),...r})}function _({className:t,...r}){return jsx("div",{"data-slot":"alert-description",className:cn("text-text-tertiary col-start-2 grid justify-items-start gap-1 text-body-regular-2 [&_p]:leading-relaxed",t),...r})}function H({className:t,...r}){return jsx("div",{"data-slot":"alert-action",className:cn("absolute right-3 top-3 flex items-center gap-2",t),...r})}export{m as a,P as b,h as c,B as d,R as e,C as f,M as g,S as h,_ as i,H as j};//# sourceMappingURL=chunk-SG67F45R.js.map
2
+ //# sourceMappingURL=chunk-SG67F45R.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/badge-group.tsx","../src/ui/alert.tsx"],"names":["badgeGroupVariants","cva","badgeGroupContext","BadgeGroup","className","theme","color","size","align","render","children","props","defaultProps","cn","jsx","useRender","mergeProps","BadgeGroupAddon","colorAddonMap","addonClasses","BadgeGroupIcon","ArrowRightIcon","iconColorMap","BadgeGroupDot","dotColorMap","alertVariants","Alert","variant","AlertTitle","AlertDescription","AlertAction"],"mappings":"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","file":"chunk-SG67F45R.js","sourcesContent":["import * as React from \"react\"\r\n\r\nimport { mergeProps } from \"@base-ui/react/merge-props\"\r\nimport { useRender } from \"@base-ui/react/use-render\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { ArrowRightIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nconst badgeGroupVariants = cva(\r\n \"inline-flex items-center size-max whitespace-nowrap shrink-0 overflow-hidden transition-colors cursor-pointer group/badge-group gap-2\",\r\n {\r\n variants: {\r\n theme: {\r\n light: \"rounded-xp-full ring-1 ring-inset\",\r\n modern: \"rounded-xp-card-base-md bg-bg-primary text-text-secondary ring-1 ring-inset ring-border-primary shadow-xp-xs hover:bg-bg-secondary\",\r\n },\r\n color: {\r\n brand: \"\",\r\n gray: \"\",\r\n error: \"\",\r\n warning: \"\",\r\n success: \"\",\r\n },\r\n size: {\r\n md: \"text-body-medium-3\",\r\n lg: \"text-body-medium-2\",\r\n },\r\n align: {\r\n leading: \"\",\r\n trailing: \"\",\r\n },\r\n },\r\n compoundVariants: [\r\n // Light theme colors\r\n {\r\n theme: \"light\",\r\n color: \"brand\",\r\n className: \"bg-utility-brand-50 text-utility-brand-700 ring-utility-brand-200 hover:bg-utility-brand-100\",\r\n },\r\n {\r\n theme: \"light\",\r\n color: \"gray\",\r\n className: \"bg-utility-gray-50 text-utility-gray-700 ring-utility-gray-200 hover:bg-utility-gray-100\",\r\n },\r\n {\r\n theme: \"light\",\r\n color: \"error\",\r\n className: \"bg-utility-error-50 text-utility-error-700 ring-utility-error-200 hover:bg-utility-error-100\",\r\n },\r\n {\r\n theme: \"light\",\r\n color: \"warning\",\r\n className: \"bg-utility-warning-50 text-utility-warning-700 ring-utility-warning-200 hover:bg-utility-warning-100\",\r\n },\r\n {\r\n theme: \"light\",\r\n color: \"success\",\r\n className: \"bg-utility-success-50 text-utility-success-700 ring-utility-success-200 hover:bg-utility-success-100\",\r\n },\r\n\r\n // Size & Align combinations (Root padding matching exact Figma values)\r\n // Leading: Addon on the left\r\n {\r\n align: \"leading\",\r\n size: \"md\",\r\n className: \"py-1 pl-1 pr-2\",\r\n },\r\n {\r\n align: \"leading\",\r\n size: \"lg\",\r\n className: \"py-1 pl-1 pr-2.5\",\r\n },\r\n // Trailing: Addon on the right\r\n {\r\n align: \"trailing\",\r\n size: \"md\",\r\n className: \"py-1 pl-2 pr-1\",\r\n },\r\n {\r\n align: \"trailing\",\r\n size: \"lg\",\r\n className: \"py-1 pl-2.5 pr-1\",\r\n },\r\n ],\r\n defaultVariants: {\r\n theme: \"light\",\r\n color: \"brand\",\r\n size: \"md\",\r\n align: \"leading\",\r\n },\r\n }\r\n)\r\n\r\nconst badgeGroupContext = React.createContext<{\r\n theme: \"light\" | \"modern\"\r\n color: \"brand\" | \"gray\" | \"error\" | \"warning\" | \"success\"\r\n size: \"md\" | \"lg\"\r\n}>({\r\n theme: \"light\",\r\n color: \"brand\",\r\n size: \"md\",\r\n})\r\n\r\nexport interface BadgeGroupProps\r\n extends Omit<React.ComponentProps<\"div\">, \"color\">,\r\n VariantProps<typeof badgeGroupVariants> {\r\n}\r\n\r\nfunction BadgeGroup({\r\n className,\r\n theme = \"light\",\r\n color = \"brand\",\r\n size = \"md\",\r\n align = \"leading\",\r\n render,\r\n children,\r\n ...props\r\n}: BadgeGroupProps & useRender.ComponentProps<\"div\">) {\r\n const defaultProps = {\r\n \"data-slot\": \"badge-group\",\r\n \"data-theme\": theme,\r\n \"data-color\": color,\r\n \"data-size\": size,\r\n \"data-align\": align,\r\n className: cn(badgeGroupVariants({ theme, color, size, align }), className),\r\n children,\r\n }\r\n\r\n return (\r\n <badgeGroupContext.Provider value={{ theme: theme ?? \"light\", color: color ?? \"brand\", size: size ?? \"md\" }}>\r\n {useRender({\r\n defaultTagName: \"div\",\r\n props: mergeProps(defaultProps, props),\r\n render,\r\n state: {\r\n slot: \"badge-group\",\r\n theme,\r\n color,\r\n size,\r\n align,\r\n },\r\n })}\r\n </badgeGroupContext.Provider>\r\n )\r\n}\r\n\r\nexport interface BadgeGroupAddonProps extends React.ComponentProps<\"span\"> {\r\n children?: React.ReactNode\r\n}\r\n\r\nfunction BadgeGroupAddon({\r\n className,\r\n children,\r\n ...props\r\n}: BadgeGroupAddonProps) {\r\n const { theme, color, size } = React.useContext(badgeGroupContext)\r\n\r\n const colorAddonMap: Record<string, string> = {\r\n brand: \"ring-utility-brand-200 text-utility-brand-700\",\r\n gray: \"ring-utility-gray-200 text-utility-gray-700\",\r\n error: \"ring-utility-error-200 text-utility-error-700\",\r\n warning: \"ring-utility-warning-200 text-utility-warning-700\",\r\n success: \"ring-utility-success-200 text-utility-success-700\",\r\n }\r\n\r\n const addonClasses = cn(\r\n \"inline-flex items-center justify-center font-medium shrink-0\",\r\n theme === \"light\" && [\r\n \"rounded-xp-full bg-bg-primary ring-1 ring-inset\",\r\n colorAddonMap[color] || colorAddonMap.brand,\r\n size === \"md\" ? \"px-2 py-0.5\" : \"px-2.5 py-0.5\",\r\n ],\r\n theme === \"modern\" && [\r\n \"rounded-xp-card-base-sm bg-bg-primary shadow-xp-xs ring-1 ring-inset ring-border-primary text-text-secondary\",\r\n size === \"md\" ? \"gap-1 px-1.5 py-0.5\" : \"gap-1.5 px-2 py-0.5\",\r\n ],\r\n className\r\n )\r\n\r\n return (\r\n <span data-slot=\"badge-group-addon\" className={addonClasses} {...props}>\r\n {children}\r\n </span>\r\n )\r\n}\r\n\r\nexport interface BadgeGroupIconProps extends React.ComponentProps<\"span\"> {\r\n children?: React.ReactNode\r\n}\r\n\r\nfunction BadgeGroupIcon({\r\n className,\r\n children = <ArrowRightIcon />,\r\n ...props\r\n}: BadgeGroupIconProps) {\r\n const { color } = React.useContext(badgeGroupContext)\r\n\r\n const iconColorMap: Record<string, string> = {\r\n brand: \"text-utility-brand-500\",\r\n gray: \"text-utility-gray-500\",\r\n error: \"text-utility-error-500\",\r\n warning: \"text-utility-warning-500\",\r\n success: \"text-utility-success-500\",\r\n }\r\n\r\n return (\r\n <span\r\n data-slot=\"badge-group-icon\"\r\n className={cn(\r\n \"inline-flex items-center justify-center shrink-0 [&>svg]:size-4 [&>svg]:stroke-[2px] pointer-events-none transition-transform group-hover/badge-group:translate-x-0.5\",\r\n iconColorMap[color] || iconColorMap.brand,\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </span>\r\n )\r\n}\r\n\r\nexport interface BadgeGroupDotProps extends React.ComponentProps<\"span\"> {\r\n}\r\n\r\nfunction BadgeGroupDot({\r\n className,\r\n ...props\r\n}: BadgeGroupDotProps) {\r\n const { color } = React.useContext(badgeGroupContext)\r\n\r\n const dotColorMap: Record<string, string> = {\r\n brand: \"bg-utility-brand-500 outline-utility-brand-100\",\r\n gray: \"bg-utility-gray-500 outline-utility-gray-100\",\r\n error: \"bg-utility-error-500 outline-utility-error-100\",\r\n warning: \"bg-utility-warning-500 outline-utility-warning-100\",\r\n success: \"bg-utility-success-500 outline-utility-success-100\",\r\n }\r\n\r\n return (\r\n <span\r\n data-slot=\"badge-group-dot\"\r\n className={cn(\r\n \"inline-block size-1.5 shrink-0 rounded-xp-full outline-2 -outline-offset-1\",\r\n dotColorMap[color] || dotColorMap.brand,\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport {\r\n BadgeGroup,\r\n BadgeGroupAddon,\r\n BadgeGroupIcon,\r\n BadgeGroupDot,\r\n badgeGroupVariants,\r\n}\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nconst alertVariants = cva(\r\n \"relative w-full rounded-xp-card-base border p-4 text-text-primary text-body-regular-2 grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-1 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-bg-primary text-text-primary border-border-secondary\",\r\n destructive:\r\n \"bg-bg-error-primary text-text-error-primary border-border-error [&>svg]:text-text-error-primary *:data-[slot=alert-title]:text-utility-error-700\",\r\n warning:\r\n \"bg-bg-warning-primary text-text-warning-primary border-fg-warning-secondary [&>svg]:text-fg-warning-primary *:data-[slot=alert-title]:text-utility-warning-700\",\r\n success:\r\n \"bg-bg-success-primary text-text-success-primary border-fg-success-secondary [&>svg]:text-text-success-primary *:data-[slot=alert-title]:text-utility-success-700\",\r\n info:\r\n \"bg-info-bg-primary text-text-info-primary border-fg-info-secondary [&>svg]:text-text-info-primary *:data-[slot=alert-title]:text-utility-blue-700\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n\r\nfunction Alert({\r\n className,\r\n variant,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\r\n return (\r\n <div\r\n data-slot=\"alert\"\r\n role=\"alert\"\r\n className={cn(alertVariants({ variant }), className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"alert-title\"\r\n className={cn(\r\n \"col-start-2 line-clamp-1 min-h-4 text-body-semibold-2 tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction AlertDescription({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"alert-description\"\r\n className={cn(\r\n \"text-text-tertiary col-start-2 grid justify-items-start gap-1 text-body-regular-2 [&_p]:leading-relaxed\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction AlertAction({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"alert-action\"\r\n className={cn(\r\n \"absolute right-3 top-3 flex items-center gap-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport { Alert, AlertTitle, AlertDescription, AlertAction, alertVariants }\r\nexport type AlertProps = React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>\r\nexport type AlertTitleProps = React.ComponentProps<\"div\">\r\nexport type AlertDescriptionProps = React.ComponentProps<\"div\">\r\nexport type AlertActionProps = React.ComponentProps<\"div\">\r\n"]}
@@ -0,0 +1,2 @@
1
+ import*as l from'react';import {AlertDialog}from'@base-ui/react/alert-dialog';import {AnimatePresence,motion}from'motion/react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {getStrictContext}from'@xploreu/lib/get-strict-context';import {cn}from'@xploreu/lib/cn';import {jsx}from'react/jsx-runtime';var [v,P]=getStrictContext("AlertDialogContext");function F(t){let[r,i]=useControlledState({value:t?.open,defaultValue:t?.defaultOpen,onChange:t?.onOpenChange});return jsx(v,{value:{open:r,setOpen:i},children:jsx(AlertDialog.Root,{"data-slot":"alert-dialog",...t,onOpenChange:i})})}function M(t){return jsx(AlertDialog.Trigger,{"data-slot":"alert-dialog-trigger",...t})}function H(t){let{open:r}=P();return jsx(AnimatePresence,{children:r&&jsx(AlertDialog.Portal,{"data-slot":"alert-dialog-portal",keepMounted:true,...t})})}function h({transition:t={duration:.2,ease:"easeInOut"},...r}){return jsx(AlertDialog.Backdrop,{"data-slot":"alert-dialog-backdrop",render:jsx(motion.div,{initial:{opacity:0,filter:"blur(4px)"},animate:{opacity:1,filter:"blur(0px)"},exit:{opacity:0,filter:"blur(4px)"},transition:t,...r},"alert-dialog-backdrop")})}function B({from:t="left",initialFocus:r,finalFocus:i,transition:d={type:"spring",stiffness:150,damping:25},className:D,...A}){let n=t==="bottom"||t==="left"?"5deg":"-5deg",a=t==="top"||t==="bottom"?"rotateX":"rotateY",[u,s]=l.useState(false),{open:g}=P();return l.useEffect(()=>{g||s(false);},[g]),jsx(AlertDialog.Popup,{initialFocus:r,finalFocus:i,render:jsx(motion.div,{"data-slot":"alert-dialog-popup","data-opened":u?"":void 0,className:cn("data-[opened]:!transform-none",D),animate:{opacity:1,filter:"blur(0px)",transform:`perspective(500px) ${a}(0deg) scale(1)`},exit:{opacity:0,filter:"blur(4px)",transform:`perspective(500px) ${a}(${n}) scale(0.8)`},initial:{opacity:0,filter:"blur(4px)",transform:`perspective(500px) ${a}(${n}) scale(0.8)`},transition:d,onAnimationComplete:p=>{typeof p=="object"&&"opacity"in p&&p.opacity!==1||requestAnimationFrame(()=>{s(true);});},...A},"alert-dialog-popup")})}function $(t){return jsx(AlertDialog.Close,{"data-slot":"alert-dialog-close",...t})}function L(t){return jsx("div",{"data-slot":"alert-dialog-header",...t})}function S(t){return jsx("div",{"data-slot":"alert-dialog-footer",...t})}function V(t){return jsx(AlertDialog.Title,{"data-slot":"alert-dialog-title",...t})}function q(t){return jsx(AlertDialog.Description,{"data-slot":"alert-dialog-description",...t})}export{P as a,F as b,M as c,H as d,h as e,B as f,$ as g,L as h,S as i,V as j,q as k};//# sourceMappingURL=chunk-WYVGUIHL.js.map
2
+ //# sourceMappingURL=chunk-WYVGUIHL.js.map