@kushagradhawan/kookie-ui 0.1.45 → 0.1.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/shell.js +1 -1
- package/dist/cjs/components/shell.js.map +2 -2
- package/dist/esm/components/shell.js +1 -1
- package/dist/esm/components/shell.js.map +2 -2
- package/package.json +1 -1
- package/schemas/base-button.json +1 -1
- package/schemas/button.json +1 -1
- package/schemas/icon-button.json +1 -1
- package/schemas/index.json +6 -6
- package/schemas/toggle-button.json +1 -1
- package/schemas/toggle-icon-button.json +1 -1
- package/src/components/shell.tsx +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";"use client";var Ce=Object.create;var fe=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var we=Object.getOwnPropertyNames;var Be=Object.getPrototypeOf,He=Object.prototype.hasOwnProperty;var Le=(a,i)=>{for(var r in i)fe(a,r,{get:i[r],enumerable:!0})},ge=(a,i,r,u)=>{if(i&&typeof i=="object"||typeof i=="function")for(let R of we(i))!He.call(a,R)&&R!==r&&fe(a,R,{get:()=>i[R],enumerable:!(u=Te(i,R))||u.enumerable});return a};var Se=(a,i,r)=>(r=a!=null?Ce(Be(a)):{},ge(i||!a||!a.__esModule?fe(r,"default",{value:a,enumerable:!0}):r,a)),Ne=a=>ge(fe({},"__esModule",{value:!0}),a);var De={};Le(De,{Bottom:()=>ue,Content:()=>Pe,Header:()=>Me,Inspector:()=>pe,Left:()=>he,Panel:()=>te,Rail:()=>ae,Root:()=>ke,Sidebar:()=>se,Trigger:()=>Ee,useResponsivePresentation:()=>re,useShell:()=>Q});module.exports=Ne(De);var e=Se(require("react")),J=Se(require("classnames")),G=Se(require("./sheet.js")),$e=require("./inset.js"),ce=require("./visually-hidden.js");const le={xs:"(min-width: 520px)",sm:"(min-width: 768px)",md:"(min-width: 1024px)",lg:"(min-width: 1280px)",xl:"(min-width: 1640px)"},xe=e.createContext(null);function Q(){const a=e.useContext(xe);if(!a)throw new Error("Shell components must be used within <Shell.Root>");return a}const de=e.createContext(null);function Ae(){const a=e.useContext(de);if(!a)throw new Error("Shell.Handle must be used within a resizable pane");return a}const _=e.forwardRef(({className:a,children:i,...r},u)=>{const{containerRef:R,cssVarName:p,minSize:g,maxSize:h,defaultSize:P,orientation:b,edge:T,computeNext:L,onResize:o,onResizeStart:x,onResizeEnd:w,snapPoints:F,snapTolerance:q,collapseThreshold:K,collapsible:I,target:V,requestCollapse:U,requestToggle:k}=Ae(),f=e.useRef(null);e.useEffect(()=>()=>{try{f.current?.()}catch{}f.current=null},[]);const m=b;return e.createElement("div",{...r,ref:u,className:(0,J.default)("rt-ShellResizer",a),"data-orientation":b,"data-edge":T,role:"slider","aria-orientation":m,"aria-valuemin":g,"aria-valuemax":h,"aria-valuenow":P,tabIndex:0,onPointerDown:t=>{if(!R.current)return;t.preventDefault();const y=R.current,n=t.currentTarget,$=t.pointerId;try{f.current?.()}catch{}y.setAttribute("data-resizing","");try{n.setPointerCapture($)}catch{}const S=b==="vertical"?t.clientX:t.clientY,C=parseFloat(getComputedStyle(y).getPropertyValue(p)||`${P}`),M=s=>Math.min(Math.max(s,g),h),B=document.body,c=B.style.cursor,N=B.style.userSelect;B.style.cursor=b==="vertical"?"col-resize":"row-resize",B.style.userSelect="none",x?.(C);const D=s=>{const E=b==="vertical"?s.clientX:s.clientY,z=M(L(E,S,C));y.style.setProperty(p,`${z}px`),n.setAttribute("aria-valuenow",String(z)),o?.(z)},j=()=>{try{n.releasePointerCapture($)}catch{}window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",H),window.removeEventListener("pointercancel",H),window.removeEventListener("keydown",v),n.removeEventListener("lostpointercapture",H),y.removeAttribute("data-resizing"),B.style.cursor=c,B.style.userSelect=N,f.current=null},H=()=>{const s=parseFloat(getComputedStyle(y).getPropertyValue(p)||`${P}`);let E=s;if(F&&F.length){const z=F.reduce((Z,X)=>Math.abs(X-s)<Math.abs(Z-s)?X:Z,F[0]);Math.abs(z-s)<=(q??8)&&(E=z,y.style.setProperty(p,`${E}px`),n.setAttribute("aria-valuenow",String(E)),o?.(E))}I&&typeof K=="number"&&s<=K&&U?.(),w?.(E),j()},v=s=>{s.key==="Escape"&&(y.style.setProperty(p,`${C}px`),n.setAttribute("aria-valuenow",String(C)),w?.(C),j())};window.addEventListener("pointermove",D),window.addEventListener("pointerup",H),window.addEventListener("pointercancel",H),window.addEventListener("keydown",v),n.addEventListener("lostpointercapture",H),f.current=j},onDoubleClick:()=>{I&&k?.()},onKeyDown:t=>{if(!R.current)return;const y=R.current,n=parseFloat(getComputedStyle(y).getPropertyValue(p)||`${P}`),$=M=>Math.min(Math.max(M,g),h),S=t.shiftKey?32:8;let C=0;if(b==="vertical"?t.key==="ArrowRight"?C=S:t.key==="ArrowLeft"&&(C=-S):t.key==="ArrowDown"?C=S:t.key==="ArrowUp"&&(C=-S),t.key==="Home"){t.preventDefault(),x?.(n);const M=$(g);y.style.setProperty(p,`${M}px`),t.currentTarget.setAttribute("aria-valuenow",String(M)),o?.(M),w?.(M);return}if(t.key==="End"){t.preventDefault(),x?.(n);const M=$(h);y.style.setProperty(p,`${M}px`),t.currentTarget.setAttribute("aria-valuenow",String(M)),o?.(M),w?.(M);return}if(C!==0){t.preventDefault(),x?.(n);const M=$(n+(T==="start"&&b==="vertical"?-C:C));y.style.setProperty(p,`${M}px`),t.currentTarget.setAttribute("aria-valuenow",String(M)),o?.(M),w?.(M)}}},i)});_.displayName="Shell.Handle";const me=e.forwardRef((a,i)=>e.createElement(_,{...a,ref:i}));me.displayName="Shell.Panel.Handle";const ye=e.forwardRef((a,i)=>e.createElement(_,{...a,ref:i}));ye.displayName="Shell.Sidebar.Handle";const be=e.forwardRef((a,i)=>e.createElement(_,{...a,ref:i}));be.displayName="Shell.Inspector.Handle";const ve=e.forwardRef((a,i)=>e.createElement(_,{...a,ref:i}));ve.displayName="Shell.Bottom.Handle";function re(a){const{currentBreakpoint:i}=Q();return e.useMemo(()=>{if(typeof a=="string")return a;if(a[i])return a[i];const u=[...Object.keys(le)].reverse().concat("initial"),R=u.indexOf(i);for(let p=R+1;p<u.length;p++){const g=u[p];if(a[g])return a[g]}return"fixed"},[a,i])}function ze(){const[a,i]=e.useState("initial"),[r,u]=e.useState(!1);return e.useEffect(()=>{if(typeof window>"u")return;const p=Object.entries(le).map(([h,P])=>[h,window.matchMedia(P)]),g=()=>{const h=p.filter(([,b])=>b.matches).map(([b])=>b),P=h[h.length-1]??"initial";i(P),u(!0)};return g(),p.forEach(([,h])=>h.addEventListener("change",g)),()=>{p.forEach(([,h])=>h.removeEventListener("change",g))}},[]),{bp:a,ready:r}}const ke=e.forwardRef(({className:a,children:i,height:r="full",...u},R)=>{const{bp:p,ready:g}=ze(),[h,P]=e.useState("collapsed"),[b,T]=e.useState("collapsed"),[L,o]=e.useState("expanded"),[x,w]=e.useState("collapsed"),[F,q]=e.useState("collapsed"),[K,I]=e.useState(!1),[V,U]=e.useState(!1),k=e.useRef(l=>l==="collapsed"?"thin":l==="thin"?"expanded":"collapsed"),f=e.useCallback(l=>{k.current=l},[]);e.useEffect(()=>{h==="collapsed"&&T("collapsed")},[h]),e.useEffect(()=>{V&&K&&console.warn("Shell: Sidebar cannot coexist with Rail or Panel. Use either Rail+Panel OR Sidebar.")},[V,K]);const[m,t]=e.useState(void 0),y=e.useCallback(l=>t(l),[]),n=e.useRef(64),$=e.useRef(288),S=e.useCallback(l=>{n.current=l},[]),C=e.useCallback(l=>{$.current=l},[]),M=e.useMemo(()=>{const l=e.Children.toArray(i),W=(Y,ie)=>e.isValidElement(Y)&&(Y.type===ie||Y.type?.displayName===ie.displayName);return l.some(Y=>W(Y,ae)||W(Y,te))},[i]),B=e.useMemo(()=>{const l=e.Children.toArray(i),W=(Y,ie)=>e.isValidElement(Y)&&(Y.type===ie||Y.type?.displayName===ie.displayName);return l.some(Y=>W(Y,se))},[i]),c=e.useCallback(l=>{switch(l){case"left":case"rail":P(W=>W==="expanded"?"collapsed":"expanded");break;case"panel":h==="collapsed"?(P("expanded"),T("expanded")):T(W=>W==="expanded"?"collapsed":"expanded");break;case"sidebar":o(W=>k.current(W));break;case"inspector":w(W=>W==="expanded"?"collapsed":"expanded");break;case"bottom":q(W=>W==="expanded"?"collapsed":"expanded");break}},[h]),N=e.useCallback(l=>{switch(l){case"left":case"rail":P("expanded");break;case"panel":P("expanded"),T("expanded");break;case"sidebar":o("expanded");break;case"inspector":w("expanded");break;case"bottom":q("expanded");break}},[]),D=e.useCallback(l=>{switch(l){case"left":case"rail":P("collapsed");break;case"panel":T("collapsed");break;case"sidebar":o("collapsed");break;case"inspector":w("collapsed");break;case"bottom":q("collapsed");break}},[]),j=e.useMemo(()=>({leftMode:h,setLeftMode:P,panelMode:b,setPanelMode:T,sidebarMode:L,setSidebarMode:o,inspectorMode:x,setInspectorMode:w,bottomMode:F,setBottomMode:q,hasLeft:K,setHasLeft:I,hasSidebar:V,setHasSidebar:U,currentBreakpoint:p,currentBreakpointReady:g,leftResolvedPresentation:m,togglePane:c,expandPane:N,collapsePane:D,setSidebarToggleComputer:f,onLeftPres:y,onRailDefaults:S,onPanelDefaults:C}),[h,b,L,x,F,K,V,p,g,m,c,N,D,f,y,S,C]),H=e.Children.toArray(i),v=(l,W)=>e.isValidElement(l)&&(l.type===W||l.type?.displayName===W.displayName),s=H.filter(l=>v(l,Me)),E=H.filter(l=>v(l,ae)),z=H.filter(l=>v(l,te)),Z=H.filter(l=>v(l,se)),X=H.filter(l=>v(l,Pe)),ne=H.filter(l=>v(l,pe)),Re=H.filter(l=>v(l,ue)),d=e.useMemo(()=>r==="full"?{height:"100vh"}:r==="auto"?{height:"auto"}:typeof r=="string"?{height:r}:typeof r=="number"?{height:`${r}px`}:{},[r]),[O,A]=e.useState(null),oe=e.useCallback(l=>A(l),[]),ee=e.useCallback(()=>A(null),[]);return e.createElement("div",{...u,ref:R,className:(0,J.default)("rt-ShellRoot",a),style:{...d,...u.style}},e.createElement(xe.Provider,{value:{...j,peekTarget:O,setPeekTarget:A,peekPane:oe,clearPeek:ee}},s,e.createElement("div",{className:"rt-ShellBody","data-peek-target":O??void 0,style:O==="rail"||O==="panel"?{"--peek-rail-width":`${n.current}px`}:void 0},M&&!B?(()=>{const l=E[0],W=l?{mode:l.props?.mode,defaultMode:l.props?.defaultMode,onModeChange:l.props?.onModeChange,presentation:l.props?.presentation,collapsible:l.props?.collapsible,onExpand:l.props?.onExpand,onCollapse:l.props?.onCollapse}:{};return e.createElement(he,{...W},E,z)})():Z,X,ne),Re))});ke.displayName="Shell.Root";const Me=e.forwardRef(({className:a,height:i=64,style:r,...u},R)=>e.createElement("header",{...u,ref:R,className:(0,J.default)("rt-ShellHeader",a),style:{...r,"--shell-header-height":`${i}px`}}));Me.displayName="Shell.Header";const he=e.forwardRef(({className:a,presentation:i={initial:"overlay",sm:"fixed"},mode:r,defaultMode:u="collapsed",onModeChange:R,collapsible:p=!0,onExpand:g,onCollapse:h,children:P,style:b,...T},L)=>{const o=Q(),x=re(i),w=x==="overlay",F=x==="stacked",q=e.useRef(null);e.useEffect(()=>{o.onLeftPres?.(x)},[o,x]);const K=e.useCallback(k=>{q.current=k,typeof L=="function"?L(k):L&&(L.current=k)},[L]);e.useEffect(()=>(o.setHasLeft(!0),()=>o.setHasLeft(!1)),[o]);const I=e.useCallback(()=>{if(typeof u=="string")return u;const k=u;if(k&&k[o.currentBreakpoint])return k[o.currentBreakpoint];const m=[...Object.keys(le)].reverse().concat("initial"),t=m.indexOf(o.currentBreakpoint);for(let y=t+1;y<m.length;y++){const n=m[y];if(k&&k[n])return k[n]}return"collapsed"},[u,o.currentBreakpoint]),V=e.useRef(null);e.useEffect(()=>{if(r!==void 0||!o.currentBreakpointReady||V.current===o.currentBreakpoint)return;V.current=o.currentBreakpoint;const k=I();k!==o.leftMode&&o.setLeftMode(k)},[r,o.currentBreakpoint,o.currentBreakpointReady,I,o.leftMode,o.setLeftMode]),e.useEffect(()=>{r!==void 0&&o.leftMode!==r&&o.setLeftMode(r)},[r,o]),e.useEffect(()=>{r===void 0&&R?.(o.leftMode)},[o.leftMode,r,R]),e.useEffect(()=>{o.leftMode==="expanded"?g?.():h?.()},[o.leftMode,g,h]);const U=o.leftMode==="expanded";if(w){const k=o.leftMode==="expanded",f=e.Children.toArray(P),m=(B,c)=>e.isValidElement(B)&&B.type===c,t=f.find(B=>m(B,ae)),y=f.find(B=>m(B,te)),n=typeof t?.props?.expandedSize=="number"?t.props.expandedSize:64,$=typeof y?.props?.expandedSize=="number"?y.props.expandedSize:288,S=!!t,C=!!y,M=(S?n:0)+(o.panelMode==="expanded"&&C?$:0);return e.createElement(G.Root,{open:k,onOpenChange:B=>o.setLeftMode(B?"expanded":"collapsed")},e.createElement(G.Content,{side:"start",style:{padding:0},width:{initial:`${M}px`}},e.createElement(ce.VisuallyHidden,null,e.createElement(G.Title,null,"Navigation")),e.createElement("div",{className:"rt-ShellLeft"},P)))}if(F){const k=o.leftMode==="expanded",f=e.Children.toArray(P),m=(c,N)=>e.isValidElement(c)&&c.type===N,t=f.find(c=>m(c,ae)),y=f.find(c=>m(c,te)),n=typeof t?.props?.expandedSize=="number"?t.props.expandedSize:64,$=typeof y?.props?.expandedSize=="number"?y.props.expandedSize:288,S=!!t,M=!!y&&(o.panelMode==="expanded"||o.peekTarget==="panel"),B=(S?n:0)+(M?$:0);return e.createElement("div",{...T,ref:K,className:(0,J.default)("rt-ShellLeft",a),"data-mode":o.leftMode,"data-peek":o.peekTarget==="left"||o.peekTarget==="rail"||o.peekTarget==="panel"||void 0,"data-presentation":x,style:{...b},"data-open":k||void 0},P)}return e.createElement("div",{...T,ref:K,className:(0,J.default)("rt-ShellLeft",a),"data-mode":o.leftMode,"data-peek":o.peekTarget==="left"||o.peekTarget==="rail"||o.peekTarget==="panel"||void 0,"data-presentation":x,style:{...b}},P)});he.displayName="Shell.Left";const ae=e.forwardRef(({className:a,presentation:i,mode:r,defaultMode:u,onModeChange:R,expandedSize:p=64,collapsible:g,onExpand:h,onCollapse:P,children:b,style:T,...L},o)=>{const x=Q();e.useEffect(()=>{x.onRailDefaults?.(p)},[x,p]);const w=x.leftMode==="expanded";return e.createElement("div",{...L,ref:o,className:(0,J.default)("rt-ShellRail",a),"data-mode":x.leftMode,"data-peek":x.leftResolvedPresentation!=="overlay"&&x.peekTarget==="rail"||void 0,style:{...T,"--rail-size":`${p}px`}},e.createElement("div",{className:"rt-ShellRailContent","data-visible":w||x.leftResolvedPresentation!=="overlay"&&x.peekTarget==="rail"||void 0},b))});ae.displayName="Shell.Rail";const te=e.forwardRef(({className:a,mode:i,onModeChange:r,expandedSize:u=288,minSize:R,maxSize:p,resizable:g,collapsible:h=!0,onExpand:P,onCollapse:b,onResize:T,onResizeStart:L,onResizeEnd:o,snapPoints:x,snapTolerance:w,collapseThreshold:F,paneId:q,persistence:K,children:I,style:V,...U},k)=>{const f=Q();e.useEffect(()=>{f.onPanelDefaults?.(u)},[f,u]);const m=e.useRef(null),t=e.useCallback(c=>{m.current=c,typeof k=="function"?k(c):k&&(k.current=c)},[k]),y=e.Children.toArray(I),n=y.filter(c=>e.isValidElement(c)&&c.type===me),$=y.filter(c=>!(e.isValidElement(c)&&c.type===me)),S=f.leftResolvedPresentation==="overlay",C=e.useMemo(()=>{if(!q||K)return K;const c=`kookie-ui:shell:panel:${q}`;return{load:()=>{if(typeof window>"u")return;const D=window.localStorage.getItem(c);return D?Number(D):void 0},save:D=>{typeof window>"u"||window.localStorage.setItem(c,String(D))}}},[q,K]);e.useEffect(()=>{let c=!0;return(async()=>{if(!g||!C?.load||S)return;const N=await C.load();c&&typeof N=="number"&&m.current&&(m.current.style.setProperty("--panel-size",`${N}px`),T?.(N))})(),()=>{c=!1}},[g,C,T,S]),e.useEffect(()=>{m.current&&S&&m.current.style.setProperty("--panel-size",`${u}px`)},[S,u]),e.useEffect(()=>{if(m.current&&f.leftResolvedPresentation!=="overlay"&&f.leftMode==="expanded"&&f.panelMode==="expanded"){const c=m.current.parentElement||null;try{c?.style.removeProperty("width")}catch{}}},[f.leftResolvedPresentation,f.leftMode,f.panelMode]);const M=f.leftMode==="expanded"&&f.panelMode==="expanded",B=g&&f.leftResolvedPresentation!=="overlay"&&M?e.createElement(de.Provider,{value:{containerRef:m,cssVarName:"--panel-size",minSize:typeof R=="number"?R:100,maxSize:typeof p=="number"?p:800,defaultSize:u,orientation:"vertical",edge:"end",computeNext:(c,N,D)=>{const j=getComputedStyle(m.current).direction==="rtl",H=c-N;return D+(j?-H:H)},onResize:T,onResizeStart:c=>{const D=m.current?.parentElement;try{D?.style.removeProperty("width")}catch{}L?.(c)},onResizeEnd:c=>{o?.(c),C?.save?.(c)},target:"panel",collapsible:!!h,snapPoints:x,snapTolerance:w??8,collapseThreshold:F,requestCollapse:()=>f.setPanelMode("collapsed"),requestToggle:()=>f.togglePane("panel")}},n.length>0?n.map((c,N)=>e.cloneElement(c,{key:c.key??N})):e.createElement(_,null)):null;return e.createElement("div",{...U,ref:t,className:(0,J.default)("rt-ShellPanel",a),"data-mode":f.panelMode,"data-visible":M||f.leftResolvedPresentation!=="overlay"&&f.peekTarget==="panel"||void 0,"data-peek":f.leftResolvedPresentation!=="overlay"&&f.peekTarget==="panel"||void 0,style:{...V,"--panel-size":`${u}px`}},e.createElement("div",{className:"rt-ShellPanelContent","data-visible":M||void 0},$),B)});te.displayName="Shell.Panel",te.Handle=me;const se=e.forwardRef(({className:a,presentation:i={initial:"overlay",md:"fixed"},mode:r,defaultMode:u="expanded",onModeChange:R,expandedSize:p=288,minSize:g=200,maxSize:h=400,resizable:P=!1,collapsible:b=!0,onExpand:T,onCollapse:L,onResize:o,onResizeStart:x,onResizeEnd:w,snapPoints:F,snapTolerance:q,collapseThreshold:K,paneId:I,persistence:V,children:U,style:k,thinSize:f=64,toggleModes:m,...t},y)=>{const n=Q(),$=re(i),S=$==="overlay",C=$==="stacked",M=e.useRef(null),B=e.useCallback(d=>{M.current=d,typeof y=="function"?y(d):y&&(y.current=d)},[y]),c=e.Children.toArray(U),N=c.filter(d=>e.isValidElement(d)&&d.type===ye),D=c.filter(d=>!(e.isValidElement(d)&&d.type===ye)),j=e.useId();e.useEffect(()=>(n.setHasSidebar(!0),()=>{n.setHasSidebar(!1)}),[n,j]);const H=e.useRef(!1);e.useEffect(()=>{H.current||(H.current=!0,r===void 0&&n.sidebarMode!==u&&n.setSidebarMode(u))},[]),e.useEffect(()=>{r!==void 0&&n.sidebarMode!==r&&n.setSidebarMode(r)},[r,n]),e.useEffect(()=>{r===void 0&&R?.(n.sidebarMode)},[n.sidebarMode,r,R]),e.useEffect(()=>{n.sidebarMode==="expanded"?T?.():L?.()},[n.sidebarMode,T,L]);const v=n.sidebarMode!=="collapsed",s=e.useMemo(()=>{if(!I||V)return V;const d=`kookie-ui:shell:sidebar:${I}`;return{load:()=>{if(typeof window>"u")return;const A=window.localStorage.getItem(d);return A?Number(A):void 0},save:A=>{typeof window>"u"||window.localStorage.setItem(d,String(A))}}},[I,V]);e.useEffect(()=>{let d=!0;return(async()=>{if(!P||!s?.load||S)return;const O=await s.load();d&&typeof O=="number"&&M.current&&(M.current.style.setProperty("--sidebar-size",`${O}px`),o?.(O))})(),()=>{d=!1}},[P,s,o,S]);const E=Q();e.useEffect(()=>{if(!E.setSidebarToggleComputer)return;const d=m&&m.length>0?m:["thin","expanded"],O=A=>A==="collapsed"?d[0]??"expanded":A==="thin"?d.includes("thin")&&d.includes("expanded")?"expanded":"collapsed":d.length===2&&d.includes("thin")&&d.includes("expanded")?"collapsed":d.includes("thin")&&!d.includes("expanded")?"thin":"collapsed";return E.setSidebarToggleComputer(O),()=>{E.setSidebarToggleComputer?.(A=>A==="collapsed"?"thin":A==="thin"?"expanded":"collapsed")}},[E,m]);const z=e.useRef(p),Z=e.useRef("expanded");e.useEffect(()=>{n.sidebarMode!=="collapsed"&&(Z.current=n.sidebarMode,z.current=n.sidebarMode==="thin"?f:p)},[n.sidebarMode,f,p]);const X=e.useCallback(()=>{if(typeof u=="string")return u;const d=u;if(d&&d[n.currentBreakpoint])return d[n.currentBreakpoint];const A=[...Object.keys(le)].reverse().concat("initial"),oe=A.indexOf(n.currentBreakpoint);for(let ee=oe+1;ee<A.length;ee++){const l=A[ee];if(d&&d[l])return d[l]}return"collapsed"},[u,n.currentBreakpoint]),ne=e.useRef(null);e.useEffect(()=>{if(r!==void 0||!n.currentBreakpointReady||ne.current===n.currentBreakpoint)return;ne.current=n.currentBreakpoint;const d=X();d!==n.sidebarMode&&n.setSidebarMode(d)},[r,n.currentBreakpoint,n.currentBreakpointReady,X,n.sidebarMode,n.setSidebarMode]);const Re=P&&!S&&n.sidebarMode==="expanded"?e.createElement(de.Provider,{value:{containerRef:M,cssVarName:"--sidebar-size",minSize:g,maxSize:h,defaultSize:p,orientation:"vertical",edge:"end",computeNext:(d,O,A)=>{const oe=getComputedStyle(M.current).direction==="rtl",ee=d-O;return A+(oe?-ee:ee)},onResize:o,onResizeStart:x,onResizeEnd:d=>{w?.(d),s?.save?.(d)},target:"sidebar",collapsible:b,snapPoints:F,snapTolerance:q??8,collapseThreshold:K,requestCollapse:()=>n.setSidebarMode("collapsed"),requestToggle:()=>n.togglePane("sidebar")}},N.length>0?N.map((d,O)=>e.cloneElement(d,{key:d.key??O})):e.createElement(_,null)):null;if(S){const d=n.sidebarMode!=="collapsed";return e.createElement(G.Root,{open:d,onOpenChange:O=>n.setSidebarMode(O?"expanded":"collapsed")},e.createElement(G.Content,{side:"start",style:{padding:0},width:{initial:`${d?n.sidebarMode==="thin"?f:p:z.current}px`}},e.createElement(ce.VisuallyHidden,null,e.createElement(G.Title,null,"Sidebar")),U))}return e.createElement("div",{...t,ref:B,className:(0,J.default)("rt-ShellSidebar",a),"data-mode":n.sidebarMode,"data-peek":n.peekTarget==="sidebar"||void 0,"data-presentation":$,"data-open":C&&v||void 0,style:{...k,"--sidebar-size":`${p}px`,"--sidebar-thin-size":`${f}px`,"--sidebar-min-size":`${g}px`,"--sidebar-max-size":`${h}px`,...n.peekTarget==="sidebar"&&!S?(()=>{const d=m&&m.length>0?m:["thin","expanded"],O=n.sidebarMode;let A="collapsed";return O==="collapsed"?A=d[0]??"expanded":O==="thin"?A=d.includes("expanded")?"expanded":"collapsed":A=d.includes("thin")?"thin":"collapsed",{"--peek-sidebar-width":`${A==="thin"?f:p}px`}})():{}}},e.createElement("div",{className:"rt-ShellSidebarContent","data-visible":v||void 0},D),Re)});se.displayName="Shell.Sidebar",se.Handle=ye;const Pe=e.forwardRef(({className:a,...i},r)=>e.createElement("main",{...i,ref:r,className:(0,J.default)("rt-ShellContent",a)}));Pe.displayName="Shell.Content";const pe=e.forwardRef(({className:a,presentation:i={initial:"overlay",lg:"fixed"},mode:r,defaultMode:u="collapsed",onModeChange:R,expandedSize:p=320,minSize:g=200,maxSize:h=500,resizable:P=!1,collapsible:b=!0,onExpand:T,onCollapse:L,onResize:o,onResizeStart:x,onResizeEnd:w,snapPoints:F,snapTolerance:q,collapseThreshold:K,paneId:I,persistence:V,children:U,style:k,...f},m)=>{const t=Q(),y=re(i),n=y==="overlay",$=y==="stacked",S=e.useRef(null),C=e.useCallback(s=>{S.current=s,typeof m=="function"?m(s):m&&(m.current=s)},[m]),M=e.Children.toArray(U),B=M.filter(s=>e.isValidElement(s)&&s.type===be),c=M.filter(s=>!(e.isValidElement(s)&&s.type===be)),N=e.useCallback(()=>{if(typeof u=="string")return u;const s=u;if(s&&s[t.currentBreakpoint])return s[t.currentBreakpoint];const z=[...Object.keys(le)].reverse().concat("initial"),Z=z.indexOf(t.currentBreakpoint);for(let X=Z+1;X<z.length;X++){const ne=z[X];if(s&&s[ne])return s[ne]}return"collapsed"},[u,t.currentBreakpoint]),D=e.useRef(null);e.useEffect(()=>{if(r!==void 0||!t.currentBreakpointReady||D.current===t.currentBreakpoint)return;D.current=t.currentBreakpoint;const s=N();s!==t.inspectorMode&&t.setInspectorMode(s)},[r,t.currentBreakpoint,t.currentBreakpointReady,N,t.inspectorMode,t.setInspectorMode]),e.useEffect(()=>{r!==void 0&&t.inspectorMode!==r&&t.setInspectorMode(r)},[r,t]),e.useEffect(()=>{r===void 0&&R?.(t.inspectorMode)},[t.inspectorMode,r,R]),e.useEffect(()=>{t.inspectorMode==="expanded"?T?.():L?.()},[t.inspectorMode,T,L]);const j=t.inspectorMode==="expanded",H=e.useMemo(()=>{if(!I||V)return V;const s=`kookie-ui:shell:inspector:${I}`;return{load:()=>{if(typeof window>"u")return;const z=window.localStorage.getItem(s);return z?Number(z):void 0},save:z=>{typeof window>"u"||window.localStorage.setItem(s,String(z))}}},[I,V]);e.useEffect(()=>{let s=!0;return(async()=>{if(!P||!H?.load||n)return;const E=await H.load();s&&typeof E=="number"&&S.current&&(S.current.style.setProperty("--inspector-size",`${E}px`),o?.(E))})(),()=>{s=!1}},[P,H,o,n]);const v=P&&!n&&j?e.createElement(de.Provider,{value:{containerRef:S,cssVarName:"--inspector-size",minSize:g,maxSize:h,defaultSize:p,orientation:"vertical",edge:"start",computeNext:(s,E,z)=>{const Z=getComputedStyle(S.current).direction==="rtl",X=s-E;return z+(Z?X:-X)},onResize:o,onResizeStart:x,onResizeEnd:s=>{w?.(s),H?.save?.(s)},target:"inspector",collapsible:b,snapPoints:F,snapTolerance:q??8,collapseThreshold:K,requestCollapse:()=>t.setInspectorMode("collapsed"),requestToggle:()=>t.togglePane("inspector")}},B.length>0?B.map((s,E)=>e.cloneElement(s,{key:s.key??E})):e.createElement(_,null)):null;if(n){const s=t.inspectorMode==="expanded";return e.createElement(G.Root,{open:s,onOpenChange:E=>t.setInspectorMode(E?"expanded":"collapsed")},e.createElement(G.Content,{side:"end",style:{padding:0},width:{initial:`${p}px`}},e.createElement(ce.VisuallyHidden,null,e.createElement(G.Title,null,"Inspector")),U))}return e.createElement("div",{...f,ref:C,className:(0,J.default)("rt-ShellInspector",a),"data-mode":t.inspectorMode,"data-peek":t.peekTarget==="inspector"||void 0,"data-presentation":y,"data-open":$&&j||void 0,style:{...k,"--inspector-size":`${p}px`,"--inspector-min-size":`${g}px`,"--inspector-max-size":`${h}px`}},e.createElement("div",{className:"rt-ShellInspectorContent","data-visible":j||void 0},c),v)});pe.displayName="Shell.Inspector",pe.Handle=be;const ue=e.forwardRef(({className:a,presentation:i="fixed",mode:r,defaultMode:u="collapsed",onModeChange:R,expandedSize:p=200,minSize:g=100,maxSize:h=400,resizable:P=!1,collapsible:b=!0,onExpand:T,onCollapse:L,onResize:o,onResizeStart:x,onResizeEnd:w,snapPoints:F,snapTolerance:q,collapseThreshold:K,paneId:I,persistence:V,children:U,style:k,...f},m)=>{const t=Q(),y=re(i),n=y==="overlay",$=y==="stacked",S=e.useRef(null),C=e.useCallback(v=>{S.current=v,typeof m=="function"?m(v):m&&(m.current=v)},[m]),M=e.Children.toArray(U),B=M.filter(v=>e.isValidElement(v)&&v.type===ve),c=M.filter(v=>!(e.isValidElement(v)&&v.type===ve)),N=e.useRef(!1);e.useEffect(()=>{N.current||(N.current=!0,r===void 0&&t.bottomMode!==u&&t.setBottomMode(u))},[]),e.useEffect(()=>{r!==void 0&&t.bottomMode!==r&&t.setBottomMode(r)},[r,t]),e.useEffect(()=>{r===void 0&&R?.(t.bottomMode)},[t.bottomMode,r,R]),e.useEffect(()=>{t.bottomMode==="expanded"?T?.():L?.()},[t.bottomMode,T,L]);const D=t.bottomMode==="expanded",j=e.useMemo(()=>{if(!I||V)return V;const v=`kookie-ui:shell:bottom:${I}`;return{load:()=>{if(typeof window>"u")return;const E=window.localStorage.getItem(v);return E?Number(E):void 0},save:E=>{typeof window>"u"||window.localStorage.setItem(v,String(E))}}},[I,V]);e.useEffect(()=>{let v=!0;return(async()=>{if(!P||!j?.load||n)return;const s=await j.load();v&&typeof s=="number"&&S.current&&(S.current.style.setProperty("--bottom-size",`${s}px`),o?.(s))})(),()=>{v=!1}},[P,j,o,n]);const H=P&&!n&&D?e.createElement(de.Provider,{value:{containerRef:S,cssVarName:"--bottom-size",minSize:g,maxSize:h,defaultSize:p,orientation:"horizontal",edge:"start",computeNext:(v,s,E)=>{const z=v-s;return E-z},onResize:o,onResizeStart:x,onResizeEnd:v=>{w?.(v),j?.save?.(v)},target:"bottom",collapsible:b,snapPoints:F,snapTolerance:q??8,collapseThreshold:K,requestCollapse:()=>t.setBottomMode("collapsed"),requestToggle:()=>t.togglePane("bottom")}},B.length>0?B.map((v,s)=>e.cloneElement(v,{key:v.key??s})):e.createElement(_,null)):null;if(n){const v=t.bottomMode==="expanded";return e.createElement(G.Root,{open:v,onOpenChange:s=>t.setBottomMode(s?"expanded":"collapsed")},e.createElement(G.Content,{side:"bottom",style:{padding:0},height:{initial:`${p}px`}},e.createElement(ce.VisuallyHidden,null,e.createElement(G.Title,null,"Bottom panel")),U))}return e.createElement("div",{...f,ref:C,className:(0,J.default)("rt-ShellBottom",a),"data-mode":t.bottomMode,"data-peek":t.peekTarget==="bottom"||void 0,"data-presentation":y,"data-open":$&&D||void 0,style:{...k,"--bottom-size":`${p}px`,"--bottom-min-size":`${g}px`,"--bottom-max-size":`${h}px`}},e.createElement("div",{className:"rt-ShellBottomContent","data-visible":D||void 0},c),H)});ue.displayName="Shell.Bottom",ue.Handle=ve;const Ee=e.forwardRef(({target:a,action:i="toggle",peekOnHover:r,onClick:u,onMouseEnter:R,onMouseLeave:p,children:g,...h},P)=>{const b=Q(),T=e.useCallback(w=>{switch(u?.(w),i){case"toggle":b.togglePane(a);break;case"expand":b.expandPane(a);break;case"collapse":b.collapsePane(a);break}},[b,a,i,u]),L=(()=>{switch(a){case"left":case"rail":return b.leftMode==="collapsed";case"panel":return b.leftMode==="collapsed"||b.panelMode==="collapsed";case"sidebar":return b.sidebarMode==="collapsed";case"inspector":return b.inspectorMode==="collapsed";case"bottom":return b.bottomMode==="collapsed"}})(),o=e.useCallback(w=>{R?.(w),!(!r||!L)&&b.peekPane(a)},[R,r,L,b,a]),x=e.useCallback(w=>{p?.(w),r&&b.peekTarget===a&&b.clearPeek()},[p,r,b,a]);return e.createElement("button",{...h,ref:P,onClick:T,onMouseEnter:o,onMouseLeave:x,"data-shell-trigger":a,"data-shell-action":i},g)});Ee.displayName="Shell.Trigger";
|
|
1
|
+
"use strict";"use client";var Ce=Object.create;var fe=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var we=Object.getOwnPropertyNames;var Be=Object.getPrototypeOf,He=Object.prototype.hasOwnProperty;var Le=(a,i)=>{for(var r in i)fe(a,r,{get:i[r],enumerable:!0})},ge=(a,i,r,u)=>{if(i&&typeof i=="object"||typeof i=="function")for(let R of we(i))!He.call(a,R)&&R!==r&&fe(a,R,{get:()=>i[R],enumerable:!(u=Te(i,R))||u.enumerable});return a};var Se=(a,i,r)=>(r=a!=null?Ce(Be(a)):{},ge(i||!a||!a.__esModule?fe(r,"default",{value:a,enumerable:!0}):r,a)),Ne=a=>ge(fe({},"__esModule",{value:!0}),a);var De={};Le(De,{Bottom:()=>ue,Content:()=>Pe,Header:()=>Me,Inspector:()=>pe,Left:()=>he,Panel:()=>te,Rail:()=>ae,Root:()=>ke,Sidebar:()=>se,Trigger:()=>Ee,useResponsivePresentation:()=>re,useShell:()=>Q});module.exports=Ne(De);var e=Se(require("react")),J=Se(require("classnames")),G=Se(require("./sheet.js")),$e=require("./inset.js"),ce=require("./visually-hidden.js");const le={xs:"(min-width: 520px)",sm:"(min-width: 768px)",md:"(min-width: 1024px)",lg:"(min-width: 1280px)",xl:"(min-width: 1640px)"},xe=e.createContext(null);function Q(){const a=e.useContext(xe);if(!a)throw new Error("Shell components must be used within <Shell.Root>");return a}const de=e.createContext(null);function Ae(){const a=e.useContext(de);if(!a)throw new Error("Shell.Handle must be used within a resizable pane");return a}const _=e.forwardRef(({className:a,children:i,...r},u)=>{const{containerRef:R,cssVarName:p,minSize:g,maxSize:h,defaultSize:P,orientation:b,edge:T,computeNext:L,onResize:o,onResizeStart:x,onResizeEnd:w,snapPoints:F,snapTolerance:q,collapseThreshold:K,collapsible:I,target:V,requestCollapse:U,requestToggle:k}=Ae(),f=e.useRef(null);e.useEffect(()=>()=>{try{f.current?.()}catch{}f.current=null},[]);const m=b;return e.createElement("div",{...r,ref:u,className:(0,J.default)("rt-ShellResizer",a),"data-orientation":b,"data-edge":T,role:"slider","aria-orientation":m,"aria-valuemin":g,"aria-valuemax":h,"aria-valuenow":P,tabIndex:0,onPointerDown:t=>{if(!R.current)return;t.preventDefault();const y=R.current,n=t.currentTarget,$=t.pointerId;try{f.current?.()}catch{}y.setAttribute("data-resizing","");try{n.setPointerCapture($)}catch{}const S=b==="vertical"?t.clientX:t.clientY,C=parseFloat(getComputedStyle(y).getPropertyValue(p)||`${P}`),M=s=>Math.min(Math.max(s,g),h),B=document.body,c=B.style.cursor,N=B.style.userSelect;B.style.cursor=b==="vertical"?"col-resize":"row-resize",B.style.userSelect="none",x?.(C);const z=s=>{const E=b==="vertical"?s.clientX:s.clientY,D=M(L(E,S,C));y.style.setProperty(p,`${D}px`),n.setAttribute("aria-valuenow",String(D)),o?.(D)},j=()=>{try{n.releasePointerCapture($)}catch{}window.removeEventListener("pointermove",z),window.removeEventListener("pointerup",H),window.removeEventListener("pointercancel",H),window.removeEventListener("keydown",v),n.removeEventListener("lostpointercapture",H),y.removeAttribute("data-resizing"),B.style.cursor=c,B.style.userSelect=N,f.current=null},H=()=>{const s=parseFloat(getComputedStyle(y).getPropertyValue(p)||`${P}`);let E=s;if(F&&F.length){const D=F.reduce((Z,X)=>Math.abs(X-s)<Math.abs(Z-s)?X:Z,F[0]);Math.abs(D-s)<=(q??8)&&(E=D,y.style.setProperty(p,`${E}px`),n.setAttribute("aria-valuenow",String(E)),o?.(E))}I&&typeof K=="number"&&s<=K&&U?.(),w?.(E),j()},v=s=>{s.key==="Escape"&&(y.style.setProperty(p,`${C}px`),n.setAttribute("aria-valuenow",String(C)),w?.(C),j())};window.addEventListener("pointermove",z),window.addEventListener("pointerup",H),window.addEventListener("pointercancel",H),window.addEventListener("keydown",v),n.addEventListener("lostpointercapture",H),f.current=j},onDoubleClick:()=>{I&&k?.()},onKeyDown:t=>{if(!R.current)return;const y=R.current,n=parseFloat(getComputedStyle(y).getPropertyValue(p)||`${P}`),$=M=>Math.min(Math.max(M,g),h),S=t.shiftKey?32:8;let C=0;if(b==="vertical"?t.key==="ArrowRight"?C=S:t.key==="ArrowLeft"&&(C=-S):t.key==="ArrowDown"?C=S:t.key==="ArrowUp"&&(C=-S),t.key==="Home"){t.preventDefault(),x?.(n);const M=$(g);y.style.setProperty(p,`${M}px`),t.currentTarget.setAttribute("aria-valuenow",String(M)),o?.(M),w?.(M);return}if(t.key==="End"){t.preventDefault(),x?.(n);const M=$(h);y.style.setProperty(p,`${M}px`),t.currentTarget.setAttribute("aria-valuenow",String(M)),o?.(M),w?.(M);return}if(C!==0){t.preventDefault(),x?.(n);const M=$(n+(T==="start"&&b==="vertical"?-C:C));y.style.setProperty(p,`${M}px`),t.currentTarget.setAttribute("aria-valuenow",String(M)),o?.(M),w?.(M)}}},i)});_.displayName="Shell.Handle";const me=e.forwardRef((a,i)=>e.createElement(_,{...a,ref:i}));me.displayName="Shell.Panel.Handle";const ye=e.forwardRef((a,i)=>e.createElement(_,{...a,ref:i}));ye.displayName="Shell.Sidebar.Handle";const be=e.forwardRef((a,i)=>e.createElement(_,{...a,ref:i}));be.displayName="Shell.Inspector.Handle";const ve=e.forwardRef((a,i)=>e.createElement(_,{...a,ref:i}));ve.displayName="Shell.Bottom.Handle";function re(a){const{currentBreakpoint:i}=Q();return e.useMemo(()=>{if(typeof a=="string")return a;if(a[i])return a[i];const u=[...Object.keys(le)].reverse().concat("initial"),R=u.indexOf(i);for(let p=R+1;p<u.length;p++){const g=u[p];if(a[g])return a[g]}return"fixed"},[a,i])}function ze(){const[a,i]=e.useState("initial"),[r,u]=e.useState(!1);return e.useEffect(()=>{if(typeof window>"u")return;const p=Object.entries(le).map(([h,P])=>[h,window.matchMedia(P)]),g=()=>{const h=p.filter(([,b])=>b.matches).map(([b])=>b),P=h[h.length-1]??"initial";i(P),u(!0)};return g(),p.forEach(([,h])=>h.addEventListener("change",g)),()=>{p.forEach(([,h])=>h.removeEventListener("change",g))}},[]),{bp:a,ready:r}}const ke=e.forwardRef(({className:a,children:i,height:r="full",...u},R)=>{const{bp:p,ready:g}=ze(),[h,P]=e.useState("collapsed"),[b,T]=e.useState("collapsed"),[L,o]=e.useState("expanded"),[x,w]=e.useState("collapsed"),[F,q]=e.useState("collapsed"),[K,I]=e.useState(!1),[V,U]=e.useState(!1),k=e.useRef(l=>l==="collapsed"?"thin":l==="thin"?"expanded":"collapsed"),f=e.useCallback(l=>{k.current=l},[]);e.useEffect(()=>{h==="collapsed"&&T("collapsed")},[h]),e.useEffect(()=>{V&&K&&console.warn("Shell: Sidebar cannot coexist with Rail or Panel. Use either Rail+Panel OR Sidebar.")},[V,K]);const[m,t]=e.useState(void 0),y=e.useCallback(l=>t(l),[]),n=e.useRef(64),$=e.useRef(288),S=e.useCallback(l=>{n.current=l},[]),C=e.useCallback(l=>{$.current=l},[]),M=e.useMemo(()=>{const l=e.Children.toArray(i),W=(Y,ie)=>e.isValidElement(Y)&&(Y.type===ie||Y.type?.displayName===ie.displayName);return l.some(Y=>W(Y,ae)||W(Y,te))},[i]),B=e.useMemo(()=>{const l=e.Children.toArray(i),W=(Y,ie)=>e.isValidElement(Y)&&(Y.type===ie||Y.type?.displayName===ie.displayName);return l.some(Y=>W(Y,se))},[i]),c=e.useCallback(l=>{switch(l){case"left":case"rail":P(W=>W==="expanded"?"collapsed":"expanded");break;case"panel":h==="collapsed"?(P("expanded"),T("expanded")):T(W=>W==="expanded"?"collapsed":"expanded");break;case"sidebar":o(W=>k.current(W));break;case"inspector":w(W=>W==="expanded"?"collapsed":"expanded");break;case"bottom":q(W=>W==="expanded"?"collapsed":"expanded");break}},[h]),N=e.useCallback(l=>{switch(l){case"left":case"rail":P("expanded");break;case"panel":P("expanded"),T("expanded");break;case"sidebar":o("expanded");break;case"inspector":w("expanded");break;case"bottom":q("expanded");break}},[]),z=e.useCallback(l=>{switch(l){case"left":case"rail":P("collapsed");break;case"panel":T("collapsed");break;case"sidebar":o("collapsed");break;case"inspector":w("collapsed");break;case"bottom":q("collapsed");break}},[]),j=e.useMemo(()=>({leftMode:h,setLeftMode:P,panelMode:b,setPanelMode:T,sidebarMode:L,setSidebarMode:o,inspectorMode:x,setInspectorMode:w,bottomMode:F,setBottomMode:q,hasLeft:K,setHasLeft:I,hasSidebar:V,setHasSidebar:U,currentBreakpoint:p,currentBreakpointReady:g,leftResolvedPresentation:m,togglePane:c,expandPane:N,collapsePane:z,setSidebarToggleComputer:f,onLeftPres:y,onRailDefaults:S,onPanelDefaults:C}),[h,b,L,x,F,K,V,p,g,m,c,N,z,f,y,S,C]),H=e.Children.toArray(i),v=(l,W)=>e.isValidElement(l)&&(l.type===W||l.type?.displayName===W.displayName),s=H.filter(l=>v(l,Me)),E=H.filter(l=>v(l,ae)),D=H.filter(l=>v(l,te)),Z=H.filter(l=>v(l,se)),X=H.filter(l=>v(l,Pe)),ne=H.filter(l=>v(l,pe)),Re=H.filter(l=>v(l,ue)),d=e.useMemo(()=>r==="full"?{height:"100vh"}:r==="auto"?{height:"auto"}:typeof r=="string"?{height:r}:typeof r=="number"?{height:`${r}px`}:{},[r]),[O,A]=e.useState(null),oe=e.useCallback(l=>A(l),[]),ee=e.useCallback(()=>A(null),[]);return e.createElement("div",{...u,ref:R,className:(0,J.default)("rt-ShellRoot",a),style:{...d,...u.style}},e.createElement(xe.Provider,{value:{...j,peekTarget:O,setPeekTarget:A,peekPane:oe,clearPeek:ee}},s,e.createElement("div",{className:"rt-ShellBody","data-peek-target":O??void 0,style:O==="rail"||O==="panel"?{"--peek-rail-width":`${n.current}px`}:void 0},M&&!B?(()=>{const l=E[0],W=l?{mode:l.props?.mode,defaultMode:l.props?.defaultMode,onModeChange:l.props?.onModeChange,presentation:l.props?.presentation,collapsible:l.props?.collapsible,onExpand:l.props?.onExpand,onCollapse:l.props?.onCollapse}:{};return e.createElement(he,{...W},E,D)})():Z,X,ne),Re))});ke.displayName="Shell.Root";const Me=e.forwardRef(({className:a,height:i=64,style:r,...u},R)=>e.createElement("header",{...u,ref:R,className:(0,J.default)("rt-ShellHeader",a),style:{...r,"--shell-header-height":`${i}px`}}));Me.displayName="Shell.Header";const he=e.forwardRef(({className:a,presentation:i={initial:"overlay",sm:"fixed"},mode:r,defaultMode:u="collapsed",onModeChange:R,collapsible:p=!0,onExpand:g,onCollapse:h,children:P,style:b,...T},L)=>{const o=Q(),x=re(i),w=x==="overlay",F=x==="stacked",q=e.useRef(null);e.useEffect(()=>{o.onLeftPres?.(x)},[o,x]);const K=e.useCallback(k=>{q.current=k,typeof L=="function"?L(k):L&&(L.current=k)},[L]);e.useEffect(()=>(o.setHasLeft(!0),()=>o.setHasLeft(!1)),[o]);const I=e.useCallback(()=>{if(typeof u=="string")return u;const k=u;if(k&&k[o.currentBreakpoint])return k[o.currentBreakpoint];const m=[...Object.keys(le)].reverse().concat("initial"),t=m.indexOf(o.currentBreakpoint);for(let y=t+1;y<m.length;y++){const n=m[y];if(k&&k[n])return k[n]}return"collapsed"},[u,o.currentBreakpoint]),V=e.useRef(null);e.useEffect(()=>{if(r!==void 0||!o.currentBreakpointReady||V.current===o.currentBreakpoint)return;V.current=o.currentBreakpoint;const k=I();k!==o.leftMode&&o.setLeftMode(k)},[r,o.currentBreakpoint,o.currentBreakpointReady,I,o.leftMode,o.setLeftMode]),e.useEffect(()=>{r!==void 0&&o.leftMode!==r&&o.setLeftMode(r)},[r,o]),e.useEffect(()=>{r===void 0&&R?.(o.leftMode)},[o.leftMode,r,R]),e.useEffect(()=>{o.leftMode==="expanded"?g?.():h?.()},[o.leftMode,g,h]);const U=o.leftMode==="expanded";if(w){const k=o.leftMode==="expanded",f=e.Children.toArray(P),m=(B,c)=>e.isValidElement(B)&&B.type===c,t=f.find(B=>m(B,ae)),y=f.find(B=>m(B,te)),n=typeof t?.props?.expandedSize=="number"?t.props.expandedSize:64,$=typeof y?.props?.expandedSize=="number"?y.props.expandedSize:288,S=!!t,C=!!y,M=(S?n:0)+(o.panelMode==="expanded"&&C?$:0);return e.createElement(G.Root,{open:k,onOpenChange:B=>o.setLeftMode(B?"expanded":"collapsed")},e.createElement(G.Content,{side:"start",style:{padding:0},width:{initial:`${M}px`}},e.createElement(ce.VisuallyHidden,null,e.createElement(G.Title,null,"Navigation")),e.createElement("div",{className:"rt-ShellLeft"},P)))}if(F){const k=o.leftMode==="expanded",f=e.Children.toArray(P),m=(c,N)=>e.isValidElement(c)&&c.type===N,t=f.find(c=>m(c,ae)),y=f.find(c=>m(c,te)),n=typeof t?.props?.expandedSize=="number"?t.props.expandedSize:64,$=typeof y?.props?.expandedSize=="number"?y.props.expandedSize:288,S=!!t,M=!!y&&(o.panelMode==="expanded"||o.peekTarget==="panel"),B=(S?n:0)+(M?$:0);return e.createElement("div",{...T,ref:K,className:(0,J.default)("rt-ShellLeft",a),"data-mode":o.leftMode,"data-peek":o.peekTarget==="left"||o.peekTarget==="rail"||o.peekTarget==="panel"||void 0,"data-presentation":x,style:{...b},"data-open":k||void 0},P)}return e.createElement("div",{...T,ref:K,className:(0,J.default)("rt-ShellLeft",a),"data-mode":o.leftMode,"data-peek":o.peekTarget==="left"||o.peekTarget==="rail"||o.peekTarget==="panel"||void 0,"data-presentation":x,style:{...b}},P)});he.displayName="Shell.Left";const ae=e.forwardRef(({className:a,presentation:i,mode:r,defaultMode:u,onModeChange:R,expandedSize:p=64,collapsible:g,onExpand:h,onCollapse:P,children:b,style:T,...L},o)=>{const x=Q();e.useEffect(()=>{x.onRailDefaults?.(p)},[x,p]);const w=x.leftMode==="expanded";return e.createElement("div",{...L,ref:o,className:(0,J.default)("rt-ShellRail",a),"data-mode":x.leftMode,"data-peek":x.leftResolvedPresentation!=="overlay"&&x.peekTarget==="rail"||void 0,style:{...T,"--rail-size":`${p}px`}},e.createElement("div",{className:"rt-ShellRailContent","data-visible":w||x.leftResolvedPresentation!=="overlay"&&x.peekTarget==="rail"||void 0},b))});ae.displayName="Shell.Rail";const te=e.forwardRef(({className:a,mode:i,onModeChange:r,expandedSize:u=288,minSize:R,maxSize:p,resizable:g,collapsible:h=!0,onExpand:P,onCollapse:b,onResize:T,onResizeStart:L,onResizeEnd:o,snapPoints:x,snapTolerance:w,collapseThreshold:F,paneId:q,persistence:K,children:I,style:V,...U},k)=>{const f=Q();e.useEffect(()=>{f.onPanelDefaults?.(u)},[f,u]);const m=e.useRef(null),t=e.useCallback(c=>{m.current=c,typeof k=="function"?k(c):k&&(k.current=c)},[k]),y=e.Children.toArray(I),n=y.filter(c=>e.isValidElement(c)&&c.type===me),$=y.filter(c=>!(e.isValidElement(c)&&c.type===me)),S=f.leftResolvedPresentation==="overlay",C=e.useMemo(()=>{if(!q||K)return K;const c=`kookie-ui:shell:panel:${q}`;return{load:()=>{if(typeof window>"u")return;const z=window.localStorage.getItem(c);return z?Number(z):void 0},save:z=>{typeof window>"u"||window.localStorage.setItem(c,String(z))}}},[q,K]);e.useEffect(()=>{let c=!0;return(async()=>{if(!g||!C?.load||S)return;const N=await C.load();c&&typeof N=="number"&&m.current&&(m.current.style.setProperty("--panel-size",`${N}px`),T?.(N))})(),()=>{c=!1}},[g,C,T,S]),e.useEffect(()=>{m.current&&S&&m.current.style.setProperty("--panel-size",`${u}px`)},[S,u]),e.useEffect(()=>{if(m.current&&f.leftResolvedPresentation!=="overlay"&&f.leftMode==="expanded"&&f.panelMode==="expanded"){const c=m.current.parentElement||null;try{c?.style.removeProperty("width")}catch{}}},[f.leftResolvedPresentation,f.leftMode,f.panelMode]);const M=f.leftMode==="expanded"&&f.panelMode==="expanded",B=g&&f.leftResolvedPresentation!=="overlay"&&M?e.createElement(de.Provider,{value:{containerRef:m,cssVarName:"--panel-size",minSize:typeof R=="number"?R:100,maxSize:typeof p=="number"?p:800,defaultSize:u,orientation:"vertical",edge:"end",computeNext:(c,N,z)=>{const j=getComputedStyle(m.current).direction==="rtl",H=c-N;return z+(j?-H:H)},onResize:T,onResizeStart:c=>{const z=m.current?.parentElement;try{z?.style.removeProperty("width")}catch{}L?.(c)},onResizeEnd:c=>{o?.(c),C?.save?.(c)},target:"panel",collapsible:!!h,snapPoints:x,snapTolerance:w??8,collapseThreshold:F,requestCollapse:()=>f.setPanelMode("collapsed"),requestToggle:()=>f.togglePane("panel")}},n.length>0?n.map((c,N)=>e.cloneElement(c,{key:c.key??N})):e.createElement(_,null)):null;return e.createElement("div",{...U,ref:t,className:(0,J.default)("rt-ShellPanel",a),"data-mode":f.panelMode,"data-visible":M||f.leftResolvedPresentation!=="overlay"&&f.peekTarget==="panel"||void 0,"data-peek":f.leftResolvedPresentation!=="overlay"&&f.peekTarget==="panel"||void 0,style:{...V,"--panel-size":`${u}px`}},e.createElement("div",{className:"rt-ShellPanelContent","data-visible":M||void 0},$),B)});te.displayName="Shell.Panel",te.Handle=me;const se=e.forwardRef(({className:a,presentation:i={initial:"overlay",md:"fixed"},mode:r,defaultMode:u="expanded",onModeChange:R,expandedSize:p=288,minSize:g=200,maxSize:h=400,resizable:P=!1,collapsible:b=!0,onExpand:T,onCollapse:L,onResize:o,onResizeStart:x,onResizeEnd:w,snapPoints:F,snapTolerance:q,collapseThreshold:K,paneId:I,persistence:V,children:U,style:k,thinSize:f=64,toggleModes:m,...t},y)=>{const n=Q(),$=re(i),S=$==="overlay",C=$==="stacked",M=e.useRef(null),B=e.useCallback(d=>{M.current=d,typeof y=="function"?y(d):y&&(y.current=d)},[y]),c=e.Children.toArray(U),N=c.filter(d=>e.isValidElement(d)&&d.type===ye),z=c.filter(d=>!(e.isValidElement(d)&&d.type===ye)),j=e.useId();e.useEffect(()=>(n.setHasSidebar(!0),()=>{n.setHasSidebar(!1)}),[n,j]);const H=e.useRef(!1);e.useEffect(()=>{H.current||(H.current=!0,r===void 0&&n.sidebarMode!==u&&n.setSidebarMode(u))},[]),e.useEffect(()=>{r!==void 0&&n.sidebarMode!==r&&n.setSidebarMode(r)},[r,n]),e.useEffect(()=>{r===void 0&&R?.(n.sidebarMode)},[n.sidebarMode,r,R]),e.useEffect(()=>{n.sidebarMode==="expanded"?T?.():L?.()},[n.sidebarMode,T,L]);const v=n.sidebarMode!=="collapsed",s=e.useMemo(()=>{if(!I||V)return V;const d=`kookie-ui:shell:sidebar:${I}`;return{load:()=>{if(typeof window>"u")return;const A=window.localStorage.getItem(d);return A?Number(A):void 0},save:A=>{typeof window>"u"||window.localStorage.setItem(d,String(A))}}},[I,V]);e.useEffect(()=>{let d=!0;return(async()=>{if(!P||!s?.load||S)return;const O=await s.load();d&&typeof O=="number"&&M.current&&(M.current.style.setProperty("--sidebar-size",`${O}px`),o?.(O))})(),()=>{d=!1}},[P,s,o,S]);const E=Q();e.useEffect(()=>{if(!E.setSidebarToggleComputer)return;const d=m&&m.length>0?m:["thin","expanded"],O=A=>A==="collapsed"?d[0]??"expanded":A==="thin"?d.includes("thin")&&d.includes("expanded")?"expanded":"collapsed":d.length===2&&d.includes("thin")&&d.includes("expanded")?"collapsed":d.includes("thin")&&!d.includes("expanded")?"thin":"collapsed";return E.setSidebarToggleComputer(O),()=>{E.setSidebarToggleComputer?.(A=>A==="collapsed"?"thin":A==="thin"?"expanded":"collapsed")}},[E,m]);const D=e.useRef(p),Z=e.useRef("expanded");e.useEffect(()=>{n.sidebarMode!=="collapsed"&&(Z.current=n.sidebarMode,D.current=n.sidebarMode==="thin"?f:p)},[n.sidebarMode,f,p]);const X=e.useCallback(()=>{if(typeof u=="string")return u;const d=u;if(d&&d[n.currentBreakpoint])return d[n.currentBreakpoint];const A=[...Object.keys(le)].reverse().concat("initial"),oe=A.indexOf(n.currentBreakpoint);for(let ee=oe+1;ee<A.length;ee++){const l=A[ee];if(d&&d[l])return d[l]}return"collapsed"},[u,n.currentBreakpoint]),ne=e.useRef(null);e.useEffect(()=>{if(r!==void 0||!n.currentBreakpointReady||ne.current===n.currentBreakpoint)return;ne.current=n.currentBreakpoint;const d=X();d!==n.sidebarMode&&n.setSidebarMode(d)},[r,n.currentBreakpoint,n.currentBreakpointReady,X,n.sidebarMode,n.setSidebarMode]);const Re=P&&!S&&n.sidebarMode==="expanded"?e.createElement(de.Provider,{value:{containerRef:M,cssVarName:"--sidebar-size",minSize:g,maxSize:h,defaultSize:p,orientation:"vertical",edge:"end",computeNext:(d,O,A)=>{const oe=getComputedStyle(M.current).direction==="rtl",ee=d-O;return A+(oe?-ee:ee)},onResize:o,onResizeStart:x,onResizeEnd:d=>{w?.(d),s?.save?.(d)},target:"sidebar",collapsible:b,snapPoints:F,snapTolerance:q??8,collapseThreshold:K,requestCollapse:()=>n.setSidebarMode("collapsed"),requestToggle:()=>n.togglePane("sidebar")}},N.length>0?N.map((d,O)=>e.cloneElement(d,{key:d.key??O})):e.createElement(_,null)):null;if(S){const d=n.sidebarMode!=="collapsed";return e.createElement(G.Root,{open:d,onOpenChange:O=>n.setSidebarMode(O?"expanded":"collapsed")},e.createElement(G.Content,{side:"start",style:{padding:0},width:{initial:`${d?n.sidebarMode==="thin"?f:p:D.current}px`}},e.createElement(ce.VisuallyHidden,null,e.createElement(G.Title,null,"Sidebar")),z))}return e.createElement("div",{...t,ref:B,className:(0,J.default)("rt-ShellSidebar",a),"data-mode":n.sidebarMode,"data-peek":n.peekTarget==="sidebar"||void 0,"data-presentation":$,"data-open":C&&v||void 0,style:{...k,"--sidebar-size":`${p}px`,"--sidebar-thin-size":`${f}px`,"--sidebar-min-size":`${g}px`,"--sidebar-max-size":`${h}px`,...n.peekTarget==="sidebar"&&!S?(()=>{const d=m&&m.length>0?m:["thin","expanded"],O=n.sidebarMode;let A="collapsed";return O==="collapsed"?A=d[0]??"expanded":O==="thin"?A=d.includes("expanded")?"expanded":"collapsed":A=d.includes("thin")?"thin":"collapsed",{"--peek-sidebar-width":`${A==="thin"?f:p}px`}})():{}}},e.createElement("div",{className:"rt-ShellSidebarContent","data-visible":v||void 0},z),Re)});se.displayName="Shell.Sidebar",se.Handle=ye;const Pe=e.forwardRef(({className:a,...i},r)=>e.createElement("main",{...i,ref:r,className:(0,J.default)("rt-ShellContent",a)}));Pe.displayName="Shell.Content";const pe=e.forwardRef(({className:a,presentation:i={initial:"overlay",lg:"fixed"},mode:r,defaultMode:u="collapsed",onModeChange:R,expandedSize:p=320,minSize:g=200,maxSize:h=500,resizable:P=!1,collapsible:b=!0,onExpand:T,onCollapse:L,onResize:o,onResizeStart:x,onResizeEnd:w,snapPoints:F,snapTolerance:q,collapseThreshold:K,paneId:I,persistence:V,children:U,style:k,...f},m)=>{const t=Q(),y=re(i),n=y==="overlay",$=y==="stacked",S=e.useRef(null),C=e.useCallback(s=>{S.current=s,typeof m=="function"?m(s):m&&(m.current=s)},[m]),M=e.Children.toArray(U),B=M.filter(s=>e.isValidElement(s)&&s.type===be),c=M.filter(s=>!(e.isValidElement(s)&&s.type===be)),N=e.useCallback(()=>{if(typeof u=="string")return u;const s=u;if(s&&s[t.currentBreakpoint])return s[t.currentBreakpoint];const D=[...Object.keys(le)].reverse().concat("initial"),Z=D.indexOf(t.currentBreakpoint);for(let X=Z+1;X<D.length;X++){const ne=D[X];if(s&&s[ne])return s[ne]}return"collapsed"},[u,t.currentBreakpoint]),z=e.useRef(null);e.useEffect(()=>{if(r!==void 0||!t.currentBreakpointReady||z.current===t.currentBreakpoint)return;z.current=t.currentBreakpoint;const s=N();s!==t.inspectorMode&&t.setInspectorMode(s)},[r,t.currentBreakpoint,t.currentBreakpointReady,N,t.inspectorMode,t.setInspectorMode]),e.useEffect(()=>{r!==void 0&&t.inspectorMode!==r&&t.setInspectorMode(r)},[r,t]),e.useEffect(()=>{r===void 0&&R?.(t.inspectorMode)},[t.inspectorMode,r,R]),e.useEffect(()=>{t.inspectorMode==="expanded"?T?.():L?.()},[t.inspectorMode,T,L]);const j=t.inspectorMode==="expanded",H=e.useMemo(()=>{if(!I||V)return V;const s=`kookie-ui:shell:inspector:${I}`;return{load:()=>{if(typeof window>"u")return;const D=window.localStorage.getItem(s);return D?Number(D):void 0},save:D=>{typeof window>"u"||window.localStorage.setItem(s,String(D))}}},[I,V]);e.useEffect(()=>{let s=!0;return(async()=>{if(!P||!H?.load||n)return;const E=await H.load();s&&typeof E=="number"&&S.current&&(S.current.style.setProperty("--inspector-size",`${E}px`),o?.(E))})(),()=>{s=!1}},[P,H,o,n]);const v=P&&!n&&j?e.createElement(de.Provider,{value:{containerRef:S,cssVarName:"--inspector-size",minSize:g,maxSize:h,defaultSize:p,orientation:"vertical",edge:"start",computeNext:(s,E,D)=>{const Z=getComputedStyle(S.current).direction==="rtl",X=s-E;return D+(Z?X:-X)},onResize:o,onResizeStart:x,onResizeEnd:s=>{w?.(s),H?.save?.(s)},target:"inspector",collapsible:b,snapPoints:F,snapTolerance:q??8,collapseThreshold:K,requestCollapse:()=>t.setInspectorMode("collapsed"),requestToggle:()=>t.togglePane("inspector")}},B.length>0?B.map((s,E)=>e.cloneElement(s,{key:s.key??E})):e.createElement(_,null)):null;if(n){const s=t.inspectorMode==="expanded";return e.createElement(G.Root,{open:s,onOpenChange:E=>t.setInspectorMode(E?"expanded":"collapsed")},e.createElement(G.Content,{side:"end",style:{padding:0},width:{initial:`${p}px`}},e.createElement(ce.VisuallyHidden,null,e.createElement(G.Title,null,"Inspector")),U))}return e.createElement("div",{...f,ref:C,className:(0,J.default)("rt-ShellInspector",a),"data-mode":t.inspectorMode,"data-peek":t.peekTarget==="inspector"||void 0,"data-presentation":y,"data-open":$&&j||void 0,style:{...k,"--inspector-size":`${p}px`,"--inspector-min-size":`${g}px`,"--inspector-max-size":`${h}px`}},e.createElement("div",{className:"rt-ShellInspectorContent","data-visible":j||void 0},c),v)});pe.displayName="Shell.Inspector",pe.Handle=be;const ue=e.forwardRef(({className:a,presentation:i="fixed",mode:r,defaultMode:u="collapsed",onModeChange:R,expandedSize:p=200,minSize:g=100,maxSize:h=400,resizable:P=!1,collapsible:b=!0,onExpand:T,onCollapse:L,onResize:o,onResizeStart:x,onResizeEnd:w,snapPoints:F,snapTolerance:q,collapseThreshold:K,paneId:I,persistence:V,children:U,style:k,...f},m)=>{const t=Q(),y=re(i),n=y==="overlay",$=y==="stacked",S=e.useRef(null),C=e.useCallback(v=>{S.current=v,typeof m=="function"?m(v):m&&(m.current=v)},[m]),M=e.Children.toArray(U),B=M.filter(v=>e.isValidElement(v)&&v.type===ve),c=M.filter(v=>!(e.isValidElement(v)&&v.type===ve)),N=e.useRef(!1);e.useEffect(()=>{N.current||(N.current=!0,r===void 0&&t.bottomMode!==u&&t.setBottomMode(u))},[]),e.useEffect(()=>{r!==void 0&&t.bottomMode!==r&&t.setBottomMode(r)},[r,t]),e.useEffect(()=>{r===void 0&&R?.(t.bottomMode)},[t.bottomMode,r,R]),e.useEffect(()=>{t.bottomMode==="expanded"?T?.():L?.()},[t.bottomMode,T,L]);const z=t.bottomMode==="expanded",j=e.useMemo(()=>{if(!I||V)return V;const v=`kookie-ui:shell:bottom:${I}`;return{load:()=>{if(typeof window>"u")return;const E=window.localStorage.getItem(v);return E?Number(E):void 0},save:E=>{typeof window>"u"||window.localStorage.setItem(v,String(E))}}},[I,V]);e.useEffect(()=>{let v=!0;return(async()=>{if(!P||!j?.load||n)return;const s=await j.load();v&&typeof s=="number"&&S.current&&(S.current.style.setProperty("--bottom-size",`${s}px`),o?.(s))})(),()=>{v=!1}},[P,j,o,n]);const H=P&&!n&&z?e.createElement(de.Provider,{value:{containerRef:S,cssVarName:"--bottom-size",minSize:g,maxSize:h,defaultSize:p,orientation:"horizontal",edge:"start",computeNext:(v,s,E)=>{const D=v-s;return E-D},onResize:o,onResizeStart:x,onResizeEnd:v=>{w?.(v),j?.save?.(v)},target:"bottom",collapsible:b,snapPoints:F,snapTolerance:q??8,collapseThreshold:K,requestCollapse:()=>t.setBottomMode("collapsed"),requestToggle:()=>t.togglePane("bottom")}},B.length>0?B.map((v,s)=>e.cloneElement(v,{key:v.key??s})):e.createElement(_,null)):null;if(n){const v=t.bottomMode==="expanded";return e.createElement(G.Root,{open:v,onOpenChange:s=>t.setBottomMode(s?"expanded":"collapsed")},e.createElement(G.Content,{side:"bottom",style:{padding:0},height:{initial:`${p}px`}},e.createElement(ce.VisuallyHidden,null,e.createElement(G.Title,null,"Bottom panel")),U))}return e.createElement("div",{...f,ref:C,className:(0,J.default)("rt-ShellBottom",a),"data-mode":t.bottomMode,"data-peek":t.peekTarget==="bottom"||void 0,"data-presentation":y,"data-open":$&&z||void 0,style:{...k,"--bottom-size":`${p}px`,"--bottom-min-size":`${g}px`,"--bottom-max-size":`${h}px`}},e.createElement("div",{className:"rt-ShellBottomContent","data-visible":z||void 0},c),H)});ue.displayName="Shell.Bottom",ue.Handle=ve;const Ee=e.forwardRef(({target:a,action:i="toggle",peekOnHover:r,onClick:u,onMouseEnter:R,onMouseLeave:p,children:g,...h},P)=>{const b=Q(),T=e.useCallback(w=>{switch(u?.(w),i){case"toggle":b.togglePane(a);break;case"expand":b.expandPane(a);break;case"collapse":b.collapsePane(a);break}},[b,a,i,u]),L=(()=>{switch(a){case"left":case"rail":return b.leftMode==="collapsed";case"panel":return b.leftMode==="collapsed"||b.panelMode==="collapsed";case"sidebar":return b.sidebarMode==="collapsed";case"inspector":return b.inspectorMode==="collapsed";case"bottom":return b.bottomMode==="collapsed"}})(),o=e.useCallback(w=>{R?.(w),!(!r||!L)&&b.peekPane(a)},[R,r,L,b,a]),x=e.useCallback(w=>{p?.(w),r&&b.peekTarget===a&&b.clearPeek()},[p,r,b,a]);return e.createElement("button",{...h,ref:P,onClick:T,onMouseEnter:o,onMouseLeave:x,"data-shell-trigger":a,"data-shell-action":i},g)});Ee.displayName="Shell.Trigger";
|
|
2
2
|
//# sourceMappingURL=shell.js.map
|