@xploreu/components 0.4.45 → 0.4.46
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-7EXEQDMX.js +2 -0
- package/dist/chunk-7EXEQDMX.js.map +1 -0
- package/dist/{chunk-KUOFW7JO.js → chunk-B5LYJTBB.js} +2 -2
- package/dist/{chunk-KUOFW7JO.js.map → chunk-B5LYJTBB.js.map} +1 -1
- package/dist/chunk-DQGZIFNP.js +2 -0
- package/dist/chunk-DQGZIFNP.js.map +1 -0
- package/dist/{chunk-F77XVICY.js → chunk-FIDOWSDH.js} +2 -2
- package/dist/{chunk-F77XVICY.js.map → chunk-FIDOWSDH.js.map} +1 -1
- package/dist/{chunk-5VZ6QNBI.js → chunk-IFBRARGK.js} +2 -2
- package/dist/{chunk-5VZ6QNBI.js.map → chunk-IFBRARGK.js.map} +1 -1
- package/dist/{chunk-NFLQZ5NB.js → chunk-NBM4LIT4.js} +2 -2
- package/dist/{chunk-NFLQZ5NB.js.map → chunk-NBM4LIT4.js.map} +1 -1
- package/dist/{chunk-ZK7MHZFG.js → chunk-OBS7TDVV.js} +2 -2
- package/dist/{chunk-ZK7MHZFG.js.map → chunk-OBS7TDVV.js.map} +1 -1
- package/dist/{chunk-C675EWZW.js → chunk-QIP6KFG2.js} +2 -2
- package/dist/{chunk-C675EWZW.js.map → chunk-QIP6KFG2.js.map} +1 -1
- package/dist/{chunk-YPV6XEV4.js → chunk-S4L5WILL.js} +2 -2
- package/dist/{chunk-YPV6XEV4.js.map → chunk-S4L5WILL.js.map} +1 -1
- package/dist/{chunk-XIZN73T3.js → chunk-YHY3VXCO.js} +2 -2
- package/dist/{chunk-XIZN73T3.js.map → chunk-YHY3VXCO.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/alerter.js +1 -1
- 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.js +1 -1
- package/dist/ui/tabs.js +1 -1
- package/dist/ui/toast.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-UINS73U7.js +0 -2
- package/dist/chunk-UINS73U7.js.map +0 -1
- package/dist/chunk-XZN4XT6V.js +0 -2
- package/dist/chunk-XZN4XT6V.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a,b,c as c$1,d,e,g,f as f$1}from'./chunk-6OC5NZB6.js';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs}from'react/jsx-runtime';function m({className:t,variant:a$1="default",...i}){return jsx(a,{className:cn("group/tabs flex flex-col gap-2",t),"data-variant":a$1,...i})}function c({className:t,highlightClassName:a,...i}){return jsx(b,{className:cn("absolute z-0","group-data-[variant=default]/tabs:inset-0 group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:bg-bg-primary-solid","group-data-[variant=underline]/tabs:bottom-0 group-data-[variant=underline]/tabs:h-0.5 group-data-[variant=underline]/tabs:w-full group-data-[variant=underline]/tabs:rounded-none group-data-[variant=underline]/tabs:bg-fg-brand-secondary","group-data-[variant=attract]/tabs:bottom-0 group-data-[variant=attract]/tabs:h-[3px] group-data-[variant=attract]/tabs:w-full group-data-[variant=attract]/tabs:rounded-t-full group-data-[variant=attract]/tabs:bg-gradient-to-r group-data-[variant=attract]/tabs:from-[var(--color-brand-light-500)] group-data-[variant=attract]/tabs:to-[var(--color-brand-light-700)]","group-data-[variant=topbar]/tabs:bottom-0 group-data-[variant=topbar]/tabs:h-[3px] group-data-[variant=topbar]/tabs:w-full group-data-[variant=topbar]/tabs:rounded-t-full group-data-[variant=topbar]/tabs:bg-[linear-gradient(90deg,#2F7EF0_0%,#FA0805_100%)]","group-data-[variant=segment]/tabs:inset-0 group-data-[variant=segment]/tabs:rounded-lg group-data-[variant=segment]/tabs:bg-bg-brand-primary group-data-[variant=segment]/tabs:data-[value=declined]:bg-bg-error-primary group-data-[variant=segment]/tabs:data-[value=rejected]:bg-bg-error-primary","group-data-[variant=solid]/tabs:inset-0 group-data-[variant=solid]/tabs:rounded-lg group-data-[variant=solid]/tabs:bg-gradient-buttons-gradient-blue group-data-[variant=solid]/tabs:shadow-xp-md","group-data-[variant=filter]/tabs:inset-0 group-data-[variant=filter]/tabs:rounded-xp-card-base group-data-[variant=filter]/tabs:border group-data-[variant=filter]/tabs:border-border-brand group-data-[variant=filter]/tabs:bg-bg-brand-primary",a),children:jsx(c$1,{className:cn("inline-flex w-fit items-center justify-center","group-data-[variant=default]/tabs:bg-bg-tertiary group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:p-0.5 group-data-[variant=default]/tabs:gap-1 group-data-[variant=default]/tabs:border group-data-[variant=default]/tabs:border-border-primary","group-data-[variant=underline]/tabs:gap-7","group-data-[variant=attract]/tabs:w-full group-data-[variant=attract]/tabs:justify-start group-data-[variant=attract]/tabs:gap-6 group-data-[variant=attract]/tabs:border-b group-data-[variant=attract]/tabs:border-border-secondary group-data-[variant=attract]/tabs:px-6","group-data-[variant=topbar]/tabs:w-full group-data-[variant=topbar]/tabs:justify-start group-data-[variant=topbar]/tabs:gap-6 group-data-[variant=topbar]/tabs:border-b group-data-[variant=topbar]/tabs:border-border-secondary group-data-[variant=topbar]/tabs:px-6","group-data-[variant=segment]/tabs:bg-bg-primary group-data-[variant=segment]/tabs:rounded-[10px] group-data-[variant=segment]/tabs:p-0.5 group-data-[variant=segment]/tabs:gap-1 group-data-[variant=segment]/tabs:border group-data-[variant=segment]/tabs:border-border-primary group-data-[variant=segment]/tabs:shadow-xp-xs","group-data-[variant=solid]/tabs:bg-bg-primary group-data-[variant=solid]/tabs:rounded-[10px] group-data-[variant=solid]/tabs:p-0.5 group-data-[variant=solid]/tabs:gap-0.5 group-data-[variant=solid]/tabs:border group-data-[variant=solid]/tabs:border-border-primary","group-data-[variant=filter]/tabs:gap-2",t),...i})})}function f({className:t,count:a,children:i,...s}){return jsx(d,{value:s.value,className:"flex-1 group-data-[variant=attract]/tabs:flex-none group-data-[variant=topbar]/tabs:flex-none group-data-[variant=segment]/tabs:flex-none group-data-[variant=solid]/tabs:flex-none group-data-[variant=filter]/tabs:flex-none",children:jsxs(e,{className:cn("group/tabs-trigger data-[active=true]:text-text-brand-tertiary focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-text-primary inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md w-full text-label-semibold-2 whitespace-nowrap transition-colors duration-300 ease-in-out focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=default]/tabs:px-3 group-data-[variant=default]/tabs:py-2 group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:text-text-quaternary hover:group-data-[variant=default]/tabs:text-text-secondary group-data-[variant=default]/tabs:data-[active=true]:text-text-white","group-data-[variant=underline]/tabs:h-8.5 group-data-[variant=underline]/tabs:px-3 hover:group-data-[variant=underline]/tabs:text-text-brand-secondary","group-data-[variant=attract]/tabs:h-9 group-data-[variant=attract]/tabs:px-0 group-data-[variant=attract]/tabs:gap-2 group-data-[variant=attract]/tabs:rounded-none group-data-[variant=attract]/tabs:text-label-medium-3 group-data-[variant=attract]/tabs:text-text-quaternary hover:group-data-[variant=attract]/tabs:text-text-secondary group-data-[variant=attract]/tabs:data-[active=true]:text-text-brand-tertiary group-data-[variant=attract]/tabs:data-[active=true]:text-label-semibold-3","group-data-[variant=topbar]/tabs:h-9 group-data-[variant=topbar]/tabs:px-0 group-data-[variant=topbar]/tabs:gap-2 group-data-[variant=topbar]/tabs:rounded-none group-data-[variant=topbar]/tabs:text-body-regular-3 group-data-[variant=topbar]/tabs:text-text-quaternary hover:group-data-[variant=topbar]/tabs:text-text-secondary group-data-[variant=topbar]/tabs:data-[active=true]:text-text-primary group-data-[variant=topbar]/tabs:data-[active=true]:text-label-semibold-3","group-data-[variant=segment]/tabs:h-9 group-data-[variant=segment]/tabs:px-3 group-data-[variant=segment]/tabs:py-2 group-data-[variant=segment]/tabs:gap-1 group-data-[variant=segment]/tabs:rounded-lg group-data-[variant=segment]/tabs:text-label-semibold-3 group-data-[variant=segment]/tabs:text-text-quaternary hover:group-data-[variant=segment]/tabs:text-text-secondary group-data-[variant=segment]/tabs:data-[active=true]:text-text-brand-secondary-alt group-data-[variant=segment]/tabs:data-[active=true]:data-[value=declined]:text-text-error-primary group-data-[variant=segment]/tabs:data-[active=true]:data-[value=rejected]:text-text-error-primary","group-data-[variant=solid]/tabs:h-8 group-data-[variant=solid]/tabs:px-2.5 group-data-[variant=solid]/tabs:rounded-xp-buttons group-data-[variant=solid]/tabs:text-label-semibold-3 group-data-[variant=solid]/tabs:text-text-tertiary hover:group-data-[variant=solid]/tabs:text-text-secondary group-data-[variant=solid]/tabs:data-[active=true]:text-text-primary-on-brand","group-data-[variant=filter]/tabs:h-8 group-data-[variant=filter]/tabs:px-3 group-data-[variant=filter]/tabs:gap-2 group-data-[variant=filter]/tabs:rounded-xp-card-base group-data-[variant=filter]/tabs:border group-data-[variant=filter]/tabs:border-border-primary group-data-[variant=filter]/tabs:bg-transparent group-data-[variant=filter]/tabs:text-body-medium-3 group-data-[variant=filter]/tabs:text-text-secondary group-data-[variant=filter]/tabs:shadow-xp-xs hover:group-data-[variant=filter]/tabs:bg-bg-primary-hover group-data-[variant=filter]/tabs:data-[active=true]:border-transparent group-data-[variant=filter]/tabs:data-[active=true]:text-text-brand-secondary hover:group-data-[variant=filter]/tabs:data-[active=true]:bg-transparent group-data-[variant=filter]/tabs:[&_svg]:size-3.5 group-data-[variant=filter]/tabs:[&_svg]:text-fg-tertiary group-data-[variant=filter]/tabs:data-[active=true]:[&_svg]:text-fg-brand-primary",t),...s,children:[i,a!==void 0&&a!==0&&a!=="0"&&jsx("span",{className:cn("inline-flex items-center justify-center rounded-xp-card-base-xs px-0.5 py-px min-w-4 text-label-medium-4 transition-colors duration-300","group-data-[variant=default]/tabs:bg-bg-quaternary group-data-[variant=default]/tabs:text-text-quaternary group-data-[variant=default]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-secondary-solid group-data-[variant=default]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=underline]/tabs:bg-bg-quaternary group-data-[variant=underline]/tabs:text-text-quaternary group-data-[variant=underline]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=underline]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=attract]/tabs:bg-bg-quaternary group-data-[variant=attract]/tabs:text-text-quaternary group-data-[variant=attract]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=attract]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=topbar]/tabs:bg-bg-quaternary group-data-[variant=topbar]/tabs:text-text-quaternary group-data-[variant=topbar]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=topbar]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=segment]/tabs:bg-bg-quaternary group-data-[variant=segment]/tabs:text-text-quaternary group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:text-text-white group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:group-data-[value=declined]/tabs-trigger:bg-bg-error-solid group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:group-data-[value=rejected]/tabs-trigger:bg-bg-error-solid","group-data-[variant=solid]/tabs:bg-bg-quaternary group-data-[variant=solid]/tabs:text-text-quaternary group-data-[variant=solid]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-secondary-solid group-data-[variant=solid]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=filter]/tabs:bg-bg-brand-solid group-data-[variant=filter]/tabs:text-text-primary-on-brand"),children:a})]})})}function y(t){return jsx(g,{...t})}function P({className:t,...a}){return jsx(f$1,{className:cn("flex-1 outline-none",t),...a})}export{m as a,c as b,f as c,y as d,P as e};//# sourceMappingURL=chunk-7EXEQDMX.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-7EXEQDMX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/tabs.tsx"],"names":["Tabs","className","variant","props","jsx","cn","TabsList","highlightClassName","TabsHighlight","TabsTab","count","children","TabsHighlightItem","jsxs","TabsPanels","TabsPanel"],"mappings":"wIAoBA,SAASA,EAAK,CAAE,SAAA,CAAAC,EAAW,OAAA,CAAAC,GAAAA,CAAU,UAAW,GAAGC,CAAM,EAAc,CACrE,OACEC,GAAAA,CAACJ,CAAAA,CAAA,CACC,SAAA,CAAWK,EAAAA,CAAG,iCAAkCJ,CAAS,CAAA,CACzD,eAAcC,GAAAA,CACb,GAAGC,EACN,CAEJ,CAMA,SAASG,CAAAA,CAAS,CAAE,UAAAL,CAAAA,CAAW,kBAAA,CAAAM,EAAoB,GAAGJ,CAAM,CAAA,CAAkB,CAC5E,OACEC,GAAAA,CAACI,CAAAA,CAAA,CACC,SAAA,CAAWH,EAAAA,CACT,eACA,8IAAA,CACA,8OAAA,CACA,8WACA,iQAAA,CACA,sSAAA,CACA,oMACA,kPAAA,CACAE,CACF,EAEA,QAAA,CAAAH,GAAAA,CAACE,IAAA,CACC,SAAA,CAAWD,GACT,+CAAA,CACA,gRAAA,CACA,4CACA,8QAAA,CACA,wQAAA,CACA,mUACA,yQAAA,CACA,wCAAA,CACAJ,CACF,CAAA,CACC,GAAGE,EACN,CAAA,CACF,CAEJ,CAMA,SAASM,CAAAA,CAAQ,CAAE,SAAA,CAAAR,CAAAA,CAAW,MAAAS,CAAAA,CAAO,QAAA,CAAAC,CAAAA,CAAU,GAAGR,CAAM,CAAA,CAAiB,CACvE,OACEC,GAAAA,CAACQ,CAAAA,CAAA,CAA2B,KAAA,CAAOT,CAAAA,CAAM,MAAO,SAAA,CAAU,gOAAA,CACxD,SAAAU,IAAAA,CAACJ,CAAAA,CAAA,CACC,SAAA,CAAWJ,EAAAA,CACT,sgBAEA,oTAAA,CAEA,wJAAA,CAEA,ueAAA,CAEA,udAAA,CAEA,+oBAEA,gXAAA,CAEA,s6BAAA,CACAJ,CACF,CAAA,CACC,GAAGE,EAEH,QAAA,CAAA,CAAAQ,CAAAA,CACAD,IAAU,MAAA,EAAaA,CAAAA,GAAU,GAAKA,CAAAA,GAAU,GAAA,EAC/CN,IAAC,MAAA,CAAA,CACC,SAAA,CAAWC,GACT,yIAAA,CAEA,4SAAA,CAEA,gTAAA,CAEA,wSAAA,CAEA,qSAEA,miBAAA,CAEA,oSAAA,CAEA,gHACF,CAAA,CAEC,QAAA,CAAAK,EACH,CAAA,CAAA,CAEJ,CAAA,CACF,CAEJ,CAIA,SAASI,EAAWX,CAAAA,CAAwB,CAC1C,OAAOC,GAAAA,CAACU,CAAAA,CAAA,CAAqB,GAAGX,CAAAA,CAAO,CACzC,CAIA,SAASY,EAAU,CAAE,SAAA,CAAAd,EAAW,GAAGE,CAAM,EAAmB,CAC1D,OACEC,IAACW,GAAAA,CAAA,CACC,UAAWV,EAAAA,CAAG,qBAAA,CAAuBJ,CAAS,CAAA,CAC7C,GAAGE,EACN,CAEJ","file":"chunk-7EXEQDMX.js","sourcesContent":["import {\r\n Tabs as TabsPrimitive,\r\n TabsList as TabsListPrimitive,\r\n TabsTab as TabsTabPrimitive,\r\n TabsPanel as TabsPanelPrimitive,\r\n TabsPanels as TabsPanelsPrimitive,\r\n TabsHighlight as TabsHighlightPrimitive,\r\n TabsHighlightItem as TabsHighlightItemPrimitive,\r\n type TabsProps as TabsPrimitiveProps,\r\n type TabsListProps as TabsListPrimitiveProps,\r\n type TabsTabProps as TabsTabPrimitiveProps,\r\n type TabsPanelProps as TabsPanelPrimitiveProps,\r\n type TabsPanelsProps as TabsPanelsPrimitiveProps,\r\n} from '../primitives/tabs';\r\nimport { cn } from '@xploreu/lib/cn';\r\n\r\ntype TabsProps = TabsPrimitiveProps & {\r\n variant?: \"default\" | \"underline\" | \"attract\" | \"topbar\" | \"segment\" | \"solid\" | \"filter\";\r\n};\r\n\r\nfunction Tabs({ className, variant = \"default\", ...props }: TabsProps) {\r\n return (\r\n <TabsPrimitive\r\n className={cn('group/tabs flex flex-col gap-2', className)}\r\n data-variant={variant}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype TabsListProps = TabsListPrimitiveProps & {\r\n highlightClassName?: string;\r\n};\r\n\r\nfunction TabsList({ className, highlightClassName, ...props }: TabsListProps) {\r\n return (\r\n <TabsHighlightPrimitive\r\n className={cn(\r\n \"absolute z-0\",\r\n \"group-data-[variant=default]/tabs:inset-0 group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:bg-bg-primary-solid\",\r\n \"group-data-[variant=underline]/tabs:bottom-0 group-data-[variant=underline]/tabs:h-0.5 group-data-[variant=underline]/tabs:w-full group-data-[variant=underline]/tabs:rounded-none group-data-[variant=underline]/tabs:bg-fg-brand-secondary\",\r\n \"group-data-[variant=attract]/tabs:bottom-0 group-data-[variant=attract]/tabs:h-[3px] group-data-[variant=attract]/tabs:w-full group-data-[variant=attract]/tabs:rounded-t-full group-data-[variant=attract]/tabs:bg-gradient-to-r group-data-[variant=attract]/tabs:from-[var(--color-brand-light-500)] group-data-[variant=attract]/tabs:to-[var(--color-brand-light-700)]\",\r\n \"group-data-[variant=topbar]/tabs:bottom-0 group-data-[variant=topbar]/tabs:h-[3px] group-data-[variant=topbar]/tabs:w-full group-data-[variant=topbar]/tabs:rounded-t-full group-data-[variant=topbar]/tabs:bg-[linear-gradient(90deg,#2F7EF0_0%,#FA0805_100%)]\",\r\n \"group-data-[variant=segment]/tabs:inset-0 group-data-[variant=segment]/tabs:rounded-lg group-data-[variant=segment]/tabs:bg-bg-brand-primary group-data-[variant=segment]/tabs:data-[value=declined]:bg-bg-error-primary group-data-[variant=segment]/tabs:data-[value=rejected]:bg-bg-error-primary\",\r\n \"group-data-[variant=solid]/tabs:inset-0 group-data-[variant=solid]/tabs:rounded-lg group-data-[variant=solid]/tabs:bg-gradient-buttons-gradient-blue group-data-[variant=solid]/tabs:shadow-xp-md\",\r\n \"group-data-[variant=filter]/tabs:inset-0 group-data-[variant=filter]/tabs:rounded-xp-card-base group-data-[variant=filter]/tabs:border group-data-[variant=filter]/tabs:border-border-brand group-data-[variant=filter]/tabs:bg-bg-brand-primary\",\r\n highlightClassName\r\n )}\r\n >\r\n <TabsListPrimitive\r\n className={cn(\r\n \"inline-flex w-fit items-center justify-center\",\r\n \"group-data-[variant=default]/tabs:bg-bg-tertiary group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:p-0.5 group-data-[variant=default]/tabs:gap-1 group-data-[variant=default]/tabs:border group-data-[variant=default]/tabs:border-border-primary\",\r\n \"group-data-[variant=underline]/tabs:gap-7\",\r\n \"group-data-[variant=attract]/tabs:w-full group-data-[variant=attract]/tabs:justify-start group-data-[variant=attract]/tabs:gap-6 group-data-[variant=attract]/tabs:border-b group-data-[variant=attract]/tabs:border-border-secondary group-data-[variant=attract]/tabs:px-6\",\r\n \"group-data-[variant=topbar]/tabs:w-full group-data-[variant=topbar]/tabs:justify-start group-data-[variant=topbar]/tabs:gap-6 group-data-[variant=topbar]/tabs:border-b group-data-[variant=topbar]/tabs:border-border-secondary group-data-[variant=topbar]/tabs:px-6\",\r\n \"group-data-[variant=segment]/tabs:bg-bg-primary group-data-[variant=segment]/tabs:rounded-[10px] group-data-[variant=segment]/tabs:p-0.5 group-data-[variant=segment]/tabs:gap-1 group-data-[variant=segment]/tabs:border group-data-[variant=segment]/tabs:border-border-primary group-data-[variant=segment]/tabs:shadow-xp-xs\",\r\n \"group-data-[variant=solid]/tabs:bg-bg-primary group-data-[variant=solid]/tabs:rounded-[10px] group-data-[variant=solid]/tabs:p-0.5 group-data-[variant=solid]/tabs:gap-0.5 group-data-[variant=solid]/tabs:border group-data-[variant=solid]/tabs:border-border-primary\",\r\n \"group-data-[variant=filter]/tabs:gap-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </TabsHighlightPrimitive>\r\n );\r\n}\r\n\r\ntype TabsTabProps = TabsTabPrimitiveProps & {\r\n count?: number | string;\r\n};\r\n\r\nfunction TabsTab({ className, count, children, ...props }: TabsTabProps) {\r\n return (\r\n <TabsHighlightItemPrimitive value={props.value} className=\"flex-1 group-data-[variant=attract]/tabs:flex-none group-data-[variant=topbar]/tabs:flex-none group-data-[variant=segment]/tabs:flex-none group-data-[variant=solid]/tabs:flex-none group-data-[variant=filter]/tabs:flex-none\">\r\n <TabsTabPrimitive\r\n className={cn(\r\n \"group/tabs-trigger data-[active=true]:text-text-brand-tertiary focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-text-primary inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md w-full text-label-semibold-2 whitespace-nowrap transition-colors duration-300 ease-in-out focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\r\n // default variant\r\n \"group-data-[variant=default]/tabs:px-3 group-data-[variant=default]/tabs:py-2 group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:text-text-quaternary hover:group-data-[variant=default]/tabs:text-text-secondary group-data-[variant=default]/tabs:data-[active=true]:text-text-white\",\r\n // underline variant\r\n \"group-data-[variant=underline]/tabs:h-8.5 group-data-[variant=underline]/tabs:px-3 hover:group-data-[variant=underline]/tabs:text-text-brand-secondary\",\r\n // attract variant\r\n \"group-data-[variant=attract]/tabs:h-9 group-data-[variant=attract]/tabs:px-0 group-data-[variant=attract]/tabs:gap-2 group-data-[variant=attract]/tabs:rounded-none group-data-[variant=attract]/tabs:text-label-medium-3 group-data-[variant=attract]/tabs:text-text-quaternary hover:group-data-[variant=attract]/tabs:text-text-secondary group-data-[variant=attract]/tabs:data-[active=true]:text-text-brand-tertiary group-data-[variant=attract]/tabs:data-[active=true]:text-label-semibold-3\",\r\n // topbar variant\r\n \"group-data-[variant=topbar]/tabs:h-9 group-data-[variant=topbar]/tabs:px-0 group-data-[variant=topbar]/tabs:gap-2 group-data-[variant=topbar]/tabs:rounded-none group-data-[variant=topbar]/tabs:text-body-regular-3 group-data-[variant=topbar]/tabs:text-text-quaternary hover:group-data-[variant=topbar]/tabs:text-text-secondary group-data-[variant=topbar]/tabs:data-[active=true]:text-text-primary group-data-[variant=topbar]/tabs:data-[active=true]:text-label-semibold-3\",\r\n // segment variant\r\n \"group-data-[variant=segment]/tabs:h-9 group-data-[variant=segment]/tabs:px-3 group-data-[variant=segment]/tabs:py-2 group-data-[variant=segment]/tabs:gap-1 group-data-[variant=segment]/tabs:rounded-lg group-data-[variant=segment]/tabs:text-label-semibold-3 group-data-[variant=segment]/tabs:text-text-quaternary hover:group-data-[variant=segment]/tabs:text-text-secondary group-data-[variant=segment]/tabs:data-[active=true]:text-text-brand-secondary-alt group-data-[variant=segment]/tabs:data-[active=true]:data-[value=declined]:text-text-error-primary group-data-[variant=segment]/tabs:data-[active=true]:data-[value=rejected]:text-text-error-primary\",\r\n // solid variant\r\n \"group-data-[variant=solid]/tabs:h-8 group-data-[variant=solid]/tabs:px-2.5 group-data-[variant=solid]/tabs:rounded-xp-buttons group-data-[variant=solid]/tabs:text-label-semibold-3 group-data-[variant=solid]/tabs:text-text-tertiary hover:group-data-[variant=solid]/tabs:text-text-secondary group-data-[variant=solid]/tabs:data-[active=true]:text-text-primary-on-brand\",\r\n // filter variant\r\n \"group-data-[variant=filter]/tabs:h-8 group-data-[variant=filter]/tabs:px-3 group-data-[variant=filter]/tabs:gap-2 group-data-[variant=filter]/tabs:rounded-xp-card-base group-data-[variant=filter]/tabs:border group-data-[variant=filter]/tabs:border-border-primary group-data-[variant=filter]/tabs:bg-transparent group-data-[variant=filter]/tabs:text-body-medium-3 group-data-[variant=filter]/tabs:text-text-secondary group-data-[variant=filter]/tabs:shadow-xp-xs hover:group-data-[variant=filter]/tabs:bg-bg-primary-hover group-data-[variant=filter]/tabs:data-[active=true]:border-transparent group-data-[variant=filter]/tabs:data-[active=true]:text-text-brand-secondary hover:group-data-[variant=filter]/tabs:data-[active=true]:bg-transparent group-data-[variant=filter]/tabs:[&_svg]:size-3.5 group-data-[variant=filter]/tabs:[&_svg]:text-fg-tertiary group-data-[variant=filter]/tabs:data-[active=true]:[&_svg]:text-fg-brand-primary\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n {count !== undefined && count !== 0 && count !== \"0\" && (\r\n <span\r\n className={cn(\r\n \"inline-flex items-center justify-center rounded-xp-card-base-xs px-0.5 py-px min-w-4 text-label-medium-4 transition-colors duration-300\",\r\n // default variant\r\n \"group-data-[variant=default]/tabs:bg-bg-quaternary group-data-[variant=default]/tabs:text-text-quaternary group-data-[variant=default]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-secondary-solid group-data-[variant=default]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // underline & other variants\r\n \"group-data-[variant=underline]/tabs:bg-bg-quaternary group-data-[variant=underline]/tabs:text-text-quaternary group-data-[variant=underline]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=underline]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // attract variant\r\n \"group-data-[variant=attract]/tabs:bg-bg-quaternary group-data-[variant=attract]/tabs:text-text-quaternary group-data-[variant=attract]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=attract]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // topbar variant\r\n \"group-data-[variant=topbar]/tabs:bg-bg-quaternary group-data-[variant=topbar]/tabs:text-text-quaternary group-data-[variant=topbar]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=topbar]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // segment variant\r\n \"group-data-[variant=segment]/tabs:bg-bg-quaternary group-data-[variant=segment]/tabs:text-text-quaternary group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:text-text-white group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:group-data-[value=declined]/tabs-trigger:bg-bg-error-solid group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:group-data-[value=rejected]/tabs-trigger:bg-bg-error-solid\",\r\n // solid variant\r\n \"group-data-[variant=solid]/tabs:bg-bg-quaternary group-data-[variant=solid]/tabs:text-text-quaternary group-data-[variant=solid]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-secondary-solid group-data-[variant=solid]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // filter variant\r\n \"group-data-[variant=filter]/tabs:bg-bg-brand-solid group-data-[variant=filter]/tabs:text-text-primary-on-brand\",\r\n )}\r\n >\r\n {count}\r\n </span>\r\n )}\r\n </TabsTabPrimitive>\r\n </TabsHighlightItemPrimitive>\r\n );\r\n}\r\n\r\ntype TabsPanelsProps = TabsPanelsPrimitiveProps;\r\n\r\nfunction TabsPanels(props: TabsPanelsProps) {\r\n return <TabsPanelsPrimitive {...props} />;\r\n}\r\n\r\ntype TabsPanelProps = TabsPanelPrimitiveProps;\r\n\r\nfunction TabsPanel({ className, ...props }: TabsPanelProps) {\r\n return (\r\n <TabsPanelPrimitive\r\n className={cn('flex-1 outline-none', className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport {\r\n Tabs,\r\n TabsList,\r\n TabsTab,\r\n TabsPanels,\r\n TabsPanel,\r\n type TabsProps,\r\n type TabsListProps,\r\n type TabsTabProps,\r\n type TabsPanelsProps,\r\n type TabsPanelProps,\r\n};"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {b}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {b}from'./chunk-DQGZIFNP.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-B5LYJTBB.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-B5LYJTBB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/carousel.tsx"],"names":["CarouselContext","useCarousel","context","Carousel","orientation","opts","setApi","plugins","className","children","props","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event","jsx","cn","CarouselContent","CarouselItem","CarouselPrevious","Button","jsxs","Fragment","ArrowLeft","CarouselNext","ArrowRight","CarouselDots","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","onInit","_","index"],"mappings":"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","file":"chunk-KUOFW7JO.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport useEmblaCarousel, { type UseEmblaCarouselType } from \"embla-carousel-react\"\r\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\r\n\r\nimport { Button } from \"./button\"\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\ntype CarouselApi = UseEmblaCarouselType[1]\r\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\r\ntype CarouselOptions = UseCarouselParameters[0]\r\ntype CarouselPlugin = UseCarouselParameters[1]\r\n\r\ntype CarouselProps = {\r\n opts?: CarouselOptions\r\n plugins?: CarouselPlugin\r\n orientation?: \"horizontal\" | \"vertical\"\r\n setApi?: (api: CarouselApi) => void\r\n}\r\n\r\ntype CarouselContextProps = {\r\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\r\n api: ReturnType<typeof useEmblaCarousel>[1]\r\n scrollPrev: () => void\r\n scrollNext: () => void\r\n canScrollPrev: boolean\r\n canScrollNext: boolean\r\n} & CarouselProps\r\n\r\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\r\n\r\nfunction useCarousel() {\r\n const context = React.useContext(CarouselContext)\r\n\r\n if (!context) {\r\n throw new Error(\"useCarousel must be used within a <Carousel />\")\r\n }\r\n\r\n return context\r\n}\r\n\r\nfunction Carousel({\r\n orientation = \"horizontal\",\r\n opts,\r\n setApi,\r\n plugins,\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & CarouselProps) {\r\n const [carouselRef, api] = useEmblaCarousel(\r\n {\r\n ...opts,\r\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\r\n },\r\n plugins\r\n )\r\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\r\n const [canScrollNext, setCanScrollNext] = React.useState(false)\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setCanScrollPrev(api.canScrollPrev())\r\n setCanScrollNext(api.canScrollNext())\r\n }, [])\r\n\r\n const scrollPrev = React.useCallback(() => {\r\n api?.scrollPrev()\r\n }, [api])\r\n\r\n const scrollNext = React.useCallback(() => {\r\n api?.scrollNext()\r\n }, [api])\r\n\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === \"ArrowLeft\") {\r\n event.preventDefault()\r\n scrollPrev()\r\n } else if (event.key === \"ArrowRight\") {\r\n event.preventDefault()\r\n scrollNext()\r\n }\r\n },\r\n [scrollPrev, scrollNext]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (!api || !setApi) return\r\n setApi(api)\r\n }, [api, setApi])\r\n\r\n React.useEffect(() => {\r\n if (!api) return\r\n onSelect(api)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onSelect])\r\n\r\n return (\r\n <CarouselContext.Provider\r\n value={{\r\n carouselRef,\r\n api,\r\n opts,\r\n orientation:\r\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\r\n scrollPrev,\r\n scrollNext,\r\n canScrollPrev,\r\n canScrollNext,\r\n }}\r\n >\r\n <div\r\n aria-roledescription=\"carousel\"\r\n className={cn(\"relative\", className)}\r\n data-slot=\"carousel\"\r\n role=\"region\"\r\n onKeyDownCapture={handleKeyDown}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </CarouselContext.Provider>\r\n )\r\n}\r\n\r\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\r\n const { carouselRef } = useCarousel()\r\n\r\n return (\r\n <div ref={carouselRef} className=\"overflow-hidden\" data-slot=\"carousel-content\">\r\n <div className={cn(\"flex\", className)} {...props} />\r\n </div>\r\n )\r\n}\r\n\r\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n aria-roledescription=\"slide\"\r\n className={cn(\"min-w-0 shrink-0 grow-0 basis-full\", className)}\r\n data-slot=\"carousel-item\"\r\n role=\"group\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype CarouselPreviousProps = React.ComponentProps<typeof Button>\r\n\r\nfunction CarouselPrevious({\r\n className,\r\n children,\r\n ...props\r\n}: CarouselPreviousProps) {\r\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\r\n\r\n return (\r\n <Button\r\n aria-label=\"Previous slide\"\r\n className={cn(\r\n \"absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4\",\r\n \"transition-all duration-200 hover:scale-105\",\r\n \"disabled:cursor-not-allowed disabled:hover:scale-100\",\r\n orientation === \"horizontal\"\r\n ? \"top-1/2 left-6 -translate-y-1/2\"\r\n : \"top-6 left-1/2 -translate-x-1/2 rotate-90\",\r\n className,\r\n )}\r\n data-slot=\"carousel-previous\"\r\n disabled={!canScrollPrev}\r\n icon\r\n onClick={scrollPrev}\r\n size=\"md\"\r\n variant=\"secondary\"\r\n {...props}\r\n >\r\n {children || (\r\n <>\r\n <ArrowLeft />\r\n <span className=\"sr-only\">Previous slide</span>\r\n </>\r\n )}\r\n </Button>\r\n )\r\n}\r\n\r\ntype CarouselNextProps = React.ComponentProps<typeof Button>\r\n\r\nfunction CarouselNext({\r\n className,\r\n children,\r\n ...props\r\n}: CarouselNextProps) {\r\n const { orientation, scrollNext, canScrollNext } = useCarousel()\r\n\r\n return (\r\n <Button\r\n aria-label=\"Next slide\"\r\n className={cn(\r\n \"absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4\",\r\n \"transition-all duration-200 hover:scale-105\",\r\n \"disabled:cursor-not-allowed disabled:hover:scale-100\",\r\n orientation === \"horizontal\"\r\n ? \"top-1/2 right-6 -translate-y-1/2\"\r\n : \"bottom-6 left-1/2 -translate-x-1/2 rotate-90\",\r\n className,\r\n )}\r\n data-slot=\"carousel-next\"\r\n disabled={!canScrollNext}\r\n icon\r\n onClick={scrollNext}\r\n size=\"md\"\r\n variant=\"secondary\"\r\n {...props}\r\n >\r\n {children || (\r\n <>\r\n <ArrowRight />\r\n <span className=\"sr-only\">Next slide</span>\r\n </>\r\n )}\r\n </Button>\r\n )\r\n}\r\n\r\nfunction CarouselDots({ className, ...props }: React.ComponentProps<\"div\">) {\r\n const { api } = useCarousel()\r\n const [selectedIndex, setSelectedIndex] = React.useState(0)\r\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([])\r\n\r\n const onInit = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setScrollSnaps(api.scrollSnapList())\r\n }, [])\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setSelectedIndex(api.selectedScrollSnap())\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (!api) return\r\n\r\n onInit(api)\r\n onSelect(api)\r\n\r\n api.on(\"reInit\", onInit)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onInit, onSelect])\r\n\r\n if (scrollSnaps.length <= 1) return null\r\n\r\n return (\r\n <div\r\n className={cn(\"flex items-center justify-center gap-1.5\", className)}\r\n {...props}\r\n >\r\n {scrollSnaps.map((_, index) => (\r\n <button\r\n key={index}\r\n aria-label={`Go to slide ${index + 1}`}\r\n className={cn(\r\n \"h-1 rounded-full transition-all duration-300\",\r\n index === selectedIndex\r\n ? \"w-4 bg-fg-primary\"\r\n : \"w-2 bg-fg-tertiary hover:bg-fg-secondary\",\r\n )}\r\n data-selected={index === selectedIndex}\r\n data-slot=\"carousel-dot\"\r\n onClick={() => api?.scrollTo(index)}\r\n />\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\nexport {\r\n Carousel,\r\n CarouselContent,\r\n CarouselDots,\r\n CarouselItem,\r\n CarouselNext,\r\n CarouselPrevious,\r\n type CarouselApi,\r\n type CarouselProps,\r\n type CarouselContextProps,\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui/carousel.tsx"],"names":["CarouselContext","useCarousel","context","Carousel","orientation","opts","setApi","plugins","className","children","props","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event","jsx","cn","CarouselContent","CarouselItem","CarouselPrevious","Button","jsxs","Fragment","ArrowLeft","CarouselNext","ArrowRight","CarouselDots","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","onInit","_","index"],"mappings":"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","file":"chunk-B5LYJTBB.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport useEmblaCarousel, { type UseEmblaCarouselType } from \"embla-carousel-react\"\r\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\r\n\r\nimport { Button } from \"./button\"\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\ntype CarouselApi = UseEmblaCarouselType[1]\r\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\r\ntype CarouselOptions = UseCarouselParameters[0]\r\ntype CarouselPlugin = UseCarouselParameters[1]\r\n\r\ntype CarouselProps = {\r\n opts?: CarouselOptions\r\n plugins?: CarouselPlugin\r\n orientation?: \"horizontal\" | \"vertical\"\r\n setApi?: (api: CarouselApi) => void\r\n}\r\n\r\ntype CarouselContextProps = {\r\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\r\n api: ReturnType<typeof useEmblaCarousel>[1]\r\n scrollPrev: () => void\r\n scrollNext: () => void\r\n canScrollPrev: boolean\r\n canScrollNext: boolean\r\n} & CarouselProps\r\n\r\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\r\n\r\nfunction useCarousel() {\r\n const context = React.useContext(CarouselContext)\r\n\r\n if (!context) {\r\n throw new Error(\"useCarousel must be used within a <Carousel />\")\r\n }\r\n\r\n return context\r\n}\r\n\r\nfunction Carousel({\r\n orientation = \"horizontal\",\r\n opts,\r\n setApi,\r\n plugins,\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & CarouselProps) {\r\n const [carouselRef, api] = useEmblaCarousel(\r\n {\r\n ...opts,\r\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\r\n },\r\n plugins\r\n )\r\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\r\n const [canScrollNext, setCanScrollNext] = React.useState(false)\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setCanScrollPrev(api.canScrollPrev())\r\n setCanScrollNext(api.canScrollNext())\r\n }, [])\r\n\r\n const scrollPrev = React.useCallback(() => {\r\n api?.scrollPrev()\r\n }, [api])\r\n\r\n const scrollNext = React.useCallback(() => {\r\n api?.scrollNext()\r\n }, [api])\r\n\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === \"ArrowLeft\") {\r\n event.preventDefault()\r\n scrollPrev()\r\n } else if (event.key === \"ArrowRight\") {\r\n event.preventDefault()\r\n scrollNext()\r\n }\r\n },\r\n [scrollPrev, scrollNext]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (!api || !setApi) return\r\n setApi(api)\r\n }, [api, setApi])\r\n\r\n React.useEffect(() => {\r\n if (!api) return\r\n onSelect(api)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onSelect])\r\n\r\n return (\r\n <CarouselContext.Provider\r\n value={{\r\n carouselRef,\r\n api,\r\n opts,\r\n orientation:\r\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\r\n scrollPrev,\r\n scrollNext,\r\n canScrollPrev,\r\n canScrollNext,\r\n }}\r\n >\r\n <div\r\n aria-roledescription=\"carousel\"\r\n className={cn(\"relative\", className)}\r\n data-slot=\"carousel\"\r\n role=\"region\"\r\n onKeyDownCapture={handleKeyDown}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </CarouselContext.Provider>\r\n )\r\n}\r\n\r\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\r\n const { carouselRef } = useCarousel()\r\n\r\n return (\r\n <div ref={carouselRef} className=\"overflow-hidden\" data-slot=\"carousel-content\">\r\n <div className={cn(\"flex\", className)} {...props} />\r\n </div>\r\n )\r\n}\r\n\r\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n aria-roledescription=\"slide\"\r\n className={cn(\"min-w-0 shrink-0 grow-0 basis-full\", className)}\r\n data-slot=\"carousel-item\"\r\n role=\"group\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype CarouselPreviousProps = React.ComponentProps<typeof Button>\r\n\r\nfunction CarouselPrevious({\r\n className,\r\n children,\r\n ...props\r\n}: CarouselPreviousProps) {\r\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\r\n\r\n return (\r\n <Button\r\n aria-label=\"Previous slide\"\r\n className={cn(\r\n \"absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4\",\r\n \"transition-all duration-200 hover:scale-105\",\r\n \"disabled:cursor-not-allowed disabled:hover:scale-100\",\r\n orientation === \"horizontal\"\r\n ? \"top-1/2 left-6 -translate-y-1/2\"\r\n : \"top-6 left-1/2 -translate-x-1/2 rotate-90\",\r\n className,\r\n )}\r\n data-slot=\"carousel-previous\"\r\n disabled={!canScrollPrev}\r\n icon\r\n onClick={scrollPrev}\r\n size=\"md\"\r\n variant=\"secondary\"\r\n {...props}\r\n >\r\n {children || (\r\n <>\r\n <ArrowLeft />\r\n <span className=\"sr-only\">Previous slide</span>\r\n </>\r\n )}\r\n </Button>\r\n )\r\n}\r\n\r\ntype CarouselNextProps = React.ComponentProps<typeof Button>\r\n\r\nfunction CarouselNext({\r\n className,\r\n children,\r\n ...props\r\n}: CarouselNextProps) {\r\n const { orientation, scrollNext, canScrollNext } = useCarousel()\r\n\r\n return (\r\n <Button\r\n aria-label=\"Next slide\"\r\n className={cn(\r\n \"absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4\",\r\n \"transition-all duration-200 hover:scale-105\",\r\n \"disabled:cursor-not-allowed disabled:hover:scale-100\",\r\n orientation === \"horizontal\"\r\n ? \"top-1/2 right-6 -translate-y-1/2\"\r\n : \"bottom-6 left-1/2 -translate-x-1/2 rotate-90\",\r\n className,\r\n )}\r\n data-slot=\"carousel-next\"\r\n disabled={!canScrollNext}\r\n icon\r\n onClick={scrollNext}\r\n size=\"md\"\r\n variant=\"secondary\"\r\n {...props}\r\n >\r\n {children || (\r\n <>\r\n <ArrowRight />\r\n <span className=\"sr-only\">Next slide</span>\r\n </>\r\n )}\r\n </Button>\r\n )\r\n}\r\n\r\nfunction CarouselDots({ className, ...props }: React.ComponentProps<\"div\">) {\r\n const { api } = useCarousel()\r\n const [selectedIndex, setSelectedIndex] = React.useState(0)\r\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([])\r\n\r\n const onInit = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setScrollSnaps(api.scrollSnapList())\r\n }, [])\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setSelectedIndex(api.selectedScrollSnap())\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (!api) return\r\n\r\n onInit(api)\r\n onSelect(api)\r\n\r\n api.on(\"reInit\", onInit)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onInit, onSelect])\r\n\r\n if (scrollSnaps.length <= 1) return null\r\n\r\n return (\r\n <div\r\n className={cn(\"flex items-center justify-center gap-1.5\", className)}\r\n {...props}\r\n >\r\n {scrollSnaps.map((_, index) => (\r\n <button\r\n key={index}\r\n aria-label={`Go to slide ${index + 1}`}\r\n className={cn(\r\n \"h-1 rounded-full transition-all duration-300\",\r\n index === selectedIndex\r\n ? \"w-4 bg-fg-primary\"\r\n : \"w-2 bg-fg-tertiary hover:bg-fg-secondary\",\r\n )}\r\n data-selected={index === selectedIndex}\r\n data-slot=\"carousel-dot\"\r\n onClick={() => api?.scrollTo(index)}\r\n />\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\nexport {\r\n Carousel,\r\n CarouselContent,\r\n CarouselDots,\r\n CarouselItem,\r\n CarouselNext,\r\n CarouselPrevious,\r\n type CarouselApi,\r\n type CarouselProps,\r\n type CarouselContextProps,\r\n}\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {cva}from'class-variance-authority';import {Loader2}from'lucide-react';import {Button}from'@base-ui/react/button';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var m=cva(cn("group relative inline-flex h-max w-fit cursor-pointer items-center justify-center whitespace-nowrap outline-brand transition duration-100 ease-linear before:absolute focus-visible:outline-2 focus-visible:outline-offset-2 rounded-xp-buttons [&_svg]:shrink-0","disabled:cursor-not-allowed"),{variants:{color:{default:"focus-visible:outline-focus-ring",destructive:"focus-visible:outline-focus-ring-error","gradient-ai":"focus-visible:outline-focus-ring","linear-green":"focus-visible:outline-focus-ring-success","linear-overlay":"focus-visible:outline-focus-ring","linear-destructive":"focus-visible:outline-focus-ring-error"},variant:{primary:"before:rounded-lg before:absolute before:inset-0 before:border-1 before:border-white/12 before:mask-b-from-0% after:absolute after:inset-0 after:rounded-xp-buttons hover:after:bg-alpha-gray-20 after:bg-transparent after:transition-colors disabled:text-fg-disabled disabled:bg-none disabled:bg-bg-disabled disabled:hover:after:bg-transparent disabled:before:border-border-disabled disabled:before:mask-none disabled:before:border-1 shadow-xp-md hover:shadow-xp-brand ",secondary:"border-1 shadow-xp-md hover:shadow-xp-brand disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:border-border-disabled disabled:hover:text-fg-disabled disabled:hover:[&_svg]:text-fg-disabled-subtle","secondary-accent":"disabled:border-border-disabled disabled:bg-bg-disabled disabled:text-fg-disabled",tertiary:"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-bg-disabled","tertiary-accent":"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle",link:"underline decoration-transparent hover:decoration-inherit transition-colors disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:hover:no-underline"},icon:{true:void 0,false:void 0},size:{"3xs":"text-label-semibold-4 px-xp-sm gap-xp-xs h-6 data-[icon]:size-6 data-[variant=link]:h-4 data-[variant=link]:px-0 [&_svg]:size-3.5","2xs":"text-label-semibold-4 px-xp-md gap-xp-xs h-7 data-[icon]:size-7 data-[variant=link]:h-4 data-[variant=link]:px-0 [&_svg]:size-4",xs:"text-label-semibold-3 px-xp-lg gap-xp-sm h-8 data-[icon]:size-8 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-4",sm:"text-label-semibold-3 px-xp-lg gap-xp-sm h-9 data-[icon]:size-9 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5",md:"text-label-semibold-3 px-3.5 gap-xp-sm h-10 data-[icon]:size-10 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5",lg:"text-label-semibold-2 px-xp-xl gap-xp-md h-11 data-[icon]:size-11 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5",xl:"text-label-semibold-2 px-4.5 gap-xp-md h-12 data-[icon]:size-12 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5"}},compoundVariants:[{variant:"primary",color:"default",className:"bg-gradient-buttons-gradient-blue text-text-primary-on-brand"},{variant:"secondary",color:"default",className:"bg-bg-primary text-text-secondary [&_svg]:text-fg-secondary border-border-primary-icon hover:bg-bg-brand-solid hover:border-border-white hover:text-text-primary-on-brand hover:[&_svg]:text-fg-white"},{variant:"secondary-accent",color:"default",className:"border-1 border-border-primary-icon text-fg-primary hover:bg-bg-brand-primary"},{variant:"tertiary",color:"default",className:"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover hover:[&_svg]:text-fg-quaternary-hover"},{variant:"tertiary-accent",color:"default",className:"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"link",color:"default",className:"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"primary",color:"destructive",className:"bg-bg-error-solid text-text-primary-on-brand"},{variant:"secondary",color:"destructive",className:"bg-bg-primary text-text-error-primary [&_svg]:text-fg-error-secondary border-border-error hover:bg-bg-error-primary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-secondary"},{variant:"secondary-accent",color:"destructive",className:"border-1 border-border-error text-fg-error-primary hover:bg-bg-error-primary"},{variant:"tertiary",color:"destructive",className:"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-primary"},{variant:"tertiary-accent",color:"destructive",className:"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover"},{variant:"link",color:"destructive",className:"text-text-error-secondary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-primary"},{variant:"primary",color:"gradient-ai",className:"bg-gradient-buttons-button-ai text-text-primary-on-brand"},{variant:"secondary",color:"gradient-ai",className:"relative shadow-transparent border-transparent hover:bg-bg-primary bg-[linear-gradient(90deg,var(--color-bg-primary),var(--color-bg-primary)),var(--gradient-buttons-button-ai)] [background-clip:padding-box,border-box] [background-origin:padding-box,border-box] [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled"},{variant:"secondary-accent",color:"gradient-ai",className:"border-1 border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary"},{variant:"tertiary",color:"gradient-ai",className:"relative [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled"},{variant:"tertiary-accent",color:"gradient-ai",className:"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"link",color:"gradient-ai",className:"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"primary",color:"linear-green",className:"bg-gradient-buttons-gradient-green text-text-primary-on-brand"},{variant:"secondary",color:"linear-green",className:"bg-bg-primary text-text-secondary [&_svg]:text-green-500 border-border-primary hover:text-text-secondary-hover hover:[&_svg]:text-green-900"},{variant:"secondary-accent",color:"linear-green",className:"border-1 border-border-primary text-fg-primary hover:bg-bg-primary"},{variant:"tertiary",color:"linear-green",className:"text-text-success-primary [&_svg]:text-green-500 hover:bg-bg-success-primary hover:[&_svg]:text-green-900"},{variant:"tertiary-accent",color:"linear-green",className:"bg-bg-success-primary text-text-success-tertiary [&_svg]:text-fg-success-secondary hover:bg-bg-success-secondary hover:text-text-success-tertiary hover:[&_svg]:text-fg-success-secondary-hover"},{variant:"link",color:"linear-green",className:"text-text-success-secondary [&_svg]:text-fg-success-secondary hover:text-text-success-primary-hover hover:[&_svg]:text-fg-success-primary"},{variant:"primary",color:"linear-overlay",className:"relative bg-bg-brand-solid text-text-primary-on-brand [&_svg]:text-button-primary-icon hover:[&_svg]:text-button-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border"},{variant:"secondary",color:"linear-overlay",className:"bg-bg-brand-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover hover:[&_svg]:text-text-quaternary-hover"},{variant:"secondary-accent",color:"linear-overlay",className:"border-1 border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary"},{variant:"tertiary",color:"linear-overlay",className:"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover hover:[&_svg]:text-fg-quaternary-hover"},{variant:"tertiary-accent",color:"linear-overlay",className:"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"link",color:"linear-overlay",className:"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"primary",color:"linear-destructive",className:"relative bg-bg-error-solid text-text-primary-on-brand [&_svg]:text-button-destructive-primary-icon hover:[&_svg]:text-button-destructive-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border"},{variant:"secondary",color:"linear-destructive",className:"bg-bg-error-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover hover:[&_svg]:text-text-quaternary-hover"},{variant:"secondary-accent",color:"linear-destructive",className:"border-1 border-border-error text-fg-error-primary hover:bg-bg-error-primary"},{variant:"tertiary",color:"linear-destructive",className:"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-tertiary-hover hover:[&_svg]:text-fg-error-secondary"},{variant:"tertiary-accent",color:"linear-destructive",className:"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover"},{variant:"link",color:"linear-destructive",className:"text-text-error-primary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-primary"}],defaultVariants:{variant:"primary",color:"default",size:"sm"}});function z({className:i,color:s,variant:e,size:n,loading:t=false,children:d,disabled:b,icon:g,nativeButton:l,render:a,...v}){let c=a!=null?false:l;return jsx(Button,{className:cn(m({color:s,variant:e,size:n,className:i})),"data-icon":g?"":void 0,"data-variant":e,disabled:b||t,nativeButton:c,render:a,...v,children:t?jsxs(Fragment,{children:[jsx(Loader2,{className:"size-4 animate-spin"}),jsx("span",{children:"Loading..."})]}):d})}export{m as a,z as b};//# sourceMappingURL=chunk-DQGZIFNP.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-DQGZIFNP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/button.tsx"],"names":["buttonVariants","cva","cn","Button","className","color","variant","size","loading","children","disabled","icon","nativeButton","render","props","resolvedNativeButton","jsx","ButtonPrimitive","jsxs","Fragment","Loader2"],"mappings":"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","file":"chunk-DQGZIFNP.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { Loader2 } from \"lucide-react\"\r\n\r\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nconst buttonVariants = cva(\r\n cn(\r\n \"group relative inline-flex h-max w-fit cursor-pointer items-center justify-center whitespace-nowrap outline-brand transition duration-100 ease-linear before:absolute focus-visible:outline-2 focus-visible:outline-offset-2 rounded-xp-buttons [&_svg]:shrink-0\",\r\n \"disabled:cursor-not-allowed\",\r\n ),\r\n {\r\n variants: {\r\n color: {\r\n default: \"focus-visible:outline-focus-ring\",\r\n destructive: \"focus-visible:outline-focus-ring-error\",\r\n \"gradient-ai\": \"focus-visible:outline-focus-ring\",\r\n \"linear-green\": \"focus-visible:outline-focus-ring-success\",\r\n \"linear-overlay\": \"focus-visible:outline-focus-ring\",\r\n \"linear-destructive\": \"focus-visible:outline-focus-ring-error\",\r\n },\r\n variant: {\r\n primary: \"before:rounded-lg before:absolute before:inset-0 before:border-1 before:border-white/12 before:mask-b-from-0% after:absolute after:inset-0 after:rounded-xp-buttons hover:after:bg-alpha-gray-20 after:bg-transparent after:transition-colors disabled:text-fg-disabled disabled:bg-none disabled:bg-bg-disabled disabled:hover:after:bg-transparent disabled:before:border-border-disabled disabled:before:mask-none disabled:before:border-1 shadow-xp-md hover:shadow-xp-brand \",\r\n secondary: \"border-1 shadow-xp-md hover:shadow-xp-brand disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:border-border-disabled disabled:hover:text-fg-disabled disabled:hover:[&_svg]:text-fg-disabled-subtle\",\r\n \"secondary-accent\": \"disabled:border-border-disabled disabled:bg-bg-disabled disabled:text-fg-disabled\",\r\n tertiary: \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-bg-disabled\",\r\n \"tertiary-accent\": \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle\",\r\n link: \"underline decoration-transparent hover:decoration-inherit transition-colors disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:hover:no-underline\",\r\n },\r\n icon: {\r\n true: undefined,\r\n false: undefined\r\n },\r\n size: {\r\n \"3xs\": \"text-label-semibold-4 px-xp-sm gap-xp-xs h-6 data-[icon]:size-6 data-[variant=link]:h-4 data-[variant=link]:px-0 [&_svg]:size-3.5\",\r\n \"2xs\": \"text-label-semibold-4 px-xp-md gap-xp-xs h-7 data-[icon]:size-7 data-[variant=link]:h-4 data-[variant=link]:px-0 [&_svg]:size-4\",\r\n xs: \"text-label-semibold-3 px-xp-lg gap-xp-sm h-8 data-[icon]:size-8 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-4\",\r\n sm: \"text-label-semibold-3 px-xp-lg gap-xp-sm h-9 data-[icon]:size-9 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5\",\r\n md: \"text-label-semibold-3 px-3.5 gap-xp-sm h-10 data-[icon]:size-10 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5\",\r\n lg: \"text-label-semibold-2 px-xp-xl gap-xp-md h-11 data-[icon]:size-11 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5\",\r\n xl: \"text-label-semibold-2 px-4.5 gap-xp-md h-12 data-[icon]:size-12 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5\",\r\n }\r\n },\r\n compoundVariants: [\r\n // Default Color Variants\r\n {\r\n variant: \"primary\",\r\n color: \"default\",\r\n className: \"bg-gradient-buttons-gradient-blue text-text-primary-on-brand\"\r\n },\r\n {\r\n variant: \"secondary\",\r\n color: \"default\",\r\n className: \"bg-bg-primary text-text-secondary [&_svg]:text-fg-secondary border-border-primary-icon hover:bg-bg-brand-solid hover:border-border-white hover:text-text-primary-on-brand hover:[&_svg]:text-fg-white\"\r\n },\r\n {\r\n variant: \"secondary-accent\",\r\n color: \"default\",\r\n className: \"border-1 border-border-primary-icon text-fg-primary hover:bg-bg-brand-primary\"\r\n },\r\n {\r\n variant: \"tertiary\",\r\n color: \"default\",\r\n className: \"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover hover:[&_svg]:text-fg-quaternary-hover\"\r\n },\r\n {\r\n variant: \"tertiary-accent\",\r\n color: \"default\",\r\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\r\n },\r\n {\r\n variant: \"link\",\r\n color: \"default\",\r\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover hover:[&_svg]:text-fg-brand-secondary-hover\"\r\n },\r\n\r\n // Destructive Color Variants\r\n {\r\n variant: \"primary\",\r\n color: \"destructive\",\r\n className: \"bg-bg-error-solid text-text-primary-on-brand\"\r\n },\r\n {\r\n variant: \"secondary\",\r\n color: \"destructive\",\r\n className: \"bg-bg-primary text-text-error-primary [&_svg]:text-fg-error-secondary border-border-error hover:bg-bg-error-primary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-secondary\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"secondary-accent\",\r\n color: \"destructive\",\r\n className: \"border-1 border-border-error text-fg-error-primary hover:bg-bg-error-primary\"\r\n },\r\n {\r\n variant: \"tertiary\",\r\n color: \"destructive\",\r\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-primary\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"tertiary-accent\",\r\n color: \"destructive\",\r\n className: \"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover\"\r\n },\r\n {\r\n variant: \"link\",\r\n color: \"destructive\",\r\n className: \"text-text-error-secondary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-primary\"\r\n },\r\n\r\n // Gradient AI\r\n {\r\n variant: \"primary\",\r\n color: \"gradient-ai\",\r\n className: \"bg-gradient-buttons-button-ai text-text-primary-on-brand\"\r\n },\r\n {\r\n variant: \"secondary\",\r\n color: \"gradient-ai\",\r\n className: \"relative shadow-transparent border-transparent hover:bg-bg-primary bg-[linear-gradient(90deg,var(--color-bg-primary),var(--color-bg-primary)),var(--gradient-buttons-button-ai)] [background-clip:padding-box,border-box] [background-origin:padding-box,border-box] [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"secondary-accent\",\r\n color: \"gradient-ai\",\r\n className: \"border-1 border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary\"\r\n },\r\n {\r\n variant: \"tertiary\",\r\n color: \"gradient-ai\",\r\n className: \"relative [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"tertiary-accent\",\r\n color: \"gradient-ai\",\r\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"link\",\r\n color: \"gradient-ai\",\r\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover hover:[&_svg]:text-fg-brand-secondary-hover\"\r\n },\r\n\r\n // Linear Green Color Variants\r\n {\r\n variant: \"primary\",\r\n color: \"linear-green\",\r\n className: \"bg-gradient-buttons-gradient-green text-text-primary-on-brand\"\r\n },\r\n {\r\n variant: \"secondary\",\r\n color: \"linear-green\",\r\n className: \"bg-bg-primary text-text-secondary [&_svg]:text-green-500 border-border-primary hover:text-text-secondary-hover hover:[&_svg]:text-green-900\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"secondary-accent\",\r\n color: \"linear-green\",\r\n className: \"border-1 border-border-primary text-fg-primary hover:bg-bg-primary\"\r\n },\r\n {\r\n variant: \"tertiary\",\r\n color: \"linear-green\",\r\n className: \"text-text-success-primary [&_svg]:text-green-500 hover:bg-bg-success-primary hover:[&_svg]:text-green-900\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"tertiary-accent\",\r\n color: \"linear-green\",\r\n className: \"bg-bg-success-primary text-text-success-tertiary [&_svg]:text-fg-success-secondary hover:bg-bg-success-secondary hover:text-text-success-tertiary hover:[&_svg]:text-fg-success-secondary-hover\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"link\",\r\n color: \"linear-green\",\r\n className: \"text-text-success-secondary [&_svg]:text-fg-success-secondary hover:text-text-success-primary-hover hover:[&_svg]:text-fg-success-primary\"\r\n },\r\n\r\n // Linear Overlay Color Variants\r\n {\r\n variant: \"primary\",\r\n color: \"linear-overlay\",\r\n className: \"relative bg-bg-brand-solid text-text-primary-on-brand [&_svg]:text-button-primary-icon hover:[&_svg]:text-button-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border\"\r\n },\r\n {\r\n variant: \"secondary\",\r\n color: \"linear-overlay\",\r\n className: \"bg-bg-brand-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover hover:[&_svg]:text-text-quaternary-hover\"\r\n },\r\n {\r\n variant: \"secondary-accent\",\r\n color: \"linear-overlay\",\r\n className: \"border-1 border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary\"\r\n },\r\n {\r\n variant: \"tertiary\",\r\n color: \"linear-overlay\",\r\n className: \"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover hover:[&_svg]:text-fg-quaternary-hover\"\r\n },\r\n {\r\n variant: \"tertiary-accent\",\r\n color: \"linear-overlay\",\r\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\r\n },\r\n {\r\n variant: \"link\",\r\n color: \"linear-overlay\",\r\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover hover:[&_svg]:text-fg-brand-secondary-hover\"\r\n },\r\n\r\n // Linear Destructive Color Variants\r\n {\r\n variant: \"primary\",\r\n color: \"linear-destructive\",\r\n className: \"relative bg-bg-error-solid text-text-primary-on-brand [&_svg]:text-button-destructive-primary-icon hover:[&_svg]:text-button-destructive-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border\"\r\n },\r\n {\r\n variant: \"secondary\",\r\n color: \"linear-destructive\",\r\n className: \"bg-bg-error-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover hover:[&_svg]:text-text-quaternary-hover\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"secondary-accent\",\r\n color: \"linear-destructive\",\r\n className: \"border-1 border-border-error text-fg-error-primary hover:bg-bg-error-primary\"\r\n },\r\n {\r\n variant: \"tertiary\",\r\n color: \"linear-destructive\",\r\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-tertiary-hover hover:[&_svg]:text-fg-error-secondary\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"tertiary-accent\",\r\n color: \"linear-destructive\",\r\n className: \"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover\"\r\n },\r\n {\r\n variant: \"link\",\r\n color: \"linear-destructive\",\r\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-primary\"\r\n },\r\n ],\r\n defaultVariants: {\r\n variant: \"primary\",\r\n color: \"default\",\r\n size: \"sm\",\r\n },\r\n }\r\n)\r\n\r\nfunction Button({\r\n className,\r\n color,\r\n variant,\r\n size,\r\n loading = false,\r\n children,\r\n disabled,\r\n icon,\r\n nativeButton,\r\n render,\r\n ...props\r\n}: ButtonPrimitive.Props &\r\n VariantProps<typeof buttonVariants> & {\r\n loading?: boolean\r\n }) {\r\n // ponytail: auto-detect nativeButton when render is provided\r\n const resolvedNativeButton = render != null ? false : nativeButton\r\n\r\n return (\r\n <ButtonPrimitive\r\n className={cn(buttonVariants({ color, variant, size, className }))}\r\n data-icon={icon ? \"\" : undefined}\r\n data-variant={variant}\r\n disabled={disabled || loading}\r\n nativeButton={resolvedNativeButton}\r\n render={render}\r\n {...props}\r\n >\r\n {loading ? (\r\n <>\r\n <Loader2 className=\"size-4 animate-spin\" />\r\n <span>Loading...</span>\r\n </>\r\n ) : (\r\n children\r\n )}\r\n </ButtonPrimitive>\r\n )\r\n}\r\n\r\nexport { Button, buttonVariants }"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a,b}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a,b}from'./chunk-DQGZIFNP.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-FIDOWSDH.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-FIDOWSDH.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-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
|
+
{"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-FIDOWSDH.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 {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-DQGZIFNP.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-IFBRARGK.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-IFBRARGK.js.map
|