@jarllyng/nostromo 3.14.0 → 3.15.0
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-4UHGGKCS.cjs +3 -0
- package/dist/chunk-4UHGGKCS.cjs.map +1 -0
- package/dist/chunk-A4ODFRMS.js +3 -0
- package/dist/chunk-A4ODFRMS.js.map +1 -0
- package/dist/components/core/calendar.cjs +1 -1
- package/dist/components/core/calendar.d.cts +22 -1
- package/dist/components/core/calendar.d.ts +22 -1
- package/dist/components/core/calendar.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-35I2BJC3.js +0 -3
- package/dist/chunk-35I2BJC3.js.map +0 -1
- package/dist/chunk-JCETHQ55.cjs +0 -3
- package/dist/chunk-JCETHQ55.cjs.map +0 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';var chunk5PVFLXPO_cjs=require('./chunk-5PVFLXPO.cjs'),chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),a=require('react'),C=require('@radix-ui/react-popover'),classVarianceAuthority=require('class-variance-authority'),dateFns=require('date-fns');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var a__default=/*#__PURE__*/_interopDefault(a);var C__namespace=/*#__PURE__*/_interopNamespace(C);var Pe=classVarianceAuthority.cva("inline-block rounded-lg border bg-background shadow-lg",{variants:{variant:{default:"border-border bg-card",outline:"border-2 border-border",ghost:"border-transparent bg-transparent shadow-none"},size:{sm:"p-2",md:"p-3",lg:"p-4"}},defaultVariants:{variant:"default",size:"md"}}),R=classVarianceAuthority.cva("flex items-center justify-center rounded-md font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"hover:bg-muted text-foreground",selected:"bg-primary text-primary-foreground hover:bg-primary/90 font-semibold",range:"bg-primary/10 text-primary hover:bg-primary/20 font-medium",today:"border-2 border-primary text-foreground font-semibold",outside:"text-muted-foreground",disabled:"text-muted-foreground/50 cursor-not-allowed"},size:{sm:"h-7 w-7 text-xs",md:"h-9 w-9 text-sm",lg:"h-11 w-11 text-base"}},defaultVariants:{variant:"default",size:"md"}}),ee=t=>dateFns.getDaysInMonth(t),Te=(t,r)=>{let o=dateFns.getDay(dateFns.startOfMonth(t));return r===1?o===0?6:o-1:o},x=(t,r)=>!t||!r?false:dateFns.isSameDay(t,r),Se=(t,r,o)=>!r&&!o?false:r&&o?dateFns.isWithinInterval(dateFns.startOfDay(t),{start:dateFns.startOfDay(r),end:dateFns.endOfDay(o)}):r?!dateFns.isBefore(dateFns.startOfDay(t),dateFns.startOfDay(r)):o?!dateFns.isAfter(dateFns.startOfDay(t),dateFns.endOfDay(o)):false,O=(t,r,o,g,m)=>!!(r&&dateFns.isBefore(dateFns.startOfDay(t),dateFns.startOfDay(r))||o&&dateFns.isAfter(dateFns.startOfDay(t),dateFns.endOfDay(o))||g?.some(p=>x(p,t))||m?.includes(dateFns.getDay(t))),P=(t,r="en-US")=>t?new Intl.DateTimeFormat(r,{year:"numeric",month:"short",day:"numeric"}).format(t):"",Le=(t,r,o="en-US")=>!t&&!r?"":t&&r?`${P(t,o)} - ${P(r,o)}`:t?P(t,o):r?P(r,o):"",Ee=(t,r="en-US",o=g=>`${g} dates selected`)=>t.length===0?"":t.length===1?P(t[0],r):o(t.length),Ie=(t,r)=>{let o=new Intl.DateTimeFormat(t,{weekday:"short"}),g=Array.from({length:7},(m,p)=>o.format(new Date(2024,0,7+p)));return r===1?[...g.slice(1),g[0]]:g},Ye={openCalendar:"Open calendar",placeholder:"Select date...",previousMonth:"Previous month",nextMonth:"Next month",today:"Today",selectEndDate:"Select end date",multipleSelected:t=>`${t} dates selected`},te=t=>{if(t)return t instanceof Date?t:Array.isArray(t)?t[0]:t.from??t.to},F=(t,r,o,g=366)=>{let m=new Date(t);for(let p=0;p<g;p++){if(!o(m))return new Date(m);m.setDate(m.getDate()+r);}},q=(t,r)=>{let o=new Date(t.getFullYear(),t.getMonth()+r,1),g=dateFns.getDaysInMonth(o);return o.setDate(Math.min(t.getDate(),g)),o},Ve=a__default.default.forwardRef(({mode:t="single",value:r,defaultValue:o,onChange:g,minDate:m,maxDate:p,disabledDates:I,disabledDays:Y,locale:v="en-US",placeholder:ie,label:U,error:H,helperText:W,className:le,inputClassName:de,calendarClassName:ue,variant:fe,size:K,showOutsideDays:T=true,firstDayOfWeek:V=1,labels:J,...ce},ge)=>{let y=a.useMemo(()=>({...Ye,...J}),[J]),[S,L]=a.useState(false),[c,$]=a.useState(()=>te(r??o)??new Date),[h,E]=a.useState(null),me=a.useRef(null),j=a.useRef(new Map),[De,pe]=a.useState(o),Q=r!==void 0,f=Q?r:De,M=a__default.default.useCallback(e=>O(e,m,p,I,Y),[m,p,I,Y]);a__default.default.useLayoutEffect(()=>{if(!S||h)return;let e=dateFns.startOfDay(new Date),s=[te(f),e].find(d=>!!d&&!M(d));if(s){E(dateFns.startOfDay(s));return}let i=dateFns.startOfMonth(c),l=F(i,1,M,dateFns.getDaysInMonth(c));l&&E(l);},[S,h,f,c,M]);let N=e=>{Q||pe(e),g?.(e);},_=e=>{if(!O(e,m,p,I,Y)){if(t==="single")N(e),L(false);else if(t==="range"){let n=f;if(!n?.from||n.from&&n.to)N({from:e});else {let s=n.from,i=e;i<s?N({from:i,to:s}):N({from:s,to:i}),L(false);}}else if(t==="multiple"){let n=f||[],s=n.findIndex(i=>x(i,e));s>=0?N(n.filter((i,l)=>l!==s)):N([...n,e]);}}},he=a.useMemo(()=>{if(!f)return "";if(t==="single")return P(f,v);if(t==="range"){let e=f;return Le(e.from,e.to,v)}else return Ee(f,v,y.multipleSelected)},[f,t,v,y.multipleSelected]),be=a.useMemo(()=>{let e=[],n=new Date;n.setHours(0,0,0,0);let s=Te(c,V),i=ee(c);if(s>0){let l=new Date(c.getFullYear(),c.getMonth()-1),d=ee(l);for(let D=d-s+1;D<=d;D++){let u=new Date(l.getFullYear(),l.getMonth(),D);e.push({date:u,isCurrentMonth:false,isToday:x(u,n),placeholder:!T});}}for(let l=1;l<=i;l++){let d=new Date(c.getFullYear(),c.getMonth(),l);e.push({date:d,isCurrentMonth:true,isToday:x(d,n)});}if(T){let l=42-e.length,d=new Date(c.getFullYear(),c.getMonth()+1);for(let D=1;D<=l;D++){let u=new Date(d.getFullYear(),d.getMonth(),D);e.push({date:u,isCurrentMonth:false,isToday:x(u,n)});}}return e},[c,T,V]),X=e=>{let n=new Date(c.getFullYear(),c.getMonth()+e,1);if($(n),!h)return;let s=q(h,e),i=F(s,1,M,dateFns.getDaysInMonth(n))??F(s,-1,M,dateFns.getDaysInMonth(n));i&&E(i);},ve=()=>X(-1),ye=()=>X(1),Me=()=>{let e=dateFns.startOfDay(new Date);$(e);let n=F(e,1,M,31)??F(e,-1,M,31);n&&E(n);},we=(e,n)=>{if(e.key==="Enter"||e.key===" "){e.preventDefault(),_(n);return}let s=(l,d,D)=>{let u=F(l,d,M,D);u&&(E(u),(u.getMonth()!==c.getMonth()||u.getFullYear()!==c.getFullYear())&&$(new Date(u.getFullYear(),u.getMonth(),1)));},i=l=>{let d=new Date(n);d.setDate(d.getDate()+l),s(d,l>0?1:-1);};if(e.key==="ArrowRight"){e.preventDefault(),i(1);return}if(e.key==="ArrowLeft"){e.preventDefault(),i(-1);return}if(e.key==="ArrowDown"){e.preventDefault(),i(7);return}if(e.key==="ArrowUp"){e.preventDefault(),i(-7);return}if(e.key==="Home"){e.preventDefault(),s(new Date(n.getFullYear(),n.getMonth(),1),1,dateFns.getDaysInMonth(n));return}if(e.key==="End"){e.preventDefault(),s(new Date(n.getFullYear(),n.getMonth()+1,0),-1,dateFns.getDaysInMonth(n));return}if(e.key==="PageUp"){e.preventDefault(),s(q(n,-1),-1);return}if(e.key==="PageDown"){e.preventDefault(),s(q(n,1),1);return}if(e.key==="Escape"){e.preventDefault(),L(false);return}};a.useEffect(()=>{if(h&&S){let e=`${h.getFullYear()}-${h.getMonth()}-${h.getDate()}`,n=j.current.get(e);n&&n.focus();}},[h,S]);let xe=a.useMemo(()=>Ie(v,V),[v,V]),Ce=c.toLocaleDateString(v,{month:"long",year:"numeric"});return a__default.default.createElement("div",{ref:ge,className:chunkITRGJNWL_cjs.a("w-full",le),...ce},a__default.default.createElement(C__namespace.Root,{open:S,onOpenChange:L},a__default.default.createElement("div",{className:"space-y-2"},U&&a__default.default.createElement("label",{className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},U),a__default.default.createElement(C__namespace.Trigger,{asChild:true},a__default.default.createElement("button",{type:"button",className:chunkITRGJNWL_cjs.a("flex w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background","placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2","disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200 text-left",H?"border-error-500 shadow-sm hover:border-error-600 focus-visible:ring-error-500/20 focus-visible:border-error-500":"border-border shadow-sm hover:border-primary focus-visible:ring-ring/20 focus-visible:border-primary","h-10",de),onClick:()=>L(true),"aria-label":U||y.openCalendar,"aria-invalid":H},he||a__default.default.createElement("span",{className:"text-muted-foreground"},ie??y.placeholder))),W&&a__default.default.createElement("p",{className:chunkITRGJNWL_cjs.a("text-sm text-muted-foreground",H&&"text-error-600")},W)),a__default.default.createElement(C__namespace.Portal,null,a__default.default.createElement(C__namespace.Content,{className:chunkITRGJNWL_cjs.a("z-50 w-auto rounded-lg border bg-popover p-4 shadow-lg","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"),sideOffset:5,align:"start"},a__default.default.createElement("div",{ref:me,className:chunkITRGJNWL_cjs.a(Pe({variant:fe,size:K}),ue),role:"application","aria-label":"Calendar"},a__default.default.createElement("div",{className:"flex items-center justify-between mb-4"},a__default.default.createElement("div",{className:"flex items-center gap-2"},a__default.default.createElement(chunk5PVFLXPO_cjs.b,{variant:"ghost",size:"sm",onClick:ve,"aria-label":y.previousMonth},a__default.default.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},a__default.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),a__default.default.createElement("h3",{className:"text-sm font-semibold text-popover-foreground","data-testid":"calendar-month-year"},Ce),a__default.default.createElement(chunk5PVFLXPO_cjs.b,{variant:"ghost",size:"sm",onClick:ye,"aria-label":y.nextMonth},a__default.default.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},a__default.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})))),a__default.default.createElement(chunk5PVFLXPO_cjs.b,{variant:"ghost",size:"sm",onClick:Me,className:"text-xs"},y.today)),a__default.default.createElement("div",{className:"grid grid-cols-7 gap-1 mb-2"},xe.map(e=>a__default.default.createElement("div",{key:e,className:"text-center text-xs font-medium text-muted-foreground"},e))),a__default.default.createElement("div",{className:"grid grid-cols-7 gap-1"},be.map((e,n)=>{let s=t==="single"?x(e.date,f):t==="range"?Se(e.date,f?.from,f?.to):f?.some(u=>x(u,e.date)),i=O(e.date,m,p,I,Y),l=t==="range"&&f?.from&&!f?.to&&e.date>=f.from,d=`${e.date.getFullYear()}-${e.date.getMonth()}-${e.date.getDate()}`,D=h&&x(e.date,h);return e.placeholder?a__default.default.createElement("div",{key:`placeholder-${n}`,"aria-hidden":"true","data-calendar-placeholder":"",className:chunkITRGJNWL_cjs.a(R({variant:"default",size:K}),"invisible")}):a__default.default.createElement("button",{key:`${e.date.getTime()}-${n}`,ref:u=>{u?j.current.set(d,u):j.current.delete(d);},type:"button",onClick:()=>{T&&!e.isCurrentMonth&&$(new Date(e.date.getFullYear(),e.date.getMonth(),1)),_(e.date);},onKeyDown:u=>we(u,e.date),disabled:i||(T?false:!e.isCurrentMonth),className:chunkITRGJNWL_cjs.a(R({variant:s?"selected":l?"range":e.isToday?"today":e.isCurrentMonth?i?"disabled":"default":"outside",size:K}),!e.isCurrentMonth&&"opacity-50",D&&"ring-2 ring-brand-500 ring-offset-2 z-10"),"aria-label":e.date.toLocaleDateString(v,{weekday:"long",year:"numeric",month:"long",day:"numeric"}),"aria-selected":s,"aria-disabled":i,tabIndex:D?0:-1},e.date.getDate())})),t==="range"&&f?.from&&!f?.to&&a__default.default.createElement("div",{className:"mt-4 pt-4 border-t border-border"},a__default.default.createElement("p",{className:"text-xs text-muted-foreground text-center"},y.selectEndDate)))))))});Ve.displayName="Calendar";exports.a=Pe;exports.b=R;exports.c=Ve;//# sourceMappingURL=chunk-4UHGGKCS.cjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-4UHGGKCS.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/calendar.tsx"],"names":["calendarVariants","cva","calendarDayVariants","getDaysInMonth","date","dateFnsGetDaysInMonth","getFirstDayOfMonth","firstDayOfWeek","firstDay","getDay","startOfMonth","isSameDay","date1","date2","dateFnsIsSameDay","isDateInRange","from","to","isWithinInterval","startOfDay","endOfDay","isBefore","isAfter","isDateDisabled","minDate","maxDate","disabledDates","disabledDays","d","formatDate","locale","formatDateRange","formatMultipleDates","dates","multipleSelected","count","getDayNames","formatter","sundayFirst","_","index","DEFAULT_LABELS","anchorDate","value","findEnabledDate","start","step","isDisabled","limit","candidate","i","shiftMonth","months","target","lastDay","Calendar","React","mode","defaultValue","onChange","placeholder","label","error","helperText","className","inputClassName","calendarClassName","variant","size","showOutsideDays","labelOverrides","props","ref","labels","useMemo","open","setOpen","useState","currentMonth","setCurrentMonth","focusedDate","setFocusedDate","calendarRef","useRef","dayButtonRefs","internalValue","setInternalValue","isControlled","calendarValue","isDisabledDate","today","preferred","monthStart","firstEnabled","handleValueChange","newValue","handleDateClick","rangeValue","multipleValue","dateIndex","displayValue","range","calendarDays","days","daysInMonth","prevMonth","daysInPrevMonth","remainingDays","nextMonth","goToMonth","sameDayNextMonth","landing","goToPreviousMonth","goToNextMonth","goToToday","handleKeyDown","moveFocus","useEffect","dateKey","button","dayNames","monthYearDisplay","cn","C","Button","day","isSelected","isInRange","isFocused","el","e"],"mappings":"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","file":"chunk-4UHGGKCS.cjs","sourcesContent":["import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n getDaysInMonth as dateFnsGetDaysInMonth,\n startOfMonth,\n getDay,\n isSameDay as dateFnsIsSameDay,\n isWithinInterval,\n isBefore,\n isAfter,\n startOfDay,\n endOfDay,\n} from \"date-fns\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\n\n// Calendar variants\nconst calendarVariants = cva(\n \"inline-block rounded-lg border bg-background shadow-lg\",\n {\n variants: {\n variant: {\n default: \"border-border bg-card\",\n outline: \"border-2 border-border\",\n ghost: \"border-transparent bg-transparent shadow-none\",\n },\n size: {\n sm: \"p-2\",\n md: \"p-3\",\n lg: \"p-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nconst calendarDayVariants = cva(\n \"flex items-center justify-center rounded-md font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"hover:bg-muted text-foreground\",\n selected:\n \"bg-primary text-primary-foreground hover:bg-primary/90 font-semibold\",\n range: \"bg-primary/10 text-primary hover:bg-primary/20 font-medium\",\n today: \"border-2 border-primary text-foreground font-semibold\",\n outside: \"text-muted-foreground\",\n disabled: \"text-muted-foreground/50 cursor-not-allowed\",\n },\n size: {\n sm: \"h-7 w-7 text-xs\",\n md: \"h-9 w-9 text-sm\",\n lg: \"h-11 w-11 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport type CalendarMode = \"single\" | \"range\" | \"multiple\";\n\nexport interface CalendarProps extends VariantProps<typeof calendarVariants> {\n mode?: CalendarMode;\n value?: Date | Date[] | { from?: Date; to?: Date };\n defaultValue?: Date | Date[] | { from?: Date; to?: Date };\n onChange?: (\n value: Date | Date[] | { from?: Date; to?: Date } | undefined,\n ) => void;\n minDate?: Date;\n maxDate?: Date;\n disabledDates?: Date[];\n disabledDays?: number[]; // 0 = Sunday, 1 = Monday, etc.\n locale?: string;\n placeholder?: string;\n label?: string;\n error?: boolean;\n helperText?: string;\n className?: string;\n inputClassName?: string;\n calendarClassName?: string;\n showOutsideDays?: boolean;\n firstDayOfWeek?: 0 | 1; // 0 = Sunday, 1 = Monday\n /** Overrides for the calendar's own words. See {@link CalendarLabels}. */\n labels?: CalendarLabels;\n}\n\n// Helper functions using date-fns for robust date manipulation\nconst getDaysInMonth = (date: Date): number => {\n return dateFnsGetDaysInMonth(date);\n};\n\nconst getFirstDayOfMonth = (date: Date, firstDayOfWeek: 0 | 1): number => {\n // Use date-fns getDay for consistent day-of-week calculation\n const firstDay = getDay(startOfMonth(date));\n // Convert Sunday (0) to Monday-first (6) if needed\n // Sunday = 0, Monday = 1, ..., Saturday = 6\n // For Monday-first: Sunday becomes 6, Monday becomes 0, etc.\n return firstDayOfWeek === 1 ? (firstDay === 0 ? 6 : firstDay - 1) : firstDay;\n};\n\nconst isSameDay = (\n date1: Date | undefined,\n date2: Date | undefined,\n): boolean => {\n if (!date1 || !date2) return false;\n return dateFnsIsSameDay(date1, date2);\n};\n\nconst isDateInRange = (date: Date, from?: Date, to?: Date): boolean => {\n if (!from && !to) return false;\n if (from && to) {\n // Use date-fns isWithinInterval for proper date range checking\n return isWithinInterval(startOfDay(date), {\n start: startOfDay(from),\n end: endOfDay(to),\n });\n }\n if (from) return !isBefore(startOfDay(date), startOfDay(from));\n if (to) return !isAfter(startOfDay(date), endOfDay(to));\n return false;\n};\n\nconst isDateDisabled = (\n date: Date,\n minDate?: Date,\n maxDate?: Date,\n disabledDates?: Date[],\n disabledDays?: number[],\n): boolean => {\n if (minDate && isBefore(startOfDay(date), startOfDay(minDate))) return true;\n if (maxDate && isAfter(startOfDay(date), endOfDay(maxDate))) return true;\n if (disabledDates?.some((d) => isSameDay(d, date))) return true;\n if (disabledDays?.includes(getDay(date))) return true;\n return false;\n};\n\n/**\n * Formats through Intl, which every browser and Node already carries a full set\n * of locales for.\n *\n * This used to be `dateFnsFormat(date, \"MMM d, yyyy\")` with the locale accepted\n * and ignored, so `locale=\"da-DK\"` produced \"Sep 14, 2026\" next to a Danish month\n * heading. date-fns needs a locale *object* imported per language, which would\n * mean either bundling all of them or asking the caller to pass one; Intl needs\n * neither.\n */\nconst formatDate = (\n date: Date | undefined,\n locale: string = \"en-US\",\n): string => {\n if (!date) return \"\";\n return new Intl.DateTimeFormat(locale, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n }).format(date);\n};\n\nconst formatDateRange = (\n from?: Date,\n to?: Date,\n locale: string = \"en-US\",\n): string => {\n if (!from && !to) return \"\";\n if (from && to) {\n return `${formatDate(from, locale)} - ${formatDate(to, locale)}`;\n }\n if (from) return formatDate(from, locale);\n if (to) return formatDate(to, locale);\n return \"\";\n};\n\nconst formatMultipleDates = (\n dates: Date[],\n locale: string = \"en-US\",\n multipleSelected: (count: number) => string = (count) =>\n `${count} dates selected`,\n): string => {\n if (dates.length === 0) return \"\";\n if (dates.length === 1) return formatDate(dates[0], locale);\n return multipleSelected(dates.length);\n};\n\n/**\n * Weekday headings in the calendar's own language.\n *\n * They were the hardcoded strings Sun..Sat. 2024-01-07 is a Sunday, so seven days\n * from it is one full week in a known order, and Intl names them.\n */\nconst getDayNames = (locale: string, firstDayOfWeek: 0 | 1): string[] => {\n const formatter = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n const sundayFirst = Array.from({ length: 7 }, (_, index) =>\n formatter.format(new Date(2024, 0, 7 + index)),\n );\n return firstDayOfWeek === 1\n ? [...sundayFirst.slice(1), sundayFirst[0]!]\n : sundayFirst;\n};\n\n/**\n * Every string the calendar says on its own behalf.\n *\n * `locale` moves the dates; it cannot translate \"Today\". Without somewhere to put\n * these, a Danish calendar had Danish months and English buttons.\n */\nexport interface CalendarLabels {\n /** Accessible name of the trigger. Defaults to \"Open calendar\". */\n openCalendar?: string;\n /** Shown on the trigger when nothing is selected. The `placeholder` prop wins. */\n placeholder?: string;\n previousMonth?: string;\n nextMonth?: string;\n today?: string;\n /** Shown in range mode between picking the start and the end. */\n selectEndDate?: string;\n /** Trigger text for more than one date in multiple mode. */\n multipleSelected?: (count: number) => string;\n}\n\nconst DEFAULT_LABELS: Required<CalendarLabels> = {\n openCalendar: \"Open calendar\",\n placeholder: \"Select date...\",\n previousMonth: \"Previous month\",\n nextMonth: \"Next month\",\n today: \"Today\",\n selectEndDate: \"Select end date\",\n multipleSelected: (count) => `${count} dates selected`,\n};\n\n/** The date a selection is anchored on, whatever shape the selection has. */\nconst anchorDate = (\n value: Date | Date[] | { from?: Date; to?: Date } | undefined,\n): Date | undefined => {\n if (!value) return undefined;\n if (value instanceof Date) return value;\n if (Array.isArray(value)) return value[0];\n return value.from ?? value.to;\n};\n\n/**\n * Walks from `start` in `step`-day increments until it finds a date that is not\n * disabled.\n *\n * Roving focus used to move one day and stop there whether or not that day could\n * be focused. A disabled day is a disabled button, and a disabled button cannot\n * take focus - but it was still the only cell with `tabIndex=0`, so a calendar\n * with Tuesdays disabled had zero reachable dates and ArrowRight could not get\n * past Monday.\n *\n * `limit` is what stops this searching forever when every date is disabled, which\n * `disabledDays={[0,1,2,3,4,5,6]}` or an empty min/max window can produce. On\n * giving up it returns undefined and the caller leaves focus where it was.\n */\nconst findEnabledDate = (\n start: Date,\n step: number,\n isDisabled: (date: Date) => boolean,\n limit = 366,\n): Date | undefined => {\n const candidate = new Date(start);\n for (let i = 0; i < limit; i++) {\n if (!isDisabled(candidate)) return new Date(candidate);\n candidate.setDate(candidate.getDate() + step);\n }\n return undefined;\n};\n\n/** Same day number in another month, clamped to that month's length. */\nconst shiftMonth = (date: Date, months: number): Date => {\n const target = new Date(date.getFullYear(), date.getMonth() + months, 1);\n const lastDay = dateFnsGetDaysInMonth(target);\n target.setDate(Math.min(date.getDate(), lastDay));\n return target;\n};\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(\n (\n {\n mode = \"single\",\n value,\n defaultValue,\n onChange,\n minDate,\n maxDate,\n disabledDates,\n disabledDays,\n locale = \"en-US\",\n placeholder,\n label,\n error,\n helperText,\n className,\n inputClassName,\n calendarClassName,\n variant,\n size,\n showOutsideDays = true,\n firstDayOfWeek = 1,\n labels: labelOverrides,\n ...props\n },\n ref,\n ) => {\n const labels = useMemo(\n () => ({ ...DEFAULT_LABELS, ...labelOverrides }),\n [labelOverrides],\n );\n\n const [open, setOpen] = useState(false);\n // Opening a calendar that already has a value used to land on the current\n // month: `value={new Date(2020, 0, 15)}` opened September 2026 and left the\n // reader to page back eighty months.\n const [currentMonth, setCurrentMonth] = useState(\n () => anchorDate(value ?? defaultValue) ?? new Date(),\n );\n const [focusedDate, setFocusedDate] = useState<Date | null>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n const dayButtonRefs = useRef<Map<string, HTMLButtonElement>>(new Map());\n\n // Controlled vs uncontrolled\n const [internalValue, setInternalValue] = useState<\n Date | Date[] | { from?: Date; to?: Date } | undefined\n >(defaultValue);\n\n const isControlled = value !== undefined;\n const calendarValue = isControlled ? value : internalValue;\n\n const isDisabledDate = React.useCallback(\n (date: Date) =>\n isDateDisabled(date, minDate, maxDate, disabledDates, disabledDays),\n [minDate, maxDate, disabledDates, disabledDays],\n );\n\n /**\n * Where focus starts when the calendar opens.\n *\n * It used to be today, unconditionally. That is the wrong date twice over: it\n * ignores a selection the reader already made, and today may be disabled - in\n * which case the only cell with `tabIndex=0` was a disabled button, so the\n * grid had no tab stop at all.\n *\n * The order is: the selected date, then today, then the first enabled day of\n * the month on screen. If nothing in reach is enabled, focus stays unset and\n * the grid simply has no tab stop, which is the truth.\n */\n React.useLayoutEffect(() => {\n if (!open || focusedDate) return;\n\n const today = startOfDay(new Date());\n const selected = anchorDate(calendarValue);\n const preferred = [selected, today].find(\n (date): date is Date => !!date && !isDisabledDate(date),\n );\n if (preferred) {\n setFocusedDate(startOfDay(preferred));\n return;\n }\n\n const monthStart = startOfMonth(currentMonth);\n const firstEnabled = findEnabledDate(\n monthStart,\n 1,\n isDisabledDate,\n dateFnsGetDaysInMonth(currentMonth),\n );\n if (firstEnabled) setFocusedDate(firstEnabled);\n }, [open, focusedDate, calendarValue, currentMonth, isDisabledDate]);\n\n // Handle value changes\n const handleValueChange = (\n newValue: Date | Date[] | { from?: Date; to?: Date } | undefined,\n ) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n // Handle date selection\n const handleDateClick = (date: Date) => {\n if (isDateDisabled(date, minDate, maxDate, disabledDates, disabledDays)) {\n return;\n }\n\n if (mode === \"single\") {\n handleValueChange(date);\n setOpen(false);\n } else if (mode === \"range\") {\n const rangeValue = calendarValue as\n { from?: Date; to?: Date } | undefined;\n if (!rangeValue?.from || (rangeValue.from && rangeValue.to)) {\n // Start new range\n handleValueChange({ from: date });\n } else {\n // Complete range\n const from = rangeValue.from;\n const to = date;\n if (to < from) {\n handleValueChange({ from: to, to: from });\n } else {\n handleValueChange({ from, to });\n }\n setOpen(false);\n }\n } else if (mode === \"multiple\") {\n const multipleValue = (calendarValue as Date[]) || [];\n const dateIndex = multipleValue.findIndex((d) => isSameDay(d, date));\n if (dateIndex >= 0) {\n // Remove date\n handleValueChange(multipleValue.filter((_, i) => i !== dateIndex));\n } else {\n // Add date\n handleValueChange([...multipleValue, date]);\n }\n }\n };\n\n // Get display value\n const displayValue = useMemo(() => {\n if (!calendarValue) return \"\";\n\n if (mode === \"single\") {\n return formatDate(calendarValue as Date, locale);\n } else if (mode === \"range\") {\n const range = calendarValue as { from?: Date; to?: Date };\n return formatDateRange(range.from, range.to, locale);\n } else {\n return formatMultipleDates(\n calendarValue as Date[],\n locale,\n labels.multipleSelected,\n );\n }\n }, [calendarValue, mode, locale, labels.multipleSelected]);\n\n // Generate calendar days\n const calendarDays = useMemo(() => {\n const days: Array<{\n date: Date;\n isCurrentMonth: boolean;\n isToday: boolean;\n /** A spacer that holds a column open without showing a date. */\n placeholder?: boolean;\n }> = [];\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const firstDay = getFirstDayOfMonth(currentMonth, firstDayOfWeek);\n const daysInMonth = getDaysInMonth(currentMonth);\n\n // Previous month days.\n //\n // The leading cells exist whether or not the dates in them are shown: they\n // are what puts the first of the month under the right weekday. Only adding\n // them when `showOutsideDays` was on meant a September starting on a\n // Tuesday rendered its 1st in the Monday column, with every date of the\n // month one heading out for the rest of the grid.\n //\n // With outside days hidden they become empty, non-interactive placeholders\n // instead - see the `placeholder` flag below.\n if (firstDay > 0) {\n const prevMonth = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth() - 1,\n );\n const daysInPrevMonth = getDaysInMonth(prevMonth);\n for (\n let i = daysInPrevMonth - firstDay + 1;\n i <= daysInPrevMonth;\n i++\n ) {\n const date = new Date(\n prevMonth.getFullYear(),\n prevMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: false,\n isToday: isSameDay(date, today),\n placeholder: !showOutsideDays,\n });\n }\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const date = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: true,\n isToday: isSameDay(date, today),\n });\n }\n\n // Next month days\n if (showOutsideDays) {\n const remainingDays = 42 - days.length; // 6 weeks * 7 days\n const nextMonth = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth() + 1,\n );\n for (let i = 1; i <= remainingDays; i++) {\n const date = new Date(\n nextMonth.getFullYear(),\n nextMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: false,\n isToday: isSameDay(date, today),\n });\n }\n }\n\n return days;\n }, [currentMonth, showOutsideDays, firstDayOfWeek]);\n\n // Navigate months\n /**\n * Moves the grid, and brings focus with it.\n *\n * The header buttons only moved the month. Focus stayed on a date that was no\n * longer rendered, so the grid lost its tab stop and an arrow key jumped back\n * to the month you had just left.\n */\n const goToMonth = (months: number) => {\n const target = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth() + months,\n 1,\n );\n setCurrentMonth(target);\n\n if (!focusedDate) return;\n const sameDayNextMonth = shiftMonth(focusedDate, months);\n const landing =\n findEnabledDate(\n sameDayNextMonth,\n 1,\n isDisabledDate,\n dateFnsGetDaysInMonth(target),\n ) ??\n findEnabledDate(\n sameDayNextMonth,\n -1,\n isDisabledDate,\n dateFnsGetDaysInMonth(target),\n );\n if (landing) setFocusedDate(landing);\n };\n\n const goToPreviousMonth = () => goToMonth(-1);\n const goToNextMonth = () => goToMonth(1);\n\n const goToToday = () => {\n const today = startOfDay(new Date());\n setCurrentMonth(today);\n // Today can be disabled, in which case focus goes to the nearest day of\n // that month that is not.\n const landing =\n findEnabledDate(today, 1, isDisabledDate, 31) ??\n findEnabledDate(today, -1, isDisabledDate, 31);\n if (landing) setFocusedDate(landing);\n };\n\n // Keyboard navigation\n const handleKeyDown = (e: React.KeyboardEvent, date: Date) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleDateClick(date);\n return;\n }\n\n /**\n * Every movement lands on a date that can actually take focus.\n *\n * Each key used to step once and stop, disabled or not. The resulting cell\n * got the grid's only `tabIndex=0` while being a disabled button, so\n * ArrowRight into a disabled Tuesday left the grid with no tab stop and no\n * way forward - pressing it again did the same thing from the same place.\n */\n const moveFocus = (\n candidate: Date,\n step: number,\n limit?: number,\n ): void => {\n const target = findEnabledDate(candidate, step, isDisabledDate, limit);\n // Nothing enabled in that direction: stay where we are rather than\n // moving focus onto something that cannot hold it.\n if (!target) return;\n\n setFocusedDate(target);\n if (\n target.getMonth() !== currentMonth.getMonth() ||\n target.getFullYear() !== currentMonth.getFullYear()\n ) {\n setCurrentMonth(new Date(target.getFullYear(), target.getMonth(), 1));\n }\n };\n\n const step = (days: number) => {\n const candidate = new Date(date);\n candidate.setDate(candidate.getDate() + days);\n moveFocus(candidate, days > 0 ? 1 : -1);\n };\n\n if (e.key === \"ArrowRight\") {\n e.preventDefault();\n step(1);\n return;\n }\n\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n step(-1);\n return;\n }\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n step(7);\n return;\n }\n\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n step(-7);\n return;\n }\n\n if (e.key === \"Home\") {\n e.preventDefault();\n // Forwards from the 1st: the first day of the month that is enabled.\n moveFocus(\n new Date(date.getFullYear(), date.getMonth(), 1),\n 1,\n dateFnsGetDaysInMonth(date),\n );\n return;\n }\n\n if (e.key === \"End\") {\n e.preventDefault();\n moveFocus(\n new Date(date.getFullYear(), date.getMonth() + 1, 0),\n -1,\n dateFnsGetDaysInMonth(date),\n );\n return;\n }\n\n if (e.key === \"PageUp\") {\n e.preventDefault();\n // `new Date(y, m - 1, 31)` from 31 March is 3 March, so a month-step from\n // the end of a long month used to skip the short month entirely.\n moveFocus(shiftMonth(date, -1), -1);\n return;\n }\n\n if (e.key === \"PageDown\") {\n e.preventDefault();\n moveFocus(shiftMonth(date, 1), 1);\n return;\n }\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n setOpen(false);\n return;\n }\n };\n\n // Focus management\n useEffect(() => {\n if (focusedDate && open) {\n const dateKey = `${focusedDate.getFullYear()}-${focusedDate.getMonth()}-${focusedDate.getDate()}`;\n const button = dayButtonRefs.current.get(dateKey);\n if (button) {\n button.focus();\n }\n }\n }, [focusedDate, open]);\n\n // Day names\n const dayNames = useMemo(\n () => getDayNames(locale, firstDayOfWeek),\n [locale, firstDayOfWeek],\n );\n\n // Month/year display\n const monthYearDisplay = currentMonth.toLocaleDateString(locale, {\n month: \"long\",\n year: \"numeric\",\n });\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n <Popover.Root open={open} onOpenChange={setOpen}>\n <div className=\"space-y-2\">\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n </label>\n )}\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"flex w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background\",\n \"placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200 text-left\",\n error\n ? \"border-error-500 shadow-sm hover:border-error-600 focus-visible:ring-error-500/20 focus-visible:border-error-500\"\n : \"border-border shadow-sm hover:border-primary focus-visible:ring-ring/20 focus-visible:border-primary\",\n \"h-10\",\n inputClassName,\n )}\n // No onFocus handler here. Radix returns focus to the trigger\n // when the popover closes, so opening on focus meant selecting a\n // date closed it and immediately reopened it - the flicker. It\n // also popped the calendar open when tabbing past the field.\n onClick={() => setOpen(true)}\n aria-label={label || labels.openCalendar}\n aria-invalid={error}\n >\n {displayValue || (\n <span className=\"text-muted-foreground\">\n {placeholder ?? labels.placeholder}\n </span>\n )}\n </button>\n </Popover.Trigger>\n {helperText && (\n <p\n className={cn(\n \"text-sm text-muted-foreground\",\n error && \"text-error-600\",\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n\n <Popover.Portal>\n <Popover.Content\n className={cn(\n \"z-50 w-auto rounded-lg border bg-popover p-4 shadow-lg\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n )}\n sideOffset={5}\n align=\"start\"\n >\n <div\n ref={calendarRef}\n className={cn(\n calendarVariants({ variant, size }),\n calendarClassName,\n )}\n role=\"application\"\n aria-label=\"Calendar\"\n >\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToPreviousMonth}\n aria-label={labels.previousMonth}\n >\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </Button>\n\n <h3\n className=\"text-sm font-semibold text-popover-foreground\"\n data-testid=\"calendar-month-year\"\n >\n {monthYearDisplay}\n </h3>\n\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToNextMonth}\n aria-label={labels.nextMonth}\n >\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </Button>\n </div>\n\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToToday}\n className=\"text-xs\"\n >\n {labels.today}\n </Button>\n </div>\n\n {/* Day names */}\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {dayNames.map((day) => (\n <div\n key={day}\n className=\"text-center text-xs font-medium text-muted-foreground\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {calendarDays.map((day, index) => {\n const isSelected =\n mode === \"single\"\n ? isSameDay(day.date, calendarValue as Date | undefined)\n : mode === \"range\"\n ? isDateInRange(\n day.date,\n (calendarValue as { from?: Date; to?: Date })\n ?.from,\n (calendarValue as { from?: Date; to?: Date })?.to,\n )\n : (calendarValue as Date[])?.some((d) =>\n isSameDay(d, day.date),\n );\n\n const isDisabled = isDateDisabled(\n day.date,\n minDate,\n maxDate,\n disabledDates,\n disabledDays,\n );\n\n const isInRange =\n mode === \"range\" &&\n (calendarValue as { from?: Date; to?: Date })?.from &&\n !(calendarValue as { from?: Date; to?: Date })?.to &&\n day.date >=\n (calendarValue as { from?: Date; to?: Date }).from!;\n\n const dateKey = `${day.date.getFullYear()}-${day.date.getMonth()}-${day.date.getDate()}`;\n const isFocused =\n focusedDate && isSameDay(day.date, focusedDate);\n\n // A leading spacer: it holds the column open so the first\n // of the month lands under the right weekday, and it is not\n // a control, so it is out of the tab order and out of the\n // accessibility tree.\n if (day.placeholder) {\n return (\n <div\n key={`placeholder-${index}`}\n aria-hidden=\"true\"\n data-calendar-placeholder=\"\"\n className={cn(\n calendarDayVariants({ variant: \"default\", size }),\n \"invisible\",\n )}\n />\n );\n }\n\n return (\n <button\n key={`${day.date.getTime()}-${index}`}\n ref={(el) => {\n if (el) {\n dayButtonRefs.current.set(dateKey, el);\n } else {\n dayButtonRefs.current.delete(dateKey);\n }\n }}\n type=\"button\"\n onClick={() => {\n if (showOutsideDays && !day.isCurrentMonth) {\n // Navigate to the month of the clicked date\n setCurrentMonth(\n new Date(\n day.date.getFullYear(),\n day.date.getMonth(),\n 1,\n ),\n );\n // Synchronously: React batches both updates into one\n // render. Deferring the selection by a tick showed the\n // new month first and selected a frame later, which\n // read as a flash.\n handleDateClick(day.date);\n } else {\n handleDateClick(day.date);\n }\n }}\n onKeyDown={(e) => handleKeyDown(e, day.date)}\n disabled={\n isDisabled ||\n (showOutsideDays ? false : !day.isCurrentMonth)\n }\n className={cn(\n calendarDayVariants({\n variant: isSelected\n ? \"selected\"\n : isInRange\n ? \"range\"\n : day.isToday\n ? \"today\"\n : !day.isCurrentMonth\n ? \"outside\"\n : isDisabled\n ? \"disabled\"\n : \"default\",\n size,\n }),\n !day.isCurrentMonth && \"opacity-50\",\n isFocused &&\n \"ring-2 ring-brand-500 ring-offset-2 z-10\",\n )}\n aria-label={day.date.toLocaleDateString(locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n })}\n aria-selected={isSelected}\n aria-disabled={isDisabled}\n tabIndex={isFocused ? 0 : -1}\n >\n {day.date.getDate()}\n </button>\n );\n })}\n </div>\n\n {/* Footer for range mode */}\n {mode === \"range\" &&\n (calendarValue as { from?: Date; to?: Date })?.from &&\n !(calendarValue as { from?: Date; to?: Date })?.to && (\n <div className=\"mt-4 pt-4 border-t border-border\">\n <p className=\"text-xs text-muted-foreground text-center\">\n {labels.selectEndDate}\n </p>\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n );\n },\n);\n\nCalendar.displayName = \"Calendar\";\n\nexport { calendarVariants, calendarDayVariants };\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {b}from'./chunk-AVTJE2O2.js';import {a as a$1}from'./chunk-AC2JBXHQ.js';import a,{useMemo,useState,useRef,useEffect}from'react';import*as C from'@radix-ui/react-popover';import {cva}from'class-variance-authority';import {startOfDay,startOfMonth,getDaysInMonth,isBefore,isAfter,endOfDay,getDay,isSameDay,isWithinInterval}from'date-fns';var Pe=cva("inline-block rounded-lg border bg-background shadow-lg",{variants:{variant:{default:"border-border bg-card",outline:"border-2 border-border",ghost:"border-transparent bg-transparent shadow-none"},size:{sm:"p-2",md:"p-3",lg:"p-4"}},defaultVariants:{variant:"default",size:"md"}}),R=cva("flex items-center justify-center rounded-md font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"hover:bg-muted text-foreground",selected:"bg-primary text-primary-foreground hover:bg-primary/90 font-semibold",range:"bg-primary/10 text-primary hover:bg-primary/20 font-medium",today:"border-2 border-primary text-foreground font-semibold",outside:"text-muted-foreground",disabled:"text-muted-foreground/50 cursor-not-allowed"},size:{sm:"h-7 w-7 text-xs",md:"h-9 w-9 text-sm",lg:"h-11 w-11 text-base"}},defaultVariants:{variant:"default",size:"md"}}),ee=t=>getDaysInMonth(t),Te=(t,r)=>{let o=getDay(startOfMonth(t));return r===1?o===0?6:o-1:o},x=(t,r)=>!t||!r?false:isSameDay(t,r),Se=(t,r,o)=>!r&&!o?false:r&&o?isWithinInterval(startOfDay(t),{start:startOfDay(r),end:endOfDay(o)}):r?!isBefore(startOfDay(t),startOfDay(r)):o?!isAfter(startOfDay(t),endOfDay(o)):false,O=(t,r,o,g,m)=>!!(r&&isBefore(startOfDay(t),startOfDay(r))||o&&isAfter(startOfDay(t),endOfDay(o))||g?.some(p=>x(p,t))||m?.includes(getDay(t))),P=(t,r="en-US")=>t?new Intl.DateTimeFormat(r,{year:"numeric",month:"short",day:"numeric"}).format(t):"",Le=(t,r,o="en-US")=>!t&&!r?"":t&&r?`${P(t,o)} - ${P(r,o)}`:t?P(t,o):r?P(r,o):"",Ee=(t,r="en-US",o=g=>`${g} dates selected`)=>t.length===0?"":t.length===1?P(t[0],r):o(t.length),Ie=(t,r)=>{let o=new Intl.DateTimeFormat(t,{weekday:"short"}),g=Array.from({length:7},(m,p)=>o.format(new Date(2024,0,7+p)));return r===1?[...g.slice(1),g[0]]:g},Ye={openCalendar:"Open calendar",placeholder:"Select date...",previousMonth:"Previous month",nextMonth:"Next month",today:"Today",selectEndDate:"Select end date",multipleSelected:t=>`${t} dates selected`},te=t=>{if(t)return t instanceof Date?t:Array.isArray(t)?t[0]:t.from??t.to},F=(t,r,o,g=366)=>{let m=new Date(t);for(let p=0;p<g;p++){if(!o(m))return new Date(m);m.setDate(m.getDate()+r);}},q=(t,r)=>{let o=new Date(t.getFullYear(),t.getMonth()+r,1),g=getDaysInMonth(o);return o.setDate(Math.min(t.getDate(),g)),o},Ve=a.forwardRef(({mode:t="single",value:r,defaultValue:o,onChange:g,minDate:m,maxDate:p,disabledDates:I,disabledDays:Y,locale:v="en-US",placeholder:ie,label:U,error:H,helperText:W,className:le,inputClassName:de,calendarClassName:ue,variant:fe,size:K,showOutsideDays:T=true,firstDayOfWeek:V=1,labels:J,...ce},ge)=>{let y=useMemo(()=>({...Ye,...J}),[J]),[S,L]=useState(false),[c,$]=useState(()=>te(r??o)??new Date),[h,E]=useState(null),me=useRef(null),j=useRef(new Map),[De,pe]=useState(o),Q=r!==void 0,f=Q?r:De,M=a.useCallback(e=>O(e,m,p,I,Y),[m,p,I,Y]);a.useLayoutEffect(()=>{if(!S||h)return;let e=startOfDay(new Date),s=[te(f),e].find(d=>!!d&&!M(d));if(s){E(startOfDay(s));return}let i=startOfMonth(c),l=F(i,1,M,getDaysInMonth(c));l&&E(l);},[S,h,f,c,M]);let N=e=>{Q||pe(e),g?.(e);},_=e=>{if(!O(e,m,p,I,Y)){if(t==="single")N(e),L(false);else if(t==="range"){let n=f;if(!n?.from||n.from&&n.to)N({from:e});else {let s=n.from,i=e;i<s?N({from:i,to:s}):N({from:s,to:i}),L(false);}}else if(t==="multiple"){let n=f||[],s=n.findIndex(i=>x(i,e));s>=0?N(n.filter((i,l)=>l!==s)):N([...n,e]);}}},he=useMemo(()=>{if(!f)return "";if(t==="single")return P(f,v);if(t==="range"){let e=f;return Le(e.from,e.to,v)}else return Ee(f,v,y.multipleSelected)},[f,t,v,y.multipleSelected]),be=useMemo(()=>{let e=[],n=new Date;n.setHours(0,0,0,0);let s=Te(c,V),i=ee(c);if(s>0){let l=new Date(c.getFullYear(),c.getMonth()-1),d=ee(l);for(let D=d-s+1;D<=d;D++){let u=new Date(l.getFullYear(),l.getMonth(),D);e.push({date:u,isCurrentMonth:false,isToday:x(u,n),placeholder:!T});}}for(let l=1;l<=i;l++){let d=new Date(c.getFullYear(),c.getMonth(),l);e.push({date:d,isCurrentMonth:true,isToday:x(d,n)});}if(T){let l=42-e.length,d=new Date(c.getFullYear(),c.getMonth()+1);for(let D=1;D<=l;D++){let u=new Date(d.getFullYear(),d.getMonth(),D);e.push({date:u,isCurrentMonth:false,isToday:x(u,n)});}}return e},[c,T,V]),X=e=>{let n=new Date(c.getFullYear(),c.getMonth()+e,1);if($(n),!h)return;let s=q(h,e),i=F(s,1,M,getDaysInMonth(n))??F(s,-1,M,getDaysInMonth(n));i&&E(i);},ve=()=>X(-1),ye=()=>X(1),Me=()=>{let e=startOfDay(new Date);$(e);let n=F(e,1,M,31)??F(e,-1,M,31);n&&E(n);},we=(e,n)=>{if(e.key==="Enter"||e.key===" "){e.preventDefault(),_(n);return}let s=(l,d,D)=>{let u=F(l,d,M,D);u&&(E(u),(u.getMonth()!==c.getMonth()||u.getFullYear()!==c.getFullYear())&&$(new Date(u.getFullYear(),u.getMonth(),1)));},i=l=>{let d=new Date(n);d.setDate(d.getDate()+l),s(d,l>0?1:-1);};if(e.key==="ArrowRight"){e.preventDefault(),i(1);return}if(e.key==="ArrowLeft"){e.preventDefault(),i(-1);return}if(e.key==="ArrowDown"){e.preventDefault(),i(7);return}if(e.key==="ArrowUp"){e.preventDefault(),i(-7);return}if(e.key==="Home"){e.preventDefault(),s(new Date(n.getFullYear(),n.getMonth(),1),1,getDaysInMonth(n));return}if(e.key==="End"){e.preventDefault(),s(new Date(n.getFullYear(),n.getMonth()+1,0),-1,getDaysInMonth(n));return}if(e.key==="PageUp"){e.preventDefault(),s(q(n,-1),-1);return}if(e.key==="PageDown"){e.preventDefault(),s(q(n,1),1);return}if(e.key==="Escape"){e.preventDefault(),L(false);return}};useEffect(()=>{if(h&&S){let e=`${h.getFullYear()}-${h.getMonth()}-${h.getDate()}`,n=j.current.get(e);n&&n.focus();}},[h,S]);let xe=useMemo(()=>Ie(v,V),[v,V]),Ce=c.toLocaleDateString(v,{month:"long",year:"numeric"});return a.createElement("div",{ref:ge,className:a$1("w-full",le),...ce},a.createElement(C.Root,{open:S,onOpenChange:L},a.createElement("div",{className:"space-y-2"},U&&a.createElement("label",{className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},U),a.createElement(C.Trigger,{asChild:true},a.createElement("button",{type:"button",className:a$1("flex w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background","placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2","disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200 text-left",H?"border-error-500 shadow-sm hover:border-error-600 focus-visible:ring-error-500/20 focus-visible:border-error-500":"border-border shadow-sm hover:border-primary focus-visible:ring-ring/20 focus-visible:border-primary","h-10",de),onClick:()=>L(true),"aria-label":U||y.openCalendar,"aria-invalid":H},he||a.createElement("span",{className:"text-muted-foreground"},ie??y.placeholder))),W&&a.createElement("p",{className:a$1("text-sm text-muted-foreground",H&&"text-error-600")},W)),a.createElement(C.Portal,null,a.createElement(C.Content,{className:a$1("z-50 w-auto rounded-lg border bg-popover p-4 shadow-lg","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"),sideOffset:5,align:"start"},a.createElement("div",{ref:me,className:a$1(Pe({variant:fe,size:K}),ue),role:"application","aria-label":"Calendar"},a.createElement("div",{className:"flex items-center justify-between mb-4"},a.createElement("div",{className:"flex items-center gap-2"},a.createElement(b,{variant:"ghost",size:"sm",onClick:ve,"aria-label":y.previousMonth},a.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),a.createElement("h3",{className:"text-sm font-semibold text-popover-foreground","data-testid":"calendar-month-year"},Ce),a.createElement(b,{variant:"ghost",size:"sm",onClick:ye,"aria-label":y.nextMonth},a.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})))),a.createElement(b,{variant:"ghost",size:"sm",onClick:Me,className:"text-xs"},y.today)),a.createElement("div",{className:"grid grid-cols-7 gap-1 mb-2"},xe.map(e=>a.createElement("div",{key:e,className:"text-center text-xs font-medium text-muted-foreground"},e))),a.createElement("div",{className:"grid grid-cols-7 gap-1"},be.map((e,n)=>{let s=t==="single"?x(e.date,f):t==="range"?Se(e.date,f?.from,f?.to):f?.some(u=>x(u,e.date)),i=O(e.date,m,p,I,Y),l=t==="range"&&f?.from&&!f?.to&&e.date>=f.from,d=`${e.date.getFullYear()}-${e.date.getMonth()}-${e.date.getDate()}`,D=h&&x(e.date,h);return e.placeholder?a.createElement("div",{key:`placeholder-${n}`,"aria-hidden":"true","data-calendar-placeholder":"",className:a$1(R({variant:"default",size:K}),"invisible")}):a.createElement("button",{key:`${e.date.getTime()}-${n}`,ref:u=>{u?j.current.set(d,u):j.current.delete(d);},type:"button",onClick:()=>{T&&!e.isCurrentMonth&&$(new Date(e.date.getFullYear(),e.date.getMonth(),1)),_(e.date);},onKeyDown:u=>we(u,e.date),disabled:i||(T?false:!e.isCurrentMonth),className:a$1(R({variant:s?"selected":l?"range":e.isToday?"today":e.isCurrentMonth?i?"disabled":"default":"outside",size:K}),!e.isCurrentMonth&&"opacity-50",D&&"ring-2 ring-brand-500 ring-offset-2 z-10"),"aria-label":e.date.toLocaleDateString(v,{weekday:"long",year:"numeric",month:"long",day:"numeric"}),"aria-selected":s,"aria-disabled":i,tabIndex:D?0:-1},e.date.getDate())})),t==="range"&&f?.from&&!f?.to&&a.createElement("div",{className:"mt-4 pt-4 border-t border-border"},a.createElement("p",{className:"text-xs text-muted-foreground text-center"},y.selectEndDate)))))))});Ve.displayName="Calendar";export{Pe as a,R as b,Ve as c};//# sourceMappingURL=chunk-A4ODFRMS.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-A4ODFRMS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/calendar.tsx"],"names":["calendarVariants","cva","calendarDayVariants","getDaysInMonth","date","dateFnsGetDaysInMonth","getFirstDayOfMonth","firstDayOfWeek","firstDay","getDay","startOfMonth","isSameDay","date1","date2","dateFnsIsSameDay","isDateInRange","from","to","isWithinInterval","startOfDay","endOfDay","isBefore","isAfter","isDateDisabled","minDate","maxDate","disabledDates","disabledDays","d","formatDate","locale","formatDateRange","formatMultipleDates","dates","multipleSelected","count","getDayNames","formatter","sundayFirst","_","index","DEFAULT_LABELS","anchorDate","value","findEnabledDate","start","step","isDisabled","limit","candidate","i","shiftMonth","months","target","lastDay","Calendar","React","mode","defaultValue","onChange","placeholder","label","error","helperText","className","inputClassName","calendarClassName","variant","size","showOutsideDays","labelOverrides","props","ref","labels","useMemo","open","setOpen","useState","currentMonth","setCurrentMonth","focusedDate","setFocusedDate","calendarRef","useRef","dayButtonRefs","internalValue","setInternalValue","isControlled","calendarValue","isDisabledDate","today","preferred","monthStart","firstEnabled","handleValueChange","newValue","handleDateClick","rangeValue","multipleValue","dateIndex","displayValue","range","calendarDays","days","daysInMonth","prevMonth","daysInPrevMonth","remainingDays","nextMonth","goToMonth","sameDayNextMonth","landing","goToPreviousMonth","goToNextMonth","goToToday","handleKeyDown","moveFocus","useEffect","dateKey","button","dayNames","monthYearDisplay","cn","Button","day","isSelected","isInRange","isFocused","el","e"],"mappings":"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","file":"chunk-A4ODFRMS.js","sourcesContent":["import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n getDaysInMonth as dateFnsGetDaysInMonth,\n startOfMonth,\n getDay,\n isSameDay as dateFnsIsSameDay,\n isWithinInterval,\n isBefore,\n isAfter,\n startOfDay,\n endOfDay,\n} from \"date-fns\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\n\n// Calendar variants\nconst calendarVariants = cva(\n \"inline-block rounded-lg border bg-background shadow-lg\",\n {\n variants: {\n variant: {\n default: \"border-border bg-card\",\n outline: \"border-2 border-border\",\n ghost: \"border-transparent bg-transparent shadow-none\",\n },\n size: {\n sm: \"p-2\",\n md: \"p-3\",\n lg: \"p-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nconst calendarDayVariants = cva(\n \"flex items-center justify-center rounded-md font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"hover:bg-muted text-foreground\",\n selected:\n \"bg-primary text-primary-foreground hover:bg-primary/90 font-semibold\",\n range: \"bg-primary/10 text-primary hover:bg-primary/20 font-medium\",\n today: \"border-2 border-primary text-foreground font-semibold\",\n outside: \"text-muted-foreground\",\n disabled: \"text-muted-foreground/50 cursor-not-allowed\",\n },\n size: {\n sm: \"h-7 w-7 text-xs\",\n md: \"h-9 w-9 text-sm\",\n lg: \"h-11 w-11 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport type CalendarMode = \"single\" | \"range\" | \"multiple\";\n\nexport interface CalendarProps extends VariantProps<typeof calendarVariants> {\n mode?: CalendarMode;\n value?: Date | Date[] | { from?: Date; to?: Date };\n defaultValue?: Date | Date[] | { from?: Date; to?: Date };\n onChange?: (\n value: Date | Date[] | { from?: Date; to?: Date } | undefined,\n ) => void;\n minDate?: Date;\n maxDate?: Date;\n disabledDates?: Date[];\n disabledDays?: number[]; // 0 = Sunday, 1 = Monday, etc.\n locale?: string;\n placeholder?: string;\n label?: string;\n error?: boolean;\n helperText?: string;\n className?: string;\n inputClassName?: string;\n calendarClassName?: string;\n showOutsideDays?: boolean;\n firstDayOfWeek?: 0 | 1; // 0 = Sunday, 1 = Monday\n /** Overrides for the calendar's own words. See {@link CalendarLabels}. */\n labels?: CalendarLabels;\n}\n\n// Helper functions using date-fns for robust date manipulation\nconst getDaysInMonth = (date: Date): number => {\n return dateFnsGetDaysInMonth(date);\n};\n\nconst getFirstDayOfMonth = (date: Date, firstDayOfWeek: 0 | 1): number => {\n // Use date-fns getDay for consistent day-of-week calculation\n const firstDay = getDay(startOfMonth(date));\n // Convert Sunday (0) to Monday-first (6) if needed\n // Sunday = 0, Monday = 1, ..., Saturday = 6\n // For Monday-first: Sunday becomes 6, Monday becomes 0, etc.\n return firstDayOfWeek === 1 ? (firstDay === 0 ? 6 : firstDay - 1) : firstDay;\n};\n\nconst isSameDay = (\n date1: Date | undefined,\n date2: Date | undefined,\n): boolean => {\n if (!date1 || !date2) return false;\n return dateFnsIsSameDay(date1, date2);\n};\n\nconst isDateInRange = (date: Date, from?: Date, to?: Date): boolean => {\n if (!from && !to) return false;\n if (from && to) {\n // Use date-fns isWithinInterval for proper date range checking\n return isWithinInterval(startOfDay(date), {\n start: startOfDay(from),\n end: endOfDay(to),\n });\n }\n if (from) return !isBefore(startOfDay(date), startOfDay(from));\n if (to) return !isAfter(startOfDay(date), endOfDay(to));\n return false;\n};\n\nconst isDateDisabled = (\n date: Date,\n minDate?: Date,\n maxDate?: Date,\n disabledDates?: Date[],\n disabledDays?: number[],\n): boolean => {\n if (minDate && isBefore(startOfDay(date), startOfDay(minDate))) return true;\n if (maxDate && isAfter(startOfDay(date), endOfDay(maxDate))) return true;\n if (disabledDates?.some((d) => isSameDay(d, date))) return true;\n if (disabledDays?.includes(getDay(date))) return true;\n return false;\n};\n\n/**\n * Formats through Intl, which every browser and Node already carries a full set\n * of locales for.\n *\n * This used to be `dateFnsFormat(date, \"MMM d, yyyy\")` with the locale accepted\n * and ignored, so `locale=\"da-DK\"` produced \"Sep 14, 2026\" next to a Danish month\n * heading. date-fns needs a locale *object* imported per language, which would\n * mean either bundling all of them or asking the caller to pass one; Intl needs\n * neither.\n */\nconst formatDate = (\n date: Date | undefined,\n locale: string = \"en-US\",\n): string => {\n if (!date) return \"\";\n return new Intl.DateTimeFormat(locale, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n }).format(date);\n};\n\nconst formatDateRange = (\n from?: Date,\n to?: Date,\n locale: string = \"en-US\",\n): string => {\n if (!from && !to) return \"\";\n if (from && to) {\n return `${formatDate(from, locale)} - ${formatDate(to, locale)}`;\n }\n if (from) return formatDate(from, locale);\n if (to) return formatDate(to, locale);\n return \"\";\n};\n\nconst formatMultipleDates = (\n dates: Date[],\n locale: string = \"en-US\",\n multipleSelected: (count: number) => string = (count) =>\n `${count} dates selected`,\n): string => {\n if (dates.length === 0) return \"\";\n if (dates.length === 1) return formatDate(dates[0], locale);\n return multipleSelected(dates.length);\n};\n\n/**\n * Weekday headings in the calendar's own language.\n *\n * They were the hardcoded strings Sun..Sat. 2024-01-07 is a Sunday, so seven days\n * from it is one full week in a known order, and Intl names them.\n */\nconst getDayNames = (locale: string, firstDayOfWeek: 0 | 1): string[] => {\n const formatter = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n const sundayFirst = Array.from({ length: 7 }, (_, index) =>\n formatter.format(new Date(2024, 0, 7 + index)),\n );\n return firstDayOfWeek === 1\n ? [...sundayFirst.slice(1), sundayFirst[0]!]\n : sundayFirst;\n};\n\n/**\n * Every string the calendar says on its own behalf.\n *\n * `locale` moves the dates; it cannot translate \"Today\". Without somewhere to put\n * these, a Danish calendar had Danish months and English buttons.\n */\nexport interface CalendarLabels {\n /** Accessible name of the trigger. Defaults to \"Open calendar\". */\n openCalendar?: string;\n /** Shown on the trigger when nothing is selected. The `placeholder` prop wins. */\n placeholder?: string;\n previousMonth?: string;\n nextMonth?: string;\n today?: string;\n /** Shown in range mode between picking the start and the end. */\n selectEndDate?: string;\n /** Trigger text for more than one date in multiple mode. */\n multipleSelected?: (count: number) => string;\n}\n\nconst DEFAULT_LABELS: Required<CalendarLabels> = {\n openCalendar: \"Open calendar\",\n placeholder: \"Select date...\",\n previousMonth: \"Previous month\",\n nextMonth: \"Next month\",\n today: \"Today\",\n selectEndDate: \"Select end date\",\n multipleSelected: (count) => `${count} dates selected`,\n};\n\n/** The date a selection is anchored on, whatever shape the selection has. */\nconst anchorDate = (\n value: Date | Date[] | { from?: Date; to?: Date } | undefined,\n): Date | undefined => {\n if (!value) return undefined;\n if (value instanceof Date) return value;\n if (Array.isArray(value)) return value[0];\n return value.from ?? value.to;\n};\n\n/**\n * Walks from `start` in `step`-day increments until it finds a date that is not\n * disabled.\n *\n * Roving focus used to move one day and stop there whether or not that day could\n * be focused. A disabled day is a disabled button, and a disabled button cannot\n * take focus - but it was still the only cell with `tabIndex=0`, so a calendar\n * with Tuesdays disabled had zero reachable dates and ArrowRight could not get\n * past Monday.\n *\n * `limit` is what stops this searching forever when every date is disabled, which\n * `disabledDays={[0,1,2,3,4,5,6]}` or an empty min/max window can produce. On\n * giving up it returns undefined and the caller leaves focus where it was.\n */\nconst findEnabledDate = (\n start: Date,\n step: number,\n isDisabled: (date: Date) => boolean,\n limit = 366,\n): Date | undefined => {\n const candidate = new Date(start);\n for (let i = 0; i < limit; i++) {\n if (!isDisabled(candidate)) return new Date(candidate);\n candidate.setDate(candidate.getDate() + step);\n }\n return undefined;\n};\n\n/** Same day number in another month, clamped to that month's length. */\nconst shiftMonth = (date: Date, months: number): Date => {\n const target = new Date(date.getFullYear(), date.getMonth() + months, 1);\n const lastDay = dateFnsGetDaysInMonth(target);\n target.setDate(Math.min(date.getDate(), lastDay));\n return target;\n};\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(\n (\n {\n mode = \"single\",\n value,\n defaultValue,\n onChange,\n minDate,\n maxDate,\n disabledDates,\n disabledDays,\n locale = \"en-US\",\n placeholder,\n label,\n error,\n helperText,\n className,\n inputClassName,\n calendarClassName,\n variant,\n size,\n showOutsideDays = true,\n firstDayOfWeek = 1,\n labels: labelOverrides,\n ...props\n },\n ref,\n ) => {\n const labels = useMemo(\n () => ({ ...DEFAULT_LABELS, ...labelOverrides }),\n [labelOverrides],\n );\n\n const [open, setOpen] = useState(false);\n // Opening a calendar that already has a value used to land on the current\n // month: `value={new Date(2020, 0, 15)}` opened September 2026 and left the\n // reader to page back eighty months.\n const [currentMonth, setCurrentMonth] = useState(\n () => anchorDate(value ?? defaultValue) ?? new Date(),\n );\n const [focusedDate, setFocusedDate] = useState<Date | null>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n const dayButtonRefs = useRef<Map<string, HTMLButtonElement>>(new Map());\n\n // Controlled vs uncontrolled\n const [internalValue, setInternalValue] = useState<\n Date | Date[] | { from?: Date; to?: Date } | undefined\n >(defaultValue);\n\n const isControlled = value !== undefined;\n const calendarValue = isControlled ? value : internalValue;\n\n const isDisabledDate = React.useCallback(\n (date: Date) =>\n isDateDisabled(date, minDate, maxDate, disabledDates, disabledDays),\n [minDate, maxDate, disabledDates, disabledDays],\n );\n\n /**\n * Where focus starts when the calendar opens.\n *\n * It used to be today, unconditionally. That is the wrong date twice over: it\n * ignores a selection the reader already made, and today may be disabled - in\n * which case the only cell with `tabIndex=0` was a disabled button, so the\n * grid had no tab stop at all.\n *\n * The order is: the selected date, then today, then the first enabled day of\n * the month on screen. If nothing in reach is enabled, focus stays unset and\n * the grid simply has no tab stop, which is the truth.\n */\n React.useLayoutEffect(() => {\n if (!open || focusedDate) return;\n\n const today = startOfDay(new Date());\n const selected = anchorDate(calendarValue);\n const preferred = [selected, today].find(\n (date): date is Date => !!date && !isDisabledDate(date),\n );\n if (preferred) {\n setFocusedDate(startOfDay(preferred));\n return;\n }\n\n const monthStart = startOfMonth(currentMonth);\n const firstEnabled = findEnabledDate(\n monthStart,\n 1,\n isDisabledDate,\n dateFnsGetDaysInMonth(currentMonth),\n );\n if (firstEnabled) setFocusedDate(firstEnabled);\n }, [open, focusedDate, calendarValue, currentMonth, isDisabledDate]);\n\n // Handle value changes\n const handleValueChange = (\n newValue: Date | Date[] | { from?: Date; to?: Date } | undefined,\n ) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n // Handle date selection\n const handleDateClick = (date: Date) => {\n if (isDateDisabled(date, minDate, maxDate, disabledDates, disabledDays)) {\n return;\n }\n\n if (mode === \"single\") {\n handleValueChange(date);\n setOpen(false);\n } else if (mode === \"range\") {\n const rangeValue = calendarValue as\n { from?: Date; to?: Date } | undefined;\n if (!rangeValue?.from || (rangeValue.from && rangeValue.to)) {\n // Start new range\n handleValueChange({ from: date });\n } else {\n // Complete range\n const from = rangeValue.from;\n const to = date;\n if (to < from) {\n handleValueChange({ from: to, to: from });\n } else {\n handleValueChange({ from, to });\n }\n setOpen(false);\n }\n } else if (mode === \"multiple\") {\n const multipleValue = (calendarValue as Date[]) || [];\n const dateIndex = multipleValue.findIndex((d) => isSameDay(d, date));\n if (dateIndex >= 0) {\n // Remove date\n handleValueChange(multipleValue.filter((_, i) => i !== dateIndex));\n } else {\n // Add date\n handleValueChange([...multipleValue, date]);\n }\n }\n };\n\n // Get display value\n const displayValue = useMemo(() => {\n if (!calendarValue) return \"\";\n\n if (mode === \"single\") {\n return formatDate(calendarValue as Date, locale);\n } else if (mode === \"range\") {\n const range = calendarValue as { from?: Date; to?: Date };\n return formatDateRange(range.from, range.to, locale);\n } else {\n return formatMultipleDates(\n calendarValue as Date[],\n locale,\n labels.multipleSelected,\n );\n }\n }, [calendarValue, mode, locale, labels.multipleSelected]);\n\n // Generate calendar days\n const calendarDays = useMemo(() => {\n const days: Array<{\n date: Date;\n isCurrentMonth: boolean;\n isToday: boolean;\n /** A spacer that holds a column open without showing a date. */\n placeholder?: boolean;\n }> = [];\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const firstDay = getFirstDayOfMonth(currentMonth, firstDayOfWeek);\n const daysInMonth = getDaysInMonth(currentMonth);\n\n // Previous month days.\n //\n // The leading cells exist whether or not the dates in them are shown: they\n // are what puts the first of the month under the right weekday. Only adding\n // them when `showOutsideDays` was on meant a September starting on a\n // Tuesday rendered its 1st in the Monday column, with every date of the\n // month one heading out for the rest of the grid.\n //\n // With outside days hidden they become empty, non-interactive placeholders\n // instead - see the `placeholder` flag below.\n if (firstDay > 0) {\n const prevMonth = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth() - 1,\n );\n const daysInPrevMonth = getDaysInMonth(prevMonth);\n for (\n let i = daysInPrevMonth - firstDay + 1;\n i <= daysInPrevMonth;\n i++\n ) {\n const date = new Date(\n prevMonth.getFullYear(),\n prevMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: false,\n isToday: isSameDay(date, today),\n placeholder: !showOutsideDays,\n });\n }\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const date = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: true,\n isToday: isSameDay(date, today),\n });\n }\n\n // Next month days\n if (showOutsideDays) {\n const remainingDays = 42 - days.length; // 6 weeks * 7 days\n const nextMonth = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth() + 1,\n );\n for (let i = 1; i <= remainingDays; i++) {\n const date = new Date(\n nextMonth.getFullYear(),\n nextMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: false,\n isToday: isSameDay(date, today),\n });\n }\n }\n\n return days;\n }, [currentMonth, showOutsideDays, firstDayOfWeek]);\n\n // Navigate months\n /**\n * Moves the grid, and brings focus with it.\n *\n * The header buttons only moved the month. Focus stayed on a date that was no\n * longer rendered, so the grid lost its tab stop and an arrow key jumped back\n * to the month you had just left.\n */\n const goToMonth = (months: number) => {\n const target = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth() + months,\n 1,\n );\n setCurrentMonth(target);\n\n if (!focusedDate) return;\n const sameDayNextMonth = shiftMonth(focusedDate, months);\n const landing =\n findEnabledDate(\n sameDayNextMonth,\n 1,\n isDisabledDate,\n dateFnsGetDaysInMonth(target),\n ) ??\n findEnabledDate(\n sameDayNextMonth,\n -1,\n isDisabledDate,\n dateFnsGetDaysInMonth(target),\n );\n if (landing) setFocusedDate(landing);\n };\n\n const goToPreviousMonth = () => goToMonth(-1);\n const goToNextMonth = () => goToMonth(1);\n\n const goToToday = () => {\n const today = startOfDay(new Date());\n setCurrentMonth(today);\n // Today can be disabled, in which case focus goes to the nearest day of\n // that month that is not.\n const landing =\n findEnabledDate(today, 1, isDisabledDate, 31) ??\n findEnabledDate(today, -1, isDisabledDate, 31);\n if (landing) setFocusedDate(landing);\n };\n\n // Keyboard navigation\n const handleKeyDown = (e: React.KeyboardEvent, date: Date) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleDateClick(date);\n return;\n }\n\n /**\n * Every movement lands on a date that can actually take focus.\n *\n * Each key used to step once and stop, disabled or not. The resulting cell\n * got the grid's only `tabIndex=0` while being a disabled button, so\n * ArrowRight into a disabled Tuesday left the grid with no tab stop and no\n * way forward - pressing it again did the same thing from the same place.\n */\n const moveFocus = (\n candidate: Date,\n step: number,\n limit?: number,\n ): void => {\n const target = findEnabledDate(candidate, step, isDisabledDate, limit);\n // Nothing enabled in that direction: stay where we are rather than\n // moving focus onto something that cannot hold it.\n if (!target) return;\n\n setFocusedDate(target);\n if (\n target.getMonth() !== currentMonth.getMonth() ||\n target.getFullYear() !== currentMonth.getFullYear()\n ) {\n setCurrentMonth(new Date(target.getFullYear(), target.getMonth(), 1));\n }\n };\n\n const step = (days: number) => {\n const candidate = new Date(date);\n candidate.setDate(candidate.getDate() + days);\n moveFocus(candidate, days > 0 ? 1 : -1);\n };\n\n if (e.key === \"ArrowRight\") {\n e.preventDefault();\n step(1);\n return;\n }\n\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n step(-1);\n return;\n }\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n step(7);\n return;\n }\n\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n step(-7);\n return;\n }\n\n if (e.key === \"Home\") {\n e.preventDefault();\n // Forwards from the 1st: the first day of the month that is enabled.\n moveFocus(\n new Date(date.getFullYear(), date.getMonth(), 1),\n 1,\n dateFnsGetDaysInMonth(date),\n );\n return;\n }\n\n if (e.key === \"End\") {\n e.preventDefault();\n moveFocus(\n new Date(date.getFullYear(), date.getMonth() + 1, 0),\n -1,\n dateFnsGetDaysInMonth(date),\n );\n return;\n }\n\n if (e.key === \"PageUp\") {\n e.preventDefault();\n // `new Date(y, m - 1, 31)` from 31 March is 3 March, so a month-step from\n // the end of a long month used to skip the short month entirely.\n moveFocus(shiftMonth(date, -1), -1);\n return;\n }\n\n if (e.key === \"PageDown\") {\n e.preventDefault();\n moveFocus(shiftMonth(date, 1), 1);\n return;\n }\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n setOpen(false);\n return;\n }\n };\n\n // Focus management\n useEffect(() => {\n if (focusedDate && open) {\n const dateKey = `${focusedDate.getFullYear()}-${focusedDate.getMonth()}-${focusedDate.getDate()}`;\n const button = dayButtonRefs.current.get(dateKey);\n if (button) {\n button.focus();\n }\n }\n }, [focusedDate, open]);\n\n // Day names\n const dayNames = useMemo(\n () => getDayNames(locale, firstDayOfWeek),\n [locale, firstDayOfWeek],\n );\n\n // Month/year display\n const monthYearDisplay = currentMonth.toLocaleDateString(locale, {\n month: \"long\",\n year: \"numeric\",\n });\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n <Popover.Root open={open} onOpenChange={setOpen}>\n <div className=\"space-y-2\">\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n </label>\n )}\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"flex w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background\",\n \"placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200 text-left\",\n error\n ? \"border-error-500 shadow-sm hover:border-error-600 focus-visible:ring-error-500/20 focus-visible:border-error-500\"\n : \"border-border shadow-sm hover:border-primary focus-visible:ring-ring/20 focus-visible:border-primary\",\n \"h-10\",\n inputClassName,\n )}\n // No onFocus handler here. Radix returns focus to the trigger\n // when the popover closes, so opening on focus meant selecting a\n // date closed it and immediately reopened it - the flicker. It\n // also popped the calendar open when tabbing past the field.\n onClick={() => setOpen(true)}\n aria-label={label || labels.openCalendar}\n aria-invalid={error}\n >\n {displayValue || (\n <span className=\"text-muted-foreground\">\n {placeholder ?? labels.placeholder}\n </span>\n )}\n </button>\n </Popover.Trigger>\n {helperText && (\n <p\n className={cn(\n \"text-sm text-muted-foreground\",\n error && \"text-error-600\",\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n\n <Popover.Portal>\n <Popover.Content\n className={cn(\n \"z-50 w-auto rounded-lg border bg-popover p-4 shadow-lg\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n )}\n sideOffset={5}\n align=\"start\"\n >\n <div\n ref={calendarRef}\n className={cn(\n calendarVariants({ variant, size }),\n calendarClassName,\n )}\n role=\"application\"\n aria-label=\"Calendar\"\n >\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToPreviousMonth}\n aria-label={labels.previousMonth}\n >\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </Button>\n\n <h3\n className=\"text-sm font-semibold text-popover-foreground\"\n data-testid=\"calendar-month-year\"\n >\n {monthYearDisplay}\n </h3>\n\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToNextMonth}\n aria-label={labels.nextMonth}\n >\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </Button>\n </div>\n\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToToday}\n className=\"text-xs\"\n >\n {labels.today}\n </Button>\n </div>\n\n {/* Day names */}\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {dayNames.map((day) => (\n <div\n key={day}\n className=\"text-center text-xs font-medium text-muted-foreground\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {calendarDays.map((day, index) => {\n const isSelected =\n mode === \"single\"\n ? isSameDay(day.date, calendarValue as Date | undefined)\n : mode === \"range\"\n ? isDateInRange(\n day.date,\n (calendarValue as { from?: Date; to?: Date })\n ?.from,\n (calendarValue as { from?: Date; to?: Date })?.to,\n )\n : (calendarValue as Date[])?.some((d) =>\n isSameDay(d, day.date),\n );\n\n const isDisabled = isDateDisabled(\n day.date,\n minDate,\n maxDate,\n disabledDates,\n disabledDays,\n );\n\n const isInRange =\n mode === \"range\" &&\n (calendarValue as { from?: Date; to?: Date })?.from &&\n !(calendarValue as { from?: Date; to?: Date })?.to &&\n day.date >=\n (calendarValue as { from?: Date; to?: Date }).from!;\n\n const dateKey = `${day.date.getFullYear()}-${day.date.getMonth()}-${day.date.getDate()}`;\n const isFocused =\n focusedDate && isSameDay(day.date, focusedDate);\n\n // A leading spacer: it holds the column open so the first\n // of the month lands under the right weekday, and it is not\n // a control, so it is out of the tab order and out of the\n // accessibility tree.\n if (day.placeholder) {\n return (\n <div\n key={`placeholder-${index}`}\n aria-hidden=\"true\"\n data-calendar-placeholder=\"\"\n className={cn(\n calendarDayVariants({ variant: \"default\", size }),\n \"invisible\",\n )}\n />\n );\n }\n\n return (\n <button\n key={`${day.date.getTime()}-${index}`}\n ref={(el) => {\n if (el) {\n dayButtonRefs.current.set(dateKey, el);\n } else {\n dayButtonRefs.current.delete(dateKey);\n }\n }}\n type=\"button\"\n onClick={() => {\n if (showOutsideDays && !day.isCurrentMonth) {\n // Navigate to the month of the clicked date\n setCurrentMonth(\n new Date(\n day.date.getFullYear(),\n day.date.getMonth(),\n 1,\n ),\n );\n // Synchronously: React batches both updates into one\n // render. Deferring the selection by a tick showed the\n // new month first and selected a frame later, which\n // read as a flash.\n handleDateClick(day.date);\n } else {\n handleDateClick(day.date);\n }\n }}\n onKeyDown={(e) => handleKeyDown(e, day.date)}\n disabled={\n isDisabled ||\n (showOutsideDays ? false : !day.isCurrentMonth)\n }\n className={cn(\n calendarDayVariants({\n variant: isSelected\n ? \"selected\"\n : isInRange\n ? \"range\"\n : day.isToday\n ? \"today\"\n : !day.isCurrentMonth\n ? \"outside\"\n : isDisabled\n ? \"disabled\"\n : \"default\",\n size,\n }),\n !day.isCurrentMonth && \"opacity-50\",\n isFocused &&\n \"ring-2 ring-brand-500 ring-offset-2 z-10\",\n )}\n aria-label={day.date.toLocaleDateString(locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n })}\n aria-selected={isSelected}\n aria-disabled={isDisabled}\n tabIndex={isFocused ? 0 : -1}\n >\n {day.date.getDate()}\n </button>\n );\n })}\n </div>\n\n {/* Footer for range mode */}\n {mode === \"range\" &&\n (calendarValue as { from?: Date; to?: Date })?.from &&\n !(calendarValue as { from?: Date; to?: Date })?.to && (\n <div className=\"mt-4 pt-4 border-t border-border\">\n <p className=\"text-xs text-muted-foreground text-center\">\n {labels.selectEndDate}\n </p>\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n );\n },\n);\n\nCalendar.displayName = \"Calendar\";\n\nexport { calendarVariants, calendarDayVariants };\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';var
|
|
2
|
+
'use strict';var chunk4UHGGKCS_cjs=require('../../chunk-4UHGGKCS.cjs');require('../../chunk-5PVFLXPO.cjs'),require('../../chunk-7SPPGTBT.cjs'),require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"Calendar",{enumerable:true,get:function(){return chunk4UHGGKCS_cjs.c}});Object.defineProperty(exports,"calendarDayVariants",{enumerable:true,get:function(){return chunk4UHGGKCS_cjs.b}});Object.defineProperty(exports,"calendarVariants",{enumerable:true,get:function(){return chunk4UHGGKCS_cjs.a}});//# sourceMappingURL=calendar.cjs.map
|
|
3
3
|
//# sourceMappingURL=calendar.cjs.map
|
|
@@ -39,7 +39,28 @@ interface CalendarProps extends VariantProps<typeof calendarVariants> {
|
|
|
39
39
|
calendarClassName?: string;
|
|
40
40
|
showOutsideDays?: boolean;
|
|
41
41
|
firstDayOfWeek?: 0 | 1;
|
|
42
|
+
/** Overrides for the calendar's own words. See {@link CalendarLabels}. */
|
|
43
|
+
labels?: CalendarLabels;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Every string the calendar says on its own behalf.
|
|
47
|
+
*
|
|
48
|
+
* `locale` moves the dates; it cannot translate "Today". Without somewhere to put
|
|
49
|
+
* these, a Danish calendar had Danish months and English buttons.
|
|
50
|
+
*/
|
|
51
|
+
interface CalendarLabels {
|
|
52
|
+
/** Accessible name of the trigger. Defaults to "Open calendar". */
|
|
53
|
+
openCalendar?: string;
|
|
54
|
+
/** Shown on the trigger when nothing is selected. The `placeholder` prop wins. */
|
|
55
|
+
placeholder?: string;
|
|
56
|
+
previousMonth?: string;
|
|
57
|
+
nextMonth?: string;
|
|
58
|
+
today?: string;
|
|
59
|
+
/** Shown in range mode between picking the start and the end. */
|
|
60
|
+
selectEndDate?: string;
|
|
61
|
+
/** Trigger text for more than one date in multiple mode. */
|
|
62
|
+
multipleSelected?: (count: number) => string;
|
|
42
63
|
}
|
|
43
64
|
declare const Calendar: React__default.ForwardRefExoticComponent<CalendarProps & React__default.RefAttributes<HTMLDivElement>>;
|
|
44
65
|
|
|
45
|
-
export { Calendar, type CalendarMode, type CalendarProps, calendarDayVariants, calendarVariants };
|
|
66
|
+
export { Calendar, type CalendarLabels, type CalendarMode, type CalendarProps, calendarDayVariants, calendarVariants };
|
|
@@ -39,7 +39,28 @@ interface CalendarProps extends VariantProps<typeof calendarVariants> {
|
|
|
39
39
|
calendarClassName?: string;
|
|
40
40
|
showOutsideDays?: boolean;
|
|
41
41
|
firstDayOfWeek?: 0 | 1;
|
|
42
|
+
/** Overrides for the calendar's own words. See {@link CalendarLabels}. */
|
|
43
|
+
labels?: CalendarLabels;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Every string the calendar says on its own behalf.
|
|
47
|
+
*
|
|
48
|
+
* `locale` moves the dates; it cannot translate "Today". Without somewhere to put
|
|
49
|
+
* these, a Danish calendar had Danish months and English buttons.
|
|
50
|
+
*/
|
|
51
|
+
interface CalendarLabels {
|
|
52
|
+
/** Accessible name of the trigger. Defaults to "Open calendar". */
|
|
53
|
+
openCalendar?: string;
|
|
54
|
+
/** Shown on the trigger when nothing is selected. The `placeholder` prop wins. */
|
|
55
|
+
placeholder?: string;
|
|
56
|
+
previousMonth?: string;
|
|
57
|
+
nextMonth?: string;
|
|
58
|
+
today?: string;
|
|
59
|
+
/** Shown in range mode between picking the start and the end. */
|
|
60
|
+
selectEndDate?: string;
|
|
61
|
+
/** Trigger text for more than one date in multiple mode. */
|
|
62
|
+
multipleSelected?: (count: number) => string;
|
|
42
63
|
}
|
|
43
64
|
declare const Calendar: React__default.ForwardRefExoticComponent<CalendarProps & React__default.RefAttributes<HTMLDivElement>>;
|
|
44
65
|
|
|
45
|
-
export { Calendar, type CalendarMode, type CalendarProps, calendarDayVariants, calendarVariants };
|
|
66
|
+
export { Calendar, type CalendarLabels, type CalendarMode, type CalendarProps, calendarDayVariants, calendarVariants };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export{c as Calendar,b as calendarDayVariants,a as calendarVariants}from'../../chunk-
|
|
2
|
+
export{c as Calendar,b as calendarDayVariants,a as calendarVariants}from'../../chunk-A4ODFRMS.js';import'../../chunk-AVTJE2O2.js';import'../../chunk-COXN6XBA.js';import'../../chunk-AC2JBXHQ.js';//# sourceMappingURL=calendar.js.map
|
|
3
3
|
//# sourceMappingURL=calendar.js.map
|
package/dist/index.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';var chunk7PPAI3MM_cjs=require('./chunk-7PPAI3MM.cjs'),chunk2DNQXAMB_cjs=require('./chunk-2DNQXAMB.cjs'),chunk3V3OIZWQ_cjs=require('./chunk-3V3OIZWQ.cjs'),chunkOEN63W3G_cjs=require('./chunk-OEN63W3G.cjs'),chunkJUOCEYUF_cjs=require('./chunk-JUOCEYUF.cjs'),chunkEVRQYWZ3_cjs=require('./chunk-EVRQYWZ3.cjs'),chunkHWZTMVQV_cjs=require('./chunk-HWZTMVQV.cjs'),chunkV45EOCAD_cjs=require('./chunk-V45EOCAD.cjs'),chunkJTHW25XF_cjs=require('./chunk-JTHW25XF.cjs'),chunkSZ34F6OZ_cjs=require('./chunk-SZ34F6OZ.cjs'),chunkJ4VRJVTO_cjs=require('./chunk-J4VRJVTO.cjs'),chunk27UORO2F_cjs=require('./chunk-27UORO2F.cjs'),chunkCGBIJDZX_cjs=require('./chunk-CGBIJDZX.cjs'),chunkK2JCGDU7_cjs=require('./chunk-K2JCGDU7.cjs'),chunkERGAJKFH_cjs=require('./chunk-ERGAJKFH.cjs'),chunkZ7WEJ5IQ_cjs=require('./chunk-Z7WEJ5IQ.cjs'),chunkC7HZAQBX_cjs=require('./chunk-C7HZAQBX.cjs'),chunkMQUHAWJ2_cjs=require('./chunk-MQUHAWJ2.cjs'),chunkQEHKWS7N_cjs=require('./chunk-QEHKWS7N.cjs'),chunkFMIAI6US_cjs=require('./chunk-FMIAI6US.cjs'),chunk45W3AH36_cjs=require('./chunk-45W3AH36.cjs'),chunkBYV75TDY_cjs=require('./chunk-BYV75TDY.cjs'),chunkE53C3RDD_cjs=require('./chunk-E53C3RDD.cjs'),chunkG35BR7SK_cjs=require('./chunk-G35BR7SK.cjs'),chunkYLAUFUIS_cjs=require('./chunk-YLAUFUIS.cjs'),chunk4NLMGH2S_cjs=require('./chunk-4NLMGH2S.cjs'),chunkXPIBRXTW_cjs=require('./chunk-XPIBRXTW.cjs'),chunkV77N662N_cjs=require('./chunk-V77N662N.cjs'),chunk7YFUAGIW_cjs=require('./chunk-7YFUAGIW.cjs'),chunkE3A4SP3X_cjs=require('./chunk-E3A4SP3X.cjs'),chunkNC27D5Y3_cjs=require('./chunk-NC27D5Y3.cjs'),chunkBJPJB6IA_cjs=require('./chunk-BJPJB6IA.cjs'),chunkWK6LNC2E_cjs=require('./chunk-WK6LNC2E.cjs'),chunkNPSIDFOF_cjs=require('./chunk-NPSIDFOF.cjs'),chunkEEGXD4HC_cjs=require('./chunk-EEGXD4HC.cjs'),chunkDB6MHAU3_cjs=require('./chunk-DB6MHAU3.cjs'),chunkKCS3UL74_cjs=require('./chunk-KCS3UL74.cjs');require('./chunk-MIYL7YKU.cjs');var chunkKASVYULP_cjs=require('./chunk-KASVYULP.cjs'),chunkUC577SR4_cjs=require('./chunk-UC577SR4.cjs'),chunkFUENXWR7_cjs=require('./chunk-FUENXWR7.cjs'),chunkRKSTEJKG_cjs=require('./chunk-RKSTEJKG.cjs'),chunk75OZKMEA_cjs=require('./chunk-75OZKMEA.cjs'),chunkEFCNLYYW_cjs=require('./chunk-EFCNLYYW.cjs'),chunk35RWQSO2_cjs=require('./chunk-35RWQSO2.cjs'),chunkJCETHQ55_cjs=require('./chunk-JCETHQ55.cjs'),chunkPMNNV4ML_cjs=require('./chunk-PMNNV4ML.cjs'),chunkBDRP7ALG_cjs=require('./chunk-BDRP7ALG.cjs'),chunk3HKYX26O_cjs=require('./chunk-3HKYX26O.cjs'),chunkBZ5ZCZJX_cjs=require('./chunk-BZ5ZCZJX.cjs'),chunk3QVQ2TNE_cjs=require('./chunk-3QVQ2TNE.cjs'),chunk55N2IT62_cjs=require('./chunk-55N2IT62.cjs'),chunk4FSJEW7W_cjs=require('./chunk-4FSJEW7W.cjs'),chunk7WEIVLG3_cjs=require('./chunk-7WEIVLG3.cjs'),chunkMLSE5XSB_cjs=require('./chunk-MLSE5XSB.cjs'),chunkPZLBMQGI_cjs=require('./chunk-PZLBMQGI.cjs'),chunk5PVFLXPO_cjs=require('./chunk-5PVFLXPO.cjs'),chunkLXQT7FH6_cjs=require('./chunk-LXQT7FH6.cjs'),chunkR4L5BZYI_cjs=require('./chunk-R4L5BZYI.cjs'),chunkIOX4WPJL_cjs=require('./chunk-IOX4WPJL.cjs');require('./chunk-7SPPGTBT.cjs');var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs');var ua={nostromo:"nostromo",mother:"mother","lv-426":"lv-426",sulaco:"sulaco"};function ra(o){typeof document<"u"&&document.documentElement.setAttribute("data-theme",o);}function ta(){return typeof document>"u"?null:document.documentElement.getAttribute("data-theme")}function pa(){if(typeof document>"u")return;let r=document.documentElement.getAttribute("data-color-scheme")==="dark"?"light":"dark";document.documentElement.setAttribute("data-color-scheme",r);}function na(o){typeof document>"u"||document.documentElement.setAttribute("data-color-scheme",o?"dark":"light");}function ea(){return typeof document>"u"?null:document.documentElement.getAttribute("data-color-scheme")}function aa(){return typeof window>"u"?false:window.matchMedia("(prefers-color-scheme: dark)").matches}function ga(o){if(typeof window>"u")return ()=>{};let r=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>{o(e.matches);};return r.addEventListener("change",t),()=>{r.removeEventListener("change",t);}}function fa(o="nostromo"){typeof document>"u"||(ta()||ra(o),ea()||na(aa()));}var Ia={nostromo:{name:"Nostromo",description:"Classic space industrial theme inspired by the USCSS Nostromo",colors:{primary:"Purple/Blue",secondary:"Dark Gray",accent:"Green"}},mother:{name:"Mother",description:"Cold, clinical AI aesthetic inspired by the ship's computer",colors:{primary:"Cold Blue/Cyan",secondary:"Clinical White",accent:"Green"}},"lv-426":{name:"LV-426",description:"Warm, rusty atmosphere inspired by the planet LV-426",colors:{primary:"Warm Orange/Rust",secondary:"Earth Tones",accent:"Green"}},sulaco:{name:"Sulaco",description:"Modern, military-inspired aesthetic from the USS Sulaco",colors:{primary:"Military Blue/Gray",secondary:"Steel Tones",accent:"Green"}}};Object.defineProperty(exports,"Gallery",{enumerable:true,get:function(){return chunk7PPAI3MM_cjs.a}});Object.defineProperty(exports,"Hero",{enumerable:true,get:function(){return chunk2DNQXAMB_cjs.a}});Object.defineProperty(exports,"LogoWall",{enumerable:true,get:function(){return chunk3V3OIZWQ_cjs.a}});Object.defineProperty(exports,"Pricing",{enumerable:true,get:function(){return chunkOEN63W3G_cjs.a}});Object.defineProperty(exports,"Testimonials",{enumerable:true,get:function(){return chunkJUOCEYUF_cjs.a}});Object.defineProperty(exports,"Switch",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.c}});Object.defineProperty(exports,"switchThumbVariants",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.b}});Object.defineProperty(exports,"switchVariants",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.a}});Object.defineProperty(exports,"Tabs",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.d}});Object.defineProperty(exports,"TabsContent",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.g}});Object.defineProperty(exports,"TabsList",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.e}});Object.defineProperty(exports,"TabsTrigger",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.f}});Object.defineProperty(exports,"tabsContentVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.c}});Object.defineProperty(exports,"tabsListVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.a}});Object.defineProperty(exports,"tabsTriggerVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.b}});Object.defineProperty(exports,"Textarea",{enumerable:true,get:function(){return chunkV45EOCAD_cjs.b}});Object.defineProperty(exports,"textareaVariants",{enumerable:true,get:function(){return chunkV45EOCAD_cjs.a}});Object.defineProperty(exports,"Toast",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.e}});Object.defineProperty(exports,"ToastProvider",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.d}});Object.defineProperty(exports,"toastIconVariants",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.b}});Object.defineProperty(exports,"toastVariants",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.a}});Object.defineProperty(exports,"useToast",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.c}});Object.defineProperty(exports,"useToastNotification",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.f}});Object.defineProperty(exports,"Toggle",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.b}});Object.defineProperty(exports,"ToggleGroup",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.c}});Object.defineProperty(exports,"ToggleGroupItem",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.d}});Object.defineProperty(exports,"toggleVariants",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.a}});Object.defineProperty(exports,"Features",{enumerable:true,get:function(){return chunkJ4VRJVTO_cjs.a}});Object.defineProperty(exports,"ResizableHandle",{enumerable:true,get:function(){return chunk27UORO2F_cjs.c}});Object.defineProperty(exports,"ResizablePanel",{enumerable:true,get:function(){return chunk27UORO2F_cjs.b}});Object.defineProperty(exports,"ResizablePanelGroup",{enumerable:true,get:function(){return chunk27UORO2F_cjs.a}});Object.defineProperty(exports,"ScrollArea",{enumerable:true,get:function(){return chunkCGBIJDZX_cjs.a}});Object.defineProperty(exports,"ScrollBar",{enumerable:true,get:function(){return chunkCGBIJDZX_cjs.b}});Object.defineProperty(exports,"Select",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.d}});Object.defineProperty(exports,"SelectContent",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.h}});Object.defineProperty(exports,"SelectGroup",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.e}});Object.defineProperty(exports,"SelectItem",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.j}});Object.defineProperty(exports,"SelectLabel",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.i}});Object.defineProperty(exports,"SelectSeparator",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.k}});Object.defineProperty(exports,"SelectTrigger",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.g}});Object.defineProperty(exports,"SelectValue",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.f}});Object.defineProperty(exports,"selectContentVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.b}});Object.defineProperty(exports,"selectItemVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.c}});Object.defineProperty(exports,"selectTriggerVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.a}});Object.defineProperty(exports,"MOBILE_BREAKPOINT",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.a}});Object.defineProperty(exports,"Sidebar",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.e}});Object.defineProperty(exports,"SidebarContent",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.m}});Object.defineProperty(exports,"SidebarFooter",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.k}});Object.defineProperty(exports,"SidebarGroup",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.n}});Object.defineProperty(exports,"SidebarGroupAction",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.p}});Object.defineProperty(exports,"SidebarGroupContent",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.q}});Object.defineProperty(exports,"SidebarGroupLabel",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.o}});Object.defineProperty(exports,"SidebarHeader",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.j}});Object.defineProperty(exports,"SidebarInput",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.i}});Object.defineProperty(exports,"SidebarInset",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.h}});Object.defineProperty(exports,"SidebarMenu",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.r}});Object.defineProperty(exports,"SidebarMenuAction",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.v}});Object.defineProperty(exports,"SidebarMenuBadge",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.w}});Object.defineProperty(exports,"SidebarMenuButton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.u}});Object.defineProperty(exports,"SidebarMenuItem",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.s}});Object.defineProperty(exports,"SidebarMenuSkeleton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.x}});Object.defineProperty(exports,"SidebarMenuSub",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.y}});Object.defineProperty(exports,"SidebarMenuSubButton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.A}});Object.defineProperty(exports,"SidebarMenuSubItem",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.z}});Object.defineProperty(exports,"SidebarProvider",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.d}});Object.defineProperty(exports,"SidebarRail",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.g}});Object.defineProperty(exports,"SidebarSeparator",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.l}});Object.defineProperty(exports,"SidebarTrigger",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.f}});Object.defineProperty(exports,"sidebarMenuButtonVariants",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.t}});Object.defineProperty(exports,"useIsMobile",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.b}});Object.defineProperty(exports,"useSidebar",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.c}});Object.defineProperty(exports,"Tooltip",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.f}});Object.defineProperty(exports,"TooltipContent",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.d}});Object.defineProperty(exports,"TooltipProvider",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.e}});Object.defineProperty(exports,"TooltipTrigger",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.c}});Object.defineProperty(exports,"arrowVariants",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.b}});Object.defineProperty(exports,"tooltipVariants",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.a}});Object.defineProperty(exports,"Separator",{enumerable:true,get:function(){return chunkC7HZAQBX_cjs.b}});Object.defineProperty(exports,"separatorVariants",{enumerable:true,get:function(){return chunkC7HZAQBX_cjs.a}});Object.defineProperty(exports,"Sheet",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.b}});Object.defineProperty(exports,"SheetClose",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.d}});Object.defineProperty(exports,"SheetContent",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.g}});Object.defineProperty(exports,"SheetDescription",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.k}});Object.defineProperty(exports,"SheetFooter",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.i}});Object.defineProperty(exports,"SheetHeader",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.h}});Object.defineProperty(exports,"SheetOverlay",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.f}});Object.defineProperty(exports,"SheetPortal",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.e}});Object.defineProperty(exports,"SheetTitle",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.j}});Object.defineProperty(exports,"SheetTrigger",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.c}});Object.defineProperty(exports,"sheetVariants",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.a}});Object.defineProperty(exports,"Slider",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.c}});Object.defineProperty(exports,"sliderThumbVariants",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.b}});Object.defineProperty(exports,"sliderTrackVariants",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.a}});Object.defineProperty(exports,"Menubar",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.a}});Object.defineProperty(exports,"MenubarCheckboxItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.e}});Object.defineProperty(exports,"MenubarContent",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.c}});Object.defineProperty(exports,"MenubarGroup",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.m}});Object.defineProperty(exports,"MenubarItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.d}});Object.defineProperty(exports,"MenubarLabel",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.g}});Object.defineProperty(exports,"MenubarMenu",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.l}});Object.defineProperty(exports,"MenubarRadioGroup",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.o}});Object.defineProperty(exports,"MenubarRadioItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.f}});Object.defineProperty(exports,"MenubarSeparator",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.h}});Object.defineProperty(exports,"MenubarShortcut",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.i}});Object.defineProperty(exports,"MenubarSub",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.n}});Object.defineProperty(exports,"MenubarSubContent",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.k}});Object.defineProperty(exports,"MenubarSubTrigger",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.j}});Object.defineProperty(exports,"MenubarTrigger",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.b}});Object.defineProperty(exports,"NavigationMenu",{enumerable:true,get:function(){return chunk45W3AH36_cjs.a}});Object.defineProperty(exports,"NavigationMenuContent",{enumerable:true,get:function(){return chunk45W3AH36_cjs.f}});Object.defineProperty(exports,"NavigationMenuIndicator",{enumerable:true,get:function(){return chunk45W3AH36_cjs.i}});Object.defineProperty(exports,"NavigationMenuItem",{enumerable:true,get:function(){return chunk45W3AH36_cjs.c}});Object.defineProperty(exports,"NavigationMenuLink",{enumerable:true,get:function(){return chunk45W3AH36_cjs.g}});Object.defineProperty(exports,"NavigationMenuList",{enumerable:true,get:function(){return chunk45W3AH36_cjs.b}});Object.defineProperty(exports,"NavigationMenuTrigger",{enumerable:true,get:function(){return chunk45W3AH36_cjs.e}});Object.defineProperty(exports,"NavigationMenuViewport",{enumerable:true,get:function(){return chunk45W3AH36_cjs.h}});Object.defineProperty(exports,"navigationMenuTriggerStyle",{enumerable:true,get:function(){return chunk45W3AH36_cjs.d}});Object.defineProperty(exports,"Pagination",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.c}});Object.defineProperty(exports,"PaginationContent",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.d}});Object.defineProperty(exports,"PaginationEllipsis",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.i}});Object.defineProperty(exports,"PaginationItem",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.e}});Object.defineProperty(exports,"PaginationLink",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.f}});Object.defineProperty(exports,"PaginationNext",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.h}});Object.defineProperty(exports,"PaginationPrevious",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.g}});Object.defineProperty(exports,"paginationItemVariants",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.b}});Object.defineProperty(exports,"paginationVariants",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.a}});Object.defineProperty(exports,"Popover",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.b}});Object.defineProperty(exports,"PopoverAnchor",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.d}});Object.defineProperty(exports,"PopoverArrow",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.g}});Object.defineProperty(exports,"PopoverClose",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.e}});Object.defineProperty(exports,"PopoverContent",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.f}});Object.defineProperty(exports,"PopoverTrigger",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.c}});Object.defineProperty(exports,"popoverContentVariants",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.a}});Object.defineProperty(exports,"CircularProgress",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.e}});Object.defineProperty(exports,"Progress",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.d}});Object.defineProperty(exports,"progressBarVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.b}});Object.defineProperty(exports,"progressLabelVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.c}});Object.defineProperty(exports,"progressVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.a}});Object.defineProperty(exports,"RadioGroup",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.c}});Object.defineProperty(exports,"RadioGroupItem",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.d}});Object.defineProperty(exports,"RadioItem",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.d}});Object.defineProperty(exports,"radioGroupVariants",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.a}});Object.defineProperty(exports,"radioItemVariants",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.b}});Object.defineProperty(exports,"DropdownMenu",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.a}});Object.defineProperty(exports,"DropdownMenuCheckboxItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.h}});Object.defineProperty(exports,"DropdownMenuContent",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.f}});Object.defineProperty(exports,"DropdownMenuGroup",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.c}});Object.defineProperty(exports,"DropdownMenuItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.g}});Object.defineProperty(exports,"DropdownMenuLabel",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.j}});Object.defineProperty(exports,"DropdownMenuRadioGroup",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.e}});Object.defineProperty(exports,"DropdownMenuRadioItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.i}});Object.defineProperty(exports,"DropdownMenuSeparator",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.k}});Object.defineProperty(exports,"DropdownMenuShortcut",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.l}});Object.defineProperty(exports,"DropdownMenuSub",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.d}});Object.defineProperty(exports,"DropdownMenuSubContent",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.n}});Object.defineProperty(exports,"DropdownMenuSubTrigger",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.m}});Object.defineProperty(exports,"DropdownMenuTrigger",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.b}});Object.defineProperty(exports,"Label",{enumerable:true,get:function(){return chunkXPIBRXTW_cjs.b}});Object.defineProperty(exports,"labelVariants",{enumerable:true,get:function(){return chunkXPIBRXTW_cjs.a}});Object.defineProperty(exports,"ErrorMessage",{enumerable:true,get:function(){return chunkV77N662N_cjs.b}});Object.defineProperty(exports,"errorMessageVariants",{enumerable:true,get:function(){return chunkV77N662N_cjs.a}});Object.defineProperty(exports,"HelperText",{enumerable:true,get:function(){return chunk7YFUAGIW_cjs.b}});Object.defineProperty(exports,"helperTextVariants",{enumerable:true,get:function(){return chunk7YFUAGIW_cjs.a}});Object.defineProperty(exports,"HoverCard",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.a}});Object.defineProperty(exports,"HoverCardContent",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.c}});Object.defineProperty(exports,"HoverCardTrigger",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.b}});Object.defineProperty(exports,"Icon",{enumerable:true,get:function(){return chunkNC27D5Y3_cjs.a}});Object.defineProperty(exports,"iconNames",{enumerable:true,get:function(){return chunkNC27D5Y3_cjs.b}});Object.defineProperty(exports,"InputOTP",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.a}});Object.defineProperty(exports,"InputOTPGroup",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.b}});Object.defineProperty(exports,"InputOTPSeparator",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.d}});Object.defineProperty(exports,"InputOTPSlot",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.c}});Object.defineProperty(exports,"Chart",{enumerable:true,get:function(){return chunkWK6LNC2E_cjs.b}});Object.defineProperty(exports,"chartContainerVariants",{enumerable:true,get:function(){return chunkWK6LNC2E_cjs.a}});Object.defineProperty(exports,"Checkbox",{enumerable:true,get:function(){return chunkNPSIDFOF_cjs.b}});Object.defineProperty(exports,"checkboxVariants",{enumerable:true,get:function(){return chunkNPSIDFOF_cjs.a}});Object.defineProperty(exports,"Collapsible",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.a}});Object.defineProperty(exports,"CollapsibleContent",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.c}});Object.defineProperty(exports,"CollapsibleTrigger",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.b}});Object.defineProperty(exports,"Command",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.a}});Object.defineProperty(exports,"CommandDialog",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.b}});Object.defineProperty(exports,"CommandEmpty",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.e}});Object.defineProperty(exports,"CommandGroup",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.f}});Object.defineProperty(exports,"CommandInput",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.c}});Object.defineProperty(exports,"CommandItem",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.h}});Object.defineProperty(exports,"CommandList",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.d}});Object.defineProperty(exports,"CommandLoading",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.j}});Object.defineProperty(exports,"CommandSeparator",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.g}});Object.defineProperty(exports,"CommandShortcut",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.i}});Object.defineProperty(exports,"ContextMenu",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.a}});Object.defineProperty(exports,"ContextMenuCheckboxItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.h}});Object.defineProperty(exports,"ContextMenuContent",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.f}});Object.defineProperty(exports,"ContextMenuGroup",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.c}});Object.defineProperty(exports,"ContextMenuItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.g}});Object.defineProperty(exports,"ContextMenuLabel",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.j}});Object.defineProperty(exports,"ContextMenuRadioGroup",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.e}});Object.defineProperty(exports,"ContextMenuRadioItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.i}});Object.defineProperty(exports,"ContextMenuSeparator",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.k}});Object.defineProperty(exports,"ContextMenuShortcut",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.l}});Object.defineProperty(exports,"ContextMenuSub",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.d}});Object.defineProperty(exports,"ContextMenuSubContent",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.n}});Object.defineProperty(exports,"ContextMenuSubTrigger",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.m}});Object.defineProperty(exports,"ContextMenuTrigger",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.b}});Object.defineProperty(exports,"DataTable",{enumerable:true,get:function(){return chunkKASVYULP_cjs.a}});Object.defineProperty(exports,"Table",{enumerable:true,get:function(){return chunkUC577SR4_cjs.d}});Object.defineProperty(exports,"TableBody",{enumerable:true,get:function(){return chunkUC577SR4_cjs.f}});Object.defineProperty(exports,"TableCell",{enumerable:true,get:function(){return chunkUC577SR4_cjs.h}});Object.defineProperty(exports,"TableHead",{enumerable:true,get:function(){return chunkUC577SR4_cjs.i}});Object.defineProperty(exports,"TableHeader",{enumerable:true,get:function(){return chunkUC577SR4_cjs.e}});Object.defineProperty(exports,"TableRow",{enumerable:true,get:function(){return chunkUC577SR4_cjs.g}});Object.defineProperty(exports,"tableCellVariants",{enumerable:true,get:function(){return chunkUC577SR4_cjs.c}});Object.defineProperty(exports,"tableHeaderVariants",{enumerable:true,get:function(){return chunkUC577SR4_cjs.b}});Object.defineProperty(exports,"tableVariants",{enumerable:true,get:function(){return chunkUC577SR4_cjs.a}});Object.defineProperty(exports,"Input",{enumerable:true,get:function(){return chunkFUENXWR7_cjs.b}});Object.defineProperty(exports,"Dialog",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.c}});Object.defineProperty(exports,"DialogContent",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.e}});Object.defineProperty(exports,"DialogDescription",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.h}});Object.defineProperty(exports,"DialogHeader",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.f}});Object.defineProperty(exports,"DialogTitle",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.g}});Object.defineProperty(exports,"DialogTrigger",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.d}});Object.defineProperty(exports,"Drawer",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.a}});Object.defineProperty(exports,"DrawerClose",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.d}});Object.defineProperty(exports,"DrawerContent",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.g}});Object.defineProperty(exports,"DrawerDescription",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.k}});Object.defineProperty(exports,"DrawerFooter",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.i}});Object.defineProperty(exports,"DrawerHandle",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.e}});Object.defineProperty(exports,"DrawerHeader",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.h}});Object.defineProperty(exports,"DrawerNested",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.l}});Object.defineProperty(exports,"DrawerOverlay",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.f}});Object.defineProperty(exports,"DrawerPortal",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.c}});Object.defineProperty(exports,"DrawerTitle",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.j}});Object.defineProperty(exports,"DrawerTrigger",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.b}});Object.defineProperty(exports,"Badge",{enumerable:true,get:function(){return chunkEFCNLYYW_cjs.b}});Object.defineProperty(exports,"badgeVariants",{enumerable:true,get:function(){return chunkEFCNLYYW_cjs.a}});Object.defineProperty(exports,"Breadcrumb",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.d}});Object.defineProperty(exports,"BreadcrumbEllipsis",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.j}});Object.defineProperty(exports,"BreadcrumbItem",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.f}});Object.defineProperty(exports,"BreadcrumbLink",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.g}});Object.defineProperty(exports,"BreadcrumbList",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.e}});Object.defineProperty(exports,"BreadcrumbPage",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.h}});Object.defineProperty(exports,"BreadcrumbSeparator",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.i}});Object.defineProperty(exports,"breadcrumbItemVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.b}});Object.defineProperty(exports,"breadcrumbSeparatorVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.c}});Object.defineProperty(exports,"breadcrumbVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.a}});Object.defineProperty(exports,"Calendar",{enumerable:true,get:function(){return chunkJCETHQ55_cjs.c}});Object.defineProperty(exports,"calendarDayVariants",{enumerable:true,get:function(){return chunkJCETHQ55_cjs.b}});Object.defineProperty(exports,"calendarVariants",{enumerable:true,get:function(){return chunkJCETHQ55_cjs.a}});Object.defineProperty(exports,"Card",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.g}});Object.defineProperty(exports,"CardContent",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.e}});Object.defineProperty(exports,"CardDescription",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.d}});Object.defineProperty(exports,"CardFooter",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.f}});Object.defineProperty(exports,"CardHeader",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.b}});Object.defineProperty(exports,"CardTitle",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.c}});Object.defineProperty(exports,"Carousel",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.b}});Object.defineProperty(exports,"CarouselContent",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.c}});Object.defineProperty(exports,"CarouselItem",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.d}});Object.defineProperty(exports,"CarouselNext",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.f}});Object.defineProperty(exports,"CarouselPrevious",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.e}});Object.defineProperty(exports,"useCarousel",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.a}});Object.defineProperty(exports,"ChartArea",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.l}});Object.defineProperty(exports,"ChartBar",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.j}});Object.defineProperty(exports,"ChartContainer",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.d}});Object.defineProperty(exports,"ChartGrid",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.e}});Object.defineProperty(exports,"ChartLegend",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.i}});Object.defineProperty(exports,"ChartLine",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.k}});Object.defineProperty(exports,"ChartReferenceLine",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.m}});Object.defineProperty(exports,"ChartTooltip",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.h}});Object.defineProperty(exports,"ChartXAxis",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.f}});Object.defineProperty(exports,"ChartYAxis",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.g}});Object.defineProperty(exports,"buildColorMap",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.b}});Object.defineProperty(exports,"chartPalette",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.a}});Object.defineProperty(exports,"resolveSeriesColor",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.c}});Object.defineProperty(exports,"LazyChart",{enumerable:true,get:function(){return chunkBZ5ZCZJX_cjs.a}});Object.defineProperty(exports,"Skeleton",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.b}});Object.defineProperty(exports,"SkeletonAvatar",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.d}});Object.defineProperty(exports,"SkeletonButton",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.e}});Object.defineProperty(exports,"SkeletonCard",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.f}});Object.defineProperty(exports,"SkeletonList",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.h}});Object.defineProperty(exports,"SkeletonTable",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.g}});Object.defineProperty(exports,"SkeletonText",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.c}});Object.defineProperty(exports,"skeletonVariants",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.a}});Object.defineProperty(exports,"LazyComponent",{enumerable:true,get:function(){return chunk55N2IT62_cjs.a}});Object.defineProperty(exports,"LazyInView",{enumerable:true,get:function(){return chunk55N2IT62_cjs.d}});Object.defineProperty(exports,"useLazyLoading",{enumerable:true,get:function(){return chunk55N2IT62_cjs.c}});Object.defineProperty(exports,"withLazyLoading",{enumerable:true,get:function(){return chunk55N2IT62_cjs.b}});Object.defineProperty(exports,"ErrorBoundary",{enumerable:true,get:function(){return chunk4FSJEW7W_cjs.a}});Object.defineProperty(exports,"useErrorHandler",{enumerable:true,get:function(){return chunk4FSJEW7W_cjs.b}});Object.defineProperty(exports,"performanceUtils",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.d}});Object.defineProperty(exports,"useMemoryMonitor",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.c}});Object.defineProperty(exports,"usePerformanceMonitor",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.a}});Object.defineProperty(exports,"withPerformanceMonitoring",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.b}});Object.defineProperty(exports,"Accordion",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.f}});Object.defineProperty(exports,"AccordionContent",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.i}});Object.defineProperty(exports,"AccordionItem",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.g}});Object.defineProperty(exports,"AccordionTrigger",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.h}});Object.defineProperty(exports,"accordionChevronVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.e}});Object.defineProperty(exports,"accordionContentVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.d}});Object.defineProperty(exports,"accordionItemVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.b}});Object.defineProperty(exports,"accordionTriggerVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.c}});Object.defineProperty(exports,"accordionVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.a}});Object.defineProperty(exports,"AlertDialog",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.a}});Object.defineProperty(exports,"AlertDialogAction",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.j}});Object.defineProperty(exports,"AlertDialogCancel",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.k}});Object.defineProperty(exports,"AlertDialogContent",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.e}});Object.defineProperty(exports,"AlertDialogDescription",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.i}});Object.defineProperty(exports,"AlertDialogFooter",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.g}});Object.defineProperty(exports,"AlertDialogHeader",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.f}});Object.defineProperty(exports,"AlertDialogOverlay",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.d}});Object.defineProperty(exports,"AlertDialogPortal",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.c}});Object.defineProperty(exports,"AlertDialogTitle",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.h}});Object.defineProperty(exports,"AlertDialogTrigger",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.b}});Object.defineProperty(exports,"Button",{enumerable:true,get:function(){return chunk5PVFLXPO_cjs.b}});Object.defineProperty(exports,"buttonVariants",{enumerable:true,get:function(){return chunk5PVFLXPO_cjs.a}});Object.defineProperty(exports,"Alert",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.g}});Object.defineProperty(exports,"AlertDescription",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.f}});Object.defineProperty(exports,"AlertTitle",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.e}});Object.defineProperty(exports,"alertCloseVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.d}});Object.defineProperty(exports,"alertDescriptionVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.c}});Object.defineProperty(exports,"alertTitleVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.b}});Object.defineProperty(exports,"alertVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.a}});Object.defineProperty(exports,"AspectRatio",{enumerable:true,get:function(){return chunkR4L5BZYI_cjs.a}});Object.defineProperty(exports,"Avatar",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.d}});Object.defineProperty(exports,"AvatarFallback",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.c}});Object.defineProperty(exports,"AvatarImage",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.b}});Object.defineProperty(exports,"avatarVariants",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.a}});Object.defineProperty(exports,"cn",{enumerable:true,get:function(){return chunkITRGJNWL_cjs.a}});exports.applyTheme=ra;exports.getColorScheme=ea;exports.getCurrentTheme=ta;exports.initializeTheme=fa;exports.onSystemColorSchemeChange=ga;exports.prefersDarkMode=aa;exports.setDarkMode=na;exports.themeInfo=Ia;exports.themes=ua;exports.toggleDarkMode=pa;//# sourceMappingURL=index.cjs.map
|
|
2
|
+
'use strict';var chunk7PPAI3MM_cjs=require('./chunk-7PPAI3MM.cjs'),chunk2DNQXAMB_cjs=require('./chunk-2DNQXAMB.cjs'),chunk3V3OIZWQ_cjs=require('./chunk-3V3OIZWQ.cjs'),chunkOEN63W3G_cjs=require('./chunk-OEN63W3G.cjs'),chunkJUOCEYUF_cjs=require('./chunk-JUOCEYUF.cjs'),chunkEVRQYWZ3_cjs=require('./chunk-EVRQYWZ3.cjs'),chunkHWZTMVQV_cjs=require('./chunk-HWZTMVQV.cjs'),chunkV45EOCAD_cjs=require('./chunk-V45EOCAD.cjs'),chunkJTHW25XF_cjs=require('./chunk-JTHW25XF.cjs'),chunkSZ34F6OZ_cjs=require('./chunk-SZ34F6OZ.cjs'),chunkJ4VRJVTO_cjs=require('./chunk-J4VRJVTO.cjs'),chunk27UORO2F_cjs=require('./chunk-27UORO2F.cjs'),chunkCGBIJDZX_cjs=require('./chunk-CGBIJDZX.cjs'),chunkK2JCGDU7_cjs=require('./chunk-K2JCGDU7.cjs'),chunkERGAJKFH_cjs=require('./chunk-ERGAJKFH.cjs'),chunkZ7WEJ5IQ_cjs=require('./chunk-Z7WEJ5IQ.cjs'),chunkC7HZAQBX_cjs=require('./chunk-C7HZAQBX.cjs'),chunkMQUHAWJ2_cjs=require('./chunk-MQUHAWJ2.cjs'),chunkQEHKWS7N_cjs=require('./chunk-QEHKWS7N.cjs'),chunkFMIAI6US_cjs=require('./chunk-FMIAI6US.cjs'),chunk45W3AH36_cjs=require('./chunk-45W3AH36.cjs'),chunkBYV75TDY_cjs=require('./chunk-BYV75TDY.cjs'),chunkE53C3RDD_cjs=require('./chunk-E53C3RDD.cjs'),chunkG35BR7SK_cjs=require('./chunk-G35BR7SK.cjs'),chunkYLAUFUIS_cjs=require('./chunk-YLAUFUIS.cjs'),chunk4NLMGH2S_cjs=require('./chunk-4NLMGH2S.cjs'),chunkXPIBRXTW_cjs=require('./chunk-XPIBRXTW.cjs'),chunkV77N662N_cjs=require('./chunk-V77N662N.cjs'),chunk7YFUAGIW_cjs=require('./chunk-7YFUAGIW.cjs'),chunkE3A4SP3X_cjs=require('./chunk-E3A4SP3X.cjs'),chunkNC27D5Y3_cjs=require('./chunk-NC27D5Y3.cjs'),chunkBJPJB6IA_cjs=require('./chunk-BJPJB6IA.cjs'),chunkWK6LNC2E_cjs=require('./chunk-WK6LNC2E.cjs'),chunkNPSIDFOF_cjs=require('./chunk-NPSIDFOF.cjs'),chunkEEGXD4HC_cjs=require('./chunk-EEGXD4HC.cjs'),chunkDB6MHAU3_cjs=require('./chunk-DB6MHAU3.cjs'),chunkKCS3UL74_cjs=require('./chunk-KCS3UL74.cjs');require('./chunk-MIYL7YKU.cjs');var chunkKASVYULP_cjs=require('./chunk-KASVYULP.cjs'),chunkUC577SR4_cjs=require('./chunk-UC577SR4.cjs'),chunkFUENXWR7_cjs=require('./chunk-FUENXWR7.cjs'),chunkRKSTEJKG_cjs=require('./chunk-RKSTEJKG.cjs'),chunk75OZKMEA_cjs=require('./chunk-75OZKMEA.cjs'),chunkEFCNLYYW_cjs=require('./chunk-EFCNLYYW.cjs'),chunk35RWQSO2_cjs=require('./chunk-35RWQSO2.cjs'),chunk4UHGGKCS_cjs=require('./chunk-4UHGGKCS.cjs'),chunkPMNNV4ML_cjs=require('./chunk-PMNNV4ML.cjs'),chunkBDRP7ALG_cjs=require('./chunk-BDRP7ALG.cjs'),chunk3HKYX26O_cjs=require('./chunk-3HKYX26O.cjs'),chunkBZ5ZCZJX_cjs=require('./chunk-BZ5ZCZJX.cjs'),chunk3QVQ2TNE_cjs=require('./chunk-3QVQ2TNE.cjs'),chunk55N2IT62_cjs=require('./chunk-55N2IT62.cjs'),chunk4FSJEW7W_cjs=require('./chunk-4FSJEW7W.cjs'),chunk7WEIVLG3_cjs=require('./chunk-7WEIVLG3.cjs'),chunkMLSE5XSB_cjs=require('./chunk-MLSE5XSB.cjs'),chunkPZLBMQGI_cjs=require('./chunk-PZLBMQGI.cjs'),chunk5PVFLXPO_cjs=require('./chunk-5PVFLXPO.cjs'),chunkLXQT7FH6_cjs=require('./chunk-LXQT7FH6.cjs'),chunkR4L5BZYI_cjs=require('./chunk-R4L5BZYI.cjs'),chunkIOX4WPJL_cjs=require('./chunk-IOX4WPJL.cjs');require('./chunk-7SPPGTBT.cjs');var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs');var ua={nostromo:"nostromo",mother:"mother","lv-426":"lv-426",sulaco:"sulaco"};function ra(o){typeof document<"u"&&document.documentElement.setAttribute("data-theme",o);}function ta(){return typeof document>"u"?null:document.documentElement.getAttribute("data-theme")}function pa(){if(typeof document>"u")return;let r=document.documentElement.getAttribute("data-color-scheme")==="dark"?"light":"dark";document.documentElement.setAttribute("data-color-scheme",r);}function na(o){typeof document>"u"||document.documentElement.setAttribute("data-color-scheme",o?"dark":"light");}function ea(){return typeof document>"u"?null:document.documentElement.getAttribute("data-color-scheme")}function aa(){return typeof window>"u"?false:window.matchMedia("(prefers-color-scheme: dark)").matches}function ga(o){if(typeof window>"u")return ()=>{};let r=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>{o(e.matches);};return r.addEventListener("change",t),()=>{r.removeEventListener("change",t);}}function fa(o="nostromo"){typeof document>"u"||(ta()||ra(o),ea()||na(aa()));}var Ia={nostromo:{name:"Nostromo",description:"Classic space industrial theme inspired by the USCSS Nostromo",colors:{primary:"Purple/Blue",secondary:"Dark Gray",accent:"Green"}},mother:{name:"Mother",description:"Cold, clinical AI aesthetic inspired by the ship's computer",colors:{primary:"Cold Blue/Cyan",secondary:"Clinical White",accent:"Green"}},"lv-426":{name:"LV-426",description:"Warm, rusty atmosphere inspired by the planet LV-426",colors:{primary:"Warm Orange/Rust",secondary:"Earth Tones",accent:"Green"}},sulaco:{name:"Sulaco",description:"Modern, military-inspired aesthetic from the USS Sulaco",colors:{primary:"Military Blue/Gray",secondary:"Steel Tones",accent:"Green"}}};Object.defineProperty(exports,"Gallery",{enumerable:true,get:function(){return chunk7PPAI3MM_cjs.a}});Object.defineProperty(exports,"Hero",{enumerable:true,get:function(){return chunk2DNQXAMB_cjs.a}});Object.defineProperty(exports,"LogoWall",{enumerable:true,get:function(){return chunk3V3OIZWQ_cjs.a}});Object.defineProperty(exports,"Pricing",{enumerable:true,get:function(){return chunkOEN63W3G_cjs.a}});Object.defineProperty(exports,"Testimonials",{enumerable:true,get:function(){return chunkJUOCEYUF_cjs.a}});Object.defineProperty(exports,"Switch",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.c}});Object.defineProperty(exports,"switchThumbVariants",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.b}});Object.defineProperty(exports,"switchVariants",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.a}});Object.defineProperty(exports,"Tabs",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.d}});Object.defineProperty(exports,"TabsContent",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.g}});Object.defineProperty(exports,"TabsList",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.e}});Object.defineProperty(exports,"TabsTrigger",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.f}});Object.defineProperty(exports,"tabsContentVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.c}});Object.defineProperty(exports,"tabsListVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.a}});Object.defineProperty(exports,"tabsTriggerVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.b}});Object.defineProperty(exports,"Textarea",{enumerable:true,get:function(){return chunkV45EOCAD_cjs.b}});Object.defineProperty(exports,"textareaVariants",{enumerable:true,get:function(){return chunkV45EOCAD_cjs.a}});Object.defineProperty(exports,"Toast",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.e}});Object.defineProperty(exports,"ToastProvider",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.d}});Object.defineProperty(exports,"toastIconVariants",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.b}});Object.defineProperty(exports,"toastVariants",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.a}});Object.defineProperty(exports,"useToast",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.c}});Object.defineProperty(exports,"useToastNotification",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.f}});Object.defineProperty(exports,"Toggle",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.b}});Object.defineProperty(exports,"ToggleGroup",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.c}});Object.defineProperty(exports,"ToggleGroupItem",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.d}});Object.defineProperty(exports,"toggleVariants",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.a}});Object.defineProperty(exports,"Features",{enumerable:true,get:function(){return chunkJ4VRJVTO_cjs.a}});Object.defineProperty(exports,"ResizableHandle",{enumerable:true,get:function(){return chunk27UORO2F_cjs.c}});Object.defineProperty(exports,"ResizablePanel",{enumerable:true,get:function(){return chunk27UORO2F_cjs.b}});Object.defineProperty(exports,"ResizablePanelGroup",{enumerable:true,get:function(){return chunk27UORO2F_cjs.a}});Object.defineProperty(exports,"ScrollArea",{enumerable:true,get:function(){return chunkCGBIJDZX_cjs.a}});Object.defineProperty(exports,"ScrollBar",{enumerable:true,get:function(){return chunkCGBIJDZX_cjs.b}});Object.defineProperty(exports,"Select",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.d}});Object.defineProperty(exports,"SelectContent",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.h}});Object.defineProperty(exports,"SelectGroup",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.e}});Object.defineProperty(exports,"SelectItem",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.j}});Object.defineProperty(exports,"SelectLabel",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.i}});Object.defineProperty(exports,"SelectSeparator",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.k}});Object.defineProperty(exports,"SelectTrigger",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.g}});Object.defineProperty(exports,"SelectValue",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.f}});Object.defineProperty(exports,"selectContentVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.b}});Object.defineProperty(exports,"selectItemVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.c}});Object.defineProperty(exports,"selectTriggerVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.a}});Object.defineProperty(exports,"MOBILE_BREAKPOINT",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.a}});Object.defineProperty(exports,"Sidebar",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.e}});Object.defineProperty(exports,"SidebarContent",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.m}});Object.defineProperty(exports,"SidebarFooter",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.k}});Object.defineProperty(exports,"SidebarGroup",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.n}});Object.defineProperty(exports,"SidebarGroupAction",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.p}});Object.defineProperty(exports,"SidebarGroupContent",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.q}});Object.defineProperty(exports,"SidebarGroupLabel",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.o}});Object.defineProperty(exports,"SidebarHeader",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.j}});Object.defineProperty(exports,"SidebarInput",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.i}});Object.defineProperty(exports,"SidebarInset",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.h}});Object.defineProperty(exports,"SidebarMenu",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.r}});Object.defineProperty(exports,"SidebarMenuAction",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.v}});Object.defineProperty(exports,"SidebarMenuBadge",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.w}});Object.defineProperty(exports,"SidebarMenuButton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.u}});Object.defineProperty(exports,"SidebarMenuItem",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.s}});Object.defineProperty(exports,"SidebarMenuSkeleton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.x}});Object.defineProperty(exports,"SidebarMenuSub",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.y}});Object.defineProperty(exports,"SidebarMenuSubButton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.A}});Object.defineProperty(exports,"SidebarMenuSubItem",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.z}});Object.defineProperty(exports,"SidebarProvider",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.d}});Object.defineProperty(exports,"SidebarRail",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.g}});Object.defineProperty(exports,"SidebarSeparator",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.l}});Object.defineProperty(exports,"SidebarTrigger",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.f}});Object.defineProperty(exports,"sidebarMenuButtonVariants",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.t}});Object.defineProperty(exports,"useIsMobile",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.b}});Object.defineProperty(exports,"useSidebar",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.c}});Object.defineProperty(exports,"Tooltip",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.f}});Object.defineProperty(exports,"TooltipContent",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.d}});Object.defineProperty(exports,"TooltipProvider",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.e}});Object.defineProperty(exports,"TooltipTrigger",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.c}});Object.defineProperty(exports,"arrowVariants",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.b}});Object.defineProperty(exports,"tooltipVariants",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.a}});Object.defineProperty(exports,"Separator",{enumerable:true,get:function(){return chunkC7HZAQBX_cjs.b}});Object.defineProperty(exports,"separatorVariants",{enumerable:true,get:function(){return chunkC7HZAQBX_cjs.a}});Object.defineProperty(exports,"Sheet",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.b}});Object.defineProperty(exports,"SheetClose",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.d}});Object.defineProperty(exports,"SheetContent",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.g}});Object.defineProperty(exports,"SheetDescription",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.k}});Object.defineProperty(exports,"SheetFooter",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.i}});Object.defineProperty(exports,"SheetHeader",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.h}});Object.defineProperty(exports,"SheetOverlay",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.f}});Object.defineProperty(exports,"SheetPortal",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.e}});Object.defineProperty(exports,"SheetTitle",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.j}});Object.defineProperty(exports,"SheetTrigger",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.c}});Object.defineProperty(exports,"sheetVariants",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.a}});Object.defineProperty(exports,"Slider",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.c}});Object.defineProperty(exports,"sliderThumbVariants",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.b}});Object.defineProperty(exports,"sliderTrackVariants",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.a}});Object.defineProperty(exports,"Menubar",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.a}});Object.defineProperty(exports,"MenubarCheckboxItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.e}});Object.defineProperty(exports,"MenubarContent",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.c}});Object.defineProperty(exports,"MenubarGroup",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.m}});Object.defineProperty(exports,"MenubarItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.d}});Object.defineProperty(exports,"MenubarLabel",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.g}});Object.defineProperty(exports,"MenubarMenu",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.l}});Object.defineProperty(exports,"MenubarRadioGroup",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.o}});Object.defineProperty(exports,"MenubarRadioItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.f}});Object.defineProperty(exports,"MenubarSeparator",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.h}});Object.defineProperty(exports,"MenubarShortcut",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.i}});Object.defineProperty(exports,"MenubarSub",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.n}});Object.defineProperty(exports,"MenubarSubContent",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.k}});Object.defineProperty(exports,"MenubarSubTrigger",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.j}});Object.defineProperty(exports,"MenubarTrigger",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.b}});Object.defineProperty(exports,"NavigationMenu",{enumerable:true,get:function(){return chunk45W3AH36_cjs.a}});Object.defineProperty(exports,"NavigationMenuContent",{enumerable:true,get:function(){return chunk45W3AH36_cjs.f}});Object.defineProperty(exports,"NavigationMenuIndicator",{enumerable:true,get:function(){return chunk45W3AH36_cjs.i}});Object.defineProperty(exports,"NavigationMenuItem",{enumerable:true,get:function(){return chunk45W3AH36_cjs.c}});Object.defineProperty(exports,"NavigationMenuLink",{enumerable:true,get:function(){return chunk45W3AH36_cjs.g}});Object.defineProperty(exports,"NavigationMenuList",{enumerable:true,get:function(){return chunk45W3AH36_cjs.b}});Object.defineProperty(exports,"NavigationMenuTrigger",{enumerable:true,get:function(){return chunk45W3AH36_cjs.e}});Object.defineProperty(exports,"NavigationMenuViewport",{enumerable:true,get:function(){return chunk45W3AH36_cjs.h}});Object.defineProperty(exports,"navigationMenuTriggerStyle",{enumerable:true,get:function(){return chunk45W3AH36_cjs.d}});Object.defineProperty(exports,"Pagination",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.c}});Object.defineProperty(exports,"PaginationContent",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.d}});Object.defineProperty(exports,"PaginationEllipsis",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.i}});Object.defineProperty(exports,"PaginationItem",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.e}});Object.defineProperty(exports,"PaginationLink",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.f}});Object.defineProperty(exports,"PaginationNext",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.h}});Object.defineProperty(exports,"PaginationPrevious",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.g}});Object.defineProperty(exports,"paginationItemVariants",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.b}});Object.defineProperty(exports,"paginationVariants",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.a}});Object.defineProperty(exports,"Popover",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.b}});Object.defineProperty(exports,"PopoverAnchor",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.d}});Object.defineProperty(exports,"PopoverArrow",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.g}});Object.defineProperty(exports,"PopoverClose",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.e}});Object.defineProperty(exports,"PopoverContent",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.f}});Object.defineProperty(exports,"PopoverTrigger",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.c}});Object.defineProperty(exports,"popoverContentVariants",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.a}});Object.defineProperty(exports,"CircularProgress",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.e}});Object.defineProperty(exports,"Progress",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.d}});Object.defineProperty(exports,"progressBarVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.b}});Object.defineProperty(exports,"progressLabelVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.c}});Object.defineProperty(exports,"progressVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.a}});Object.defineProperty(exports,"RadioGroup",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.c}});Object.defineProperty(exports,"RadioGroupItem",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.d}});Object.defineProperty(exports,"RadioItem",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.d}});Object.defineProperty(exports,"radioGroupVariants",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.a}});Object.defineProperty(exports,"radioItemVariants",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.b}});Object.defineProperty(exports,"DropdownMenu",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.a}});Object.defineProperty(exports,"DropdownMenuCheckboxItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.h}});Object.defineProperty(exports,"DropdownMenuContent",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.f}});Object.defineProperty(exports,"DropdownMenuGroup",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.c}});Object.defineProperty(exports,"DropdownMenuItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.g}});Object.defineProperty(exports,"DropdownMenuLabel",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.j}});Object.defineProperty(exports,"DropdownMenuRadioGroup",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.e}});Object.defineProperty(exports,"DropdownMenuRadioItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.i}});Object.defineProperty(exports,"DropdownMenuSeparator",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.k}});Object.defineProperty(exports,"DropdownMenuShortcut",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.l}});Object.defineProperty(exports,"DropdownMenuSub",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.d}});Object.defineProperty(exports,"DropdownMenuSubContent",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.n}});Object.defineProperty(exports,"DropdownMenuSubTrigger",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.m}});Object.defineProperty(exports,"DropdownMenuTrigger",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.b}});Object.defineProperty(exports,"Label",{enumerable:true,get:function(){return chunkXPIBRXTW_cjs.b}});Object.defineProperty(exports,"labelVariants",{enumerable:true,get:function(){return chunkXPIBRXTW_cjs.a}});Object.defineProperty(exports,"ErrorMessage",{enumerable:true,get:function(){return chunkV77N662N_cjs.b}});Object.defineProperty(exports,"errorMessageVariants",{enumerable:true,get:function(){return chunkV77N662N_cjs.a}});Object.defineProperty(exports,"HelperText",{enumerable:true,get:function(){return chunk7YFUAGIW_cjs.b}});Object.defineProperty(exports,"helperTextVariants",{enumerable:true,get:function(){return chunk7YFUAGIW_cjs.a}});Object.defineProperty(exports,"HoverCard",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.a}});Object.defineProperty(exports,"HoverCardContent",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.c}});Object.defineProperty(exports,"HoverCardTrigger",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.b}});Object.defineProperty(exports,"Icon",{enumerable:true,get:function(){return chunkNC27D5Y3_cjs.a}});Object.defineProperty(exports,"iconNames",{enumerable:true,get:function(){return chunkNC27D5Y3_cjs.b}});Object.defineProperty(exports,"InputOTP",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.a}});Object.defineProperty(exports,"InputOTPGroup",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.b}});Object.defineProperty(exports,"InputOTPSeparator",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.d}});Object.defineProperty(exports,"InputOTPSlot",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.c}});Object.defineProperty(exports,"Chart",{enumerable:true,get:function(){return chunkWK6LNC2E_cjs.b}});Object.defineProperty(exports,"chartContainerVariants",{enumerable:true,get:function(){return chunkWK6LNC2E_cjs.a}});Object.defineProperty(exports,"Checkbox",{enumerable:true,get:function(){return chunkNPSIDFOF_cjs.b}});Object.defineProperty(exports,"checkboxVariants",{enumerable:true,get:function(){return chunkNPSIDFOF_cjs.a}});Object.defineProperty(exports,"Collapsible",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.a}});Object.defineProperty(exports,"CollapsibleContent",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.c}});Object.defineProperty(exports,"CollapsibleTrigger",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.b}});Object.defineProperty(exports,"Command",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.a}});Object.defineProperty(exports,"CommandDialog",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.b}});Object.defineProperty(exports,"CommandEmpty",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.e}});Object.defineProperty(exports,"CommandGroup",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.f}});Object.defineProperty(exports,"CommandInput",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.c}});Object.defineProperty(exports,"CommandItem",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.h}});Object.defineProperty(exports,"CommandList",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.d}});Object.defineProperty(exports,"CommandLoading",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.j}});Object.defineProperty(exports,"CommandSeparator",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.g}});Object.defineProperty(exports,"CommandShortcut",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.i}});Object.defineProperty(exports,"ContextMenu",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.a}});Object.defineProperty(exports,"ContextMenuCheckboxItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.h}});Object.defineProperty(exports,"ContextMenuContent",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.f}});Object.defineProperty(exports,"ContextMenuGroup",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.c}});Object.defineProperty(exports,"ContextMenuItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.g}});Object.defineProperty(exports,"ContextMenuLabel",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.j}});Object.defineProperty(exports,"ContextMenuRadioGroup",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.e}});Object.defineProperty(exports,"ContextMenuRadioItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.i}});Object.defineProperty(exports,"ContextMenuSeparator",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.k}});Object.defineProperty(exports,"ContextMenuShortcut",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.l}});Object.defineProperty(exports,"ContextMenuSub",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.d}});Object.defineProperty(exports,"ContextMenuSubContent",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.n}});Object.defineProperty(exports,"ContextMenuSubTrigger",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.m}});Object.defineProperty(exports,"ContextMenuTrigger",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.b}});Object.defineProperty(exports,"DataTable",{enumerable:true,get:function(){return chunkKASVYULP_cjs.a}});Object.defineProperty(exports,"Table",{enumerable:true,get:function(){return chunkUC577SR4_cjs.d}});Object.defineProperty(exports,"TableBody",{enumerable:true,get:function(){return chunkUC577SR4_cjs.f}});Object.defineProperty(exports,"TableCell",{enumerable:true,get:function(){return chunkUC577SR4_cjs.h}});Object.defineProperty(exports,"TableHead",{enumerable:true,get:function(){return chunkUC577SR4_cjs.i}});Object.defineProperty(exports,"TableHeader",{enumerable:true,get:function(){return chunkUC577SR4_cjs.e}});Object.defineProperty(exports,"TableRow",{enumerable:true,get:function(){return chunkUC577SR4_cjs.g}});Object.defineProperty(exports,"tableCellVariants",{enumerable:true,get:function(){return chunkUC577SR4_cjs.c}});Object.defineProperty(exports,"tableHeaderVariants",{enumerable:true,get:function(){return chunkUC577SR4_cjs.b}});Object.defineProperty(exports,"tableVariants",{enumerable:true,get:function(){return chunkUC577SR4_cjs.a}});Object.defineProperty(exports,"Input",{enumerable:true,get:function(){return chunkFUENXWR7_cjs.b}});Object.defineProperty(exports,"Dialog",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.c}});Object.defineProperty(exports,"DialogContent",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.e}});Object.defineProperty(exports,"DialogDescription",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.h}});Object.defineProperty(exports,"DialogHeader",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.f}});Object.defineProperty(exports,"DialogTitle",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.g}});Object.defineProperty(exports,"DialogTrigger",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.d}});Object.defineProperty(exports,"Drawer",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.a}});Object.defineProperty(exports,"DrawerClose",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.d}});Object.defineProperty(exports,"DrawerContent",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.g}});Object.defineProperty(exports,"DrawerDescription",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.k}});Object.defineProperty(exports,"DrawerFooter",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.i}});Object.defineProperty(exports,"DrawerHandle",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.e}});Object.defineProperty(exports,"DrawerHeader",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.h}});Object.defineProperty(exports,"DrawerNested",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.l}});Object.defineProperty(exports,"DrawerOverlay",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.f}});Object.defineProperty(exports,"DrawerPortal",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.c}});Object.defineProperty(exports,"DrawerTitle",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.j}});Object.defineProperty(exports,"DrawerTrigger",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.b}});Object.defineProperty(exports,"Badge",{enumerable:true,get:function(){return chunkEFCNLYYW_cjs.b}});Object.defineProperty(exports,"badgeVariants",{enumerable:true,get:function(){return chunkEFCNLYYW_cjs.a}});Object.defineProperty(exports,"Breadcrumb",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.d}});Object.defineProperty(exports,"BreadcrumbEllipsis",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.j}});Object.defineProperty(exports,"BreadcrumbItem",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.f}});Object.defineProperty(exports,"BreadcrumbLink",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.g}});Object.defineProperty(exports,"BreadcrumbList",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.e}});Object.defineProperty(exports,"BreadcrumbPage",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.h}});Object.defineProperty(exports,"BreadcrumbSeparator",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.i}});Object.defineProperty(exports,"breadcrumbItemVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.b}});Object.defineProperty(exports,"breadcrumbSeparatorVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.c}});Object.defineProperty(exports,"breadcrumbVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.a}});Object.defineProperty(exports,"Calendar",{enumerable:true,get:function(){return chunk4UHGGKCS_cjs.c}});Object.defineProperty(exports,"calendarDayVariants",{enumerable:true,get:function(){return chunk4UHGGKCS_cjs.b}});Object.defineProperty(exports,"calendarVariants",{enumerable:true,get:function(){return chunk4UHGGKCS_cjs.a}});Object.defineProperty(exports,"Card",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.g}});Object.defineProperty(exports,"CardContent",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.e}});Object.defineProperty(exports,"CardDescription",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.d}});Object.defineProperty(exports,"CardFooter",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.f}});Object.defineProperty(exports,"CardHeader",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.b}});Object.defineProperty(exports,"CardTitle",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.c}});Object.defineProperty(exports,"Carousel",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.b}});Object.defineProperty(exports,"CarouselContent",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.c}});Object.defineProperty(exports,"CarouselItem",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.d}});Object.defineProperty(exports,"CarouselNext",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.f}});Object.defineProperty(exports,"CarouselPrevious",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.e}});Object.defineProperty(exports,"useCarousel",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.a}});Object.defineProperty(exports,"ChartArea",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.l}});Object.defineProperty(exports,"ChartBar",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.j}});Object.defineProperty(exports,"ChartContainer",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.d}});Object.defineProperty(exports,"ChartGrid",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.e}});Object.defineProperty(exports,"ChartLegend",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.i}});Object.defineProperty(exports,"ChartLine",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.k}});Object.defineProperty(exports,"ChartReferenceLine",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.m}});Object.defineProperty(exports,"ChartTooltip",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.h}});Object.defineProperty(exports,"ChartXAxis",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.f}});Object.defineProperty(exports,"ChartYAxis",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.g}});Object.defineProperty(exports,"buildColorMap",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.b}});Object.defineProperty(exports,"chartPalette",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.a}});Object.defineProperty(exports,"resolveSeriesColor",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.c}});Object.defineProperty(exports,"LazyChart",{enumerable:true,get:function(){return chunkBZ5ZCZJX_cjs.a}});Object.defineProperty(exports,"Skeleton",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.b}});Object.defineProperty(exports,"SkeletonAvatar",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.d}});Object.defineProperty(exports,"SkeletonButton",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.e}});Object.defineProperty(exports,"SkeletonCard",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.f}});Object.defineProperty(exports,"SkeletonList",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.h}});Object.defineProperty(exports,"SkeletonTable",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.g}});Object.defineProperty(exports,"SkeletonText",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.c}});Object.defineProperty(exports,"skeletonVariants",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.a}});Object.defineProperty(exports,"LazyComponent",{enumerable:true,get:function(){return chunk55N2IT62_cjs.a}});Object.defineProperty(exports,"LazyInView",{enumerable:true,get:function(){return chunk55N2IT62_cjs.d}});Object.defineProperty(exports,"useLazyLoading",{enumerable:true,get:function(){return chunk55N2IT62_cjs.c}});Object.defineProperty(exports,"withLazyLoading",{enumerable:true,get:function(){return chunk55N2IT62_cjs.b}});Object.defineProperty(exports,"ErrorBoundary",{enumerable:true,get:function(){return chunk4FSJEW7W_cjs.a}});Object.defineProperty(exports,"useErrorHandler",{enumerable:true,get:function(){return chunk4FSJEW7W_cjs.b}});Object.defineProperty(exports,"performanceUtils",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.d}});Object.defineProperty(exports,"useMemoryMonitor",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.c}});Object.defineProperty(exports,"usePerformanceMonitor",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.a}});Object.defineProperty(exports,"withPerformanceMonitoring",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.b}});Object.defineProperty(exports,"Accordion",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.f}});Object.defineProperty(exports,"AccordionContent",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.i}});Object.defineProperty(exports,"AccordionItem",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.g}});Object.defineProperty(exports,"AccordionTrigger",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.h}});Object.defineProperty(exports,"accordionChevronVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.e}});Object.defineProperty(exports,"accordionContentVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.d}});Object.defineProperty(exports,"accordionItemVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.b}});Object.defineProperty(exports,"accordionTriggerVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.c}});Object.defineProperty(exports,"accordionVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.a}});Object.defineProperty(exports,"AlertDialog",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.a}});Object.defineProperty(exports,"AlertDialogAction",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.j}});Object.defineProperty(exports,"AlertDialogCancel",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.k}});Object.defineProperty(exports,"AlertDialogContent",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.e}});Object.defineProperty(exports,"AlertDialogDescription",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.i}});Object.defineProperty(exports,"AlertDialogFooter",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.g}});Object.defineProperty(exports,"AlertDialogHeader",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.f}});Object.defineProperty(exports,"AlertDialogOverlay",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.d}});Object.defineProperty(exports,"AlertDialogPortal",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.c}});Object.defineProperty(exports,"AlertDialogTitle",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.h}});Object.defineProperty(exports,"AlertDialogTrigger",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.b}});Object.defineProperty(exports,"Button",{enumerable:true,get:function(){return chunk5PVFLXPO_cjs.b}});Object.defineProperty(exports,"buttonVariants",{enumerable:true,get:function(){return chunk5PVFLXPO_cjs.a}});Object.defineProperty(exports,"Alert",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.g}});Object.defineProperty(exports,"AlertDescription",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.f}});Object.defineProperty(exports,"AlertTitle",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.e}});Object.defineProperty(exports,"alertCloseVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.d}});Object.defineProperty(exports,"alertDescriptionVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.c}});Object.defineProperty(exports,"alertTitleVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.b}});Object.defineProperty(exports,"alertVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.a}});Object.defineProperty(exports,"AspectRatio",{enumerable:true,get:function(){return chunkR4L5BZYI_cjs.a}});Object.defineProperty(exports,"Avatar",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.d}});Object.defineProperty(exports,"AvatarFallback",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.c}});Object.defineProperty(exports,"AvatarImage",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.b}});Object.defineProperty(exports,"avatarVariants",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.a}});Object.defineProperty(exports,"cn",{enumerable:true,get:function(){return chunkITRGJNWL_cjs.a}});exports.applyTheme=ra;exports.getColorScheme=ea;exports.getCurrentTheme=ta;exports.initializeTheme=fa;exports.onSystemColorSchemeChange=ga;exports.prefersDarkMode=aa;exports.setDarkMode=na;exports.themeInfo=Ia;exports.themes=ua;exports.toggleDarkMode=pa;//# sourceMappingURL=index.cjs.map
|
|
3
3
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.d.cts
CHANGED
|
@@ -21,7 +21,7 @@ export { Icon, IconName, IconProps, iconNames } from './components/core/icon.cjs
|
|
|
21
21
|
export { CircularProgress, CircularProgressProps, Progress, ProgressProps, progressBarVariants, progressLabelVariants, progressVariants } from './components/core/progress.cjs';
|
|
22
22
|
export { Table, TableBody, TableBodyProps, TableCell, TableCellProps, TableColumn, TableHead, TableHeader, TableHeaderProps, TableProps, TableRow, TableRowProps, tableCellVariants, tableHeaderVariants, tableVariants } from './components/core/table.cjs';
|
|
23
23
|
export { ColumnFilter, DataTable, DataTableProps, FilterType } from './components/core/data-table.cjs';
|
|
24
|
-
export { Calendar, CalendarMode, CalendarProps, calendarDayVariants, calendarVariants } from './components/core/calendar.cjs';
|
|
24
|
+
export { Calendar, CalendarLabels, CalendarMode, CalendarProps, calendarDayVariants, calendarVariants } from './components/core/calendar.cjs';
|
|
25
25
|
export { Chart, ChartDataPoint, ChartProps, ChartType, chartContainerVariants } from './components/core/charts.cjs';
|
|
26
26
|
export { ChartArea, ChartAreaProps, ChartBar, ChartBarProps, ChartContainer, ChartContainerProps, ChartGrid, ChartGridProps, ChartLegend, ChartLegendProps, ChartLine, ChartLineProps, ChartReferenceLine, ChartReferenceLineProps, ChartTooltip, ChartTooltipProps, ChartXAxis, ChartXAxisProps, ChartYAxis, ChartYAxisProps, buildColorMap, chartPalette, resolveSeriesColor } from './components/core/chart-composable.cjs';
|
|
27
27
|
export { LazyChart, LazyChartProps } from './components/core/charts-lazy.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export { Icon, IconName, IconProps, iconNames } from './components/core/icon.js'
|
|
|
21
21
|
export { CircularProgress, CircularProgressProps, Progress, ProgressProps, progressBarVariants, progressLabelVariants, progressVariants } from './components/core/progress.js';
|
|
22
22
|
export { Table, TableBody, TableBodyProps, TableCell, TableCellProps, TableColumn, TableHead, TableHeader, TableHeaderProps, TableProps, TableRow, TableRowProps, tableCellVariants, tableHeaderVariants, tableVariants } from './components/core/table.js';
|
|
23
23
|
export { ColumnFilter, DataTable, DataTableProps, FilterType } from './components/core/data-table.js';
|
|
24
|
-
export { Calendar, CalendarMode, CalendarProps, calendarDayVariants, calendarVariants } from './components/core/calendar.js';
|
|
24
|
+
export { Calendar, CalendarLabels, CalendarMode, CalendarProps, calendarDayVariants, calendarVariants } from './components/core/calendar.js';
|
|
25
25
|
export { Chart, ChartDataPoint, ChartProps, ChartType, chartContainerVariants } from './components/core/charts.js';
|
|
26
26
|
export { ChartArea, ChartAreaProps, ChartBar, ChartBarProps, ChartContainer, ChartContainerProps, ChartGrid, ChartGridProps, ChartLegend, ChartLegendProps, ChartLine, ChartLineProps, ChartReferenceLine, ChartReferenceLineProps, ChartTooltip, ChartTooltipProps, ChartXAxis, ChartXAxisProps, ChartYAxis, ChartYAxisProps, buildColorMap, chartPalette, resolveSeriesColor } from './components/core/chart-composable.js';
|
|
27
27
|
export { LazyChart, LazyChartProps } from './components/core/charts-lazy.js';
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export{a as Gallery}from'./chunk-2JQROMCM.js';export{a as Hero}from'./chunk-JEHIMQQZ.js';export{a as LogoWall}from'./chunk-RC2THAIA.js';export{a as Pricing}from'./chunk-44HISN45.js';export{a as Testimonials}from'./chunk-LR4VUFOQ.js';export{c as Switch,b as switchThumbVariants,a as switchVariants}from'./chunk-OUWOPYAX.js';export{d as Tabs,g as TabsContent,e as TabsList,f as TabsTrigger,c as tabsContentVariants,a as tabsListVariants,b as tabsTriggerVariants}from'./chunk-ZEJAFIOC.js';export{b as Textarea,a as textareaVariants}from'./chunk-2HYJSYQX.js';export{e as Toast,d as ToastProvider,b as toastIconVariants,a as toastVariants,c as useToast,f as useToastNotification}from'./chunk-CH5LTBAG.js';export{b as Toggle,c as ToggleGroup,d as ToggleGroupItem,a as toggleVariants}from'./chunk-EZGTC7L3.js';export{a as Features}from'./chunk-CEMOHO3Z.js';export{c as ResizableHandle,b as ResizablePanel,a as ResizablePanelGroup}from'./chunk-MINSU2YF.js';export{a as ScrollArea,b as ScrollBar}from'./chunk-GCMMAUW3.js';export{d as Select,h as SelectContent,e as SelectGroup,j as SelectItem,i as SelectLabel,k as SelectSeparator,g as SelectTrigger,f as SelectValue,b as selectContentVariants,c as selectItemVariants,a as selectTriggerVariants}from'./chunk-BZF3ZOAN.js';export{a as MOBILE_BREAKPOINT,e as Sidebar,m as SidebarContent,k as SidebarFooter,n as SidebarGroup,p as SidebarGroupAction,q as SidebarGroupContent,o as SidebarGroupLabel,j as SidebarHeader,i as SidebarInput,h as SidebarInset,r as SidebarMenu,v as SidebarMenuAction,w as SidebarMenuBadge,u as SidebarMenuButton,s as SidebarMenuItem,x as SidebarMenuSkeleton,y as SidebarMenuSub,A as SidebarMenuSubButton,z as SidebarMenuSubItem,d as SidebarProvider,g as SidebarRail,l as SidebarSeparator,f as SidebarTrigger,t as sidebarMenuButtonVariants,b as useIsMobile,c as useSidebar}from'./chunk-QESG3HCL.js';export{f as Tooltip,d as TooltipContent,e as TooltipProvider,c as TooltipTrigger,b as arrowVariants,a as tooltipVariants}from'./chunk-TCA5Z7FL.js';export{b as Separator,a as separatorVariants}from'./chunk-XRVHMGMD.js';export{b as Sheet,d as SheetClose,g as SheetContent,k as SheetDescription,i as SheetFooter,h as SheetHeader,f as SheetOverlay,e as SheetPortal,j as SheetTitle,c as SheetTrigger,a as sheetVariants}from'./chunk-HCYZ3LZP.js';export{c as Slider,b as sliderThumbVariants,a as sliderTrackVariants}from'./chunk-VBGHESL2.js';export{a as Menubar,e as MenubarCheckboxItem,c as MenubarContent,m as MenubarGroup,d as MenubarItem,g as MenubarLabel,l as MenubarMenu,o as MenubarRadioGroup,f as MenubarRadioItem,h as MenubarSeparator,i as MenubarShortcut,n as MenubarSub,k as MenubarSubContent,j as MenubarSubTrigger,b as MenubarTrigger}from'./chunk-FTAB43WC.js';export{a as NavigationMenu,f as NavigationMenuContent,i as NavigationMenuIndicator,c as NavigationMenuItem,g as NavigationMenuLink,b as NavigationMenuList,e as NavigationMenuTrigger,h as NavigationMenuViewport,d as navigationMenuTriggerStyle}from'./chunk-BISYWH74.js';export{c as Pagination,d as PaginationContent,i as PaginationEllipsis,e as PaginationItem,f as PaginationLink,h as PaginationNext,g as PaginationPrevious,b as paginationItemVariants,a as paginationVariants}from'./chunk-Q6QMSAJR.js';export{b as Popover,d as PopoverAnchor,g as PopoverArrow,e as PopoverClose,f as PopoverContent,c as PopoverTrigger,a as popoverContentVariants}from'./chunk-3FY7LZ3B.js';export{e as CircularProgress,d as Progress,b as progressBarVariants,c as progressLabelVariants,a as progressVariants}from'./chunk-NLD4R74T.js';export{c as RadioGroup,d as RadioGroupItem,d as RadioItem,a as radioGroupVariants,b as radioItemVariants}from'./chunk-KR6IVHNR.js';export{a as DropdownMenu,h as DropdownMenuCheckboxItem,f as DropdownMenuContent,c as DropdownMenuGroup,g as DropdownMenuItem,j as DropdownMenuLabel,e as DropdownMenuRadioGroup,i as DropdownMenuRadioItem,k as DropdownMenuSeparator,l as DropdownMenuShortcut,d as DropdownMenuSub,n as DropdownMenuSubContent,m as DropdownMenuSubTrigger,b as DropdownMenuTrigger}from'./chunk-MM54MZBX.js';export{b as Label,a as labelVariants}from'./chunk-LYVCB45L.js';export{b as ErrorMessage,a as errorMessageVariants}from'./chunk-XQUZ7DUN.js';export{b as HelperText,a as helperTextVariants}from'./chunk-ABA7B5DE.js';export{a as HoverCard,c as HoverCardContent,b as HoverCardTrigger}from'./chunk-HEU5GFOV.js';export{a as Icon,b as iconNames}from'./chunk-BL2TM4YT.js';export{a as InputOTP,b as InputOTPGroup,d as InputOTPSeparator,c as InputOTPSlot}from'./chunk-K45ZUJ42.js';export{b as Chart,a as chartContainerVariants}from'./chunk-XLZJ6HBL.js';export{b as Checkbox,a as checkboxVariants}from'./chunk-DNTPD3PJ.js';export{a as Collapsible,c as CollapsibleContent,b as CollapsibleTrigger}from'./chunk-ESUSGG6O.js';export{a as Command,b as CommandDialog,e as CommandEmpty,f as CommandGroup,c as CommandInput,h as CommandItem,d as CommandList,j as CommandLoading,g as CommandSeparator,i as CommandShortcut}from'./chunk-PLEQSJHY.js';export{a as ContextMenu,h as ContextMenuCheckboxItem,f as ContextMenuContent,c as ContextMenuGroup,g as ContextMenuItem,j as ContextMenuLabel,e as ContextMenuRadioGroup,i as ContextMenuRadioItem,k as ContextMenuSeparator,l as ContextMenuShortcut,d as ContextMenuSub,n as ContextMenuSubContent,m as ContextMenuSubTrigger,b as ContextMenuTrigger}from'./chunk-AYKNZARS.js';import'./chunk-XYPJ2K22.js';export{a as DataTable}from'./chunk-YC6ALHAZ.js';export{d as Table,f as TableBody,h as TableCell,i as TableHead,e as TableHeader,g as TableRow,c as tableCellVariants,b as tableHeaderVariants,a as tableVariants}from'./chunk-HCO4XKPM.js';export{b as Input}from'./chunk-HD3TMQPR.js';export{c as Dialog,e as DialogContent,h as DialogDescription,f as DialogHeader,g as DialogTitle,d as DialogTrigger}from'./chunk-5N5KJBMP.js';export{a as Drawer,d as DrawerClose,g as DrawerContent,k as DrawerDescription,i as DrawerFooter,e as DrawerHandle,h as DrawerHeader,l as DrawerNested,f as DrawerOverlay,c as DrawerPortal,j as DrawerTitle,b as DrawerTrigger}from'./chunk-QQTI6OI3.js';export{b as Badge,a as badgeVariants}from'./chunk-UL6MF7ES.js';export{d as Breadcrumb,j as BreadcrumbEllipsis,f as BreadcrumbItem,g as BreadcrumbLink,e as BreadcrumbList,h as BreadcrumbPage,i as BreadcrumbSeparator,b as breadcrumbItemVariants,c as breadcrumbSeparatorVariants,a as breadcrumbVariants}from'./chunk-SVWQWRPZ.js';export{c as Calendar,b as calendarDayVariants,a as calendarVariants}from'./chunk-35I2BJC3.js';export{g as Card,e as CardContent,d as CardDescription,f as CardFooter,b as CardHeader,c as CardTitle}from'./chunk-VD6S2PE4.js';export{b as Carousel,c as CarouselContent,d as CarouselItem,f as CarouselNext,e as CarouselPrevious,a as useCarousel}from'./chunk-NM5NVIAK.js';export{l as ChartArea,j as ChartBar,d as ChartContainer,e as ChartGrid,i as ChartLegend,k as ChartLine,m as ChartReferenceLine,h as ChartTooltip,f as ChartXAxis,g as ChartYAxis,b as buildColorMap,a as chartPalette,c as resolveSeriesColor}from'./chunk-CCNO2VWE.js';export{a as LazyChart}from'./chunk-HRJXPCGF.js';export{b as Skeleton,d as SkeletonAvatar,e as SkeletonButton,f as SkeletonCard,h as SkeletonList,g as SkeletonTable,c as SkeletonText,a as skeletonVariants}from'./chunk-QKM5LPRW.js';export{a as LazyComponent,d as LazyInView,c as useLazyLoading,b as withLazyLoading}from'./chunk-QBAURT3I.js';export{a as ErrorBoundary,b as useErrorHandler}from'./chunk-MVCGR7JQ.js';export{d as performanceUtils,c as useMemoryMonitor,a as usePerformanceMonitor,b as withPerformanceMonitoring}from'./chunk-3BNGK67W.js';export{f as Accordion,i as AccordionContent,g as AccordionItem,h as AccordionTrigger,e as accordionChevronVariants,d as accordionContentVariants,b as accordionItemVariants,c as accordionTriggerVariants,a as accordionVariants}from'./chunk-6QAYHUNV.js';export{a as AlertDialog,j as AlertDialogAction,k as AlertDialogCancel,e as AlertDialogContent,i as AlertDialogDescription,g as AlertDialogFooter,f as AlertDialogHeader,d as AlertDialogOverlay,c as AlertDialogPortal,h as AlertDialogTitle,b as AlertDialogTrigger}from'./chunk-CT6LEOBW.js';export{b as Button,a as buttonVariants}from'./chunk-AVTJE2O2.js';export{g as Alert,f as AlertDescription,e as AlertTitle,d as alertCloseVariants,c as alertDescriptionVariants,b as alertTitleVariants,a as alertVariants}from'./chunk-AHRTNKXE.js';export{a as AspectRatio}from'./chunk-YCVOS3MT.js';export{d as Avatar,c as AvatarFallback,b as AvatarImage,a as avatarVariants}from'./chunk-YNSODGYK.js';import'./chunk-COXN6XBA.js';export{a as cn}from'./chunk-AC2JBXHQ.js';var ua={nostromo:"nostromo",mother:"mother","lv-426":"lv-426",sulaco:"sulaco"};function ra(o){typeof document<"u"&&document.documentElement.setAttribute("data-theme",o);}function ta(){return typeof document>"u"?null:document.documentElement.getAttribute("data-theme")}function pa(){if(typeof document>"u")return;let r=document.documentElement.getAttribute("data-color-scheme")==="dark"?"light":"dark";document.documentElement.setAttribute("data-color-scheme",r);}function na(o){typeof document>"u"||document.documentElement.setAttribute("data-color-scheme",o?"dark":"light");}function ea(){return typeof document>"u"?null:document.documentElement.getAttribute("data-color-scheme")}function aa(){return typeof window>"u"?false:window.matchMedia("(prefers-color-scheme: dark)").matches}function ga(o){if(typeof window>"u")return ()=>{};let r=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>{o(e.matches);};return r.addEventListener("change",t),()=>{r.removeEventListener("change",t);}}function fa(o="nostromo"){typeof document>"u"||(ta()||ra(o),ea()||na(aa()));}var Ia={nostromo:{name:"Nostromo",description:"Classic space industrial theme inspired by the USCSS Nostromo",colors:{primary:"Purple/Blue",secondary:"Dark Gray",accent:"Green"}},mother:{name:"Mother",description:"Cold, clinical AI aesthetic inspired by the ship's computer",colors:{primary:"Cold Blue/Cyan",secondary:"Clinical White",accent:"Green"}},"lv-426":{name:"LV-426",description:"Warm, rusty atmosphere inspired by the planet LV-426",colors:{primary:"Warm Orange/Rust",secondary:"Earth Tones",accent:"Green"}},sulaco:{name:"Sulaco",description:"Modern, military-inspired aesthetic from the USS Sulaco",colors:{primary:"Military Blue/Gray",secondary:"Steel Tones",accent:"Green"}}};export{ra as applyTheme,ea as getColorScheme,ta as getCurrentTheme,fa as initializeTheme,ga as onSystemColorSchemeChange,aa as prefersDarkMode,na as setDarkMode,Ia as themeInfo,ua as themes,pa as toggleDarkMode};//# sourceMappingURL=index.js.map
|
|
2
|
+
export{a as Gallery}from'./chunk-2JQROMCM.js';export{a as Hero}from'./chunk-JEHIMQQZ.js';export{a as LogoWall}from'./chunk-RC2THAIA.js';export{a as Pricing}from'./chunk-44HISN45.js';export{a as Testimonials}from'./chunk-LR4VUFOQ.js';export{c as Switch,b as switchThumbVariants,a as switchVariants}from'./chunk-OUWOPYAX.js';export{d as Tabs,g as TabsContent,e as TabsList,f as TabsTrigger,c as tabsContentVariants,a as tabsListVariants,b as tabsTriggerVariants}from'./chunk-ZEJAFIOC.js';export{b as Textarea,a as textareaVariants}from'./chunk-2HYJSYQX.js';export{e as Toast,d as ToastProvider,b as toastIconVariants,a as toastVariants,c as useToast,f as useToastNotification}from'./chunk-CH5LTBAG.js';export{b as Toggle,c as ToggleGroup,d as ToggleGroupItem,a as toggleVariants}from'./chunk-EZGTC7L3.js';export{a as Features}from'./chunk-CEMOHO3Z.js';export{c as ResizableHandle,b as ResizablePanel,a as ResizablePanelGroup}from'./chunk-MINSU2YF.js';export{a as ScrollArea,b as ScrollBar}from'./chunk-GCMMAUW3.js';export{d as Select,h as SelectContent,e as SelectGroup,j as SelectItem,i as SelectLabel,k as SelectSeparator,g as SelectTrigger,f as SelectValue,b as selectContentVariants,c as selectItemVariants,a as selectTriggerVariants}from'./chunk-BZF3ZOAN.js';export{a as MOBILE_BREAKPOINT,e as Sidebar,m as SidebarContent,k as SidebarFooter,n as SidebarGroup,p as SidebarGroupAction,q as SidebarGroupContent,o as SidebarGroupLabel,j as SidebarHeader,i as SidebarInput,h as SidebarInset,r as SidebarMenu,v as SidebarMenuAction,w as SidebarMenuBadge,u as SidebarMenuButton,s as SidebarMenuItem,x as SidebarMenuSkeleton,y as SidebarMenuSub,A as SidebarMenuSubButton,z as SidebarMenuSubItem,d as SidebarProvider,g as SidebarRail,l as SidebarSeparator,f as SidebarTrigger,t as sidebarMenuButtonVariants,b as useIsMobile,c as useSidebar}from'./chunk-QESG3HCL.js';export{f as Tooltip,d as TooltipContent,e as TooltipProvider,c as TooltipTrigger,b as arrowVariants,a as tooltipVariants}from'./chunk-TCA5Z7FL.js';export{b as Separator,a as separatorVariants}from'./chunk-XRVHMGMD.js';export{b as Sheet,d as SheetClose,g as SheetContent,k as SheetDescription,i as SheetFooter,h as SheetHeader,f as SheetOverlay,e as SheetPortal,j as SheetTitle,c as SheetTrigger,a as sheetVariants}from'./chunk-HCYZ3LZP.js';export{c as Slider,b as sliderThumbVariants,a as sliderTrackVariants}from'./chunk-VBGHESL2.js';export{a as Menubar,e as MenubarCheckboxItem,c as MenubarContent,m as MenubarGroup,d as MenubarItem,g as MenubarLabel,l as MenubarMenu,o as MenubarRadioGroup,f as MenubarRadioItem,h as MenubarSeparator,i as MenubarShortcut,n as MenubarSub,k as MenubarSubContent,j as MenubarSubTrigger,b as MenubarTrigger}from'./chunk-FTAB43WC.js';export{a as NavigationMenu,f as NavigationMenuContent,i as NavigationMenuIndicator,c as NavigationMenuItem,g as NavigationMenuLink,b as NavigationMenuList,e as NavigationMenuTrigger,h as NavigationMenuViewport,d as navigationMenuTriggerStyle}from'./chunk-BISYWH74.js';export{c as Pagination,d as PaginationContent,i as PaginationEllipsis,e as PaginationItem,f as PaginationLink,h as PaginationNext,g as PaginationPrevious,b as paginationItemVariants,a as paginationVariants}from'./chunk-Q6QMSAJR.js';export{b as Popover,d as PopoverAnchor,g as PopoverArrow,e as PopoverClose,f as PopoverContent,c as PopoverTrigger,a as popoverContentVariants}from'./chunk-3FY7LZ3B.js';export{e as CircularProgress,d as Progress,b as progressBarVariants,c as progressLabelVariants,a as progressVariants}from'./chunk-NLD4R74T.js';export{c as RadioGroup,d as RadioGroupItem,d as RadioItem,a as radioGroupVariants,b as radioItemVariants}from'./chunk-KR6IVHNR.js';export{a as DropdownMenu,h as DropdownMenuCheckboxItem,f as DropdownMenuContent,c as DropdownMenuGroup,g as DropdownMenuItem,j as DropdownMenuLabel,e as DropdownMenuRadioGroup,i as DropdownMenuRadioItem,k as DropdownMenuSeparator,l as DropdownMenuShortcut,d as DropdownMenuSub,n as DropdownMenuSubContent,m as DropdownMenuSubTrigger,b as DropdownMenuTrigger}from'./chunk-MM54MZBX.js';export{b as Label,a as labelVariants}from'./chunk-LYVCB45L.js';export{b as ErrorMessage,a as errorMessageVariants}from'./chunk-XQUZ7DUN.js';export{b as HelperText,a as helperTextVariants}from'./chunk-ABA7B5DE.js';export{a as HoverCard,c as HoverCardContent,b as HoverCardTrigger}from'./chunk-HEU5GFOV.js';export{a as Icon,b as iconNames}from'./chunk-BL2TM4YT.js';export{a as InputOTP,b as InputOTPGroup,d as InputOTPSeparator,c as InputOTPSlot}from'./chunk-K45ZUJ42.js';export{b as Chart,a as chartContainerVariants}from'./chunk-XLZJ6HBL.js';export{b as Checkbox,a as checkboxVariants}from'./chunk-DNTPD3PJ.js';export{a as Collapsible,c as CollapsibleContent,b as CollapsibleTrigger}from'./chunk-ESUSGG6O.js';export{a as Command,b as CommandDialog,e as CommandEmpty,f as CommandGroup,c as CommandInput,h as CommandItem,d as CommandList,j as CommandLoading,g as CommandSeparator,i as CommandShortcut}from'./chunk-PLEQSJHY.js';export{a as ContextMenu,h as ContextMenuCheckboxItem,f as ContextMenuContent,c as ContextMenuGroup,g as ContextMenuItem,j as ContextMenuLabel,e as ContextMenuRadioGroup,i as ContextMenuRadioItem,k as ContextMenuSeparator,l as ContextMenuShortcut,d as ContextMenuSub,n as ContextMenuSubContent,m as ContextMenuSubTrigger,b as ContextMenuTrigger}from'./chunk-AYKNZARS.js';import'./chunk-XYPJ2K22.js';export{a as DataTable}from'./chunk-YC6ALHAZ.js';export{d as Table,f as TableBody,h as TableCell,i as TableHead,e as TableHeader,g as TableRow,c as tableCellVariants,b as tableHeaderVariants,a as tableVariants}from'./chunk-HCO4XKPM.js';export{b as Input}from'./chunk-HD3TMQPR.js';export{c as Dialog,e as DialogContent,h as DialogDescription,f as DialogHeader,g as DialogTitle,d as DialogTrigger}from'./chunk-5N5KJBMP.js';export{a as Drawer,d as DrawerClose,g as DrawerContent,k as DrawerDescription,i as DrawerFooter,e as DrawerHandle,h as DrawerHeader,l as DrawerNested,f as DrawerOverlay,c as DrawerPortal,j as DrawerTitle,b as DrawerTrigger}from'./chunk-QQTI6OI3.js';export{b as Badge,a as badgeVariants}from'./chunk-UL6MF7ES.js';export{d as Breadcrumb,j as BreadcrumbEllipsis,f as BreadcrumbItem,g as BreadcrumbLink,e as BreadcrumbList,h as BreadcrumbPage,i as BreadcrumbSeparator,b as breadcrumbItemVariants,c as breadcrumbSeparatorVariants,a as breadcrumbVariants}from'./chunk-SVWQWRPZ.js';export{c as Calendar,b as calendarDayVariants,a as calendarVariants}from'./chunk-A4ODFRMS.js';export{g as Card,e as CardContent,d as CardDescription,f as CardFooter,b as CardHeader,c as CardTitle}from'./chunk-VD6S2PE4.js';export{b as Carousel,c as CarouselContent,d as CarouselItem,f as CarouselNext,e as CarouselPrevious,a as useCarousel}from'./chunk-NM5NVIAK.js';export{l as ChartArea,j as ChartBar,d as ChartContainer,e as ChartGrid,i as ChartLegend,k as ChartLine,m as ChartReferenceLine,h as ChartTooltip,f as ChartXAxis,g as ChartYAxis,b as buildColorMap,a as chartPalette,c as resolveSeriesColor}from'./chunk-CCNO2VWE.js';export{a as LazyChart}from'./chunk-HRJXPCGF.js';export{b as Skeleton,d as SkeletonAvatar,e as SkeletonButton,f as SkeletonCard,h as SkeletonList,g as SkeletonTable,c as SkeletonText,a as skeletonVariants}from'./chunk-QKM5LPRW.js';export{a as LazyComponent,d as LazyInView,c as useLazyLoading,b as withLazyLoading}from'./chunk-QBAURT3I.js';export{a as ErrorBoundary,b as useErrorHandler}from'./chunk-MVCGR7JQ.js';export{d as performanceUtils,c as useMemoryMonitor,a as usePerformanceMonitor,b as withPerformanceMonitoring}from'./chunk-3BNGK67W.js';export{f as Accordion,i as AccordionContent,g as AccordionItem,h as AccordionTrigger,e as accordionChevronVariants,d as accordionContentVariants,b as accordionItemVariants,c as accordionTriggerVariants,a as accordionVariants}from'./chunk-6QAYHUNV.js';export{a as AlertDialog,j as AlertDialogAction,k as AlertDialogCancel,e as AlertDialogContent,i as AlertDialogDescription,g as AlertDialogFooter,f as AlertDialogHeader,d as AlertDialogOverlay,c as AlertDialogPortal,h as AlertDialogTitle,b as AlertDialogTrigger}from'./chunk-CT6LEOBW.js';export{b as Button,a as buttonVariants}from'./chunk-AVTJE2O2.js';export{g as Alert,f as AlertDescription,e as AlertTitle,d as alertCloseVariants,c as alertDescriptionVariants,b as alertTitleVariants,a as alertVariants}from'./chunk-AHRTNKXE.js';export{a as AspectRatio}from'./chunk-YCVOS3MT.js';export{d as Avatar,c as AvatarFallback,b as AvatarImage,a as avatarVariants}from'./chunk-YNSODGYK.js';import'./chunk-COXN6XBA.js';export{a as cn}from'./chunk-AC2JBXHQ.js';var ua={nostromo:"nostromo",mother:"mother","lv-426":"lv-426",sulaco:"sulaco"};function ra(o){typeof document<"u"&&document.documentElement.setAttribute("data-theme",o);}function ta(){return typeof document>"u"?null:document.documentElement.getAttribute("data-theme")}function pa(){if(typeof document>"u")return;let r=document.documentElement.getAttribute("data-color-scheme")==="dark"?"light":"dark";document.documentElement.setAttribute("data-color-scheme",r);}function na(o){typeof document>"u"||document.documentElement.setAttribute("data-color-scheme",o?"dark":"light");}function ea(){return typeof document>"u"?null:document.documentElement.getAttribute("data-color-scheme")}function aa(){return typeof window>"u"?false:window.matchMedia("(prefers-color-scheme: dark)").matches}function ga(o){if(typeof window>"u")return ()=>{};let r=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>{o(e.matches);};return r.addEventListener("change",t),()=>{r.removeEventListener("change",t);}}function fa(o="nostromo"){typeof document>"u"||(ta()||ra(o),ea()||na(aa()));}var Ia={nostromo:{name:"Nostromo",description:"Classic space industrial theme inspired by the USCSS Nostromo",colors:{primary:"Purple/Blue",secondary:"Dark Gray",accent:"Green"}},mother:{name:"Mother",description:"Cold, clinical AI aesthetic inspired by the ship's computer",colors:{primary:"Cold Blue/Cyan",secondary:"Clinical White",accent:"Green"}},"lv-426":{name:"LV-426",description:"Warm, rusty atmosphere inspired by the planet LV-426",colors:{primary:"Warm Orange/Rust",secondary:"Earth Tones",accent:"Green"}},sulaco:{name:"Sulaco",description:"Modern, military-inspired aesthetic from the USS Sulaco",colors:{primary:"Military Blue/Gray",secondary:"Steel Tones",accent:"Green"}}};export{ra as applyTheme,ea as getColorScheme,ta as getCurrentTheme,fa as initializeTheme,ga as onSystemColorSchemeChange,aa as prefersDarkMode,na as setDarkMode,Ia as themeInfo,ua as themes,pa as toggleDarkMode};//# sourceMappingURL=index.js.map
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
package/dist/chunk-35I2BJC3.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import {b}from'./chunk-AVTJE2O2.js';import {a as a$1}from'./chunk-AC2JBXHQ.js';import a,{useState,useRef,useMemo,useEffect}from'react';import*as v from'@radix-ui/react-popover';import {cva}from'class-variance-authority';import {format,getDay,startOfMonth,getDaysInMonth,isSameDay,isWithinInterval,startOfDay,endOfDay,isBefore,isAfter}from'date-fns';var ye=cva("inline-block rounded-lg border bg-background shadow-lg",{variants:{variant:{default:"border-border bg-card",outline:"border-2 border-border",ghost:"border-transparent bg-transparent shadow-none"},size:{sm:"p-2",md:"p-3",lg:"p-4"}},defaultVariants:{variant:"default",size:"md"}}),we=cva("flex items-center justify-center rounded-md font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"hover:bg-muted text-foreground",selected:"bg-primary text-primary-foreground hover:bg-primary/90 font-semibold",range:"bg-primary/10 text-primary hover:bg-primary/20 font-medium",today:"border-2 border-primary text-foreground font-semibold",outside:"text-muted-foreground",disabled:"text-muted-foreground/50 cursor-not-allowed"},size:{sm:"h-7 w-7 text-xs",md:"h-9 w-9 text-sm",lg:"h-11 w-11 text-base"}},defaultVariants:{variant:"default",size:"md"}}),W=n=>getDaysInMonth(n),xe=(n,o)=>{let s=getDay(startOfMonth(n));return o===1?s===0?6:s-1:s},h=(n,o)=>!n||!o?false:isSameDay(n,o),Ce=(n,o,s)=>!o&&!s?false:o&&s?isWithinInterval(startOfDay(n),{start:startOfDay(o),end:endOfDay(s)}):o?!isBefore(startOfDay(n),startOfDay(o)):s?!isAfter(startOfDay(n),endOfDay(s)):false,_=(n,o,s,I,N)=>!!(o&&isBefore(startOfDay(n),startOfDay(o))||s&&isAfter(startOfDay(n),endOfDay(s))||I?.some(Y=>h(Y,n))||N?.includes(getDay(n))),x=(n,o="en-US")=>n?format(n,"MMM d, yyyy"):"",ke=(n,o,s="en-US")=>!n&&!o?"":n&&o?`${x(n,s)} - ${x(o,s)}`:n?x(n,s):o?x(o,s):"",Fe=(n,o="en-US")=>n.length===0?"":n.length===1?x(n[0],o):`${n.length} dates selected`,Ne=a.forwardRef(({mode:n="single",value:o,defaultValue:s,onChange:I,minDate:N,maxDate:Y,disabledDates:A,disabledDays:H,locale:y="en-US",placeholder:X,label:V,error:L,helperText:U,className:Z,inputClassName:R,calendarClassName:ee,variant:te,size:K,showOutsideDays:C=true,firstDayOfWeek:P=1,...ne},re)=>{let[k,F]=useState(false),[i,c]=useState(new Date),[p,D]=useState(null),ae=useRef(null),$=useRef(new Map),[oe,se]=useState(s),j=o!==void 0,l=j?o:oe;a.useLayoutEffect(()=>{if(k&&!p){let e=new Date;e.setHours(0,0,0,0),D(e);}},[k,p]);let w=e=>{j||se(e),I?.(e);},z=e=>{if(!_(e,N,Y,A,H)){if(n==="single")w(e),F(false);else if(n==="range"){let r=l;if(!r?.from||r.from&&r.to)w({from:e});else {let t=r.from,d=e;d<t?w({from:d,to:t}):w({from:t,to:d}),F(false);}}else if(n==="multiple"){let r=l||[],t=r.findIndex(d=>h(d,e));t>=0?w(r.filter((d,u)=>u!==t)):w([...r,e]);}}},ie=useMemo(()=>{if(!l)return "";if(n==="single")return x(l,y);if(n==="range"){let e=l;return ke(e.from,e.to,y)}else return Fe(l,y)},[l,n,y]),le=useMemo(()=>{let e=[],r=new Date;r.setHours(0,0,0,0);let t=xe(i,P),d=W(i);if(C&&t>0){let u=new Date(i.getFullYear(),i.getMonth()-1),g=W(u);for(let m=g-t+1;m<=g;m++){let f=new Date(u.getFullYear(),u.getMonth(),m);e.push({date:f,isCurrentMonth:false,isToday:h(f,r)});}}for(let u=1;u<=d;u++){let g=new Date(i.getFullYear(),i.getMonth(),u);e.push({date:g,isCurrentMonth:true,isToday:h(g,r)});}if(C){let u=42-e.length,g=new Date(i.getFullYear(),i.getMonth()+1);for(let m=1;m<=u;m++){let f=new Date(g.getFullYear(),g.getMonth(),m);e.push({date:f,isCurrentMonth:false,isToday:h(f,r)});}}return e},[i,C,P]),ue=()=>{c(new Date(i.getFullYear(),i.getMonth()-1,1));},de=()=>{c(new Date(i.getFullYear(),i.getMonth()+1,1));},fe=()=>{let e=new Date;c(e),D(e);},ge=(e,r)=>{if(e.key==="Enter"||e.key===" "){e.preventDefault(),z(r);return}if(e.key==="ArrowRight"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()+1),D(t),t.getMonth()!==i.getMonth()&&c(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="ArrowLeft"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()-1),D(t),t.getMonth()!==i.getMonth()&&c(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="ArrowDown"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()+7),D(t),t.getMonth()!==i.getMonth()&&c(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="ArrowUp"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()-7),D(t),t.getMonth()!==i.getMonth()&&c(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="Home"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth(),1);D(t);return}if(e.key==="End"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth()+1,0);D(t);return}if(e.key==="PageUp"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth()-1,r.getDate());D(t),c(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="PageDown"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth()+1,r.getDate());D(t),c(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="Escape"){e.preventDefault(),F(false);return}};useEffect(()=>{if(p&&k){let e=`${p.getFullYear()}-${p.getMonth()}-${p.getDate()}`,r=$.current.get(e);r&&r.focus();}},[p,k]);let ce=useMemo(()=>{let e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];return P===1?[...e.slice(1),e[0]]:e},[P]),De=i.toLocaleDateString(y,{month:"long",year:"numeric"});return a.createElement("div",{ref:re,className:a$1("w-full",Z),...ne},a.createElement(v.Root,{open:k,onOpenChange:F},a.createElement("div",{className:"space-y-2"},V&&a.createElement("label",{className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},V),a.createElement(v.Trigger,{asChild:true},a.createElement("button",{type:"button",className:a$1("flex w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background","placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2","disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200 text-left",L?"border-error-500 shadow-sm hover:border-error-600 focus-visible:ring-error-500/20 focus-visible:border-error-500":"border-border shadow-sm hover:border-primary focus-visible:ring-ring/20 focus-visible:border-primary","h-10",R),onClick:()=>F(true),"aria-label":V||"Open calendar","aria-invalid":L},ie||a.createElement("span",{className:"text-muted-foreground"},X||"Select date..."))),U&&a.createElement("p",{className:a$1("text-sm text-muted-foreground",L&&"text-error-600")},U)),a.createElement(v.Portal,null,a.createElement(v.Content,{className:a$1("z-50 w-auto rounded-lg border bg-popover p-4 shadow-lg","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"),sideOffset:5,align:"start"},a.createElement("div",{ref:ae,className:a$1(ye({variant:te,size:K}),ee),role:"application","aria-label":"Calendar"},a.createElement("div",{className:"flex items-center justify-between mb-4"},a.createElement("div",{className:"flex items-center gap-2"},a.createElement(b,{variant:"ghost",size:"sm",onClick:ue,"aria-label":"Previous month"},a.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),a.createElement("h3",{className:"text-sm font-semibold text-popover-foreground","data-testid":"calendar-month-year"},De),a.createElement(b,{variant:"ghost",size:"sm",onClick:de,"aria-label":"Next month"},a.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})))),a.createElement(b,{variant:"ghost",size:"sm",onClick:fe,className:"text-xs"},"Today")),a.createElement("div",{className:"grid grid-cols-7 gap-1 mb-2"},ce.map(e=>a.createElement("div",{key:e,className:"text-center text-xs font-medium text-muted-foreground"},e))),a.createElement("div",{className:"grid grid-cols-7 gap-1"},le.map((e,r)=>{let t=n==="single"?h(e.date,l):n==="range"?Ce(e.date,l?.from,l?.to):l?.some(f=>h(f,e.date)),d=_(e.date,N,Y,A,H),u=n==="range"&&l?.from&&!l?.to&&e.date>=l.from,g=`${e.date.getFullYear()}-${e.date.getMonth()}-${e.date.getDate()}`,m=p&&h(e.date,p);return a.createElement("button",{key:`${e.date.getTime()}-${r}`,ref:f=>{f?$.current.set(g,f):$.current.delete(g);},type:"button",onClick:()=>{C&&!e.isCurrentMonth&&c(new Date(e.date.getFullYear(),e.date.getMonth(),1)),z(e.date);},onKeyDown:f=>ge(f,e.date),disabled:d||(C?false:!e.isCurrentMonth),className:a$1(we({variant:t?"selected":u?"range":e.isToday?"today":e.isCurrentMonth?d?"disabled":"default":"outside",size:K}),!e.isCurrentMonth&&"opacity-50",m&&"ring-2 ring-brand-500 ring-offset-2 z-10"),"aria-label":e.date.toLocaleDateString(y,{weekday:"long",year:"numeric",month:"long",day:"numeric"}),"aria-selected":t,"aria-disabled":d,tabIndex:m?0:-1},e.date.getDate())})),n==="range"&&l?.from&&!l?.to&&a.createElement("div",{className:"mt-4 pt-4 border-t border-border"},a.createElement("p",{className:"text-xs text-muted-foreground text-center"},"Select end date")))))))});Ne.displayName="Calendar";export{ye as a,we as b,Ne as c};//# sourceMappingURL=chunk-35I2BJC3.js.map
|
|
3
|
-
//# sourceMappingURL=chunk-35I2BJC3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/core/calendar.tsx"],"names":["calendarVariants","cva","calendarDayVariants","getDaysInMonth","date","dateFnsGetDaysInMonth","getFirstDayOfMonth","firstDayOfWeek","firstDay","getDay","startOfMonth","isSameDay","date1","date2","dateFnsIsSameDay","isDateInRange","from","to","isWithinInterval","startOfDay","endOfDay","isBefore","isAfter","isDateDisabled","minDate","maxDate","disabledDates","disabledDays","d","formatDate","_locale","dateFnsFormat","formatDateRange","locale","formatMultipleDates","dates","Calendar","React","mode","value","defaultValue","onChange","placeholder","label","error","helperText","className","inputClassName","calendarClassName","variant","size","showOutsideDays","props","ref","open","setOpen","useState","currentMonth","setCurrentMonth","focusedDate","setFocusedDate","calendarRef","useRef","dayButtonRefs","internalValue","setInternalValue","isControlled","calendarValue","today","handleValueChange","newValue","handleDateClick","rangeValue","multipleValue","dateIndex","_","i","displayValue","useMemo","range","calendarDays","days","daysInMonth","prevMonth","daysInPrevMonth","remainingDays","nextMonth","goToPreviousMonth","goToNextMonth","goToToday","handleKeyDown","nextDate","prevDate","lastDay","useEffect","dateKey","button","dayNames","names","monthYearDisplay","cn","Button","day","index","isSelected","isDisabled","isInRange","isFocused","el","e"],"mappings":"iWAmBMA,EAAAA,CAAmBC,GAAAA,CACvB,wDAAA,CACA,CACE,QAAA,CAAU,CACR,QAAS,CACP,OAAA,CAAS,uBAAA,CACT,OAAA,CAAS,wBAAA,CACT,KAAA,CAAO,+CACT,CAAA,CACA,IAAA,CAAM,CACJ,EAAA,CAAI,KAAA,CACJ,GAAI,KAAA,CACJ,EAAA,CAAI,KACN,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SAAA,CACT,IAAA,CAAM,IACR,CACF,CACF,EAEMC,EAAAA,CAAsBD,GAAAA,CAC1B,gMAAA,CACA,CACE,QAAA,CAAU,CACR,QAAS,CACP,OAAA,CAAS,gCAAA,CACT,QAAA,CACE,sEAAA,CACF,KAAA,CAAO,6DACP,KAAA,CAAO,uDAAA,CACP,OAAA,CAAS,uBAAA,CACT,QAAA,CAAU,6CACZ,EACA,IAAA,CAAM,CACJ,EAAA,CAAI,iBAAA,CACJ,EAAA,CAAI,iBAAA,CACJ,GAAI,qBACN,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,UACT,IAAA,CAAM,IACR,CACF,CACF,CAAA,CA4BME,EAAkBC,CAAAA,EACfC,cAAAA,CAAsBD,CAAI,CAAA,CAG7BE,EAAAA,CAAqB,CAACF,EAAYG,CAAAA,GAAkC,CAExE,IAAMC,CAAAA,CAAWC,MAAAA,CAAOC,YAAAA,CAAaN,CAAI,CAAC,CAAA,CAI1C,OAAOG,CAAAA,GAAmB,CAAA,CAAKC,CAAAA,GAAa,EAAI,CAAA,CAAIA,CAAAA,CAAW,CAAA,CAAKA,CACtE,CAAA,CAEMG,CAAAA,CAAY,CAChBC,CAAAA,CACAC,CAAAA,GAEI,CAACD,CAAAA,EAAS,CAACC,CAAAA,CAAc,MACtBC,SAAAA,CAAiBF,CAAAA,CAAOC,CAAK,CAAA,CAGhCE,EAAAA,CAAgB,CAACX,EAAYY,CAAAA,CAAaC,CAAAA,GAC1C,CAACD,CAAAA,EAAQ,CAACC,CAAAA,CAAW,MACrBD,CAAAA,EAAQC,CAAAA,CAEHC,gBAAAA,CAAiBC,UAAAA,CAAWf,CAAI,CAAA,CAAG,CACxC,KAAA,CAAOe,UAAAA,CAAWH,CAAI,CAAA,CACtB,GAAA,CAAKI,QAAAA,CAASH,CAAE,CAClB,CAAC,CAAA,CAECD,CAAAA,CAAa,CAACK,QAAAA,CAASF,WAAWf,CAAI,CAAA,CAAGe,UAAAA,CAAWH,CAAI,CAAC,CAAA,CACzDC,EAAW,CAACK,OAAAA,CAAQH,UAAAA,CAAWf,CAAI,CAAA,CAAGgB,QAAAA,CAASH,CAAE,CAAC,CAAA,CAC/C,KAAA,CAGHM,CAAAA,CAAiB,CACrBnB,CAAAA,CACAoB,EACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,GAEI,CAAA,EAAAH,CAAAA,EAAWH,QAAAA,CAASF,WAAWf,CAAI,CAAA,CAAGe,UAAAA,CAAWK,CAAO,CAAC,CAAA,EACzDC,GAAWH,OAAAA,CAAQH,UAAAA,CAAWf,CAAI,CAAA,CAAGgB,QAAAA,CAASK,CAAO,CAAC,CAAA,EACtDC,CAAAA,EAAe,IAAA,CAAME,CAAAA,EAAMjB,CAAAA,CAAUiB,EAAGxB,CAAI,CAAC,CAAA,EAC7CuB,CAAAA,EAAc,QAAA,CAASlB,MAAAA,CAAOL,CAAI,CAAC,CAAA,CAAA,CAInCyB,CAAAA,CAAa,CACjBzB,CAAAA,CACA0B,CAAAA,CAAkB,UAEb1B,CAAAA,CAKE2B,MAAAA,CAAc3B,CAAAA,CAAM,aAAa,CAAA,CALtB,EAAA,CAQd4B,GAAkB,CACtBhB,CAAAA,CACAC,CAAAA,CACAgB,CAAAA,CAAiB,OAAA,GAEb,CAACjB,GAAQ,CAACC,CAAAA,CAAW,EAAA,CACrBD,CAAAA,EAAQC,CAAAA,CACH,CAAA,EAAGY,EAAWb,CAAAA,CAAMiB,CAAM,CAAC,CAAA,GAAA,EAAMJ,CAAAA,CAAWZ,CAAAA,CAAIgB,CAAM,CAAC,CAAA,CAAA,CAE5DjB,CAAAA,CAAaa,CAAAA,CAAWb,CAAAA,CAAMiB,CAAM,EACpChB,CAAAA,CAAWY,CAAAA,CAAWZ,CAAAA,CAAIgB,CAAM,CAAA,CAC7B,EAAA,CAGHC,GAAsB,CAC1BC,CAAAA,CACAL,CAAAA,CAAkB,OAAA,GAEdK,CAAAA,CAAM,MAAA,GAAW,EAAU,EAAA,CAC3BA,CAAAA,CAAM,MAAA,GAAW,CAAA,CAAUN,CAAAA,CAAWM,CAAAA,CAAM,CAAC,CAAA,CAAGL,CAAO,CAAA,CACpD,CAAA,EAAGK,CAAAA,CAAM,MAAM,kBAGXC,EAAAA,CAAWC,CAAAA,CAAM,UAAA,CAC5B,CACE,CACE,IAAA,CAAAC,EAAO,QAAA,CACP,KAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,OAAA,CAAAjB,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,aAAAC,CAAAA,CACA,MAAA,CAAAM,EAAS,OAAA,CACT,WAAA,CAAAS,EACA,KAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,iBAAA,CAAAC,EAAAA,CACA,OAAA,CAAAC,GACA,IAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CAAkB,IAAA,CAClB,cAAA,CAAA5C,EAAiB,CAAA,CACjB,GAAG6C,EACL,CAAA,CACAC,EAAAA,GACG,CACH,GAAM,CAACC,CAAAA,CAAMC,CAAO,CAAA,CAAIC,QAAAA,CAAS,KAAK,EAChC,CAACC,CAAAA,CAAcC,CAAe,CAAA,CAAIF,QAAAA,CAAS,IAAI,IAAM,CAAA,CACrD,CAACG,CAAAA,CAAaC,CAAc,CAAA,CAAIJ,QAAAA,CAAsB,IAAI,CAAA,CAC1DK,EAAAA,CAAcC,MAAAA,CAAuB,IAAI,CAAA,CACzCC,CAAAA,CAAgBD,OAAuC,IAAI,GAAK,CAAA,CAGhE,CAACE,EAAAA,CAAeC,EAAgB,EAAIT,QAAAA,CAExChB,CAAY,CAAA,CAER0B,CAAAA,CAAe3B,CAAAA,GAAU,MAAA,CACzB4B,EAAgBD,CAAAA,CAAe3B,CAAAA,CAAQyB,EAAAA,CAG7C3B,CAAAA,CAAM,eAAA,CAAgB,IAAM,CAC1B,GAAIiB,CAAAA,EAAQ,CAACK,CAAAA,CAAa,CACxB,IAAMS,EAAQ,IAAI,IAAA,CAClBA,CAAAA,CAAM,QAAA,CAAS,CAAA,CAAG,CAAA,CAAG,EAAG,CAAC,CAAA,CACzBR,CAAAA,CAAeQ,CAAK,EACtB,CACF,EAAG,CAACd,CAAAA,CAAMK,CAAW,CAAC,CAAA,CAGtB,IAAMU,EACJC,CAAAA,EACG,CACEJ,GACHD,EAAAA,CAAiBK,CAAQ,EAE3B7B,CAAAA,GAAW6B,CAAQ,EACrB,CAAA,CAGMC,CAAAA,CAAmBnE,CAAAA,EAAe,CACtC,GAAI,CAAAmB,CAAAA,CAAenB,CAAAA,CAAMoB,CAAAA,CAASC,CAAAA,CAASC,EAAeC,CAAY,CAAA,CAAA,CAItE,GAAIW,CAAAA,GAAS,QAAA,CACX+B,CAAAA,CAAkBjE,CAAI,CAAA,CACtBmD,CAAAA,CAAQ,KAAK,CAAA,CAAA,KAAA,GACJjB,CAAAA,GAAS,OAAA,CAAS,CAC3B,IAAMkC,CAAAA,CAAaL,CAAAA,CAEnB,GAAI,CAACK,CAAAA,EAAY,MAASA,CAAAA,CAAW,IAAA,EAAQA,CAAAA,CAAW,EAAA,CAEtDH,CAAAA,CAAkB,CAAE,KAAMjE,CAAK,CAAC,CAAA,CAAA,KAC3B,CAEL,IAAMY,CAAAA,CAAOwD,EAAW,IAAA,CAClBvD,CAAAA,CAAKb,EACPa,CAAAA,CAAKD,CAAAA,CACPqD,EAAkB,CAAE,IAAA,CAAMpD,CAAAA,CAAI,EAAA,CAAID,CAAK,CAAC,EAExCqD,CAAAA,CAAkB,CAAE,IAAA,CAAArD,CAAAA,CAAM,EAAA,CAAAC,CAAG,CAAC,CAAA,CAEhCsC,CAAAA,CAAQ,KAAK,EACf,CACF,CAAA,KAAA,GAAWjB,IAAS,UAAA,CAAY,CAC9B,IAAMmC,CAAAA,CAAiBN,CAAAA,EAA4B,GAC7CO,CAAAA,CAAYD,CAAAA,CAAc,SAAA,CAAW,CAAA,EAAM9D,CAAAA,CAAU,CAAA,CAAGP,CAAI,CAAC,CAAA,CAC/DsE,CAAAA,EAAa,CAAA,CAEfL,CAAAA,CAAkBI,CAAAA,CAAc,OAAO,CAACE,CAAAA,CAAGC,CAAAA,GAAMA,CAAAA,GAAMF,CAAS,CAAC,EAGjEL,CAAAA,CAAkB,CAAC,GAAGI,CAAAA,CAAerE,CAAI,CAAC,EAE9C,CAAA,CACF,CAAA,CAGMyE,EAAAA,CAAeC,OAAAA,CAAQ,IAAM,CACjC,GAAI,CAACX,CAAAA,CAAe,OAAO,EAAA,CAE3B,GAAI7B,IAAS,QAAA,CACX,OAAOT,CAAAA,CAAWsC,CAAAA,CAAuBlC,CAAM,CAAA,CAC1C,GAAIK,CAAAA,GAAS,OAAA,CAAS,CAC3B,IAAMyC,CAAAA,CAAQZ,CAAAA,CACd,OAAOnC,EAAAA,CAAgB+C,CAAAA,CAAM,IAAA,CAAMA,CAAAA,CAAM,EAAA,CAAI9C,CAAM,CACrD,CAAA,KACE,OAAOC,EAAAA,CAAoBiC,CAAAA,CAAyBlC,CAAM,CAE9D,EAAG,CAACkC,CAAAA,CAAe7B,CAAAA,CAAML,CAAM,CAAC,CAAA,CAG1B+C,GAAeF,OAAAA,CAAQ,IAAM,CACjC,IAAMG,CAAAA,CAID,GACCb,CAAAA,CAAQ,IAAI,IAAA,CAClBA,CAAAA,CAAM,QAAA,CAAS,CAAA,CAAG,EAAG,CAAA,CAAG,CAAC,CAAA,CAEzB,IAAM5D,CAAAA,CAAWF,EAAAA,CAAmBmD,EAAclD,CAAc,CAAA,CAC1D2E,CAAAA,CAAc/E,CAAAA,CAAesD,CAAY,CAAA,CAG/C,GAAIN,CAAAA,EAAmB3C,CAAAA,CAAW,CAAA,CAAG,CACnC,IAAM2E,CAAAA,CAAY,IAAI,IAAA,CACpB1B,CAAAA,CAAa,WAAA,EAAY,CACzBA,CAAAA,CAAa,QAAA,GAAa,CAC5B,CAAA,CACM2B,CAAAA,CAAkBjF,CAAAA,CAAegF,CAAS,CAAA,CAChD,QACMP,CAAAA,CAAIQ,CAAAA,CAAkB5E,CAAAA,CAAW,CAAA,CACrCoE,CAAAA,EAAKQ,CAAAA,CACLR,IACA,CACA,IAAMxE,EAAO,IAAI,IAAA,CACf+E,EAAU,WAAA,EAAY,CACtBA,CAAAA,CAAU,QAAA,EAAS,CACnBP,CACF,EACAK,CAAAA,CAAK,IAAA,CAAK,CACR,IAAA,CAAA7E,CAAAA,CACA,cAAA,CAAgB,MAChB,OAAA,CAASO,CAAAA,CAAUP,CAAAA,CAAMgE,CAAK,CAChC,CAAC,EACH,CACF,CAGA,IAAA,IAASQ,CAAAA,CAAI,CAAA,CAAGA,CAAAA,EAAKM,EAAaN,CAAAA,EAAAA,CAAK,CACrC,IAAMxE,CAAAA,CAAO,IAAI,IAAA,CACfqD,EAAa,WAAA,EAAY,CACzBA,CAAAA,CAAa,QAAA,EAAS,CACtBmB,CACF,EACAK,CAAAA,CAAK,IAAA,CAAK,CACR,IAAA,CAAA7E,CAAAA,CACA,cAAA,CAAgB,KAChB,OAAA,CAASO,CAAAA,CAAUP,CAAAA,CAAMgE,CAAK,CAChC,CAAC,EACH,CAGA,GAAIjB,CAAAA,CAAiB,CACnB,IAAMkC,CAAAA,CAAgB,GAAKJ,CAAAA,CAAK,MAAA,CAC1BK,CAAAA,CAAY,IAAI,IAAA,CACpB7B,CAAAA,CAAa,aAAY,CACzBA,CAAAA,CAAa,QAAA,EAAS,CAAI,CAC5B,CAAA,CACA,QAASmB,CAAAA,CAAI,CAAA,CAAGA,CAAAA,EAAKS,CAAAA,CAAeT,CAAAA,EAAAA,CAAK,CACvC,IAAMxE,CAAAA,CAAO,IAAI,IAAA,CACfkF,CAAAA,CAAU,WAAA,EAAY,CACtBA,EAAU,QAAA,EAAS,CACnBV,CACF,CAAA,CACAK,CAAAA,CAAK,IAAA,CAAK,CACR,IAAA,CAAA7E,CAAAA,CACA,cAAA,CAAgB,KAAA,CAChB,OAAA,CAASO,CAAAA,CAAUP,EAAMgE,CAAK,CAChC,CAAC,EACH,CACF,CAEA,OAAOa,CACT,CAAA,CAAG,CAACxB,CAAAA,CAAcN,CAAAA,CAAiB5C,CAAc,CAAC,CAAA,CAG5CgF,EAAAA,CAAoB,IAAM,CAC9B7B,CAAAA,CACE,IAAI,IAAA,CAAKD,CAAAA,CAAa,WAAA,EAAY,CAAGA,CAAAA,CAAa,QAAA,GAAa,CAAA,CAAG,CAAC,CACrE,EACF,CAAA,CAEM+B,EAAAA,CAAgB,IAAM,CAC1B9B,CAAAA,CACE,IAAI,IAAA,CAAKD,CAAAA,CAAa,WAAA,GAAeA,CAAAA,CAAa,QAAA,EAAS,CAAI,CAAA,CAAG,CAAC,CACrE,EACF,CAAA,CAEMgC,EAAAA,CAAY,IAAM,CACtB,IAAMrB,CAAAA,CAAQ,IAAI,IAAA,CAClBV,CAAAA,CAAgBU,CAAK,CAAA,CACrBR,CAAAA,CAAeQ,CAAK,EACtB,CAAA,CAGMsB,EAAAA,CAAgB,CAAC,CAAA,CAAwBtF,CAAAA,GAAe,CAC5D,GAAI,CAAA,CAAE,GAAA,GAAQ,OAAA,EAAW,CAAA,CAAE,GAAA,GAAQ,GAAA,CAAK,CACtC,CAAA,CAAE,cAAA,EAAe,CACjBmE,CAAAA,CAAgBnE,CAAI,CAAA,CACpB,MACF,CAEA,GAAI,CAAA,CAAE,GAAA,GAAQ,YAAA,CAAc,CAC1B,EAAE,cAAA,EAAe,CACjB,IAAMuF,CAAAA,CAAW,IAAI,IAAA,CAAKvF,CAAI,CAAA,CAC9BuF,CAAAA,CAAS,OAAA,CAAQA,CAAAA,CAAS,OAAA,EAAQ,CAAI,CAAC,CAAA,CACvC/B,CAAAA,CAAe+B,CAAQ,CAAA,CAEnBA,CAAAA,CAAS,QAAA,KAAelC,CAAAA,CAAa,QAAA,IACvCC,CAAAA,CACE,IAAI,KAAKiC,CAAAA,CAAS,WAAA,EAAY,CAAGA,CAAAA,CAAS,QAAA,EAAS,CAAG,CAAC,CACzD,CAAA,CAEF,MACF,CAEA,GAAI,CAAA,CAAE,MAAQ,WAAA,CAAa,CACzB,CAAA,CAAE,cAAA,EAAe,CACjB,IAAMC,EAAW,IAAI,IAAA,CAAKxF,CAAI,CAAA,CAC9BwF,CAAAA,CAAS,OAAA,CAAQA,EAAS,OAAA,EAAQ,CAAI,CAAC,CAAA,CACvChC,CAAAA,CAAegC,CAAQ,EAEnBA,CAAAA,CAAS,QAAA,EAAS,GAAMnC,CAAAA,CAAa,QAAA,EAAS,EAChDC,EACE,IAAI,IAAA,CAAKkC,CAAAA,CAAS,WAAA,EAAY,CAAGA,CAAAA,CAAS,UAAS,CAAG,CAAC,CACzD,CAAA,CAEF,MACF,CAEA,GAAI,CAAA,CAAE,GAAA,GAAQ,WAAA,CAAa,CACzB,CAAA,CAAE,gBAAe,CACjB,IAAMD,CAAAA,CAAW,IAAI,IAAA,CAAKvF,CAAI,EAC9BuF,CAAAA,CAAS,OAAA,CAAQA,CAAAA,CAAS,OAAA,EAAQ,CAAI,CAAC,EACvC/B,CAAAA,CAAe+B,CAAQ,CAAA,CAEnBA,CAAAA,CAAS,QAAA,EAAS,GAAMlC,EAAa,QAAA,EAAS,EAChDC,CAAAA,CACE,IAAI,IAAA,CAAKiC,CAAAA,CAAS,aAAY,CAAGA,CAAAA,CAAS,QAAA,EAAS,CAAG,CAAC,CACzD,EAEF,MACF,CAEA,GAAI,CAAA,CAAE,GAAA,GAAQ,SAAA,CAAW,CACvB,CAAA,CAAE,cAAA,GACF,IAAMC,CAAAA,CAAW,IAAI,IAAA,CAAKxF,CAAI,CAAA,CAC9BwF,CAAAA,CAAS,OAAA,CAAQA,CAAAA,CAAS,SAAQ,CAAI,CAAC,CAAA,CACvChC,CAAAA,CAAegC,CAAQ,CAAA,CAEnBA,EAAS,QAAA,EAAS,GAAMnC,CAAAA,CAAa,QAAA,EAAS,EAChDC,CAAAA,CACE,IAAI,IAAA,CAAKkC,CAAAA,CAAS,WAAA,EAAY,CAAGA,CAAAA,CAAS,QAAA,GAAY,CAAC,CACzD,CAAA,CAEF,MACF,CAEA,GAAI,EAAE,GAAA,GAAQ,MAAA,CAAQ,CACpB,CAAA,CAAE,cAAA,EAAe,CACjB,IAAMpF,CAAAA,CAAW,IAAI,IAAA,CAAKJ,CAAAA,CAAK,WAAA,EAAY,CAAGA,EAAK,QAAA,EAAS,CAAG,CAAC,CAAA,CAChEwD,CAAAA,CAAepD,CAAQ,EACvB,MACF,CAEA,GAAI,CAAA,CAAE,GAAA,GAAQ,KAAA,CAAO,CACnB,CAAA,CAAE,cAAA,EAAe,CACjB,IAAMqF,CAAAA,CAAU,IAAI,KAAKzF,CAAAA,CAAK,WAAA,EAAY,CAAGA,CAAAA,CAAK,QAAA,EAAS,CAAI,EAAG,CAAC,CAAA,CACnEwD,CAAAA,CAAeiC,CAAO,CAAA,CACtB,MACF,CAEA,GAAI,CAAA,CAAE,GAAA,GAAQ,QAAA,CAAU,CACtB,CAAA,CAAE,gBAAe,CACjB,IAAMV,CAAAA,CAAY,IAAI,IAAA,CACpB/E,CAAAA,CAAK,aAAY,CACjBA,CAAAA,CAAK,QAAA,EAAS,CAAI,CAAA,CAClBA,CAAAA,CAAK,SACP,CAAA,CACAwD,EAAeuB,CAAS,CAAA,CACxBzB,EACE,IAAI,IAAA,CAAKyB,CAAAA,CAAU,WAAA,EAAY,CAAGA,CAAAA,CAAU,UAAS,CAAG,CAAC,CAC3D,CAAA,CACA,MACF,CAEA,GAAI,CAAA,CAAE,GAAA,GAAQ,UAAA,CAAY,CACxB,CAAA,CAAE,cAAA,GACF,IAAMG,CAAAA,CAAY,IAAI,IAAA,CACpBlF,CAAAA,CAAK,WAAA,GACLA,CAAAA,CAAK,QAAA,EAAS,CAAI,CAAA,CAClBA,CAAAA,CAAK,OAAA,EACP,CAAA,CACAwD,CAAAA,CAAe0B,CAAS,CAAA,CACxB5B,CAAAA,CACE,IAAI,KAAK4B,CAAAA,CAAU,WAAA,EAAY,CAAGA,CAAAA,CAAU,QAAA,EAAS,CAAG,CAAC,CAC3D,CAAA,CACA,MACF,CAEA,GAAI,CAAA,CAAE,MAAQ,QAAA,CAAU,CACtB,CAAA,CAAE,cAAA,EAAe,CACjB/B,CAAAA,CAAQ,KAAK,CAAA,CACb,MACF,CACF,CAAA,CAGAuC,SAAAA,CAAU,IAAM,CACd,GAAInC,CAAAA,EAAeL,CAAAA,CAAM,CACvB,IAAMyC,CAAAA,CAAU,GAAGpC,CAAAA,CAAY,WAAA,EAAa,CAAA,CAAA,EAAIA,CAAAA,CAAY,QAAA,EAAU,CAAA,CAAA,EAAIA,CAAAA,CAAY,OAAA,EAAS,CAAA,CAAA,CACzFqC,CAAAA,CAASjC,EAAc,OAAA,CAAQ,GAAA,CAAIgC,CAAO,CAAA,CAC5CC,CAAAA,EACFA,CAAAA,CAAO,QAEX,CACF,CAAA,CAAG,CAACrC,CAAAA,CAAaL,CAAI,CAAC,CAAA,CAGtB,IAAM2C,GAAWnB,OAAAA,CAAQ,IAAM,CAC7B,IAAMoB,CAAAA,CAAQ,CAAC,KAAA,CAAO,KAAA,CAAO,KAAA,CAAO,MAAO,KAAA,CAAO,KAAA,CAAO,KAAK,CAAA,CAC9D,OAAI3F,CAAAA,GAAmB,EACd,CAAC,GAAG2F,CAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,CAAGA,EAAM,CAAC,CAAC,CAAA,CAE9BA,CACT,CAAA,CAAG,CAAC3F,CAAc,CAAC,CAAA,CAGb4F,EAAAA,CAAmB1C,CAAAA,CAAa,kBAAA,CAAmBxB,CAAAA,CAAQ,CAC/D,KAAA,CAAO,MAAA,CACP,IAAA,CAAM,SACR,CAAC,CAAA,CAED,OACEI,CAAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,GAAA,CAAKgB,EAAAA,CAAK,SAAA,CAAW+C,IAAG,QAAA,CAAUtD,CAAS,CAAA,CAAI,GAAGM,EAAAA,CAAAA,CACrDf,CAAAA,CAAA,cAAS,CAAA,CAAA,IAAA,CAAR,CAAa,IAAA,CAAMiB,CAAAA,CAAM,YAAA,CAAcC,CAAAA,CAAAA,CACtClB,EAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CAAA,CACZM,CAAAA,EACCN,CAAAA,CAAA,cAAC,OAAA,CAAA,CAAM,SAAA,CAAU,4FAAA,CAAA,CACdM,CACH,CAAA,CAEFN,CAAAA,CAAA,cAAS,CAAA,CAAA,OAAA,CAAR,CAAgB,OAAA,CAAO,IAAA,CAAA,CACtBA,CAAAA,CAAA,aAAA,CAAC,UACC,IAAA,CAAK,QAAA,CACL,SAAA,CAAW+D,GAAAA,CACT,sFAAA,CACA,+GAAA,CACA,wFACAxD,CAAAA,CACI,kHAAA,CACA,sGAAA,CACJ,MAAA,CACAG,CACF,CAAA,CAKA,QAAS,IAAMQ,CAAAA,CAAQ,IAAI,CAAA,CAC3B,YAAA,CAAYZ,CAAAA,EAAS,gBACrB,cAAA,CAAcC,CAAAA,CAAAA,CAEbiC,IACCxC,CAAAA,CAAA,aAAA,CAAC,QAAK,SAAA,CAAU,uBAAA,CAAA,CACbK,CAAAA,EAAe,gBAClB,CAEJ,CACF,EACCG,CAAAA,EACCR,CAAAA,CAAA,aAAA,CAAC,GAAA,CAAA,CACC,SAAA,CAAW+D,GAAAA,CACT,gCACAxD,CAAAA,EAAS,gBACX,CAAA,CAAA,CAECC,CACH,CAEJ,CAAA,CAEAR,EAAA,aAAA,CAAS,CAAA,CAAA,MAAA,CAAR,IAAA,CACCA,CAAAA,CAAA,aAAA,CAAS,CAAA,CAAA,OAAA,CAAR,CACC,SAAA,CAAW+D,GAAAA,CACT,wDAAA,CACA,8DAAA,CACA,4DAAA,CACA,8DAAA,CACA,gFACA,+EACF,CAAA,CACA,UAAA,CAAY,CAAA,CACZ,KAAA,CAAM,OAAA,CAAA,CAEN/D,EAAA,aAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKwB,EAAAA,CACL,SAAA,CAAWuC,GAAAA,CACTpG,GAAiB,CAAE,OAAA,CAAAiD,GAAS,IAAA,CAAAC,CAAK,CAAC,CAAA,CAClCF,EACF,CAAA,CACA,IAAA,CAAK,aAAA,CACL,YAAA,CAAW,YAGXX,CAAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wCAAA,CAAA,CACbA,CAAAA,CAAA,cAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yBAAA,CAAA,CACbA,CAAAA,CAAA,aAAA,CAACgE,CAAAA,CAAA,CACC,OAAA,CAAQ,OAAA,CACR,IAAA,CAAK,IAAA,CACL,OAAA,CAASd,EAAAA,CACT,aAAW,gBAAA,CAAA,CAEXlD,CAAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAU,SAAA,CACV,KAAK,MAAA,CACL,MAAA,CAAO,cAAA,CACP,OAAA,CAAQ,WAAA,CAAA,CAERA,CAAAA,CAAA,cAAC,MAAA,CAAA,CACC,aAAA,CAAc,OAAA,CACd,cAAA,CAAe,OAAA,CACf,WAAA,CAAa,EACb,CAAA,CAAE,iBAAA,CACJ,CACF,CACF,CAAA,CAEAA,EAAA,aAAA,CAAC,IAAA,CAAA,CACC,SAAA,CAAU,+CAAA,CACV,aAAA,CAAY,qBAAA,CAAA,CAEX8D,EACH,CAAA,CAEA9D,CAAAA,CAAA,aAAA,CAACgE,CAAAA,CAAA,CACC,OAAA,CAAQ,QACR,IAAA,CAAK,IAAA,CACL,OAAA,CAASb,EAAAA,CACT,YAAA,CAAW,YAAA,CAAA,CAEXnD,EAAA,aAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAU,SAAA,CACV,IAAA,CAAK,MAAA,CACL,OAAO,cAAA,CACP,OAAA,CAAQ,WAAA,CAAA,CAERA,CAAAA,CAAA,aAAA,CAAC,MAAA,CAAA,CACC,cAAc,OAAA,CACd,cAAA,CAAe,OAAA,CACf,WAAA,CAAa,CAAA,CACb,CAAA,CAAE,eACJ,CACF,CACF,CACF,CAAA,CAEAA,CAAAA,CAAA,aAAA,CAACgE,EAAA,CACC,OAAA,CAAQ,OAAA,CACR,IAAA,CAAK,IAAA,CACL,OAAA,CAASZ,GACT,SAAA,CAAU,SAAA,CAAA,CACX,OAED,CACF,CAAA,CAGApD,CAAAA,CAAA,cAAC,KAAA,CAAA,CAAI,SAAA,CAAU,6BAAA,CAAA,CACZ4D,EAAAA,CAAS,GAAA,CAAKK,CAAAA,EACbjE,EAAA,aAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKiE,CAAAA,CACL,SAAA,CAAU,uDAAA,CAAA,CAETA,CACH,CACD,CACH,CAAA,CAGAjE,CAAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wBAAA,CAAA,CACZ2C,EAAAA,CAAa,GAAA,CAAI,CAACsB,CAAAA,CAAKC,CAAAA,GAAU,CAChC,IAAMC,CAAAA,CACJlE,CAAAA,GAAS,QAAA,CACL3B,CAAAA,CAAU2F,CAAAA,CAAI,KAAMnC,CAAiC,CAAA,CACrD7B,CAAAA,GAAS,OAAA,CACPvB,EAAAA,CACEuF,CAAAA,CAAI,KACHnC,CAAAA,EACG,IAAA,CACHA,GAA8C,EACjD,CAAA,CACCA,GAA0B,IAAA,CAAMvC,CAAAA,EAC/BjB,CAAAA,CAAUiB,CAAAA,CAAG0E,CAAAA,CAAI,IAAI,CACvB,CAAA,CAEFG,CAAAA,CAAalF,CAAAA,CACjB+E,CAAAA,CAAI,IAAA,CACJ9E,CAAAA,CACAC,EACAC,CAAAA,CACAC,CACF,CAAA,CAEM+E,CAAAA,CACJpE,CAAAA,GAAS,OAAA,EACR6B,GAA8C,IAAA,EAC/C,CAAEA,CAAAA,EAA8C,EAAA,EAChDmC,CAAAA,CAAI,IAAA,EACDnC,EAA6C,IAAA,CAE5C4B,CAAAA,CAAU,CAAA,EAAGO,CAAAA,CAAI,IAAA,CAAK,WAAA,EAAa,CAAA,CAAA,EAAIA,CAAAA,CAAI,IAAA,CAAK,QAAA,EAAU,CAAA,CAAA,EAAIA,EAAI,IAAA,CAAK,OAAA,EAAS,CAAA,CAAA,CAChFK,CAAAA,CACJhD,CAAAA,EAAehD,EAAU2F,CAAAA,CAAI,IAAA,CAAM3C,CAAW,CAAA,CAEhD,OACEtB,CAAAA,CAAA,cAAC,QAAA,CAAA,CACC,GAAA,CAAK,CAAA,EAAGiE,CAAAA,CAAI,IAAA,CAAK,OAAA,EAAS,CAAA,CAAA,EAAIC,CAAK,CAAA,CAAA,CACnC,GAAA,CAAMK,CAAAA,EAAO,CACPA,EACF7C,CAAAA,CAAc,OAAA,CAAQ,GAAA,CAAIgC,CAAAA,CAASa,CAAE,CAAA,CAErC7C,EAAc,OAAA,CAAQ,MAAA,CAAOgC,CAAO,EAExC,CAAA,CACA,IAAA,CAAK,SACL,OAAA,CAAS,IAAM,CACT5C,CAAAA,EAAmB,CAACmD,CAAAA,CAAI,gBAE1B5C,CAAAA,CACE,IAAI,IAAA,CACF4C,CAAAA,CAAI,IAAA,CAAK,WAAA,GACTA,CAAAA,CAAI,IAAA,CAAK,QAAA,EAAS,CAClB,CACF,CACF,EAKA/B,CAAAA,CAAgB+B,CAAAA,CAAI,IAAI,EAI5B,CAAA,CACA,UAAYO,CAAAA,EAAMnB,EAAAA,CAAcmB,CAAAA,CAAGP,CAAAA,CAAI,IAAI,CAAA,CAC3C,SACEG,CAAAA,GACCtD,CAAAA,CAAkB,KAAA,CAAQ,CAACmD,CAAAA,CAAI,cAAA,CAAA,CAElC,UAAWF,GAAAA,CACTlG,EAAAA,CAAoB,CAClB,OAAA,CAASsG,CAAAA,CACL,UAAA,CACAE,EACE,OAAA,CACAJ,CAAAA,CAAI,OAAA,CACF,OAAA,CACCA,CAAAA,CAAI,cAAA,CAEHG,EACE,UAAA,CACA,SAAA,CAHF,SAAA,CAIV,IAAA,CAAAvD,CACF,CAAC,EACD,CAACoD,CAAAA,CAAI,cAAA,EAAkB,YAAA,CACvBK,CAAAA,EACE,0CACJ,EACA,YAAA,CAAYL,CAAAA,CAAI,IAAA,CAAK,kBAAA,CAAmBrE,CAAAA,CAAQ,CAC9C,QAAS,MAAA,CACT,IAAA,CAAM,SAAA,CACN,KAAA,CAAO,MAAA,CACP,GAAA,CAAK,SACP,CAAC,CAAA,CACD,eAAA,CAAeuE,CAAAA,CACf,eAAA,CAAeC,CAAAA,CACf,SAAUE,CAAAA,CAAY,CAAA,CAAI,EAAA,CAAA,CAEzBL,CAAAA,CAAI,IAAA,CAAK,OAAA,EACZ,CAEJ,CAAC,CACH,CAAA,CAGChE,CAAAA,GAAS,OAAA,EACP6B,GAA8C,IAAA,EAC/C,CAAEA,CAAAA,EAA8C,EAAA,EAC9C9B,CAAAA,CAAA,aAAA,CAAC,OAAI,SAAA,CAAU,kCAAA,CAAA,CACbA,CAAAA,CAAA,aAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,6CAA4C,iBAEzD,CACF,CAEN,CACF,CACF,CACF,CACF,CAEJ,CACF,EAEAD,EAAAA,CAAS,WAAA,CAAc,UAAA","file":"chunk-35I2BJC3.js","sourcesContent":["import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n getDaysInMonth as dateFnsGetDaysInMonth,\n startOfMonth,\n getDay,\n isSameDay as dateFnsIsSameDay,\n isWithinInterval,\n isBefore,\n isAfter,\n format as dateFnsFormat,\n startOfDay,\n endOfDay,\n} from \"date-fns\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\n\n// Calendar variants\nconst calendarVariants = cva(\n \"inline-block rounded-lg border bg-background shadow-lg\",\n {\n variants: {\n variant: {\n default: \"border-border bg-card\",\n outline: \"border-2 border-border\",\n ghost: \"border-transparent bg-transparent shadow-none\",\n },\n size: {\n sm: \"p-2\",\n md: \"p-3\",\n lg: \"p-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nconst calendarDayVariants = cva(\n \"flex items-center justify-center rounded-md font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"hover:bg-muted text-foreground\",\n selected:\n \"bg-primary text-primary-foreground hover:bg-primary/90 font-semibold\",\n range: \"bg-primary/10 text-primary hover:bg-primary/20 font-medium\",\n today: \"border-2 border-primary text-foreground font-semibold\",\n outside: \"text-muted-foreground\",\n disabled: \"text-muted-foreground/50 cursor-not-allowed\",\n },\n size: {\n sm: \"h-7 w-7 text-xs\",\n md: \"h-9 w-9 text-sm\",\n lg: \"h-11 w-11 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport type CalendarMode = \"single\" | \"range\" | \"multiple\";\n\nexport interface CalendarProps extends VariantProps<typeof calendarVariants> {\n mode?: CalendarMode;\n value?: Date | Date[] | { from?: Date; to?: Date };\n defaultValue?: Date | Date[] | { from?: Date; to?: Date };\n onChange?: (\n value: Date | Date[] | { from?: Date; to?: Date } | undefined,\n ) => void;\n minDate?: Date;\n maxDate?: Date;\n disabledDates?: Date[];\n disabledDays?: number[]; // 0 = Sunday, 1 = Monday, etc.\n locale?: string;\n placeholder?: string;\n label?: string;\n error?: boolean;\n helperText?: string;\n className?: string;\n inputClassName?: string;\n calendarClassName?: string;\n showOutsideDays?: boolean;\n firstDayOfWeek?: 0 | 1; // 0 = Sunday, 1 = Monday\n}\n\n// Helper functions using date-fns for robust date manipulation\nconst getDaysInMonth = (date: Date): number => {\n return dateFnsGetDaysInMonth(date);\n};\n\nconst getFirstDayOfMonth = (date: Date, firstDayOfWeek: 0 | 1): number => {\n // Use date-fns getDay for consistent day-of-week calculation\n const firstDay = getDay(startOfMonth(date));\n // Convert Sunday (0) to Monday-first (6) if needed\n // Sunday = 0, Monday = 1, ..., Saturday = 6\n // For Monday-first: Sunday becomes 6, Monday becomes 0, etc.\n return firstDayOfWeek === 1 ? (firstDay === 0 ? 6 : firstDay - 1) : firstDay;\n};\n\nconst isSameDay = (\n date1: Date | undefined,\n date2: Date | undefined,\n): boolean => {\n if (!date1 || !date2) return false;\n return dateFnsIsSameDay(date1, date2);\n};\n\nconst isDateInRange = (date: Date, from?: Date, to?: Date): boolean => {\n if (!from && !to) return false;\n if (from && to) {\n // Use date-fns isWithinInterval for proper date range checking\n return isWithinInterval(startOfDay(date), {\n start: startOfDay(from),\n end: endOfDay(to),\n });\n }\n if (from) return !isBefore(startOfDay(date), startOfDay(from));\n if (to) return !isAfter(startOfDay(date), endOfDay(to));\n return false;\n};\n\nconst isDateDisabled = (\n date: Date,\n minDate?: Date,\n maxDate?: Date,\n disabledDates?: Date[],\n disabledDays?: number[],\n): boolean => {\n if (minDate && isBefore(startOfDay(date), startOfDay(minDate))) return true;\n if (maxDate && isAfter(startOfDay(date), endOfDay(maxDate))) return true;\n if (disabledDates?.some((d) => isSameDay(d, date))) return true;\n if (disabledDays?.includes(getDay(date))) return true;\n return false;\n};\n\nconst formatDate = (\n date: Date | undefined,\n _locale: string = \"en-US\",\n): string => {\n if (!date) return \"\";\n // Use date-fns format for consistent formatting\n // Note: date-fns uses locale objects, but we'll use a simple format for now\n // For full locale support, import locale from 'date-fns/locale'\n // Locale parameter is kept for API compatibility but not yet used\n return dateFnsFormat(date, \"MMM d, yyyy\");\n};\n\nconst formatDateRange = (\n from?: Date,\n to?: Date,\n locale: string = \"en-US\",\n): string => {\n if (!from && !to) return \"\";\n if (from && to) {\n return `${formatDate(from, locale)} - ${formatDate(to, locale)}`;\n }\n if (from) return formatDate(from, locale);\n if (to) return formatDate(to, locale);\n return \"\";\n};\n\nconst formatMultipleDates = (\n dates: Date[],\n _locale: string = \"en-US\",\n): string => {\n if (dates.length === 0) return \"\";\n if (dates.length === 1) return formatDate(dates[0], _locale);\n return `${dates.length} dates selected`;\n};\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(\n (\n {\n mode = \"single\",\n value,\n defaultValue,\n onChange,\n minDate,\n maxDate,\n disabledDates,\n disabledDays,\n locale = \"en-US\",\n placeholder,\n label,\n error,\n helperText,\n className,\n inputClassName,\n calendarClassName,\n variant,\n size,\n showOutsideDays = true,\n firstDayOfWeek = 1,\n ...props\n },\n ref,\n ) => {\n const [open, setOpen] = useState(false);\n const [currentMonth, setCurrentMonth] = useState(new Date());\n const [focusedDate, setFocusedDate] = useState<Date | null>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n const dayButtonRefs = useRef<Map<string, HTMLButtonElement>>(new Map());\n\n // Controlled vs uncontrolled\n const [internalValue, setInternalValue] = useState<\n Date | Date[] | { from?: Date; to?: Date } | undefined\n >(defaultValue);\n\n const isControlled = value !== undefined;\n const calendarValue = isControlled ? value : internalValue;\n\n // Set focused date when calendar opens\n React.useLayoutEffect(() => {\n if (open && !focusedDate) {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n setFocusedDate(today);\n }\n }, [open, focusedDate]);\n\n // Handle value changes\n const handleValueChange = (\n newValue: Date | Date[] | { from?: Date; to?: Date } | undefined,\n ) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n // Handle date selection\n const handleDateClick = (date: Date) => {\n if (isDateDisabled(date, minDate, maxDate, disabledDates, disabledDays)) {\n return;\n }\n\n if (mode === \"single\") {\n handleValueChange(date);\n setOpen(false);\n } else if (mode === \"range\") {\n const rangeValue = calendarValue as\n { from?: Date; to?: Date } | undefined;\n if (!rangeValue?.from || (rangeValue.from && rangeValue.to)) {\n // Start new range\n handleValueChange({ from: date });\n } else {\n // Complete range\n const from = rangeValue.from;\n const to = date;\n if (to < from) {\n handleValueChange({ from: to, to: from });\n } else {\n handleValueChange({ from, to });\n }\n setOpen(false);\n }\n } else if (mode === \"multiple\") {\n const multipleValue = (calendarValue as Date[]) || [];\n const dateIndex = multipleValue.findIndex((d) => isSameDay(d, date));\n if (dateIndex >= 0) {\n // Remove date\n handleValueChange(multipleValue.filter((_, i) => i !== dateIndex));\n } else {\n // Add date\n handleValueChange([...multipleValue, date]);\n }\n }\n };\n\n // Get display value\n const displayValue = useMemo(() => {\n if (!calendarValue) return \"\";\n\n if (mode === \"single\") {\n return formatDate(calendarValue as Date, locale);\n } else if (mode === \"range\") {\n const range = calendarValue as { from?: Date; to?: Date };\n return formatDateRange(range.from, range.to, locale);\n } else {\n return formatMultipleDates(calendarValue as Date[], locale);\n }\n }, [calendarValue, mode, locale]);\n\n // Generate calendar days\n const calendarDays = useMemo(() => {\n const days: Array<{\n date: Date;\n isCurrentMonth: boolean;\n isToday: boolean;\n }> = [];\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const firstDay = getFirstDayOfMonth(currentMonth, firstDayOfWeek);\n const daysInMonth = getDaysInMonth(currentMonth);\n\n // Previous month days\n if (showOutsideDays && firstDay > 0) {\n const prevMonth = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth() - 1,\n );\n const daysInPrevMonth = getDaysInMonth(prevMonth);\n for (\n let i = daysInPrevMonth - firstDay + 1;\n i <= daysInPrevMonth;\n i++\n ) {\n const date = new Date(\n prevMonth.getFullYear(),\n prevMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: false,\n isToday: isSameDay(date, today),\n });\n }\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const date = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: true,\n isToday: isSameDay(date, today),\n });\n }\n\n // Next month days\n if (showOutsideDays) {\n const remainingDays = 42 - days.length; // 6 weeks * 7 days\n const nextMonth = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth() + 1,\n );\n for (let i = 1; i <= remainingDays; i++) {\n const date = new Date(\n nextMonth.getFullYear(),\n nextMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: false,\n isToday: isSameDay(date, today),\n });\n }\n }\n\n return days;\n }, [currentMonth, showOutsideDays, firstDayOfWeek]);\n\n // Navigate months\n const goToPreviousMonth = () => {\n setCurrentMonth(\n new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, 1),\n );\n };\n\n const goToNextMonth = () => {\n setCurrentMonth(\n new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, 1),\n );\n };\n\n const goToToday = () => {\n const today = new Date();\n setCurrentMonth(today);\n setFocusedDate(today);\n };\n\n // Keyboard navigation\n const handleKeyDown = (e: React.KeyboardEvent, date: Date) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleDateClick(date);\n return;\n }\n\n if (e.key === \"ArrowRight\") {\n e.preventDefault();\n const nextDate = new Date(date);\n nextDate.setDate(nextDate.getDate() + 1);\n setFocusedDate(nextDate);\n // Update month if needed\n if (nextDate.getMonth() !== currentMonth.getMonth()) {\n setCurrentMonth(\n new Date(nextDate.getFullYear(), nextDate.getMonth(), 1),\n );\n }\n return;\n }\n\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n const prevDate = new Date(date);\n prevDate.setDate(prevDate.getDate() - 1);\n setFocusedDate(prevDate);\n // Update month if needed\n if (prevDate.getMonth() !== currentMonth.getMonth()) {\n setCurrentMonth(\n new Date(prevDate.getFullYear(), prevDate.getMonth(), 1),\n );\n }\n return;\n }\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const nextDate = new Date(date);\n nextDate.setDate(nextDate.getDate() + 7);\n setFocusedDate(nextDate);\n // Update month if needed\n if (nextDate.getMonth() !== currentMonth.getMonth()) {\n setCurrentMonth(\n new Date(nextDate.getFullYear(), nextDate.getMonth(), 1),\n );\n }\n return;\n }\n\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n const prevDate = new Date(date);\n prevDate.setDate(prevDate.getDate() - 7);\n setFocusedDate(prevDate);\n // Update month if needed\n if (prevDate.getMonth() !== currentMonth.getMonth()) {\n setCurrentMonth(\n new Date(prevDate.getFullYear(), prevDate.getMonth(), 1),\n );\n }\n return;\n }\n\n if (e.key === \"Home\") {\n e.preventDefault();\n const firstDay = new Date(date.getFullYear(), date.getMonth(), 1);\n setFocusedDate(firstDay);\n return;\n }\n\n if (e.key === \"End\") {\n e.preventDefault();\n const lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n setFocusedDate(lastDay);\n return;\n }\n\n if (e.key === \"PageUp\") {\n e.preventDefault();\n const prevMonth = new Date(\n date.getFullYear(),\n date.getMonth() - 1,\n date.getDate(),\n );\n setFocusedDate(prevMonth);\n setCurrentMonth(\n new Date(prevMonth.getFullYear(), prevMonth.getMonth(), 1),\n );\n return;\n }\n\n if (e.key === \"PageDown\") {\n e.preventDefault();\n const nextMonth = new Date(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n );\n setFocusedDate(nextMonth);\n setCurrentMonth(\n new Date(nextMonth.getFullYear(), nextMonth.getMonth(), 1),\n );\n return;\n }\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n setOpen(false);\n return;\n }\n };\n\n // Focus management\n useEffect(() => {\n if (focusedDate && open) {\n const dateKey = `${focusedDate.getFullYear()}-${focusedDate.getMonth()}-${focusedDate.getDate()}`;\n const button = dayButtonRefs.current.get(dateKey);\n if (button) {\n button.focus();\n }\n }\n }, [focusedDate, open]);\n\n // Day names\n const dayNames = useMemo(() => {\n const names = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n if (firstDayOfWeek === 1) {\n return [...names.slice(1), names[0]];\n }\n return names;\n }, [firstDayOfWeek]);\n\n // Month/year display\n const monthYearDisplay = currentMonth.toLocaleDateString(locale, {\n month: \"long\",\n year: \"numeric\",\n });\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n <Popover.Root open={open} onOpenChange={setOpen}>\n <div className=\"space-y-2\">\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n </label>\n )}\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"flex w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background\",\n \"placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200 text-left\",\n error\n ? \"border-error-500 shadow-sm hover:border-error-600 focus-visible:ring-error-500/20 focus-visible:border-error-500\"\n : \"border-border shadow-sm hover:border-primary focus-visible:ring-ring/20 focus-visible:border-primary\",\n \"h-10\",\n inputClassName,\n )}\n // No onFocus handler here. Radix returns focus to the trigger\n // when the popover closes, so opening on focus meant selecting a\n // date closed it and immediately reopened it - the flicker. It\n // also popped the calendar open when tabbing past the field.\n onClick={() => setOpen(true)}\n aria-label={label || \"Open calendar\"}\n aria-invalid={error}\n >\n {displayValue || (\n <span className=\"text-muted-foreground\">\n {placeholder || \"Select date...\"}\n </span>\n )}\n </button>\n </Popover.Trigger>\n {helperText && (\n <p\n className={cn(\n \"text-sm text-muted-foreground\",\n error && \"text-error-600\",\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n\n <Popover.Portal>\n <Popover.Content\n className={cn(\n \"z-50 w-auto rounded-lg border bg-popover p-4 shadow-lg\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n )}\n sideOffset={5}\n align=\"start\"\n >\n <div\n ref={calendarRef}\n className={cn(\n calendarVariants({ variant, size }),\n calendarClassName,\n )}\n role=\"application\"\n aria-label=\"Calendar\"\n >\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToPreviousMonth}\n aria-label=\"Previous month\"\n >\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </Button>\n\n <h3\n className=\"text-sm font-semibold text-popover-foreground\"\n data-testid=\"calendar-month-year\"\n >\n {monthYearDisplay}\n </h3>\n\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToNextMonth}\n aria-label=\"Next month\"\n >\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </Button>\n </div>\n\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToToday}\n className=\"text-xs\"\n >\n Today\n </Button>\n </div>\n\n {/* Day names */}\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {dayNames.map((day) => (\n <div\n key={day}\n className=\"text-center text-xs font-medium text-muted-foreground\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {calendarDays.map((day, index) => {\n const isSelected =\n mode === \"single\"\n ? isSameDay(day.date, calendarValue as Date | undefined)\n : mode === \"range\"\n ? isDateInRange(\n day.date,\n (calendarValue as { from?: Date; to?: Date })\n ?.from,\n (calendarValue as { from?: Date; to?: Date })?.to,\n )\n : (calendarValue as Date[])?.some((d) =>\n isSameDay(d, day.date),\n );\n\n const isDisabled = isDateDisabled(\n day.date,\n minDate,\n maxDate,\n disabledDates,\n disabledDays,\n );\n\n const isInRange =\n mode === \"range\" &&\n (calendarValue as { from?: Date; to?: Date })?.from &&\n !(calendarValue as { from?: Date; to?: Date })?.to &&\n day.date >=\n (calendarValue as { from?: Date; to?: Date }).from!;\n\n const dateKey = `${day.date.getFullYear()}-${day.date.getMonth()}-${day.date.getDate()}`;\n const isFocused =\n focusedDate && isSameDay(day.date, focusedDate);\n\n return (\n <button\n key={`${day.date.getTime()}-${index}`}\n ref={(el) => {\n if (el) {\n dayButtonRefs.current.set(dateKey, el);\n } else {\n dayButtonRefs.current.delete(dateKey);\n }\n }}\n type=\"button\"\n onClick={() => {\n if (showOutsideDays && !day.isCurrentMonth) {\n // Navigate to the month of the clicked date\n setCurrentMonth(\n new Date(\n day.date.getFullYear(),\n day.date.getMonth(),\n 1,\n ),\n );\n // Synchronously: React batches both updates into one\n // render. Deferring the selection by a tick showed the\n // new month first and selected a frame later, which\n // read as a flash.\n handleDateClick(day.date);\n } else {\n handleDateClick(day.date);\n }\n }}\n onKeyDown={(e) => handleKeyDown(e, day.date)}\n disabled={\n isDisabled ||\n (showOutsideDays ? false : !day.isCurrentMonth)\n }\n className={cn(\n calendarDayVariants({\n variant: isSelected\n ? \"selected\"\n : isInRange\n ? \"range\"\n : day.isToday\n ? \"today\"\n : !day.isCurrentMonth\n ? \"outside\"\n : isDisabled\n ? \"disabled\"\n : \"default\",\n size,\n }),\n !day.isCurrentMonth && \"opacity-50\",\n isFocused &&\n \"ring-2 ring-brand-500 ring-offset-2 z-10\",\n )}\n aria-label={day.date.toLocaleDateString(locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n })}\n aria-selected={isSelected}\n aria-disabled={isDisabled}\n tabIndex={isFocused ? 0 : -1}\n >\n {day.date.getDate()}\n </button>\n );\n })}\n </div>\n\n {/* Footer for range mode */}\n {mode === \"range\" &&\n (calendarValue as { from?: Date; to?: Date })?.from &&\n !(calendarValue as { from?: Date; to?: Date })?.to && (\n <div className=\"mt-4 pt-4 border-t border-border\">\n <p className=\"text-xs text-muted-foreground text-center\">\n Select end date\n </p>\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n );\n },\n);\n\nCalendar.displayName = \"Calendar\";\n\nexport { calendarVariants, calendarDayVariants };\n"]}
|
package/dist/chunk-JCETHQ55.cjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
'use strict';var chunk5PVFLXPO_cjs=require('./chunk-5PVFLXPO.cjs'),chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),a=require('react'),v=require('@radix-ui/react-popover'),classVarianceAuthority=require('class-variance-authority'),dateFns=require('date-fns');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var a__default=/*#__PURE__*/_interopDefault(a);var v__namespace=/*#__PURE__*/_interopNamespace(v);var ye=classVarianceAuthority.cva("inline-block rounded-lg border bg-background shadow-lg",{variants:{variant:{default:"border-border bg-card",outline:"border-2 border-border",ghost:"border-transparent bg-transparent shadow-none"},size:{sm:"p-2",md:"p-3",lg:"p-4"}},defaultVariants:{variant:"default",size:"md"}}),we=classVarianceAuthority.cva("flex items-center justify-center rounded-md font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"hover:bg-muted text-foreground",selected:"bg-primary text-primary-foreground hover:bg-primary/90 font-semibold",range:"bg-primary/10 text-primary hover:bg-primary/20 font-medium",today:"border-2 border-primary text-foreground font-semibold",outside:"text-muted-foreground",disabled:"text-muted-foreground/50 cursor-not-allowed"},size:{sm:"h-7 w-7 text-xs",md:"h-9 w-9 text-sm",lg:"h-11 w-11 text-base"}},defaultVariants:{variant:"default",size:"md"}}),W=n=>dateFns.getDaysInMonth(n),xe=(n,o)=>{let s=dateFns.getDay(dateFns.startOfMonth(n));return o===1?s===0?6:s-1:s},h=(n,o)=>!n||!o?false:dateFns.isSameDay(n,o),Ce=(n,o,s)=>!o&&!s?false:o&&s?dateFns.isWithinInterval(dateFns.startOfDay(n),{start:dateFns.startOfDay(o),end:dateFns.endOfDay(s)}):o?!dateFns.isBefore(dateFns.startOfDay(n),dateFns.startOfDay(o)):s?!dateFns.isAfter(dateFns.startOfDay(n),dateFns.endOfDay(s)):false,_=(n,o,s,I,N)=>!!(o&&dateFns.isBefore(dateFns.startOfDay(n),dateFns.startOfDay(o))||s&&dateFns.isAfter(dateFns.startOfDay(n),dateFns.endOfDay(s))||I?.some(Y=>h(Y,n))||N?.includes(dateFns.getDay(n))),x=(n,o="en-US")=>n?dateFns.format(n,"MMM d, yyyy"):"",ke=(n,o,s="en-US")=>!n&&!o?"":n&&o?`${x(n,s)} - ${x(o,s)}`:n?x(n,s):o?x(o,s):"",Fe=(n,o="en-US")=>n.length===0?"":n.length===1?x(n[0],o):`${n.length} dates selected`,Ne=a__default.default.forwardRef(({mode:n="single",value:o,defaultValue:s,onChange:I,minDate:N,maxDate:Y,disabledDates:A,disabledDays:H,locale:y="en-US",placeholder:X,label:V,error:L,helperText:U,className:Z,inputClassName:R,calendarClassName:ee,variant:te,size:K,showOutsideDays:C=true,firstDayOfWeek:P=1,...ne},re)=>{let[k,F]=a.useState(false),[i,c]=a.useState(new Date),[p,D]=a.useState(null),ae=a.useRef(null),$=a.useRef(new Map),[oe,se]=a.useState(s),j=o!==void 0,l=j?o:oe;a__default.default.useLayoutEffect(()=>{if(k&&!p){let e=new Date;e.setHours(0,0,0,0),D(e);}},[k,p]);let w=e=>{j||se(e),I?.(e);},z=e=>{if(!_(e,N,Y,A,H)){if(n==="single")w(e),F(false);else if(n==="range"){let r=l;if(!r?.from||r.from&&r.to)w({from:e});else {let t=r.from,d=e;d<t?w({from:d,to:t}):w({from:t,to:d}),F(false);}}else if(n==="multiple"){let r=l||[],t=r.findIndex(d=>h(d,e));t>=0?w(r.filter((d,u)=>u!==t)):w([...r,e]);}}},ie=a.useMemo(()=>{if(!l)return "";if(n==="single")return x(l,y);if(n==="range"){let e=l;return ke(e.from,e.to,y)}else return Fe(l,y)},[l,n,y]),le=a.useMemo(()=>{let e=[],r=new Date;r.setHours(0,0,0,0);let t=xe(i,P),d=W(i);if(C&&t>0){let u=new Date(i.getFullYear(),i.getMonth()-1),g=W(u);for(let m=g-t+1;m<=g;m++){let f=new Date(u.getFullYear(),u.getMonth(),m);e.push({date:f,isCurrentMonth:false,isToday:h(f,r)});}}for(let u=1;u<=d;u++){let g=new Date(i.getFullYear(),i.getMonth(),u);e.push({date:g,isCurrentMonth:true,isToday:h(g,r)});}if(C){let u=42-e.length,g=new Date(i.getFullYear(),i.getMonth()+1);for(let m=1;m<=u;m++){let f=new Date(g.getFullYear(),g.getMonth(),m);e.push({date:f,isCurrentMonth:false,isToday:h(f,r)});}}return e},[i,C,P]),ue=()=>{c(new Date(i.getFullYear(),i.getMonth()-1,1));},de=()=>{c(new Date(i.getFullYear(),i.getMonth()+1,1));},fe=()=>{let e=new Date;c(e),D(e);},ge=(e,r)=>{if(e.key==="Enter"||e.key===" "){e.preventDefault(),z(r);return}if(e.key==="ArrowRight"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()+1),D(t),t.getMonth()!==i.getMonth()&&c(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="ArrowLeft"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()-1),D(t),t.getMonth()!==i.getMonth()&&c(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="ArrowDown"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()+7),D(t),t.getMonth()!==i.getMonth()&&c(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="ArrowUp"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()-7),D(t),t.getMonth()!==i.getMonth()&&c(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="Home"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth(),1);D(t);return}if(e.key==="End"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth()+1,0);D(t);return}if(e.key==="PageUp"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth()-1,r.getDate());D(t),c(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="PageDown"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth()+1,r.getDate());D(t),c(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="Escape"){e.preventDefault(),F(false);return}};a.useEffect(()=>{if(p&&k){let e=`${p.getFullYear()}-${p.getMonth()}-${p.getDate()}`,r=$.current.get(e);r&&r.focus();}},[p,k]);let ce=a.useMemo(()=>{let e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];return P===1?[...e.slice(1),e[0]]:e},[P]),De=i.toLocaleDateString(y,{month:"long",year:"numeric"});return a__default.default.createElement("div",{ref:re,className:chunkITRGJNWL_cjs.a("w-full",Z),...ne},a__default.default.createElement(v__namespace.Root,{open:k,onOpenChange:F},a__default.default.createElement("div",{className:"space-y-2"},V&&a__default.default.createElement("label",{className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},V),a__default.default.createElement(v__namespace.Trigger,{asChild:true},a__default.default.createElement("button",{type:"button",className:chunkITRGJNWL_cjs.a("flex w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background","placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2","disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200 text-left",L?"border-error-500 shadow-sm hover:border-error-600 focus-visible:ring-error-500/20 focus-visible:border-error-500":"border-border shadow-sm hover:border-primary focus-visible:ring-ring/20 focus-visible:border-primary","h-10",R),onClick:()=>F(true),"aria-label":V||"Open calendar","aria-invalid":L},ie||a__default.default.createElement("span",{className:"text-muted-foreground"},X||"Select date..."))),U&&a__default.default.createElement("p",{className:chunkITRGJNWL_cjs.a("text-sm text-muted-foreground",L&&"text-error-600")},U)),a__default.default.createElement(v__namespace.Portal,null,a__default.default.createElement(v__namespace.Content,{className:chunkITRGJNWL_cjs.a("z-50 w-auto rounded-lg border bg-popover p-4 shadow-lg","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"),sideOffset:5,align:"start"},a__default.default.createElement("div",{ref:ae,className:chunkITRGJNWL_cjs.a(ye({variant:te,size:K}),ee),role:"application","aria-label":"Calendar"},a__default.default.createElement("div",{className:"flex items-center justify-between mb-4"},a__default.default.createElement("div",{className:"flex items-center gap-2"},a__default.default.createElement(chunk5PVFLXPO_cjs.b,{variant:"ghost",size:"sm",onClick:ue,"aria-label":"Previous month"},a__default.default.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},a__default.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),a__default.default.createElement("h3",{className:"text-sm font-semibold text-popover-foreground","data-testid":"calendar-month-year"},De),a__default.default.createElement(chunk5PVFLXPO_cjs.b,{variant:"ghost",size:"sm",onClick:de,"aria-label":"Next month"},a__default.default.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},a__default.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})))),a__default.default.createElement(chunk5PVFLXPO_cjs.b,{variant:"ghost",size:"sm",onClick:fe,className:"text-xs"},"Today")),a__default.default.createElement("div",{className:"grid grid-cols-7 gap-1 mb-2"},ce.map(e=>a__default.default.createElement("div",{key:e,className:"text-center text-xs font-medium text-muted-foreground"},e))),a__default.default.createElement("div",{className:"grid grid-cols-7 gap-1"},le.map((e,r)=>{let t=n==="single"?h(e.date,l):n==="range"?Ce(e.date,l?.from,l?.to):l?.some(f=>h(f,e.date)),d=_(e.date,N,Y,A,H),u=n==="range"&&l?.from&&!l?.to&&e.date>=l.from,g=`${e.date.getFullYear()}-${e.date.getMonth()}-${e.date.getDate()}`,m=p&&h(e.date,p);return a__default.default.createElement("button",{key:`${e.date.getTime()}-${r}`,ref:f=>{f?$.current.set(g,f):$.current.delete(g);},type:"button",onClick:()=>{C&&!e.isCurrentMonth&&c(new Date(e.date.getFullYear(),e.date.getMonth(),1)),z(e.date);},onKeyDown:f=>ge(f,e.date),disabled:d||(C?false:!e.isCurrentMonth),className:chunkITRGJNWL_cjs.a(we({variant:t?"selected":u?"range":e.isToday?"today":e.isCurrentMonth?d?"disabled":"default":"outside",size:K}),!e.isCurrentMonth&&"opacity-50",m&&"ring-2 ring-brand-500 ring-offset-2 z-10"),"aria-label":e.date.toLocaleDateString(y,{weekday:"long",year:"numeric",month:"long",day:"numeric"}),"aria-selected":t,"aria-disabled":d,tabIndex:m?0:-1},e.date.getDate())})),n==="range"&&l?.from&&!l?.to&&a__default.default.createElement("div",{className:"mt-4 pt-4 border-t border-border"},a__default.default.createElement("p",{className:"text-xs text-muted-foreground text-center"},"Select end date")))))))});Ne.displayName="Calendar";exports.a=ye;exports.b=we;exports.c=Ne;//# sourceMappingURL=chunk-JCETHQ55.cjs.map
|
|
3
|
-
//# sourceMappingURL=chunk-JCETHQ55.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/core/calendar.tsx"],"names":["calendarVariants","cva","calendarDayVariants","getDaysInMonth","date","dateFnsGetDaysInMonth","getFirstDayOfMonth","firstDayOfWeek","firstDay","getDay","startOfMonth","isSameDay","date1","date2","dateFnsIsSameDay","isDateInRange","from","to","isWithinInterval","startOfDay","endOfDay","isBefore","isAfter","isDateDisabled","minDate","maxDate","disabledDates","disabledDays","d","formatDate","_locale","dateFnsFormat","formatDateRange","locale","formatMultipleDates","dates","Calendar","React","mode","value","defaultValue","onChange","placeholder","label","error","helperText","className","inputClassName","calendarClassName","variant","size","showOutsideDays","props","ref","open","setOpen","useState","currentMonth","setCurrentMonth","focusedDate","setFocusedDate","calendarRef","useRef","dayButtonRefs","internalValue","setInternalValue","isControlled","calendarValue","today","handleValueChange","newValue","handleDateClick","rangeValue","multipleValue","dateIndex","_","i","displayValue","useMemo","range","calendarDays","days","daysInMonth","prevMonth","daysInPrevMonth","remainingDays","nextMonth","goToPreviousMonth","goToNextMonth","goToToday","handleKeyDown","nextDate","prevDate","lastDay","useEffect","dateKey","button","dayNames","names","monthYearDisplay","cn","v","Button","day","index","isSelected","isDisabled","isInRange","isFocused","el","e"],"mappings":"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","file":"chunk-JCETHQ55.cjs","sourcesContent":["import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n getDaysInMonth as dateFnsGetDaysInMonth,\n startOfMonth,\n getDay,\n isSameDay as dateFnsIsSameDay,\n isWithinInterval,\n isBefore,\n isAfter,\n format as dateFnsFormat,\n startOfDay,\n endOfDay,\n} from \"date-fns\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\n\n// Calendar variants\nconst calendarVariants = cva(\n \"inline-block rounded-lg border bg-background shadow-lg\",\n {\n variants: {\n variant: {\n default: \"border-border bg-card\",\n outline: \"border-2 border-border\",\n ghost: \"border-transparent bg-transparent shadow-none\",\n },\n size: {\n sm: \"p-2\",\n md: \"p-3\",\n lg: \"p-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nconst calendarDayVariants = cva(\n \"flex items-center justify-center rounded-md font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"hover:bg-muted text-foreground\",\n selected:\n \"bg-primary text-primary-foreground hover:bg-primary/90 font-semibold\",\n range: \"bg-primary/10 text-primary hover:bg-primary/20 font-medium\",\n today: \"border-2 border-primary text-foreground font-semibold\",\n outside: \"text-muted-foreground\",\n disabled: \"text-muted-foreground/50 cursor-not-allowed\",\n },\n size: {\n sm: \"h-7 w-7 text-xs\",\n md: \"h-9 w-9 text-sm\",\n lg: \"h-11 w-11 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport type CalendarMode = \"single\" | \"range\" | \"multiple\";\n\nexport interface CalendarProps extends VariantProps<typeof calendarVariants> {\n mode?: CalendarMode;\n value?: Date | Date[] | { from?: Date; to?: Date };\n defaultValue?: Date | Date[] | { from?: Date; to?: Date };\n onChange?: (\n value: Date | Date[] | { from?: Date; to?: Date } | undefined,\n ) => void;\n minDate?: Date;\n maxDate?: Date;\n disabledDates?: Date[];\n disabledDays?: number[]; // 0 = Sunday, 1 = Monday, etc.\n locale?: string;\n placeholder?: string;\n label?: string;\n error?: boolean;\n helperText?: string;\n className?: string;\n inputClassName?: string;\n calendarClassName?: string;\n showOutsideDays?: boolean;\n firstDayOfWeek?: 0 | 1; // 0 = Sunday, 1 = Monday\n}\n\n// Helper functions using date-fns for robust date manipulation\nconst getDaysInMonth = (date: Date): number => {\n return dateFnsGetDaysInMonth(date);\n};\n\nconst getFirstDayOfMonth = (date: Date, firstDayOfWeek: 0 | 1): number => {\n // Use date-fns getDay for consistent day-of-week calculation\n const firstDay = getDay(startOfMonth(date));\n // Convert Sunday (0) to Monday-first (6) if needed\n // Sunday = 0, Monday = 1, ..., Saturday = 6\n // For Monday-first: Sunday becomes 6, Monday becomes 0, etc.\n return firstDayOfWeek === 1 ? (firstDay === 0 ? 6 : firstDay - 1) : firstDay;\n};\n\nconst isSameDay = (\n date1: Date | undefined,\n date2: Date | undefined,\n): boolean => {\n if (!date1 || !date2) return false;\n return dateFnsIsSameDay(date1, date2);\n};\n\nconst isDateInRange = (date: Date, from?: Date, to?: Date): boolean => {\n if (!from && !to) return false;\n if (from && to) {\n // Use date-fns isWithinInterval for proper date range checking\n return isWithinInterval(startOfDay(date), {\n start: startOfDay(from),\n end: endOfDay(to),\n });\n }\n if (from) return !isBefore(startOfDay(date), startOfDay(from));\n if (to) return !isAfter(startOfDay(date), endOfDay(to));\n return false;\n};\n\nconst isDateDisabled = (\n date: Date,\n minDate?: Date,\n maxDate?: Date,\n disabledDates?: Date[],\n disabledDays?: number[],\n): boolean => {\n if (minDate && isBefore(startOfDay(date), startOfDay(minDate))) return true;\n if (maxDate && isAfter(startOfDay(date), endOfDay(maxDate))) return true;\n if (disabledDates?.some((d) => isSameDay(d, date))) return true;\n if (disabledDays?.includes(getDay(date))) return true;\n return false;\n};\n\nconst formatDate = (\n date: Date | undefined,\n _locale: string = \"en-US\",\n): string => {\n if (!date) return \"\";\n // Use date-fns format for consistent formatting\n // Note: date-fns uses locale objects, but we'll use a simple format for now\n // For full locale support, import locale from 'date-fns/locale'\n // Locale parameter is kept for API compatibility but not yet used\n return dateFnsFormat(date, \"MMM d, yyyy\");\n};\n\nconst formatDateRange = (\n from?: Date,\n to?: Date,\n locale: string = \"en-US\",\n): string => {\n if (!from && !to) return \"\";\n if (from && to) {\n return `${formatDate(from, locale)} - ${formatDate(to, locale)}`;\n }\n if (from) return formatDate(from, locale);\n if (to) return formatDate(to, locale);\n return \"\";\n};\n\nconst formatMultipleDates = (\n dates: Date[],\n _locale: string = \"en-US\",\n): string => {\n if (dates.length === 0) return \"\";\n if (dates.length === 1) return formatDate(dates[0], _locale);\n return `${dates.length} dates selected`;\n};\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(\n (\n {\n mode = \"single\",\n value,\n defaultValue,\n onChange,\n minDate,\n maxDate,\n disabledDates,\n disabledDays,\n locale = \"en-US\",\n placeholder,\n label,\n error,\n helperText,\n className,\n inputClassName,\n calendarClassName,\n variant,\n size,\n showOutsideDays = true,\n firstDayOfWeek = 1,\n ...props\n },\n ref,\n ) => {\n const [open, setOpen] = useState(false);\n const [currentMonth, setCurrentMonth] = useState(new Date());\n const [focusedDate, setFocusedDate] = useState<Date | null>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n const dayButtonRefs = useRef<Map<string, HTMLButtonElement>>(new Map());\n\n // Controlled vs uncontrolled\n const [internalValue, setInternalValue] = useState<\n Date | Date[] | { from?: Date; to?: Date } | undefined\n >(defaultValue);\n\n const isControlled = value !== undefined;\n const calendarValue = isControlled ? value : internalValue;\n\n // Set focused date when calendar opens\n React.useLayoutEffect(() => {\n if (open && !focusedDate) {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n setFocusedDate(today);\n }\n }, [open, focusedDate]);\n\n // Handle value changes\n const handleValueChange = (\n newValue: Date | Date[] | { from?: Date; to?: Date } | undefined,\n ) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n // Handle date selection\n const handleDateClick = (date: Date) => {\n if (isDateDisabled(date, minDate, maxDate, disabledDates, disabledDays)) {\n return;\n }\n\n if (mode === \"single\") {\n handleValueChange(date);\n setOpen(false);\n } else if (mode === \"range\") {\n const rangeValue = calendarValue as\n { from?: Date; to?: Date } | undefined;\n if (!rangeValue?.from || (rangeValue.from && rangeValue.to)) {\n // Start new range\n handleValueChange({ from: date });\n } else {\n // Complete range\n const from = rangeValue.from;\n const to = date;\n if (to < from) {\n handleValueChange({ from: to, to: from });\n } else {\n handleValueChange({ from, to });\n }\n setOpen(false);\n }\n } else if (mode === \"multiple\") {\n const multipleValue = (calendarValue as Date[]) || [];\n const dateIndex = multipleValue.findIndex((d) => isSameDay(d, date));\n if (dateIndex >= 0) {\n // Remove date\n handleValueChange(multipleValue.filter((_, i) => i !== dateIndex));\n } else {\n // Add date\n handleValueChange([...multipleValue, date]);\n }\n }\n };\n\n // Get display value\n const displayValue = useMemo(() => {\n if (!calendarValue) return \"\";\n\n if (mode === \"single\") {\n return formatDate(calendarValue as Date, locale);\n } else if (mode === \"range\") {\n const range = calendarValue as { from?: Date; to?: Date };\n return formatDateRange(range.from, range.to, locale);\n } else {\n return formatMultipleDates(calendarValue as Date[], locale);\n }\n }, [calendarValue, mode, locale]);\n\n // Generate calendar days\n const calendarDays = useMemo(() => {\n const days: Array<{\n date: Date;\n isCurrentMonth: boolean;\n isToday: boolean;\n }> = [];\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const firstDay = getFirstDayOfMonth(currentMonth, firstDayOfWeek);\n const daysInMonth = getDaysInMonth(currentMonth);\n\n // Previous month days\n if (showOutsideDays && firstDay > 0) {\n const prevMonth = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth() - 1,\n );\n const daysInPrevMonth = getDaysInMonth(prevMonth);\n for (\n let i = daysInPrevMonth - firstDay + 1;\n i <= daysInPrevMonth;\n i++\n ) {\n const date = new Date(\n prevMonth.getFullYear(),\n prevMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: false,\n isToday: isSameDay(date, today),\n });\n }\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const date = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: true,\n isToday: isSameDay(date, today),\n });\n }\n\n // Next month days\n if (showOutsideDays) {\n const remainingDays = 42 - days.length; // 6 weeks * 7 days\n const nextMonth = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth() + 1,\n );\n for (let i = 1; i <= remainingDays; i++) {\n const date = new Date(\n nextMonth.getFullYear(),\n nextMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: false,\n isToday: isSameDay(date, today),\n });\n }\n }\n\n return days;\n }, [currentMonth, showOutsideDays, firstDayOfWeek]);\n\n // Navigate months\n const goToPreviousMonth = () => {\n setCurrentMonth(\n new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, 1),\n );\n };\n\n const goToNextMonth = () => {\n setCurrentMonth(\n new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, 1),\n );\n };\n\n const goToToday = () => {\n const today = new Date();\n setCurrentMonth(today);\n setFocusedDate(today);\n };\n\n // Keyboard navigation\n const handleKeyDown = (e: React.KeyboardEvent, date: Date) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleDateClick(date);\n return;\n }\n\n if (e.key === \"ArrowRight\") {\n e.preventDefault();\n const nextDate = new Date(date);\n nextDate.setDate(nextDate.getDate() + 1);\n setFocusedDate(nextDate);\n // Update month if needed\n if (nextDate.getMonth() !== currentMonth.getMonth()) {\n setCurrentMonth(\n new Date(nextDate.getFullYear(), nextDate.getMonth(), 1),\n );\n }\n return;\n }\n\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n const prevDate = new Date(date);\n prevDate.setDate(prevDate.getDate() - 1);\n setFocusedDate(prevDate);\n // Update month if needed\n if (prevDate.getMonth() !== currentMonth.getMonth()) {\n setCurrentMonth(\n new Date(prevDate.getFullYear(), prevDate.getMonth(), 1),\n );\n }\n return;\n }\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const nextDate = new Date(date);\n nextDate.setDate(nextDate.getDate() + 7);\n setFocusedDate(nextDate);\n // Update month if needed\n if (nextDate.getMonth() !== currentMonth.getMonth()) {\n setCurrentMonth(\n new Date(nextDate.getFullYear(), nextDate.getMonth(), 1),\n );\n }\n return;\n }\n\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n const prevDate = new Date(date);\n prevDate.setDate(prevDate.getDate() - 7);\n setFocusedDate(prevDate);\n // Update month if needed\n if (prevDate.getMonth() !== currentMonth.getMonth()) {\n setCurrentMonth(\n new Date(prevDate.getFullYear(), prevDate.getMonth(), 1),\n );\n }\n return;\n }\n\n if (e.key === \"Home\") {\n e.preventDefault();\n const firstDay = new Date(date.getFullYear(), date.getMonth(), 1);\n setFocusedDate(firstDay);\n return;\n }\n\n if (e.key === \"End\") {\n e.preventDefault();\n const lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n setFocusedDate(lastDay);\n return;\n }\n\n if (e.key === \"PageUp\") {\n e.preventDefault();\n const prevMonth = new Date(\n date.getFullYear(),\n date.getMonth() - 1,\n date.getDate(),\n );\n setFocusedDate(prevMonth);\n setCurrentMonth(\n new Date(prevMonth.getFullYear(), prevMonth.getMonth(), 1),\n );\n return;\n }\n\n if (e.key === \"PageDown\") {\n e.preventDefault();\n const nextMonth = new Date(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n );\n setFocusedDate(nextMonth);\n setCurrentMonth(\n new Date(nextMonth.getFullYear(), nextMonth.getMonth(), 1),\n );\n return;\n }\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n setOpen(false);\n return;\n }\n };\n\n // Focus management\n useEffect(() => {\n if (focusedDate && open) {\n const dateKey = `${focusedDate.getFullYear()}-${focusedDate.getMonth()}-${focusedDate.getDate()}`;\n const button = dayButtonRefs.current.get(dateKey);\n if (button) {\n button.focus();\n }\n }\n }, [focusedDate, open]);\n\n // Day names\n const dayNames = useMemo(() => {\n const names = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n if (firstDayOfWeek === 1) {\n return [...names.slice(1), names[0]];\n }\n return names;\n }, [firstDayOfWeek]);\n\n // Month/year display\n const monthYearDisplay = currentMonth.toLocaleDateString(locale, {\n month: \"long\",\n year: \"numeric\",\n });\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n <Popover.Root open={open} onOpenChange={setOpen}>\n <div className=\"space-y-2\">\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n </label>\n )}\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"flex w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background\",\n \"placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200 text-left\",\n error\n ? \"border-error-500 shadow-sm hover:border-error-600 focus-visible:ring-error-500/20 focus-visible:border-error-500\"\n : \"border-border shadow-sm hover:border-primary focus-visible:ring-ring/20 focus-visible:border-primary\",\n \"h-10\",\n inputClassName,\n )}\n // No onFocus handler here. Radix returns focus to the trigger\n // when the popover closes, so opening on focus meant selecting a\n // date closed it and immediately reopened it - the flicker. It\n // also popped the calendar open when tabbing past the field.\n onClick={() => setOpen(true)}\n aria-label={label || \"Open calendar\"}\n aria-invalid={error}\n >\n {displayValue || (\n <span className=\"text-muted-foreground\">\n {placeholder || \"Select date...\"}\n </span>\n )}\n </button>\n </Popover.Trigger>\n {helperText && (\n <p\n className={cn(\n \"text-sm text-muted-foreground\",\n error && \"text-error-600\",\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n\n <Popover.Portal>\n <Popover.Content\n className={cn(\n \"z-50 w-auto rounded-lg border bg-popover p-4 shadow-lg\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n )}\n sideOffset={5}\n align=\"start\"\n >\n <div\n ref={calendarRef}\n className={cn(\n calendarVariants({ variant, size }),\n calendarClassName,\n )}\n role=\"application\"\n aria-label=\"Calendar\"\n >\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToPreviousMonth}\n aria-label=\"Previous month\"\n >\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </Button>\n\n <h3\n className=\"text-sm font-semibold text-popover-foreground\"\n data-testid=\"calendar-month-year\"\n >\n {monthYearDisplay}\n </h3>\n\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToNextMonth}\n aria-label=\"Next month\"\n >\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </Button>\n </div>\n\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToToday}\n className=\"text-xs\"\n >\n Today\n </Button>\n </div>\n\n {/* Day names */}\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {dayNames.map((day) => (\n <div\n key={day}\n className=\"text-center text-xs font-medium text-muted-foreground\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {calendarDays.map((day, index) => {\n const isSelected =\n mode === \"single\"\n ? isSameDay(day.date, calendarValue as Date | undefined)\n : mode === \"range\"\n ? isDateInRange(\n day.date,\n (calendarValue as { from?: Date; to?: Date })\n ?.from,\n (calendarValue as { from?: Date; to?: Date })?.to,\n )\n : (calendarValue as Date[])?.some((d) =>\n isSameDay(d, day.date),\n );\n\n const isDisabled = isDateDisabled(\n day.date,\n minDate,\n maxDate,\n disabledDates,\n disabledDays,\n );\n\n const isInRange =\n mode === \"range\" &&\n (calendarValue as { from?: Date; to?: Date })?.from &&\n !(calendarValue as { from?: Date; to?: Date })?.to &&\n day.date >=\n (calendarValue as { from?: Date; to?: Date }).from!;\n\n const dateKey = `${day.date.getFullYear()}-${day.date.getMonth()}-${day.date.getDate()}`;\n const isFocused =\n focusedDate && isSameDay(day.date, focusedDate);\n\n return (\n <button\n key={`${day.date.getTime()}-${index}`}\n ref={(el) => {\n if (el) {\n dayButtonRefs.current.set(dateKey, el);\n } else {\n dayButtonRefs.current.delete(dateKey);\n }\n }}\n type=\"button\"\n onClick={() => {\n if (showOutsideDays && !day.isCurrentMonth) {\n // Navigate to the month of the clicked date\n setCurrentMonth(\n new Date(\n day.date.getFullYear(),\n day.date.getMonth(),\n 1,\n ),\n );\n // Synchronously: React batches both updates into one\n // render. Deferring the selection by a tick showed the\n // new month first and selected a frame later, which\n // read as a flash.\n handleDateClick(day.date);\n } else {\n handleDateClick(day.date);\n }\n }}\n onKeyDown={(e) => handleKeyDown(e, day.date)}\n disabled={\n isDisabled ||\n (showOutsideDays ? false : !day.isCurrentMonth)\n }\n className={cn(\n calendarDayVariants({\n variant: isSelected\n ? \"selected\"\n : isInRange\n ? \"range\"\n : day.isToday\n ? \"today\"\n : !day.isCurrentMonth\n ? \"outside\"\n : isDisabled\n ? \"disabled\"\n : \"default\",\n size,\n }),\n !day.isCurrentMonth && \"opacity-50\",\n isFocused &&\n \"ring-2 ring-brand-500 ring-offset-2 z-10\",\n )}\n aria-label={day.date.toLocaleDateString(locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n })}\n aria-selected={isSelected}\n aria-disabled={isDisabled}\n tabIndex={isFocused ? 0 : -1}\n >\n {day.date.getDate()}\n </button>\n );\n })}\n </div>\n\n {/* Footer for range mode */}\n {mode === \"range\" &&\n (calendarValue as { from?: Date; to?: Date })?.from &&\n !(calendarValue as { from?: Date; to?: Date })?.to && (\n <div className=\"mt-4 pt-4 border-t border-border\">\n <p className=\"text-xs text-muted-foreground text-center\">\n Select end date\n </p>\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n );\n },\n);\n\nCalendar.displayName = \"Calendar\";\n\nexport { calendarVariants, calendarDayVariants };\n"]}
|