@flexkit/studio 0.0.6 → 0.0.8
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-65455B7V.js +2 -0
- package/dist/{asset-F2SF5UHA.js.map → asset-65455B7V.js.map} +1 -1
- package/dist/astro.d.ts +68 -0
- package/dist/astro.js +45 -0
- package/dist/boolean-3ZHXDPHB.js +2 -0
- package/dist/{boolean-IUJXXA2D.js.map → boolean-3ZHXDPHB.js.map} +1 -1
- package/dist/chunk-2RBOTHKE.js +2 -0
- package/dist/{chunk-7ZFZY5R4.js.map → chunk-2RBOTHKE.js.map} +1 -1
- package/dist/chunk-2WWU4XFO.js +2 -0
- package/dist/chunk-2WWU4XFO.js.map +1 -0
- package/dist/chunk-4PHVU7DD.js +2 -0
- package/dist/{chunk-WEMBNSFH.js.map → chunk-4PHVU7DD.js.map} +1 -1
- package/dist/chunk-5ES3TTSY.js +2 -0
- package/dist/{chunk-OBWXS7PQ.js.map → chunk-5ES3TTSY.js.map} +1 -1
- package/dist/chunk-5MTVN77Y.js +2 -0
- package/dist/chunk-5MTVN77Y.js.map +1 -0
- package/dist/chunk-64KAF6GA.js +2 -0
- package/dist/chunk-64KAF6GA.js.map +1 -0
- package/dist/chunk-7YBJLUUE.js +3 -0
- package/dist/chunk-7YBJLUUE.js.map +1 -0
- package/dist/chunk-AXB7FQV2.js +2 -0
- package/dist/{chunk-A6DNMUGW.js.map → chunk-AXB7FQV2.js.map} +1 -1
- package/dist/chunk-AYKEFG4H.js +2 -0
- package/dist/chunk-AYKEFG4H.js.map +1 -0
- package/dist/chunk-D5N42D57.js +2 -0
- package/dist/chunk-D5N42D57.js.map +1 -0
- package/dist/chunk-HC5NUUAJ.js +2 -0
- package/dist/chunk-HC5NUUAJ.js.map +1 -0
- package/dist/chunk-HIMN6EYJ.js +2 -0
- package/dist/chunk-HIMN6EYJ.js.map +1 -0
- package/dist/chunk-K5CEPNVI.js +2 -0
- package/dist/{chunk-G3L524HS.js.map → chunk-K5CEPNVI.js.map} +1 -1
- package/dist/chunk-M6EIBKCQ.js +2 -0
- package/dist/{chunk-GHV46F5V.js.map → chunk-M6EIBKCQ.js.map} +1 -1
- package/dist/chunk-MOR653JA.js +2 -0
- package/dist/chunk-MOR653JA.js.map +1 -0
- package/dist/chunk-NJN7EGGK.js +2 -0
- package/dist/{chunk-PAAKWKLA.js.map → chunk-NJN7EGGK.js.map} +1 -1
- package/dist/chunk-OOYWOWHR.js +2 -0
- package/dist/{chunk-Z37UM6ED.js.map → chunk-OOYWOWHR.js.map} +1 -1
- package/dist/chunk-OTQ3BR2A.js +2 -0
- package/dist/chunk-OTQ3BR2A.js.map +1 -0
- package/dist/chunk-OX6FVDUT.js +2 -0
- package/dist/{chunk-UTZ7XOUK.js.map → chunk-OX6FVDUT.js.map} +1 -1
- package/dist/chunk-RMSYYUQM.js +2 -0
- package/dist/{chunk-OV2SJGU3.js.map → chunk-RMSYYUQM.js.map} +1 -1
- package/dist/chunk-TL6JXN6O.js +175 -0
- package/dist/chunk-ZOBZU47M.js +2 -0
- package/dist/chunk-ZOBZU47M.js.map +1 -0
- package/dist/core-handler-XAVVKLhV.d.ts +37 -0
- package/dist/datetime-XX4YBITU.js +2 -0
- package/dist/{datetime-GOUY7ZJZ.js.map → datetime-XX4YBITU.js.map} +1 -1
- package/dist/editor-ZLTDOUPT.js +2 -0
- package/dist/{editor-IK2CNBJV.js.map → editor-ZLTDOUPT.js.map} +1 -1
- package/dist/index.css +1007 -917
- package/dist/index.d.ts +64 -9
- package/dist/index.js +347 -14
- package/dist/index.js.map +1 -1
- package/dist/logo-LB22KTDD.js +3 -0
- package/dist/{logo-4JW3ZQGP.js.map → logo-LB22KTDD.js.map} +1 -1
- package/dist/{ssr.d.ts → nextjs.d.ts} +2 -15
- package/dist/nextjs.js +71 -0
- package/dist/project-selector-4G4WL2XQ.js +2 -0
- package/dist/{project-selector-6UNKDUFP.js.map → project-selector-4G4WL2XQ.js.map} +1 -1
- package/dist/search-CKPEOD77.js +2 -0
- package/dist/{search-XZ52MCGA.js.map → search-CKPEOD77.js.map} +1 -1
- package/dist/switch-FU7XZ34K.js +2 -0
- package/dist/{switch-GWTYDHPW.js.map → switch-FU7XZ34K.js.map} +1 -1
- package/dist/tanstack-start.d.ts +99 -0
- package/dist/tanstack-start.js +147 -0
- package/dist/text-DFG6LLN6.js +2 -0
- package/dist/{text-OSJFNY7L.js.map → text-DFG6LLN6.js.map} +1 -1
- package/dist/text-LNFBPXBT.js +2 -0
- package/dist/{text-Y2ITNUWV.js.map → text-LNFBPXBT.js.map} +1 -1
- package/dist/textarea-XFHA5IEI.js +2 -0
- package/dist/{textarea-J6THGASV.js.map → textarea-XFHA5IEI.js.map} +1 -1
- package/dist/{types-RVyP_Twi.d.ts → types.d-CH6seXQw.d.ts} +108 -1
- package/dist/ui.d.ts +10 -11
- package/dist/ui.js +1 -1
- package/dist/ui.js.map +1 -1
- package/dist/user-nav-5LW5USDZ.js +2 -0
- package/dist/{user-nav-MAMF3XX5.js.map → user-nav-5LW5USDZ.js.map} +1 -1
- package/package.json +39 -16
- package/dist/asset-F2SF5UHA.js +0 -2
- package/dist/boolean-IUJXXA2D.js +0 -2
- package/dist/chunk-2DBX42KN.js +0 -2
- package/dist/chunk-2DBX42KN.js.map +0 -1
- package/dist/chunk-7ZFZY5R4.js +0 -2
- package/dist/chunk-A6DNMUGW.js +0 -2
- package/dist/chunk-EQ3526ET.js +0 -2
- package/dist/chunk-EQ3526ET.js.map +0 -1
- package/dist/chunk-G3L524HS.js +0 -2
- package/dist/chunk-GHV46F5V.js +0 -2
- package/dist/chunk-GXUHAW3R.js +0 -2
- package/dist/chunk-GXUHAW3R.js.map +0 -1
- package/dist/chunk-JB2CLKHS.js +0 -2
- package/dist/chunk-JB2CLKHS.js.map +0 -1
- package/dist/chunk-JNAHBJHF.js +0 -2
- package/dist/chunk-JNAHBJHF.js.map +0 -1
- package/dist/chunk-LEEJFMT6.js +0 -2
- package/dist/chunk-LEEJFMT6.js.map +0 -1
- package/dist/chunk-NM3JPB46.js +0 -2
- package/dist/chunk-NM3JPB46.js.map +0 -1
- package/dist/chunk-OBDHNFM5.js +0 -2
- package/dist/chunk-OBDHNFM5.js.map +0 -1
- package/dist/chunk-OBWXS7PQ.js +0 -2
- package/dist/chunk-OJCXEL7M.js +0 -2
- package/dist/chunk-OJCXEL7M.js.map +0 -1
- package/dist/chunk-OTLHY3ST.js +0 -2
- package/dist/chunk-OTLHY3ST.js.map +0 -1
- package/dist/chunk-OV2SJGU3.js +0 -2
- package/dist/chunk-PAAKWKLA.js +0 -2
- package/dist/chunk-RUXKF224.js +0 -2
- package/dist/chunk-RUXKF224.js.map +0 -1
- package/dist/chunk-SHVY2WXV.js +0 -3
- package/dist/chunk-SHVY2WXV.js.map +0 -1
- package/dist/chunk-TKD36DLT.js +0 -2
- package/dist/chunk-TKD36DLT.js.map +0 -1
- package/dist/chunk-UTZ7XOUK.js +0 -2
- package/dist/chunk-UZTABGUM.js +0 -334
- package/dist/chunk-UZTABGUM.js.map +0 -1
- package/dist/chunk-VVAW7U22.js +0 -2
- package/dist/chunk-VVAW7U22.js.map +0 -1
- package/dist/chunk-W632YC7D.js +0 -2
- package/dist/chunk-W632YC7D.js.map +0 -1
- package/dist/chunk-WEMBNSFH.js +0 -2
- package/dist/chunk-Z37UM6ED.js +0 -2
- package/dist/chunk-ZUOOAEAL.js +0 -2
- package/dist/chunk-ZUOOAEAL.js.map +0 -1
- package/dist/data-grid/index.d.ts +0 -59
- package/dist/data-grid/index.js +0 -4
- package/dist/data-grid/index.js.map +0 -1
- package/dist/datetime-GOUY7ZJZ.js +0 -2
- package/dist/editor-IK2CNBJV.js +0 -2
- package/dist/logo-4JW3ZQGP.js +0 -3
- package/dist/project-selector-6UNKDUFP.js +0 -2
- package/dist/search-XZ52MCGA.js +0 -2
- package/dist/ssr.js +0 -3
- package/dist/ssr.js.map +0 -1
- package/dist/switch-GWTYDHPW.js +0 -2
- package/dist/text-OSJFNY7L.js +0 -2
- package/dist/text-Y2ITNUWV.js +0 -2
- package/dist/textarea-J6THGASV.js +0 -2
- package/dist/types.d-DEo8bqfV.d.ts +0 -110
- package/dist/user-nav-MAMF3XX5.js +0 -2
package/dist/ui.d.ts
CHANGED
|
@@ -14,12 +14,11 @@ export { ImperativePanelHandle } from 'react-resizable-panels';
|
|
|
14
14
|
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
15
15
|
import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
|
|
16
16
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
17
|
-
import {
|
|
17
|
+
import { l as SingleProject } from './types.d-CH6seXQw.js';
|
|
18
18
|
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
19
19
|
import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
|
|
20
20
|
import * as TogglePrimitive from '@radix-ui/react-toggle';
|
|
21
21
|
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
22
|
-
import './types-RVyP_Twi.js';
|
|
23
22
|
import 'zod';
|
|
24
23
|
import '@apollo/client';
|
|
25
24
|
|
|
@@ -192,22 +191,22 @@ declare namespace CommandShortcut {
|
|
|
192
191
|
declare const Label: React$1.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React$1.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: class_variance_authority_types.ClassProp | undefined) => string> & React$1.RefAttributes<HTMLLabelElement>>;
|
|
193
192
|
|
|
194
193
|
declare function ResizablePanelGroup({ className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>): JSX.Element;
|
|
195
|
-
declare const ResizablePanel: React$1.ForwardRefExoticComponent<Omit<React$1.HTMLAttributes<
|
|
196
|
-
className?: string
|
|
194
|
+
declare const ResizablePanel: React$1.ForwardRefExoticComponent<Omit<React$1.HTMLAttributes<HTMLSpanElement | HTMLElement | HTMLObjectElement | HTMLParagraphElement | HTMLSelectElement | HTMLAnchorElement | HTMLButtonElement | HTMLDivElement | HTMLFormElement | HTMLHeadingElement | HTMLImageElement | HTMLInputElement | HTMLLabelElement | HTMLLIElement | HTMLOListElement | HTMLUListElement | HTMLAreaElement | HTMLAudioElement | HTMLBaseElement | HTMLQuoteElement | HTMLBodyElement | HTMLBRElement | HTMLCanvasElement | HTMLTableColElement | HTMLDataElement | HTMLDataListElement | HTMLModElement | HTMLDetailsElement | HTMLDialogElement | HTMLDListElement | HTMLEmbedElement | HTMLFieldSetElement | HTMLHeadElement | HTMLHRElement | HTMLHtmlElement | HTMLIFrameElement | HTMLLegendElement | HTMLLinkElement | HTMLMapElement | HTMLMetaElement | HTMLMeterElement | HTMLOptGroupElement | HTMLOptionElement | HTMLOutputElement | HTMLPreElement | HTMLProgressElement | HTMLSlotElement | HTMLScriptElement | HTMLSourceElement | HTMLStyleElement | HTMLTableElement | HTMLTemplateElement | HTMLTableSectionElement | HTMLTableCellElement | HTMLTextAreaElement | HTMLTimeElement | HTMLTitleElement | HTMLTableRowElement | HTMLTrackElement | HTMLVideoElement | HTMLTableCaptionElement | HTMLMenuElement | HTMLPictureElement>, "id" | "onResize"> & {
|
|
195
|
+
className?: string;
|
|
197
196
|
collapsedSize?: number | undefined;
|
|
198
197
|
collapsible?: boolean | undefined;
|
|
199
198
|
defaultSize?: number | undefined;
|
|
200
|
-
id?: string
|
|
199
|
+
id?: string;
|
|
201
200
|
maxSize?: number | undefined;
|
|
202
201
|
minSize?: number | undefined;
|
|
203
|
-
onCollapse?: ResizablePrimitive.PanelOnCollapse
|
|
204
|
-
onExpand?: ResizablePrimitive.PanelOnExpand
|
|
205
|
-
onResize?: ResizablePrimitive.PanelOnResize
|
|
206
|
-
order?: number
|
|
207
|
-
style?: object
|
|
202
|
+
onCollapse?: ResizablePrimitive.PanelOnCollapse;
|
|
203
|
+
onExpand?: ResizablePrimitive.PanelOnExpand;
|
|
204
|
+
onResize?: ResizablePrimitive.PanelOnResize;
|
|
205
|
+
order?: number;
|
|
206
|
+
style?: object;
|
|
208
207
|
tagName?: keyof HTMLElementTagNameMap | undefined;
|
|
209
208
|
} & {
|
|
210
|
-
children?: React$1.ReactNode;
|
|
209
|
+
children?: React$1.ReactNode | undefined;
|
|
211
210
|
} & React$1.RefAttributes<ResizablePrimitive.ImperativePanelHandle>>;
|
|
212
211
|
declare function ResizableHandle({ withHandle, className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
|
|
213
212
|
withHandle?: boolean;
|
package/dist/ui.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {e}from'./chunk-GXUHAW3R.js';export{e as Separator,b as Toggle,c as ToggleGroup,d as ToggleGroupItem,a as toggleVariants}from'./chunk-GXUHAW3R.js';import {a as a$2}from'./chunk-UTZ7XOUK.js';export{a as Input}from'./chunk-UTZ7XOUK.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-ZUOOAEAL.js';export{a as Table,c as TableBody,h as TableCaption,g as TableCell,d as TableFooter,f as TableHead,b as TableHeader,e as TableRow}from'./chunk-OJCXEL7M.js';import {a as a$1,b as b$1,c,e as e$1}from'./chunk-OV2SJGU3.js';export{b as Tooltip,e as TooltipContent,d as TooltipPortal,a as TooltipProvider,c as TooltipTrigger}from'./chunk-OV2SJGU3.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-7ZFZY5R4.js';export{k as Command,l as CommandDialog,o as CommandEmpty,p as CommandGroup,m as CommandInput,r as CommandItem,n as CommandList,q as CommandSeparator,s as CommandShortcut,a as Dialog,d as DialogClose,f as DialogContent,j as DialogDescription,h as DialogFooter,g as DialogHeader,e as DialogOverlay,c as DialogPortal,i as DialogTitle,b as DialogTrigger,t as ScrollArea,u as ScrollBar}from'./chunk-VVAW7U22.js';export{b as Badge,a as badgeVariants}from'./chunk-LEEJFMT6.js';export{a as Avatar,c as AvatarFallback,b as AvatarImage}from'./chunk-G3L524HS.js';import {a as a$3}from'./chunk-JNAHBJHF.js';export{a as Skeleton}from'./chunk-JNAHBJHF.js';import {b}from'./chunk-W632YC7D.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,a as buttonVariants}from'./chunk-W632YC7D.js';import {a}from'./chunk-A6DNMUGW.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 d 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=d.Root,Jt=d.Trigger,Ut=d.Close,re=d.Portal,q=r.forwardRef(({className:t,...e},a$1)=>jsx(d.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=d.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(d.Content,{className:a(qt({side:t}),e),ref:s,...f,children:[a$1,jsxs(d.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=d.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(d.Title,{className:a("fk-text-lg fk-font-semibold fk-text-foreground",t),ref:a$1,...e}));fe.displayName=d.Title.displayName;var se=r.forwardRef(({className:t,...e},a$1)=>jsx(d.Description,{className:a("fk-text-sm fk-text-muted-foreground",t),ref:a$1,...e}));se.displayName=d.Description.displayName;var Y=768;function de(){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",le=r.createContext(null);function y(){let t=r.useContext(le);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},l)=>{let u=de(),[h,b]=r.useState(false),[P,Se]=r.useState(t),R=e??P,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(le.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:l,...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:l,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}):l?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 da=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}));da.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 la=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}));la.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},l)=>{let u=t?Slot:"button",{isMobile:h,state:b}=y(),P=jsx(u,{ref:l,"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:P}),jsx(e$1,{side:"right",align:"center",hidden:b!=="collapsed"||h,...s})]})):P});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(a$3,{className:"fk-size-4 fk-rounded-md","data-sidebar":"menu-skeleton-icon"}),jsx(a$3,{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(l=>l.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(l=>jsx(z,{children:jsx(B,{asChild:true,isActive:location.pathname.includes(`/list/${l.plural}`),tooltip:A(l.menu?.label??l.plural),children:jsxs(NavLink,{to:`list/${l.plural}`,children:[l.menu?.icon??createElement(G[be(l.name)],{className:"fk-h-4 fk-w-4 fk-mr-2",strokeWidth:2}),jsx("span",{children:A(l.menu?.label??l.plural)})]})})},l.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';import {e}from'./chunk-5MTVN77Y.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-5MTVN77Y.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';import {a as a$2}from'./chunk-OX6FVDUT.js';export{a as Input}from'./chunk-OX6FVDUT.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-OTQ3BR2A.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 d 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=d.Root,Jt=d.Trigger,Ut=d.Close,re=d.Portal,q=r.forwardRef(({className:t,...e},a$1)=>jsx(d.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=d.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(d.Content,{className:a(qt({side:t}),e),ref:s,...f,children:[a$1,jsxs(d.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=d.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(d.Title,{className:a("fk-text-lg fk-font-semibold fk-text-foreground",t),ref:a$1,...e}));fe.displayName=d.Title.displayName;var se=r.forwardRef(({className:t,...e},a$1)=>jsx(d.Description,{className:a("fk-text-sm fk-text-muted-foreground",t),ref:a$1,...e}));se.displayName=d.Description.displayName;var Y=768;function de(){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",le=r.createContext(null);function y(){let t=r.useContext(le);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},l)=>{let u=de(),[h,b]=r.useState(false),[P,Se]=r.useState(t),R=e??P,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(le.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:l,...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:l,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}):l?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 da=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}));da.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 la=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}));la.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},l)=>{let u=t?Slot:"button",{isMobile:h,state:b}=y(),P=jsx(u,{ref:l,"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:P}),jsx(e$1,{side:"right",align:"center",hidden:b!=="collapsed"||h,...s})]})):P});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(l=>l.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(l=>jsx(z,{children:jsx(B,{asChild:true,isActive:location.pathname.includes(`/list/${l.plural}`),tooltip:A(l.menu?.label??l.plural),children:jsxs(NavLink,{to:`list/${l.plural}`,children:[l.menu?.icon??createElement(G[be(l.name)],{className:"fk-h-4 fk-w-4 fk-mr-2",strokeWidth:2}),jsx("span",{children:A(l.menu?.label??l.plural)})]})})},l.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
|
|
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 = 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","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":"w8EAIA,SAASA,EAAAA,CAAoB,CAC3B,SAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAA4E,CAC1E,OACEC,GAAAA,CAAoB,CAAA,CAAA,UAAA,CAAnB,CACC,SAAA,CAAWC,CAAAA,CAAG,+EAAA,CAAiFH,CAAS,CAAA,CACvG,GAAGC,EACN,CAEJ,CAEA,IAAMG,EAAAA,CAAoC,CAAA,CAAA,MAE1C,SAASC,EAAAA,CAAgB,CACvB,UAAA,CAAAC,CAAAA,CACA,SAAA,CAAAN,CAAAA,CACA,GAAGC,GACL,CAAA,CAEgB,CACd,OACEC,GAAAA,CAAoB,CAAA,CAAA,iBAAA,CAAnB,CACC,SAAA,CAAWC,CAAAA,CACT,8sBAAA,CACAH,CACF,CAAA,CACC,GAAGC,GAAAA,CAEH,QAAA,CAAA,CAAA,CAAQK,CAAAA,EACPJ,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sGAAA,CACb,SAAAA,GAAAA,CAACK,YAAAA,CAAA,CAAa,SAAA,CAAU,mBAAA,CAAoB,CAAA,CAC9C,CAAA,CAEJ,CAEJ,CChCA,IAAMC,CAAAA,CAAuB,CAAA,CAAA,IAAA,CAEvBC,EAAAA,CAA8B,CAAA,CAAA,OAAA,CAE9BC,GAA4B,CAAA,CAAA,KAAA,CAE5BC,EAAAA,CAA6B,CAAA,CAAA,MAAA,CAE7BC,CAAAA,CAAqBC,CAAA,CAAA,UAAA,CAGzB,CAAC,CAAE,SAAA,CAAAb,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GAC1BZ,GAAAA,CAAgB,CAAA,CAAA,OAAA,CAAf,CACC,UAAWC,CAAAA,CACT,yMAAA,CACAH,CACF,CAAA,CACC,GAAGC,CAAAA,CACJ,GAAA,CAAKa,GAAAA,CACP,CACD,EACDF,CAAAA,CAAa,WAAA,CAA6B,CAAA,CAAA,OAAA,CAAQ,WAAA,CAElD,IAAMG,EAAAA,CAAgBC,IACpB,sOAAA,CACA,CACE,QAAA,CAAU,CACR,IAAA,CAAM,CACJ,GAAA,CAAK,kHAAA,CACL,MAAA,CACE,2HAAA,CACF,IAAA,CAAM,kLAAA,CACN,KAAA,CACE,8JACJ,CACF,CAAA,CACA,eAAA,CAAiB,CACf,IAAA,CAAM,OACR,CACF,CACF,CAAA,CAMMC,CAAAA,CAAqBJ,CAAA,CAAA,UAAA,CACzB,CAAC,CAAE,IAAA,CAAAK,CAAAA,CAAO,OAAA,CAAS,SAAA,CAAAlB,CAAAA,CAAW,SAAAmB,GAAAA,CAAU,GAAGlB,CAAM,CAAA,CAAGa,CAAAA,GAClDM,IAAAA,CAACT,EAAAA,CAAA,CACC,QAAA,CAAA,CAAAT,GAAAA,CAACU,CAAAA,CAAA,EAAa,CAAA,CACdQ,IAAAA,CAAgB,CAAA,CAAA,OAAA,CAAf,CAAuB,UAAWjB,CAAAA,CAAGY,EAAAA,CAAc,CAAE,IAAA,CAAAG,CAAK,CAAC,CAAA,CAAGlB,CAAS,CAAA,CAAG,GAAA,CAAKc,CAAAA,CAAM,GAAGb,CAAAA,CACtF,QAAA,CAAA,CAAAkB,GAAAA,CACDC,IAAAA,CAAgB,QAAf,CAAqB,SAAA,CAAU,oRAAA,CAC9B,QAAA,CAAA,CAAAlB,GAAAA,CAACmB,CAAAA,CAAA,CAAE,SAAA,CAAU,eAAA,CAAgB,CAAA,CAC7BnB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,YAAA,CAAa,QAAA,CAAA,OAAA,CAAK,CAAA,CAAA,CACpC,GACF,CAAA,CAAA,CACF,CAEJ,EACAe,CAAAA,CAAa,WAAA,CAA6B,CAAA,CAAA,OAAA,CAAQ,WAAA,CAElD,SAASK,EAAAA,CAAY,CAAE,SAAA,CAAAtB,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAsD,CAC/F,OACEC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWC,CAAAA,CAAG,iEAAA,CAAmEH,CAAS,CAAA,CAAI,GAAGC,CAAAA,CAAO,CAEjH,CACAqB,EAAAA,CAAY,WAAA,CAAc,aAAA,CAE1B,SAASC,EAAAA,CAAY,CAAE,SAAA,CAAAvB,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAsD,CAC/F,OACEC,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWC,CAAAA,CAAG,8EAAA,CAAgFH,CAAS,CAAA,CACtG,GAAGC,CAAAA,CACN,CAEJ,CACAsB,EAAAA,CAAY,WAAA,CAAc,aAAA,CAE1B,IAAMC,EAAAA,CAAmBX,CAAA,CAAA,UAAA,CAGvB,CAAC,CAAE,SAAA,CAAAb,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GAC1BZ,GAAAA,CAAgB,CAAA,CAAA,KAAA,CAAf,CACC,SAAA,CAAWC,CAAAA,CAAG,gDAAA,CAAkDH,CAAS,CAAA,CACzE,GAAA,CAAKc,GAAAA,CACJ,GAAGb,CAAAA,CACN,CACD,EACDuB,EAAAA,CAAW,WAAA,CAA6B,CAAA,CAAA,KAAA,CAAM,YAE9C,IAAMC,EAAAA,CAAyBZ,CAAA,CAAA,UAAA,CAG7B,CAAC,CAAE,SAAA,CAAAb,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GAC1BZ,GAAAA,CAAgB,CAAA,CAAA,WAAA,CAAf,CAA2B,SAAA,CAAWC,CAAAA,CAAG,sCAAuCH,CAAS,CAAA,CAAG,GAAA,CAAKc,GAAAA,CAAM,GAAGb,CAAAA,CAAO,CACnH,EACDwB,EAAAA,CAAiB,WAAA,CAA6B,CAAA,CAAA,WAAA,CAAY,WAAA,CCvG1D,IAAMC,CAAAA,CAAoB,GAAA,CAEnB,SAASC,IAAc,CAC5B,GAAM,CAACC,CAAAA,CAAUC,CAAW,CAAA,CAAUC,CAAA,CAAA,QAAA,CAA8B,MAAS,CAAA,CAE7E,OAAMA,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,IAAMC,CAAAA,CAAM,MAAA,CAAO,WAAW,CAAA,YAAA,EAAeL,CAAAA,CAAoB,CAAC,CAAA,GAAA,CAAK,CAAA,CACjEM,CAAAA,CAAW,IAAM,CACrBH,CAAAA,CAAY,MAAA,CAAO,UAAA,CAAaH,CAAiB,EACnD,CAAA,CACA,OAAAK,CAAAA,CAAI,iBAAiB,QAAA,CAAUC,CAAQ,CAAA,CACvCH,CAAAA,CAAY,MAAA,CAAO,UAAA,CAAaH,CAAiB,CAAA,CAC1C,IAAMK,CAAAA,CAAI,mBAAA,CAAoB,QAAA,CAAUC,CAAQ,CACzD,CAAA,CAAG,EAAE,CAAA,CAEE,CAAC,CAACJ,CACX,CCHA,IAAMK,EAAAA,CAAsB,uBAAA,CACtBC,EAAAA,CAAyB,IAAA,CAAU,GAAK,CAAA,CACxCC,EAAAA,CAAgB,OAAA,CAChBC,EAAAA,CAAuB,OAAA,CACvBC,EAAAA,CAAqB,MAAA,CACrBC,EAAAA,CAA4B,GAAA,CAY5BC,EAAAA,CAAuB,CAAA,CAAA,aAAA,CAAqC,IAAI,CAAA,CAEtE,SAASC,CAAAA,EAAa,CACpB,IAAMC,CAAAA,CAAgB,CAAA,CAAA,UAAA,CAAWF,EAAc,CAAA,CAC/C,GAAI,CAACE,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,mDAAmD,CAAA,CAGrE,OAAOA,CACT,CAEA,IAAMC,GAAwB,CAAA,CAAA,UAAA,CAO5B,CAAC,CAAE,WAAA,CAAAC,CAAAA,CAAc,IAAA,CAAM,IAAA,CAAMC,CAAAA,CAAU,YAAA,CAAcC,GAAAA,CAAa,SAAA,CAAA7C,CAAAA,CAAW,KAAA,CAAA8C,CAAAA,CAAO,QAAA,CAAA3B,CAAAA,CAAU,GAAGlB,CAAM,CAAA,CAAGa,CAAAA,GAAQ,CAClH,IAAMc,CAAAA,CAAWD,EAAAA,EAAY,CACvB,CAACoB,CAAAA,CAAYC,CAAa,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,KAAK,CAAA,CAIlD,CAACC,EAAOC,EAAQ,CAAA,CAAU,CAAA,CAAA,QAAA,CAASP,CAAW,CAAA,CAC9CQ,CAAAA,CAAOP,CAAAA,EAAYK,CAAAA,CACnBG,CAAAA,CAAgB,CAAA,CAAA,WAAA,CACnBC,CAAAA,EAAmD,CAClD,IAAMC,CAAAA,CAAY,OAAOD,CAAAA,EAAU,WAAaA,CAAAA,CAAMF,CAAI,CAAA,CAAIE,CAAAA,CAE1DR,GAAAA,CACFA,GAAAA,CAAYS,CAAS,CAAA,CAErBJ,EAAAA,CAASI,CAAS,CAAA,CAIpB,QAAA,CAAS,MAAA,CAAS,CAAA,EAAGrB,EAAmB,CAAA,CAAA,EAAIqB,CAAS,CAAA,kBAAA,EAAqBpB,EAAsB,CAAA,EAClG,CAAA,CACA,CAACW,GAAAA,CAAaM,CAAI,CACpB,CAAA,CAGMI,CAAAA,CAAsB,CAAA,CAAA,WAAA,CAAY,IAC/B3B,CAAAA,CAAWoB,CAAAA,CAAeG,CAAAA,EAAS,CAACA,CAAI,CAAA,CAAIC,CAAAA,CAASD,CAAAA,EAAS,CAACA,CAAI,CAAA,CACzE,CAACvB,CAAAA,CAAUwB,CAAAA,CAASJ,CAAa,CAAC,CAAA,CAG/B,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,IAAMQ,CAAAA,CAAiBC,CAAAA,EAAyB,CAC1CA,CAAAA,CAAM,GAAA,GAAQnB,EAAAA,GAA8BmB,CAAAA,CAAM,OAAA,EAAWA,CAAAA,CAAM,OAAA,CAAA,GACrEA,CAAAA,CAAM,cAAA,EAAe,CACrBF,CAAAA,EAAc,EAElB,CAAA,CAEA,cAAO,gBAAA,CAAiB,SAAA,CAAWC,CAAa,CAAA,CACzC,IAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,CAAWA,CAAa,CAClE,CAAA,CAAG,CAACD,CAAa,CAAC,CAAA,CAIlB,IAAMG,GAAQP,CAAAA,CAAO,UAAA,CAAa,WAAA,CAE5BQ,EAAAA,CAAqB,CAAA,CAAA,OAAA,CACzB,KAAO,CACL,KAAA,CAAAD,EAAAA,CACA,IAAA,CAAAP,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,QAAA,CAAAxB,CAAAA,CACA,UAAA,CAAAmB,EACA,aAAA,CAAAC,CAAAA,CACA,aAAA,CAAAO,CACF,CAAA,CAAA,CACA,CAACG,EAAAA,CAAOP,CAAAA,CAAMC,CAAAA,CAASxB,CAAAA,CAAUmB,CAAAA,CAAYC,CAAAA,CAAeO,CAAa,CAC3E,CAAA,CAEA,OACErD,IAACqC,EAAAA,CAAe,QAAA,CAAf,CAAwB,KAAA,CAAOoB,EAAAA,CAC9B,QAAA,CAAAzD,GAAAA,CAAC0D,GAAAA,CAAA,CAAgB,aAAA,CAAe,CAAA,CAC9B,QAAA,CAAA1D,GAAAA,CAAC,KAAA,CAAA,CACC,KAAA,CACE,CACE,kBAAmBiC,EAAAA,CACnB,sBAAA,CAAwBE,EAAAA,CACxB,GAAGS,CACL,CAAA,CAEF,SAAA,CAAW3C,CAAAA,CACT,wGAAA,CACAH,CACF,CAAA,CACA,GAAA,CAAKc,CAAAA,CACJ,GAAGb,CAAAA,CAEH,QAAA,CAAAkB,EACH,CAAA,CACF,CAAA,CACF,CAEJ,CAAC,EACDuB,EAAAA,CAAgB,WAAA,CAAc,iBAAA,CAE9B,IAAMmB,CAAAA,CAAgB,CAAA,CAAA,UAAA,CAOpB,CAAC,CAAE,IAAA,CAAA3C,CAAAA,CAAO,MAAA,CAAQ,OAAA,CAAA4C,CAAAA,CAAU,SAAA,CAAW,WAAA,CAAAC,GAAAA,CAAc,WAAA,CAAa,SAAA,CAAA/D,CAAAA,CAAW,QAAA,CAAAmB,CAAAA,CAAU,GAAGlB,CAAM,CAAA,CAAGa,CAAAA,GAAQ,CAC3G,GAAM,CAAE,QAAA,CAAAc,CAAAA,CAAU,KAAA,CAAA8B,CAAAA,CAAO,UAAA,CAAAX,CAAAA,CAAY,aAAA,CAAAC,CAAc,CAAA,CAAIR,CAAAA,EAAW,CAElE,OAAIuB,GAAAA,GAAgB,MAAA,CAEhB7D,GAAAA,CAAC,KAAA,CAAA,CACC,UAAWC,CAAAA,CACT,+FAAA,CACAH,CACF,CAAA,CACA,GAAA,CAAKc,CAAAA,CACJ,GAAGb,CAAAA,CAEH,QAAA,CAAAkB,CAAAA,CACH,CAAA,CAIAS,CAAAA,CAEA1B,GAAAA,CAACM,CAAAA,CAAA,CAAM,IAAA,CAAMuC,EAAY,YAAA,CAAcC,CAAAA,CAAgB,GAAG/C,CAAAA,CACxD,QAAA,CAAAC,GAAAA,CAACe,CAAAA,CAAA,CACC,cAAA,CAAa,SAAA,CACb,aAAA,CAAY,MAAA,CACZ,SAAA,CAAU,6FAAA,CACV,KAAA,CACE,CACE,kBAAmBmB,EACrB,CAAA,CAEF,IAAA,CAAMlB,CAAAA,CAEN,QAAA,CAAAhB,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yCAAA,CAA2C,QAAA,CAAAiB,CAAAA,CAAS,CAAA,CACrE,CAAA,CACF,CAAA,CAKFC,IAAAA,CAAC,KAAA,CAAA,CACC,IAAKN,CAAAA,CACL,SAAA,CAAU,+EAAA,CACV,YAAA,CAAY4C,CAAAA,CACZ,kBAAA,CAAkBA,CAAAA,GAAU,WAAA,CAAcK,GAAAA,CAAc,EAAA,CACxD,cAAA,CAAcD,CAAAA,CACd,WAAA,CAAW5C,CAAAA,CAGX,QAAA,CAAA,CAAAhB,GAAAA,CAAC,OACC,SAAA,CAAWC,CAAAA,CACT,oHAAA,CACA,2CAAA,CACA,uCAAA,CACA2D,CAAAA,GAAY,UAAA,EAAcA,CAAAA,GAAY,OAAA,CAClC,yFAAA,CACA,2DACN,CAAA,CACF,CAAA,CACA5D,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWC,EACT,yKAAA,CACAe,CAAAA,GAAS,MAAA,CACL,sFAAA,CACA,wFAAA,CAEJ4C,CAAAA,GAAY,UAAA,EAAcA,CAAAA,GAAY,OAAA,CAClC,qKAAA,CACA,kIAAA,CACJ9D,CACF,CAAA,CACC,GAAGC,CAAAA,CAEJ,QAAA,CAAAC,GAAAA,CAAC,KAAA,CAAA,CACC,cAAA,CAAa,SAAA,CACb,SAAA,CAAU,0OAAA,CAET,QAAA,CAAAiB,CAAAA,CACH,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAAC,CAAA,CACD0C,CAAAA,CAAQ,WAAA,CAAc,SAAA,KAEhBG,EAAAA,CAAuB,CAAA,CAAA,UAAA,CAC3B,CAAC,CAAE,SAAA,CAAAhE,CAAAA,CAAW,OAAA,CAAAiE,CAAAA,CAAS,GAAGhE,GAAM,CAAA,CAAGa,CAAAA,GAAQ,CACzC,GAAM,CAAE,QAAA,CAAAc,EAAU,aAAA,CAAA2B,CAAc,CAAA,CAAIf,CAAAA,EAAW,CAE/C,OACEpB,IAAAA,CAAC8C,CAAAA,CAAA,CACC,GAAA,CAAKpD,CAAAA,CACL,cAAA,CAAa,SAAA,CACb,OAAA,CAAQ,OAAA,CACR,IAAA,CAAK,OACL,SAAA,CAAWX,CAAAA,CAAG,eAAA,CAAiBH,CAAS,CAAA,CACxC,OAAA,CAAUyD,CAAAA,EAAU,CAClBQ,CAAAA,GAAUR,CAAK,CAAA,CACfF,CAAAA,GACF,CAAA,CACC,GAAGtD,GAAAA,CAEH,UAAA2B,CAAAA,CAAW1B,GAAAA,CAACiE,IAAAA,CAAA,EAAS,CAAA,CAAKjE,GAAAA,CAACkE,SAAAA,CAAA,EAAc,CAAA,CAC1ClE,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,YAAA,CAAa,QAAA,CAAA,gBAAA,CAAc,CAAA,CAAA,CAC7C,CAEJ,CACF,EACA8D,EAAAA,CAAe,WAAA,CAAc,gBAAA,CAE7B,IAAMK,CAAAA,CAAoB,CAAA,CAAA,UAAA,CACxB,CAAC,CAAE,SAAA,CAAArE,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GAAQ,CAChC,GAAM,CAAE,aAAA,CAAAyC,CAAc,CAAA,CAAIf,CAAAA,EAAW,CAErC,OACEtC,GAAAA,CAAC,QAAA,CAAA,CACC,GAAA,CAAKY,GAAAA,CACL,cAAA,CAAa,MAAA,CACb,YAAA,CAAW,gBAAA,CACX,QAAA,CAAU,GACV,OAAA,CAASyC,CAAAA,CACT,KAAA,CAAM,gBAAA,CACN,SAAA,CAAWpD,CAAAA,CACT,8TAAA,CACA,kFAAA,CACA,8HAAA,CACA,kKAAA,CACA,8DAAA,CACA,8DAAA,CACAH,CACF,CAAA,CACC,GAAGC,CAAAA,CACN,CAEJ,CACF,CAAA,CACAoE,CAAAA,CAAY,WAAA,CAAc,aAAA,CAE1B,IAAMC,EAAAA,CAAqB,CAAA,CAAA,UAAA,CAAyD,CAAC,CAAE,SAAA,CAAAtE,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GAE1GZ,IAAC,MAAA,CAAA,CACC,GAAA,CAAKY,GAAAA,CACL,SAAA,CAAWX,CAAAA,CACT,+EAAA,CACA,oDAAA,CACAH,CACF,CAAA,CACC,GAAGC,CAAAA,CACN,CAEH,EACDqE,EAAAA,CAAa,WAAA,CAAc,cAAA,CAE3B,IAAMC,EAAAA,CAAqB,CAAA,CAAA,UAAA,CACzB,CAAC,CAAE,SAAA,CAAAvE,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GAEtBZ,GAAAA,CAACsE,GAAAA,CAAA,CACC,GAAA,CAAK1D,GAAAA,CACL,cAAA,CAAa,QACb,SAAA,CAAWX,CAAAA,CACT,6GAAA,CACAH,CACF,CAAA,CACC,GAAGC,CAAAA,CACN,CAGN,CAAA,CACAsE,EAAAA,CAAa,WAAA,CAAc,cAAA,CAE3B,IAAME,EAAAA,CAAsB,CAAA,CAAA,UAAA,CAAwD,CAAC,CAAE,SAAA,CAAAzE,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GAE1GZ,GAAAA,CAAC,KAAA,CAAA,CAAI,GAAA,CAAKY,GAAAA,CAAK,cAAA,CAAa,QAAA,CAAS,SAAA,CAAWX,CAAAA,CAAG,qCAAA,CAAuCH,CAAS,EAAI,GAAGC,CAAAA,CAAO,CAEpH,CAAA,CACDwE,EAAAA,CAAc,WAAA,CAAc,eAAA,CAE5B,IAAMC,EAAAA,CAAsB,CAAA,CAAA,UAAA,CAAwD,CAAC,CAAE,SAAA,CAAA1E,CAAAA,CAAW,GAAGC,CAAM,EAAGa,GAAAA,GAE1GZ,GAAAA,CAAC,KAAA,CAAA,CAAI,GAAA,CAAKY,GAAAA,CAAK,cAAA,CAAa,QAAA,CAAS,SAAA,CAAWX,CAAAA,CAAG,qCAAA,CAAuCH,CAAS,CAAA,CAAI,GAAGC,CAAAA,CAAO,CAEpH,CAAA,CACDyE,GAAc,WAAA,CAAc,eAAA,CAE5B,IAAMC,EAAAA,CAAyB,CAAA,CAAA,UAAA,CAC7B,CAAC,CAAE,SAAA,CAAA3E,CAAAA,CAAW,GAAGC,GAAM,CAAA,CAAGa,GAAAA,GAEtBZ,GAAAA,CAAC0E,CAAAA,CAAA,CACC,GAAA,CAAK9D,GAAAA,CACL,cAAA,CAAa,WAAA,CACb,SAAA,CAAWX,CAAAA,CAAG,wCAAA,CAA0CH,CAAS,CAAA,CAChE,GAAGC,GAAAA,CACN,CAGN,CAAA,CACA0E,EAAAA,CAAiB,WAAA,CAAc,kBAAA,CAE/B,IAAME,EAAAA,CAAuB,CAAA,CAAA,UAAA,CAAwD,CAAC,CAAE,SAAA,CAAA7E,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GAE3GZ,GAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKY,GAAAA,CACL,cAAA,CAAa,SAAA,CACb,UAAWX,CAAAA,CACT,4GAAA,CACAH,CACF,CAAA,CACC,GAAGC,CAAAA,CACN,CAEH,CAAA,CACD4E,EAAAA,CAAe,WAAA,CAAc,gBAAA,CAE7B,IAAMC,CAAAA,CAAqB,CAAA,CAAA,UAAA,CAAwD,CAAC,CAAE,UAAA9E,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GAEzGZ,GAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKY,GAAAA,CACL,cAAA,CAAa,OAAA,CACb,SAAA,CAAWX,CAAAA,CAAG,6DAAA,CAA+DH,CAAS,CAAA,CACrF,GAAGC,CAAAA,CACN,CAEH,CAAA,CACD6E,CAAAA,CAAa,WAAA,CAAc,cAAA,CAE3B,IAAMC,EAAAA,CAA0B,CAAA,CAAA,UAAA,CAC9B,CAAC,CAAE,SAAA,CAAA/E,CAAAA,CAAW,OAAA,CAAAgF,CAAAA,CAAU,KAAA,CAAO,GAAG/E,GAAM,CAAA,CAAGa,CAAAA,GAIvCZ,GAAAA,CAHW8E,CAAAA,CAAUC,IAAAA,CAAO,KAAA,CAG3B,CACC,GAAA,CAAKnE,CAAAA,CACL,cAAA,CAAa,aAAA,CACb,SAAA,CAAWX,CAAAA,CACT,uRAAA,CACA,mFAAA,CACAH,CACF,CAAA,CACC,GAAGC,GAAAA,CACN,CAGN,CAAA,CACA8E,EAAAA,CAAkB,WAAA,CAAc,mBAAA,CAEhC,IAAMG,EAAAA,CAA2B,CAAA,CAAA,UAAA,CAC/B,CAAC,CAAE,SAAA,CAAAlF,CAAAA,CAAW,OAAA,CAAAgF,EAAU,KAAA,CAAO,GAAG/E,GAAM,CAAA,CAAGa,CAAAA,GAIvCZ,GAAAA,CAHW8E,CAAAA,CAAUC,IAAAA,CAAO,QAAA,CAG3B,CACC,GAAA,CAAKnE,CAAAA,CACL,cAAA,CAAa,cAAA,CACb,SAAA,CAAWX,CAAAA,CACT,mVAAA,CAEA,wDAAA,CACA,yCAAA,CACAH,CACF,CAAA,CACC,GAAGC,GAAAA,CACN,CAGN,CAAA,CACAiF,EAAAA,CAAmB,WAAA,CAAc,oBAAA,CAEjC,IAAMC,EAAAA,CAA4B,CAAA,CAAA,UAAA,CAChC,CAAC,CAAE,SAAA,CAAAnF,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GACxBZ,GAAAA,CAAC,KAAA,CAAA,CAAI,GAAA,CAAKY,GAAAA,CAAK,cAAA,CAAa,eAAA,CAAgB,SAAA,CAAWX,CAAAA,CAAG,sBAAA,CAAwBH,CAAS,EAAI,GAAGC,CAAAA,CAAO,CAE7G,CAAA,CACAkF,EAAAA,CAAoB,WAAA,CAAc,qBAAA,CAElC,IAAMC,CAAAA,CAAoB,CAAA,CAAA,UAAA,CAAyD,CAAC,CAAE,SAAA,CAAApF,CAAAA,CAAW,GAAGC,CAAM,EAAGa,GAAAA,GAC3GZ,GAAAA,CAAC,IAAA,CAAA,CACC,GAAA,CAAKY,GAAAA,CACL,cAAA,CAAa,MAAA,CACb,SAAA,CAAWX,CAAAA,CAAG,2DAAA,CAA6DH,CAAS,CAAA,CACnF,GAAGC,CAAAA,CACN,CACD,CAAA,CACDmF,EAAY,WAAA,CAAc,aAAA,CAE1B,IAAMC,CAAAA,CAAwB,CAAA,CAAA,UAAA,CAAsD,CAAC,CAAE,SAAA,CAAArF,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GAC5GZ,GAAAA,CAAC,IAAA,CAAA,CAAG,GAAA,CAAKY,IAAK,cAAA,CAAa,WAAA,CAAY,SAAA,CAAWX,CAAAA,CAAG,gCAAA,CAAkCH,CAAS,CAAA,CAAI,GAAGC,CAAAA,CAAO,CAC/G,CAAA,CACDoF,CAAAA,CAAgB,WAAA,CAAc,iBAAA,CAE9B,IAAMC,EAAAA,CAA4BtE,IAChC,m5BAAA,CACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,OAAA,CAAS,oEAAA,CACT,OAAA,CACE,6LACJ,CAAA,CACA,IAAA,CAAM,CACJ,OAAA,CAAS,mBAAA,CACT,EAAA,CAAI,oBACJ,EAAA,CAAI,0DACN,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SAAA,CACT,IAAA,CAAM,SACR,CACF,CACF,CAAA,CAEMuE,CAAAA,CAA0B,CAAA,CAAA,UAAA,CAO9B,CAAC,CAAE,OAAA,CAAAP,CAAAA,CAAU,KAAA,CAAO,QAAA,CAAAQ,CAAAA,CAAW,KAAA,CAAO,OAAA,CAAA1B,GAAAA,CAAU,SAAA,CAAW,IAAA,CAAA2B,CAAAA,CAAO,SAAA,CAAW,OAAA,CAAAC,CAAAA,CAAS,SAAA,CAAA1F,IAAW,GAAGC,CAAM,CAAA,CAAGa,CAAAA,GAAQ,CACrH,IAAM6E,CAAAA,CAAOX,CAAAA,CAAUC,IAAAA,CAAO,QAAA,CACxB,CAAE,QAAA,CAAArD,CAAAA,CAAU,KAAA,CAAA8B,CAAM,CAAA,CAAIlB,GAAW,CAEjCoD,CAAAA,CACJ1F,GAAAA,CAACyF,CAAAA,CAAA,CACC,GAAA,CAAK7E,CAAAA,CACL,cAAA,CAAa,aAAA,CACb,WAAA,CAAW2E,CAAAA,CACX,aAAA,CAAaD,CAAAA,CACb,SAAA,CAAWrF,CAAAA,CAAGmF,EAAAA,CAA0B,CAAE,OAAA,CAAAxB,GAAAA,CAAS,IAAA,CAAA2B,CAAK,CAAC,CAAA,CAAGzF,GAAS,CAAA,CACpE,GAAGC,CAAAA,CACN,CAAA,CAGF,OAAKyF,CAAAA,EAID,OAAOA,CAAAA,EAAY,QAAA,GACrBA,EAAU,CACR,QAAA,CAAUA,CACZ,CAAA,CAAA,CAIAtE,IAAAA,CAACyE,GAAAA,CAAA,CACC,QAAA,CAAA,CAAA3F,GAAAA,CAAC4F,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CAAE,QAAA,CAAAF,CAAAA,CAAO,CAAA,CAChC1F,IAAC6F,GAAAA,CAAA,CAAe,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,QAAA,CAAS,MAAA,CAAQrC,CAAAA,GAAU,WAAA,EAAe9B,CAAAA,CAAW,GAAG8D,CAAAA,CAAS,CAAA,CAAA,CACtG,CAAA,EAbOE,CAeX,CAAC,EACDL,CAAAA,CAAkB,WAAA,CAAc,mBAAA,CAEhC,IAAMS,EAAAA,CAA0B,CAAA,CAAA,UAAA,CAM9B,CAAC,CAAE,SAAA,CAAAhG,CAAAA,CAAW,OAAA,CAAAgF,CAAAA,CAAU,KAAA,CAAO,WAAA,CAAAiB,GAAAA,CAAc,KAAA,CAAO,GAAGhG,CAAM,CAAA,CAAGa,CAAAA,GAI9DZ,GAAAA,CAHW8E,CAAAA,CAAUC,IAAAA,CAAO,QAAA,CAG3B,CACC,GAAA,CAAKnE,CAAAA,CACL,cAAA,CAAa,aAAA,CACb,SAAA,CAAWX,CAAAA,CACT,4YAAA,CAEA,wDAAA,CACA,wCACA,8CAAA,CACA,yCAAA,CACA,yCAAA,CACA8F,GAAAA,EACE,yMAAA,CACFjG,CACF,CAAA,CACC,GAAGC,CAAAA,CACN,CAEH,CAAA,CACD+F,EAAAA,CAAkB,WAAA,CAAc,mBAAA,CAEhC,IAAME,EAAAA,CAAyB,aAC7B,CAAC,CAAE,SAAA,CAAAlG,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GACxBZ,GAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKY,GAAAA,CACL,cAAA,CAAa,YAAA,CACb,SAAA,CAAWX,CAAAA,CACT,sNACA,gIAAA,CACA,uCAAA,CACA,8CAAA,CACA,yCAAA,CACA,yCAAA,CACAH,CACF,CAAA,CACC,GAAGC,CAAAA,CACN,CAEJ,CAAA,CACAiG,EAAAA,CAAiB,WAAA,CAAc,kBAAA,CAE/B,IAAMC,EAAAA,CAA4B,aAKhC,CAAC,CAAE,SAAA,CAAAnG,CAAAA,CAAW,QAAA,CAAAoG,CAAAA,CAAW,KAAA,CAAO,GAAGnG,GAAM,CAAA,CAAGa,CAAAA,GAAQ,CAEpD,IAAMuF,CAAAA,CAAc,CAAA,CAAA,OAAA,CAAQ,IACnB,GAAG,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,EAAO,CAAI,EAAE,CAAA,CAAI,EAAE,CAAA,CAAA,CAAA,CAC5C,EAAE,CAAA,CAEL,OACEjF,IAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKN,EACL,cAAA,CAAa,eAAA,CACb,SAAA,CAAWX,CAAAA,CAAG,+DAAA,CAAiEH,CAAS,CAAA,CACvF,GAAGC,GAAAA,CAEH,QAAA,CAAA,CAAAmG,CAAAA,EAAYlG,GAAAA,CAACoG,GAAAA,CAAA,CAAS,SAAA,CAAU,yBAAA,CAA0B,eAAa,oBAAA,CAAqB,CAAA,CAC7FpG,GAAAA,CAACoG,GAAAA,CAAA,CACC,SAAA,CAAU,8CAAA,CACV,cAAA,CAAa,oBAAA,CACb,KAAA,CACE,CACE,kBAAA,CAAoBD,CACtB,CAAA,CAEJ,CAAA,CAAA,CACF,CAEJ,CAAC,CAAA,CACDF,EAAAA,CAAoB,WAAA,CAAc,qBAAA,CAElC,IAAMI,EAAAA,CAAuB,CAAA,CAAA,UAAA,CAC3B,CAAC,CAAE,SAAA,CAAAvG,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GACxBZ,GAAAA,CAAC,IAAA,CAAA,CACC,GAAA,CAAKY,GAAAA,CACL,cAAA,CAAa,UAAA,CACb,SAAA,CAAWX,CAAAA,CACT,8HAAA,CACA,yCAAA,CACAH,CACF,CAAA,CACC,GAAGC,CAAAA,CACN,CAEJ,CAAA,CACAsG,EAAAA,CAAe,YAAc,gBAAA,CAE7B,IAAMC,EAAAA,CAA2B,CAAA,CAAA,UAAA,CAAsD,CAAC,CAAE,GAAGvG,CAAM,CAAA,CAAGa,CAAAA,GACpGZ,GAAAA,CAAC,IAAA,CAAA,CAAG,GAAA,CAAKY,CAAAA,CAAM,GAAGb,CAAAA,CAAO,CAC1B,CAAA,CACDuG,EAAAA,CAAmB,WAAA,CAAc,oBAAA,CAEjC,IAAMC,EAAAA,CAA6B,CAAA,CAAA,UAAA,CAOjC,CAAC,CAAE,OAAA,CAAAzB,CAAAA,CAAU,KAAA,CAAO,IAAA,CAAAS,CAAAA,CAAO,IAAA,CAAM,QAAA,CAAAD,IAAU,SAAA,CAAAxF,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,CAAAA,GAIhEZ,GAAAA,CAHW8E,CAAAA,CAAUC,IAAAA,CAAO,GAAA,CAG3B,CACC,GAAA,CAAKnE,CAAAA,CACL,cAAA,CAAa,iBAAA,CACb,WAAA,CAAW2E,EACX,aAAA,CAAaD,GAAAA,CACb,SAAA,CAAWrF,CAAAA,CACT,wjBAAA,CACA,8FAAA,CACAsF,CAAAA,GAAS,IAAA,EAAQ,YAAA,CACjBA,CAAAA,GAAS,IAAA,EAAQ,YAAA,CACjB,yCAAA,CACAzF,CACF,CAAA,CACC,GAAGC,EACN,CAEH,CAAA,CACDwG,EAAAA,CAAqB,WAAA,CAAc,sBAAA,CCrlBnC,IAAMC,EAAAA,CAAW,OAAO,IAAA,CAAKC,CAAK,CAAA,CAAE,GAAA,CAAKC,CAAAA,GAAc,CACrD,IAAA,CAAMA,CAAAA,CACN,IAAA,CAAMD,CAAAA,CAAMC,CAA8B,CAC5C,CAAA,CAAE,CAAA,CAEIC,EAAAA,CAAO,IAAIC,GAAKJ,EAAAA,CAAU,CAC9B,IAAA,CAAM,CAAC,MAAM,CAAA,CACb,SAAA,CAAW,EACb,CAAC,CAAA,CAEM,SAAS7C,EAAAA,CAAQ,CAAE,SAAA,CAAA7D,CAAAA,CAAW,UAAA,CAAA+G,CAAAA,CAAY,MAAA,CAAAC,CAAO,CAAA,CAA8B,CAEpF,IAAMC,CAAAA,CAAeD,CAAAA,CAAO,MAAA,CAAQE,CAAAA,EAAS,EAAEA,CAAAA,CAAK,IAAA,EAAQ,QAAA,GAAYA,CAAAA,CAAK,IAAA,CAAK,EAC5EC,CAAAA,CAAeC,OAAAA,CAClBF,CAAAA,EAAUA,CAAAA,CAAK,IAAA,EAAM,KAAA,EAASH,CAAAA,EAAY,IAAA,CAAMM,CAAAA,EAAMA,CAAAA,CAAE,IAAA,GAASH,CAAAA,CAAK,IAAA,EAAM,KAAK,CAAA,EAAG,IAAA,EAAS,YAC9FD,CACF,CAAA,CACMK,CAAAA,CAAiBP,CAAAA,EAAY,MAAA,CAAQQ,CAAAA,EAAcJ,CAAAA,CAAaI,CAAAA,CAAU,IAAI,CAAA,EAAG,MAAM,CAAA,CAE7F,OACEnG,IAAAA,CAACyC,CAAAA,CAAA,CAAiB,UAAW7D,CAAAA,CAAW,WAAA,CAAY,MAAA,CAAO,OAAA,CAAQ,OAAA,CACjE,QAAA,CAAA,CAAAoB,IAAAA,CAACyD,EAAAA,CAAA,CACE,QAAA,CAAA,CAAAyC,CAAAA,EAAgB,GAAA,CAAKE,CAAAA,EACpBpG,IAAAA,CAAC0D,CAAAA,CAAA,CACC,UAAA5E,GAAAA,CAAC6E,EAAAA,CAAA,CAAmB,QAAA,CAAAyC,CAAAA,CAAM,KAAA,CAAM,CAAA,CAChCtH,GAAAA,CAACkF,CAAAA,CAAA,CACE,QAAA,CAAA+B,CAAAA,CAAaK,CAAAA,CAAM,IAAI,CAAA,EAAG,GAAA,CAAKC,GAC9BvH,GAAAA,CAACmF,CAAAA,CAAA,CACC,QAAA,CAAAnF,GAAAA,CAACqF,CAAAA,CAAA,CACC,OAAA,CAAO,IAAA,CACP,QAAA,CAAU,QAAA,CAAS,QAAA,CAAS,QAAA,CAAS,CAAA,MAAA,EAASkC,CAAAA,CAAO,MAAM,EAAE,CAAA,CAC7D,OAAA,CAASC,CAAAA,CAAWD,CAAAA,CAAO,IAAA,EAAM,KAAA,EAASA,CAAAA,CAAO,MAAM,CAAA,CAEvD,QAAA,CAAArG,IAAAA,CAACuG,OAAAA,CAAA,CAAQ,EAAA,CAAI,CAAA,KAAA,EAAQF,CAAAA,CAAO,MAAM,CAAA,CAAA,CAC/B,QAAA,CAAA,CAAAA,CAAAA,CAAO,IAAA,EAAM,IAAA,EACZG,aAAAA,CAAcjB,CAAAA,CAAMkB,EAAAA,CAAoBJ,CAAAA,CAAO,IAAI,CAAC,CAAA,CAA+B,CACjF,SAAA,CAAW,uBAAA,CACX,WAAA,CAAa,CACf,CAAC,CAAA,CACHvH,GAAAA,CAAC,MAAA,CAAA,CAAM,QAAA,CAAAwH,CAAAA,CAAWD,CAAAA,CAAO,IAAA,EAAM,KAAA,EAASA,CAAAA,CAAO,MAAM,CAAA,CAAE,CAAA,CAAA,CACzD,CAAA,CACF,CAAA,CAAA,CAdoBA,EAAO,MAe7B,CACD,CAAA,CACH,CAAA,CAAA,CAAA,CArBiBD,CAAAA,CAAM,IAsBzB,CACD,CAAA,CACDtH,GAAAA,CAAC4E,CAAAA,CAAA,CACC,QAAA,CAAA5E,GAAAA,CAACkF,CAAAA,CAAA,CACE,QAAA,CAAA+B,EAAa,SAAA,EAAc,GAAA,CAAKM,CAAAA,EAC/BvH,GAAAA,CAACmF,CAAAA,CAAA,CACC,QAAA,CAAAnF,GAAAA,CAACqF,CAAAA,CAAA,CACC,OAAA,CAAO,IAAA,CACP,QAAA,CAAU,QAAA,CAAS,QAAA,CAAS,QAAA,CAAS,SAASkC,CAAAA,CAAO,MAAM,CAAA,CAAE,CAAA,CAC7D,OAAA,CAASC,CAAAA,CAAWD,CAAAA,CAAO,IAAA,EAAM,KAAA,EAASA,CAAAA,CAAO,MAAM,CAAA,CAEvD,QAAA,CAAArG,IAAAA,CAACuG,OAAAA,CAAA,CAAQ,GAAI,CAAA,KAAA,EAAQF,CAAAA,CAAO,MAAM,CAAA,CAAA,CAC/B,QAAA,CAAA,CAAAG,aAAAA,CAAcjB,CAAAA,CAAMkB,EAAAA,CAAoBJ,CAAAA,CAAO,IAAI,CAAC,CAAA,CAA+B,CAClF,SAAA,CAAW,uBAAA,CACX,WAAA,CAAa,CACf,CAAC,CAAA,CACDvH,GAAAA,CAAC,MAAA,CAAA,CAAM,QAAA,CAAAwH,CAAAA,CAAWD,CAAAA,CAAO,IAAA,EAAM,KAAA,EAASA,CAAAA,CAAO,MAAM,CAAA,CAAE,CAAA,CAAA,CACzD,CAAA,CACF,CAAA,CAAA,CAboBA,CAAAA,CAAO,MAc7B,CACD,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACAvH,GAAAA,CAACmE,CAAAA,CAAA,EAAY,CAAA,CAAA,CACf,CAEJ,CAEA,SAASqD,CAAAA,CAAWI,CAAAA,CAAqB,CAEvC,IAAMC,EAAaD,CAAAA,CAAI,OAAA,CAAQ,UAAA,CAAY,KAAK,CAAA,CAEhD,OAAOC,CAAAA,CAAW,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,CAAIA,CAAAA,CAAW,KAAA,CAAM,CAAC,CAAA,CAAE,MAClE,CAKA,SAASF,EAAAA,CAAoBG,CAAAA,CAAqC,CAChE,IAAMC,CAAAA,CAASpB,EAAAA,CAAK,MAAA,CAAOmB,CAAO,CAAA,CAElC,OAAIC,CAAAA,CAAO,MAAA,CAAS,CAAA,CACXA,EAAO,CAAC,CAAA,CAAE,IAAA,CAAK,IAAA,CAGjB,MACT,CCnHA,IAAMC,GAAqB,CAAA,CAAA,IAAA,CAErBC,EAAAA,CAAiBC,CAAA,CAAA,UAAA,CAGrB,CAAC,CAAE,SAAA,CAAApI,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GAC1BZ,GAAAA,CAAe,CAAA,CAAA,IAAA,CAAd,CACC,SAAA,CAAWC,CAAAA,CACT,qHACAH,CACF,CAAA,CACA,GAAA,CAAKc,GAAAA,CACJ,GAAGb,CAAAA,CACN,CACD,EACDkI,EAAAA,CAAS,WAAA,CAA4B,CAAA,CAAA,IAAA,CAAK,WAAA,CAE1C,IAAME,EAAAA,CAAoBD,CAAA,CAAA,UAAA,CAGxB,CAAC,CAAE,SAAA,CAAApI,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAGa,GAAAA,GAC1BZ,GAAAA,CAAe,CAAA,CAAA,OAAA,CAAd,CACC,SAAA,CAAWC,CAAAA,CACT,icAAA,CACAH,CACF,CAAA,CACA,GAAA,CAAKc,GAAAA,CACJ,GAAGb,CAAAA,CACN,CACD,EACDoI,EAAAA,CAAY,WAAA,CAA4B,CAAA,CAAA,OAAA,CAAQ,WAAA,CAEhD,IAAMC,EAAAA,CAAoBF,CAAA,CAAA,UAAA,CAGxB,CAAC,CAAE,SAAA,CAAApI,CAAAA,CAAW,GAAGC,CAAM,EAAGa,GAAAA,GAC1BZ,GAAAA,CAAe,CAAA,CAAA,OAAA,CAAd,CACC,SAAA,CAAWC,CAAAA,CACT,mJAAA,CACAH,CACF,CAAA,CACA,GAAA,CAAKc,GAAAA,CACJ,GAAGb,CAAAA,CACN,CACD,EACDqI,EAAAA,CAAY,YAA4B,CAAA,CAAA,OAAA,CAAQ,WAAA","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 = 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"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import'./index.css';import {b}from'./chunk-NJN7EGGK.js';import {a,b as b$2,c as c$1}from'./chunk-K5CEPNVI.js';import {r,c,d,b as b$1,k,o,p,m,l,q}from'./chunk-64KAF6GA.js';import'./chunk-7YBJLUUE.js';import'./chunk-AXB7FQV2.js';import {useTheme}from'next-themes';import {Monitor,Moon,Sun}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';function _({projectId:g}){let{theme:r$1,setTheme:t}=useTheme(),[D,n]=b();return D?jsx(r,{className:"fk-h-8 fk-w-8 fk-rounded-full"}):jsxs(c,{children:[jsx(d,{asChild:true,children:jsx(b$1,{className:"fk-relative fk-h-8 fk-w-8 fk-rounded-full",variant:"ghost",children:jsxs(a,{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(k,{align:"end",className:"fk-w-56",forceMount:true,children:[jsx(o,{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(p,{}),jsx(o,{children:"Theme"}),jsxs(m,{checked:r$1==="system",onCheckedChange:()=>{t("system");},children:[jsx(Monitor,{className:"fk-mr-2 fk-h-4 fk-w-4"}),jsx("span",{children:"System"})]}),jsxs(m,{checked:r$1==="dark",onCheckedChange:()=>{t("dark");},children:[jsx(Moon,{className:"fk-mr-2 fk-h-4 fk-w-4"}),jsx("span",{children:"Dark"})]}),jsxs(m,{checked:r$1==="light",onCheckedChange:()=>{t("light");},children:[jsx(Sun,{className:"fk-mr-2 fk-h-4 fk-w-4"}),jsx("span",{children:"Light"})]}),jsx(p,{}),jsxs(l,{onClick:()=>{n.logout(g).then(()=>{}).catch(()=>{});},children:["Log out",jsx(q,{children:"\u21E7\u2318Q"})]})]})]})}export{_ as UserNav};//# sourceMappingURL=user-nav-5LW5USDZ.js.map
|
|
2
|
+
//# sourceMappingURL=user-nav-5LW5USDZ.js.map
|
|
@@ -1 +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":"
|
|
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-5LW5USDZ.js","sourcesContent":["import { useTheme } from 'next-themes';\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"]}
|