@tribepad/themis 1.1.1 → 1.1.3
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/elements/Sidebar/SidebarMobileDrawer.d.ts.map +1 -1
- package/dist/elements/Sidebar/SidebarPanel.d.ts.map +1 -1
- package/dist/elements/Sidebar/index.js +1 -1
- package/dist/elements/Sidebar/index.js.map +1 -1
- package/dist/elements/Sidebar/index.mjs +1 -1
- package/dist/elements/Sidebar/index.mjs.map +1 -1
- package/dist/elements/index.js +1 -1
- package/dist/elements/index.js.map +1 -1
- package/dist/elements/index.mjs +1 -1
- package/dist/elements/index.mjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/elements/Sidebar/Sidebar.stories.tsx +8 -2
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {createContext,forwardRef,useRef,useState,useEffect,Children,isValidElement,useCallback,memo,lazy,useContext,useId,useMemo,Suspense,useSyncExternalStore}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {Toolbar,Link,Button,ModalOverlay,Modal,Dialog}from'react-aria-components';import {PanelLeftOpen,PanelLeftClose,X}from'lucide-react';import {z}from'zod';var pt=Object.defineProperty;var O=(e,t)=>()=>(e&&(t=e(e=0)),t);var ut=(e,t)=>{for(var a in t)pt(e,a,{get:t[a],enumerable:true});};function Le(e){let t=useCallback(o=>{let s=window.matchMedia(e);return s.addEventListener("change",o),()=>s.removeEventListener("change",o)},[e]),a=useCallback(()=>window.matchMedia(e).matches,[e]),r=useCallback(()=>false,[]);return useSyncExternalStore(t,a,r)}var Oe=O(()=>{"use client";});function v(...e){return twMerge(clsx(e))}var _=O(()=>{});function ee(...e){return e.flatMap(t=>Array.isArray(t)?[...t]:[t])}var K,se,ie,U,J,le,_e=O(()=>{K=["focus-visible:outline-none","focus-visible:ring-2","focus-visible:ring-[var(--ring)]","focus-visible:ring-offset-2"],se=["min-h-[44px]","min-w-[44px]"],ie={sm:"h-9",default:"h-10",lg:"h-11"},{sm:`${ie.sm} px-2 text-xs`,default:`${ie.default} px-3 text-sm`,lg:`${ie.lg} px-4 text-base`},U=["motion-reduce:transition-none","motion-reduce:animate-none"],J=["transition-colors","duration-150"],le=["hover:bg-[var(--accent)]","hover:text-[var(--accent-foreground)]"];});var de,ce,pe,te,F,$,W,j,ue,me,be,Z,fe,ve,ge,xe,Se,I=O(()=>{_e();de=cva(["flex","h-full"]),ce=cva(["flex","flex-col","w-[68px]","shrink-0","border-r","border-[var(--border)]","py-2","px-1.5","overflow-y-auto","overflow-x-hidden"],{variants:{variant:{default:"bg-[var(--menu-background)]",primary:"bg-[var(--primary-action)]"}},defaultVariants:{variant:"default"}}),pe=cva(["flex","flex-col","gap-1"]),te=cva(ee(K,U,J,["flex","flex-col","items-center","justify-center","w-full","min-h-[44px]","gap-0.5","px-1","py-1","rounded-[var(--radius-md)]","cursor-pointer","relative","select-none"]),{variants:{railVariant:{default:"text-[var(--icon)]",primary:"text-[var(--primary-action-foreground)]"},isActive:{true:[],false:[]},isDisabled:{true:["pointer-events-none","opacity-50","cursor-not-allowed"],false:[]}},compoundVariants:[{railVariant:"default",isActive:true,className:"bg-[var(--menu-accent)] text-[var(--menu-foreground)]"},{railVariant:"default",isActive:false,className:"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)]"},{railVariant:"primary",isActive:true,className:"bg-white/20 text-[var(--primary-action-foreground)]"},{railVariant:"primary",isActive:false,className:"hover:bg-white/10 hover:text-[var(--primary-action-foreground)]"}],defaultVariants:{railVariant:"default",isActive:false,isDisabled:false}}),F=cva(["relative","[&_svg]:size-5","[&_svg]:shrink-0","[&_svg]:pointer-events-none"]),$=cva(["text-[10px]","leading-tight","text-center","max-w-full","truncate"],{variants:{isActive:{true:"font-semibold",false:"font-medium"}},defaultVariants:{isActive:false}}),W=cva(["absolute","-top-1.5","-right-1.5","min-w-[18px]","h-[18px]","rounded-full","px-1","flex","items-center","justify-center","bg-[var(--destructive-background)]","text-[var(--destructive-foreground)]","text-[10px]","font-bold","leading-none"]),j=cva(["h-full","w-full","overflow-y-auto","bg-[var(--content-background)]","text-[var(--content-foreground)]","text-sm","motion-safe:animate-in","motion-safe:fade-in-0","motion-safe:slide-in-from-bottom-1","motion-safe:duration-200","motion-safe:fill-mode-both","[animation-delay:120ms]"]),ue=cva(["flex","flex-col","h-full","overflow-hidden","bg-[var(--content-background)]","text-[var(--content-foreground)]","motion-safe:transition-[max-width,opacity]","motion-safe:duration-[var(--transition-slow)]",...U],{variants:{width:{sm:"max-w-[220px] w-[220px]",md:"max-w-[280px] w-[280px]",lg:"max-w-[340px] w-[340px]",xl:"max-w-[420px] w-[420px]"},isCollapsed:{true:"max-w-0 opacity-0 overflow-hidden",false:"opacity-100"}},defaultVariants:{width:"md",isCollapsed:false}}),me=cva(["flex","items-center","justify-between","px-3","py-2","shrink-0","border-b","border-[var(--border)]"]),be=cva(["text-base","font-semibold","text-[var(--content-foreground)]","truncate"]),Z=cva(ee(se,K,U,J,["inline-flex","items-center","justify-center","rounded-[var(--radius-md)]","[&_svg]:size-4","[&_svg]:shrink-0","cursor-pointer","mb-1"]),{variants:{railVariant:{default:["text-[var(--menu-foreground)]",...le],primary:["text-[var(--primary-action-foreground)]","hover:bg-white/10"]}},defaultVariants:{railVariant:"default"}}),fe=cva(["fixed","inset-0","z-50","bg-black/50"]),ve=cva(["fixed","inset-y-0","left-0","z-50","flex","flex-col","w-[85vw]","max-w-[380px]","bg-[var(--content-background)]","shadow-[var(--shadow-lg)]"]),ge=cva(["flex","items-center","justify-between","px-3","py-2","border-b","border-[var(--border)]","shrink-0"]),xe=cva(["flex","items-center","gap-1","px-2","py-2","overflow-x-auto","overflow-y-hidden","shrink-0","border-b","border-[var(--border)]","bg-[var(--menu-background)]"]),Se=cva(ee(se,K,U,J,["flex","flex-col","items-center","justify-center","gap-0.5","px-2","py-1.5","rounded-[var(--radius-md)]","text-[var(--icon)]","shrink-0","cursor-pointer"]),{variants:{isActive:{true:["bg-[var(--menu-accent)]","text-[var(--menu-foreground)]"],false:[...le]}},defaultVariants:{isActive:false}});});function V(){let e=useContext(Re);if(!e)throw new Error("Sidebar compound components must be used within <Sidebar>");return e}function g(){let e=useContext(Pe);if(!e)throw new Error("Sidebar compound components must be used within <Sidebar>");return e}function ye({children:e,isCollapsed:t,defaultCollapsed:a=false,onCollapsedChange:r,isMobileOpen:o,onMobileOpenChange:s,mobileBreakpoint:n=768,className:i,"data-testid":l="sidebar"}){let[p,P]=useState(a),y=t!==void 0,b=y?t:p,h=useCallback(x=>{y||P(x),r?.(x);},[y,r]),w=useCallback(()=>h(!b),[h,b]),C=o??false,M=useCallback(x=>s?.(x),[s]),[u,m]=useState(null),f=useRef(null),D=useCallback(()=>{f.current&&(clearTimeout(f.current),f.current=null);},[]),A=useCallback((x=300)=>{f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{f.current=null,m(null);},x);},[]);useEffect(()=>()=>{f.current&&clearTimeout(f.current);},[]);let L=Le(`(max-width: ${n-1}px)`),B=useId(),k=`sidebar-rail-${B}`,G=`sidebar-panel-${B}`,z=useMemo(()=>({isMobile:L,railId:k,panelId:G}),[L,k,G]),q=useMemo(()=>({isCollapsed:b,setCollapsed:h,toggleCollapsed:w,isMobileOpen:C,setMobileOpen:M,activePopoverId:u,setActivePopoverId:m,cancelPopoverClose:D,schedulePopoverClose:A}),[b,h,w,C,M,u,D,A]);return L?jsx(Re.Provider,{value:z,children:jsx(Pe.Provider,{value:q,children:e})}):jsx(Re.Provider,{value:z,children:jsx(Pe.Provider,{value:q,children:jsx("div",{className:v(de(),i),"data-testid":l,children:e})})})}var Re,Pe,H=O(()=>{"use client";Oe();_();I();Re=createContext(null),Pe=createContext(null);ye.displayName="Sidebar";});var ot={};ut(ot,{SidebarMobileDrawer:()=>Qt});function jt(e){return e>99?"99+":String(e)}function Zt(e){let t=[],a=null,r="Navigation";return Children.forEach(e,o=>{if(!isValidElement(o))return;let s=o.type.displayName;s==="SidebarRail"?(r=o.props["aria-label"]??r,Children.forEach(o.props.children,n=>{if(!isValidElement(n))return;n.type.displayName==="SidebarRailItem"&&t.push(n);})):s==="SidebarPanel"&&(a=o.props.children);}),{railItems:t,panelContent:a,railAriaLabel:r}}function Qt({children:e}){let{isMobileOpen:t,setMobileOpen:a}=g(),{railItems:r,panelContent:o,railAriaLabel:s}=Zt(e);return jsx(ModalOverlay,{isDismissable:true,isOpen:t,onOpenChange:n=>{n||a(false);},className:fe(),children:jsx(Modal,{className:ve(),children:jsxs(Dialog,{"aria-label":"Navigation menu",className:"flex flex-col h-full outline-none",children:[jsxs("header",{className:ge(),children:[jsx("span",{className:"text-base font-semibold text-[var(--content-foreground)]",children:"Menu"}),jsx(Button,{"aria-label":"Close navigation",className:v(Z()),onPress:()=>a(false),children:jsx(X,{})})]}),r.length>0&&jsx("div",{role:"toolbar","aria-orientation":"horizontal","aria-label":s,tabIndex:0,className:xe(),children:r.map(n=>{let i=n.props;return jsxs(Button,{"aria-current":i.isActive?i.currentType??"page":void 0,isDisabled:i.isDisabled,className:Se({isActive:i.isActive??false}),onPress:()=>{i.onPress?.(),i.href&&(window.location.href=i.href),a(false);},"data-testid":`sidebar-mobile-rail-item-${i.id}`,children:[jsxs("span",{className:F(),"aria-hidden":"true",children:[i.icon,i.badgeCount!=null&&i.badgeCount>0&&jsx("span",{className:W(),"aria-hidden":"true",children:jt(i.badgeCount)})]}),jsx("span",{className:$({isActive:i.isActive??false}),children:i.label}),i.badgeCount!=null&&i.badgeCount>0&&jsxs("span",{className:"sr-only",children:[i.badgeCount," notifications"]})]},i.id)})}),o&&jsx("div",{className:"flex-1 overflow-y-auto bg-[var(--content-background)] text-[var(--content-foreground)]","data-testid":"sidebar-mobile-panel-content",children:o})]})})})}var nt=O(()=>{"use client";_();H();I();});H();_();H();_();H();I();var St=200,Rt=300;function Ue(e,t){let{activePopoverId:a,setActivePopoverId:r,cancelPopoverClose:o,schedulePopoverClose:s}=g(),n=useRef("IDLE"),i=useRef(null),l=useCallback(()=>{i.current&&(clearTimeout(i.current),i.current=null);},[]),p=a===e;useEffect(()=>{!p&&n.current!=="IDLE"?(l(),n.current="IDLE"):p&&(n.current="OPEN");},[p,l]),useEffect(()=>l,[l]);let P=useCallback(b=>{t&&b.pointerType==="mouse"&&(l(),o(),n.current!=="OPEN"&&(n.current="HOVERING_TRIGGER",i.current=setTimeout(()=>{n.current="OPEN",r(e);},St)));},[e,t,r,l,o]),y=useCallback(()=>{if(t){if(l(),n.current==="HOVERING_TRIGGER"){n.current="IDLE",r(null);return}n.current==="OPEN"&&s(Rt);}},[t,r,l,s]);return {onTriggerPointerEnter:P,onTriggerPointerLeave:y}}function Ne({children:e,className:t,"data-testid":a="sidebar-popover"}){return jsx("div",{className:v(j(),t),"data-testid":a,children:e})}Ne.displayName="SidebarPopover";_();H();I();function Nt(){let{activePopoverId:e,setActivePopoverId:t}=g(),{isMobile:a}=V(),r=useRef(null);return useEffect(()=>{if(!e)return;let o=s=>{s.key==="Escape"&&(s.preventDefault(),t(null));};return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[e,t]),useEffect(()=>{if(!e)return;let o=n=>{let i=r.current,l=n.relatedTarget;if(!l||!i)return;let p=document.querySelector('[data-testid="sidebar-rail"]');!i.contains(l)&&!p?.contains(l)&&t(null);},s=r.current;return s?.addEventListener("focusout",o),()=>s?.removeEventListener("focusout",o)},[e,t]),a||!e?null:jsx(We,{ref:r})}var Fe=createContext(null);function Ie(){let e=useContext(Fe);if(!e)throw new Error("usePopoverRegistry must be used within SidebarPanel");return e}function $e({children:e}){let t=useRef(new Map),a=useCallback((n,i,l)=>{t.current.set(n,{content:i,label:l});},[]),r=useCallback(n=>{t.current.delete(n);},[]),o=useCallback(n=>t.current.get(n)??null,[]),s=useMemo(()=>({register:a,unregister:r,getContent:o}),[a,r,o]);return jsx(Fe.Provider,{value:s,children:e})}var We=forwardRef((e,t)=>{let{activePopoverId:a,cancelPopoverClose:r,schedulePopoverClose:o}=g(),s=Ie();if(!a)return null;let n=s.getContent(a);return n?jsx("div",{ref:t,role:"dialog","aria-label":`${n.label} details`,className:j(),"data-testid":"sidebar-popover",onPointerEnter:r,onPointerLeave:()=>o(300),children:n.content}):null});We.displayName="PopoverContent";var Tt=300,Ve=forwardRef(({children:e,width:t="md","aria-label":a,skeleton:r,className:o,"data-testid":s="sidebar-panel"},n)=>{let{isMobile:i}=V(),{isCollapsed:l,activePopoverId:p}=g(),P=useRef(null),y=p!==null,[b,h]=useState(!l);useEffect(()=>{if(l){h(false);return}let u=window.setTimeout(()=>h(true),Tt);return ()=>window.clearTimeout(u)},[l]);let C=r!==void 0&&!(!l&&b)?r:e;useEffect(()=>{if(!l)return;let u=P.current;if(u&&u.contains(document.activeElement)){let m=document.querySelector('[data-testid="sidebar-collapse-button"]');m&&window.requestAnimationFrame(()=>m.focus());}},[l]);let M=u=>{P.current=u,typeof n=="function"?n(u):n&&(n.current=u);};return i?null:jsxs("div",{className:"relative shrink-0 border-r border-[var(--border)]",children:[jsx("aside",{ref:M,"aria-label":a,"aria-hidden":l,inert:l||void 0,className:v(ue({width:t,isCollapsed:l}),o),"data-testid":s,children:C}),y&&!l&&jsx("div",{className:"absolute inset-0 z-10",children:jsx(Nt,{})})]})});Ve.displayName="SidebarPanel";function Te({title:e,children:t,as:a="h2",className:r,"data-testid":o="sidebar-panel-header"}){return jsxs("header",{className:v(me(),r),"data-testid":o,children:[jsx(a,{className:be(),children:e}),t]})}Te.displayName="SidebarPanelHeader";I();var Ke=createContext("default");function Je(){return useContext(Ke)}var we=forwardRef(({children:e,"aria-label":t,variant:a="default",className:r,"data-testid":o="sidebar-rail"},s)=>{let{isMobile:n}=V();if(n)return null;let i=[],l=[];return Children.forEach(e,p=>{isValidElement(p)&&p.type.displayName==="SidebarCollapseButton"?i.push(p):l.push(p);}),jsx(Ke.Provider,{value:a,children:jsxs("nav",{ref:s,"aria-label":t,className:v(ce({variant:a}),r),"data-testid":o,children:[i,jsx(Toolbar,{orientation:"vertical","aria-label":"Navigation items",className:pe(),children:l})]})})});we.displayName="SidebarRail";function kt(e){let t=null,a=[];return Children.forEach(e,r=>{isValidElement(r)&&r.type.displayName==="SidebarPopover"?t=r:a.push(r);}),{popover:t,rest:a.length>0?a:null}}function Gt(e){return e>99?"99+":String(e)}var et=forwardRef(({id:e,label:t,icon:a,href:r,badgeCount:o,isActive:s=false,currentType:n="page",isDisabled:i=false,onPress:l,children:p,className:P,"data-testid":y},b)=>{let{activePopoverId:h,setActivePopoverId:w}=g(),C=Je(),M=useRef(null),{popover:u}=kt(p),m=u!==null,f=h===e,D=Ue(e,m),A=Ie();useEffect(()=>{if(m&&u)return A.register(e,u,t),()=>A.unregister(e)},[e,m,u,t,A]);let L=useCallback(()=>{m&&w(f?null:e),l?.();},[m,f,e,l,w]),B=useCallback(x=>{M.current=x,typeof b=="function"?b(x):b&&(b.current=x);},[b]),k=y??`sidebar-rail-item-${e}`,G=P?v(te({railVariant:C,isActive:s,isDisabled:i}),P):te({railVariant:C,isActive:s,isDisabled:i}),z=jsxs(Fragment,{children:[jsxs("span",{className:F(),"aria-hidden":"true",children:[a,o!=null&&o>0&&jsx("span",{className:W(),"aria-hidden":"true",children:Gt(o)})]}),jsx("span",{className:$({isActive:s}),children:t}),o!=null&&o>0&&jsxs("span",{className:"sr-only",children:[o," notifications"]})]}),q=r&&!i?jsx(Link,{ref:B,href:r,"aria-current":s?n:void 0,"aria-haspopup":m?"dialog":void 0,"aria-expanded":m?f:void 0,className:G,"data-testid":k,onPress:L,children:z}):jsx(Button,{ref:B,isDisabled:i,"aria-current":s?n:void 0,"aria-haspopup":m?"dialog":void 0,"aria-expanded":m?f:void 0,className:G,"data-testid":k,onPress:L,children:z});return jsx("div",{onPointerEnter:D.onTriggerPointerEnter,onPointerLeave:D.onTriggerPointerLeave,children:q})});et.displayName="SidebarRailItem";var Me=memo(et,(e,t)=>e.id===t.id&&e.isActive===t.isActive&&e.badgeCount===t.badgeCount&&e.isDisabled===t.isDisabled&&e.label===t.label&&e.className===t.className&&e.href===t.href);Me.displayName="SidebarRailItem";function Ae({className:e,"data-testid":t="sidebar-collapse-button"}){let{isCollapsed:a,toggleCollapsed:r}=g(),o=Je();return jsx(Button,{"aria-expanded":!a,"aria-label":a?"Expand sidebar":"Collapse sidebar",className:v(Z({railVariant:o}),e),"data-testid":t,onPress:r,children:a?jsx(PanelLeftOpen,{}):jsx(PanelLeftClose,{})})}Ae.displayName="SidebarCollapseButton";var qt=lazy(()=>Promise.resolve().then(()=>(nt(),ot)).then(e=>({default:e.SidebarMobileDrawer})));function Kt({children:e}){let{isMobile:t}=V(),{isMobileOpen:a}=g();return !t||!a?null:jsx(Suspense,{fallback:null,children:jsx(qt,{children:e})})}function it(e){return jsx(ye,{...e,children:jsxs($e,{children:[e.children,jsx(Kt,{children:e.children})]})})}it.displayName="Sidebar";var Jt=Object.assign(it,{Rail:we,RailItem:Me,Popover:Ne,Panel:Ve,PanelHeader:Te,CollapseButton:Ae});I();var E=z.object({className:z.string().optional(),children:z.any().optional(),id:z.string().optional(),"aria-label":z.string().optional(),"aria-labelledby":z.string().optional(),"aria-describedby":z.string().optional(),"aria-live":z.enum(["off","polite","assertive"]).optional(),"aria-hidden":z.boolean().optional(),"data-testid":z.string().optional()});var st=z.enum(["default","primary"]),lt=z.enum(["sm","md","lg","xl"]),dt=z.enum(["page","true","location"]),ct=z.enum(["h1","h2","h3","h4"]),ta=E.extend({children:z.custom(),isCollapsed:z.boolean().optional(),defaultCollapsed:z.boolean().optional().default(false),onCollapsedChange:z.custom().optional(),isMobileOpen:z.boolean().optional(),onMobileOpenChange:z.custom().optional(),mobileBreakpoint:z.number().optional().default(768)}),aa=E.extend({children:z.custom(),"aria-label":z.string(),variant:st.optional().default("default")}),ra=E.extend({id:z.string(),label:z.string(),icon:z.custom(),href:z.string().optional(),badgeCount:z.number().optional(),isActive:z.boolean().optional(),currentType:dt.optional().default("page"),isDisabled:z.boolean().optional(),onPress:z.custom().optional(),children:z.custom().optional()}),oa=E.extend({children:z.custom()}),na=E.extend({children:z.custom(),width:lt.optional().default("md"),"aria-label":z.string(),skeleton:z.custom().optional()}),ia=E.extend({title:z.string(),children:z.custom().optional(),as:ct.optional().default("h2")}),sa=E.extend({});export{Jt as Sidebar,sa as SidebarCollapseButtonPropsSchema,dt as SidebarCurrentTypeSchema,ct as SidebarPanelHeaderLevelSchema,ia as SidebarPanelHeaderPropsSchema,na as SidebarPanelPropsSchema,lt as SidebarPanelWidthSchema,oa as SidebarPopoverPropsSchema,ta as SidebarPropsSchema,ra as SidebarRailItemPropsSchema,aa as SidebarRailPropsSchema,st as SidebarRailVariantSchema,Z as sidebarCollapseButtonVariants,ge as sidebarMobileDrawerHeaderVariants,ve as sidebarMobileDrawerVariants,fe as sidebarMobileOverlayVariants,Se as sidebarMobileRailItemVariants,xe as sidebarMobileRailVariants,be as sidebarPanelHeaderTitleVariants,me as sidebarPanelHeaderVariants,ue as sidebarPanelVariants,j as sidebarPopoverVariants,W as sidebarRailItemBadgeVariants,F as sidebarRailItemIconVariants,$ as sidebarRailItemLabelVariants,te as sidebarRailItemVariants,pe as sidebarRailToolbarVariants,ce as sidebarRailVariants,de as sidebarRootVariants};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
import {createContext,forwardRef,useRef,useState,useEffect,Children,isValidElement,useCallback,memo,lazy,useContext,useId,useMemo,Suspense,useSyncExternalStore}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {Toolbar,Link,Button,ModalOverlay,Modal,Dialog}from'react-aria-components';import {PanelLeftOpen,PanelLeftClose,X as X$1}from'lucide-react';import {z}from'zod';var pt=Object.defineProperty;var O=(e,t)=>()=>(e&&(t=e(e=0)),t);var ut=(e,t)=>{for(var a in t)pt(e,a,{get:t[a],enumerable:true});};function _e(e){let t=useCallback(o=>{let s=window.matchMedia(e);return s.addEventListener("change",o),()=>s.removeEventListener("change",o)},[e]),a=useCallback(()=>window.matchMedia(e).matches,[e]),r=useCallback(()=>false,[]);return useSyncExternalStore(t,a,r)}var He=O(()=>{"use client";});function g(...e){return twMerge(clsx(e))}var _=O(()=>{});function ee(...e){return e.flatMap(t=>Array.isArray(t)?[...t]:[t])}var K,se,ie,U,J,le,De=O(()=>{K=["focus-visible:outline-none","focus-visible:ring-2","focus-visible:ring-[var(--ring)]","focus-visible:ring-offset-2"],se=["min-h-[44px]","min-w-[44px]"],ie={sm:"h-9",default:"h-10",lg:"h-11"},{sm:`${ie.sm} px-2 text-xs`,default:`${ie.default} px-3 text-sm`,lg:`${ie.lg} px-4 text-base`},U=["motion-reduce:transition-none","motion-reduce:animate-none"],J=["transition-colors","duration-150"],le=["hover:bg-[var(--accent)]","hover:text-[var(--accent-foreground)]"];});var de,ce,pe,te,F,$,W,j,ue,me,be,X,fe,ve,ge,xe,Se,V=O(()=>{De();de=cva(["flex","h-full"]),ce=cva(["flex","flex-col","w-[68px]","shrink-0","border-r","border-[var(--border)]","py-2","px-1.5","overflow-y-auto","overflow-x-hidden"],{variants:{variant:{default:"bg-[var(--menu-background)]",primary:"bg-[var(--primary-action)]"}},defaultVariants:{variant:"default"}}),pe=cva(["flex","flex-col","gap-1"]),te=cva(ee(K,U,J,["flex","flex-col","items-center","justify-center","w-full","min-h-[44px]","gap-0.5","px-1","py-1","rounded-[var(--radius-md)]","cursor-pointer","relative","select-none"]),{variants:{railVariant:{default:"text-[var(--icon)]",primary:"text-[var(--primary-action-foreground)]"},isActive:{true:[],false:[]},isDisabled:{true:["pointer-events-none","opacity-50","cursor-not-allowed"],false:[]}},compoundVariants:[{railVariant:"default",isActive:true,className:"bg-[var(--menu-accent)] text-[var(--menu-foreground)]"},{railVariant:"default",isActive:false,className:"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)]"},{railVariant:"primary",isActive:true,className:"bg-white/20 text-[var(--primary-action-foreground)]"},{railVariant:"primary",isActive:false,className:"hover:bg-white/10 hover:text-[var(--primary-action-foreground)]"}],defaultVariants:{railVariant:"default",isActive:false,isDisabled:false}}),F=cva(["relative","[&_svg]:size-5","[&_svg]:shrink-0","[&_svg]:pointer-events-none"]),$=cva(["text-[10px]","leading-tight","text-center","max-w-full","truncate"],{variants:{isActive:{true:"font-semibold",false:"font-medium"}},defaultVariants:{isActive:false}}),W=cva(["absolute","-top-1.5","-right-1.5","min-w-[18px]","h-[18px]","rounded-full","px-1","flex","items-center","justify-center","bg-[var(--destructive-background)]","text-[var(--destructive-foreground)]","text-[10px]","font-bold","leading-none"]),j=cva(["h-full","w-full","overflow-y-auto","bg-[var(--content-background)]","text-[var(--content-foreground)]","text-sm","motion-safe:animate-in","motion-safe:fade-in-0","motion-safe:slide-in-from-bottom-1","motion-safe:duration-200","motion-safe:fill-mode-both","[animation-delay:120ms]"]),ue=cva(["flex","flex-col","h-full","overflow-hidden","bg-[var(--content-background)]","text-[var(--content-foreground)]","motion-safe:transition-[max-width,opacity]","motion-safe:duration-[var(--transition-slow)]",...U],{variants:{width:{sm:"max-w-[220px] w-[220px]",md:"max-w-[280px] w-[280px]",lg:"max-w-[340px] w-[340px]",xl:"max-w-[420px] w-[420px]"},isCollapsed:{true:"max-w-0 opacity-0 overflow-hidden",false:"opacity-100"}},defaultVariants:{width:"md",isCollapsed:false}}),me=cva(["flex","items-center","justify-between","px-3","py-2","shrink-0","border-b","border-[var(--border)]"]),be=cva(["text-base","font-semibold","text-[var(--content-foreground)]","truncate"]),X=cva(ee(se,K,U,J,["inline-flex","items-center","justify-center","rounded-[var(--radius-md)]","[&_svg]:size-4","[&_svg]:shrink-0","cursor-pointer","mb-1"]),{variants:{railVariant:{default:["text-[var(--menu-foreground)]",...le],primary:["text-[var(--primary-action-foreground)]","hover:bg-white/10"]}},defaultVariants:{railVariant:"default"}}),fe=cva(["fixed","inset-0","z-50","bg-black/50"]),ve=cva(["fixed","inset-y-0","left-0","z-50","flex","flex-col","w-[85vw]","max-w-[380px]","bg-[var(--content-background)]","shadow-[var(--shadow-lg)]"]),ge=cva(["flex","items-center","justify-between","px-3","py-2","border-b","border-[var(--border)]","shrink-0"]),xe=cva(["flex","items-center","gap-1","px-2","py-2","overflow-x-auto","overflow-y-hidden","shrink-0","border-b","border-[var(--border)]","bg-[var(--menu-background)]"]),Se=cva(ee(se,K,U,J,["flex","flex-col","items-center","justify-center","gap-0.5","px-2","py-1.5","rounded-[var(--radius-md)]","text-[var(--icon)]","shrink-0","cursor-pointer"]),{variants:{isActive:{true:["bg-[var(--menu-accent)]","text-[var(--menu-foreground)]"],false:[...le]}},defaultVariants:{isActive:false}});});function T(){let e=useContext(Re);if(!e)throw new Error("Sidebar compound components must be used within <Sidebar>");return e}function R(){let e=useContext(Pe);if(!e)throw new Error("Sidebar compound components must be used within <Sidebar>");return e}function ye({children:e,isCollapsed:t,defaultCollapsed:a=false,onCollapsedChange:r,isMobileOpen:o,onMobileOpenChange:s,mobileBreakpoint:n=768,className:c,"data-testid":i="sidebar"}){let[p,x]=useState(a),l=t!==void 0,u=l?t:p,S=useCallback(y=>{l||x(y),r?.(y);},[l,r]),P=useCallback(()=>S(!u),[S,u]),C=o??false,M=useCallback(y=>s?.(y),[s]),[b,f]=useState(null),v=useRef(null),D=useCallback(()=>{v.current&&(clearTimeout(v.current),v.current=null);},[]),A=useCallback((y=300)=>{v.current&&clearTimeout(v.current),v.current=setTimeout(()=>{v.current=null,f(null);},y);},[]);useEffect(()=>()=>{v.current&&clearTimeout(v.current);},[]);let L=_e(`(max-width: ${n-1}px)`),B=useId(),k=`sidebar-rail-${B}`,G=`sidebar-panel-${B}`,z=useMemo(()=>({isMobile:L,railId:k,panelId:G}),[L,k,G]),q=useMemo(()=>({isCollapsed:u,setCollapsed:S,toggleCollapsed:P,isMobileOpen:C,setMobileOpen:M,activePopoverId:b,setActivePopoverId:f,cancelPopoverClose:D,schedulePopoverClose:A}),[u,S,P,C,M,b,D,A]);return L?jsx(Re.Provider,{value:z,children:jsx(Pe.Provider,{value:q,children:e})}):jsx(Re.Provider,{value:z,children:jsx(Pe.Provider,{value:q,children:jsx("div",{className:g(de(),c),"data-testid":i,children:e})})})}var Re,Pe,H=O(()=>{"use client";He();_();V();Re=createContext(null),Pe=createContext(null);ye.displayName="Sidebar";});var ot={};ut(ot,{SidebarMobileDrawer:()=>Yt});function Xt(e){return e>99?"99+":String(e)}function Zt(e){let t=null;return Children.forEach(e.props.children,a=>{isValidElement(a)&&a.type.displayName==="SidebarPopover"&&(t=a);}),t}function Qt(e){let t=[],a=null,r="Navigation";return Children.forEach(e,o=>{if(!isValidElement(o))return;let s=o.type.displayName;s==="SidebarRail"?(r=o.props["aria-label"]??r,Children.forEach(o.props.children,n=>{if(!isValidElement(n))return;if(n.type.displayName==="SidebarRailItem"){let i=n;t.push({props:i.props,popover:Zt(i)});}})):s==="SidebarPanel"&&(a=o.props.children);}),{railItems:t,panelContent:a,railAriaLabel:r}}function Yt({children:e}){let{isMobileOpen:t,setMobileOpen:a,activePopoverId:r,setActivePopoverId:o}=R(),{railItems:s,panelContent:n,railAriaLabel:c}=Qt(e),p=s.find(l=>l.props.id===r)?.popover??n,x=()=>{o(null),a(false);};return jsx(ModalOverlay,{isDismissable:true,isOpen:t,onOpenChange:l=>{l||x();},className:fe(),children:jsx(Modal,{className:ve(),children:jsxs(Dialog,{"aria-label":"Navigation menu",className:"flex flex-col h-full outline-none",children:[jsxs("header",{className:ge(),children:[jsx("span",{className:"text-base font-semibold text-[var(--content-foreground)]",children:"Menu"}),jsx(Button,{"aria-label":"Close navigation",className:g(X()),onPress:x,children:jsx(X$1,{})})]}),s.length>0&&jsx("div",{role:"toolbar","aria-orientation":"horizontal","aria-label":c,tabIndex:0,className:xe(),children:s.map(({props:l,popover:u})=>{let S=u!=null,P=r===l.id;return jsxs(Button,{"aria-current":l.isActive?l.currentType??"page":void 0,"aria-haspopup":S?"dialog":void 0,"aria-expanded":S?P:void 0,isDisabled:l.isDisabled,className:Se({isActive:(l.isActive??false)||P}),onPress:()=>{if(l.onPress?.(),S){o(P?null:l.id);return}if(l.href){window.location.href=l.href,x();return}},"data-testid":`sidebar-mobile-rail-item-${l.id}`,children:[jsxs("span",{className:F(),"aria-hidden":"true",children:[l.icon,l.badgeCount!=null&&l.badgeCount>0&&jsx("span",{className:W(),"aria-hidden":"true",children:Xt(l.badgeCount)})]}),jsx("span",{className:$({isActive:(l.isActive??false)||P}),children:l.label}),l.badgeCount!=null&&l.badgeCount>0&&jsxs("span",{className:"sr-only",children:[l.badgeCount," notifications"]})]},l.id)})}),p&&jsx("div",{className:"flex-1 overflow-y-auto bg-[var(--content-background)] text-[var(--content-foreground)]","data-testid":"sidebar-mobile-panel-content",children:p})]})})})}var nt=O(()=>{"use client";_();H();V();});H();_();H();_();H();V();var St=200,Rt=300;function $e(e,t){let{activePopoverId:a,setActivePopoverId:r,cancelPopoverClose:o,schedulePopoverClose:s}=R(),n=useRef("IDLE"),c=useRef(null),i=useCallback(()=>{c.current&&(clearTimeout(c.current),c.current=null);},[]),p=a===e;useEffect(()=>{!p&&n.current!=="IDLE"?(i(),n.current="IDLE"):p&&(n.current="OPEN");},[p,i]),useEffect(()=>i,[i]);let x=useCallback(u=>{t&&u.pointerType==="mouse"&&(i(),o(),n.current!=="OPEN"&&(n.current="HOVERING_TRIGGER",c.current=setTimeout(()=>{n.current="OPEN",r(e);},St)));},[e,t,r,i,o]),l=useCallback(()=>{if(t){if(i(),n.current==="HOVERING_TRIGGER"){n.current="IDLE",r(null);return}n.current==="OPEN"&&s(Rt);}},[t,r,i,s]);return {onTriggerPointerEnter:x,onTriggerPointerLeave:l}}function Ne({children:e,className:t,"data-testid":a="sidebar-popover"}){return jsx("div",{className:g(j(),t),"data-testid":a,children:e})}Ne.displayName="SidebarPopover";_();H();V();function Nt(){let{activePopoverId:e,setActivePopoverId:t}=R(),{isMobile:a}=T(),r=useRef(null);return useEffect(()=>{if(!e)return;let o=s=>{s.key==="Escape"&&(s.preventDefault(),t(null));};return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[e,t]),useEffect(()=>{if(!e)return;let o=n=>{let c=r.current,i=n.relatedTarget;if(!i||!c)return;let p=document.querySelector('[data-testid="sidebar-rail"]');!c.contains(i)&&!p?.contains(i)&&t(null);},s=r.current;return s?.addEventListener("focusout",o),()=>s?.removeEventListener("focusout",o)},[e,t]),a||!e?null:jsx(Xe,{ref:r})}var We=createContext(null);function Ce(){let e=useContext(We);if(!e)throw new Error("usePopoverRegistry must be used within SidebarPanel");return e}function je({children:e}){let t=useRef(new Map),a=useCallback((n,c,i)=>{t.current.set(n,{content:c,label:i});},[]),r=useCallback(n=>{t.current.delete(n);},[]),o=useCallback(n=>t.current.get(n)??null,[]),s=useMemo(()=>({register:a,unregister:r,getContent:o}),[a,r,o]);return jsx(We.Provider,{value:s,children:e})}var Xe=forwardRef((e,t)=>{let{activePopoverId:a,cancelPopoverClose:r,schedulePopoverClose:o}=R(),s=Ce();if(!a)return null;let n=s.getContent(a);return n?jsx("div",{ref:t,role:"dialog","aria-label":`${n.label} details`,className:j(),"data-testid":"sidebar-popover",onPointerEnter:r,onPointerLeave:()=>o(300),children:n.content}):null});Xe.displayName="PopoverContent";var Tt=300,wt={sm:220,md:280,lg:340,xl:420},Ve=forwardRef(({children:e,width:t="md","aria-label":a,skeleton:r,className:o,"data-testid":s="sidebar-panel"},n)=>{let{isMobile:c}=T(),{isCollapsed:i,activePopoverId:p}=R(),x=useRef(null),l=p!==null,[u,S]=useState(!i);useEffect(()=>{if(i){S(false);return}let b=window.setTimeout(()=>S(true),Tt);return ()=>window.clearTimeout(b)},[i]);let C=r!==void 0&&!(!i&&u)?r:e;useEffect(()=>{if(!i)return;let b=x.current;if(b&&b.contains(document.activeElement)){let f=document.querySelector('[data-testid="sidebar-collapse-button"]');f&&window.requestAnimationFrame(()=>f.focus());}},[i]);let M=b=>{x.current=b,typeof n=="function"?n(b):n&&(n.current=b);};return c?null:jsxs("div",{className:"relative shrink-0 border-r border-[var(--border)]",children:[jsx("aside",{ref:M,"aria-label":a,"aria-hidden":i,inert:i||void 0,className:g(ue({width:t,isCollapsed:i}),o),"data-testid":s,children:C}),l&&jsx("div",{className:g("absolute top-0 left-0 z-10 h-full",i&&"border-r border-[var(--border)]"),style:{width:`${wt[t]}px`},children:jsx(Nt,{})})]})});Ve.displayName="SidebarPanel";function Te({title:e,children:t,as:a="h2",className:r,"data-testid":o="sidebar-panel-header"}){return jsxs("header",{className:g(me(),r),"data-testid":o,children:[jsx(a,{className:be(),children:e}),t]})}Te.displayName="SidebarPanelHeader";V();var et=createContext("default");function tt(){return useContext(et)}var we=forwardRef(({children:e,"aria-label":t,variant:a="default",className:r,"data-testid":o="sidebar-rail"},s)=>{let{isMobile:n}=T();if(n)return null;let c=[],i=[];return Children.forEach(e,p=>{isValidElement(p)&&p.type.displayName==="SidebarCollapseButton"?c.push(p):i.push(p);}),jsx(et.Provider,{value:a,children:jsxs("nav",{ref:s,"aria-label":t,className:g(ce({variant:a}),r),"data-testid":o,children:[c,jsx(Toolbar,{orientation:"vertical","aria-label":"Navigation items",className:pe(),children:i})]})})});we.displayName="SidebarRail";function Gt(e){let t=null,a=[];return Children.forEach(e,r=>{isValidElement(r)&&r.type.displayName==="SidebarPopover"?t=r:a.push(r);}),{popover:t,rest:a.length>0?a:null}}function zt(e){return e>99?"99+":String(e)}var at=forwardRef(({id:e,label:t,icon:a,href:r,badgeCount:o,isActive:s=false,currentType:n="page",isDisabled:c=false,onPress:i,children:p,className:x,"data-testid":l},u)=>{let{activePopoverId:S,setActivePopoverId:P}=R(),C=tt(),M=useRef(null),{popover:b}=Gt(p),f=b!==null,v=S===e,D=$e(e,f),A=Ce();useEffect(()=>{if(f&&b)return A.register(e,b,t),()=>A.unregister(e)},[e,f,b,t,A]);let L=useCallback(()=>{f&&P(v?null:e),i?.();},[f,v,e,i,P]),B=useCallback(y=>{M.current=y,typeof u=="function"?u(y):u&&(u.current=y);},[u]),k=l??`sidebar-rail-item-${e}`,G=x?g(te({railVariant:C,isActive:s,isDisabled:c}),x):te({railVariant:C,isActive:s,isDisabled:c}),z=jsxs(Fragment,{children:[jsxs("span",{className:F(),"aria-hidden":"true",children:[a,o!=null&&o>0&&jsx("span",{className:W(),"aria-hidden":"true",children:zt(o)})]}),jsx("span",{className:$({isActive:s}),children:t}),o!=null&&o>0&&jsxs("span",{className:"sr-only",children:[o," notifications"]})]}),q=r&&!c?jsx(Link,{ref:B,href:r,"aria-current":s?n:void 0,"aria-haspopup":f?"dialog":void 0,"aria-expanded":f?v:void 0,className:G,"data-testid":k,onPress:L,children:z}):jsx(Button,{ref:B,isDisabled:c,"aria-current":s?n:void 0,"aria-haspopup":f?"dialog":void 0,"aria-expanded":f?v:void 0,className:G,"data-testid":k,onPress:L,children:z});return jsx("div",{onPointerEnter:D.onTriggerPointerEnter,onPointerLeave:D.onTriggerPointerLeave,children:q})});at.displayName="SidebarRailItem";var Me=memo(at,(e,t)=>e.id===t.id&&e.isActive===t.isActive&&e.badgeCount===t.badgeCount&&e.isDisabled===t.isDisabled&&e.label===t.label&&e.className===t.className&&e.href===t.href);Me.displayName="SidebarRailItem";function Ae({className:e,"data-testid":t="sidebar-collapse-button"}){let{isCollapsed:a,toggleCollapsed:r}=R(),o=tt();return jsx(Button,{"aria-expanded":!a,"aria-label":a?"Expand sidebar":"Collapse sidebar",className:g(X({railVariant:o}),e),"data-testid":t,onPress:r,children:a?jsx(PanelLeftOpen,{}):jsx(PanelLeftClose,{})})}Ae.displayName="SidebarCollapseButton";var Jt=lazy(()=>Promise.resolve().then(()=>(nt(),ot)).then(e=>({default:e.SidebarMobileDrawer})));function ea({children:e}){let{isMobile:t}=T(),{isMobileOpen:a}=R();return !t||!a?null:jsx(Suspense,{fallback:null,children:jsx(Jt,{children:e})})}function it(e){return jsx(ye,{...e,children:jsxs(je,{children:[e.children,jsx(ea,{children:e.children})]})})}it.displayName="Sidebar";var ta=Object.assign(it,{Rail:we,RailItem:Me,Popover:Ne,Panel:Ve,PanelHeader:Te,CollapseButton:Ae});V();var I=z.object({className:z.string().optional(),children:z.any().optional(),id:z.string().optional(),"aria-label":z.string().optional(),"aria-labelledby":z.string().optional(),"aria-describedby":z.string().optional(),"aria-live":z.enum(["off","polite","assertive"]).optional(),"aria-hidden":z.boolean().optional(),"data-testid":z.string().optional()});var st=z.enum(["default","primary"]),lt=z.enum(["sm","md","lg","xl"]),dt=z.enum(["page","true","location"]),ct=z.enum(["h1","h2","h3","h4"]),ra=I.extend({children:z.custom(),isCollapsed:z.boolean().optional(),defaultCollapsed:z.boolean().optional().default(false),onCollapsedChange:z.custom().optional(),isMobileOpen:z.boolean().optional(),onMobileOpenChange:z.custom().optional(),mobileBreakpoint:z.number().optional().default(768)}),oa=I.extend({children:z.custom(),"aria-label":z.string(),variant:st.optional().default("default")}),na=I.extend({id:z.string(),label:z.string(),icon:z.custom(),href:z.string().optional(),badgeCount:z.number().optional(),isActive:z.boolean().optional(),currentType:dt.optional().default("page"),isDisabled:z.boolean().optional(),onPress:z.custom().optional(),children:z.custom().optional()}),ia=I.extend({children:z.custom()}),sa=I.extend({children:z.custom(),width:lt.optional().default("md"),"aria-label":z.string(),skeleton:z.custom().optional()}),la=I.extend({title:z.string(),children:z.custom().optional(),as:ct.optional().default("h2")}),da=I.extend({});export{ta as Sidebar,da as SidebarCollapseButtonPropsSchema,dt as SidebarCurrentTypeSchema,ct as SidebarPanelHeaderLevelSchema,la as SidebarPanelHeaderPropsSchema,sa as SidebarPanelPropsSchema,lt as SidebarPanelWidthSchema,ia as SidebarPopoverPropsSchema,ra as SidebarPropsSchema,na as SidebarRailItemPropsSchema,oa as SidebarRailPropsSchema,st as SidebarRailVariantSchema,X as sidebarCollapseButtonVariants,ge as sidebarMobileDrawerHeaderVariants,ve as sidebarMobileDrawerVariants,fe as sidebarMobileOverlayVariants,Se as sidebarMobileRailItemVariants,xe as sidebarMobileRailVariants,be as sidebarPanelHeaderTitleVariants,me as sidebarPanelHeaderVariants,ue as sidebarPanelVariants,j as sidebarPopoverVariants,W as sidebarRailItemBadgeVariants,F as sidebarRailItemIconVariants,$ as sidebarRailItemLabelVariants,te as sidebarRailItemVariants,pe as sidebarRailToolbarVariants,ce as sidebarRailVariants,de as sidebarRootVariants};//# sourceMappingURL=index.mjs.map
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|