@xploreu/components 0.4.41 → 0.4.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-3QGG35QR.js → chunk-5VZ6QNBI.js} +2 -2
- package/dist/{chunk-3QGG35QR.js.map → chunk-5VZ6QNBI.js.map} +1 -1
- package/dist/{chunk-77T5FOYW.js → chunk-C675EWZW.js} +2 -2
- package/dist/{chunk-77T5FOYW.js.map → chunk-C675EWZW.js.map} +1 -1
- package/dist/{chunk-WWCXHCNU.js → chunk-F77XVICY.js} +2 -2
- package/dist/{chunk-WWCXHCNU.js.map → chunk-F77XVICY.js.map} +1 -1
- package/dist/{chunk-UBTCCHVI.js → chunk-KUOFW7JO.js} +2 -2
- package/dist/{chunk-UBTCCHVI.js.map → chunk-KUOFW7JO.js.map} +1 -1
- package/dist/{chunk-EE5QQGMX.js → chunk-NFLQZ5NB.js} +2 -2
- package/dist/{chunk-EE5QQGMX.js.map → chunk-NFLQZ5NB.js.map} +1 -1
- package/dist/chunk-UINS73U7.js +2 -0
- package/dist/chunk-UINS73U7.js.map +1 -0
- package/dist/{chunk-AVJU2H5V.js → chunk-XIZN73T3.js} +2 -2
- package/dist/{chunk-AVJU2H5V.js.map → chunk-XIZN73T3.js.map} +1 -1
- package/dist/{chunk-LFNLGW5G.js → chunk-YPV6XEV4.js} +2 -2
- package/dist/{chunk-LFNLGW5G.js.map → chunk-YPV6XEV4.js.map} +1 -1
- package/dist/{chunk-KL2GG3KE.js → chunk-ZK7MHZFG.js} +2 -2
- package/dist/{chunk-KL2GG3KE.js.map → chunk-ZK7MHZFG.js.map} +1 -1
- package/dist/composites/combobox-chip-outside.js +1 -1
- package/dist/composites/index.js +1 -1
- package/dist/ui/alert-dialog.js +1 -1
- package/dist/ui/alert.d.ts +1 -1
- package/dist/ui/alerter.js +1 -1
- package/dist/ui/badge.d.ts +2 -2
- package/dist/ui/button.d.ts +2 -2
- package/dist/ui/button.js +1 -1
- package/dist/ui/calendar.js +1 -1
- package/dist/ui/carousel.js +1 -1
- package/dist/ui/date-multiple-picker.js +1 -1
- package/dist/ui/date-picker.js +1 -1
- package/dist/ui/date-range-picker.js +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +1 -1
- package/dist/ui/toast.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-VNAMAKPG.js +0 -2
- package/dist/chunk-VNAMAKPG.js.map +0 -1
|
@@ -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-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {d,e,b,c,f,g,h,i,j,a,l}from'./chunk-4IAMLCAM.js';import {b as b$1}from'./chunk-UINS73U7.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-5VZ6QNBI.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-5VZ6QNBI.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":"oZAyCA,SAASA,CAAAA,CAAY,CAAE,GAAGC,CAAM,CAAA,CAAqB,CACnD,OAAOC,GAAAA,CAACF,CAAAA,CAAA,CAAsB,GAAGC,EAAO,CAC1C,CAoBA,IAAME,CAAAA,CAAkD,CACtD,WAAA,CACE,8FAAA,CACF,UAAA,CACE,8FAAA,CACF,YAAA,CACE,iFAAA,CACF,cAAA,CACE,oGAAA,CACF,aAAA,CACE,oGAAA,CACF,eAAA,CACE,oFACJ,CAAA,CAEA,SAASC,CAAAA,CAAc,CACrB,SAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CAAW,WAAA,CACX,GAAGL,GACL,CAAA,CAAuB,CACrB,OACEC,GAAAA,CAACE,CAAAA,CAAA,CACC,SAAA,CAAWG,EAAAA,CACT,kEAAA,CACAJ,CAAAA,CAAiBG,CAAQ,CAAA,CACzBD,CACF,CAAA,CACC,GAAGJ,GAAAA,CACN,CAEJ,CAIA,SAASO,CAAAA,CAAcP,CAAAA,CAA2B,CAChD,OAAOC,GAAAA,CAACM,CAAAA,CAAA,CAAwB,GAAGP,CAAAA,CAAO,CAC5C,CAIA,SAASQ,CAAAA,CAAM,CACb,SAAA,CAAAJ,CAAAA,CACA,QAAA,CAAAK,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,GAAGV,CACL,CAAA,CAAe,CACb,OACEW,IAAAA,CAACH,CAAAA,CAAA,CACC,KAAA,CAAOE,CAAAA,CACP,SAAA,CAAWJ,EAAAA,CACT,iOAAA,CACA,wDAAA,CACA,6FAAA,CACA,qRAAA,CACA,uHAAA,CACA,4RACA,+MAAA,CACA,2GAAA,CACA,4KAAA,CACA,0LAAA,CACA,iIAAA,CACA,wEAAA,CACA,qGAAA,CACA,2HAAA,CACA,6BAAA,CACA,gHAAA,CACA,4IAAA,CACA,6IAAA,CACA,8GAAA,CACA,mJAAA,CACA,+KAAA,CACA,gLAAA,CACA,kJACA,0JAAA,CACA,sLAAA,CACA,uLAAA,CACA,wJAAA,CACAF,CACF,CAAA,CACC,GAAGJ,CAAAA,CAEJ,QAAA,CAAA,CAAAC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWK,EAAAA,CACd,6GAAA,CACA,qFAAA,CACA,kFAAA,CACA,sFACA,mFACF,CAAA,CAAG,CAAA,CACHL,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWK,EAAAA,CACd,+HAAA,CACA,0BAAA,CACA,yDAAA,CACA,mDAAA,CACA,yDAAA,CACA,qDACF,CAAA,CACG,QAAA,CAAAG,CAAAA,CACH,GACF,CAEJ,CAIA,SAASG,CAAAA,CAAa,CAAE,SAAA,CAAAR,CAAAA,CAAW,GAAGJ,CAAM,CAAA,CAAsB,CAChE,OACEC,GAAAA,CAACW,CAAAA,CAAA,CACC,SAAA,CAAWN,GACT,sRAAA,CACAF,CACF,CAAA,CACC,GAAGJ,CAAAA,CACN,CAEJ,CAIA,SAASa,CAAAA,CAAW,CAAE,SAAA,CAAAT,CAAAA,CAAW,GAAGJ,CAAM,CAAA,CAAoB,CAC5D,OACEC,GAAAA,CAACY,CAAAA,CAAA,CACC,SAAA,CAAWP,EAAAA,CACT,yCAAA,CACA,2DAAA,CACA,qDAAA,CACA,2DAAA,CACA,uDAAA,CACAF,CACF,CAAA,CACC,GAAGJ,CAAAA,CACN,CAEJ,CAIA,SAASc,CAAAA,CAAiB,CAAE,SAAA,CAAAV,CAAAA,CAAW,GAAGJ,CAAM,CAAA,CAA0B,CACxE,OACEC,GAAAA,CAACa,CAAAA,CAAA,CACC,SAAA,CAAWR,EAAAA,CAAG,yCAAA,CAA2CF,CAAS,EACjE,GAAGJ,CAAAA,CACN,CAEJ,CAIA,SAASe,CAAAA,CAAY,CACnB,SAAA,CAAAX,CAAAA,CACA,MAAA,CAAAY,CAAAA,CAASf,GAAAA,CAACgB,GAAAA,CAAA,CAAO,IAAA,CAAK,IAAA,CAAK,QAAQ,WAAA,CAAY,CAAA,CAC/C,GAAGjB,CACL,CAAA,CAAqB,CACnB,OACEC,GAAAA,CAACc,CAAAA,CAAA,CACC,MAAA,CAAQC,CAAAA,CACR,SAAA,CAAWV,EAAAA,CAAG,UAAA,CAAYF,CAAS,EAClC,GAAGJ,CAAAA,CACN,CAEJ,CAIA,SAASkB,CAAAA,CAAW,CAAE,SAAA,CAAAd,CAAAA,CAAW,QAAA,CAAAK,CAAAA,CAAU,GAAGT,CAAM,CAAA,CAAoB,CACtE,OACEC,GAAAA,CAACiB,CAAAA,CAAA,CACC,YAAA,CAAW,aAAA,CACX,SAAA,CAAWZ,EAAAA,CACT,2MAAA,CACAF,CACF,CAAA,CACC,GAAGJ,CAAAA,CAEH,QAAA,CAAAS,CAAAA,EAAYR,GAAAA,CAACkB,KAAAA,CAAA,CAAM,aAAA,CAAY,MAAA,CAAO,CAAA,CACzC,CAEJ,CAIA,SAASC,CAAAA,CAAU,CAAE,IAAA,CAAAC,CAAK,CAAA,CAAmB,CAC3C,IAAIC,CAAAA,CAAwB,IAAA,CAsB5B,OApBID,IAAS,SAAA,GACXC,CAAAA,CAAOrB,GAAAA,CAACsB,GAAAA,CAAA,CAAgB,SAAA,CAAU,yBAAA,CAA0B,CAAA,CAAA,CAG1DF,CAAAA,GAAS,MAAA,GACXC,CAAAA,CAAOrB,GAAAA,CAACuB,GAAAA,CAAA,CAAe,SAAA,CAAU,sBAAA,CAAuB,GAGtDH,CAAAA,GAAS,SAAA,GACXC,CAAAA,CAAOrB,GAAAA,CAACwB,GAAAA,CAAA,CAAmB,SAAA,CAAU,yBAAA,CAA0B,CAAA,CAAA,CAG7DJ,CAAAA,GAAS,OAAA,GACXC,CAAAA,CAAOrB,GAAAA,CAACyB,GAAAA,CAAA,CAAgB,SAAA,CAAU,wBAAwB,CAAA,CAAA,CAGxDL,CAAAA,GAAS,SAAA,GACXC,CAAAA,CAAOrB,GAAAA,CAAC0B,WAAAA,CAAA,CAAY,SAAA,CAAU,cAAA,CAAe,aAAA,CAAY,MAAA,CAAO,CAAA,CAAA,CAG7DL,CAAAA,CAGHrB,GAAAA,CAAC,MAAA,CAAA,CACC,WAAA,CAAU,aACV,SAAA,CAAU,2EAAA,CAET,QAAA,CAAAqB,CAAAA,CACH,CAAA,CARgB,IAUpB,CAEA,IAAMM,CAAAA,CAA6B,CACjC,WAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,aAAA,CACA,eACF,EAEA,SAASC,CAAAA,CAAU,CACjB,eAAA,CAAAC,CAAAA,CACA,QAAA,CAAAzB,CAAAA,CACA,KAAA,CAAA0B,CAAAA,CAAQ,CACV,CAAA,CAIG,CACD,GAAM,CAAE,MAAA,CAAAC,CAAO,EAAIC,CAAAA,EAAgB,CAKnC,OAJuBD,CAAAA,CAAO,MAAA,CAC3BE,CAAAA,EAAAA,CAAUA,CAAAA,CAAK,QAAA,EAAYJ,CAAAA,IAAqBzB,CACnD,CAAA,CAEsB,GAAA,CAAI,CAAC8B,CAAAA,CAAWC,CAAAA,GACpCnC,GAAAA,CAACO,EAAA,CAEC,KAAA,CAAO2B,CAAAA,CACP,eAAA,CAAe9B,CAAAA,CACf,aAAA,CAAa+B,CAAAA,CAAQ,CAAA,CAAI,EAAA,CAAK,MAAA,CAC9B,cAAA,CAAcL,CAAAA,GAAU,MAAA,EAAaK,CAAAA,EAASL,CAAAA,CAAQ,EAAA,CAAK,OAC3D,KAAA,CACE,CACE,eAAA,CAAiBK,CACnB,CAAA,CAGF,QAAA,CAAAzB,IAAAA,CAACC,CAAAA,CAAA,CACC,QAAA,CAAA,CAAAX,GAAAA,CAACmB,CAAAA,CAAA,CAAU,IAAA,CAAMe,CAAAA,CAAU,IAAA,CAAM,EACjCxB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oCAAA,CACb,QAAA,CAAA,CAAAV,GAAAA,CAACY,CAAAA,CAAA,EAAW,CAAA,CACZZ,GAAAA,CAACa,CAAAA,CAAA,EAAiB,CAAA,CAAA,CACpB,CAAA,CACAb,GAAAA,CAACc,CAAAA,CAAA,EAAY,CAAA,CACbd,GAAAA,CAACiB,CAAAA,CAAA,EAAW,CAAA,CAAA,CACd,CAAA,CAAA,CAnBKiB,CAAAA,CAAU,EAoBjB,CACD,CACH,CAOA,SAASE,CAAAA,CAAQ,CACf,QAAA,CAAA5B,CAAAA,CACA,SAAAJ,CAAAA,CAAW,WAAA,CACX,KAAA,CAAA0B,CAAAA,CAAQ,CAAA,CACR,YAAA,CAAAO,CAAAA,CAAeC,CAAAA,CACf,GAAGvC,CACL,CAAA,CAAiB,CACf,OACEW,IAAAA,CAACJ,CAAAA,CAAA,CAAc,aAAc+B,CAAAA,CAAc,KAAA,CAAOP,CAAAA,CAAQ,GAAG/B,CAAAA,CAC1D,QAAA,CAAA,CAAAS,CAAAA,CACDR,GAAAA,CAACF,CAAAA,CAAA,CACE,QAAA,CAAA6B,CAAAA,CAAU,GAAA,CAAKY,CAAAA,EACdvC,GAAAA,CAACE,CAAAA,CAAA,CAAwB,QAAA,CAAUqC,CAAAA,CACjC,QAAA,CAAAvC,GAAAA,CAAC4B,CAAAA,CAAA,CAAU,eAAA,CAAiBxB,CAAAA,CAAU,QAAA,CAAUmC,CAAAA,CAAK,KAAA,CAAOT,CAAAA,CAAO,CAAA,CAAA,CADjDS,CAEpB,CACD,CAAA,CACH,GACF,CAEJ","file":"chunk-5VZ6QNBI.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$2}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a as a$2}from'./chunk-F77XVICY.js';import {a,b,c}from'./chunk-NGSCUYDU.js';import {b as b$1}from'./chunk-UINS73U7.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-C675EWZW.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-C675EWZW.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-C675EWZW.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,2 +1,2 @@
|
|
|
1
|
-
import {a,b}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a,b}from'./chunk-UINS73U7.js';import*as D from'react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {differenceInCalendarDays}from'date-fns';import {ChevronLeftIcon,ChevronRightIcon,ChevronLeft,ChevronRight}from'lucide-react';import {DayPicker,DayButton,useDayPicker,labelPrevious,labelNext}from'react-day-picker';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs}from'react/jsx-runtime';function ce({className:r,showOutsideDays:e=true,showViewSwitcher:t=true,yearRange:a$1=12,numberOfMonths:s,components:l,navView:f,defaultNavView:u,onNavViewChange:g,minNavView:b="days",weekStartsOn:N=0,...n}){let[c,h]=useControlledState({value:f,defaultValue:u??"days",onChange:g});D.useEffect(()=>{b==="months"&&h("months"),b==="years"&&h("years");},[b,h]);let[C,d]=D.useState({year:new Date().getFullYear()}),[y,m]=D.useState(D.useMemo(()=>{let w=new Date().getFullYear();return {from:w-Math.floor(a$1/2-1),to:w+Math.ceil(a$1/2)}},[a$1])),{onNextClick:_,onPrevClick:V,startMonth:x,endMonth:p}=n,F=c==="years"||c==="months"?1:s,M=cn("relative flex [&>div:not(:last-of-type)]:mr-3",n.monthsClassName),R=cn("relative flex items-center justify-center",n.monthCaptionClassName),A=cn("flex flex-row",n.weekdaysClassName),G=cn("size-9 first:text-text-error-primary text-label-semibold-3 text-text-primary flex items-center justify-center",n.weekdayClassName),Y=cn("flex flex-col gap-2",n.monthClassName),E=cn("relative flex items-center justify-center pt-xp-xs",n.captionClassName),L=cn("truncate text-body-regular-3 font-medium",n.captionLabelClassName),B=a({variant:"secondary-accent",className:"absolute h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"}),T=cn(B,"right-0",n.buttonNextClassName),j=cn(B,"left-0",n.buttonPreviousClassName),O=cn("flex items-start",n.navClassName),J=cn("flex flex-col p-3 bg-bg-primary text-text-primary rounded-lg",n.monthGridClassName),$=cn("flex w-max items-start",n.weekClassName),I=cn("flex size-9 flex-1 items-center justify-center p-0 text-label-semibold-3",n.dayClassName),q=cn(a({variant:null,size:"sm"}),"p-0",n.dayButtonClassName),H="[&>button]:bg-gradient-buttons-gradient-blue [&>button]:text-fg-white",K=cn("day-range-start [&:not(.day-range-end)>button]:rounded-e-none",n.rangeStartClassName),Q=cn("day-range-end [&:not(.day-range-start)>button]:rounded-s-none",n.rangeEndClassName),U=cn("[&>button]:bg-none [&>button]:bg-bg-primary-hover [&>button]:text-text-primary [&>button]:rounded-none [&[aria-selected=true][data-today=true]>button]:after:bg-utility-brand-500 [&[aria-selected=true][data-today=true]>button]:after:ring-utility-brand-100",n.rangeMiddleClassName),W=cn(" [&>button]:relative","[&>button]:after:content-[''] [&>button]:after:absolute [&>button]:after:bottom-1","[&>button]:after:left-1/2 [&>button]:after:-translate-x-1/2","[&>button]:after:size-1 [&>button]:after:rounded-full [&>button]:after:ring-2 [&>button]:after:ring-utility-brand-100 [&>button]:after:bg-utility-brand-500","[&[aria-selected=true]>button]:after:bg-fg-white [&[aria-selected=true]>button]:after:ring-alpha-alpha-white-30",n.todayClassName),X=cn("opacity-50",n.outsideClassName),Z=cn("opacity-50",n.disabledClassName),ee=cn("invisible flex-1",n.hiddenClassName);return jsx(DayPicker,{className:cn("p-xp-xl rounded-xl bg-bg-tertiary h-max",r),classNames:{months:M,month_caption:R,weekdays:A,weekday:G,month:Y,caption:E,caption_label:L,button_next:T,button_previous:j,nav:O,month_grid:J,week:$,day:I,day_button:q,selected:H,range_start:K,range_middle:U,range_end:Q,today:W,outside:X,disabled:Z,hidden:ee},components:{Chevron:({orientation:w})=>jsx(w==="left"?ChevronLeftIcon:ChevronRightIcon,{className:"h-4 w-4"}),Nav:({className:w})=>jsx(de,{className:w,displayMonths:C,displayYears:y,endMonth:p,navView:c,setDisplayMonths:d,setDisplayYears:m,startMonth:x,onNextClick:_,onPrevClick:V}),CaptionLabel:w=>jsx(fe,{displayMonths:C,displayYears:y,navView:c,setNavView:h,showViewSwitcher:t,...w}),DayButton:w=>jsx(DayButton,{"data-icon":true,...w}),MonthGrid:({className:w,children:z,...te})=>jsx(be,{className:w,displayMonths:C,displayYears:y,endMonth:p,minNavView:b,navView:c,setDisplayMonths:d,setNavView:h,startMonth:x,...te,children:z}),...l},numberOfMonths:F,showOutsideDays:e,weekStartsOn:N,...n})}ce.displayName="Calendar";function de({className:r,navView:e,startMonth:t,endMonth:a,displayYears:s,displayMonths:l,setDisplayYears:f,setDisplayMonths:u,onPrevClick:g,onNextClick:b$1}){let{nextMonth:N,previousMonth:n,goToMonth:c}=useDayPicker(),h=e==="years"?t&&differenceInCalendarDays(new Date(s.from-1,0,1),t)<0||a&&differenceInCalendarDays(new Date(s.from-1,0,1),a)>0:e==="months"?t&&differenceInCalendarDays(new Date(l.year-1,0,1),t)<0||a&&differenceInCalendarDays(new Date(l.year-1,0,1),a)>0:!n,C=e==="years"?t&&differenceInCalendarDays(new Date(s.to+1,0,1),t)<0||a&&differenceInCalendarDays(new Date(s.to+1,0,1),a)>0:e==="months"?t&&differenceInCalendarDays(new Date(l.year+1,0,1),t)<0||a&&differenceInCalendarDays(new Date(l.year+1,0,1),a)>0:!N,d=D.useCallback(()=>{if(n){if(e==="years"){f(m=>({from:m.from-(m.to-m.from+1),to:m.to-(m.to-m.from+1)})),g?.(new Date(s.from-(s.to-s.from),0,1));return}if(e==="months"){u(m=>({year:m.year-1})),g?.(new Date(l.year-1,0,1));return}c(n),g?.(n);}},[n,c,s.from,s.to,l.year,e,g,f,u]),y=D.useCallback(()=>{if(N){if(e==="years"){f(m=>({from:m.from+(m.to-m.from+1),to:m.to+(m.to-m.from+1)})),b$1?.(new Date(s.from+(s.to-s.from),0,1));return}if(e==="months"){u(m=>({year:m.year+1})),b$1?.(new Date(l.year+1,0,1));return}c(N),b$1?.(N);}},[c,N,s.from,s.to,l.year,e,b$1,f,u]);return jsxs("nav",{className:cn("flex items-center",r),children:[jsx(b,{"aria-label":e==="years"?`Go to the previous ${s.to-s.from+1} years`:e==="months"?"Go to the previous year":labelPrevious(n),className:"absolute left-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10",disabled:h,size:"sm",icon:true,tabIndex:h?void 0:-1,type:"button",variant:null,onClick:d,children:jsx(ChevronLeft,{})}),jsx(b,{"aria-label":e==="years"?`Go to the next ${s.to-s.from+1} years`:e==="months"?"Go to the next year":labelNext(N),className:"absolute right-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10",disabled:C,size:"sm",icon:true,tabIndex:C?void 0:-1,type:"button",variant:null,onClick:y,children:jsx(ChevronRight,{})})]})}function fe({children:r,showViewSwitcher:e,navView:t,setNavView:a,displayYears:s,displayMonths:l,...f}){return e?jsx(b,{disabled:t==="years",size:"sm",type:"button",variant:null,onClick:()=>{t==="days"?a("months"):t==="months"&&a("years");},children:t==="days"?r:t==="months"?l.year:s.from+" - "+s.to}):jsx("span",{...f,children:r})}function be({className:r,children:e,displayYears:t,displayMonths:a,setDisplayMonths:s,startMonth:l,endMonth:f,navView:u,setNavView:g,minNavView:b="days",...N}){return u==="years"?jsx(ge,{className:r,displayYears:t,endMonth:f,minNavView:b,navView:u,setDisplayMonths:s,setNavView:g,startMonth:l,...N}):u==="months"?jsx(Ce,{className:r,displayMonths:a,endMonth:f,minNavView:b,navView:u,setNavView:g,startMonth:l,...N}):jsx("table",{className:cn("flex-1",r),...N,children:e})}function Ne(r,e){if(!r)return false;if(Array.isArray(r))return r.some(t=>t.getFullYear()===e);if(typeof r=="object"&&"from"in r){let t=r;return t.from&&t.to?e>=t.from.getFullYear()&&e<=t.to.getFullYear():t.from?t.from.getFullYear()===e:false}return r.getFullYear()===e}function ye(r,e,t){if(!r)return false;if(Array.isArray(r))return r.some(a=>a.getMonth()===t&&a.getFullYear()===e);if(typeof r=="object"&&"from"in r){let a=r;if(a.from&&a.to){let s=a.from.getMonth(),l=a.from.getFullYear(),f=a.to.getMonth(),u=a.to.getFullYear();return e===l&&e===u?t>=s&&t<=f:e===l?t>=s:e===u?t<=f:e>l&&e<u}return a.from?a.from.getMonth()===t&&a.from.getFullYear()===e:false}return r.getMonth()===t&&r.getFullYear()===e}function ge({className:r,displayYears:e,startMonth:t,endMonth:a,setNavView:s,navView:l,setDisplayMonths:f,minNavView:u="days",...g}){let {selected:b$1,select:N}=useDayPicker();new Date().getFullYear();let c=e.to-e.from+1,h=(C,d)=>{u==="years"?N?.(new Date(d,0,1),{},C):(s("months"),f({year:d}));};return jsx("table",{className:cn("w-[312px]",r),...g,children:jsx("tbody",{children:jsx("tr",{className:"grid grid-cols-3 gap-xp-md",children:Array.from({length:c},(C,d)=>{let y=e.from+d,m=new Date(y,0,1),_=new Date(y,11,31),V=t&&differenceInCalendarDays(_,t)<0,x=a&&differenceInCalendarDays(m,a)>0,p=V||x,M=Ne(b$1,y);return jsx("td",{children:jsx(b,{className:"w-full",disabled:l==="years"?p:void 0,type:"button",variant:M?"primary":"tertiary-accent",onClick:R=>h(R,y),children:y})},y)})})})})}function Ce({className:r,displayMonths:e,startMonth:t,endMonth:a,setNavView:s,navView:l,minNavView:f="days",...u}){let{goToMonth:g,selected:b$1,select:N}=useDayPicker(),n=["January","February","March","April","May","June","July","August","September","October","November","December"],c=e.year,h=(C,d)=>{f==="months"?N?.(new Date(c,d,1),{},C):(s("days"),g(new Date(c,d)));};return jsx("table",{className:cn("w-[312px]",r),...u,children:jsx("tbody",{children:jsx("tr",{className:"grid grid-cols-3 gap-xp-md",children:n.map((C,d)=>{let y=t&&differenceInCalendarDays(new Date(c,d,31),t)<0,m=a&&differenceInCalendarDays(new Date(c,d,1),a)>0,_=y||m;c===new Date().getFullYear()&&d===new Date().getMonth();let x=ye(b$1,c,d);return jsx("td",{children:jsx(b,{className:"w-full",disabled:l==="months"?_:void 0,type:"button",variant:x?"primary":"tertiary-accent",onClick:p=>h(p,d),children:C.substring(0,3)})},d)})})})})}export{ce as a};//# sourceMappingURL=chunk-F77XVICY.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-F77XVICY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/calendar.tsx"],"names":["Calendar","className","showOutsideDays","showViewSwitcher","yearRange","numberOfMonths","components","navViewProp","defaultNavView","onNavViewChange","minNavView","weekStartsOn","props","navView","setNavView","useControlledState","displayMonths","setDisplayMonths","displayYears","setDisplayYears","currentYear","onNextClick","onPrevClick","startMonth","endMonth","columnsDisplayed","_monthsClassName","cn","_monthCaptionClassName","_weekdaysClassName","_weekdayClassName","_monthClassName","_captionClassName","_captionLabelClassName","buttonNavClassName","buttonVariants","_buttonNextClassName","_buttonPreviousClassName","_navClassName","_monthGridClassName","_weekClassName","_dayClassName","_dayButtonClassName","_dayButtonSelectedClassName","_rangeStartClassName","_rangeEndClassName","_rangeMiddleClassName","_todayClassName","_outsideClassName","_disabledClassName","_hiddenClassName","jsx","DayPicker","orientation","ChevronLeftIcon","ChevronRightIcon","navClassName","Nav","clProps","CaptionLabel","dayProps","DayButton","mgClassName","children","mgProps","CalendarGrid","nextMonth","previousMonth","goToMonth","useDayPicker","isPreviousDisabled","differenceInCalendarDays","isNextDisabled","handlePreviousClick","prev","handleNextClick","jsxs","Button","labelPrevious","ChevronLeft","labelNext","ChevronRight","YearGrid","MonthGrid","isYearSelected","selected","year","d","range","isMonthSelected","monthIdx","fromMonth","fromYear","toMonth","toYear","select","totalYears","handleClick","e","_","i","yearStart","yearEnd","isBeforeStart","isAfterEnd","isDisabled","isSelected","months","month","isBefore","isAfter"],"mappings":"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","file":"chunk-WWCXHCNU.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 { differenceInCalendarDays } from \"date-fns\"\r\nimport {\r\n ChevronLeft,\r\n ChevronLeftIcon,\r\n ChevronRight,\r\n ChevronRightIcon,\r\n} from \"lucide-react\"\r\nimport {\r\n type DateRange,\r\n DayButton,\r\n DayPicker,\r\n type DayPickerProps,\r\n labelNext,\r\n labelPrevious,\r\n useDayPicker,\r\n} from \"react-day-picker\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { Button, buttonVariants } from \"./button\"\r\n\r\nexport type CalendarProps = DayPickerProps & {\r\n yearRange?: number\r\n showViewSwitcher?: boolean\r\n navView?: NavView\r\n defaultNavView?: NavView\r\n onNavViewChange?: (navView: NavView) => void\r\n minNavView?: NavView\r\n monthsClassName?: string\r\n monthCaptionClassName?: string\r\n weekdaysClassName?: string\r\n weekdayClassName?: string\r\n monthClassName?: string\r\n captionClassName?: string\r\n captionLabelClassName?: string\r\n buttonNextClassName?: string\r\n buttonPreviousClassName?: string\r\n navClassName?: string\r\n monthGridClassName?: string\r\n weekClassName?: string\r\n dayClassName?: string\r\n dayButtonClassName?: string\r\n rangeStartClassName?: string\r\n rangeEndClassName?: string\r\n selectedClassName?: string\r\n todayClassName?: string\r\n outsideClassName?: string\r\n disabledClassName?: string\r\n rangeMiddleClassName?: string\r\n hiddenClassName?: string\r\n}\r\n\r\nexport type NavView = \"days\" | \"months\" | \"years\"\r\n\r\nfunction Calendar({\r\n className,\r\n showOutsideDays = true,\r\n showViewSwitcher = true,\r\n yearRange = 12,\r\n numberOfMonths,\r\n components,\r\n navView: navViewProp,\r\n defaultNavView,\r\n onNavViewChange,\r\n minNavView = \"days\",\r\n weekStartsOn = 0,\r\n ...props\r\n}: CalendarProps) {\r\n const [navView, setNavView] = useControlledState({\r\n value: navViewProp,\r\n defaultValue: defaultNavView ?? \"days\",\r\n onChange: onNavViewChange,\r\n })\r\n\r\n React.useEffect(() => {\r\n if (minNavView === \"months\") setNavView(\"months\")\r\n if (minNavView === \"years\") setNavView(\"years\")\r\n }, [minNavView, setNavView])\r\n\r\n const [displayMonths, setDisplayMonths] = React.useState<{ year: number }>({\r\n year: new Date().getFullYear(),\r\n })\r\n\r\n const [displayYears, setDisplayYears] = React.useState<{ from: number; to: number }>(\r\n React.useMemo(() => {\r\n const currentYear = new Date().getFullYear()\r\n return {\r\n from: currentYear - Math.floor(yearRange / 2 - 1),\r\n to: currentYear + Math.ceil(yearRange / 2),\r\n }\r\n }, [yearRange]),\r\n )\r\n\r\n const { onNextClick, onPrevClick, startMonth, endMonth } = props\r\n\r\n const columnsDisplayed = navView === \"years\" || navView === \"months\" ? 1 : numberOfMonths\r\n\r\n const _monthsClassName = cn(\"relative flex [&>div:not(:last-of-type)]:mr-3\", props.monthsClassName)\r\n const _monthCaptionClassName = cn(\"relative flex items-center justify-center\", props.monthCaptionClassName)\r\n const _weekdaysClassName = cn(\"flex flex-row\", props.weekdaysClassName)\r\n const _weekdayClassName = cn(\"size-9 first:text-text-error-primary text-label-semibold-3 text-text-primary flex items-center justify-center\", props.weekdayClassName)\r\n const _monthClassName = cn(\"flex flex-col gap-2\", props.monthClassName)\r\n const _captionClassName = cn(\"relative flex items-center justify-center pt-xp-xs\", props.captionClassName)\r\n const _captionLabelClassName = cn(\"truncate text-body-regular-3 font-medium\", props.captionLabelClassName)\r\n const buttonNavClassName = buttonVariants({\r\n variant: \"secondary-accent\",\r\n className: \"absolute h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\r\n })\r\n const _buttonNextClassName = cn(buttonNavClassName, \"right-0\", props.buttonNextClassName)\r\n const _buttonPreviousClassName = cn(buttonNavClassName, \"left-0\", props.buttonPreviousClassName)\r\n const _navClassName = cn(\"flex items-start\", props.navClassName)\r\n const _monthGridClassName = cn(\"flex flex-col p-3 bg-bg-primary text-text-primary rounded-lg\", props.monthGridClassName)\r\n const _weekClassName = cn(\"flex w-max items-start\", props.weekClassName)\r\n const _dayClassName = cn(\"flex size-9 flex-1 items-center justify-center p-0 text-label-semibold-3\", props.dayClassName)\r\n const _dayButtonClassName = cn(\r\n buttonVariants({ variant: null, size: \"sm\" }),\r\n \"p-0\",\r\n props.dayButtonClassName,\r\n )\r\n const _dayButtonSelectedClassName = \"[&>button]:bg-gradient-buttons-gradient-blue [&>button]:text-fg-white\"\r\n const _rangeStartClassName = cn(\"day-range-start [&:not(.day-range-end)>button]:rounded-e-none\", props.rangeStartClassName)\r\n const _rangeEndClassName = cn(\"day-range-end [&:not(.day-range-start)>button]:rounded-s-none\", props.rangeEndClassName)\r\n const _rangeMiddleClassName = cn(\r\n \"[&>button]:bg-none [&>button]:bg-bg-primary-hover [&>button]:text-text-primary [&>button]:rounded-none [&[aria-selected=true][data-today=true]>button]:after:bg-utility-brand-500 [&[aria-selected=true][data-today=true]>button]:after:ring-utility-brand-100\",\r\n props.rangeMiddleClassName,\r\n )\r\n const _todayClassName = cn(\r\n \" [&>button]:relative\",\r\n \"[&>button]:after:content-[''] [&>button]:after:absolute [&>button]:after:bottom-1\",\r\n \"[&>button]:after:left-1/2 [&>button]:after:-translate-x-1/2\",\r\n \"[&>button]:after:size-1 [&>button]:after:rounded-full [&>button]:after:ring-2 [&>button]:after:ring-utility-brand-100 [&>button]:after:bg-utility-brand-500\",\r\n \"[&[aria-selected=true]>button]:after:bg-fg-white [&[aria-selected=true]>button]:after:ring-alpha-alpha-white-30\",\r\n props.todayClassName,\r\n )\r\n const _outsideClassName = cn(\"opacity-50\", props.outsideClassName)\r\n const _disabledClassName = cn(\"opacity-50\", props.disabledClassName)\r\n const _hiddenClassName = cn(\"invisible flex-1\", props.hiddenClassName)\r\n\r\n return (\r\n <DayPicker\r\n className={cn(\"p-xp-xl rounded-xl bg-bg-tertiary h-max\", className)}\r\n classNames={{\r\n months: _monthsClassName,\r\n month_caption: _monthCaptionClassName,\r\n weekdays: _weekdaysClassName,\r\n weekday: _weekdayClassName,\r\n month: _monthClassName,\r\n caption: _captionClassName,\r\n caption_label: _captionLabelClassName,\r\n button_next: _buttonNextClassName,\r\n button_previous: _buttonPreviousClassName,\r\n nav: _navClassName,\r\n month_grid: _monthGridClassName,\r\n week: _weekClassName,\r\n day: _dayClassName,\r\n day_button: _dayButtonClassName,\r\n selected: _dayButtonSelectedClassName,\r\n range_start: _rangeStartClassName,\r\n range_middle: _rangeMiddleClassName,\r\n range_end: _rangeEndClassName,\r\n today: _todayClassName,\r\n outside: _outsideClassName,\r\n disabled: _disabledClassName,\r\n hidden: _hiddenClassName,\r\n }}\r\n components={{\r\n Chevron: ({ orientation }) => {\r\n const Icon = orientation === \"left\" ? ChevronLeftIcon : ChevronRightIcon\r\n return <Icon className=\"h-4 w-4\" />\r\n },\r\n Nav: ({ className: navClassName }) => (\r\n <Nav\r\n className={navClassName}\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setDisplayYears={setDisplayYears}\r\n startMonth={startMonth}\r\n onNextClick={onNextClick}\r\n onPrevClick={onPrevClick}\r\n />\r\n ),\r\n CaptionLabel: (clProps) => (\r\n <CaptionLabel\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n navView={navView}\r\n setNavView={setNavView}\r\n showViewSwitcher={showViewSwitcher}\r\n {...clProps}\r\n />\r\n ),\r\n DayButton: (dayProps) => (\r\n <DayButton\r\n data-icon\r\n {...dayProps}\r\n />\r\n ),\r\n MonthGrid: ({ className: mgClassName, children, ...mgProps }) => (\r\n <CalendarGrid\r\n className={mgClassName}\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...mgProps}\r\n >\r\n {children}\r\n </CalendarGrid>\r\n ),\r\n ...components,\r\n }}\r\n numberOfMonths={columnsDisplayed}\r\n showOutsideDays={showOutsideDays}\r\n weekStartsOn={weekStartsOn}\r\n {...props}\r\n />\r\n )\r\n}\r\nCalendar.displayName = \"Calendar\"\r\n\r\nfunction Nav({\r\n className,\r\n navView,\r\n startMonth,\r\n endMonth,\r\n displayYears,\r\n displayMonths,\r\n setDisplayYears,\r\n setDisplayMonths,\r\n onPrevClick,\r\n onNextClick,\r\n}: {\r\n className?: string\r\n navView: NavView\r\n startMonth?: Date\r\n endMonth?: Date\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n setDisplayYears: React.Dispatch<React.SetStateAction<{ from: number; to: number }>>\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n onPrevClick?: (date: Date) => void\r\n onNextClick?: (date: Date) => void\r\n}) {\r\n const { nextMonth, previousMonth, goToMonth } = useDayPicker()\r\n\r\n const isPreviousDisabled = (() => {\r\n if (navView === \"years\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayYears.from - 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayYears.from - 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayMonths.year - 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayMonths.year - 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n return !previousMonth\r\n })()\r\n\r\n const isNextDisabled = (() => {\r\n if (navView === \"years\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayYears.to + 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayYears.to + 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayMonths.year + 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayMonths.year + 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n return !nextMonth\r\n })()\r\n\r\n const handlePreviousClick = React.useCallback(() => {\r\n if (!previousMonth) return\r\n if (navView === \"years\") {\r\n setDisplayYears((prev) => ({\r\n from: prev.from - (prev.to - prev.from + 1),\r\n to: prev.to - (prev.to - prev.from + 1),\r\n }))\r\n onPrevClick?.(new Date(displayYears.from - (displayYears.to - displayYears.from), 0, 1))\r\n return\r\n }\r\n if (navView === \"months\") {\r\n setDisplayMonths((prev) => ({ year: prev.year - 1 }))\r\n onPrevClick?.(new Date(displayMonths.year - 1, 0, 1))\r\n return\r\n }\r\n goToMonth(previousMonth)\r\n onPrevClick?.(previousMonth)\r\n }, [previousMonth, goToMonth, displayYears.from, displayYears.to, displayMonths.year, navView, onPrevClick, setDisplayYears, setDisplayMonths])\r\n\r\n const handleNextClick = React.useCallback(() => {\r\n if (!nextMonth) return\r\n if (navView === \"years\") {\r\n setDisplayYears((prev) => ({\r\n from: prev.from + (prev.to - prev.from + 1),\r\n to: prev.to + (prev.to - prev.from + 1),\r\n }))\r\n onNextClick?.(new Date(displayYears.from + (displayYears.to - displayYears.from), 0, 1))\r\n return\r\n }\r\n if (navView === \"months\") {\r\n setDisplayMonths((prev) => ({ year: prev.year + 1 }))\r\n onNextClick?.(new Date(displayMonths.year + 1, 0, 1))\r\n return\r\n }\r\n goToMonth(nextMonth)\r\n onNextClick?.(nextMonth)\r\n }, [goToMonth, nextMonth, displayYears.from, displayYears.to, displayMonths.year, navView, onNextClick, setDisplayYears, setDisplayMonths])\r\n\r\n return (\r\n <nav className={cn(\"flex items-center\", className)}>\r\n <Button\r\n aria-label={\r\n navView === \"years\"\r\n ? `Go to the previous ${displayYears.to - displayYears.from + 1} years`\r\n : navView === \"months\"\r\n ? \"Go to the previous year\"\r\n : labelPrevious(previousMonth)\r\n }\r\n className=\"absolute left-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10\"\r\n disabled={isPreviousDisabled}\r\n size=\"sm\"\r\n icon\r\n tabIndex={isPreviousDisabled ? undefined : -1}\r\n type=\"button\"\r\n variant={null}\r\n onClick={handlePreviousClick}\r\n >\r\n <ChevronLeft />\r\n </Button>\r\n\r\n <Button\r\n aria-label={\r\n navView === \"years\"\r\n ? `Go to the next ${displayYears.to - displayYears.from + 1} years`\r\n : navView === \"months\"\r\n ? \"Go to the next year\"\r\n : labelNext(nextMonth)\r\n }\r\n className=\"absolute right-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10\"\r\n disabled={isNextDisabled}\r\n size=\"sm\"\r\n icon\r\n tabIndex={isNextDisabled ? undefined : -1}\r\n type=\"button\"\r\n variant={null}\r\n onClick={handleNextClick}\r\n >\r\n <ChevronRight />\r\n </Button>\r\n </nav>\r\n )\r\n}\r\n\r\nfunction CaptionLabel({\r\n children,\r\n showViewSwitcher,\r\n navView,\r\n setNavView,\r\n displayYears,\r\n displayMonths,\r\n ...props\r\n}: {\r\n showViewSwitcher?: boolean\r\n navView: NavView\r\n setNavView: (navView: NavView) => void\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n} & React.ComponentProps<\"span\">) {\r\n if (!showViewSwitcher) return <span {...props}>{children}</span>\r\n return (\r\n <Button\r\n disabled={navView === \"years\"}\r\n size=\"sm\"\r\n type=\"button\"\r\n variant={null}\r\n onClick={() => {\r\n if (navView === \"days\") setNavView(\"months\")\r\n else if (navView === \"months\") setNavView(\"years\")\r\n }}\r\n >\r\n {navView === \"days\"\r\n ? children\r\n : navView === \"months\"\r\n ? displayMonths.year\r\n : displayYears.from + \" - \" + displayYears.to}\r\n </Button>\r\n )\r\n}\r\n\r\nfunction CalendarGrid({\r\n className,\r\n children,\r\n displayYears,\r\n displayMonths,\r\n setDisplayMonths,\r\n startMonth,\r\n endMonth,\r\n navView,\r\n setNavView,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n children: React.ReactNode\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n startMonth?: Date\r\n endMonth?: Date\r\n navView: NavView\r\n setNavView: (navView: NavView) => void\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n if (navView === \"years\") {\r\n return (\r\n <YearGrid\r\n className={className}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...props}\r\n />\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n <MonthGrid\r\n className={className}\r\n displayMonths={displayMonths}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...props}\r\n />\r\n )\r\n }\r\n return (\r\n <table className={cn(\"flex-1\", className)} {...props}>\r\n {children}\r\n </table>\r\n )\r\n}\r\n\r\nfunction isYearSelected(selected: unknown, year: number): boolean {\r\n if (!selected) return false\r\n if (Array.isArray(selected)) return (selected as Date[]).some((d) => d.getFullYear() === year)\r\n if (typeof selected === \"object\" && \"from\" in selected) {\r\n const range = selected as DateRange\r\n if (range.from && range.to) return year >= range.from.getFullYear() && year <= range.to.getFullYear()\r\n if (range.from) return range.from.getFullYear() === year\r\n return false\r\n }\r\n return (selected as Date).getFullYear() === year\r\n}\r\n\r\nfunction isMonthSelected(selected: unknown, year: number, monthIdx: number): boolean {\r\n if (!selected) return false\r\n if (Array.isArray(selected)) {\r\n return (selected as Date[]).some((d) => d.getMonth() === monthIdx && d.getFullYear() === year)\r\n }\r\n if (typeof selected === \"object\" && \"from\" in selected) {\r\n const range = selected as DateRange\r\n if (range.from && range.to) {\r\n const fromMonth = range.from.getMonth(), fromYear = range.from.getFullYear()\r\n const toMonth = range.to.getMonth(), toYear = range.to.getFullYear()\r\n if (year === fromYear && year === toYear) return monthIdx >= fromMonth && monthIdx <= toMonth\r\n if (year === fromYear) return monthIdx >= fromMonth\r\n if (year === toYear) return monthIdx <= toMonth\r\n return year > fromYear && year < toYear\r\n }\r\n if (range.from) return range.from.getMonth() === monthIdx && range.from.getFullYear() === year\r\n return false\r\n }\r\n return (selected as Date).getMonth() === monthIdx && (selected as Date).getFullYear() === year\r\n}\r\n\r\nfunction YearGrid<T extends DayPickerProps>({\r\n className,\r\n displayYears,\r\n startMonth,\r\n endMonth,\r\n setNavView,\r\n navView,\r\n setDisplayMonths,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n displayYears: { from: number; to: number }\r\n startMonth?: Date\r\n endMonth?: Date\r\n setNavView: (navView: NavView) => void\r\n navView: NavView\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n const { selected, select } = useDayPicker<T>()\r\n const currentYear = new Date().getFullYear()\r\n const totalYears = displayYears.to - displayYears.from + 1\r\n\r\n const handleClick = (e: React.MouseEvent, year: number) => {\r\n if (minNavView === \"years\") {\r\n select?.(new Date(year, 0, 1), {}, e)\r\n } else {\r\n setNavView(\"months\")\r\n setDisplayMonths({ year })\r\n }\r\n }\r\n\r\n return (\r\n <table className={cn(\"w-[312px]\", className)} {...props}>\r\n <tbody>\r\n <tr className=\"grid grid-cols-3 gap-xp-md\">\r\n {Array.from({ length: totalYears }, (_, i) => {\r\n const year = displayYears.from + i\r\n const yearStart = new Date(year, 0, 1)\r\n const yearEnd = new Date(year, 11, 31)\r\n const isBeforeStart = startMonth && differenceInCalendarDays(yearEnd, startMonth) < 0\r\n const isAfterEnd = endMonth && differenceInCalendarDays(yearStart, endMonth) > 0\r\n const isDisabled = isBeforeStart || isAfterEnd\r\n const isCurrentYear = year === currentYear\r\n const isSelected = isYearSelected(selected, year)\r\n return (\r\n <td key={year}>\r\n <Button\r\n className=\"w-full\"\r\n disabled={navView === \"years\" ? isDisabled : undefined}\r\n type=\"button\"\r\n variant={isSelected ? \"primary\" : \"tertiary-accent\"}\r\n onClick={(e) => handleClick(e, year)}\r\n >\r\n {year}\r\n </Button>\r\n </td>\r\n )\r\n })}\r\n </tr>\r\n </tbody>\r\n </table>\r\n )\r\n}\r\n\r\nfunction MonthGrid<T extends DayPickerProps>({\r\n className,\r\n displayMonths,\r\n startMonth,\r\n endMonth,\r\n setNavView,\r\n navView,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n displayMonths: { year: number }\r\n startMonth?: Date\r\n endMonth?: Date\r\n setNavView: (navView: NavView) => void\r\n navView: NavView\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n const { goToMonth, selected, select } = useDayPicker<T>()\r\n const months = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\r\n const year = displayMonths.year\r\n\r\n const handleClick = (e: React.MouseEvent, i: number) => {\r\n if (minNavView === \"months\") {\r\n select?.(new Date(year, i, 1), {}, e)\r\n } else {\r\n setNavView(\"days\")\r\n goToMonth(new Date(year, i))\r\n }\r\n }\r\n\r\n return (\r\n <table className={cn(\"w-[312px]\", className)} {...props}>\r\n <tbody>\r\n <tr className=\"grid grid-cols-3 gap-xp-md\">\r\n {months.map((month, i) => {\r\n const isBefore = startMonth && differenceInCalendarDays(new Date(year, i, 31), startMonth) < 0\r\n const isAfter = endMonth && differenceInCalendarDays(new Date(year, i, 1), endMonth) > 0\r\n const isDisabled = isBefore || isAfter\r\n const isCurrentMonth = year === new Date().getFullYear() && i === new Date().getMonth()\r\n const isSelected = isMonthSelected(selected, year, i)\r\n return (\r\n <td key={i}>\r\n <Button\r\n className=\"w-full\"\r\n disabled={navView === \"months\" ? isDisabled : undefined}\r\n type=\"button\"\r\n variant={isSelected ? \"primary\" : \"tertiary-accent\"}\r\n onClick={(e) => handleClick(e, i)}\r\n >\r\n {month.substring(0, 3)}\r\n </Button>\r\n </td>\r\n )\r\n })}\r\n </tr>\r\n </tbody>\r\n </table>\r\n )\r\n}\r\n\r\nexport { Calendar }\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui/calendar.tsx"],"names":["Calendar","className","showOutsideDays","showViewSwitcher","yearRange","numberOfMonths","components","navViewProp","defaultNavView","onNavViewChange","minNavView","weekStartsOn","props","navView","setNavView","useControlledState","displayMonths","setDisplayMonths","displayYears","setDisplayYears","currentYear","onNextClick","onPrevClick","startMonth","endMonth","columnsDisplayed","_monthsClassName","cn","_monthCaptionClassName","_weekdaysClassName","_weekdayClassName","_monthClassName","_captionClassName","_captionLabelClassName","buttonNavClassName","buttonVariants","_buttonNextClassName","_buttonPreviousClassName","_navClassName","_monthGridClassName","_weekClassName","_dayClassName","_dayButtonClassName","_dayButtonSelectedClassName","_rangeStartClassName","_rangeEndClassName","_rangeMiddleClassName","_todayClassName","_outsideClassName","_disabledClassName","_hiddenClassName","jsx","DayPicker","orientation","ChevronLeftIcon","ChevronRightIcon","navClassName","Nav","clProps","CaptionLabel","dayProps","DayButton","mgClassName","children","mgProps","CalendarGrid","nextMonth","previousMonth","goToMonth","useDayPicker","isPreviousDisabled","differenceInCalendarDays","isNextDisabled","handlePreviousClick","prev","handleNextClick","jsxs","Button","labelPrevious","ChevronLeft","labelNext","ChevronRight","YearGrid","MonthGrid","isYearSelected","selected","year","d","range","isMonthSelected","monthIdx","fromMonth","fromYear","toMonth","toYear","select","totalYears","handleClick","e","_","i","yearStart","yearEnd","isBeforeStart","isAfterEnd","isDisabled","isSelected","months","month","isBefore","isAfter"],"mappings":"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","file":"chunk-F77XVICY.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 { differenceInCalendarDays } from \"date-fns\"\r\nimport {\r\n ChevronLeft,\r\n ChevronLeftIcon,\r\n ChevronRight,\r\n ChevronRightIcon,\r\n} from \"lucide-react\"\r\nimport {\r\n type DateRange,\r\n DayButton,\r\n DayPicker,\r\n type DayPickerProps,\r\n labelNext,\r\n labelPrevious,\r\n useDayPicker,\r\n} from \"react-day-picker\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { Button, buttonVariants } from \"./button\"\r\n\r\nexport type CalendarProps = DayPickerProps & {\r\n yearRange?: number\r\n showViewSwitcher?: boolean\r\n navView?: NavView\r\n defaultNavView?: NavView\r\n onNavViewChange?: (navView: NavView) => void\r\n minNavView?: NavView\r\n monthsClassName?: string\r\n monthCaptionClassName?: string\r\n weekdaysClassName?: string\r\n weekdayClassName?: string\r\n monthClassName?: string\r\n captionClassName?: string\r\n captionLabelClassName?: string\r\n buttonNextClassName?: string\r\n buttonPreviousClassName?: string\r\n navClassName?: string\r\n monthGridClassName?: string\r\n weekClassName?: string\r\n dayClassName?: string\r\n dayButtonClassName?: string\r\n rangeStartClassName?: string\r\n rangeEndClassName?: string\r\n selectedClassName?: string\r\n todayClassName?: string\r\n outsideClassName?: string\r\n disabledClassName?: string\r\n rangeMiddleClassName?: string\r\n hiddenClassName?: string\r\n}\r\n\r\nexport type NavView = \"days\" | \"months\" | \"years\"\r\n\r\nfunction Calendar({\r\n className,\r\n showOutsideDays = true,\r\n showViewSwitcher = true,\r\n yearRange = 12,\r\n numberOfMonths,\r\n components,\r\n navView: navViewProp,\r\n defaultNavView,\r\n onNavViewChange,\r\n minNavView = \"days\",\r\n weekStartsOn = 0,\r\n ...props\r\n}: CalendarProps) {\r\n const [navView, setNavView] = useControlledState({\r\n value: navViewProp,\r\n defaultValue: defaultNavView ?? \"days\",\r\n onChange: onNavViewChange,\r\n })\r\n\r\n React.useEffect(() => {\r\n if (minNavView === \"months\") setNavView(\"months\")\r\n if (minNavView === \"years\") setNavView(\"years\")\r\n }, [minNavView, setNavView])\r\n\r\n const [displayMonths, setDisplayMonths] = React.useState<{ year: number }>({\r\n year: new Date().getFullYear(),\r\n })\r\n\r\n const [displayYears, setDisplayYears] = React.useState<{ from: number; to: number }>(\r\n React.useMemo(() => {\r\n const currentYear = new Date().getFullYear()\r\n return {\r\n from: currentYear - Math.floor(yearRange / 2 - 1),\r\n to: currentYear + Math.ceil(yearRange / 2),\r\n }\r\n }, [yearRange]),\r\n )\r\n\r\n const { onNextClick, onPrevClick, startMonth, endMonth } = props\r\n\r\n const columnsDisplayed = navView === \"years\" || navView === \"months\" ? 1 : numberOfMonths\r\n\r\n const _monthsClassName = cn(\"relative flex [&>div:not(:last-of-type)]:mr-3\", props.monthsClassName)\r\n const _monthCaptionClassName = cn(\"relative flex items-center justify-center\", props.monthCaptionClassName)\r\n const _weekdaysClassName = cn(\"flex flex-row\", props.weekdaysClassName)\r\n const _weekdayClassName = cn(\"size-9 first:text-text-error-primary text-label-semibold-3 text-text-primary flex items-center justify-center\", props.weekdayClassName)\r\n const _monthClassName = cn(\"flex flex-col gap-2\", props.monthClassName)\r\n const _captionClassName = cn(\"relative flex items-center justify-center pt-xp-xs\", props.captionClassName)\r\n const _captionLabelClassName = cn(\"truncate text-body-regular-3 font-medium\", props.captionLabelClassName)\r\n const buttonNavClassName = buttonVariants({\r\n variant: \"secondary-accent\",\r\n className: \"absolute h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\r\n })\r\n const _buttonNextClassName = cn(buttonNavClassName, \"right-0\", props.buttonNextClassName)\r\n const _buttonPreviousClassName = cn(buttonNavClassName, \"left-0\", props.buttonPreviousClassName)\r\n const _navClassName = cn(\"flex items-start\", props.navClassName)\r\n const _monthGridClassName = cn(\"flex flex-col p-3 bg-bg-primary text-text-primary rounded-lg\", props.monthGridClassName)\r\n const _weekClassName = cn(\"flex w-max items-start\", props.weekClassName)\r\n const _dayClassName = cn(\"flex size-9 flex-1 items-center justify-center p-0 text-label-semibold-3\", props.dayClassName)\r\n const _dayButtonClassName = cn(\r\n buttonVariants({ variant: null, size: \"sm\" }),\r\n \"p-0\",\r\n props.dayButtonClassName,\r\n )\r\n const _dayButtonSelectedClassName = \"[&>button]:bg-gradient-buttons-gradient-blue [&>button]:text-fg-white\"\r\n const _rangeStartClassName = cn(\"day-range-start [&:not(.day-range-end)>button]:rounded-e-none\", props.rangeStartClassName)\r\n const _rangeEndClassName = cn(\"day-range-end [&:not(.day-range-start)>button]:rounded-s-none\", props.rangeEndClassName)\r\n const _rangeMiddleClassName = cn(\r\n \"[&>button]:bg-none [&>button]:bg-bg-primary-hover [&>button]:text-text-primary [&>button]:rounded-none [&[aria-selected=true][data-today=true]>button]:after:bg-utility-brand-500 [&[aria-selected=true][data-today=true]>button]:after:ring-utility-brand-100\",\r\n props.rangeMiddleClassName,\r\n )\r\n const _todayClassName = cn(\r\n \" [&>button]:relative\",\r\n \"[&>button]:after:content-[''] [&>button]:after:absolute [&>button]:after:bottom-1\",\r\n \"[&>button]:after:left-1/2 [&>button]:after:-translate-x-1/2\",\r\n \"[&>button]:after:size-1 [&>button]:after:rounded-full [&>button]:after:ring-2 [&>button]:after:ring-utility-brand-100 [&>button]:after:bg-utility-brand-500\",\r\n \"[&[aria-selected=true]>button]:after:bg-fg-white [&[aria-selected=true]>button]:after:ring-alpha-alpha-white-30\",\r\n props.todayClassName,\r\n )\r\n const _outsideClassName = cn(\"opacity-50\", props.outsideClassName)\r\n const _disabledClassName = cn(\"opacity-50\", props.disabledClassName)\r\n const _hiddenClassName = cn(\"invisible flex-1\", props.hiddenClassName)\r\n\r\n return (\r\n <DayPicker\r\n className={cn(\"p-xp-xl rounded-xl bg-bg-tertiary h-max\", className)}\r\n classNames={{\r\n months: _monthsClassName,\r\n month_caption: _monthCaptionClassName,\r\n weekdays: _weekdaysClassName,\r\n weekday: _weekdayClassName,\r\n month: _monthClassName,\r\n caption: _captionClassName,\r\n caption_label: _captionLabelClassName,\r\n button_next: _buttonNextClassName,\r\n button_previous: _buttonPreviousClassName,\r\n nav: _navClassName,\r\n month_grid: _monthGridClassName,\r\n week: _weekClassName,\r\n day: _dayClassName,\r\n day_button: _dayButtonClassName,\r\n selected: _dayButtonSelectedClassName,\r\n range_start: _rangeStartClassName,\r\n range_middle: _rangeMiddleClassName,\r\n range_end: _rangeEndClassName,\r\n today: _todayClassName,\r\n outside: _outsideClassName,\r\n disabled: _disabledClassName,\r\n hidden: _hiddenClassName,\r\n }}\r\n components={{\r\n Chevron: ({ orientation }) => {\r\n const Icon = orientation === \"left\" ? ChevronLeftIcon : ChevronRightIcon\r\n return <Icon className=\"h-4 w-4\" />\r\n },\r\n Nav: ({ className: navClassName }) => (\r\n <Nav\r\n className={navClassName}\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setDisplayYears={setDisplayYears}\r\n startMonth={startMonth}\r\n onNextClick={onNextClick}\r\n onPrevClick={onPrevClick}\r\n />\r\n ),\r\n CaptionLabel: (clProps) => (\r\n <CaptionLabel\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n navView={navView}\r\n setNavView={setNavView}\r\n showViewSwitcher={showViewSwitcher}\r\n {...clProps}\r\n />\r\n ),\r\n DayButton: (dayProps) => (\r\n <DayButton\r\n data-icon\r\n {...dayProps}\r\n />\r\n ),\r\n MonthGrid: ({ className: mgClassName, children, ...mgProps }) => (\r\n <CalendarGrid\r\n className={mgClassName}\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...mgProps}\r\n >\r\n {children}\r\n </CalendarGrid>\r\n ),\r\n ...components,\r\n }}\r\n numberOfMonths={columnsDisplayed}\r\n showOutsideDays={showOutsideDays}\r\n weekStartsOn={weekStartsOn}\r\n {...props}\r\n />\r\n )\r\n}\r\nCalendar.displayName = \"Calendar\"\r\n\r\nfunction Nav({\r\n className,\r\n navView,\r\n startMonth,\r\n endMonth,\r\n displayYears,\r\n displayMonths,\r\n setDisplayYears,\r\n setDisplayMonths,\r\n onPrevClick,\r\n onNextClick,\r\n}: {\r\n className?: string\r\n navView: NavView\r\n startMonth?: Date\r\n endMonth?: Date\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n setDisplayYears: React.Dispatch<React.SetStateAction<{ from: number; to: number }>>\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n onPrevClick?: (date: Date) => void\r\n onNextClick?: (date: Date) => void\r\n}) {\r\n const { nextMonth, previousMonth, goToMonth } = useDayPicker()\r\n\r\n const isPreviousDisabled = (() => {\r\n if (navView === \"years\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayYears.from - 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayYears.from - 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayMonths.year - 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayMonths.year - 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n return !previousMonth\r\n })()\r\n\r\n const isNextDisabled = (() => {\r\n if (navView === \"years\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayYears.to + 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayYears.to + 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayMonths.year + 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayMonths.year + 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n return !nextMonth\r\n })()\r\n\r\n const handlePreviousClick = React.useCallback(() => {\r\n if (!previousMonth) return\r\n if (navView === \"years\") {\r\n setDisplayYears((prev) => ({\r\n from: prev.from - (prev.to - prev.from + 1),\r\n to: prev.to - (prev.to - prev.from + 1),\r\n }))\r\n onPrevClick?.(new Date(displayYears.from - (displayYears.to - displayYears.from), 0, 1))\r\n return\r\n }\r\n if (navView === \"months\") {\r\n setDisplayMonths((prev) => ({ year: prev.year - 1 }))\r\n onPrevClick?.(new Date(displayMonths.year - 1, 0, 1))\r\n return\r\n }\r\n goToMonth(previousMonth)\r\n onPrevClick?.(previousMonth)\r\n }, [previousMonth, goToMonth, displayYears.from, displayYears.to, displayMonths.year, navView, onPrevClick, setDisplayYears, setDisplayMonths])\r\n\r\n const handleNextClick = React.useCallback(() => {\r\n if (!nextMonth) return\r\n if (navView === \"years\") {\r\n setDisplayYears((prev) => ({\r\n from: prev.from + (prev.to - prev.from + 1),\r\n to: prev.to + (prev.to - prev.from + 1),\r\n }))\r\n onNextClick?.(new Date(displayYears.from + (displayYears.to - displayYears.from), 0, 1))\r\n return\r\n }\r\n if (navView === \"months\") {\r\n setDisplayMonths((prev) => ({ year: prev.year + 1 }))\r\n onNextClick?.(new Date(displayMonths.year + 1, 0, 1))\r\n return\r\n }\r\n goToMonth(nextMonth)\r\n onNextClick?.(nextMonth)\r\n }, [goToMonth, nextMonth, displayYears.from, displayYears.to, displayMonths.year, navView, onNextClick, setDisplayYears, setDisplayMonths])\r\n\r\n return (\r\n <nav className={cn(\"flex items-center\", className)}>\r\n <Button\r\n aria-label={\r\n navView === \"years\"\r\n ? `Go to the previous ${displayYears.to - displayYears.from + 1} years`\r\n : navView === \"months\"\r\n ? \"Go to the previous year\"\r\n : labelPrevious(previousMonth)\r\n }\r\n className=\"absolute left-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10\"\r\n disabled={isPreviousDisabled}\r\n size=\"sm\"\r\n icon\r\n tabIndex={isPreviousDisabled ? undefined : -1}\r\n type=\"button\"\r\n variant={null}\r\n onClick={handlePreviousClick}\r\n >\r\n <ChevronLeft />\r\n </Button>\r\n\r\n <Button\r\n aria-label={\r\n navView === \"years\"\r\n ? `Go to the next ${displayYears.to - displayYears.from + 1} years`\r\n : navView === \"months\"\r\n ? \"Go to the next year\"\r\n : labelNext(nextMonth)\r\n }\r\n className=\"absolute right-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10\"\r\n disabled={isNextDisabled}\r\n size=\"sm\"\r\n icon\r\n tabIndex={isNextDisabled ? undefined : -1}\r\n type=\"button\"\r\n variant={null}\r\n onClick={handleNextClick}\r\n >\r\n <ChevronRight />\r\n </Button>\r\n </nav>\r\n )\r\n}\r\n\r\nfunction CaptionLabel({\r\n children,\r\n showViewSwitcher,\r\n navView,\r\n setNavView,\r\n displayYears,\r\n displayMonths,\r\n ...props\r\n}: {\r\n showViewSwitcher?: boolean\r\n navView: NavView\r\n setNavView: (navView: NavView) => void\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n} & React.ComponentProps<\"span\">) {\r\n if (!showViewSwitcher) return <span {...props}>{children}</span>\r\n return (\r\n <Button\r\n disabled={navView === \"years\"}\r\n size=\"sm\"\r\n type=\"button\"\r\n variant={null}\r\n onClick={() => {\r\n if (navView === \"days\") setNavView(\"months\")\r\n else if (navView === \"months\") setNavView(\"years\")\r\n }}\r\n >\r\n {navView === \"days\"\r\n ? children\r\n : navView === \"months\"\r\n ? displayMonths.year\r\n : displayYears.from + \" - \" + displayYears.to}\r\n </Button>\r\n )\r\n}\r\n\r\nfunction CalendarGrid({\r\n className,\r\n children,\r\n displayYears,\r\n displayMonths,\r\n setDisplayMonths,\r\n startMonth,\r\n endMonth,\r\n navView,\r\n setNavView,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n children: React.ReactNode\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n startMonth?: Date\r\n endMonth?: Date\r\n navView: NavView\r\n setNavView: (navView: NavView) => void\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n if (navView === \"years\") {\r\n return (\r\n <YearGrid\r\n className={className}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...props}\r\n />\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n <MonthGrid\r\n className={className}\r\n displayMonths={displayMonths}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...props}\r\n />\r\n )\r\n }\r\n return (\r\n <table className={cn(\"flex-1\", className)} {...props}>\r\n {children}\r\n </table>\r\n )\r\n}\r\n\r\nfunction isYearSelected(selected: unknown, year: number): boolean {\r\n if (!selected) return false\r\n if (Array.isArray(selected)) return (selected as Date[]).some((d) => d.getFullYear() === year)\r\n if (typeof selected === \"object\" && \"from\" in selected) {\r\n const range = selected as DateRange\r\n if (range.from && range.to) return year >= range.from.getFullYear() && year <= range.to.getFullYear()\r\n if (range.from) return range.from.getFullYear() === year\r\n return false\r\n }\r\n return (selected as Date).getFullYear() === year\r\n}\r\n\r\nfunction isMonthSelected(selected: unknown, year: number, monthIdx: number): boolean {\r\n if (!selected) return false\r\n if (Array.isArray(selected)) {\r\n return (selected as Date[]).some((d) => d.getMonth() === monthIdx && d.getFullYear() === year)\r\n }\r\n if (typeof selected === \"object\" && \"from\" in selected) {\r\n const range = selected as DateRange\r\n if (range.from && range.to) {\r\n const fromMonth = range.from.getMonth(), fromYear = range.from.getFullYear()\r\n const toMonth = range.to.getMonth(), toYear = range.to.getFullYear()\r\n if (year === fromYear && year === toYear) return monthIdx >= fromMonth && monthIdx <= toMonth\r\n if (year === fromYear) return monthIdx >= fromMonth\r\n if (year === toYear) return monthIdx <= toMonth\r\n return year > fromYear && year < toYear\r\n }\r\n if (range.from) return range.from.getMonth() === monthIdx && range.from.getFullYear() === year\r\n return false\r\n }\r\n return (selected as Date).getMonth() === monthIdx && (selected as Date).getFullYear() === year\r\n}\r\n\r\nfunction YearGrid<T extends DayPickerProps>({\r\n className,\r\n displayYears,\r\n startMonth,\r\n endMonth,\r\n setNavView,\r\n navView,\r\n setDisplayMonths,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n displayYears: { from: number; to: number }\r\n startMonth?: Date\r\n endMonth?: Date\r\n setNavView: (navView: NavView) => void\r\n navView: NavView\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n const { selected, select } = useDayPicker<T>()\r\n const currentYear = new Date().getFullYear()\r\n const totalYears = displayYears.to - displayYears.from + 1\r\n\r\n const handleClick = (e: React.MouseEvent, year: number) => {\r\n if (minNavView === \"years\") {\r\n select?.(new Date(year, 0, 1), {}, e)\r\n } else {\r\n setNavView(\"months\")\r\n setDisplayMonths({ year })\r\n }\r\n }\r\n\r\n return (\r\n <table className={cn(\"w-[312px]\", className)} {...props}>\r\n <tbody>\r\n <tr className=\"grid grid-cols-3 gap-xp-md\">\r\n {Array.from({ length: totalYears }, (_, i) => {\r\n const year = displayYears.from + i\r\n const yearStart = new Date(year, 0, 1)\r\n const yearEnd = new Date(year, 11, 31)\r\n const isBeforeStart = startMonth && differenceInCalendarDays(yearEnd, startMonth) < 0\r\n const isAfterEnd = endMonth && differenceInCalendarDays(yearStart, endMonth) > 0\r\n const isDisabled = isBeforeStart || isAfterEnd\r\n const isCurrentYear = year === currentYear\r\n const isSelected = isYearSelected(selected, year)\r\n return (\r\n <td key={year}>\r\n <Button\r\n className=\"w-full\"\r\n disabled={navView === \"years\" ? isDisabled : undefined}\r\n type=\"button\"\r\n variant={isSelected ? \"primary\" : \"tertiary-accent\"}\r\n onClick={(e) => handleClick(e, year)}\r\n >\r\n {year}\r\n </Button>\r\n </td>\r\n )\r\n })}\r\n </tr>\r\n </tbody>\r\n </table>\r\n )\r\n}\r\n\r\nfunction MonthGrid<T extends DayPickerProps>({\r\n className,\r\n displayMonths,\r\n startMonth,\r\n endMonth,\r\n setNavView,\r\n navView,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n displayMonths: { year: number }\r\n startMonth?: Date\r\n endMonth?: Date\r\n setNavView: (navView: NavView) => void\r\n navView: NavView\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n const { goToMonth, selected, select } = useDayPicker<T>()\r\n const months = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\r\n const year = displayMonths.year\r\n\r\n const handleClick = (e: React.MouseEvent, i: number) => {\r\n if (minNavView === \"months\") {\r\n select?.(new Date(year, i, 1), {}, e)\r\n } else {\r\n setNavView(\"days\")\r\n goToMonth(new Date(year, i))\r\n }\r\n }\r\n\r\n return (\r\n <table className={cn(\"w-[312px]\", className)} {...props}>\r\n <tbody>\r\n <tr className=\"grid grid-cols-3 gap-xp-md\">\r\n {months.map((month, i) => {\r\n const isBefore = startMonth && differenceInCalendarDays(new Date(year, i, 31), startMonth) < 0\r\n const isAfter = endMonth && differenceInCalendarDays(new Date(year, i, 1), endMonth) > 0\r\n const isDisabled = isBefore || isAfter\r\n const isCurrentMonth = year === new Date().getFullYear() && i === new Date().getMonth()\r\n const isSelected = isMonthSelected(selected, year, i)\r\n return (\r\n <td key={i}>\r\n <Button\r\n className=\"w-full\"\r\n disabled={navView === \"months\" ? isDisabled : undefined}\r\n type=\"button\"\r\n variant={isSelected ? \"primary\" : \"tertiary-accent\"}\r\n onClick={(e) => handleClick(e, i)}\r\n >\r\n {month.substring(0, 3)}\r\n </Button>\r\n </td>\r\n )\r\n })}\r\n </tr>\r\n </tbody>\r\n </table>\r\n )\r\n}\r\n\r\nexport { Calendar }\r\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {b}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {b}from'./chunk-UINS73U7.js';import*as o from'react';import w from'embla-carousel-react';import {ArrowLeft,ArrowRight}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var R=o.createContext(null);function m(){let r=o.useContext(R);if(!r)throw new Error("useCarousel must be used within a <Carousel />");return r}function T({orientation:r="horizontal",opts:a,setApi:t,plugins:l,className:i,children:n,...v}){let[C,e]=w({...a,axis:r==="horizontal"?"x":"y"},l),[c,p]=o.useState(false),[S,h]=o.useState(false),f=o.useCallback(u=>{u&&(p(u.canScrollPrev()),h(u.canScrollNext()));},[]),y=o.useCallback(()=>{e?.scrollPrev();},[e]),P=o.useCallback(()=>{e?.scrollNext();},[e]),g=o.useCallback(u=>{u.key==="ArrowLeft"?(u.preventDefault(),y()):u.key==="ArrowRight"&&(u.preventDefault(),P());},[y,P]);return o.useEffect(()=>{!e||!t||t(e);},[e,t]),o.useEffect(()=>{if(e)return f(e),e.on("reInit",f),e.on("select",f),()=>{e?.off("select",f);}},[e,f]),jsx(R.Provider,{value:{carouselRef:C,api:e,opts:a,orientation:r||(a?.axis==="y"?"vertical":"horizontal"),scrollPrev:y,scrollNext:P,canScrollPrev:c,canScrollNext:S},children:jsx("div",{"aria-roledescription":"carousel",className:cn("relative",i),"data-slot":"carousel",role:"region",onKeyDownCapture:g,...v,children:n})})}function B({className:r,...a}){let{carouselRef:t}=m();return jsx("div",{ref:t,className:"overflow-hidden","data-slot":"carousel-content",children:jsx("div",{className:cn("flex",r),...a})})}function U({className:r,...a}){return jsx("div",{"aria-roledescription":"slide",className:cn("min-w-0 shrink-0 grow-0 basis-full",r),"data-slot":"carousel-item",role:"group",...a})}function L({className:r,children:a,...t}){let{orientation:l,scrollPrev:i,canScrollPrev:n}=m();return jsx(b,{"aria-label":"Previous slide",className:cn("absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4","transition-all duration-200 hover:scale-105","disabled:cursor-not-allowed disabled:hover:scale-100",l==="horizontal"?"top-1/2 left-6 -translate-y-1/2":"top-6 left-1/2 -translate-x-1/2 rotate-90",r),"data-slot":"carousel-previous",disabled:!n,icon:true,onClick:i,size:"md",variant:"secondary",...t,children:a||jsxs(Fragment,{children:[jsx(ArrowLeft,{}),jsx("span",{className:"sr-only",children:"Previous slide"})]})})}function K({className:r,children:a,...t}){let{orientation:l,scrollNext:i,canScrollNext:n}=m();return jsx(b,{"aria-label":"Next slide",className:cn("absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4","transition-all duration-200 hover:scale-105","disabled:cursor-not-allowed disabled:hover:scale-100",l==="horizontal"?"top-1/2 right-6 -translate-y-1/2":"bottom-6 left-1/2 -translate-x-1/2 rotate-90",r),"data-slot":"carousel-next",disabled:!n,icon:true,onClick:i,size:"md",variant:"secondary",...t,children:a||jsxs(Fragment,{children:[jsx(ArrowRight,{}),jsx("span",{className:"sr-only",children:"Next slide"})]})})}function _({className:r,...a}){let{api:t}=m(),[l,i]=o.useState(0),[n,v]=o.useState([]),C=o.useCallback(c=>{c&&v(c.scrollSnapList());},[]),e=o.useCallback(c=>{c&&i(c.selectedScrollSnap());},[]);return o.useEffect(()=>{if(t)return C(t),e(t),t.on("reInit",C),t.on("reInit",e),t.on("select",e),()=>{t?.off("select",e);}},[t,C,e]),n.length<=1?null:jsx("div",{className:cn("flex items-center justify-center gap-1.5",r),...a,children:n.map((c,p)=>jsx("button",{"aria-label":`Go to slide ${p+1}`,className:cn("h-1 rounded-full transition-all duration-300",p===l?"w-4 bg-fg-primary":"w-2 bg-fg-tertiary hover:bg-fg-secondary"),"data-selected":p===l,"data-slot":"carousel-dot",onClick:()=>t?.scrollTo(p)},p))})}export{T as a,B as b,U as c,L as d,K as e,_ as f};//# sourceMappingURL=chunk-KUOFW7JO.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-KUOFW7JO.js.map
|