@grupo-elo-editorial/shared-ui-react 1.2.6 → 1.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/ui/utils.ts","../src/components/atoms/Button.tsx","../src/components/atoms/Textarea.tsx","../src/components/atoms/Badge.tsx","../src/components/atoms/Avatar.tsx","../src/components/atoms/Spinner.tsx","../src/components/atoms/Divider.tsx","../src/components/atoms/Rating.tsx","../src/components/ui/input.tsx","../src/components/ui/select.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/switch.tsx","../src/components/molecules/ProductCard.tsx","../src/components/molecules/SearchBar.tsx","../src/components/molecules/PriceDisplay.tsx","../src/components/molecules/QuantitySelector.tsx","../src/components/molecules/FormGroup.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/accordion.tsx","../src/components/ui/tooltip.tsx","../src/components/organisms/Hero.tsx","../src/components/organisms/EmptyState.tsx","../src/components/organisms/ErrorState.tsx","../src/components/organisms/ProductGrid.tsx","../src/components/ui/dialog.tsx","../src/components/ui/sheet.tsx","../src/components/prd/TopAccessibilityBar.tsx","../src/components/prd/HeroCarousel.tsx","../src/components/ui/navigation-menu.tsx","../src/components/prd/MegaMenu.tsx","../src/components/prd/Footer.tsx","../src/components/layout/Container.tsx","../src/components/layout/Grid.tsx","../src/components/layout/Col.tsx"],"sourcesContent":["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 { ButtonHTMLAttributes, forwardRef } from 'react';\nimport { Loader2 } from 'lucide-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../ui/utils';\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 rounded-lg font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 whitespace-nowrap',\n {\n variants: {\n variant: {\n primary: 'bg-[var(--brand-primary)] text-[var(--primary-foreground)] hover:bg-[var(--brand-primary-hover)] active:bg-[var(--brand-primary-active)] shadow-sm',\n secondary: 'border-2 border-[var(--brand-primary)] text-[var(--brand-primary)] bg-transparent hover:bg-[var(--brand-primary)] hover:text-[var(--primary-foreground)] active:bg-[var(--brand-primary-active)]',\n ghost: 'text-[var(--brand-primary)] bg-transparent hover:bg-[var(--accent)] active:bg-[var(--accent)]',\n danger: 'bg-[var(--destructive)] text-[var(--destructive-foreground)] hover:opacity-90 active:opacity-80 shadow-sm',\n link: 'text-[var(--brand-primary)] underline-offset-4 hover:underline p-0 h-auto',\n success: 'bg-[var(--success)] text-[var(--success-foreground)] hover:opacity-90 active:opacity-80 shadow-sm',\n },\n size: {\n sm: 'h-9 px-3 text-sm min-w-[44px]',\n md: 'h-11 px-4 text-base min-w-[44px]',\n lg: 'h-14 px-6 text-lg min-w-[44px]',\n },\n fullWidth: {\n true: 'w-full',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n);\n\nexport interface ButtonProps\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n isLoading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n}\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n fullWidth,\n isLoading,\n leftIcon,\n rightIcon,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n return (\n <button\n className={cn(buttonVariants({ variant, size, fullWidth, className }))}\n ref={ref}\n disabled={disabled || isLoading}\n {...props}\n >\n {isLoading ? (\n <>\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n {children && <span>{children}</span>}\n </>\n ) : (\n <>\n {leftIcon && <span className=\"inline-flex\">{leftIcon}</span>}\n {children}\n {rightIcon && <span className=\"inline-flex\">{rightIcon}</span>}\n </>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport { Button, buttonVariants };\n","import { TextareaHTMLAttributes, forwardRef } from 'react';\nimport { cn } from '../ui/utils';\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n error?: boolean;\n helperText?: string;\n}\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, error, helperText, ...props }, ref) => {\n return (\n <div className=\"w-full\">\n <textarea\n className={cn(\n 'flex min-h-[80px] w-full rounded-lg border-2 border-[var(--border)] bg-[var(--input-background)] px-3 py-2 text-base transition-colors',\n 'placeholder:text-[var(--muted-foreground)]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'resize-y',\n error && 'border-[var(--destructive)] focus-visible:ring-[var(--destructive)]',\n className\n )}\n ref={ref}\n {...props}\n />\n {helperText && (\n <p\n className={cn(\n 'mt-1.5 text-sm',\n error ? 'text-[var(--destructive)]' : 'text-[var(--muted-foreground)]'\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../ui/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full font-medium transition-colors whitespace-nowrap',\n {\n variants: {\n variant: {\n default: 'bg-[var(--primary)] text-[var(--primary-foreground)]',\n secondary: 'bg-[var(--secondary)] text-[var(--secondary-foreground)]',\n success: 'bg-[var(--success)] text-[var(--success-foreground)]',\n warning: 'bg-[var(--warning)] text-[var(--warning-foreground)]',\n danger: 'bg-[var(--destructive)] text-[var(--destructive-foreground)]',\n outline: 'border-2 border-[var(--brand-primary)] text-[var(--brand-primary)] bg-transparent',\n info: 'bg-[var(--info)] text-[var(--info-foreground)]',\n },\n size: {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n lg: 'px-3 py-1.5 text-base',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n }\n);\n\nexport interface BadgeProps\n extends HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {\n icon?: React.ReactNode;\n onRemove?: () => void;\n}\n\nconst Badge = forwardRef<HTMLDivElement, BadgeProps>(\n ({ className, variant, size, icon, onRemove, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(badgeVariants({ variant, size }), className)}\n {...props}\n >\n {icon && <span className=\"mr-1 inline-flex\">{icon}</span>}\n {children}\n {onRemove && (\n <button\n onClick={onRemove}\n className=\"ml-1 inline-flex hover:opacity-70 focus:outline-none focus:ring-1 focus:ring-[var(--ring)] rounded-full\"\n aria-label=\"Remove\"\n >\n ×\n </button>\n )}\n </div>\n );\n }\n);\n\nBadge.displayName = 'Badge';\n\nexport { Badge, badgeVariants };\n","'use client';\n\nimport { ImgHTMLAttributes, forwardRef, useState } from 'react';\nimport { User } from 'lucide-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../ui/utils';\n\nconst avatarVariants = cva(\n 'relative inline-flex items-center justify-center overflow-hidden rounded-full bg-[var(--muted)] text-[var(--muted-foreground)] flex-shrink-0',\n {\n variants: {\n size: {\n sm: 'h-8 w-8 text-sm',\n md: 'h-10 w-10 text-base',\n lg: 'h-12 w-12 text-lg',\n xl: 'h-16 w-16 text-xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport interface AvatarProps\n extends Omit<ImgHTMLAttributes<HTMLImageElement>, 'size'>,\n VariantProps<typeof avatarVariants> {\n name?: string;\n showStatus?: boolean;\n statusType?: 'online' | 'offline' | 'away' | 'busy';\n}\n\nconst Avatar = forwardRef<HTMLDivElement, AvatarProps>(\n ({ className, size, src, alt, name, showStatus, statusType = 'online', ...props }, ref) => {\n const [imageError, setImageError] = useState(false);\n\n const getInitials = (name: string) => {\n return name\n .split(' ')\n .map((n) => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2);\n };\n\n const statusColors = {\n online: 'bg-[var(--success)]',\n offline: 'bg-[var(--muted-foreground)]',\n away: 'bg-[var(--warning)]',\n busy: 'bg-[var(--destructive)]',\n };\n\n const statusSizes = {\n sm: 'h-2 w-2 border',\n md: 'h-2.5 w-2.5 border-2',\n lg: 'h-3 w-3 border-2',\n xl: 'h-4 w-4 border-2',\n };\n\n return (\n <div ref={ref} className={cn(avatarVariants({ size }), 'relative', className)}>\n {src && !imageError ? (\n <img\n src={src}\n alt={alt || name || 'Avatar'}\n onError={() => setImageError(true)}\n className=\"h-full w-full object-cover\"\n {...props}\n />\n ) : name ? (\n <span className=\"font-medium\">{getInitials(name)}</span>\n ) : (\n <User className=\"h-1/2 w-1/2\" />\n )}\n\n {showStatus && (\n <span\n className={cn(\n 'absolute bottom-0 right-0 rounded-full border-[var(--background)]',\n statusColors[statusType],\n statusSizes[size || 'md']\n )}\n aria-label={`Status: ${statusType}`}\n />\n )}\n </div>\n );\n }\n);\n\nAvatar.displayName = 'Avatar';\n\nexport { Avatar, avatarVariants };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { Loader2 } from 'lucide-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../ui/utils';\n\nconst spinnerVariants = cva('animate-spin text-[var(--brand-primary)]', {\n variants: {\n size: {\n sm: 'h-4 w-4',\n md: 'h-6 w-6',\n lg: 'h-8 w-8',\n xl: 'h-12 w-12',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport interface SpinnerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'children'>,\n VariantProps<typeof spinnerVariants> {\n label?: string;\n}\n\nconst Spinner = forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size, label, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-label={label || 'Loading'}\n className={cn('inline-flex items-center justify-center', className)}\n {...props}\n >\n <Loader2 className={cn(spinnerVariants({ size }))} />\n <span className=\"sr-only\">{label || 'Loading'}</span>\n </div>\n );\n }\n);\n\nSpinner.displayName = 'Spinner';\n\nexport { Spinner, spinnerVariants };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { cn } from '../ui/utils';\n\nexport interface DividerProps extends HTMLAttributes<HTMLHRElement> {\n orientation?: 'horizontal' | 'vertical';\n variant?: 'solid' | 'dashed' | 'dotted';\n text?: string;\n}\n\nconst Divider = forwardRef<HTMLHRElement, DividerProps>(\n ({ className, orientation = 'horizontal', variant = 'solid', text, ...props }, ref) => {\n const variantStyles = {\n solid: 'border-solid',\n dashed: 'border-dashed',\n dotted: 'border-dotted',\n };\n\n if (text && orientation === 'horizontal') {\n return (\n <div className={cn('flex items-center gap-4 my-4', className)} role=\"separator\">\n <hr\n ref={ref}\n className={cn(\n 'flex-1 border-[var(--border)]',\n variantStyles[variant]\n )}\n {...props}\n />\n <span className=\"text-sm text-[var(--muted-foreground)]\">{text}</span>\n <hr\n className={cn(\n 'flex-1 border-[var(--border)]',\n variantStyles[variant]\n )}\n />\n </div>\n );\n }\n\n return (\n <hr\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n 'border-[var(--border)]',\n variantStyles[variant],\n orientation === 'vertical'\n ? 'h-full w-px border-l'\n : 'w-full border-t my-4',\n className\n )}\n {...props}\n />\n );\n }\n);\n\nDivider.displayName = 'Divider';\n\nexport { Divider };\n","'use client';\n\nimport { HTMLAttributes, forwardRef, useState } from 'react';\nimport { Star } from 'lucide-react';\nimport { cn } from '../ui/utils';\n\nexport interface RatingProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n value?: number;\n maxRating?: number;\n size?: 'sm' | 'md' | 'lg';\n readonly?: boolean;\n onChange?: (rating: number) => void;\n showValue?: boolean;\n}\n\nconst Rating = forwardRef<HTMLDivElement, RatingProps>(\n (\n {\n className,\n value = 0,\n maxRating = 5,\n size = 'md',\n readonly = false,\n onChange,\n showValue = false,\n ...props\n },\n ref\n ) => {\n const [hoverRating, setHoverRating] = useState(0);\n\n const sizeClasses = {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n };\n\n const handleClick = (rating: number) => {\n if (!readonly && onChange) {\n onChange(rating);\n }\n };\n\n const displayRating = hoverRating || value;\n\n return (\n <div\n ref={ref}\n className={cn('inline-flex items-center gap-1', className)}\n role=\"group\"\n aria-label={`Rating: ${value} out of ${maxRating}`}\n {...props}\n >\n <div className=\"flex items-center gap-0.5\">\n {Array.from({ length: maxRating }, (_, i) => i + 1).map((rating) => {\n const isFilled = rating <= displayRating;\n const isPartial = rating === Math.ceil(displayRating) && displayRating % 1 !== 0;\n\n return (\n <button\n key={rating}\n type=\"button\"\n disabled={readonly}\n onClick={() => handleClick(rating)}\n onMouseEnter={() => !readonly && setHoverRating(rating)}\n onMouseLeave={() => !readonly && setHoverRating(0)}\n className={cn(\n 'transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-1 rounded',\n readonly ? 'cursor-default' : 'cursor-pointer hover:scale-110'\n )}\n aria-label={`Rate ${rating} out of ${maxRating}`}\n >\n <Star\n className={cn(\n sizeClasses[size],\n 'transition-all',\n isFilled\n ? 'fill-[var(--warning)] text-[var(--warning)]'\n : 'fill-none text-[var(--muted-foreground)]'\n )}\n />\n </button>\n );\n })}\n </div>\n\n {showValue && (\n <span className=\"ml-1 text-sm font-medium text-[var(--foreground)]\">\n {value.toFixed(1)}\n </span>\n )}\n </div>\n );\n }\n);\n\nRating.displayName = 'Rating';\n\nexport { Rating };\n","import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base bg-input-background transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport {\n CheckIcon,\n ChevronDownIcon,\n ChevronUpIcon,\n} from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-input-background px-3 py-2 text-sm whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border bg-input-background dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\n\nimport { cn } from \"./utils\";\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-switch-background focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-card dark:data-[state=unchecked]:bg-card-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","import { forwardRef, HTMLAttributes } from 'react';\nimport { ShoppingCart, Heart } from 'lucide-react';\nimport { cn } from '../ui/utils';\nimport { Button } from '../atoms/Button';\nimport { Badge } from '../atoms/Badge';\nimport { Rating } from '../atoms/Rating';\n\nexport interface ProductCardProps extends HTMLAttributes<HTMLDivElement> {\n image: string;\n title: string;\n author?: string;\n price: number;\n originalPrice?: number;\n rating?: number;\n reviewCount?: number;\n badge?: string;\n badgeVariant?: 'default' | 'success' | 'warning' | 'danger';\n isSkeleton?: boolean;\n isOutOfStock?: boolean;\n onAddToCart?: () => void;\n onToggleFavorite?: () => void;\n isFavorite?: boolean;\n /** Makes the card image and title clickable as a link. */\n href?: string;\n /** 'vertical' (default) stacks image above content; 'horizontal' places a compact image to the left. */\n orientation?: 'vertical' | 'horizontal';\n}\n\nfunction MaybeLink({\n href,\n className,\n children,\n}: {\n href?: string;\n className?: string;\n children: React.ReactNode;\n}) {\n if (href) {\n return (\n <a href={href} className={className} tabIndex={-1} aria-hidden=\"true\">\n {children}\n </a>\n );\n }\n return <div className={className}>{children}</div>;\n}\n\nconst ProductCard = forwardRef<HTMLDivElement, ProductCardProps>(\n (\n {\n className,\n image,\n title,\n author,\n price,\n originalPrice,\n rating,\n reviewCount,\n badge,\n badgeVariant = 'default',\n isSkeleton = false,\n isOutOfStock = false,\n onAddToCart,\n onToggleFavorite,\n isFavorite = false,\n href,\n orientation = 'vertical',\n ...props\n },\n ref\n ) => {\n if (isSkeleton) {\n return (\n <div\n ref={ref}\n className={cn(\n 'flex rounded-lg border-2 border-[var(--border)] bg-[var(--card)] p-4 animate-pulse',\n orientation === 'horizontal' ? 'flex-row gap-3' : 'flex-col',\n className\n )}\n {...props}\n >\n <div\n className={cn(\n 'rounded-lg bg-[var(--muted)]',\n orientation === 'horizontal' ? 'h-24 w-20 shrink-0' : 'w-full aspect-2/3'\n )}\n />\n <div className={cn('flex flex-col gap-2', orientation === 'horizontal' ? 'flex-1' : 'mt-3')}>\n <div className=\"h-4 w-3/4 rounded bg-[var(--muted)]\" />\n <div className=\"h-4 w-1/2 rounded bg-[var(--muted)]\" />\n <div className=\"h-10 w-full rounded bg-[var(--muted)]\" />\n </div>\n </div>\n );\n }\n\n // ── Horizontal layout ──────────────────────────────────────────────────\n if (orientation === 'horizontal') {\n return (\n <div\n ref={ref}\n className={cn(\n 'group relative flex flex-row gap-3 rounded-lg border-2 border-[var(--border)] bg-[var(--card)] p-3 transition-all hover:shadow-md',\n isOutOfStock && 'opacity-60',\n className\n )}\n {...props}\n >\n <MaybeLink\n href={href}\n className=\"block h-24 w-20 shrink-0 overflow-hidden rounded-lg\"\n >\n <img\n src={image}\n alt={title}\n className=\"h-full w-full object-contain transition-transform duration-300 group-hover:scale-105\"\n />\n </MaybeLink>\n\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n {href ? (\n <a\n href={href}\n className=\"line-clamp-2 text-sm font-medium text-[var(--card-foreground)] hover:text-[var(--brand-primary)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] rounded\"\n >\n {title}\n </a>\n ) : (\n <h3 className=\"line-clamp-2 text-sm font-medium text-[var(--card-foreground)]\">\n {title}\n </h3>\n )}\n\n {author && (\n <p className=\"text-xs text-[var(--muted-foreground)]\">{author}</p>\n )}\n\n {rating !== undefined && (\n <div className=\"flex items-center gap-1\">\n <Rating value={rating} size=\"sm\" readonly />\n {reviewCount !== undefined && (\n <span className=\"text-xs text-[var(--muted-foreground)]\">({reviewCount})</span>\n )}\n </div>\n )}\n\n <div className=\"flex items-baseline gap-2\">\n <span className=\"text-base font-bold text-[var(--foreground)]\">\n R$ {price.toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}\n </span>\n {originalPrice && originalPrice > price && (\n <span className=\"text-xs text-[var(--muted-foreground)] line-through\">\n R$ {originalPrice.toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}\n </span>\n )}\n </div>\n\n {onAddToCart && (\n <Button\n onClick={onAddToCart}\n disabled={isOutOfStock}\n variant=\"primary\"\n size=\"sm\"\n fullWidth\n leftIcon={<ShoppingCart className=\"h-3.5 w-3.5\" />}\n className=\"mt-auto\"\n >\n {isOutOfStock ? 'Indisponível' : 'Adicionar'}\n </Button>\n )}\n </div>\n </div>\n );\n }\n\n // ── Vertical layout (default) ──────────────────────────────────────────\n return (\n <div\n ref={ref}\n className={cn(\n 'group relative flex flex-col rounded-lg border-2 border-[var(--border)] bg-[var(--card)] transition-all hover:shadow-lg',\n isOutOfStock && 'opacity-60',\n className\n )}\n {...props}\n >\n <MaybeLink\n href={href}\n className=\"relative block w-full aspect-2/3 overflow-hidden rounded-t-lg\"\n >\n {/* Blur backdrop — same src, CSS only, scale avoids white halo at edges */}\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 z-0 bg-cover bg-center\"\n style={{\n backgroundImage: `url(${image})`,\n filter: 'blur(14px) brightness(0.85)',\n transform: 'scale(1.2)',\n }}\n />\n\n <img\n src={image}\n alt={title}\n className=\"relative z-10 h-full w-full object-contain transition-transform group-hover:scale-105\"\n />\n\n {badge && (\n <div className=\"absolute left-3 top-3 z-20\">\n <Badge variant={badgeVariant}>{badge}</Badge>\n </div>\n )}\n\n {isOutOfStock && (\n <div className=\"absolute inset-0 z-20 flex items-center justify-center bg-black/60\">\n <Badge variant=\"danger\" size=\"lg\">Esgotado</Badge>\n </div>\n )}\n </MaybeLink>\n\n {onToggleFavorite && (\n <button\n onClick={onToggleFavorite}\n className=\"absolute right-3 top-3 rounded-full bg-white/90 p-2 transition-all hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]\"\n aria-label={isFavorite ? 'Remover dos favoritos' : 'Adicionar aos favoritos'}\n >\n <Heart\n className={cn(\n 'h-5 w-5',\n isFavorite\n ? 'fill-[var(--destructive)] text-[var(--destructive)]'\n : 'text-[var(--foreground)]'\n )}\n />\n </button>\n )}\n\n <div className=\"flex flex-1 flex-col p-4\">\n {href ? (\n <a\n href={href}\n className=\"line-clamp-2 text-base font-medium text-[var(--card-foreground)] hover:text-[var(--brand-primary)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] rounded\"\n >\n {title}\n </a>\n ) : (\n <h3 className=\"line-clamp-2 text-base font-medium text-[var(--card-foreground)]\">\n {title}\n </h3>\n )}\n\n {author && (\n <p className=\"mt-1 text-sm text-[var(--muted-foreground)]\">{author}</p>\n )}\n\n {rating !== undefined && (\n <div className=\"mt-2 flex items-center gap-2\">\n <Rating value={rating} size=\"sm\" readonly />\n {reviewCount !== undefined && (\n <span className=\"text-sm text-[var(--muted-foreground)]\">({reviewCount})</span>\n )}\n </div>\n )}\n\n <div className=\"mt-3 flex items-baseline gap-2\">\n <span className=\"text-xl font-bold text-[var(--foreground)]\">\n R$ {price.toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}\n </span>\n {originalPrice && originalPrice > price && (\n <span className=\"text-sm text-[var(--muted-foreground)] line-through\">\n R$ {originalPrice.toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}\n </span>\n )}\n </div>\n\n {onAddToCart && (\n <Button\n onClick={onAddToCart}\n disabled={isOutOfStock}\n variant=\"primary\"\n size=\"md\"\n fullWidth\n leftIcon={<ShoppingCart className=\"h-4 w-4\" />}\n className={cn(\n 'mt-4 transition-all duration-200',\n 'opacity-0 translate-y-2',\n 'group-hover:opacity-100 group-hover:translate-y-0',\n 'focus-visible:opacity-100 focus-visible:translate-y-0',\n )}\n >\n {isOutOfStock ? 'Indisponível' : 'Adicionar'}\n </Button>\n )}\n </div>\n </div>\n );\n }\n);\n\nProductCard.displayName = 'ProductCard';\n\nexport { ProductCard };\n","'use client';\n\nimport { forwardRef, InputHTMLAttributes, useState } from 'react';\nimport { Search, X, Loader2 } from 'lucide-react';\nimport { cn } from '../ui/utils';\n\nexport interface SearchBarProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n onSearch?: (value: string) => void;\n onClear?: () => void;\n isLoading?: boolean;\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst SearchBar = forwardRef<HTMLInputElement, SearchBarProps>(\n (\n {\n className,\n onSearch,\n onClear,\n isLoading = false,\n size = 'md',\n placeholder = 'Buscar...',\n value: controlledValue,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState('');\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n const sizeClasses = {\n sm: 'h-9 text-sm',\n md: 'h-11 text-base',\n lg: 'h-14 text-lg',\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n onChange?.(e);\n };\n\n const handleClear = () => {\n if (controlledValue === undefined) {\n setInternalValue('');\n }\n onClear?.();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && onSearch) {\n onSearch(value as string);\n }\n };\n\n return (\n <div className={cn('relative w-full', className)}>\n <div className=\"relative flex items-center\">\n <Search className=\"absolute left-3 h-5 w-5 text-[var(--muted-foreground)] pointer-events-none\" />\n\n <input\n ref={ref}\n type=\"search\"\n value={value}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n className={cn(\n 'w-full rounded-lg border-2 border-[var(--border)] bg-[var(--input-background)] pl-10 pr-10 font-normal transition-colors',\n 'placeholder:text-[var(--muted-foreground)]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n sizeClasses[size]\n )}\n {...props}\n />\n\n <div className=\"absolute right-3 flex items-center gap-1\">\n {isLoading && <Loader2 className=\"h-5 w-5 animate-spin text-[var(--muted-foreground)]\" />}\n\n {value && !isLoading && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"rounded-full p-1 hover:bg-[var(--muted)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]\"\n aria-label=\"Clear search\"\n >\n <X className=\"h-4 w-4 text-[var(--muted-foreground)]\" />\n </button>\n )}\n </div>\n </div>\n </div>\n );\n }\n);\n\nSearchBar.displayName = 'SearchBar';\n\nexport { SearchBar };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { cn } from '../ui/utils';\nimport { Badge } from '../atoms/Badge';\n\nexport interface PriceDisplayProps extends HTMLAttributes<HTMLDivElement> {\n price: number;\n originalPrice?: number;\n currency?: string;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n showDiscount?: boolean;\n installments?: {\n count: number;\n value: number;\n };\n}\n\nconst PriceDisplay = forwardRef<HTMLDivElement, PriceDisplayProps>(\n (\n {\n className,\n price,\n originalPrice,\n currency = 'R$',\n size = 'md',\n showDiscount = true,\n installments,\n ...props\n },\n ref\n ) => {\n const discount =\n originalPrice && originalPrice > price\n ? Math.round(((originalPrice - price) / originalPrice) * 100)\n : 0;\n\n const sizeClasses = {\n sm: 'text-base',\n md: 'text-xl',\n lg: 'text-2xl',\n xl: 'text-4xl',\n };\n\n const originalSizeClasses = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n xl: 'text-xl',\n };\n\n return (\n <div ref={ref} className={cn('flex flex-col gap-1', className)} {...props}>\n <div className=\"flex items-center gap-2 flex-wrap\">\n <div className=\"flex items-baseline gap-2\">\n <span className={cn('font-bold text-[var(--foreground)]', sizeClasses[size])}>\n {currency} {price.toFixed(2)}\n </span>\n\n {originalPrice && originalPrice > price && (\n <span\n className={cn(\n 'text-[var(--muted-foreground)] line-through',\n originalSizeClasses[size]\n )}\n >\n {currency} {originalPrice.toFixed(2)}\n </span>\n )}\n </div>\n\n {showDiscount && discount > 0 && (\n <Badge variant=\"success\" size=\"sm\">\n -{discount}%\n </Badge>\n )}\n </div>\n\n {installments && (\n <p className=\"text-sm text-[var(--muted-foreground)]\">\n ou {installments.count}x de {currency} {installments.value.toFixed(2)} sem juros\n </p>\n )}\n </div>\n );\n }\n);\n\nPriceDisplay.displayName = 'PriceDisplay';\n\nexport { PriceDisplay };\n","import { forwardRef, HTMLAttributes } from 'react';\nimport { Minus, Plus } from 'lucide-react';\nimport { cn } from '../ui/utils';\nimport { Button } from '../atoms/Button';\n\nexport interface QuantitySelectorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n value: number;\n min?: number;\n max?: number;\n onChange: (value: number) => void;\n size?: 'sm' | 'md' | 'lg';\n disabled?: boolean;\n showLabel?: boolean;\n}\n\nconst QuantitySelector = forwardRef<HTMLDivElement, QuantitySelectorProps>(\n (\n {\n className,\n value,\n min = 1,\n max = 99,\n onChange,\n size = 'md',\n disabled = false,\n showLabel = false,\n ...props\n },\n ref\n ) => {\n const handleIncrement = () => {\n if (value < max) {\n onChange(value + 1);\n }\n };\n\n const handleDecrement = () => {\n if (value > min) {\n onChange(value - 1);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = parseInt(e.target.value);\n if (!isNaN(newValue) && newValue >= min && newValue <= max) {\n onChange(newValue);\n }\n };\n\n const sizeClasses = {\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12',\n };\n\n const inputSizeClasses = {\n sm: 'h-8 w-12 text-sm',\n md: 'h-10 w-14 text-base',\n lg: 'h-12 w-16 text-lg',\n };\n\n return (\n <div ref={ref} className={cn('inline-flex flex-col gap-1', className)} {...props}>\n {showLabel && (\n <label className=\"text-sm font-medium text-[var(--foreground)]\">\n Quantidade\n </label>\n )}\n\n <div className=\"inline-flex items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"sm\"\n onClick={handleDecrement}\n disabled={disabled || value <= min}\n className={cn(sizeClasses[size], 'p-0')}\n aria-label=\"Decrease quantity\"\n >\n <Minus className=\"h-4 w-4\" />\n </Button>\n\n <input\n type=\"number\"\n value={value}\n onChange={handleInputChange}\n min={min}\n max={max}\n disabled={disabled}\n className={cn(\n 'rounded-lg border-2 border-[var(--border)] bg-[var(--input-background)] text-center font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n '[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none',\n inputSizeClasses[size]\n )}\n aria-label=\"Quantity\"\n />\n\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"sm\"\n onClick={handleIncrement}\n disabled={disabled || value >= max}\n className={cn(sizeClasses[size], 'p-0')}\n aria-label=\"Increase quantity\"\n >\n <Plus className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n );\n }\n);\n\nQuantitySelector.displayName = 'QuantitySelector';\n\nexport { QuantitySelector };\n","import { HTMLAttributes, forwardRef, ReactNode } from 'react';\nimport { cn } from '../ui/utils';\n\nexport interface FormGroupProps extends HTMLAttributes<HTMLDivElement> {\n label?: string;\n htmlFor?: string;\n required?: boolean;\n error?: string;\n helperText?: string;\n children: ReactNode;\n}\n\nconst FormGroup = forwardRef<HTMLDivElement, FormGroupProps>(\n ({ className, label, htmlFor, required, error, helperText, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('flex flex-col gap-1.5', className)} {...props}>\n {label && (\n <label\n htmlFor={htmlFor}\n className=\"text-sm font-medium text-[var(--foreground)]\"\n >\n {label}\n {required && <span className=\"ml-1 text-[var(--destructive)]\">*</span>}\n </label>\n )}\n\n {children}\n\n {(error || helperText) && (\n <p\n className={cn(\n 'text-sm',\n error ? 'text-[var(--destructive)]' : 'text-[var(--muted-foreground)]'\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nFormGroup.displayName = 'FormGroup';\n\nexport { FormGroup };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />;\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"hover:text-foreground transition-colors\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-foreground font-normal\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n );\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"./utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { cn } from '../ui/utils';\nimport { Button } from '../atoms/Button';\n\nexport interface HeroProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'default' | 'centered' | 'split';\n title: string;\n subtitle?: string;\n description?: string;\n primaryCTA?: {\n label: string;\n onClick: () => void;\n };\n secondaryCTA?: {\n label: string;\n onClick: () => void;\n };\n backgroundImage?: string;\n overlay?: boolean;\n children?: React.ReactNode;\n}\n\nconst Hero = forwardRef<HTMLDivElement, HeroProps>(\n (\n {\n className,\n variant = 'default',\n title,\n subtitle,\n description,\n primaryCTA,\n secondaryCTA,\n backgroundImage,\n overlay = true,\n children,\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n default: 'items-start text-left',\n centered: 'items-center text-center',\n split: 'lg:grid lg:grid-cols-2 lg:gap-12 items-center',\n };\n\n return (\n <section\n ref={ref}\n className={cn(\n 'relative flex min-h-[400px] w-full flex-col justify-center px-6 py-16 lg:px-12 lg:py-24',\n variantClasses[variant],\n className\n )}\n {...props}\n >\n {backgroundImage && (\n <>\n <div\n className=\"absolute inset-0 bg-cover bg-center bg-no-repeat\"\n style={{ backgroundImage: `url(${backgroundImage})` }}\n />\n {overlay && (\n <div className=\"absolute inset-0 bg-gradient-to-r from-black/70 to-black/30\" />\n )}\n </>\n )}\n\n <div\n className={cn(\n 'relative z-10 max-w-7xl mx-auto w-full',\n variant === 'centered' && 'flex flex-col items-center'\n )}\n >\n <div className={cn('max-w-3xl', variant === 'split' && 'max-w-none')}>\n {subtitle && (\n <p\n className={cn(\n 'mb-4 text-sm font-semibold uppercase tracking-wider',\n backgroundImage\n ? 'text-[var(--warning)]'\n : 'text-[var(--brand-primary)]'\n )}\n >\n {subtitle}\n </p>\n )}\n\n <h1\n className={cn(\n 'text-4xl font-bold leading-tight lg:text-5xl xl:text-6xl',\n backgroundImage ? 'text-white' : 'text-[var(--foreground)]'\n )}\n >\n {title}\n </h1>\n\n {description && (\n <p\n className={cn(\n 'mt-6 text-lg lg:text-xl',\n backgroundImage\n ? 'text-gray-200'\n : 'text-[var(--muted-foreground)]'\n )}\n >\n {description}\n </p>\n )}\n\n {(primaryCTA || secondaryCTA) && (\n <div className=\"mt-8 flex flex-wrap gap-4\">\n {primaryCTA && (\n <Button\n size=\"lg\"\n onClick={primaryCTA.onClick}\n variant=\"primary\"\n >\n {primaryCTA.label}\n </Button>\n )}\n\n {secondaryCTA && (\n <Button\n size=\"lg\"\n onClick={secondaryCTA.onClick}\n variant=\"secondary\"\n >\n {secondaryCTA.label}\n </Button>\n )}\n </div>\n )}\n </div>\n\n {variant === 'split' && children && (\n <div className=\"mt-8 lg:mt-0\">{children}</div>\n )}\n </div>\n\n {variant !== 'split' && children && (\n <div className=\"relative z-10 mt-12 w-full max-w-7xl mx-auto\">\n {children}\n </div>\n )}\n </section>\n );\n }\n);\n\nHero.displayName = 'Hero';\n\nexport { Hero };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { Package, Search, ShoppingCart, FileX } from 'lucide-react';\nimport { cn } from '../ui/utils';\nimport { Button } from '../atoms/Button';\n\nexport interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'default' | 'search' | 'cart' | 'error';\n icon?: React.ReactNode;\n title: string;\n description?: string;\n action?: {\n label: string;\n onClick: () => void;\n };\n}\n\nconst EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(\n (\n {\n className,\n variant = 'default',\n icon,\n title,\n description,\n action,\n ...props\n },\n ref\n ) => {\n const defaultIcons = {\n default: <Package className=\"h-16 w-16\" />,\n search: <Search className=\"h-16 w-16\" />,\n cart: <ShoppingCart className=\"h-16 w-16\" />,\n error: <FileX className=\"h-16 w-16\" />,\n };\n\n const displayIcon = icon || defaultIcons[variant];\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col items-center justify-center py-16 px-6 text-center',\n className\n )}\n {...props}\n >\n <div className=\"rounded-full bg-[var(--muted)] p-6 text-[var(--muted-foreground)]\">\n {displayIcon}\n </div>\n\n <h3 className=\"mt-6 text-xl font-semibold text-[var(--foreground)]\">\n {title}\n </h3>\n\n {description && (\n <p className=\"mt-2 max-w-md text-[var(--muted-foreground)]\">\n {description}\n </p>\n )}\n\n {action && (\n <Button\n onClick={action.onClick}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-6\"\n >\n {action.label}\n </Button>\n )}\n </div>\n );\n }\n);\n\nEmptyState.displayName = 'EmptyState';\n\nexport { EmptyState };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { AlertCircle, RefreshCw, Home } from 'lucide-react';\nimport { cn } from '../ui/utils';\nimport { Button } from '../atoms/Button';\n\nexport interface ErrorStateProps extends HTMLAttributes<HTMLDivElement> {\n type?: '404' | '500' | 'network' | 'generic';\n title?: string;\n message?: string;\n onRetry?: () => void;\n onGoHome?: () => void;\n showRetry?: boolean;\n showHome?: boolean;\n}\n\nconst ErrorState = forwardRef<HTMLDivElement, ErrorStateProps>(\n (\n {\n className,\n type = 'generic',\n title,\n message,\n onRetry,\n onGoHome,\n showRetry = true,\n showHome = true,\n ...props\n },\n ref\n ) => {\n const defaultContent = {\n '404': {\n title: 'Página não encontrada',\n message: 'A página que você está procurando não existe ou foi movida.',\n code: '404',\n },\n '500': {\n title: 'Erro no servidor',\n message: 'Algo deu errado do nosso lado. Por favor, tente novamente mais tarde.',\n code: '500',\n },\n network: {\n title: 'Erro de conexão',\n message: 'Não foi possível conectar ao servidor. Verifique sua conexão com a internet.',\n code: '',\n },\n generic: {\n title: 'Algo deu errado',\n message: 'Ocorreu um erro inesperado. Por favor, tente novamente.',\n code: '',\n },\n };\n\n const content = defaultContent[type];\n const displayTitle = title || content.title;\n const displayMessage = message || content.message;\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex min-h-[500px] flex-col items-center justify-center py-16 px-6 text-center',\n className\n )}\n role=\"alert\"\n aria-live=\"assertive\"\n {...props}\n >\n <div className=\"flex flex-col items-center gap-4\">\n {content.code && (\n <h1 className=\"text-9xl font-bold text-[var(--muted)] opacity-40\">\n {content.code}\n </h1>\n )}\n\n <div className=\"rounded-full bg-[var(--destructive)]/10 p-6 text-[var(--destructive)]\">\n <AlertCircle className=\"h-16 w-16\" />\n </div>\n </div>\n\n <h2 className=\"mt-6 text-2xl font-bold text-[var(--foreground)]\">\n {displayTitle}\n </h2>\n\n <p className=\"mt-2 max-w-md text-[var(--muted-foreground)]\">\n {displayMessage}\n </p>\n\n <div className=\"mt-8 flex flex-wrap gap-4 justify-center\">\n {showRetry && onRetry && (\n <Button\n onClick={onRetry}\n variant=\"primary\"\n size=\"lg\"\n leftIcon={<RefreshCw className=\"h-5 w-5\" />}\n >\n Tentar novamente\n </Button>\n )}\n\n {showHome && onGoHome && (\n <Button\n onClick={onGoHome}\n variant=\"secondary\"\n size=\"lg\"\n leftIcon={<Home className=\"h-5 w-5\" />}\n >\n Voltar ao início\n </Button>\n )}\n </div>\n </div>\n );\n }\n);\n\nErrorState.displayName = 'ErrorState';\n\nexport { ErrorState };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { cn } from '../ui/utils';\nimport { ProductCard, ProductCardProps } from '../molecules/ProductCard';\nimport { EmptyState } from './EmptyState';\nimport { Spinner } from '../atoms/Spinner';\n\nexport interface ProductGridProps extends HTMLAttributes<HTMLDivElement> {\n products: ProductCardProps[];\n columns?: 2 | 3 | 4 | 5;\n gap?: 'sm' | 'md' | 'lg';\n isLoading?: boolean;\n skeletonCount?: number;\n emptyStateMessage?: string;\n onEmptyAction?: () => void;\n}\n\nconst ProductGrid = forwardRef<HTMLDivElement, ProductGridProps>(\n (\n {\n className,\n products,\n columns = 4,\n gap = 'md',\n isLoading = false,\n skeletonCount = 8,\n emptyStateMessage = 'Nenhum produto encontrado',\n onEmptyAction,\n ...props\n },\n ref\n ) => {\n const columnClasses = {\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',\n 5: 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5',\n };\n\n const gapClasses = {\n sm: 'gap-4',\n md: 'gap-6',\n lg: 'gap-8',\n };\n\n if (isLoading) {\n return (\n <div\n ref={ref}\n className={cn(\n 'grid',\n columnClasses[columns],\n gapClasses[gap],\n className\n )}\n {...props}\n >\n {Array.from({ length: skeletonCount }).map((_, i) => (\n <ProductCard\n key={i}\n image=\"\"\n title=\"\"\n price={0}\n isSkeleton\n />\n ))}\n </div>\n );\n }\n\n if (products.length === 0) {\n return (\n <EmptyState\n variant=\"search\"\n title={emptyStateMessage}\n description=\"Tente ajustar seus filtros ou realizar uma nova busca\"\n action={\n onEmptyAction\n ? {\n label: 'Limpar filtros',\n onClick: onEmptyAction,\n }\n : undefined\n }\n />\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'grid',\n columnClasses[columns],\n gapClasses[gap],\n className\n )}\n {...props}\n >\n {products.map((product, index) => (\n <ProductCard key={index} {...product} />\n ))}\n </div>\n );\n }\n);\n\nProductGrid.displayName = 'ProductGrid';\n\nexport { ProductGrid };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content>) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\">\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className,\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","'use client';\n\nimport { HTMLAttributes, forwardRef, useState, useEffect } from 'react';\nimport { Sun, Moon, ZoomIn, ZoomOut, Accessibility } from 'lucide-react';\nimport { cn } from '../ui/utils';\n\nexport interface TopAccessibilityBarProps extends HTMLAttributes<HTMLDivElement> {\n onThemeChange?: (theme: 'light' | 'dark') => void;\n onFontSizeChange?: (size: number) => void;\n showA11yLink?: boolean;\n}\n\nconst TopAccessibilityBar = forwardRef<HTMLDivElement, TopAccessibilityBarProps>(\n ({ className, onThemeChange, onFontSizeChange, showA11yLink = false, ...props }, ref) => {\n const [theme, setTheme] = useState<'light' | 'dark'>('light');\n const [fontSize, setFontSize] = useState(16);\n const [vlibrasLoaded, setVlibrasLoaded] = useState(false);\n\n useEffect(() => {\n // Restore persisted theme (key: 'a11y-theme')\n const stored = localStorage.getItem('a11y-theme') as 'light' | 'dark' | null;\n const active = stored ?? (document.documentElement.getAttribute('data-theme') as 'light' | 'dark' | null) ?? 'light';\n setTheme(active);\n\n // Restore persisted font size (key: 'a11y-font-size')\n const storedSize = Number(localStorage.getItem('a11y-font-size'));\n if (Number.isFinite(storedSize) && storedSize > 0) {\n setFontSize(storedSize);\n }\n }, []);\n\n useEffect(() => {\n // Load VLibras script\n if (!vlibrasLoaded && typeof window !== 'undefined') {\n const existingScript = document.querySelector('script[src*=\"vlibras\"]');\n if (!existingScript) {\n const script = document.createElement('script');\n script.src = 'https://vlibras.gov.br/app/vlibras-plugin.js';\n script.async = true;\n script.onload = () => {\n setVlibrasLoaded(true);\n // Initialize VLibras\n if ((window as any).VLibras) {\n new (window as any).VLibras.Widget('https://vlibras.gov.br/app');\n }\n };\n document.body.appendChild(script);\n }\n }\n }, [vlibrasLoaded]);\n\n const handleThemeToggle = () => {\n const newTheme = theme === 'light' ? 'dark' : 'light';\n setTheme(newTheme);\n // Bug fix: usar data-theme (contrato do design-tokens), não classList 'dark'\n document.documentElement.setAttribute('data-theme', newTheme);\n localStorage.setItem('a11y-theme', newTheme);\n onThemeChange?.(newTheme);\n };\n\n const handleFontIncrease = () => {\n const newSize = Math.min(fontSize + 2, 24);\n setFontSize(newSize);\n document.documentElement.style.setProperty('--font-size', `${newSize}px`);\n document.documentElement.style.fontSize = `${newSize}px`;\n localStorage.setItem('a11y-font-size', newSize.toString());\n onFontSizeChange?.(newSize);\n };\n\n const handleFontDecrease = () => {\n const newSize = Math.max(fontSize - 2, 12);\n setFontSize(newSize);\n document.documentElement.style.setProperty('--font-size', `${newSize}px`);\n document.documentElement.style.fontSize = `${newSize}px`;\n localStorage.setItem('a11y-font-size', newSize.toString());\n onFontSizeChange?.(newSize);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'w-full border-b border-[var(--border)] bg-[var(--card)] sticky top-0 z-50',\n className\n )}\n role=\"toolbar\"\n aria-label=\"Ferramentas de acessibilidade\"\n {...props}\n >\n <div className=\"mx-auto max-w-7xl px-4 py-2 flex items-center justify-between\">\n <div className=\"flex items-center gap-2 text-sm text-[var(--muted-foreground)]\">\n <Accessibility className=\"h-4 w-4 flex-shrink-0\" aria-hidden=\"true\" />\n <span className=\"hidden sm:inline\">Ferramentas de Acessibilidade</span>\n </div>\n\n <div className=\"flex items-center gap-2 md:gap-4\">\n {showA11yLink && (\n <a\n href=\"/acessibilidade\"\n className=\"flex items-center gap-1.5 text-sm text-[var(--muted-foreground)] hover:text-[var(--primary)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] rounded px-2 py-1 min-h-[44px]\"\n >\n <span className=\"hidden sm:inline\">Acessibilidade</span>\n </a>\n )}\n\n <div role=\"group\" aria-label=\"Tamanho da fonte\" className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={handleFontDecrease}\n disabled={fontSize <= 12}\n aria-label=\"Diminuir tamanho da fonte\"\n className={cn(\n 'p-2 rounded-md transition-colors text-[var(--muted-foreground)] hover:bg-[var(--muted)]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]',\n 'disabled:opacity-40 disabled:cursor-not-allowed'\n )}\n >\n <ZoomOut className=\"h-4 w-4\" />\n </button>\n\n <span className=\"text-xs text-[var(--muted-foreground)] w-3 text-center select-none\" aria-hidden=\"true\">\n A\n </span>\n\n <button\n type=\"button\"\n onClick={handleFontIncrease}\n disabled={fontSize >= 24}\n aria-label=\"Aumentar tamanho da fonte\"\n className={cn(\n 'p-2 rounded-md transition-colors text-[var(--muted-foreground)] hover:bg-[var(--muted)]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]',\n 'disabled:opacity-40 disabled:cursor-not-allowed'\n )}\n >\n <ZoomIn className=\"h-4 w-4\" />\n </button>\n </div>\n\n <button\n type=\"button\"\n onClick={handleThemeToggle}\n aria-label={theme === 'light' ? 'Ativar modo escuro' : 'Ativar modo claro'}\n className={cn(\n 'p-2 rounded-md transition-colors text-[var(--muted-foreground)] hover:bg-[var(--muted)]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]'\n )}\n >\n {theme === 'light' ? <Moon className=\"h-4 w-4\" /> : <Sun className=\"h-4 w-4\" />}\n </button>\n\n <button\n type=\"button\"\n onClick={() => setVlibrasLoaded((v) => !v)}\n aria-label=\"Ativar VLibras\"\n aria-pressed={vlibrasLoaded}\n className={cn(\n 'px-3 py-1 text-xs font-medium rounded-md transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]'\n )}\n style={{\n backgroundColor: vlibrasLoaded ? 'var(--primary)' : 'transparent',\n color: vlibrasLoaded ? 'var(--primary-foreground)' : 'var(--muted-foreground)',\n border: vlibrasLoaded ? 'none' : '1px solid var(--border)',\n }}\n >\n VLibras\n </button>\n </div>\n </div>\n </div>\n );\n }\n);\n\nTopAccessibilityBar.displayName = 'TopAccessibilityBar';\n\nexport { TopAccessibilityBar };\n","'use client';\n\nimport { HTMLAttributes, forwardRef, useState, useEffect } from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../ui/utils';\nimport { buttonVariants } from '../atoms/Button';\n\nexport interface HeroSlide {\n id: string;\n title: string;\n description: string;\n imageMobile: string;\n imageTablet: string;\n imageDesktop: string;\n /** Exibe título, descrição e CTA sobrepostos na imagem. Default false. */\n showOverlay?: boolean;\n cta?: {\n label: string;\n href: string;\n };\n}\n\nexport interface HeroCarouselProps extends HTMLAttributes<HTMLDivElement> {\n slides: HeroSlide[];\n autoplayDelay?: number;\n autoplay?: boolean;\n}\n\nconst HeroCarousel = forwardRef<HTMLDivElement, HeroCarouselProps>(\n (\n {\n className,\n slides,\n autoplayDelay = 5000,\n autoplay = true,\n ...props\n },\n ref\n ) => {\n const [currentIndex, setCurrentIndex] = useState(0);\n const [isAutoplayPaused, setIsAutoplayPaused] = useState(false);\n const [reduceMotion, setReduceMotion] = useState(false);\n\n useEffect(() => {\n // Check for prefers-reduced-motion\n const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n setReduceMotion(mediaQuery.matches);\n\n const handleChange = (e: MediaQueryListEvent) => {\n setReduceMotion(e.matches);\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, []);\n\n useEffect(() => {\n if (!autoplay || isAutoplayPaused || reduceMotion) return;\n\n const interval = setInterval(() => {\n setCurrentIndex((prev) => (prev + 1) % slides.length);\n }, autoplayDelay);\n\n return () => clearInterval(interval);\n }, [autoplay, autoplayDelay, slides.length, isAutoplayPaused, reduceMotion]);\n\n const goToSlide = (index: number) => {\n setCurrentIndex(index);\n setIsAutoplayPaused(true);\n setTimeout(() => setIsAutoplayPaused(false), autoplayDelay);\n };\n\n const goToPrevious = () => {\n goToSlide((currentIndex - 1 + slides.length) % slides.length);\n };\n\n const goToNext = () => {\n goToSlide((currentIndex + 1) % slides.length);\n };\n\n if (slides.length === 0) return null;\n\n const currentSlide = slides[currentIndex];\n\n return (\n <div\n ref={ref}\n className={cn('relative w-full overflow-hidden', className)}\n onMouseEnter={() => setIsAutoplayPaused(true)}\n onMouseLeave={() => setIsAutoplayPaused(false)}\n {...props}\n >\n {/* Slides */}\n <div className=\"relative\">\n {slides.map((slide, index) => (\n <div\n key={slide.id}\n className={cn(\n 'w-full transition-opacity duration-700',\n index === currentIndex ? 'block' : 'hidden'\n )}\n aria-hidden={index !== currentIndex}\n >\n <picture>\n <source\n media=\"(min-width: 1024px)\"\n srcSet={`${slide.imageDesktop} 1x, ${slide.imageDesktop.replace(/\\.(jpg|png)$/, '@2x.$1')} 2x`}\n />\n <source\n media=\"(min-width: 768px)\"\n srcSet={`${slide.imageTablet} 1x, ${slide.imageTablet.replace(/\\.(jpg|png)$/, '@2x.$1')} 2x`}\n />\n <img\n src={slide.imageMobile}\n srcSet={`${slide.imageMobile} 1x, ${slide.imageMobile.replace(/\\.(jpg|png)$/, '@2x.$1')} 2x`}\n alt={slide.title}\n // Aspect ratios per PRD F3 (apps/site-multibrand): mobile 750×900 (5:6),\n // tablet 1024×576 (16:9), desktop 1920×700 (~2.74:1). Without the lg:\n // override the banner blew up to ~720px tall on desktop because aspect-video\n // doesn't match the panoramic desktop artwork.\n className=\"w-full object-cover aspect-[5/6] md:aspect-video lg:aspect-[1920/700]\"\n loading={index === 0 ? 'eager' : 'lazy'}\n />\n </picture>\n\n {slide.showOverlay && (\n <div className=\"absolute inset-0 flex flex-col justify-end bg-linear-to-t from-black/60 to-transparent p-6 md:p-10\">\n <h2 className=\"text-2xl font-bold text-white md:text-3xl\">{slide.title}</h2>\n {slide.description && (\n <p className=\"mt-2 text-sm text-gray-200 md:text-base\">{slide.description}</p>\n )}\n {slide.cta && (\n <a\n href={slide.cta.href}\n className=\"mt-4 inline-block self-start rounded-md bg-brand-primary px-5 py-2 text-sm font-semibold text-white transition hover:opacity-90\"\n >\n {slide.cta.label}\n </a>\n )}\n </div>\n )}\n\n </div>\n ))}\n </div>\n\n {/* Navigation Arrows */}\n {slides.length > 1 && (\n <>\n <button\n onClick={goToPrevious}\n className=\"absolute left-4 top-1/2 -translate-y-1/2 rounded-full bg-white/90 p-2 shadow-lg transition-all hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] min-w-[44px] min-h-[44px]\"\n aria-label=\"Slide anterior\"\n >\n <ChevronLeft className=\"h-6 w-6 text-gray-900\" />\n </button>\n\n <button\n onClick={goToNext}\n className=\"absolute right-4 top-1/2 -translate-y-1/2 rounded-full bg-white/90 p-2 shadow-lg transition-all hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] min-w-[44px] min-h-[44px]\"\n aria-label=\"Próximo slide\"\n >\n <ChevronRight className=\"h-6 w-6 text-gray-900\" />\n </button>\n </>\n )}\n\n {/* Indicators */}\n {slides.length > 1 && (\n <div className=\"absolute bottom-4 left-1/2 -translate-x-1/2 flex gap-2\">\n {slides.map((_, index) => (\n <button\n key={index}\n onClick={() => goToSlide(index)}\n className={cn(\n 'h-2 rounded-full transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] min-w-[44px] min-h-[24px] flex items-center justify-center',\n index === currentIndex\n ? 'w-8 bg-white'\n : 'w-2 bg-white/50 hover:bg-white/70'\n )}\n aria-label={`Ir para slide ${index + 1}`}\n aria-current={index === currentIndex}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nHeroCarousel.displayName = 'HeroCarousel';\n\nexport { HeroCarousel };\n","import * as React from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n className,\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n \"group flex flex-1 list-none items-center justify-center gap-1\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn(\"relative\", className)}\n {...props}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1\",\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n \"data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto\",\n \"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div\n className={cn(\n \"absolute top-full left-0 isolate z-50 flex justify-center\",\n )}\n >\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n \"origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n \"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n \"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\",\n className,\n )}\n {...props}\n >\n <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n};\n","'use client';\n\nimport { forwardRef, HTMLAttributes, useState } from 'react';\nimport { ChevronDown, Menu } from 'lucide-react';\nimport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n} from '../ui/navigation-menu';\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from '../ui/sheet';\nimport { cn } from '../ui/utils';\n\nexport interface NavItem {\n id: string;\n label: string;\n href?: string;\n children?: NavItem[];\n}\n\nexport interface MegaMenuProps extends HTMLAttributes<HTMLElement> {\n items: NavItem[];\n logo?: React.ReactNode;\n rightSlot?: React.ReactNode;\n searchSlot?: React.ReactNode;\n drawerFooter?: React.ReactNode;\n}\n\nfunction DesktopSubMenu({ items }: { items: NavItem[] }) {\n return (\n <ul className=\"grid gap-0.5 p-2 min-w-[180px]\" role=\"none\">\n {items.map((item) =>\n item.children?.length ? (\n <li key={item.id} role=\"none\">\n <span\n className=\"block px-3 py-1 text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]\"\n role=\"presentation\"\n >\n {item.label}\n </span>\n <ul className=\"ml-1\" role=\"none\">\n {item.children.map((child) => (\n <li key={child.id} role=\"none\">\n <NavigationMenuLink\n href={child.href ?? '#'}\n className=\"block rounded px-3 py-1.5 text-sm text-[var(--foreground)] hover:bg-[var(--accent)] transition-colors\"\n >\n {child.label}\n </NavigationMenuLink>\n </li>\n ))}\n </ul>\n </li>\n ) : (\n <li key={item.id} role=\"none\">\n <NavigationMenuLink\n href={item.href ?? '#'}\n className=\"block rounded px-3 py-1.5 text-sm text-[var(--foreground)] hover:bg-[var(--accent)] transition-colors\"\n >\n {item.label}\n </NavigationMenuLink>\n </li>\n )\n )}\n </ul>\n );\n}\n\nfunction MobileNavItem({ item, depth = 0 }: { item: NavItem; depth?: number }) {\n const [open, setOpen] = useState(false);\n const hasChildren = !!item.children?.length;\n\n if (!hasChildren) {\n return (\n <SheetClose asChild>\n <a\n href={item.href ?? '#'}\n className={cn(\n 'flex min-h-[44px] items-center rounded py-2 text-sm text-[var(--foreground)] hover:text-[var(--brand-primary)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]',\n depth > 0 && 'pl-4 text-xs text-[var(--muted-foreground)]'\n )}\n >\n {item.label}\n </a>\n </SheetClose>\n );\n }\n\n return (\n <div>\n <button\n type=\"button\"\n aria-expanded={open}\n aria-controls={`mobile-nav-${item.id}`}\n onClick={() => setOpen((prev) => !prev)}\n className={cn(\n 'flex min-h-[44px] w-full items-center justify-between rounded py-2 text-sm font-medium text-[var(--foreground)] hover:text-[var(--brand-primary)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]',\n depth > 0 && 'pl-4'\n )}\n >\n <span>{item.label}</span>\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n 'h-4 w-4 text-[var(--muted-foreground)] transition-transform duration-200',\n open && 'rotate-180'\n )}\n />\n </button>\n {open && (\n <div\n id={`mobile-nav-${item.id}`}\n className=\"mb-1 ml-2 border-l-2 border-[var(--border)] pl-3\"\n >\n {item.children!.map((child) => (\n <MobileNavItem key={child.id} item={child} depth={depth + 1} />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nconst MegaMenu = forwardRef<HTMLElement, MegaMenuProps>(\n ({ items, logo, rightSlot, searchSlot, drawerFooter, className, ...props }, ref) => {\n return (\n <header\n ref={ref}\n className={cn(\n 'sticky top-0 z-40 border-b border-[var(--border)] bg-[var(--card)]',\n className\n )}\n {...props}\n >\n <div className=\"px-4\">\n {/* Top bar: logo + search (desktop) + right actions + hamburger */}\n <div className=\"flex items-center py-3 gap-4\">\n {logo && <div className=\"flex-shrink-0\">{logo}</div>}\n\n {/* Inline search — desktop only, fills space */}\n {searchSlot && (\n <div className=\"hidden flex-1 md:flex\">\n {searchSlot}\n </div>\n )}\n\n {/* Spacer — pushes right slot to the right on mobile */}\n <div className=\"flex-1 md:hidden\" aria-hidden=\"true\" />\n\n {/* Right slot — always visible (cart, user) + desktop-only (brand switcher) */}\n {rightSlot && <div className=\"flex items-center\">{rightSlot}</div>}\n\n {/* Hamburger — mobile only */}\n <Sheet>\n <SheetTrigger asChild>\n <button\n type=\"button\"\n aria-label=\"Abrir menu de navegação\"\n className=\"inline-flex min-h-[44px] min-w-[44px] items-center justify-center rounded-lg text-[var(--foreground)] transition-colors hover:bg-[var(--accent)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] md:hidden\"\n >\n <Menu className=\"h-5 w-5\" aria-hidden=\"true\" />\n </button>\n </SheetTrigger>\n <SheetContent side=\"left\" className=\"flex flex-col p-0\">\n <SheetHeader className=\"border-b border-[var(--border)] px-5 py-4\">\n <SheetTitle className=\"sr-only\">Menu de navegação</SheetTitle>\n {logo && <div className=\"flex items-center\">{logo}</div>}\n </SheetHeader>\n\n {/* Search inside drawer */}\n {searchSlot && (\n <div className=\"border-b border-[var(--border)] px-5 py-4\">\n {searchSlot}\n </div>\n )}\n\n <nav\n aria-label=\"Menu principal\"\n className=\"flex-1 overflow-y-auto px-5 py-3\"\n >\n <div className=\"divide-y divide-[var(--border)]\">\n {items.map((item) => (\n <div key={item.id} className=\"py-0.5\">\n <MobileNavItem item={item} />\n </div>\n ))}\n </div>\n </nav>\n\n {/* Drawer footer — brand switcher */}\n {drawerFooter && (\n <div className=\"border-t border-[var(--border)] px-5 py-4\">\n {drawerFooter}\n </div>\n )}\n </SheetContent>\n </Sheet>\n </div>\n\n {/* Desktop nav — second row with border-t */}\n <nav\n aria-label=\"Menu principal\"\n className=\"hidden border-t border-[var(--border)] py-2 md:flex\"\n >\n <NavigationMenu>\n <NavigationMenuList>\n {items.map((item) =>\n item.children?.length ? (\n <NavigationMenuItem key={item.id}>\n <NavigationMenuTrigger className=\"h-9 bg-transparent text-sm text-[var(--foreground)] hover:bg-[var(--accent)]\">\n {item.label}\n </NavigationMenuTrigger>\n <NavigationMenuContent>\n <DesktopSubMenu items={item.children} />\n </NavigationMenuContent>\n </NavigationMenuItem>\n ) : (\n <NavigationMenuItem key={item.id}>\n <NavigationMenuLink\n href={item.href ?? '#'}\n className=\"inline-flex h-9 items-center rounded-md px-4 text-sm font-medium text-[var(--foreground)] transition-colors hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]\"\n >\n {item.label}\n </NavigationMenuLink>\n </NavigationMenuItem>\n )\n )}\n </NavigationMenuList>\n </NavigationMenu>\n </nav>\n </div>\n </header>\n );\n }\n);\n\nMegaMenu.displayName = 'MegaMenu';\n\nexport { MegaMenu };\n","'use client';\n\nimport { useState, useEffect, HTMLAttributes } from 'react';\nimport { Instagram, Facebook, Youtube, Linkedin, Mail, ChevronDown } from 'lucide-react';\nimport { cn } from '../ui/utils';\n\nexport interface FooterProps extends HTMLAttributes<HTMLElement> {\n brand?: 'elo-editora' | 'perabook';\n onNewsletterSubmit?: (email: string) => void;\n}\n\nconst NAV_COLUMNS = [\n {\n id: 'catalogo',\n title: 'Catálogo',\n links: [\n { label: 'Livros', href: '/livros/catalogo' },\n { label: 'Coleções', href: '/livros/colecoes' },\n { label: 'Lançamentos', href: '/livros/catalogo?ordem=recentes' },\n { label: 'Mais Vendidos', href: '/livros/catalogo?ordem=mais_vendidos' },\n { label: 'Vale Presente', href: '/livros/vale-presente' },\n ],\n },\n {\n id: 'editora',\n title: 'Editora',\n links: [\n { label: 'Autores', href: '/autores' },\n { label: 'LABBOOK', href: '/labbook' },\n { label: 'Projetos', href: '/projetos' },\n { label: 'Fale Conosco', href: '/editora/contato' },\n { label: 'FAQ', href: '/editora/faq' },\n ],\n },\n {\n id: 'institucional',\n title: 'Institucional',\n links: [\n { label: 'Distribuidores', href: '/distribuidores' },\n { label: 'Como Comprar', href: '/como-comprar' },\n { label: 'Informações de Entrega', href: '/informacoes-entrega' },\n { label: 'Sobre o APP', href: '/sobre-app' },\n ],\n },\n];\n\nconst SOCIAL_LINKS = [\n { label: 'Instagram', href: 'https://instagram.com/eloeditora', Icon: Instagram },\n { label: 'Facebook', href: 'https://facebook.com/eloeditora', Icon: Facebook },\n { label: 'YouTube', href: 'https://youtube.com/@eloeditora', Icon: Youtube },\n { label: 'LinkedIn', href: 'https://linkedin.com/company/eloeditora', Icon: Linkedin },\n];\n\n// ── Newsletter ─────────────────────────────────────────────────────────────\n\nfunction NewsletterForm({ onSubmit }: { onSubmit?: (email: string) => void }) {\n const [email, setEmail] = useState('');\n const [submitted, setSubmitted] = useState(false);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!email) return;\n onSubmit?.(email);\n setSubmitted(true);\n setEmail('');\n };\n\n return (\n <div className=\"bg-[var(--brand-primary)] py-10\">\n <div className=\"mx-auto max-w-lg px-4 text-center\">\n <Mail className=\"mx-auto mb-4 h-10 w-10 text-white\" aria-hidden=\"true\" />\n <h2 className=\"text-xl font-semibold text-white sm:text-2xl\">\n Receba novidades e ofertas exclusivas\n </h2>\n <p className=\"mt-2 text-sm\" style={{ color: 'rgba(255,255,255,0.85)' }}>\n Cadastre-se e fique por dentro dos lançamentos. Sem spam.\n </p>\n {submitted ? (\n <p className=\"mt-6 text-sm font-medium text-white\">\n Obrigado! Você está na lista. ✓\n </p>\n ) : (\n <form onSubmit={handleSubmit} className=\"mt-6 flex flex-col gap-2 sm:flex-row\">\n <label htmlFor=\"footer-newsletter-email\" className=\"sr-only\">\n Seu e-mail\n </label>\n <input\n id=\"footer-newsletter-email\"\n type=\"email\"\n required\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder=\"Seu melhor e-mail\"\n className=\"min-h-[44px] flex-1 rounded-lg px-4 text-sm text-[#1a1e2e] placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-white\"\n />\n <button\n type=\"submit\"\n className=\"min-h-[44px] whitespace-nowrap rounded-lg bg-white px-6 text-sm font-semibold transition-colors hover:bg-gray-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--brand-primary)]\"\n style={{ color: 'var(--brand-primary)' }}\n >\n Cadastrar\n </button>\n </form>\n )}\n </div>\n </div>\n );\n}\n\n// ── Nav column (mobile accordion) ─────────────────────────────────────────\n\nfunction NavColumn({ title, links }: { title: string; links: { label: string; href: string }[] }) {\n const [open, setOpen] = useState(false);\n\n return (\n <div className=\"border-b border-[var(--border)] md:border-none\">\n <button\n type=\"button\"\n aria-expanded={open}\n onClick={() => setOpen((v) => !v)}\n className=\"flex w-full items-center justify-between py-4 text-left text-sm font-semibold text-[var(--foreground)] md:hidden\"\n >\n {title}\n <ChevronDown\n aria-hidden=\"true\"\n className={cn('h-4 w-4 text-[var(--muted-foreground)] transition-transform duration-200', open && 'rotate-180')}\n />\n </button>\n\n <p className=\"hidden text-sm font-semibold text-[var(--foreground)] md:block\">{title}</p>\n\n <ul\n className={cn(\n 'flex flex-col gap-2 overflow-hidden transition-all duration-200 md:mt-3 md:max-h-none md:pb-0',\n open ? 'max-h-96 pb-4' : 'max-h-0 md:max-h-none'\n )}\n role=\"list\"\n >\n {links.map((link) => (\n <li key={link.label}>\n <a\n href={link.href}\n className=\"text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--brand-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] rounded\"\n >\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </div>\n );\n}\n\n// ── Footer ─────────────────────────────────────────────────────────────────\n\nconst Footer = ({ brand = 'elo-editora', onNewsletterSubmit, className, ...props }: FooterProps) => {\n const [theme, setTheme] = useState<'light' | 'dark'>('light');\n\n useEffect(() => {\n const root = document.documentElement;\n setTheme((root.getAttribute('data-theme') as 'light' | 'dark') ?? 'light');\n const obs = new MutationObserver(() => {\n setTheme((root.getAttribute('data-theme') as 'light' | 'dark') ?? 'light');\n });\n obs.observe(root, { attributes: true, attributeFilter: ['data-theme'] });\n return () => obs.disconnect();\n }, []);\n\n const logoSrc =\n brand === 'perabook'\n ? theme === 'dark'\n ? '/logos/logo_PeraBook_institucional_tarja_branca.png'\n : '/logos/PeraBook_instituicional.png'\n : theme === 'dark'\n ? '/logos/logo_elo_editora_texto_branco.png'\n : '/logos/logo_elo_editora_texto_azul.png';\n\n const logoAlt = brand === 'perabook' ? 'PeraBook' : 'Elo Editora';\n\n const tagline =\n brand === 'perabook'\n ? 'Educação socioemocional e diversidade cultural'\n : 'Literatura infantojuvenil que transforma vidas';\n\n return (\n <footer\n className={cn('border-t border-[var(--border)] bg-[var(--card)] text-[var(--foreground)]', className)}\n aria-label=\"Rodapé do site\"\n {...props}\n >\n <NewsletterForm onSubmit={onNewsletterSubmit} />\n\n <div className=\"mx-auto max-w-screen-xl px-4\">\n {/* Main grid */}\n <div className=\"py-10 md:grid md:grid-cols-4 md:gap-8\">\n {/* Brand column */}\n <div className=\"mb-8 md:mb-0\">\n <img\n src={logoSrc}\n alt={logoAlt}\n width={120}\n height={40}\n className=\"h-10 w-auto object-contain\"\n />\n <p className=\"mt-3 max-w-xs text-sm text-[var(--muted-foreground)]\">{tagline}</p>\n\n <div className=\"mt-6 flex flex-wrap gap-2\" aria-label=\"Redes sociais\">\n {SOCIAL_LINKS.map(({ label, href, Icon }) => (\n <a\n key={label}\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={label}\n className=\"flex h-9 w-9 items-center justify-center rounded-full border border-[var(--border)] text-[var(--muted-foreground)] transition-colors hover:border-[var(--brand-primary)] hover:bg-[var(--brand-primary)] hover:text-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]\"\n >\n <Icon className=\"h-4 w-4\" aria-hidden=\"true\" />\n </a>\n ))}\n </div>\n\n {/* Contact info */}\n <div className=\"mt-6 space-y-1 text-sm\">\n <p className=\"text-[var(--muted-foreground)]\">Atendimento:</p>\n <p className=\"font-medium text-[var(--foreground)]\">contato@grupoeloediorial.com.br</p>\n <p className=\"font-medium text-[var(--foreground)]\">(11) 3000-0000</p>\n </div>\n </div>\n\n {/* Nav columns */}\n {NAV_COLUMNS.map((col) => (\n <NavColumn key={col.id} title={col.title} links={col.links} />\n ))}\n </div>\n\n {/* Bottom bar */}\n <div className=\"flex flex-col gap-2 border-t border-[var(--border)] py-6 text-xs text-[var(--muted-foreground)] sm:flex-row sm:items-center sm:justify-between\">\n <p>© {new Date().getFullYear()} Grupo ELO Editorial. Todos os direitos reservados.</p>\n <nav aria-label=\"Links legais\" className=\"flex flex-wrap gap-4\">\n <a href=\"/editora/privacidade/politica\" className=\"transition-colors hover:text-[var(--foreground)]\">\n Política de Privacidade\n </a>\n <a href=\"/editora/privacidade/cookies\" className=\"transition-colors hover:text-[var(--foreground)]\">\n Cookies\n </a>\n <a href=\"/editora/privacidade/demais\" className=\"transition-colors hover:text-[var(--foreground)]\">\n Termos de Uso\n </a>\n </nav>\n </div>\n </div>\n </footer>\n );\n};\n\nFooter.displayName = 'Footer';\n\nexport { Footer };\n","import { type ElementType, type ReactNode } from 'react';\nimport { cn } from '../ui/utils';\n\nexport interface ContainerProps {\n children: ReactNode;\n /** Override the wrapper element. Default `'div'`. */\n as?: ElementType;\n className?: string;\n}\n\n/**\n * Page-level content wrapper. Centers content within `var(--container-max)`\n * (1280px by default in `@grupo-elo-editorial/design-tokens@^3.1.0`) and applies\n * the responsive `var(--container-px)` horizontal padding.\n *\n * @example\n * ```tsx\n * <Container as=\"section\">\n * <h2>Section heading</h2>\n * <p>Body content stays within the centered, padded container.</p>\n * </Container>\n * ```\n */\nexport function Container({ children, as: Tag = 'div', className }: ContainerProps) {\n return (\n <Tag\n data-slot=\"container\"\n className={cn('w-full mx-auto px-[var(--container-px)]', className)}\n style={{ maxWidth: 'var(--container-max)' }}\n >\n {children}\n </Tag>\n );\n}\n","import { type ReactNode } from 'react';\nimport { cn } from '../ui/utils';\n\nexport interface GridProps {\n children: ReactNode;\n /**\n * Override the default responsive column progression\n * (`grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4`) by appending Tailwind utility classes here.\n */\n className?: string;\n}\n\n/**\n * Responsive grid primitive. Defaults to the progression defined by the\n * `--grid-cols-{default,sm,md,lg}` tokens (1 → 2 → 3 → 4 columns) and the\n * `--grid-gutter` (1.5rem) gap, both shipped by\n * `@grupo-elo-editorial/design-tokens@^3.1.0`.\n *\n * @example\n * ```tsx\n * <Grid>\n * <Col><ProductCard ... /></Col>\n * <Col><ProductCard ... /></Col>\n * </Grid>\n * ```\n */\nexport function Grid({ children, className }: GridProps) {\n return (\n <div\n data-slot=\"grid\"\n className={cn(\n 'grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-[var(--grid-gutter)]',\n className\n )}\n >\n {children}\n </div>\n );\n}\n","import { type ReactNode } from 'react';\nimport { cn } from '../ui/utils';\n\nexport interface ColProps {\n children: ReactNode;\n /**\n * How many grid columns this cell spans (1–6). When omitted, the cell takes\n * one column at every breakpoint.\n */\n span?: 1 | 2 | 3 | 4 | 5 | 6;\n className?: string;\n}\n\nconst spanMap: Record<NonNullable<ColProps['span']>, string> = {\n 1: 'col-span-1',\n 2: 'col-span-2',\n 3: 'col-span-3',\n 4: 'col-span-4',\n 5: 'col-span-5',\n 6: 'col-span-6',\n};\n\n/**\n * Grid cell with explicit column span. Always includes `min-w-0` to prevent\n * grid items from overflowing when their content (long text, large images) is\n * wider than the available column — without this the implicit `min-width: auto`\n * on grid items would push the cell beyond its grid track.\n *\n * Use inside `<Grid>`. Not strictly required (you can use a plain `<div>` for\n * 1-column cells), but recommended for any cell that spans multiple columns.\n *\n * @example\n * ```tsx\n * <Grid>\n * <Col span={2}>Wide cell</Col>\n * <Col>Standard cell</Col>\n * <Col>Standard cell</Col>\n * </Grid>\n * ```\n */\nexport function Col({ children, span, className }: ColProps) {\n return (\n <div data-slot=\"col\" className={cn('min-w-0', span && spanMap[span], className)}>\n {children}\n </div>\n );\n}\n"],"names":["cn","inputs","twMerge","clsx","buttonVariants","cva","Button","forwardRef","className","variant","size","fullWidth","isLoading","leftIcon","rightIcon","children","disabled","props","ref","jsx","jsxs","Fragment","Loader2","Textarea","error","helperText","badgeVariants","Badge","icon","onRemove","avatarVariants","Avatar","src","alt","name","showStatus","statusType","imageError","setImageError","useState","getInitials","n","statusColors","statusSizes","User","spinnerVariants","Spinner","label","Divider","orientation","text","variantStyles","Rating","value","maxRating","readonly","onChange","showValue","hoverRating","setHoverRating","sizeClasses","handleClick","rating","displayRating","_","i","isFilled","Star","Input","type","Select","SelectPrimitive","SelectValue","SelectTrigger","ChevronDownIcon","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectItem","CheckIcon","ChevronUpIcon","Checkbox","CheckboxPrimitive","RadioGroup","RadioGroupPrimitive","RadioGroupItem","CircleIcon","Switch","SwitchPrimitive","MaybeLink","href","ProductCard","image","title","author","price","originalPrice","reviewCount","badge","badgeVariant","isSkeleton","isOutOfStock","onAddToCart","onToggleFavorite","isFavorite","ShoppingCart","Heart","SearchBar","onSearch","onClear","placeholder","controlledValue","internalValue","setInternalValue","handleChange","e","newValue","handleClear","handleKeyDown","Search","X","PriceDisplay","currency","showDiscount","installments","discount","originalSizeClasses","QuantitySelector","min","max","showLabel","handleIncrement","handleDecrement","handleInputChange","inputSizeClasses","Minus","Plus","FormGroup","htmlFor","required","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","asChild","Slot","BreadcrumbPage","BreadcrumbSeparator","ChevronRight","Accordion","AccordionPrimitive","AccordionItem","AccordionTrigger","AccordionContent","TooltipProvider","delayDuration","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","sideOffset","Hero","subtitle","description","primaryCTA","secondaryCTA","backgroundImage","overlay","EmptyState","action","displayIcon","Package","FileX","ErrorState","message","onRetry","onGoHome","showRetry","showHome","content","displayTitle","displayMessage","AlertCircle","RefreshCw","Home","ProductGrid","products","columns","gap","skeletonCount","emptyStateMessage","onEmptyAction","columnClasses","gapClasses","product","index","Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogOverlay","DialogContent","XIcon","DialogHeader","DialogFooter","DialogTitle","DialogDescription","Sheet","SheetPrimitive","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","SheetContent","side","SheetHeader","SheetFooter","SheetTitle","SheetDescription","TopAccessibilityBar","onThemeChange","onFontSizeChange","showA11yLink","theme","setTheme","fontSize","setFontSize","vlibrasLoaded","setVlibrasLoaded","useEffect","active","storedSize","script","handleThemeToggle","newTheme","handleFontIncrease","newSize","handleFontDecrease","Accessibility","ZoomOut","ZoomIn","Moon","Sun","v","HeroCarousel","slides","autoplayDelay","autoplay","currentIndex","setCurrentIndex","isAutoplayPaused","setIsAutoplayPaused","reduceMotion","setReduceMotion","mediaQuery","interval","prev","goToSlide","goToPrevious","goToNext","slide","ChevronLeft","NavigationMenu","viewport","NavigationMenuPrimitive","NavigationMenuViewport","NavigationMenuList","NavigationMenuItem","navigationMenuTriggerStyle","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuLink","DesktopSubMenu","items","item","_a","child","MobileNavItem","depth","open","setOpen","ChevronDown","MegaMenu","logo","rightSlot","searchSlot","drawerFooter","Menu","NAV_COLUMNS","SOCIAL_LINKS","Instagram","Facebook","Youtube","Linkedin","NewsletterForm","onSubmit","email","setEmail","submitted","setSubmitted","Mail","NavColumn","links","link","Footer","brand","onNewsletterSubmit","root","obs","logoSrc","logoAlt","tagline","Icon","col","Container","Tag","Grid","spanMap","Col","span"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/ui/utils.ts","../src/components/atoms/Button.tsx","../src/components/atoms/Textarea.tsx","../src/components/atoms/Badge.tsx","../src/components/atoms/Avatar.tsx","../src/components/atoms/Spinner.tsx","../src/components/atoms/Divider.tsx","../src/components/atoms/Rating.tsx","../src/components/ui/input.tsx","../src/components/ui/select.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/switch.tsx","../src/components/molecules/ProductCard.tsx","../src/components/molecules/SearchBar.tsx","../src/components/molecules/PriceDisplay.tsx","../src/components/molecules/QuantitySelector.tsx","../src/components/molecules/FormGroup.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/accordion.tsx","../src/components/ui/tooltip.tsx","../src/components/organisms/Hero.tsx","../src/components/organisms/EmptyState.tsx","../src/components/organisms/ErrorState.tsx","../src/components/organisms/ProductGrid.tsx","../src/components/ui/dialog.tsx","../src/components/ui/sheet.tsx","../src/components/layout/Container.tsx","../src/components/prd/TopAccessibilityBar.tsx","../src/components/prd/HeroCarousel.tsx","../src/components/ui/navigation-menu.tsx","../src/components/prd/MegaMenu.tsx","../src/components/prd/Footer.tsx","../src/components/layout/Grid.tsx","../src/components/layout/Col.tsx"],"sourcesContent":["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 { ButtonHTMLAttributes, forwardRef } from 'react';\nimport { Loader2 } from 'lucide-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../ui/utils';\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 rounded-lg font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 whitespace-nowrap',\n {\n variants: {\n variant: {\n primary: 'bg-[var(--brand-primary)] text-[var(--primary-foreground)] hover:bg-[var(--brand-primary-hover)] active:bg-[var(--brand-primary-active)] shadow-sm',\n secondary: 'border-2 border-[var(--brand-primary)] text-[var(--brand-primary)] bg-transparent hover:bg-[var(--brand-primary)] hover:text-[var(--primary-foreground)] active:bg-[var(--brand-primary-active)]',\n ghost: 'text-[var(--brand-primary)] bg-transparent hover:bg-[var(--accent)] active:bg-[var(--accent)]',\n danger: 'bg-[var(--destructive)] text-[var(--destructive-foreground)] hover:opacity-90 active:opacity-80 shadow-sm',\n link: 'text-[var(--brand-primary)] underline-offset-4 hover:underline p-0 h-auto',\n success: 'bg-[var(--success)] text-[var(--success-foreground)] hover:opacity-90 active:opacity-80 shadow-sm',\n },\n size: {\n sm: 'h-9 px-3 text-sm min-w-[44px]',\n md: 'h-11 px-4 text-base min-w-[44px]',\n lg: 'h-14 px-6 text-lg min-w-[44px]',\n },\n fullWidth: {\n true: 'w-full',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n);\n\nexport interface ButtonProps\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n isLoading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n}\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n fullWidth,\n isLoading,\n leftIcon,\n rightIcon,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n return (\n <button\n className={cn(buttonVariants({ variant, size, fullWidth, className }))}\n ref={ref}\n disabled={disabled || isLoading}\n {...props}\n >\n {isLoading ? (\n <>\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n {children && <span>{children}</span>}\n </>\n ) : (\n <>\n {leftIcon && <span className=\"inline-flex\">{leftIcon}</span>}\n {children}\n {rightIcon && <span className=\"inline-flex\">{rightIcon}</span>}\n </>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport { Button, buttonVariants };\n","import { TextareaHTMLAttributes, forwardRef } from 'react';\nimport { cn } from '../ui/utils';\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n error?: boolean;\n helperText?: string;\n}\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, error, helperText, ...props }, ref) => {\n return (\n <div className=\"w-full\">\n <textarea\n className={cn(\n 'flex min-h-[80px] w-full rounded-lg border-2 border-[var(--border)] bg-[var(--input-background)] px-3 py-2 text-base transition-colors',\n 'placeholder:text-[var(--muted-foreground)]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'resize-y',\n error && 'border-[var(--destructive)] focus-visible:ring-[var(--destructive)]',\n className\n )}\n ref={ref}\n {...props}\n />\n {helperText && (\n <p\n className={cn(\n 'mt-1.5 text-sm',\n error ? 'text-[var(--destructive)]' : 'text-[var(--muted-foreground)]'\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../ui/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full font-medium transition-colors whitespace-nowrap',\n {\n variants: {\n variant: {\n default: 'bg-[var(--primary)] text-[var(--primary-foreground)]',\n secondary: 'bg-[var(--secondary)] text-[var(--secondary-foreground)]',\n success: 'bg-[var(--success)] text-[var(--success-foreground)]',\n warning: 'bg-[var(--warning)] text-[var(--warning-foreground)]',\n danger: 'bg-[var(--destructive)] text-[var(--destructive-foreground)]',\n outline: 'border-2 border-[var(--brand-primary)] text-[var(--brand-primary)] bg-transparent',\n info: 'bg-[var(--info)] text-[var(--info-foreground)]',\n },\n size: {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n lg: 'px-3 py-1.5 text-base',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n }\n);\n\nexport interface BadgeProps\n extends HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {\n icon?: React.ReactNode;\n onRemove?: () => void;\n}\n\nconst Badge = forwardRef<HTMLDivElement, BadgeProps>(\n ({ className, variant, size, icon, onRemove, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(badgeVariants({ variant, size }), className)}\n {...props}\n >\n {icon && <span className=\"mr-1 inline-flex\">{icon}</span>}\n {children}\n {onRemove && (\n <button\n onClick={onRemove}\n className=\"ml-1 inline-flex hover:opacity-70 focus:outline-none focus:ring-1 focus:ring-[var(--ring)] rounded-full\"\n aria-label=\"Remove\"\n >\n ×\n </button>\n )}\n </div>\n );\n }\n);\n\nBadge.displayName = 'Badge';\n\nexport { Badge, badgeVariants };\n","'use client';\n\nimport { ImgHTMLAttributes, forwardRef, useState } from 'react';\nimport { User } from 'lucide-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../ui/utils';\n\nconst avatarVariants = cva(\n 'relative inline-flex items-center justify-center overflow-hidden rounded-full bg-[var(--muted)] text-[var(--muted-foreground)] flex-shrink-0',\n {\n variants: {\n size: {\n sm: 'h-8 w-8 text-sm',\n md: 'h-10 w-10 text-base',\n lg: 'h-12 w-12 text-lg',\n xl: 'h-16 w-16 text-xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport interface AvatarProps\n extends Omit<ImgHTMLAttributes<HTMLImageElement>, 'size'>,\n VariantProps<typeof avatarVariants> {\n name?: string;\n showStatus?: boolean;\n statusType?: 'online' | 'offline' | 'away' | 'busy';\n}\n\nconst Avatar = forwardRef<HTMLDivElement, AvatarProps>(\n ({ className, size, src, alt, name, showStatus, statusType = 'online', ...props }, ref) => {\n const [imageError, setImageError] = useState(false);\n\n const getInitials = (name: string) => {\n return name\n .split(' ')\n .map((n) => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2);\n };\n\n const statusColors = {\n online: 'bg-[var(--success)]',\n offline: 'bg-[var(--muted-foreground)]',\n away: 'bg-[var(--warning)]',\n busy: 'bg-[var(--destructive)]',\n };\n\n const statusSizes = {\n sm: 'h-2 w-2 border',\n md: 'h-2.5 w-2.5 border-2',\n lg: 'h-3 w-3 border-2',\n xl: 'h-4 w-4 border-2',\n };\n\n return (\n <div ref={ref} className={cn(avatarVariants({ size }), 'relative', className)}>\n {src && !imageError ? (\n <img\n src={src}\n alt={alt || name || 'Avatar'}\n onError={() => setImageError(true)}\n className=\"h-full w-full object-cover\"\n {...props}\n />\n ) : name ? (\n <span className=\"font-medium\">{getInitials(name)}</span>\n ) : (\n <User className=\"h-1/2 w-1/2\" />\n )}\n\n {showStatus && (\n <span\n className={cn(\n 'absolute bottom-0 right-0 rounded-full border-[var(--background)]',\n statusColors[statusType],\n statusSizes[size || 'md']\n )}\n aria-label={`Status: ${statusType}`}\n />\n )}\n </div>\n );\n }\n);\n\nAvatar.displayName = 'Avatar';\n\nexport { Avatar, avatarVariants };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { Loader2 } from 'lucide-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../ui/utils';\n\nconst spinnerVariants = cva('animate-spin text-[var(--brand-primary)]', {\n variants: {\n size: {\n sm: 'h-4 w-4',\n md: 'h-6 w-6',\n lg: 'h-8 w-8',\n xl: 'h-12 w-12',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport interface SpinnerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'children'>,\n VariantProps<typeof spinnerVariants> {\n label?: string;\n}\n\nconst Spinner = forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size, label, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-label={label || 'Loading'}\n className={cn('inline-flex items-center justify-center', className)}\n {...props}\n >\n <Loader2 className={cn(spinnerVariants({ size }))} />\n <span className=\"sr-only\">{label || 'Loading'}</span>\n </div>\n );\n }\n);\n\nSpinner.displayName = 'Spinner';\n\nexport { Spinner, spinnerVariants };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { cn } from '../ui/utils';\n\nexport interface DividerProps extends HTMLAttributes<HTMLHRElement> {\n orientation?: 'horizontal' | 'vertical';\n variant?: 'solid' | 'dashed' | 'dotted';\n text?: string;\n}\n\nconst Divider = forwardRef<HTMLHRElement, DividerProps>(\n ({ className, orientation = 'horizontal', variant = 'solid', text, ...props }, ref) => {\n const variantStyles = {\n solid: 'border-solid',\n dashed: 'border-dashed',\n dotted: 'border-dotted',\n };\n\n if (text && orientation === 'horizontal') {\n return (\n <div className={cn('flex items-center gap-4 my-4', className)} role=\"separator\">\n <hr\n ref={ref}\n className={cn(\n 'flex-1 border-[var(--border)]',\n variantStyles[variant]\n )}\n {...props}\n />\n <span className=\"text-sm text-[var(--muted-foreground)]\">{text}</span>\n <hr\n className={cn(\n 'flex-1 border-[var(--border)]',\n variantStyles[variant]\n )}\n />\n </div>\n );\n }\n\n return (\n <hr\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n 'border-[var(--border)]',\n variantStyles[variant],\n orientation === 'vertical'\n ? 'h-full w-px border-l'\n : 'w-full border-t my-4',\n className\n )}\n {...props}\n />\n );\n }\n);\n\nDivider.displayName = 'Divider';\n\nexport { Divider };\n","'use client';\n\nimport { HTMLAttributes, forwardRef, useState } from 'react';\nimport { Star } from 'lucide-react';\nimport { cn } from '../ui/utils';\n\nexport interface RatingProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n value?: number;\n maxRating?: number;\n size?: 'sm' | 'md' | 'lg';\n readonly?: boolean;\n onChange?: (rating: number) => void;\n showValue?: boolean;\n}\n\nconst Rating = forwardRef<HTMLDivElement, RatingProps>(\n (\n {\n className,\n value = 0,\n maxRating = 5,\n size = 'md',\n readonly = false,\n onChange,\n showValue = false,\n ...props\n },\n ref\n ) => {\n const [hoverRating, setHoverRating] = useState(0);\n\n const sizeClasses = {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n };\n\n const handleClick = (rating: number) => {\n if (!readonly && onChange) {\n onChange(rating);\n }\n };\n\n const displayRating = hoverRating || value;\n\n return (\n <div\n ref={ref}\n className={cn('inline-flex items-center gap-1', className)}\n role=\"group\"\n aria-label={`Rating: ${value} out of ${maxRating}`}\n {...props}\n >\n <div className=\"flex items-center gap-0.5\">\n {Array.from({ length: maxRating }, (_, i) => i + 1).map((rating) => {\n const isFilled = rating <= displayRating;\n const isPartial = rating === Math.ceil(displayRating) && displayRating % 1 !== 0;\n\n return (\n <button\n key={rating}\n type=\"button\"\n disabled={readonly}\n onClick={() => handleClick(rating)}\n onMouseEnter={() => !readonly && setHoverRating(rating)}\n onMouseLeave={() => !readonly && setHoverRating(0)}\n className={cn(\n 'transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-1 rounded',\n readonly ? 'cursor-default' : 'cursor-pointer hover:scale-110'\n )}\n aria-label={`Rate ${rating} out of ${maxRating}`}\n >\n <Star\n className={cn(\n sizeClasses[size],\n 'transition-all',\n isFilled\n ? 'fill-[var(--warning)] text-[var(--warning)]'\n : 'fill-none text-[var(--muted-foreground)]'\n )}\n />\n </button>\n );\n })}\n </div>\n\n {showValue && (\n <span className=\"ml-1 text-sm font-medium text-[var(--foreground)]\">\n {value.toFixed(1)}\n </span>\n )}\n </div>\n );\n }\n);\n\nRating.displayName = 'Rating';\n\nexport { Rating };\n","import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base bg-input-background transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport {\n CheckIcon,\n ChevronDownIcon,\n ChevronUpIcon,\n} from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-input-background px-3 py-2 text-sm whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border bg-input-background dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\n\nimport { cn } from \"./utils\";\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-switch-background focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-card dark:data-[state=unchecked]:bg-card-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","import { forwardRef, HTMLAttributes } from 'react';\nimport { ShoppingCart, Heart } from 'lucide-react';\nimport { cn } from '../ui/utils';\nimport { Button } from '../atoms/Button';\nimport { Badge } from '../atoms/Badge';\nimport { Rating } from '../atoms/Rating';\n\nexport interface ProductCardProps extends HTMLAttributes<HTMLDivElement> {\n image: string;\n title: string;\n author?: string;\n price: number;\n originalPrice?: number;\n rating?: number;\n reviewCount?: number;\n badge?: string;\n badgeVariant?: 'default' | 'success' | 'warning' | 'danger';\n isSkeleton?: boolean;\n isOutOfStock?: boolean;\n onAddToCart?: () => void;\n onToggleFavorite?: () => void;\n isFavorite?: boolean;\n /** Makes the card image and title clickable as a link. */\n href?: string;\n /** 'vertical' (default) stacks image above content; 'horizontal' places a compact image to the left. */\n orientation?: 'vertical' | 'horizontal';\n}\n\nfunction MaybeLink({\n href,\n className,\n children,\n}: {\n href?: string;\n className?: string;\n children: React.ReactNode;\n}) {\n if (href) {\n return (\n <a href={href} className={className} tabIndex={-1} aria-hidden=\"true\">\n {children}\n </a>\n );\n }\n return <div className={className}>{children}</div>;\n}\n\nconst ProductCard = forwardRef<HTMLDivElement, ProductCardProps>(\n (\n {\n className,\n image,\n title,\n author,\n price,\n originalPrice,\n rating,\n reviewCount,\n badge,\n badgeVariant = 'default',\n isSkeleton = false,\n isOutOfStock = false,\n onAddToCart,\n onToggleFavorite,\n isFavorite = false,\n href,\n orientation = 'vertical',\n ...props\n },\n ref\n ) => {\n if (isSkeleton) {\n return (\n <div\n ref={ref}\n className={cn(\n 'flex rounded-lg border-2 border-[var(--border)] bg-[var(--card)] p-4 animate-pulse',\n orientation === 'horizontal' ? 'flex-row gap-3' : 'flex-col',\n className\n )}\n {...props}\n >\n <div\n className={cn(\n 'rounded-lg bg-[var(--muted)]',\n orientation === 'horizontal' ? 'h-24 w-20 shrink-0' : 'h-56 sm:h-60 lg:h-64 w-full'\n )}\n />\n <div className={cn('flex flex-col gap-2', orientation === 'horizontal' ? 'flex-1' : 'mt-3')}>\n <div className=\"h-4 w-3/4 rounded bg-[var(--muted)]\" />\n <div className=\"h-4 w-1/2 rounded bg-[var(--muted)]\" />\n <div className=\"h-10 w-full rounded bg-[var(--muted)]\" />\n </div>\n </div>\n );\n }\n\n // ── Horizontal layout ──────────────────────────────────────────────────\n if (orientation === 'horizontal') {\n return (\n <div\n ref={ref}\n className={cn(\n 'group relative flex flex-row gap-3 rounded-lg border-2 border-[var(--border)] bg-[var(--card)] p-3 transition-all hover:shadow-md',\n isOutOfStock && 'opacity-60',\n className\n )}\n {...props}\n >\n <MaybeLink\n href={href}\n className=\"block h-24 w-20 shrink-0 overflow-hidden rounded-lg\"\n >\n <img\n src={image}\n alt={title}\n className=\"h-full w-full object-contain transition-transform duration-300 group-hover:scale-105\"\n />\n </MaybeLink>\n\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n {href ? (\n <a\n href={href}\n className=\"line-clamp-2 text-sm font-medium text-[var(--card-foreground)] hover:text-[var(--brand-primary)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] rounded\"\n >\n {title}\n </a>\n ) : (\n <h3 className=\"line-clamp-2 text-sm font-medium text-[var(--card-foreground)]\">\n {title}\n </h3>\n )}\n\n {author && (\n <p className=\"text-xs text-[var(--muted-foreground)]\">{author}</p>\n )}\n\n {rating !== undefined && (\n <div className=\"flex items-center gap-1\">\n <Rating value={rating} size=\"sm\" readonly />\n {reviewCount !== undefined && (\n <span className=\"text-xs text-[var(--muted-foreground)]\">({reviewCount})</span>\n )}\n </div>\n )}\n\n <div className=\"flex items-baseline gap-2\">\n <span className=\"text-base font-bold text-[var(--foreground)]\">\n R$ {price.toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}\n </span>\n {originalPrice && originalPrice > price && (\n <span className=\"text-xs text-[var(--muted-foreground)] line-through\">\n R$ {originalPrice.toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}\n </span>\n )}\n </div>\n\n {onAddToCart && (\n <Button\n onClick={onAddToCart}\n disabled={isOutOfStock}\n variant=\"primary\"\n size=\"sm\"\n fullWidth\n leftIcon={<ShoppingCart className=\"h-3.5 w-3.5\" />}\n className=\"mt-auto\"\n >\n {isOutOfStock ? 'Indisponível' : 'Adicionar'}\n </Button>\n )}\n </div>\n </div>\n );\n }\n\n // ── Vertical layout (default) ──────────────────────────────────────────\n return (\n <div\n ref={ref}\n className={cn(\n 'group relative flex flex-col rounded-lg border-2 border-[var(--border)] bg-[var(--card)] transition-all hover:shadow-lg',\n isOutOfStock && 'opacity-60',\n className\n )}\n {...props}\n >\n <MaybeLink\n href={href}\n className=\"relative block h-56 sm:h-60 lg:h-64 w-full overflow-hidden rounded-t-lg\"\n >\n {/* Blur backdrop — same src, CSS only, scale avoids white halo at edges */}\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 z-0 bg-cover bg-center\"\n style={{\n backgroundImage: `url(${image})`,\n filter: 'blur(14px) brightness(0.85)',\n transform: 'scale(1.2)',\n }}\n />\n\n <img\n src={image}\n alt={title}\n className=\"relative z-10 h-full w-full object-cover transition-transform group-hover:scale-105\"\n />\n\n {badge && (\n <div className=\"absolute left-3 top-3 z-20\">\n <Badge variant={badgeVariant}>{badge}</Badge>\n </div>\n )}\n\n {isOutOfStock && (\n <div className=\"absolute inset-0 z-20 flex items-center justify-center bg-black/60\">\n <Badge variant=\"danger\" size=\"lg\">Esgotado</Badge>\n </div>\n )}\n </MaybeLink>\n\n {onToggleFavorite && (\n <button\n onClick={onToggleFavorite}\n className=\"absolute right-3 top-3 rounded-full bg-white/90 p-2 transition-all hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]\"\n aria-label={isFavorite ? 'Remover dos favoritos' : 'Adicionar aos favoritos'}\n >\n <Heart\n className={cn(\n 'h-5 w-5',\n isFavorite\n ? 'fill-[var(--destructive)] text-[var(--destructive)]'\n : 'text-[var(--foreground)]'\n )}\n />\n </button>\n )}\n\n <div className=\"flex flex-1 flex-col p-4\">\n {href ? (\n <a\n href={href}\n className=\"line-clamp-2 text-base font-medium text-[var(--card-foreground)] hover:text-[var(--brand-primary)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] rounded\"\n >\n {title}\n </a>\n ) : (\n <h3 className=\"line-clamp-2 text-base font-medium text-[var(--card-foreground)]\">\n {title}\n </h3>\n )}\n\n {author && (\n <p className=\"mt-1 text-sm text-[var(--muted-foreground)]\">{author}</p>\n )}\n\n {rating !== undefined && (\n <div className=\"mt-2 flex items-center gap-2\">\n <Rating value={rating} size=\"sm\" readonly />\n {reviewCount !== undefined && (\n <span className=\"text-sm text-[var(--muted-foreground)]\">({reviewCount})</span>\n )}\n </div>\n )}\n\n <div className=\"mt-3 flex items-baseline gap-2\">\n <span className=\"text-xl font-bold text-[var(--foreground)]\">\n R$ {price.toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}\n </span>\n {originalPrice && originalPrice > price && (\n <span className=\"text-sm text-[var(--muted-foreground)] line-through\">\n R$ {originalPrice.toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}\n </span>\n )}\n </div>\n\n {onAddToCart && (\n <Button\n onClick={onAddToCart}\n disabled={isOutOfStock}\n variant=\"primary\"\n size=\"md\"\n fullWidth\n leftIcon={<ShoppingCart className=\"h-4 w-4\" />}\n className={cn(\n 'mt-4 transition-all duration-200',\n 'opacity-0 translate-y-2',\n 'group-hover:opacity-100 group-hover:translate-y-0',\n 'focus-visible:opacity-100 focus-visible:translate-y-0',\n )}\n >\n {isOutOfStock ? 'Indisponível' : 'Adicionar'}\n </Button>\n )}\n </div>\n </div>\n );\n }\n);\n\nProductCard.displayName = 'ProductCard';\n\nexport { ProductCard };\n","'use client';\n\nimport { forwardRef, InputHTMLAttributes, useState } from 'react';\nimport { Search, X, Loader2 } from 'lucide-react';\nimport { cn } from '../ui/utils';\n\nexport interface SearchBarProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n onSearch?: (value: string) => void;\n onClear?: () => void;\n isLoading?: boolean;\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst SearchBar = forwardRef<HTMLInputElement, SearchBarProps>(\n (\n {\n className,\n onSearch,\n onClear,\n isLoading = false,\n size = 'md',\n placeholder = 'Buscar...',\n value: controlledValue,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState('');\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n const sizeClasses = {\n sm: 'h-9 text-sm',\n md: 'h-11 text-base',\n lg: 'h-14 text-lg',\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n onChange?.(e);\n };\n\n const handleClear = () => {\n if (controlledValue === undefined) {\n setInternalValue('');\n }\n onClear?.();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && onSearch) {\n onSearch(value as string);\n }\n };\n\n return (\n <div className={cn('relative w-full', className)}>\n <div className=\"relative flex items-center\">\n <Search className=\"absolute left-3 h-5 w-5 text-[var(--muted-foreground)] pointer-events-none\" />\n\n <input\n ref={ref}\n type=\"search\"\n value={value}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n className={cn(\n 'w-full rounded-lg border-2 border-[var(--border)] bg-[var(--input-background)] pl-10 pr-10 font-normal transition-colors',\n 'placeholder:text-[var(--muted-foreground)]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n sizeClasses[size]\n )}\n {...props}\n />\n\n <div className=\"absolute right-3 flex items-center gap-1\">\n {isLoading && <Loader2 className=\"h-5 w-5 animate-spin text-[var(--muted-foreground)]\" />}\n\n {value && !isLoading && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"rounded-full p-1 hover:bg-[var(--muted)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]\"\n aria-label=\"Clear search\"\n >\n <X className=\"h-4 w-4 text-[var(--muted-foreground)]\" />\n </button>\n )}\n </div>\n </div>\n </div>\n );\n }\n);\n\nSearchBar.displayName = 'SearchBar';\n\nexport { SearchBar };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { cn } from '../ui/utils';\nimport { Badge } from '../atoms/Badge';\n\nexport interface PriceDisplayProps extends HTMLAttributes<HTMLDivElement> {\n price: number;\n originalPrice?: number;\n currency?: string;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n showDiscount?: boolean;\n installments?: {\n count: number;\n value: number;\n };\n}\n\nconst PriceDisplay = forwardRef<HTMLDivElement, PriceDisplayProps>(\n (\n {\n className,\n price,\n originalPrice,\n currency = 'R$',\n size = 'md',\n showDiscount = true,\n installments,\n ...props\n },\n ref\n ) => {\n const discount =\n originalPrice && originalPrice > price\n ? Math.round(((originalPrice - price) / originalPrice) * 100)\n : 0;\n\n const sizeClasses = {\n sm: 'text-base',\n md: 'text-xl',\n lg: 'text-2xl',\n xl: 'text-4xl',\n };\n\n const originalSizeClasses = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n xl: 'text-xl',\n };\n\n return (\n <div ref={ref} className={cn('flex flex-col gap-1', className)} {...props}>\n <div className=\"flex items-center gap-2 flex-wrap\">\n <div className=\"flex items-baseline gap-2\">\n <span className={cn('font-bold text-[var(--foreground)]', sizeClasses[size])}>\n {currency} {price.toFixed(2)}\n </span>\n\n {originalPrice && originalPrice > price && (\n <span\n className={cn(\n 'text-[var(--muted-foreground)] line-through',\n originalSizeClasses[size]\n )}\n >\n {currency} {originalPrice.toFixed(2)}\n </span>\n )}\n </div>\n\n {showDiscount && discount > 0 && (\n <Badge variant=\"success\" size=\"sm\">\n -{discount}%\n </Badge>\n )}\n </div>\n\n {installments && (\n <p className=\"text-sm text-[var(--muted-foreground)]\">\n ou {installments.count}x de {currency} {installments.value.toFixed(2)} sem juros\n </p>\n )}\n </div>\n );\n }\n);\n\nPriceDisplay.displayName = 'PriceDisplay';\n\nexport { PriceDisplay };\n","import { forwardRef, HTMLAttributes } from 'react';\nimport { Minus, Plus } from 'lucide-react';\nimport { cn } from '../ui/utils';\nimport { Button } from '../atoms/Button';\n\nexport interface QuantitySelectorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n value: number;\n min?: number;\n max?: number;\n onChange: (value: number) => void;\n size?: 'sm' | 'md' | 'lg';\n disabled?: boolean;\n showLabel?: boolean;\n}\n\nconst QuantitySelector = forwardRef<HTMLDivElement, QuantitySelectorProps>(\n (\n {\n className,\n value,\n min = 1,\n max = 99,\n onChange,\n size = 'md',\n disabled = false,\n showLabel = false,\n ...props\n },\n ref\n ) => {\n const handleIncrement = () => {\n if (value < max) {\n onChange(value + 1);\n }\n };\n\n const handleDecrement = () => {\n if (value > min) {\n onChange(value - 1);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = parseInt(e.target.value);\n if (!isNaN(newValue) && newValue >= min && newValue <= max) {\n onChange(newValue);\n }\n };\n\n const sizeClasses = {\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12',\n };\n\n const inputSizeClasses = {\n sm: 'h-8 w-12 text-sm',\n md: 'h-10 w-14 text-base',\n lg: 'h-12 w-16 text-lg',\n };\n\n return (\n <div ref={ref} className={cn('inline-flex flex-col gap-1', className)} {...props}>\n {showLabel && (\n <label className=\"text-sm font-medium text-[var(--foreground)]\">\n Quantidade\n </label>\n )}\n\n <div className=\"inline-flex items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"sm\"\n onClick={handleDecrement}\n disabled={disabled || value <= min}\n className={cn(sizeClasses[size], 'p-0')}\n aria-label=\"Decrease quantity\"\n >\n <Minus className=\"h-4 w-4\" />\n </Button>\n\n <input\n type=\"number\"\n value={value}\n onChange={handleInputChange}\n min={min}\n max={max}\n disabled={disabled}\n className={cn(\n 'rounded-lg border-2 border-[var(--border)] bg-[var(--input-background)] text-center font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n '[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none',\n inputSizeClasses[size]\n )}\n aria-label=\"Quantity\"\n />\n\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"sm\"\n onClick={handleIncrement}\n disabled={disabled || value >= max}\n className={cn(sizeClasses[size], 'p-0')}\n aria-label=\"Increase quantity\"\n >\n <Plus className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n );\n }\n);\n\nQuantitySelector.displayName = 'QuantitySelector';\n\nexport { QuantitySelector };\n","import { HTMLAttributes, forwardRef, ReactNode } from 'react';\nimport { cn } from '../ui/utils';\n\nexport interface FormGroupProps extends HTMLAttributes<HTMLDivElement> {\n label?: string;\n htmlFor?: string;\n required?: boolean;\n error?: string;\n helperText?: string;\n children: ReactNode;\n}\n\nconst FormGroup = forwardRef<HTMLDivElement, FormGroupProps>(\n ({ className, label, htmlFor, required, error, helperText, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('flex flex-col gap-1.5', className)} {...props}>\n {label && (\n <label\n htmlFor={htmlFor}\n className=\"text-sm font-medium text-[var(--foreground)]\"\n >\n {label}\n {required && <span className=\"ml-1 text-[var(--destructive)]\">*</span>}\n </label>\n )}\n\n {children}\n\n {(error || helperText) && (\n <p\n className={cn(\n 'text-sm',\n error ? 'text-[var(--destructive)]' : 'text-[var(--muted-foreground)]'\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nFormGroup.displayName = 'FormGroup';\n\nexport { FormGroup };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />;\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"hover:text-foreground transition-colors\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"text-foreground font-normal\", className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n );\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"./utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { cn } from '../ui/utils';\nimport { Button } from '../atoms/Button';\n\nexport interface HeroProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'default' | 'centered' | 'split';\n title: string;\n subtitle?: string;\n description?: string;\n primaryCTA?: {\n label: string;\n onClick: () => void;\n };\n secondaryCTA?: {\n label: string;\n onClick: () => void;\n };\n backgroundImage?: string;\n overlay?: boolean;\n children?: React.ReactNode;\n}\n\nconst Hero = forwardRef<HTMLDivElement, HeroProps>(\n (\n {\n className,\n variant = 'default',\n title,\n subtitle,\n description,\n primaryCTA,\n secondaryCTA,\n backgroundImage,\n overlay = true,\n children,\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n default: 'items-start text-left',\n centered: 'items-center text-center',\n split: 'lg:grid lg:grid-cols-2 lg:gap-12 items-center',\n };\n\n return (\n <section\n ref={ref}\n className={cn(\n 'relative flex min-h-[400px] w-full flex-col justify-center px-6 py-16 lg:px-12 lg:py-24',\n variantClasses[variant],\n className\n )}\n {...props}\n >\n {backgroundImage && (\n <>\n <div\n className=\"absolute inset-0 bg-cover bg-center bg-no-repeat\"\n style={{ backgroundImage: `url(${backgroundImage})` }}\n />\n {overlay && (\n <div className=\"absolute inset-0 bg-gradient-to-r from-black/70 to-black/30\" />\n )}\n </>\n )}\n\n <div\n className={cn(\n 'relative z-10 max-w-7xl mx-auto w-full',\n variant === 'centered' && 'flex flex-col items-center'\n )}\n >\n <div className={cn('max-w-3xl', variant === 'split' && 'max-w-none')}>\n {subtitle && (\n <p\n className={cn(\n 'mb-4 text-sm font-semibold uppercase tracking-wider',\n backgroundImage\n ? 'text-[var(--warning)]'\n : 'text-[var(--brand-primary)]'\n )}\n >\n {subtitle}\n </p>\n )}\n\n <h1\n className={cn(\n 'text-4xl font-bold leading-tight lg:text-5xl xl:text-6xl',\n backgroundImage ? 'text-white' : 'text-[var(--foreground)]'\n )}\n >\n {title}\n </h1>\n\n {description && (\n <p\n className={cn(\n 'mt-6 text-lg lg:text-xl',\n backgroundImage\n ? 'text-gray-200'\n : 'text-[var(--muted-foreground)]'\n )}\n >\n {description}\n </p>\n )}\n\n {(primaryCTA || secondaryCTA) && (\n <div className=\"mt-8 flex flex-wrap gap-4\">\n {primaryCTA && (\n <Button\n size=\"lg\"\n onClick={primaryCTA.onClick}\n variant=\"primary\"\n >\n {primaryCTA.label}\n </Button>\n )}\n\n {secondaryCTA && (\n <Button\n size=\"lg\"\n onClick={secondaryCTA.onClick}\n variant=\"secondary\"\n >\n {secondaryCTA.label}\n </Button>\n )}\n </div>\n )}\n </div>\n\n {variant === 'split' && children && (\n <div className=\"mt-8 lg:mt-0\">{children}</div>\n )}\n </div>\n\n {variant !== 'split' && children && (\n <div className=\"relative z-10 mt-12 w-full max-w-7xl mx-auto\">\n {children}\n </div>\n )}\n </section>\n );\n }\n);\n\nHero.displayName = 'Hero';\n\nexport { Hero };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { Package, Search, ShoppingCart, FileX } from 'lucide-react';\nimport { cn } from '../ui/utils';\nimport { Button } from '../atoms/Button';\n\nexport interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'default' | 'search' | 'cart' | 'error';\n icon?: React.ReactNode;\n title: string;\n description?: string;\n action?: {\n label: string;\n onClick: () => void;\n };\n}\n\nconst EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(\n (\n {\n className,\n variant = 'default',\n icon,\n title,\n description,\n action,\n ...props\n },\n ref\n ) => {\n const defaultIcons = {\n default: <Package className=\"h-16 w-16\" />,\n search: <Search className=\"h-16 w-16\" />,\n cart: <ShoppingCart className=\"h-16 w-16\" />,\n error: <FileX className=\"h-16 w-16\" />,\n };\n\n const displayIcon = icon || defaultIcons[variant];\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col items-center justify-center py-16 px-6 text-center',\n className\n )}\n {...props}\n >\n <div className=\"rounded-full bg-[var(--muted)] p-6 text-[var(--muted-foreground)]\">\n {displayIcon}\n </div>\n\n <h3 className=\"mt-6 text-xl font-semibold text-[var(--foreground)]\">\n {title}\n </h3>\n\n {description && (\n <p className=\"mt-2 max-w-md text-[var(--muted-foreground)]\">\n {description}\n </p>\n )}\n\n {action && (\n <Button\n onClick={action.onClick}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-6\"\n >\n {action.label}\n </Button>\n )}\n </div>\n );\n }\n);\n\nEmptyState.displayName = 'EmptyState';\n\nexport { EmptyState };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { AlertCircle, RefreshCw, Home } from 'lucide-react';\nimport { cn } from '../ui/utils';\nimport { Button } from '../atoms/Button';\n\nexport interface ErrorStateProps extends HTMLAttributes<HTMLDivElement> {\n type?: '404' | '500' | 'network' | 'generic';\n title?: string;\n message?: string;\n onRetry?: () => void;\n onGoHome?: () => void;\n showRetry?: boolean;\n showHome?: boolean;\n}\n\nconst ErrorState = forwardRef<HTMLDivElement, ErrorStateProps>(\n (\n {\n className,\n type = 'generic',\n title,\n message,\n onRetry,\n onGoHome,\n showRetry = true,\n showHome = true,\n ...props\n },\n ref\n ) => {\n const defaultContent = {\n '404': {\n title: 'Página não encontrada',\n message: 'A página que você está procurando não existe ou foi movida.',\n code: '404',\n },\n '500': {\n title: 'Erro no servidor',\n message: 'Algo deu errado do nosso lado. Por favor, tente novamente mais tarde.',\n code: '500',\n },\n network: {\n title: 'Erro de conexão',\n message: 'Não foi possível conectar ao servidor. Verifique sua conexão com a internet.',\n code: '',\n },\n generic: {\n title: 'Algo deu errado',\n message: 'Ocorreu um erro inesperado. Por favor, tente novamente.',\n code: '',\n },\n };\n\n const content = defaultContent[type];\n const displayTitle = title || content.title;\n const displayMessage = message || content.message;\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex min-h-[500px] flex-col items-center justify-center py-16 px-6 text-center',\n className\n )}\n role=\"alert\"\n aria-live=\"assertive\"\n {...props}\n >\n <div className=\"flex flex-col items-center gap-4\">\n {content.code && (\n <h1 className=\"text-9xl font-bold text-[var(--muted)] opacity-40\">\n {content.code}\n </h1>\n )}\n\n <div className=\"rounded-full bg-[var(--destructive)]/10 p-6 text-[var(--destructive)]\">\n <AlertCircle className=\"h-16 w-16\" />\n </div>\n </div>\n\n <h2 className=\"mt-6 text-2xl font-bold text-[var(--foreground)]\">\n {displayTitle}\n </h2>\n\n <p className=\"mt-2 max-w-md text-[var(--muted-foreground)]\">\n {displayMessage}\n </p>\n\n <div className=\"mt-8 flex flex-wrap gap-4 justify-center\">\n {showRetry && onRetry && (\n <Button\n onClick={onRetry}\n variant=\"primary\"\n size=\"lg\"\n leftIcon={<RefreshCw className=\"h-5 w-5\" />}\n >\n Tentar novamente\n </Button>\n )}\n\n {showHome && onGoHome && (\n <Button\n onClick={onGoHome}\n variant=\"secondary\"\n size=\"lg\"\n leftIcon={<Home className=\"h-5 w-5\" />}\n >\n Voltar ao início\n </Button>\n )}\n </div>\n </div>\n );\n }\n);\n\nErrorState.displayName = 'ErrorState';\n\nexport { ErrorState };\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { cn } from '../ui/utils';\nimport { ProductCard, ProductCardProps } from '../molecules/ProductCard';\nimport { EmptyState } from './EmptyState';\nimport { Spinner } from '../atoms/Spinner';\n\nexport interface ProductGridProps extends HTMLAttributes<HTMLDivElement> {\n products: ProductCardProps[];\n columns?: 2 | 3 | 4 | 5;\n gap?: 'sm' | 'md' | 'lg';\n isLoading?: boolean;\n skeletonCount?: number;\n emptyStateMessage?: string;\n onEmptyAction?: () => void;\n}\n\nconst ProductGrid = forwardRef<HTMLDivElement, ProductGridProps>(\n (\n {\n className,\n products,\n columns = 4,\n gap = 'md',\n isLoading = false,\n skeletonCount = 8,\n emptyStateMessage = 'Nenhum produto encontrado',\n onEmptyAction,\n ...props\n },\n ref\n ) => {\n const columnClasses = {\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-2 sm:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-2 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',\n 5: 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5',\n };\n\n const gapClasses = {\n sm: 'gap-4',\n md: 'gap-6',\n lg: 'gap-8',\n };\n\n if (isLoading) {\n return (\n <div\n ref={ref}\n className={cn(\n 'grid',\n columnClasses[columns],\n gapClasses[gap],\n className\n )}\n {...props}\n >\n {Array.from({ length: skeletonCount }).map((_, i) => (\n <ProductCard\n key={i}\n image=\"\"\n title=\"\"\n price={0}\n isSkeleton\n />\n ))}\n </div>\n );\n }\n\n if (products.length === 0) {\n return (\n <EmptyState\n variant=\"search\"\n title={emptyStateMessage}\n description=\"Tente ajustar seus filtros ou realizar uma nova busca\"\n action={\n onEmptyAction\n ? {\n label: 'Limpar filtros',\n onClick: onEmptyAction,\n }\n : undefined\n }\n />\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'grid',\n columnClasses[columns],\n gapClasses[gap],\n className\n )}\n {...props}\n >\n {products.map((product, index) => (\n <ProductCard key={index} {...product} />\n ))}\n </div>\n );\n }\n);\n\nProductGrid.displayName = 'ProductGrid';\n\nexport { ProductGrid };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content>) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\">\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className,\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","import { type ElementType, type ReactNode } from 'react';\nimport { cn } from '../ui/utils';\n\nexport interface ContainerProps {\n children: ReactNode;\n /** Override the wrapper element. Default `'div'`. */\n as?: ElementType;\n className?: string;\n}\n\n/**\n * Page-level content wrapper. Centers content within `var(--container-max)`\n * (1280px by default in `@grupo-elo-editorial/design-tokens@^3.1.0`) and applies\n * the responsive `var(--container-px)` horizontal padding.\n *\n * @example\n * ```tsx\n * <Container as=\"section\">\n * <h2>Section heading</h2>\n * <p>Body content stays within the centered, padded container.</p>\n * </Container>\n * ```\n */\nexport function Container({ children, as: Tag = 'div', className }: ContainerProps) {\n return (\n <Tag\n data-slot=\"container\"\n className={cn('w-full mx-auto px-[var(--container-px)]', className)}\n style={{ maxWidth: 'var(--container-max)' }}\n >\n {children}\n </Tag>\n );\n}\n","'use client';\n\nimport { HTMLAttributes, forwardRef, useState, useEffect } from 'react';\nimport { Sun, Moon, ZoomIn, ZoomOut, Accessibility } from 'lucide-react';\nimport { cn } from '../ui/utils';\nimport { Container } from '../layout/Container';\n\nexport interface TopAccessibilityBarProps extends HTMLAttributes<HTMLDivElement> {\n onThemeChange?: (theme: 'light' | 'dark') => void;\n onFontSizeChange?: (size: number) => void;\n showA11yLink?: boolean;\n}\n\nconst TopAccessibilityBar = forwardRef<HTMLDivElement, TopAccessibilityBarProps>(\n ({ className, onThemeChange, onFontSizeChange, showA11yLink = false, ...props }, ref) => {\n const [theme, setTheme] = useState<'light' | 'dark'>('light');\n const [fontSize, setFontSize] = useState(16);\n const [vlibrasLoaded, setVlibrasLoaded] = useState(false);\n\n useEffect(() => {\n // Restore persisted theme (key: 'a11y-theme')\n const stored = localStorage.getItem('a11y-theme') as 'light' | 'dark' | null;\n const active = stored ?? (document.documentElement.getAttribute('data-theme') as 'light' | 'dark' | null) ?? 'light';\n setTheme(active);\n\n // Restore persisted font size (key: 'a11y-font-size')\n const storedSize = Number(localStorage.getItem('a11y-font-size'));\n if (Number.isFinite(storedSize) && storedSize > 0) {\n setFontSize(storedSize);\n }\n }, []);\n\n useEffect(() => {\n // Load VLibras script\n if (!vlibrasLoaded && typeof window !== 'undefined') {\n const existingScript = document.querySelector('script[src*=\"vlibras\"]');\n if (!existingScript) {\n const script = document.createElement('script');\n script.src = 'https://vlibras.gov.br/app/vlibras-plugin.js';\n script.async = true;\n script.onload = () => {\n setVlibrasLoaded(true);\n // Initialize VLibras\n if ((window as any).VLibras) {\n new (window as any).VLibras.Widget('https://vlibras.gov.br/app');\n }\n };\n document.body.appendChild(script);\n }\n }\n }, [vlibrasLoaded]);\n\n const handleThemeToggle = () => {\n const newTheme = theme === 'light' ? 'dark' : 'light';\n setTheme(newTheme);\n // Bug fix: usar data-theme (contrato do design-tokens), não classList 'dark'\n document.documentElement.setAttribute('data-theme', newTheme);\n localStorage.setItem('a11y-theme', newTheme);\n onThemeChange?.(newTheme);\n };\n\n const handleFontIncrease = () => {\n const newSize = Math.min(fontSize + 2, 24);\n setFontSize(newSize);\n document.documentElement.style.setProperty('--font-size', `${newSize}px`);\n document.documentElement.style.fontSize = `${newSize}px`;\n localStorage.setItem('a11y-font-size', newSize.toString());\n onFontSizeChange?.(newSize);\n };\n\n const handleFontDecrease = () => {\n const newSize = Math.max(fontSize - 2, 12);\n setFontSize(newSize);\n document.documentElement.style.setProperty('--font-size', `${newSize}px`);\n document.documentElement.style.fontSize = `${newSize}px`;\n localStorage.setItem('a11y-font-size', newSize.toString());\n onFontSizeChange?.(newSize);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'w-full border-b border-[var(--border)] bg-[var(--card)] sticky top-0 z-50',\n className\n )}\n role=\"toolbar\"\n aria-label=\"Ferramentas de acessibilidade\"\n {...props}\n >\n <Container className=\"py-2 flex items-center justify-between\">\n <div className=\"flex items-center gap-2 text-sm text-[var(--muted-foreground)]\">\n <Accessibility className=\"h-4 w-4 flex-shrink-0\" aria-hidden=\"true\" />\n <span className=\"hidden sm:inline\">Ferramentas de Acessibilidade</span>\n </div>\n\n <div className=\"flex items-center gap-2 md:gap-4\">\n {showA11yLink && (\n <a\n href=\"/acessibilidade\"\n className=\"flex items-center gap-1.5 text-sm text-[var(--muted-foreground)] hover:text-[var(--primary)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] rounded px-2 py-1 min-h-[44px]\"\n >\n <span className=\"hidden sm:inline\">Acessibilidade</span>\n </a>\n )}\n\n <div role=\"group\" aria-label=\"Tamanho da fonte\" className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={handleFontDecrease}\n disabled={fontSize <= 12}\n aria-label=\"Diminuir tamanho da fonte\"\n className={cn(\n 'p-2 rounded-md transition-colors text-[var(--muted-foreground)] hover:bg-[var(--muted)]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]',\n 'disabled:opacity-40 disabled:cursor-not-allowed'\n )}\n >\n <ZoomOut className=\"h-4 w-4\" />\n </button>\n\n <span className=\"text-xs text-[var(--muted-foreground)] w-3 text-center select-none\" aria-hidden=\"true\">\n A\n </span>\n\n <button\n type=\"button\"\n onClick={handleFontIncrease}\n disabled={fontSize >= 24}\n aria-label=\"Aumentar tamanho da fonte\"\n className={cn(\n 'p-2 rounded-md transition-colors text-[var(--muted-foreground)] hover:bg-[var(--muted)]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]',\n 'disabled:opacity-40 disabled:cursor-not-allowed'\n )}\n >\n <ZoomIn className=\"h-4 w-4\" />\n </button>\n </div>\n\n <button\n type=\"button\"\n onClick={handleThemeToggle}\n aria-label={theme === 'light' ? 'Ativar modo escuro' : 'Ativar modo claro'}\n className={cn(\n 'p-2 rounded-md transition-colors text-[var(--muted-foreground)] hover:bg-[var(--muted)]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]'\n )}\n >\n {theme === 'light' ? <Moon className=\"h-4 w-4\" /> : <Sun className=\"h-4 w-4\" />}\n </button>\n\n <button\n type=\"button\"\n onClick={() => setVlibrasLoaded((v) => !v)}\n aria-label=\"Ativar VLibras\"\n aria-pressed={vlibrasLoaded}\n className={cn(\n 'px-3 py-1 text-xs font-medium rounded-md transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]'\n )}\n style={{\n backgroundColor: vlibrasLoaded ? 'var(--primary)' : 'transparent',\n color: vlibrasLoaded ? 'var(--primary-foreground)' : 'var(--muted-foreground)',\n border: vlibrasLoaded ? 'none' : '1px solid var(--border)',\n }}\n >\n VLibras\n </button>\n </div>\n </Container>\n </div>\n );\n }\n);\n\nTopAccessibilityBar.displayName = 'TopAccessibilityBar';\n\nexport { TopAccessibilityBar };\n","'use client';\n\nimport { HTMLAttributes, forwardRef, useState, useEffect } from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../ui/utils';\nimport { buttonVariants } from '../atoms/Button';\n\nexport interface HeroSlide {\n id: string;\n title: string;\n description: string;\n imageMobile: string;\n imageTablet: string;\n imageDesktop: string;\n /** Exibe título, descrição e CTA sobrepostos na imagem. Default false. */\n showOverlay?: boolean;\n cta?: {\n label: string;\n href: string;\n };\n}\n\nexport interface HeroCarouselProps extends HTMLAttributes<HTMLDivElement> {\n slides: HeroSlide[];\n autoplayDelay?: number;\n autoplay?: boolean;\n}\n\nconst HeroCarousel = forwardRef<HTMLDivElement, HeroCarouselProps>(\n (\n {\n className,\n slides,\n autoplayDelay = 5000,\n autoplay = true,\n ...props\n },\n ref\n ) => {\n const [currentIndex, setCurrentIndex] = useState(0);\n const [isAutoplayPaused, setIsAutoplayPaused] = useState(false);\n const [reduceMotion, setReduceMotion] = useState(false);\n\n useEffect(() => {\n // Check for prefers-reduced-motion\n const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n setReduceMotion(mediaQuery.matches);\n\n const handleChange = (e: MediaQueryListEvent) => {\n setReduceMotion(e.matches);\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, []);\n\n useEffect(() => {\n if (!autoplay || isAutoplayPaused || reduceMotion) return;\n\n const interval = setInterval(() => {\n setCurrentIndex((prev) => (prev + 1) % slides.length);\n }, autoplayDelay);\n\n return () => clearInterval(interval);\n }, [autoplay, autoplayDelay, slides.length, isAutoplayPaused, reduceMotion]);\n\n const goToSlide = (index: number) => {\n setCurrentIndex(index);\n setIsAutoplayPaused(true);\n setTimeout(() => setIsAutoplayPaused(false), autoplayDelay);\n };\n\n const goToPrevious = () => {\n goToSlide((currentIndex - 1 + slides.length) % slides.length);\n };\n\n const goToNext = () => {\n goToSlide((currentIndex + 1) % slides.length);\n };\n\n if (slides.length === 0) return null;\n\n const currentSlide = slides[currentIndex];\n\n return (\n <div\n ref={ref}\n className={cn('relative w-full overflow-hidden', className)}\n onMouseEnter={() => setIsAutoplayPaused(true)}\n onMouseLeave={() => setIsAutoplayPaused(false)}\n {...props}\n >\n {/* Slides */}\n <div className=\"relative\">\n {slides.map((slide, index) => (\n <div\n key={slide.id}\n className={cn(\n 'w-full transition-opacity duration-700',\n index === currentIndex ? 'block' : 'hidden'\n )}\n aria-hidden={index !== currentIndex}\n >\n <picture>\n <source\n media=\"(min-width: 1024px)\"\n srcSet={`${slide.imageDesktop} 1x, ${slide.imageDesktop.replace(/\\.(jpg|png)$/, '@2x.$1')} 2x`}\n />\n <source\n media=\"(min-width: 768px)\"\n srcSet={`${slide.imageTablet} 1x, ${slide.imageTablet.replace(/\\.(jpg|png)$/, '@2x.$1')} 2x`}\n />\n <img\n src={slide.imageMobile}\n srcSet={`${slide.imageMobile} 1x, ${slide.imageMobile.replace(/\\.(jpg|png)$/, '@2x.$1')} 2x`}\n alt={slide.title}\n // Aspect ratios per PRD F3 (apps/site-multibrand): mobile 750×500 (3:2 ~276px on iPhone XR),\n // tablet 1024×576 (16:9), desktop 1920×700 (~2.74:1).\n className=\"w-full object-cover aspect-3/2 md:aspect-video lg:aspect-1920/700\"\n loading={index === 0 ? 'eager' : 'lazy'}\n />\n </picture>\n\n {slide.showOverlay && (\n <div className=\"absolute inset-0 flex flex-col justify-end bg-linear-to-t from-black/60 to-transparent p-6 md:p-10\">\n <h2 className=\"text-2xl font-bold text-white md:text-3xl\">{slide.title}</h2>\n {slide.description && (\n <p className=\"mt-2 text-sm text-gray-200 md:text-base\">{slide.description}</p>\n )}\n {slide.cta && (\n <a\n href={slide.cta.href}\n className=\"mt-4 inline-block self-start rounded-md bg-brand-primary px-5 py-2 text-sm font-semibold text-white transition hover:opacity-90\"\n >\n {slide.cta.label}\n </a>\n )}\n </div>\n )}\n\n </div>\n ))}\n </div>\n\n {/* Navigation Arrows */}\n {slides.length > 1 && (\n <>\n <button\n onClick={goToPrevious}\n className=\"absolute left-4 top-1/2 -translate-y-1/2 rounded-full bg-white/90 p-2 shadow-lg transition-all hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] min-w-[44px] min-h-[44px]\"\n aria-label=\"Slide anterior\"\n >\n <ChevronLeft className=\"h-6 w-6 text-gray-900\" />\n </button>\n\n <button\n onClick={goToNext}\n className=\"absolute right-4 top-1/2 -translate-y-1/2 rounded-full bg-white/90 p-2 shadow-lg transition-all hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] min-w-[44px] min-h-[44px]\"\n aria-label=\"Próximo slide\"\n >\n <ChevronRight className=\"h-6 w-6 text-gray-900\" />\n </button>\n </>\n )}\n\n {/* Indicators */}\n {slides.length > 1 && (\n <div className=\"absolute bottom-4 left-1/2 -translate-x-1/2 flex gap-2\">\n {slides.map((_, index) => (\n <button\n key={index}\n onClick={() => goToSlide(index)}\n className={cn(\n 'h-2 rounded-full transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] min-w-[44px] min-h-[24px] flex items-center justify-center',\n index === currentIndex\n ? 'w-8 bg-white'\n : 'w-2 bg-white/50 hover:bg-white/70'\n )}\n aria-label={`Ir para slide ${index + 1}`}\n aria-current={index === currentIndex}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nHeroCarousel.displayName = 'HeroCarousel';\n\nexport { HeroCarousel };\n","import * as React from \"react\";\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n \"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center\",\n className,\n )}\n {...props}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n \"group flex flex-1 list-none items-center justify-center gap-1\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn(\"relative\", className)}\n {...props}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1\",\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDownIcon\n className=\"relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n \"data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto\",\n \"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div\n className={cn(\n \"absolute top-full left-0 isolate z-50 flex justify-center\",\n )}\n >\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n \"origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n \"data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n return (\n <NavigationMenuPrimitive.Indicator\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n \"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\",\n className,\n )}\n {...props}\n >\n <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n};\n","'use client';\n\nimport { forwardRef, HTMLAttributes, useState } from 'react';\nimport { ChevronDown, Menu } from 'lucide-react';\nimport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n} from '../ui/navigation-menu';\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from '../ui/sheet';\nimport { cn } from '../ui/utils';\n\nexport interface NavItem {\n id: string;\n label: string;\n href?: string;\n children?: NavItem[];\n}\n\nexport interface MegaMenuProps extends HTMLAttributes<HTMLElement> {\n items: NavItem[];\n logo?: React.ReactNode;\n rightSlot?: React.ReactNode;\n searchSlot?: React.ReactNode;\n drawerFooter?: React.ReactNode;\n}\n\nfunction DesktopSubMenu({ items }: { items: NavItem[] }) {\n return (\n <ul className=\"grid gap-0.5 p-2 min-w-[180px]\" role=\"none\">\n {items.map((item) =>\n item.children?.length ? (\n <li key={item.id} role=\"none\">\n <span\n className=\"block px-3 py-1 text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]\"\n role=\"presentation\"\n >\n {item.label}\n </span>\n <ul className=\"ml-1\" role=\"none\">\n {item.children.map((child) => (\n <li key={child.id} role=\"none\">\n <NavigationMenuLink\n href={child.href ?? '#'}\n className=\"block rounded px-3 py-1.5 text-sm text-[var(--foreground)] hover:bg-[var(--accent)] transition-colors\"\n >\n {child.label}\n </NavigationMenuLink>\n </li>\n ))}\n </ul>\n </li>\n ) : (\n <li key={item.id} role=\"none\">\n <NavigationMenuLink\n href={item.href ?? '#'}\n className=\"block rounded px-3 py-1.5 text-sm text-[var(--foreground)] hover:bg-[var(--accent)] transition-colors\"\n >\n {item.label}\n </NavigationMenuLink>\n </li>\n )\n )}\n </ul>\n );\n}\n\nfunction MobileNavItem({ item, depth = 0 }: { item: NavItem; depth?: number }) {\n const [open, setOpen] = useState(false);\n const hasChildren = !!item.children?.length;\n\n if (!hasChildren) {\n return (\n <SheetClose asChild>\n <a\n href={item.href ?? '#'}\n className={cn(\n 'flex min-h-[44px] items-center rounded py-2 text-sm text-[var(--foreground)] hover:text-[var(--brand-primary)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]',\n depth > 0 && 'pl-4 text-xs text-[var(--muted-foreground)]'\n )}\n >\n {item.label}\n </a>\n </SheetClose>\n );\n }\n\n return (\n <div>\n <button\n type=\"button\"\n aria-expanded={open}\n aria-controls={`mobile-nav-${item.id}`}\n onClick={() => setOpen((prev) => !prev)}\n className={cn(\n 'flex min-h-[44px] w-full items-center justify-between rounded py-2 text-sm font-medium text-[var(--foreground)] hover:text-[var(--brand-primary)] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]',\n depth > 0 && 'pl-4'\n )}\n >\n <span>{item.label}</span>\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n 'h-4 w-4 text-[var(--muted-foreground)] transition-transform duration-200',\n open && 'rotate-180'\n )}\n />\n </button>\n {open && (\n <div\n id={`mobile-nav-${item.id}`}\n className=\"mb-1 ml-2 border-l-2 border-[var(--border)] pl-3\"\n >\n {item.children!.map((child) => (\n <MobileNavItem key={child.id} item={child} depth={depth + 1} />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nconst MegaMenu = forwardRef<HTMLElement, MegaMenuProps>(\n ({ items, logo, rightSlot, searchSlot, drawerFooter, className, ...props }, ref) => {\n return (\n <header\n ref={ref}\n className={cn(\n 'sticky top-0 z-40 border-b border-[var(--border)] bg-[var(--card)]',\n className\n )}\n {...props}\n >\n <div className=\"px-4\">\n {/* Top bar: logo + search (desktop) + right actions + hamburger */}\n <div className=\"flex items-center py-3 gap-4\">\n {logo && <div className=\"flex-shrink-0\">{logo}</div>}\n\n {/* Inline search — desktop only, fills space */}\n {searchSlot && (\n <div className=\"hidden flex-1 md:flex\">\n {searchSlot}\n </div>\n )}\n\n {/* Spacer — pushes right slot to the right on mobile */}\n <div className=\"flex-1 md:hidden\" aria-hidden=\"true\" />\n\n {/* Right slot — always visible (cart, user) + desktop-only (brand switcher) */}\n {rightSlot && <div className=\"flex items-center\">{rightSlot}</div>}\n\n {/* Hamburger — mobile only */}\n <Sheet>\n <SheetTrigger asChild>\n <button\n type=\"button\"\n aria-label=\"Abrir menu de navegação\"\n className=\"inline-flex min-h-[44px] min-w-[44px] items-center justify-center rounded-lg text-[var(--foreground)] transition-colors hover:bg-[var(--accent)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] md:hidden\"\n >\n <Menu className=\"h-5 w-5\" aria-hidden=\"true\" />\n </button>\n </SheetTrigger>\n <SheetContent side=\"left\" className=\"flex flex-col p-0\">\n <SheetHeader className=\"border-b border-[var(--border)] px-5 py-4\">\n <SheetTitle className=\"sr-only\">Menu de navegação</SheetTitle>\n {logo && <div className=\"flex items-center\">{logo}</div>}\n </SheetHeader>\n\n {/* Search inside drawer */}\n {searchSlot && (\n <div className=\"border-b border-[var(--border)] px-5 py-4\">\n {searchSlot}\n </div>\n )}\n\n <nav\n aria-label=\"Menu principal\"\n className=\"flex-1 overflow-y-auto px-5 py-3\"\n >\n <div className=\"divide-y divide-[var(--border)]\">\n {items.map((item) => (\n <div key={item.id} className=\"py-0.5\">\n <MobileNavItem item={item} />\n </div>\n ))}\n </div>\n </nav>\n\n {/* Drawer footer — brand switcher */}\n {drawerFooter && (\n <div className=\"border-t border-[var(--border)] px-5 py-4\">\n {drawerFooter}\n </div>\n )}\n </SheetContent>\n </Sheet>\n </div>\n\n {/* Desktop nav — second row with border-t */}\n <nav\n aria-label=\"Menu principal\"\n className=\"hidden border-t border-[var(--border)] py-2 md:flex\"\n >\n <NavigationMenu>\n <NavigationMenuList>\n {items.map((item) =>\n item.children?.length ? (\n <NavigationMenuItem key={item.id}>\n <NavigationMenuTrigger className=\"h-9 bg-transparent text-sm text-[var(--foreground)] hover:bg-[var(--accent)]\">\n {item.label}\n </NavigationMenuTrigger>\n <NavigationMenuContent>\n <DesktopSubMenu items={item.children} />\n </NavigationMenuContent>\n </NavigationMenuItem>\n ) : (\n <NavigationMenuItem key={item.id}>\n <NavigationMenuLink\n href={item.href ?? '#'}\n className=\"inline-flex h-9 items-center rounded-md px-4 text-sm font-medium text-[var(--foreground)] transition-colors hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]\"\n >\n {item.label}\n </NavigationMenuLink>\n </NavigationMenuItem>\n )\n )}\n </NavigationMenuList>\n </NavigationMenu>\n </nav>\n </div>\n </header>\n );\n }\n);\n\nMegaMenu.displayName = 'MegaMenu';\n\nexport { MegaMenu };\n","'use client';\n\nimport { useState, useEffect, HTMLAttributes } from 'react';\nimport { Instagram, Facebook, Youtube, Linkedin, Mail, ChevronDown } from 'lucide-react';\nimport { cn } from '../ui/utils';\n\nexport interface FooterProps extends HTMLAttributes<HTMLElement> {\n brand?: 'elo-editora' | 'perabook';\n onNewsletterSubmit?: (email: string) => void;\n}\n\nconst NAV_COLUMNS = [\n {\n id: 'catalogo',\n title: 'Catálogo',\n links: [\n { label: 'Livros', href: '/livros/catalogo' },\n { label: 'Coleções', href: '/livros/colecoes' },\n { label: 'Lançamentos', href: '/livros/catalogo?ordem=recentes' },\n { label: 'Mais Vendidos', href: '/livros/catalogo?ordem=mais_vendidos' },\n { label: 'Vale Presente', href: '/livros/vale-presente' },\n ],\n },\n {\n id: 'editora',\n title: 'Editora',\n links: [\n { label: 'Autores', href: '/autores' },\n { label: 'LABBOOK', href: '/labbook' },\n { label: 'Projetos', href: '/projetos' },\n { label: 'Fale Conosco', href: '/editora/contato' },\n { label: 'FAQ', href: '/editora/faq' },\n ],\n },\n {\n id: 'institucional',\n title: 'Institucional',\n links: [\n { label: 'Distribuidores', href: '/distribuidores' },\n { label: 'Como Comprar', href: '/como-comprar' },\n { label: 'Informações de Entrega', href: '/informacoes-entrega' },\n { label: 'Sobre o APP', href: '/sobre-app' },\n ],\n },\n];\n\nconst SOCIAL_LINKS = [\n { label: 'Instagram', href: 'https://instagram.com/eloeditora', Icon: Instagram },\n { label: 'Facebook', href: 'https://facebook.com/eloeditora', Icon: Facebook },\n { label: 'YouTube', href: 'https://youtube.com/@eloeditora', Icon: Youtube },\n { label: 'LinkedIn', href: 'https://linkedin.com/company/eloeditora', Icon: Linkedin },\n];\n\n// ── Newsletter ─────────────────────────────────────────────────────────────\n\nfunction NewsletterForm({ onSubmit }: { onSubmit?: (email: string) => void }) {\n const [email, setEmail] = useState('');\n const [submitted, setSubmitted] = useState(false);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!email) return;\n onSubmit?.(email);\n setSubmitted(true);\n setEmail('');\n };\n\n return (\n <div className=\"bg-[var(--brand-primary)] py-10\">\n <div className=\"mx-auto max-w-lg px-4 text-center\">\n <Mail className=\"mx-auto mb-4 h-10 w-10 text-white\" aria-hidden=\"true\" />\n <h2 className=\"text-xl font-semibold text-white sm:text-2xl\">\n Receba novidades e ofertas exclusivas\n </h2>\n <p className=\"mt-2 text-sm\" style={{ color: 'rgba(255,255,255,0.85)' }}>\n Cadastre-se e fique por dentro dos lançamentos. Sem spam.\n </p>\n {submitted ? (\n <p className=\"mt-6 text-sm font-medium text-white\">\n Obrigado! Você está na lista. ✓\n </p>\n ) : (\n <form onSubmit={handleSubmit} className=\"mt-6 flex flex-col gap-2 sm:flex-row\">\n <label htmlFor=\"footer-newsletter-email\" className=\"sr-only\">\n Seu e-mail\n </label>\n <input\n id=\"footer-newsletter-email\"\n type=\"email\"\n required\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder=\"Seu melhor e-mail\"\n className=\"min-h-[44px] flex-1 rounded-lg px-4 text-sm text-[#1a1e2e] placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-white\"\n />\n <button\n type=\"submit\"\n className=\"min-h-[44px] whitespace-nowrap rounded-lg bg-white px-6 text-sm font-semibold transition-colors hover:bg-gray-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--brand-primary)]\"\n style={{ color: 'var(--brand-primary)' }}\n >\n Cadastrar\n </button>\n </form>\n )}\n </div>\n </div>\n );\n}\n\n// ── Nav column (mobile accordion) ─────────────────────────────────────────\n\nfunction NavColumn({ title, links }: { title: string; links: { label: string; href: string }[] }) {\n const [open, setOpen] = useState(false);\n\n return (\n <div className=\"border-b border-[var(--border)] md:border-none\">\n <button\n type=\"button\"\n aria-expanded={open}\n onClick={() => setOpen((v) => !v)}\n className=\"flex w-full items-center justify-between py-4 text-left text-sm font-semibold text-[var(--foreground)] md:hidden\"\n >\n {title}\n <ChevronDown\n aria-hidden=\"true\"\n className={cn('h-4 w-4 text-[var(--muted-foreground)] transition-transform duration-200', open && 'rotate-180')}\n />\n </button>\n\n <p className=\"hidden text-sm font-semibold text-[var(--foreground)] md:block\">{title}</p>\n\n <ul\n className={cn(\n 'flex flex-col gap-2 overflow-hidden transition-all duration-200 md:mt-3 md:max-h-none md:pb-0',\n open ? 'max-h-96 pb-4' : 'max-h-0 md:max-h-none'\n )}\n role=\"list\"\n >\n {links.map((link) => (\n <li key={link.label}>\n <a\n href={link.href}\n className=\"text-sm text-[var(--muted-foreground)] transition-colors hover:text-[var(--brand-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] rounded\"\n >\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </div>\n );\n}\n\n// ── Footer ─────────────────────────────────────────────────────────────────\n\nconst Footer = ({ brand = 'elo-editora', onNewsletterSubmit, className, ...props }: FooterProps) => {\n const [theme, setTheme] = useState<'light' | 'dark'>('light');\n\n useEffect(() => {\n const root = document.documentElement;\n setTheme((root.getAttribute('data-theme') as 'light' | 'dark') ?? 'light');\n const obs = new MutationObserver(() => {\n setTheme((root.getAttribute('data-theme') as 'light' | 'dark') ?? 'light');\n });\n obs.observe(root, { attributes: true, attributeFilter: ['data-theme'] });\n return () => obs.disconnect();\n }, []);\n\n const logoSrc =\n brand === 'perabook'\n ? theme === 'dark'\n ? '/logos/logo_PeraBook_institucional_tarja_branca.png'\n : '/logos/PeraBook_instituicional.png'\n : theme === 'dark'\n ? '/logos/logo_elo_editora_texto_branco.png'\n : '/logos/logo_elo_editora_texto_azul.png';\n\n const logoAlt = brand === 'perabook' ? 'PeraBook' : 'Elo Editora';\n\n const tagline =\n brand === 'perabook'\n ? 'Educação socioemocional e diversidade cultural'\n : 'Literatura infantojuvenil que transforma vidas';\n\n return (\n <footer\n className={cn('border-t border-[var(--border)] bg-[var(--card)] text-[var(--foreground)]', className)}\n aria-label=\"Rodapé do site\"\n {...props}\n >\n <NewsletterForm onSubmit={onNewsletterSubmit} />\n\n <div className=\"mx-auto max-w-screen-xl px-4\">\n {/* Main grid */}\n <div className=\"py-10 md:grid md:grid-cols-4 md:gap-8\">\n {/* Brand column */}\n <div className=\"mb-8 md:mb-0\">\n <img\n src={logoSrc}\n alt={logoAlt}\n width={120}\n height={40}\n className=\"h-10 w-auto object-contain\"\n />\n <p className=\"mt-3 max-w-xs text-sm text-[var(--muted-foreground)]\">{tagline}</p>\n\n <div className=\"mt-6 flex flex-wrap gap-2\" aria-label=\"Redes sociais\">\n {SOCIAL_LINKS.map(({ label, href, Icon }) => (\n <a\n key={label}\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={label}\n className=\"flex h-9 w-9 items-center justify-center rounded-full border border-[var(--border)] text-[var(--muted-foreground)] transition-colors hover:border-[var(--brand-primary)] hover:bg-[var(--brand-primary)] hover:text-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]\"\n >\n <Icon className=\"h-4 w-4\" aria-hidden=\"true\" />\n </a>\n ))}\n </div>\n\n {/* Contact info */}\n <div className=\"mt-6 space-y-1 text-sm\">\n <p className=\"text-[var(--muted-foreground)]\">Atendimento:</p>\n <p className=\"font-medium text-[var(--foreground)]\">contato@grupoeloediorial.com.br</p>\n <p className=\"font-medium text-[var(--foreground)]\">(11) 3000-0000</p>\n </div>\n </div>\n\n {/* Nav columns */}\n {NAV_COLUMNS.map((col) => (\n <NavColumn key={col.id} title={col.title} links={col.links} />\n ))}\n </div>\n\n {/* Bottom bar */}\n <div className=\"flex flex-col gap-2 border-t border-[var(--border)] py-6 text-xs text-[var(--muted-foreground)] sm:flex-row sm:items-center sm:justify-between\">\n <p>© {new Date().getFullYear()} Grupo ELO Editorial. Todos os direitos reservados.</p>\n <nav aria-label=\"Links legais\" className=\"flex flex-wrap gap-4\">\n <a href=\"/editora/privacidade/politica\" className=\"transition-colors hover:text-[var(--foreground)]\">\n Política de Privacidade\n </a>\n <a href=\"/editora/privacidade/cookies\" className=\"transition-colors hover:text-[var(--foreground)]\">\n Cookies\n </a>\n <a href=\"/editora/privacidade/demais\" className=\"transition-colors hover:text-[var(--foreground)]\">\n Termos de Uso\n </a>\n </nav>\n </div>\n </div>\n </footer>\n );\n};\n\nFooter.displayName = 'Footer';\n\nexport { Footer };\n","import { type ReactNode } from 'react';\nimport { cn } from '../ui/utils';\n\nexport interface GridProps {\n children: ReactNode;\n /**\n * Override the default responsive column progression\n * (`grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4`) by appending Tailwind utility classes here.\n */\n className?: string;\n}\n\n/**\n * Responsive grid primitive. Defaults to the progression defined by the\n * `--grid-cols-{default,sm,md,lg}` tokens (1 → 2 → 3 → 4 columns) and the\n * `--grid-gutter` (1.5rem) gap, both shipped by\n * `@grupo-elo-editorial/design-tokens@^3.1.0`.\n *\n * @example\n * ```tsx\n * <Grid>\n * <Col><ProductCard ... /></Col>\n * <Col><ProductCard ... /></Col>\n * </Grid>\n * ```\n */\nexport function Grid({ children, className }: GridProps) {\n return (\n <div\n data-slot=\"grid\"\n className={cn(\n 'grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-[var(--grid-gutter)]',\n className\n )}\n >\n {children}\n </div>\n );\n}\n","import { type ReactNode } from 'react';\nimport { cn } from '../ui/utils';\n\nexport interface ColProps {\n children: ReactNode;\n /**\n * How many grid columns this cell spans (1–6). When omitted, the cell takes\n * one column at every breakpoint.\n */\n span?: 1 | 2 | 3 | 4 | 5 | 6;\n className?: string;\n}\n\nconst spanMap: Record<NonNullable<ColProps['span']>, string> = {\n 1: 'col-span-1',\n 2: 'col-span-2',\n 3: 'col-span-3',\n 4: 'col-span-4',\n 5: 'col-span-5',\n 6: 'col-span-6',\n};\n\n/**\n * Grid cell with explicit column span. Always includes `min-w-0` to prevent\n * grid items from overflowing when their content (long text, large images) is\n * wider than the available column — without this the implicit `min-width: auto`\n * on grid items would push the cell beyond its grid track.\n *\n * Use inside `<Grid>`. Not strictly required (you can use a plain `<div>` for\n * 1-column cells), but recommended for any cell that spans multiple columns.\n *\n * @example\n * ```tsx\n * <Grid>\n * <Col span={2}>Wide cell</Col>\n * <Col>Standard cell</Col>\n * <Col>Standard cell</Col>\n * </Grid>\n * ```\n */\nexport function Col({ children, span, className }: ColProps) {\n return (\n <div data-slot=\"col\" className={cn('min-w-0', span && spanMap[span], className)}>\n {children}\n </div>\n );\n}\n"],"names":["cn","inputs","twMerge","clsx","buttonVariants","cva","Button","forwardRef","className","variant","size","fullWidth","isLoading","leftIcon","rightIcon","children","disabled","props","ref","jsx","jsxs","Fragment","Loader2","Textarea","error","helperText","badgeVariants","Badge","icon","onRemove","avatarVariants","Avatar","src","alt","name","showStatus","statusType","imageError","setImageError","useState","getInitials","n","statusColors","statusSizes","User","spinnerVariants","Spinner","label","Divider","orientation","text","variantStyles","Rating","value","maxRating","readonly","onChange","showValue","hoverRating","setHoverRating","sizeClasses","handleClick","rating","displayRating","_","i","isFilled","Star","Input","type","Select","SelectPrimitive","SelectValue","SelectTrigger","ChevronDownIcon","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectItem","CheckIcon","ChevronUpIcon","Checkbox","CheckboxPrimitive","RadioGroup","RadioGroupPrimitive","RadioGroupItem","CircleIcon","Switch","SwitchPrimitive","MaybeLink","href","ProductCard","image","title","author","price","originalPrice","reviewCount","badge","badgeVariant","isSkeleton","isOutOfStock","onAddToCart","onToggleFavorite","isFavorite","ShoppingCart","Heart","SearchBar","onSearch","onClear","placeholder","controlledValue","internalValue","setInternalValue","handleChange","e","newValue","handleClear","handleKeyDown","Search","X","PriceDisplay","currency","showDiscount","installments","discount","originalSizeClasses","QuantitySelector","min","max","showLabel","handleIncrement","handleDecrement","handleInputChange","inputSizeClasses","Minus","Plus","FormGroup","htmlFor","required","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","asChild","Slot","BreadcrumbPage","BreadcrumbSeparator","ChevronRight","Accordion","AccordionPrimitive","AccordionItem","AccordionTrigger","AccordionContent","TooltipProvider","delayDuration","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","sideOffset","Hero","subtitle","description","primaryCTA","secondaryCTA","backgroundImage","overlay","EmptyState","action","displayIcon","Package","FileX","ErrorState","message","onRetry","onGoHome","showRetry","showHome","content","displayTitle","displayMessage","AlertCircle","RefreshCw","Home","ProductGrid","products","columns","gap","skeletonCount","emptyStateMessage","onEmptyAction","columnClasses","gapClasses","product","index","Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogOverlay","DialogContent","XIcon","DialogHeader","DialogFooter","DialogTitle","DialogDescription","Sheet","SheetPrimitive","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","SheetContent","side","SheetHeader","SheetFooter","SheetTitle","SheetDescription","Container","Tag","TopAccessibilityBar","onThemeChange","onFontSizeChange","showA11yLink","theme","setTheme","fontSize","setFontSize","vlibrasLoaded","setVlibrasLoaded","useEffect","active","storedSize","script","handleThemeToggle","newTheme","handleFontIncrease","newSize","handleFontDecrease","Accessibility","ZoomOut","ZoomIn","Moon","Sun","v","HeroCarousel","slides","autoplayDelay","autoplay","currentIndex","setCurrentIndex","isAutoplayPaused","setIsAutoplayPaused","reduceMotion","setReduceMotion","mediaQuery","interval","prev","goToSlide","goToPrevious","goToNext","slide","ChevronLeft","NavigationMenu","viewport","NavigationMenuPrimitive","NavigationMenuViewport","NavigationMenuList","NavigationMenuItem","navigationMenuTriggerStyle","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuLink","DesktopSubMenu","items","item","_a","child","MobileNavItem","depth","open","setOpen","ChevronDown","MegaMenu","logo","rightSlot","searchSlot","drawerFooter","Menu","NAV_COLUMNS","SOCIAL_LINKS","Instagram","Facebook","Youtube","Linkedin","NewsletterForm","onSubmit","email","setEmail","submitted","setSubmitted","Mail","NavColumn","links","link","Footer","brand","onNewsletterSubmit","root","obs","logoSrc","logoAlt","tagline","Icon","col","Grid","spanMap","Col","span"],"mappings":";;;;;;;;;;;;;;;;;;AAGO,SAASA,KAAMC,GAAsB;AAC1C,SAAOC,EAAQC,EAAKF,CAAM,CAAC;AAC7B;ACAA,MAAMG,KAAiBC;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WAAW;AAAA,QACX,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,SAAS;AAAA,MAAA;AAAA,MAEX,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,MAEN,WAAW;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GAUMC,IAASC;AAAA,EACb,CACE;AAAA,IACE,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,MAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MAGE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWnB,EAAGI,GAAe,EAAE,SAAAK,GAAS,MAAAC,GAAM,WAAAC,GAAW,WAAAH,EAAA,CAAW,CAAC;AAAA,MACrE,KAAAU;AAAA,MACA,UAAUF,KAAYJ;AAAA,MACrB,GAAGK;AAAA,MAEH,cACC,gBAAAG,EAAAC,GAAA,EACE,UAAA;AAAA,QAAA,gBAAAF,EAACG,GAAA,EAAQ,WAAU,uBAAA,CAAuB;AAAA,QACzCP,KAAY,gBAAAI,EAAC,QAAA,EAAM,UAAAJ,EAAA,CAAS;AAAA,MAAA,EAAA,CAC/B,IAEA,gBAAAK,EAAAC,GAAA,EACG,UAAA;AAAA,QAAAR,KAAY,gBAAAM,EAAC,QAAA,EAAK,WAAU,eAAe,UAAAN,GAAS;AAAA,QACpDE;AAAA,QACAD,KAAa,gBAAAK,EAAC,QAAA,EAAK,WAAU,eAAe,UAAAL,EAAA,CAAU;AAAA,MAAA,EAAA,CACzD;AAAA,IAAA;AAAA,EAAA;AAKV;AAEAR,EAAO,cAAc;ACzErB,MAAMiB,KAAWhB;AAAA,EACf,CAAC,EAAE,WAAAC,GAAW,OAAAgB,GAAO,YAAAC,GAAY,GAAGR,EAAA,GAASC,MAEzC,gBAAAE,EAAC,OAAA,EAAI,WAAU,UACb,UAAA;AAAA,IAAA,gBAAAD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWnB;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACAwB,KAAS;AAAA,UACThB;AAAA,QAAA;AAAA,QAEF,KAAAU;AAAA,QACC,GAAGD;AAAA,MAAA;AAAA,IAAA;AAAA,IAELQ,KACC,gBAAAN;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWnB;AAAA,UACT;AAAA,UACAwB,IAAQ,8BAA8B;AAAA,QAAA;AAAA,QAGvC,UAAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GAEJ;AAGN;AAEAF,GAAS,cAAc;ACpCvB,MAAMG,KAAgBrB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WAAW;AAAA,QACX,SAAS;AAAA,QACT,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,MAER,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GASMsB,IAAQpB;AAAA,EACZ,CAAC,EAAE,WAAAC,GAAW,SAAAC,GAAS,MAAAC,GAAM,MAAAkB,GAAM,UAAAC,GAAU,UAAAd,GAAU,GAAGE,EAAA,GAASC,MAE/D,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,WAAWlB,EAAG0B,GAAc,EAAE,SAAAjB,GAAS,MAAAC,EAAA,CAAM,GAAGF,CAAS;AAAA,MACxD,GAAGS;AAAA,MAEH,UAAA;AAAA,QAAAW,KAAQ,gBAAAT,EAAC,QAAA,EAAK,WAAU,oBAAoB,UAAAS,GAAK;AAAA,QACjDb;AAAA,QACAc,KACC,gBAAAV;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAASU;AAAA,YACT,WAAU;AAAA,YACV,cAAW;AAAA,YACZ,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,IAAA;AAAA,EAAA;AAKV;AAEAF,EAAM,cAAc;ACtDpB,MAAMG,KAAiBzB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GAUM0B,KAASxB;AAAA,EACb,CAAC,EAAE,WAAAC,GAAW,MAAAE,GAAM,KAAAsB,GAAK,KAAAC,GAAK,MAAAC,GAAM,YAAAC,GAAY,YAAAC,IAAa,UAAU,GAAGnB,EAAA,GAASC,MAAQ;AACzF,UAAM,CAACmB,GAAYC,CAAa,IAAIC,EAAS,EAAK,GAE5CC,IAAc,CAACN,MACZA,EACJ,MAAM,GAAG,EACT,IAAI,CAACO,MAAMA,EAAE,CAAC,CAAC,EACf,KAAK,EAAE,EACP,cACA,MAAM,GAAG,CAAC,GAGTC,IAAe;AAAA,MACnB,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IAAA,GAGFC,IAAc;AAAA,MAClB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAGN,WACE,gBAAAvB,EAAC,OAAA,EAAI,KAAAF,GAAU,WAAWlB,EAAG8B,GAAe,EAAE,MAAApB,EAAA,CAAM,GAAG,YAAYF,CAAS,GACzE,UAAA;AAAA,MAAAwB,KAAO,CAACK,IACP,gBAAAlB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAa;AAAA,UACA,KAAKC,KAAOC,KAAQ;AAAA,UACpB,SAAS,MAAMI,EAAc,EAAI;AAAA,UACjC,WAAU;AAAA,UACT,GAAGrB;AAAA,QAAA;AAAA,MAAA,IAEJiB,IACF,gBAAAf,EAAC,QAAA,EAAK,WAAU,eAAe,UAAAqB,EAAYN,CAAI,EAAA,CAAE,IAEjD,gBAAAf,EAACyB,IAAA,EAAK,WAAU,eAAc;AAAA,MAG/BT,KACC,gBAAAhB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWnB;AAAA,YACT;AAAA,YACA0C,EAAaN,CAAU;AAAA,YACvBO,EAAYjC,KAAQ,IAAI;AAAA,UAAA;AAAA,UAE1B,cAAY,WAAW0B,CAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IACnC,GAEJ;AAAA,EAEJ;AACF;AAEAL,GAAO,cAAc;ACrFrB,MAAMc,KAAkBxC,EAAI,4CAA4C;AAAA,EACtE,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACN;AAAA,EAEF,iBAAiB;AAAA,IACf,MAAM;AAAA,EAAA;AAEV,CAAC,GAQKyC,KAAUvC;AAAA,EACd,CAAC,EAAE,WAAAC,GAAW,MAAAE,GAAM,OAAAqC,GAAO,GAAG9B,EAAA,GAASC,MAEnC,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,MAAK;AAAA,MACL,cAAY6B,KAAS;AAAA,MACrB,WAAW/C,EAAG,2CAA2CQ,CAAS;AAAA,MACjE,GAAGS;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAE,EAACG,GAAA,EAAQ,WAAWtB,EAAG6C,GAAgB,EAAE,MAAAnC,GAAM,CAAC,GAAG;AAAA,QACnD,gBAAAS,EAAC,QAAA,EAAK,WAAU,WAAW,eAAS,UAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAItD;AAEA2B,GAAQ,cAAc;ACjCtB,MAAME,KAAUzC;AAAA,EACd,CAAC,EAAE,WAAAC,GAAW,aAAAyC,IAAc,cAAc,SAAAxC,IAAU,SAAS,MAAAyC,GAAM,GAAGjC,EAAA,GAASC,MAAQ;AACrF,UAAMiC,IAAgB;AAAA,MACpB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,IAAA;AAGV,WAAID,KAAQD,MAAgB,eAExB,gBAAA7B,EAAC,SAAI,WAAWpB,EAAG,gCAAgCQ,CAAS,GAAG,MAAK,aAClE,UAAA;AAAA,MAAA,gBAAAW;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAD;AAAA,UACA,WAAWlB;AAAA,YACT;AAAA,YACAmD,EAAc1C,CAAO;AAAA,UAAA;AAAA,UAEtB,GAAGQ;AAAA,QAAA;AAAA,MAAA;AAAA,MAEN,gBAAAE,EAAC,QAAA,EAAK,WAAU,0CAA0C,UAAA+B,GAAK;AAAA,MAC/D,gBAAA/B;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWnB;AAAA,YACT;AAAA,YACAmD,EAAc1C,CAAO;AAAA,UAAA;AAAA,QACvB;AAAA,MAAA;AAAA,IACF,GACF,IAKF,gBAAAU;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAD;AAAA,QACA,MAAK;AAAA,QACL,oBAAkB+B;AAAA,QAClB,WAAWjD;AAAA,UACT;AAAA,UACAmD,EAAc1C,CAAO;AAAA,UACrBwC,MAAgB,aACZ,yBACA;AAAA,UACJzC;AAAA,QAAA;AAAA,QAED,GAAGS;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEA+B,GAAQ,cAAc;AC3CtB,MAAMI,IAAS7C;AAAA,EACb,CACE;AAAA,IACE,WAAAC;AAAA,IACA,OAAA6C,IAAQ;AAAA,IACR,WAAAC,IAAY;AAAA,IACZ,MAAA5C,IAAO;AAAA,IACP,UAAA6C,IAAW;AAAA,IACX,UAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,GAAGxC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,CAACwC,GAAaC,CAAc,IAAIpB,EAAS,CAAC,GAE1CqB,IAAc;AAAA,MAClB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,GAGAC,IAAc,CAACC,MAAmB;AACtC,MAAI,CAACP,KAAYC,KACfA,EAASM,CAAM;AAAA,IAEnB,GAEMC,IAAgBL,KAAeL;AAErC,WACE,gBAAAjC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAF;AAAA,QACA,WAAWlB,EAAG,kCAAkCQ,CAAS;AAAA,QACzD,MAAK;AAAA,QACL,cAAY,WAAW6C,CAAK,WAAWC,CAAS;AAAA,QAC/C,GAAGrC;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAE,EAAC,SAAI,WAAU,6BACZ,UAAA,MAAM,KAAK,EAAE,QAAQmC,KAAa,CAACU,GAAGC,MAAMA,IAAI,CAAC,EAAE,IAAI,CAACH,MAAW;AAClE,kBAAMI,IAAWJ,KAAUC;AAG3B,mBACE,gBAAA5C;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,UAAUoC;AAAA,gBACV,SAAS,MAAMM,EAAYC,CAAM;AAAA,gBACjC,cAAc,MAAM,CAACP,KAAYI,EAAeG,CAAM;AAAA,gBACtD,cAAc,MAAM,CAACP,KAAYI,EAAe,CAAC;AAAA,gBACjD,WAAW3D;AAAA,kBACT;AAAA,kBACAuD,IAAW,mBAAmB;AAAA,gBAAA;AAAA,gBAEhC,cAAY,QAAQO,CAAM,WAAWR,CAAS;AAAA,gBAE9C,UAAA,gBAAAnC;AAAA,kBAACgD;AAAA,kBAAA;AAAA,oBACC,WAAWnE;AAAA,sBACT4D,EAAYlD,CAAI;AAAA,sBAChB;AAAA,sBACAwD,IACI,gDACA;AAAA,oBAAA;AAAA,kBACN;AAAA,gBAAA;AAAA,cACF;AAAA,cApBKJ;AAAA,YAAA;AAAA,UAuBX,CAAC,EAAA,CACH;AAAA,UAECL,uBACE,QAAA,EAAK,WAAU,qDACb,UAAAJ,EAAM,QAAQ,CAAC,EAAA,CAClB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEAD,EAAO,cAAc;AC5FrB,SAASgB,GAAM,EAAE,WAAA5D,GAAW,MAAA6D,GAAM,GAAGpD,KAAwC;AAC3E,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAAkD;AAAA,MACA,aAAU;AAAA,MACV,WAAWrE;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;ACNA,SAASqD,GAAO;AAAA,EACd,GAAGrD;AACL,GAAsD;AACpD,2BAAQsD,EAAgB,MAAhB,EAAqB,aAAU,UAAU,GAAGtD,GAAO;AAC7D;AAQA,SAASuD,GAAY;AAAA,EACnB,GAAGvD;AACL,GAAuD;AACrD,2BAAQsD,EAAgB,OAAhB,EAAsB,aAAU,gBAAgB,GAAGtD,GAAO;AACpE;AAEA,SAASwD,GAAc;AAAA,EACrB,WAAAjE;AAAA,EACA,MAAAE,IAAO;AAAA,EACP,UAAAK;AAAA,EACA,GAAGE;AACL,GAEG;AACD,SACE,gBAAAG;AAAA,IAACmD,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,aAAW7D;AAAA,MACX,WAAWV;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEH,UAAA;AAAA,QAAAF;AAAA,QACD,gBAAAI,EAACoD,EAAgB,MAAhB,EAAqB,SAAO,IAC3B,UAAA,gBAAApD,EAACuD,GAAA,EAAgB,WAAU,oBAAA,CAAoB,EAAA,CACjD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,SAASC,GAAc;AAAA,EACrB,WAAAnE;AAAA,EACA,UAAAO;AAAA,EACA,UAAA6D,IAAW;AAAA,EACX,GAAG3D;AACL,GAAyD;AACvD,SACE,gBAAAE,EAACoD,EAAgB,QAAhB,EACC,UAAA,gBAAAnD;AAAA,IAACmD,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWvE;AAAA,QACT;AAAA,QACA4E,MAAa,YACX;AAAA,QACFpE;AAAA,MAAA;AAAA,MAEF,UAAAoE;AAAA,MACC,GAAG3D;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAE,EAAC0D,IAAA,EAAqB;AAAA,QACtB,gBAAA1D;AAAA,UAACoD,EAAgB;AAAA,UAAhB;AAAA,YACC,WAAWvE;AAAA,cACT;AAAA,cACA4E,MAAa,YACX;AAAA,YAAA;AAAA,YAGH,UAAA7D;AAAA,UAAA;AAAA,QAAA;AAAA,0BAEF+D,IAAA,CAAA,CAAuB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAE5B;AAEJ;AAeA,SAASC,GAAW;AAAA,EAClB,WAAAvE;AAAA,EACA,UAAAO;AAAA,EACA,GAAGE;AACL,GAAsD;AACpD,SACE,gBAAAG;AAAA,IAACmD,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWvE;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAE,EAAC,QAAA,EAAK,WAAU,8DACd,UAAA,gBAAAA,EAACoD,EAAgB,eAAhB,EACC,UAAA,gBAAApD,EAAC6D,GAAA,EAAU,WAAU,SAAA,CAAS,EAAA,CAChC,GACF;AAAA,QACA,gBAAA7D,EAACoD,EAAgB,UAAhB,EAA0B,UAAAxD,EAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG1C;AAeA,SAAS8D,GAAqB;AAAA,EAC5B,WAAArE;AAAA,EACA,GAAGS;AACL,GAAgE;AAC9D,SACE,gBAAAE;AAAA,IAACoD,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWvE;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEJ,UAAA,gBAAAE,EAAC8D,IAAA,EAAc,WAAU,SAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAGxC;AAEA,SAASH,GAAuB;AAAA,EAC9B,WAAAtE;AAAA,EACA,GAAGS;AACL,GAAkE;AAChE,SACE,gBAAAE;AAAA,IAACoD,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWvE;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEJ,UAAA,gBAAAE,EAACuD,GAAA,EAAgB,WAAU,SAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAG1C;ACvKA,SAASQ,GAAS;AAAA,EAChB,WAAA1E;AAAA,EACA,GAAGS;AACL,GAAwD;AACtD,SACE,gBAAAE;AAAA,IAACgE,EAAkB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,WAAWnF;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEJ,UAAA,gBAAAE;AAAA,QAACgE,EAAkB;AAAA,QAAlB;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA,UAEV,UAAA,gBAAAhE,EAAC6D,GAAA,EAAU,WAAU,WAAA,CAAW;AAAA,QAAA;AAAA,MAAA;AAAA,IAClC;AAAA,EAAA;AAGN;ACrBA,SAASI,GAAW;AAAA,EAClB,WAAA5E;AAAA,EACA,GAAGS;AACL,GAA0D;AACxD,SACE,gBAAAE;AAAA,IAACkE,EAAoB;AAAA,IAApB;AAAA,MACC,aAAU;AAAA,MACV,WAAWrF,EAAG,cAAcQ,CAAS;AAAA,MACpC,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASqE,GAAe;AAAA,EACtB,WAAA9E;AAAA,EACA,GAAGS;AACL,GAA0D;AACxD,SACE,gBAAAE;AAAA,IAACkE,EAAoB;AAAA,IAApB;AAAA,MACC,aAAU;AAAA,MACV,WAAWrF;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEJ,UAAA,gBAAAE;AAAA,QAACkE,EAAoB;AAAA,QAApB;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA,UAEV,UAAA,gBAAAlE,EAACoE,IAAA,EAAW,WAAU,kFAAA,CAAkF;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1G;AAAA,EAAA;AAGN;ACnCA,SAASC,GAAO;AAAA,EACd,WAAAhF;AAAA,EACA,GAAGS;AACL,GAAsD;AACpD,SACE,gBAAAE;AAAA,IAACsE,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWzF;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEJ,UAAA,gBAAAE;AAAA,QAACsE,EAAgB;AAAA,QAAhB;AAAA,UACC,aAAU;AAAA,UACV,WAAWzF;AAAA,YACT;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;ACAA,SAAS0F,EAAU;AAAA,EACjB,MAAAC;AAAA,EACA,WAAAnF;AAAA,EACA,UAAAO;AACF,GAIG;AACD,SAAI4E,IAEA,gBAAAxE,EAAC,OAAE,MAAAwE,GAAY,WAAAnF,GAAsB,UAAU,IAAI,eAAY,QAC5D,UAAAO,GACH,IAGG,gBAAAI,EAAC,OAAA,EAAI,WAAAX,GAAuB,UAAAO,EAAA,CAAS;AAC9C;AAEA,MAAM6E,IAAcrF;AAAA,EAClB,CACE;AAAA,IACE,WAAAC;AAAA,IACA,OAAAqF;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC;AAAA,IACA,eAAAC;AAAA,IACA,QAAAnC;AAAA,IACA,aAAAoC;AAAA,IACA,OAAAC;AAAA,IACA,cAAAC,IAAe;AAAA,IACf,YAAAC,IAAa;AAAA,IACb,cAAAC,IAAe;AAAA,IACf,aAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,MAAAd;AAAA,IACA,aAAA1C,IAAc;AAAA,IACd,GAAGhC;AAAA,EAAA,GAELC,MAEImF,IAEA,gBAAAjF;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,WAAWlB;AAAA,QACT;AAAA,QACAiD,MAAgB,eAAe,mBAAmB;AAAA,QAClDzC;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWnB;AAAA,cACT;AAAA,cACAiD,MAAgB,eAAe,uBAAuB;AAAA,YAAA;AAAA,UACxD;AAAA,QAAA;AAAA,QAEF,gBAAA7B,EAAC,SAAI,WAAWpB,EAAG,uBAAuBiD,MAAgB,eAAe,WAAW,MAAM,GACxF,UAAA;AAAA,UAAA,gBAAA9B,EAAC,OAAA,EAAI,WAAU,sCAAA,CAAsC;AAAA,UACrD,gBAAAA,EAAC,OAAA,EAAI,WAAU,sCAAA,CAAsC;AAAA,UACrD,gBAAAA,EAAC,OAAA,EAAI,WAAU,wCAAA,CAAwC;AAAA,QAAA,EAAA,CACzD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,IAMF8B,MAAgB,eAEhB,gBAAA7B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,WAAWlB;AAAA,QACT;AAAA,QACAsG,KAAgB;AAAA,QAChB9F;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAE;AAAA,UAACuE;AAAA,UAAA;AAAA,YACC,MAAAC;AAAA,YACA,WAAU;AAAA,YAEV,UAAA,gBAAAxE;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAK0E;AAAA,gBACL,KAAKC;AAAA,gBACL,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ;AAAA,QAAA;AAAA,QAGF,gBAAA1E,EAAC,OAAA,EAAI,WAAU,sCACZ,UAAA;AAAA,UAAAuE,IACC,gBAAAxE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAAwE;AAAA,cACA,WAAU;AAAA,cAET,UAAAG;AAAA,YAAA;AAAA,UAAA,IAGH,gBAAA3E,EAAC,MAAA,EAAG,WAAU,kEACX,UAAA2E,GACH;AAAA,UAGDC,KACC,gBAAA5E,EAAC,KAAA,EAAE,WAAU,0CAA0C,UAAA4E,GAAO;AAAA,UAG/DjC,MAAW,UACV,gBAAA1C,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,YAAA,gBAAAD,EAACiC,KAAO,OAAOU,GAAQ,MAAK,MAAK,UAAQ,IAAC;AAAA,YACzCoC,MAAgB,UACf,gBAAA9E,EAAC,QAAA,EAAK,WAAU,0CAAyC,UAAA;AAAA,cAAA;AAAA,cAAE8E;AAAA,cAAY;AAAA,YAAA,EAAA,CAAC;AAAA,UAAA,GAE5E;AAAA,UAGF,gBAAA9E,EAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,YAAA,gBAAAA,EAAC,QAAA,EAAK,WAAU,gDAA+C,UAAA;AAAA,cAAA;AAAA,cACzD4E,EAAM,eAAe,SAAS,EAAE,uBAAuB,GAAG,uBAAuB,GAAG;AAAA,YAAA,GAC1F;AAAA,YACCC,KAAiBA,IAAgBD,KAChC,gBAAA5E,EAAC,QAAA,EAAK,WAAU,uDAAsD,UAAA;AAAA,cAAA;AAAA,cAChE6E,EAAc,eAAe,SAAS,EAAE,uBAAuB,GAAG,uBAAuB,GAAG;AAAA,YAAA,EAAA,CAClG;AAAA,UAAA,GAEJ;AAAA,UAECM,KACC,gBAAApF;AAAA,YAACb;AAAA,YAAA;AAAA,cACC,SAASiG;AAAA,cACT,UAAUD;AAAA,cACV,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,WAAS;AAAA,cACT,UAAU,gBAAAnF,EAACuF,GAAA,EAAa,WAAU,cAAA,CAAc;AAAA,cAChD,WAAU;AAAA,cAET,cAAe,iBAAiB;AAAA,YAAA;AAAA,UAAA;AAAA,QACnC,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,IAOJ,gBAAAtF;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,WAAWlB;AAAA,QACT;AAAA,QACAsG,KAAgB;AAAA,QAChB9F;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAG;AAAA,UAACsE;AAAA,UAAA;AAAA,YACC,MAAAC;AAAA,YACA,WAAU;AAAA,YAGV,UAAA;AAAA,cAAA,gBAAAxE;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,eAAY;AAAA,kBACZ,WAAU;AAAA,kBACV,OAAO;AAAA,oBACL,iBAAiB,OAAO0E,CAAK;AAAA,oBAC7B,QAAQ;AAAA,oBACR,WAAW;AAAA,kBAAA;AAAA,gBACb;AAAA,cAAA;AAAA,cAGF,gBAAA1E;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,KAAK0E;AAAA,kBACL,KAAKC;AAAA,kBACL,WAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGXK,KACC,gBAAAhF,EAAC,OAAA,EAAI,WAAU,8BACb,4BAACQ,GAAA,EAAM,SAASyE,GAAe,UAAAD,EAAA,CAAM,EAAA,CACvC;AAAA,cAGDG,KACC,gBAAAnF,EAAC,OAAA,EAAI,WAAU,sEACb,UAAA,gBAAAA,EAACQ,GAAA,EAAM,SAAQ,UAAS,MAAK,MAAK,UAAA,WAAA,CAAQ,EAAA,CAC5C;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAIH6E,KACC,gBAAArF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAASqF;AAAA,YACT,WAAU;AAAA,YACV,cAAYC,IAAa,0BAA0B;AAAA,YAEnD,UAAA,gBAAAtF;AAAA,cAACwF;AAAA,cAAA;AAAA,gBACC,WAAW3G;AAAA,kBACT;AAAA,kBACAyG,IACI,wDACA;AAAA,gBAAA;AAAA,cACN;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,QAIJ,gBAAArF,EAAC,OAAA,EAAI,WAAU,4BACZ,UAAA;AAAA,UAAAuE,IACC,gBAAAxE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAAwE;AAAA,cACA,WAAU;AAAA,cAET,UAAAG;AAAA,YAAA;AAAA,UAAA,IAGH,gBAAA3E,EAAC,MAAA,EAAG,WAAU,oEACX,UAAA2E,GACH;AAAA,UAGDC,KACC,gBAAA5E,EAAC,KAAA,EAAE,WAAU,+CAA+C,UAAA4E,GAAO;AAAA,UAGpEjC,MAAW,UACV,gBAAA1C,EAAC,OAAA,EAAI,WAAU,gCACb,UAAA;AAAA,YAAA,gBAAAD,EAACiC,KAAO,OAAOU,GAAQ,MAAK,MAAK,UAAQ,IAAC;AAAA,YACzCoC,MAAgB,UACf,gBAAA9E,EAAC,QAAA,EAAK,WAAU,0CAAyC,UAAA;AAAA,cAAA;AAAA,cAAE8E;AAAA,cAAY;AAAA,YAAA,EAAA,CAAC;AAAA,UAAA,GAE5E;AAAA,UAGF,gBAAA9E,EAAC,OAAA,EAAI,WAAU,kCACb,UAAA;AAAA,YAAA,gBAAAA,EAAC,QAAA,EAAK,WAAU,8CAA6C,UAAA;AAAA,cAAA;AAAA,cACvD4E,EAAM,eAAe,SAAS,EAAE,uBAAuB,GAAG,uBAAuB,GAAG;AAAA,YAAA,GAC1F;AAAA,YACCC,KAAiBA,IAAgBD,KAChC,gBAAA5E,EAAC,QAAA,EAAK,WAAU,uDAAsD,UAAA;AAAA,cAAA;AAAA,cAChE6E,EAAc,eAAe,SAAS,EAAE,uBAAuB,GAAG,uBAAuB,GAAG;AAAA,YAAA,EAAA,CAClG;AAAA,UAAA,GAEJ;AAAA,UAECM,KACC,gBAAApF;AAAA,YAACb;AAAA,YAAA;AAAA,cACC,SAASiG;AAAA,cACT,UAAUD;AAAA,cACV,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,WAAS;AAAA,cACT,UAAU,gBAAAnF,EAACuF,GAAA,EAAa,WAAU,UAAA,CAAU;AAAA,cAC5C,WAAW1G;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cAAA;AAAA,cAGD,cAAe,iBAAiB;AAAA,YAAA;AAAA,UAAA;AAAA,QACnC,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;AAEA4F,EAAY,cAAc;AC/R1B,MAAMgB,KAAYrG;AAAA,EAChB,CACE;AAAA,IACE,WAAAC;AAAA,IACA,UAAAqG;AAAA,IACA,SAAAC;AAAA,IACA,WAAAlG,IAAY;AAAA,IACZ,MAAAF,IAAO;AAAA,IACP,aAAAqG,IAAc;AAAA,IACd,OAAOC;AAAA,IACP,UAAAxD;AAAA,IACA,GAAGvC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,CAAC+F,GAAeC,CAAgB,IAAI3E,EAAS,EAAE,GAC/Cc,IAAQ2D,MAAoB,SAAYA,IAAkBC,GAE1DrD,IAAc;AAAA,MAClB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,GAGAuD,IAAe,CAACC,MAA2C;AAC/D,YAAMC,IAAWD,EAAE,OAAO;AAC1B,MAAIJ,MAAoB,UACtBE,EAAiBG,CAAQ,GAE3B7D,KAAA,QAAAA,EAAW4D;AAAA,IACb,GAEME,IAAc,MAAM;AACxB,MAAIN,MAAoB,UACtBE,EAAiB,EAAE,GAErBJ,KAAA,QAAAA;AAAA,IACF,GAEMS,IAAgB,CAACH,MAA6C;AAClE,MAAIA,EAAE,QAAQ,WAAWP,KACvBA,EAASxD,CAAe;AAAA,IAE5B;AAEA,WACE,gBAAAlC,EAAC,OAAA,EAAI,WAAWnB,EAAG,mBAAmBQ,CAAS,GAC7C,UAAA,gBAAAY,EAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,MAAA,gBAAAD,EAACqG,GAAA,EAAO,WAAU,6EAAA,CAA6E;AAAA,MAE/F,gBAAArG;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAD;AAAA,UACA,MAAK;AAAA,UACL,OAAAmC;AAAA,UACA,UAAU8D;AAAA,UACV,WAAWI;AAAA,UACX,aAAAR;AAAA,UACA,WAAW/G;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA4D,EAAYlD,CAAI;AAAA,UAAA;AAAA,UAEjB,GAAGO;AAAA,QAAA;AAAA,MAAA;AAAA,MAGN,gBAAAG,EAAC,OAAA,EAAI,WAAU,4CACZ,UAAA;AAAA,QAAAR,KAAa,gBAAAO,EAACG,GAAA,EAAQ,WAAU,sDAAA,CAAsD;AAAA,QAEtF+B,KAAS,CAACzC,KACT,gBAAAO;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAASmG;AAAA,YACT,WAAU;AAAA,YACV,cAAW;AAAA,YAEX,UAAA,gBAAAnG,EAACsG,IAAA,EAAE,WAAU,yCAAA,CAAyC;AAAA,UAAA;AAAA,QAAA;AAAA,MACxD,EAAA,CAEJ;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,EAEJ;AACF;AAEAb,GAAU,cAAc;ACpFxB,MAAMc,KAAenH;AAAA,EACnB,CACE;AAAA,IACE,WAAAC;AAAA,IACA,OAAAwF;AAAA,IACA,eAAAC;AAAA,IACA,UAAA0B,IAAW;AAAA,IACX,MAAAjH,IAAO;AAAA,IACP,cAAAkH,IAAe;AAAA,IACf,cAAAC;AAAA,IACA,GAAG5G;AAAA,EAAA,GAELC,MACG;AACH,UAAM4G,IACJ7B,KAAiBA,IAAgBD,IAC7B,KAAK,OAAQC,IAAgBD,KAASC,IAAiB,GAAG,IAC1D,GAEArC,IAAc;AAAA,MAClB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,GAGAmE,IAAsB;AAAA,MAC1B,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAGN,WACE,gBAAA3G,EAAC,SAAI,KAAAF,GAAU,WAAWlB,EAAG,uBAAuBQ,CAAS,GAAI,GAAGS,GAClE,UAAA;AAAA,MAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,UAAA,gBAAAA,EAAC,UAAK,WAAWpB,EAAG,sCAAsC4D,EAAYlD,CAAI,CAAC,GACxE,UAAA;AAAA,YAAAiH;AAAA,YAAS;AAAA,YAAE3B,EAAM,QAAQ,CAAC;AAAA,UAAA,GAC7B;AAAA,UAECC,KAAiBA,IAAgBD,KAChC,gBAAA5E;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWpB;AAAA,gBACT;AAAA,gBACA+H,EAAoBrH,CAAI;AAAA,cAAA;AAAA,cAGzB,UAAA;AAAA,gBAAAiH;AAAA,gBAAS;AAAA,gBAAE1B,EAAc,QAAQ,CAAC;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACrC,GAEJ;AAAA,QAEC2B,KAAgBE,IAAW,KAC1B,gBAAA1G,EAACO,KAAM,SAAQ,WAAU,MAAK,MAAK,UAAA;AAAA,UAAA;AAAA,UAC/BmG;AAAA,UAAS;AAAA,QAAA,EAAA,CACb;AAAA,MAAA,GAEJ;AAAA,MAECD,KACC,gBAAAzG,EAAC,KAAA,EAAE,WAAU,0CAAyC,UAAA;AAAA,QAAA;AAAA,QAChDyG,EAAa;AAAA,QAAM;AAAA,QAAMF;AAAA,QAAS;AAAA,QAAEE,EAAa,MAAM,QAAQ,CAAC;AAAA,QAAE;AAAA,MAAA,EAAA,CACxE;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF;AAEAH,GAAa,cAAc;ACvE3B,MAAMM,KAAmBzH;AAAA,EACvB,CACE;AAAA,IACE,WAAAC;AAAA,IACA,OAAA6C;AAAA,IACA,KAAA4E,IAAM;AAAA,IACN,KAAAC,IAAM;AAAA,IACN,UAAA1E;AAAA,IACA,MAAA9C,IAAO;AAAA,IACP,UAAAM,IAAW;AAAA,IACX,WAAAmH,IAAY;AAAA,IACZ,GAAGlH;AAAA,EAAA,GAELC,MACG;AACH,UAAMkH,IAAkB,MAAM;AAC5B,MAAI/E,IAAQ6E,KACV1E,EAASH,IAAQ,CAAC;AAAA,IAEtB,GAEMgF,IAAkB,MAAM;AAC5B,MAAIhF,IAAQ4E,KACVzE,EAASH,IAAQ,CAAC;AAAA,IAEtB,GAEMiF,IAAoB,CAAClB,MAA2C;AACpE,YAAMC,IAAW,SAASD,EAAE,OAAO,KAAK;AACxC,MAAI,CAAC,MAAMC,CAAQ,KAAKA,KAAYY,KAAOZ,KAAYa,KACrD1E,EAAS6D,CAAQ;AAAA,IAErB,GAEMzD,IAAc;AAAA,MAClB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,GAGA2E,IAAmB;AAAA,MACvB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAGN,WACE,gBAAAnH,EAAC,SAAI,KAAAF,GAAU,WAAWlB,EAAG,8BAA8BQ,CAAS,GAAI,GAAGS,GACxE,UAAA;AAAA,MAAAkH,KACC,gBAAAhH,EAAC,SAAA,EAAM,WAAU,gDAA+C,UAAA,cAEhE;AAAA,MAGF,gBAAAC,EAAC,OAAA,EAAI,WAAU,kCACb,UAAA;AAAA,QAAA,gBAAAD;AAAA,UAACb;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAS+H;AAAA,YACT,UAAUrH,KAAYqC,KAAS4E;AAAA,YAC/B,WAAWjI,EAAG4D,EAAYlD,CAAI,GAAG,KAAK;AAAA,YACtC,cAAW;AAAA,YAEX,UAAA,gBAAAS,EAACqH,IAAA,EAAM,WAAU,UAAA,CAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAG7B,gBAAArH;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAAkC;AAAA,YACA,UAAUiF;AAAA,YACV,KAAAL;AAAA,YACA,KAAAC;AAAA,YACA,UAAAlH;AAAA,YACA,WAAWhB;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACAuI,EAAiB7H,CAAI;AAAA,YAAA;AAAA,YAEvB,cAAW;AAAA,UAAA;AAAA,QAAA;AAAA,QAGb,gBAAAS;AAAA,UAACb;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAS8H;AAAA,YACT,UAAUpH,KAAYqC,KAAS6E;AAAA,YAC/B,WAAWlI,EAAG4D,EAAYlD,CAAI,GAAG,KAAK;AAAA,YACtC,cAAW;AAAA,YAEX,UAAA,gBAAAS,EAACsH,IAAA,EAAK,WAAU,UAAA,CAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MAC5B,EAAA,CACF;AAAA,IAAA,GACF;AAAA,EAEJ;AACF;AAEAT,GAAiB,cAAc;ACxG/B,MAAMU,KAAYnI;AAAA,EAChB,CAAC,EAAE,WAAAC,GAAW,OAAAuC,GAAO,SAAA4F,GAAS,UAAAC,GAAU,OAAApH,GAAO,YAAAC,GAAY,UAAAV,GAAU,GAAGE,EAAA,GAASC,MAE7E,gBAAAE,EAAC,SAAI,KAAAF,GAAU,WAAWlB,EAAG,yBAAyBQ,CAAS,GAAI,GAAGS,GACnE,UAAA;AAAA,IAAA8B,KACC,gBAAA3B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAAuH;AAAA,QACA,WAAU;AAAA,QAET,UAAA;AAAA,UAAA5F;AAAA,UACA6F,KAAY,gBAAAzH,EAAC,QAAA,EAAK,WAAU,kCAAiC,UAAA,IAAA,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAIlEJ;AAAA,KAECS,KAASC,MACT,gBAAAN;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWnB;AAAA,UACT;AAAA,UACAwB,IAAQ,8BAA8B;AAAA,QAAA;AAAA,QAGvC,UAAAA,KAASC;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GAEJ;AAGN;AAEAiH,GAAU,cAAc;ACrCxB,SAASG,GAAW,EAAE,GAAG5H,KAAsC;AAC7D,2BAAQ,OAAA,EAAI,cAAW,cAAa,aAAU,cAAc,GAAGA,GAAO;AACxE;AAEA,SAAS6H,GAAe,EAAE,WAAAtI,GAAW,GAAGS,KAAqC;AAC3E,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWnB;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS8H,GAAe,EAAE,WAAAvI,GAAW,GAAGS,KAAqC;AAC3E,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWnB,EAAG,oCAAoCQ,CAAS;AAAA,MAC1D,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS+H,GAAe;AAAA,EACtB,SAAAC;AAAA,EACA,WAAAzI;AAAA,EACA,GAAGS;AACL,GAEG;AAGD,SACE,gBAAAE;AAAA,IAHW8H,IAAUC,KAAO;AAAA,IAG3B;AAAA,MACC,aAAU;AAAA,MACV,WAAWlJ,EAAG,2CAA2CQ,CAAS;AAAA,MACjE,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASkI,GAAe,EAAE,WAAA3I,GAAW,GAAGS,KAAuC;AAC7E,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,iBAAc;AAAA,MACd,gBAAa;AAAA,MACb,WAAWnB,EAAG,+BAA+BQ,CAAS;AAAA,MACrD,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASmI,GAAoB;AAAA,EAC3B,UAAArI;AAAA,EACA,WAAAP;AAAA,EACA,GAAGS;AACL,GAA+B;AAC7B,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,WAAWnB,EAAG,oBAAoBQ,CAAS;AAAA,MAC1C,GAAGS;AAAA,MAEH,UAAAF,uBAAasI,GAAA,CAAA,CAAa;AAAA,IAAA;AAAA,EAAA;AAGjC;ACxEA,SAASC,GAAU;AAAA,EACjB,GAAGrI;AACL,GAAyD;AACvD,2BAAQsI,EAAmB,MAAnB,EAAwB,aAAU,aAAa,GAAGtI,GAAO;AACnE;AAEA,SAASuI,GAAc;AAAA,EACrB,WAAAhJ;AAAA,EACA,GAAGS;AACL,GAAyD;AACvD,SACE,gBAAAE;AAAA,IAACoI,EAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAWvJ,EAAG,4BAA4BQ,CAAS;AAAA,MAClD,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASwI,GAAiB;AAAA,EACxB,WAAAjJ;AAAA,EACA,UAAAO;AAAA,EACA,GAAGE;AACL,GAA4D;AAC1D,SACE,gBAAAE,EAACoI,EAAmB,QAAnB,EAA0B,WAAU,QACnC,UAAA,gBAAAnI;AAAA,IAACmI,EAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAWvJ;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEH,UAAA;AAAA,QAAAF;AAAA,QACD,gBAAAI,EAACuD,GAAA,EAAgB,WAAU,8GAAA,CAA8G;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAE7I;AAEJ;AAEA,SAASgF,GAAiB;AAAA,EACxB,WAAAlJ;AAAA,EACA,UAAAO;AAAA,EACA,GAAGE;AACL,GAA4D;AAC1D,SACE,gBAAAE;AAAA,IAACoI,EAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACT,GAAGtI;AAAA,MAEJ,4BAAC,OAAA,EAAI,WAAWjB,EAAG,aAAaQ,CAAS,GAAI,UAAAO,EAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAG5D;ACxDA,SAAS4I,GAAgB;AAAA,EACvB,eAAAC,IAAgB;AAAA,EAChB,GAAG3I;AACL,GAA2D;AACzD,SACE,gBAAAE;AAAA,IAAC0I,EAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,eAAAD;AAAA,MACC,GAAG3I;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS6I,GAAQ;AAAA,EACf,GAAG7I;AACL,GAAuD;AACrD,SACE,gBAAAE,EAACwI,IAAA,EACC,UAAA,gBAAAxI,EAAC0I,EAAiB,MAAjB,EAAsB,aAAU,WAAW,GAAG5I,EAAA,CAAO,EAAA,CACxD;AAEJ;AAEA,SAAS8I,GAAe;AAAA,EACtB,GAAG9I;AACL,GAA0D;AACxD,2BAAQ4I,EAAiB,SAAjB,EAAyB,aAAU,mBAAmB,GAAG5I,GAAO;AAC1E;AAEA,SAAS+I,GAAe;AAAA,EACtB,WAAAxJ;AAAA,EACA,YAAAyJ,IAAa;AAAA,EACb,UAAAlJ;AAAA,EACA,GAAGE;AACL,GAA0D;AACxD,SACE,gBAAAE,EAAC0I,EAAiB,QAAjB,EACC,UAAA,gBAAAzI;AAAA,IAACyI,EAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,YAAAI;AAAA,MACA,WAAWjK;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEH,UAAA;AAAA,QAAAF;AAAA,QACD,gBAAAI,EAAC0I,EAAiB,OAAjB,EAAuB,WAAU,+FAAA,CAA+F;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAErI;AAEJ;ACpCA,MAAMK,KAAO3J;AAAA,EACX,CACE;AAAA,IACE,WAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,OAAAqF;AAAA,IACA,UAAAqE;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC;AAAA,IACA,cAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,UAAAzJ;AAAA,IACA,GAAGE;AAAA,EAAA,GAELC,MASE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,WAAWlB;AAAA,QACT;AAAA,QAViB;AAAA,UACrB,SAAS;AAAA,UACT,UAAU;AAAA,UACV,OAAO;AAAA,QAAA,EAQYS,CAAO;AAAA,QACtBD;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEH,UAAA;AAAA,QAAAsJ,KACC,gBAAAnJ,EAAAC,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAF;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO,EAAE,iBAAiB,OAAOoJ,CAAe,IAAA;AAAA,YAAI;AAAA,UAAA;AAAA,UAErDC,KACC,gBAAArJ,EAAC,OAAA,EAAI,WAAU,8DAAA,CAA8D;AAAA,QAAA,GAEjF;AAAA,QAGF,gBAAAC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWpB;AAAA,cACT;AAAA,cACAS,MAAY,cAAc;AAAA,YAAA;AAAA,YAG5B,UAAA;AAAA,cAAA,gBAAAW,EAAC,SAAI,WAAWpB,EAAG,aAAaS,MAAY,WAAW,YAAY,GAChE,UAAA;AAAA,gBAAA0J,KACC,gBAAAhJ;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAWnB;AAAA,sBACT;AAAA,sBACAuK,IACI,0BACA;AAAA,oBAAA;AAAA,oBAGL,UAAAJ;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAIL,gBAAAhJ;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAWnB;AAAA,sBACT;AAAA,sBACAuK,IAAkB,eAAe;AAAA,oBAAA;AAAA,oBAGlC,UAAAzE;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGFsE,KACC,gBAAAjJ;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAWnB;AAAA,sBACT;AAAA,sBACAuK,IACI,kBACA;AAAA,oBAAA;AAAA,oBAGL,UAAAH;AAAA,kBAAA;AAAA,gBAAA;AAAA,iBAIHC,KAAcC,MACd,gBAAAlJ,EAAC,OAAA,EAAI,WAAU,6BACZ,UAAA;AAAA,kBAAAiJ,KACC,gBAAAlJ;AAAA,oBAACb;AAAA,oBAAA;AAAA,sBACC,MAAK;AAAA,sBACL,SAAS+J,EAAW;AAAA,sBACpB,SAAQ;AAAA,sBAEP,UAAAA,EAAW;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAIfC,KACC,gBAAAnJ;AAAA,oBAACb;AAAA,oBAAA;AAAA,sBACC,MAAK;AAAA,sBACL,SAASgK,EAAa;AAAA,sBACtB,SAAQ;AAAA,sBAEP,UAAAA,EAAa;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAChB,EAAA,CAEJ;AAAA,cAAA,GAEJ;AAAA,cAEC7J,MAAY,WAAWM,uBACrB,OAAA,EAAI,WAAU,gBAAgB,UAAAA,EAAA,CAAS;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAI3CN,MAAY,WAAWM,uBACrB,OAAA,EAAI,WAAU,gDACZ,UAAAA,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAKV;AAEAmJ,GAAK,cAAc;ACrInB,MAAMO,IAAalK;AAAA,EACjB,CACE;AAAA,IACE,WAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,MAAAmB;AAAA,IACA,OAAAkE;AAAA,IACA,aAAAsE;AAAA,IACA,QAAAM;AAAA,IACA,GAAGzJ;AAAA,EAAA,GAELC,MACG;AAQH,UAAMyJ,IAAc/I,KAPC;AAAA,MACnB,SAAS,gBAAAT,EAACyJ,IAAA,EAAQ,WAAU,YAAA,CAAY;AAAA,MACxC,QAAQ,gBAAAzJ,EAACqG,GAAA,EAAO,WAAU,YAAA,CAAY;AAAA,MACtC,MAAM,gBAAArG,EAACuF,GAAA,EAAa,WAAU,YAAA,CAAY;AAAA,MAC1C,OAAO,gBAAAvF,EAAC0J,IAAA,EAAM,WAAU,YAAA,CAAY;AAAA,IAAA,EAGGpK,CAAO;AAEhD,WACE,gBAAAW;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAF;AAAA,QACA,WAAWlB;AAAA,UACT;AAAA,UACAQ;AAAA,QAAA;AAAA,QAED,GAAGS;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,qEACZ,UAAAwJ,GACH;AAAA,UAEA,gBAAAxJ,EAAC,MAAA,EAAG,WAAU,uDACX,UAAA2E,GACH;AAAA,UAECsE,KACC,gBAAAjJ,EAAC,KAAA,EAAE,WAAU,gDACV,UAAAiJ,GACH;AAAA,UAGDM,KACC,gBAAAvJ;AAAA,YAACb;AAAA,YAAA;AAAA,cACC,SAASoK,EAAO;AAAA,cAChB,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,WAAU;AAAA,cAET,UAAAA,EAAO;AAAA,YAAA;AAAA,UAAA;AAAA,QACV;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEAD,EAAW,cAAc;AC7DzB,MAAMK,KAAavK;AAAA,EACjB,CACE;AAAA,IACE,WAAAC;AAAA,IACA,MAAA6D,IAAO;AAAA,IACP,OAAAyB;AAAA,IACA,SAAAiF;AAAA,IACA,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,UAAAC,IAAW;AAAA,IACX,GAAGlK;AAAA,EAAA,GAELC,MACG;AAwBH,UAAMkK,IAvBiB;AAAA,MACrB,KAAO;AAAA,QACL,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,MAER,KAAO;AAAA,QACL,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,MAER,SAAS;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,MAER,SAAS;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,IACR,EAG6B/G,CAAI,GAC7BgH,IAAevF,KAASsF,EAAQ,OAChCE,IAAiBP,KAAWK,EAAQ;AAE1C,WACE,gBAAAhK;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAF;AAAA,QACA,WAAWlB;AAAA,UACT;AAAA,UACAQ;AAAA,QAAA;AAAA,QAEF,MAAK;AAAA,QACL,aAAU;AAAA,QACT,GAAGS;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,oCACZ,UAAA;AAAA,YAAAgK,EAAQ,QACP,gBAAAjK,EAAC,MAAA,EAAG,WAAU,qDACX,YAAQ,MACX;AAAA,YAGF,gBAAAA,EAAC,SAAI,WAAU,yEACb,4BAACoK,IAAA,EAAY,WAAU,aAAY,EAAA,CACrC;AAAA,UAAA,GACF;AAAA,UAEA,gBAAApK,EAAC,MAAA,EAAG,WAAU,oDACX,UAAAkK,GACH;AAAA,UAEA,gBAAAlK,EAAC,KAAA,EAAE,WAAU,gDACV,UAAAmK,GACH;AAAA,UAEA,gBAAAlK,EAAC,OAAA,EAAI,WAAU,4CACZ,UAAA;AAAA,YAAA8J,KAAaF,KACZ,gBAAA7J;AAAA,cAACb;AAAA,cAAA;AAAA,gBACC,SAAS0K;AAAA,gBACT,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,UAAU,gBAAA7J,EAACqK,IAAA,EAAU,WAAU,UAAA,CAAU;AAAA,gBAC1C,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAKFL,KAAYF,KACX,gBAAA9J;AAAA,cAACb;AAAA,cAAA;AAAA,gBACC,SAAS2K;AAAA,gBACT,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,UAAU,gBAAA9J,EAACsK,IAAA,EAAK,WAAU,UAAA,CAAU;AAAA,gBACrC,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAED,EAAA,CAEJ;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEAX,GAAW,cAAc;ACpGzB,MAAMY,KAAcnL;AAAA,EAClB,CACE;AAAA,IACE,WAAAC;AAAA,IACA,UAAAmL;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,KAAAC,IAAM;AAAA,IACN,WAAAjL,IAAY;AAAA,IACZ,eAAAkL,IAAgB;AAAA,IAChB,mBAAAC,IAAoB;AAAA,IACpB,eAAAC;AAAA,IACA,GAAG/K;AAAA,EAAA,GAELC,MACG;AACH,UAAM+K,IAAgB;AAAA,MACpB,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IAAA,GAGCC,IAAa;AAAA,MACjB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAGN,WAAItL,IAEA,gBAAAO;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAD;AAAA,QACA,WAAWlB;AAAA,UACT;AAAA,UACAiM,EAAcL,CAAO;AAAA,UACrBM,EAAWL,CAAG;AAAA,UACdrL;AAAA,QAAA;AAAA,QAED,GAAGS;AAAA,QAEH,UAAA,MAAM,KAAK,EAAE,QAAQ6K,GAAe,EAAE,IAAI,CAAC9H,GAAGC,MAC7C,gBAAA9C;AAAA,UAACyE;AAAA,UAAA;AAAA,YAEC,OAAM;AAAA,YACN,OAAM;AAAA,YACN,OAAO;AAAA,YACP,YAAU;AAAA,UAAA;AAAA,UAJL3B;AAAA,QAAA,CAMR;AAAA,MAAA;AAAA,IAAA,IAKH0H,EAAS,WAAW,IAEpB,gBAAAxK;AAAA,MAACsJ;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,OAAOsB;AAAA,QACP,aAAY;AAAA,QACZ,QACEC,IACI;AAAA,UACE,OAAO;AAAA,UACP,SAASA;AAAA,QAAA,IAEX;AAAA,MAAA;AAAA,IAAA,IAOV,gBAAA7K;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAD;AAAA,QACA,WAAWlB;AAAA,UACT;AAAA,UACAiM,EAAcL,CAAO;AAAA,UACrBM,EAAWL,CAAG;AAAA,UACdrL;AAAA,QAAA;AAAA,QAED,GAAGS;AAAA,QAEH,UAAA0K,EAAS,IAAI,CAACQ,GAASC,wBACrBxG,GAAA,EAAyB,GAAGuG,EAAA,GAAXC,CAAoB,CACvC;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEAV,GAAY,cAAc;AClG1B,SAASW,GAAO;AAAA,EACd,GAAGpL;AACL,GAAsD;AACpD,2BAAQqL,EAAgB,MAAhB,EAAqB,aAAU,UAAU,GAAGrL,GAAO;AAC7D;AAEA,SAASsL,GAAc;AAAA,EACrB,GAAGtL;AACL,GAAyD;AACvD,2BAAQqL,EAAgB,SAAhB,EAAwB,aAAU,kBAAkB,GAAGrL,GAAO;AACxE;AAEA,SAASuL,GAAa;AAAA,EACpB,GAAGvL;AACL,GAAwD;AACtD,2BAAQqL,EAAgB,QAAhB,EAAuB,aAAU,iBAAiB,GAAGrL,GAAO;AACtE;AAQA,SAASwL,GAAc;AAAA,EACrB,WAAAjM;AAAA,EACA,GAAGS;AACL,GAAyD;AACvD,SACE,gBAAAE;AAAA,IAACmL,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWtM;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASyL,GAAc;AAAA,EACrB,WAAAlM;AAAA,EACA,UAAAO;AAAA,EACA,GAAGE;AACL,GAAyD;AACvD,SACE,gBAAAG,EAACoL,IAAA,EAAa,aAAU,iBACtB,UAAA;AAAA,IAAA,gBAAArL,EAACsL,IAAA,EAAc;AAAA,IACf,gBAAArL;AAAA,MAACkL,EAAgB;AAAA,MAAhB;AAAA,QACC,aAAU;AAAA,QACV,WAAWtM;AAAA,UACT;AAAA,UACAQ;AAAA,QAAA;AAAA,QAED,GAAGS;AAAA,QAEH,UAAA;AAAA,UAAAF;AAAA,UACD,gBAAAK,EAACkL,EAAgB,OAAhB,EAAsB,WAAU,qWAC/B,UAAA;AAAA,YAAA,gBAAAnL,EAACwL,GAAA,EAAM;AAAA,YACP,gBAAAxL,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,QAAA,CAAK;AAAA,UAAA,EAAA,CACjC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;AAEA,SAASyL,GAAa,EAAE,WAAApM,GAAW,GAAGS,KAAsC;AAC1E,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWnB,EAAG,gDAAgDQ,CAAS;AAAA,MACtE,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS4L,GAAa,EAAE,WAAArM,GAAW,GAAGS,KAAsC;AAC1E,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWnB;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS6L,GAAY;AAAA,EACnB,WAAAtM;AAAA,EACA,GAAGS;AACL,GAAuD;AACrD,SACE,gBAAAE;AAAA,IAACmL,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWtM,EAAG,sCAAsCQ,CAAS;AAAA,MAC5D,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS8L,GAAkB;AAAA,EACzB,WAAAvM;AAAA,EACA,GAAGS;AACL,GAA6D;AAC3D,SACE,gBAAAE;AAAA,IAACmL,EAAgB;AAAA,IAAhB;AAAA,MACC,aAAU;AAAA,MACV,WAAWtM,EAAG,iCAAiCQ,CAAS;AAAA,MACvD,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;ACjHA,SAAS+L,GAAM,EAAE,GAAG/L,KAA2D;AAC7E,2BAAQgM,EAAe,MAAf,EAAoB,aAAU,SAAS,GAAGhM,GAAO;AAC3D;AAEA,SAASiM,GAAa;AAAA,EACpB,GAAGjM;AACL,GAAwD;AACtD,2BAAQgM,EAAe,SAAf,EAAuB,aAAU,iBAAiB,GAAGhM,GAAO;AACtE;AAEA,SAASkM,GAAW;AAAA,EAClB,GAAGlM;AACL,GAAsD;AACpD,2BAAQgM,EAAe,OAAf,EAAqB,aAAU,eAAe,GAAGhM,GAAO;AAClE;AAEA,SAASmM,GAAY;AAAA,EACnB,GAAGnM;AACL,GAAuD;AACrD,2BAAQgM,EAAe,QAAf,EAAsB,aAAU,gBAAgB,GAAGhM,GAAO;AACpE;AAEA,SAASoM,GAAa;AAAA,EACpB,WAAA7M;AAAA,EACA,GAAGS;AACL,GAAwD;AACtD,SACE,gBAAAE;AAAA,IAAC8L,EAAe;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAWjN;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASqM,GAAa;AAAA,EACpB,WAAA9M;AAAA,EACA,UAAAO;AAAA,EACA,MAAAwM,IAAO;AAAA,EACP,GAAGtM;AACL,GAEG;AACD,2BACGmM,IAAA,EACC,UAAA;AAAA,IAAA,gBAAAjM,EAACkM,IAAA,EAAa;AAAA,IACd,gBAAAjM;AAAA,MAAC6L,EAAe;AAAA,MAAf;AAAA,QACC,aAAU;AAAA,QACV,WAAWjN;AAAA,UACT;AAAA,UACAuN,MAAS,WACP;AAAA,UACFA,MAAS,UACP;AAAA,UACFA,MAAS,SACP;AAAA,UACFA,MAAS,YACP;AAAA,UACF/M;AAAA,QAAA;AAAA,QAED,GAAGS;AAAA,QAEH,UAAA;AAAA,UAAAF;AAAA,UACD,gBAAAK,EAAC6L,EAAe,OAAf,EAAqB,WAAU,8OAC9B,UAAA;AAAA,YAAA,gBAAA9L,EAACwL,GAAA,EAAM,WAAU,SAAA,CAAS;AAAA,YAC1B,gBAAAxL,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,QAAA,CAAK;AAAA,UAAA,EAAA,CACjC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;AAEA,SAASqM,GAAY,EAAE,WAAAhN,GAAW,GAAGS,KAAsC;AACzE,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWnB,EAAG,6BAA6BQ,CAAS;AAAA,MACnD,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASwM,GAAY,EAAE,WAAAjN,GAAW,GAAGS,KAAsC;AACzE,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWnB,EAAG,mCAAmCQ,CAAS;AAAA,MACzD,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASyM,GAAW;AAAA,EAClB,WAAAlN;AAAA,EACA,GAAGS;AACL,GAAsD;AACpD,SACE,gBAAAE;AAAA,IAAC8L,EAAe;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAWjN,EAAG,iCAAiCQ,CAAS;AAAA,MACvD,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS0M,GAAiB;AAAA,EACxB,WAAAnN;AAAA,EACA,GAAGS;AACL,GAA4D;AAC1D,SACE,gBAAAE;AAAA,IAAC8L,EAAe;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAWjN,EAAG,iCAAiCQ,CAAS;AAAA,MACvD,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;ACxGO,SAAS2M,GAAU,EAAE,UAAA7M,GAAU,IAAI8M,IAAM,OAAO,WAAArN,KAA6B;AAClF,SACE,gBAAAW;AAAA,IAAC0M;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW7N,EAAG,2CAA2CQ,CAAS;AAAA,MAClE,OAAO,EAAE,UAAU,uBAAA;AAAA,MAElB,UAAAO;AAAA,IAAA;AAAA,EAAA;AAGP;ACpBA,MAAM+M,KAAsBvN;AAAA,EAC1B,CAAC,EAAE,WAAAC,GAAW,eAAAuN,GAAe,kBAAAC,GAAkB,cAAAC,IAAe,IAAO,GAAGhN,EAAA,GAASC,MAAQ;AACvF,UAAM,CAACgN,GAAOC,CAAQ,IAAI5L,EAA2B,OAAO,GACtD,CAAC6L,GAAUC,CAAW,IAAI9L,EAAS,EAAE,GACrC,CAAC+L,GAAeC,CAAgB,IAAIhM,EAAS,EAAK;AAExD,IAAAiM,EAAU,MAAM;AAGd,YAAMC,IADS,aAAa,QAAQ,YAAY,KACtB,SAAS,gBAAgB,aAAa,YAAY,KAAiC;AAC7G,MAAAN,EAASM,CAAM;AAGf,YAAMC,IAAa,OAAO,aAAa,QAAQ,gBAAgB,CAAC;AAChE,MAAI,OAAO,SAASA,CAAU,KAAKA,IAAa,KAC9CL,EAAYK,CAAU;AAAA,IAE1B,GAAG,CAAA,CAAE,GAELF,EAAU,MAAM;AAEd,UAAI,CAACF,KAAiB,OAAO,SAAW,OAElC,CADmB,SAAS,cAAc,wBAAwB,GACjD;AACnB,cAAMK,IAAS,SAAS,cAAc,QAAQ;AAC9C,QAAAA,EAAO,MAAM,gDACbA,EAAO,QAAQ,IACfA,EAAO,SAAS,MAAM;AACpB,UAAAJ,EAAiB,EAAI,GAEhB,OAAe,WAClB,IAAK,OAAe,QAAQ,OAAO,4BAA4B;AAAA,QAEnE,GACA,SAAS,KAAK,YAAYI,CAAM;AAAA,MAClC;AAAA,IAEJ,GAAG,CAACL,CAAa,CAAC;AAElB,UAAMM,IAAoB,MAAM;AAC9B,YAAMC,IAAWX,MAAU,UAAU,SAAS;AAC9C,MAAAC,EAASU,CAAQ,GAEjB,SAAS,gBAAgB,aAAa,cAAcA,CAAQ,GAC5D,aAAa,QAAQ,cAAcA,CAAQ,GAC3Cd,KAAA,QAAAA,EAAgBc;AAAA,IAClB,GAEMC,IAAqB,MAAM;AAC/B,YAAMC,IAAU,KAAK,IAAIX,IAAW,GAAG,EAAE;AACzC,MAAAC,EAAYU,CAAO,GACnB,SAAS,gBAAgB,MAAM,YAAY,eAAe,GAAGA,CAAO,IAAI,GACxE,SAAS,gBAAgB,MAAM,WAAW,GAAGA,CAAO,MACpD,aAAa,QAAQ,kBAAkBA,EAAQ,SAAA,CAAU,GACzDf,KAAA,QAAAA,EAAmBe;AAAA,IACrB,GAEMC,IAAqB,MAAM;AAC/B,YAAMD,IAAU,KAAK,IAAIX,IAAW,GAAG,EAAE;AACzC,MAAAC,EAAYU,CAAO,GACnB,SAAS,gBAAgB,MAAM,YAAY,eAAe,GAAGA,CAAO,IAAI,GACxE,SAAS,gBAAgB,MAAM,WAAW,GAAGA,CAAO,MACpD,aAAa,QAAQ,kBAAkBA,EAAQ,SAAA,CAAU,GACzDf,KAAA,QAAAA,EAAmBe;AAAA,IACrB;AAEA,WACE,gBAAA5N;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAD;AAAA,QACA,WAAWlB;AAAA,UACT;AAAA,UACAQ;AAAA,QAAA;AAAA,QAEF,MAAK;AAAA,QACL,cAAW;AAAA,QACV,GAAGS;AAAA,QAEJ,UAAA,gBAAAG,EAACwM,IAAA,EAAU,WAAU,0CACnB,UAAA;AAAA,UAAA,gBAAAxM,EAAC,OAAA,EAAI,WAAU,kEACb,UAAA;AAAA,YAAA,gBAAAD,EAAC8N,IAAA,EAAc,WAAU,yBAAwB,eAAY,QAAO;AAAA,YACpE,gBAAA9N,EAAC,QAAA,EAAK,WAAU,oBAAmB,UAAA,gCAAA,CAA6B;AAAA,UAAA,GAClE;AAAA,UAEA,gBAAAC,EAAC,OAAA,EAAI,WAAU,oCACZ,UAAA;AAAA,YAAA6M,KACC,gBAAA9M;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBAEV,UAAA,gBAAAA,EAAC,QAAA,EAAK,WAAU,oBAAmB,UAAA,iBAAA,CAAc;AAAA,cAAA;AAAA,YAAA;AAAA,8BAIpD,OAAA,EAAI,MAAK,SAAQ,cAAW,oBAAmB,WAAU,2BACxD,UAAA;AAAA,cAAA,gBAAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS6N;AAAA,kBACT,UAAUZ,KAAY;AAAA,kBACtB,cAAW;AAAA,kBACX,WAAWpO;AAAA,oBACT;AAAA,oBACA;AAAA,oBACA;AAAA,kBAAA;AAAA,kBAGF,UAAA,gBAAAmB,EAAC+N,IAAA,EAAQ,WAAU,UAAA,CAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,gCAG9B,QAAA,EAAK,WAAU,sEAAqE,eAAY,QAAO,UAAA,KAExG;AAAA,cAEA,gBAAA/N;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS2N;AAAA,kBACT,UAAUV,KAAY;AAAA,kBACtB,cAAW;AAAA,kBACX,WAAWpO;AAAA,oBACT;AAAA,oBACA;AAAA,oBACA;AAAA,kBAAA;AAAA,kBAGF,UAAA,gBAAAmB,EAACgO,IAAA,EAAO,WAAU,UAAA,CAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,YAC9B,GACF;AAAA,YAEA,gBAAAhO;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAASyN;AAAA,gBACT,cAAYV,MAAU,UAAU,uBAAuB;AAAA,gBACvD,WAAWlO;AAAA,kBACT;AAAA,kBACA;AAAA,gBAAA;AAAA,gBAGD,UAAAkO,MAAU,UAAU,gBAAA/M,EAACiO,IAAA,EAAK,WAAU,WAAU,IAAK,gBAAAjO,EAACkO,IAAA,EAAI,WAAU,UAAA,CAAU;AAAA,cAAA;AAAA,YAAA;AAAA,YAG/E,gBAAAlO;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAS,MAAMoN,EAAiB,CAACe,MAAM,CAACA,CAAC;AAAA,gBACzC,cAAW;AAAA,gBACX,gBAAchB;AAAA,gBACd,WAAWtO;AAAA,kBACT;AAAA,kBACA;AAAA,gBAAA;AAAA,gBAEF,OAAO;AAAA,kBACL,iBAAiBsO,IAAgB,mBAAmB;AAAA,kBACpD,OAAOA,IAAgB,8BAA8B;AAAA,kBACrD,QAAQA,IAAgB,SAAS;AAAA,gBAAA;AAAA,gBAEpC,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAED,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEAR,GAAoB,cAAc;ACpJlC,MAAMyB,KAAehP;AAAA,EACnB,CACE;AAAA,IACE,WAAAC;AAAA,IACA,QAAAgP;AAAA,IACA,eAAAC,IAAgB;AAAA,IAChB,UAAAC,IAAW;AAAA,IACX,GAAGzO;AAAA,EAAA,GAELC,MACG;AACH,UAAM,CAACyO,GAAcC,CAAe,IAAIrN,EAAS,CAAC,GAC5C,CAACsN,GAAkBC,CAAmB,IAAIvN,EAAS,EAAK,GACxD,CAACwN,GAAcC,CAAe,IAAIzN,EAAS,EAAK;AAEtD,IAAAiM,EAAU,MAAM;AAEd,YAAMyB,IAAa,OAAO,WAAW,kCAAkC;AACvE,MAAAD,EAAgBC,EAAW,OAAO;AAElC,YAAM9I,IAAe,CAACC,MAA2B;AAC/C,QAAA4I,EAAgB5I,EAAE,OAAO;AAAA,MAC3B;AAEA,aAAA6I,EAAW,iBAAiB,UAAU9I,CAAY,GAC3C,MAAM8I,EAAW,oBAAoB,UAAU9I,CAAY;AAAA,IACpE,GAAG,CAAA,CAAE,GAELqH,EAAU,MAAM;AACd,UAAI,CAACkB,KAAYG,KAAoBE,EAAc;AAEnD,YAAMG,IAAW,YAAY,MAAM;AACjC,QAAAN,EAAgB,CAACO,OAAUA,IAAO,KAAKX,EAAO,MAAM;AAAA,MACtD,GAAGC,CAAa;AAEhB,aAAO,MAAM,cAAcS,CAAQ;AAAA,IACrC,GAAG,CAACR,GAAUD,GAAeD,EAAO,QAAQK,GAAkBE,CAAY,CAAC;AAE3E,UAAMK,IAAY,CAAChE,MAAkB;AACnC,MAAAwD,EAAgBxD,CAAK,GACrB0D,EAAoB,EAAI,GACxB,WAAW,MAAMA,EAAoB,EAAK,GAAGL,CAAa;AAAA,IAC5D,GAEMY,IAAe,MAAM;AACzB,MAAAD,GAAWT,IAAe,IAAIH,EAAO,UAAUA,EAAO,MAAM;AAAA,IAC9D,GAEMc,IAAW,MAAM;AACrB,MAAAF,GAAWT,IAAe,KAAKH,EAAO,MAAM;AAAA,IAC9C;AAEA,WAAIA,EAAO,WAAW,IAAU,QAEXA,EAAOG,CAAY,GAGtC,gBAAAvO;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAF;AAAA,QACA,WAAWlB,EAAG,mCAAmCQ,CAAS;AAAA,QAC1D,cAAc,MAAMsP,EAAoB,EAAI;AAAA,QAC5C,cAAc,MAAMA,EAAoB,EAAK;AAAA,QAC5C,GAAG7O;AAAA,QAGJ,UAAA;AAAA,UAAA,gBAAAE,EAAC,SAAI,WAAU,YACZ,YAAO,IAAI,CAACoP,GAAOnE,MAClB,gBAAAhL;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAWpB;AAAA,gBACT;AAAA,gBACAoM,MAAUuD,IAAe,UAAU;AAAA,cAAA;AAAA,cAErC,eAAavD,MAAUuD;AAAA,cAEvB,UAAA;AAAA,gBAAA,gBAAAvO,EAAC,WAAA,EACC,UAAA;AAAA,kBAAA,gBAAAD;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,OAAM;AAAA,sBACN,QAAQ,GAAGoP,EAAM,YAAY,QAAQA,EAAM,aAAa,QAAQ,gBAAgB,QAAQ,CAAC;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAE3F,gBAAApP;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,OAAM;AAAA,sBACN,QAAQ,GAAGoP,EAAM,WAAW,QAAQA,EAAM,YAAY,QAAQ,gBAAgB,QAAQ,CAAC;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAEzF,gBAAApP;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,KAAKoP,EAAM;AAAA,sBACX,QAAQ,GAAGA,EAAM,WAAW,QAAQA,EAAM,YAAY,QAAQ,gBAAgB,QAAQ,CAAC;AAAA,sBACvF,KAAKA,EAAM;AAAA,sBAGX,WAAU;AAAA,sBACV,SAASnE,MAAU,IAAI,UAAU;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACnC,GACF;AAAA,gBAECmE,EAAM,eACL,gBAAAnP,EAAC,OAAA,EAAI,WAAU,sGACb,UAAA;AAAA,kBAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,6CAA6C,UAAAoP,EAAM,OAAM;AAAA,kBACtEA,EAAM,eACL,gBAAApP,EAAC,OAAE,WAAU,2CAA2C,YAAM,aAAY;AAAA,kBAE3EoP,EAAM,OACL,gBAAApP;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,MAAMoP,EAAM,IAAI;AAAA,sBAChB,WAAU;AAAA,sBAET,YAAM,IAAI;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACb,EAAA,CAEJ;AAAA,cAAA;AAAA,YAAA;AAAA,YAzCGA,EAAM;AAAA,UAAA,CA6Cd,GACH;AAAA,UAGCf,EAAO,SAAS,KACf,gBAAApO,EAAAC,GAAA,EACE,UAAA;AAAA,YAAA,gBAAAF;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAASkP;AAAA,gBACT,WAAU;AAAA,gBACV,cAAW;AAAA,gBAEX,UAAA,gBAAAlP,EAACqP,IAAA,EAAY,WAAU,wBAAA,CAAwB;AAAA,cAAA;AAAA,YAAA;AAAA,YAGjD,gBAAArP;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAASmP;AAAA,gBACT,WAAU;AAAA,gBACV,cAAW;AAAA,gBAEX,UAAA,gBAAAnP,EAACkI,GAAA,EAAa,WAAU,wBAAA,CAAwB;AAAA,cAAA;AAAA,YAAA;AAAA,UAClD,GACF;AAAA,UAIDmG,EAAO,SAAS,KACf,gBAAArO,EAAC,OAAA,EAAI,WAAU,0DACZ,UAAAqO,EAAO,IAAI,CAACxL,GAAGoI,MACd,gBAAAjL;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,SAAS,MAAMiP,EAAUhE,CAAK;AAAA,cAC9B,WAAWpM;AAAA,gBACT;AAAA,gBACAoM,MAAUuD,IACN,iBACA;AAAA,cAAA;AAAA,cAEN,cAAY,iBAAiBvD,IAAQ,CAAC;AAAA,cACtC,gBAAcA,MAAUuD;AAAA,YAAA;AAAA,YATnBvD;AAAA,UAAA,CAWR,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEAmD,GAAa,cAAc;ACtL3B,SAASkB,GAAe;AAAA,EACtB,WAAAjQ;AAAA,EACA,UAAAO;AAAA,EACA,UAAA2P,IAAW;AAAA,EACX,GAAGzP;AACL,GAEG;AACD,SACE,gBAAAG;AAAA,IAACuP,EAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,iBAAeD;AAAA,MACf,WAAW1Q;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEH,UAAA;AAAA,QAAAF;AAAA,QACA2P,uBAAaE,IAAA,CAAA,CAAuB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG3C;AAEA,SAASC,GAAmB;AAAA,EAC1B,WAAArQ;AAAA,EACA,GAAGS;AACL,GAA8D;AAC5D,SACE,gBAAAE;AAAA,IAACwP,EAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW3Q;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS6P,EAAmB;AAAA,EAC1B,WAAAtQ;AAAA,EACA,GAAGS;AACL,GAA8D;AAC5D,SACE,gBAAAE;AAAA,IAACwP,EAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW3Q,EAAG,YAAYQ,CAAS;AAAA,MAClC,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,MAAM8P,KAA6B1Q;AAAA,EACjC;AACF;AAEA,SAAS2Q,GAAsB;AAAA,EAC7B,WAAAxQ;AAAA,EACA,UAAAO;AAAA,EACA,GAAGE;AACL,GAAiE;AAC/D,SACE,gBAAAG;AAAA,IAACuP,EAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW3Q,EAAG+Q,MAA8B,SAASvQ,CAAS;AAAA,MAC7D,GAAGS;AAAA,MAEH,UAAA;AAAA,QAAAF;AAAA,QAAU;AAAA,QACX,gBAAAI;AAAA,UAACuD;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA,UAAA;AAAA,QAAA;AAAA,MACd;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,SAASuM,GAAsB;AAAA,EAC7B,WAAAzQ;AAAA,EACA,GAAGS;AACL,GAAiE;AAC/D,SACE,gBAAAE;AAAA,IAACwP,EAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW3Q;AAAA,QACT;AAAA,QACA;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS2P,GAAuB;AAAA,EAC9B,WAAApQ;AAAA,EACA,GAAGS;AACL,GAAkE;AAChE,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWnB;AAAA,QACT;AAAA,MAAA;AAAA,MAGF,UAAA,gBAAAmB;AAAA,QAACwP,EAAwB;AAAA,QAAxB;AAAA,UACC,aAAU;AAAA,UACV,WAAW3Q;AAAA,YACT;AAAA,YACAQ;AAAA,UAAA;AAAA,UAED,GAAGS;AAAA,QAAA;AAAA,MAAA;AAAA,IACN;AAAA,EAAA;AAGN;AAEA,SAASiQ,EAAmB;AAAA,EAC1B,WAAA1Q;AAAA,EACA,GAAGS;AACL,GAA8D;AAC5D,SACE,gBAAAE;AAAA,IAACwP,EAAwB;AAAA,IAAxB;AAAA,MACC,aAAU;AAAA,MACV,WAAW3Q;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,IAAA;AAAA,EAAA;AAGV;ACpGA,SAASkQ,GAAe,EAAE,OAAAC,KAA+B;AACvD,2BACG,MAAA,EAAG,WAAU,kCAAiC,MAAK,QACjD,UAAAA,EAAM;AAAA,IAAI,CAACC;;AACV,cAAAC,IAAAD,EAAK,aAAL,QAAAC,EAAe,SACb,gBAAAlQ,EAAC,MAAA,EAAiB,MAAK,QACrB,UAAA;AAAA,QAAA,gBAAAD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YAEJ,UAAAkQ,EAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAER,gBAAAlQ,EAAC,MAAA,EAAG,WAAU,QAAO,MAAK,QACvB,UAAAkQ,EAAK,SAAS,IAAI,CAACE,MAClB,gBAAApQ,EAAC,MAAA,EAAkB,MAAK,QACtB,UAAA,gBAAAA;AAAA,UAAC+P;AAAA,UAAA;AAAA,YACC,MAAMK,EAAM,QAAQ;AAAA,YACpB,WAAU;AAAA,YAET,UAAAA,EAAM;AAAA,UAAA;AAAA,QAAA,KALFA,EAAM,EAOf,CACD,EAAA,CACH;AAAA,MAAA,KAlBOF,EAAK,EAmBd,IAEA,gBAAAlQ,EAAC,MAAA,EAAiB,MAAK,QACrB,UAAA,gBAAAA;AAAA,QAAC+P;AAAA,QAAA;AAAA,UACC,MAAMG,EAAK,QAAQ;AAAA,UACnB,WAAU;AAAA,UAET,UAAAA,EAAK;AAAA,QAAA;AAAA,MAAA,EACR,GANOA,EAAK,EAOd;AAAA;AAAA,EAAA,GAGN;AAEJ;AAEA,SAASG,EAAc,EAAE,MAAAH,GAAM,OAAAI,IAAQ,KAAwC;;AAC7E,QAAM,CAACC,GAAMC,CAAO,IAAIpP,EAAS,EAAK;AAGtC,SAFqB,GAAC+O,IAAAD,EAAK,aAAL,QAAAC,EAAe,UAIjC,gBAAAnQ,EAACgM,IAAA,EAAW,SAAO,IACjB,UAAA,gBAAAhM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAMkQ,EAAK,QAAQ;AAAA,MACnB,WAAWrR;AAAA,QACT;AAAA,QACAyR,IAAQ,KAAK;AAAA,MAAA;AAAA,MAGd,UAAAJ,EAAK;AAAA,IAAA;AAAA,EAAA,GAEV,sBAKD,OAAA,EACC,UAAA;AAAA,IAAA,gBAAAjQ;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,iBAAesQ;AAAA,QACf,iBAAe,cAAcL,EAAK,EAAE;AAAA,QACpC,SAAS,MAAMM,EAAQ,CAACxB,MAAS,CAACA,CAAI;AAAA,QACtC,WAAWnQ;AAAA,UACT;AAAA,UACAyR,IAAQ,KAAK;AAAA,QAAA;AAAA,QAGf,UAAA;AAAA,UAAA,gBAAAtQ,EAAC,QAAA,EAAM,YAAK,MAAA,CAAM;AAAA,UAClB,gBAAAA;AAAA,YAACyQ;AAAA,YAAA;AAAA,cACC,eAAY;AAAA,cACZ,WAAW5R;AAAA,gBACT;AAAA,gBACA0R,KAAQ;AAAA,cAAA;AAAA,YACV;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,IAEDA,KACC,gBAAAvQ;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI,cAAckQ,EAAK,EAAE;AAAA,QACzB,WAAU;AAAA,QAET,UAAAA,EAAK,SAAU,IAAI,CAACE,MACnB,gBAAApQ,EAACqQ,GAAA,EAA6B,MAAMD,GAAO,OAAOE,IAAQ,EAAA,GAAtCF,EAAM,EAAmC,CAC9D;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GAEJ;AAEJ;AAEA,MAAMM,KAAWtR;AAAA,EACf,CAAC,EAAE,OAAA6Q,GAAO,MAAAU,GAAM,WAAAC,GAAW,YAAAC,GAAY,cAAAC,GAAc,WAAAzR,GAAW,GAAGS,EAAA,GAASC,MAExE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAWlB;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEJ,UAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,QAEb,UAAA;AAAA,QAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,gCACZ,UAAA;AAAA,UAAA0Q,KAAQ,gBAAA3Q,EAAC,OAAA,EAAI,WAAU,iBAAiB,UAAA2Q,GAAK;AAAA,UAG7CE,KACC,gBAAA7Q,EAAC,OAAA,EAAI,WAAU,yBACZ,UAAA6Q,GACH;AAAA,UAIF,gBAAA7Q,EAAC,OAAA,EAAI,WAAU,oBAAmB,eAAY,QAAO;AAAA,UAGpD4Q,KAAa,gBAAA5Q,EAAC,OAAA,EAAI,WAAU,qBAAqB,UAAA4Q,GAAU;AAAA,4BAG3D/E,IAAA,EACC,UAAA;AAAA,YAAA,gBAAA7L,EAAC+L,IAAA,EAAa,SAAO,IACnB,UAAA,gBAAA/L;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,cAAW;AAAA,gBACX,WAAU;AAAA,gBAEV,UAAA,gBAAAA,EAAC+Q,IAAA,EAAK,WAAU,WAAU,eAAY,OAAA,CAAO;AAAA,cAAA;AAAA,YAAA,GAEjD;AAAA,YACA,gBAAA9Q,EAACkM,IAAA,EAAa,MAAK,QAAO,WAAU,qBAClC,UAAA;AAAA,cAAA,gBAAAlM,EAACoM,IAAA,EAAY,WAAU,6CACrB,UAAA;AAAA,gBAAA,gBAAArM,EAACuM,IAAA,EAAW,WAAU,WAAU,UAAA,qBAAiB;AAAA,gBAChDoE,KAAQ,gBAAA3Q,EAAC,OAAA,EAAI,WAAU,qBAAqB,UAAA2Q,EAAA,CAAK;AAAA,cAAA,GACpD;AAAA,cAGCE,KACC,gBAAA7Q,EAAC,OAAA,EAAI,WAAU,6CACZ,UAAA6Q,GACH;AAAA,cAGF,gBAAA7Q;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,cAAW;AAAA,kBACX,WAAU;AAAA,kBAEV,4BAAC,OAAA,EAAI,WAAU,mCACZ,UAAAiQ,EAAM,IAAI,CAACC,MACV,gBAAAlQ,EAAC,SAAkB,WAAU,UAC3B,4BAACqQ,GAAA,EAAc,MAAAH,EAAA,CAAY,KADnBA,EAAK,EAEf,CACD,EAAA,CACH;AAAA,gBAAA;AAAA,cAAA;AAAA,cAIDY,KACC,gBAAA9Q,EAAC,OAAA,EAAI,WAAU,6CACZ,UAAA8Q,EAAA,CACH;AAAA,YAAA,EAAA,CAEJ;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QAGA,gBAAA9Q;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,cAAW;AAAA,YACX,WAAU;AAAA,YAEV,UAAA,gBAAAA,EAACsP,IAAA,EACC,UAAA,gBAAAtP,EAAC0P,IAAA,EACE,UAAAO,EAAM;AAAA,cAAI,CAACC,MAAA;;AACV,wBAAAC,IAAAD,EAAK,aAAL,QAAAC,EAAe,2BACZR,GAAA,EACC,UAAA;AAAA,kBAAA,gBAAA3P,EAAC6P,IAAA,EAAsB,WAAU,gFAC9B,UAAAK,EAAK,OACR;AAAA,oCACCJ,IAAA,EACC,UAAA,gBAAA9P,EAACgQ,MAAe,OAAOE,EAAK,UAAU,EAAA,CACxC;AAAA,gBAAA,EAAA,GANuBA,EAAK,EAO9B,IAEA,gBAAAlQ,EAAC2P,GAAA,EACC,UAAA,gBAAA3P;AAAA,kBAAC+P;AAAA,kBAAA;AAAA,oBACC,MAAMG,EAAK,QAAQ;AAAA,oBACnB,WAAU;AAAA,oBAET,UAAAA,EAAK;AAAA,kBAAA;AAAA,gBAAA,EACR,GANuBA,EAAK,EAO9B;AAAA;AAAA,YAAA,GAGN,EAAA,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAIR;AAEAQ,GAAS,cAAc;AC1OvB,MAAMM,KAAc;AAAA,EAClB;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,MACL,EAAE,OAAO,UAAU,MAAM,mBAAA;AAAA,MACzB,EAAE,OAAO,YAAY,MAAM,mBAAA;AAAA,MAC3B,EAAE,OAAO,eAAe,MAAM,kCAAA;AAAA,MAC9B,EAAE,OAAO,iBAAiB,MAAM,uCAAA;AAAA,MAChC,EAAE,OAAO,iBAAiB,MAAM,wBAAA;AAAA,IAAwB;AAAA,EAC1D;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,MACL,EAAE,OAAO,WAAW,MAAM,WAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,WAAA;AAAA,MAC1B,EAAE,OAAO,YAAY,MAAM,YAAA;AAAA,MAC3B,EAAE,OAAO,gBAAgB,MAAM,mBAAA;AAAA,MAC/B,EAAE,OAAO,OAAO,MAAM,eAAA;AAAA,IAAe;AAAA,EACvC;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,MACL,EAAE,OAAO,kBAAkB,MAAM,kBAAA;AAAA,MACjC,EAAE,OAAO,gBAAgB,MAAM,gBAAA;AAAA,MAC/B,EAAE,OAAO,0BAA0B,MAAM,uBAAA;AAAA,MACzC,EAAE,OAAO,eAAe,MAAM,aAAA;AAAA,IAAa;AAAA,EAC7C;AAEJ,GAEMC,KAAe;AAAA,EACnB,EAAE,OAAO,aAAa,MAAM,oCAAoC,MAAMC,GAAA;AAAA,EACtE,EAAE,OAAO,YAAY,MAAM,mCAAmC,MAAMC,GAAA;AAAA,EACpE,EAAE,OAAO,WAAW,MAAM,mCAAmC,MAAMC,GAAA;AAAA,EACnE,EAAE,OAAO,YAAY,MAAM,2CAA2C,MAAMC,GAAA;AAC9E;AAIA,SAASC,GAAe,EAAE,UAAAC,KAAoD;AAC5E,QAAM,CAACC,GAAOC,CAAQ,IAAIrQ,EAAS,EAAE,GAC/B,CAACsQ,GAAWC,CAAY,IAAIvQ,EAAS,EAAK;AAUhD,2BACG,OAAA,EAAI,WAAU,mCACb,UAAA,gBAAAnB,EAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,IAAA,gBAAAD,EAAC4R,IAAA,EAAK,WAAU,qCAAoC,eAAY,QAAO;AAAA,IACvE,gBAAA5R,EAAC,MAAA,EAAG,WAAU,gDAA+C,UAAA,yCAE7D;AAAA,IACA,gBAAAA,EAAC,OAAE,WAAU,gBAAe,OAAO,EAAE,OAAO,yBAAA,GAA4B,UAAA,4DAAA,CAExE;AAAA,IACC0R,IACC,gBAAA1R,EAAC,KAAA,EAAE,WAAU,uCAAsC,UAAA,kCAAA,CAEnD,IAEA,gBAAAC,EAAC,QAAA,EAAK,UAvBO,CAACgG,MAAuB;AAE3C,MADAA,EAAE,eAAA,GACGuL,MACLD,KAAA,QAAAA,EAAWC,IACXG,EAAa,EAAI,GACjBF,EAAS,EAAE;AAAA,IACb,GAiBsC,WAAU,wCACtC,UAAA;AAAA,MAAA,gBAAAzR,EAAC,SAAA,EAAM,SAAQ,2BAA0B,WAAU,WAAU,UAAA,cAE7D;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,IAAG;AAAA,UACH,MAAK;AAAA,UACL,UAAQ;AAAA,UACR,OAAOwR;AAAA,UACP,UAAU,CAACvL,MAAMwL,EAASxL,EAAE,OAAO,KAAK;AAAA,UACxC,aAAY;AAAA,UACZ,WAAU;AAAA,QAAA;AAAA,MAAA;AAAA,MAEZ,gBAAAjG;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,OAAO,EAAE,OAAO,uBAAA;AAAA,UACjB,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAED,EAAA,CACF;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF;AAEJ;AAIA,SAAS6R,GAAU,EAAE,OAAAlN,GAAO,OAAAmN,KAAsE;AAChG,QAAM,CAACvB,GAAMC,CAAO,IAAIpP,EAAS,EAAK;AAEtC,SACE,gBAAAnB,EAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,IAAA,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,iBAAesQ;AAAA,QACf,SAAS,MAAMC,EAAQ,CAACrC,MAAM,CAACA,CAAC;AAAA,QAChC,WAAU;AAAA,QAET,UAAA;AAAA,UAAAxJ;AAAA,UACD,gBAAA3E;AAAA,YAACyQ;AAAA,YAAA;AAAA,cACC,eAAY;AAAA,cACZ,WAAW5R,EAAG,4EAA4E0R,KAAQ,YAAY;AAAA,YAAA;AAAA,UAAA;AAAA,QAChH;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF,gBAAAvQ,EAAC,KAAA,EAAE,WAAU,kEAAkE,UAAA2E,GAAM;AAAA,IAErF,gBAAA3E;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWnB;AAAA,UACT;AAAA,UACA0R,IAAO,kBAAkB;AAAA,QAAA;AAAA,QAE3B,MAAK;AAAA,QAEJ,UAAAuB,EAAM,IAAI,CAACC,wBACT,MAAA,EACC,UAAA,gBAAA/R;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAM+R,EAAK;AAAA,YACX,WAAU;AAAA,YAET,UAAAA,EAAK;AAAA,UAAA;AAAA,QAAA,EACR,GANOA,EAAK,KAOd,CACD;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;AAIA,MAAMC,KAAS,CAAC,EAAE,OAAAC,IAAQ,eAAe,oBAAAC,GAAoB,WAAA7S,GAAW,GAAGS,QAAyB;AAClG,QAAM,CAACiN,GAAOC,CAAQ,IAAI5L,EAA2B,OAAO;AAE5D,EAAAiM,EAAU,MAAM;AACd,UAAM8E,IAAO,SAAS;AACtB,IAAAnF,EAAUmF,EAAK,aAAa,YAAY,KAA0B,OAAO;AACzE,UAAMC,IAAM,IAAI,iBAAiB,MAAM;AACrC,MAAApF,EAAUmF,EAAK,aAAa,YAAY,KAA0B,OAAO;AAAA,IAC3E,CAAC;AACD,WAAAC,EAAI,QAAQD,GAAM,EAAE,YAAY,IAAM,iBAAiB,CAAC,YAAY,GAAG,GAChE,MAAMC,EAAI,WAAA;AAAA,EACnB,GAAG,CAAA,CAAE;AAEL,QAAMC,IACJJ,MAAU,aACNlF,MAAU,SACR,wDACA,uCACFA,MAAU,SACR,6CACA,0CAEFuF,IAAUL,MAAU,aAAa,aAAa,eAE9CM,IACJN,MAAU,aACN,mDACA;AAEN,SACE,gBAAAhS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWpB,EAAG,6EAA6EQ,CAAS;AAAA,MACpG,cAAW;AAAA,MACV,GAAGS;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAE,EAACsR,IAAA,EAAe,UAAUY,EAAA,CAAoB;AAAA,QAE9C,gBAAAjS,EAAC,OAAA,EAAI,WAAU,gCAEb,UAAA;AAAA,UAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,yCAEb,UAAA;AAAA,YAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,gBACb,UAAA;AAAA,cAAA,gBAAAD;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,KAAKqS;AAAA,kBACL,KAAKC;AAAA,kBACL,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,WAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEZ,gBAAAtS,EAAC,KAAA,EAAE,WAAU,wDAAwD,UAAAuS,GAAQ;AAAA,cAE7E,gBAAAvS,EAAC,OAAA,EAAI,WAAU,6BAA4B,cAAW,iBACnD,UAAAiR,GAAa,IAAI,CAAC,EAAE,OAAArP,GAAO,MAAA4C,GAAM,MAAAgO,QAChC,gBAAAxS;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,MAAAwE;AAAA,kBACA,QAAO;AAAA,kBACP,KAAI;AAAA,kBACJ,cAAY5C;AAAA,kBACZ,WAAU;AAAA,kBAEV,UAAA,gBAAA5B,EAACwS,GAAA,EAAK,WAAU,WAAU,eAAY,OAAA,CAAO;AAAA,gBAAA;AAAA,gBAPxC5Q;AAAA,cAAA,CASR,GACH;AAAA,cAGA,gBAAA3B,EAAC,OAAA,EAAI,WAAU,0BACb,UAAA;AAAA,gBAAA,gBAAAD,EAAC,KAAA,EAAE,WAAU,kCAAiC,UAAA,gBAAY;AAAA,gBAC1D,gBAAAA,EAAC,KAAA,EAAE,WAAU,wCAAuC,UAAA,mCAA+B;AAAA,gBACnF,gBAAAA,EAAC,KAAA,EAAE,WAAU,wCAAuC,UAAA,iBAAA,CAAc;AAAA,cAAA,EAAA,CACpE;AAAA,YAAA,GACF;AAAA,YAGCgR,GAAY,IAAI,CAACyB,wBACfZ,IAAA,EAAuB,OAAOY,EAAI,OAAO,OAAOA,EAAI,MAAA,GAArCA,EAAI,EAAwC,CAC7D;AAAA,UAAA,GACH;AAAA,UAGA,gBAAAxS,EAAC,OAAA,EAAI,WAAU,kJACb,UAAA;AAAA,YAAA,gBAAAA,EAAC,KAAA,EAAE,UAAA;AAAA,cAAA;AAAA,eAAG,oBAAI,KAAA,GAAO,YAAA;AAAA,cAAc;AAAA,YAAA,GAAmD;AAAA,YAClF,gBAAAA,EAAC,OAAA,EAAI,cAAW,gBAAe,WAAU,wBACvC,UAAA;AAAA,cAAA,gBAAAD,EAAC,KAAA,EAAE,MAAK,iCAAgC,WAAU,oDAAmD,UAAA,2BAErG;AAAA,gCACC,KAAA,EAAE,MAAK,gCAA+B,WAAU,oDAAmD,UAAA,WAEpG;AAAA,gCACC,KAAA,EAAE,MAAK,+BAA8B,WAAU,oDAAmD,UAAA,gBAAA,CAEnG;AAAA,YAAA,EAAA,CACF;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAEAgS,GAAO,cAAc;ACrOd,SAASU,GAAK,EAAE,UAAA9S,GAAU,WAAAP,KAAwB;AACvD,SACE,gBAAAW;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWnB;AAAA,QACT;AAAA,QACAQ;AAAA,MAAA;AAAA,MAGD,UAAAO;AAAA,IAAA;AAAA,EAAA;AAGP;ACzBA,MAAM+S,KAAyD;AAAA,EAC7D,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAoBO,SAASC,GAAI,EAAE,UAAAhT,GAAU,MAAAiT,GAAM,WAAAxT,KAAuB;AAC3D,SACE,gBAAAW,EAAC,OAAA,EAAI,aAAU,OAAM,WAAWnB,EAAG,WAAWgU,KAAQF,GAAQE,CAAI,GAAGxT,CAAS,GAC3E,UAAAO,EAAA,CACH;AAEJ;"}