@flexkit/studio 0.0.11 → 0.0.13

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.
Files changed (53) hide show
  1. package/dist/asset-2IWHRTPZ.js +2 -0
  2. package/dist/{asset-65455B7V.js.map → asset-2IWHRTPZ.js.map} +1 -1
  3. package/dist/boolean-OC4EQEDW.js +2 -0
  4. package/dist/{boolean-3ZHXDPHB.js.map → boolean-OC4EQEDW.js.map} +1 -1
  5. package/dist/chunk-J63QWF2X.js +14 -0
  6. package/dist/chunk-J63QWF2X.js.map +1 -0
  7. package/dist/chunk-P745RJ7B.js +2 -0
  8. package/dist/chunk-P745RJ7B.js.map +1 -0
  9. package/dist/chunk-UKRYV5CE.js +2 -0
  10. package/dist/chunk-UKRYV5CE.js.map +1 -0
  11. package/dist/chunk-XSNFFA5W.js +2 -0
  12. package/dist/chunk-XSNFFA5W.js.map +1 -0
  13. package/dist/datetime-E36AZJZE.js +2 -0
  14. package/dist/{datetime-XX4YBITU.js.map → datetime-E36AZJZE.js.map} +1 -1
  15. package/dist/editor-A6ZBSVFX.js +2 -0
  16. package/dist/{editor-ZLTDOUPT.js.map → editor-A6ZBSVFX.js.map} +1 -1
  17. package/dist/index.js +92 -92
  18. package/dist/index.js.map +1 -1
  19. package/dist/logo-XE2KYB64.js +3 -0
  20. package/dist/{logo-LB22KTDD.js.map → logo-XE2KYB64.js.map} +1 -1
  21. package/dist/project-selector-EC52GCO3.js +2 -0
  22. package/dist/{project-selector-4G4WL2XQ.js.map → project-selector-EC52GCO3.js.map} +1 -1
  23. package/dist/search-ZSMT34RQ.js +2 -0
  24. package/dist/{search-CKPEOD77.js.map → search-ZSMT34RQ.js.map} +1 -1
  25. package/dist/switch-RTOPEJUM.js +2 -0
  26. package/dist/{switch-FU7XZ34K.js.map → switch-RTOPEJUM.js.map} +1 -1
  27. package/dist/text-4V63FVFM.js +2 -0
  28. package/dist/{text-DFG6LLN6.js.map → text-4V63FVFM.js.map} +1 -1
  29. package/dist/text-6SMN3R4Y.js +2 -0
  30. package/dist/{text-LNFBPXBT.js.map → text-6SMN3R4Y.js.map} +1 -1
  31. package/dist/textarea-EMZIRBVZ.js +2 -0
  32. package/dist/{textarea-XFHA5IEI.js.map → textarea-EMZIRBVZ.js.map} +1 -1
  33. package/dist/ui.js +1 -1
  34. package/dist/ui.js.map +1 -1
  35. package/dist/user-nav-ORQ6W5W3.js +2 -0
  36. package/dist/{user-nav-5LW5USDZ.js.map → user-nav-ORQ6W5W3.js.map} +1 -1
  37. package/package.json +1 -1
  38. package/dist/asset-65455B7V.js +0 -2
  39. package/dist/boolean-3ZHXDPHB.js +0 -2
  40. package/dist/chunk-MOR653JA.js +0 -2
  41. package/dist/chunk-MOR653JA.js.map +0 -1
  42. package/dist/chunk-NJN7EGGK.js +0 -2
  43. package/dist/chunk-NJN7EGGK.js.map +0 -1
  44. package/dist/datetime-XX4YBITU.js +0 -2
  45. package/dist/editor-ZLTDOUPT.js +0 -2
  46. package/dist/logo-LB22KTDD.js +0 -3
  47. package/dist/project-selector-4G4WL2XQ.js +0 -2
  48. package/dist/search-CKPEOD77.js +0 -2
  49. package/dist/switch-FU7XZ34K.js +0 -2
  50. package/dist/text-DFG6LLN6.js +0 -2
  51. package/dist/text-LNFBPXBT.js +0 -2
  52. package/dist/textarea-XFHA5IEI.js +0 -2
  53. package/dist/user-nav-5LW5USDZ.js +0 -2
package/dist/ui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/primitives/resizable.tsx","../src/ui/primitives/sheet.tsx","../src/ui/hooks/use-mobile.tsx","../src/ui/primitives/sidebar.tsx","../src/ui/components/sidebar.tsx","../src/ui/primitives/tabs.tsx"],"names":["ResizablePanelGroup","className","props","jsx","cn","ResizablePanel","ResizableHandle","withHandle","GripVertical","Sheet","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","x","ref","sheetVariants","cva","SheetContent","side","children","jsxs","X","SheetHeader","SheetFooter","SheetTitle","SheetDescription","MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","I","mql","onChange","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","style","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","TooltipProvider","Sidebar","variant","collapsible","SidebarTrigger","onClick","Button","MenuIcon","PanelLeftIcon","SidebarRail","SidebarInset","SidebarInput","Input","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","SidebarMenuButton","isActive","size","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton","iconList","Icons","iconName","fuse","Fuse","menuGroups","schema","visibleItems","item","itemsByGroup","groupBy","g","nonEmptyGroups","menuGroup","group","entity","capitalize","NavLink","createElement","getBestMatchingIcon","str","withSpaces","concept","result","Tabs","TabsList","O","TabsTrigger","TabsContent"],"mappings":"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","file":"ui.js","sourcesContent":["import { GripVertical } from 'lucide-react';\nimport * as ResizablePrimitive from 'react-resizable-panels';\nimport { cn } from 'src/ui/lib/utils';\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>): JSX.Element {\n return (\n <ResizablePrimitive.PanelGroup\n className={cn('fk-flex fk-h-full fk-w-full data-[panel-group-direction=vertical]:fk-flex-col', className)}\n {...props}\n />\n );\n}\n\nconst ResizablePanel = ResizablePrimitive.Panel;\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean;\n}): JSX.Element {\n return (\n <ResizablePrimitive.PanelResizeHandle\n className={cn(\n 'fk-relative fk-flex fk-w-px fk-items-center fk-justify-center fk-bg-border after:fk-absolute after:fk-inset-y-0 after:fk-left-1/2 after:fk-w-1 after:fk--translate-x-1/2 focus-visible:fk-outline-none focus-visible:fk-ring-1 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-1 data-[panel-group-direction=vertical]:fk-h-px data-[panel-group-direction=vertical]:fk-w-full data-[panel-group-direction=vertical]:after:fk-left-0 data-[panel-group-direction=vertical]:after:fk-h-1 data-[panel-group-direction=vertical]:after:fk-w-full data-[panel-group-direction=vertical]:after:fk--translate-y-1/2 data-[panel-group-direction=vertical]:after:fk-translate-x-0 [&[data-panel-group-direction=vertical]>div]:fk-rotate-90',\n className\n )}\n {...props}\n >\n {Boolean(withHandle) && (\n <div className=\"fk-z-10 fk-flex fk-h-4 fk-w-3 fk-items-center fk-justify-center fk-rounded-sm fk-border fk-bg-border\">\n <GripVertical className=\"fk-h-2.5 fk-w-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n );\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","'use client';\n\nimport * as React from 'react';\nimport * as SheetPrimitive from '@radix-ui/react-dialog';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport { cn } from 'src/ui/lib/utils';\n\nconst Sheet = SheetPrimitive.Root;\n\nconst SheetTrigger = SheetPrimitive.Trigger;\n\nconst SheetClose = SheetPrimitive.Close;\n\nconst SheetPortal = SheetPrimitive.Portal;\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n 'fk-fixed fk-inset-0 fk-z-50 fk-bg-overlay/75 fk-backdrop-blur-[1px] data-[state=open]:fk-animate-in data-[state=closed]:fk-animate-out data-[state=closed]:fk-fade-out-0 data-[state=open]:fk-fade-in-0',\n className\n )}\n {...props}\n ref={ref}\n />\n));\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\n\nconst sheetVariants = cva(\n 'fk-fixed fk-z-50 fk-gap-4 fk-bg-background fk-p-6 fk-shadow-lg fk-transition fk-ease-in-out data-[state=open]:fk-animate-in data-[state=closed]:fk-animate-out data-[state=closed]:fk-duration-300 data-[state=open]:fk-duration-500',\n {\n variants: {\n side: {\n top: 'fk-inset-x-0 fk-top-0 fk-border-b data-[state=closed]:fk-slide-out-to-top data-[state=open]:fk-slide-in-from-top',\n bottom:\n 'fk-inset-x-0 fk-bottom-0 fk-border-t data-[state=closed]:fk-slide-out-to-bottom data-[state=open]:fk-slide-in-from-bottom',\n left: 'fk-inset-y-0 fk-left-0 fk-h-full fk-w-3/4 fk-border-r fk-border-r-sidebar-border data-[state=closed]:fk-slide-out-to-left data-[state=open]:fk-slide-in-from-left sm:fk-max-w-sm',\n right:\n 'fk-inset-y-0 fk-right-0 fk-h-full fk-w-3/4 fk- fk-border-l data-[state=closed]:fk-slide-out-to-right data-[state=open]:fk-slide-in-from-right sm:fk-max-w-sm',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n }\n);\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<React.ElementRef<typeof SheetPrimitive.Content>, SheetContentProps>(\n ({ side = 'right', className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content className={cn(sheetVariants({ side }), className)} ref={ref} {...props}>\n {children}\n <SheetPrimitive.Close className=\"fk-absolute fk-right-4 fk-top-4 fk-rounded-sm fk-opacity-70 fk-ring-offset-background fk-transition-opacity hover:fk-opacity-100 focus:fk-outline-none focus:fk-ring-2 focus:fk-ring-ring focus:fk-ring-offset-2 disabled:fk-pointer-events-none data-[state=open]:fk-bg-secondary\">\n <X className=\"fk-h-4 fk-w-4\" />\n <span className=\"fk-sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n);\nSheetContent.displayName = SheetPrimitive.Content.displayName;\n\nfunction SheetHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): JSX.Element {\n return (\n <div className={cn('fk-flex fk-flex-col fk-space-y-2 fk-text-center sm:fk-text-left', className)} {...props} />\n );\n}\nSheetHeader.displayName = 'SheetHeader';\n\nfunction SheetFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): JSX.Element {\n return (\n <div\n className={cn('fk-flex fk-flex-col-reverse sm:fk-flex-row sm:fk-justify-end sm:fk-space-x-2', className)}\n {...props}\n />\n );\n}\nSheetFooter.displayName = 'SheetFooter';\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n className={cn('fk-text-lg fk-font-semibold fk-text-foreground', className)}\n ref={ref}\n {...props}\n />\n));\nSheetTitle.displayName = SheetPrimitive.Title.displayName;\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description className={cn('fk-text-sm fk-text-muted-foreground', className)} ref={ref} {...props} />\n));\nSheetDescription.displayName = SheetPrimitive.Description.displayName;\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","import * as React from 'react';\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined);\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener('change', onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener('change', onChange);\n }, []);\n\n return !!isMobile;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { VariantProps, cva } from 'class-variance-authority';\nimport { PanelLeft as PanelLeftIcon, Menu as MenuIcon } from 'lucide-react';\nimport { useIsMobile } from '../hooks/use-mobile';\nimport { cn } from '../lib/utils';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Separator } from './separator';\nimport { Sheet, SheetContent } from './sheet';\nimport { Skeleton } from './skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip';\n\nconst SIDEBAR_COOKIE_NAME = 'flexkit:sidebar:state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '2rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ntype SidebarContext = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n\n return context;\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n }\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'fk-group/sidebar-wrapper fk-flex fk-w-full has-[[data-variant=inset]]:fk-bg-sidebar fk-overflow-hidden',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n});\nSidebarProvider.displayName = 'SidebarProvider';\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n }\n>(({ side = 'left', variant = 'sidebar', collapsible = 'offcanvas', className, children, ...props }, ref) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn(\n 'fk-flex fk-h-full fk-w-[--sidebar-width] fk-flex-col fk-bg-sidebar fk-text-sidebar-foreground',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"fk-w-[--sidebar-width] fk-bg-sidebar fk-p-0 fk-text-sidebar-foreground [&>button]:fk-hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <div className=\"fk-flex fk-h-full fk-w-full fk-flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n ref={ref}\n className=\"fk-relative fk-group fk-peer fk-hidden md:fk-block fk-text-sidebar-foreground\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'fk-duration-200 fk-relative fk-h-svh fk-w-[--sidebar-width] fk-bg-transparent fk-transition-[width] fk-ease-linear',\n 'group-data-[collapsible=offcanvas]:fk-w-0',\n 'group-data-[side=right]:fk-rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:fk-w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]'\n : 'group-data-[collapsible=icon]:fk-w-[--sidebar-width-icon]'\n )}\n />\n <div\n className={cn(\n 'fk-duration-200 fk-absolute fk-inset-y-0 fk-z-10 fk-hidden fk-h-[calc(100svh-3.5rem)] fk-w-[--sidebar-width] fk-transition-[left,right,width] fk-ease-linear md:fk-flex',\n side === 'left'\n ? 'fk-left-0 group-data-[collapsible=offcanvas]:fk-left-[calc(var(--sidebar-width)*-1)]'\n : 'fk-right-0 group-data-[collapsible=offcanvas]:fk-right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:fk-w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)] group-data-[side=left]:fk-border-r group-data-[side=right]:fk-border-l'\n : 'group-data-[collapsible=icon]:fk-w-[--sidebar-width-icon] group-data-[side=left]:fk-border-r group-data-[side=right]:fk-border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"fk-flex fk-h-full fk-w-full fk-flex-col fk-bg-sidebar group-data-[variant=floating]:fk-rounded-lg group-data-[variant=floating]:fk-border group-data-[variant=floating]:fk-border-sidebar-border group-data-[variant=floating]:fk-shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n});\nSidebar.displayName = 'Sidebar';\n\nconst SidebarTrigger = React.forwardRef<React.ElementRef<typeof Button>, React.ComponentProps<typeof Button>>(\n ({ className, onClick, ...props }, ref) => {\n const { isMobile, toggleSidebar } = useSidebar();\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('fk-h-7 fk-w-7', className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n {isMobile ? <MenuIcon /> : <PanelLeftIcon />}\n <span className=\"fk-sr-only\">Toggle Sidebar</span>\n </Button>\n );\n }\n);\nSidebarTrigger.displayName = 'SidebarTrigger';\n\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<'button'>>(\n ({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'fk-absolute fk-inset-y-0 fk-z-20 fk-hidden fk-w-4 fk--translate-x-1/2 fk-transition-all fk-ease-linear after:fk-absolute after:fk-inset-y-0 after:fk-left-1/2 after:fk-w-[2px] after:fk-bg-sidebar-border hover:after:fk-bg-muted-foreground group-data-[side=left]:fk--right-4 group-data-[side=right]:fk-left-0 sm:fk-flex',\n '[[data-side=left]_&]:fk-cursor-w-resize [[data-side=right]_&]:fk-cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:fk-cursor-e-resize [[data-side=right][data-state=collapsed]_&]:fk-cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:fk-translate-x-0 group-data-[collapsible=offcanvas]:after:fk-left-full group-data-[collapsible=offcanvas]:hover:fk-bg-sidebar',\n '[[data-side=left][data-collapsible=offcanvas]_&]:fk--right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:fk--left-2',\n className\n )}\n {...props}\n />\n );\n }\n);\nSidebarRail.displayName = 'SidebarRail';\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<'main'>>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n 'fk-relative fk-flex fk-flex-1 fk-flex-col fk-bg-background fk-overflow-hidden',\n 'peer-data-[variant=inset]:fk-h-[calc(100svh-4rem)]',\n className\n )}\n {...props}\n />\n );\n});\nSidebarInset.displayName = 'SidebarInset';\n\nconst SidebarInput = React.forwardRef<React.ElementRef<typeof Input>, React.ComponentProps<typeof Input>>(\n ({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n 'fk-h-8 fk-w-full fk-bg-background fk-shadow-none focus-visible:fk-ring-2 focus-visible:fk-ring-sidebar-ring',\n className\n )}\n {...props}\n />\n );\n }\n);\nSidebarInput.displayName = 'SidebarInput';\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div ref={ref} data-sidebar=\"header\" className={cn('fk-flex fk-flex-col fk-gap-2 fk-p-2', className)} {...props} />\n );\n});\nSidebarHeader.displayName = 'SidebarHeader';\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div ref={ref} data-sidebar=\"footer\" className={cn('fk-flex fk-flex-col fk-gap-2 fk-p-2', className)} {...props} />\n );\n});\nSidebarFooter.displayName = 'SidebarFooter';\n\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Separator>, React.ComponentProps<typeof Separator>>(\n ({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn('fk-mx-2 fk-w-auto fk-bg-sidebar-border', className)}\n {...props}\n />\n );\n }\n);\nSidebarSeparator.displayName = 'SidebarSeparator';\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n 'fk-flex fk-min-h-0 fk-flex-1 fk-flex-col fk-overflow-auto group-data-[collapsible=icon]:fk-overflow-hidden',\n className\n )}\n {...props}\n />\n );\n});\nSidebarContent.displayName = 'SidebarContent';\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn('fk-relative fk-flex fk-w-full fk-min-w-0 fk-flex-col fk-p-2', className)}\n {...props}\n />\n );\n});\nSidebarGroup.displayName = 'SidebarGroup';\n\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'> & { asChild?: boolean }>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n 'fk-duration-200 fk-flex fk-h-8 fk-shrink-0 fk-items-center fk-rounded-md fk-px-2 fk-text-xs fk-font-medium fk-text-sidebar-foreground/70 fk-outline-none fk-ring-sidebar-ring fk-transition-[margin,opa] fk-ease-linear focus-visible:fk-ring-2 [&>svg]:fk-size-4 [&>svg]:fk-shrink-0',\n 'group-data-[collapsible=icon]:fk--mt-8 group-data-[collapsible=icon]:fk-opacity-0',\n className\n )}\n {...props}\n />\n );\n }\n);\nSidebarGroupLabel.displayName = 'SidebarGroupLabel';\n\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<'button'> & { asChild?: boolean }>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n 'fk-absolute fk-right-3 fk-top-3.5 fk-flex fk-aspect-square fk-w-5 fk-items-center fk-justify-center fk-rounded-md fk-p-0 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring fk-transition-transform hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 [&>svg]:fk-size-4 [&>svg]:fk-shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:fk-absolute after:fk--inset-2 after:md:fk-hidden',\n 'group-data-[collapsible=icon]:fk-hidden',\n className\n )}\n {...props}\n />\n );\n }\n);\nSidebarGroupAction.displayName = 'SidebarGroupAction';\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} data-sidebar=\"group-content\" className={cn('fk-w-full fk-text-sm', className)} {...props} />\n )\n);\nSidebarGroupContent.displayName = 'SidebarGroupContent';\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn('fk-flex fk-w-full fk-min-w-0 fk-flex-col fk-gap-1 fk-z-10', className)}\n {...props}\n />\n));\nSidebarMenu.displayName = 'SidebarMenu';\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(({ className, ...props }, ref) => (\n <li ref={ref} data-sidebar=\"menu-item\" className={cn('fk-group/menu-item fk-relative', className)} {...props} />\n));\nSidebarMenuItem.displayName = 'SidebarMenuItem';\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button fk-flex fk-w-full fk-items-center fk-gap-2 fk-overflow-hidden fk-rounded-md fk-p-2 fk-text-left fk-text-sm fk-outline-none fk-ring-sidebar-ring fk-transition-[width,height,padding] hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 active:fk-bg-sidebar-accent active:fk-text-sidebar-accent-foreground disabled:fk-pointer-events-none disabled:fk-opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:fk-pr-8 aria-disabled:fk-pointer-events-none aria-disabled:fk-opacity-50 data-[active=true]:fk-bg-sidebar-accent data-[active=true]:fk-font-medium data-[active=true]:fk-text-sidebar-accent-foreground data-[state=open]:hover:fk-bg-sidebar-accent data-[state=open]:hover:fk-text-sidebar-accent-foreground group-data-[collapsible=icon]:fk-!size-8 group-data-[collapsible=icon]:fk-!p-2 [&>span:last-child]:fk-truncate [&>svg]:fk-size-4 [&>svg]:fk-shrink-0',\n {\n variants: {\n variant: {\n default: 'hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground',\n outline:\n 'fk-bg-background fk-shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground hover:fk-shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'fk-h-8 fk-text-sm',\n sm: 'fk-h-7 fk-text-xs',\n lg: 'fk-h-12 fk-text-sm group-data-[collapsible=icon]:fk-!p-0',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(({ asChild = false, isActive = false, variant = 'default', size = 'default', tooltip, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed' || isMobile} {...tooltip} />\n </Tooltip>\n );\n});\nSidebarMenuButton.displayName = 'SidebarMenuButton';\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n 'fk-absolute fk-right-1 fk-top-1.5 fk-flex fk-aspect-square fk-w-5 fk-items-center fk-justify-center fk-rounded-md fk-p-0 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring fk-transition-transform hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 peer-hover/menu-button:fk-text-sidebar-accent-foreground [&>svg]:fk-size-4 [&>svg]:fk-shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:fk-absolute after:fk--inset-2 after:md:fk-hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:fk-hidden',\n showOnHover &&\n 'group-focus-within/menu-item:fk-opacity-100 group-hover/menu-item:fk-opacity-100 data-[state=open]:fk-opacity-100 peer-data-[active=true]/menu-button:fk-text-sidebar-accent-foreground md:fk-opacity-0',\n className\n )}\n {...props}\n />\n );\n});\nSidebarMenuAction.displayName = 'SidebarMenuAction';\n\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n 'fk-absolute fk-right-1 fk-flex fk-h-5 fk-min-w-5 fk-items-center fk-justify-center fk-rounded-md fk-px-1 fk-text-xs fk-font-medium fk-tabular-nums fk-text-sidebar-foreground fk-select-none fk-pointer-events-none',\n 'peer-hover/menu-button:fk-text-sidebar-accent-foreground peer-data-[active=true]/menu-button:fk-text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:fk-hidden',\n className\n )}\n {...props}\n />\n )\n);\nSidebarMenuBadge.displayName = 'SidebarMenuBadge';\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n showIcon?: boolean;\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn('fk-rounded-md fk-h-8 fk-flex fk-gap-2 fk-px-2 fk-items-center', className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"fk-size-4 fk-rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"fk-h-4 fk-flex-1 fk-max-w-[--skeleton-width]\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n});\nSidebarMenuSkeleton.displayName = 'SidebarMenuSkeleton';\n\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n 'fk-mx-3.5 fk-flex fk-min-w-0 fk-translate-x-px fk-flex-col fk-gap-1 fk-border-l fk-border-sidebar-border fk-px-2.5 fk-py-0.5',\n 'group-data-[collapsible=icon]:fk-hidden',\n className\n )}\n {...props}\n />\n )\n);\nSidebarMenuSub.displayName = 'SidebarMenuSub';\n\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(({ ...props }, ref) => (\n <li ref={ref} {...props} />\n));\nSidebarMenuSubItem.displayName = 'SidebarMenuSubItem';\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n }\n>(({ asChild = false, size = 'md', isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'fk-flex fk-h-7 fk-min-w-0 fk--translate-x-px fk-items-center fk-gap-2 fk-overflow-hidden fk-rounded-md fk-px-2 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 active:fk-bg-sidebar-accent active:fk-text-sidebar-accent-foreground disabled:fk-pointer-events-none disabled:fk-opacity-50 aria-disabled:fk-pointer-events-none aria-disabled:fk-opacity-50 [&>span:last-child]:fk-truncate [&>svg]:fk-size-4 [&>svg]:fk-shrink-0 [&>svg]:fk-text-sidebar-accent-foreground',\n 'data-[active=true]:fk-bg-sidebar-accent data-[active=true]:fk-text-sidebar-accent-foreground',\n size === 'sm' && 'fk-text-xs',\n size === 'md' && 'fk-text-sm',\n 'group-data-[collapsible=icon]:fk-hidden',\n className\n )}\n {...props}\n />\n );\n});\nSidebarMenuSubButton.displayName = 'SidebarMenuSubButton';\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n","import { createElement } from 'react';\nimport * as Icons from 'lucide-react';\nimport Fuse from 'fuse.js';\nimport { NavLink } from 'react-router-dom';\nimport {\n Sidebar as SidebarPrimitive,\n SidebarContent,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarMenu,\n SidebarMenuItem,\n SidebarMenuButton,\n SidebarRail,\n} from '../primitives/sidebar';\nimport type { SingleProject } from '../../core/config/types';\nimport { groupBy } from 'ramda';\n\ninterface SidebarProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n menuGroups?: SingleProject['menuGroups'];\n schema: SingleProject['schema'];\n}\n\ntype VisibleMenuSchema = Array<\n Omit<SingleProject['schema'][number], 'menu'> & {\n menu?: Exclude<SingleProject['schema'][number]['menu'], { hidden: true }>;\n }\n>;\n\nconst iconList = Object.keys(Icons).map((iconName) => ({\n name: iconName,\n icon: Icons[iconName as keyof typeof Icons],\n}));\n\nconst fuse = new Fuse(iconList, {\n keys: ['name'],\n threshold: 0.5,\n});\n\nexport function Sidebar({ className, menuGroups, schema }: SidebarProps): JSX.Element {\n // Filter out hidden items first, then group them\n const visibleItems = schema.filter((item) => !(item.menu && 'hidden' in item.menu)) as VisibleMenuSchema;\n const itemsByGroup = groupBy(\n (item) => (item.menu?.group && menuGroups?.find((g) => g.name === item.menu?.group)?.name) || 'ungrouped',\n visibleItems\n );\n const nonEmptyGroups = menuGroups?.filter((menuGroup) => itemsByGroup[menuGroup.name]?.length);\n\n return (\n <SidebarPrimitive className={className} collapsible=\"icon\" variant=\"inset\">\n <SidebarContent>\n {nonEmptyGroups?.map((group) => (\n <SidebarGroup key={group.name}>\n <SidebarGroupLabel>{group.title}</SidebarGroupLabel>\n <SidebarMenu>\n {itemsByGroup[group.name]?.map((entity) => (\n <SidebarMenuItem key={entity.plural}>\n <SidebarMenuButton\n asChild\n isActive={location.pathname.includes(`/list/${entity.plural}`)}\n tooltip={capitalize(entity.menu?.label ?? entity.plural)}\n >\n <NavLink to={`list/${entity.plural}`}>\n {entity.menu?.icon ??\n createElement(Icons[getBestMatchingIcon(entity.name)] as React.ComponentType<any>, {\n className: 'fk-h-4 fk-w-4 fk-mr-2',\n strokeWidth: 2,\n })}\n <span>{capitalize(entity.menu?.label ?? entity.plural)}</span>\n </NavLink>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroup>\n ))}\n <SidebarGroup>\n <SidebarMenu>\n {itemsByGroup['ungrouped']?.map((entity) => (\n <SidebarMenuItem key={entity.plural}>\n <SidebarMenuButton\n asChild\n isActive={location.pathname.includes(`/list/${entity.plural}`)}\n tooltip={capitalize(entity.menu?.label ?? entity.plural)}\n >\n <NavLink to={`list/${entity.plural}`}>\n {createElement(Icons[getBestMatchingIcon(entity.name)] as React.ComponentType<any>, {\n className: 'fk-h-4 fk-w-4 fk-mr-2',\n strokeWidth: 2,\n })}\n <span>{capitalize(entity.menu?.label ?? entity.plural)}</span>\n </NavLink>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroup>\n </SidebarContent>\n <SidebarRail />\n </SidebarPrimitive>\n );\n}\n\nfunction capitalize(str: string): string {\n // Add space before capital letters and capitalize first letter\n const withSpaces = str.replace(/([A-Z])/g, ' $1');\n // Capitalize first letter and trim any leading space\n return withSpaces.charAt(0).toUpperCase() + withSpaces.slice(1).trim();\n}\n\n/**\n * Tries to get the best matching icon for an entity name using fuzy search\n */\nfunction getBestMatchingIcon(concept: string): keyof typeof Icons {\n const result = fuse.search(concept);\n\n if (result.length > 0) {\n return result[0].item.name as keyof typeof Icons;\n }\n\n return 'Dock' as keyof typeof Icons;\n}\n","'use client';\n\nimport * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { cn } from 'src/ui/lib/utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n className={cn(\n 'fk-inline-flex fk-h-10 fk-items-center fk-justify-center fk-rounded-md fk-bg-muted fk-p-1 fk-text-muted-foreground',\n className\n )}\n ref={ref}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n className={cn(\n 'fk-inline-flex fk-items-center fk-justify-center fk-whitespace-nowrap fk-rounded-sm fk-px-3 fk-py-1.5 fk-text-sm fk-font-medium fk-ring-offset-background fk-transition-all focus-visible:fk-outline-none focus-visible:fk-ring-2 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-2 disabled:fk-pointer-events-none disabled:fk-opacity-50 data-[state=active]:fk-bg-background data-[state=active]:fk-text-foreground data-[state=active]:fk-shadow-sm',\n className\n )}\n ref={ref}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n className={cn(\n 'fk-mt-2 fk-ring-offset-background focus-visible:fk-outline-none focus-visible:fk-ring-2 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-2',\n className\n )}\n ref={ref}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"]}
1
+ {"version":3,"sources":["../src/ui/primitives/resizable.tsx","../src/ui/primitives/sheet.tsx","../src/ui/hooks/use-mobile.tsx","../src/ui/primitives/sidebar.tsx","../src/ui/components/sidebar.tsx","../src/ui/primitives/tabs.tsx"],"names":["ResizablePanelGroup","className","props","jsx","cn","ResizablePanel","ResizableHandle","withHandle","GripVertical","Sheet","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","x","ref","sheetVariants","cva","SheetContent","side","children","jsxs","X","SheetHeader","SheetFooter","SheetTitle","SheetDescription","MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","I","mql","onChange","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","style","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","TooltipProvider","Sidebar","variant","collapsible","SidebarTrigger","onClick","Button","MenuIcon","PanelLeftIcon","SidebarRail","SidebarInset","SidebarInput","Input","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","SidebarMenuButton","isActive","size","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton","iconList","Icons","iconName","fuse","Fuse","menuGroups","schema","visibleItems","item","itemsByGroup","groupBy","g","nonEmptyGroups","menuGroup","group","entity","capitalize","NavLink","createElement","getBestMatchingIcon","str","withSpaces","concept","result","Tabs","TabsList","O","TabsTrigger","TabsContent"],"mappings":"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","file":"ui.js","sourcesContent":["import { GripVertical } from 'lucide-react';\nimport * as ResizablePrimitive from 'react-resizable-panels';\nimport { cn } from 'src/ui/lib/utils';\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>): JSX.Element {\n return (\n <ResizablePrimitive.PanelGroup\n className={cn('fk-flex fk-h-full fk-w-full data-[panel-group-direction=vertical]:fk-flex-col', className)}\n {...props}\n />\n );\n}\n\nconst ResizablePanel = ResizablePrimitive.Panel;\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean;\n}): JSX.Element {\n return (\n <ResizablePrimitive.PanelResizeHandle\n className={cn(\n 'fk-relative fk-flex fk-w-px fk-items-center fk-justify-center fk-bg-border after:fk-absolute after:fk-inset-y-0 after:fk-left-1/2 after:fk-w-1 after:fk--translate-x-1/2 focus-visible:fk-outline-none focus-visible:fk-ring-1 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-1 data-[panel-group-direction=vertical]:fk-h-px data-[panel-group-direction=vertical]:fk-w-full data-[panel-group-direction=vertical]:after:fk-left-0 data-[panel-group-direction=vertical]:after:fk-h-1 data-[panel-group-direction=vertical]:after:fk-w-full data-[panel-group-direction=vertical]:after:fk--translate-y-1/2 data-[panel-group-direction=vertical]:after:fk-translate-x-0 [&[data-panel-group-direction=vertical]>div]:fk-rotate-90',\n className\n )}\n {...props}\n >\n {Boolean(withHandle) && (\n <div className=\"fk-z-10 fk-flex fk-h-4 fk-w-3 fk-items-center fk-justify-center fk-rounded-sm fk-border fk-bg-border\">\n <GripVertical className=\"fk-h-2.5 fk-w-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n );\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","'use client';\n\nimport * as React from 'react';\nimport * as SheetPrimitive from '@radix-ui/react-dialog';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport { cn } from 'src/ui/lib/utils';\n\nconst Sheet = SheetPrimitive.Root;\n\nconst SheetTrigger = SheetPrimitive.Trigger;\n\nconst SheetClose = SheetPrimitive.Close;\n\nconst SheetPortal = SheetPrimitive.Portal;\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n 'fk-fixed fk-inset-0 fk-z-50 fk-bg-overlay/75 fk-backdrop-blur-[1px] data-[state=open]:fk-animate-in data-[state=closed]:fk-animate-out data-[state=closed]:fk-fade-out-0 data-[state=open]:fk-fade-in-0',\n className\n )}\n {...props}\n ref={ref}\n />\n));\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\n\nconst sheetVariants = cva(\n 'fk-fixed fk-z-50 fk-gap-4 fk-bg-background fk-p-6 fk-shadow-lg fk-transition fk-ease-in-out data-[state=open]:fk-animate-in data-[state=closed]:fk-animate-out data-[state=closed]:fk-duration-300 data-[state=open]:fk-duration-500',\n {\n variants: {\n side: {\n top: 'fk-inset-x-0 fk-top-0 fk-border-b data-[state=closed]:fk-slide-out-to-top data-[state=open]:fk-slide-in-from-top',\n bottom:\n 'fk-inset-x-0 fk-bottom-0 fk-border-t data-[state=closed]:fk-slide-out-to-bottom data-[state=open]:fk-slide-in-from-bottom',\n left: 'fk-inset-y-0 fk-left-0 fk-h-full fk-w-3/4 fk-border-r fk-border-r-sidebar-border data-[state=closed]:fk-slide-out-to-left data-[state=open]:fk-slide-in-from-left sm:fk-max-w-sm',\n right:\n 'fk-inset-y-0 fk-right-0 fk-h-full fk-w-3/4 fk- fk-border-l data-[state=closed]:fk-slide-out-to-right data-[state=open]:fk-slide-in-from-right sm:fk-max-w-sm',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n }\n);\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<React.ElementRef<typeof SheetPrimitive.Content>, SheetContentProps>(\n ({ side = 'right', className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content className={cn(sheetVariants({ side }), className)} ref={ref} {...props}>\n {children}\n <SheetPrimitive.Close className=\"fk-absolute fk-right-4 fk-top-4 fk-rounded-sm fk-opacity-70 fk-ring-offset-background fk-transition-opacity hover:fk-opacity-100 focus:fk-outline-none focus:fk-ring-2 focus:fk-ring-ring focus:fk-ring-offset-2 disabled:fk-pointer-events-none data-[state=open]:fk-bg-secondary\">\n <X className=\"fk-h-4 fk-w-4\" />\n <span className=\"fk-sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n);\nSheetContent.displayName = SheetPrimitive.Content.displayName;\n\nfunction SheetHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): JSX.Element {\n return (\n <div className={cn('fk-flex fk-flex-col fk-space-y-2 fk-text-center sm:fk-text-left', className)} {...props} />\n );\n}\nSheetHeader.displayName = 'SheetHeader';\n\nfunction SheetFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): JSX.Element {\n return (\n <div\n className={cn('fk-flex fk-flex-col-reverse sm:fk-flex-row sm:fk-justify-end sm:fk-space-x-2', className)}\n {...props}\n />\n );\n}\nSheetFooter.displayName = 'SheetFooter';\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n className={cn('fk-text-lg fk-font-semibold fk-text-foreground', className)}\n ref={ref}\n {...props}\n />\n));\nSheetTitle.displayName = SheetPrimitive.Title.displayName;\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description className={cn('fk-text-sm fk-text-muted-foreground', className)} ref={ref} {...props} />\n));\nSheetDescription.displayName = SheetPrimitive.Description.displayName;\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","import * as React from 'react';\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined);\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener('change', onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener('change', onChange);\n }, []);\n\n return !!isMobile;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { VariantProps, cva } from 'class-variance-authority';\nimport { PanelLeft as PanelLeftIcon, Menu as MenuIcon } from 'lucide-react';\nimport { useIsMobile } from '../hooks/use-mobile';\nimport { cn } from '../lib/utils';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Separator } from './separator';\nimport { Sheet, SheetContent } from './sheet';\nimport { Skeleton } from './skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip';\n\nconst SIDEBAR_COOKIE_NAME = 'flexkit:sidebar:state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '2rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ntype SidebarContext = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n\n return context;\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n }\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'fk-group/sidebar-wrapper fk-flex fk-w-full has-[[data-variant=inset]]:fk-bg-sidebar fk-overflow-hidden',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n});\nSidebarProvider.displayName = 'SidebarProvider';\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n }\n>(({ side = 'left', variant = 'sidebar', collapsible = 'offcanvas', className, children, ...props }, ref) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn(\n 'fk-flex fk-h-full fk-w-[--sidebar-width] fk-flex-col fk-bg-sidebar fk-text-sidebar-foreground',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"fk-w-[--sidebar-width] fk-bg-sidebar fk-p-0 fk-text-sidebar-foreground [&>button]:fk-hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <div className=\"fk-flex fk-h-full fk-w-full fk-flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n ref={ref}\n className=\"fk-relative fk-group fk-peer fk-hidden md:fk-block fk-text-sidebar-foreground\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'fk-duration-200 fk-relative fk-h-svh fk-w-[--sidebar-width] fk-bg-transparent fk-transition-[width] fk-ease-linear',\n 'group-data-[collapsible=offcanvas]:fk-w-0',\n 'group-data-[side=right]:fk-rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:fk-w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]'\n : 'group-data-[collapsible=icon]:fk-w-[--sidebar-width-icon]'\n )}\n />\n <div\n className={cn(\n 'fk-duration-200 fk-absolute fk-inset-y-0 fk-z-10 fk-hidden fk-h-[calc(100svh-3.5rem)] fk-w-[--sidebar-width] fk-transition-[left,right,width] fk-ease-linear md:fk-flex',\n side === 'left'\n ? 'fk-left-0 group-data-[collapsible=offcanvas]:fk-left-[calc(var(--sidebar-width)*-1)]'\n : 'fk-right-0 group-data-[collapsible=offcanvas]:fk-right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:fk-w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)] group-data-[side=left]:fk-border-r group-data-[side=right]:fk-border-l'\n : 'group-data-[collapsible=icon]:fk-w-[--sidebar-width-icon] group-data-[side=left]:fk-border-r group-data-[side=right]:fk-border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"fk-flex fk-h-full fk-w-full fk-flex-col fk-bg-sidebar group-data-[variant=floating]:fk-rounded-lg group-data-[variant=floating]:fk-border group-data-[variant=floating]:fk-border-sidebar-border group-data-[variant=floating]:fk-shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n});\nSidebar.displayName = 'Sidebar';\n\nconst SidebarTrigger = React.forwardRef<React.ElementRef<typeof Button>, React.ComponentProps<typeof Button>>(\n ({ className, onClick, ...props }, ref) => {\n const { isMobile, toggleSidebar } = useSidebar();\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('fk-h-7 fk-w-7', className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n {isMobile ? <MenuIcon /> : <PanelLeftIcon />}\n <span className=\"fk-sr-only\">Toggle Sidebar</span>\n </Button>\n );\n }\n);\nSidebarTrigger.displayName = 'SidebarTrigger';\n\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<'button'>>(\n ({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'fk-absolute fk-inset-y-0 fk-z-20 fk-hidden fk-w-4 fk--translate-x-1/2 fk-transition-all fk-ease-linear after:fk-absolute after:fk-inset-y-0 after:fk-left-1/2 after:fk-w-[2px] after:fk-bg-sidebar-border hover:after:fk-bg-muted-foreground group-data-[side=left]:fk--right-4 group-data-[side=right]:fk-left-0 sm:fk-flex',\n '[[data-side=left]_&]:fk-cursor-w-resize [[data-side=right]_&]:fk-cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:fk-cursor-e-resize [[data-side=right][data-state=collapsed]_&]:fk-cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:fk-translate-x-0 group-data-[collapsible=offcanvas]:after:fk-left-full group-data-[collapsible=offcanvas]:hover:fk-bg-sidebar',\n '[[data-side=left][data-collapsible=offcanvas]_&]:fk--right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:fk--left-2',\n className\n )}\n {...props}\n />\n );\n }\n);\nSidebarRail.displayName = 'SidebarRail';\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<'main'>>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n 'fk-relative fk-flex fk-flex-1 fk-flex-col fk-bg-background fk-overflow-hidden',\n 'peer-data-[variant=inset]:fk-h-[calc(100svh-4rem)]',\n className\n )}\n {...props}\n />\n );\n});\nSidebarInset.displayName = 'SidebarInset';\n\nconst SidebarInput = React.forwardRef<React.ElementRef<typeof Input>, React.ComponentProps<typeof Input>>(\n ({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n 'fk-h-8 fk-w-full fk-bg-background fk-shadow-none focus-visible:fk-ring-2 focus-visible:fk-ring-sidebar-ring',\n className\n )}\n {...props}\n />\n );\n }\n);\nSidebarInput.displayName = 'SidebarInput';\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div ref={ref} data-sidebar=\"header\" className={cn('fk-flex fk-flex-col fk-gap-2 fk-p-2', className)} {...props} />\n );\n});\nSidebarHeader.displayName = 'SidebarHeader';\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div ref={ref} data-sidebar=\"footer\" className={cn('fk-flex fk-flex-col fk-gap-2 fk-p-2', className)} {...props} />\n );\n});\nSidebarFooter.displayName = 'SidebarFooter';\n\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Separator>, React.ComponentProps<typeof Separator>>(\n ({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn('fk-mx-2 fk-w-auto fk-bg-sidebar-border', className)}\n {...props}\n />\n );\n }\n);\nSidebarSeparator.displayName = 'SidebarSeparator';\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n 'fk-flex fk-min-h-0 fk-flex-1 fk-flex-col fk-overflow-auto group-data-[collapsible=icon]:fk-overflow-hidden',\n className\n )}\n {...props}\n />\n );\n});\nSidebarContent.displayName = 'SidebarContent';\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn('fk-relative fk-flex fk-w-full fk-min-w-0 fk-flex-col fk-p-2', className)}\n {...props}\n />\n );\n});\nSidebarGroup.displayName = 'SidebarGroup';\n\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'> & { asChild?: boolean }>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n 'fk-duration-200 fk-flex fk-h-8 fk-shrink-0 fk-items-center fk-rounded-md fk-px-2 fk-text-xs fk-font-medium fk-text-sidebar-foreground/70 fk-outline-none fk-ring-sidebar-ring fk-transition-[margin,opa] fk-ease-linear focus-visible:fk-ring-2 [&>svg]:fk-size-4 [&>svg]:fk-shrink-0',\n 'group-data-[collapsible=icon]:fk--mt-8 group-data-[collapsible=icon]:fk-opacity-0',\n className\n )}\n {...props}\n />\n );\n }\n);\nSidebarGroupLabel.displayName = 'SidebarGroupLabel';\n\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<'button'> & { asChild?: boolean }>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n 'fk-absolute fk-right-3 fk-top-3.5 fk-flex fk-aspect-square fk-w-5 fk-items-center fk-justify-center fk-rounded-md fk-p-0 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring fk-transition-transform hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 [&>svg]:fk-size-4 [&>svg]:fk-shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:fk-absolute after:fk--inset-2 after:md:fk-hidden',\n 'group-data-[collapsible=icon]:fk-hidden',\n className\n )}\n {...props}\n />\n );\n }\n);\nSidebarGroupAction.displayName = 'SidebarGroupAction';\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} data-sidebar=\"group-content\" className={cn('fk-w-full fk-text-sm', className)} {...props} />\n )\n);\nSidebarGroupContent.displayName = 'SidebarGroupContent';\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn('fk-flex fk-w-full fk-min-w-0 fk-flex-col fk-gap-1 fk-z-10', className)}\n {...props}\n />\n));\nSidebarMenu.displayName = 'SidebarMenu';\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(({ className, ...props }, ref) => (\n <li ref={ref} data-sidebar=\"menu-item\" className={cn('fk-group/menu-item fk-relative', className)} {...props} />\n));\nSidebarMenuItem.displayName = 'SidebarMenuItem';\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button fk-flex fk-w-full fk-items-center fk-gap-2 fk-overflow-hidden fk-rounded-md fk-p-2 fk-text-left fk-text-sm fk-outline-none fk-ring-sidebar-ring fk-transition-[width,height,padding] hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 active:fk-bg-sidebar-accent active:fk-text-sidebar-accent-foreground disabled:fk-pointer-events-none disabled:fk-opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:fk-pr-8 aria-disabled:fk-pointer-events-none aria-disabled:fk-opacity-50 data-[active=true]:fk-bg-sidebar-accent data-[active=true]:fk-font-medium data-[active=true]:fk-text-sidebar-accent-foreground data-[state=open]:hover:fk-bg-sidebar-accent data-[state=open]:hover:fk-text-sidebar-accent-foreground group-data-[collapsible=icon]:fk-!size-8 group-data-[collapsible=icon]:fk-!p-2 [&>span:last-child]:fk-truncate [&>svg]:fk-size-4 [&>svg]:fk-shrink-0',\n {\n variants: {\n variant: {\n default: 'hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground',\n outline:\n 'fk-bg-background fk-shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground hover:fk-shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'fk-h-8 fk-text-sm',\n sm: 'fk-h-7 fk-text-xs',\n lg: 'fk-h-12 fk-text-sm group-data-[collapsible=icon]:fk-!p-0',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(({ asChild = false, isActive = false, variant = 'default', size = 'default', tooltip, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed' || isMobile} {...tooltip} />\n </Tooltip>\n );\n});\nSidebarMenuButton.displayName = 'SidebarMenuButton';\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n 'fk-absolute fk-right-1 fk-top-1.5 fk-flex fk-aspect-square fk-w-5 fk-items-center fk-justify-center fk-rounded-md fk-p-0 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring fk-transition-transform hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 peer-hover/menu-button:fk-text-sidebar-accent-foreground [&>svg]:fk-size-4 [&>svg]:fk-shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:fk-absolute after:fk--inset-2 after:md:fk-hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:fk-hidden',\n showOnHover &&\n 'group-focus-within/menu-item:fk-opacity-100 group-hover/menu-item:fk-opacity-100 data-[state=open]:fk-opacity-100 peer-data-[active=true]/menu-button:fk-text-sidebar-accent-foreground md:fk-opacity-0',\n className\n )}\n {...props}\n />\n );\n});\nSidebarMenuAction.displayName = 'SidebarMenuAction';\n\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n 'fk-absolute fk-right-1 fk-flex fk-h-5 fk-min-w-5 fk-items-center fk-justify-center fk-rounded-md fk-px-1 fk-text-xs fk-font-medium fk-tabular-nums fk-text-sidebar-foreground fk-select-none fk-pointer-events-none',\n 'peer-hover/menu-button:fk-text-sidebar-accent-foreground peer-data-[active=true]/menu-button:fk-text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:fk-hidden',\n className\n )}\n {...props}\n />\n )\n);\nSidebarMenuBadge.displayName = 'SidebarMenuBadge';\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n showIcon?: boolean;\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn('fk-rounded-md fk-h-8 fk-flex fk-gap-2 fk-px-2 fk-items-center', className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"fk-size-4 fk-rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"fk-h-4 fk-flex-1 fk-max-w-[--skeleton-width]\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n});\nSidebarMenuSkeleton.displayName = 'SidebarMenuSkeleton';\n\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n 'fk-mx-3.5 fk-flex fk-min-w-0 fk-translate-x-px fk-flex-col fk-gap-1 fk-border-l fk-border-sidebar-border fk-px-2.5 fk-py-0.5',\n 'group-data-[collapsible=icon]:fk-hidden',\n className\n )}\n {...props}\n />\n )\n);\nSidebarMenuSub.displayName = 'SidebarMenuSub';\n\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(({ ...props }, ref) => (\n <li ref={ref} {...props} />\n));\nSidebarMenuSubItem.displayName = 'SidebarMenuSubItem';\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n }\n>(({ asChild = false, size = 'md', isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'fk-flex fk-h-7 fk-min-w-0 fk--translate-x-px fk-items-center fk-gap-2 fk-overflow-hidden fk-rounded-md fk-px-2 fk-text-sidebar-foreground fk-outline-none fk-ring-sidebar-ring hover:fk-bg-sidebar-accent hover:fk-text-sidebar-accent-foreground focus-visible:fk-ring-2 active:fk-bg-sidebar-accent active:fk-text-sidebar-accent-foreground disabled:fk-pointer-events-none disabled:fk-opacity-50 aria-disabled:fk-pointer-events-none aria-disabled:fk-opacity-50 [&>span:last-child]:fk-truncate [&>svg]:fk-size-4 [&>svg]:fk-shrink-0 [&>svg]:fk-text-sidebar-accent-foreground',\n 'data-[active=true]:fk-bg-sidebar-accent data-[active=true]:fk-text-sidebar-accent-foreground',\n size === 'sm' && 'fk-text-xs',\n size === 'md' && 'fk-text-sm',\n 'group-data-[collapsible=icon]:fk-hidden',\n className\n )}\n {...props}\n />\n );\n});\nSidebarMenuSubButton.displayName = 'SidebarMenuSubButton';\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n","import { createElement } from 'react';\nimport * as Icons from 'lucide-react';\nimport Fuse from 'fuse.js';\nimport { NavLink } from 'react-router-dom';\nimport {\n Sidebar as SidebarPrimitive,\n SidebarContent,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarMenu,\n SidebarMenuItem,\n SidebarMenuButton,\n SidebarRail,\n} from '../primitives/sidebar';\nimport type { SingleProject } from '../../core/config/types';\nimport { groupBy } from 'ramda';\n\ninterface SidebarProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n menuGroups?: SingleProject['menuGroups'];\n schema: SingleProject['schema'];\n}\n\ntype VisibleMenuSchema = Array<\n Omit<SingleProject['schema'][number], 'menu'> & {\n menu?: Exclude<SingleProject['schema'][number]['menu'], { hidden: true }>;\n }\n>;\n\nconst iconList = Object.keys(Icons).map((iconName) => ({\n name: iconName,\n icon: Icons[iconName as keyof typeof Icons],\n}));\n\nconst fuse = new Fuse(iconList, {\n keys: ['name'],\n threshold: 0.5,\n});\n\nexport function Sidebar({ className, menuGroups, schema }: SidebarProps): JSX.Element {\n // Filter out hidden items first, then group them\n const visibleItems = schema.filter((item) => !(item.menu && 'hidden' in item.menu)) as VisibleMenuSchema;\n const itemsByGroup = groupBy(\n (item) => (item.menu?.group && menuGroups?.find((g) => g.name === item.menu?.group)?.name) || 'ungrouped',\n visibleItems\n );\n const nonEmptyGroups = menuGroups?.filter((menuGroup) => itemsByGroup[menuGroup.name]?.length);\n\n return (\n <SidebarPrimitive className={className} collapsible=\"icon\" variant=\"inset\">\n <SidebarContent>\n {nonEmptyGroups?.map((group) => (\n <SidebarGroup key={group.name}>\n <SidebarGroupLabel>{group.title}</SidebarGroupLabel>\n <SidebarMenu>\n {itemsByGroup[group.name]?.map((entity) => (\n <SidebarMenuItem key={entity.plural}>\n <SidebarMenuButton\n asChild\n isActive={location.pathname.includes(`/list/${entity.plural}`)}\n tooltip={capitalize(entity.menu?.label ?? entity.plural)}\n >\n <NavLink to={`list/${entity.plural}`}>\n {entity.menu?.icon ??\n createElement(Icons[getBestMatchingIcon(entity.name)] as React.ComponentType<any>, {\n className: 'fk-h-4 fk-w-4 fk-mr-2',\n strokeWidth: 2,\n })}\n <span>{capitalize(entity.menu?.label ?? entity.plural)}</span>\n </NavLink>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroup>\n ))}\n <SidebarGroup>\n <SidebarMenu>\n {itemsByGroup['ungrouped']?.map((entity) => (\n <SidebarMenuItem key={entity.plural}>\n <SidebarMenuButton\n asChild\n isActive={location.pathname.includes(`/list/${entity.plural}`)}\n tooltip={capitalize(entity.menu?.label ?? entity.plural)}\n >\n <NavLink to={`list/${entity.plural}`}>\n {createElement(Icons[getBestMatchingIcon(entity.name)] as React.ComponentType<any>, {\n className: 'fk-h-4 fk-w-4 fk-mr-2',\n strokeWidth: 2,\n })}\n <span>{capitalize(entity.menu?.label ?? entity.plural)}</span>\n </NavLink>\n </SidebarMenuButton>\n </SidebarMenuItem>\n ))}\n </SidebarMenu>\n </SidebarGroup>\n </SidebarContent>\n <SidebarRail />\n </SidebarPrimitive>\n );\n}\n\nfunction capitalize(str: string): string {\n // Add space before capital letters and capitalize first letter\n const withSpaces = str.replace(/([A-Z])/g, ' $1');\n // Capitalize first letter and trim any leading space\n return withSpaces.charAt(0).toUpperCase() + withSpaces.slice(1).trim();\n}\n\n/**\n * Tries to get the best matching icon for an entity name using fuzy search\n */\nfunction getBestMatchingIcon(concept: string): keyof typeof Icons {\n const result = fuse.search(concept);\n\n if (result.length > 0) {\n return result[0].item.name as keyof typeof Icons;\n }\n\n return 'Dock' as keyof typeof Icons;\n}\n","'use client';\n\nimport * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { cn } from 'src/ui/lib/utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n className={cn(\n 'fk-inline-flex fk-h-10 fk-items-center fk-justify-center fk-rounded-md fk-bg-muted fk-p-1 fk-text-muted-foreground',\n className\n )}\n ref={ref}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n className={cn(\n 'fk-inline-flex fk-items-center fk-justify-center fk-whitespace-nowrap fk-rounded-sm fk-px-3 fk-py-1.5 fk-text-sm fk-font-medium fk-ring-offset-background fk-transition-all focus-visible:fk-outline-none focus-visible:fk-ring-2 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-2 disabled:fk-pointer-events-none disabled:fk-opacity-50 data-[state=active]:fk-bg-background data-[state=active]:fk-text-foreground data-[state=active]:fk-shadow-sm',\n className\n )}\n ref={ref}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n className={cn(\n 'fk-mt-2 fk-ring-offset-background focus-visible:fk-outline-none focus-visible:fk-ring-2 focus-visible:fk-ring-ring focus-visible:fk-ring-offset-2',\n className\n )}\n ref={ref}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"]}
@@ -0,0 +1,2 @@
1
+ import'./index.css';import {b}from'./chunk-UKRYV5CE.js';import {a,b as b$2,c as c$1}from'./chunk-K5CEPNVI.js';import {r,c,d,b as b$1,k,o,p,m,l,q}from'./chunk-64KAF6GA.js';import'./chunk-J63QWF2X.js';import'./chunk-7YBJLUUE.js';import'./chunk-AXB7FQV2.js';import'./chunk-XSNFFA5W.js';import {useTheme}from'next-themes';import {Monitor,Moon,Sun}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';function _({projectId:g}){let{theme:r$1,setTheme:t}=useTheme(),[D,n]=b();return D?jsx(r,{className:"fk-h-8 fk-w-8 fk-rounded-full"}):jsxs(c,{children:[jsx(d,{asChild:true,children:jsx(b$1,{className:"fk-relative fk-h-8 fk-w-8 fk-rounded-full",variant:"ghost",children:jsxs(a,{className:"fk-h-8 fk-w-8",children:[jsx(b$2,{alt:"@shadcn",src:n.user?.avatar_url}),jsx(c$1,{children:n.user?.display_name.charAt(0).toUpperCase()??""})]})})}),jsxs(k,{align:"end",className:"fk-w-56",forceMount:true,children:[jsx(o,{className:"font-normal",children:jsxs("div",{className:"fk-flex fk-flex-col fk-space-y-1",children:[jsx("p",{className:"fk-text-sm fk-font-medium fk-leading-none",children:n.user?.display_name}),jsx("p",{className:"fk-text-xs fk-leading-none fk-text-muted-foreground",children:n.user?.email})]})}),jsx(p,{}),jsx(o,{children:"Theme"}),jsxs(m,{checked:r$1==="system",onCheckedChange:()=>{t("system");},children:[jsx(Monitor,{className:"fk-mr-2 fk-h-4 fk-w-4"}),jsx("span",{children:"System"})]}),jsxs(m,{checked:r$1==="dark",onCheckedChange:()=>{t("dark");},children:[jsx(Moon,{className:"fk-mr-2 fk-h-4 fk-w-4"}),jsx("span",{children:"Dark"})]}),jsxs(m,{checked:r$1==="light",onCheckedChange:()=>{t("light");},children:[jsx(Sun,{className:"fk-mr-2 fk-h-4 fk-w-4"}),jsx("span",{children:"Light"})]}),jsx(p,{}),jsxs(l,{onClick:()=>{n.logout(g).then(()=>{}).catch(()=>{});},children:["Log out",jsx(q,{children:"\u21E7\u2318Q"})]})]})]})}export{_ as UserNav};//# sourceMappingURL=user-nav-ORQ6W5W3.js.map
2
+ //# sourceMappingURL=user-nav-ORQ6W5W3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/components/user-nav.tsx"],"names":["UserNav","projectId","theme","setTheme","useTheme","isLoading","auth","useAuth","jsx","Skeleton","jsxs","DropdownMenu","DropdownMenuTrigger","Button","Avatar","AvatarImage","AvatarFallback","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuCheckboxItem","Monitor","Moon","Sun","DropdownMenuItem","DropdownMenuShortcut"],"mappings":"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","file":"user-nav-5LW5USDZ.js","sourcesContent":["import { useTheme } from 'next-themes';\nimport { Monitor, Moon, Sun } from 'lucide-react';\nimport { Avatar, AvatarFallback, AvatarImage } from '../primitives/avatar';\nimport { Button } from '../primitives/button';\nimport { Skeleton } from '../primitives/skeleton';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuTrigger,\n} from '../primitives/dropdown-menu';\nimport { useAuth } from '../../auth/auth-context';\n\ntype Props = {\n projectId: string;\n};\n\nexport function UserNav({ projectId }: Props): JSX.Element {\n const { theme, setTheme } = useTheme();\n const [isLoading, auth] = useAuth();\n\n if (isLoading) {\n return <Skeleton className=\"fk-h-8 fk-w-8 fk-rounded-full\" />;\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"fk-relative fk-h-8 fk-w-8 fk-rounded-full\" variant=\"ghost\">\n <Avatar className=\"fk-h-8 fk-w-8\">\n <AvatarImage alt=\"@shadcn\" src={auth.user?.avatar_url} />\n <AvatarFallback>{auth.user?.display_name.charAt(0).toUpperCase() ?? ''}</AvatarFallback>\n </Avatar>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"fk-w-56\" forceMount>\n <DropdownMenuLabel className=\"font-normal\">\n <div className=\"fk-flex fk-flex-col fk-space-y-1\">\n <p className=\"fk-text-sm fk-font-medium fk-leading-none\">{auth.user?.display_name}</p>\n <p className=\"fk-text-xs fk-leading-none fk-text-muted-foreground\">{auth.user?.email}</p>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuLabel>Theme</DropdownMenuLabel>\n <DropdownMenuCheckboxItem\n checked={theme === 'system'}\n onCheckedChange={() => {\n setTheme('system');\n }}\n >\n <Monitor className=\"fk-mr-2 fk-h-4 fk-w-4\" />\n <span>System</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuCheckboxItem\n checked={theme === 'dark'}\n onCheckedChange={() => {\n setTheme('dark');\n }}\n >\n <Moon className=\"fk-mr-2 fk-h-4 fk-w-4\" />\n <span>Dark</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuCheckboxItem\n checked={theme === 'light'}\n onCheckedChange={() => {\n setTheme('light');\n }}\n >\n <Sun className=\"fk-mr-2 fk-h-4 fk-w-4\" />\n <span>Light</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={() => {\n auth\n .logout(projectId)\n .then(() => {\n //\n })\n .catch(() => {\n //\n });\n }}\n >\n Log out\n <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/ui/components/user-nav.tsx"],"names":["UserNav","projectId","theme","setTheme","useTheme","isLoading","auth","useAuth","jsx","Skeleton","jsxs","DropdownMenu","DropdownMenuTrigger","Button","Avatar","AvatarImage","AvatarFallback","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuCheckboxItem","Monitor","Moon","Sun","DropdownMenuItem","DropdownMenuShortcut"],"mappings":"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","file":"user-nav-ORQ6W5W3.js","sourcesContent":["import { useTheme } from 'next-themes';\nimport { Monitor, Moon, Sun } from 'lucide-react';\nimport { Avatar, AvatarFallback, AvatarImage } from '../primitives/avatar';\nimport { Button } from '../primitives/button';\nimport { Skeleton } from '../primitives/skeleton';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuTrigger,\n} from '../primitives/dropdown-menu';\nimport { useAuth } from '../../auth/auth-context';\n\ntype Props = {\n projectId: string;\n};\n\nexport function UserNav({ projectId }: Props): JSX.Element {\n const { theme, setTheme } = useTheme();\n const [isLoading, auth] = useAuth();\n\n if (isLoading) {\n return <Skeleton className=\"fk-h-8 fk-w-8 fk-rounded-full\" />;\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"fk-relative fk-h-8 fk-w-8 fk-rounded-full\" variant=\"ghost\">\n <Avatar className=\"fk-h-8 fk-w-8\">\n <AvatarImage alt=\"@shadcn\" src={auth.user?.avatar_url} />\n <AvatarFallback>{auth.user?.display_name.charAt(0).toUpperCase() ?? ''}</AvatarFallback>\n </Avatar>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"fk-w-56\" forceMount>\n <DropdownMenuLabel className=\"font-normal\">\n <div className=\"fk-flex fk-flex-col fk-space-y-1\">\n <p className=\"fk-text-sm fk-font-medium fk-leading-none\">{auth.user?.display_name}</p>\n <p className=\"fk-text-xs fk-leading-none fk-text-muted-foreground\">{auth.user?.email}</p>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuLabel>Theme</DropdownMenuLabel>\n <DropdownMenuCheckboxItem\n checked={theme === 'system'}\n onCheckedChange={() => {\n setTheme('system');\n }}\n >\n <Monitor className=\"fk-mr-2 fk-h-4 fk-w-4\" />\n <span>System</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuCheckboxItem\n checked={theme === 'dark'}\n onCheckedChange={() => {\n setTheme('dark');\n }}\n >\n <Moon className=\"fk-mr-2 fk-h-4 fk-w-4\" />\n <span>Dark</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuCheckboxItem\n checked={theme === 'light'}\n onCheckedChange={() => {\n setTheme('light');\n }}\n >\n <Sun className=\"fk-mr-2 fk-h-4 fk-w-4\" />\n <span>Light</span>\n </DropdownMenuCheckboxItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={() => {\n auth\n .logout(projectId)\n .then(() => {\n //\n })\n .catch(() => {\n //\n });\n }}\n >\n Log out\n <DropdownMenuShortcut>⇧⌘Q</DropdownMenuShortcut>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flexkit/studio",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
4
4
  "description": "Flexkit Studio - Build custom internal tools like PIMs, CRMs, and ERPs with a flexible React UI and a graph-backed API",
5
5
  "keywords": [
6
6
  "flexkit",
@@ -1,2 +0,0 @@
1
- import'./index.css';export{a as Asset}from'./chunk-D5N42D57.js';import'./chunk-RMSYYUQM.js';import'./chunk-7YBJLUUE.js';import'./chunk-AXB7FQV2.js';//# sourceMappingURL=asset-65455B7V.js.map
2
- //# sourceMappingURL=asset-65455B7V.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';export{a as Boolean}from'./chunk-M6EIBKCQ.js';//# sourceMappingURL=boolean-3ZHXDPHB.js.map
2
- //# sourceMappingURL=boolean-3ZHXDPHB.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {c}from'./chunk-7YBJLUUE.js';import {createContext,useReducer,useContext,useMemo}from'react';import {jsx}from'react/jsx-runtime';import {path,has,find,propEq}from'ramda';import {useParams}from'react-router-dom';import k from'swr';var J="core.context.scope:",E={breadcrumbs:[],isRouteLoading:false,pageTitle:"",scope:"",relationships:{}},w=createContext(E),v=createContext(()=>{});function U(t,o){let{type:n,payload:e}=o;switch(n){case "setScope":return typeof localStorage<"u"&&e.projectId&&localStorage.setItem(`${J}${e.projectId}`,e.scope),{...t,scope:e.scope};case "setRelationship":return {...t,relationships:{...t.relationships,...e}};default:throw Error(`Unknown action: ${n}`)}}function Q({children:t}){let[o,n]=useReducer(U,E);return jsx(w.Provider,{value:o,children:jsx(v.Provider,{value:n,children:t})})}function I(){return useContext(w)}function Z(){return useContext(v)}var h={name:"_asset",plural:"_assets",menu:{hidden:true},attributes:[{name:"path",label:"Asset",scope:"global",options:{size:140},isEditable:true,dataType:"string",inputType:"text",previewType:"assetPreviewField",defaultValue:""},{name:"originalFilename",label:"Filename",scope:"global",options:{size:280},isEditable:true,dataType:"string",inputType:"text",previewType:"text",isPrimary:true,defaultValue:""},{name:"size",label:"Size",scope:"global",options:{size:120},isEditable:true,dataType:"int",inputType:"text",previewType:"text",defaultValue:""},{name:"width",label:"Width",scope:"global",options:{size:80},isEditable:true,dataType:"int",inputType:"text",previewType:"text",defaultValue:""},{name:"height",label:"Height",scope:"global",options:{size:80},isEditable:true,dataType:"int",inputType:"text",previewType:"text",defaultValue:""},{name:"mimeType",label:"Mime Type",scope:"global",options:{size:160},isEditable:true,dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"lqip",label:"lqip",scope:"global",isHidden:true,isEditable:true,dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"_updatedAt",label:"Last Updated",scope:"global",options:{size:140},isEditable:true,dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"tags",label:"Tags",scope:"relationship",dataType:"string",inputType:"relationship",defaultValue:"",previewType:"tags",options:{size:300},relationship:{mode:"multiple",field:"name",entity:"_tag"}}]};var T={name:"_tag",plural:"_tags",menu:{hidden:true},attributes:[{name:"name",label:"Tag Name",scope:"global",options:{size:220},isEditable:true,dataType:"string",inputType:"text",previewType:"text",isPrimary:true,defaultValue:""},{name:"_updatedAt",label:"Last Updated",scope:"global",options:{size:140},isEditable:true,dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"assets",label:"Assets",scope:"relationship",dataType:"string",inputType:"relationship",defaultValue:"",relationship:{mode:"multiple",field:"originalFilename",entity:"_asset"}}]};var N=createContext({contributions:{apps:[]},currentProjectId:void 0,currentProjectSchema:[],getContributionPointConfig:()=>[],plugins:[],projects:[]}),b=t=>Object.prototype.hasOwnProperty.call(t,"projectId"),C=t=>Object.prototype.hasOwnProperty.call(t,"contributes");function lt({config:t,children:o}){let{projectId:n}=useParams(),e=useMemo(()=>{let i=s=>[...s.filter(l=>l.name!==h.name&&l.name!==T.name),h,T];return t.map(s=>({...s,schema:i(s.schema)}))},[t]),r=useMemo(()=>m(["plugins"],e),[e]),u=useMemo(()=>m(["plugins"],e.filter(i=>i.projectId===n)),[e,n]),c=r.filter(i=>!b(i)&&C(i)),p=u.filter(i=>!b(i)&&C(i)),a=useMemo(()=>({contributions:{apps:x("apps",[],p)},currentProjectId:n,currentProjectSchema:e.find(i=>i.projectId===n)?.schema??[],getContributionPointConfig:(i,s=[])=>x(i,s,p),plugins:c,projects:r.filter(i=>b(i))}),[c,n,p,r]);return jsx(N.Provider,{value:{...a,contributions:{...a.contributions,apps:a.contributions.apps}},children:o})}function V(){return useContext(N)}function m(t,o){return Array.isArray(o)?o.reduce((n,e)=>path(t,e)?[...n,e,...m(t,path(t,e)??[])]:[...n,e],[]):[o]}function x(t,o=[],n){let e=["contributes",t,...o];return m(e.flat(),n).filter(r=>has("component",r))}function ut(t){let n=m(["plugins"],t).filter(e=>!b(e)&&C(e));return x("apps",[],n)}function bt(t,o){let{scope:n}=I(),{projects:e,currentProjectId:r}=V(),{schema:u,scopes:c$1}=find(propEq(r??"","projectId"))(e),p=c$1?.find(g=>g.isDefault)?.name??"default",a=o?.commonParams.q?JSON.stringify(o):null,{data:i,error:s,isLoading:d}=k(a,()=>fetch(c(t).search,{headers:{"Content-Type":"application/json"},body:JSON.stringify(o),method:"POST",mode:"cors"}).then(g=>g.json()));return {results:G(i?.results??[],t,u,n,p)??[],error:s,isLoading:d}}function B(t){return t.find(o=>o.isPrimary)?.name??t[0]?.name}function G(t,o,n,e,r){return t?.filter(u=>u?.hits?.length>0).map(u=>{let c=u,p=c.collection.replace(`${o}_`,"").replace(/_\d+$/,""),a=find(propEq(p,"plural"))(n);if(!a)return [];let i=B(a?.attributes??[]),s=a?.name??p;return c.hits.map(({document:d})=>{let l=d[i],F=(l&&typeof l!="string"?l[e]??l[r]:null)??d[i],L=Object.entries(d).reduce((O,[y,f])=>{if(y!==i&&y!=="id"&&y!=="_updatedAt"){let $=typeof f!="string"?f[e]??f[r]:f;O[y]=$;}return O},{});return {_id:d.id,_entityName:s,_entityNamePlural:p,[i]:F,...L}})}).flat()}export{J as a,Q as b,I as c,Z as d,h as e,T as f,lt as g,V as h,ut as i,bt as j};//# sourceMappingURL=chunk-MOR653JA.js.map
2
- //# sourceMappingURL=chunk-MOR653JA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/app-context.tsx","../src/entities/assets-schema.ts","../src/entities/tags-schema.ts","../src/core/config/config-context.tsx","../src/core/use-search.tsx"],"names":["SCOPE_STORAGE_KEY","initialState","AppContext","createContext","AppDispatchContext","reducer","state","action","type","payload","AppProvider","children","dispatch","useReducer","jsx","useAppContext","useContext","useAppDispatch","assetSchema","tagSchema","ConfigContext","hasProjectIdProperty","configItem","hasContributesProperty","ConfigProvider","config","currentProjectId","useParams","enhancedConfig","useMemo","upsertReservedEntities","schema","entity","project","globalFlattenedConfig","flattenConfigByProperty","currentProjectFlattenedConfig","item","allPlugins","currentProjectPlugins","globalConfig","_getContributionPointConfig","contributionPoint","subPath","useConfig","property","acc","curr","path","pathArray","has","getApps","plugins","useSearch","projectId","searchRequest","scope","projects","scopes","find","propEq","defaultScope","s","swrKey","data","error","isLoading","useSWR","apiPaths","res","mapResults","getPrimaryAttributeName","schemaAttributes","attr","results","result","entityNamePlural","entitySchema","primaryAttributeName","entityName","document","primaryAttribute","primaryAttributeValue","attributes","key","value","scopedValue"],"mappings":"iQAMO,IAAMA,CAAAA,CAAoB,sBAE3BC,CAAAA,CAAe,CACnB,WAAA,CAAa,EAAC,CACd,cAAA,CAAgB,KAAA,CAChB,SAAA,CAAW,GACX,KAAA,CAAO,EAAA,CACP,aAAA,CAAe,EACjB,CAAA,CAEMC,CAAAA,CAAaC,aAAAA,CAA8BF,CAAY,CAAA,CAEvDG,CAAAA,CAAqBD,aAAAA,CAAgE,IAAM,CAEjG,CAAC,EAED,SAASE,EAAQC,CAAAA,CAAuBC,CAAAA,CAAgE,CACtG,GAAM,CAAE,IAAA,CAAAC,CAAAA,CAAM,OAAA,CAAAC,CAAQ,CAAA,CAAIF,CAAAA,CAE1B,OAAQC,CAAAA,EACN,KAAK,UAAA,CACH,OAAI,OAAO,YAAA,CAAiB,GAAA,EAAeC,CAAAA,CAAQ,SAAA,EACjD,YAAA,CAAa,OAAA,CAAQ,CAAA,EAAGT,CAAiB,GAAGS,CAAAA,CAAQ,SAAS,CAAA,CAAA,CAAIA,CAAAA,CAAQ,KAAK,CAAA,CAGzE,CACL,GAAGH,EACH,KAAA,CAAOG,CAAAA,CAAQ,KACjB,CAAA,CACF,KAAK,iBAAA,CACH,OAAO,CACL,GAAGH,CAAAA,CACH,aAAA,CAAe,CAAE,GAAGA,CAAAA,CAAM,aAAA,CAAe,GAAGG,CAAQ,CACtD,CAAA,CACF,QACE,MAAM,KAAA,CAAM,CAAA,gBAAA,EAAmBD,CAAc,CAAA,CAAE,CACnD,CACF,CAEO,SAASE,CAAAA,CAAY,CAAE,QAAA,CAAAC,CAAS,CAAA,CAAyC,CAC9E,GAAM,CAACL,CAAAA,CAAOM,CAAQ,CAAA,CAAIC,UAAAA,CAAWR,CAAAA,CAASJ,CAAY,CAAA,CAE1D,OACEa,GAAAA,CAACZ,CAAAA,CAAW,QAAA,CAAX,CAAoB,KAAA,CAAOI,CAAAA,CAC1B,QAAA,CAAAQ,GAAAA,CAACV,EAAmB,QAAA,CAAnB,CAA4B,KAAA,CAAOQ,CAAAA,CAAW,QAAA,CAAAD,CAAAA,CAAS,CAAA,CAC1D,CAEJ,CAEO,SAASI,CAAAA,EAAgC,CAC9C,OAAOC,UAAAA,CAAWd,CAAU,CAC9B,CAEO,SAASe,CAAAA,EAAmE,CACjF,OAAOD,UAAAA,CAAWZ,CAAkB,CACtC,CC3DO,IAAMc,EAAsB,CACjC,IAAA,CAAM,QAAA,CACN,MAAA,CAAQ,SAAA,CACR,IAAA,CAAM,CACJ,MAAA,CAAQ,IACV,CAAA,CACA,UAAA,CAAY,CACV,CACE,IAAA,CAAM,MAAA,CACN,KAAA,CAAO,OAAA,CACP,MAAO,QAAA,CACP,OAAA,CAAS,CACP,IAAA,CAAM,GACR,CAAA,CACA,UAAA,CAAY,IAAA,CACZ,SAAU,QAAA,CACV,SAAA,CAAW,MAAA,CACX,WAAA,CAAa,mBAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,kBAAA,CACN,KAAA,CAAO,UAAA,CACP,KAAA,CAAO,QAAA,CACP,OAAA,CAAS,CACP,KAAM,GACR,CAAA,CACA,UAAA,CAAY,IAAA,CACZ,QAAA,CAAU,QAAA,CACV,SAAA,CAAW,MAAA,CACX,YAAa,MAAA,CACb,SAAA,CAAW,IAAA,CACX,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,OACN,KAAA,CAAO,MAAA,CACP,KAAA,CAAO,QAAA,CACP,OAAA,CAAS,CACP,IAAA,CAAM,GACR,EACA,UAAA,CAAY,IAAA,CACZ,QAAA,CAAU,KAAA,CACV,SAAA,CAAW,MAAA,CACX,WAAA,CAAa,MAAA,CACb,aAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,OAAA,CACN,KAAA,CAAO,OAAA,CACP,KAAA,CAAO,SACP,OAAA,CAAS,CACP,IAAA,CAAM,EACR,CAAA,CACA,UAAA,CAAY,IAAA,CACZ,QAAA,CAAU,MACV,SAAA,CAAW,MAAA,CACX,WAAA,CAAa,MAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,KAAM,QAAA,CACN,KAAA,CAAO,QAAA,CACP,KAAA,CAAO,QAAA,CACP,OAAA,CAAS,CACP,IAAA,CAAM,EACR,CAAA,CACA,UAAA,CAAY,IAAA,CACZ,QAAA,CAAU,KAAA,CACV,SAAA,CAAW,MAAA,CACX,WAAA,CAAa,OACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,UAAA,CACN,KAAA,CAAO,WAAA,CACP,MAAO,QAAA,CACP,OAAA,CAAS,CACP,IAAA,CAAM,GACR,CAAA,CACA,UAAA,CAAY,IAAA,CACZ,SAAU,QAAA,CACV,SAAA,CAAW,MAAA,CACX,WAAA,CAAa,MAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,MAAA,CACN,KAAA,CAAO,MAAA,CACP,KAAA,CAAO,QAAA,CACP,QAAA,CAAU,IAAA,CACV,WAAY,IAAA,CACZ,QAAA,CAAU,QAAA,CACV,SAAA,CAAW,MAAA,CACX,WAAA,CAAa,MAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,YAAA,CACN,KAAA,CAAO,cAAA,CACP,KAAA,CAAO,QAAA,CACP,QAAS,CACP,IAAA,CAAM,GACR,CAAA,CACA,UAAA,CAAY,IAAA,CACZ,QAAA,CAAU,QAAA,CACV,UAAW,MAAA,CACX,WAAA,CAAa,MAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,OACN,KAAA,CAAO,MAAA,CACP,KAAA,CAAO,cAAA,CACP,QAAA,CAAU,QAAA,CACV,SAAA,CAAW,cAAA,CACX,aAAc,EAAA,CACd,WAAA,CAAa,MAAA,CACb,OAAA,CAAS,CACP,IAAA,CAAM,GACR,CAAA,CACA,aAAc,CACZ,IAAA,CAAM,UAAA,CACN,KAAA,CAAO,MAAA,CACP,MAAA,CAAQ,MACV,CACF,CACF,CACF,EChIO,IAAMC,CAAAA,CAAoB,CAC/B,IAAA,CAAM,MAAA,CACN,MAAA,CAAQ,QACR,IAAA,CAAM,CACJ,MAAA,CAAQ,IACV,CAAA,CACA,UAAA,CAAY,CACV,CACE,KAAM,MAAA,CACN,KAAA,CAAO,UAAA,CACP,KAAA,CAAO,QAAA,CACP,OAAA,CAAS,CACP,IAAA,CAAM,GACR,CAAA,CACA,UAAA,CAAY,IAAA,CACZ,QAAA,CAAU,QAAA,CACV,SAAA,CAAW,MAAA,CACX,WAAA,CAAa,OACb,SAAA,CAAW,IAAA,CACX,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,YAAA,CACN,MAAO,cAAA,CACP,KAAA,CAAO,QAAA,CACP,OAAA,CAAS,CACP,IAAA,CAAM,GACR,CAAA,CACA,WAAY,IAAA,CACZ,QAAA,CAAU,QAAA,CACV,SAAA,CAAW,MAAA,CACX,WAAA,CAAa,MAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,QAAA,CACN,KAAA,CAAO,QAAA,CACP,KAAA,CAAO,cAAA,CACP,SAAU,QAAA,CACV,SAAA,CAAW,cAAA,CACX,YAAA,CAAc,EAAA,CACd,YAAA,CAAc,CACZ,IAAA,CAAM,WACN,KAAA,CAAO,kBAAA,CACP,MAAA,CAAQ,QACV,CACF,CACF,CACF,ECzBA,IAAMC,CAAAA,CAAgBjB,aAAAA,CAA6B,CACjD,aAAA,CAAe,CACb,KAAM,EACR,CAAA,CACA,gBAAA,CAAkB,MAAA,CAClB,oBAAA,CAAsB,EAAC,CACvB,2BAA4B,IAAM,EAAC,CACnC,OAAA,CAAS,EAAC,CACV,QAAA,CAAU,EACZ,CAAC,CAAA,CACKkB,CAAAA,CAAwBC,CAAAA,EAC5B,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKA,EAAY,WAAW,CAAA,CACxDC,CAAAA,CAA0BD,CAAAA,EAC9B,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKA,EAAY,aAAa,CAAA,CAEzD,SAASE,EAAAA,CAAe,CAC7B,MAAA,CAAAC,CAAAA,CACA,QAAA,CAAAd,CACF,CAAA,CAGgB,CAKd,GAAM,CAAE,SAAA,CAAWe,CAAiB,CAAA,CAAIC,SAAAA,GAClCC,CAAAA,CAAiBC,OAAAA,CAAQ,IAAM,CACnC,IAAMC,CAAAA,CAA0BC,CAAAA,EAKvB,CAAC,GAJgBA,CAAAA,CAAO,MAAA,CAC5BC,CAAAA,EAAWA,CAAAA,CAAO,IAAA,GAASd,CAAAA,CAAY,IAAA,EAAQc,CAAAA,CAAO,OAASb,CAAAA,CAAU,IAC5E,CAAA,CAE4BD,CAAAA,CAAaC,CAAS,CAAA,CAGpD,OAAOM,CAAAA,CAAO,GAAA,CAAKQ,CAAAA,GAAa,CAC9B,GAAGA,CAAAA,CACH,MAAA,CAAQH,CAAAA,CAAuBG,CAAAA,CAAQ,MAAM,CAC/C,CAAA,CAAE,CACJ,CAAA,CAAG,CAACR,CAAM,CAAC,CAAA,CAELS,EAAwBL,OAAAA,CAAQ,IAAMM,CAAAA,CAAwB,CAAC,SAAS,CAAA,CAAGP,CAAc,CAAA,CAAG,CAACA,CAAc,CAAC,CAAA,CAC5GQ,CAAAA,CAAgCP,OAAAA,CACpC,IACEM,CAAAA,CACE,CAAC,SAAS,CAAA,CACVP,CAAAA,CAAe,MAAA,CAAQS,CAAAA,EAASA,CAAAA,CAAK,SAAA,GAAcX,CAAgB,CACrE,EACF,CAACE,CAAAA,CAAgBF,CAAgB,CACnC,CAAA,CACMY,CAAAA,CAAaJ,CAAAA,CAAsB,MAAA,CACtCG,GAAyC,CAAChB,CAAAA,CAAqBgB,CAAI,CAAA,EAAKd,CAAAA,CAAuBc,CAAI,CACtG,CAAA,CACME,EAAwBH,CAAAA,CAA8B,MAAA,CACzDC,CAAAA,EAAyC,CAAChB,CAAAA,CAAqBgB,CAAI,CAAA,EAAKd,CAAAA,CAAuBc,CAAI,CACtG,CAAA,CAEMG,CAAAA,CAAeX,OAAAA,CACnB,KAAO,CACL,aAAA,CAAe,CACb,KAAMY,CAAAA,CAA4B,MAAA,CAAQ,EAAC,CAAGF,CAAqB,CACrE,CAAA,CACA,gBAAA,CAAAb,EACA,oBAAA,CAAsBE,CAAAA,CAAe,IAAA,CAAMS,CAAAA,EAASA,CAAAA,CAAK,SAAA,GAAcX,CAAgB,CAAA,EAAG,QAAU,EAAC,CACrG,0BAAA,CAA4B,CAC1BgB,CAAAA,CACAC,CAAAA,CAAoB,EAAC,GAErBF,EAA4BC,CAAAA,CAAmBC,CAAAA,CAASJ,CAAqB,CAAA,CAC/E,OAAA,CAASD,CAAAA,CACT,QAAA,CAAUJ,CAAAA,CAAsB,OAAQG,CAAAA,EACtChB,CAAAA,CAAqBgB,CAAI,CAC3B,CACF,CAAA,CAAA,CACA,CAACC,CAAAA,CAAYZ,EAAkBa,CAAAA,CAAuBL,CAAqB,CAC7E,CAAA,CAEA,OACEpB,GAAAA,CAACM,CAAAA,CAAc,QAAA,CAAd,CACC,KAAA,CAAO,CACL,GAAGoB,CAAAA,CACH,aAAA,CAAe,CACb,GAAGA,CAAAA,CAAa,cAChB,IAAA,CAAMA,CAAAA,CAAa,aAAA,CAAc,IACnC,CACF,CAAA,CAEC,QAAA,CAAA7B,CAAAA,CACH,CAEJ,CAEO,SAASiC,CAAAA,EAA2B,CACzC,OAAO5B,UAAAA,CAAWI,CAAa,CACjC,CAEA,SAASe,CAAAA,CACPU,CAAAA,CACApB,CAAAA,CACyC,CACzC,OAAK,KAAA,CAAM,OAAA,CAAQA,CAAM,CAAA,CAIlBA,CAAAA,CAAO,MAAA,CAA2C,CAACqB,CAAAA,CAAKC,CAAAA,GACzDC,IAAAA,CAAKH,CAAAA,CAAUE,CAAI,CAAA,CACd,CAAC,GAAGD,CAAAA,CAAKC,CAAAA,CAAM,GAAGZ,CAAAA,CAAwBU,CAAAA,CAAUG,KAAKH,CAAAA,CAAUE,CAAI,CAAA,EAAK,EAAE,CAAC,CAAA,CAGjF,CAAC,GAAGD,CAAAA,CAAKC,CAAI,CAAA,CACnB,EAAE,CAAA,CATI,CAACtB,CAAM,CAUlB,CAEA,SAASgB,CAAAA,CACPC,CAAAA,CACAC,CAAAA,CAAoB,EAAC,CACrBlB,CAAAA,CACgB,CAChB,IAAMwB,CAAAA,CAAY,CAAC,aAAA,CAAeP,CAAAA,CAAmB,GAAGC,CAAO,CAAA,CAE/D,OAAOR,CAAAA,CAAwBc,CAAAA,CAAU,IAAA,EAAK,CAAGxB,CAAM,CAAA,CAAE,MAAA,CAAQY,CAAAA,EAASa,IAAI,WAAA,CAAab,CAAI,CAAC,CAClG,CAEO,SAASc,EAAAA,CAAQ1B,CAAAA,CAA6C,CAEnE,IAAM2B,CAAAA,CADkBjB,CAAAA,CAAwB,CAAC,SAAS,CAAA,CAAGV,CAAM,CAAA,CACnC,OAC7BY,CAAAA,EAAyC,CAAChB,CAAAA,CAAqBgB,CAAI,CAAA,EAAKd,CAAAA,CAAuBc,CAAI,CACtG,EACA,OAAOI,CAAAA,CAA4B,MAAA,CAAQ,EAAC,CAAGW,CAAO,CACxD,CC5IO,SAASC,EAAAA,CACdC,CAAAA,CACAC,CAAAA,CACwE,CACxE,GAAM,CAAE,KAAA,CAAAC,CAAM,EAAIzC,CAAAA,EAAc,CAC1B,CAAE,QAAA,CAAA0C,CAAAA,CAAU,gBAAA,CAAA/B,CAAiB,CAAA,CAAIkB,GAAU,CAC3C,CAAE,MAAA,CAAAb,CAAAA,CAAQ,MAAA,CAAA2B,GAAO,CAAA,CAAIC,IAAAA,CAAKC,OAAOlC,CAAAA,EAAoB,EAAA,CAAI,WAAW,CAAC,CAAA,CAAE+B,CAAQ,CAAA,CAC/EI,CAAAA,CAAeH,KAAQ,IAAA,CAAMI,CAAAA,EAAMA,CAAAA,CAAE,SAAS,CAAA,EAAG,IAAA,EAAQ,SAAA,CACzDC,CAAAA,CAASR,GAAe,YAAA,CAAa,CAAA,CAAI,IAAA,CAAK,SAAA,CAAUA,CAAa,CAAA,CAAI,IAAA,CACzE,CAAE,KAAAS,CAAAA,CAAM,KAAA,CAAAC,CAAAA,CAAO,SAAA,CAAAC,CAAU,CAAA,CAAIC,CAAAA,CAAOJ,CAAAA,CAAQ,IAChD,KAAA,CAAMK,CAAAA,CAASd,CAAS,CAAA,CAAE,MAAA,CAAQ,CAChC,OAAA,CAAS,CAAE,eAAgB,kBAAmB,CAAA,CAC9C,IAAA,CAAM,IAAA,CAAK,SAAA,CAAUC,CAAa,CAAA,CAClC,MAAA,CAAQ,OACR,IAAA,CAAM,MACR,CAAC,CAAA,CAAE,IAAA,CAAMc,CAAAA,EAAQA,CAAAA,CAAI,IAAA,EAAoD,CAC3E,CAAA,CAGA,OAAO,CAAE,OAAA,CAFOC,CAAAA,CAAWN,CAAAA,EAAM,OAAA,EAAW,EAAC,CAAGV,CAAAA,CAAWvB,CAAAA,CAAQyB,CAAAA,CAAOK,CAAY,CAAA,EAEzD,EAAC,CAAG,MAAAI,CAAAA,CAAO,SAAA,CAAAC,CAAU,CACpD,CAMA,SAASK,CAAAA,CAAwBC,CAAAA,CAAuC,CACtE,OAAOA,CAAAA,CAAiB,IAAA,CAAMC,CAAAA,EAASA,CAAAA,CAAK,SAAS,CAAA,EAAG,IAAA,EAAQD,EAAiB,CAAC,CAAA,EAAG,IACvF,CAEA,SAASF,CAAAA,CACPI,CAAAA,CACApB,CAAAA,CACAvB,EACAyB,CAAAA,CACAK,CAAAA,CACgC,CAChC,OAAOa,CAAAA,EACH,MAAA,CAAQC,CAAAA,EAAYA,CAAAA,EAA0B,MAAM,MAAA,CAAS,CAAC,CAAA,CAC/D,GAAA,CAAKA,CAAAA,EAAW,CACf,IAAMtC,CAAAA,CAAOsC,EACPC,CAAAA,CAAmBvC,CAAAA,CAAK,UAAA,CAAW,OAAA,CAAQ,CAAA,EAAGiB,CAAS,CAAA,CAAA,CAAA,CAAK,EAAE,EAAE,OAAA,CAAQ,OAAA,CAAS,EAAE,CAAA,CACnFuB,CAAAA,CAAelB,IAAAA,CAAaC,MAAAA,CAAOgB,CAAAA,CAAkB,QAAQ,CAAC,CAAA,CAAE7C,CAAM,CAAA,CAE5E,GAAI,CAAC8C,CAAAA,CACH,OAAO,EAAC,CAGV,IAAMC,CAAAA,CAAuBP,CAAAA,CAAwBM,CAAAA,EAAc,UAAA,EAAc,EAAE,EAC7EE,CAAAA,CAAaF,CAAAA,EAAc,IAAA,EAAQD,CAAAA,CAGzC,OAAOvC,CAAAA,CAAK,IAAA,CAAK,GAAA,CAAI,CAAC,CAAE,QAAA,CAAA2C,CAAS,CAAA,GAAM,CACrC,IAAMC,CAAAA,CAAmBD,CAAAA,CAASF,CAAoB,CAAA,CAKhDI,CAAAA,CAAAA,CAHJD,CAAAA,EAAoB,OAAOA,CAAAA,EAAqB,QAAA,CAC3CA,CAAAA,CAAiBzB,CAAK,GAAKyB,CAAAA,CAAiBpB,CAAY,CAAA,CACzD,IAAA,GACkDmB,CAAAA,CAASF,CAAoB,CAAA,CAC/EK,CAAAA,CAAa,OAAO,OAAA,CAAQH,CAAQ,CAAA,CAAE,MAAA,CAC1C,CAAClC,CAAAA,CAA0E,CAACsC,CAAAA,CAAKC,CAAK,CAAA,GAAM,CAC1F,GAAID,CAAAA,GAAQN,CAAAA,EAAwBM,CAAAA,GAAQ,IAAA,EAAQA,CAAAA,GAAQ,aAAc,CACxE,IAAME,CAAAA,CAAc,OAAOD,CAAAA,EAAU,QAAA,CAAYA,CAAAA,CAAM7B,CAAK,GAAK6B,CAAAA,CAAMxB,CAAY,CAAA,CAAKwB,CAAAA,CAExFvC,CAAAA,CAAIsC,CAAG,CAAA,CAAIE,EACb,CAEA,OAAOxC,CACT,CAAA,CACA,EACF,CAAA,CAEA,OAAO,CACL,IAAKkC,CAAAA,CAAS,EAAA,CACd,WAAA,CAAaD,CAAAA,CACb,iBAAA,CAAmBH,CAAAA,CACnB,CAACE,CAAoB,EAAGI,CAAAA,CACxB,GAAGC,CACL,CACF,CAAC,CACH,CAAC,CAAA,CACA,MACL","file":"chunk-MOR653JA.js","sourcesContent":["'use client';\n\nimport { createContext, useContext, useReducer } from 'react';\nimport type { Dispatch, ReactNode } from 'react';\nimport type { ActionSetRelationship, ActionSetScope, AppContextType } from './types';\n\nexport const SCOPE_STORAGE_KEY = 'core.context.scope:';\n\nconst initialState = {\n breadcrumbs: [],\n isRouteLoading: false,\n pageTitle: '',\n scope: '',\n relationships: {},\n};\n\nconst AppContext = createContext<AppContextType>(initialState);\n\nconst AppDispatchContext = createContext<Dispatch<ActionSetRelationship | ActionSetScope>>(() => {\n /* void */\n});\n\nfunction reducer(state: AppContextType, action: ActionSetRelationship | ActionSetScope): AppContextType {\n const { type, payload } = action;\n\n switch (type) {\n case 'setScope':\n if (typeof localStorage !== 'undefined' && payload.projectId) {\n localStorage.setItem(`${SCOPE_STORAGE_KEY}${payload.projectId}`, payload.scope);\n }\n\n return {\n ...state,\n scope: payload.scope,\n };\n case 'setRelationship':\n return {\n ...state,\n relationships: { ...state.relationships, ...payload },\n };\n default:\n throw Error(`Unknown action: ${type as string}`);\n }\n}\n\nexport function AppProvider({ children }: { children: ReactNode }): JSX.Element {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return (\n <AppContext.Provider value={state}>\n <AppDispatchContext.Provider value={dispatch}>{children}</AppDispatchContext.Provider>\n </AppContext.Provider>\n );\n}\n\nexport function useAppContext(): AppContextType {\n return useContext(AppContext);\n}\n\nexport function useAppDispatch(): Dispatch<ActionSetRelationship | ActionSetScope> {\n return useContext(AppDispatchContext);\n}\n","import type { Entity } from '../core/types';\n\nexport const assetSchema: Entity = {\n name: '_asset',\n plural: '_assets',\n menu: {\n hidden: true,\n },\n attributes: [\n {\n name: 'path',\n label: 'Asset',\n scope: 'global',\n options: {\n size: 140,\n },\n isEditable: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'assetPreviewField',\n defaultValue: '',\n },\n {\n name: 'originalFilename',\n label: 'Filename',\n scope: 'global',\n options: {\n size: 280,\n },\n isEditable: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n isPrimary: true,\n defaultValue: '',\n },\n {\n name: 'size',\n label: 'Size',\n scope: 'global',\n options: {\n size: 120,\n },\n isEditable: true,\n dataType: 'int',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'width',\n label: 'Width',\n scope: 'global',\n options: {\n size: 80,\n },\n isEditable: true,\n dataType: 'int',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'height',\n label: 'Height',\n scope: 'global',\n options: {\n size: 80,\n },\n isEditable: true,\n dataType: 'int',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'mimeType',\n label: 'Mime Type',\n scope: 'global',\n options: {\n size: 160,\n },\n isEditable: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'lqip',\n label: 'lqip',\n scope: 'global',\n isHidden: true,\n isEditable: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: '_updatedAt',\n label: 'Last Updated',\n scope: 'global',\n options: {\n size: 140,\n },\n isEditable: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'tags',\n label: 'Tags',\n scope: 'relationship',\n dataType: 'string',\n inputType: 'relationship',\n defaultValue: '',\n previewType: 'tags',\n options: {\n size: 300,\n },\n relationship: {\n mode: 'multiple',\n field: 'name',\n entity: '_tag',\n },\n },\n ],\n};\n","import type { Entity } from '../core/types';\n\nexport const tagSchema: Entity = {\n name: '_tag',\n plural: '_tags',\n menu: {\n hidden: true,\n },\n attributes: [\n {\n name: 'name',\n label: 'Tag Name',\n scope: 'global',\n options: {\n size: 220,\n },\n isEditable: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n isPrimary: true,\n defaultValue: '',\n },\n {\n name: '_updatedAt',\n label: 'Last Updated',\n scope: 'global',\n options: {\n size: 140,\n },\n isEditable: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'assets',\n label: 'Assets',\n scope: 'relationship',\n dataType: 'string',\n inputType: 'relationship',\n defaultValue: '',\n relationship: {\n mode: 'multiple',\n field: 'originalFilename',\n entity: '_asset',\n },\n },\n ],\n};\n","'use client';\n\nimport { createContext, useContext, useMemo } from 'react';\nimport { has, path } from 'ramda';\nimport { useParams } from 'react-router-dom';\nimport { assetSchema } from '../../entities/assets-schema';\nimport { tagSchema } from '../../entities/tags-schema';\nimport type { AppOptions, PluginOptions, ProjectOptions } from './types';\nimport type { Entity } from '../types';\n\ntype Contributes = NonNullable<PluginOptions['contributes']>;\nexport interface ConfigContext {\n contributions: {\n apps: AppOptions[] | [];\n };\n currentProjectId?: string;\n currentProjectSchema: Entity[];\n getContributionPointConfig: <T extends keyof Contributes>(\n contributionPoint: T,\n subPath?: string[]\n ) => Contributes[T][] | [];\n plugins: PluginOptions[];\n projects: ProjectOptions[];\n}\n\nconst ConfigContext = createContext<ConfigContext>({\n contributions: {\n apps: [],\n },\n currentProjectId: undefined,\n currentProjectSchema: [],\n getContributionPointConfig: () => [],\n plugins: [] as PluginOptions[],\n projects: [] as ProjectOptions[],\n});\nconst hasProjectIdProperty = (configItem: ProjectOptions | PluginOptions): boolean =>\n Object.prototype.hasOwnProperty.call(configItem, 'projectId');\nconst hasContributesProperty = (configItem: ProjectOptions | PluginOptions): boolean =>\n Object.prototype.hasOwnProperty.call(configItem, 'contributes');\n\nexport function ConfigProvider({\n config,\n children,\n}: {\n config: ProjectOptions[];\n children: React.ReactNode;\n}): JSX.Element {\n /**\n * Getting the projectId from the URL via react-router-dom's useParams hook triggers a rerender of this Context\n * every time the URL changes.\n */\n const { projectId: currentProjectId } = useParams<{ projectId: string }>();\n const enhancedConfig = useMemo(() => {\n const upsertReservedEntities = (schema: Entity[]): Entity[] => {\n const withoutReserved = schema.filter(\n (entity) => entity.name !== assetSchema.name && entity.name !== tagSchema.name\n );\n\n return [...withoutReserved, assetSchema, tagSchema];\n };\n\n return config.map((project) => ({\n ...project,\n schema: upsertReservedEntities(project.schema),\n }));\n }, [config]);\n\n const globalFlattenedConfig = useMemo(() => flattenConfigByProperty(['plugins'], enhancedConfig), [enhancedConfig]);\n const currentProjectFlattenedConfig = useMemo(\n () =>\n flattenConfigByProperty(\n ['plugins'],\n enhancedConfig.filter((item) => item.projectId === currentProjectId)\n ),\n [enhancedConfig, currentProjectId]\n );\n const allPlugins = globalFlattenedConfig.filter(\n (item: ProjectOptions | PluginOptions) => !hasProjectIdProperty(item) && hasContributesProperty(item)\n ) as PluginOptions[];\n const currentProjectPlugins = currentProjectFlattenedConfig.filter(\n (item: ProjectOptions | PluginOptions) => !hasProjectIdProperty(item) && hasContributesProperty(item)\n ) as PluginOptions[];\n\n const globalConfig = useMemo(\n () => ({\n contributions: {\n apps: _getContributionPointConfig('apps', [], currentProjectPlugins),\n },\n currentProjectId,\n currentProjectSchema: enhancedConfig.find((item) => item.projectId === currentProjectId)?.schema ?? [],\n getContributionPointConfig: <T extends keyof Contributes>(\n contributionPoint: T,\n subPath: string[] = []\n ): Contributes[T][] =>\n _getContributionPointConfig(contributionPoint, subPath, currentProjectPlugins) as Contributes[T][],\n plugins: allPlugins,\n projects: globalFlattenedConfig.filter((item: ProjectOptions | PluginOptions) =>\n hasProjectIdProperty(item)\n ) as ProjectOptions[],\n }),\n [allPlugins, currentProjectId, currentProjectPlugins, globalFlattenedConfig]\n );\n\n return (\n <ConfigContext.Provider\n value={{\n ...globalConfig,\n contributions: {\n ...globalConfig.contributions,\n apps: globalConfig.contributions.apps as AppOptions[] | [],\n },\n }}\n >\n {children}\n </ConfigContext.Provider>\n );\n}\n\nexport function useConfig(): ConfigContext {\n return useContext(ConfigContext);\n}\n\nfunction flattenConfigByProperty(\n property: string[],\n config: (ProjectOptions | PluginOptions)[]\n): (ProjectOptions | PluginOptions)[] | [] {\n if (!Array.isArray(config)) {\n return [config];\n }\n\n return config.reduce<(ProjectOptions | PluginOptions)[]>((acc, curr) => {\n if (path(property, curr)) {\n return [...acc, curr, ...flattenConfigByProperty(property, path(property, curr) ?? [])];\n }\n\n return [...acc, curr];\n }, []);\n}\n\nfunction _getContributionPointConfig<T extends keyof Contributes>(\n contributionPoint: T,\n subPath: string[] = [],\n config: PluginOptions[]\n): Contributes[T] {\n const pathArray = ['contributes', contributionPoint, ...subPath];\n\n return flattenConfigByProperty(pathArray.flat(), config).filter((item) => has('component', item)) as Contributes[T];\n}\n\nexport function getApps(config: ProjectOptions[]): AppOptions[] | [] {\n const flattenedConfig = flattenConfigByProperty(['plugins'], config);\n const plugins = flattenedConfig.filter(\n (item: ProjectOptions | PluginOptions) => !hasProjectIdProperty(item) && hasContributesProperty(item)\n ) as PluginOptions[];\n return _getContributionPointConfig('apps', [], plugins) as AppOptions[] | [];\n}\n","import useSWR from 'swr';\nimport { find, propEq } from 'ramda';\nimport { apiPaths } from './api-paths';\nimport { useAppContext } from './app-context';\nimport { useConfig } from './config/config-context';\nimport type { SingleProject } from './config/types';\nimport type {\n Attribute,\n Entity,\n RawResultItem,\n RawSearchResultItems,\n SearchRequestProps,\n SearchResultItem,\n} from './types';\n\nexport function useSearch(\n projectId: string,\n searchRequest: SearchRequestProps | null\n): { results: SearchResultItem[] | []; error: Error; isLoading: boolean } {\n const { scope } = useAppContext();\n const { projects, currentProjectId } = useConfig();\n const { schema, scopes } = find(propEq(currentProjectId ?? '', 'projectId'))(projects) as SingleProject;\n const defaultScope = scopes?.find((s) => s.isDefault)?.name ?? 'default';\n const swrKey = searchRequest?.commonParams.q ? JSON.stringify(searchRequest) : null;\n const { data, error, isLoading } = useSWR(swrKey, () =>\n fetch(apiPaths(projectId).search, {\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(searchRequest),\n method: 'POST',\n mode: 'cors',\n }).then((res) => res.json() as Promise<{ results: RawSearchResultItems }>)\n );\n const results = mapResults(data?.results ?? [], projectId, schema, scope, defaultScope);\n\n return { results: results ?? [], error, isLoading };\n}\n\n/**\n * Find the name of the attribute of an entity with isPrimary === true.\n * The value of that attribute is returned as the value for the relationship attribute\n */\nfunction getPrimaryAttributeName(schemaAttributes: Attribute[]): string {\n return schemaAttributes.find((attr) => attr.isPrimary)?.name ?? schemaAttributes[0]?.name;\n}\n\nfunction mapResults(\n results: RawSearchResultItems | undefined,\n projectId: string,\n schema: Entity[],\n scope: string,\n defaultScope: string\n): SearchResultItem[] | undefined {\n return results\n ?.filter((result) => (result as RawResultItem)?.hits?.length > 0)\n .map((result) => {\n const item = result as RawResultItem;\n const entityNamePlural = item.collection.replace(`${projectId}_`, '').replace(/_\\d+$/, '');\n const entitySchema = find<Entity>(propEq(entityNamePlural, 'plural'))(schema);\n\n if (!entitySchema) {\n return [];\n }\n\n const primaryAttributeName = getPrimaryAttributeName(entitySchema?.attributes ?? []);\n const entityName = entitySchema?.name ?? entityNamePlural;\n\n // iterate over the hits and return an object with the primary attribute value first and then the rest of the attributes.\n return item.hits.map(({ document }) => {\n const primaryAttribute = document[primaryAttributeName];\n const scopedPrimaryAttribute =\n primaryAttribute && typeof primaryAttribute !== 'string'\n ? (primaryAttribute[scope] ?? primaryAttribute[defaultScope])\n : null;\n const primaryAttributeValue = scopedPrimaryAttribute ?? document[primaryAttributeName];\n const attributes = Object.entries(document).reduce(\n (acc: Omit<SearchResultItem, '_id' | '_entityName' | '_entityNamePlural'>, [key, value]) => {\n if (key !== primaryAttributeName && key !== 'id' && key !== '_updatedAt') {\n const scopedValue = typeof value !== 'string' ? (value[scope] ?? value[defaultScope]) : value;\n\n acc[key] = scopedValue;\n }\n\n return acc;\n },\n {}\n );\n\n return {\n _id: document.id,\n _entityName: entityName,\n _entityNamePlural: entityNamePlural,\n [primaryAttributeName]: primaryAttributeValue as string,\n ...attributes,\n };\n });\n })\n .flat();\n}\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';import {c as c$1}from'./chunk-7YBJLUUE.js';import {createContext,useContext}from'react';import c from'swr';import {useParams}from'react-router-dom';import {jsx}from'react/jsx-runtime';function i(){let{projectId:e}=useParams(),{data:t,isLoading:o}=c(c$1(e??"").currentUser,u=>fetch(u,{mode:"cors",credentials:"include"}).then(n=>n.json()));return [o,{user:t,logout:async()=>{await fetch(c$1(e??"").logout("/studio"),{method:"POST",mode:"cors",credentials:"include"}),await fetch("/api/flexkit/logout",{method:"GET",credentials:"include"}),window.location.reload();}}]}var s=createContext([true,{user:null,logout:()=>Promise.resolve()}]);function P({children:e}){let[t,o]=i();return jsx(s.Provider,{value:[t,o],children:e})}function x(){return useContext(s)}export{P as a,x as b};//# sourceMappingURL=chunk-NJN7EGGK.js.map
2
- //# sourceMappingURL=chunk-NJN7EGGK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/auth/use-auth-service.ts","../src/auth/auth-context.tsx"],"names":["useAuthService","projectId","useParams","user","isLoadingUser","useSWR","apiPaths","url","res","AuthContext","createContext","AuthProvider","children","isLoading","auth","jsx","useAuth","useContext"],"mappings":"4MAOe,SAARA,CAAAA,EAA+C,CACpD,GAAM,CAAE,SAAA,CAAAC,CAAU,CAAA,CAAIC,SAAAA,EAAU,CAC1B,CAAE,KAAMC,CAAAA,CAAM,SAAA,CAAWC,CAAc,CAAA,CAAIC,EAAOC,GAAAA,CAASL,CAAAA,EAAa,EAAE,CAAA,CAAE,YAAcM,CAAAA,EAC9F,KAAA,CAAMA,CAAAA,CAAK,CAAE,IAAA,CAAM,MAAA,CAAQ,WAAA,CAAa,SAAU,CAAC,CAAA,CAAE,IAAA,CAAMC,CAAAA,EAAQA,CAAAA,CAAI,MAAuB,CAChG,CAAA,CAGA,OAAO,CAFWJ,CAAAA,CAIhB,CACE,IAAA,CAAAD,CAAAA,CACA,MAAA,CAAQ,SAAY,CAElB,MAAM,MAAMG,GAAAA,CAASL,CAAAA,EAAa,EAAE,CAAA,CAAE,OAAO,SAAS,CAAA,CAAG,CACvD,MAAA,CAAQ,OACR,IAAA,CAAM,MAAA,CACN,WAAA,CAAa,SACf,CAAC,CAAA,CAGD,MAAM,KAAA,CAAM,sBAAuB,CAAE,MAAA,CAAQ,KAAA,CAAO,WAAA,CAAa,SAAU,CAAC,CAAA,CAE5E,MAAA,CAAO,QAAA,CAAS,SAClB,CACF,CACF,CACF,CC3BA,IAAMQ,CAAAA,CAAcC,aAAAA,CAAc,CAChC,IAAA,CACA,CACE,IAAA,CAAM,IAAA,CACN,MAAA,CAAQ,IAAM,QAAQ,OAAA,EACxB,CACF,CAAC,CAAA,CAEM,SAASC,CAAAA,CAAa,CAAE,SAAAC,CAAS,CAAA,CAA+C,CACrF,GAAM,CAACC,CAAAA,CAAWC,CAAI,CAAA,CAAId,CAAAA,GAE1B,OAAOe,GAAAA,CAACN,CAAAA,CAAY,QAAA,CAAZ,CAAqB,KAAA,CAAO,CAACI,CAAAA,CAAWC,CAAI,EAAI,QAAA,CAAAF,CAAAA,CAAS,CACnE,CAEO,SAASI,CAAAA,EAAuB,CACrC,OAAOC,UAAAA,CAAWR,CAAW,CAC/B","file":"chunk-NJN7EGGK.js","sourcesContent":["'use client';\n\nimport useSWR from 'swr';\nimport { useParams } from 'react-router-dom';\nimport { apiPaths } from '../core/api-paths';\nimport type { AuthService, User } from './types';\n\nexport default function useAuthService(): AuthService {\n const { projectId } = useParams();\n const { data: user, isLoading: isLoadingUser } = useSWR(apiPaths(projectId ?? '').currentUser, (url: string) =>\n fetch(url, { mode: 'cors', credentials: 'include' }).then((res) => res.json() as Promise<User>)\n );\n const isLoading = isLoadingUser;\n\n return [\n isLoading,\n {\n user,\n logout: async () => {\n // wipe remote session\n await fetch(apiPaths(projectId ?? '').logout('/studio'), {\n method: 'POST',\n mode: 'cors',\n credentials: 'include',\n });\n\n // delete first-party auth cookie\n await fetch('/api/flexkit/logout', { method: 'GET', credentials: 'include' });\n\n window.location.reload();\n },\n },\n ];\n}\n","'use client';\n\nimport { createContext, useContext } from 'react';\nimport useAuthService from './use-auth-service';\nimport type { Auth, AuthService, User } from './types';\n\nconst AuthContext = createContext([\n true,\n {\n user: null as User | null,\n logout: () => Promise.resolve(),\n } as Auth,\n]);\n\nexport function AuthProvider({ children }: { children: React.ReactNode }): JSX.Element {\n const [isLoading, auth] = useAuthService();\n\n return <AuthContext.Provider value={[isLoading, auth]}>{children}</AuthContext.Provider>;\n}\n\nexport function useAuth(): AuthService {\n return useContext(AuthContext) as AuthService;\n}\n"]}
@@ -1,2 +0,0 @@
1
- import'./index.css';export{a as DateTime}from'./chunk-5ES3TTSY.js';//# sourceMappingURL=datetime-XX4YBITU.js.map
2
- //# sourceMappingURL=datetime-XX4YBITU.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';export{b as Editor}from'./chunk-HC5NUUAJ.js';//# sourceMappingURL=editor-ZLTDOUPT.js.map
2
- //# sourceMappingURL=editor-ZLTDOUPT.js.map
@@ -1,3 +0,0 @@
1
- import'./index.css';import {jsx,jsxs}from'react/jsx-runtime';function L({title:t,theme:i}){return jsx("a",{className:"fk-flex fk-items-center",href:"/",title:t,children:i==="light"?jsxs("svg",{className:"fk-h-8 fk-w-8",fill:"none",viewBox:"0 0 48 48",xmlns:"http://www.w3.org/2000/svg",children:[jsx("path",{d:"M7 8H41V40H7V8Z",fill:"white"}),jsx("path",{d:"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z",fill:"#020817"})]}):jsxs("svg",{className:"fk-h-8 fk-w-8",fill:"none",viewBox:"0 0 48 48",xmlns:"http://www.w3.org/2000/svg",children:[jsx("path",{d:"M7 8H41V40H7V8Z",fill:"#020817"}),jsx("path",{d:"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z",fill:"white"})]})})}
2
- export{L as Logo};//# sourceMappingURL=logo-LB22KTDD.js.map
3
- //# sourceMappingURL=logo-LB22KTDD.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {a,d,c,g,i}from'./chunk-2RBOTHKE.js';import'./chunk-AXB7FQV2.js';import {useState}from'react';import {useNavigate}from'react-router-dom';import {jsxs,jsx}from'react/jsx-runtime';function k({projectId:S,projects:t}){let[r,d$1]=useState(t.find(e=>e.projectId===S)??t[0]),m=useNavigate();return jsxs(a,{defaultValue:r.projectId,onValueChange:e=>{let c=t.find(f=>f.projectId===e)??t[0],{basePath:s}=c;d$1(c),m(`${s}/${c.projectId}`);},children:[jsx(d,{className:"fk-w-[12rem] fk-h-9 fk-py-1",id:"project",children:jsx(c,{"aria-label":r.title,children:r.title})}),jsx(g,{children:t.map(e=>jsx(i,{value:e.projectId,children:e.title},e.projectId))})]})}export{k as ProjectSelector};//# sourceMappingURL=project-selector-4G4WL2XQ.js.map
2
- //# sourceMappingURL=project-selector-4G4WL2XQ.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {j}from'./chunk-MOR653JA.js';import {m,v,q,p,r,t,b}from'./chunk-ZOBZU47M.js';import'./chunk-7YBJLUUE.js';import {a}from'./chunk-AXB7FQV2.js';import {useState,useMemo,useRef}from'react';import {LoaderCircle,Search,X}from'lucide-react';import {Command}from'cmdk';import {useNavigate}from'react-router-dom';import {jsxs,jsx}from'react/jsx-runtime';var z=f=>({searchRequests:{searches:f.filter(a=>a.attributes.some(i=>i.isSearchable)).map(a=>a.plural).map(a=>({collection:a}))},commonParams:{q:""}});function Y({onSelect:f,searchPlaceholder:k="Search...",noResultsMsg:a$1="Nothing found",className:i,onSearchChange:u,projectId:P,schema:d}){let[I,o]=useState(false),[p$1,h]=useState(""),l=useMemo(()=>z(d),[d]),[R,g]=useState(l),r$1=useRef(null),{results:y,isLoading:E}=j(P,R),L=useNavigate();function B(e){h(e),e.length>0&&(o(true),g({...l,commonParams:{q:e}})),e.length===0&&o(false),u&&u(e);}function _(){h(""),o(false),g(l),r$1.current&&(r$1.current.value="");let e=new URL(window.location.href);e.searchParams.has("id")&&(e.searchParams.delete("id"),L(e.pathname+e.search));}return jsxs(m,{className:"fk-relative fk-overflow-visible fk-h-auto",onBlur:()=>{setTimeout(()=>{o(false);},300);},onKeyDown:e=>{e.key==="Escape"&&(e.preventDefault(),o(false));},shouldFilter:false,children:[jsxs("div",{className:a("fk-flex fk-items-center fk-border fk-border-border fk-rounded-md fk-px-3 fk-h-9 md:fk-w-[100px] lg:fk-w-[300px] fk-ring-offset-background","focus-within:fk-outline-none focus-within:fk-ring-2 focus-within:fk-ring-ring focus-within:fk-ring-offset-2"),children:[E?jsx(LoaderCircle,{className:"fk-mr-2 fk-h-4 fk-w-4 fk-shrink-0 fk-opacity-50 fk-animate-spin"}):jsx(Search,{className:"fk-mr-2 fk-h-4 fk-w-4 fk-shrink-0 fk-opacity-50"}),jsx(Command.Input,{className:a("fk-flex fk-h-9 fk-w-full fk-rounded-md fk-bg-transparent fk-py-1 fk-text-sm fk-outline-none placeholder:fk-text-muted-foreground disabled:fk-cursor-not-allowed disabled:fk-opacity-50",i),placeholder:k,onMouseDown:()=>{(r$1.current?.value.length??0)>0&&o(true);},onValueChange:B,ref:r$1,value:p$1}),p$1&&jsx("button",{className:"fk-flex fk-items-center fk-justify-center fk-ml-2 fk-text-muted-foreground hover:fk-text-foreground",onClick:_,type:"button",children:jsx(X,{className:"fk-h-4 fk-w-4"})})]}),jsx("div",{className:"fk-relative fk-max-w-[600px]",children:jsx("div",{className:a("fk-mt-1 fk-animate-in fk-fade-in-0 fk-zoom-in-95 fk-absolute fk-top-0 fk-z-10 fk-w-full fk-rounded-md fk-bg-popover fk-outline-none fk-drop-shadow-md fk-border fk-border-border",I?"fk-block":"fk-hidden"),children:jsxs(v,{className:"fk-max-h-[220px] fk-overflow-auto",children:[jsx(q,{children:a$1}),jsx(p,{children:jsxs(r,{children:[y.length>0&&jsx(t,{className:"fk-hidden",value:"-"}),y.map(e=>jsxs(t,{className:"fk-flex",value:e._id,onSelect:M=>{f({entityName:e._entityName,entityNamePlural:e._entityNamePlural,entityId:M});},children:[jsx("span",{className:"fk-basis-full",children:e[Object.keys(e)[3]]}),jsx(b,{className:"fk-py-px fk-text-[0.6875rem] fk-leading-3 fk-bg-teal-400",children:e._entityName})]},e._id))]})})]})})})]})}export{Y as Search};//# sourceMappingURL=search-CKPEOD77.js.map
2
- //# sourceMappingURL=search-CKPEOD77.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';export{a as Switch}from'./chunk-OOYWOWHR.js';import'./chunk-AYKEFG4H.js';import'./chunk-OTQ3BR2A.js';import'./chunk-AXB7FQV2.js';//# sourceMappingURL=switch-FU7XZ34K.js.map
2
- //# sourceMappingURL=switch-FU7XZ34K.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';export{a as Text}from'./chunk-2WWU4XFO.js';import'./chunk-OX6FVDUT.js';import'./chunk-AYKEFG4H.js';import'./chunk-OTQ3BR2A.js';import'./chunk-AXB7FQV2.js';//# sourceMappingURL=text-DFG6LLN6.js.map
2
- //# sourceMappingURL=text-DFG6LLN6.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';export{a as Text}from'./chunk-4PHVU7DD.js';//# sourceMappingURL=text-LNFBPXBT.js.map
2
- //# sourceMappingURL=text-LNFBPXBT.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';export{a as Textarea}from'./chunk-HIMN6EYJ.js';import'./chunk-AYKEFG4H.js';import'./chunk-OTQ3BR2A.js';import'./chunk-AXB7FQV2.js';//# sourceMappingURL=textarea-XFHA5IEI.js.map
2
- //# sourceMappingURL=textarea-XFHA5IEI.js.map
@@ -1,2 +0,0 @@
1
- import'./index.css';import {b}from'./chunk-NJN7EGGK.js';import {a,b as b$2,c as c$1}from'./chunk-K5CEPNVI.js';import {r,c,d,b as b$1,k,o,p,m,l,q}from'./chunk-64KAF6GA.js';import'./chunk-7YBJLUUE.js';import'./chunk-AXB7FQV2.js';import {useTheme}from'next-themes';import {Monitor,Moon,Sun}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';function _({projectId:g}){let{theme:r$1,setTheme:t}=useTheme(),[D,n]=b();return D?jsx(r,{className:"fk-h-8 fk-w-8 fk-rounded-full"}):jsxs(c,{children:[jsx(d,{asChild:true,children:jsx(b$1,{className:"fk-relative fk-h-8 fk-w-8 fk-rounded-full",variant:"ghost",children:jsxs(a,{className:"fk-h-8 fk-w-8",children:[jsx(b$2,{alt:"@shadcn",src:n.user?.avatar_url}),jsx(c$1,{children:n.user?.display_name.charAt(0).toUpperCase()??""})]})})}),jsxs(k,{align:"end",className:"fk-w-56",forceMount:true,children:[jsx(o,{className:"font-normal",children:jsxs("div",{className:"fk-flex fk-flex-col fk-space-y-1",children:[jsx("p",{className:"fk-text-sm fk-font-medium fk-leading-none",children:n.user?.display_name}),jsx("p",{className:"fk-text-xs fk-leading-none fk-text-muted-foreground",children:n.user?.email})]})}),jsx(p,{}),jsx(o,{children:"Theme"}),jsxs(m,{checked:r$1==="system",onCheckedChange:()=>{t("system");},children:[jsx(Monitor,{className:"fk-mr-2 fk-h-4 fk-w-4"}),jsx("span",{children:"System"})]}),jsxs(m,{checked:r$1==="dark",onCheckedChange:()=>{t("dark");},children:[jsx(Moon,{className:"fk-mr-2 fk-h-4 fk-w-4"}),jsx("span",{children:"Dark"})]}),jsxs(m,{checked:r$1==="light",onCheckedChange:()=>{t("light");},children:[jsx(Sun,{className:"fk-mr-2 fk-h-4 fk-w-4"}),jsx("span",{children:"Light"})]}),jsx(p,{}),jsxs(l,{onClick:()=>{n.logout(g).then(()=>{}).catch(()=>{});},children:["Log out",jsx(q,{children:"\u21E7\u2318Q"})]})]})]})}export{_ as UserNav};//# sourceMappingURL=user-nav-5LW5USDZ.js.map
2
- //# sourceMappingURL=user-nav-5LW5USDZ.js.map