@banhosdev/moldsoft-ui 1.4.0 → 1.6.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.
@@ -1 +1 @@
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"]}
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-[500px] opacity-100 mt-1\" : \"max-h-0 opacity-0\"\n )}\n >\n <div className=\"ml-7 border-l border-white/10 pl-2 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 text-left truncate\",\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-auto 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-primary text-primary-foreground shadow-sm\"\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
@@ -227,9 +227,6 @@
227
227
  .mb-4 {
228
228
  margin-bottom: calc(var(--spacing) * 4);
229
229
  }
230
- .ml-2 {
231
- margin-left: calc(var(--spacing) * 2);
232
- }
233
230
  .ml-3 {
234
231
  margin-left: calc(var(--spacing) * 3);
235
232
  }
@@ -272,8 +269,8 @@
272
269
  .max-h-0 {
273
270
  max-height: calc(var(--spacing) * 0);
274
271
  }
275
- .max-h-96 {
276
- max-height: calc(var(--spacing) * 96);
272
+ .max-h-\[500px\] {
273
+ max-height: 500px;
277
274
  }
278
275
  .min-h-0 {
279
276
  min-height: calc(var(--spacing) * 0);
@@ -349,6 +346,11 @@
349
346
  margin-block-end: calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)));
350
347
  }
351
348
  }
349
+ .truncate {
350
+ overflow: hidden;
351
+ text-overflow: ellipsis;
352
+ white-space: nowrap;
353
+ }
352
354
  .overflow-hidden {
353
355
  overflow: hidden;
354
356
  }
@@ -390,9 +392,6 @@
390
392
  border-color: color-mix(in oklab, var(--color-white) 10%, transparent);
391
393
  }
392
394
  }
393
- .bg-\[\#092a5e\] {
394
- background-color: #092a5e;
395
- }
396
395
  .bg-background {
397
396
  background-color: var(--color-background);
398
397
  }
@@ -462,8 +461,8 @@
462
461
  .pb-2 {
463
462
  padding-bottom: calc(var(--spacing) * 2);
464
463
  }
465
- .pl-3 {
466
- padding-left: calc(var(--spacing) * 3);
464
+ .pl-2 {
465
+ padding-left: calc(var(--spacing) * 2);
467
466
  }
468
467
  .text-left {
469
468
  text-align: left;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@banhosdev/moldsoft-ui",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "private": false,
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",