shadboard 0.0.4 → 0.0.5
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/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +10 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/use-mobile.ts","../src/lib/utils.ts","../src/components/ui/button.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/sidebar.tsx","../src/components/themed-layout/header/index.tsx","../src/components/themed-layout/title/index.tsx","../../../node_modules/.pnpm/@radix-ui+primitive@1.1.3/node_modules/@radix-ui/primitive/src/primitive.tsx","../../../node_modules/.pnpm/@radix-ui+react-context@1.1.2_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-context/src/create-context.tsx","../../../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.1_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-use-layout-effect/src/use-layout-effect.tsx","../../../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.2_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-use-controllable-state/src/use-controllable-state.tsx","../../../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.2_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-compose-refs/src/compose-refs.tsx","../../../node_modules/.pnpm/@radix-ui+react-primitive@2.1.3_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@19._xrbr6pq4peqnckt7d2jbt6ivqi/node_modules/@radix-ui/react-primitive/src/primitive.tsx","../../../node_modules/.pnpm/@radix-ui+react-presence@1.1.5_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@19.2_l2q7xgeca4rprka7kwgghbi5gy/node_modules/@radix-ui/react-presence/src/use-state-machine.tsx","../../../node_modules/.pnpm/@radix-ui+react-presence@1.1.5_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@19.2_l2q7xgeca4rprka7kwgghbi5gy/node_modules/@radix-ui/react-presence/src/presence.tsx","../../../node_modules/.pnpm/@radix-ui+react-id@1.1.1_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-id/src/id.tsx","../../../node_modules/.pnpm/@radix-ui+react-collapsible@1.1.12_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@_suwu6i7pyzvzktrb7w3m2gzqga/node_modules/@radix-ui/react-collapsible/src/collapsible.tsx","../src/components/ui/collapsible.tsx","../src/components/themed-layout/sider/nav-main.tsx","../src/components/ui/avatar.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/themed-layout/sider/nav-user.tsx","../src/components/themed-layout/sider/index.tsx","../src/components/ui/theme-provider.tsx","../src/contexts/themed-layout-context/index.tsx","../src/components/themed-layout/index.tsx","../../../node_modules/.pnpm/@refinedev+ui-types@2.0.1_@refinedev+core@5.0.6_@tanstack+react-query@5.90.12_react@19.2.1__@_bktr4bku2v5d5gvnmfyaharmpy/node_modules/@refinedev/ui-types/src/ids.tsx","../../../node_modules/.pnpm/@refinedev+ui-types@2.0.1_@refinedev+core@5.0.6_@tanstack+react-query@5.90.12_react@19.2.1__@_bktr4bku2v5d5gvnmfyaharmpy/node_modules/@refinedev/ui-types/src/classNames.ts","../src/components/crud/list/index.tsx","../src/components/crud/create/index.tsx","../src/components/buttons/create/index.tsx","../src/components/buttons/edit/index.tsx","../src/components/ui/popover.tsx","../src/components/buttons/delete/index.tsx","../src/components/buttons/refresh/index.tsx","../src/components/buttons/show/index.tsx","../src/components/buttons/list/index.tsx","../src/components/buttons/export/index.tsx","../src/components/buttons/save/index.tsx","../src/components/buttons/clone/index.tsx","../src/components/buttons/import/index.tsx","../src/components/ui/text.tsx","../src/components/fields/text/index.tsx","../src/components/fields/boolean/index.tsx","../src/components/fields/number/index.tsx","../src/components/pages/error/index.tsx","../src/components/ui/breadcrumb.tsx","../src/components/breadcrumb/index.tsx","../src/components/undoable-notification/index.tsx","../src/components/auto-save-indicator/index.tsx","../src/providers/notification-provider.tsx","../src/index.ts"],"names":["MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","useState","useEffect","mql","onChange","cn","inputs","twMerge","clsx","buttonVariants","cva","Button","className","variant","size","asChild","props","jsx","Slot","Separator","orientation","decorative","ot","Sheet","T","SheetPortal","SheetOverlay","SheetContent","children","side","jsxs","XIcon","SheetHeader","SheetTitle","SheetDescription","TooltipProvider","delayDuration","k","Tooltip","TooltipTrigger","TooltipContent","sideOffset","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","M","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","style","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","Sidebar","collapsible","SidebarTrigger","onClick","PanelLeftIcon","SidebarInset","SidebarHeader","SidebarFooter","SidebarContent","SidebarGroup","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","SidebarMenuButton","isActive","tooltip","Comp","button","SidebarMenuSub","ThemedHeader","sticky","user","useGetIdentity","Fragment","ThemedTitle","collapsed","iconFromProps","textFromProps","defaultIcon","defaultText","useRefineOptions","icon","text","Link","useLink","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext","rootComponentName","defaultContext","BaseContext","H","index","Provider","scope","Context","useContext","consumerName","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","overrideScopes","nextScopes","useScope","currentScope","useLayoutEffect","Nt","useInsertionEffect","React","useLayoutEffect2","useControllableState","prop","defaultProp","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlled","isControlledRef","L","wasControlled","setValue","nextValue","isFunction","prevValueRef","setRef","ref","composeRefs","refs","node","hasCleanup","cleanups","cleanup","i","useComposedRefs","Dt","NODES","Primitive","primitive","createSlot","Node","It","forwardedRef","primitiveProps","useStateMachine","initialState","machine","kt","Presence","present","presence","usePresence","child","D","getElementRef","setNode","stylesRef","prevPresentRef","prevAnimationNameRef","send","currentAnimationName","getAnimationName","styles","wasPresent","prevAnimationName","timeoutId","ownerWindow","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","element","getter","mayWarn","useReactId","count","useId","deterministicId","id","setId","ze","reactId","COLLAPSIBLE_NAME","createCollapsibleContext","CollapsibleProvider","useCollapsibleContext","Collapsible","N","__scopeCollapsible","disabled","onOpenChange","collapsibleProps","prevOpen","getState","TRIGGER_NAME","CollapsibleTrigger","triggerProps","CONTENT_NAME","CollapsibleContent","forceMount","contentProps","CollapsibleContentImpl","isPresent","setIsPresent","composedRefs","heightRef","height","widthRef","width","isOpen","isMountAnimationPreventedRef","originalStylesRef","rAF","rect","Root","TreeViewItem","item","selectedKey","defaultOpenKeys","activeItemDisabled","label","route","name","isSelected","isParent","setIsOpen","CanAccess","ListIcon","ChevronRight","NavMain","meta","menuItems","useMenu","CirclePlus","Mail","Avatar","re","AvatarImage","AvatarFallback","DropdownMenu","y","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","inset","DropdownMenuLabel","DropdownMenuSeparator","NavUser","Dot","UserCircle","CreditCard","Bell","LogOut","data","ThemedSider","TitleFromProps","render","siderItemsAreCollapsed","rest","RenderToTitle","ThemeProvider","NextThemesProvider","ThemedLayoutContextProvider","ThemedLayout","Sider","Header","Title","Footer","OffLayoutArea","initialSiderCollapsed","onSiderCollapsed","RefineButtonTestIds","RefinePageHeaderClassNames","RefineButtonClassNames","List","canCreate","createButtonPropsFromProps","resourceFromProps","wrapperProps","headerProps","headerButtonProps","headerButtonsFromProps","breadcrumbFromProps","title","translate","useTranslate","globalBreadcrumb","useRefineContext","getUserFriendlyName","useUserFriendlyName","resource","identifier","useResourceParams","isCreateButtonVisible","breadcrumb","createButtonProps","defaultHeaderButtons","CreateButton","headerButtons","renderTitle","Breadcrumb","Create","saveButtonPropsFromProps","isLoading","footerButtonsFromProps","footerButtonProps","goBackFromProps","back","useBack","action","saveButtonProps","defaultFooterButtons","SaveButton","buttonBack","ArrowLeft","footerButtons","Loader2","resourceNameFromProps","hideText","accessControl","hidden","LinkComponent","to","useCreateButton","isDisabled","e","PlusSquare","EditButton","recordItemId","useEditButton","FolderDown","Popover","U","PopoverTrigger","PopoverContent","align","DeleteButton","onSuccess","mutationModeProp","successNotification","errorNotification","invalidates","dataProviderName","confirmTitle","confirmOkText","confirmCancelText","onConfirm","loading","defaultConfirmTitle","defaultConfirmOkLabel","defaultCancelLabel","useDeleteButton","Trash","RefreshButton","onRefresh","useRefreshButton","RefreshCcw","ShowButton","useShowButton","Eye","ListButton","useListButton","ExportButton","useExportButton","FolderUp","useSaveButton","Save","CloneButton","useCloneButton","Copy","ImportButton","inputProps","useImportButton","textVariants","Text","so","TextField","BooleanField","valueLabelTrue","valueLabelFalse","trueIcon","falseIcon","svgIconProps","Check","Minus","toLocaleStringSupportsOptions","NumberField","locale","options","number","ErrorComponent","errorMessage","setErrorMessage","showTip","setShowTip","go","useGo","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","breadcrumbProps","showHome","hideIcons","minItems","breadcrumbs","useBreadcrumb","resources","rootRouteResource","matchResourceFromRoute","Home","href","UndoableNotification","notificationKey","message","cancelMutation","undoableTimeout","toast","RotateCcwSquare","AutoSaveIndicator","status","success","Message","CheckCircle","error","FileExclamationPoint","idle","AutoSaveIndicatorCore","translationKey","defaultMessage","useNotificationProvider","key","type","description","greet","opts"],"mappings":"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","file":"index.js","sourcesContent":["import { useEffect, useState } from 'react'\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = useState<boolean | undefined>(undefined)\n\n 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","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '@lib/utils'\n\nconst buttonVariants = cva(\n \"inline-flex gap-2 items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground hover:bg-primary/90',\n destructive:\n 'bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',\n outline:\n 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n secondary:\n 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n ghost:\n 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2 has-[>svg]:px-3',\n sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5',\n lg: 'h-10 rounded-md px-6 has-[>svg]:px-4',\n icon: 'size-9',\n 'icon-sm': 'size-8',\n 'icon-lg': 'size-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\ninterface ButtonProps\n extends React.ComponentProps<'button'>, VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants, ButtonProps }\n","'use client'\n\nimport * as React from 'react'\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\n\nimport { cn } from '@lib/utils'\n\nfunction Separator({\n className,\n orientation = 'horizontal',\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","'use client'\n\nimport * as React from 'react'\nimport * as SheetPrimitive from '@radix-ui/react-dialog'\n\nimport { XIcon } from 'lucide-react'\nimport { cn } from '@lib/utils'\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left'\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n side === 'right' &&\n 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm',\n side === 'left' &&\n 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm',\n side === 'top' &&\n 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b',\n side === 'bottom' &&\n 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t',\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn('flex flex-col gap-1.5 p-4', className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn('mt-auto flex flex-col gap-2 p-4', className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('text-foreground font-semibold', className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\n\nimport { cn } from '@lib/utils'\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance',\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","'use client'\n\nimport * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { PanelLeftIcon } from 'lucide-react'\n\nimport { useIsMobile } from '@hooks/use-mobile'\nimport { cn } from '@lib/utils'\nimport { Button } from '@components/ui/button'\nimport { Input } from '@components/ui/input'\nimport { Separator } from '@components/ui/separator'\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from '@components/ui/sheet'\nimport { Skeleton } from '@components/ui/skeleton'\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@components/ui/tooltip'\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '16rem'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '3rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed'\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-7', className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col',\n 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn('bg-background h-8 w-full shadow-none', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn('w-full text-sm', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : 'button'\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after: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]:hidden',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button: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]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean\n size?: 'sm' | 'md'\n isActive?: boolean\n}) {\n const Comp = asChild ? Slot : 'a'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","import { Button } from '@components/ui/button'\nimport { HamburgerMenu } from '@components/themed-layout/hamburger-menu'\nimport type { RefineThemedLayoutHeaderProps } from '@components/themed-layout/types'\nimport { Separator } from '@components/ui/separator'\nimport { SidebarTrigger } from '@components/ui/sidebar'\nimport { useGetIdentity } from '@refinedev/core'\n\nexport const ThemedHeader = ({ sticky }: RefineThemedLayoutHeaderProps) => {\n const { data: user } = useGetIdentity()\n\n return (\n <>\n <header className=\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\">\n <div className=\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\">\n <SidebarTrigger className=\"-ml-1\" />\n <Separator\n orientation=\"vertical\"\n className=\"mx-2 data-[orientation=vertical]:h-4\"\n />\n <h1 className=\"text-base font-medium\">Documents</h1>\n <div className=\"ml-auto flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n asChild\n size=\"sm\"\n className=\"hidden sm:flex\"\n >\n <a\n href=\"https://github.com/shadcn-ui/ui/tree/main/apps/v4/app/(examples)/dashboard\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n className=\"dark:text-foreground\"\n >\n GitHub\n </a>\n </Button>\n </div>\n </div>\n </header>\n {/* <div\n className={`bg-background flex h-16 w-full items-center border-b px-4 py-2 ${\n sticky ? 'sticky top-0 z-10' : ''\n }`}\n data-testid=\"themed-header\"\n >\n <div className=\"flex w-full items-center justify-between\">\n <HamburgerMenu />\n <div className=\"flex items-center gap-2\">\n {user?.name && (\n <span\n className=\"text-sm font-bold\"\n data-testid=\"header-user-name\"\n >\n {user.name}\n </span>\n )}\n {user?.avatar && (\n <img\n alt={user?.name || 'Profile Photo'}\n src={user.avatar}\n className=\"h-8 w-8 rounded-full object-cover\"\n />\n )}\n </div>\n </div>\n </div> */}\n </>\n )\n}\n","import { useLink, useRefineOptions } from '@refinedev/core'\n\nimport type { RefineLayoutThemedTitleProps } from '@refinedev/ui-types'\nimport { stat } from 'fs'\nimport { useSidebar } from '@components/ui/sidebar'\n\nexport const ThemedTitle = ({\n collapsed,\n icon: iconFromProps,\n text: textFromProps,\n}: RefineLayoutThemedTitleProps) => {\n const { title: { icon: defaultIcon, text: defaultText } = {} } =\n useRefineOptions()\n const icon =\n typeof iconFromProps === 'undefined' ? defaultIcon : iconFromProps\n const text =\n typeof textFromProps === 'undefined' ? defaultText : textFromProps\n const Link = useLink()\n\n const { state, isMobile } = useSidebar()\n\n return (\n <Link\n to=\"/\"\n className=\"flex items-center justify-center gap-2 text-inherit no-underline hover:no-underline\"\n >\n <div className=\"size-6 [&>img]:size-6 [&>svg]:size-6\">{icon}</div>\n {(isMobile || (!collapsed && state === 'expanded')) && (\n <h6 className=\"text-base font-semibold\">{text}</h6>\n )}\n </Link>\n )\n}\n","/* eslint-disable no-restricted-properties */\n\n/* eslint-disable no-restricted-globals */\nexport const canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n/* eslint-enable no-restricted-globals */\n\nexport function composeEventHandlers<E extends { defaultPrevented: boolean }>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\nexport function getOwnerWindow(element: Node | null | undefined) {\n if (!canUseDOM) {\n throw new Error('Cannot access window outside of the DOM');\n }\n // eslint-disable-next-line no-restricted-globals\n return element?.ownerDocument?.defaultView ?? window;\n}\n\nexport function getOwnerDocument(element: Node | null | undefined) {\n if (!canUseDOM) {\n throw new Error('Cannot access document outside of the DOM');\n }\n // eslint-disable-next-line no-restricted-globals\n return element?.ownerDocument ?? document;\n}\n\n/**\n * Lifted from https://github.com/ariakit/ariakit/blob/main/packages/ariakit-core/src/utils/dom.ts#L37\n * MIT License, Copyright (c) AriaKit.\n */\nexport function getActiveElement(\n node: Node | null | undefined,\n activeDescendant = false\n): HTMLElement | null {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n // `activeElement` might be an empty object if we're interacting with elements\n // inside of an iframe.\n return null;\n }\n\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n\n if (activeDescendant) {\n const id = activeElement.getAttribute('aria-activedescendant');\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n\n return activeElement as HTMLElement | null;\n}\n\nexport function isFrame(element: Element): element is HTMLIFrameElement {\n return element.tagName === 'IFRAME';\n}\n","import * as React from 'react';\n\nfunction createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n) {\n const Context = React.createContext<ContextValueType | undefined>(defaultContext);\n\n const Provider: React.FC<ContextValueType & { children: React.ReactNode }> = (props) => {\n const { children, ...context } = props;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n Provider.displayName = rootComponentName + 'Provider';\n\n function useContext(consumerName: string) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n return [Provider, useContext] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/\n\ntype Scope<C = any> = { [scopeName: string]: React.Context<C>[] } | undefined;\ntype ScopeHook = (scope: Scope) => { [__scopeProp: string]: Scope };\ninterface CreateScope {\n scopeName: string;\n (): ScopeHook;\n}\n\nfunction createContextScope(scopeName: string, createContextScopeDeps: CreateScope[] = []) {\n let defaultContexts: any[] = [];\n\n /* -----------------------------------------------------------------------------------------------\n * createContext\n * ---------------------------------------------------------------------------------------------*/\n\n function createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n ) {\n const BaseContext = React.createContext<ContextValueType | undefined>(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n\n const Provider: React.FC<\n ContextValueType & { scope: Scope<ContextValueType>; children: React.ReactNode }\n > = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n Provider.displayName = rootComponentName + 'Provider';\n\n function useContext(consumerName: string, scope: Scope<ContextValueType | undefined>) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n return [Provider, useContext] as const;\n }\n\n /* -----------------------------------------------------------------------------------------------\n * createScope\n * ---------------------------------------------------------------------------------------------*/\n\n const createScope: CreateScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope: Scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n\n createScope.scopeName = scopeName;\n return [createContext, composeContextScopes(createScope, ...createContextScopeDeps)] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/\n\nfunction composeContextScopes(...scopes: CreateScope[]) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n\n const createScope: CreateScope = () => {\n const scopeHooks = scopes.map((createScope) => ({\n useScope: createScope(),\n scopeName: createScope.scopeName,\n }));\n\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes, { useScope, scopeName }) => {\n // We are calling a hook inside a callback which React warns against to avoid inconsistent\n // renders, however, scoping doesn't have render side effects so we ignore the rule.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes, ...currentScope };\n }, {});\n\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nexport { createContext, createContextScope };\nexport type { CreateScope, Scope };\n","import * as React from 'react';\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */\nconst useLayoutEffect = globalThis?.document ? React.useLayoutEffect : () => {};\n\nexport { useLayoutEffect };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// Prevent bundlers from trying to optimize the import\nconst useInsertionEffect: typeof useLayoutEffect =\n (React as any)[' useInsertionEffect '.trim().toString()] || useLayoutEffect;\n\ntype ChangeHandler<T> = (state: T) => void;\ntype SetStateFn<T> = React.Dispatch<React.SetStateAction<T>>;\n\ninterface UseControllableStateParams<T> {\n prop?: T | undefined;\n defaultProp: T;\n onChange?: ChangeHandler<T>;\n caller?: string;\n}\n\nexport function useControllableState<T>({\n prop,\n defaultProp,\n onChange = () => {},\n caller,\n}: UseControllableStateParams<T>): [T, SetStateFn<T>] {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange,\n });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n\n // OK to disable conditionally calling hooks here because they will always run\n // consistently in the same environment. Bundlers should be able to remove the\n // code block entirely in production.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (process.env.NODE_ENV !== 'production') {\n const isControlledRef = React.useRef(prop !== undefined);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? 'controlled' : 'uncontrolled';\n const to = isControlled ? 'controlled' : 'uncontrolled';\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n /* eslint-enable react-hooks/rules-of-hooks */\n\n const setValue = React.useCallback<SetStateFn<T>>(\n (nextValue) => {\n if (isControlled) {\n const value = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value !== prop) {\n onChangeRef.current?.(value);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n\n return [value, setValue];\n}\n\nfunction useUncontrolledState<T>({\n defaultProp,\n onChange,\n}: Omit<UseControllableStateParams<T>, 'prop'>): [\n Value: T,\n setValue: React.Dispatch<React.SetStateAction<T>>,\n OnChangeRef: React.RefObject<ChangeHandler<T> | undefined>,\n] {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n\n return [value, setValue, onChangeRef];\n}\n\nfunction isFunction(value: unknown): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == 'function') {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == 'function') {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createSlot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'select',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\ntype Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n if (typeof window !== 'undefined') {\n (window as any)[Symbol.for('radix-ui')] = true;\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { PrimitivePropsWithRef };\n","import * as React from 'react';\n\ntype Machine<S> = { [k: string]: { [k: string]: S } };\ntype MachineState<T> = keyof T;\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine<M>(\n initialState: MachineState<M>,\n machine: M & Machine<MachineState<M>>\n) {\n return React.useReducer((state: MachineState<M>, event: MachineEvent<M>): MachineState<M> => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useStateMachine } from './use-state-machine';\n\ninterface PresenceProps {\n children: React.ReactElement | ((props: { present: boolean }) => React.ReactElement);\n present: boolean;\n}\n\nconst Presence: React.FC<PresenceProps> = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n\n const child = (\n typeof children === 'function'\n ? children({ present: presence.isPresent })\n : React.Children.only(children)\n ) as React.ReactElement<{ ref?: React.Ref<HTMLElement> }>;\n\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === 'function';\n return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;\n};\n\nPresence.displayName = 'Presence';\n\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/\n\nfunction usePresence(present: boolean) {\n const [node, setNode] = React.useState<HTMLElement>();\n const stylesRef = React.useRef<CSSStyleDeclaration | null>(null);\n const prevPresentRef = React.useRef(present);\n const prevAnimationNameRef = React.useRef<string>('none');\n const initialState = present ? 'mounted' : 'unmounted';\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: 'unmounted',\n ANIMATION_OUT: 'unmountSuspended',\n },\n unmountSuspended: {\n MOUNT: 'mounted',\n ANIMATION_END: 'unmounted',\n },\n unmounted: {\n MOUNT: 'mounted',\n },\n });\n\n React.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n }, [state]);\n\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n\n if (present) {\n send('MOUNT');\n } else if (currentAnimationName === 'none' || styles?.display === 'none') {\n // If there is no exit animation or the element is hidden, animations won't run\n // so we unmount instantly\n send('UNMOUNT');\n } else {\n /**\n * When `present` changes to `false`, we check changes to animation-name to\n * determine whether an animation has started. We chose this approach (reading\n * computed styles) because there is no `animationrun` event and `animationstart`\n * fires after `animation-delay` has expired which would be too late.\n */\n const isAnimating = prevAnimationName !== currentAnimationName;\n\n if (wasPresent && isAnimating) {\n send('ANIMATION_OUT');\n } else {\n send('UNMOUNT');\n }\n }\n\n prevPresentRef.current = present;\n }\n }, [present, send]);\n\n useLayoutEffect(() => {\n if (node) {\n let timeoutId: number;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n /**\n * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n * make sure we only trigger ANIMATION_END for the currently active animation.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n // The event.animationName is unescaped for CSS syntax,\n // so we need to escape it to compare with the animationName computed from the style.\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n // With React 18 concurrency this update is applied a frame after the\n // animation ends, creating a flash of visible content. By setting the\n // animation fill mode to \"forwards\", we force the node to keep the\n // styles of the last keyframe, removing the flash.\n //\n // Previously we flushed the update via ReactDom.flushSync, but with\n // exit animations this resulted in the node being removed from the\n // DOM before the synthetic animationEnd event was dispatched, meaning\n // user-provided event handlers would not be called.\n // https://github.com/radix-ui/primitives/pull/1849\n send('ANIMATION_END');\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = 'forwards';\n // Reset the style after the node had time to unmount (for cases\n // where the component chooses not to unmount). Doing this any\n // sooner than `setTimeout` (e.g. with `requestAnimationFrame`)\n // still causes a flash.\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === 'forwards') {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event: AnimationEvent) => {\n if (event.target === node) {\n // if animation occurred, store its name as the previous animation.\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener('animationstart', handleAnimationStart);\n node.addEventListener('animationcancel', handleAnimationEnd);\n node.addEventListener('animationend', handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener('animationstart', handleAnimationStart);\n node.removeEventListener('animationcancel', handleAnimationEnd);\n node.removeEventListener('animationend', handleAnimationEnd);\n };\n } else {\n // Transition to the unmounted state if the node is removed prematurely.\n // We avoid doing so during cleanup as the node may change but still exist.\n send('ANIMATION_END');\n }\n }, [node, send]);\n\n return {\n isPresent: ['mounted', 'unmountSuspended'].includes(state),\n ref: React.useCallback((node: HTMLElement) => {\n stylesRef.current = node ? getComputedStyle(node) : null;\n setNode(node);\n }, []),\n };\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getAnimationName(styles: CSSStyleDeclaration | null) {\n return styles?.animationName || 'none';\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement<{ ref?: React.Ref<unknown> }>) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n\n // Not DEV\n return element.props.ref || (element as any).ref;\n}\n\nconst Root = Presence;\n\nexport {\n Presence,\n //\n Root,\n};\nexport type { PresenceProps };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// We spaces with `.trim().toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)[' useId '.trim().toString()] || (() => undefined);\nlet count = 0;\n\nfunction useId(deterministicId?: string): string {\n const [id, setId] = React.useState<string | undefined>(useReactId());\n // React versions older than 18 will have client-side ids only.\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : '');\n}\n\nexport { useId };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { Presence } from '@radix-ui/react-presence';\nimport { useId } from '@radix-ui/react-id';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Collapsible\n * -----------------------------------------------------------------------------------------------*/\n\nconst COLLAPSIBLE_NAME = 'Collapsible';\n\ntype ScopedProps<P> = P & { __scopeCollapsible?: Scope };\nconst [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\n\ntype CollapsibleContextValue = {\n contentId: string;\n disabled?: boolean;\n open: boolean;\n onOpenToggle(): void;\n};\n\nconst [CollapsibleProvider, useCollapsibleContext] =\n createCollapsibleContext<CollapsibleContextValue>(COLLAPSIBLE_NAME);\n\ntype CollapsibleElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface CollapsibleProps extends PrimitiveDivProps {\n defaultOpen?: boolean;\n open?: boolean;\n disabled?: boolean;\n onOpenChange?(open: boolean): void;\n}\n\nconst Collapsible = React.forwardRef<CollapsibleElement, CollapsibleProps>(\n (props: ScopedProps<CollapsibleProps>, forwardedRef) => {\n const {\n __scopeCollapsible,\n open: openProp,\n defaultOpen,\n disabled,\n onOpenChange,\n ...collapsibleProps\n } = props;\n\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: COLLAPSIBLE_NAME,\n });\n\n return (\n <CollapsibleProvider\n scope={__scopeCollapsible}\n disabled={disabled}\n contentId={useId()}\n open={open}\n onOpenToggle={React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])}\n >\n <Primitive.div\n data-state={getState(open)}\n data-disabled={disabled ? '' : undefined}\n {...collapsibleProps}\n ref={forwardedRef}\n />\n </CollapsibleProvider>\n );\n }\n);\n\nCollapsible.displayName = COLLAPSIBLE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'CollapsibleTrigger';\n\ntype CollapsibleTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface CollapsibleTriggerProps extends PrimitiveButtonProps {}\n\nconst CollapsibleTrigger = React.forwardRef<CollapsibleTriggerElement, CollapsibleTriggerProps>(\n (props: ScopedProps<CollapsibleTriggerProps>, forwardedRef) => {\n const { __scopeCollapsible, ...triggerProps } = props;\n const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n return (\n <Primitive.button\n type=\"button\"\n aria-controls={context.contentId}\n aria-expanded={context.open || false}\n data-state={getState(context.open)}\n data-disabled={context.disabled ? '' : undefined}\n disabled={context.disabled}\n {...triggerProps}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, context.onOpenToggle)}\n />\n );\n }\n);\n\nCollapsibleTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CollapsibleContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'CollapsibleContent';\n\ntype CollapsibleContentElement = CollapsibleContentImplElement;\ninterface CollapsibleContentProps extends Omit<CollapsibleContentImplProps, 'present'> {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst CollapsibleContent = React.forwardRef<CollapsibleContentElement, CollapsibleContentProps>(\n (props: ScopedProps<CollapsibleContentProps>, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n return (\n <Presence present={forceMount || context.open}>\n {({ present }) => (\n <CollapsibleContentImpl {...contentProps} ref={forwardedRef} present={present} />\n )}\n </Presence>\n );\n }\n);\n\nCollapsibleContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype CollapsibleContentImplElement = React.ComponentRef<typeof Primitive.div>;\ninterface CollapsibleContentImplProps extends PrimitiveDivProps {\n present: boolean;\n}\n\nconst CollapsibleContentImpl = React.forwardRef<\n CollapsibleContentImplElement,\n CollapsibleContentImplProps\n>((props: ScopedProps<CollapsibleContentImplProps>, forwardedRef) => {\n const { __scopeCollapsible, present, children, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = React.useState(present);\n const ref = React.useRef<CollapsibleContentImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef<number | undefined>(0);\n const height = heightRef.current;\n const widthRef = React.useRef<number | undefined>(0);\n const width = widthRef.current;\n // when opening we want it to immediately open to retrieve dimensions\n // when closing we delay `present` to retrieve dimensions before closing\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = React.useRef(isOpen);\n const originalStylesRef = React.useRef<Record<string, string>>(undefined);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName,\n };\n // block any animations/transitions so the element renders at its full dimensions\n node.style.transitionDuration = '0s';\n node.style.animationName = 'none';\n\n // get width and height from full dimensions\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n\n // kick off any animations/transitions that were originally set up if it isn't the initial mount\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration!;\n node.style.animationName = originalStylesRef.current.animationName!;\n }\n\n setIsPresent(present);\n }\n /**\n * depends on `context.open` because it will change to `false`\n * when a close is triggered but `present` will be `false` on\n * animation end (so when close finishes). This allows us to\n * retrieve the dimensions *before* closing.\n */\n }, [context.open, present]);\n\n return (\n <Primitive.div\n data-state={getState(context.open)}\n data-disabled={context.disabled ? '' : undefined}\n id={context.contentId}\n hidden={!isOpen}\n {...contentProps}\n ref={composedRefs}\n style={{\n [`--radix-collapsible-content-height` as any]: height ? `${height}px` : undefined,\n [`--radix-collapsible-content-width` as any]: width ? `${width}px` : undefined,\n ...props.style,\n }}\n >\n {isOpen && children}\n </Primitive.div>\n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open?: boolean) {\n return open ? 'open' : 'closed';\n}\n\nconst Root = Collapsible;\nconst Trigger = CollapsibleTrigger;\nconst Content = CollapsibleContent;\n\nexport {\n createCollapsibleScope,\n //\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n //\n Root,\n Trigger,\n Content,\n};\nexport type { CollapsibleProps, CollapsibleTriggerProps, CollapsibleContentProps };\n","'use client'\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible'\nimport * as React from 'react'\n\nimport { cn } from '@lib/utils'\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n )\n}\n\nfunction CollapsibleContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n className={cn(\n 'data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down overflow-hidden transition-all',\n className\n )}\n {...props}\n >\n {children}\n </CollapsiblePrimitive.CollapsibleContent>\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","'use client'\n\nimport type { TreeMenuItem} from '@refinedev/core';\nimport { CanAccess, useLink, useMenu } from '@refinedev/core'\nimport { ChevronRight, CirclePlus, ListIcon, Mail } from 'lucide-react'\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@components/ui/collapsible'\nimport {\n SidebarGroup,\n SidebarGroupContent,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n} from '@components/ui/sidebar'\n\nimport { Button } from '@components/ui/button'\nimport type { RefineThemedLayoutSiderProps } from '@components/themed-layout/types'\nimport { cn } from '@lib/utils'\nimport { useState } from 'react'\n\ninterface NavMainProps extends Pick<\n RefineThemedLayoutSiderProps,\n 'meta' | 'activeItemDisabled'\n> {}\n\ninterface TreeViewItemProps {\n item: TreeMenuItem\n selectedKey: string | undefined\n defaultOpenKeys: string[]\n Link: any\n activeItemDisabled?: boolean\n}\n\nfunction TreeViewItem({\n item,\n selectedKey,\n defaultOpenKeys,\n Link,\n activeItemDisabled = false,\n}: TreeViewItemProps) {\n const { label, route, name, icon, children } = item\n const isSelected = item.key === selectedKey\n const isParent = children && children.length > 0\n const defaultOpen = defaultOpenKeys.includes(item.key || '')\n const [isOpen, setIsOpen] = useState(defaultOpen)\n\n if (!isParent) {\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{ resource: item }}\n >\n <SidebarMenuItem>\n <SidebarMenuButton\n asChild={!isSelected || !activeItemDisabled}\n tooltip={label}\n isActive={isSelected}\n disabled={isSelected && activeItemDisabled}\n >\n <Link to={route}>\n {icon ?? <ListIcon className=\"h-4 w-4\" />}\n <span>{label}</span>\n </Link>\n </SidebarMenuButton>\n </SidebarMenuItem>\n </CanAccess>\n )\n }\n\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{ resource: item }}\n >\n <Collapsible\n open={isOpen}\n onOpenChange={setIsOpen}\n className=\"group/collapsible\"\n >\n <SidebarMenuItem>\n <CollapsibleTrigger asChild>\n <SidebarMenuButton tooltip={label} isActive={isSelected}>\n {icon ?? <ListIcon className=\"h-4 w-4\" />}\n <span>{label}</span>\n <ChevronRight\n className={cn(\n 'ml-auto h-4 w-4 transition-transform duration-200',\n isOpen && 'rotate-90'\n )}\n />\n </SidebarMenuButton>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <SidebarMenuSub>\n {children.map((child) => (\n <TreeViewItem\n key={child.key}\n item={child}\n selectedKey={selectedKey}\n defaultOpenKeys={defaultOpenKeys}\n Link={Link}\n activeItemDisabled={activeItemDisabled}\n />\n ))}\n </SidebarMenuSub>\n </CollapsibleContent>\n </SidebarMenuItem>\n </Collapsible>\n </CanAccess>\n )\n}\n\nexport function NavMain({ meta, activeItemDisabled = false }: NavMainProps) {\n const Link = useLink()\n const { menuItems, selectedKey, defaultOpenKeys } = useMenu({ meta })\n\n return (\n <SidebarGroup>\n <SidebarGroupContent className=\"flex flex-col gap-2\">\n <SidebarMenu>\n <SidebarMenuItem className=\"flex items-center gap-2\">\n <SidebarMenuButton\n tooltip=\"Quick Create\"\n className=\"bg-primary text-primary-foreground hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground min-w-8 duration-200 ease-linear\"\n >\n <CirclePlus />\n <span>Quick Create</span>\n </SidebarMenuButton>\n <Button\n size=\"icon\"\n className=\"size-8 group-data-[collapsible=icon]:opacity-0\"\n variant=\"outline\"\n >\n <Mail />\n <span className=\"sr-only\">Inbox</span>\n </Button>\n </SidebarMenuItem>\n </SidebarMenu>\n <SidebarMenu>\n {menuItems.map((item) => (\n <TreeViewItem\n key={item.key}\n item={item}\n selectedKey={selectedKey}\n defaultOpenKeys={defaultOpenKeys}\n Link={Link}\n activeItemDisabled={activeItemDisabled}\n />\n ))}\n </SidebarMenu>\n </SidebarGroupContent>\n </SidebarGroup>\n )\n}\n","'use client'\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\nimport * as React from 'react'\n\nimport { cn } from '@lib/utils'\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n 'relative flex size-8 shrink-0 overflow-hidden rounded-full',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('aspect-square size-full', className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'bg-muted flex size-full items-center justify-center rounded-full',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","'use client'\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport * as React from 'react'\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react'\n\nimport { cn } from '@lib/utils'\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md',\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: 'default' | 'destructive'\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm font-medium data-[inset]:pl-8',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn('bg-border -mx-1 my-1 h-px', className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n 'text-muted-foreground ml-auto text-xs tracking-widest',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","'use client'\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@components/ui/avatar'\nimport { Bell, CreditCard, Dot, LogOut, UserCircle } from 'lucide-react'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@components/ui/dropdown-menu'\nimport {\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n useSidebar,\n} from '@components/ui/sidebar'\n\nexport function NavUser({\n user,\n}: {\n user: {\n name: string\n email: string\n avatar: string\n }\n}) {\n const { isMobile } = useSidebar()\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <Avatar className=\"h-8 w-8 rounded-lg grayscale\">\n <AvatarImage src={user.avatar} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">{user.name}</span>\n <span className=\"text-muted-foreground truncate text-xs\">\n {user.email}\n </span>\n </div>\n <Dot className=\"ml-auto size-4\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n side={isMobile ? 'bottom' : 'right'}\n align=\"end\"\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={user.avatar} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">{user.name}</span>\n <span className=\"text-muted-foreground truncate text-xs\">\n {user.email}\n </span>\n </div>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <DropdownMenuItem>\n <UserCircle />\n Account\n </DropdownMenuItem>\n <DropdownMenuItem>\n <CreditCard />\n Billing\n </DropdownMenuItem>\n <DropdownMenuItem>\n <Bell />\n Notifications\n </DropdownMenuItem>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuItem>\n <LogOut />\n Log out\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n )\n}\n","'use client'\n\nimport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarHeader,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n useSidebar,\n} from '@components/ui/sidebar'\n\nimport { ThemedTitle as DefaultTitle } from '@components/themed-layout/title'\nimport { NavMain } from '@components/themed-layout/sider/nav-main'\nimport { NavUser } from '@components/themed-layout/sider/nav-user'\nimport type { RefineThemedLayoutSiderProps } from '@components/themed-layout/types'\n\nconst data = {\n user: {\n name: 'shadcn',\n email: 'm@example.com',\n avatar: '/avatars/shadcn.jpg',\n },\n}\n\ninterface ThemedSiderProps\n extends RefineThemedLayoutSiderProps, React.ComponentProps<typeof Sidebar> {}\n\nexport function ThemedSider({\n Title: TitleFromProps,\n render,\n meta,\n activeItemDisabled = false,\n siderItemsAreCollapsed = true,\n ...rest\n}: ThemedSiderProps) {\n const RenderToTitle = TitleFromProps ?? DefaultTitle\n const { state } = useSidebar()\n const isCollapsed = state === 'collapsed'\n\n return (\n <Sidebar collapsible=\"icon\" {...rest}>\n <SidebarHeader>\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton\n asChild\n className=\"data-[slot=sidebar-menu-button]:!p-1.5\"\n >\n <RenderToTitle collapsed={isCollapsed} />\n </SidebarMenuButton>\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarHeader>\n <SidebarContent>\n <NavMain meta={meta} activeItemDisabled={activeItemDisabled} />\n </SidebarContent>\n <SidebarFooter>\n <NavUser user={data.user} />\n </SidebarFooter>\n </Sidebar>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport { ThemeProvider as NextThemesProvider } from 'next-themes'\n\nexport function ThemeProvider({\n children,\n ...props\n}: React.ComponentProps<typeof NextThemesProvider>) {\n return <NextThemesProvider {...props}>{children}</NextThemesProvider>\n}\n","import { ThemeProvider } from '@components/ui/theme-provider'\nimport type { ThemeProviderProps } from 'next-themes'\n\nexport interface ThemedLayoutContext extends ThemeProviderProps {}\n\nexport const ThemedLayoutContextProvider = ({\n children,\n ...rest\n}: ThemedLayoutContext) => {\n return (\n <ThemeProvider\n attribute=\"data-theme\"\n defaultTheme=\"system\"\n enableSystem\n disableTransitionOnChange\n {...rest}\n >\n {children}\n </ThemeProvider>\n )\n}\n","import { SidebarInset, SidebarProvider } from '@components/ui/sidebar'\n\nimport { ThemedHeader as DefaultHeader } from '@components/themed-layout/header'\nimport { ThemedSider as DefaultSider } from '@components/themed-layout/sider'\nimport type { RefineThemedLayoutProps } from '@components/themed-layout/types'\nimport { ThemedLayoutContextProvider } from '@contexts/themed-layout-context'\n\nexport const ThemedLayout = ({\n Sider,\n Header,\n Title,\n Footer,\n OffLayoutArea,\n children,\n initialSiderCollapsed,\n onSiderCollapsed,\n}: RefineThemedLayoutProps) => {\n const SiderToRender = Sider ?? DefaultSider\n const HeaderToRender = Header ?? DefaultHeader\n\n return (\n <ThemedLayoutContextProvider>\n <SidebarProvider\n defaultOpen={\n initialSiderCollapsed !== undefined ? !initialSiderCollapsed : true\n }\n onOpenChange={\n onSiderCollapsed ? (open) => onSiderCollapsed(!open) : undefined\n }\n style={\n {\n '--sidebar-width': 'calc(var(--spacing) * 72)',\n '--header-height': 'calc(var(--spacing) * 12)',\n } as React.CSSProperties\n }\n >\n <SiderToRender Title={Title} />\n <SidebarInset>\n <HeaderToRender />\n <div className=\"flex flex-1 flex-col gap-4 p-4 pt-0\">{children}</div>\n </SidebarInset>\n </SidebarProvider>\n </ThemedLayoutContextProvider>\n )\n}\n","export const RefineButtonTestIds = {\n CloneButton: \"refine-clone-button\",\n DeleteButton: \"refine-delete-button\",\n EditButton: \"refine-edit-button\",\n SaveButton: \"refine-save-button\",\n CreateButton: \"refine-create-button\",\n ImportButton: \"refine-import-button\",\n ExportButton: \"refine-export-button\",\n ListButton: \"refine-list-button\",\n RefreshButton: \"refine-refresh-button\",\n ShowButton: \"refine-show-button\",\n};\n","export const RefinePageHeaderClassNames = {\n Title: \"refine-pageHeader-title\",\n SubTitle: \"refine-pageHeader-subTitle\",\n};\n\nexport const RefineButtonClassNames = {\n CloneButton: \"refine-clone-button\",\n DeleteButton: \"refine-delete-button\",\n EditButton: \"refine-edit-button\",\n SaveButton: \"refine-save-button\",\n CreateButton: \"refine-create-button\",\n ImportButton: \"refine-import-button\",\n ExportButton: \"refine-export-button\",\n ListButton: \"refine-list-button\",\n RefreshButton: \"refine-refresh-button\",\n ShowButton: \"refine-show-button\",\n};\n","import React from 'react'\nimport {\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useResourceParams,\n} from '@refinedev/core'\n\nimport { CreateButton, Breadcrumb, type CreateButtonProps } from '@components'\nimport { RefinePageHeaderClassNames } from '@refinedev/ui-types'\nimport type { ListProps } from '@components/crud/types'\nimport { cn } from '@lib/utils'\n\nexport const List = (props: ListProps) => {\n const {\n canCreate,\n children,\n createButtonProps: createButtonPropsFromProps,\n resource: resourceFromProps,\n wrapperProps,\n contentProps,\n headerProps,\n headerButtonProps,\n headerButtons: headerButtonsFromProps,\n breadcrumb: breadcrumbFromProps,\n title,\n } = props\n const translate = useTranslate()\n const { options: { breadcrumb: globalBreadcrumb } = {} } = useRefineContext()\n\n const getUserFriendlyName = useUserFriendlyName()\n\n const { resource, identifier } = useResourceParams({\n resource: resourceFromProps,\n })\n\n const isCreateButtonVisible =\n canCreate ?? (!!resource?.create || createButtonPropsFromProps)\n\n const breadcrumb =\n typeof breadcrumbFromProps === 'undefined'\n ? globalBreadcrumb\n : breadcrumbFromProps\n\n const createButtonProps: CreateButtonProps | undefined = isCreateButtonVisible\n ? {\n resource: identifier,\n ...createButtonPropsFromProps,\n }\n : undefined\n\n const defaultHeaderButtons = isCreateButtonVisible ? (\n <CreateButton {...createButtonProps} />\n ) : null\n\n const headerButtons = headerButtonsFromProps\n ? typeof headerButtonsFromProps === 'function'\n ? headerButtonsFromProps({\n defaultButtons: defaultHeaderButtons,\n createButtonProps,\n })\n : headerButtonsFromProps\n : defaultHeaderButtons\n\n const renderTitle = () => {\n if (title === false) return null\n\n if (title) {\n if (typeof title === 'string' || typeof title === 'number') {\n return (\n <h3\n className={cn(\n 'text-2xl font-semibold',\n RefinePageHeaderClassNames.Title\n )}\n >\n {title}\n </h3>\n )\n }\n\n return title\n }\n\n return (\n <h3\n className={cn(\n 'text-2xl font-semibold',\n RefinePageHeaderClassNames.Title\n )}\n >\n {translate(\n `${identifier}.titles.list`,\n getUserFriendlyName(resource?.meta?.label ?? identifier, 'plural')\n )}\n </h3>\n )\n }\n\n return (\n <div className={cn('bg-background rounded-md px-4 py-3')} {...wrapperProps}>\n <div\n className={cn(\n 'mb-3 flex flex-wrap items-center justify-between gap-3 md:flex-nowrap'\n )}\n {...headerProps}\n >\n <div className=\"min-w-[200px]\">\n {typeof breadcrumb !== 'undefined' ? (\n <>{breadcrumb}</>\n ) : (\n <Breadcrumb />\n )}\n {renderTitle()}\n </div>\n <div\n className={cn('flex flex-wrap justify-start gap-2 md:justify-end')}\n {...headerButtonProps}\n >\n {headerButtons}\n </div>\n </div>\n <div {...contentProps}>{children}</div>\n </div>\n )\n}\n","import {\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useResourceParams,\n useBack,\n} from '@refinedev/core'\nimport { ArrowLeft, Loader2 } from 'lucide-react'\n\nimport type {\n CreateProps} from '@components';\nimport {\n Breadcrumb,\n SaveButton,\n type SaveButtonProps,\n} from '@components'\nimport { RefinePageHeaderClassNames } from '@refinedev/ui-types'\nimport { Button } from '@components/ui/button'\nimport { cn } from '@lib/utils'\n\nexport const Create = (props: CreateProps) => {\n const {\n children,\n saveButtonProps: saveButtonPropsFromProps,\n isLoading,\n resource: resourceFromProps,\n footerButtons: footerButtonsFromProps,\n footerButtonProps,\n headerButtons: headerButtonsFromProps,\n headerButtonProps,\n wrapperProps,\n contentProps,\n headerProps,\n goBack: goBackFromProps,\n breadcrumb: breadcrumbFromProps,\n title,\n } = props\n const translate = useTranslate()\n const { options: { breadcrumb: globalBreadcrumb } = {} } = useRefineContext()\n\n const back = useBack()\n const getUserFriendlyName = useUserFriendlyName()\n const { resource, action, identifier } = useResourceParams()\n\n const breadcrumb =\n typeof breadcrumbFromProps === 'undefined'\n ? globalBreadcrumb\n : breadcrumbFromProps\n\n const saveButtonProps: SaveButtonProps = {\n ...(isLoading ? { disabled: true } : {}),\n ...saveButtonPropsFromProps,\n }\n\n const defaultFooterButtons = <SaveButton {...saveButtonProps} />\n\n const buttonBack =\n goBackFromProps === (false || null) ? null : (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={\n action !== 'list' || typeof action !== 'undefined' ? back : undefined\n }\n >\n {typeof goBackFromProps !== 'undefined' ? (\n goBackFromProps\n ) : (\n <ArrowLeft className=\"h-4 w-4\" />\n )}\n </Button>\n )\n\n const headerButtons = headerButtonsFromProps\n ? typeof headerButtonsFromProps === 'function'\n ? headerButtonsFromProps({\n defaultButtons: null,\n })\n : headerButtonsFromProps\n : null\n\n const footerButtons = footerButtonsFromProps\n ? typeof footerButtonsFromProps === 'function'\n ? footerButtonsFromProps({\n defaultButtons: defaultFooterButtons,\n saveButtonProps,\n })\n : footerButtonsFromProps\n : defaultFooterButtons\n\n const renderTitle = () => {\n if (title === false) return null\n\n if (title) {\n if (typeof title === 'string' || typeof title === 'number') {\n return (\n <h3\n className={cn(\n 'text-2xl font-semibold',\n RefinePageHeaderClassNames.Title\n )}\n >\n {title}\n </h3>\n )\n }\n\n return title\n }\n\n return (\n <h3\n className={cn(\n 'text-2xl font-semibold',\n RefinePageHeaderClassNames.Title\n )}\n >\n {translate(\n `${identifier}.titles.create`,\n `Create ${getUserFriendlyName(\n resource?.meta?.label ?? identifier,\n 'singular'\n )}`\n )}\n </h3>\n )\n }\n\n return (\n <div\n className={cn('bg-background relative rounded-md px-4 py-3')}\n {...wrapperProps}\n >\n {isLoading && (\n <div className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\">\n <Loader2 className=\"h-6 w-6 animate-spin\" />\n </div>\n )}\n <div\n className={cn(\n 'mb-3 flex flex-wrap items-center justify-between gap-3 md:flex-nowrap'\n )}\n {...headerProps}\n >\n <div className=\"min-w-[200px]\">\n {typeof breadcrumb !== 'undefined' ? (\n <>{breadcrumb}</>\n ) : (\n <Breadcrumb />\n )}\n <div className=\"flex items-center gap-2\">\n {buttonBack}\n {renderTitle()}\n </div>\n </div>\n <div\n className={cn('flex flex-wrap justify-start gap-2 md:justify-end')}\n {...headerButtonProps}\n >\n {headerButtons}\n </div>\n </div>\n <div className={cn(isLoading && 'opacity-50')} {...contentProps}>\n {children}\n </div>\n <div className={cn('mt-8 flex justify-end gap-2')} {...footerButtonProps}>\n {footerButtons}\n </div>\n </div>\n )\n}\n","import {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport type { CreateButtonProps } from '@components/buttons/types'\nimport { PlusSquare } from 'lucide-react'\nimport React from 'react'\nimport { useCreateButton } from '@refinedev/core'\n\nexport const CreateButton = ({\n resource: resourceNameFromProps,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}: CreateButtonProps) => {\n const { hidden, disabled, label, title, LinkComponent, to } = useCreateButton(\n {\n resource: resourceNameFromProps,\n meta,\n accessControl,\n }\n )\n\n const isDisabled = disabled || rest.disabled\n const isHidden = hidden || rest.hidden\n\n if (isHidden) return null\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n e.preventDefault()\n return\n }\n if (onClick) {\n e.preventDefault()\n onClick(e)\n }\n }}\n >\n <Button\n disabled={isDisabled}\n title={title}\n data-testid={RefineButtonTestIds.CreateButton}\n className={RefineButtonClassNames.CreateButton}\n {...rest}\n >\n <PlusSquare /> {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n )\n}\n","import {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport type { EditButtonProps } from '@components/buttons/types'\nimport { FolderDown } from 'lucide-react'\nimport React from 'react'\nimport { useEditButton } from '@refinedev/core'\n\nexport const EditButton = ({\n resource: resourceNameFromProps,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}: EditButtonProps) => {\n const { hidden, disabled, label, title, LinkComponent, to } = useEditButton({\n resource: resourceNameFromProps,\n id: recordItemId,\n meta,\n accessControl,\n })\n\n const isDisabled = disabled || rest.disabled\n const isHidden = hidden || rest.hidden\n\n if (isHidden) return null\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n e.preventDefault()\n return\n }\n if (onClick) {\n e.preventDefault()\n onClick(e)\n }\n }}\n >\n <Button\n disabled={isDisabled}\n title={title}\n data-testid={RefineButtonTestIds.EditButton}\n className={RefineButtonClassNames.EditButton}\n {...rest}\n >\n <FolderDown /> {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n )\n}\n","'use client'\n\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport * as React from 'react'\n\nimport { cn } from '@lib/utils'\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import { Popover, PopoverContent, PopoverTrigger } from '@components/ui/popover'\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport type { DeleteButtonProps } from '@components/buttons/types'\nimport { Trash } from 'lucide-react'\nimport { useDeleteButton } from '@refinedev/core'\nimport { useState } from 'react'\n\nexport const DeleteButton = ({\n resource: resourceNameFromProps,\n recordItemId,\n onSuccess,\n mutationMode: mutationModeProp,\n children,\n successNotification,\n errorNotification,\n hideText = false,\n accessControl,\n meta,\n invalidates,\n dataProviderName,\n confirmTitle,\n confirmOkText,\n confirmCancelText,\n ...rest\n}: DeleteButtonProps) => {\n const [open, setOpen] = useState(false)\n const {\n onConfirm,\n label,\n title,\n disabled,\n hidden,\n loading,\n confirmTitle: defaultConfirmTitle,\n confirmOkLabel: defaultConfirmOkLabel,\n cancelLabel: defaultCancelLabel,\n } = useDeleteButton({\n resource: resourceNameFromProps,\n id: recordItemId,\n onSuccess,\n mutationMode: mutationModeProp,\n successNotification,\n errorNotification,\n accessControl,\n meta,\n dataProviderName,\n invalidates,\n })\n\n const isDisabled = disabled || rest.disabled\n const isHidden = hidden || rest.hidden\n\n if (isHidden) return null\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n disabled={isDisabled}\n title={title}\n data-testid={RefineButtonTestIds.DeleteButton}\n className={RefineButtonClassNames.DeleteButton}\n {...rest}\n >\n <Trash /> {!hideText && (children ?? label)}\n </Button>\n </PopoverTrigger>\n <PopoverContent>\n {confirmTitle ?? defaultConfirmTitle}\n <div className=\"gap-x-2\">\n <Button onClick={() => setOpen(false)}>\n {confirmCancelText ?? defaultCancelLabel}\n </Button>\n <Button\n onClick={() => {\n onConfirm()\n setOpen(false)\n }}\n >\n {confirmOkText ?? defaultConfirmOkLabel}\n </Button>\n </div>\n </PopoverContent>\n </Popover>\n )\n}\n","import {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport type { RefreshButtonProps } from '@components/buttons/types'\nimport { RefreshCcw } from 'lucide-react'\nimport { useRefreshButton } from '@refinedev/core'\n\nexport const RefreshButton = ({\n resource: resourceNameFromProps,\n recordItemId,\n hideText = false,\n dataProviderName,\n children,\n ...rest\n}: RefreshButtonProps) => {\n const {\n onClick: onRefresh,\n label,\n loading,\n } = useRefreshButton({\n resource: resourceNameFromProps,\n id: recordItemId,\n dataProviderName,\n })\n\n const isDisabled = loading || rest.disabled\n\n return (\n <Button\n onClick={onRefresh}\n disabled={isDisabled}\n data-testid={RefineButtonTestIds.RefreshButton}\n className={RefineButtonClassNames.RefreshButton}\n {...rest}\n >\n <RefreshCcw /> {!hideText && (children ?? label)}\n </Button>\n )\n}\n","import { Eye, Pencil, PlusSquare } from 'lucide-react'\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\nimport { useEditButton, useShowButton } from '@refinedev/core'\n\nimport { Button } from '@components/ui/button'\nimport React from 'react'\nimport type { ShowButtonProps } from '@components/buttons/types'\n\nexport const ShowButton = ({\n resource: resourceNameFromProps,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}: ShowButtonProps) => {\n const { hidden, disabled, label, title, LinkComponent, to } = useShowButton({\n resource: resourceNameFromProps,\n id: recordItemId,\n meta,\n accessControl,\n })\n\n const isDisabled = disabled || rest.disabled\n const isHidden = hidden || rest.hidden\n\n if (isHidden) return null\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n e.preventDefault()\n return\n }\n if (onClick) {\n e.preventDefault()\n onClick(e)\n }\n }}\n >\n <Button\n disabled={isDisabled}\n title={title}\n data-testid={RefineButtonTestIds.ShowButton}\n className={RefineButtonClassNames.ShowButton}\n {...rest}\n >\n <Eye /> {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n )\n}\n","import {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport { List } from 'lucide-react'\nimport type { ListButtonProps } from '@components/buttons/types'\nimport React from 'react'\nimport { useListButton } from '@refinedev/core'\n\nexport const ListButton = ({\n resource: resourceNameFromProps,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}: ListButtonProps) => {\n const { hidden, disabled, label, title, LinkComponent, to } = useListButton({\n resource: resourceNameFromProps,\n meta,\n accessControl,\n })\n\n const isDisabled = disabled || rest.disabled\n const isHidden = hidden || rest.hidden\n\n if (isHidden) return null\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n e.preventDefault()\n return\n }\n if (onClick) {\n e.preventDefault()\n onClick(e)\n }\n }}\n >\n <Button\n disabled={isDisabled}\n title={title}\n data-testid={RefineButtonTestIds.ListButton}\n className={RefineButtonClassNames.ListButton}\n {...rest}\n >\n <List /> {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n )\n}\n","import {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport { FolderUp } from 'lucide-react'\nimport type { ImportButtonProps } from '@components/buttons/types'\nimport { useExportButton } from '@refinedev/core'\n\nexport const ExportButton = ({\n hideText = false,\n loading = false,\n children,\n ...rest\n}: ImportButtonProps) => {\n const { label } = useExportButton()\n\n const isDisabled = loading || rest.disabled\n\n return (\n <Button\n disabled={isDisabled}\n data-testid={RefineButtonTestIds.ExportButton}\n className={RefineButtonClassNames.ExportButton}\n {...rest}\n >\n <FolderUp /> {!hideText && (children ?? label)}\n </Button>\n )\n}\n","import {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport { Save } from 'lucide-react'\nimport type { SaveButtonProps } from '@components/buttons/types'\nimport { useSaveButton } from '@refinedev/core'\n\nexport const SaveButton = ({\n hideText = false,\n children,\n ...rest\n}: SaveButtonProps) => {\n const { label } = useSaveButton()\n\n return (\n <Button\n data-testid={RefineButtonTestIds.SaveButton}\n className={RefineButtonClassNames.SaveButton}\n {...rest}\n >\n <Save /> {!hideText && (children ?? label)}\n </Button>\n )\n}\n","import { Copy, PlusSquare } from 'lucide-react'\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport type { CloneButtonProps } from '@components/buttons/types'\nimport React from 'react'\nimport { useCloneButton } from '@refinedev/core'\n\nexport const CloneButton = ({\n resource: resourceNameFromProps,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}: CloneButtonProps) => {\n const { hidden, disabled, label, title, LinkComponent, to } = useCloneButton({\n resource: resourceNameFromProps,\n id: recordItemId,\n meta,\n accessControl,\n })\n\n const isDisabled = disabled || rest.disabled\n const isHidden = hidden || rest.hidden\n\n if (isHidden) return null\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n e.preventDefault()\n return\n }\n if (onClick) {\n e.preventDefault()\n onClick(e)\n }\n }}\n >\n <Button\n disabled={isDisabled}\n title={title}\n data-testid={RefineButtonTestIds.CloneButton}\n className={RefineButtonClassNames.CloneButton}\n {...rest}\n >\n <Copy /> {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n )\n}\n","import {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport type { ImportButtonProps } from '@components/buttons/types'\nimport { PlusSquare } from 'lucide-react'\nimport { useImportButton } from '@refinedev/core'\n\nexport const ImportButton = ({\n inputProps,\n hideText = false,\n loading = false,\n children,\n ...rest\n}: ImportButtonProps) => {\n const { label } = useImportButton()\n\n const isDisabled = loading || rest.disabled\n\n return (\n <Button\n disabled={isDisabled}\n data-testid={RefineButtonTestIds.ImportButton}\n className={RefineButtonClassNames.ImportButton}\n {...rest}\n >\n <PlusSquare /> {!hideText && (children ?? label)}\n </Button>\n )\n}\n","import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '@lib/utils'\n\nconst textVariants = cva('text-foreground', {\n variants: {\n size: {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport interface TextProps\n extends\n React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof textVariants> {\n asChild?: boolean\n}\n\nexport const Text = React.forwardRef<HTMLSpanElement, TextProps>(\n ({ className, size, asChild, ...props }, ref) => {\n const Comp = asChild ? Slot : 'span'\n return (\n <Comp\n ref={ref}\n className={cn(textVariants({ size }), className)}\n {...props}\n />\n )\n }\n)\nText.displayName = 'Text'\n","import { Text } from '@components/ui/text'\nimport type { TextFieldProps } from '@components/fields/types'\n\nexport const TextField = ({ value, ...rest }: TextFieldProps) => {\n return <Text {...rest}>{value}</Text>\n}\n","import { Check, Minus } from 'lucide-react'\n\nimport type { BooleanFieldProps } from '@components/fields/types'\nimport { Tooltip } from '@components/ui/tooltip'\n\nexport const BooleanField = ({\n value,\n valueLabelTrue = 'true',\n valueLabelFalse = 'false',\n trueIcon,\n falseIcon,\n svgIconProps,\n ...rest\n}: BooleanFieldProps) => {\n return (\n <Tooltip {...rest}>\n <span>\n {value\n ? (trueIcon ?? (\n <Check\n size={20}\n {...svgIconProps}\n className={`icon-check${svgIconProps?.className ? ` ${svgIconProps.className}` : ''}`}\n />\n ))\n : (falseIcon ?? (\n <Minus\n size={20}\n {...svgIconProps}\n className={`icon-minus${svgIconProps?.className ? ` ${svgIconProps.className}` : ''}`}\n />\n ))}\n </span>\n </Tooltip>\n )\n}\n","import type { NumberFieldProps } from '@components/fields/types'\nimport { Text } from '@components/ui/text'\n\nfunction toLocaleStringSupportsOptions() {\n return !!(\n typeof Intl === 'object' &&\n Intl &&\n typeof Intl.NumberFormat === 'function'\n )\n}\n\nexport const NumberField = ({\n value,\n locale,\n options,\n ...rest\n}: NumberFieldProps) => {\n const number = Number(value)\n\n return (\n <Text {...rest}>\n {toLocaleStringSupportsOptions()\n ? number.toLocaleString(locale, options)\n : number}\n </Text>\n )\n}\n","import { useEffect, useState } from 'react'\nimport { useGo, useResourceParams, useTranslate } from '@refinedev/core'\n\nimport { Button } from '@components/ui/button'\n\nexport const ErrorComponent = () => {\n const [errorMessage, setErrorMessage] = useState<string | null>(null)\n const [showTip, setShowTip] = useState(false)\n const translate = useTranslate()\n const go = useGo()\n const { action, resource } = useResourceParams()\n\n useEffect(() => {\n if (resource && action) {\n setErrorMessage(\n translate(\n 'pages.error.info',\n { resource: resource.name, action },\n `You attempted to perform the \"${action}\" action on the \"${resource.name}\" resource, but an error occurred.`\n )\n )\n }\n }, [resource, action, translate])\n\n return (\n <div>\n <h1>404</h1>\n <p>\n {translate(\n 'pages.error.404',\n 'Sorry, the page you visited does not exist.'\n )}\n </p>\n {errorMessage && <p>{errorMessage}</p>}\n {resource && action && ['create', 'edit', 'show'].includes(action) && (\n <div>\n <span\n data-testid=\"error-component-tooltip\"\n onMouseOver={() => setShowTip(true)}\n onMouseOut={() => setShowTip(false)}\n />\n {showTip && (\n <p>\n {translate(\n 'pages.error.tipKnownActionMissing',\n { resource: resource.name, action },\n `You may have forgotten to add the \"${action}\" component to \"${resource.name}\" resource.`\n )}\n </p>\n )}\n </div>\n )}\n <Button\n onClick={() => {\n go({ to: '/' })\n }}\n >\n {translate('pages.error.backHome', 'Back Home')}\n </Button>\n </div>\n )\n}\n","import * as React from 'react'\n\nimport { ChevronRight, MoreHorizontal } from 'lucide-react'\n\nimport { Slot } from '@radix-ui/react-slot'\nimport { cn } from '@lib/utils'\n\ninterface BreadcrumbProps extends React.ComponentProps<'nav'> {}\n\nfunction Breadcrumb({ ...props }: BreadcrumbProps) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<'ol'>) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n 'text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn('inline-flex items-center gap-1.5', className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'a'\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn('hover:text-foreground transition-colors', className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn('text-foreground font-normal', className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('[&>svg]:size-3.5', className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('flex size-9 items-center justify-center', className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n BreadcrumbProps,\n}\n","import type {\n BreadcrumbProps as ShadboardBreadcrumbProps} from '@components/ui/breadcrumb';\nimport {\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbSeparator,\n Breadcrumb as ShadboardBreadcrumb\n} from '@components/ui/breadcrumb'\nimport {\n matchResourceFromRoute,\n useBreadcrumb,\n useLink,\n useResourceParams,\n} from '@refinedev/core'\n\nimport { Home } from 'lucide-react'\nimport type { RefineBreadcrumbProps } from '@refinedev/ui-types'\n\nexport type BreadcrumbProps = RefineBreadcrumbProps<ShadboardBreadcrumbProps>\n\nexport const Breadcrumb = ({\n breadcrumbProps,\n showHome = true,\n hideIcons = false,\n meta,\n minItems = 2,\n}: BreadcrumbProps) => {\n const { breadcrumbs } = useBreadcrumb({ meta })\n const Link = useLink()\n\n if (breadcrumbs.length < minItems) return null\n\n const { resources } = useResourceParams()\n\n const rootRouteResource = matchResourceFromRoute('/', resources)\n\n return (\n <ShadboardBreadcrumb {...breadcrumbProps}>\n <BreadcrumbList>\n {showHome && rootRouteResource?.found && (\n <>\n <BreadcrumbItem>\n <Link to=\"/\">\n {rootRouteResource?.resource?.meta?.icon ?? <Home size={20} />}\n </Link>\n </BreadcrumbItem>\n {breadcrumbs.length > 0 && <BreadcrumbSeparator />}\n </>\n )}\n {breadcrumbs.map(({ label, icon, href }, index) => {\n return (\n <>\n <BreadcrumbItem key={label}>\n {!hideIcons && icon}\n {href ? (\n <BreadcrumbLink asChild>\n <Link to={href}>{label}</Link>\n </BreadcrumbLink>\n ) : (\n <BreadcrumbLink>{label}</BreadcrumbLink>\n )}\n </BreadcrumbItem>\n {index < breadcrumbs.length - 1 && <BreadcrumbSeparator />}\n </>\n )\n })}\n </BreadcrumbList>\n </ShadboardBreadcrumb>\n )\n}\n","import { Button } from '@components/ui/button'\nimport type { OpenNotificationParams } from '@refinedev/core'\nimport { RotateCcwSquare } from 'lucide-react'\nimport { Text } from '@components/ui/text'\nimport { toast } from 'sonner'\n\nexport type UndoableNotificationProps = {\n notificationKey: OpenNotificationParams['key']\n message: OpenNotificationParams['message']\n cancelMutation: OpenNotificationParams['cancelMutation']\n undoableTimeout: OpenNotificationParams['undoableTimeout']\n}\n\nexport const UndoableNotification: React.FC<UndoableNotificationProps> = ({\n notificationKey = '',\n message,\n cancelMutation,\n undoableTimeout = 0,\n}) => {\n return (\n <div className=\"bg-background flex min-w-[320px] items-center justify-between gap-2 p-2 shadow-md\">\n <div className=\"flex items-center gap-2\">\n <span className=\"inline-flex h-6 min-w-6 items-center justify-center rounded-md border px-2 text-xs\">\n {undoableTimeout}s\n </span>\n </div>\n <Text>{message}</Text>\n <Button\n aria-label=\"undo\"\n variant=\"outline\"\n onClick={() => {\n cancelMutation?.()\n if (notificationKey) {\n toast.dismiss(notificationKey)\n }\n }}\n size={'icon'}\n >\n <RotateCcwSquare size={18} />\n </Button>\n </div>\n )\n}\n","import {\n type AutoSaveIndicatorProps,\n useTranslate,\n AutoSaveIndicator as AutoSaveIndicatorCore,\n} from '@refinedev/core'\nimport { Text } from '@components/ui/text'\nimport {\n CheckCircle,\n Dot,\n FileExclamationPoint,\n RefreshCcw,\n} from 'lucide-react'\n\nexport const AutoSaveIndicator = ({\n status,\n elements: {\n success = (\n <Message\n translationKey=\"autoSave.success\"\n defaultMessage=\"saved\"\n icon={<CheckCircle size=\"18px\" />}\n />\n ),\n error = (\n <Message\n translationKey=\"autoSave.error\"\n defaultMessage=\"auto save failure\"\n icon={<FileExclamationPoint size=\"18px\" />}\n />\n ),\n loading = (\n <Message\n translationKey=\"autoSave.loading\"\n defaultMessage=\"saving...\"\n icon={<RefreshCcw size=\"18px\" />}\n />\n ),\n idle = (\n <Message\n translationKey=\"autoSave.idle\"\n defaultMessage=\"waiting for changes\"\n icon={<Dot size=\"18px\" />}\n />\n ),\n } = {},\n}: AutoSaveIndicatorProps) => {\n return (\n <AutoSaveIndicatorCore\n status={status}\n elements={{\n success,\n error,\n loading,\n idle,\n }}\n />\n )\n}\n\nconst Message = ({\n translationKey,\n defaultMessage,\n icon,\n}: {\n translationKey: string\n defaultMessage: string\n icon: React.ReactNode\n}) => {\n const translate = useTranslate()\n\n return (\n <Text\n color=\"gray.700\"\n className=\"color-muted mr-2 flex flex-wrap items-center text-sm\"\n >\n {translate(translationKey, defaultMessage)}\n <span style={{ marginLeft: '3px' }}>{icon}</span>\n </Text>\n )\n}\n","import type { NotificationProvider } from '@refinedev/core'\nimport { UndoableNotification } from '@components/undoable-notification'\nimport { toast } from 'sonner'\n\nexport const useNotificationProvider = (): NotificationProvider => {\n return {\n open: ({\n key,\n message,\n type,\n description,\n undoableTimeout,\n cancelMutation,\n }) => {\n if (type === 'progress') {\n toast.custom(\n () => (\n <UndoableNotification\n notificationKey={key}\n message={message}\n cancelMutation={cancelMutation}\n undoableTimeout={undoableTimeout}\n />\n ),\n {\n id: key,\n duration: Infinity,\n }\n )\n return\n }\n\n const options: { id?: string | number; description?: string } = {}\n if (key !== undefined) options.id = key\n if (description) options.description = description\n\n if (type === 'success') {\n toast.success(message, options)\n } else if (type === 'error') {\n toast.error(message, options)\n } else {\n toast(message, options)\n }\n },\n close: (key) => toast.dismiss(key as any),\n }\n}\n","export type GreetingOptions = {\n name?: string\n}\n\nexport function greet(opts: GreetingOptions = {}): string {\n const name = opts.name ?? 'mundo'\n return `Hola, ${name}!`\n}\n\nexport * from './components'\n// export * from './hooks'\n// export * from './theme'\nexport * from './providers'\nexport * from './contexts'\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-mobile.ts","../src/lib/utils.ts","../src/components/ui/button.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/sidebar.tsx","../src/components/themed-layout/header/index.tsx","../src/components/themed-layout/title/index.tsx","../src/components/ui/collapsible.tsx","../src/components/themed-layout/sider/nav-main.tsx","../src/components/ui/avatar.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/themed-layout/sider/nav-user.tsx","../src/components/themed-layout/sider/index.tsx","../src/components/ui/theme-provider.tsx","../src/contexts/themed-layout-context/index.tsx","../src/components/themed-layout/index.tsx","../../../node_modules/.pnpm/@refinedev+ui-types@2.0.1_@refinedev+core@5.0.6_@tanstack+react-query@5.90.12_react@19.2.1__@_bktr4bku2v5d5gvnmfyaharmpy/node_modules/@refinedev/ui-types/src/ids.tsx","../../../node_modules/.pnpm/@refinedev+ui-types@2.0.1_@refinedev+core@5.0.6_@tanstack+react-query@5.90.12_react@19.2.1__@_bktr4bku2v5d5gvnmfyaharmpy/node_modules/@refinedev/ui-types/src/classNames.ts","../src/components/crud/list/index.tsx","../src/components/crud/create/index.tsx","../src/components/buttons/create/index.tsx","../src/components/buttons/edit/index.tsx","../src/components/ui/popover.tsx","../src/components/buttons/delete/index.tsx","../src/components/buttons/refresh/index.tsx","../src/components/buttons/show/index.tsx","../src/components/buttons/list/index.tsx","../src/components/buttons/export/index.tsx","../src/components/buttons/save/index.tsx","../src/components/buttons/clone/index.tsx","../src/components/buttons/import/index.tsx","../src/components/ui/text.tsx","../src/components/fields/text/index.tsx","../src/components/fields/boolean/index.tsx","../src/components/fields/number/index.tsx","../src/components/pages/error/index.tsx","../src/components/ui/breadcrumb.tsx","../src/components/breadcrumb/index.tsx","../src/components/undoable-notification/index.tsx","../src/components/auto-save-indicator/index.tsx","../src/providers/notification-provider.tsx","../src/index.ts"],"names":["MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","useState","useEffect","mql","onChange","cn","inputs","twMerge","clsx","buttonVariants","cva","Button","className","variant","size","asChild","props","jsx","Slot","Separator","orientation","decorative","_e","Sheet","N","SheetPortal","SheetOverlay","SheetContent","children","side","jsxs","XIcon","SheetHeader","SheetTitle","SheetDescription","TooltipProvider","delayDuration","k","Tooltip","TooltipTrigger","TooltipContent","sideOffset","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","T","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","style","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","Sidebar","collapsible","SidebarTrigger","onClick","PanelLeftIcon","SidebarInset","SidebarHeader","SidebarFooter","SidebarContent","SidebarGroup","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","SidebarMenuButton","isActive","tooltip","Comp","button","SidebarMenuSub","ThemedHeader","sticky","user","useGetIdentity","Fragment","ThemedTitle","collapsed","iconFromProps","textFromProps","defaultIcon","defaultText","useRefineOptions","icon","text","Link","useLink","Collapsible","J","CollapsibleTrigger","CollapsibleContent","TreeViewItem","item","selectedKey","defaultOpenKeys","activeItemDisabled","label","route","name","isSelected","isParent","isOpen","setIsOpen","CanAccess","ListIcon","ChevronRight","child","NavMain","meta","menuItems","useMenu","CirclePlus","Mail","Avatar","Z","AvatarImage","AvatarFallback","DropdownMenu","x","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","inset","DropdownMenuLabel","DropdownMenuSeparator","NavUser","Dot","UserCircle","CreditCard","Bell","LogOut","data","ThemedSider","TitleFromProps","render","siderItemsAreCollapsed","rest","RenderToTitle","ThemeProvider","NextThemesProvider","ThemedLayoutContextProvider","ThemedLayout","Sider","Header","Title","Footer","OffLayoutArea","initialSiderCollapsed","onSiderCollapsed","RefineButtonTestIds","RefinePageHeaderClassNames","RefineButtonClassNames","List","canCreate","createButtonPropsFromProps","resourceFromProps","wrapperProps","contentProps","headerProps","headerButtonProps","headerButtonsFromProps","breadcrumbFromProps","title","translate","useTranslate","globalBreadcrumb","useRefineContext","getUserFriendlyName","useUserFriendlyName","resource","identifier","useResourceParams","isCreateButtonVisible","breadcrumb","createButtonProps","defaultHeaderButtons","CreateButton","headerButtons","renderTitle","Breadcrumb","Create","saveButtonPropsFromProps","isLoading","footerButtonsFromProps","footerButtonProps","goBackFromProps","back","useBack","action","saveButtonProps","defaultFooterButtons","SaveButton","buttonBack","ArrowLeft","footerButtons","Loader2","resourceNameFromProps","hideText","accessControl","hidden","disabled","LinkComponent","to","useCreateButton","isDisabled","e","PlusSquare","EditButton","recordItemId","useEditButton","FolderDown","Popover","O","PopoverTrigger","PopoverContent","align","DeleteButton","onSuccess","mutationModeProp","successNotification","errorNotification","invalidates","dataProviderName","confirmTitle","confirmOkText","confirmCancelText","onConfirm","loading","defaultConfirmTitle","defaultConfirmOkLabel","defaultCancelLabel","useDeleteButton","Trash","RefreshButton","onRefresh","useRefreshButton","RefreshCcw","ShowButton","useShowButton","Eye","ListButton","useListButton","ExportButton","useExportButton","FolderUp","useSaveButton","Save","CloneButton","useCloneButton","Copy","ImportButton","inputProps","useImportButton","textVariants","Text","It","ref","TextField","BooleanField","valueLabelTrue","valueLabelFalse","trueIcon","falseIcon","svgIconProps","Check","Minus","toLocaleStringSupportsOptions","NumberField","locale","options","number","ErrorComponent","errorMessage","setErrorMessage","showTip","setShowTip","go","useGo","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","breadcrumbProps","showHome","hideIcons","minItems","breadcrumbs","useBreadcrumb","resources","rootRouteResource","matchResourceFromRoute","Home","href","index","UndoableNotification","notificationKey","message","cancelMutation","undoableTimeout","toast","RotateCcwSquare","AutoSaveIndicator","status","success","Message","CheckCircle","error","FileExclamationPoint","idle","AutoSaveIndicatorCore","translationKey","defaultMessage","useNotificationProvider","key","type","description","greet","opts"],"mappings":"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","file":"index.js","sourcesContent":["import { useEffect, useState } from 'react'\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = useState<boolean | undefined>(undefined)\n\n 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","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '@lib/utils'\n\nconst buttonVariants = cva(\n \"inline-flex gap-2 items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground hover:bg-primary/90',\n destructive:\n 'bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',\n outline:\n 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n secondary:\n 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n ghost:\n 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2 has-[>svg]:px-3',\n sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5',\n lg: 'h-10 rounded-md px-6 has-[>svg]:px-4',\n icon: 'size-9',\n 'icon-sm': 'size-8',\n 'icon-lg': 'size-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\ninterface ButtonProps\n extends React.ComponentProps<'button'>, VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants, ButtonProps }\n","'use client'\n\nimport * as React from 'react'\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\n\nimport { cn } from '@lib/utils'\n\nfunction Separator({\n className,\n orientation = 'horizontal',\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","'use client'\n\nimport * as React from 'react'\nimport * as SheetPrimitive from '@radix-ui/react-dialog'\n\nimport { XIcon } from 'lucide-react'\nimport { cn } from '@lib/utils'\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left'\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n side === 'right' &&\n 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm',\n side === 'left' &&\n 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm',\n side === 'top' &&\n 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b',\n side === 'bottom' &&\n 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t',\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn('flex flex-col gap-1.5 p-4', className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn('mt-auto flex flex-col gap-2 p-4', className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('text-foreground font-semibold', className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\n\nimport { cn } from '@lib/utils'\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance',\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","'use client'\n\nimport * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { PanelLeftIcon } from 'lucide-react'\n\nimport { useIsMobile } from '@hooks/use-mobile'\nimport { cn } from '@lib/utils'\nimport { Button } from '@components/ui/button'\nimport { Input } from '@components/ui/input'\nimport { Separator } from '@components/ui/separator'\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from '@components/ui/sheet'\nimport { Skeleton } from '@components/ui/skeleton'\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@components/ui/tooltip'\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '16rem'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '3rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed'\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-7', className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col',\n 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn('bg-background h-8 w-full shadow-none', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn('w-full text-sm', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n)\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : 'button'\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after: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]:hidden',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button: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]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean\n size?: 'sm' | 'md'\n isActive?: boolean\n}) {\n const Comp = asChild ? Slot : 'a'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","import { Button } from '@components/ui/button'\nimport { HamburgerMenu } from '@components/themed-layout/hamburger-menu'\nimport type { RefineThemedLayoutHeaderProps } from '@components/themed-layout/types'\nimport { Separator } from '@components/ui/separator'\nimport { SidebarTrigger } from '@components/ui/sidebar'\nimport { useGetIdentity } from '@refinedev/core'\n\nexport const ThemedHeader = ({ sticky }: RefineThemedLayoutHeaderProps) => {\n const { data: user } = useGetIdentity()\n\n return (\n <>\n <header className=\"flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)\">\n <div className=\"flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6\">\n <SidebarTrigger className=\"-ml-1\" />\n <Separator\n orientation=\"vertical\"\n className=\"mx-2 data-[orientation=vertical]:h-4\"\n />\n <h1 className=\"text-base font-medium\">Documents</h1>\n <div className=\"ml-auto flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n asChild\n size=\"sm\"\n className=\"hidden sm:flex\"\n >\n <a\n href=\"https://github.com/shadcn-ui/ui/tree/main/apps/v4/app/(examples)/dashboard\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n className=\"dark:text-foreground\"\n >\n GitHub\n </a>\n </Button>\n </div>\n </div>\n </header>\n {/* <div\n className={`bg-background flex h-16 w-full items-center border-b px-4 py-2 ${\n sticky ? 'sticky top-0 z-10' : ''\n }`}\n data-testid=\"themed-header\"\n >\n <div className=\"flex w-full items-center justify-between\">\n <HamburgerMenu />\n <div className=\"flex items-center gap-2\">\n {user?.name && (\n <span\n className=\"text-sm font-bold\"\n data-testid=\"header-user-name\"\n >\n {user.name}\n </span>\n )}\n {user?.avatar && (\n <img\n alt={user?.name || 'Profile Photo'}\n src={user.avatar}\n className=\"h-8 w-8 rounded-full object-cover\"\n />\n )}\n </div>\n </div>\n </div> */}\n </>\n )\n}\n","import { useLink, useRefineOptions } from '@refinedev/core'\n\nimport type { RefineLayoutThemedTitleProps } from '@refinedev/ui-types'\nimport { stat } from 'fs'\nimport { useSidebar } from '@components/ui/sidebar'\n\nexport const ThemedTitle = ({\n collapsed,\n icon: iconFromProps,\n text: textFromProps,\n}: RefineLayoutThemedTitleProps) => {\n const { title: { icon: defaultIcon, text: defaultText } = {} } =\n useRefineOptions()\n const icon =\n typeof iconFromProps === 'undefined' ? defaultIcon : iconFromProps\n const text =\n typeof textFromProps === 'undefined' ? defaultText : textFromProps\n const Link = useLink()\n\n const { state, isMobile } = useSidebar()\n\n return (\n <Link\n to=\"/\"\n className=\"flex items-center justify-center gap-2 text-inherit no-underline hover:no-underline\"\n >\n <div className=\"size-6 [&>img]:size-6 [&>svg]:size-6\">{icon}</div>\n {(isMobile || (!collapsed && state === 'expanded')) && (\n <h6 className=\"text-base font-semibold\">{text}</h6>\n )}\n </Link>\n )\n}\n","'use client'\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible'\nimport * as React from 'react'\n\nimport { cn } from '@lib/utils'\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n data-slot=\"collapsible-trigger\"\n {...props}\n />\n )\n}\n\nfunction CollapsibleContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n data-slot=\"collapsible-content\"\n className={cn(\n 'data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down overflow-hidden transition-all',\n className\n )}\n {...props}\n >\n {children}\n </CollapsiblePrimitive.CollapsibleContent>\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","'use client'\n\nimport type { TreeMenuItem} from '@refinedev/core';\nimport { CanAccess, useLink, useMenu } from '@refinedev/core'\nimport { ChevronRight, CirclePlus, ListIcon, Mail } from 'lucide-react'\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@components/ui/collapsible'\nimport {\n SidebarGroup,\n SidebarGroupContent,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n} from '@components/ui/sidebar'\n\nimport { Button } from '@components/ui/button'\nimport type { RefineThemedLayoutSiderProps } from '@components/themed-layout/types'\nimport { cn } from '@lib/utils'\nimport { useState } from 'react'\n\ninterface NavMainProps extends Pick<\n RefineThemedLayoutSiderProps,\n 'meta' | 'activeItemDisabled'\n> {}\n\ninterface TreeViewItemProps {\n item: TreeMenuItem\n selectedKey: string | undefined\n defaultOpenKeys: string[]\n Link: any\n activeItemDisabled?: boolean\n}\n\nfunction TreeViewItem({\n item,\n selectedKey,\n defaultOpenKeys,\n Link,\n activeItemDisabled = false,\n}: TreeViewItemProps) {\n const { label, route, name, icon, children } = item\n const isSelected = item.key === selectedKey\n const isParent = children && children.length > 0\n const defaultOpen = defaultOpenKeys.includes(item.key || '')\n const [isOpen, setIsOpen] = useState(defaultOpen)\n\n if (!isParent) {\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{ resource: item }}\n >\n <SidebarMenuItem>\n <SidebarMenuButton\n asChild={!isSelected || !activeItemDisabled}\n tooltip={label}\n isActive={isSelected}\n disabled={isSelected && activeItemDisabled}\n >\n <Link to={route}>\n {icon ?? <ListIcon className=\"h-4 w-4\" />}\n <span>{label}</span>\n </Link>\n </SidebarMenuButton>\n </SidebarMenuItem>\n </CanAccess>\n )\n }\n\n return (\n <CanAccess\n key={item.key}\n resource={name}\n action=\"list\"\n params={{ resource: item }}\n >\n <Collapsible\n open={isOpen}\n onOpenChange={setIsOpen}\n className=\"group/collapsible\"\n >\n <SidebarMenuItem>\n <CollapsibleTrigger asChild>\n <SidebarMenuButton tooltip={label} isActive={isSelected}>\n {icon ?? <ListIcon className=\"h-4 w-4\" />}\n <span>{label}</span>\n <ChevronRight\n className={cn(\n 'ml-auto h-4 w-4 transition-transform duration-200',\n isOpen && 'rotate-90'\n )}\n />\n </SidebarMenuButton>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <SidebarMenuSub>\n {children.map((child) => (\n <TreeViewItem\n key={child.key}\n item={child}\n selectedKey={selectedKey}\n defaultOpenKeys={defaultOpenKeys}\n Link={Link}\n activeItemDisabled={activeItemDisabled}\n />\n ))}\n </SidebarMenuSub>\n </CollapsibleContent>\n </SidebarMenuItem>\n </Collapsible>\n </CanAccess>\n )\n}\n\nexport function NavMain({ meta, activeItemDisabled = false }: NavMainProps) {\n const Link = useLink()\n const { menuItems, selectedKey, defaultOpenKeys } = useMenu({ meta })\n\n return (\n <SidebarGroup>\n <SidebarGroupContent className=\"flex flex-col gap-2\">\n <SidebarMenu>\n <SidebarMenuItem className=\"flex items-center gap-2\">\n <SidebarMenuButton\n tooltip=\"Quick Create\"\n className=\"bg-primary text-primary-foreground hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground min-w-8 duration-200 ease-linear\"\n >\n <CirclePlus />\n <span>Quick Create</span>\n </SidebarMenuButton>\n <Button\n size=\"icon\"\n className=\"size-8 group-data-[collapsible=icon]:opacity-0\"\n variant=\"outline\"\n >\n <Mail />\n <span className=\"sr-only\">Inbox</span>\n </Button>\n </SidebarMenuItem>\n </SidebarMenu>\n <SidebarMenu>\n {menuItems.map((item) => (\n <TreeViewItem\n key={item.key}\n item={item}\n selectedKey={selectedKey}\n defaultOpenKeys={defaultOpenKeys}\n Link={Link}\n activeItemDisabled={activeItemDisabled}\n />\n ))}\n </SidebarMenu>\n </SidebarGroupContent>\n </SidebarGroup>\n )\n}\n","'use client'\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar'\nimport * as React from 'react'\n\nimport { cn } from '@lib/utils'\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n 'relative flex size-8 shrink-0 overflow-hidden rounded-full',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('aspect-square size-full', className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'bg-muted flex size-full items-center justify-center rounded-full',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","'use client'\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport * as React from 'react'\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react'\n\nimport { cn } from '@lib/utils'\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md',\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: 'default' | 'destructive'\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm font-medium data-[inset]:pl-8',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn('bg-border -mx-1 my-1 h-px', className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n 'text-muted-foreground ml-auto text-xs tracking-widest',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","'use client'\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@components/ui/avatar'\nimport { Bell, CreditCard, Dot, LogOut, UserCircle } from 'lucide-react'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@components/ui/dropdown-menu'\nimport {\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n useSidebar,\n} from '@components/ui/sidebar'\n\nexport function NavUser({\n user,\n}: {\n user: {\n name: string\n email: string\n avatar: string\n }\n}) {\n const { isMobile } = useSidebar()\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <Avatar className=\"h-8 w-8 rounded-lg grayscale\">\n <AvatarImage src={user.avatar} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">{user.name}</span>\n <span className=\"text-muted-foreground truncate text-xs\">\n {user.email}\n </span>\n </div>\n <Dot className=\"ml-auto size-4\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n className=\"w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg\"\n side={isMobile ? 'bottom' : 'right'}\n align=\"end\"\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={user.avatar} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n </Avatar>\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-medium\">{user.name}</span>\n <span className=\"text-muted-foreground truncate text-xs\">\n {user.email}\n </span>\n </div>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n <DropdownMenuItem>\n <UserCircle />\n Account\n </DropdownMenuItem>\n <DropdownMenuItem>\n <CreditCard />\n Billing\n </DropdownMenuItem>\n <DropdownMenuItem>\n <Bell />\n Notifications\n </DropdownMenuItem>\n </DropdownMenuGroup>\n <DropdownMenuSeparator />\n <DropdownMenuItem>\n <LogOut />\n Log out\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n )\n}\n","'use client'\n\nimport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarHeader,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n useSidebar,\n} from '@components/ui/sidebar'\n\nimport { ThemedTitle as DefaultTitle } from '@components/themed-layout/title'\nimport { NavMain } from '@components/themed-layout/sider/nav-main'\nimport { NavUser } from '@components/themed-layout/sider/nav-user'\nimport type { RefineThemedLayoutSiderProps } from '@components/themed-layout/types'\n\nconst data = {\n user: {\n name: 'shadcn',\n email: 'm@example.com',\n avatar: '/avatars/shadcn.jpg',\n },\n}\n\ninterface ThemedSiderProps\n extends RefineThemedLayoutSiderProps, React.ComponentProps<typeof Sidebar> {}\n\nexport function ThemedSider({\n Title: TitleFromProps,\n render,\n meta,\n activeItemDisabled = false,\n siderItemsAreCollapsed = true,\n ...rest\n}: ThemedSiderProps) {\n const RenderToTitle = TitleFromProps ?? DefaultTitle\n const { state } = useSidebar()\n const isCollapsed = state === 'collapsed'\n\n return (\n <Sidebar collapsible=\"icon\" {...rest}>\n <SidebarHeader>\n <SidebarMenu>\n <SidebarMenuItem>\n <SidebarMenuButton\n asChild\n className=\"data-[slot=sidebar-menu-button]:!p-1.5\"\n >\n <RenderToTitle collapsed={isCollapsed} />\n </SidebarMenuButton>\n </SidebarMenuItem>\n </SidebarMenu>\n </SidebarHeader>\n <SidebarContent>\n <NavMain meta={meta} activeItemDisabled={activeItemDisabled} />\n </SidebarContent>\n <SidebarFooter>\n <NavUser user={data.user} />\n </SidebarFooter>\n </Sidebar>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport { ThemeProvider as NextThemesProvider } from 'next-themes'\n\nexport function ThemeProvider({\n children,\n ...props\n}: React.ComponentProps<typeof NextThemesProvider>) {\n return <NextThemesProvider {...props}>{children}</NextThemesProvider>\n}\n","import { ThemeProvider } from '@components/ui/theme-provider'\nimport type { ThemeProviderProps } from 'next-themes'\n\nexport interface ThemedLayoutContext extends ThemeProviderProps {}\n\nexport const ThemedLayoutContextProvider = ({\n children,\n ...rest\n}: ThemedLayoutContext) => {\n return (\n <ThemeProvider\n attribute=\"data-theme\"\n defaultTheme=\"system\"\n enableSystem\n disableTransitionOnChange\n {...rest}\n >\n {children}\n </ThemeProvider>\n )\n}\n","import { SidebarInset, SidebarProvider } from '@components/ui/sidebar'\n\nimport { ThemedHeader as DefaultHeader } from '@components/themed-layout/header'\nimport { ThemedSider as DefaultSider } from '@components/themed-layout/sider'\nimport type { RefineThemedLayoutProps } from '@components/themed-layout/types'\nimport { ThemedLayoutContextProvider } from '@contexts/themed-layout-context'\n\nexport const ThemedLayout = ({\n Sider,\n Header,\n Title,\n Footer,\n OffLayoutArea,\n children,\n initialSiderCollapsed,\n onSiderCollapsed,\n}: RefineThemedLayoutProps) => {\n const SiderToRender = Sider ?? DefaultSider\n const HeaderToRender = Header ?? DefaultHeader\n\n return (\n <ThemedLayoutContextProvider>\n <SidebarProvider\n defaultOpen={\n initialSiderCollapsed !== undefined ? !initialSiderCollapsed : true\n }\n onOpenChange={\n onSiderCollapsed ? (open) => onSiderCollapsed(!open) : undefined\n }\n style={\n {\n '--sidebar-width': 'calc(var(--spacing) * 72)',\n '--header-height': 'calc(var(--spacing) * 12)',\n } as React.CSSProperties\n }\n >\n <SiderToRender Title={Title} />\n <SidebarInset>\n <HeaderToRender />\n <div className=\"flex flex-1 flex-col gap-4 p-4 pt-0\">{children}</div>\n </SidebarInset>\n </SidebarProvider>\n </ThemedLayoutContextProvider>\n )\n}\n","export const RefineButtonTestIds = {\n CloneButton: \"refine-clone-button\",\n DeleteButton: \"refine-delete-button\",\n EditButton: \"refine-edit-button\",\n SaveButton: \"refine-save-button\",\n CreateButton: \"refine-create-button\",\n ImportButton: \"refine-import-button\",\n ExportButton: \"refine-export-button\",\n ListButton: \"refine-list-button\",\n RefreshButton: \"refine-refresh-button\",\n ShowButton: \"refine-show-button\",\n};\n","export const RefinePageHeaderClassNames = {\n Title: \"refine-pageHeader-title\",\n SubTitle: \"refine-pageHeader-subTitle\",\n};\n\nexport const RefineButtonClassNames = {\n CloneButton: \"refine-clone-button\",\n DeleteButton: \"refine-delete-button\",\n EditButton: \"refine-edit-button\",\n SaveButton: \"refine-save-button\",\n CreateButton: \"refine-create-button\",\n ImportButton: \"refine-import-button\",\n ExportButton: \"refine-export-button\",\n ListButton: \"refine-list-button\",\n RefreshButton: \"refine-refresh-button\",\n ShowButton: \"refine-show-button\",\n};\n","import React from 'react'\nimport {\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useResourceParams,\n} from '@refinedev/core'\n\nimport { CreateButton, Breadcrumb, type CreateButtonProps } from '@components'\nimport { RefinePageHeaderClassNames } from '@refinedev/ui-types'\nimport type { ListProps } from '@components/crud/types'\nimport { cn } from '@lib/utils'\n\nexport const List = (props: ListProps) => {\n const {\n canCreate,\n children,\n createButtonProps: createButtonPropsFromProps,\n resource: resourceFromProps,\n wrapperProps,\n contentProps,\n headerProps,\n headerButtonProps,\n headerButtons: headerButtonsFromProps,\n breadcrumb: breadcrumbFromProps,\n title,\n } = props\n const translate = useTranslate()\n const { options: { breadcrumb: globalBreadcrumb } = {} } = useRefineContext()\n\n const getUserFriendlyName = useUserFriendlyName()\n\n const { resource, identifier } = useResourceParams({\n resource: resourceFromProps,\n })\n\n const isCreateButtonVisible =\n canCreate ?? (!!resource?.create || createButtonPropsFromProps)\n\n const breadcrumb =\n typeof breadcrumbFromProps === 'undefined'\n ? globalBreadcrumb\n : breadcrumbFromProps\n\n const createButtonProps: CreateButtonProps | undefined = isCreateButtonVisible\n ? {\n resource: identifier,\n ...createButtonPropsFromProps,\n }\n : undefined\n\n const defaultHeaderButtons = isCreateButtonVisible ? (\n <CreateButton {...createButtonProps} />\n ) : null\n\n const headerButtons = headerButtonsFromProps\n ? typeof headerButtonsFromProps === 'function'\n ? headerButtonsFromProps({\n defaultButtons: defaultHeaderButtons,\n createButtonProps,\n })\n : headerButtonsFromProps\n : defaultHeaderButtons\n\n const renderTitle = () => {\n if (title === false) return null\n\n if (title) {\n if (typeof title === 'string' || typeof title === 'number') {\n return (\n <h3\n className={cn(\n 'text-2xl font-semibold',\n RefinePageHeaderClassNames.Title\n )}\n >\n {title}\n </h3>\n )\n }\n\n return title\n }\n\n return (\n <h3\n className={cn(\n 'text-2xl font-semibold',\n RefinePageHeaderClassNames.Title\n )}\n >\n {translate(\n `${identifier}.titles.list`,\n getUserFriendlyName(resource?.meta?.label ?? identifier, 'plural')\n )}\n </h3>\n )\n }\n\n return (\n <div className={cn('bg-background rounded-md px-4 py-3')} {...wrapperProps}>\n <div\n className={cn(\n 'mb-3 flex flex-wrap items-center justify-between gap-3 md:flex-nowrap'\n )}\n {...headerProps}\n >\n <div className=\"min-w-[200px]\">\n {typeof breadcrumb !== 'undefined' ? (\n <>{breadcrumb}</>\n ) : (\n <Breadcrumb />\n )}\n {renderTitle()}\n </div>\n <div\n className={cn('flex flex-wrap justify-start gap-2 md:justify-end')}\n {...headerButtonProps}\n >\n {headerButtons}\n </div>\n </div>\n <div {...contentProps}>{children}</div>\n </div>\n )\n}\n","import {\n useTranslate,\n useUserFriendlyName,\n useRefineContext,\n useResourceParams,\n useBack,\n} from '@refinedev/core'\nimport { ArrowLeft, Loader2 } from 'lucide-react'\n\nimport type {\n CreateProps} from '@components';\nimport {\n Breadcrumb,\n SaveButton,\n type SaveButtonProps,\n} from '@components'\nimport { RefinePageHeaderClassNames } from '@refinedev/ui-types'\nimport { Button } from '@components/ui/button'\nimport { cn } from '@lib/utils'\n\nexport const Create = (props: CreateProps) => {\n const {\n children,\n saveButtonProps: saveButtonPropsFromProps,\n isLoading,\n resource: resourceFromProps,\n footerButtons: footerButtonsFromProps,\n footerButtonProps,\n headerButtons: headerButtonsFromProps,\n headerButtonProps,\n wrapperProps,\n contentProps,\n headerProps,\n goBack: goBackFromProps,\n breadcrumb: breadcrumbFromProps,\n title,\n } = props\n const translate = useTranslate()\n const { options: { breadcrumb: globalBreadcrumb } = {} } = useRefineContext()\n\n const back = useBack()\n const getUserFriendlyName = useUserFriendlyName()\n const { resource, action, identifier } = useResourceParams()\n\n const breadcrumb =\n typeof breadcrumbFromProps === 'undefined'\n ? globalBreadcrumb\n : breadcrumbFromProps\n\n const saveButtonProps: SaveButtonProps = {\n ...(isLoading ? { disabled: true } : {}),\n ...saveButtonPropsFromProps,\n }\n\n const defaultFooterButtons = <SaveButton {...saveButtonProps} />\n\n const buttonBack =\n goBackFromProps === (false || null) ? null : (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={\n action !== 'list' || typeof action !== 'undefined' ? back : undefined\n }\n >\n {typeof goBackFromProps !== 'undefined' ? (\n goBackFromProps\n ) : (\n <ArrowLeft className=\"h-4 w-4\" />\n )}\n </Button>\n )\n\n const headerButtons = headerButtonsFromProps\n ? typeof headerButtonsFromProps === 'function'\n ? headerButtonsFromProps({\n defaultButtons: null,\n })\n : headerButtonsFromProps\n : null\n\n const footerButtons = footerButtonsFromProps\n ? typeof footerButtonsFromProps === 'function'\n ? footerButtonsFromProps({\n defaultButtons: defaultFooterButtons,\n saveButtonProps,\n })\n : footerButtonsFromProps\n : defaultFooterButtons\n\n const renderTitle = () => {\n if (title === false) return null\n\n if (title) {\n if (typeof title === 'string' || typeof title === 'number') {\n return (\n <h3\n className={cn(\n 'text-2xl font-semibold',\n RefinePageHeaderClassNames.Title\n )}\n >\n {title}\n </h3>\n )\n }\n\n return title\n }\n\n return (\n <h3\n className={cn(\n 'text-2xl font-semibold',\n RefinePageHeaderClassNames.Title\n )}\n >\n {translate(\n `${identifier}.titles.create`,\n `Create ${getUserFriendlyName(\n resource?.meta?.label ?? identifier,\n 'singular'\n )}`\n )}\n </h3>\n )\n }\n\n return (\n <div\n className={cn('bg-background relative rounded-md px-4 py-3')}\n {...wrapperProps}\n >\n {isLoading && (\n <div className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\">\n <Loader2 className=\"h-6 w-6 animate-spin\" />\n </div>\n )}\n <div\n className={cn(\n 'mb-3 flex flex-wrap items-center justify-between gap-3 md:flex-nowrap'\n )}\n {...headerProps}\n >\n <div className=\"min-w-[200px]\">\n {typeof breadcrumb !== 'undefined' ? (\n <>{breadcrumb}</>\n ) : (\n <Breadcrumb />\n )}\n <div className=\"flex items-center gap-2\">\n {buttonBack}\n {renderTitle()}\n </div>\n </div>\n <div\n className={cn('flex flex-wrap justify-start gap-2 md:justify-end')}\n {...headerButtonProps}\n >\n {headerButtons}\n </div>\n </div>\n <div className={cn(isLoading && 'opacity-50')} {...contentProps}>\n {children}\n </div>\n <div className={cn('mt-8 flex justify-end gap-2')} {...footerButtonProps}>\n {footerButtons}\n </div>\n </div>\n )\n}\n","import {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport type { CreateButtonProps } from '@components/buttons/types'\nimport { PlusSquare } from 'lucide-react'\nimport React from 'react'\nimport { useCreateButton } from '@refinedev/core'\n\nexport const CreateButton = ({\n resource: resourceNameFromProps,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}: CreateButtonProps) => {\n const { hidden, disabled, label, title, LinkComponent, to } = useCreateButton(\n {\n resource: resourceNameFromProps,\n meta,\n accessControl,\n }\n )\n\n const isDisabled = disabled || rest.disabled\n const isHidden = hidden || rest.hidden\n\n if (isHidden) return null\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n e.preventDefault()\n return\n }\n if (onClick) {\n e.preventDefault()\n onClick(e)\n }\n }}\n >\n <Button\n disabled={isDisabled}\n title={title}\n data-testid={RefineButtonTestIds.CreateButton}\n className={RefineButtonClassNames.CreateButton}\n {...rest}\n >\n <PlusSquare /> {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n )\n}\n","import {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport type { EditButtonProps } from '@components/buttons/types'\nimport { FolderDown } from 'lucide-react'\nimport React from 'react'\nimport { useEditButton } from '@refinedev/core'\n\nexport const EditButton = ({\n resource: resourceNameFromProps,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}: EditButtonProps) => {\n const { hidden, disabled, label, title, LinkComponent, to } = useEditButton({\n resource: resourceNameFromProps,\n id: recordItemId,\n meta,\n accessControl,\n })\n\n const isDisabled = disabled || rest.disabled\n const isHidden = hidden || rest.hidden\n\n if (isHidden) return null\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n e.preventDefault()\n return\n }\n if (onClick) {\n e.preventDefault()\n onClick(e)\n }\n }}\n >\n <Button\n disabled={isDisabled}\n title={title}\n data-testid={RefineButtonTestIds.EditButton}\n className={RefineButtonClassNames.EditButton}\n {...rest}\n >\n <FolderDown /> {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n )\n}\n","'use client'\n\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport * as React from 'react'\n\nimport { cn } from '@lib/utils'\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import { Popover, PopoverContent, PopoverTrigger } from '@components/ui/popover'\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport type { DeleteButtonProps } from '@components/buttons/types'\nimport { Trash } from 'lucide-react'\nimport { useDeleteButton } from '@refinedev/core'\nimport { useState } from 'react'\n\nexport const DeleteButton = ({\n resource: resourceNameFromProps,\n recordItemId,\n onSuccess,\n mutationMode: mutationModeProp,\n children,\n successNotification,\n errorNotification,\n hideText = false,\n accessControl,\n meta,\n invalidates,\n dataProviderName,\n confirmTitle,\n confirmOkText,\n confirmCancelText,\n ...rest\n}: DeleteButtonProps) => {\n const [open, setOpen] = useState(false)\n const {\n onConfirm,\n label,\n title,\n disabled,\n hidden,\n loading,\n confirmTitle: defaultConfirmTitle,\n confirmOkLabel: defaultConfirmOkLabel,\n cancelLabel: defaultCancelLabel,\n } = useDeleteButton({\n resource: resourceNameFromProps,\n id: recordItemId,\n onSuccess,\n mutationMode: mutationModeProp,\n successNotification,\n errorNotification,\n accessControl,\n meta,\n dataProviderName,\n invalidates,\n })\n\n const isDisabled = disabled || rest.disabled\n const isHidden = hidden || rest.hidden\n\n if (isHidden) return null\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n disabled={isDisabled}\n title={title}\n data-testid={RefineButtonTestIds.DeleteButton}\n className={RefineButtonClassNames.DeleteButton}\n {...rest}\n >\n <Trash /> {!hideText && (children ?? label)}\n </Button>\n </PopoverTrigger>\n <PopoverContent>\n {confirmTitle ?? defaultConfirmTitle}\n <div className=\"gap-x-2\">\n <Button onClick={() => setOpen(false)}>\n {confirmCancelText ?? defaultCancelLabel}\n </Button>\n <Button\n onClick={() => {\n onConfirm()\n setOpen(false)\n }}\n >\n {confirmOkText ?? defaultConfirmOkLabel}\n </Button>\n </div>\n </PopoverContent>\n </Popover>\n )\n}\n","import {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport type { RefreshButtonProps } from '@components/buttons/types'\nimport { RefreshCcw } from 'lucide-react'\nimport { useRefreshButton } from '@refinedev/core'\n\nexport const RefreshButton = ({\n resource: resourceNameFromProps,\n recordItemId,\n hideText = false,\n dataProviderName,\n children,\n ...rest\n}: RefreshButtonProps) => {\n const {\n onClick: onRefresh,\n label,\n loading,\n } = useRefreshButton({\n resource: resourceNameFromProps,\n id: recordItemId,\n dataProviderName,\n })\n\n const isDisabled = loading || rest.disabled\n\n return (\n <Button\n onClick={onRefresh}\n disabled={isDisabled}\n data-testid={RefineButtonTestIds.RefreshButton}\n className={RefineButtonClassNames.RefreshButton}\n {...rest}\n >\n <RefreshCcw /> {!hideText && (children ?? label)}\n </Button>\n )\n}\n","import { Eye, Pencil, PlusSquare } from 'lucide-react'\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\nimport { useEditButton, useShowButton } from '@refinedev/core'\n\nimport { Button } from '@components/ui/button'\nimport React from 'react'\nimport type { ShowButtonProps } from '@components/buttons/types'\n\nexport const ShowButton = ({\n resource: resourceNameFromProps,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}: ShowButtonProps) => {\n const { hidden, disabled, label, title, LinkComponent, to } = useShowButton({\n resource: resourceNameFromProps,\n id: recordItemId,\n meta,\n accessControl,\n })\n\n const isDisabled = disabled || rest.disabled\n const isHidden = hidden || rest.hidden\n\n if (isHidden) return null\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n e.preventDefault()\n return\n }\n if (onClick) {\n e.preventDefault()\n onClick(e)\n }\n }}\n >\n <Button\n disabled={isDisabled}\n title={title}\n data-testid={RefineButtonTestIds.ShowButton}\n className={RefineButtonClassNames.ShowButton}\n {...rest}\n >\n <Eye /> {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n )\n}\n","import {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport { List } from 'lucide-react'\nimport type { ListButtonProps } from '@components/buttons/types'\nimport React from 'react'\nimport { useListButton } from '@refinedev/core'\n\nexport const ListButton = ({\n resource: resourceNameFromProps,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}: ListButtonProps) => {\n const { hidden, disabled, label, title, LinkComponent, to } = useListButton({\n resource: resourceNameFromProps,\n meta,\n accessControl,\n })\n\n const isDisabled = disabled || rest.disabled\n const isHidden = hidden || rest.hidden\n\n if (isHidden) return null\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n e.preventDefault()\n return\n }\n if (onClick) {\n e.preventDefault()\n onClick(e)\n }\n }}\n >\n <Button\n disabled={isDisabled}\n title={title}\n data-testid={RefineButtonTestIds.ListButton}\n className={RefineButtonClassNames.ListButton}\n {...rest}\n >\n <List /> {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n )\n}\n","import {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport { FolderUp } from 'lucide-react'\nimport type { ImportButtonProps } from '@components/buttons/types'\nimport { useExportButton } from '@refinedev/core'\n\nexport const ExportButton = ({\n hideText = false,\n loading = false,\n children,\n ...rest\n}: ImportButtonProps) => {\n const { label } = useExportButton()\n\n const isDisabled = loading || rest.disabled\n\n return (\n <Button\n disabled={isDisabled}\n data-testid={RefineButtonTestIds.ExportButton}\n className={RefineButtonClassNames.ExportButton}\n {...rest}\n >\n <FolderUp /> {!hideText && (children ?? label)}\n </Button>\n )\n}\n","import {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport { Save } from 'lucide-react'\nimport type { SaveButtonProps } from '@components/buttons/types'\nimport { useSaveButton } from '@refinedev/core'\n\nexport const SaveButton = ({\n hideText = false,\n children,\n ...rest\n}: SaveButtonProps) => {\n const { label } = useSaveButton()\n\n return (\n <Button\n data-testid={RefineButtonTestIds.SaveButton}\n className={RefineButtonClassNames.SaveButton}\n {...rest}\n >\n <Save /> {!hideText && (children ?? label)}\n </Button>\n )\n}\n","import { Copy, PlusSquare } from 'lucide-react'\nimport {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport type { CloneButtonProps } from '@components/buttons/types'\nimport React from 'react'\nimport { useCloneButton } from '@refinedev/core'\n\nexport const CloneButton = ({\n resource: resourceNameFromProps,\n recordItemId,\n hideText = false,\n accessControl,\n meta,\n children,\n onClick,\n ...rest\n}: CloneButtonProps) => {\n const { hidden, disabled, label, title, LinkComponent, to } = useCloneButton({\n resource: resourceNameFromProps,\n id: recordItemId,\n meta,\n accessControl,\n })\n\n const isDisabled = disabled || rest.disabled\n const isHidden = hidden || rest.hidden\n\n if (isHidden) return null\n\n return (\n <LinkComponent\n to={to}\n replace={false}\n onClick={(e: React.PointerEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n e.preventDefault()\n return\n }\n if (onClick) {\n e.preventDefault()\n onClick(e)\n }\n }}\n >\n <Button\n disabled={isDisabled}\n title={title}\n data-testid={RefineButtonTestIds.CloneButton}\n className={RefineButtonClassNames.CloneButton}\n {...rest}\n >\n <Copy /> {!hideText && (children ?? label)}\n </Button>\n </LinkComponent>\n )\n}\n","import {\n RefineButtonClassNames,\n RefineButtonTestIds,\n} from '@refinedev/ui-types'\n\nimport { Button } from '@components/ui/button'\nimport type { ImportButtonProps } from '@components/buttons/types'\nimport { PlusSquare } from 'lucide-react'\nimport { useImportButton } from '@refinedev/core'\n\nexport const ImportButton = ({\n inputProps,\n hideText = false,\n loading = false,\n children,\n ...rest\n}: ImportButtonProps) => {\n const { label } = useImportButton()\n\n const isDisabled = loading || rest.disabled\n\n return (\n <Button\n disabled={isDisabled}\n data-testid={RefineButtonTestIds.ImportButton}\n className={RefineButtonClassNames.ImportButton}\n {...rest}\n >\n <PlusSquare /> {!hideText && (children ?? label)}\n </Button>\n )\n}\n","import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '@lib/utils'\n\nconst textVariants = cva('text-foreground', {\n variants: {\n size: {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport interface TextProps\n extends\n React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof textVariants> {\n asChild?: boolean\n}\n\nexport const Text = React.forwardRef<HTMLSpanElement, TextProps>(\n ({ className, size, asChild, ...props }, ref) => {\n const Comp = asChild ? Slot : 'span'\n return (\n <Comp\n ref={ref}\n className={cn(textVariants({ size }), className)}\n {...props}\n />\n )\n }\n)\nText.displayName = 'Text'\n","import { Text } from '@components/ui/text'\nimport type { TextFieldProps } from '@components/fields/types'\n\nexport const TextField = ({ value, ...rest }: TextFieldProps) => {\n return <Text {...rest}>{value}</Text>\n}\n","import { Check, Minus } from 'lucide-react'\n\nimport type { BooleanFieldProps } from '@components/fields/types'\nimport { Tooltip } from '@components/ui/tooltip'\n\nexport const BooleanField = ({\n value,\n valueLabelTrue = 'true',\n valueLabelFalse = 'false',\n trueIcon,\n falseIcon,\n svgIconProps,\n ...rest\n}: BooleanFieldProps) => {\n return (\n <Tooltip {...rest}>\n <span>\n {value\n ? (trueIcon ?? (\n <Check\n size={20}\n {...svgIconProps}\n className={`icon-check${svgIconProps?.className ? ` ${svgIconProps.className}` : ''}`}\n />\n ))\n : (falseIcon ?? (\n <Minus\n size={20}\n {...svgIconProps}\n className={`icon-minus${svgIconProps?.className ? ` ${svgIconProps.className}` : ''}`}\n />\n ))}\n </span>\n </Tooltip>\n )\n}\n","import type { NumberFieldProps } from '@components/fields/types'\nimport { Text } from '@components/ui/text'\n\nfunction toLocaleStringSupportsOptions() {\n return !!(\n typeof Intl === 'object' &&\n Intl &&\n typeof Intl.NumberFormat === 'function'\n )\n}\n\nexport const NumberField = ({\n value,\n locale,\n options,\n ...rest\n}: NumberFieldProps) => {\n const number = Number(value)\n\n return (\n <Text {...rest}>\n {toLocaleStringSupportsOptions()\n ? number.toLocaleString(locale, options)\n : number}\n </Text>\n )\n}\n","import { useEffect, useState } from 'react'\nimport { useGo, useResourceParams, useTranslate } from '@refinedev/core'\n\nimport { Button } from '@components/ui/button'\n\nexport const ErrorComponent = () => {\n const [errorMessage, setErrorMessage] = useState<string | null>(null)\n const [showTip, setShowTip] = useState(false)\n const translate = useTranslate()\n const go = useGo()\n const { action, resource } = useResourceParams()\n\n useEffect(() => {\n if (resource && action) {\n setErrorMessage(\n translate(\n 'pages.error.info',\n { resource: resource.name, action },\n `You attempted to perform the \"${action}\" action on the \"${resource.name}\" resource, but an error occurred.`\n )\n )\n }\n }, [resource, action, translate])\n\n return (\n <div>\n <h1>404</h1>\n <p>\n {translate(\n 'pages.error.404',\n 'Sorry, the page you visited does not exist.'\n )}\n </p>\n {errorMessage && <p>{errorMessage}</p>}\n {resource && action && ['create', 'edit', 'show'].includes(action) && (\n <div>\n <span\n data-testid=\"error-component-tooltip\"\n onMouseOver={() => setShowTip(true)}\n onMouseOut={() => setShowTip(false)}\n />\n {showTip && (\n <p>\n {translate(\n 'pages.error.tipKnownActionMissing',\n { resource: resource.name, action },\n `You may have forgotten to add the \"${action}\" component to \"${resource.name}\" resource.`\n )}\n </p>\n )}\n </div>\n )}\n <Button\n onClick={() => {\n go({ to: '/' })\n }}\n >\n {translate('pages.error.backHome', 'Back Home')}\n </Button>\n </div>\n )\n}\n","import * as React from 'react'\n\nimport { ChevronRight, MoreHorizontal } from 'lucide-react'\n\nimport { Slot } from '@radix-ui/react-slot'\nimport { cn } from '@lib/utils'\n\ninterface BreadcrumbProps extends React.ComponentProps<'nav'> {}\n\nfunction Breadcrumb({ ...props }: BreadcrumbProps) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<'ol'>) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n 'text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn('inline-flex items-center gap-1.5', className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : 'a'\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn('hover:text-foreground transition-colors', className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn('text-foreground font-normal', className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('[&>svg]:size-3.5', className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('flex size-9 items-center justify-center', className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n BreadcrumbProps,\n}\n","import type {\n BreadcrumbProps as ShadboardBreadcrumbProps} from '@components/ui/breadcrumb';\nimport {\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbSeparator,\n Breadcrumb as ShadboardBreadcrumb\n} from '@components/ui/breadcrumb'\nimport {\n matchResourceFromRoute,\n useBreadcrumb,\n useLink,\n useResourceParams,\n} from '@refinedev/core'\n\nimport { Home } from 'lucide-react'\nimport type { RefineBreadcrumbProps } from '@refinedev/ui-types'\n\nexport type BreadcrumbProps = RefineBreadcrumbProps<ShadboardBreadcrumbProps>\n\nexport const Breadcrumb = ({\n breadcrumbProps,\n showHome = true,\n hideIcons = false,\n meta,\n minItems = 2,\n}: BreadcrumbProps) => {\n const { breadcrumbs } = useBreadcrumb({ meta })\n const Link = useLink()\n\n if (breadcrumbs.length < minItems) return null\n\n const { resources } = useResourceParams()\n\n const rootRouteResource = matchResourceFromRoute('/', resources)\n\n return (\n <ShadboardBreadcrumb {...breadcrumbProps}>\n <BreadcrumbList>\n {showHome && rootRouteResource?.found && (\n <>\n <BreadcrumbItem>\n <Link to=\"/\">\n {rootRouteResource?.resource?.meta?.icon ?? <Home size={20} />}\n </Link>\n </BreadcrumbItem>\n {breadcrumbs.length > 0 && <BreadcrumbSeparator />}\n </>\n )}\n {breadcrumbs.map(({ label, icon, href }, index) => {\n return (\n <>\n <BreadcrumbItem key={label}>\n {!hideIcons && icon}\n {href ? (\n <BreadcrumbLink asChild>\n <Link to={href}>{label}</Link>\n </BreadcrumbLink>\n ) : (\n <BreadcrumbLink>{label}</BreadcrumbLink>\n )}\n </BreadcrumbItem>\n {index < breadcrumbs.length - 1 && <BreadcrumbSeparator />}\n </>\n )\n })}\n </BreadcrumbList>\n </ShadboardBreadcrumb>\n )\n}\n","import { Button } from '@components/ui/button'\nimport type { OpenNotificationParams } from '@refinedev/core'\nimport { RotateCcwSquare } from 'lucide-react'\nimport { Text } from '@components/ui/text'\nimport { toast } from 'sonner'\n\nexport type UndoableNotificationProps = {\n notificationKey: OpenNotificationParams['key']\n message: OpenNotificationParams['message']\n cancelMutation: OpenNotificationParams['cancelMutation']\n undoableTimeout: OpenNotificationParams['undoableTimeout']\n}\n\nexport const UndoableNotification: React.FC<UndoableNotificationProps> = ({\n notificationKey = '',\n message,\n cancelMutation,\n undoableTimeout = 0,\n}) => {\n return (\n <div className=\"bg-background flex min-w-[320px] items-center justify-between gap-2 p-2 shadow-md\">\n <div className=\"flex items-center gap-2\">\n <span className=\"inline-flex h-6 min-w-6 items-center justify-center rounded-md border px-2 text-xs\">\n {undoableTimeout}s\n </span>\n </div>\n <Text>{message}</Text>\n <Button\n aria-label=\"undo\"\n variant=\"outline\"\n onClick={() => {\n cancelMutation?.()\n if (notificationKey) {\n toast.dismiss(notificationKey)\n }\n }}\n size={'icon'}\n >\n <RotateCcwSquare size={18} />\n </Button>\n </div>\n )\n}\n","import {\n type AutoSaveIndicatorProps,\n useTranslate,\n AutoSaveIndicator as AutoSaveIndicatorCore,\n} from '@refinedev/core'\nimport { Text } from '@components/ui/text'\nimport {\n CheckCircle,\n Dot,\n FileExclamationPoint,\n RefreshCcw,\n} from 'lucide-react'\n\nexport const AutoSaveIndicator = ({\n status,\n elements: {\n success = (\n <Message\n translationKey=\"autoSave.success\"\n defaultMessage=\"saved\"\n icon={<CheckCircle size=\"18px\" />}\n />\n ),\n error = (\n <Message\n translationKey=\"autoSave.error\"\n defaultMessage=\"auto save failure\"\n icon={<FileExclamationPoint size=\"18px\" />}\n />\n ),\n loading = (\n <Message\n translationKey=\"autoSave.loading\"\n defaultMessage=\"saving...\"\n icon={<RefreshCcw size=\"18px\" />}\n />\n ),\n idle = (\n <Message\n translationKey=\"autoSave.idle\"\n defaultMessage=\"waiting for changes\"\n icon={<Dot size=\"18px\" />}\n />\n ),\n } = {},\n}: AutoSaveIndicatorProps) => {\n return (\n <AutoSaveIndicatorCore\n status={status}\n elements={{\n success,\n error,\n loading,\n idle,\n }}\n />\n )\n}\n\nconst Message = ({\n translationKey,\n defaultMessage,\n icon,\n}: {\n translationKey: string\n defaultMessage: string\n icon: React.ReactNode\n}) => {\n const translate = useTranslate()\n\n return (\n <Text\n color=\"gray.700\"\n className=\"color-muted mr-2 flex flex-wrap items-center text-sm\"\n >\n {translate(translationKey, defaultMessage)}\n <span style={{ marginLeft: '3px' }}>{icon}</span>\n </Text>\n )\n}\n","import type { NotificationProvider } from '@refinedev/core'\nimport { UndoableNotification } from '@components/undoable-notification'\nimport { toast } from 'sonner'\n\nexport const useNotificationProvider = (): NotificationProvider => {\n return {\n open: ({\n key,\n message,\n type,\n description,\n undoableTimeout,\n cancelMutation,\n }) => {\n if (type === 'progress') {\n toast.custom(\n () => (\n <UndoableNotification\n notificationKey={key}\n message={message}\n cancelMutation={cancelMutation}\n undoableTimeout={undoableTimeout}\n />\n ),\n {\n id: key,\n duration: Infinity,\n }\n )\n return\n }\n\n const options: { id?: string | number; description?: string } = {}\n if (key !== undefined) options.id = key\n if (description) options.description = description\n\n if (type === 'success') {\n toast.success(message, options)\n } else if (type === 'error') {\n toast.error(message, options)\n } else {\n toast(message, options)\n }\n },\n close: (key) => toast.dismiss(key as any),\n }\n}\n","export type GreetingOptions = {\n name?: string\n}\n\nexport function greet(opts: GreetingOptions = {}): string {\n const name = opts.name ?? 'mundo'\n return `Hola, ${name}!`\n}\n\nexport * from './components'\n// export * from './hooks'\n// export * from './theme'\nexport * from './providers'\nexport * from './contexts'\n"]}
|