@tribepad/themis 1.3.3 → 1.3.4
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/Sidebar.types.d.ts +18 -0
- package/dist/elements/Sidebar/Sidebar.types.d.ts.map +1 -1
- package/dist/elements/Sidebar/SidebarRail.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 +71 -0
|
@@ -25,6 +25,11 @@ export declare const SidebarPanelHeaderLevelSchema: z.ZodEnum<{
|
|
|
25
25
|
h4: "h4";
|
|
26
26
|
}>;
|
|
27
27
|
export type SidebarPanelHeaderLevel = z.infer<typeof SidebarPanelHeaderLevelSchema>;
|
|
28
|
+
export declare const SidebarRailItemPlacementSchema: z.ZodEnum<{
|
|
29
|
+
top: "top";
|
|
30
|
+
bottom: "bottom";
|
|
31
|
+
}>;
|
|
32
|
+
export type SidebarRailItemPlacement = z.infer<typeof SidebarRailItemPlacementSchema>;
|
|
28
33
|
export declare const SidebarPropsSchema: z.ZodObject<{
|
|
29
34
|
className: z.ZodOptional<z.ZodString>;
|
|
30
35
|
id: z.ZodOptional<z.ZodString>;
|
|
@@ -110,6 +115,10 @@ export declare const SidebarRailItemPropsSchema: z.ZodObject<{
|
|
|
110
115
|
isDisabled: z.ZodOptional<z.ZodBoolean>;
|
|
111
116
|
onPress: z.ZodOptional<z.ZodCustom<() => void, () => void>>;
|
|
112
117
|
children: z.ZodOptional<z.ZodCustom<ReactNode, ReactNode>>;
|
|
118
|
+
placement: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
119
|
+
top: "top";
|
|
120
|
+
bottom: "bottom";
|
|
121
|
+
}>>>;
|
|
113
122
|
}, z.core.$strip>;
|
|
114
123
|
export interface SidebarRailItemProps {
|
|
115
124
|
id: string;
|
|
@@ -124,6 +133,15 @@ export interface SidebarRailItemProps {
|
|
|
124
133
|
children?: ReactNode;
|
|
125
134
|
className?: string;
|
|
126
135
|
'data-testid'?: string;
|
|
136
|
+
/**
|
|
137
|
+
* Where the item is rendered in the rail.
|
|
138
|
+
* - `'top'` (default) — grouped with the primary navigation items at the top.
|
|
139
|
+
* - `'bottom'` — pinned to the bottom of the rail; useful for low-frequency
|
|
140
|
+
* destinations like Settings or Admin.
|
|
141
|
+
*
|
|
142
|
+
* Items keep their declared order within each group.
|
|
143
|
+
*/
|
|
144
|
+
placement?: SidebarRailItemPlacement;
|
|
127
145
|
}
|
|
128
146
|
export declare const SidebarPopoverPropsSchema: z.ZodObject<{
|
|
129
147
|
className: z.ZodOptional<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.types.d.ts","sourceRoot":"","sources":["../../../src/elements/Sidebar/Sidebar.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAMrD,eAAO,MAAM,wBAAwB;;;EAAiC,CAAC;AACvE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,uBAAuB;;;;;EAAmC,CAAC;AACxE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,wBAAwB;;;;EAAuC,CAAC;AAC7E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,6BAA6B;;;;;EAAmC,CAAC;AAC9E,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Sidebar.types.d.ts","sourceRoot":"","sources":["../../../src/elements/Sidebar/Sidebar.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarRail.d.ts","sourceRoot":"","sources":["../../../src/elements/Sidebar/SidebarRail.tsx"],"names":[],"mappings":"AAEA,OAAO,EAQL,KAAK,YAAY,EAIlB,MAAM,OAAO,CAAC;AAiBf,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,iBAAiB,CAAC;AAkBzB,QAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"SidebarRail.d.ts","sourceRoot":"","sources":["../../../src/elements/Sidebar/SidebarRail.tsx"],"names":[],"mappings":"AAEA,OAAO,EAQL,KAAK,YAAY,EAIlB,MAAM,OAAO,CAAC;AAiBf,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,iBAAiB,CAAC;AAkBzB,QAAA,MAAM,WAAW,0GAyDhB,CAAC;AAkJF,QAAA,MAAM,eAAe,yGAQnB,CAAC;AASH,iBAAS,qBAAqB,CAAC,EAC7B,SAAS,EACT,aAAa,EAAE,MAAkC,GAClD,EAAE,0BAA0B,GAAG,YAAY,CAe3C;kBAlBQ,qBAAqB;;;AAsB9B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';var react=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),reactAriaComponents=require('react-aria-components'),lucideReact=require('lucide-react'),zod=require('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 He(e){let t=react.useCallback(o=>{let i=window.matchMedia(e);return i.addEventListener("change",o),()=>i.removeEventListener("change",o)},[e]),a=react.useCallback(()=>window.matchMedia(e).matches,[e]),r=react.useCallback(()=>false,[]);return react.useSyncExternalStore(t,a,r)}var De=O(()=>{"use client";});function g(...e){return tailwindMerge.twMerge(clsx.clsx(e))}var _=O(()=>{});function ee(...e){return e.flatMap(t=>Array.isArray(t)?[...t]:[t])}var K,se,ie,U,J,le,Be=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)]"];});exports.sidebarRootVariants=void 0;exports.sidebarRailVariants=void 0;exports.sidebarRailToolbarVariants=void 0;exports.sidebarRailItemVariants=void 0;exports.sidebarRailItemIconVariants=void 0;exports.sidebarRailItemLabelVariants=void 0;exports.sidebarRailItemBadgeVariants=void 0;exports.sidebarPopoverVariants=void 0;exports.sidebarPanelVariants=void 0;exports.sidebarPanelHeaderVariants=void 0;exports.sidebarPanelHeaderTitleVariants=void 0;exports.sidebarCollapseButtonVariants=void 0;exports.sidebarMobileOverlayVariants=void 0;exports.sidebarMobileDrawerVariants=void 0;exports.sidebarMobileDrawerHeaderVariants=void 0;exports.sidebarMobileRailVariants=void 0;exports.sidebarMobileRailItemVariants=void 0;var T=O(()=>{Be();exports.sidebarRootVariants=classVarianceAuthority.cva(["flex","h-full"]),exports.sidebarRailVariants=classVarianceAuthority.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"}}),exports.sidebarRailToolbarVariants=classVarianceAuthority.cva(["flex","flex-col","gap-1"]),exports.sidebarRailItemVariants=classVarianceAuthority.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}}),exports.sidebarRailItemIconVariants=classVarianceAuthority.cva(["relative","[&_svg]:size-5","[&_svg]:shrink-0","[&_svg]:pointer-events-none"]),exports.sidebarRailItemLabelVariants=classVarianceAuthority.cva(["text-[10px]","leading-tight","text-center","max-w-full","truncate"],{variants:{isActive:{true:"font-semibold",false:"font-medium"}},defaultVariants:{isActive:false}}),exports.sidebarRailItemBadgeVariants=classVarianceAuthority.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"]),exports.sidebarPopoverVariants=classVarianceAuthority.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]"]),exports.sidebarPanelVariants=classVarianceAuthority.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}}),exports.sidebarPanelHeaderVariants=classVarianceAuthority.cva(["flex","items-center","justify-between","px-3","py-2","shrink-0","border-b","border-[var(--border)]"]),exports.sidebarPanelHeaderTitleVariants=classVarianceAuthority.cva(["text-base","font-semibold","text-[var(--content-foreground)]","truncate"]),exports.sidebarCollapseButtonVariants=classVarianceAuthority.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"}}),exports.sidebarMobileOverlayVariants=classVarianceAuthority.cva(["fixed","inset-0","z-50","bg-black/50"]),exports.sidebarMobileDrawerVariants=classVarianceAuthority.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)]"]),exports.sidebarMobileDrawerHeaderVariants=classVarianceAuthority.cva(["flex","items-center","justify-between","px-3","py-2","border-b","border-[var(--border)]","shrink-0"]),exports.sidebarMobileRailVariants=classVarianceAuthority.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)]"]),exports.sidebarMobileRailItemVariants=classVarianceAuthority.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 w(){let e=react.useContext(Re);if(!e)throw new Error("Sidebar compound components must be used within <Sidebar>");return e}function R(){let e=react.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:i,mobileBreakpoint:n=768,className:c,"data-testid":s="sidebar"}){let[p,x]=react.useState(a),l=t!==void 0,u=l?t:p,S=react.useCallback(y=>{l||x(y),r?.(y);},[l,r]),P=react.useCallback(()=>S(!u),[S,u]),V=o??false,M=react.useCallback(y=>i?.(y),[i]),[b,f]=react.useState(null),v=react.useRef(null),D=react.useCallback(()=>{v.current&&(clearTimeout(v.current),v.current=null);},[]),A=react.useCallback((y=300)=>{v.current&&clearTimeout(v.current),v.current=setTimeout(()=>{v.current=null,f(null);},y);},[]);react.useEffect(()=>()=>{v.current&&clearTimeout(v.current);},[]);let L=He(`(max-width: ${n-1}px)`),B=react.useId(),k=`sidebar-rail-${B}`,G=`sidebar-panel-${B}`,z=react.useMemo(()=>({isMobile:L,railId:k,panelId:G}),[L,k,G]),q=react.useMemo(()=>({isCollapsed:u,setCollapsed:S,toggleCollapsed:P,isMobileOpen:V,setMobileOpen:M,activePopoverId:b,setActivePopoverId:f,cancelPopoverClose:D,schedulePopoverClose:A}),[u,S,P,V,M,b,D,A]);return L?jsxRuntime.jsx(Re.Provider,{value:z,children:jsxRuntime.jsx(Pe.Provider,{value:q,children:e})}):jsxRuntime.jsx(Re.Provider,{value:z,children:jsxRuntime.jsx(Pe.Provider,{value:q,children:jsxRuntime.jsx("div",{className:g(exports.sidebarRootVariants(),c),"data-testid":s,children:e})})})}var Re,Pe,H=O(()=>{"use client";De();_();T();Re=react.createContext(null),Pe=react.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 react.Children.forEach(e.props.children,a=>{react.isValidElement(a)&&a.type.displayName==="SidebarPopover"&&(t=a);}),t}function Qt(e){let t=[],a=null,r="Navigation";return react.Children.forEach(e,o=>{if(!react.isValidElement(o))return;let i=o.type.displayName;i==="SidebarRail"?(r=o.props["aria-label"]??r,react.Children.forEach(o.props.children,n=>{if(!react.isValidElement(n))return;if(n.type.displayName==="SidebarRailItem"){let s=n;t.push({props:s.props,popover:Zt(s)});}})):i==="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:i,panelContent:n,railAriaLabel:c}=Qt(e),p=i.find(l=>l.props.id===r)?.popover??n,x=()=>{o(null),a(false);};return jsxRuntime.jsx(reactAriaComponents.ModalOverlay,{isDismissable:true,isOpen:t,onOpenChange:l=>{l||x();},className:exports.sidebarMobileOverlayVariants(),children:jsxRuntime.jsx(reactAriaComponents.Modal,{className:exports.sidebarMobileDrawerVariants(),children:jsxRuntime.jsxs(reactAriaComponents.Dialog,{"aria-label":"Navigation menu",className:"flex flex-col h-full outline-none",children:[jsxRuntime.jsxs("header",{className:exports.sidebarMobileDrawerHeaderVariants(),children:[jsxRuntime.jsx("span",{className:"text-base font-semibold text-[var(--content-foreground)]",children:"Menu"}),jsxRuntime.jsx(reactAriaComponents.Button,{"aria-label":"Close navigation",className:g(exports.sidebarCollapseButtonVariants()),onPress:x,children:jsxRuntime.jsx(lucideReact.X,{})})]}),i.length>0&&jsxRuntime.jsx("div",{role:"toolbar","aria-orientation":"horizontal","aria-label":c,tabIndex:0,className:exports.sidebarMobileRailVariants(),children:i.map(({props:l,popover:u})=>{let S=u!=null,P=r===l.id;return jsxRuntime.jsxs(reactAriaComponents.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:exports.sidebarMobileRailItemVariants({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:[jsxRuntime.jsxs("span",{className:exports.sidebarRailItemIconVariants(),"aria-hidden":"true",children:[l.icon,l.badgeCount!=null&&l.badgeCount>0&&jsxRuntime.jsx("span",{className:exports.sidebarRailItemBadgeVariants(),"aria-hidden":"true",children:Xt(l.badgeCount)})]}),jsxRuntime.jsx("span",{className:exports.sidebarRailItemLabelVariants({isActive:(l.isActive??false)||P}),children:l.label}),l.badgeCount!=null&&l.badgeCount>0&&jsxRuntime.jsxs("span",{className:"sr-only",children:[l.badgeCount," notifications"]})]},l.id)})}),p&&jsxRuntime.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();T();});H();_();H();_();H();T();var St=200,Rt=300;function We(e,t){let{activePopoverId:a,setActivePopoverId:r,cancelPopoverClose:o,schedulePopoverClose:i}=R(),n=react.useRef("IDLE"),c=react.useRef(null),s=react.useCallback(()=>{c.current&&(clearTimeout(c.current),c.current=null);},[]),p=a===e;react.useEffect(()=>{!p&&n.current!=="IDLE"?(s(),n.current="IDLE"):p&&(n.current="OPEN");},[p,s]),react.useEffect(()=>s,[s]);let x=react.useCallback(u=>{t&&u.pointerType==="mouse"&&(s(),o(),n.current!=="OPEN"&&(n.current="HOVERING_TRIGGER",c.current=setTimeout(()=>{n.current="OPEN",r(e);},St)));},[e,t,r,s,o]),l=react.useCallback(()=>{if(t){if(s(),n.current==="HOVERING_TRIGGER"){n.current="IDLE",r(null);return}n.current==="OPEN"&&i(Rt);}},[t,r,s,i]);return {onTriggerPointerEnter:x,onTriggerPointerLeave:l}}function Ne({children:e,className:t,"data-testid":a="sidebar-popover"}){return jsxRuntime.jsx("div",{className:g(exports.sidebarPopoverVariants(),t),"data-testid":a,children:e})}Ne.displayName="SidebarPopover";_();H();T();function Nt(){let{activePopoverId:e,setActivePopoverId:t}=R(),{isMobile:a}=w(),r=react.useRef(null);return react.useEffect(()=>{if(!e)return;let o=i=>{i.key==="Escape"&&(i.preventDefault(),t(null));};return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[e,t]),react.useEffect(()=>{if(!e)return;let o=n=>{let c=r.current,s=n.relatedTarget;if(!s||!c)return;let p=document.querySelector('[data-testid="sidebar-rail"]');!c.contains(s)&&!p?.contains(s)&&t(null);},i=r.current;return i?.addEventListener("focusout",o),()=>i?.removeEventListener("focusout",o)},[e,t]),a||!e?null:jsxRuntime.jsx(Ze,{ref:r})}var je=react.createContext(null);function Ve(){let e=react.useContext(je);if(!e)throw new Error("usePopoverRegistry must be used within SidebarPanel");return e}function Xe({children:e}){let t=react.useRef(new Map),a=react.useCallback((n,c,s)=>{t.current.set(n,{content:c,label:s});},[]),r=react.useCallback(n=>{t.current.delete(n);},[]),o=react.useCallback(n=>t.current.get(n)??null,[]),i=react.useMemo(()=>({register:a,unregister:r,getContent:o}),[a,r,o]);return jsxRuntime.jsx(je.Provider,{value:i,children:e})}var Ze=react.forwardRef((e,t)=>{let{activePopoverId:a,cancelPopoverClose:r,schedulePopoverClose:o}=R(),i=Ve();if(!a)return null;let n=i.getContent(a);return n?jsxRuntime.jsx("div",{ref:t,role:"dialog","aria-label":`${n.label} details`,className:exports.sidebarPopoverVariants(),"data-testid":"sidebar-popover",onPointerEnter:r,onPointerLeave:()=>o(300),children:n.content}):null});Ze.displayName="PopoverContent";var Tt=300,wt={sm:220,md:280,lg:340,xl:420},Te=react.forwardRef(({children:e,width:t="md","aria-label":a,skeleton:r,className:o,"data-testid":i="sidebar-panel"},n)=>{let{isMobile:c}=w(),{isCollapsed:s,activePopoverId:p}=R(),x=react.useRef(null),l=p!==null,[u,S]=react.useState(!s);react.useEffect(()=>{if(s){S(false);return}let b=window.setTimeout(()=>S(true),Tt);return ()=>window.clearTimeout(b)},[s]);let V=r!==void 0&&!(!s&&u)?r:e;react.useEffect(()=>{if(!s)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());}},[s]);let M=b=>{x.current=b,typeof n=="function"?n(b):n&&(n.current=b);};return c?null:jsxRuntime.jsxs("div",{className:"relative shrink-0 border-r border-[var(--border)]",children:[jsxRuntime.jsx("aside",{ref:M,"aria-label":a,"aria-hidden":s,inert:s||void 0,className:g(exports.sidebarPanelVariants({width:t,isCollapsed:s}),o),"data-testid":i,children:V}),l&&jsxRuntime.jsx("div",{className:g("absolute top-0 left-0 z-10 h-full",s&&"border-r border-[var(--border)]"),style:{width:`${wt[t]}px`},children:jsxRuntime.jsx(Nt,{})})]})});Te.displayName="SidebarPanel";function we({title:e,icon:t,children:a,as:r="h2",className:o,"data-testid":i="sidebar-panel-header"}){return jsxRuntime.jsxs("header",{className:g(exports.sidebarPanelHeaderVariants(),o),"data-testid":i,children:[jsxRuntime.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[t?jsxRuntime.jsx("span",{"aria-hidden":"true",className:"inline-flex shrink-0 items-center justify-center text-[var(--icon)]","data-testid":`${i}-icon`,children:t}):null,jsxRuntime.jsx(r,{className:exports.sidebarPanelHeaderTitleVariants(),children:e})]}),a]})}we.displayName="SidebarPanelHeader";T();var et=react.createContext("default");function tt(){return react.useContext(et)}var Me=react.forwardRef(({children:e,"aria-label":t,variant:a="default",className:r,"data-testid":o="sidebar-rail"},i)=>{let{isMobile:n}=w();if(n)return null;let c=[],s=[];return react.Children.forEach(e,p=>{react.isValidElement(p)&&p.type.displayName==="SidebarCollapseButton"?c.push(p):s.push(p);}),jsxRuntime.jsx(et.Provider,{value:a,children:jsxRuntime.jsxs("nav",{ref:i,"aria-label":t,className:g(exports.sidebarRailVariants({variant:a}),r),"data-testid":o,children:[c,jsxRuntime.jsx(reactAriaComponents.Toolbar,{orientation:"vertical","aria-label":"Navigation items",className:exports.sidebarRailToolbarVariants(),children:s})]})})});Me.displayName="SidebarRail";function Gt(e){let t=null,a=[];return react.Children.forEach(e,r=>{react.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=react.forwardRef(({id:e,label:t,icon:a,href:r,badgeCount:o,isActive:i=false,currentType:n="page",isDisabled:c=false,onPress:s,children:p,className:x,"data-testid":l},u)=>{let{activePopoverId:S,setActivePopoverId:P}=R(),V=tt(),M=react.useRef(null),{popover:b}=Gt(p),f=b!==null,v=S===e,D=We(e,f),A=Ve();react.useEffect(()=>{if(f&&b)return A.register(e,b,t),()=>A.unregister(e)},[e,f,b,t,A]);let L=react.useCallback(()=>{f&&P(v?null:e),s?.();},[f,v,e,s,P]),B=react.useCallback(y=>{M.current=y,typeof u=="function"?u(y):u&&(u.current=y);},[u]),k=l??`sidebar-rail-item-${e}`,G=x?g(exports.sidebarRailItemVariants({railVariant:V,isActive:i,isDisabled:c}),x):exports.sidebarRailItemVariants({railVariant:V,isActive:i,isDisabled:c}),z=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("span",{className:exports.sidebarRailItemIconVariants(),"aria-hidden":"true",children:[a,o!=null&&o>0&&jsxRuntime.jsx("span",{className:exports.sidebarRailItemBadgeVariants(),"aria-hidden":"true",children:zt(o)})]}),jsxRuntime.jsx("span",{className:exports.sidebarRailItemLabelVariants({isActive:i}),children:t}),o!=null&&o>0&&jsxRuntime.jsxs("span",{className:"sr-only",children:[o," notifications"]})]}),q=r&&!c?jsxRuntime.jsx(reactAriaComponents.Link,{ref:B,href:r,"aria-current":i?n:void 0,"aria-haspopup":f?"dialog":void 0,"aria-expanded":f?v:void 0,className:G,"data-testid":k,onPress:L,children:z}):jsxRuntime.jsx(reactAriaComponents.Button,{ref:B,isDisabled:c,"aria-current":i?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 jsxRuntime.jsx("div",{onPointerEnter:D.onTriggerPointerEnter,onPointerLeave:D.onTriggerPointerLeave,children:q})});at.displayName="SidebarRailItem";var Ae=react.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);Ae.displayName="SidebarRailItem";function Le({className:e,"data-testid":t="sidebar-collapse-button"}){let{isCollapsed:a,toggleCollapsed:r}=R(),o=tt();return jsxRuntime.jsx(reactAriaComponents.Button,{"aria-expanded":!a,"aria-label":a?"Expand sidebar":"Collapse sidebar",className:g(exports.sidebarCollapseButtonVariants({railVariant:o}),e),"data-testid":t,onPress:r,children:a?jsxRuntime.jsx(lucideReact.PanelLeftOpen,{}):jsxRuntime.jsx(lucideReact.PanelLeftClose,{})})}Le.displayName="SidebarCollapseButton";var Jt=react.lazy(()=>Promise.resolve().then(()=>(nt(),ot)).then(e=>({default:e.SidebarMobileDrawer})));function ea({children:e}){let{isMobile:t}=w(),{isMobileOpen:a}=R();return !t||!a?null:jsxRuntime.jsx(react.Suspense,{fallback:null,children:jsxRuntime.jsx(Jt,{children:e})})}function it(e){return jsxRuntime.jsx(ye,{...e,children:jsxRuntime.jsxs(Xe,{children:[e.children,jsxRuntime.jsx(ea,{children:e.children})]})})}it.displayName="Sidebar";var ta=Object.assign(it,{Rail:Me,RailItem:Ae,Popover:Ne,Panel:Te,PanelHeader:we,CollapseButton:Le});T();var C=zod.z.object({className:zod.z.string().optional(),children:zod.z.any().optional(),id:zod.z.string().optional(),"aria-label":zod.z.string().optional(),"aria-labelledby":zod.z.string().optional(),"aria-describedby":zod.z.string().optional(),"aria-live":zod.z.enum(["off","polite","assertive"]).optional(),"aria-hidden":zod.z.boolean().optional(),"data-testid":zod.z.string().optional()});var st=zod.z.enum(["default","primary"]),lt=zod.z.enum(["sm","md","lg","xl"]),dt=zod.z.enum(["page","true","location"]),ct=zod.z.enum(["h1","h2","h3","h4"]),ra=C.extend({children:zod.z.custom(),isCollapsed:zod.z.boolean().optional(),defaultCollapsed:zod.z.boolean().optional().default(false),onCollapsedChange:zod.z.custom().optional(),isMobileOpen:zod.z.boolean().optional(),onMobileOpenChange:zod.z.custom().optional(),mobileBreakpoint:zod.z.number().optional().default(768)}),oa=C.extend({children:zod.z.custom(),"aria-label":zod.z.string(),variant:st.optional().default("default")}),na=C.extend({id:zod.z.string(),label:zod.z.string(),icon:zod.z.custom(),href:zod.z.string().optional(),badgeCount:zod.z.number().optional(),isActive:zod.z.boolean().optional(),currentType:dt.optional().default("page"),isDisabled:zod.z.boolean().optional(),onPress:zod.z.custom().optional(),children:zod.z.custom().optional()}),ia=C.extend({children:zod.z.custom()}),sa=C.extend({children:zod.z.custom(),width:lt.optional().default("md"),"aria-label":zod.z.string(),skeleton:zod.z.custom().optional()}),la=C.extend({title:zod.z.string(),icon:zod.z.custom().optional(),children:zod.z.custom().optional(),as:ct.optional().default("h2")}),da=C.extend({});exports.Sidebar=ta;exports.SidebarCollapseButtonPropsSchema=da;exports.SidebarCurrentTypeSchema=dt;exports.SidebarPanelHeaderLevelSchema=ct;exports.SidebarPanelHeaderPropsSchema=la;exports.SidebarPanelPropsSchema=sa;exports.SidebarPanelWidthSchema=lt;exports.SidebarPopoverPropsSchema=ia;exports.SidebarPropsSchema=ra;exports.SidebarRailItemPropsSchema=na;exports.SidebarRailPropsSchema=oa;exports.SidebarRailVariantSchema=st;//# sourceMappingURL=index.js.map
|
|
2
|
+
'use strict';var react=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),reactAriaComponents=require('react-aria-components'),lucideReact=require('lucide-react'),zod=require('zod');var ut=Object.defineProperty;var O=(e,t)=>()=>(e&&(t=e(e=0)),t);var mt=(e,t)=>{for(var a in t)ut(e,a,{get:t[a],enumerable:true});};function De(e){let t=react.useCallback(o=>{let i=window.matchMedia(e);return i.addEventListener("change",o),()=>i.removeEventListener("change",o)},[e]),a=react.useCallback(()=>window.matchMedia(e).matches,[e]),r=react.useCallback(()=>false,[]);return react.useSyncExternalStore(t,a,r)}var Be=O(()=>{"use client";});function g(...e){return tailwindMerge.twMerge(clsx.clsx(e))}var _=O(()=>{});function ee(...e){return e.flatMap(t=>Array.isArray(t)?[...t]:[t])}var K,le,se,U,J,de,ke=O(()=>{K=["focus-visible:outline-none","focus-visible:ring-2","focus-visible:ring-[var(--ring)]","focus-visible:ring-offset-2"],le=["min-h-[44px]","min-w-[44px]"],se={sm:"h-9",default:"h-10",lg:"h-11"},{sm:`${se.sm} px-2 text-xs`,default:`${se.default} px-3 text-sm`,lg:`${se.lg} px-4 text-base`},U=["motion-reduce:transition-none","motion-reduce:animate-none"],J=["transition-colors","duration-150"],de=["hover:bg-[var(--accent)]","hover:text-[var(--accent-foreground)]"];});exports.sidebarRootVariants=void 0;exports.sidebarRailVariants=void 0;exports.sidebarRailToolbarVariants=void 0;exports.sidebarRailItemVariants=void 0;exports.sidebarRailItemIconVariants=void 0;exports.sidebarRailItemLabelVariants=void 0;exports.sidebarRailItemBadgeVariants=void 0;exports.sidebarPopoverVariants=void 0;exports.sidebarPanelVariants=void 0;exports.sidebarPanelHeaderVariants=void 0;exports.sidebarPanelHeaderTitleVariants=void 0;exports.sidebarCollapseButtonVariants=void 0;exports.sidebarMobileOverlayVariants=void 0;exports.sidebarMobileDrawerVariants=void 0;exports.sidebarMobileDrawerHeaderVariants=void 0;exports.sidebarMobileRailVariants=void 0;exports.sidebarMobileRailItemVariants=void 0;var T=O(()=>{ke();exports.sidebarRootVariants=classVarianceAuthority.cva(["flex","h-full"]),exports.sidebarRailVariants=classVarianceAuthority.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"}}),exports.sidebarRailToolbarVariants=classVarianceAuthority.cva(["flex","flex-col","gap-1"]),exports.sidebarRailItemVariants=classVarianceAuthority.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}}),exports.sidebarRailItemIconVariants=classVarianceAuthority.cva(["relative","[&_svg]:size-5","[&_svg]:shrink-0","[&_svg]:pointer-events-none"]),exports.sidebarRailItemLabelVariants=classVarianceAuthority.cva(["text-[10px]","leading-tight","text-center","max-w-full","truncate"],{variants:{isActive:{true:"font-semibold",false:"font-medium"}},defaultVariants:{isActive:false}}),exports.sidebarRailItemBadgeVariants=classVarianceAuthority.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"]),exports.sidebarPopoverVariants=classVarianceAuthority.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]"]),exports.sidebarPanelVariants=classVarianceAuthority.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}}),exports.sidebarPanelHeaderVariants=classVarianceAuthority.cva(["flex","items-center","justify-between","px-3","py-2","shrink-0","border-b","border-[var(--border)]"]),exports.sidebarPanelHeaderTitleVariants=classVarianceAuthority.cva(["text-base","font-semibold","text-[var(--content-foreground)]","truncate"]),exports.sidebarCollapseButtonVariants=classVarianceAuthority.cva(ee(le,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)]",...de],primary:["text-[var(--primary-action-foreground)]","hover:bg-white/10"]}},defaultVariants:{railVariant:"default"}}),exports.sidebarMobileOverlayVariants=classVarianceAuthority.cva(["fixed","inset-0","z-50","bg-black/50"]),exports.sidebarMobileDrawerVariants=classVarianceAuthority.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)]"]),exports.sidebarMobileDrawerHeaderVariants=classVarianceAuthority.cva(["flex","items-center","justify-between","px-3","py-2","border-b","border-[var(--border)]","shrink-0"]),exports.sidebarMobileRailVariants=classVarianceAuthority.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)]"]),exports.sidebarMobileRailItemVariants=classVarianceAuthority.cva(ee(le,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:[...de]}},defaultVariants:{isActive:false}});});function w(){let e=react.useContext(Re);if(!e)throw new Error("Sidebar compound components must be used within <Sidebar>");return e}function R(){let e=react.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:i,mobileBreakpoint:n=768,className:c,"data-testid":s="sidebar"}){let[u,p]=react.useState(a),l=t!==void 0,m=l?t:u,S=react.useCallback(h=>{l||p(h),r?.(h);},[l,r]),P=react.useCallback(()=>S(!m),[S,m]),V=o??false,M=react.useCallback(h=>i?.(h),[i]),[f,v]=react.useState(null),x=react.useRef(null),D=react.useCallback(()=>{x.current&&(clearTimeout(x.current),x.current=null);},[]),A=react.useCallback((h=300)=>{x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{x.current=null,v(null);},h);},[]);react.useEffect(()=>()=>{x.current&&clearTimeout(x.current);},[]);let L=De(`(max-width: ${n-1}px)`),B=react.useId(),k=`sidebar-rail-${B}`,G=`sidebar-panel-${B}`,z=react.useMemo(()=>({isMobile:L,railId:k,panelId:G}),[L,k,G]),q=react.useMemo(()=>({isCollapsed:m,setCollapsed:S,toggleCollapsed:P,isMobileOpen:V,setMobileOpen:M,activePopoverId:f,setActivePopoverId:v,cancelPopoverClose:D,schedulePopoverClose:A}),[m,S,P,V,M,f,D,A]);return L?jsxRuntime.jsx(Re.Provider,{value:z,children:jsxRuntime.jsx(Pe.Provider,{value:q,children:e})}):jsxRuntime.jsx(Re.Provider,{value:z,children:jsxRuntime.jsx(Pe.Provider,{value:q,children:jsxRuntime.jsx("div",{className:g(exports.sidebarRootVariants(),c),"data-testid":s,children:e})})})}var Re,Pe,H=O(()=>{"use client";Be();_();T();Re=react.createContext(null),Pe=react.createContext(null);ye.displayName="Sidebar";});var nt={};mt(nt,{SidebarMobileDrawer:()=>Yt});function Xt(e){return e>99?"99+":String(e)}function Zt(e){let t=null;return react.Children.forEach(e.props.children,a=>{react.isValidElement(a)&&a.type.displayName==="SidebarPopover"&&(t=a);}),t}function Qt(e){let t=[],a=null,r="Navigation";return react.Children.forEach(e,o=>{if(!react.isValidElement(o))return;let i=o.type.displayName;i==="SidebarRail"?(r=o.props["aria-label"]??r,react.Children.forEach(o.props.children,n=>{if(!react.isValidElement(n))return;if(n.type.displayName==="SidebarRailItem"){let s=n;t.push({props:s.props,popover:Zt(s)});}})):i==="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:i,panelContent:n,railAriaLabel:c}=Qt(e),u=i.find(l=>l.props.id===r)?.popover??n,p=()=>{o(null),a(false);};return jsxRuntime.jsx(reactAriaComponents.ModalOverlay,{isDismissable:true,isOpen:t,onOpenChange:l=>{l||p();},className:exports.sidebarMobileOverlayVariants(),children:jsxRuntime.jsx(reactAriaComponents.Modal,{className:exports.sidebarMobileDrawerVariants(),children:jsxRuntime.jsxs(reactAriaComponents.Dialog,{"aria-label":"Navigation menu",className:"flex flex-col h-full outline-none",children:[jsxRuntime.jsxs("header",{className:exports.sidebarMobileDrawerHeaderVariants(),children:[jsxRuntime.jsx("span",{className:"text-base font-semibold text-[var(--content-foreground)]",children:"Menu"}),jsxRuntime.jsx(reactAriaComponents.Button,{"aria-label":"Close navigation",className:g(exports.sidebarCollapseButtonVariants()),onPress:p,children:jsxRuntime.jsx(lucideReact.X,{})})]}),i.length>0&&jsxRuntime.jsx("div",{role:"toolbar","aria-orientation":"horizontal","aria-label":c,tabIndex:0,className:exports.sidebarMobileRailVariants(),children:i.map(({props:l,popover:m})=>{let S=m!=null,P=r===l.id;return jsxRuntime.jsxs(reactAriaComponents.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:exports.sidebarMobileRailItemVariants({isActive:(l.isActive??false)||P}),onPress:()=>{if(l.onPress?.(),S){o(P?null:l.id);return}if(l.href){window.location.href=l.href,p();return}},"data-testid":`sidebar-mobile-rail-item-${l.id}`,children:[jsxRuntime.jsxs("span",{className:exports.sidebarRailItemIconVariants(),"aria-hidden":"true",children:[l.icon,l.badgeCount!=null&&l.badgeCount>0&&jsxRuntime.jsx("span",{className:exports.sidebarRailItemBadgeVariants(),"aria-hidden":"true",children:Xt(l.badgeCount)})]}),jsxRuntime.jsx("span",{className:exports.sidebarRailItemLabelVariants({isActive:(l.isActive??false)||P}),children:l.label}),l.badgeCount!=null&&l.badgeCount>0&&jsxRuntime.jsxs("span",{className:"sr-only",children:[l.badgeCount," notifications"]})]},l.id)})}),u&&jsxRuntime.jsx("div",{className:"flex-1 overflow-y-auto bg-[var(--content-background)] text-[var(--content-foreground)]","data-testid":"sidebar-mobile-panel-content",children:u})]})})})}var it=O(()=>{"use client";_();H();T();});H();_();H();_();H();T();var Rt=200,Pt=300;function je(e,t){let{activePopoverId:a,setActivePopoverId:r,cancelPopoverClose:o,schedulePopoverClose:i}=R(),n=react.useRef("IDLE"),c=react.useRef(null),s=react.useCallback(()=>{c.current&&(clearTimeout(c.current),c.current=null);},[]),u=a===e;react.useEffect(()=>{!u&&n.current!=="IDLE"?(s(),n.current="IDLE"):u&&(n.current="OPEN");},[u,s]),react.useEffect(()=>s,[s]);let p=react.useCallback(m=>{t&&m.pointerType==="mouse"&&(s(),o(),n.current!=="OPEN"&&(n.current="HOVERING_TRIGGER",c.current=setTimeout(()=>{n.current="OPEN",r(e);},Rt)));},[e,t,r,s,o]),l=react.useCallback(()=>{if(t){if(s(),n.current==="HOVERING_TRIGGER"){n.current="IDLE",r(null);return}n.current==="OPEN"&&i(Pt);}},[t,r,s,i]);return {onTriggerPointerEnter:p,onTriggerPointerLeave:l}}function Ne({children:e,className:t,"data-testid":a="sidebar-popover"}){return jsxRuntime.jsx("div",{className:g(exports.sidebarPopoverVariants(),t),"data-testid":a,children:e})}Ne.displayName="SidebarPopover";_();H();T();function It(){let{activePopoverId:e,setActivePopoverId:t}=R(),{isMobile:a}=w(),r=react.useRef(null);return react.useEffect(()=>{if(!e)return;let o=i=>{i.key==="Escape"&&(i.preventDefault(),t(null));};return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[e,t]),react.useEffect(()=>{if(!e)return;let o=n=>{let c=r.current,s=n.relatedTarget;if(!s||!c)return;let u=document.querySelector('[data-testid="sidebar-rail"]');!c.contains(s)&&!u?.contains(s)&&t(null);},i=r.current;return i?.addEventListener("focusout",o),()=>i?.removeEventListener("focusout",o)},[e,t]),a||!e?null:jsxRuntime.jsx(Qe,{ref:r})}var Xe=react.createContext(null);function Ve(){let e=react.useContext(Xe);if(!e)throw new Error("usePopoverRegistry must be used within SidebarPanel");return e}function Ze({children:e}){let t=react.useRef(new Map),a=react.useCallback((n,c,s)=>{t.current.set(n,{content:c,label:s});},[]),r=react.useCallback(n=>{t.current.delete(n);},[]),o=react.useCallback(n=>t.current.get(n)??null,[]),i=react.useMemo(()=>({register:a,unregister:r,getContent:o}),[a,r,o]);return jsxRuntime.jsx(Xe.Provider,{value:i,children:e})}var Qe=react.forwardRef((e,t)=>{let{activePopoverId:a,cancelPopoverClose:r,schedulePopoverClose:o}=R(),i=Ve();if(!a)return null;let n=i.getContent(a);return n?jsxRuntime.jsx("div",{ref:t,role:"dialog","aria-label":`${n.label} details`,className:exports.sidebarPopoverVariants(),"data-testid":"sidebar-popover",onPointerEnter:r,onPointerLeave:()=>o(300),children:n.content}):null});Qe.displayName="PopoverContent";var wt=300,Mt={sm:220,md:280,lg:340,xl:420},Te=react.forwardRef(({children:e,width:t="md","aria-label":a,skeleton:r,className:o,"data-testid":i="sidebar-panel"},n)=>{let{isMobile:c}=w(),{isCollapsed:s,activePopoverId:u}=R(),p=react.useRef(null),l=u!==null,[m,S]=react.useState(!s);react.useEffect(()=>{if(s){S(false);return}let f=window.setTimeout(()=>S(true),wt);return ()=>window.clearTimeout(f)},[s]);let V=r!==void 0&&!(!s&&m)?r:e;react.useEffect(()=>{if(!s)return;let f=p.current;if(f&&f.contains(document.activeElement)){let v=document.querySelector('[data-testid="sidebar-collapse-button"]');v&&window.requestAnimationFrame(()=>v.focus());}},[s]);let M=f=>{p.current=f,typeof n=="function"?n(f):n&&(n.current=f);};return c?null:jsxRuntime.jsxs("div",{className:"relative shrink-0 border-r border-[var(--border)]",children:[jsxRuntime.jsx("aside",{ref:M,"aria-label":a,"aria-hidden":s,inert:s||void 0,className:g(exports.sidebarPanelVariants({width:t,isCollapsed:s}),o),"data-testid":i,children:V}),l&&jsxRuntime.jsx("div",{className:g("absolute top-0 left-0 z-10 h-full",s&&"border-r border-[var(--border)]"),style:{width:`${Mt[t]}px`},children:jsxRuntime.jsx(It,{})})]})});Te.displayName="SidebarPanel";function we({title:e,icon:t,children:a,as:r="h2",className:o,"data-testid":i="sidebar-panel-header"}){return jsxRuntime.jsxs("header",{className:g(exports.sidebarPanelHeaderVariants(),o),"data-testid":i,children:[jsxRuntime.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[t?jsxRuntime.jsx("span",{"aria-hidden":"true",className:"inline-flex shrink-0 items-center justify-center text-[var(--icon)]","data-testid":`${i}-icon`,children:t}):null,jsxRuntime.jsx(r,{className:exports.sidebarPanelHeaderTitleVariants(),children:e})]}),a]})}we.displayName="SidebarPanelHeader";T();var tt=react.createContext("default");function at(){return react.useContext(tt)}var Ae=react.forwardRef(({children:e,"aria-label":t,variant:a="default",className:r,"data-testid":o="sidebar-rail"},i)=>{let{isMobile:n}=w();if(n)return null;let c=[],s=[],u=[];return react.Children.forEach(e,p=>{if(react.isValidElement(p)&&p.type.displayName==="SidebarCollapseButton"){c.push(p);return}(react.isValidElement(p)?p.props.placement??"top":"top")==="bottom"?u.push(p):s.push(p);}),jsxRuntime.jsx(tt.Provider,{value:a,children:jsxRuntime.jsxs("nav",{ref:i,"aria-label":t,className:g(exports.sidebarRailVariants({variant:a}),r),"data-testid":o,children:[c,jsxRuntime.jsx(reactAriaComponents.Toolbar,{orientation:"vertical","aria-label":"Navigation items",className:exports.sidebarRailToolbarVariants(),children:s}),u.length>0&&jsxRuntime.jsx(reactAriaComponents.Toolbar,{orientation:"vertical","aria-label":"Secondary navigation items",className:g(exports.sidebarRailToolbarVariants(),"mt-auto"),"data-testid":"sidebar-rail-bottom",children:u})]})})});Ae.displayName="SidebarRail";function Gt(e){let t=null,a=[];return react.Children.forEach(e,r=>{react.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 rt=react.forwardRef(({id:e,label:t,icon:a,href:r,badgeCount:o,isActive:i=false,currentType:n="page",isDisabled:c=false,onPress:s,children:u,className:p,"data-testid":l},m)=>{let{activePopoverId:S,setActivePopoverId:P}=R(),V=at(),M=react.useRef(null),{popover:f}=Gt(u),v=f!==null,x=S===e,D=je(e,v),A=Ve();react.useEffect(()=>{if(v&&f)return A.register(e,f,t),()=>A.unregister(e)},[e,v,f,t,A]);let L=react.useCallback(()=>{v&&P(x?null:e),s?.();},[v,x,e,s,P]),B=react.useCallback(h=>{M.current=h,typeof m=="function"?m(h):m&&(m.current=h);},[m]),k=l??`sidebar-rail-item-${e}`,G=p?g(exports.sidebarRailItemVariants({railVariant:V,isActive:i,isDisabled:c}),p):exports.sidebarRailItemVariants({railVariant:V,isActive:i,isDisabled:c}),z=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("span",{className:exports.sidebarRailItemIconVariants(),"aria-hidden":"true",children:[a,o!=null&&o>0&&jsxRuntime.jsx("span",{className:exports.sidebarRailItemBadgeVariants(),"aria-hidden":"true",children:zt(o)})]}),jsxRuntime.jsx("span",{className:exports.sidebarRailItemLabelVariants({isActive:i}),children:t}),o!=null&&o>0&&jsxRuntime.jsxs("span",{className:"sr-only",children:[o," notifications"]})]}),q=r&&!c?jsxRuntime.jsx(reactAriaComponents.Link,{ref:B,href:r,"aria-current":i?n:void 0,"aria-haspopup":v?"dialog":void 0,"aria-expanded":v?x:void 0,className:G,"data-testid":k,onPress:L,children:z}):jsxRuntime.jsx(reactAriaComponents.Button,{ref:B,isDisabled:c,"aria-current":i?n:void 0,"aria-haspopup":v?"dialog":void 0,"aria-expanded":v?x:void 0,className:G,"data-testid":k,onPress:L,children:z});return jsxRuntime.jsx("div",{onPointerEnter:D.onTriggerPointerEnter,onPointerLeave:D.onTriggerPointerLeave,children:q})});rt.displayName="SidebarRailItem";var Le=react.memo(rt,(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);Le.displayName="SidebarRailItem";function Oe({className:e,"data-testid":t="sidebar-collapse-button"}){let{isCollapsed:a,toggleCollapsed:r}=R(),o=at();return jsxRuntime.jsx(reactAriaComponents.Button,{"aria-expanded":!a,"aria-label":a?"Expand sidebar":"Collapse sidebar",className:g(exports.sidebarCollapseButtonVariants({railVariant:o}),e),"data-testid":t,onPress:r,children:a?jsxRuntime.jsx(lucideReact.PanelLeftOpen,{}):jsxRuntime.jsx(lucideReact.PanelLeftClose,{})})}Oe.displayName="SidebarCollapseButton";var Jt=react.lazy(()=>Promise.resolve().then(()=>(it(),nt)).then(e=>({default:e.SidebarMobileDrawer})));function ea({children:e}){let{isMobile:t}=w(),{isMobileOpen:a}=R();return !t||!a?null:jsxRuntime.jsx(react.Suspense,{fallback:null,children:jsxRuntime.jsx(Jt,{children:e})})}function st(e){return jsxRuntime.jsx(ye,{...e,children:jsxRuntime.jsxs(Ze,{children:[e.children,jsxRuntime.jsx(ea,{children:e.children})]})})}st.displayName="Sidebar";var ta=Object.assign(st,{Rail:Ae,RailItem:Le,Popover:Ne,Panel:Te,PanelHeader:we,CollapseButton:Oe});T();var C=zod.z.object({className:zod.z.string().optional(),children:zod.z.any().optional(),id:zod.z.string().optional(),"aria-label":zod.z.string().optional(),"aria-labelledby":zod.z.string().optional(),"aria-describedby":zod.z.string().optional(),"aria-live":zod.z.enum(["off","polite","assertive"]).optional(),"aria-hidden":zod.z.boolean().optional(),"data-testid":zod.z.string().optional()});var lt=zod.z.enum(["default","primary"]),dt=zod.z.enum(["sm","md","lg","xl"]),ct=zod.z.enum(["page","true","location"]),pt=zod.z.enum(["h1","h2","h3","h4"]),ra=zod.z.enum(["top","bottom"]),oa=C.extend({children:zod.z.custom(),isCollapsed:zod.z.boolean().optional(),defaultCollapsed:zod.z.boolean().optional().default(false),onCollapsedChange:zod.z.custom().optional(),isMobileOpen:zod.z.boolean().optional(),onMobileOpenChange:zod.z.custom().optional(),mobileBreakpoint:zod.z.number().optional().default(768)}),na=C.extend({children:zod.z.custom(),"aria-label":zod.z.string(),variant:lt.optional().default("default")}),ia=C.extend({id:zod.z.string(),label:zod.z.string(),icon:zod.z.custom(),href:zod.z.string().optional(),badgeCount:zod.z.number().optional(),isActive:zod.z.boolean().optional(),currentType:ct.optional().default("page"),isDisabled:zod.z.boolean().optional(),onPress:zod.z.custom().optional(),children:zod.z.custom().optional(),placement:ra.optional().default("top")}),sa=C.extend({children:zod.z.custom()}),la=C.extend({children:zod.z.custom(),width:dt.optional().default("md"),"aria-label":zod.z.string(),skeleton:zod.z.custom().optional()}),da=C.extend({title:zod.z.string(),icon:zod.z.custom().optional(),children:zod.z.custom().optional(),as:pt.optional().default("h2")}),ca=C.extend({});exports.Sidebar=ta;exports.SidebarCollapseButtonPropsSchema=ca;exports.SidebarCurrentTypeSchema=ct;exports.SidebarPanelHeaderLevelSchema=pt;exports.SidebarPanelHeaderPropsSchema=da;exports.SidebarPanelPropsSchema=la;exports.SidebarPanelWidthSchema=dt;exports.SidebarPopoverPropsSchema=sa;exports.SidebarPropsSchema=oa;exports.SidebarRailItemPropsSchema=ia;exports.SidebarRailPropsSchema=na;exports.SidebarRailVariantSchema=lt;//# sourceMappingURL=index.js.map
|
|
3
3
|
//# sourceMappingURL=index.js.map
|