@banhosdev/moldsoft-ui 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +50 -33
- package/dist/index.d.ts +50 -33
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +64 -36
- package/package.json +1 -1
- package/dist/bg-blue-H7S5ODI7.png +0 -0
- package/dist/logo-REBN3NUO.png +0 -0
- package/dist/white-icon-Z722HHZN.png +0 -0
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/button.tsx","../src/lib/utils.ts","../src/components/ui/card.tsx","../src/components/ui/logo.tsx","../src/components/app/sidebar.tsx","../src/components/ui/separator.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className\n )}\n {...props}\n />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import * as React from \"react\"\nimport logo from \"../../assets/logo.png\"\n\nexport interface LogoProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n size?: number\n}\n\nexport function Logo({ size = 40, className, ...props }: LogoProps) {\n return (\n <img\n src={logo}\n alt=\"Moldsoft Logo\"\n width={size}\n height={size}\n className={className}\n {...props}\n />\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport logoImg from \"../../assets/icons/white-icon.png\"\nimport sidebarBg from \"../../assets/textures/bg-blue.png\"\nimport { Separator } from \"../ui/separator\"\nimport { cn } from \"../../lib/utils\"\n\nexport interface SidebarItem {\n label: string\n href: string\n icon?: React.ReactNode\n active?: boolean\n items?: SidebarItem[]\n}\n\nexport interface SidebarProps {\n children?: React.ReactNode\n logo?: React.ReactNode\n collapsedLogo?: React.ReactNode\n className?: string\n items: SidebarItem[]\n footerItems?: SidebarItem[]\n showBackground?: boolean\n activePath?: string\n}\n\nexport function Sidebar({\n children,\n logo,\n collapsedLogo,\n items = [],\n footerItems = [],\n showBackground = true,\n className,\n activePath,\n}: SidebarProps) {\n const [isExpanded, setIsExpanded] = React.useState(false)\n\n const checkActive = (item: SidebarItem): boolean => {\n if (item.active) return true\n if (!activePath) return false\n\n // Exact match for root or specific paths\n if (activePath === item.href) return true\n\n // Prefix match for sub-paths (avoiding matching '/' to everything)\n if (item.href !== \"/\" && activePath.startsWith(item.href)) return true\n\n // Recursive check for sub-items\n if (item.items) {\n return item.items.some(checkActive)\n }\n\n return false\n }\n\n const bgUrl = typeof sidebarBg === \"object\" ? (sidebarBg as any).src : sidebarBg\n const logoUrl = typeof logoImg === \"object\" ? (logoImg as any).src : logoImg\n\n return (\n <aside\n onMouseEnter={() => setIsExpanded(true)}\n onMouseLeave={() => setIsExpanded(false)}\n className={cn(\n \"h-full p-2 transition-all duration-500 ease-in-out\",\n isExpanded ? \"w-72\" : \"w-24\",\n className\n )}\n >\n <main\n className={cn(\n \"h-full relative overflow-hidden flex flex-col shadow-xl transition-all duration-500\",\n !showBackground && \"bg-primary\",\n isExpanded ? \"rounded-3xl\" : \"rounded-3xl\"\n )}\n >\n {showBackground && (\n <div\n className=\"absolute inset-0 z-0 transition-transform duration-500\"\n style={{\n backgroundImage: `url(${bgUrl})`,\n backgroundSize: \"300%\", // Increased scale\n backgroundPosition: \"center\",\n width: \"18rem\", // Expanded width (w-72 = 18rem) to keep it \"fixed\"\n }}\n />\n )}\n <div className=\"absolute inset-0 z-0 bg-primary/20\" />\n\n <div className=\"flex flex-col h-full relative z-10 p-2\">\n <div className={cn(\n \"flex flex-col items-center justify-center transition-all duration-500\",\n isExpanded ? \"h-24 py-4\" : \"h-24 py-4\"\n )}>\n {isExpanded ? (\n logo ? (\n <div className=\"flex items-center gap-2\">\n {logo}\n </div>\n ) : (\n <img\n src={logoUrl}\n alt=\"Logo\"\n className=\"h-10 opacity-100 scale-100 transition-all duration-500 object-contain\"\n />\n )\n ) : (\n collapsedLogo ? (\n <div className=\"flex items-center gap-2 w-8\">\n {collapsedLogo}\n </div>\n ) : (\n <img\n src={logoUrl}\n alt=\"Logo\"\n className=\"h-7 opacity-90 transition-all duration-500 object-contain\"\n />\n )\n )}\n {isExpanded && !logo && (\n <span className=\"text-white/60 text-[10px] mt-1 font-medium tracking-wider uppercase\">\n Moldsoft\n </span>\n )}\n </div>\n\n <div className=\"px-4 mb-4\">\n <Separator className=\"bg-white/20\" />\n </div>\n\n {/* Nav Items */}\n <nav className=\"flex-1 px-1 space-y-1 overflow-y-auto no-scrollbar scroll-smooth\">\n {items.map((item) => (\n <SidebarNavLink\n key={item.href}\n item={item}\n isSidebarExpanded={isExpanded}\n isActive={checkActive(item)}\n checkActive={checkActive}\n />\n ))}\n </nav>\n\n {/* Footer Section */}\n <div className=\"mt-auto px-1 pb-2 space-y-1\">\n {footerItems.map((item) => (\n <SidebarNavLink\n key={item.href}\n item={item}\n isSidebarExpanded={isExpanded}\n isActive={checkActive(item)}\n checkActive={checkActive}\n />\n ))}\n {children && (\n <div className={cn(\n \"transition-all duration-500 overflow-hidden\",\n isExpanded ? \"opacity-100 mt-2\" : \"opacity-0 h-0\"\n )}>\n {children}\n </div>\n )}\n </div>\n </div>\n </main>\n </aside>\n )\n}\n\nfunction SidebarNavLink({\n item,\n isSidebarExpanded,\n isActive,\n checkActive,\n depth = 0\n}: {\n item: SidebarItem\n isSidebarExpanded: boolean\n isActive: boolean\n checkActive: (item: SidebarItem) => boolean\n depth?: number\n}) {\n const [isOpen, setIsOpen] = React.useState(isActive)\n const hasSubItems = item.items && item.items.length > 0\n\n // Update isOpen if isActive changes (to auto-expand when navigating)\n React.useEffect(() => {\n if (isActive) setIsOpen(true)\n }, [isActive])\n\n // Only allow sub-items to be visible if sidebar is expanded\n const isSubItemsVisible = hasSubItems && isSidebarExpanded && isOpen\n\n return (\n <div className=\"flex flex-col\">\n <a\n href={item.href}\n onClick={(e) => {\n if (hasSubItems) {\n e.preventDefault()\n setIsOpen(!isOpen)\n }\n }}\n className={cn(\n \"flex items-center h-12 rounded-2xl transition-all duration-500 px-3 relative group overflow-hidden\",\n isActive\n ? \"bg-[#092a5e] text-white\"\n : \"text-white/80 hover:bg-white/10 hover:text-white\"\n )}\n >\n {/* Smooth Centering Spacer - Only active when collapsed */}\n <div className={cn(\n \"transition-all duration-500 ease-in-out h-1\",\n isSidebarExpanded ? \"w-0 opacity-0\" : \"flex-1\"\n )} />\n\n {\n item.icon && (\n <div className={cn(\n \"shrink-0 w-8 h-8 flex items-center justify-center transition-all duration-500\"\n )}>\n {item.icon}\n </div>\n )\n }\n\n\n <span\n className={cn(\n \"font-medium whitespace-nowrap transition-all duration-500 ease-in-out overflow-hidden text-sm\",\n isSidebarExpanded ? \"opacity-100 w-auto\" : \"opacity-0 w-0 pointer-events-none\",\n item.icon ? \"ml-3\" : \"\"\n )}\n >\n {item.label}\n </span>\n\n {/* Right Spacer - Always pushes items to left when expanded, centers when combined with left spacer when collapsed */}\n <div className=\"flex-1 transition-all duration-500\" />\n\n {hasSubItems && isSidebarExpanded && (\n <div className={cn(\n \"transition-transform duration-300\",\n isOpen ? \"rotate-180\" : \"\"\n )}>\n <svg width=\"10\" height=\"6\" viewBox=\"0 0 10 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </div>\n )}\n </a>\n\n {/* Sub Items rendering */}\n {hasSubItems && isSidebarExpanded && (\n <div className={cn(\n \"overflow-hidden transition-all duration-300 ease-in-out\",\n isOpen ? \"max-h-96 opacity-100 mt-1\" : \"max-h-0 opacity-0\"\n )}>\n <div className=\"ml-7 border-l border-white/10 pl-3 py-1 space-y-1\">\n {item.items?.map((subItem) => (\n <SidebarNavLink\n key={subItem.href}\n item={subItem}\n isSidebarExpanded={isSidebarExpanded}\n isActive={checkActive(subItem)}\n checkActive={checkActive}\n depth={depth + 1}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}","import * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n"],"mappings":"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","names":["React","Slot","cva","clsx","twMerge","cn","inputs","jsx","buttonVariants","cva","Button","className","variant","size","asChild","props","ref","Slot","cn","React","jsx","Card","className","props","ref","cn","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","jsx","Logo","size","className","props","logo_default","React","React","SeparatorPrimitive","jsx","Separator","className","orientation","decorative","props","ref","cn","jsx","jsxs","Sidebar","children","logo","collapsedLogo","items","footerItems","showBackground","className","activePath","isExpanded","setIsExpanded","checkActive","item","bgUrl","bg_blue_default","logoUrl","white_icon_default","cn","Separator","SidebarNavLink","isSidebarExpanded","isActive","depth","isOpen","setIsOpen","hasSubItems","isSubItemsVisible","e","subItem"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/app/sidebar.tsx","../src/components/ui/separator.tsx","../src/lib/utils.ts","../src/components/ui/logo.tsx","../src/components/ui/button.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport sidebarBg from \"../../assets/textures/bg-blue.png\"\nimport { Separator } from \"../ui/separator\"\nimport { cn } from \"../../lib/utils\"\n\n// --- Context ---\n\ninterface SidebarContextValue {\n isExpanded: boolean\n setIsExpanded: (expanded: boolean) => void\n toggleExpanded: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextValue | undefined>(undefined)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"Sidebar components must be used within a <Sidebar />\")\n }\n return context\n}\n\n// --- Components ---\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n showBackground?: boolean\n defaultExpanded?: boolean\n onExpandedChange?: (expanded: boolean) => void\n}\n\nexport function Sidebar({\n children,\n showBackground = true,\n defaultExpanded = false,\n onExpandedChange,\n className,\n ...props\n}: SidebarProps) {\n const [isExpanded, setIsExpanded] = React.useState(defaultExpanded)\n const bgUrl = typeof sidebarBg === \"object\" ? (sidebarBg as any).src : sidebarBg\n\n const handleExpandedChange = React.useCallback((expanded: boolean) => {\n setIsExpanded(expanded)\n onExpandedChange?.(expanded)\n }, [onExpandedChange])\n\n const toggleExpanded = React.useCallback(() => {\n handleExpandedChange(!isExpanded)\n }, [isExpanded, handleExpandedChange])\n\n return (\n <SidebarContext.Provider value={{ isExpanded, setIsExpanded: handleExpandedChange, toggleExpanded }}>\n <aside\n onMouseEnter={() => !defaultExpanded && handleExpandedChange(true)}\n onMouseLeave={() => !defaultExpanded && handleExpandedChange(false)}\n className={cn(\n \"h-full p-2 transition-all duration-500 ease-in-out group/sidebar\",\n isExpanded ? \"w-72\" : \"w-24\",\n className\n )}\n {...props}\n >\n <main\n className={cn(\n \"h-full relative overflow-hidden flex flex-col shadow-xl transition-all duration-500 rounded-3xl\",\n !showBackground && \"bg-primary\"\n )}\n >\n {showBackground && (\n <div\n className=\"absolute inset-0 z-0 transition-transform duration-500\"\n style={{\n backgroundImage: `url(${bgUrl})`,\n backgroundSize: \"300%\",\n backgroundPosition: \"center\",\n width: \"18rem\", // Fixed width to prevent jumping (w-72)\n }}\n />\n )}\n <div className=\"absolute inset-0 z-0 bg-primary/20\" />\n\n <div className=\"flex flex-col h-full relative z-10 p-2\">\n {children}\n </div>\n </main>\n </aside>\n </SidebarContext.Provider>\n )\n}\n\nexport function SidebarHeader({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center min-h-[5rem] py-4 transition-all duration-500 relative\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport function SidebarLogo({\n logo,\n icon,\n className\n}: {\n logo: React.ReactNode\n icon: React.ReactNode\n className?: string\n}) {\n const { isExpanded } = useSidebar()\n return (\n <div className={cn(\"relative flex items-center justify-center w-full transition-all duration-500\", className)}>\n <div className={cn(\n \"transition-all duration-500 absolute inset-0 flex items-center justify-center\",\n isExpanded ? \"opacity-100\" : \"opacity-0 pointer-events-none\"\n )}>\n {logo}\n </div>\n <div className={cn(\n \"transition-all duration-500 flex items-center justify-center\",\n isExpanded ? \"opacity-0 pointer-events-none\" : \"opacity-100\"\n )}>\n {icon}\n </div>\n </div>\n )\n}\n\nexport function SidebarTrigger({ className, ...props }: React.ButtonHTMLAttributes<HTMLButtonElement>) {\n const { isExpanded, toggleExpanded } = useSidebar()\n return (\n <button\n onClick={toggleExpanded}\n className={cn(\n \"w-8 h-8 flex items-center justify-center rounded-full bg-white/10 hover:bg-white/20 text-white transition-all duration-300 pointer-events-auto\",\n className\n )}\n {...props}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"transition-transform duration-500\", !isExpanded ? \"\" : \"rotate-180\")}\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n )\n}\n\nexport function SidebarContent({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div className=\"flex-1 flex flex-col min-h-0\">\n <div className=\"px-4 mb-4\">\n <Separator className=\"bg-white/20\" />\n </div>\n <nav\n className={cn(\n \"flex-1 px-1 space-y-1 overflow-y-auto no-scrollbar scroll-smooth\",\n className\n )}\n {...props}\n >\n {children}\n </nav>\n </div>\n )\n}\n\nexport function SidebarFooter({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\n \"mt-auto px-1 pb-2 space-y-1\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport function SidebarGroup({ label, children, className, ...props }: React.HTMLAttributes<HTMLDivElement> & { label?: string }) {\n const { isExpanded } = useSidebar()\n return (\n <div className={cn(\"py-2\", className)} {...props}>\n {label && isExpanded && (\n <h3 className=\"px-4 mb-2 text-xs font-semibold text-white/40 uppercase tracking-widest\">\n {label}\n </h3>\n )}\n <div className=\"space-y-1\">\n {children}\n </div>\n </div>\n )\n}\n\n// --- Collapsible ---\n\nconst CollapsibleContext = React.createContext<{ isOpen: boolean; toggle: () => void } | undefined>(undefined)\n\nexport function SidebarCollapsible({ children, defaultOpen = false }: { children: React.ReactNode; defaultOpen?: boolean }) {\n const [isOpen, setIsOpen] = React.useState(defaultOpen)\n const toggle = () => setIsOpen(!isOpen)\n\n return (\n <CollapsibleContext.Provider value={{ isOpen, toggle }}>\n <div className=\"flex flex-col\">\n {children}\n </div>\n </CollapsibleContext.Provider>\n )\n}\n\nexport function SidebarCollapsibleTrigger({ children, asChild = false }: { children: React.ReactNode; asChild?: boolean }) {\n const collapsibleContext = React.useContext(CollapsibleContext)\n const { isExpanded } = useSidebar()\n\n if (!collapsibleContext) return <>{children}</>\n\n const { toggle, isOpen } = collapsibleContext\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n onClick={toggle}\n className=\"cursor-pointer\"\n data-state={isOpen ? \"open\" : \"closed\"}\n >\n {React.isValidElement(children) ? (\n React.cloneElement(children as any, {\n suffix: isExpanded && (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"transition-transform duration-300 ml-auto\", isOpen ? \"rotate-180\" : \"\")}\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n )\n })\n ) : children}\n </Comp>\n )\n}\n\nexport function SidebarCollapsibleContent({ children }: { children: React.ReactNode }) {\n const collapsibleContext = React.useContext(CollapsibleContext)\n const { isExpanded } = useSidebar()\n\n if (!collapsibleContext || !isExpanded) return null\n const { isOpen } = collapsibleContext\n\n return (\n <div\n className={cn(\n \"overflow-hidden transition-all duration-300 ease-in-out\",\n isOpen ? \"max-h-96 opacity-100 mt-1\" : \"max-h-0 opacity-0\"\n )}\n >\n <div className=\"ml-7 border-l border-white/10 pl-3 py-1 space-y-1\">\n {children}\n </div>\n </div>\n )\n}\n\n// --- Item ---\n\nexport interface SidebarItemProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n icon?: React.ReactNode\n suffix?: React.ReactNode\n isActive?: boolean\n asChild?: boolean\n}\n\nexport function SidebarItem({\n children,\n icon,\n suffix,\n isActive,\n asChild = false,\n className,\n ...props\n}: SidebarItemProps) {\n const { isExpanded } = useSidebar()\n const Comp = asChild ? Slot : \"a\"\n\n const content = (\n <>\n {/* Smooth Centering Spacer - Only active when collapsed */}\n <div className={cn(\n \"transition-all duration-500 ease-in-out h-1\",\n isExpanded ? \"w-0 opacity-0\" : \"flex-1\"\n )} />\n\n {icon && (\n <div className=\"shrink-0 w-8 h-8 flex items-center justify-center transition-all duration-500\">\n {icon}\n </div>\n )}\n\n <span\n className={cn(\n \"font-medium whitespace-nowrap transition-all duration-500 ease-in-out overflow-hidden text-sm flex-1 text-left\",\n isExpanded ? \"opacity-100 w-auto ml-3\" : \"opacity-0 w-0 pointer-events-none\"\n )}\n >\n {asChild && React.isValidElement(children) ? (children.props as any).children : children}\n </span>\n\n {isExpanded && suffix && (\n <div className=\"ml-2 scale-90 opacity-60\">\n {suffix}\n </div>\n )}\n\n {/* Right Spacer (only when collapsed or no suffix) */}\n {(!isExpanded || !suffix) && <div className=\"flex-1 transition-all duration-500\" />}\n </>\n )\n\n return (\n <Comp\n className={cn(\n \"flex items-center h-12 rounded-2xl transition-all duration-500 px-3 relative group overflow-hidden no-underline\",\n isActive\n ? \"bg-[#092a5e] text-white\"\n : \"text-white/80 hover:bg-white/10 hover:text-white\",\n className\n )}\n {...props}\n >\n {asChild && React.isValidElement(children) ? (\n React.cloneElement(children as React.ReactElement, undefined, content)\n ) : content}\n </Comp>\n )\n}","import * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport logo from \"../../assets/logo.png\"\n\nexport interface LogoProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n size?: number\n}\n\nexport function Logo({ size = 40, className, ...props }: LogoProps) {\n return (\n <img\n src={logo}\n alt=\"Moldsoft Logo\"\n width={size}\n height={size}\n className={className}\n {...props}\n />\n )\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"],"mappings":"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","names":["React","Slot","React","SeparatorPrimitive","clsx","twMerge","cn","inputs","jsx","Separator","className","orientation","decorative","props","ref","cn","Fragment","jsx","jsxs","SidebarContext","useSidebar","context","Sidebar","children","showBackground","defaultExpanded","onExpandedChange","className","props","isExpanded","setIsExpanded","bgUrl","bg_blue_default","handleExpandedChange","expanded","toggleExpanded","cn","SidebarHeader","SidebarLogo","logo","icon","SidebarTrigger","SidebarContent","Separator","SidebarFooter","SidebarGroup","label","CollapsibleContext","SidebarCollapsible","defaultOpen","isOpen","setIsOpen","toggle","SidebarCollapsibleTrigger","asChild","collapsibleContext","Slot","SidebarCollapsibleContent","SidebarItem","suffix","isActive","Comp","content","jsx","Logo","size","className","props","logo_default","React","Slot","cva","jsx","buttonVariants","cva","Button","className","variant","size","asChild","props","ref","Slot","cn"]}
|
package/dist/styles.css
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
"Courier New", monospace;
|
|
10
10
|
--color-white: #fff;
|
|
11
11
|
--spacing: 0.25rem;
|
|
12
|
+
--text-xs: 0.75rem;
|
|
13
|
+
--text-xs--line-height: calc(1 / 0.75);
|
|
12
14
|
--text-sm: 0.875rem;
|
|
13
15
|
--text-sm--line-height: calc(1.25 / 0.875);
|
|
14
16
|
--text-2xl: 1.5rem;
|
|
@@ -16,7 +18,7 @@
|
|
|
16
18
|
--font-weight-medium: 500;
|
|
17
19
|
--font-weight-semibold: 600;
|
|
18
20
|
--tracking-tight: -0.025em;
|
|
19
|
-
--tracking-
|
|
21
|
+
--tracking-widest: 0.1em;
|
|
20
22
|
--radius-md: calc(var(--radius) - 2px);
|
|
21
23
|
--radius-lg: var(--radius);
|
|
22
24
|
--radius-2xl: 1rem;
|
|
@@ -192,18 +194,15 @@
|
|
|
192
194
|
}
|
|
193
195
|
}
|
|
194
196
|
@layer ms-utilities {
|
|
197
|
+
.pointer-events-auto {
|
|
198
|
+
pointer-events: auto;
|
|
199
|
+
}
|
|
195
200
|
.pointer-events-none {
|
|
196
201
|
pointer-events: none;
|
|
197
202
|
}
|
|
198
|
-
.visible {
|
|
199
|
-
visibility: visible;
|
|
200
|
-
}
|
|
201
203
|
.absolute {
|
|
202
204
|
position: absolute;
|
|
203
205
|
}
|
|
204
|
-
.fixed {
|
|
205
|
-
position: fixed;
|
|
206
|
-
}
|
|
207
206
|
.relative {
|
|
208
207
|
position: relative;
|
|
209
208
|
}
|
|
@@ -219,36 +218,36 @@
|
|
|
219
218
|
.mt-1 {
|
|
220
219
|
margin-top: calc(var(--spacing) * 1);
|
|
221
220
|
}
|
|
222
|
-
.mt-2 {
|
|
223
|
-
margin-top: calc(var(--spacing) * 2);
|
|
224
|
-
}
|
|
225
221
|
.mt-auto {
|
|
226
222
|
margin-top: auto;
|
|
227
223
|
}
|
|
224
|
+
.mb-2 {
|
|
225
|
+
margin-bottom: calc(var(--spacing) * 2);
|
|
226
|
+
}
|
|
228
227
|
.mb-4 {
|
|
229
228
|
margin-bottom: calc(var(--spacing) * 4);
|
|
230
229
|
}
|
|
230
|
+
.ml-2 {
|
|
231
|
+
margin-left: calc(var(--spacing) * 2);
|
|
232
|
+
}
|
|
231
233
|
.ml-3 {
|
|
232
234
|
margin-left: calc(var(--spacing) * 3);
|
|
233
235
|
}
|
|
234
236
|
.ml-7 {
|
|
235
237
|
margin-left: calc(var(--spacing) * 7);
|
|
236
238
|
}
|
|
239
|
+
.ml-auto {
|
|
240
|
+
margin-left: auto;
|
|
241
|
+
}
|
|
237
242
|
.flex {
|
|
238
243
|
display: flex;
|
|
239
244
|
}
|
|
240
245
|
.inline-flex {
|
|
241
246
|
display: inline-flex;
|
|
242
247
|
}
|
|
243
|
-
.h-0 {
|
|
244
|
-
height: calc(var(--spacing) * 0);
|
|
245
|
-
}
|
|
246
248
|
.h-1 {
|
|
247
249
|
height: calc(var(--spacing) * 1);
|
|
248
250
|
}
|
|
249
|
-
.h-7 {
|
|
250
|
-
height: calc(var(--spacing) * 7);
|
|
251
|
-
}
|
|
252
251
|
.h-8 {
|
|
253
252
|
height: calc(var(--spacing) * 8);
|
|
254
253
|
}
|
|
@@ -264,9 +263,6 @@
|
|
|
264
263
|
.h-12 {
|
|
265
264
|
height: calc(var(--spacing) * 12);
|
|
266
265
|
}
|
|
267
|
-
.h-24 {
|
|
268
|
-
height: calc(var(--spacing) * 24);
|
|
269
|
-
}
|
|
270
266
|
.h-\[1px\] {
|
|
271
267
|
height: 1px;
|
|
272
268
|
}
|
|
@@ -279,6 +275,12 @@
|
|
|
279
275
|
.max-h-96 {
|
|
280
276
|
max-height: calc(var(--spacing) * 96);
|
|
281
277
|
}
|
|
278
|
+
.min-h-0 {
|
|
279
|
+
min-height: calc(var(--spacing) * 0);
|
|
280
|
+
}
|
|
281
|
+
.min-h-\[5rem\] {
|
|
282
|
+
min-height: 5rem;
|
|
283
|
+
}
|
|
282
284
|
.w-0 {
|
|
283
285
|
width: calc(var(--spacing) * 0);
|
|
284
286
|
}
|
|
@@ -309,15 +311,18 @@
|
|
|
309
311
|
.shrink-0 {
|
|
310
312
|
flex-shrink: 0;
|
|
311
313
|
}
|
|
312
|
-
.scale-
|
|
313
|
-
--tw-scale-x:
|
|
314
|
-
--tw-scale-y:
|
|
315
|
-
--tw-scale-z:
|
|
314
|
+
.scale-90 {
|
|
315
|
+
--tw-scale-x: 90%;
|
|
316
|
+
--tw-scale-y: 90%;
|
|
317
|
+
--tw-scale-z: 90%;
|
|
316
318
|
scale: var(--tw-scale-x) var(--tw-scale-y);
|
|
317
319
|
}
|
|
318
320
|
.rotate-180 {
|
|
319
321
|
rotate: 180deg;
|
|
320
322
|
}
|
|
323
|
+
.cursor-pointer {
|
|
324
|
+
cursor: pointer;
|
|
325
|
+
}
|
|
321
326
|
.flex-col {
|
|
322
327
|
flex-direction: column;
|
|
323
328
|
}
|
|
@@ -359,6 +364,9 @@
|
|
|
359
364
|
.rounded-3xl {
|
|
360
365
|
border-radius: var(--radius-3xl);
|
|
361
366
|
}
|
|
367
|
+
.rounded-full {
|
|
368
|
+
border-radius: calc(infinity * 1px);
|
|
369
|
+
}
|
|
362
370
|
.rounded-lg {
|
|
363
371
|
border-radius: var(--radius-lg);
|
|
364
372
|
}
|
|
@@ -409,15 +417,18 @@
|
|
|
409
417
|
.bg-secondary {
|
|
410
418
|
background-color: var(--color-secondary);
|
|
411
419
|
}
|
|
420
|
+
.bg-white\/10 {
|
|
421
|
+
background-color: color-mix(in srgb, #fff 10%, transparent);
|
|
422
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
423
|
+
background-color: color-mix(in oklab, var(--color-white) 10%, transparent);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
412
426
|
.bg-white\/20 {
|
|
413
427
|
background-color: color-mix(in srgb, #fff 20%, transparent);
|
|
414
428
|
@supports (color: color-mix(in lab, red, red)) {
|
|
415
429
|
background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
|
|
416
430
|
}
|
|
417
431
|
}
|
|
418
|
-
.object-contain {
|
|
419
|
-
object-fit: contain;
|
|
420
|
-
}
|
|
421
432
|
.p-2 {
|
|
422
433
|
padding: calc(var(--spacing) * 2);
|
|
423
434
|
}
|
|
@@ -454,6 +465,9 @@
|
|
|
454
465
|
.pl-3 {
|
|
455
466
|
padding-left: calc(var(--spacing) * 3);
|
|
456
467
|
}
|
|
468
|
+
.text-left {
|
|
469
|
+
text-align: left;
|
|
470
|
+
}
|
|
457
471
|
.text-2xl {
|
|
458
472
|
font-size: var(--text-2xl);
|
|
459
473
|
line-height: var(--tw-leading, var(--text-2xl--line-height));
|
|
@@ -462,8 +476,9 @@
|
|
|
462
476
|
font-size: var(--text-sm);
|
|
463
477
|
line-height: var(--tw-leading, var(--text-sm--line-height));
|
|
464
478
|
}
|
|
465
|
-
.text
|
|
466
|
-
font-size:
|
|
479
|
+
.text-xs {
|
|
480
|
+
font-size: var(--text-xs);
|
|
481
|
+
line-height: var(--tw-leading, var(--text-xs--line-height));
|
|
467
482
|
}
|
|
468
483
|
.leading-none {
|
|
469
484
|
--tw-leading: 1;
|
|
@@ -481,9 +496,9 @@
|
|
|
481
496
|
--tw-tracking: var(--tracking-tight);
|
|
482
497
|
letter-spacing: var(--tracking-tight);
|
|
483
498
|
}
|
|
484
|
-
.tracking-
|
|
485
|
-
--tw-tracking: var(--tracking-
|
|
486
|
-
letter-spacing: var(--tracking-
|
|
499
|
+
.tracking-widest {
|
|
500
|
+
--tw-tracking: var(--tracking-widest);
|
|
501
|
+
letter-spacing: var(--tracking-widest);
|
|
487
502
|
}
|
|
488
503
|
.whitespace-nowrap {
|
|
489
504
|
white-space: nowrap;
|
|
@@ -509,10 +524,10 @@
|
|
|
509
524
|
.text-white {
|
|
510
525
|
color: var(--color-white);
|
|
511
526
|
}
|
|
512
|
-
.text-white\/
|
|
513
|
-
color: color-mix(in srgb, #fff
|
|
527
|
+
.text-white\/40 {
|
|
528
|
+
color: color-mix(in srgb, #fff 40%, transparent);
|
|
514
529
|
@supports (color: color-mix(in lab, red, red)) {
|
|
515
|
-
color: color-mix(in oklab, var(--color-white)
|
|
530
|
+
color: color-mix(in oklab, var(--color-white) 40%, transparent);
|
|
516
531
|
}
|
|
517
532
|
}
|
|
518
533
|
.text-white\/80 {
|
|
@@ -524,14 +539,17 @@
|
|
|
524
539
|
.uppercase {
|
|
525
540
|
text-transform: uppercase;
|
|
526
541
|
}
|
|
542
|
+
.no-underline {
|
|
543
|
+
text-decoration-line: none;
|
|
544
|
+
}
|
|
527
545
|
.underline-offset-4 {
|
|
528
546
|
text-underline-offset: 4px;
|
|
529
547
|
}
|
|
530
548
|
.opacity-0 {
|
|
531
549
|
opacity: 0%;
|
|
532
550
|
}
|
|
533
|
-
.opacity-
|
|
534
|
-
opacity:
|
|
551
|
+
.opacity-60 {
|
|
552
|
+
opacity: 60%;
|
|
535
553
|
}
|
|
536
554
|
.opacity-100 {
|
|
537
555
|
opacity: 100%;
|
|
@@ -625,6 +643,16 @@
|
|
|
625
643
|
}
|
|
626
644
|
}
|
|
627
645
|
}
|
|
646
|
+
.hover\:bg-white\/20 {
|
|
647
|
+
&:hover {
|
|
648
|
+
@media (hover: hover) {
|
|
649
|
+
background-color: color-mix(in srgb, #fff 20%, transparent);
|
|
650
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
651
|
+
background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
}
|
|
628
656
|
.hover\:text-accent-foreground {
|
|
629
657
|
&:hover {
|
|
630
658
|
@media (hover: hover) {
|
package/package.json
CHANGED
|
Binary file
|
package/dist/logo-REBN3NUO.png
DELETED
|
Binary file
|
|
Binary file
|