tembro 2.1.10 → 2.1.12
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/components/calendar/calendar.cjs +1 -1
- package/dist/components/calendar/calendar.js +141 -142
- package/dist/components/ui/radio-group/index.cjs +1 -1
- package/dist/components/ui/radio-group/index.js +0 -1
- package/dist/showcase/package-meta.cjs +1 -1
- package/dist/showcase/package-meta.d.ts +3 -3
- package/dist/showcase/package-meta.js +1 -1
- package/dist/showcase/premium/accordion/mock.cjs +1 -1
- package/dist/showcase/premium/accordion/mock.js +1 -1
- package/dist/showcase/premium/avatar/mock.cjs +1 -1
- package/dist/showcase/premium/avatar/mock.js +1 -1
- package/dist/showcase/premium/button/mock.cjs +1 -1
- package/dist/showcase/premium/button/mock.js +1 -1
- package/dist/showcase/premium/calendar-scheduler/mock.cjs +1 -1
- package/dist/showcase/premium/calendar-scheduler/mock.js +1 -1
- package/dist/showcase/premium/carousel/mock.cjs +1 -1
- package/dist/showcase/premium/carousel/mock.js +1 -1
- package/dist/showcase/premium/code-block/mock.cjs +1 -1
- package/dist/showcase/premium/code-block/mock.js +1 -1
- package/dist/showcase/premium/command-bar/mock.cjs +1 -1
- package/dist/showcase/premium/command-bar/mock.js +1 -1
- package/dist/showcase/premium/confirm-dialog/mock.cjs +1 -1
- package/dist/showcase/premium/confirm-dialog/mock.js +1 -1
- package/dist/showcase/premium/copy-button/mock.cjs +1 -1
- package/dist/showcase/premium/copy-button/mock.js +1 -1
- package/dist/showcase/premium/copy-field/mock.cjs +1 -1
- package/dist/showcase/premium/copy-field/mock.js +1 -1
- package/dist/showcase/premium/data-state/mock.cjs +1 -1
- package/dist/showcase/premium/data-state/mock.js +1 -1
- package/dist/showcase/premium/date-picker/mock.cjs +1 -1
- package/dist/showcase/premium/date-picker/mock.js +1 -1
- package/dist/showcase/premium/date-range-picker/mock.cjs +1 -1
- package/dist/showcase/premium/date-range-picker/mock.js +1 -1
- package/dist/showcase/premium/descriptions/mock.cjs +1 -1
- package/dist/showcase/premium/descriptions/mock.js +1 -1
- package/dist/showcase/premium/dialog/mock.cjs +1 -1
- package/dist/showcase/premium/dialog/mock.js +1 -1
- package/dist/showcase/premium/divider/mock.cjs +1 -1
- package/dist/showcase/premium/divider/mock.js +1 -1
- package/dist/showcase/premium/dual-list-picker/mock.cjs +1 -1
- package/dist/showcase/premium/dual-list-picker/mock.js +1 -1
- package/dist/showcase/premium/file-upload/mock.cjs +1 -1
- package/dist/showcase/premium/file-upload/mock.js +1 -1
- package/dist/showcase/premium/image-upload/mock.cjs +1 -1
- package/dist/showcase/premium/image-upload/mock.js +1 -1
- package/dist/showcase/premium/json-input/mock.cjs +1 -1
- package/dist/showcase/premium/json-input/mock.js +1 -1
- package/dist/showcase/premium/kanban-board/mock.cjs +1 -1
- package/dist/showcase/premium/kanban-board/mock.js +1 -1
- package/dist/showcase/premium/list/mock.cjs +1 -1
- package/dist/showcase/premium/list/mock.js +1 -1
- package/dist/showcase/premium/menubar/mock.cjs +1 -1
- package/dist/showcase/premium/menubar/mock.js +1 -1
- package/dist/showcase/premium/modal-shell/mock.cjs +1 -1
- package/dist/showcase/premium/modal-shell/mock.js +1 -1
- package/dist/showcase/premium/navigation-menu/mock.cjs +1 -1
- package/dist/showcase/premium/navigation-menu/mock.js +1 -1
- package/dist/showcase/premium/property-grid/mock.cjs +1 -1
- package/dist/showcase/premium/property-grid/mock.js +1 -1
- package/dist/showcase/premium/qr-code/mock.cjs +1 -1
- package/dist/showcase/premium/qr-code/mock.js +1 -1
- package/dist/showcase/premium/radio-group/mock.cjs +1 -1
- package/dist/showcase/premium/radio-group/mock.js +1 -1
- package/dist/showcase/premium/resizable-panel/mock.cjs +1 -1
- package/dist/showcase/premium/resizable-panel/mock.js +1 -1
- package/dist/showcase/premium/rich-text-editor/mock.cjs +1 -1
- package/dist/showcase/premium/rich-text-editor/mock.js +1 -1
- package/dist/showcase/premium/saved-filter-select/mock.cjs +1 -1
- package/dist/showcase/premium/saved-filter-select/mock.js +1 -1
- package/dist/showcase/premium/section/mock.cjs +1 -1
- package/dist/showcase/premium/section/mock.js +1 -1
- package/dist/showcase/premium/segmented-control/mock.cjs +1 -1
- package/dist/showcase/premium/segmented-control/mock.js +1 -1
- package/dist/showcase/premium/sheet-shell/mock.cjs +1 -1
- package/dist/showcase/premium/sheet-shell/mock.js +1 -1
- package/dist/showcase/premium/skeleton/mock.cjs +1 -1
- package/dist/showcase/premium/skeleton/mock.js +1 -1
- package/dist/showcase/premium/spinner/mock.cjs +1 -1
- package/dist/showcase/premium/spinner/mock.js +1 -1
- package/dist/showcase/premium/statistic/mock.cjs +1 -1
- package/dist/showcase/premium/statistic/mock.js +1 -1
- package/dist/showcase/premium/sticky-footer-bar/mock.cjs +1 -1
- package/dist/showcase/premium/sticky-footer-bar/mock.js +1 -1
- package/dist/showcase/premium/tag/mock.cjs +1 -1
- package/dist/showcase/premium/tag/mock.js +1 -1
- package/dist/showcase/premium/time-picker/mock.cjs +1 -1
- package/dist/showcase/premium/time-picker/mock.js +1 -1
- package/dist/showcase/premium/tour/mock.cjs +1 -1
- package/dist/showcase/premium/tour/mock.js +1 -1
- package/dist/showcase/premium/tree-view/mock.cjs +1 -1
- package/dist/showcase/premium/tree-view/mock.js +1 -1
- package/dist/showcase/premium/typography/mock.cjs +1 -1
- package/dist/showcase/premium/typography/mock.js +1 -1
- package/dist/showcase/site-data.cjs +1 -1
- package/dist/showcase/site-data.js +1 -1
- package/dist/showcase/tembro-registry.json.cjs +1 -1
- package/dist/showcase/tembro-registry.json.js +1 -1
- package/package.json +6 -1
- package/packages/cli/dist/index.cjs +1 -1
- package/packages/cli/vendor/src/components/calendar/calendar.tsx +0 -1
- package/packages/cli/vendor/src/components/ui/radio-group/index.tsx +0 -1
- package/packages/cli/vendor/src/showcase/package-meta.ts +2 -2
- package/packages/cli/vendor/src/showcase/premium/accordion/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/avatar/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/button/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/calendar-scheduler/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/carousel/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/code-block/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/command-bar/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/confirm-dialog/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/copy-button/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/copy-field/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/data-state/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/date-picker/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/date-range-picker/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/descriptions/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/dialog/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/divider/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/dual-list-picker/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/file-upload/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/image-upload/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/json-input/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/kanban-board/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/list/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/menubar/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/modal-shell/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/navigation-menu/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/property-grid/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/qr-code/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/radio-group/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/resizable-panel/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/rich-text-editor/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/saved-filter-select/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/section/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/segmented-control/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/sheet-shell/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/skeleton/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/spinner/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/statistic/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/sticky-footer-bar/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/tag/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/time-picker/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/tour/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/tree-view/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/premium/typography/mock.ts +1 -1
- package/packages/cli/vendor/src/showcase/tembro-registry.json +1 -1
- package/registry.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs"),r=require("./date-utils.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("lucide-react"),o=require("react/jsx-runtime");function s(e,t,n){if(e instanceof Date)return r.startOfMonth(e);let i=r.parseDateKey(e);if(i)return r.startOfMonth(i);let a=r.parseDateKey(t);if(a)return r.startOfMonth(a);let o=r.parseDateKey(n?.from??n?.to);return o?r.startOfMonth(o):r.startOfMonth(new Date)}function c(e,t){let n=new Date(e);return n.setDate(e.getDate()+t),n}function l(e,t){let n=new Date(t.getFullYear(),t.getMonth()+1,0).getDate();return new Date(t.getFullYear(),t.getMonth(),Math.min(e.getDate(),n))}function u(e,t){let n=r.parseDateKey(e),i=r.parseDateKey(t);if(!n||!i||t<e)return[];let a=[],o=new Date(n);for(;r.toDateKey(o)<=t;)a.push(r.toDateKey(o)),o.setDate(o.getDate()+1);return a}function d(e,t){let n=r.parseDateKey(e);return!n||!e?null:new Intl.DateTimeFormat(t,{dateStyle:`medium`}).format(n)}function f({className:e,value:f,range:p,onValueChange:m,onRangeChange:h,mode:g=`single`,month:ee,defaultMonth:te,onMonthChange:ne,min:_,max:v,disabledDates:y,locale:b=`en-US`,weekStartsOn:x=1,months:re,numberOfMonths:ie=1,showMonthHeaders:ae,showOutsideDays:S=!0,pagedNavigation:oe=!1,showTodayShortcut:C=!1,showClearShortcut:w=!1,showSelectionSummary:T=!1,labels:E,renderSelectionSummary:D,...se}){let O=f!==void 0,k=p!==void 0,[ce,A]=i.useState(f??null),[le,j]=i.useState(p??{}),[ue,de]=i.useState(()=>s(te,f,p)),M=O?f:ce,N=k?p:le,P=ee??ue,F=Math.max(re??ie,1),fe=ae??F>1,I=oe?F:1,L=r.toDateKey(new Date),R=i.useMemo(()=>new Set(y??[]),[y]),pe=i.useMemo(()=>r.getWeekdayLabels(b,x),[b,x]),z=i.useRef(new Map),[B,V]=i.useState(()=>f??p?.from??L),[H,U]=i.useState(null),W=i.useMemo(()=>Array.from({length:F},(e,t)=>r.addMonths(P,t)),[P,F]),G=i.useMemo(()=>W.map(e=>({month:e,days:r.getMonthDays(e,x)})),[W,x]),K=i.useMemo(()=>G.flatMap(e=>e.days),[G]),q=i.useCallback(e=>{if(R.has(e))return`disabled`;if(r.isBeforeDate(e,_))return`min`;if(r.isAfterDate(e,v))return`max`},[R,v,_]),J=i.useCallback(e=>!!q(e),[q]),Y=i.useMemo(()=>K.map(r.toDateKey).filter(e=>!J(e)),[K,J]),me=i.useMemo(()=>{let e=f??p?.from??L,t=N?.from??void 0,n=M??void 0;return Y.includes(B)?B:Y.includes(n??t??e)?n??t??e:Y[0]},[N?.from,M,B,p?.from,L,f,Y]);i.useEffect(()=>{O&&A(f??null)},[O,f]),i.useEffect(()=>{k&&p&&j(p)},[k,p]),i.useEffect(()=>{B&&z.current.get(B)?.focus()},[B]),i.useEffect(()=>{g!==`range`&&U(null)},[g]);let X=e=>{let t=r.startOfMonth(e);de(t),ne?.(t)},Z=(e,t=1)=>{let n=e,i=r.toDateKey(n),a=0;for(;J(i)&&a<370;)n=c(n,t),i=r.toDateKey(n),a+=1;V(i),W.some(e=>r.isSameMonth(n,e))||X(r.startOfMonth(n))},Q=e=>{if(J(e))return;if(g===`single`){O||A(e),m?.(e);return}let t=N?.from??null,n=N?.to??null;if(!t||t&&n||e<t){let t={from:e,to:null};k||j(t),h?.(t);return}if(u(t,e).some(e=>J(e))){let t={from:e,to:null};k||j(t),h?.(t);return}let r={from:t,to:e};k||j(r),h?.(r)},$=g===`range`&&N?.from&&!N.to&&H&&H>=N.from&&!u(N.from,H).some(e=>J(e))?{from:N.from,to:H}:null,he=i.useMemo(()=>{if(!T&&!D)return null;if(D)return D({mode:g,value:M,range:N,locale:b});if(g===`range`){let e=d(N?.from,b),t=d(N?.to,b);return e&&t?`${e} -> ${t}`:e?`${e} -> ...`:`No range selected`}return d(M,b)??`No date selected`},[N,M,b,g,D,T]),ge=()=>{if(g===`single`){O||A(null),m?.(``);return}let e={from:null,to:null};k||j(e),h?.(e)},_e=()=>{let e=new Date,t=r.toDateKey(e);X(e),V(t),J(t)||Q(t)},ve=(e,t)=>{let n=((G.find(e=>r.isSameMonth(t,e.month))?.days.findIndex(e=>r.toDateKey(e)===r.toDateKey(t))??0)+7)%7;switch(e.key){case`ArrowRight`:e.preventDefault(),Z(c(t,1),1);break;case`ArrowLeft`:e.preventDefault(),Z(c(t,-1),-1);break;case`ArrowDown`:e.preventDefault(),Z(c(t,7),7);break;case`ArrowUp`:e.preventDefault(),Z(c(t,-7),-7);break;case`Home`:e.preventDefault(),Z(c(t,-n),-1);break;case`End`:e.preventDefault(),Z(c(t,6-n),1);break;case`PageUp`:e.preventDefault(),Z(l(t,r.addMonths(t,-1)),-1);break;case`PageDown`:e.preventDefault(),Z(l(t,r.addMonths(t,1)),1);break}};return(0,o.jsxs)(`div`,{"data-slot":`calendar`,"data-months":F,className:t.cn(`w-fit rounded-[var(--aui-card-radius,var(--radius-lg))] border border-[color:var(--aui-card-border,var(--border))] bg-popover p-3 text-popover-foreground shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))]`,e),...se,children:[(0,o.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-3`,children:[(0,o.jsx)(n.Button,{type:`button`,variant:`outline`,size:`icon-sm`,className:`rounded-[var(--radius-md)] border-border/70 bg-background text-foreground shadow-none hover:border-border hover:bg-accent hover:text-accent-foreground`,"aria-label":E?.previousMonth??`Previous month`,onClick:()=>X(r.addMonths(P,-I)),children:(0,o.jsx)(a.ChevronLeftIcon,{})}),(0,o.jsxs)(`div`,{className:`flex flex-1 flex-col items-center text-center`,children:[(0,o.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-[0.24em] text-muted-foreground/90`,children:`Calendar`}),(0,o.jsx)(`div`,{className:`text-base font-semibold capitalize tracking-tight text-foreground`,children:r.getMonthLabel(P,b)})]}),(0,o.jsx)(n.Button,{type:`button`,variant:`outline`,size:`icon-sm`,className:`rounded-[var(--radius-md)] border-border/70 bg-background text-foreground shadow-none hover:border-border hover:bg-accent hover:text-accent-foreground`,"aria-label":E?.nextMonth??`Next month`,onClick:()=>X(r.addMonths(P,I)),children:(0,o.jsx)(a.ChevronRightIcon,{})})]}),(0,o.jsx)(`div`,{className:t.cn(`grid gap-3`,F>1&&`sm:grid-cols-2`),style:F>2?{gridTemplateColumns:`repeat(${F}, minmax(0, 1fr))`}:void 0,children:G.map(({month:e,days:n})=>(0,o.jsxs)(`div`,{className:`min-w-[16.5rem] rounded-[var(--radius-md)] bg-transparent p-1`,children:[fe&&(0,o.jsx)(`div`,{className:`mb-2 text-center text-sm font-semibold capitalize tracking-tight text-foreground`,children:r.getMonthLabel(e,b)}),(0,o.jsx)(`div`,{className:`grid grid-cols-7 gap-1 text-center text-[0.68rem] font-semibold uppercase tracking-[0.18em] text-muted-foreground/90`,children:pe.map(t=>(0,o.jsx)(`div`,{className:`py-1`,children:t},`${r.toDateKey(e)}-${t}`))}),(0,o.jsx)(`div`,{className:`mt-1.5 grid grid-cols-7 gap-1`,children:n.map(n=>{let i=r.toDateKey(n),a=!r.isSameMonth(n,e),s=g===`single`?M===i:i===N?.from||i===N?.to,c=g===`range`&&r.isWithinRange(i,N?.from,N?.to),l=!c&&g===`range`&&r.isWithinRange(i,$?.from,$?.to),u=g===`range`&&i===N?.from,d=g===`range`&&i===N?.to,f=c&&!u&&!d,p=q(i),m=!!p,h=p?E?.disabledDate?.(i,p):void 0;return(0,o.jsx)(`button`,{ref:e=>{e?z.current.set(i,e):z.current.delete(i)},type:`button`,disabled:m,"aria-label":h??E?.selectDate?.(i)??i,"aria-current":i===L?`date`:void 0,
|
|
1
|
+
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/utils.cjs"),n=require("../ui/button/index.cjs"),r=require("./date-utils.cjs");let i=require("react");i=e.__toESM(i,1);let a=require("lucide-react"),o=require("react/jsx-runtime");function s(e,t,n){if(e instanceof Date)return r.startOfMonth(e);let i=r.parseDateKey(e);if(i)return r.startOfMonth(i);let a=r.parseDateKey(t);if(a)return r.startOfMonth(a);let o=r.parseDateKey(n?.from??n?.to);return o?r.startOfMonth(o):r.startOfMonth(new Date)}function c(e,t){let n=new Date(e);return n.setDate(e.getDate()+t),n}function l(e,t){let n=new Date(t.getFullYear(),t.getMonth()+1,0).getDate();return new Date(t.getFullYear(),t.getMonth(),Math.min(e.getDate(),n))}function u(e,t){let n=r.parseDateKey(e),i=r.parseDateKey(t);if(!n||!i||t<e)return[];let a=[],o=new Date(n);for(;r.toDateKey(o)<=t;)a.push(r.toDateKey(o)),o.setDate(o.getDate()+1);return a}function d(e,t){let n=r.parseDateKey(e);return!n||!e?null:new Intl.DateTimeFormat(t,{dateStyle:`medium`}).format(n)}function f({className:e,value:f,range:p,onValueChange:m,onRangeChange:h,mode:g=`single`,month:ee,defaultMonth:te,onMonthChange:ne,min:_,max:v,disabledDates:y,locale:b=`en-US`,weekStartsOn:x=1,months:re,numberOfMonths:ie=1,showMonthHeaders:ae,showOutsideDays:S=!0,pagedNavigation:oe=!1,showTodayShortcut:C=!1,showClearShortcut:w=!1,showSelectionSummary:T=!1,labels:E,renderSelectionSummary:D,...se}){let O=f!==void 0,k=p!==void 0,[ce,A]=i.useState(f??null),[le,j]=i.useState(p??{}),[ue,de]=i.useState(()=>s(te,f,p)),M=O?f:ce,N=k?p:le,P=ee??ue,F=Math.max(re??ie,1),fe=ae??F>1,I=oe?F:1,L=r.toDateKey(new Date),R=i.useMemo(()=>new Set(y??[]),[y]),pe=i.useMemo(()=>r.getWeekdayLabels(b,x),[b,x]),z=i.useRef(new Map),[B,V]=i.useState(()=>f??p?.from??L),[H,U]=i.useState(null),W=i.useMemo(()=>Array.from({length:F},(e,t)=>r.addMonths(P,t)),[P,F]),G=i.useMemo(()=>W.map(e=>({month:e,days:r.getMonthDays(e,x)})),[W,x]),K=i.useMemo(()=>G.flatMap(e=>e.days),[G]),q=i.useCallback(e=>{if(R.has(e))return`disabled`;if(r.isBeforeDate(e,_))return`min`;if(r.isAfterDate(e,v))return`max`},[R,v,_]),J=i.useCallback(e=>!!q(e),[q]),Y=i.useMemo(()=>K.map(r.toDateKey).filter(e=>!J(e)),[K,J]),me=i.useMemo(()=>{let e=f??p?.from??L,t=N?.from??void 0,n=M??void 0;return Y.includes(B)?B:Y.includes(n??t??e)?n??t??e:Y[0]},[N?.from,M,B,p?.from,L,f,Y]);i.useEffect(()=>{O&&A(f??null)},[O,f]),i.useEffect(()=>{k&&p&&j(p)},[k,p]),i.useEffect(()=>{B&&z.current.get(B)?.focus()},[B]),i.useEffect(()=>{g!==`range`&&U(null)},[g]);let X=e=>{let t=r.startOfMonth(e);de(t),ne?.(t)},Z=(e,t=1)=>{let n=e,i=r.toDateKey(n),a=0;for(;J(i)&&a<370;)n=c(n,t),i=r.toDateKey(n),a+=1;V(i),W.some(e=>r.isSameMonth(n,e))||X(r.startOfMonth(n))},Q=e=>{if(J(e))return;if(g===`single`){O||A(e),m?.(e);return}let t=N?.from??null,n=N?.to??null;if(!t||t&&n||e<t){let t={from:e,to:null};k||j(t),h?.(t);return}if(u(t,e).some(e=>J(e))){let t={from:e,to:null};k||j(t),h?.(t);return}let r={from:t,to:e};k||j(r),h?.(r)},$=g===`range`&&N?.from&&!N.to&&H&&H>=N.from&&!u(N.from,H).some(e=>J(e))?{from:N.from,to:H}:null,he=i.useMemo(()=>{if(!T&&!D)return null;if(D)return D({mode:g,value:M,range:N,locale:b});if(g===`range`){let e=d(N?.from,b),t=d(N?.to,b);return e&&t?`${e} -> ${t}`:e?`${e} -> ...`:`No range selected`}return d(M,b)??`No date selected`},[N,M,b,g,D,T]),ge=()=>{if(g===`single`){O||A(null),m?.(``);return}let e={from:null,to:null};k||j(e),h?.(e)},_e=()=>{let e=new Date,t=r.toDateKey(e);X(e),V(t),J(t)||Q(t)},ve=(e,t)=>{let n=((G.find(e=>r.isSameMonth(t,e.month))?.days.findIndex(e=>r.toDateKey(e)===r.toDateKey(t))??0)+7)%7;switch(e.key){case`ArrowRight`:e.preventDefault(),Z(c(t,1),1);break;case`ArrowLeft`:e.preventDefault(),Z(c(t,-1),-1);break;case`ArrowDown`:e.preventDefault(),Z(c(t,7),7);break;case`ArrowUp`:e.preventDefault(),Z(c(t,-7),-7);break;case`Home`:e.preventDefault(),Z(c(t,-n),-1);break;case`End`:e.preventDefault(),Z(c(t,6-n),1);break;case`PageUp`:e.preventDefault(),Z(l(t,r.addMonths(t,-1)),-1);break;case`PageDown`:e.preventDefault(),Z(l(t,r.addMonths(t,1)),1);break}};return(0,o.jsxs)(`div`,{"data-slot":`calendar`,"data-months":F,className:t.cn(`w-fit rounded-[var(--aui-card-radius,var(--radius-lg))] border border-[color:var(--aui-card-border,var(--border))] bg-popover p-3 text-popover-foreground shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))]`,e),...se,children:[(0,o.jsxs)(`div`,{className:`mb-3 flex items-center justify-between gap-3`,children:[(0,o.jsx)(n.Button,{type:`button`,variant:`outline`,size:`icon-sm`,className:`rounded-[var(--radius-md)] border-border/70 bg-background text-foreground shadow-none hover:border-border hover:bg-accent hover:text-accent-foreground`,"aria-label":E?.previousMonth??`Previous month`,onClick:()=>X(r.addMonths(P,-I)),children:(0,o.jsx)(a.ChevronLeftIcon,{})}),(0,o.jsxs)(`div`,{className:`flex flex-1 flex-col items-center text-center`,children:[(0,o.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-[0.24em] text-muted-foreground/90`,children:`Calendar`}),(0,o.jsx)(`div`,{className:`text-base font-semibold capitalize tracking-tight text-foreground`,children:r.getMonthLabel(P,b)})]}),(0,o.jsx)(n.Button,{type:`button`,variant:`outline`,size:`icon-sm`,className:`rounded-[var(--radius-md)] border-border/70 bg-background text-foreground shadow-none hover:border-border hover:bg-accent hover:text-accent-foreground`,"aria-label":E?.nextMonth??`Next month`,onClick:()=>X(r.addMonths(P,I)),children:(0,o.jsx)(a.ChevronRightIcon,{})})]}),(0,o.jsx)(`div`,{className:t.cn(`grid gap-3`,F>1&&`sm:grid-cols-2`),style:F>2?{gridTemplateColumns:`repeat(${F}, minmax(0, 1fr))`}:void 0,children:G.map(({month:e,days:n})=>(0,o.jsxs)(`div`,{className:`min-w-[16.5rem] rounded-[var(--radius-md)] bg-transparent p-1`,children:[fe&&(0,o.jsx)(`div`,{className:`mb-2 text-center text-sm font-semibold capitalize tracking-tight text-foreground`,children:r.getMonthLabel(e,b)}),(0,o.jsx)(`div`,{className:`grid grid-cols-7 gap-1 text-center text-[0.68rem] font-semibold uppercase tracking-[0.18em] text-muted-foreground/90`,children:pe.map(t=>(0,o.jsx)(`div`,{className:`py-1`,children:t},`${r.toDateKey(e)}-${t}`))}),(0,o.jsx)(`div`,{className:`mt-1.5 grid grid-cols-7 gap-1`,children:n.map(n=>{let i=r.toDateKey(n),a=!r.isSameMonth(n,e),s=g===`single`?M===i:i===N?.from||i===N?.to,c=g===`range`&&r.isWithinRange(i,N?.from,N?.to),l=!c&&g===`range`&&r.isWithinRange(i,$?.from,$?.to),u=g===`range`&&i===N?.from,d=g===`range`&&i===N?.to,f=c&&!u&&!d,p=q(i),m=!!p,h=p?E?.disabledDate?.(i,p):void 0;return(0,o.jsx)(`button`,{ref:e=>{e?z.current.set(i,e):z.current.delete(i)},type:`button`,disabled:m,"aria-label":h??E?.selectDate?.(i)??i,"aria-current":i===L?`date`:void 0,tabIndex:i===me?0:-1,title:h,"data-selected":s||void 0,"data-range-start":u||void 0,"data-range-end":d||void 0,"data-range-middle":f||void 0,"data-today":i===L||void 0,"data-outside":a||void 0,"data-in-range":c||void 0,"data-in-preview-range":l||void 0,"data-disabled-reason":p,className:t.cn(`flex h-9 items-center justify-center rounded-[var(--radius-sm)] border border-transparent text-sm font-medium outline-none transition-[background-color,color,border-color,box-shadow,transform] hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-30`,a&&S?`text-muted-foreground/34`:`text-foreground`,a&&!S&&`pointer-events-none opacity-0`,i===L&&`border-border/70 bg-muted/60 text-foreground`,c&&`bg-primary/10 text-foreground`,l&&`bg-primary/6 text-foreground`,s&&`border-primary bg-primary text-primary-foreground shadow-[0_10px_22px_color-mix(in_oklch,var(--primary),transparent_78%)] hover:bg-primary hover:text-primary-foreground`),onFocus:()=>V(i),onMouseEnter:()=>U(i),onMouseLeave:()=>U(null),onKeyDown:e=>ve(e,n),onClick:()=>Q(i),children:n.getDate()},i)})})]},r.toDateKey(e)))}),C||w||T||D?(0,o.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center justify-between gap-2 border-t border-[color:var(--aui-card-border,var(--border))] pt-3`,children:[(0,o.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:he}),(0,o.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[w?(0,o.jsx)(n.Button,{type:`button`,size:`sm`,variant:`ghost`,onClick:ge,children:E?.clear??`Clear`}):null,C?(0,o.jsx)(n.Button,{type:`button`,size:`sm`,variant:`outline`,onClick:_e,children:E?.today??`Today`}):null]})]}):null]})}exports.Calendar=f;
|
|
@@ -1,278 +1,277 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn as e } from "../../lib/utils.js";
|
|
3
3
|
import { Button as t } from "../ui/button/index.js";
|
|
4
|
-
import { addMonths as n, getMonthDays as r, getMonthLabel as i, getWeekdayLabels as a, isAfterDate as o, isBeforeDate as s, isSameMonth as c, isWithinRange as
|
|
5
|
-
import * as
|
|
6
|
-
import { ChevronLeftIcon as
|
|
7
|
-
import { jsx as
|
|
4
|
+
import { addMonths as n, getMonthDays as r, getMonthLabel as i, getWeekdayLabels as a, isAfterDate as o, isBeforeDate as s, isSameMonth as c, isWithinRange as l, parseDateKey as u, startOfMonth as d, toDateKey as f } from "./date-utils.js";
|
|
5
|
+
import * as p from "react";
|
|
6
|
+
import { ChevronLeftIcon as m, ChevronRightIcon as h } from "lucide-react";
|
|
7
|
+
import { jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
8
8
|
//#region src/components/calendar/calendar.tsx
|
|
9
|
-
function
|
|
10
|
-
return e instanceof Date ?
|
|
9
|
+
function ee(e, t, n) {
|
|
10
|
+
return e instanceof Date ? d(e) : d(u(e) || u(t) || u(n?.from ?? n?.to) || /* @__PURE__ */ new Date());
|
|
11
11
|
}
|
|
12
|
-
function
|
|
12
|
+
function v(e, t) {
|
|
13
13
|
let n = new Date(e);
|
|
14
14
|
return n.setDate(e.getDate() + t), n;
|
|
15
15
|
}
|
|
16
|
-
function
|
|
16
|
+
function y(e, t) {
|
|
17
17
|
let n = new Date(t.getFullYear(), t.getMonth() + 1, 0).getDate();
|
|
18
18
|
return new Date(t.getFullYear(), t.getMonth(), Math.min(e.getDate(), n));
|
|
19
19
|
}
|
|
20
|
-
function
|
|
21
|
-
let n =
|
|
20
|
+
function b(e, t) {
|
|
21
|
+
let n = u(e), r = u(t);
|
|
22
22
|
if (!n || !r || t < e) return [];
|
|
23
23
|
let i = [], a = new Date(n);
|
|
24
|
-
for (;
|
|
24
|
+
for (; f(a) <= t;) i.push(f(a)), a.setDate(a.getDate() + 1);
|
|
25
25
|
return i;
|
|
26
26
|
}
|
|
27
|
-
function
|
|
28
|
-
let n =
|
|
27
|
+
function x(e, t) {
|
|
28
|
+
let n = u(e);
|
|
29
29
|
return !n || !e ? null : new Intl.DateTimeFormat(t, { dateStyle: "medium" }).format(n);
|
|
30
30
|
}
|
|
31
|
-
function
|
|
32
|
-
let
|
|
31
|
+
function S({ className: u, value: S, range: C, onValueChange: te, onRangeChange: w, mode: T = "single", month: ne, defaultMonth: re, onMonthChange: ie, min: ae, max: oe, disabledDates: se, locale: E = "en-US", weekStartsOn: D = 1, months: ce, numberOfMonths: le = 1, showMonthHeaders: ue, showOutsideDays: de = !0, pagedNavigation: fe = !1, showTodayShortcut: pe = !1, showClearShortcut: me = !1, showSelectionSummary: O = !1, labels: k, renderSelectionSummary: A, ...he }) {
|
|
32
|
+
let j = S !== void 0, M = C !== void 0, [ge, N] = p.useState(S ?? null), [_e, P] = p.useState(C ?? {}), [ve, ye] = p.useState(() => ee(re, S, C)), F = j ? S : ge, I = M ? C : _e, L = ne ?? ve, R = Math.max(ce ?? le, 1), be = ue ?? R > 1, z = fe ? R : 1, B = f(/* @__PURE__ */ new Date()), xe = p.useMemo(() => new Set(se ?? []), [se]), Se = p.useMemo(() => a(E, D), [E, D]), V = p.useRef(/* @__PURE__ */ new Map()), [H, U] = p.useState(() => S ?? C?.from ?? B), [W, G] = p.useState(null), K = p.useMemo(() => Array.from({ length: R }, (e, t) => n(L, t)), [L, R]), q = p.useMemo(() => K.map((e) => ({
|
|
33
33
|
month: e,
|
|
34
34
|
days: r(e, D)
|
|
35
|
-
})), [
|
|
36
|
-
if (
|
|
37
|
-
if (s(e,
|
|
38
|
-
if (o(e,
|
|
35
|
+
})), [K, D]), Ce = p.useMemo(() => q.flatMap((e) => e.days), [q]), J = p.useCallback((e) => {
|
|
36
|
+
if (xe.has(e)) return "disabled";
|
|
37
|
+
if (s(e, ae)) return "min";
|
|
38
|
+
if (o(e, oe)) return "max";
|
|
39
39
|
}, [
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
]),
|
|
44
|
-
let e =
|
|
45
|
-
return
|
|
40
|
+
xe,
|
|
41
|
+
oe,
|
|
42
|
+
ae
|
|
43
|
+
]), Y = p.useCallback((e) => !!J(e), [J]), X = p.useMemo(() => Ce.map(f).filter((e) => !Y(e)), [Ce, Y]), we = p.useMemo(() => {
|
|
44
|
+
let e = S ?? C?.from ?? B, t = I?.from ?? void 0, n = F ?? void 0;
|
|
45
|
+
return X.includes(H) ? H : X.includes(n ?? t ?? e) ? n ?? t ?? e : X[0];
|
|
46
46
|
}, [
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
I?.from,
|
|
48
|
+
F,
|
|
49
|
+
H,
|
|
50
|
+
C?.from,
|
|
51
|
+
B,
|
|
52
|
+
S,
|
|
53
|
+
X
|
|
54
54
|
]);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}, [
|
|
58
|
-
|
|
59
|
-
}, [
|
|
60
|
-
|
|
61
|
-
}, [
|
|
62
|
-
|
|
63
|
-
}, [
|
|
64
|
-
let
|
|
65
|
-
let t =
|
|
66
|
-
|
|
67
|
-
},
|
|
68
|
-
let n = e, r =
|
|
69
|
-
for (;
|
|
70
|
-
|
|
71
|
-
},
|
|
72
|
-
if (
|
|
73
|
-
if (
|
|
74
|
-
|
|
55
|
+
p.useEffect(() => {
|
|
56
|
+
j && N(S ?? null);
|
|
57
|
+
}, [j, S]), p.useEffect(() => {
|
|
58
|
+
M && C && P(C);
|
|
59
|
+
}, [M, C]), p.useEffect(() => {
|
|
60
|
+
H && V.current.get(H)?.focus();
|
|
61
|
+
}, [H]), p.useEffect(() => {
|
|
62
|
+
T !== "range" && G(null);
|
|
63
|
+
}, [T]);
|
|
64
|
+
let Z = (e) => {
|
|
65
|
+
let t = d(e);
|
|
66
|
+
ye(t), ie?.(t);
|
|
67
|
+
}, Q = (e, t = 1) => {
|
|
68
|
+
let n = e, r = f(n), i = 0;
|
|
69
|
+
for (; Y(r) && i < 370;) n = v(n, t), r = f(n), i += 1;
|
|
70
|
+
U(r), K.some((e) => c(n, e)) || Z(d(n));
|
|
71
|
+
}, Te = (e) => {
|
|
72
|
+
if (Y(e)) return;
|
|
73
|
+
if (T === "single") {
|
|
74
|
+
j || N(e), te?.(e);
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
77
|
-
let t =
|
|
77
|
+
let t = I?.from ?? null, n = I?.to ?? null;
|
|
78
78
|
if (!t || t && n || e < t) {
|
|
79
79
|
let t = {
|
|
80
80
|
from: e,
|
|
81
81
|
to: null
|
|
82
82
|
};
|
|
83
|
-
|
|
83
|
+
M || P(t), w?.(t);
|
|
84
84
|
return;
|
|
85
85
|
}
|
|
86
|
-
if (
|
|
86
|
+
if (b(t, e).some((e) => Y(e))) {
|
|
87
87
|
let t = {
|
|
88
88
|
from: e,
|
|
89
89
|
to: null
|
|
90
90
|
};
|
|
91
|
-
|
|
91
|
+
M || P(t), w?.(t);
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
94
|
let r = {
|
|
95
95
|
from: t,
|
|
96
96
|
to: e
|
|
97
97
|
};
|
|
98
|
-
|
|
99
|
-
},
|
|
100
|
-
from:
|
|
101
|
-
to:
|
|
102
|
-
} : null, Ee =
|
|
103
|
-
if (!
|
|
104
|
-
if (
|
|
105
|
-
mode:
|
|
106
|
-
value:
|
|
107
|
-
range:
|
|
98
|
+
M || P(r), w?.(r);
|
|
99
|
+
}, $ = T === "range" && I?.from && !I.to && W && W >= I.from && !b(I.from, W).some((e) => Y(e)) ? {
|
|
100
|
+
from: I.from,
|
|
101
|
+
to: W
|
|
102
|
+
} : null, Ee = p.useMemo(() => {
|
|
103
|
+
if (!O && !A) return null;
|
|
104
|
+
if (A) return A({
|
|
105
|
+
mode: T,
|
|
106
|
+
value: F,
|
|
107
|
+
range: I,
|
|
108
108
|
locale: E
|
|
109
109
|
});
|
|
110
|
-
if (
|
|
111
|
-
let e =
|
|
110
|
+
if (T === "range") {
|
|
111
|
+
let e = x(I?.from, E), t = x(I?.to, E);
|
|
112
112
|
return e && t ? `${e} -> ${t}` : e ? `${e} -> ...` : "No range selected";
|
|
113
113
|
}
|
|
114
|
-
return
|
|
114
|
+
return x(F, E) ?? "No date selected";
|
|
115
115
|
}, [
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
I,
|
|
117
|
+
F,
|
|
118
118
|
E,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
119
|
+
T,
|
|
120
|
+
A,
|
|
121
|
+
O
|
|
122
122
|
]), De = () => {
|
|
123
|
-
if (
|
|
124
|
-
|
|
123
|
+
if (T === "single") {
|
|
124
|
+
j || N(null), te?.("");
|
|
125
125
|
return;
|
|
126
126
|
}
|
|
127
127
|
let e = {
|
|
128
128
|
from: null,
|
|
129
129
|
to: null
|
|
130
130
|
};
|
|
131
|
-
|
|
131
|
+
M || P(e), w?.(e);
|
|
132
132
|
}, Oe = () => {
|
|
133
|
-
let e = /* @__PURE__ */ new Date(), t =
|
|
134
|
-
|
|
133
|
+
let e = /* @__PURE__ */ new Date(), t = f(e);
|
|
134
|
+
Z(e), U(t), Y(t) || Te(t);
|
|
135
135
|
}, ke = (e, t) => {
|
|
136
|
-
let r = ((
|
|
136
|
+
let r = ((q.find((e) => c(t, e.month))?.days.findIndex((e) => f(e) === f(t)) ?? 0) + 7) % 7;
|
|
137
137
|
switch (e.key) {
|
|
138
138
|
case "ArrowRight":
|
|
139
|
-
e.preventDefault(),
|
|
139
|
+
e.preventDefault(), Q(v(t, 1), 1);
|
|
140
140
|
break;
|
|
141
141
|
case "ArrowLeft":
|
|
142
|
-
e.preventDefault(),
|
|
142
|
+
e.preventDefault(), Q(v(t, -1), -1);
|
|
143
143
|
break;
|
|
144
144
|
case "ArrowDown":
|
|
145
|
-
e.preventDefault(),
|
|
145
|
+
e.preventDefault(), Q(v(t, 7), 7);
|
|
146
146
|
break;
|
|
147
147
|
case "ArrowUp":
|
|
148
|
-
e.preventDefault(),
|
|
148
|
+
e.preventDefault(), Q(v(t, -7), -7);
|
|
149
149
|
break;
|
|
150
150
|
case "Home":
|
|
151
|
-
e.preventDefault(),
|
|
151
|
+
e.preventDefault(), Q(v(t, -r), -1);
|
|
152
152
|
break;
|
|
153
153
|
case "End":
|
|
154
|
-
e.preventDefault(),
|
|
154
|
+
e.preventDefault(), Q(v(t, 6 - r), 1);
|
|
155
155
|
break;
|
|
156
156
|
case "PageUp":
|
|
157
|
-
e.preventDefault(),
|
|
157
|
+
e.preventDefault(), Q(y(t, n(t, -1)), -1);
|
|
158
158
|
break;
|
|
159
159
|
case "PageDown":
|
|
160
|
-
e.preventDefault(),
|
|
160
|
+
e.preventDefault(), Q(y(t, n(t, 1)), 1);
|
|
161
161
|
break;
|
|
162
162
|
}
|
|
163
163
|
};
|
|
164
|
-
return /* @__PURE__ */
|
|
164
|
+
return /* @__PURE__ */ _("div", {
|
|
165
165
|
"data-slot": "calendar",
|
|
166
|
-
"data-months":
|
|
167
|
-
className: e("w-fit rounded-[var(--aui-card-radius,var(--radius-lg))] border border-[color:var(--aui-card-border,var(--border))] bg-popover p-3 text-popover-foreground shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))]",
|
|
168
|
-
...
|
|
166
|
+
"data-months": R,
|
|
167
|
+
className: e("w-fit rounded-[var(--aui-card-radius,var(--radius-lg))] border border-[color:var(--aui-card-border,var(--border))] bg-popover p-3 text-popover-foreground shadow-[var(--aui-control-panel-shadow,0_18px_40px_rgba(15,23,42,0.14))]", u),
|
|
168
|
+
...he,
|
|
169
169
|
children: [
|
|
170
|
-
/* @__PURE__ */
|
|
170
|
+
/* @__PURE__ */ _("div", {
|
|
171
171
|
className: "mb-3 flex items-center justify-between gap-3",
|
|
172
172
|
children: [
|
|
173
|
-
/* @__PURE__ */
|
|
173
|
+
/* @__PURE__ */ g(t, {
|
|
174
174
|
type: "button",
|
|
175
175
|
variant: "outline",
|
|
176
176
|
size: "icon-sm",
|
|
177
177
|
className: "rounded-[var(--radius-md)] border-border/70 bg-background text-foreground shadow-none hover:border-border hover:bg-accent hover:text-accent-foreground",
|
|
178
|
-
"aria-label":
|
|
179
|
-
onClick: () =>
|
|
180
|
-
children: /* @__PURE__ */ m
|
|
178
|
+
"aria-label": k?.previousMonth ?? "Previous month",
|
|
179
|
+
onClick: () => Z(n(L, -z)),
|
|
180
|
+
children: /* @__PURE__ */ g(m, {})
|
|
181
181
|
}),
|
|
182
|
-
/* @__PURE__ */
|
|
182
|
+
/* @__PURE__ */ _("div", {
|
|
183
183
|
className: "flex flex-1 flex-col items-center text-center",
|
|
184
|
-
children: [/* @__PURE__ */
|
|
184
|
+
children: [/* @__PURE__ */ g("span", {
|
|
185
185
|
className: "text-[10px] font-semibold uppercase tracking-[0.24em] text-muted-foreground/90",
|
|
186
186
|
children: "Calendar"
|
|
187
|
-
}), /* @__PURE__ */
|
|
187
|
+
}), /* @__PURE__ */ g("div", {
|
|
188
188
|
className: "text-base font-semibold capitalize tracking-tight text-foreground",
|
|
189
|
-
children: i(
|
|
189
|
+
children: i(L, E)
|
|
190
190
|
})]
|
|
191
191
|
}),
|
|
192
|
-
/* @__PURE__ */
|
|
192
|
+
/* @__PURE__ */ g(t, {
|
|
193
193
|
type: "button",
|
|
194
194
|
variant: "outline",
|
|
195
195
|
size: "icon-sm",
|
|
196
196
|
className: "rounded-[var(--radius-md)] border-border/70 bg-background text-foreground shadow-none hover:border-border hover:bg-accent hover:text-accent-foreground",
|
|
197
|
-
"aria-label":
|
|
198
|
-
onClick: () =>
|
|
199
|
-
children: /* @__PURE__ */
|
|
197
|
+
"aria-label": k?.nextMonth ?? "Next month",
|
|
198
|
+
onClick: () => Z(n(L, z)),
|
|
199
|
+
children: /* @__PURE__ */ g(h, {})
|
|
200
200
|
})
|
|
201
201
|
]
|
|
202
202
|
}),
|
|
203
|
-
/* @__PURE__ */
|
|
204
|
-
className: e("grid gap-3",
|
|
205
|
-
style:
|
|
206
|
-
children:
|
|
203
|
+
/* @__PURE__ */ g("div", {
|
|
204
|
+
className: e("grid gap-3", R > 1 && "sm:grid-cols-2"),
|
|
205
|
+
style: R > 2 ? { gridTemplateColumns: `repeat(${R}, minmax(0, 1fr))` } : void 0,
|
|
206
|
+
children: q.map(({ month: t, days: n }) => /* @__PURE__ */ _("div", {
|
|
207
207
|
className: "min-w-[16.5rem] rounded-[var(--radius-md)] bg-transparent p-1",
|
|
208
208
|
children: [
|
|
209
|
-
|
|
209
|
+
be && /* @__PURE__ */ g("div", {
|
|
210
210
|
className: "mb-2 text-center text-sm font-semibold capitalize tracking-tight text-foreground",
|
|
211
211
|
children: i(t, E)
|
|
212
212
|
}),
|
|
213
|
-
/* @__PURE__ */
|
|
213
|
+
/* @__PURE__ */ g("div", {
|
|
214
214
|
className: "grid grid-cols-7 gap-1 text-center text-[0.68rem] font-semibold uppercase tracking-[0.18em] text-muted-foreground/90",
|
|
215
|
-
children:
|
|
215
|
+
children: Se.map((e) => /* @__PURE__ */ g("div", {
|
|
216
216
|
className: "py-1",
|
|
217
217
|
children: e
|
|
218
|
-
}, `${
|
|
218
|
+
}, `${f(t)}-${e}`))
|
|
219
219
|
}),
|
|
220
|
-
/* @__PURE__ */
|
|
220
|
+
/* @__PURE__ */ g("div", {
|
|
221
221
|
className: "mt-1.5 grid grid-cols-7 gap-1",
|
|
222
222
|
children: n.map((n) => {
|
|
223
|
-
let r =
|
|
224
|
-
return /* @__PURE__ */
|
|
223
|
+
let r = f(n), i = !c(n, t), a = T === "single" ? F === r : r === I?.from || r === I?.to, o = T === "range" && l(r, I?.from, I?.to), s = !o && T === "range" && l(r, $?.from, $?.to), u = T === "range" && r === I?.from, d = T === "range" && r === I?.to, p = o && !u && !d, m = J(r), h = !!m, _ = m ? k?.disabledDate?.(r, m) : void 0;
|
|
224
|
+
return /* @__PURE__ */ g("button", {
|
|
225
225
|
ref: (e) => {
|
|
226
|
-
e ?
|
|
226
|
+
e ? V.current.set(r, e) : V.current.delete(r);
|
|
227
227
|
},
|
|
228
228
|
type: "button",
|
|
229
|
-
disabled:
|
|
230
|
-
"aria-label":
|
|
231
|
-
"aria-current": r ===
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
title: h,
|
|
229
|
+
disabled: h,
|
|
230
|
+
"aria-label": _ ?? k?.selectDate?.(r) ?? r,
|
|
231
|
+
"aria-current": r === B ? "date" : void 0,
|
|
232
|
+
tabIndex: r === we ? 0 : -1,
|
|
233
|
+
title: _,
|
|
235
234
|
"data-selected": a || void 0,
|
|
236
|
-
"data-range-start":
|
|
237
|
-
"data-range-end":
|
|
238
|
-
"data-range-middle":
|
|
239
|
-
"data-today": r ===
|
|
235
|
+
"data-range-start": u || void 0,
|
|
236
|
+
"data-range-end": d || void 0,
|
|
237
|
+
"data-range-middle": p || void 0,
|
|
238
|
+
"data-today": r === B || void 0,
|
|
240
239
|
"data-outside": i || void 0,
|
|
241
240
|
"data-in-range": o || void 0,
|
|
242
241
|
"data-in-preview-range": s || void 0,
|
|
243
|
-
"data-disabled-reason":
|
|
244
|
-
className: e("flex h-9 items-center justify-center rounded-[var(--radius-sm)] border border-transparent text-sm font-medium outline-none transition-[background-color,color,border-color,box-shadow,transform] hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-30", i && de ? "text-muted-foreground/34" : "text-foreground", i && !de && "pointer-events-none opacity-0", r ===
|
|
245
|
-
onFocus: () =>
|
|
246
|
-
onMouseEnter: () =>
|
|
247
|
-
onMouseLeave: () =>
|
|
242
|
+
"data-disabled-reason": m,
|
|
243
|
+
className: e("flex h-9 items-center justify-center rounded-[var(--radius-sm)] border border-transparent text-sm font-medium outline-none transition-[background-color,color,border-color,box-shadow,transform] hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-30", i && de ? "text-muted-foreground/34" : "text-foreground", i && !de && "pointer-events-none opacity-0", r === B && "border-border/70 bg-muted/60 text-foreground", o && "bg-primary/10 text-foreground", s && "bg-primary/6 text-foreground", a && "border-primary bg-primary text-primary-foreground shadow-[0_10px_22px_color-mix(in_oklch,var(--primary),transparent_78%)] hover:bg-primary hover:text-primary-foreground"),
|
|
244
|
+
onFocus: () => U(r),
|
|
245
|
+
onMouseEnter: () => G(r),
|
|
246
|
+
onMouseLeave: () => G(null),
|
|
248
247
|
onKeyDown: (e) => ke(e, n),
|
|
249
|
-
onClick: () =>
|
|
248
|
+
onClick: () => Te(r),
|
|
250
249
|
children: n.getDate()
|
|
251
250
|
}, r);
|
|
252
251
|
})
|
|
253
252
|
})
|
|
254
253
|
]
|
|
255
|
-
},
|
|
254
|
+
}, f(t)))
|
|
256
255
|
}),
|
|
257
|
-
|
|
256
|
+
pe || me || O || A ? /* @__PURE__ */ _("div", {
|
|
258
257
|
className: "mt-3 flex flex-wrap items-center justify-between gap-2 border-t border-[color:var(--aui-card-border,var(--border))] pt-3",
|
|
259
|
-
children: [/* @__PURE__ */
|
|
258
|
+
children: [/* @__PURE__ */ g("div", {
|
|
260
259
|
className: "text-xs text-muted-foreground",
|
|
261
260
|
children: Ee
|
|
262
|
-
}), /* @__PURE__ */
|
|
261
|
+
}), /* @__PURE__ */ _("div", {
|
|
263
262
|
className: "flex flex-wrap gap-2",
|
|
264
|
-
children: [
|
|
263
|
+
children: [me ? /* @__PURE__ */ g(t, {
|
|
265
264
|
type: "button",
|
|
266
265
|
size: "sm",
|
|
267
266
|
variant: "ghost",
|
|
268
267
|
onClick: De,
|
|
269
|
-
children:
|
|
270
|
-
}) : null,
|
|
268
|
+
children: k?.clear ?? "Clear"
|
|
269
|
+
}) : null, pe ? /* @__PURE__ */ g(t, {
|
|
271
270
|
type: "button",
|
|
272
271
|
size: "sm",
|
|
273
272
|
variant: "outline",
|
|
274
273
|
onClick: Oe,
|
|
275
|
-
children:
|
|
274
|
+
children: k?.today ?? "Today"
|
|
276
275
|
}) : null]
|
|
277
276
|
})]
|
|
278
277
|
}) : null
|
|
@@ -280,4 +279,4 @@ function y({ className: l, value: y, range: b, onValueChange: ie, onRangeChange:
|
|
|
280
279
|
});
|
|
281
280
|
}
|
|
282
281
|
//#endregion
|
|
283
|
-
export {
|
|
282
|
+
export { S as Calendar };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");var i={sm:`size-3.5`,default:`size-4`,lg:`size-5`};function a({name:e,value:a,defaultValue:o,onValueChange:s,options:c,orientation:l=`vertical`,size:u=`default`,invalid:d=!1,disabled:f=!1,className:p,itemClassName:m,itemLabelClassName:h,itemDescriptionClassName:g,..._}){let v=n.useId(),y=e??v,[b,x]=n.useState(o??``),S=a!==void 0,C=S?a:b,w=n.useRef([]),T=c.filter(e=>!e.disabled&&!f),E=e=>{S||x(e),s?.(e)},D=e=>{let t=T[e];if(!t)return;let n=c.findIndex(e=>e.value===t.value);w.current[n]?.focus(),E(t.value)};return(0,r.jsx)(`div`,{role:`radiogroup`,"aria-invalid":d||void 0,"aria-disabled":f||void 0,"data-slot":`radio-group`,"data-orientation":l,"data-invalid":d||void 0,className:t.cn(`grid gap-2`,l===`horizontal`&&`sm:flex sm:flex-wrap sm:items-center`,p),onKeyDown:e=>{if(![`ArrowDown`,`ArrowRight`,`ArrowUp`,`ArrowLeft`,`Home`,`End`].includes(e.key)||T.length===0)return;e.preventDefault();let t=Math.max(0,T.findIndex(e=>e.value===C));if(e.key===`Home`){D(0);return}if(e.key===`End`){D(T.length-1);return}D((t+(e.key===`ArrowDown`||e.key===`ArrowRight`?1:-1)+T.length)%T.length)},..._,children:c.map((e,n)=>{let a=e.value===C,o=f||e.disabled;return(0,r.jsxs)(`label`,{"data-slot":`radio-group-item`,"data-checked":a||void 0,"data-disabled":o||void 0,"data-invalid":d||void 0,className:t.cn(`group flex cursor-pointer items-start gap-3 rounded-[min(var(--radius-xl),16px)] border border-border/80 bg-background/88 px-3 py-2.5 text-sm transition hover:border-ring/35 hover:bg-accent/60 focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/30 data-[checked=true]:border-primary/35 data-[checked=true]:bg-primary/8 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-55 data-[invalid=true]:border-destructive/70 data-[invalid=true]:ring-3 data-[invalid=true]:ring-destructive/15`,m),children:[(0,r.jsx)(`input`,{ref:e=>{w.current[n]=e},type:`radio`,name:y,value:e.value,checked:a,disabled:o,
|
|
1
|
+
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../lib/utils.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("react/jsx-runtime");var i={sm:`size-3.5`,default:`size-4`,lg:`size-5`};function a({name:e,value:a,defaultValue:o,onValueChange:s,options:c,orientation:l=`vertical`,size:u=`default`,invalid:d=!1,disabled:f=!1,className:p,itemClassName:m,itemLabelClassName:h,itemDescriptionClassName:g,..._}){let v=n.useId(),y=e??v,[b,x]=n.useState(o??``),S=a!==void 0,C=S?a:b,w=n.useRef([]),T=c.filter(e=>!e.disabled&&!f),E=e=>{S||x(e),s?.(e)},D=e=>{let t=T[e];if(!t)return;let n=c.findIndex(e=>e.value===t.value);w.current[n]?.focus(),E(t.value)};return(0,r.jsx)(`div`,{role:`radiogroup`,"aria-invalid":d||void 0,"aria-disabled":f||void 0,"data-slot":`radio-group`,"data-orientation":l,"data-invalid":d||void 0,className:t.cn(`grid gap-2`,l===`horizontal`&&`sm:flex sm:flex-wrap sm:items-center`,p),onKeyDown:e=>{if(![`ArrowDown`,`ArrowRight`,`ArrowUp`,`ArrowLeft`,`Home`,`End`].includes(e.key)||T.length===0)return;e.preventDefault();let t=Math.max(0,T.findIndex(e=>e.value===C));if(e.key===`Home`){D(0);return}if(e.key===`End`){D(T.length-1);return}D((t+(e.key===`ArrowDown`||e.key===`ArrowRight`?1:-1)+T.length)%T.length)},..._,children:c.map((e,n)=>{let a=e.value===C,o=f||e.disabled;return(0,r.jsxs)(`label`,{"data-slot":`radio-group-item`,"data-checked":a||void 0,"data-disabled":o||void 0,"data-invalid":d||void 0,className:t.cn(`group flex cursor-pointer items-start gap-3 rounded-[min(var(--radius-xl),16px)] border border-border/80 bg-background/88 px-3 py-2.5 text-sm transition hover:border-ring/35 hover:bg-accent/60 focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/30 data-[checked=true]:border-primary/35 data-[checked=true]:bg-primary/8 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-55 data-[invalid=true]:border-destructive/70 data-[invalid=true]:ring-3 data-[invalid=true]:ring-destructive/15`,m),children:[(0,r.jsx)(`input`,{ref:e=>{w.current[n]=e},type:`radio`,name:y,value:e.value,checked:a,disabled:o,className:`sr-only`,onChange:()=>E(e.value)}),(0,r.jsx)(`span`,{"aria-hidden":`true`,className:t.cn(`mt-0.5 inline-flex shrink-0 items-center justify-center rounded-full border border-input bg-background shadow-sm transition group-data-[checked=true]:border-primary group-data-[checked=true]:bg-primary`,i[u]),children:(0,r.jsx)(`span`,{className:`size-1.5 rounded-full bg-primary-foreground opacity-0 transition group-data-[checked=true]:opacity-100`})}),(0,r.jsxs)(`span`,{className:`min-w-0`,children:[(0,r.jsx)(`span`,{className:t.cn(`block font-medium text-foreground`,h),children:e.label}),e.description?(0,r.jsx)(`span`,{className:t.cn(`mt-1 block text-sm leading-6 text-muted-foreground`,g),children:e.description}):null]})]},e.value)})})}exports.RadioGroup=a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=`2.
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=`2.1.12`,t=`July 9, 2026`,n=`^${e}`;exports.PACKAGE_DEPENDENCY_RANGE=n,exports.PACKAGE_LATEST_RELEASE_DATE=t,exports.PACKAGE_LATEST_VERSION=e;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const PACKAGE_LATEST_VERSION = "2.
|
|
2
|
-
export declare const PACKAGE_LATEST_RELEASE_DATE = "July
|
|
3
|
-
export declare const PACKAGE_DEPENDENCY_RANGE = "^2.
|
|
1
|
+
export declare const PACKAGE_LATEST_VERSION = "2.1.12";
|
|
2
|
+
export declare const PACKAGE_LATEST_RELEASE_DATE = "July 9, 2026";
|
|
3
|
+
export declare const PACKAGE_DEPENDENCY_RANGE = "^2.1.12";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
//#region src/showcase/premium/accordion/mock.ts
|
|
2
2
|
var e = {
|
|
3
|
-
code: "import { Accordion } from \"
|
|
3
|
+
code: "import { Accordion } from \"tembro\"\n\nconst items = [\n {\n key: \"tokens\",\n title: \"Theme tokens\",\n description: \"Control border, background, radius, and spacing from one place.\",\n content: \"Keep product decisions inside tokens instead of hardcoded one-off wrappers.\",\n },\n {\n key: \"composition\",\n title: \"Component composition\",\n description: \"Teach one component first.\",\n content: \"Advanced behavior should be exposed through props, hooks, and helpers instead of separate public groups.\",\n },\n]\n\nexport function Example() {\n return <Accordion type=\"single\" defaultValue=\"tokens\" items={items} />\n}",
|
|
4
4
|
htmlCode: "<details data-slot=\"accordion\">\n <summary data-slot=\"accordion-trigger\">Theme tokens</summary>\n <div data-slot=\"accordion-content\">Keep product decisions inside tokens.</div>\n</details>",
|
|
5
5
|
cliCommand: "npx tembro add accordion",
|
|
6
6
|
highlights: [
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e={code:`import { Avatar, AvatarGroup } from "
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e={code:`import { Avatar, AvatarGroup } from "tembro"
|
|
2
2
|
|
|
3
3
|
export function Example() {
|
|
4
4
|
return (
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
//#region src/showcase/premium/avatar/mock.ts
|
|
2
2
|
var e = {
|
|
3
|
-
code: "import { Avatar, AvatarGroup } from \"
|
|
3
|
+
code: "import { Avatar, AvatarGroup } from \"tembro\"\n\nexport function Example() {\n return (\n <div className=\"space-y-4\">\n <Avatar name=\"Azamat Jurayev\" status=\"online\" />\n <AvatarGroup\n items={[\n { key: \"az\", name: \"Azamat Jurayev\", status: \"online\" },\n { key: \"su\", name: \"Suhrob Karimov\", status: \"busy\" },\n { key: \"na\", name: \"Nargiza Saidova\", status: \"away\" },\n ]}\n />\n </div>\n )\n}",
|
|
4
4
|
cliCommand: "npx tembro add avatar",
|
|
5
5
|
highlights: [
|
|
6
6
|
"Single avatar plus stacked group export",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e={code:`import * as React from "react"
|
|
2
2
|
import { ArrowRightIcon, DownloadIcon } from "lucide-react"
|
|
3
|
-
import { Button, buttonVariants } from "
|
|
3
|
+
import { Button, buttonVariants } from "tembro"
|
|
4
4
|
|
|
5
5
|
export function BasicExamples() {
|
|
6
6
|
return (
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
//#region src/showcase/premium/button/mock.ts
|
|
2
2
|
var e = {
|
|
3
|
-
code: "import * as React from \"react\"\nimport { ArrowRightIcon, DownloadIcon } from \"lucide-react\"\nimport { Button, buttonVariants } from \"
|
|
3
|
+
code: "import * as React from \"react\"\nimport { ArrowRightIcon, DownloadIcon } from \"lucide-react\"\nimport { Button, buttonVariants } from \"tembro\"\n\nexport function BasicExamples() {\n return (\n <div className=\"space-y-4\">\n <div className=\"flex flex-wrap gap-3\">\n <Button variant=\"default\">Primary</Button>\n <Button variant=\"secondary\">Secondary</Button>\n <Button variant=\"outline\">Outline</Button>\n <Button variant=\"destructive\">Destructive</Button>\n </div>\n\n <div className=\"flex flex-wrap gap-3\">\n <Button size=\"sm\">Small</Button>\n <Button iconOnly aria-label=\"Download\">\n <DownloadIcon className=\"size-4\" />\n </Button>\n <Button>\n Continue\n <ArrowRightIcon className=\"ml-2 size-4\" />\n </Button>\n </div>\n\n <div className=\"flex flex-wrap gap-3\">\n <Button variant=\"outline\" size=\"sm\" disabled>\n Disabled\n </Button>\n <Button variant=\"default\" loading>\n Loading\n </Button>\n </div>\n\n <div className=\"flex flex-wrap gap-3\">\n <a className={buttonVariants({ variant: \"outline\", size: \"sm\" })} href=\"/components\">\n Link styled as button\n </a>\n </div>\n </div>\n )\n}\n\nexport function ControlledButton() {\n const [loading, setLoading] = React.useState(false)\n\n return (\n <Button\n variant=\"default\"\n onClick={() => {\n setLoading(true)\n window.setTimeout(() => setLoading(false), 1800)\n }}\n loading={loading}\n >\n Submit\n </Button>\n )\n}\n\n// Don't overuse buttonVariants for every button instance.\n// Use Button's own variant/size props by default, and keep buttonVariants\n// only for styling non-button elements (a, Link) with shared look.",
|
|
4
4
|
htmlCode: "<button data-slot=\"button\" data-variant=\"primary\">\n Continue\n</button>",
|
|
5
5
|
cliCommand: "npx tembro add button",
|
|
6
6
|
highlights: [
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e={code:`import { CalendarScheduler } from "
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e={code:`import { CalendarScheduler } from "tembro"
|
|
2
2
|
|
|
3
3
|
export function Example() {
|
|
4
4
|
return (
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
//#region src/showcase/premium/calendar-scheduler/mock.ts
|
|
2
2
|
var e = {
|
|
3
|
-
code: "import { CalendarScheduler } from \"
|
|
3
|
+
code: "import { CalendarScheduler } from \"tembro\"\n\nexport function Example() {\n return (\n <CalendarScheduler\n days={[\"Mon, Jul 6\", \"Tue, Jul 7\"]}\n events={[\n { id: \"1\", title: \"Design review\", date: \"Mon, Jul 6\", time: \"10:00\", tone: \"warning\" },\n { id: \"2\", title: \"Release freeze\", date: \"Tue, Jul 7\", time: \"14:00\", tone: \"danger\" },\n ]}\n />\n )\n}",
|
|
4
4
|
cliCommand: "npx tembro add calendar-scheduler",
|
|
5
5
|
highlights: [
|
|
6
6
|
"Compact scheduler timeline by day",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e={code:`import { Carousel, CarouselItem } from "
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e={code:`import { Carousel, CarouselItem } from "tembro"
|
|
2
2
|
|
|
3
3
|
export function Example() {
|
|
4
4
|
return (
|