@flexkit/studio 0.0.19 → 0.0.21
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/asset-Z32MEZ7V.js +2 -0
- package/dist/{asset-TJGJREGN.js.map → asset-Z32MEZ7V.js.map} +1 -1
- package/dist/boolean-MTD44LXP.js +2 -0
- package/dist/{boolean-3ZHXDPHB.js.map → boolean-MTD44LXP.js.map} +1 -1
- package/dist/{chunk-4PHVU7DD.js → chunk-4KGH7PU7.js} +2 -2
- package/dist/{chunk-4PHVU7DD.js.map → chunk-4KGH7PU7.js.map} +1 -1
- package/dist/chunk-53TUQIKJ.js +2 -0
- package/dist/chunk-53TUQIKJ.js.map +1 -0
- package/dist/chunk-5CKMFBWH.js +2 -0
- package/dist/chunk-5CKMFBWH.js.map +1 -0
- package/dist/{chunk-7TF7ZVID.js → chunk-6UWY5AWG.js} +2 -2
- package/dist/chunk-6UWY5AWG.js.map +1 -0
- package/dist/{chunk-EELTSHST.js → chunk-6YHHL4XI.js} +2 -2
- package/dist/{chunk-EELTSHST.js.map → chunk-6YHHL4XI.js.map} +1 -1
- package/dist/chunk-7NQ6QCJD.js +2 -0
- package/dist/{chunk-6PYMDKS6.js.map → chunk-7NQ6QCJD.js.map} +1 -1
- package/dist/chunk-7WR64NTK.js +2 -0
- package/dist/chunk-7WR64NTK.js.map +1 -0
- package/dist/chunk-CQOWWQ3H.js +2 -0
- package/dist/chunk-CQOWWQ3H.js.map +1 -0
- package/dist/chunk-D4XLXU2H.js +2 -0
- package/dist/{chunk-M6EIBKCQ.js.map → chunk-D4XLXU2H.js.map} +1 -1
- package/dist/chunk-EYGOJ2ZN.js +2 -0
- package/dist/chunk-EYGOJ2ZN.js.map +1 -0
- package/dist/chunk-FPK7J4BP.js +2 -0
- package/dist/chunk-FPK7J4BP.js.map +1 -0
- package/dist/chunk-FRXGAPDR.js +2 -0
- package/dist/chunk-FRXGAPDR.js.map +1 -0
- package/dist/{chunk-665E4UDZ.js → chunk-H6LL44JH.js} +2 -2
- package/dist/chunk-H6LL44JH.js.map +1 -0
- package/dist/chunk-HIHVCQ4Z.js +2 -0
- package/dist/chunk-HIHVCQ4Z.js.map +1 -0
- package/dist/chunk-ND3OZVR5.js +2 -0
- package/dist/chunk-ND3OZVR5.js.map +1 -0
- package/dist/chunk-O2QMYUPS.js +2 -0
- package/dist/{chunk-AXB7FQV2.js.map → chunk-O2QMYUPS.js.map} +1 -1
- package/dist/chunk-OXTER7HO.js +2 -0
- package/dist/chunk-OXTER7HO.js.map +1 -0
- package/dist/{chunk-R4MPNNRN.js → chunk-Q6R7PGTC.js} +2 -2
- package/dist/{chunk-R4MPNNRN.js.map → chunk-Q6R7PGTC.js.map} +1 -1
- package/dist/chunk-R2HNLG6B.js +2 -0
- package/dist/chunk-R2HNLG6B.js.map +1 -0
- package/dist/chunk-SW6NNU5D.js +2 -0
- package/dist/chunk-SW6NNU5D.js.map +1 -0
- package/dist/{chunk-5ES3TTSY.js → chunk-SXZZFHMJ.js} +2 -2
- package/dist/{chunk-5ES3TTSY.js.map → chunk-SXZZFHMJ.js.map} +1 -1
- package/dist/chunk-Z5CZVKD4.js +2 -0
- package/dist/chunk-Z5CZVKD4.js.map +1 -0
- package/dist/datetime-VZJ7XF33.js +2 -0
- package/dist/{datetime-XX4YBITU.js.map → datetime-VZJ7XF33.js.map} +1 -1
- package/dist/editor-NFRMIYVJ.js +2 -0
- package/dist/{editor-F72NJQ25.js.map → editor-NFRMIYVJ.js.map} +1 -1
- package/dist/index.css +5817 -4895
- package/dist/index.d.ts +3 -3
- package/dist/index.js +149 -147
- package/dist/index.js.map +1 -1
- package/dist/{logo-LB22KTDD.js → logo-GCKKZP62.js} +3 -3
- package/dist/logo-GCKKZP62.js.map +1 -0
- package/dist/project-selector-UDFHGEZI.js +2 -0
- package/dist/project-selector-UDFHGEZI.js.map +1 -0
- package/dist/search-SCKUTN4R.js +2 -0
- package/dist/search-SCKUTN4R.js.map +1 -0
- package/dist/switch-Z3MY4CZA.js +2 -0
- package/dist/{switch-HXXPL3GZ.js.map → switch-Z3MY4CZA.js.map} +1 -1
- package/dist/tanstack-start.js +2 -2
- package/dist/text-FIBUDNGR.js +2 -0
- package/dist/{text-LNFBPXBT.js.map → text-FIBUDNGR.js.map} +1 -1
- package/dist/text-RZOXKHWE.js +2 -0
- package/dist/{text-XQO4VSS3.js.map → text-RZOXKHWE.js.map} +1 -1
- package/dist/textarea-I2MFID7I.js +2 -0
- package/dist/{textarea-JDQEV6HE.js.map → textarea-I2MFID7I.js.map} +1 -1
- package/dist/{types.d-DLhjvcTC.d.ts → types.d-B-SE1ihC.d.ts} +1 -1
- package/dist/ui.d.ts +158 -244
- package/dist/ui.js +1 -1
- package/dist/ui.js.map +1 -1
- package/dist/user-nav-MRPKTEIJ.js +2 -0
- package/dist/user-nav-MRPKTEIJ.js.map +1 -0
- package/package.json +16 -33
- package/dist/asset-TJGJREGN.js +0 -2
- package/dist/boolean-3ZHXDPHB.js +0 -2
- package/dist/chunk-2RBOTHKE.js +0 -2
- package/dist/chunk-2RBOTHKE.js.map +0 -1
- package/dist/chunk-64KAF6GA.js +0 -2
- package/dist/chunk-64KAF6GA.js.map +0 -1
- package/dist/chunk-665E4UDZ.js.map +0 -1
- package/dist/chunk-6PYMDKS6.js +0 -2
- package/dist/chunk-6TSWBOSZ.js +0 -2
- package/dist/chunk-6TSWBOSZ.js.map +0 -1
- package/dist/chunk-7TF7ZVID.js.map +0 -1
- package/dist/chunk-AXB7FQV2.js +0 -2
- package/dist/chunk-AYKEFG4H.js +0 -2
- package/dist/chunk-AYKEFG4H.js.map +0 -1
- package/dist/chunk-K5CEPNVI.js +0 -2
- package/dist/chunk-K5CEPNVI.js.map +0 -1
- package/dist/chunk-L4ER5RUF.js +0 -2
- package/dist/chunk-L4ER5RUF.js.map +0 -1
- package/dist/chunk-M6EIBKCQ.js +0 -2
- package/dist/chunk-OX6FVDUT.js +0 -2
- package/dist/chunk-OX6FVDUT.js.map +0 -1
- package/dist/chunk-PHGUSZ22.js +0 -2
- package/dist/chunk-PHGUSZ22.js.map +0 -1
- package/dist/chunk-RMSYYUQM.js +0 -2
- package/dist/chunk-RMSYYUQM.js.map +0 -1
- package/dist/chunk-SPWSXOXS.js +0 -2
- package/dist/chunk-SPWSXOXS.js.map +0 -1
- package/dist/chunk-TEKVBWRU.js +0 -2
- package/dist/chunk-TEKVBWRU.js.map +0 -1
- package/dist/chunk-ZOBZU47M.js +0 -2
- package/dist/chunk-ZOBZU47M.js.map +0 -1
- package/dist/datetime-XX4YBITU.js +0 -2
- package/dist/editor-F72NJQ25.js +0 -2
- package/dist/logo-LB22KTDD.js.map +0 -1
- package/dist/project-selector-FWU4PAAK.js +0 -2
- package/dist/project-selector-FWU4PAAK.js.map +0 -1
- package/dist/search-IM4OTYLW.js +0 -2
- package/dist/search-IM4OTYLW.js.map +0 -1
- package/dist/switch-HXXPL3GZ.js +0 -2
- package/dist/text-LNFBPXBT.js +0 -2
- package/dist/text-XQO4VSS3.js +0 -2
- package/dist/textarea-JDQEV6HE.js +0 -2
- package/dist/user-nav-UHNUTEUZ.js +0 -2
- package/dist/user-nav-UHNUTEUZ.js.map +0 -1
package/dist/ui.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import'./index.css';import {e}from'./chunk-6TSWBOSZ.js';export{e as Separator,f as Table,h as TableBody,m as TableCaption,l as TableCell,i as TableFooter,k as TableHead,g as TableHeader,j as TableRow,b as Toggle,c as ToggleGroup,d as ToggleGroupItem,a as toggleVariants}from'./chunk-6TSWBOSZ.js';import {a as a$2}from'./chunk-OX6FVDUT.js';export{a as Input}from'./chunk-OX6FVDUT.js';import {a as a$1,b as b$1,c,e as e$1}from'./chunk-RMSYYUQM.js';export{b as Tooltip,e as TooltipContent,d as TooltipPortal,a as TooltipProvider,c as TooltipTrigger}from'./chunk-RMSYYUQM.js';export{a as Select,g as SelectContent,b as SelectGroup,i as SelectItem,h as SelectLabel,f as SelectScrollDownButton,e as SelectScrollUpButton,j as SelectSeparator,d as SelectTrigger,c as SelectValue}from'./chunk-2RBOTHKE.js';export{b as Badge,m as Command,n as CommandDialog,q as CommandEmpty,r as CommandGroup,o as CommandInput,t as CommandItem,p as CommandList,s as CommandSeparator,u as CommandShortcut,c as Dialog,f as DialogClose,h as DialogContent,l as DialogDescription,j as DialogFooter,i as DialogHeader,g as DialogOverlay,e as DialogPortal,k as DialogTitle,d as DialogTrigger,v as ScrollArea,w as ScrollBar,a as badgeVariants}from'./chunk-ZOBZU47M.js';export{a as Avatar,c as AvatarFallback,b as AvatarImage}from'./chunk-K5CEPNVI.js';import {b,r as r$1}from'./chunk-64KAF6GA.js';export{b as Button,c as DropdownMenu,m as DropdownMenuCheckboxItem,k as DropdownMenuContent,e as DropdownMenuGroup,l as DropdownMenuItem,o as DropdownMenuLabel,f as DropdownMenuPortal,h as DropdownMenuRadioGroup,n as DropdownMenuRadioItem,p as DropdownMenuSeparator,q as DropdownMenuShortcut,g as DropdownMenuSub,j as DropdownMenuSubContent,i as DropdownMenuSubTrigger,d as DropdownMenuTrigger,r as Skeleton,a as buttonVariants}from'./chunk-64KAF6GA.js';export{b as Form,g as FormControl,h as FormDescription,c as FormField,e as FormItem,f as FormLabel,i as FormMessage,a as Label,d as useFormField}from'./chunk-SPWSXOXS.js';import {a}from'./chunk-AXB7FQV2.js';import*as G from'lucide-react';import {X,Menu,PanelLeft,GripVertical}from'lucide-react';import*as S from'react-resizable-panels';import {jsx,jsxs}from'react/jsx-runtime';import*as r from'react';import {createElement}from'react';import*as l from'@radix-ui/react-dialog';import {cva}from'class-variance-authority';import ha from'fuse.js';import {NavLink}from'react-router-dom';import {Slot}from'@radix-ui/react-slot';import {groupBy}from'ramda';import*as k from'@radix-ui/react-tabs';function Wt({className:t,...e}){return jsx(S.PanelGroup,{className:a("fk-flex fk-h-full fk-w-full data-[panel-group-direction=vertical]:fk-flex-col",t),...e})}var $t=S.Panel;function jt({withHandle:t,className:e,...a$1}){return jsx(S.PanelResizeHandle,{className:a("fk-relative fk-flex fk-w-px fk-items-center fk-justify-center fk-bg-border after:fk-absolute after:fk-inset-y-0 after:fk-left-1/2 after:fk-w-1 after:fk--translate-x-1/2 focus-visible:fk-outline-none focus-visible:fk-ring-1 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-1 data-[panel-group-direction=vertical]:fk-h-px data-[panel-group-direction=vertical]:fk-w-full data-[panel-group-direction=vertical]:after:fk-left-0 data-[panel-group-direction=vertical]:after:fk-h-1 data-[panel-group-direction=vertical]:after:fk-w-full data-[panel-group-direction=vertical]:after:fk--translate-y-1/2 data-[panel-group-direction=vertical]:after:fk-translate-x-0 [&[data-panel-group-direction=vertical]>div]:fk-rotate-90",e),...a$1,children:!!t&&jsx("div",{className:"fk-z-10 fk-flex fk-h-4 fk-w-3 fk-items-center fk-justify-center fk-rounded-sm fk-border fk-bg-border",children:jsx(GripVertical,{className:"fk-h-2.5 fk-w-2.5"})})})}var U=l.Root,Jt=l.Trigger,Ut=l.Close,re=l.Portal,q=r.forwardRef(({className:t,...e},a$1)=>jsx(l.Overlay,{className:a("fk-fixed fk-inset-0 fk-z-50 fk-bg-overlay/75 fk-backdrop-blur-[1px] data-[state=open]:fk-animate-in data-[state=closed]:fk-animate-out data-[state=closed]:fk-fade-out-0 data-[state=open]:fk-fade-in-0",t),...e,ref:a$1}));q.displayName=l.Overlay.displayName;var qt=cva("fk-fixed fk-z-50 fk-gap-4 fk-bg-background fk-p-6 fk-shadow-lg fk-transition fk-ease-in-out data-[state=open]:fk-animate-in data-[state=closed]:fk-animate-out data-[state=closed]:fk-duration-300 data-[state=open]:fk-duration-500",{variants:{side:{top:"fk-inset-x-0 fk-top-0 fk-border-b data-[state=closed]:fk-slide-out-to-top data-[state=open]:fk-slide-in-from-top",bottom:"fk-inset-x-0 fk-bottom-0 fk-border-t data-[state=closed]:fk-slide-out-to-bottom data-[state=open]:fk-slide-in-from-bottom",left:"fk-inset-y-0 fk-left-0 fk-h-full fk-w-3/4 fk-border-r fk-border-r-sidebar-border data-[state=closed]:fk-slide-out-to-left data-[state=open]:fk-slide-in-from-left sm:fk-max-w-sm",right:"fk-inset-y-0 fk-right-0 fk-h-full fk-w-3/4 fk- fk-border-l data-[state=closed]:fk-slide-out-to-right data-[state=open]:fk-slide-in-from-right sm:fk-max-w-sm"}},defaultVariants:{side:"right"}}),D=r.forwardRef(({side:t="right",className:e,children:a$1,...f},s)=>jsxs(re,{children:[jsx(q,{}),jsxs(l.Content,{className:a(qt({side:t}),e),ref:s,...f,children:[a$1,jsxs(l.Close,{className:"fk-absolute fk-right-4 fk-top-4 fk-rounded-sm fk-opacity-70 fk-ring-offset-background fk-transition-opacity hover:fk-opacity-100 focus:fk-outline-none focus:fk-ring-2 focus:fk-ring-ring focus:fk-ring-offset-2 disabled:fk-pointer-events-none data-[state=open]:fk-bg-secondary",children:[jsx(X,{className:"fk-h-4 fk-w-4"}),jsx("span",{className:"fk-sr-only",children:"Close"})]})]})]}));D.displayName=l.Content.displayName;function ie({className:t,...e}){return jsx("div",{className:a("fk-flex fk-flex-col fk-space-y-2 fk-text-center sm:fk-text-left",t),...e})}ie.displayName="SheetHeader";function ne({className:t,...e}){return jsx("div",{className:a("fk-flex fk-flex-col-reverse sm:fk-flex-row sm:fk-justify-end sm:fk-space-x-2",t),...e})}ne.displayName="SheetFooter";var fe=r.forwardRef(({className:t,...e},a$1)=>jsx(l.Title,{className:a("fk-text-lg fk-font-semibold fk-text-foreground",t),ref:a$1,...e}));fe.displayName=l.Title.displayName;var se=r.forwardRef(({className:t,...e},a$1)=>jsx(l.Description,{className:a("fk-text-sm fk-text-muted-foreground",t),ref:a$1,...e}));se.displayName=l.Description.displayName;var Y=768;function le(){let[t,e]=r.useState(void 0);return r.useEffect(()=>{let a=window.matchMedia(`(max-width: ${Y-1}px)`),f=()=>{e(window.innerWidth<Y);};return a.addEventListener("change",f),e(window.innerWidth<Y),()=>a.removeEventListener("change",f)},[]),!!t}var ea="flexkit:sidebar:state",ta=3600*24*7,aa="16rem",oa="18rem",ra="2rem",ia="b",de=r.createContext(null);function y(){let t=r.useContext(de);if(!t)throw new Error("useSidebar must be used within a SidebarProvider.");return t}var ce=r.forwardRef(({defaultOpen:t=true,open:e,onOpenChange:a$2,className:f,style:s,children:c,...n},d)=>{let u=le(),[h,b]=r.useState(false),[C,Se]=r.useState(t),R=e??C,T=r.useCallback(m=>{let g=typeof m=="function"?m(R):m;a$2?a$2(g):Se(g),document.cookie=`${ea}=${g}; path=/; max-age=${ta}`;},[a$2,R]),M=r.useCallback(()=>u?b(m=>!m):T(m=>!m),[u,T,b]);r.useEffect(()=>{let m=g=>{g.key===ia&&(g.metaKey||g.ctrlKey)&&(g.preventDefault(),M());};return window.addEventListener("keydown",m),()=>window.removeEventListener("keydown",m)},[M]);let oe=R?"expanded":"collapsed",Re=r.useMemo(()=>({state:oe,open:R,setOpen:T,isMobile:u,openMobile:h,setOpenMobile:b,toggleSidebar:M}),[oe,R,T,u,h,b,M]);return jsx(de.Provider,{value:Re,children:jsx(a$1,{delayDuration:0,children:jsx("div",{style:{"--sidebar-width":aa,"--sidebar-width-icon":ra,...s},className:a("fk-group/sidebar-wrapper fk-flex fk-w-full has-[[data-variant=inset]]:fk-bg-sidebar fk-overflow-hidden",f),ref:d,...n,children:c})})})});ce.displayName="SidebarProvider";var Z=r.forwardRef(({side:t="left",variant:e="sidebar",collapsible:a$1="offcanvas",className:f,children:s,...c},n)=>{let{isMobile:d,state:u,openMobile:h,setOpenMobile:b}=y();return a$1==="none"?jsx("div",{className:a("fk-flex fk-h-full fk-w-[--sidebar-width] fk-flex-col fk-bg-sidebar fk-text-sidebar-foreground",f),ref:n,...c,children:s}):d?jsx(U,{open:h,onOpenChange:b,...c,children:jsx(D,{"data-sidebar":"sidebar","data-mobile":"true",className:"fk-w-[--sidebar-width] fk-bg-sidebar fk-p-0 fk-text-sidebar-foreground [&>button]:fk-hidden",style:{"--sidebar-width":oa},side:t,children:jsx("div",{className:"fk-flex fk-h-full fk-w-full fk-flex-col",children:s})})}):jsxs("div",{ref:n,className:"fk-relative fk-group fk-peer fk-hidden md:fk-block fk-text-sidebar-foreground","data-state":u,"data-collapsible":u==="collapsed"?a$1:"","data-variant":e,"data-side":t,children:[jsx("div",{className:a("fk-duration-200 fk-relative fk-h-svh fk-w-[--sidebar-width] fk-bg-transparent fk-transition-[width] fk-ease-linear","group-data-[collapsible=offcanvas]:fk-w-0","group-data-[side=right]:fk-rotate-180",e==="floating"||e==="inset"?"group-data-[collapsible=icon]:fk-w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]":"group-data-[collapsible=icon]:fk-w-[--sidebar-width-icon]")}),jsx("div",{className:a("fk-duration-200 fk-absolute fk-inset-y-0 fk-z-10 fk-hidden fk-h-[calc(100svh-3.5rem)] fk-w-[--sidebar-width] fk-transition-[left,right,width] fk-ease-linear md:fk-flex",t==="left"?"fk-left-0 group-data-[collapsible=offcanvas]:fk-left-[calc(var(--sidebar-width)*-1)]":"fk-right-0 group-data-[collapsible=offcanvas]:fk-right-[calc(var(--sidebar-width)*-1)]",e==="floating"||e==="inset"?"group-data-[collapsible=icon]:fk-w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)] group-data-[side=left]:fk-border-r group-data-[side=right]:fk-border-l":"group-data-[collapsible=icon]:fk-w-[--sidebar-width-icon] group-data-[side=left]:fk-border-r group-data-[side=right]:fk-border-l",f),...c,children:jsx("div",{"data-sidebar":"sidebar",className:"fk-flex fk-h-full fk-w-full fk-flex-col fk-bg-sidebar group-data-[variant=floating]:fk-rounded-lg group-data-[variant=floating]:fk-border group-data-[variant=floating]:fk-border-sidebar-border group-data-[variant=floating]:fk-shadow",children:s})})]})});Z.displayName="Sidebar";var pe=r.forwardRef(({className:t,onClick:e,...a$1},f)=>{let{isMobile:s,toggleSidebar:c}=y();return jsxs(b,{ref:f,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:a("fk-h-7 fk-w-7",t),onClick:n=>{e?.(n),c();},...a$1,children:[s?jsx(Menu,{}):jsx(PanelLeft,{}),jsx("span",{className:"fk-sr-only",children:"Toggle Sidebar"})]})});pe.displayName="SidebarTrigger";var Q=r.forwardRef(({className:t,...e},a$1)=>{let{toggleSidebar:f}=y();return jsx("button",{ref:a$1,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:f,title:"Toggle Sidebar",className:a("fk-absolute fk-inset-y-0 fk-z-20 fk-hidden fk-w-4 fk--translate-x-1/2 fk-transition-all fk-ease-linear after:fk-absolute after:fk-inset-y-0 after:fk-left-1/2 after:fk-w-[2px] after:fk-bg-sidebar-border hover:after:fk-bg-muted-foreground group-data-[side=left]:fk--right-4 group-data-[side=right]:fk-left-0 sm:fk-flex","[[data-side=left]_&]:fk-cursor-w-resize [[data-side=right]_&]:fk-cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:fk-cursor-e-resize [[data-side=right][data-state=collapsed]_&]:fk-cursor-w-resize","group-data-[collapsible=offcanvas]:fk-translate-x-0 group-data-[collapsible=offcanvas]:after:fk-left-full group-data-[collapsible=offcanvas]:hover:fk-bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:fk--right-2","[[data-side=right][data-collapsible=offcanvas]_&]:fk--left-2",t),...e})});Q.displayName="SidebarRail";var ke=r.forwardRef(({className:t,...e},a$1)=>jsx("main",{ref:a$1,className:a("fk-relative fk-flex fk-flex-1 fk-flex-col fk-bg-background fk-overflow-hidden","peer-data-[variant=inset]:fk-h-[calc(100svh-4rem)]",t),...e}));ke.displayName="SidebarInset";var na=r.forwardRef(({className:t,...e},a$1)=>jsx(a$2,{ref:a$1,"data-sidebar":"input",className:a("fk-h-8 fk-w-full fk-bg-background fk-shadow-none focus-visible:fk-ring-2 focus-visible:fk-ring-sidebar-ring",t),...e}));na.displayName="SidebarInput";var fa=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"header",className:a("fk-flex fk-flex-col fk-gap-2 fk-p-2",t),...e}));fa.displayName="SidebarHeader";var sa=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"footer",className:a("fk-flex fk-flex-col fk-gap-2 fk-p-2",t),...e}));sa.displayName="SidebarFooter";var la=r.forwardRef(({className:t,...e$1},a$1)=>jsx(e,{ref:a$1,"data-sidebar":"separator",className:a("fk-mx-2 fk-w-auto fk-bg-sidebar-border",t),...e$1}));la.displayName="SidebarSeparator";var ee=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"content",className:a("fk-flex fk-min-h-0 fk-flex-1 fk-flex-col fk-overflow-auto group-data-[collapsible=icon]:fk-overflow-hidden",t),...e}));ee.displayName="SidebarContent";var L=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"group",className:a("fk-relative fk-flex fk-w-full fk-min-w-0 fk-flex-col fk-p-2",t),...e}));L.displayName="SidebarGroup";var te=r.forwardRef(({className:t,asChild:e=false,...a$1},f)=>jsx(e?Slot:"div",{ref:f,"data-sidebar":"group-label",className:a("fk-duration-200 fk-flex fk-h-8 fk-shrink-0 fk-items-center fk-rounded-md fk-px-2 fk-text-xs fk-font-medium fk-text-sidebar-foreground/70 fk-outline-none fk-ring-sidebar-ring fk-transition-[margin,opa] fk-ease-linear focus-visible:fk-ring-2 [&>svg]:fk-size-4 [&>svg]:fk-shrink-0","group-data-[collapsible=icon]:fk--mt-8 group-data-[collapsible=icon]:fk-opacity-0",t),...a$1}));te.displayName="SidebarGroupLabel";var da=r.forwardRef(({className:t,asChild:e=false,...a$1},f)=>jsx(e?Slot:"button",{ref:f,"data-sidebar":"group-action",className:a("fk-absolute fk-right-3 fk-top-3.5 fk-flex fk-aspect-square fk-w-5 fk-items-center fk-justify-center fk-rounded-md fk-p-0 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring fk-transition-transform hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 [&>svg]:fk-size-4 [&>svg]:fk-shrink-0","after:fk-absolute after:fk--inset-2 after:md:fk-hidden","group-data-[collapsible=icon]:fk-hidden",t),...a$1}));da.displayName="SidebarGroupAction";var ca=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"group-content",className:a("fk-w-full fk-text-sm",t),...e}));ca.displayName="SidebarGroupContent";var H=r.forwardRef(({className:t,...e},a$1)=>jsx("ul",{ref:a$1,"data-sidebar":"menu",className:a("fk-flex fk-w-full fk-min-w-0 fk-flex-col fk-gap-1 fk-z-10",t),...e}));H.displayName="SidebarMenu";var z=r.forwardRef(({className:t,...e},a$1)=>jsx("li",{ref:a$1,"data-sidebar":"menu-item",className:a("fk-group/menu-item fk-relative",t),...e}));z.displayName="SidebarMenuItem";var pa=cva("peer/menu-button fk-flex fk-w-full fk-items-center fk-gap-2 fk-overflow-hidden fk-rounded-md fk-p-2 fk-text-left fk-text-sm fk-outline-none fk-ring-sidebar-ring fk-transition-[width,height,padding] hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 active:fk-bg-sidebar-accent active:fk-text-sidebar-accent-foreground disabled:fk-pointer-events-none disabled:fk-opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:fk-pr-8 aria-disabled:fk-pointer-events-none aria-disabled:fk-opacity-50 data-[active=true]:fk-bg-sidebar-accent data-[active=true]:fk-font-medium data-[active=true]:fk-text-sidebar-accent-foreground data-[state=open]:hover:fk-bg-sidebar-accent data-[state=open]:hover:fk-text-sidebar-accent-foreground group-data-[collapsible=icon]:fk-!size-8 group-data-[collapsible=icon]:fk-!p-2 [&>span:last-child]:fk-truncate [&>svg]:fk-size-4 [&>svg]:fk-shrink-0",{variants:{variant:{default:"hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground",outline:"fk-bg-background fk-shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground hover:fk-shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{default:"fk-h-8 fk-text-sm",sm:"fk-h-7 fk-text-xs",lg:"fk-h-12 fk-text-sm group-data-[collapsible=icon]:fk-!p-0"}},defaultVariants:{variant:"default",size:"default"}}),B=r.forwardRef(({asChild:t=false,isActive:e=false,variant:a$1="default",size:f="default",tooltip:s,className:c$1,...n},d)=>{let u=t?Slot:"button",{isMobile:h,state:b}=y(),C=jsx(u,{ref:d,"data-sidebar":"menu-button","data-size":f,"data-active":e,className:a(pa({variant:a$1,size:f}),c$1),...n});return s?(typeof s=="string"&&(s={children:s}),jsxs(b$1,{children:[jsx(c,{asChild:true,children:C}),jsx(e$1,{side:"right",align:"center",hidden:b!=="collapsed"||h,...s})]})):C});B.displayName="SidebarMenuButton";var ka=r.forwardRef(({className:t,asChild:e=false,showOnHover:a$1=false,...f},s)=>jsx(e?Slot:"button",{ref:s,"data-sidebar":"menu-action",className:a("fk-absolute fk-right-1 fk-top-1.5 fk-flex fk-aspect-square fk-w-5 fk-items-center fk-justify-center fk-rounded-md fk-p-0 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring fk-transition-transform hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 peer-hover/menu-button:fk-text-sidebar-accent-foreground [&>svg]:fk-size-4 [&>svg]:fk-shrink-0","after:fk-absolute after:fk--inset-2 after:md:fk-hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:fk-hidden",a$1&&"group-focus-within/menu-item:fk-opacity-100 group-hover/menu-item:fk-opacity-100 data-[state=open]:fk-opacity-100 peer-data-[active=true]/menu-button:fk-text-sidebar-accent-foreground md:fk-opacity-0",t),...f}));ka.displayName="SidebarMenuAction";var ma=r.forwardRef(({className:t,...e},a$1)=>jsx("div",{ref:a$1,"data-sidebar":"menu-badge",className:a("fk-absolute fk-right-1 fk-flex fk-h-5 fk-min-w-5 fk-items-center fk-justify-center fk-rounded-md fk-px-1 fk-text-xs fk-font-medium fk-tabular-nums fk-text-sidebar-foreground fk-select-none fk-pointer-events-none","peer-hover/menu-button:fk-text-sidebar-accent-foreground peer-data-[active=true]/menu-button:fk-text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:fk-hidden",t),...e}));ma.displayName="SidebarMenuBadge";var ua=r.forwardRef(({className:t,showIcon:e=false,...a$1},f)=>{let s=r.useMemo(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return jsxs("div",{ref:f,"data-sidebar":"menu-skeleton",className:a("fk-rounded-md fk-h-8 fk-flex fk-gap-2 fk-px-2 fk-items-center",t),...a$1,children:[e&&jsx(r$1,{className:"fk-size-4 fk-rounded-md","data-sidebar":"menu-skeleton-icon"}),jsx(r$1,{className:"fk-h-4 fk-flex-1 fk-max-w-[--skeleton-width]","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":s}})]})});ua.displayName="SidebarMenuSkeleton";var ba=r.forwardRef(({className:t,...e},a$1)=>jsx("ul",{ref:a$1,"data-sidebar":"menu-sub",className:a("fk-mx-3.5 fk-flex fk-min-w-0 fk-translate-x-px fk-flex-col fk-gap-1 fk-border-l fk-border-sidebar-border fk-px-2.5 fk-py-0.5","group-data-[collapsible=icon]:fk-hidden",t),...e}));ba.displayName="SidebarMenuSub";var ga=r.forwardRef(({...t},e)=>jsx("li",{ref:e,...t}));ga.displayName="SidebarMenuSubItem";var va=r.forwardRef(({asChild:t=false,size:e="md",isActive:a$1,className:f,...s},c)=>jsx(t?Slot:"a",{ref:c,"data-sidebar":"menu-sub-button","data-size":e,"data-active":a$1,className:a("fk-flex fk-h-7 fk-min-w-0 fk--translate-x-px fk-items-center fk-gap-2 fk-overflow-hidden fk-rounded-md fk-px-2 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 active:fk-bg-sidebar-accent active:fk-text-sidebar-accent-foreground disabled:fk-pointer-events-none disabled:fk-opacity-50 aria-disabled:fk-pointer-events-none aria-disabled:fk-opacity-50 [&>span:last-child]:fk-truncate [&>svg]:fk-size-4 [&>svg]:fk-shrink-0 [&>svg]:fk-text-sidebar-accent-foreground","data-[active=true]:fk-bg-sidebar-accent data-[active=true]:fk-text-sidebar-accent-foreground",e==="sm"&&"fk-text-xs",e==="md"&&"fk-text-sm","group-data-[collapsible=icon]:fk-hidden",f),...s}));va.displayName="SidebarMenuSubButton";var Ra=Object.keys(G).map(t=>({name:t,icon:G[t]})),xa=new ha(Ra,{keys:["name"],threshold:.5});function wa({className:t,menuGroups:e,schema:a}){let f=a.filter(n=>!(n.menu&&"hidden"in n.menu)),s=groupBy(n=>n.menu?.group&&e?.find(d=>d.name===n.menu?.group)?.name||"ungrouped",f),c=e?.filter(n=>s[n.name]?.length);return jsxs(Z,{className:t,collapsible:"icon",variant:"inset",children:[jsxs(ee,{children:[c?.map(n=>jsxs(L,{children:[jsx(te,{children:n.title}),jsx(H,{children:s[n.name]?.map(d=>jsx(z,{children:jsx(B,{asChild:true,isActive:location.pathname.includes(`/list/${d.plural}`),tooltip:A(d.menu?.label??d.plural),children:jsxs(NavLink,{to:`list/${d.plural}`,children:[d.menu?.icon??createElement(G[be(d.name)],{className:"fk-h-4 fk-w-4 fk-mr-2",strokeWidth:2}),jsx("span",{children:A(d.menu?.label??d.plural)})]})})},d.plural))})]},n.name)),jsx(L,{children:jsx(H,{children:s.ungrouped?.map(n=>jsx(z,{children:jsx(B,{asChild:true,isActive:location.pathname.includes(`/list/${n.plural}`),tooltip:A(n.menu?.label??n.plural),children:jsxs(NavLink,{to:`list/${n.plural}`,children:[createElement(G[be(n.name)],{className:"fk-h-4 fk-w-4 fk-mr-2",strokeWidth:2}),jsx("span",{children:A(n.menu?.label??n.plural)})]})})},n.plural))})})]}),jsx(Q,{})]})}function A(t){let e=t.replace(/([A-Z])/g," $1");return e.charAt(0).toUpperCase()+e.slice(1).trim()}function be(t){let e=xa.search(t);return e.length>0?e[0].item.name:"Dock"}var ya=k.Root,ge=r.forwardRef(({className:t,...e},a$1)=>jsx(k.List,{className:a("fk-inline-flex fk-h-10 fk-items-center fk-justify-center fk-rounded-md fk-bg-muted fk-p-1 fk-text-muted-foreground",t),ref:a$1,...e}));ge.displayName=k.List.displayName;var ve=r.forwardRef(({className:t,...e},a$1)=>jsx(k.Trigger,{className:a("fk-inline-flex fk-items-center fk-justify-center fk-whitespace-nowrap fk-rounded-sm fk-px-3 fk-py-1.5 fk-text-sm fk-font-medium fk-ring-offset-background fk-transition-all focus-visible:fk-outline-none focus-visible:fk-ring-2 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-2 disabled:fk-pointer-events-none disabled:fk-opacity-50 data-[state=active]:fk-bg-background data-[state=active]:fk-text-foreground data-[state=active]:fk-shadow-sm",t),ref:a$1,...e}));ve.displayName=k.Trigger.displayName;var he=r.forwardRef(({className:t,...e},a$1)=>jsx(k.Content,{className:a("fk-mt-2 fk-ring-offset-background focus-visible:fk-outline-none focus-visible:fk-ring-2 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-2",t),ref:a$1,...e}));he.displayName=k.Content.displayName;export{jt as ResizableHandle,$t as ResizablePanel,Wt as ResizablePanelGroup,U as Sheet,Ut as SheetClose,D as SheetContent,se as SheetDescription,ne as SheetFooter,ie as SheetHeader,q as SheetOverlay,re as SheetPortal,fe as SheetTitle,Jt as SheetTrigger,wa as Sidebar,ke as SidebarInset,ce as SidebarProvider,pe as SidebarTrigger,ya as Tabs,he as TabsContent,ge as TabsList,ve as TabsTrigger,y as useSidebar};//# sourceMappingURL=ui.js.map
|
|
1
|
+
import'./index.css';export{e as Separator,f as Table,h as TableBody,m as TableCaption,l as TableCell,i as TableFooter,k as TableHead,g as TableHeader,j as TableRow,b as Toggle,c as ToggleGroup,d as ToggleGroupItem,a as toggleVariants}from'./chunk-FRXGAPDR.js';export{a as Input}from'./chunk-FPK7J4BP.js';import {a as a$1,b as b$1,c,e}from'./chunk-5CKMFBWH.js';export{b as Tooltip,e as TooltipContent,d as TooltipPortal,a as TooltipProvider,c as TooltipTrigger}from'./chunk-5CKMFBWH.js';export{a as Select,e as SelectContent,b as SelectGroup,g as SelectItem,f as SelectLabel,j as SelectScrollDownButton,i as SelectScrollUpButton,h as SelectSeparator,d as SelectTrigger,c as SelectValue}from'./chunk-7WR64NTK.js';export{b as Badge,m as Command,n as CommandDialog,q as CommandEmpty,r as CommandGroup,o as CommandInput,t as CommandItem,p as CommandList,s as CommandSeparator,u as CommandShortcut,c as Dialog,f as DialogClose,h as DialogContent,l as DialogDescription,j as DialogFooter,i as DialogHeader,g as DialogOverlay,e as DialogPortal,k as DialogTitle,d as DialogTrigger,v as ScrollArea,w as ScrollBar,a as badgeVariants}from'./chunk-ND3OZVR5.js';export{a as Avatar,c as AvatarFallback,b as AvatarImage}from'./chunk-SW6NNU5D.js';export{a as DropdownMenu,g as DropdownMenuCheckboxItem,d as DropdownMenuContent,e as DropdownMenuGroup,f as DropdownMenuItem,j as DropdownMenuLabel,b as DropdownMenuPortal,h as DropdownMenuRadioGroup,i as DropdownMenuRadioItem,k as DropdownMenuSeparator,l as DropdownMenuShortcut,m as DropdownMenuSub,o as DropdownMenuSubContent,n as DropdownMenuSubTrigger,c as DropdownMenuTrigger,p as Skeleton}from'./chunk-HIHVCQ4Z.js';import {b}from'./chunk-EYGOJ2ZN.js';export{b as Button,a as buttonVariants}from'./chunk-EYGOJ2ZN.js';export{b as Form,g as FormControl,h as FormDescription,c as FormField,e as FormItem,f as FormLabel,i as FormMessage,a as Label,d as useFormField}from'./chunk-53TUQIKJ.js';import {a}from'./chunk-O2QMYUPS.js';import*as z from'lucide-react';import {GripVerticalIcon,XIcon,PanelLeftIcon}from'lucide-react';import*as h from'react-resizable-panels';import {jsx,jsxs}from'react/jsx-runtime';import {Dialog,Tabs,Slot}from'radix-ui';import*as d from'react';import {createElement}from'react';import Zt from'fuse.js';import {NavLink}from'react-router-dom';import {cva}from'class-variance-authority';import {groupBy}from'ramda';function Bt({className:e,...t}){return jsx(h.Group,{"data-slot":"resizable-panel-group",className:a("fk:flex fk:h-full fk:w-full fk:aria-[orientation=vertical]:flex-col",e),...t})}function Et({...e}){return jsx(h.Panel,{"data-slot":"resizable-panel",...e})}function Gt({withHandle:e,className:t,...a$1}){return jsx(h.Separator,{"data-slot":"resizable-handle",className:a("fk:relative fk:flex fk:w-px fk:items-center fk:justify-center fk:bg-border fk:after:absolute fk:after:inset-y-0 fk:after:left-1/2 fk:after:w-1 fk:after:-translate-x-1/2 fk:focus-visible:ring-1 fk:focus-visible:ring-ring fk:focus-visible:ring-offset-1 fk:focus-visible:outline-hidden fk:aria-[orientation=horizontal]:h-px fk:aria-[orientation=horizontal]:w-full fk:aria-[orientation=horizontal]:after:left-0 fk:aria-[orientation=horizontal]:after:h-1 fk:aria-[orientation=horizontal]:after:w-full fk:aria-[orientation=horizontal]:after:translate-x-0 fk:aria-[orientation=horizontal]:after:-translate-y-1/2 fk:[&[aria-orientation=horizontal]>div]:rotate-90",t),...a$1,children:e&&jsx("div",{className:"fk:z-10 fk:flex fk:h-8 fk:w-3 fk:items-center fk:justify-center fk:rounded-xs fk:border fk:bg-border",children:jsx(GripVerticalIcon,{className:"fk:size-2.5"})})})}function O({...e}){return jsx(Dialog.Root,{"data-slot":"sheet",...e})}function Lt({...e}){return jsx(Dialog.Trigger,{"data-slot":"sheet-trigger",...e})}function Ot({...e}){return jsx(Dialog.Close,{"data-slot":"sheet-close",...e})}function U({...e}){return jsx(Dialog.Portal,{"data-slot":"sheet-portal",...e})}function J({className:e,...t}){return jsx(Dialog.Overlay,{"data-slot":"sheet-overlay",className:a("fk:fixed fk:inset-0 fk:z-50 fk:bg-black/50 fk:data-[state=closed]:animate-out fk:data-[state=closed]:fade-out-0 fk:data-[state=open]:animate-in fk:data-[state=open]:fade-in-0",e),...t})}function A({className:e,children:t,side:a$1="right",showCloseButton:f=true,...s}){return jsxs(U,{children:[jsx(J,{}),jsxs(Dialog.Content,{"data-slot":"sheet-content",className:a("fk:fixed fk:z-50 fk:flex fk:flex-col fk:gap-4 fk:bg-background fk:shadow-lg fk:transition fk:ease-in-out fk:data-[state=closed]:animate-out fk:data-[state=closed]:duration-300 fk:data-[state=open]:animate-in fk:data-[state=open]:duration-500",a$1==="right"&&"fk:inset-y-0 fk:right-0 fk:h-full fk:w-3/4 fk:border-l fk:data-[state=closed]:slide-out-to-right fk:data-[state=open]:slide-in-from-right fk:sm:max-w-sm",a$1==="left"&&"fk:inset-y-0 fk:left-0 fk:h-full fk:w-3/4 fk:border-r fk:data-[state=closed]:slide-out-to-left fk:data-[state=open]:slide-in-from-left fk:sm:max-w-sm",a$1==="top"&&"fk:inset-x-0 fk:top-0 fk:h-auto fk:border-b fk:data-[state=closed]:slide-out-to-top fk:data-[state=open]:slide-in-from-top",a$1==="bottom"&&"fk:inset-x-0 fk:bottom-0 fk:h-auto fk:border-t fk:data-[state=closed]:slide-out-to-bottom fk:data-[state=open]:slide-in-from-bottom",e),...s,children:[t,f&&jsxs(Dialog.Close,{className:"fk:absolute fk:top-4 fk:right-4 fk:rounded-xs fk:opacity-70 fk:ring-offset-background fk:transition-opacity fk:hover:opacity-100 fk:focus:ring-2 fk:focus:ring-ring fk:focus:ring-offset-2 fk:focus:outline-hidden fk:disabled:pointer-events-none fk:data-[state=open]:bg-secondary",children:[jsx(XIcon,{className:"fk:size-4"}),jsx("span",{className:"fk:sr-only",children:"Close"})]})]})]})}function V({className:e,...t}){return jsx("div",{"data-slot":"sheet-header",className:a("fk:flex fk:flex-col fk:gap-1.5 fk:p-4",e),...t})}function At({className:e,...t}){return jsx("div",{"data-slot":"sheet-footer",className:a("fk:mt-auto fk:flex fk:flex-col fk:gap-2 fk:p-4",e),...t})}function H({className:e,...t}){return jsx(Dialog.Title,{"data-slot":"sheet-title",className:a("fk:font-semibold fk:text-foreground",e),...t})}function F({className:e,...t}){return jsx(Dialog.Description,{"data-slot":"sheet-description",className:a("fk:text-sm fk:text-muted-foreground",e),...t})}var $=768;function Y(){let[e,t]=d.useState(void 0);return d.useEffect(()=>{let a=window.matchMedia(`(max-width: ${$-1}px)`),f=()=>{t(window.innerWidth<$);};return a.addEventListener("change",f),t(window.innerWidth<$),()=>a.removeEventListener("change",f)},[]),!!e}var Ft="flexkit:sidebar:state",$t=3600*24*7,jt="16rem",Kt="18rem",Wt="2rem",Xt="b",Q=d.createContext(null);function C(){let e=d.useContext(Q);if(!e)throw new Error("useSidebar must be used within a SidebarProvider.");return e}function qt({defaultOpen:e=true,open:t,onOpenChange:a$2,className:f,style:s,children:u,...r}){let n=Y(),[g,b]=d.useState(false),[P,se]=d.useState(e),v=t??P,R=d.useCallback(c=>{let m=typeof c=="function"?c(v):c;a$2?a$2(m):se(m),document.cookie=`${Ft}=${m}; path=/; max-age=${$t}`;},[a$2,v]),y=d.useCallback(()=>n?b(c=>!c):R(c=>!c),[n,R,b]);d.useEffect(()=>{let c=m=>{m.key===Xt&&(m.metaKey||m.ctrlKey)&&(m.preventDefault(),y());};return window.addEventListener("keydown",c),()=>window.removeEventListener("keydown",c)},[y]);let q=v?"expanded":"collapsed",fe=d.useMemo(()=>({state:q,open:v,setOpen:R,isMobile:n,openMobile:g,setOpenMobile:b,toggleSidebar:y}),[q,v,R,n,g,b,y]);return jsx(Q.Provider,{value:fe,children:jsx(a$1,{delayDuration:0,children:jsx("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":jt,"--sidebar-width-icon":Wt,...s},className:a("fk:group/sidebar-wrapper fk:flex fk:w-full fk:has-data-[variant=inset]:bg-sidebar fk:overflow-hidden",f),...r,children:u})})})}function ee({side:e="left",variant:t="sidebar",collapsible:a$1="offcanvas",className:f,children:s,...u}){let{isMobile:r,state:n,openMobile:g,setOpenMobile:b}=C();return a$1==="none"?jsx("div",{"data-slot":"sidebar",className:a("fk:flex fk:h-full fk:w-(--sidebar-width) fk:flex-col fk:bg-sidebar fk:text-sidebar-foreground",f),...u,children:s}):r?jsx(O,{open:g,onOpenChange:b,...u,children:jsxs(A,{"data-sidebar":"sidebar","data-slot":"sidebar","data-mobile":"true",className:"fk:w-(--sidebar-width) fk:bg-sidebar fk:p-0 fk:text-sidebar-foreground fk:[&>button]:hidden",style:{"--sidebar-width":Kt},side:e,children:[jsxs(V,{className:"fk:sr-only",children:[jsx(H,{children:"Sidebar"}),jsx(F,{children:"Displays the mobile sidebar."})]}),jsx("div",{className:"fk:flex fk:h-full fk:w-full fk:flex-col",children:s})]})}):jsxs("div",{className:"fk:group fk:peer fk:hidden fk:text-sidebar-foreground fk:md:block","data-state":n,"data-collapsible":n==="collapsed"?a$1:"","data-variant":t,"data-side":e,"data-slot":"sidebar",children:[jsx("div",{"data-slot":"sidebar-gap",className:a("fk:relative fk:w-(--sidebar-width) fk:bg-transparent fk:transition-[width] fk:duration-200 fk:ease-linear","fk:group-data-[collapsible=offcanvas]:w-0","fk:group-data-[side=right]:rotate-180",t==="floating"||t==="inset"?"fk:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"fk:group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),jsx("div",{"data-slot":"sidebar-container",className:a("fk:relative fk:inset-y-0 fk:z-10 fk:hidden fk:h-[calc(100svh-3.5rem)] fk:w-(--sidebar-width) fk:transition-[left,right,width] fk:duration-200 fk:ease-linear fk:md:flex",e==="left"?"fk:left-0 fk:group-data-[collapsible=offcanvas]:-left-(--sidebar-width)":"fk:right-0 k:group-data-[collapsible=offcanvas]:-right-(--sidebar-width)",t==="floating"||t==="inset"?"fk:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)] fk:group-data-[side=left]:border-r":"fk:group-data-[collapsible=icon]:w-(--sidebar-width-icon) fk:group-data-[side=left]:border-r fk:group-data-[side=right]:border-l",f),...u,children:jsx("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"fk:flex fk:h-full fk:w-full fk:flex-col fk:bg-sidebar fk:group-data-[variant=floating]:rounded-lg fk:group-data-[variant=floating]:border fk:group-data-[variant=floating]:border-sidebar-border fk:group-data-[variant=floating]:shadow-sm",children:s})})]})}function Ut({className:e,onClick:t,...a$1}){let{toggleSidebar:f}=C();return jsxs(b,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon",className:a("fk:size-7",e),onClick:s=>{t?.(s),f();},...a$1,children:[jsx(PanelLeftIcon,{}),jsx("span",{className:"fk:sr-only",children:"Toggle Sidebar"})]})}function te({className:e,...t}){let{toggleSidebar:a$1}=C();return jsx("button",{"data-sidebar":"rail","data-slot":"sidebar-rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:a$1,title:"Toggle Sidebar",className:a("fk:absolute fk:inset-y-0 fk:z-20 fk:hidden fk:w-4 fk:-translate-x-1/2 fk:transition-all fk:ease-linear fk:group-data-[side=left]:-right-4 fk:group-data-[side=right]:left-0 fk:after:absolute fk:after:inset-y-0 fk:after:left-1/2 fk:after:w-[2px] fk:hover:after:bg-sidebar-border fk:sm:flex","fk:in-data-[side=left]:cursor-w-resize fk:in-data-[side=right]:cursor-e-resize","fk:[[data-side=left][data-state=collapsed]_&]:cursor-e-resize fk:[[data-side=right][data-state=collapsed]_&]:cursor-w-resize","fk:group-data-[collapsible=offcanvas]:translate-x-0 fk:group-data-[collapsible=offcanvas]:after:left-full fk:hover:group-data-[collapsible=offcanvas]:bg-sidebar","fk:[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","fk:[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",e),...t})}function Jt({className:e,...t}){return jsx("main",{"data-slot":"sidebar-inset",className:a("fk:relative fk:flex fk:flex-1 fk:flex-col fk:bg-background fk:overflow-hidden fk:peer-data-[variant=inset]:h-[calc(100svh-3.625rem)]",e),...t})}function ae({className:e,...t}){return jsx("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:a("fk:flex fk:min-h-0 fk:flex-1 fk:flex-col fk:overflow-auto fk:group-data-[collapsible=icon]:overflow-hidden",e),...t})}function j({className:e,...t}){return jsx("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:a("fk:relative fk:flex fk:w-full fk:min-w-0 fk:flex-col fk:p-2",e),...t})}function oe({className:e,asChild:t=false,...a$1}){let f=t?Slot.Root:"div";return jsx(f,{"data-slot":"sidebar-group-label","data-sidebar":"group-label",className:a("fk:flex fk:h-8 fk:shrink-0 fk:items-center fk:rounded-md fk:px-2 fk:text-xs fk:font-medium fk:text-sidebar-foreground/70 fk:ring-sidebar-ring fk:outline-hidden fk:transition-[margin,opacity] fk:duration-200 fk:ease-linear fk:focus-visible:ring-2 fk:[&>svg]:size-4 fk:[&>svg]:shrink-0","fk:group-data-[collapsible=icon]:-mt-8 fk:group-data-[collapsible=icon]:opacity-0",e),...a$1})}function K({className:e,...t}){return jsx("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:a("fk:flex fk:w-full fk:min-w-0 fk:flex-col fk:gap-1",e),...t})}function W({className:e,...t}){return jsx("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:a("fk:group/menu-item fk:relative",e),...t})}var Yt=cva("fk:peer/menu-button fk:flex fk:w-full fk:items-center fk:gap-2 fk:overflow-hidden fk:rounded-md fk:p-2 fk:text-left fk:text-sm fk:ring-sidebar-ring fk:outline-hidden fk:transition-[width,height,padding] fk:group-has-data-[sidebar=menu-action]/menu-item:pr-8 fk:group-data-[collapsible=icon]:size-8! fk:group-data-[collapsible=icon]:p-2! fk:hover:bg-sidebar-accent fk:hover:text-sidebar-accent-foreground fk:focus-visible:ring-2 fk:active:bg-sidebar-accent fk:active:text-sidebar-accent-foreground fk:disabled:pointer-events-none fk:disabled:opacity-50 fk:aria-disabled:pointer-events-none fk:aria-disabled:opacity-50 fk:data-[active=true]:bg-sidebar-accent fk:data-[active=true]:font-medium fk:data-[active=true]:text-sidebar-accent-foreground fk:data-[state=open]:hover:bg-sidebar-accent fk:data-[state=open]:hover:text-sidebar-accent-foreground fk:[&>span:last-child]:truncate fk:[&>svg]:size-4 fk:[&>svg]:shrink-0",{variants:{variant:{default:"fk:hover:bg-sidebar-accent fk:hover:text-sidebar-accent-foreground",outline:"fk:bg-background fk:shadow-[0_0_0_1px_hsl(var(--sidebar-border))] fk:hover:bg-sidebar-accent fk:hover:text-sidebar-accent-foreground fk:hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{default:"fk:h-8 fk:text-sm",sm:"fk:h-7 fk:text-xs",lg:"fk:h-12 fk:text-sm fk:group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function X({asChild:e$1=false,isActive:t=false,variant:a$1="default",size:f="default",tooltip:s,className:u,...r}){let n=e$1?Slot.Root:"button",{isMobile:g,state:b}=C(),P=jsx(n,{"data-slot":"sidebar-menu-button","data-sidebar":"menu-button","data-size":f,"data-active":t,className:a(Yt({variant:a$1,size:f}),u),...r});return s?(typeof s=="string"&&(s={children:s}),jsxs(b$1,{children:[jsx(c,{asChild:true,children:P}),jsx(e,{side:"right",align:"center",hidden:b!=="collapsed"||g,...s})]})):P}var ie=NavLink,ta=Object.keys(z).map(e=>({name:e,icon:z[e]})),aa=new Zt(ta,{keys:["name"],threshold:.5});function oa({className:e,menuGroups:t,schema:a}){let f=a.filter(r=>!(r.menu&&"hidden"in r.menu)),s=groupBy(r=>r.menu?.group&&t?.find(n=>n.name===r.menu?.group)?.name||"ungrouped",f),u=t?.filter(r=>s[r.name]?.length);return jsxs(ee,{className:e,collapsible:"icon",variant:"inset",children:[jsxs(ae,{children:[u?.map(r=>jsxs(j,{children:[jsx(oe,{children:r.title}),jsx(K,{children:s[r.name]?.map(n=>jsx(W,{children:jsx(X,{asChild:true,isActive:location.pathname.includes(`/list/${n.plural}`),tooltip:M(n.menu?.label??n.plural),children:jsxs(ie,{to:`list/${n.plural}`,children:[n.menu?.icon??createElement(z[ne(n.name)],{className:"fk:h-4 fk:w-4 fk:mr-2",strokeWidth:2}),jsx("span",{children:M(n.menu?.label??n.plural)})]})})},n.plural))})]},r.name)),jsx(j,{children:jsx(K,{children:s.ungrouped?.map(r=>jsx(W,{children:jsx(X,{asChild:true,isActive:location.pathname.includes(`/list/${r.plural}`),tooltip:M(r.menu?.label??r.plural),children:jsxs(ie,{to:`list/${r.plural}`,children:[createElement(z[ne(r.name)],{className:"fk:h-4 fk:w-4 fk:mr-2",strokeWidth:2}),jsx("span",{children:M(r.menu?.label??r.plural)})]})})},r.plural))})})]}),jsx(te,{})]})}function M(e){let t=e.replace(/([A-Z])/g," $1");return t.charAt(0).toUpperCase()+t.slice(1).trim()}function ne(e){let t=aa.search(e);return t.length>0?t[0].item.name:"Dock"}function ia({className:e,orientation:t="horizontal",...a$1}){return jsx(Tabs.Root,{"data-slot":"tabs","data-orientation":t,orientation:t,className:a("fk:group/tabs fk:flex fk:data-[orientation=horizontal]:flex-col",e),...a$1})}var na=cva("fk:group/tabs-list fk:inline-flex fk:w-fit fk:items-center fk:justify-center fk:rounded-lg fk:p-[3px] fk:text-muted-foreground fk:group-data-[orientation=horizontal]/tabs:h-9 fk:group-data-[orientation=vertical]/tabs:h-fit fk:group-data-[orientation=vertical]/tabs:flex-col fk:data-[variant=line]:rounded-none",{variants:{variant:{default:"fk:bg-muted",line:"fk:gap-1 fk:bg-transparent"}},defaultVariants:{variant:"default"}});function sa({className:e,variant:t="default",...a$1}){return jsx(Tabs.List,{"data-slot":"tabs-list","data-variant":t,className:a(na({variant:t}),e),...a$1})}function fa({className:e,...t}){return jsx(Tabs.Trigger,{"data-slot":"tabs-trigger",className:a("fk:relative fk:inline-flex fk:h-[calc(100%-1px)] fk:flex-1 fk:items-center fk:justify-center fk:gap-1.5 fk:rounded-md fk:border fk:border-transparent! fk:px-2 fk:py-1 fk:text-sm fk:font-medium fk:whitespace-nowrap fk:text-foreground/60 fk:transition-all fk:group-data-[orientation=vertical]/tabs:w-full fk:group-data-[orientation=vertical]/tabs:justify-start fk:hover:text-foreground fk:focus-visible:border-ring! fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50 fk:focus-visible:outline-1 fk:focus-visible:outline-ring fk:disabled:pointer-events-none fk:disabled:opacity-50 fk:group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm fk:group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none fk:dark:text-muted-foreground fk:dark:hover:text-foreground fk:[&_svg]:pointer-events-none fk:[&_svg]:shrink-0 fk:[&_svg:not([class*='size-'])]:size-4","fk:group-data-[variant=line]/tabs-list:bg-transparent fk:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent fk:dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent! fk:dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent","fk:data-[state=active]:bg-background fk:data-[state=active]:text-foreground fk:dark:data-[state=active]:border-muted-foreground/75! fk:dark:data-[state=active]:bg-input/30 fk:dark:data-[state=active]:text-foreground","fk:after:absolute fk:after:bg-foreground fk:after:opacity-0 fk:after:transition-opacity fk:group-data-[orientation=horizontal]/tabs:after:inset-x-0 fk:group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] fk:group-data-[orientation=horizontal]/tabs:after:h-0.5 fk:group-data-[orientation=vertical]/tabs:after:inset-y-0 fk:group-data-[orientation=vertical]/tabs:after:-right-1 fk:group-data-[orientation=vertical]/tabs:after:w-0.5 fk:group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100",e),...t})}function da({className:e,...t}){return jsx(Tabs.Content,{"data-slot":"tabs-content",className:a("fk:flex-1 fk:outline-none",e),...t})}export{Gt as ResizableHandle,Et as ResizablePanel,Bt as ResizablePanelGroup,O as Sheet,Ot as SheetClose,A as SheetContent,F as SheetDescription,At as SheetFooter,V as SheetHeader,J as SheetOverlay,U as SheetPortal,H as SheetTitle,Lt as SheetTrigger,oa as Sidebar,Jt as SidebarInset,qt as SidebarProvider,Ut as SidebarTrigger,ia as Tabs,da as TabsContent,sa as TabsList,fa as TabsTrigger,C as useSidebar};//# sourceMappingURL=ui.js.map
|
|
2
2
|
//# sourceMappingURL=ui.js.map
|
package/dist/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/primitives/resizable.tsx","../src/ui/primitives/sheet.tsx","../src/ui/hooks/use-mobile.tsx","../src/ui/primitives/sidebar.tsx","../src/ui/components/sidebar.tsx","../src/ui/primitives/tabs.tsx"],"names":["ResizablePanelGroup","className","props","jsx","cn","ResizablePanel","ResizableHandle","withHandle","GripVertical","Sheet","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","x","ref","sheetVariants","cva","SheetContent","side","children","jsxs","X","SheetHeader","SheetFooter","SheetTitle","SheetDescription","MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","I","mql","onChange","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","style","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","TooltipProvider","Sidebar","variant","collapsible","SidebarTrigger","onClick","Button","MenuIcon","PanelLeftIcon","SidebarRail","SidebarInset","SidebarInput","Input","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","SidebarMenuButton","isActive","size","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton","iconList","Icons","iconName","fuse","Fuse","menuGroups","schema","visibleItems","item","itemsByGroup","groupBy","g","nonEmptyGroups","menuGroup","group","entity","capitalize","NavLink","createElement","getBestMatchingIcon","str","withSpaces","concept","result","Tabs","TabsList","O","TabsTrigger","TabsContent"],"mappings":"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","file":"ui.js","sourcesContent":["import { GripVertical } from 'lucide-react';\nimport * as ResizablePrimitive from 'react-resizable-panels';\nimport { cn } from 'src/ui/lib/utils';\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>): JSX.Element {\n return (\n <ResizablePrimitive.PanelGroup\n className={cn('fk-flex fk-h-full fk-w-full data-[panel-group-direction=vertical]:fk-flex-col', className)}\n {...props}\n />\n );\n}\n\nconst ResizablePanel: typeof ResizablePrimitive.Panel = ResizablePrimitive.Panel;\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean;\n}): JSX.Element {\n return (\n <ResizablePrimitive.PanelResizeHandle\n className={cn(\n 'fk-relative fk-flex fk-w-px fk-items-center fk-justify-center fk-bg-border after:fk-absolute after:fk-inset-y-0 after:fk-left-1/2 after:fk-w-1 after:fk--translate-x-1/2 focus-visible:fk-outline-none focus-visible:fk-ring-1 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-1 data-[panel-group-direction=vertical]:fk-h-px data-[panel-group-direction=vertical]:fk-w-full data-[panel-group-direction=vertical]:after:fk-left-0 data-[panel-group-direction=vertical]:after:fk-h-1 data-[panel-group-direction=vertical]:after:fk-w-full data-[panel-group-direction=vertical]:after:fk--translate-y-1/2 data-[panel-group-direction=vertical]:after:fk-translate-x-0 [&[data-panel-group-direction=vertical]>div]:fk-rotate-90',\n className\n )}\n {...props}\n >\n {Boolean(withHandle) && (\n <div className=\"fk-z-10 fk-flex fk-h-4 fk-w-3 fk-items-center fk-justify-center fk-rounded-sm fk-border fk-bg-border\">\n <GripVertical className=\"fk-h-2.5 fk-w-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n );\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","'use client';\n\nimport * as React from 'react';\nimport * as SheetPrimitive from '@radix-ui/react-dialog';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport { cn } from 'src/ui/lib/utils';\n\nconst Sheet = SheetPrimitive.Root;\n\nconst SheetTrigger = SheetPrimitive.Trigger;\n\nconst SheetClose = SheetPrimitive.Close;\n\nconst SheetPortal = SheetPrimitive.Portal;\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n 'fk-fixed fk-inset-0 fk-z-50 fk-bg-overlay/75 fk-backdrop-blur-[1px] data-[state=open]:fk-animate-in data-[state=closed]:fk-animate-out data-[state=closed]:fk-fade-out-0 data-[state=open]:fk-fade-in-0',\n className\n )}\n {...props}\n ref={ref}\n />\n));\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\n\nconst sheetVariants = cva(\n 'fk-fixed fk-z-50 fk-gap-4 fk-bg-background fk-p-6 fk-shadow-lg fk-transition fk-ease-in-out data-[state=open]:fk-animate-in data-[state=closed]:fk-animate-out data-[state=closed]:fk-duration-300 data-[state=open]:fk-duration-500',\n {\n variants: {\n side: {\n top: 'fk-inset-x-0 fk-top-0 fk-border-b data-[state=closed]:fk-slide-out-to-top data-[state=open]:fk-slide-in-from-top',\n bottom:\n 'fk-inset-x-0 fk-bottom-0 fk-border-t data-[state=closed]:fk-slide-out-to-bottom data-[state=open]:fk-slide-in-from-bottom',\n left: 'fk-inset-y-0 fk-left-0 fk-h-full fk-w-3/4 fk-border-r fk-border-r-sidebar-border data-[state=closed]:fk-slide-out-to-left data-[state=open]:fk-slide-in-from-left sm:fk-max-w-sm',\n right:\n 'fk-inset-y-0 fk-right-0 fk-h-full fk-w-3/4 fk- fk-border-l data-[state=closed]:fk-slide-out-to-right data-[state=open]:fk-slide-in-from-right sm:fk-max-w-sm',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n }\n);\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<React.ElementRef<typeof SheetPrimitive.Content>, SheetContentProps>(\n ({ side = 'right', className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content className={cn(sheetVariants({ side }), className)} ref={ref} {...props}>\n {children}\n <SheetPrimitive.Close className=\"fk-absolute fk-right-4 fk-top-4 fk-rounded-sm fk-opacity-70 fk-ring-offset-background fk-transition-opacity hover:fk-opacity-100 focus:fk-outline-none focus:fk-ring-2 focus:fk-ring-ring focus:fk-ring-offset-2 disabled:fk-pointer-events-none data-[state=open]:fk-bg-secondary\">\n <X className=\"fk-h-4 fk-w-4\" />\n <span className=\"fk-sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n);\nSheetContent.displayName = SheetPrimitive.Content.displayName;\n\nfunction SheetHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): JSX.Element {\n return (\n <div className={cn('fk-flex fk-flex-col fk-space-y-2 fk-text-center sm:fk-text-left', className)} {...props} />\n );\n}\nSheetHeader.displayName = 'SheetHeader';\n\nfunction SheetFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): JSX.Element {\n return (\n <div\n className={cn('fk-flex fk-flex-col-reverse sm:fk-flex-row sm:fk-justify-end sm:fk-space-x-2', className)}\n {...props}\n />\n );\n}\nSheetFooter.displayName = 'SheetFooter';\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n className={cn('fk-text-lg fk-font-semibold fk-text-foreground', className)}\n ref={ref}\n {...props}\n />\n));\nSheetTitle.displayName = SheetPrimitive.Title.displayName;\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description className={cn('fk-text-sm fk-text-muted-foreground', className)} ref={ref} {...props} />\n));\nSheetDescription.displayName = SheetPrimitive.Description.displayName;\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","import * as React from 'react';\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined);\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener('change', onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener('change', onChange);\n }, []);\n\n return !!isMobile;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { VariantProps, cva } from 'class-variance-authority';\nimport { PanelLeft as PanelLeftIcon, Menu as MenuIcon } from 'lucide-react';\nimport { useIsMobile } from '../hooks/use-mobile';\nimport { cn } from '../lib/utils';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Separator } from './separator';\nimport { Sheet, SheetContent } from './sheet';\nimport { Skeleton } from './skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip';\n\nconst SIDEBAR_COOKIE_NAME = 'flexkit:sidebar:state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '2rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ntype SidebarContext = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n\n return context;\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n }\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'fk-group/sidebar-wrapper fk-flex fk-w-full has-[[data-variant=inset]]:fk-bg-sidebar fk-overflow-hidden',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n});\nSidebarProvider.displayName = 'SidebarProvider';\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n }\n>(({ side = 'left', variant = 'sidebar', collapsible = 'offcanvas', className, children, ...props }, ref) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn(\n 'fk-flex fk-h-full fk-w-[--sidebar-width] fk-flex-col fk-bg-sidebar fk-text-sidebar-foreground',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"fk-w-[--sidebar-width] fk-bg-sidebar fk-p-0 fk-text-sidebar-foreground [&>button]:fk-hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <div className=\"fk-flex fk-h-full fk-w-full fk-flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n ref={ref}\n className=\"fk-relative fk-group fk-peer fk-hidden md:fk-block fk-text-sidebar-foreground\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'fk-duration-200 fk-relative fk-h-svh fk-w-[--sidebar-width] fk-bg-transparent fk-transition-[width] fk-ease-linear',\n 'group-data-[collapsible=offcanvas]:fk-w-0',\n 'group-data-[side=right]:fk-rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:fk-w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]'\n : 'group-data-[collapsible=icon]:fk-w-[--sidebar-width-icon]'\n )}\n />\n <div\n className={cn(\n 'fk-duration-200 fk-absolute fk-inset-y-0 fk-z-10 fk-hidden fk-h-[calc(100svh-3.5rem)] fk-w-[--sidebar-width] fk-transition-[left,right,width] fk-ease-linear md:fk-flex',\n side === 'left'\n ? 'fk-left-0 group-data-[collapsible=offcanvas]:fk-left-[calc(var(--sidebar-width)*-1)]'\n : 'fk-right-0 group-data-[collapsible=offcanvas]:fk-right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:fk-w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)] group-data-[side=left]:fk-border-r group-data-[side=right]:fk-border-l'\n : 'group-data-[collapsible=icon]:fk-w-[--sidebar-width-icon] group-data-[side=left]:fk-border-r group-data-[side=right]:fk-border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"fk-flex fk-h-full fk-w-full fk-flex-col fk-bg-sidebar group-data-[variant=floating]:fk-rounded-lg group-data-[variant=floating]:fk-border group-data-[variant=floating]:fk-border-sidebar-border group-data-[variant=floating]:fk-shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n});\nSidebar.displayName = 'Sidebar';\n\nconst SidebarTrigger = React.forwardRef<React.ElementRef<typeof Button>, React.ComponentProps<typeof Button>>(\n ({ className, onClick, ...props }, ref) => {\n const { isMobile, toggleSidebar } = useSidebar();\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('fk-h-7 fk-w-7', className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n {isMobile ? <MenuIcon /> : <PanelLeftIcon />}\n <span className=\"fk-sr-only\">Toggle Sidebar</span>\n </Button>\n );\n }\n);\nSidebarTrigger.displayName = 'SidebarTrigger';\n\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<'button'>>(\n ({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'fk-absolute fk-inset-y-0 fk-z-20 fk-hidden fk-w-4 fk--translate-x-1/2 fk-transition-all fk-ease-linear after:fk-absolute after:fk-inset-y-0 after:fk-left-1/2 after:fk-w-[2px] after:fk-bg-sidebar-border hover:after:fk-bg-muted-foreground group-data-[side=left]:fk--right-4 group-data-[side=right]:fk-left-0 sm:fk-flex',\n '[[data-side=left]_&]:fk-cursor-w-resize [[data-side=right]_&]:fk-cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:fk-cursor-e-resize [[data-side=right][data-state=collapsed]_&]:fk-cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:fk-translate-x-0 group-data-[collapsible=offcanvas]:after:fk-left-full group-data-[collapsible=offcanvas]:hover:fk-bg-sidebar',\n '[[data-side=left][data-collapsible=offcanvas]_&]:fk--right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:fk--left-2',\n className\n )}\n {...props}\n />\n );\n }\n);\nSidebarRail.displayName = 'SidebarRail';\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<'main'>>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n 'fk-relative fk-flex fk-flex-1 fk-flex-col fk-bg-background fk-overflow-hidden',\n 'peer-data-[variant=inset]:fk-h-[calc(100svh-4rem)]',\n className\n )}\n {...props}\n />\n );\n});\nSidebarInset.displayName = 'SidebarInset';\n\nconst SidebarInput = React.forwardRef<React.ElementRef<typeof Input>, React.ComponentProps<typeof Input>>(\n ({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n 'fk-h-8 fk-w-full fk-bg-background fk-shadow-none focus-visible:fk-ring-2 focus-visible:fk-ring-sidebar-ring',\n className\n )}\n {...props}\n />\n );\n }\n);\nSidebarInput.displayName = 'SidebarInput';\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div ref={ref} data-sidebar=\"header\" className={cn('fk-flex fk-flex-col fk-gap-2 fk-p-2', className)} {...props} />\n );\n});\nSidebarHeader.displayName = 'SidebarHeader';\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div ref={ref} data-sidebar=\"footer\" className={cn('fk-flex fk-flex-col fk-gap-2 fk-p-2', className)} {...props} />\n );\n});\nSidebarFooter.displayName = 'SidebarFooter';\n\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Separator>, React.ComponentProps<typeof Separator>>(\n ({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn('fk-mx-2 fk-w-auto fk-bg-sidebar-border', className)}\n {...props}\n />\n );\n }\n);\nSidebarSeparator.displayName = 'SidebarSeparator';\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n 'fk-flex fk-min-h-0 fk-flex-1 fk-flex-col fk-overflow-auto group-data-[collapsible=icon]:fk-overflow-hidden',\n className\n )}\n {...props}\n />\n );\n});\nSidebarContent.displayName = 'SidebarContent';\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn('fk-relative fk-flex fk-w-full fk-min-w-0 fk-flex-col fk-p-2', className)}\n {...props}\n />\n );\n});\nSidebarGroup.displayName = 'SidebarGroup';\n\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'> & { asChild?: boolean }>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n 'fk-duration-200 fk-flex fk-h-8 fk-shrink-0 fk-items-center fk-rounded-md fk-px-2 fk-text-xs fk-font-medium fk-text-sidebar-foreground/70 fk-outline-none fk-ring-sidebar-ring fk-transition-[margin,opa] fk-ease-linear focus-visible:fk-ring-2 [&>svg]:fk-size-4 [&>svg]:fk-shrink-0',\n 'group-data-[collapsible=icon]:fk--mt-8 group-data-[collapsible=icon]:fk-opacity-0',\n className\n )}\n {...props}\n />\n );\n }\n);\nSidebarGroupLabel.displayName = 'SidebarGroupLabel';\n\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<'button'> & { asChild?: boolean }>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n 'fk-absolute fk-right-3 fk-top-3.5 fk-flex fk-aspect-square fk-w-5 fk-items-center fk-justify-center fk-rounded-md fk-p-0 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring fk-transition-transform hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 [&>svg]:fk-size-4 [&>svg]:fk-shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:fk-absolute after:fk--inset-2 after:md:fk-hidden',\n 'group-data-[collapsible=icon]:fk-hidden',\n className\n )}\n {...props}\n />\n );\n }\n);\nSidebarGroupAction.displayName = 'SidebarGroupAction';\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} data-sidebar=\"group-content\" className={cn('fk-w-full fk-text-sm', className)} {...props} />\n )\n);\nSidebarGroupContent.displayName = 'SidebarGroupContent';\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn('fk-flex fk-w-full fk-min-w-0 fk-flex-col fk-gap-1 fk-z-10', className)}\n {...props}\n />\n));\nSidebarMenu.displayName = 'SidebarMenu';\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(({ className, ...props }, ref) => (\n <li ref={ref} data-sidebar=\"menu-item\" className={cn('fk-group/menu-item fk-relative', className)} {...props} />\n));\nSidebarMenuItem.displayName = 'SidebarMenuItem';\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button fk-flex fk-w-full fk-items-center fk-gap-2 fk-overflow-hidden fk-rounded-md fk-p-2 fk-text-left fk-text-sm fk-outline-none fk-ring-sidebar-ring fk-transition-[width,height,padding] hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 active:fk-bg-sidebar-accent active:fk-text-sidebar-accent-foreground disabled:fk-pointer-events-none disabled:fk-opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:fk-pr-8 aria-disabled:fk-pointer-events-none aria-disabled:fk-opacity-50 data-[active=true]:fk-bg-sidebar-accent data-[active=true]:fk-font-medium data-[active=true]:fk-text-sidebar-accent-foreground data-[state=open]:hover:fk-bg-sidebar-accent data-[state=open]:hover:fk-text-sidebar-accent-foreground group-data-[collapsible=icon]:fk-!size-8 group-data-[collapsible=icon]:fk-!p-2 [&>span:last-child]:fk-truncate [&>svg]:fk-size-4 [&>svg]:fk-shrink-0',\n {\n variants: {\n variant: {\n default: 'hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground',\n outline:\n 'fk-bg-background fk-shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground hover:fk-shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'fk-h-8 fk-text-sm',\n sm: 'fk-h-7 fk-text-xs',\n lg: 'fk-h-12 fk-text-sm group-data-[collapsible=icon]:fk-!p-0',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(({ asChild = false, isActive = false, variant = 'default', size = 'default', tooltip, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed' || isMobile} {...tooltip} />\n </Tooltip>\n );\n});\nSidebarMenuButton.displayName = 'SidebarMenuButton';\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n 'fk-absolute fk-right-1 fk-top-1.5 fk-flex fk-aspect-square fk-w-5 fk-items-center fk-justify-center fk-rounded-md fk-p-0 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring fk-transition-transform hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 peer-hover/menu-button:fk-text-sidebar-accent-foreground [&>svg]:fk-size-4 [&>svg]:fk-shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:fk-absolute after:fk--inset-2 after:md:fk-hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:fk-hidden',\n showOnHover &&\n 'group-focus-within/menu-item:fk-opacity-100 group-hover/menu-item:fk-opacity-100 data-[state=open]:fk-opacity-100 peer-data-[active=true]/menu-button:fk-text-sidebar-accent-foreground md:fk-opacity-0',\n className\n )}\n {...props}\n />\n );\n});\nSidebarMenuAction.displayName = 'SidebarMenuAction';\n\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n 'fk-absolute fk-right-1 fk-flex fk-h-5 fk-min-w-5 fk-items-center fk-justify-center fk-rounded-md fk-px-1 fk-text-xs fk-font-medium fk-tabular-nums fk-text-sidebar-foreground fk-select-none fk-pointer-events-none',\n 'peer-hover/menu-button:fk-text-sidebar-accent-foreground peer-data-[active=true]/menu-button:fk-text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:fk-hidden',\n className\n )}\n {...props}\n />\n )\n);\nSidebarMenuBadge.displayName = 'SidebarMenuBadge';\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n showIcon?: boolean;\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn('fk-rounded-md fk-h-8 fk-flex fk-gap-2 fk-px-2 fk-items-center', className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"fk-size-4 fk-rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"fk-h-4 fk-flex-1 fk-max-w-[--skeleton-width]\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n});\nSidebarMenuSkeleton.displayName = 'SidebarMenuSkeleton';\n\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n 'fk-mx-3.5 fk-flex fk-min-w-0 fk-translate-x-px fk-flex-col fk-gap-1 fk-border-l fk-border-sidebar-border fk-px-2.5 fk-py-0.5',\n 'group-data-[collapsible=icon]:fk-hidden',\n className\n )}\n {...props}\n />\n )\n);\nSidebarMenuSub.displayName = 'SidebarMenuSub';\n\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(({ ...props }, ref) => (\n <li ref={ref} {...props} />\n));\nSidebarMenuSubItem.displayName = 'SidebarMenuSubItem';\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n }\n>(({ asChild = false, size = 'md', isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'fk-flex fk-h-7 fk-min-w-0 fk--translate-x-px fk-items-center fk-gap-2 fk-overflow-hidden fk-rounded-md fk-px-2 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 active:fk-bg-sidebar-accent active:fk-text-sidebar-accent-foreground disabled:fk-pointer-events-none disabled:fk-opacity-50 aria-disabled:fk-pointer-events-none aria-disabled:fk-opacity-50 [&>span:last-child]:fk-truncate [&>svg]:fk-size-4 [&>svg]:fk-shrink-0 [&>svg]:fk-text-sidebar-accent-foreground',\n 'data-[active=true]:fk-bg-sidebar-accent data-[active=true]:fk-text-sidebar-accent-foreground',\n size === 'sm' && 'fk-text-xs',\n size === 'md' && 'fk-text-sm',\n 'group-data-[collapsible=icon]:fk-hidden',\n className\n )}\n {...props}\n />\n );\n});\nSidebarMenuSubButton.displayName = 'SidebarMenuSubButton';\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n","import { createElement } from 'react';\nimport * as Icons from 'lucide-react';\nimport Fuse from 'fuse.js';\nimport { NavLink } from 'react-router-dom';\nimport {\n Sidebar as SidebarPrimitive,\n SidebarContent,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarMenu,\n SidebarMenuItem,\n SidebarMenuButton,\n SidebarRail,\n} from '../primitives/sidebar';\nimport type { SingleProject } from '../../core/config/types';\nimport { groupBy } from 'ramda';\n\ninterface SidebarProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n menuGroups?: SingleProject['menuGroups'];\n schema: SingleProject['schema'];\n}\n\ntype VisibleMenuSchema = Array<\n Omit<SingleProject['schema'][number], 'menu'> & {\n menu?: Exclude<SingleProject['schema'][number]['menu'], { hidden: true }>;\n }\n>;\n\nconst iconList = Object.keys(Icons).map((iconName) => ({\n name: iconName,\n icon: Icons[iconName as keyof typeof Icons],\n}));\n\nconst fuse = new Fuse(iconList, {\n keys: ['name'],\n threshold: 0.5,\n});\n\nexport function Sidebar({ className, menuGroups, schema }: SidebarProps): JSX.Element {\n // Filter out hidden items first, then group them\n const visibleItems = schema.filter((item) => !(item.menu && 'hidden' in item.menu)) as VisibleMenuSchema;\n const itemsByGroup = groupBy(\n (item) => (item.menu?.group && menuGroups?.find((g) => g.name === item.menu?.group)?.name) || 'ungrouped',\n visibleItems\n );\n const nonEmptyGroups = menuGroups?.filter((menuGroup) => itemsByGroup[menuGroup.name]?.length);\n\n return (\n <SidebarPrimitive className={className} collapsible=\"icon\" variant=\"inset\">\n <SidebarContent>\n {nonEmptyGroups?.map((group) => (\n <SidebarGroup key={group.name}>\n <SidebarGroupLabel>{group.title}</SidebarGroupLabel>\n <SidebarMenu>\n {itemsByGroup[group.name]?.map((entity) => (\n <SidebarMenuItem key={entity.plural}>\n <SidebarMenuButton\n asChild\n isActive={location.pathname.includes(`/list/${entity.plural}`)}\n tooltip={capitalize(entity.menu?.label ?? entity.plural)}\n >\n <NavLink to={`list/${entity.plural}`}>\n {entity.menu?.icon ??\n createElement(Icons[getBestMatchingIcon(entity.name)] as React.ComponentType<any>, {\n className: 'fk-h-4 fk-w-4 fk-mr-2',\n strokeWidth: 2,\n })}\n <span>{capitalize(entity.menu?.label ?? entity.plural)}</span>\n </NavLink>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroup>\n ))}\n <SidebarGroup>\n <SidebarMenu>\n {itemsByGroup['ungrouped']?.map((entity) => (\n <SidebarMenuItem key={entity.plural}>\n <SidebarMenuButton\n asChild\n isActive={location.pathname.includes(`/list/${entity.plural}`)}\n tooltip={capitalize(entity.menu?.label ?? entity.plural)}\n >\n <NavLink to={`list/${entity.plural}`}>\n {createElement(Icons[getBestMatchingIcon(entity.name)] as React.ComponentType<any>, {\n className: 'fk-h-4 fk-w-4 fk-mr-2',\n strokeWidth: 2,\n })}\n <span>{capitalize(entity.menu?.label ?? entity.plural)}</span>\n </NavLink>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroup>\n </SidebarContent>\n <SidebarRail />\n </SidebarPrimitive>\n );\n}\n\nfunction capitalize(str: string): string {\n // Add space before capital letters and capitalize first letter\n const withSpaces = str.replace(/([A-Z])/g, ' $1');\n // Capitalize first letter and trim any leading space\n return withSpaces.charAt(0).toUpperCase() + withSpaces.slice(1).trim();\n}\n\n/**\n * Tries to get the best matching icon for an entity name using fuzy search\n */\nfunction getBestMatchingIcon(concept: string): keyof typeof Icons {\n const result = fuse.search(concept);\n\n if (result.length > 0) {\n return result[0].item.name as keyof typeof Icons;\n }\n\n return 'Dock' as keyof typeof Icons;\n}\n","'use client';\n\nimport * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { cn } from 'src/ui/lib/utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n className={cn(\n 'fk-inline-flex fk-h-10 fk-items-center fk-justify-center fk-rounded-md fk-bg-muted fk-p-1 fk-text-muted-foreground',\n className\n )}\n ref={ref}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n className={cn(\n 'fk-inline-flex fk-items-center fk-justify-center fk-whitespace-nowrap fk-rounded-sm fk-px-3 fk-py-1.5 fk-text-sm fk-font-medium fk-ring-offset-background fk-transition-all focus-visible:fk-outline-none focus-visible:fk-ring-2 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-2 disabled:fk-pointer-events-none disabled:fk-opacity-50 data-[state=active]:fk-bg-background data-[state=active]:fk-text-foreground data-[state=active]:fk-shadow-sm',\n className\n )}\n ref={ref}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n className={cn(\n 'fk-mt-2 fk-ring-offset-background focus-visible:fk-outline-none focus-visible:fk-ring-2 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-2',\n className\n )}\n ref={ref}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui/primitives/resizable.tsx","../src/ui/primitives/sheet.tsx","../src/ui/hooks/use-mobile.tsx","../src/ui/primitives/sidebar.tsx","../src/ui/components/sidebar.tsx","../src/ui/primitives/tabs.tsx"],"names":["ResizablePanelGroup","className","props","jsx","cn","ResizablePanel","ResizableHandle","withHandle","GripVerticalIcon","Sheet","SheetPrimitive","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","SheetContent","children","side","showCloseButton","jsxs","XIcon","SheetHeader","SheetFooter","SheetTitle","SheetDescription","MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","T","mql","onChange","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","style","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","TooltipProvider","Sidebar","variant","collapsible","SidebarTrigger","onClick","Button","PanelLeftIcon","SidebarRail","SidebarInset","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Comp","Slot","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","cva","SidebarMenuButton","isActive","size","tooltip","button","Tooltip","TooltipTrigger","TooltipContent","NavLinkCompat","NavLink","iconList","Icons","iconName","fuse","Fuse","menuGroups","schema","visibleItems","item","itemsByGroup","groupBy","g","nonEmptyGroups","menuGroup","group","entity","capitalize","createElement","getBestMatchingIcon","str","withSpaces","concept","result","Tabs","orientation","TabsPrimitive","tabsListVariants","TabsList","TabsTrigger","TabsContent"],"mappings":"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","file":"ui.js","sourcesContent":["import { GripVerticalIcon } from 'lucide-react';\nimport * as ResizablePrimitive from 'react-resizable-panels';\nimport { cn } from 'src/ui/lib/utils';\n\nfunction ResizablePanelGroup({ className, ...props }: ResizablePrimitive.GroupProps) {\n return (\n <ResizablePrimitive.Group\n data-slot=\"resizable-panel-group\"\n className={cn('fk:flex fk:h-full fk:w-full fk:aria-[orientation=vertical]:flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />;\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: ResizablePrimitive.SeparatorProps & {\n withHandle?: boolean;\n}) {\n return (\n <ResizablePrimitive.Separator\n data-slot=\"resizable-handle\"\n className={cn(\n 'fk:relative fk:flex fk:w-px fk:items-center fk:justify-center fk:bg-border fk:after:absolute fk:after:inset-y-0 fk:after:left-1/2 fk:after:w-1 fk:after:-translate-x-1/2 fk:focus-visible:ring-1 fk:focus-visible:ring-ring fk:focus-visible:ring-offset-1 fk:focus-visible:outline-hidden fk:aria-[orientation=horizontal]:h-px fk:aria-[orientation=horizontal]:w-full fk:aria-[orientation=horizontal]:after:left-0 fk:aria-[orientation=horizontal]:after:h-1 fk:aria-[orientation=horizontal]:after:w-full fk:aria-[orientation=horizontal]:after:translate-x-0 fk:aria-[orientation=horizontal]:after:-translate-y-1/2 fk:[&[aria-orientation=horizontal]>div]:rotate-90',\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"fk:z-10 fk:flex fk:h-8 fk:w-3 fk:items-center fk:justify-center fk:rounded-xs fk:border fk:bg-border\">\n <GripVerticalIcon className=\"fk:size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.Separator>\n );\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup };\n","'use client';\n\nimport * as React from 'react';\nimport { Dialog as SheetPrimitive } from 'radix-ui';\nimport { XIcon } from 'lucide-react';\nimport { cn } from 'src/ui/lib/utils';\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n 'fk:fixed fk:inset-0 fk:z-50 fk:bg-black/50 fk:data-[state=closed]:animate-out fk:data-[state=closed]:fade-out-0 fk:data-[state=open]:animate-in fk:data-[state=open]:fade-in-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n showCloseButton?: boolean;\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n 'fk:fixed fk:z-50 fk:flex fk:flex-col fk:gap-4 fk:bg-background fk:shadow-lg fk:transition fk:ease-in-out fk:data-[state=closed]:animate-out fk:data-[state=closed]:duration-300 fk:data-[state=open]:animate-in fk:data-[state=open]:duration-500',\n side === 'right' &&\n 'fk:inset-y-0 fk:right-0 fk:h-full fk:w-3/4 fk:border-l fk:data-[state=closed]:slide-out-to-right fk:data-[state=open]:slide-in-from-right fk:sm:max-w-sm',\n side === 'left' &&\n 'fk:inset-y-0 fk:left-0 fk:h-full fk:w-3/4 fk:border-r fk:data-[state=closed]:slide-out-to-left fk:data-[state=open]:slide-in-from-left fk:sm:max-w-sm',\n side === 'top' &&\n 'fk:inset-x-0 fk:top-0 fk:h-auto fk:border-b fk:data-[state=closed]:slide-out-to-top fk:data-[state=open]:slide-in-from-top',\n side === 'bottom' &&\n 'fk:inset-x-0 fk:bottom-0 fk:h-auto fk:border-t fk:data-[state=closed]:slide-out-to-bottom fk:data-[state=open]:slide-in-from-bottom',\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"fk:absolute fk:top-4 fk:right-4 fk:rounded-xs fk:opacity-70 fk:ring-offset-background fk:transition-opacity fk:hover:opacity-100 fk:focus:ring-2 fk:focus:ring-ring fk:focus:ring-offset-2 fk:focus:outline-hidden fk:disabled:pointer-events-none fk:data-[state=open]:bg-secondary\">\n <XIcon className=\"fk:size-4\" />\n <span className=\"fk:sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sheet-header\" className={cn('fk:flex fk:flex-col fk:gap-1.5 fk:p-4', className)} {...props} />;\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn('fk:mt-auto fk:flex fk:flex-col fk:gap-2 fk:p-4', className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('fk:font-semibold fk:text-foreground', className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('fk:text-sm fk:text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n SheetPortal,\n SheetOverlay,\n};\n","import * as React from 'react';\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined);\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener('change', onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener('change', onChange);\n }, []);\n\n return !!isMobile;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Slot } from 'radix-ui';\nimport { VariantProps, cva } from 'class-variance-authority';\nimport { PanelLeftIcon } from 'lucide-react';\nimport { useIsMobile } from '../hooks/use-mobile';\nimport { cn } from '../lib/utils';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Separator } from './separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from './sheet';\nimport { Skeleton } from './skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip';\n\nconst SIDEBAR_COOKIE_NAME = 'flexkit:sidebar:state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '2rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'fk:group/sidebar-wrapper fk:flex fk:w-full fk:has-data-[variant=inset]:bg-sidebar fk:overflow-hidden',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'fk:flex fk:h-full fk:w-(--sidebar-width) fk:flex-col fk:bg-sidebar fk:text-sidebar-foreground',\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"fk:w-(--sidebar-width) fk:bg-sidebar fk:p-0 fk:text-sidebar-foreground fk:[&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"fk:sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"fk:flex fk:h-full fk:w-full fk:flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"fk:group fk:peer fk:hidden fk:text-sidebar-foreground fk:md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'fk:relative fk:w-(--sidebar-width) fk:bg-transparent fk:transition-[width] fk:duration-200 fk:ease-linear',\n 'fk:group-data-[collapsible=offcanvas]:w-0',\n 'fk:group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'fk:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'fk:group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'fk:relative fk:inset-y-0 fk:z-10 fk:hidden fk:h-[calc(100svh-3.5rem)] fk:w-(--sidebar-width) fk:transition-[left,right,width] fk:duration-200 fk:ease-linear fk:md:flex',\n side === 'left'\n ? 'fk:left-0 fk:group-data-[collapsible=offcanvas]:-left-(--sidebar-width)'\n : 'fk:right-0 k:group-data-[collapsible=offcanvas]:-right-(--sidebar-width)',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'fk:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)] fk:group-data-[side=left]:border-r'\n : 'fk:group-data-[collapsible=icon]:w-(--sidebar-width-icon) fk:group-data-[side=left]:border-r fk:group-data-[side=right]:border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"fk:flex fk:h-full fk:w-full fk:flex-col fk:bg-sidebar fk:group-data-[variant=floating]:rounded-lg fk:group-data-[variant=floating]:border fk:group-data-[variant=floating]:border-sidebar-border fk:group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('fk:size-7', className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"fk:sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'fk:absolute fk:inset-y-0 fk:z-20 fk:hidden fk:w-4 fk:-translate-x-1/2 fk:transition-all fk:ease-linear fk:group-data-[side=left]:-right-4 fk:group-data-[side=right]:left-0 fk:after:absolute fk:after:inset-y-0 fk:after:left-1/2 fk:after:w-[2px] fk:hover:after:bg-sidebar-border fk:sm:flex',\n 'fk:in-data-[side=left]:cursor-w-resize fk:in-data-[side=right]:cursor-e-resize',\n 'fk:[[data-side=left][data-state=collapsed]_&]:cursor-e-resize fk:[[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'fk:group-data-[collapsible=offcanvas]:translate-x-0 fk:group-data-[collapsible=offcanvas]:after:left-full fk:hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n 'fk:[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n 'fk:[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'fk:relative fk:flex fk:flex-1 fk:flex-col fk:bg-background fk:overflow-hidden fk:peer-data-[variant=inset]:h-[calc(100svh-3.625rem)]',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn('fk:h-8 fk:w-full fk:bg-background fk:shadow-none', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn('fk:flex fk:flex-col fk:gap-2 fk:p-2', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn('fk:flex fk:flex-col fk:gap-2 fk:p-2', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('fk:mx-2 fk:w-auto fk:bg-sidebar-border', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'fk:flex fk:min-h-0 fk:flex-1 fk:flex-col fk:overflow-auto fk:group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn('fk:relative fk:flex fk:w-full fk:min-w-0 fk:flex-col fk:p-2', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : 'div';\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'fk:flex fk:h-8 fk:shrink-0 fk:items-center fk:rounded-md fk:px-2 fk:text-xs fk:font-medium fk:text-sidebar-foreground/70 fk:ring-sidebar-ring fk:outline-hidden fk:transition-[margin,opacity] fk:duration-200 fk:ease-linear fk:focus-visible:ring-2 fk:[&>svg]:size-4 fk:[&>svg]:shrink-0',\n 'fk:group-data-[collapsible=icon]:-mt-8 fk:group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : 'button';\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'fk:absolute fk:top-3.5 fk:right-3 fk:flex fk:aspect-square fk:w-5 fk:items-center fk:justify-center fk:rounded-md fk:p-0 fk:text-sidebar-foreground fk:ring-sidebar-ring fk:outline-hidden fk:transition-transform fk:hover:bg-sidebar-accent fk:hover:text-sidebar-accent-foreground fk:focus-visible:ring-2 fk:[&>svg]:size-4 fk:[&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'fk:after:absolute fk:after:-inset-2 fk:md:after:hidden',\n 'fk:group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn('fk:w-full fk:text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('fk:flex fk:w-full fk:min-w-0 fk:flex-col fk:gap-1', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('fk:group/menu-item fk:relative', className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n 'fk:peer/menu-button fk:flex fk:w-full fk:items-center fk:gap-2 fk:overflow-hidden fk:rounded-md fk:p-2 fk:text-left fk:text-sm fk:ring-sidebar-ring fk:outline-hidden fk:transition-[width,height,padding] fk:group-has-data-[sidebar=menu-action]/menu-item:pr-8 fk:group-data-[collapsible=icon]:size-8! fk:group-data-[collapsible=icon]:p-2! fk:hover:bg-sidebar-accent fk:hover:text-sidebar-accent-foreground fk:focus-visible:ring-2 fk:active:bg-sidebar-accent fk:active:text-sidebar-accent-foreground fk:disabled:pointer-events-none fk:disabled:opacity-50 fk:aria-disabled:pointer-events-none fk:aria-disabled:opacity-50 fk:data-[active=true]:bg-sidebar-accent fk:data-[active=true]:font-medium fk:data-[active=true]:text-sidebar-accent-foreground fk:data-[state=open]:hover:bg-sidebar-accent fk:data-[state=open]:hover:text-sidebar-accent-foreground fk:[&>span:last-child]:truncate fk:[&>svg]:size-4 fk:[&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'fk:hover:bg-sidebar-accent fk:hover:text-sidebar-accent-foreground',\n outline:\n 'fk:bg-background fk:shadow-[0_0_0_1px_hsl(var(--sidebar-border))] fk:hover:bg-sidebar-accent fk:hover:text-sidebar-accent-foreground fk:hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'fk:h-8 fk:text-sm',\n sm: 'fk:h-7 fk:text-xs',\n lg: 'fk:h-12 fk:text-sm fk:group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot.Root : 'button';\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed' || isMobile} {...tooltip} />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : 'button';\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'fk:absolute fk:top-1.5 fk:right-1 fk:flex fk:aspect-square fk:w-5 fk:items-center fk:justify-center fk:rounded-md fk:p-0 fk:text-sidebar-foreground fk:ring-sidebar-ring fk:outline-hidden fk:transition-transform fk:peer-hover/menu-button:text-sidebar-accent-foreground fk:hover:bg-sidebar-accent fk:hover:text-sidebar-accent-foreground fk:focus-visible:ring-2 fk:[&>svg]:size-4 fk:[&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'fk:after:absolute fk:after:-inset-2 fk:md:after:hidden',\n 'fk:peer-data-[size=sm]/menu-button:top-1',\n 'fk:peer-data-[size=default]/menu-button:top-1.5',\n 'fk:peer-data-[size=lg]/menu-button:top-2.5',\n 'fk:group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'fk:group-focus-within/menu-item:opacity-100 fk:group-hover/menu-item:opacity-100 fk:peer-data-[active=true]/menu-button:text-sidebar-accent-foreground fk:data-[state=open]:opacity-100 fk:md:opacity-0',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'fk:pointer-events-none fk:absolute fk:right-1 fk:flex fk:h-5 fk:min-w-5 fk:items-center fk:justify-center fk:rounded-md fk:px-1 fk:text-xs fk:font-medium fk:text-sidebar-foreground fk:tabular-nums fk:select-none',\n 'fk:peer-hover/menu-button:text-sidebar-accent-foreground fk:peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'fk:peer-data-[size=sm]/menu-button:top-1',\n 'fk:peer-data-[size=default]/menu-button:top-1.5',\n 'fk:peer-data-[size=lg]/menu-button:top-2.5',\n 'fk:group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn('fk:flex fk:h-8 fk:items-center fk:gap-2 fk:rounded-md fk:px-2', className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"fk:size-4 fk:rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"fk:h-4 fk:max-w-(--skeleton-width) fk:flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'fk:mx-3.5 fk:flex fk:min-w-0 fk:translate-x-px fk:flex-col fk:gap-1 fk:border-l fk:border-sidebar-border fk:px-2.5 fk:py-0.5',\n 'fk:group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('fk:group/menu-sub-item fk:relative', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : 'a';\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'fk:flex fk:h-7 fk:min-w-0 fk:-translate-x-px fk:items-center fk:gap-2 fk:overflow-hidden fk:rounded-md fk:px-2 fk:text-sidebar-foreground fk:ring-sidebar-ring fk:outline-hidden fk:hover:bg-sidebar-accent fk:hover:text-sidebar-accent-foreground fk:focus-visible:ring-2 fk:active:bg-sidebar-accent fk:active:text-sidebar-accent-foreground fk:disabled:pointer-events-none fk:disabled:opacity-50 fk:aria-disabled:pointer-events-none fk:aria-disabled:opacity-50 fk:[&>span:last-child]:truncate fk:[&>svg]:size-4 fk:[&>svg]:shrink-0 fk:[&>svg]:text-sidebar-accent-foreground',\n 'fk:data-[active=true]:bg-sidebar-accent fk:data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'fk:text-xs',\n size === 'md' && 'fk:text-sm',\n 'fk:group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n","import { createElement, type JSX } from 'react';\nimport * as Icons from 'lucide-react';\nimport Fuse from 'fuse.js';\nimport { NavLink } from 'react-router-dom';\nimport {\n Sidebar as SidebarPrimitive,\n SidebarContent,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarMenu,\n SidebarMenuItem,\n SidebarMenuButton,\n SidebarRail,\n} from '../primitives/sidebar';\nimport type { SingleProject } from '../../core/config/types';\nimport { groupBy } from 'ramda';\n\nconst NavLinkCompat = NavLink as unknown as React.ComponentType<{\n children?: React.ReactNode;\n to: string;\n}>;\n\ninterface SidebarProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n menuGroups?: SingleProject['menuGroups'];\n schema: SingleProject['schema'];\n}\n\ntype VisibleMenuSchema = Array<\n Omit<SingleProject['schema'][number], 'menu'> & {\n menu?: Exclude<SingleProject['schema'][number]['menu'], { hidden: true }>;\n }\n>;\n\nconst iconList = Object.keys(Icons).map((iconName) => ({\n name: iconName,\n icon: Icons[iconName as keyof typeof Icons],\n}));\n\nconst fuse = new Fuse(iconList, {\n keys: ['name'],\n threshold: 0.5,\n});\n\nexport function Sidebar({ className, menuGroups, schema }: SidebarProps): JSX.Element {\n // Filter out hidden items first, then group them\n const visibleItems = schema.filter((item) => !(item.menu && 'hidden' in item.menu)) as VisibleMenuSchema;\n const itemsByGroup = groupBy(\n (item) => (item.menu?.group && menuGroups?.find((g) => g.name === item.menu?.group)?.name) || 'ungrouped',\n visibleItems\n );\n const nonEmptyGroups = menuGroups?.filter((menuGroup) => itemsByGroup[menuGroup.name]?.length);\n\n return (\n <SidebarPrimitive className={className} collapsible=\"icon\" variant=\"inset\">\n <SidebarContent>\n {nonEmptyGroups?.map((group) => (\n <SidebarGroup key={group.name}>\n <SidebarGroupLabel>{group.title}</SidebarGroupLabel>\n <SidebarMenu>\n {itemsByGroup[group.name]?.map((entity) => (\n <SidebarMenuItem key={entity.plural}>\n <SidebarMenuButton\n asChild\n isActive={location.pathname.includes(`/list/${entity.plural}`)}\n tooltip={capitalize(entity.menu?.label ?? entity.plural)}\n >\n <NavLinkCompat to={`list/${entity.plural}`}>\n {entity.menu?.icon ??\n createElement(\n Icons[getBestMatchingIcon(entity.name)] as React.ComponentType<React.SVGProps<SVGSVGElement>>,\n {\n className: 'fk:h-4 fk:w-4 fk:mr-2',\n strokeWidth: 2,\n }\n )}\n <span>{capitalize(entity.menu?.label ?? entity.plural)}</span>\n </NavLinkCompat>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroup>\n ))}\n <SidebarGroup>\n <SidebarMenu>\n {itemsByGroup['ungrouped']?.map((entity) => (\n <SidebarMenuItem key={entity.plural}>\n <SidebarMenuButton\n asChild\n isActive={location.pathname.includes(`/list/${entity.plural}`)}\n tooltip={capitalize(entity.menu?.label ?? entity.plural)}\n >\n <NavLinkCompat to={`list/${entity.plural}`}>\n {createElement(\n Icons[getBestMatchingIcon(entity.name)] as React.ComponentType<React.SVGProps<SVGSVGElement>>,\n {\n className: 'fk:h-4 fk:w-4 fk:mr-2',\n strokeWidth: 2,\n }\n )}\n <span>{capitalize(entity.menu?.label ?? entity.plural)}</span>\n </NavLinkCompat>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroup>\n </SidebarContent>\n <SidebarRail />\n </SidebarPrimitive>\n );\n}\n\nfunction capitalize(str: string): string {\n // Add space before capital letters and capitalize first letter\n const withSpaces = str.replace(/([A-Z])/g, ' $1');\n // Capitalize first letter and trim any leading space\n return withSpaces.charAt(0).toUpperCase() + withSpaces.slice(1).trim();\n}\n\n/**\n * Tries to get the best matching icon for an entity name using fuzy search\n */\nfunction getBestMatchingIcon(concept: string): keyof typeof Icons {\n const result = fuse.search(concept);\n\n if (result.length > 0) {\n return result[0].item.name as keyof typeof Icons;\n }\n\n return 'Dock' as keyof typeof Icons;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Tabs as TabsPrimitive } from 'radix-ui';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from 'src/ui/lib/utils';\n\nfunction Tabs({ className, orientation = 'horizontal', ...props }: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn('fk:group/tabs fk:flex fk:data-[orientation=horizontal]:flex-col', className)}\n {...props}\n />\n );\n}\n\nconst tabsListVariants = cva(\n 'fk:group/tabs-list fk:inline-flex fk:w-fit fk:items-center fk:justify-center fk:rounded-lg fk:p-[3px] fk:text-muted-foreground fk:group-data-[orientation=horizontal]/tabs:h-9 fk:group-data-[orientation=vertical]/tabs:h-fit fk:group-data-[orientation=vertical]/tabs:flex-col fk:data-[variant=line]:rounded-none',\n {\n variants: {\n variant: {\n default: 'fk:bg-muted',\n line: 'fk:gap-1 fk:bg-transparent',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nfunction TabsList({\n className,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"fk:relative fk:inline-flex fk:h-[calc(100%-1px)] fk:flex-1 fk:items-center fk:justify-center fk:gap-1.5 fk:rounded-md fk:border fk:border-transparent! fk:px-2 fk:py-1 fk:text-sm fk:font-medium fk:whitespace-nowrap fk:text-foreground/60 fk:transition-all fk:group-data-[orientation=vertical]/tabs:w-full fk:group-data-[orientation=vertical]/tabs:justify-start fk:hover:text-foreground fk:focus-visible:border-ring! fk:focus-visible:ring-[3px] fk:focus-visible:ring-ring/50 fk:focus-visible:outline-1 fk:focus-visible:outline-ring fk:disabled:pointer-events-none fk:disabled:opacity-50 fk:group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm fk:group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none fk:dark:text-muted-foreground fk:dark:hover:text-foreground fk:[&_svg]:pointer-events-none fk:[&_svg]:shrink-0 fk:[&_svg:not([class*='size-'])]:size-4\",\n 'fk:group-data-[variant=line]/tabs-list:bg-transparent fk:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent fk:dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent! fk:dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent',\n 'fk:data-[state=active]:bg-background fk:data-[state=active]:text-foreground fk:dark:data-[state=active]:border-muted-foreground/75! fk:dark:data-[state=active]:bg-input/30 fk:dark:data-[state=active]:text-foreground',\n 'fk:after:absolute fk:after:bg-foreground fk:after:opacity-0 fk:after:transition-opacity fk:group-data-[orientation=horizontal]/tabs:after:inset-x-0 fk:group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] fk:group-data-[orientation=horizontal]/tabs:after:h-0.5 fk:group-data-[orientation=vertical]/tabs:after:inset-y-0 fk:group-data-[orientation=vertical]/tabs:after:-right-1 fk:group-data-[orientation=vertical]/tabs:after:w-0.5 fk:group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content data-slot=\"tabs-content\" className={cn('fk:flex-1 fk:outline-none', className)} {...props} />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import'./index.css';import {b,d}from'./chunk-H6LL44JH.js';import {a as a$1,b as b$2,c as c$1}from'./chunk-SW6NNU5D.js';import {p,a,c,d as d$1,j,k,g,f,l}from'./chunk-HIHVCQ4Z.js';import'./chunk-6YHHL4XI.js';import'./chunk-TMK5LKFR.js';import {b as b$1}from'./chunk-EYGOJ2ZN.js';import'./chunk-WIUPQHZ5.js';import'./chunk-O2QMYUPS.js';import {Monitor,Moon,Sun}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';function _({projectId:D}){let{theme:a$2,setTheme:t}=b(),[C,n]=d();return C?jsx(p,{className:"fk:h-8 fk:w-8 fk:rounded-full"}):jsxs(a,{children:[jsx(c,{asChild:true,children:jsx(b$1,{className:"fk:relative fk:h-8 fk:w-8 fk:rounded-full",variant:"ghost",children:jsxs(a$1,{className:"fk:h-8 fk:w-8",children:[jsx(b$2,{alt:"@shadcn",src:n.user?.avatar_url}),jsx(c$1,{children:n.user?.display_name.charAt(0).toUpperCase()??""})]})})}),jsxs(d$1,{align:"end",className:"fk:w-56",forceMount:true,children:[jsx(j,{className:"font-normal",children:jsxs("div",{className:"fk:flex fk:flex-col fk:space-y-1",children:[jsx("p",{className:"fk:text-sm fk:font-medium fk:leading-none",children:n.user?.display_name}),jsx("p",{className:"fk:text-xs fk:leading-none fk:text-muted-foreground",children:n.user?.email})]})}),jsx(k,{}),jsx(j,{children:"Theme"}),jsxs(g,{checked:a$2==="system",onCheckedChange:()=>{t("system");},children:[jsx(Monitor,{className:"fk:mr-2 fk:h-4 fk:w-4"}),jsx("span",{children:"System"})]}),jsxs(g,{checked:a$2==="dark",onCheckedChange:()=>{t("dark");},children:[jsx(Moon,{className:"fk:mr-2 fk:h-4 fk:w-4"}),jsx("span",{children:"Dark"})]}),jsxs(g,{checked:a$2==="light",onCheckedChange:()=>{t("light");},children:[jsx(Sun,{className:"fk:mr-2 fk:h-4 fk:w-4"}),jsx("span",{children:"Light"})]}),jsx(k,{}),jsxs(f,{onClick:()=>{n.logout(D).then(()=>{}).catch(()=>{});},children:["Log out",jsx(l,{children:"\u21E7\u2318Q"})]})]})]})}export{_ as UserNav};//# sourceMappingURL=user-nav-MRPKTEIJ.js.map
|
|
2
|
+
//# sourceMappingURL=user-nav-MRPKTEIJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/components/user-nav.tsx"],"names":["UserNav","projectId","theme","setTheme","useTheme","isLoading","auth","useAuth","jsx","Skeleton","jsxs","DropdownMenu","DropdownMenuTrigger","Button","Avatar","AvatarImage","AvatarFallback","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuCheckboxItem","Monitor","Moon","Sun","DropdownMenuItem","DropdownMenuShortcut"],"mappings":"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","file":"user-nav-MRPKTEIJ.js","sourcesContent":["import type { JSX } from 'react';\nimport { useTheme } from '../theme-context';\nimport { Monitor, Moon, Sun } from 'lucide-react';\nimport { Avatar, AvatarFallback, AvatarImage } from '../primitives/avatar';\nimport { Button } from '../primitives/button';\nimport { Skeleton } from '../primitives/skeleton';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuTrigger,\n} from '../primitives/dropdown-menu';\nimport { useAuth } from '../../auth/auth-context';\n\ntype Props = {\n projectId: string;\n};\n\nexport function UserNav({ projectId }: Props): JSX.Element {\n const { theme, setTheme } = useTheme();\n const [isLoading, auth] = useAuth();\n\n if (isLoading) {\n return <Skeleton className=\"fk:h-8 fk:w-8 fk:rounded-full\" />;\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"fk:relative fk:h-8 fk:w-8 fk:rounded-full\" variant=\"ghost\">\n <Avatar className=\"fk:h-8 fk:w-8\">\n <AvatarImage alt=\"@shadcn\" src={auth.user?.avatar_url} />\n <AvatarFallback>{auth.user?.display_name.charAt(0).toUpperCase() ?? ''}</AvatarFallback>\n </Avatar>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"fk:w-56\" forceMount>\n <DropdownMenuLabel className=\"font-normal\">\n <div className=\"fk:flex fk:flex-col fk:space-y-1\">\n <p className=\"fk:text-sm fk:font-medium fk:leading-none\">{auth.user?.display_name}</p>\n <p className=\"fk:text-xs fk:leading-none fk:text-muted-foreground\">{auth.user?.email}</p>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuLabel>Theme</DropdownMenuLabel>\n <DropdownMenuCheckboxItem\n checked={theme === 'system'}\n onCheckedChange={() => {\n setTheme('system');\n }}\n >\n <Monitor className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n <span>System</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuCheckboxItem\n checked={theme === 'dark'}\n onCheckedChange={() => {\n setTheme('dark');\n }}\n >\n <Moon className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n <span>Dark</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuCheckboxItem\n checked={theme === 'light'}\n onCheckedChange={() => {\n setTheme('light');\n }}\n >\n <Sun className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n <span>Light</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={() => {\n auth\n .logout(projectId)\n .then(() => {\n //\n })\n .catch(() => {\n //\n });\n }}\n >\n Log out\n <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flexkit/studio",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.21",
|
|
4
4
|
"description": "Flexkit Studio - Build custom internal tools like PIMs, CRMs, and ERPs with a flexible React UI and a graph-backed API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"flexkit",
|
|
@@ -56,24 +56,23 @@
|
|
|
56
56
|
"dist/**"
|
|
57
57
|
],
|
|
58
58
|
"devDependencies": {
|
|
59
|
+
"@tailwindcss/cli": "4.2.4",
|
|
59
60
|
"@types/bytes": "^3.1.4",
|
|
60
61
|
"@types/debug": "^4.1.12",
|
|
61
62
|
"@types/node": "^20.5.2",
|
|
62
63
|
"@types/ramda": "^0.29.7",
|
|
63
|
-
"@types/react": "
|
|
64
|
-
"@types/react-dom": "
|
|
64
|
+
"@types/react": "19.2.14",
|
|
65
|
+
"@types/react-dom": "19.2.3",
|
|
65
66
|
"@types/uuid": "^9.0.6",
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"react-dom": "^18.0.0",
|
|
70
|
-
"tailwindcss": "3.4.10",
|
|
67
|
+
"react": "19.2.5",
|
|
68
|
+
"react-dom": "19.2.5",
|
|
69
|
+
"tailwindcss": "4.2.4",
|
|
71
70
|
"tailwindcss-animate": "1.0.7",
|
|
72
71
|
"tsup": "8.5.1",
|
|
73
72
|
"typescript": "^5.3.3",
|
|
74
73
|
"eslint-config-custom": "0.0.0",
|
|
75
|
-
"
|
|
76
|
-
"
|
|
74
|
+
"tailwind-config": "0.0.1",
|
|
75
|
+
"tsconfig": "0.0.0"
|
|
77
76
|
},
|
|
78
77
|
"dependencies": {
|
|
79
78
|
"@ai-sdk/react": "3.0.118",
|
|
@@ -89,23 +88,6 @@
|
|
|
89
88
|
"@lexical/selection": "^0.12.2",
|
|
90
89
|
"@lexical/table": "^0.12.2",
|
|
91
90
|
"@lexical/utils": "^0.12.2",
|
|
92
|
-
"@radix-ui/react-alert-dialog": "^1.0.5",
|
|
93
|
-
"@radix-ui/react-avatar": "^1.0.4",
|
|
94
|
-
"@radix-ui/react-checkbox": "^1.0.4",
|
|
95
|
-
"@radix-ui/react-collapsible": "^1.0.3",
|
|
96
|
-
"@radix-ui/react-dialog": "^1.1.1",
|
|
97
|
-
"@radix-ui/react-dropdown-menu": "^2.0.6",
|
|
98
|
-
"@radix-ui/react-label": "^2.0.2",
|
|
99
|
-
"@radix-ui/react-popover": "^1.1.1",
|
|
100
|
-
"@radix-ui/react-scroll-area": "^1.0.5",
|
|
101
|
-
"@radix-ui/react-select": "^2.0.0",
|
|
102
|
-
"@radix-ui/react-separator": "^1.1.0",
|
|
103
|
-
"@radix-ui/react-slot": "^1.1.0",
|
|
104
|
-
"@radix-ui/react-switch": "^1.0.3",
|
|
105
|
-
"@radix-ui/react-tabs": "^1.0.4",
|
|
106
|
-
"@radix-ui/react-toggle": "^1.0.3",
|
|
107
|
-
"@radix-ui/react-toggle-group": "^1.0.4",
|
|
108
|
-
"@radix-ui/react-tooltip": "^1.1.2",
|
|
109
91
|
"@tanstack/react-table": "^8.11.7",
|
|
110
92
|
"@tanstack/react-virtual": "^3.8.3",
|
|
111
93
|
"@tiptap/core": "2.27.1",
|
|
@@ -124,16 +106,17 @@
|
|
|
124
106
|
"lowlight": "3.1.0",
|
|
125
107
|
"lucide-react": "0.577.0",
|
|
126
108
|
"novel": "1.0.2",
|
|
109
|
+
"radix-ui": "1.4.3",
|
|
127
110
|
"ramda": "^0.29.1",
|
|
128
111
|
"react-day-picker": "^9.7.0",
|
|
129
112
|
"react-file-icon": "1.6.0",
|
|
130
|
-
"react-hook-form": "^7.
|
|
113
|
+
"react-hook-form": "^7.62.0",
|
|
131
114
|
"react-markdown": "9.0.1",
|
|
132
|
-
"react-resizable-panels": "^
|
|
115
|
+
"react-resizable-panels": "^4",
|
|
133
116
|
"react-router-dom": "^6.21.0",
|
|
134
|
-
"sonner": "^
|
|
117
|
+
"sonner": "^2.0.0",
|
|
135
118
|
"swr": "^2.4.1",
|
|
136
|
-
"tailwind-merge": "^
|
|
119
|
+
"tailwind-merge": "^3.4.1",
|
|
137
120
|
"tiptap-markdown": "0.8.10",
|
|
138
121
|
"use-debounce": "10.0.3",
|
|
139
122
|
"uuid": "^9.0.1",
|
|
@@ -141,8 +124,8 @@
|
|
|
141
124
|
"zod": "^3.22.4"
|
|
142
125
|
},
|
|
143
126
|
"peerDependencies": {
|
|
144
|
-
"react": "^
|
|
145
|
-
"react-dom": "^
|
|
127
|
+
"react": "^19.0.0",
|
|
128
|
+
"react-dom": "^19.0.0"
|
|
146
129
|
},
|
|
147
130
|
"peerDependenciesMeta": {
|
|
148
131
|
"react": {
|
package/dist/asset-TJGJREGN.js
DELETED
package/dist/boolean-3ZHXDPHB.js
DELETED
package/dist/chunk-2RBOTHKE.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import'./index.css';import {a as a$1}from'./chunk-AXB7FQV2.js';import*as a from'react';import*as e from'@radix-ui/react-select';import {ChevronDown,ChevronUp,Check}from'lucide-react';import {jsxs,jsx}from'react/jsx-runtime';var w=e.Root,h=e.Group,N=e.Value,S=a.forwardRef(({className:o,children:r,...i},l)=>jsxs(e.Trigger,{className:a$1("fk-flex fk-h-10 fk-w-full fk-items-center fk-justify-between fk-rounded-md fk-border fk-border-input fk-bg-background fk-px-3 fk-py-2 fk-text-sm fk-ring-offset-background placeholder:fk-text-muted-foreground focus:fk-outline-none focus:fk-ring-2 focus:fk-ring-ring focus:fk-ring-offset-2 disabled:fk-cursor-not-allowed disabled:fk-opacity-50 [&>span]:fk-line-clamp-1",o),ref:l,...i,children:[r,jsx(e.Icon,{asChild:true,children:jsx(ChevronDown,{className:"fk-h-4 fk-w-4 fk-opacity-50"})})]}));S.displayName=e.Trigger.displayName;var n=a.forwardRef(({className:o,...r},i)=>jsx(e.ScrollUpButton,{className:a$1("fk-flex fk-cursor-default fk-items-center fk-justify-center fk-py-1",o),ref:i,...r,children:jsx(ChevronUp,{className:"fk-h-4 fk-w-4"})}));n.displayName=e.ScrollUpButton.displayName;var s=a.forwardRef(({className:o,...r},i)=>jsx(e.ScrollDownButton,{className:a$1("fk-flex fk-cursor-default fk-items-center fk-justify-center fk-py-1",o),ref:i,...r,children:jsx(ChevronDown,{className:"fk-h-4 fk-w-4"})}));s.displayName=e.ScrollDownButton.displayName;var u=a.forwardRef(({className:o,children:r,position:i="popper",...l},k)=>jsx(e.Portal,{children:jsxs(e.Content,{className:a$1("fk-relative fk-z-50 fk-max-h-96 fk-min-w-[8rem] fk-overflow-hidden fk-rounded-md fk-border fk-border-border fk-bg-popover fk-text-popover-foreground fk-shadow-md data-[state=open]:fk-animate-in data-[state=closed]:fk-animate-out data-[state=closed]:fk-fade-out-0 data-[state=open]:fk-fade-in-0 data-[state=closed]:fk-zoom-out-95 data-[state=open]:fk-zoom-in-95 data-[side=bottom]:fk-slide-in-from-top-2 data-[side=left]:fk-slide-in-from-right-2 data-[side=right]:fk-slide-in-from-left-2 data-[side=top]:fk-slide-in-from-bottom-2",i==="popper"&&"data-[side=bottom]:fk-translate-y-1 data-[side=left]:-fk-translate-x-1 data-[side=right]:fk-translate-x-1 data-[side=top]:-fk-translate-y-1",o),position:i,ref:k,...l,children:[jsx(n,{}),jsx(e.Viewport,{className:a$1("fk-p-1",i==="popper"&&"fk-h-[var(--radix-select-trigger-height)] fk-w-full fk-min-w-[var(--radix-select-trigger-width)]"),children:r}),jsx(s,{})]})}));u.displayName=e.Content.displayName;var v=a.forwardRef(({className:o,...r},i)=>jsx(e.Label,{className:a$1("fk-py-1.5 fk-pl-8 fk-pr-2 fk-text-sm fk-font-semibold",o),ref:i,...r}));v.displayName=e.Label.displayName;var P=a.forwardRef(({className:o,children:r,...i},l)=>jsxs(e.Item,{className:a$1("fk-relative fk-flex fk-w-full fk-cursor-default fk-select-none fk-items-center fk-rounded-sm fk-py-1.5 fk-pl-8 pr-2 fk-text-sm fk-outline-none focus:fk-bg-accent focus:fk-text-accent-foreground data-[disabled]:fk-pointer-events-none data-[disabled]:fk-opacity-50",o),ref:l,...i,children:[jsx("span",{className:"fk-absolute fk-left-2 fk-flex fk-h-3.5 fk-w-3.5 fk-items-center fk-justify-center",children:jsx(e.ItemIndicator,{children:jsx(Check,{className:"fk-h-4 fk-w-4"})})}),jsx(e.ItemText,{children:r})]}));P.displayName=e.Item.displayName;var R=a.forwardRef(({className:o,...r},i)=>jsx(e.Separator,{className:a$1("-fk-mx-1 fk-my-1 fk-h-px fk-bg-muted",o),ref:i,...r}));R.displayName=e.Separator.displayName;export{w as a,h as b,N as c,S as d,n as e,s as f,u as g,v as h,P as i,R as j};//# sourceMappingURL=chunk-2RBOTHKE.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-2RBOTHKE.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/primitives/select.tsx"],"names":["Select","SelectGroup","SelectValue","SelectTrigger","className","children","props","ref","jsxs","cn","jsx","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","SelectContent","position","SelectLabel","SelectItem","Check","SelectSeparator"],"mappings":"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","file":"chunk-2RBOTHKE.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown, ChevronUp } from 'lucide-react';\nimport { cn } from 'src/ui/lib/utils';\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n className={cn(\n 'fk-flex fk-h-10 fk-w-full fk-items-center fk-justify-between fk-rounded-md fk-border fk-border-input fk-bg-background fk-px-3 fk-py-2 fk-text-sm fk-ring-offset-background placeholder:fk-text-muted-foreground focus:fk-outline-none focus:fk-ring-2 focus:fk-ring-ring focus:fk-ring-offset-2 disabled:fk-cursor-not-allowed disabled:fk-opacity-50 [&>span]:fk-line-clamp-1',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"fk-h-4 fk-w-4 fk-opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n className={cn('fk-flex fk-cursor-default fk-items-center fk-justify-center fk-py-1', className)}\n ref={ref}\n {...props}\n >\n <ChevronUp className=\"fk-h-4 fk-w-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n className={cn('fk-flex fk-cursor-default fk-items-center fk-justify-center fk-py-1', className)}\n ref={ref}\n {...props}\n >\n <ChevronDown className=\"fk-h-4 fk-w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = 'popper', ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n className={cn(\n 'fk-relative fk-z-50 fk-max-h-96 fk-min-w-[8rem] fk-overflow-hidden fk-rounded-md fk-border fk-border-border fk-bg-popover fk-text-popover-foreground fk-shadow-md data-[state=open]:fk-animate-in data-[state=closed]:fk-animate-out data-[state=closed]:fk-fade-out-0 data-[state=open]:fk-fade-in-0 data-[state=closed]:fk-zoom-out-95 data-[state=open]:fk-zoom-in-95 data-[side=bottom]:fk-slide-in-from-top-2 data-[side=left]:fk-slide-in-from-right-2 data-[side=right]:fk-slide-in-from-left-2 data-[side=top]:fk-slide-in-from-bottom-2',\n position === 'popper' &&\n 'data-[side=bottom]:fk-translate-y-1 data-[side=left]:-fk-translate-x-1 data-[side=right]:fk-translate-x-1 data-[side=top]:-fk-translate-y-1',\n className\n )}\n position={position}\n ref={ref}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'fk-p-1',\n position === 'popper' &&\n 'fk-h-[var(--radix-select-trigger-height)] fk-w-full fk-min-w-[var(--radix-select-trigger-width)]'\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n className={cn('fk-py-1.5 fk-pl-8 fk-pr-2 fk-text-sm fk-font-semibold', className)}\n ref={ref}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n className={cn(\n 'fk-relative fk-flex fk-w-full fk-cursor-default fk-select-none fk-items-center fk-rounded-sm fk-py-1.5 fk-pl-8 pr-2 fk-text-sm fk-outline-none focus:fk-bg-accent focus:fk-text-accent-foreground data-[disabled]:fk-pointer-events-none data-[disabled]:fk-opacity-50',\n className\n )}\n ref={ref}\n {...props}\n >\n <span className=\"fk-absolute fk-left-2 fk-flex fk-h-3.5 fk-w-3.5 fk-items-center fk-justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"fk-h-4 fk-w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator className={cn('-fk-mx-1 fk-my-1 fk-h-px fk-bg-muted', className)} ref={ref} {...props} />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n"]}
|