@freitas-ds/react 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["isGroupedOptions","CommandPrimitive","CommandPrimitive","ptBR"],"sources":["../src/utils/cn.ts","../src/components/action-bar.tsx","../src/components/alert.tsx","../src/components/button.tsx","../src/components/alert-dialog.tsx","../src/components/app-shell.tsx","../src/components/avatar.tsx","../src/components/badge.tsx","../src/components/breadcrumb.tsx","../src/components/calendar.tsx","../src/components/card.tsx","../src/components/label.tsx","../src/components/checkbox.tsx","../src/components/combobox.tsx","../src/components/dialog.tsx","../src/components/kbd.tsx","../src/components/command-menu.tsx","../src/components/empty-state.tsx","../src/components/skeleton.tsx","../src/components/table.tsx","../src/components/data-table.tsx","../src/components/filter-bar.tsx","../src/components/pagination.tsx","../src/components/search-input.tsx","../src/components/toolbar.tsx","../src/components/data-view.tsx","../src/components/popover.tsx","../src/components/date-picker.tsx","../src/components/date-range-picker.tsx","../src/components/dropdown-menu.tsx","../src/components/form.tsx","../src/components/form-field.tsx","../src/components/input.tsx","../src/components/native-select.tsx","../src/components/page-header.tsx","../src/components/radio-group.tsx","../src/components/select.tsx","../src/components/separator.tsx","../src/components/sheet.tsx","../src/components/sidebar.tsx","../src/components/spinner.tsx","../src/components/status-badge.tsx","../src/components/switch.tsx","../src/components/tabs.tsx","../src/components/textarea.tsx","../src/components/toast.tsx","../src/hooks/use-toast.ts","../src/components/toaster.tsx","../src/components/tooltip.tsx","../src/components/topbar.tsx","../src/components/user-menu.tsx","../src/provider/freitas-provider.tsx"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { X } from \"lucide-react\"\nimport type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type ActionBarProps = React.HTMLAttributes<HTMLDivElement> & {\n selectedCount: number\n label?: React.ReactNode\n onClearSelection?: () => void\n}\n\nexport function ActionBar({\n selectedCount,\n label,\n onClearSelection,\n className,\n children,\n ...props\n}: ActionBarProps) {\n if (selectedCount <= 0) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"flex flex-col gap-3 rounded-fds-lg border border-primary/30 bg-primary-container p-3 text-on-primary-container\",\n \"sm:flex-row sm:items-center sm:justify-between\",\n className\n )}\n {...props}\n >\n <div className=\"flex min-w-0 items-center gap-3\">\n {onClearSelection ? (\n <button\n type=\"button\"\n onClick={onClearSelection}\n className={cn(\n \"flex size-7 shrink-0 items-center justify-center rounded-fds-md\",\n \"text-on-primary-container/80 transition-colors\",\n \"hover:bg-primary/10 hover:text-on-primary-container\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/35\"\n )}\n aria-label=\"Limpar seleção\"\n >\n <X className=\"size-4\" />\n </button>\n ) : null}\n\n <p className=\"body-sm font-medium\">\n {label ?? `${selectedCount} item(ns) selecionado(s)`}\n </p>\n </div>\n\n {children ? (\n <div className=\"flex flex-wrap items-center gap-2\">{children}</div>\n ) : null}\n </div>\n )\n}\n","import { CircleAlert, CircleCheck, CircleX, Info } from \"lucide-react\"\nimport type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type AlertTone = \"neutral\" | \"info\" | \"success\" | \"warning\" | \"danger\"\n\nconst alertToneClasses: Record<AlertTone, string> = {\n neutral: \"border-border bg-muted text-on-surface\",\n info: \"border-info/30 bg-info-container text-on-info-container\",\n success: \"border-success/30 bg-success-container text-on-success-container\",\n warning: \"border-warning/30 bg-warning-container text-on-warning-container\",\n danger: \"border-error/30 bg-error-container text-on-error-container\"\n}\n\nconst iconToneClasses: Record<AlertTone, string> = {\n neutral: \"text-muted-foreground\",\n info: \"text-info\",\n success: \"text-success\",\n warning: \"text-warning\",\n danger: \"text-error\"\n}\n\nconst defaultIcons: Record<AlertTone, React.ReactNode> = {\n neutral: <Info className=\"size-4\" />,\n info: <Info className=\"size-4\" />,\n success: <CircleCheck className=\"size-4\" />,\n warning: <CircleAlert className=\"size-4\" />,\n danger: <CircleX className=\"size-4\" />\n}\n\nexport type AlertProps = React.HTMLAttributes<HTMLDivElement> & {\n tone?: AlertTone\n title?: string\n description?: string\n icon?: React.ReactNode | false\n}\n\nexport function Alert({\n className,\n tone = \"info\",\n title,\n description,\n icon,\n children,\n ...props\n}: AlertProps) {\n const currentIcon = icon === false ? null : (icon ?? defaultIcons[tone])\n\n return (\n <div\n role=\"status\"\n className={cn(\n \"relative flex gap-3 rounded-fds-lg border p-4\",\n alertToneClasses[tone],\n className\n )}\n {...props}\n >\n {currentIcon ? (\n <div className={cn(\"mt-0.5 shrink-0\", iconToneClasses[tone])}>{currentIcon}</div>\n ) : null}\n\n <div className=\"min-w-0 flex-1\">\n {title ? <h3 className=\"body-sm font-semibold leading-5\">{title}</h3> : null}\n\n {description ? (\n <p className={cn(\"body-sm\", title && \"mt-1\")}>{description}</p>\n ) : null}\n\n {children ? (\n <div className={title || description ? \"mt-2\" : \"\"}>{children}</div>\n ) : null}\n </div>\n </div>\n )\n}\n","import { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport const buttonVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2\",\n \"rounded-fds-md\",\n \"font-medium\",\n \"transition-colors duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-surface\",\n \"disabled:pointer-events-none disabled:opacity-50\"\n ],\n {\n variants: {\n variant: {\n primary: \"bg-primary text-on-primary hover:brightness-95\",\n secondary: \"bg-secondary text-on-secondary hover:brightness-95\",\n tertiary: \"bg-tertiary text-on-tertiary hover:brightness-95\",\n danger: \"bg-error text-on-error hover:brightness-95\",\n outline:\n \"border border-outline bg-transparent text-on-surface hover:bg-surface-container\",\n ghost: \"bg-transparent text-on-surface hover:bg-surface-container\"\n },\n size: {\n sm: \"h-8 px-3 text-sm\",\n md: \"h-10 px-4 text-sm\",\n lg: \"h-12 px-6 text-base\"\n },\n fullWidth: {\n true: \"w-full\",\n false: \"\"\n }\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n fullWidth: false\n }\n }\n)\n\nexport type ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> &\n VariantProps<typeof buttonVariants> & {\n loading?: boolean\n asChild?: boolean\n }\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n fullWidth,\n loading = false,\n disabled,\n asChild = false,\n children,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n className={cn(buttonVariants({ variant, size, fullWidth }), className)}\n disabled={disabled || loading}\n aria-busy={loading}\n {...props}\n >\n {loading ? \"Carregando...\" : children}\n </Comp>\n )\n }\n)\n\nButton.displayName = \"Button\"\n","import * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\nimport { buttonVariants } from \"./button\"\n\nexport const AlertDialog = AlertDialogPrimitive.Root\nexport const AlertDialogTrigger = AlertDialogPrimitive.Trigger\nexport const AlertDialogPortal = AlertDialogPrimitive.Portal\nexport const AlertDialogCancel = AlertDialogPrimitive.Cancel\nexport const AlertDialogAction = AlertDialogPrimitive.Action\n\nexport const AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n return (\n <AlertDialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/45\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n})\n\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\nexport const AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-1/2 top-1/2 z-50 grid w-[calc(100%-2rem)] max-w-md\",\n \"-translate-x-1/2 -translate-y-1/2 gap-4\",\n \"rounded-fds-lg border border-border bg-popover p-6 text-popover-foreground shadow-lg\",\n \"duration-200\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0\",\n \"data-[state=open]:zoom-in-95 data-[state=closed]:zoom-out-95\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n})\n\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\nexport function AlertDialogHeader({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"flex flex-col gap-1.5 text-left\", className)} {...props} />\n}\n\nexport function AlertDialogFooter({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n )\n}\n\nexport const AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => {\n return (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"h3 text-on-surface\", className)}\n {...props}\n />\n )\n})\n\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\nexport const AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => {\n return (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"body-sm text-muted\", className)}\n {...props}\n />\n )\n})\n\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName\n\nexport function AlertDialogCancelButton({\n className,\n ...props\n}: React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: \"outline\", size: \"md\" }), className)}\n {...props}\n />\n )\n}\n\nexport function AlertDialogActionButton({\n className,\n variant = \"danger\",\n ...props\n}: React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action> & {\n variant?: \"primary\" | \"danger\"\n}) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants({ variant, size: \"md\" }), className)}\n {...props}\n />\n )\n}\n","import type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type AppShellProps = React.HTMLAttributes<HTMLDivElement> & {\n sidebar?: React.ReactNode\n topbar?: React.ReactNode\n children: React.ReactNode\n}\n\nexport function AppShell({\n sidebar,\n topbar,\n children,\n className,\n ...props\n}: AppShellProps) {\n return (\n <div\n className={cn(\n \"h-dvh overflow-hidden bg-surface text-on-surface\",\n \"grid grid-cols-1 md:grid-cols-[16rem_minmax(0,1fr)]\",\n className\n )}\n {...props}\n >\n {sidebar ? (\n <aside className=\"hidden h-dvh min-h-0 overflow-hidden border-r border-border bg-card md:block\">\n {sidebar}\n </aside>\n ) : null}\n\n <div className=\"flex min-h-0 min-w-0 flex-col\">\n {topbar ? (\n <header className=\"shrink-0 border-b border-border bg-surface/90 backdrop-blur\">\n {topbar}\n </header>\n ) : null}\n\n <main className=\"min-h-0 min-w-0 flex-1 overflow-y-auto\">{children}</main>\n </div>\n </div>\n )\n}\n\nexport type AppShellContentProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function AppShellContent({ className, ...props }: AppShellContentProps) {\n return (\n <div\n className={cn(\"mx-auto flex w-full max-w-6xl flex-col gap-8 px-6 py-8\", className)}\n {...props}\n />\n )\n}\n","import * as AvatarPrimitive from \"@radix-ui/react-avatar\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport const Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex size-10 shrink-0 overflow-hidden rounded-fds-full\",\n className\n )}\n {...props}\n />\n )\n})\n\nAvatar.displayName = AvatarPrimitive.Root.displayName\n\nexport const AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => {\n return (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square size-full object-cover\", className)}\n {...props}\n />\n )\n})\n\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nexport const AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => {\n return (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex size-full items-center justify-center rounded-fds-full\",\n \"bg-primary-container text-sm font-semibold text-on-primary-container\",\n className\n )}\n {...props}\n />\n )\n})\n\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport function getInitials(name: string) {\n return name\n .trim()\n .split(/\\s+/)\n .slice(0, 2)\n .map((part) => part[0]?.toUpperCase())\n .join(\"\")\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\nimport type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nconst badgeVariants = cva(\n [\n \"inline-flex w-fit shrink-0 items-center gap-1\",\n \"rounded-fds-full border px-2 py-0.5\",\n \"text-xs font-medium leading-5\",\n \"transition-colors duration-150\"\n ],\n {\n variants: {\n tone: {\n neutral: \"border-border bg-muted text-muted-foreground\",\n primary: \"border-transparent bg-primary-container text-on-primary-container\",\n secondary:\n \"border-transparent bg-secondary-container text-on-secondary-container\",\n success: \"border-transparent bg-success-container text-on-success-container\",\n warning: \"border-transparent bg-warning-container text-on-warning-container\",\n info: \"border-transparent bg-info-container text-on-info-container\",\n danger: \"border-transparent bg-error-container text-on-error-container\"\n },\n variant: {\n soft: \"\",\n outline: \"bg-transparent\",\n solid: \"\"\n }\n },\n compoundVariants: [\n {\n tone: \"primary\",\n variant: \"solid\",\n className: \"border-transparent bg-primary text-on-primary\"\n },\n {\n tone: \"secondary\",\n variant: \"solid\",\n className: \"border-transparent bg-secondary text-on-secondary\"\n },\n {\n tone: \"success\",\n variant: \"solid\",\n className: \"border-transparent bg-success text-on-success\"\n },\n {\n tone: \"warning\",\n variant: \"solid\",\n className: \"border-transparent bg-warning text-on-warning\"\n },\n {\n tone: \"info\",\n variant: \"solid\",\n className: \"border-transparent bg-info text-on-info\"\n },\n {\n tone: \"danger\",\n variant: \"solid\",\n className: \"border-transparent bg-error text-on-error\"\n },\n {\n tone: \"neutral\",\n variant: \"outline\",\n className: \"border-border text-on-surface\"\n },\n {\n tone: \"primary\",\n variant: \"outline\",\n className: \"border-primary text-primary\"\n },\n {\n tone: \"secondary\",\n variant: \"outline\",\n className: \"border-secondary text-secondary\"\n },\n {\n tone: \"success\",\n variant: \"outline\",\n className: \"border-success text-success\"\n },\n {\n tone: \"warning\",\n variant: \"outline\",\n className: \"border-warning text-warning\"\n },\n {\n tone: \"info\",\n variant: \"outline\",\n className: \"border-info text-info\"\n },\n {\n tone: \"danger\",\n variant: \"outline\",\n className: \"border-error text-error\"\n }\n ],\n defaultVariants: {\n tone: \"neutral\",\n variant: \"soft\"\n }\n }\n)\n\nexport type BadgeProps = React.HTMLAttributes<HTMLSpanElement> &\n VariantProps<typeof badgeVariants>\n\nexport function Badge({ className, tone, variant, ...props }: BadgeProps) {\n return <span className={cn(badgeVariants({ tone, variant }), className)} {...props} />\n}\n","import { ChevronRight, MoreHorizontal } from \"lucide-react\"\nimport type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport function Breadcrumb({ className, ...props }: React.HTMLAttributes<HTMLElement>) {\n return <nav aria-label=\"Breadcrumb\" className={cn(\"flex\", className)} {...props} />\n}\n\nexport function BreadcrumbList({\n className,\n ...props\n}: React.OlHTMLAttributes<HTMLOListElement>) {\n return (\n <ol\n className={cn(\n \"flex flex-wrap items-center gap-1.5 text-sm text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport function BreadcrumbItem({\n className,\n ...props\n}: React.LiHTMLAttributes<HTMLLIElement>) {\n return <li className={cn(\"inline-flex items-center gap-1.5\", className)} {...props} />\n}\n\nexport function BreadcrumbLink({\n className,\n ...props\n}: React.AnchorHTMLAttributes<HTMLAnchorElement>) {\n return (\n <a\n className={cn(\n \"transition-colors hover:text-on-surface\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/35\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport function BreadcrumbPage({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) {\n return (\n <span\n aria-current=\"page\"\n className={cn(\"font-medium text-on-surface\", className)}\n {...props}\n />\n )\n}\n\nexport function BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.HTMLAttributes<HTMLLIElement>) {\n return (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n >\n {children ?? <ChevronRight className=\"size-4\" />}\n </li>\n )\n}\n\nexport function BreadcrumbEllipsis({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) {\n return (\n <span\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\">Mais</span>\n </span>\n )\n}\n","import { ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { DayPicker, type DayPickerProps } from \"react-day-picker\"\nimport { ptBR } from \"react-day-picker/locale\"\n\nimport { cn } from \"../utils/cn\"\nimport { buttonVariants } from \"./button\"\n\nexport type CalendarProps = DayPickerProps\n\nexport function Calendar({\n className,\n classNames,\n locale = ptBR,\n showOutsideDays = true,\n navLayout = \"after\",\n components,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n locale={locale}\n showOutsideDays={showOutsideDays}\n navLayout={navLayout}\n className={cn(\"p-3\", className)}\n classNames={{\n root: \"w-fit\",\n months: \"flex flex-col gap-4\",\n month: \"space-y-4\",\n month_caption: \"flex h-8 items-center justify-center px-8\",\n caption_label: \"body-sm font-semibold text-on-surface\",\n nav: \"absolute right-3 top-3 flex items-center gap-1\",\n button_previous: cn(\n buttonVariants({ variant: \"ghost\", size: \"sm\" }),\n \"size-8 p-0\"\n ),\n button_next: cn(buttonVariants({ variant: \"ghost\", size: \"sm\" }), \"size-8 p-0\"),\n month_grid: \"w-full border-collapse space-y-1\",\n weekdays: \"flex\",\n weekday:\n \"flex size-9 items-center justify-center rounded-fds-sm caption font-medium text-muted\",\n week: \"mt-1 flex w-full\",\n day: \"size-9 p-0 text-center body-sm\",\n day_button: cn(\n \"flex size-9 items-center justify-center rounded-fds-md body-sm outline-none\",\n \"transition-colors duration-150\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus-visible:ring-2 focus-visible:ring-ring/35\"\n ),\n selected: \"[&>button]:bg-primary [&>button]:text-on-primary\",\n today: \"[&>button]:border [&>button]:border-primary\",\n outside: \"text-muted opacity-45\",\n disabled: \"pointer-events-none text-muted opacity-35\",\n range_start:\n \"[&>button]:rounded-r-none [&>button]:bg-primary [&>button]:text-on-primary\",\n range_middle:\n \"[&>button]:rounded-none [&>button]:bg-primary-container [&>button]:text-on-primary-container\",\n range_end:\n \"[&>button]:rounded-l-none [&>button]:bg-primary [&>button]:text-on-primary\",\n hidden: \"invisible\",\n ...classNames\n }}\n components={{\n Chevron: ({ orientation, className, ...iconProps }) =>\n orientation === \"left\" ? (\n <ChevronLeft className={cn(\"size-4\", className)} {...iconProps} />\n ) : (\n <ChevronRight className={cn(\"size-4\", className)} {...iconProps} />\n ),\n ...components\n }}\n {...props}\n />\n )\n}\n","import type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type CardProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function Card({ className, ...props }: CardProps) {\n return (\n <div\n className={cn(\n \"rounded-fds-lg border border-border bg-card text-card-foreground shadow-sm\",\n \"p-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport type CardHeaderProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function CardHeader({ className, ...props }: CardHeaderProps) {\n return <div className={cn(\"mb-5 flex flex-col gap-1.5\", className)} {...props} />\n}\n\nexport type CardContentProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function CardContent({ className, ...props }: CardContentProps) {\n return <div className={cn(\"body\", className)} {...props} />\n}\n\nexport type CardFooterProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function CardFooter({ className, ...props }: CardFooterProps) {\n return (\n <div className={cn(\"mt-6 flex flex-wrap items-center gap-3\", className)} {...props} />\n )\n}\n","/** biome-ignore-all lint/a11y/noLabelWithoutControl: this is a base component */\nimport type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type LabelProps = React.LabelHTMLAttributes<HTMLLabelElement> & {\n required?: boolean\n requiredIndicator?: React.ReactNode\n showRequiredIndicator?: boolean\n}\n\nexport function Label({\n className,\n children,\n required = false,\n requiredIndicator = \"*\",\n showRequiredIndicator = true,\n ...props\n}: LabelProps) {\n return (\n <label\n className={cn(\n \"body-sm font-medium text-on-surface\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n className\n )}\n {...props}\n >\n {children}\n\n {required ? (\n <>\n {showRequiredIndicator ? (\n <>\n {\" \"}\n <span className=\"ml-1 text-error\" aria-hidden=\"true\">\n {requiredIndicator}\n </span>\n </>\n ) : null}\n\n <span className=\"sr-only\"> obrigatório</span>\n </>\n ) : null}\n </label>\n )\n}\n","import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\nimport { Label } from \"./label\"\n\nexport type CheckboxProps = React.ComponentPropsWithoutRef<\n typeof CheckboxPrimitive.Root\n> & {\n error?: boolean\n}\n\nexport const Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, error = false, ...props }, ref) => {\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer size-4 shrink-0 rounded-sm border border-input bg-transparent shadow-sm\",\n \"transition-[color,box-shadow,border-color,background-color] duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/35\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-on-primary\",\n error &&\n \"border-destructive focus-visible:ring-destructive/25 data-[state=checked]:border-destructive data-[state=checked]:bg-destructive data-[state=checked]:text-destructive-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n})\n\nCheckbox.displayName = \"Checkbox\"\n\nexport type CheckboxFieldProps = CheckboxProps & {\n label: string\n description?: string\n errorMessage?: string\n className?: string\n}\n\nexport function CheckboxField({\n id,\n label,\n description,\n errorMessage,\n required,\n className,\n ...props\n}: CheckboxFieldProps) {\n const generatedId = React.useId()\n const fieldId = id ?? generatedId\n const descriptionId = description ? `${fieldId}-description` : undefined\n const errorId = errorMessage ? `${fieldId}-error` : undefined\n\n const describedBy = [descriptionId, errorId].filter(Boolean).join(\" \") || undefined\n\n return (\n <div className={cn(\"flex flex-col gap-1.5\", className)}>\n <div className=\"flex items-start gap-3\">\n <Checkbox\n id={fieldId}\n required={required}\n aria-describedby={describedBy}\n aria-invalid={errorMessage ? true : undefined}\n error={Boolean(errorMessage)}\n {...props}\n />\n\n <div className=\"grid gap-1 leading-none\">\n <Label\n htmlFor={fieldId}\n required={required}\n className={cn(props.disabled && \"cursor-not-allowed opacity-60\")}\n >\n {label}\n </Label>\n\n {description ? (\n <p id={descriptionId} className=\"caption text-muted\">\n {description}\n </p>\n ) : null}\n </div>\n </div>\n\n {errorMessage ? (\n <p id={errorId} className=\"caption text-destructive\" role=\"alert\">\n {errorMessage}\n </p>\n ) : null}\n </div>\n )\n}\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { Check, ChevronsUpDown, Search } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type ComboboxOption = {\n value: string\n label: string\n description?: string\n disabled?: boolean\n}\n\nexport type ComboboxGroup = {\n label: string\n options: ComboboxOption[]\n}\n\ntype ComboboxOptions = ComboboxOption[] | ComboboxGroup[]\n\nexport type ComboboxProps = {\n id?: string\n name?: string\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n\n placeholder?: string\n searchPlaceholder?: string\n emptyMessage?: string\n\n options: ComboboxOptions\n actions?: React.ReactNode\n\n disabled?: boolean\n required?: boolean\n className?: string\n contentClassName?: string\n\n \"aria-describedby\"?: string\n \"aria-invalid\"?: boolean | \"true\" | \"false\"\n \"aria-label\"?: string\n}\n\nfunction isGroupedOptions(options: ComboboxOptions): options is ComboboxGroup[] {\n return options.length > 0 && \"options\" in options[0]\n}\n\nfunction flattenOptions(options: ComboboxOptions): ComboboxOption[] {\n if (isGroupedOptions(options)) {\n return options.flatMap((group) => group.options)\n }\n\n return options\n}\n\nexport const Combobox = React.forwardRef<HTMLButtonElement, ComboboxProps>(\n (\n {\n id,\n name,\n value,\n defaultValue,\n onValueChange,\n\n placeholder = \"Selecione uma opção\",\n searchPlaceholder = \"Buscar...\",\n emptyMessage = \"Nenhum resultado encontrado.\",\n\n options,\n actions,\n\n disabled = false,\n required = false,\n className,\n contentClassName,\n\n \"aria-describedby\": ariaDescribedBy,\n \"aria-invalid\": ariaInvalid,\n \"aria-label\": ariaLabel\n },\n ref\n ) => {\n const [open, setOpen] = React.useState(false)\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? \"\")\n\n const selectedValue = value ?? internalValue\n const isInvalid = ariaInvalid === true || ariaInvalid === \"true\"\n\n const allOptions = React.useMemo(() => flattenOptions(options), [options])\n\n const selectedOption = allOptions.find((option) => option.value === selectedValue)\n\n function handleSelect(nextValue: string) {\n if (value === undefined) {\n setInternalValue(nextValue)\n }\n\n onValueChange?.(nextValue)\n setOpen(false)\n }\n\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n {name ? (\n <input type=\"hidden\" name={name} value={selectedValue} required={required} />\n ) : null}\n\n <PopoverPrimitive.Trigger asChild>\n <button\n ref={ref}\n id={id}\n type=\"button\"\n role=\"combobox\"\n disabled={disabled}\n aria-label={ariaLabel ?? selectedOption?.label ?? placeholder}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-describedby={ariaDescribedBy}\n aria-invalid={ariaInvalid}\n aria-required={required ? true : undefined}\n className={cn(\n \"flex h-9 w-full items-center justify-between gap-2 whitespace-nowrap\",\n \"rounded-fds-md border border-input bg-transparent px-3 py-2\",\n \"body-sm text-on-surface shadow-sm outline-none\",\n \"transition-[color,box-shadow,border-color,background-color] duration-150\",\n \"hover:bg-accent\",\n \"focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/35\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n !selectedOption && \"text-muted-foreground\",\n isInvalid &&\n \"border-destructive focus-visible:border-destructive focus-visible:ring-destructive/25\",\n className\n )}\n >\n <span className=\"min-w-0 truncate text-left\">\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n\n <ChevronsUpDown\n aria-hidden=\"true\"\n className=\"size-4 shrink-0 text-muted-foreground opacity-70\"\n />\n </button>\n </PopoverPrimitive.Trigger>\n\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n sideOffset={4}\n className={cn(\n \"z-50 w-(--radix-popover-trigger-width) overflow-hidden\",\n \"rounded-fds-md border border-border bg-popover text-popover-foreground shadow-md\",\n contentClassName\n )}\n >\n <CommandPrimitive\n loop\n filter={(itemValue, search, keywords) => {\n const normalizedSearch = search.toLowerCase().trim()\n\n const text = [itemValue, ...(keywords ?? [])].join(\" \").toLowerCase()\n\n return text.includes(normalizedSearch) ? 1 : 0\n }}\n className=\"flex max-h-80 w-full flex-col overflow-hidden\"\n >\n <div className=\"flex items-center border-b border-border px-3\">\n <Search\n aria-hidden=\"true\"\n className=\"mr-2 size-4 shrink-0 text-muted-foreground\"\n />\n\n <CommandPrimitive.Input\n placeholder={searchPlaceholder}\n className={cn(\n \"h-10 w-full bg-transparent py-3 text-sm outline-none\",\n \"placeholder:text-muted-foreground\",\n \"disabled:cursor-not-allowed disabled:opacity-50\"\n )}\n />\n </div>\n\n <CommandPrimitive.List className=\"max-h-60 overflow-y-auto overflow-x-hidden p-1\">\n <CommandPrimitive.Empty className=\"px-3 py-6 text-center text-sm text-muted-foreground\">\n {emptyMessage}\n </CommandPrimitive.Empty>\n\n {isGroupedOptions(options)\n ? options.map((group, groupIndex) => (\n <CommandPrimitive.Group\n key={group.label}\n heading={group.label}\n className={cn(\n \"[&_[cmdk-group-heading]]:px-2\",\n \"[&_[cmdk-group-heading]]:py-1.5\",\n \"[&_[cmdk-group-heading]]:caption\",\n \"[&_[cmdk-group-heading]]:mono\",\n \"[&_[cmdk-group-heading]]:uppercase\",\n \"[&_[cmdk-group-heading]]:tracking-[0.12em]\",\n \"[&_[cmdk-group-heading]]:text-muted-foreground\"\n )}\n >\n {groupIndex > 0 ? <div className=\"my-1 h-px bg-border\" /> : null}\n\n {group.options.map((option) => (\n <ComboboxItem\n key={option.value}\n option={option}\n selected={option.value === selectedValue}\n onSelect={handleSelect}\n />\n ))}\n </CommandPrimitive.Group>\n ))\n : options.map((option) => (\n <ComboboxItem\n key={option.value}\n option={option}\n selected={option.value === selectedValue}\n onSelect={handleSelect}\n />\n ))}\n </CommandPrimitive.List>\n\n {actions ? (\n <div className=\"border-t border-border p-1.5\">{actions}</div>\n ) : null}\n </CommandPrimitive>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n )\n }\n)\n\nCombobox.displayName = \"Combobox\"\n\ntype ComboboxItemProps = {\n option: ComboboxOption\n selected: boolean\n onSelect: (value: string) => void\n}\n\nfunction ComboboxItem({ option, selected, onSelect }: ComboboxItemProps) {\n return (\n <CommandPrimitive.Item\n value={option.value}\n keywords={[option.label, option.description ?? \"\"]}\n disabled={option.disabled}\n onSelect={() => onSelect(option.value)}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 pr-8\",\n \"text-sm outline-none\",\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground\",\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\"\n )}\n >\n <span className=\"flex min-w-0 flex-col\">\n <span className=\"truncate font-medium leading-5\">{option.label}</span>\n\n {option.description ? (\n <span className=\"truncate text-xs leading-4 text-muted-foreground\">\n {option.description}\n </span>\n ) : null}\n </span>\n\n {selected ? <Check className=\"absolute right-2 size-4 text-primary\" /> : null}\n </CommandPrimitive.Item>\n )\n}\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport const Dialog = DialogPrimitive.Root\nexport const DialogTrigger = DialogPrimitive.Trigger\nexport const DialogPortal = DialogPrimitive.Portal\nexport const DialogClose = DialogPrimitive.Close\n\nexport const DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n return (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/45\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n})\n\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nexport const DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n }\n>(({ className, children, showCloseButton = true, ...props }, ref) => {\n return (\n <DialogPortal>\n <DialogOverlay />\n\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-1/2 top-1/2 z-50 grid w-[calc(100%-2rem)] max-w-lg\",\n \"-translate-x-1/2 -translate-y-1/2 gap-4\",\n \"rounded-fds-lg border border-border bg-popover p-6 text-popover-foreground shadow-lg\",\n \"duration-200\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0\",\n \"data-[state=open]:zoom-in-95 data-[state=closed]:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n\n {showCloseButton ? (\n <DialogPrimitive.Close\n className={cn(\n \"absolute right-4 top-4 rounded-sm opacity-70\",\n \"transition-opacity hover:opacity-100\",\n \"focus:outline-none focus:ring-2 focus:ring-ring/35\",\n \"disabled:pointer-events-none\"\n )}\n >\n <X className=\"size-4\" />\n <span className=\"sr-only\">Fechar</span>\n </DialogPrimitive.Close>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n})\n\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nexport function DialogHeader({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"flex flex-col gap-1.5 text-left\", className)} {...props} />\n}\n\nexport function DialogFooter({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n )\n}\n\nexport const DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => {\n return (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"h3 text-on-surface\", className)}\n {...props}\n />\n )\n})\n\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nexport const DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => {\n return (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"body-sm text-muted\", className)}\n {...props}\n />\n )\n})\n\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n","import { cva, type VariantProps } from \"class-variance-authority\"\nimport type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nconst kbdVariants = cva(\n [\n \"inline-flex items-center justify-center\",\n \"rounded-sm border border-border bg-muted\",\n \"font-mono font-medium text-muted-foreground shadow-sm\",\n \"select-none\"\n ],\n {\n variants: {\n size: {\n sm: \"h-5 min-w-5 px-1 text-[0.6875rem]\",\n md: \"h-6 min-w-6 px-1.5 text-xs\"\n }\n },\n defaultVariants: {\n size: \"sm\"\n }\n }\n)\n\nexport type KbdProps = React.HTMLAttributes<HTMLElement> &\n VariantProps<typeof kbdVariants>\n\nexport function Kbd({ className, size, ...props }: KbdProps) {\n return <kbd className={cn(kbdVariants({ size }), className)} {...props} />\n}\n","import { Command as CommandPrimitive } from \"cmdk\"\nimport { Search } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from \"./dialog\"\nimport { Kbd } from \"./kbd\"\n\nexport type CommandMenuItem = {\n value: string\n label: string\n description?: string\n icon?: React.ReactNode\n shortcut?: string | string[]\n disabled?: boolean\n keywords?: string[]\n onSelect?: () => void\n}\n\nexport type CommandMenuGroup = {\n label: string\n items: CommandMenuItem[]\n}\n\nexport type CommandMenuProps = {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n\n title?: string\n description?: string\n placeholder?: string\n emptyMessage?: string\n\n groups: CommandMenuGroup[]\n closeOnSelect?: boolean\n}\n\nexport function CommandMenu({\n open,\n defaultOpen = false,\n onOpenChange,\n title = \"Menu de comandos\",\n description = \"Busque telas e execute ações rápidas.\",\n placeholder = \"Buscar comando, tela ou ação...\",\n emptyMessage = \"Nenhum comando encontrado.\",\n groups,\n closeOnSelect = true\n}: CommandMenuProps) {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n\n const currentOpen = open ?? internalOpen\n\n function handleOpenChange(nextOpen: boolean) {\n if (open === undefined) {\n setInternalOpen(nextOpen)\n }\n\n onOpenChange?.(nextOpen)\n }\n\n function handleSelect(item: CommandMenuItem) {\n item.onSelect?.()\n\n if (closeOnSelect) {\n handleOpenChange(false)\n }\n }\n\n return (\n <Dialog open={currentOpen} onOpenChange={handleOpenChange}>\n <DialogContent showCloseButton={false} className=\"max-w-2xl overflow-hidden p-0\">\n <DialogTitle className=\"sr-only\">{title}</DialogTitle>\n <DialogDescription className=\"sr-only\">{description}</DialogDescription>\n\n <CommandPrimitive\n loop\n className=\"flex max-h-[70dvh] flex-col overflow-hidden bg-popover text-popover-foreground\"\n >\n <div className=\"flex items-center border-b border-border px-4\">\n <Search\n aria-hidden=\"true\"\n className=\"mr-3 size-4 shrink-0 text-muted-foreground\"\n />\n\n <CommandPrimitive.Input\n placeholder={placeholder}\n className={cn(\n \"h-12 w-full bg-transparent py-3 body-sm outline-none\",\n \"placeholder:text-muted-foreground\",\n \"disabled:cursor-not-allowed disabled:opacity-50\"\n )}\n />\n </div>\n\n <CommandPrimitive.List className=\"max-h-[26rem] overflow-y-auto overflow-x-hidden p-2\">\n <CommandPrimitive.Empty className=\"px-4 py-10 text-center body-sm text-muted\">\n {emptyMessage}\n </CommandPrimitive.Empty>\n\n {groups.map((group) => (\n <CommandPrimitive.Group\n key={group.label}\n heading={group.label}\n className={cn(\n \"overflow-hidden\",\n \"[&_[cmdk-group-heading]]:px-2\",\n \"[&_[cmdk-group-heading]]:py-2\",\n \"[&_[cmdk-group-heading]]:caption\",\n \"[&_[cmdk-group-heading]]:mono\",\n \"[&_[cmdk-group-heading]]:uppercase\",\n \"[&_[cmdk-group-heading]]:tracking-[0.12em]\",\n \"[&_[cmdk-group-heading]]:text-muted\"\n )}\n >\n {group.items.map((item) => (\n <CommandPrimitive.Item\n key={item.value}\n value={item.value}\n keywords={[\n item.label,\n item.description ?? \"\",\n ...(item.keywords ?? [])\n ]}\n disabled={item.disabled}\n onSelect={() => handleSelect(item)}\n className={cn(\n \"relative flex cursor-default select-none items-center gap-3 rounded-fds-md px-3 py-2.5\",\n \"body-sm outline-none transition-colors duration-100\",\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground\",\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\"\n )}\n >\n {item.icon ? (\n <span className=\"flex size-4 shrink-0 items-center justify-center text-muted-foreground\">\n {item.icon}\n </span>\n ) : null}\n\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate font-medium\">{item.label}</span>\n\n {item.description ? (\n <span className=\"truncate caption text-muted\">\n {item.description}\n </span>\n ) : null}\n </span>\n\n {item.shortcut ? (\n <span className=\"ml-auto flex shrink-0 items-center gap-1\">\n {Array.isArray(item.shortcut) ? (\n item.shortcut.map((key) => <Kbd key={key}>{key}</Kbd>)\n ) : (\n <Kbd>{item.shortcut}</Kbd>\n )}\n </span>\n ) : null}\n </CommandPrimitive.Item>\n ))}\n </CommandPrimitive.Group>\n ))}\n </CommandPrimitive.List>\n </CommandPrimitive>\n </DialogContent>\n </Dialog>\n )\n}\n","import { Inbox } from \"lucide-react\"\nimport type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type EmptyStateProps = React.HTMLAttributes<HTMLDivElement> & {\n icon?: React.ReactNode\n title: string\n description?: string\n action?: React.ReactNode\n}\n\nexport function EmptyState({\n className,\n icon,\n title,\n description,\n action,\n ...props\n}: EmptyStateProps) {\n return (\n <div\n className={cn(\n \"flex min-h-56 flex-col items-center justify-center rounded-fds-lg border border-dashed border-border bg-muted/40 p-8 text-center\",\n className\n )}\n {...props}\n >\n <div className=\"mb-4 flex size-12 items-center justify-center rounded-fds-full bg-surface text-muted-foreground\">\n {icon ?? <Inbox className=\"size-6\" />}\n </div>\n\n <h3 className=\"body font-semibold text-on-surface\">{title}</h3>\n\n {description ? (\n <p className=\"mt-1 max-w-md body-sm text-muted\">{description}</p>\n ) : null}\n\n {action ? <div className=\"mt-5\">{action}</div> : null}\n </div>\n )\n}\n","import type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type SkeletonProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function Skeleton({ className, ...props }: SkeletonProps) {\n return (\n <div\n aria-hidden=\"true\"\n className={cn(\"animate-pulse rounded-fds-md bg-muted\", className)}\n {...props}\n />\n )\n}\n","import * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type TableContainerProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function TableContainer({ className, ...props }: TableContainerProps) {\n return (\n <div\n className={cn(\n \"w-full overflow-hidden rounded-fds-lg border border-border bg-card\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport type TableScrollAreaProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function TableScrollArea({ className, ...props }: TableScrollAreaProps) {\n return <div className={cn(\"w-full overflow-auto\", className)} {...props} />\n}\n\nexport type TableProps = React.TableHTMLAttributes<HTMLTableElement>\n\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n ({ className, ...props }, ref) => {\n return (\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom border-collapse text-sm\", className)}\n {...props}\n />\n )\n }\n)\n\nTable.displayName = \"Table\"\n\nexport type TableHeaderProps = React.HTMLAttributes<HTMLTableSectionElement>\n\nexport const TableHeader = React.forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n ({ className, ...props }, ref) => {\n return (\n <thead\n ref={ref}\n className={cn(\"border-b border-border bg-muted/60\", className)}\n {...props}\n />\n )\n }\n)\n\nTableHeader.displayName = \"TableHeader\"\n\nexport type TableBodyProps = React.HTMLAttributes<HTMLTableSectionElement>\n\nexport const TableBody = React.forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ className, ...props }, ref) => {\n return (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n }\n)\n\nTableBody.displayName = \"TableBody\"\n\nexport type TableFooterProps = React.HTMLAttributes<HTMLTableSectionElement>\n\nexport const TableFooter = React.forwardRef<HTMLTableSectionElement, TableFooterProps>(\n ({ className, ...props }, ref) => {\n return (\n <tfoot\n ref={ref}\n className={cn(\"border-t border-border bg-muted/60 font-medium\", className)}\n {...props}\n />\n )\n }\n)\n\nTableFooter.displayName = \"TableFooter\"\n\nexport type TableRowProps = React.HTMLAttributes<HTMLTableRowElement>\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n ({ className, ...props }, ref) => {\n return (\n <tr\n ref={ref}\n className={cn(\n \"border-b border-border transition-colors\",\n \"hover:bg-muted/60\",\n \"data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n )\n }\n)\n\nTableRow.displayName = \"TableRow\"\n\nexport type TableHeadProps = React.ThHTMLAttributes<HTMLTableCellElement>\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, ...props }, ref) => {\n return (\n <th\n ref={ref}\n className={cn(\n \"h-10 px-4 text-left align-middle\",\n \"caption font-semibold uppercase tracking-[0.08em] text-muted-foreground\",\n \"[&:has([role=checkbox])]:pr-0\",\n className\n )}\n {...props}\n />\n )\n }\n)\n\nTableHead.displayName = \"TableHead\"\n\nexport type TableCellProps = React.TdHTMLAttributes<HTMLTableCellElement>\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, ...props }, ref) => {\n return (\n <td\n ref={ref}\n className={cn(\n \"px-4 py-3 align-middle body-sm\",\n \"[&:has([role=checkbox])]:pr-0\",\n className\n )}\n {...props}\n />\n )\n }\n)\n\nTableCell.displayName = \"TableCell\"\n\nexport type TableCaptionProps = React.HTMLAttributes<HTMLTableCaptionElement>\n\nexport const TableCaption = React.forwardRef<HTMLTableCaptionElement, TableCaptionProps>(\n ({ className, ...props }, ref) => {\n return (\n <caption\n ref={ref}\n className={cn(\"mt-4 caption text-muted\", className)}\n {...props}\n />\n )\n }\n)\n\nTableCaption.displayName = \"TableCaption\"\n","import { ArrowUpDown, ChevronDown, ChevronUp } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\nimport { Checkbox } from \"./checkbox\"\nimport { EmptyState } from \"./empty-state\"\nimport { Skeleton } from \"./skeleton\"\nimport {\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableHeader,\n TableRow,\n TableScrollArea\n} from \"./table\"\n\nexport type DataTableSortDirection = \"asc\" | \"desc\"\n\nexport type DataTableSortState = {\n id: string\n direction: DataTableSortDirection\n}\n\nexport type DataTableColumn<TData> = {\n id: string\n header: React.ReactNode\n accessor?: keyof TData | ((row: TData) => React.ReactNode)\n cell?: (row: TData) => React.ReactNode\n sortValue?: (row: TData) => string | number | Date | null | undefined\n sortable?: boolean\n className?: string\n headerClassName?: string\n align?: \"left\" | \"center\" | \"right\"\n}\n\nexport type DataTableProps<TData> = {\n columns: Array<DataTableColumn<TData>>\n data: TData[]\n getRowId?: (row: TData, index: number) => string\n selectedRowIds?: string[]\n defaultSelectedRowIds?: string[]\n onSelectedRowIdsChange?: (rowIds: string[]) => void\n sort?: DataTableSortState\n defaultSort?: DataTableSortState\n onSortChange?: (sort: DataTableSortState | undefined) => void\n onRowClick?: (row: TData, rowId: string) => void\n emptyState?: React.ReactNode\n loading?: boolean\n loadingRows?: number\n \"aria-label\"?: string\n className?: string\n}\n\nfunction getCellValue<TData>(row: TData, column: DataTableColumn<TData>) {\n if (column.cell) {\n return column.cell(row)\n }\n\n if (typeof column.accessor === \"function\") {\n return column.accessor(row)\n }\n\n if (column.accessor) {\n return row[column.accessor] as React.ReactNode\n }\n\n return null\n}\n\nfunction renderCellValue(value: React.ReactNode) {\n if (\n value === null ||\n value === undefined ||\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n React.isValidElement(value)\n ) {\n return value\n }\n\n return String(value)\n}\n\nfunction compareSortValues(\n first: string | number | Date | null | undefined,\n second: string | number | Date | null | undefined\n) {\n if (first === second) {\n return 0\n }\n\n if (first === null || first === undefined) {\n return 1\n }\n\n if (second === null || second === undefined) {\n return -1\n }\n\n const normalizedFirst = first instanceof Date ? first.getTime() : first\n const normalizedSecond = second instanceof Date ? second.getTime() : second\n\n if (typeof normalizedFirst === \"number\" && typeof normalizedSecond === \"number\") {\n return normalizedFirst - normalizedSecond\n }\n\n return String(normalizedFirst).localeCompare(String(normalizedSecond), \"pt-BR\", {\n numeric: true,\n sensitivity: \"base\"\n })\n}\n\nfunction getNextSortState(currentSort: DataTableSortState | undefined, columnId: string) {\n if (currentSort?.id !== columnId) {\n return { id: columnId, direction: \"asc\" as const }\n }\n\n if (currentSort.direction === \"asc\") {\n return { id: columnId, direction: \"desc\" as const }\n }\n\n return undefined\n}\n\nexport function DataTable<TData>({\n columns,\n data,\n getRowId = (_row, index) => String(index),\n selectedRowIds,\n defaultSelectedRowIds = [],\n onSelectedRowIdsChange,\n sort,\n defaultSort,\n onSortChange,\n onRowClick,\n emptyState,\n loading = false,\n loadingRows = 5,\n \"aria-label\": ariaLabel = \"Tabela de dados\",\n className\n}: DataTableProps<TData>) {\n const [internalSelectedRowIds, setInternalSelectedRowIds] =\n React.useState(defaultSelectedRowIds)\n const [internalSort, setInternalSort] = React.useState(defaultSort)\n\n const currentSelectedRowIds = selectedRowIds ?? internalSelectedRowIds\n const currentSort = sort ?? internalSort\n const selectable = Boolean(selectedRowIds || onSelectedRowIdsChange)\n\n const rowIds = React.useMemo(\n () => data.map((row, index) => getRowId(row, index)),\n [data, getRowId]\n )\n\n const selectedRows = new Set(currentSelectedRowIds)\n const selectedVisibleRows = rowIds.filter((rowId) => selectedRows.has(rowId))\n const allVisibleSelected =\n rowIds.length > 0 && selectedVisibleRows.length === rowIds.length\n const someVisibleSelected =\n selectedVisibleRows.length > 0 && selectedVisibleRows.length < rowIds.length\n\n const sortedData = React.useMemo(() => {\n if (!currentSort) {\n return data\n }\n\n const sortedColumn = columns.find((column) => column.id === currentSort.id)\n\n if (!sortedColumn?.sortable) {\n return data\n }\n\n return [...data].sort((first, second) => {\n const firstValue = sortedColumn.sortValue\n ? sortedColumn.sortValue(first)\n : getCellValue(first, sortedColumn)?.toString()\n const secondValue = sortedColumn.sortValue\n ? sortedColumn.sortValue(second)\n : getCellValue(second, sortedColumn)?.toString()\n const result = compareSortValues(firstValue, secondValue)\n\n return currentSort.direction === \"asc\" ? result : result * -1\n })\n }, [columns, currentSort, data])\n\n function updateSelectedRowIds(nextSelectedRowIds: string[]) {\n if (selectedRowIds === undefined) {\n setInternalSelectedRowIds(nextSelectedRowIds)\n }\n\n onSelectedRowIdsChange?.(nextSelectedRowIds)\n }\n\n function updateSort(nextSort: DataTableSortState | undefined) {\n if (sort === undefined) {\n setInternalSort(nextSort)\n }\n\n onSortChange?.(nextSort)\n }\n\n function toggleRow(rowId: string) {\n const nextSelectedRows = new Set(currentSelectedRowIds)\n\n if (nextSelectedRows.has(rowId)) {\n nextSelectedRows.delete(rowId)\n } else {\n nextSelectedRows.add(rowId)\n }\n\n updateSelectedRowIds(Array.from(nextSelectedRows))\n }\n\n function toggleAllVisibleRows() {\n if (allVisibleSelected) {\n updateSelectedRowIds(\n currentSelectedRowIds.filter((rowId) => !rowIds.includes(rowId))\n )\n return\n }\n\n updateSelectedRowIds(Array.from(new Set([...currentSelectedRowIds, ...rowIds])))\n }\n\n const columnCount = columns.length + (selectable ? 1 : 0)\n\n return (\n <TableContainer className={className}>\n <TableScrollArea>\n <Table aria-label={ariaLabel}>\n <TableHeader>\n <TableRow>\n {selectable ? (\n <TableHead className=\"w-12\">\n <Checkbox\n aria-label=\"Selecionar todas as linhas\"\n checked={someVisibleSelected ? \"indeterminate\" : allVisibleSelected}\n disabled={loading || rowIds.length === 0}\n onCheckedChange={toggleAllVisibleRows}\n />\n </TableHead>\n ) : null}\n\n {columns.map((column) => {\n const isSorted = currentSort?.id === column.id\n const SortIcon = isSorted\n ? currentSort.direction === \"asc\"\n ? ChevronUp\n : ChevronDown\n : ArrowUpDown\n\n return (\n <TableHead\n key={column.id}\n className={cn(\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\",\n column.headerClassName\n )}\n aria-sort={\n isSorted\n ? currentSort.direction === \"asc\"\n ? \"ascending\"\n : \"descending\"\n : undefined\n }\n >\n {column.sortable ? (\n <button\n type=\"button\"\n className={cn(\n \"inline-flex items-center gap-1 rounded-fds-sm\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/35\",\n column.align === \"right\" && \"ml-auto\",\n column.align === \"center\" && \"mx-auto\"\n )}\n onClick={() =>\n updateSort(getNextSortState(currentSort, column.id))\n }\n >\n {column.header}\n <SortIcon className=\"size-3.5\" aria-hidden=\"true\" />\n </button>\n ) : (\n column.header\n )}\n </TableHead>\n )\n })}\n </TableRow>\n </TableHeader>\n\n <TableBody>\n {loading\n ? Array.from({ length: loadingRows }, (_, rowIndex) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: Loading placeholders have a static order and no interactive state.\n <TableRow key={`loading-${rowIndex}`}>\n {Array.from({ length: columnCount }, (_, cellIndex) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: Loading placeholders have a static order and no interactive state.\n <TableCell key={`loading-${rowIndex}-${cellIndex}`}>\n <Skeleton className=\"h-5 w-full\" />\n </TableCell>\n ))}\n </TableRow>\n ))\n : null}\n\n {!loading && sortedData.length === 0 ? (\n <TableRow>\n <TableCell colSpan={columnCount}>\n {emptyState ?? (\n <EmptyState\n className=\"border-0 bg-transparent\"\n title=\"Nenhum registro encontrado\"\n description=\"Ajuste os filtros ou cadastre um novo item.\"\n />\n )}\n </TableCell>\n </TableRow>\n ) : null}\n\n {!loading\n ? sortedData.map((row, index) => {\n const rowId = getRowId(row, index)\n const isSelected = selectedRows.has(rowId)\n\n return (\n <TableRow\n key={rowId}\n data-state={isSelected ? \"selected\" : undefined}\n className={cn(onRowClick && \"cursor-pointer\")}\n onClick={() => onRowClick?.(row, rowId)}\n >\n {selectable ? (\n <TableCell onClick={(event) => event.stopPropagation()}>\n <Checkbox\n aria-label={`Selecionar linha ${index + 1}`}\n checked={isSelected}\n onCheckedChange={() => toggleRow(rowId)}\n />\n </TableCell>\n ) : null}\n\n {columns.map((column) => (\n <TableCell\n key={column.id}\n className={cn(\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\",\n column.className\n )}\n >\n {renderCellValue(getCellValue(row, column))}\n </TableCell>\n ))}\n </TableRow>\n )\n })\n : null}\n </TableBody>\n </Table>\n </TableScrollArea>\n </TableContainer>\n )\n}\n","import type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type FilterBarProps = React.HTMLAttributes<HTMLDivElement> & {\n label?: React.ReactNode\n}\n\nexport function FilterBar({\n label = \"Filtros\",\n className,\n children,\n ...props\n}: FilterBarProps) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-3 rounded-fds-lg border border-border bg-muted/40 p-3\",\n className\n )}\n {...props}\n >\n {label ? (\n <p className=\"caption mono uppercase tracking-[0.12em] text-muted\">{label}</p>\n ) : null}\n\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-4\">{children}</div>\n </div>\n )\n}\n\nexport type FilterBarItemProps = React.HTMLAttributes<HTMLDivElement> & {\n label: React.ReactNode\n}\n\nexport function FilterBarItem({\n label,\n className,\n children,\n ...props\n}: FilterBarItemProps) {\n return (\n <div className={cn(\"grid gap-1.5\", className)} {...props}>\n <span className=\"caption font-medium text-muted\">{label}</span>\n\n {children}\n </div>\n )\n}\n","import { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"../utils/cn\"\nimport { Button } from \"./button\"\n\nexport type PaginationProps = {\n page: number\n totalPages: number\n onPageChange?: (page: number) => void\n siblingCount?: number\n className?: string\n}\n\nfunction range(start: number, end: number) {\n const length = end - start + 1\n\n return Array.from({ length }, (_, index) => index + start)\n}\n\nfunction getPaginationItems(\n page: number,\n totalPages: number,\n siblingCount: number\n): Array<number | \"ellipsis\"> {\n const totalPageNumbers = siblingCount + 5\n\n if (totalPageNumbers >= totalPages) {\n return range(1, totalPages)\n }\n\n const leftSiblingIndex = Math.max(page - siblingCount, 1)\n const rightSiblingIndex = Math.min(page + siblingCount, totalPages)\n\n const shouldShowLeftEllipsis = leftSiblingIndex > 2\n const shouldShowRightEllipsis = rightSiblingIndex < totalPages - 1\n\n const firstPageIndex = 1\n const lastPageIndex = totalPages\n\n if (!shouldShowLeftEllipsis && shouldShowRightEllipsis) {\n const leftItemCount = 3 + 2 * siblingCount\n const leftRange = range(1, leftItemCount)\n\n return [...leftRange, \"ellipsis\", totalPages]\n }\n\n if (shouldShowLeftEllipsis && !shouldShowRightEllipsis) {\n const rightItemCount = 3 + 2 * siblingCount\n const rightRange = range(totalPages - rightItemCount + 1, totalPages)\n\n return [firstPageIndex, \"ellipsis\", ...rightRange]\n }\n\n const middleRange = range(leftSiblingIndex, rightSiblingIndex)\n\n return [firstPageIndex, \"ellipsis\", ...middleRange, \"ellipsis\", lastPageIndex]\n}\n\nexport function Pagination({\n page,\n totalPages,\n onPageChange,\n siblingCount = 1,\n className\n}: PaginationProps) {\n const items = getPaginationItems(page, totalPages, siblingCount)\n\n function goToPage(nextPage: number) {\n if (nextPage < 1 || nextPage > totalPages || nextPage === page) {\n return\n }\n\n onPageChange?.(nextPage)\n }\n\n return (\n <nav\n aria-label=\"Paginação\"\n className={cn(\"flex flex-wrap items-center justify-between gap-3\", className)}\n >\n <p className=\"caption text-muted\">\n Página {page} de {totalPages}\n </p>\n\n <div className=\"flex items-center gap-1\">\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n disabled={page <= 1}\n onClick={() => goToPage(page - 1)}\n aria-label=\"Página anterior\"\n >\n <ChevronLeft className=\"size-4\" />\n </Button>\n\n {items.map((item, index) => {\n if (item === \"ellipsis\") {\n const previousItem = items[index - 1]\n const nextItem = items[index + 1]\n\n return (\n <span\n key={`ellipsis-${previousItem}-${nextItem}`}\n className=\"flex size-8 items-center justify-center text-muted-foreground\"\n aria-hidden=\"true\"\n >\n <MoreHorizontal className=\"size-4\" />\n </span>\n )\n }\n\n const isCurrent = item === page\n\n return (\n <Button\n key={item}\n type=\"button\"\n variant={isCurrent ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => goToPage(item)}\n aria-current={isCurrent ? \"page\" : undefined}\n className=\"size-8 px-0\"\n >\n {item}\n </Button>\n )\n })}\n\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n disabled={page >= totalPages}\n onClick={() => goToPage(page + 1)}\n aria-label=\"Próxima página\"\n >\n <ChevronRight className=\"size-4\" />\n </Button>\n </div>\n </nav>\n )\n}\n","import { Search, X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type SearchInputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"value\" | \"defaultValue\" | \"onChange\"\n> & {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n onChange?: React.ChangeEventHandler<HTMLInputElement>\n onClear?: () => void\n clearable?: boolean\n containerClassName?: string\n}\n\nexport const SearchInput = React.forwardRef<HTMLInputElement, SearchInputProps>(\n (\n {\n className,\n containerClassName,\n value,\n defaultValue = \"\",\n onValueChange,\n onChange,\n onClear,\n clearable = true,\n placeholder = \"Buscar...\",\n disabled,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = React.useState(defaultValue)\n const currentValue = value ?? internalValue\n const hasValue = currentValue.length > 0\n\n function handleChange(event: React.ChangeEvent<HTMLInputElement>) {\n const nextValue = event.target.value\n\n if (value === undefined) {\n setInternalValue(nextValue)\n }\n\n onValueChange?.(nextValue)\n onChange?.(event)\n }\n\n function handleClear() {\n if (value === undefined) {\n setInternalValue(\"\")\n }\n\n onValueChange?.(\"\")\n onClear?.()\n }\n\n return (\n <div className={cn(\"relative w-full\", containerClassName)}>\n <Search\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground\"\n />\n\n <input\n ref={ref}\n type=\"search\"\n value={currentValue}\n onChange={handleChange}\n placeholder={placeholder}\n disabled={disabled}\n className={cn(\n \"h-9 w-full rounded-fds-md border border-input bg-transparent\",\n \"pl-9 pr-9 body-sm text-on-surface shadow-sm outline-none\",\n \"transition-[color,box-shadow,border-color,background-color] duration-150\",\n \"placeholder:text-muted-foreground\",\n \"hover:bg-accent\",\n \"focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/35\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n\n {clearable && hasValue && !disabled ? (\n <button\n type=\"button\"\n onClick={handleClear}\n className={cn(\n \"absolute right-2 top-1/2 flex size-6 -translate-y-1/2 items-center justify-center\",\n \"rounded-sm text-muted-foreground transition-colors\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/35\"\n )}\n aria-label=\"Limpar busca\"\n >\n <X className=\"size-4\" />\n </button>\n ) : null}\n </div>\n )\n }\n)\n\nSearchInput.displayName = \"SearchInput\"\n","import type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type ToolbarProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function Toolbar({ className, ...props }: ToolbarProps) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-4 rounded-fds-lg border border-border bg-card p-4\",\n \"lg:flex-row lg:items-center lg:justify-between\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport type ToolbarSectionProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function ToolbarSection({ className, ...props }: ToolbarSectionProps) {\n return (\n <div\n className={cn(\n \"flex min-w-0 flex-1 flex-col gap-3 sm:flex-row sm:items-center\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport type ToolbarActionsProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function ToolbarActions({ className, ...props }: ToolbarActionsProps) {\n return (\n <div\n className={cn(\"flex shrink-0 flex-wrap items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\nexport type ToolbarTitleProps = React.HTMLAttributes<HTMLDivElement> & {\n title: React.ReactNode\n description?: React.ReactNode\n}\n\nexport function ToolbarTitle({\n title,\n description,\n className,\n ...props\n}: ToolbarTitleProps) {\n return (\n <div className={cn(\"min-w-0\", className)} {...props}>\n <h3 className=\"body-sm font-semibold text-on-surface\">{title}</h3>\n\n {description ? <p className=\"caption text-muted\">{description}</p> : null}\n </div>\n )\n}\n","import { AlertTriangle } from \"lucide-react\"\nimport type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\nimport { ActionBar } from \"./action-bar\"\nimport { Button } from \"./button\"\nimport { EmptyState, type EmptyStateProps } from \"./empty-state\"\nimport { FilterBar } from \"./filter-bar\"\nimport { Pagination, type PaginationProps } from \"./pagination\"\nimport { SearchInput, type SearchInputProps } from \"./search-input\"\nimport { Skeleton } from \"./skeleton\"\nimport { Toolbar, ToolbarActions, ToolbarSection, ToolbarTitle } from \"./toolbar\"\n\nexport type DataViewSearch =\n | React.ReactNode\n | (Omit<SearchInputProps, \"type\"> & {\n placeholder?: string\n })\n\nexport type DataViewStateContent =\n | React.ReactNode\n | (Pick<EmptyStateProps, \"title\" | \"description\" | \"action\" | \"icon\"> & {\n retryLabel?: string\n onRetry?: () => void\n })\n\nexport type DataViewProps = React.HTMLAttributes<HTMLDivElement> & {\n title?: React.ReactNode\n description?: React.ReactNode\n search?: DataViewSearch\n filters?: React.ReactNode\n actions?: React.ReactNode\n selectedCount?: number\n selectedActions?: React.ReactNode\n selectedLabel?: React.ReactNode\n onClearSelection?: () => void\n empty?: DataViewStateContent\n loading?: boolean\n loadingLabel?: string\n error?: DataViewStateContent\n pagination?: React.ReactNode | PaginationProps\n}\n\nfunction isPlainStateContent(\n content: DataViewStateContent\n): content is Exclude<DataViewStateContent, React.ReactNode> {\n return Boolean(\n content &&\n typeof content === \"object\" &&\n !Array.isArray(content) &&\n !(\"type\" in content) &&\n \"title\" in content\n )\n}\n\nfunction renderStateContent(\n content: DataViewStateContent,\n fallbackIcon?: React.ReactNode\n) {\n if (isPlainStateContent(content)) {\n const {\n retryLabel = \"Tentar novamente\",\n onRetry,\n action,\n icon,\n ...emptyStateProps\n } = content\n\n return (\n <EmptyState\n icon={icon ?? fallbackIcon}\n action={\n action ??\n (onRetry ? (\n <Button type=\"button\" variant=\"outline\" onClick={onRetry}>\n {retryLabel}\n </Button>\n ) : undefined)\n }\n {...emptyStateProps}\n />\n )\n }\n\n return content\n}\n\nfunction renderSearch(search: DataViewSearch) {\n if (\n typeof search === \"object\" &&\n search &&\n !Array.isArray(search) &&\n !(\"type\" in search)\n ) {\n return <SearchInput placeholder=\"Buscar...\" {...search} />\n }\n\n return search\n}\n\nfunction isPaginationProps(\n pagination: React.ReactNode | PaginationProps\n): pagination is PaginationProps {\n return Boolean(\n pagination &&\n typeof pagination === \"object\" &&\n !Array.isArray(pagination) &&\n !(\"type\" in pagination) &&\n \"page\" in pagination &&\n \"totalPages\" in pagination\n )\n}\n\nfunction renderPagination(pagination: React.ReactNode | PaginationProps) {\n if (isPaginationProps(pagination)) {\n return <Pagination {...pagination} />\n }\n\n return pagination\n}\n\nexport function DataViewRoot({\n title,\n description,\n search,\n filters,\n actions,\n selectedCount = 0,\n selectedActions,\n selectedLabel,\n onClearSelection,\n empty,\n loading = false,\n loadingLabel = \"Carregando dados\",\n error,\n pagination,\n className,\n children,\n ...props\n}: DataViewProps) {\n const hasHeader = title || description || actions\n const hasToolbar = search || filters\n\n return (\n <section className={cn(\"flex w-full flex-col gap-4\", className)} {...props}>\n {hasHeader ? (\n <DataViewHeader title={title} description={description} actions={actions} />\n ) : null}\n\n {hasToolbar ? <DataViewToolbar search={search} filters={filters} /> : null}\n\n <ActionBar\n selectedCount={selectedCount}\n label={selectedLabel}\n onClearSelection={onClearSelection}\n >\n {selectedActions}\n </ActionBar>\n\n <DataViewContent>\n {loading ? (\n <div\n className=\"grid gap-3 rounded-fds-lg border border-border bg-card p-4\"\n role=\"status\"\n aria-label={loadingLabel}\n >\n <Skeleton className=\"h-6 w-44\" />\n <Skeleton className=\"h-10 w-full\" />\n <Skeleton className=\"h-10 w-full\" />\n <Skeleton className=\"h-10 w-3/4\" />\n </div>\n ) : error ? (\n renderStateContent(error, <AlertTriangle className=\"size-6\" />)\n ) : children ? (\n children\n ) : empty ? (\n renderStateContent(empty)\n ) : null}\n </DataViewContent>\n\n {pagination ? (\n <DataViewPagination>{renderPagination(pagination)}</DataViewPagination>\n ) : null}\n </section>\n )\n}\n\nexport { DataViewRoot as DataView }\n\nexport type DataViewHeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n title?: React.ReactNode\n description?: React.ReactNode\n actions?: React.ReactNode\n}\n\nexport function DataViewHeader({\n title,\n description,\n actions,\n className,\n ...props\n}: DataViewHeaderProps) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-3 border-b border-border pb-4\",\n \"md:flex-row md:items-end md:justify-between\",\n className\n )}\n {...props}\n >\n <div className=\"min-w-0\">\n {title ? <h2 className=\"h2 truncate\">{title}</h2> : null}\n {description ? <p className=\"mt-1 body-sm text-muted\">{description}</p> : null}\n </div>\n\n {actions ? (\n <div className=\"flex shrink-0 flex-wrap items-center gap-2\">{actions}</div>\n ) : null}\n </div>\n )\n}\n\nexport type DataViewToolbarProps = React.HTMLAttributes<HTMLDivElement> & {\n title?: React.ReactNode\n description?: React.ReactNode\n search?: DataViewSearch\n filters?: React.ReactNode\n actions?: React.ReactNode\n}\n\nexport function DataViewToolbar({\n title,\n description,\n search,\n filters,\n actions,\n className,\n ...props\n}: DataViewToolbarProps) {\n return (\n <Toolbar className={className} {...props}>\n <ToolbarSection>\n {title ? <ToolbarTitle title={title} description={description} /> : null}\n {search ? <div className=\"min-w-64 flex-1\">{renderSearch(search)}</div> : null}\n </ToolbarSection>\n\n {actions ? <ToolbarActions>{actions}</ToolbarActions> : null}\n\n {filters ? (\n <div className=\"basis-full\">\n <FilterBar>{filters}</FilterBar>\n </div>\n ) : null}\n </Toolbar>\n )\n}\n\nexport type DataViewContentProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function DataViewContent({ className, ...props }: DataViewContentProps) {\n return <div className={cn(\"min-w-0\", className)} {...props} />\n}\n\nexport type DataViewEmptyProps = EmptyStateProps\n\nexport function DataViewEmpty(props: DataViewEmptyProps) {\n return <EmptyState {...props} />\n}\n\nexport type DataViewPaginationProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function DataViewPagination({ className, ...props }: DataViewPaginationProps) {\n return (\n <div\n className={cn(\"rounded-fds-lg border border-border bg-card p-3\", className)}\n {...props}\n />\n )\n}\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport const Popover = PopoverPrimitive.Root\nexport const PopoverTrigger = PopoverPrimitive.Trigger\nexport const PopoverAnchor = PopoverPrimitive.Anchor\n\nexport const PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-fds-md border border-border bg-popover p-4 text-popover-foreground shadow-md\",\n \"outline-none\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0\",\n \"data-[state=open]:zoom-in-95 data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-1\",\n \"data-[side=top]:slide-in-from-bottom-1\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n})\n\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n","import { format } from \"date-fns\"\nimport { ptBR } from \"date-fns/locale\"\nimport { CalendarIcon, X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\nimport { Button } from \"./button\"\nimport { Calendar } from \"./calendar\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\"\n\nexport type DatePickerProps = {\n value?: Date\n defaultValue?: Date\n onValueChange?: (date: Date | undefined) => void\n placeholder?: string\n disabled?: boolean\n required?: boolean\n clearable?: boolean\n className?: string\n calendarClassName?: string\n \"aria-label\"?: string\n \"aria-describedby\"?: string\n \"aria-invalid\"?: boolean | \"true\" | \"false\"\n}\n\nexport function formatDate(date: Date) {\n return format(date, \"dd/MM/yyyy\", { locale: ptBR })\n}\n\nexport function DatePicker({\n value,\n defaultValue,\n onValueChange,\n placeholder = \"Selecionar data\",\n disabled = false,\n required = false,\n clearable = true,\n className,\n calendarClassName,\n \"aria-label\": ariaLabel = \"Selecionar data\",\n \"aria-describedby\": ariaDescribedBy,\n \"aria-invalid\": ariaInvalid\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false)\n const [internalValue, setInternalValue] = React.useState<Date | undefined>(defaultValue)\n\n const selectedDate = value ?? internalValue\n const isInvalid = ariaInvalid === true || ariaInvalid === \"true\"\n\n function updateDate(date: Date | undefined) {\n if (value === undefined) {\n setInternalValue(date)\n }\n\n onValueChange?.(date)\n }\n\n function handleSelect(date: Date | undefined) {\n updateDate(date)\n if (date) {\n setOpen(false)\n }\n }\n\n function handleClear(event: React.MouseEvent<HTMLButtonElement>) {\n event.stopPropagation()\n updateDate(undefined)\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <div className=\"relative w-full\">\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={disabled}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedBy}\n aria-invalid={ariaInvalid}\n data-required={required ? \"\" : undefined}\n className={cn(\n \"h-10 w-full justify-start px-3 text-left font-normal\",\n !selectedDate && \"text-muted\",\n isInvalid && \"border-error focus-visible:ring-error\",\n clearable && selectedDate && \"pr-10\",\n className\n )}\n >\n <CalendarIcon aria-hidden=\"true\" className=\"size-4\" />\n <span className=\"min-w-0 truncate\">\n {selectedDate ? formatDate(selectedDate) : placeholder}\n </span>\n </Button>\n </PopoverTrigger>\n\n {clearable && selectedDate && !disabled ? (\n <button\n type=\"button\"\n aria-label=\"Limpar data\"\n className={cn(\n \"absolute right-2 top-1/2 flex size-7 -translate-y-1/2 items-center justify-center rounded-sm\",\n \"text-muted transition-colors hover:bg-accent hover:text-on-surface\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/35\"\n )}\n onClick={handleClear}\n >\n <X aria-hidden=\"true\" className=\"size-4\" />\n </button>\n ) : null}\n </div>\n\n <PopoverContent align=\"start\" className=\"w-auto p-0\">\n <Calendar\n mode=\"single\"\n selected={selectedDate}\n onSelect={handleSelect}\n disabled={disabled}\n className={calendarClassName}\n autoFocus\n />\n </PopoverContent>\n </Popover>\n )\n}\n","import { CalendarIcon, X } from \"lucide-react\"\nimport * as React from \"react\"\nimport type { DateRange } from \"react-day-picker\"\n\nimport { cn } from \"../utils/cn\"\nimport { Button } from \"./button\"\nimport { Calendar } from \"./calendar\"\nimport { formatDate } from \"./date-picker\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\"\n\nexport type DateRangeValue = DateRange\n\nexport type DateRangePickerProps = {\n value?: DateRangeValue\n defaultValue?: DateRangeValue\n onValueChange?: (range: DateRangeValue | undefined) => void\n placeholder?: string\n disabled?: boolean\n clearable?: boolean\n className?: string\n calendarClassName?: string\n \"aria-label\"?: string\n \"aria-describedby\"?: string\n \"aria-invalid\"?: boolean | \"true\" | \"false\"\n}\n\nfunction formatRange(range: DateRangeValue | undefined) {\n if (!range?.from) {\n return undefined\n }\n\n if (!range.to) {\n return formatDate(range.from)\n }\n\n return `${formatDate(range.from)} - ${formatDate(range.to)}`\n}\n\nexport function DateRangePicker({\n value,\n defaultValue,\n onValueChange,\n placeholder = \"Selecionar período\",\n disabled = false,\n clearable = true,\n className,\n calendarClassName,\n \"aria-label\": ariaLabel = \"Selecionar período\",\n \"aria-describedby\": ariaDescribedBy,\n \"aria-invalid\": ariaInvalid\n}: DateRangePickerProps) {\n const [open, setOpen] = React.useState(false)\n const [internalValue, setInternalValue] = React.useState<DateRangeValue | undefined>(\n defaultValue\n )\n\n const selectedRange = value ?? internalValue\n const label = formatRange(selectedRange)\n const isInvalid = ariaInvalid === true || ariaInvalid === \"true\"\n\n function updateRange(range: DateRangeValue | undefined) {\n if (value === undefined) {\n setInternalValue(range)\n }\n\n onValueChange?.(range)\n }\n\n function handleClear(event: React.MouseEvent<HTMLButtonElement>) {\n event.stopPropagation()\n updateRange(undefined)\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <div className=\"relative w-full\">\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={disabled}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedBy}\n aria-invalid={ariaInvalid}\n className={cn(\n \"h-10 w-full justify-start px-3 text-left font-normal\",\n !label && \"text-muted\",\n isInvalid && \"border-error focus-visible:ring-error\",\n clearable && label && \"pr-10\",\n className\n )}\n >\n <CalendarIcon aria-hidden=\"true\" className=\"size-4\" />\n <span className=\"min-w-0 truncate\">{label ?? placeholder}</span>\n </Button>\n </PopoverTrigger>\n\n {clearable && label && !disabled ? (\n <button\n type=\"button\"\n aria-label=\"Limpar período\"\n className={cn(\n \"absolute right-2 top-1/2 flex size-7 -translate-y-1/2 items-center justify-center rounded-sm\",\n \"text-muted transition-colors hover:bg-accent hover:text-on-surface\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/35\"\n )}\n onClick={handleClear}\n >\n <X aria-hidden=\"true\" className=\"size-4\" />\n </button>\n ) : null}\n </div>\n\n <PopoverContent align=\"start\" className=\"w-auto p-0\">\n <Calendar\n mode=\"range\"\n selected={selectedRange}\n onSelect={updateRange}\n disabled={disabled}\n className={calendarClassName}\n autoFocus\n />\n </PopoverContent>\n </Popover>\n )\n}\n","import * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group\nexport const DropdownMenuPortal = DropdownMenuPrimitive.Portal\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nexport const DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => {\n return (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n})\n\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName\n\nexport const DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => {\n return (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-40 overflow-hidden rounded-fds-md border border-border bg-popover p-1 text-popover-foreground shadow-md\",\n className\n )}\n {...props}\n />\n )\n})\n\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName\n\nexport const DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-44 overflow-hidden rounded-fds-md border border-border bg-popover p-1 text-popover-foreground shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n})\n\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nexport const DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n tone?: \"default\" | \"danger\"\n }\n>(({ className, inset, tone = \"default\", ...props }, ref) => {\n return (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none\",\n \"transition-colors duration-100\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n tone === \"danger\" &&\n \"text-error focus:bg-error-container focus:text-on-error-container\",\n className\n )}\n {...props}\n />\n )\n})\n\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nexport const DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors duration-100\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n})\n\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName\n\nexport const DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => {\n return (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"transition-colors duration-100\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-disabled:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-4 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n})\n\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nexport const DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => {\n return (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 caption mono uppercase tracking-[0.12em] text-muted-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n )\n})\n\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nexport const DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => {\n return (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n})\n\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nexport function DropdownMenuShortcut({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest text-muted\", className)}\n {...props}\n />\n )\n}\n","import type { AnyFieldApi, AnyFormApi } from \"@tanstack/react-form\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\nimport { Label, type LabelProps } from \"./label\"\n\ntype ReactFormApi = AnyFormApi & {\n Field: unknown\n}\n\ntype FormContextValue = {\n form: ReactFormApi\n}\n\ntype FormFieldContextValue = {\n field: AnyFieldApi\n name: string\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormContext = React.createContext<FormContextValue | null>(null)\nconst FormFieldContext = React.createContext<FormFieldContextValue | null>(null)\nconst FormItemContext = React.createContext<FormItemContextValue | null>(null)\n\nfunction useFormFieldContext() {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n\n if (!fieldContext) {\n throw new Error(\"Form field components must be used inside <FormFieldController>.\")\n }\n\n const fieldId = itemContext?.id ?? fieldContext.name\n const descriptionId = `${fieldId}-description`\n const messageId = `${fieldId}-message`\n const errors = fieldContext.field.state.meta.errors\n const error = errors.find(Boolean)\n\n return {\n ...fieldContext,\n fieldId,\n descriptionId,\n messageId,\n error,\n hasError: Boolean(error)\n }\n}\n\nfunction getErrorMessage(error: unknown): string | undefined {\n if (!error) {\n return undefined\n }\n\n if (typeof error === \"string\") {\n return error\n }\n\n if (Array.isArray(error)) {\n return getErrorMessage(error.find(Boolean))\n }\n\n if (typeof error === \"object\" && \"message\" in error) {\n return String(error.message)\n }\n\n return String(error)\n}\n\nexport type FormProps = {\n form: ReactFormApi\n children: React.ReactNode\n}\n\nexport function Form({ form, children }: FormProps) {\n return <FormContext.Provider value={{ form }}>{children}</FormContext.Provider>\n}\n\nexport type FormFieldControllerProps = {\n form?: ReactFormApi\n name: string\n validators?: unknown\n children: (field: AnyFieldApi) => React.ReactNode\n}\n\nexport function FormFieldController({\n form,\n name,\n validators,\n children\n}: FormFieldControllerProps) {\n const context = React.useContext(FormContext)\n const formApi = form ?? context?.form\n\n if (!formApi) {\n throw new Error(\"FormFieldController requires a form prop or a parent <Form>.\")\n }\n\n const Field = formApi.Field as (props: {\n name: string\n validators?: unknown\n children: (field: AnyFieldApi) => React.ReactNode\n }) => ReturnType<React.FunctionComponent>\n\n return (\n <Field name={name} validators={validators}>\n {(field) => (\n <FormFieldContext.Provider value={{ field, name }}>\n {children(field)}\n </FormFieldContext.Provider>\n )}\n </Field>\n )\n}\n\nexport type FormItemProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function FormItem({ className, ...props }: FormItemProps) {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div className={cn(\"grid gap-1.5\", className)} {...props} />\n </FormItemContext.Provider>\n )\n}\n\nexport type FormLabelProps = LabelProps\n\nexport function FormLabel({ className, ...props }: FormLabelProps) {\n const { fieldId, hasError } = useFormFieldContext()\n\n return (\n <Label\n htmlFor={fieldId}\n className={cn(hasError && \"text-destructive\", className)}\n {...props}\n />\n )\n}\n\nexport type FormControlProps = {\n children: React.ReactElement<{\n id?: string\n \"aria-describedby\"?: string\n \"aria-invalid\"?: boolean | \"true\" | \"false\"\n }>\n}\n\nexport function FormControl({ children }: FormControlProps) {\n const { fieldId, descriptionId, messageId, hasError } = useFormFieldContext()\n const describedBy = hasError ? `${descriptionId} ${messageId}` : descriptionId\n\n return React.cloneElement(children, {\n id: children.props.id ?? fieldId,\n \"aria-describedby\": [children.props[\"aria-describedby\"], describedBy]\n .filter(Boolean)\n .join(\" \"),\n \"aria-invalid\": hasError ? true : children.props[\"aria-invalid\"]\n })\n}\n\nexport type FormDescriptionProps = React.HTMLAttributes<HTMLParagraphElement>\n\nexport function FormDescription({ className, ...props }: FormDescriptionProps) {\n const { descriptionId } = useFormFieldContext()\n\n return (\n <p id={descriptionId} className={cn(\"caption text-muted\", className)} {...props} />\n )\n}\n\nexport type FormMessageProps = React.HTMLAttributes<HTMLParagraphElement> & {\n children?: React.ReactNode\n}\n\nexport function FormMessage({ className, children, ...props }: FormMessageProps) {\n const { messageId, error } = useFormFieldContext()\n const body = children ?? getErrorMessage(error)\n\n if (!body) {\n return null\n }\n\n return (\n <p\n id={messageId}\n className={cn(\"caption text-destructive\", className)}\n role=\"alert\"\n {...props}\n >\n {body}\n </p>\n )\n}\n\nexport function getInputFieldProps(field: AnyFieldApi) {\n return {\n name: field.name,\n value: field.state.value ?? \"\",\n onBlur: field.handleBlur,\n onChange: (\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>\n ) => field.handleChange(event.target.value)\n }\n}\n\nexport function getSelectFieldProps(field: AnyFieldApi) {\n return {\n value: field.state.value ?? \"\",\n onValueChange: (value: string) => field.handleChange(value)\n }\n}\n\nexport function getCheckboxFieldProps(field: AnyFieldApi) {\n return {\n checked: Boolean(field.state.value),\n onCheckedChange: (value: boolean | \"indeterminate\") =>\n field.handleChange(value === true)\n }\n}\n\nexport function getRadioGroupFieldProps(field: AnyFieldApi) {\n return {\n value: field.state.value ?? \"\",\n onValueChange: (value: string) => field.handleChange(value)\n }\n}\n\nexport function getSwitchFieldProps(field: AnyFieldApi) {\n return {\n checked: Boolean(field.state.value),\n onCheckedChange: (value: boolean) => field.handleChange(value)\n }\n}\n\nexport function getDatePickerFieldProps(field: AnyFieldApi) {\n return {\n value: field.state.value,\n onValueChange: (value: Date | undefined) => field.handleChange(value)\n }\n}\n\nexport { useForm } from \"@tanstack/react-form\"\n","import * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\nimport { Label } from \"./label\"\n\ntype FieldControlProps = {\n id?: string\n required?: boolean\n \"aria-required\"?: boolean | \"true\" | \"false\"\n \"aria-describedby\"?: string\n \"aria-invalid\"?: boolean | \"true\" | \"false\"\n}\n\nexport type FormFieldProps = {\n id?: string\n label: string\n helperText?: string\n error?: string\n required?: boolean\n className?: string\n children: React.ReactElement<FieldControlProps>\n}\n\nexport function FormField({\n id,\n label,\n helperText,\n error,\n required = false,\n className,\n children\n}: FormFieldProps) {\n const generatedId = React.useId()\n\n const fieldId = id ?? generatedId\n const helperId = helperText ? `${fieldId}-helper` : undefined\n const errorId = error ? `${fieldId}-error` : undefined\n\n const describedBy = [helperId, errorId].filter(Boolean).join(\" \") || undefined\n\n const child = React.Children.only(children)\n\n const control = React.cloneElement(child, {\n id: child.props.id ?? fieldId,\n required: child.props.required ?? required,\n \"aria-required\": child.props[\"aria-required\"] ?? (required ? true : undefined),\n \"aria-describedby\": describedBy,\n \"aria-invalid\": error ? true : child.props[\"aria-invalid\"]\n })\n\n return (\n <div className={cn(\"flex w-full flex-col gap-1.5\", className)}>\n <Label htmlFor={fieldId} required={required}>\n {label}\n </Label>\n\n {control}\n\n {helperText && !error ? (\n <p id={helperId} className=\"caption text-muted\">\n {helperText}\n </p>\n ) : null}\n\n {error ? (\n <p id={errorId} className=\"caption text-error\" role=\"alert\">\n {error}\n </p>\n ) : null}\n </div>\n )\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nconst inputVariants = cva(\n [\n \"flex h-10 w-full\",\n \"rounded-fds-md border bg-surface px-3 py-2\",\n \"body-sm text-on-surface\",\n \"transition-colors duration-150\",\n \"placeholder:text-on-surface-variant\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-surface\",\n \"disabled:cursor-not-allowed disabled:opacity-50\"\n ],\n {\n variants: {\n state: {\n default: \"border-outline focus-visible:border-ring focus-visible:ring-ring\",\n error: \"border-error focus-visible:border-error focus-visible:ring-error\"\n }\n },\n defaultVariants: {\n state: \"default\"\n }\n }\n)\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement> &\n VariantProps<typeof inputVariants>\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, state, ...props }, ref) => {\n const isInvalid = props[\"aria-invalid\"] === true || props[\"aria-invalid\"] === \"true\"\n\n return (\n <input\n ref={ref}\n className={cn(\n inputVariants({\n state: isInvalid ? \"error\" : state\n }),\n className\n )}\n {...props}\n />\n )\n }\n)\n\nInput.displayName = \"Input\"\n","import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type NativeSelectOption = {\n value: string\n label: string\n disabled?: boolean\n}\n\nconst nativeSelectVariants = cva(\n [\n \"h-9 w-full appearance-none\",\n \"rounded-fds-md border border-input bg-transparent px-3 py-2 pr-9\",\n \"body-sm text-on-surface shadow-sm outline-none\",\n \"transition-[color,box-shadow,border-color,background-color] duration-150\",\n \"focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/35\",\n \"disabled:cursor-not-allowed disabled:opacity-50\"\n ],\n {\n variants: {\n state: {\n default: \"\",\n error:\n \"border-destructive focus-visible:border-destructive focus-visible:ring-destructive/25\"\n },\n fieldSize: {\n sm: \"h-8 px-2 pr-8 text-sm\",\n md: \"h-9 px-3 pr-9 text-sm\",\n lg: \"h-10 px-4 pr-10 text-base\"\n }\n },\n defaultVariants: {\n state: \"default\",\n fieldSize: \"md\"\n }\n }\n)\n\nexport type NativeSelectProps = Omit<\n React.SelectHTMLAttributes<HTMLSelectElement>,\n \"size\"\n> &\n VariantProps<typeof nativeSelectVariants> & {\n placeholder?: string\n options?: NativeSelectOption[]\n }\n\nexport const NativeSelect = React.forwardRef<HTMLSelectElement, NativeSelectProps>(\n (\n {\n className,\n state,\n fieldSize,\n placeholder = \"Selecione uma opção\",\n options,\n children,\n ...props\n },\n ref\n ) => {\n const isInvalid = props[\"aria-invalid\"] === true || props[\"aria-invalid\"] === \"true\"\n\n return (\n <div className=\"relative w-full\">\n <select\n ref={ref}\n className={cn(\n nativeSelectVariants({\n state: isInvalid ? \"error\" : state,\n fieldSize\n }),\n className\n )}\n defaultValue={props.defaultValue ?? \"\"}\n {...props}\n >\n {placeholder ? (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n ) : null}\n\n {options\n ? options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </option>\n ))\n : children}\n </select>\n\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <title>▾</title>\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </span>\n </div>\n )\n }\n)\n\nNativeSelect.displayName = \"NativeSelect\"\n","import type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type PageHeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n eyebrow?: React.ReactNode\n title: React.ReactNode\n description?: React.ReactNode\n actions?: React.ReactNode\n}\n\nexport function PageHeader({\n className,\n eyebrow,\n title,\n description,\n actions,\n ...props\n}: PageHeaderProps) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-4 border-b border-border pb-6\",\n \"md:flex-row md:items-end md:justify-between\",\n className\n )}\n {...props}\n >\n <div className=\"min-w-0\">\n {eyebrow ? (\n <div className=\"mb-2 caption mono uppercase tracking-[0.12em] text-muted\">\n {eyebrow}\n </div>\n ) : null}\n\n <h1 className=\"h1 truncate\">{title}</h1>\n\n {description ? (\n <p className=\"mt-2 max-w-3xl body text-muted\">{description}</p>\n ) : null}\n </div>\n\n {actions ? (\n <div className=\"flex shrink-0 flex-wrap items-center gap-2\">{actions}</div>\n ) : null}\n </div>\n )\n}\n","import * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type RadioGroupOption = {\n value: string\n label: string\n description?: string\n disabled?: boolean\n}\n\nexport type RadioGroupProps = React.ComponentPropsWithoutRef<\n typeof RadioGroupPrimitive.Root\n> & {\n options: RadioGroupOption[]\n error?: boolean\n}\n\nexport const RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(({ className, options, error = false, ...props }, ref) => {\n const generatedId = React.useId()\n\n return (\n <RadioGroupPrimitive.Root\n ref={ref}\n className={cn(\"grid gap-2\", className)}\n {...props}\n >\n {options.map((option) => {\n const itemId = `${generatedId}-${option.value}`\n\n return (\n <div\n key={option.value}\n className={cn(\n \"flex items-start gap-3 rounded-fds-md border border-border p-3\",\n \"transition-colors duration-150\",\n \"has-data-[state=checked]:border-primary\",\n \"has-data-[state=checked]:bg-primary-container\",\n option.disabled && \"opacity-60\"\n )}\n >\n <RadioGroupPrimitive.Item\n id={itemId}\n value={option.value}\n disabled={option.disabled}\n className={cn(\n \"mt-0.5 size-4 shrink-0 rounded-full border border-input bg-transparent shadow-sm\",\n \"transition-[color,box-shadow,border-color,background-color] duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/35\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:border-primary\",\n error && \"border-destructive focus-visible:ring-destructive/25\"\n )}\n >\n <RadioGroupPrimitive.Indicator className=\"flex size-full items-center justify-center\">\n <span className=\"size-2 rounded-full bg-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n\n <label htmlFor={itemId} className=\"grid flex-1 gap-1\">\n <span className=\"body-sm font-medium text-on-surface\">{option.label}</span>\n\n {option.description ? (\n <span className=\"caption text-muted\">{option.description}</span>\n ) : null}\n </label>\n </div>\n )\n })}\n </RadioGroupPrimitive.Root>\n )\n})\n\nRadioGroup.displayName = \"RadioGroup\"\n","import * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type SelectOption = {\n value: string\n label: string\n disabled?: boolean\n}\n\nexport type SelectGroup = {\n label: string\n options: SelectOption[]\n}\n\ntype SelectOptions = SelectOption[] | SelectGroup[]\n\ntype SelectRootProps = React.ComponentPropsWithoutRef<typeof SelectPrimitive.Root>\n\nexport type SelectProps = Omit<SelectRootProps, \"children\"> & {\n id?: string\n placeholder?: string\n options: SelectOptions\n className?: string\n contentClassName?: string\n \"aria-describedby\"?: string\n \"aria-invalid\"?: boolean | \"true\" | \"false\"\n}\n\nfunction isGroupedOptions(options: SelectOptions): options is SelectGroup[] {\n return options.length > 0 && \"options\" in options[0]\n}\n\nexport const Select = React.forwardRef<HTMLButtonElement, SelectProps>(\n (\n {\n id,\n placeholder = \"Selecione uma opção\",\n options,\n className,\n contentClassName,\n disabled,\n required,\n name,\n value,\n defaultValue,\n onValueChange,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-invalid\": ariaInvalid,\n ...props\n },\n ref\n ) => {\n const isInvalid = ariaInvalid === true || ariaInvalid === \"true\"\n\n return (\n <SelectPrimitive.Root\n disabled={disabled}\n required={required}\n name={name}\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n {...props}\n >\n <SelectPrimitive.Trigger\n ref={ref}\n id={id}\n aria-describedby={ariaDescribedBy}\n aria-invalid={ariaInvalid}\n aria-required={required ? true : undefined}\n className={cn(\n \"flex h-9 w-full items-center justify-between gap-2 whitespace-nowrap\",\n \"rounded-fds-md border border-input bg-transparent px-3 py-2\",\n \"body-sm text-on-surface shadow-sm outline-none\",\n \"transition-[color,box-shadow,border-color,background-color] duration-150\",\n \"data-placeholder:text-muted-foreground\",\n \"hover:bg-accent\",\n \"focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/35\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n isInvalid &&\n \"border-destructive focus-visible:border-destructive focus-visible:ring-destructive/25\",\n className\n )}\n >\n <span className=\"min-w-0 truncate text-left\">\n <SelectPrimitive.Value placeholder={placeholder} />\n </span>\n\n <SelectPrimitive.Icon asChild>\n <ChevronDown\n aria-hidden=\"true\"\n className=\"size-4 shrink-0 text-muted-foreground opacity-70\"\n />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n position=\"popper\"\n sideOffset={4}\n align=\"start\"\n className={cn(\n \"relative z-50 max-h-72 min-w-(--radix-select-trigger-width) overflow-hidden\",\n \"rounded-fds-md border border-border bg-popover text-popover-foreground\",\n \"shadow-md\",\n contentClassName\n )}\n >\n <SelectPrimitive.Viewport className=\"p-1\">\n {isGroupedOptions(options)\n ? options.map((group, groupIndex) => (\n <SelectPrimitive.Group key={group.label}>\n {groupIndex > 0 ? (\n <SelectPrimitive.Separator className=\"my-1 h-px bg-border\" />\n ) : null}\n\n <SelectPrimitive.Label className=\"px-2 py-1.5 caption mono uppercase tracking-[0.12em] text-muted-foreground\">\n {group.label}\n </SelectPrimitive.Label>\n\n {group.options.map((option) => (\n <SelectItem key={option.value} option={option} />\n ))}\n </SelectPrimitive.Group>\n ))\n : options.map((option) => (\n <SelectItem key={option.value} option={option} />\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n )\n }\n)\n\nSelect.displayName = \"Select\"\n\ntype SelectItemProps = {\n option: SelectOption\n}\n\nfunction SelectItem({ option }: SelectItemProps) {\n return (\n <SelectPrimitive.Item\n value={option.value}\n disabled={option.disabled}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center\",\n \"rounded-sm py-1.5 pl-2 pr-8 outline-none\",\n \"text-sm\",\n \"transition-colors duration-100\",\n \"data-highlighted:bg-accent data-highlighted:text-accent-foreground\",\n \"data-disabled:pointer-events-none data-disabled:opacity-50\"\n )}\n >\n <SelectPrimitive.ItemText>\n <span className=\"truncate\">{option.label}</span>\n </SelectPrimitive.ItemText>\n\n <span className=\"absolute right-2 flex size-4 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"size-4 text-primary\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n </SelectPrimitive.Item>\n )\n}\n","import * as SeparatorPrimitive from \"@radix-ui/react-separator\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport const Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) => {\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"h-full w-px\",\n className\n )}\n {...props}\n />\n )\n})\n\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport const Sheet = DialogPrimitive.Root\nexport const SheetTrigger = DialogPrimitive.Trigger\nexport const SheetClose = DialogPrimitive.Close\nexport const SheetPortal = DialogPrimitive.Portal\n\nexport const SheetOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => {\n return (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/45\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n})\n\nSheetOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n [\n \"fixed z-50 gap-4 bg-popover text-popover-foreground shadow-lg\",\n \"transition ease-in-out\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:duration-300 data-[state=open]:duration-500\"\n ],\n {\n variants: {\n side: {\n top: [\n \"inset-x-0 top-0 border-b border-border\",\n \"data-[state=closed]:slide-out-to-top\",\n \"data-[state=open]:slide-in-from-top\"\n ],\n bottom: [\n \"inset-x-0 bottom-0 border-t border-border\",\n \"data-[state=closed]:slide-out-to-bottom\",\n \"data-[state=open]:slide-in-from-bottom\"\n ],\n left: [\n \"inset-y-0 left-0 h-full w-3/4 border-r border-border sm:max-w-sm\",\n \"data-[state=closed]:slide-out-to-left\",\n \"data-[state=open]:slide-in-from-left\"\n ],\n right: [\n \"inset-y-0 right-0 h-full w-3/4 border-l border-border sm:max-w-sm\",\n \"data-[state=closed]:slide-out-to-right\",\n \"data-[state=open]:slide-in-from-right\"\n ]\n }\n },\n defaultVariants: {\n side: \"right\"\n }\n }\n)\n\nexport type SheetContentProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Content\n> &\n VariantProps<typeof sheetVariants> & {\n showCloseButton?: boolean\n }\n\nexport const SheetContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, showCloseButton = true, ...props }, ref) => {\n return (\n <SheetPortal>\n <SheetOverlay />\n\n <DialogPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n\n {showCloseButton ? (\n <DialogPrimitive.Close\n className={cn(\n \"absolute right-4 top-4 rounded-sm opacity-70\",\n \"transition-opacity hover:opacity-100\",\n \"focus:outline-none focus:ring-2 focus:ring-ring/35\",\n \"disabled:pointer-events-none\"\n )}\n >\n <X className=\"size-4\" />\n <span className=\"sr-only\">Fechar</span>\n </DialogPrimitive.Close>\n ) : null}\n </DialogPrimitive.Content>\n </SheetPortal>\n )\n})\n\nSheetContent.displayName = DialogPrimitive.Content.displayName\n\nexport function SheetHeader({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn(\"flex flex-col gap-1.5 text-left\", className)} {...props} />\n}\n\nexport function SheetFooter({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\n \"mt-auto flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport const SheetTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => {\n return (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\"h3 text-on-surface\", className)}\n {...props}\n />\n )\n})\n\nSheetTitle.displayName = DialogPrimitive.Title.displayName\n\nexport const SheetDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => {\n return (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"body-sm text-muted\", className)}\n {...props}\n />\n )\n})\n\nSheetDescription.displayName = DialogPrimitive.Description.displayName\n","import { Slot } from \"@radix-ui/react-slot\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type SidebarProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function Sidebar({ className, ...props }: SidebarProps) {\n return (\n <div\n className={cn(\n \"flex h-full min-h-0 flex-col bg-card text-card-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport type SidebarHeaderProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function SidebarHeader({ className, ...props }: SidebarHeaderProps) {\n return (\n <div\n className={cn(\"flex min-h-16 items-center border-b border-border px-4\", className)}\n {...props}\n />\n )\n}\n\nexport type SidebarBrandProps = React.HTMLAttributes<HTMLDivElement> & {\n title: string\n description?: string\n icon?: React.ReactNode\n}\n\nexport function SidebarBrand({\n title,\n description,\n icon,\n className,\n ...props\n}: SidebarBrandProps) {\n return (\n <div className={cn(\"flex min-w-0 items-center gap-3\", className)} {...props}>\n {icon ? (\n <div className=\"flex size-9 shrink-0 items-center justify-center rounded-fds-md bg-primary text-on-primary\">\n {icon}\n </div>\n ) : null}\n\n <div className=\"min-w-0\">\n <p className=\"truncate body-sm font-semibold text-on-surface\">{title}</p>\n\n {description ? (\n <p className=\"truncate caption text-muted\">{description}</p>\n ) : null}\n </div>\n </div>\n )\n}\n\nexport type SidebarContentProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function SidebarContent({ className, ...props }: SidebarContentProps) {\n return (\n <div\n className={cn(\"min-h-0 flex-1 overflow-y-auto px-3 py-4\", className)}\n {...props}\n />\n )\n}\n\nexport type SidebarSectionProps = React.HTMLAttributes<HTMLDivElement> & {\n title?: string\n}\n\nexport function SidebarSection({\n title,\n className,\n children,\n ...props\n}: SidebarSectionProps) {\n return (\n <div className={cn(\"grid gap-1\", className)} {...props}>\n {title ? (\n <p className=\"px-3 pb-2 caption mono uppercase tracking-[0.12em] text-muted\">\n {title}\n </p>\n ) : null}\n\n {children}\n </div>\n )\n}\n\nexport type SidebarNavItemProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n icon?: React.ReactNode\n active?: boolean\n asChild?: boolean\n}\n\nexport const SidebarNavItem = React.forwardRef<HTMLButtonElement, SidebarNavItemProps>(\n ({ icon, active = false, asChild = false, className, children, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n className={cn(\n \"flex h-9 w-full items-center gap-3 rounded-fds-md px-3 text-left body-sm\",\n \"transition-colors duration-150\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/35\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n active\n ? \"bg-primary-container text-on-primary-container\"\n : \"text-muted-foreground\",\n className\n )}\n {...props}\n >\n {icon ? (\n <span className=\"flex size-4 shrink-0 items-center justify-center\">{icon}</span>\n ) : null}\n\n <span className=\"min-w-0 truncate\">{children}</span>\n </Comp>\n )\n }\n)\n\nSidebarNavItem.displayName = \"SidebarNavItem\"\n\nexport type SidebarFooterProps = React.HTMLAttributes<HTMLDivElement>\n\nexport function SidebarFooter({ className, ...props }: SidebarFooterProps) {\n return <div className={cn(\"border-t border-border p-3\", className)} {...props} />\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\nimport { LoaderCircle } from \"lucide-react\"\nimport type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nconst spinnerVariants = cva(\"animate-spin\", {\n variants: {\n size: {\n sm: \"size-4\",\n md: \"size-5\",\n lg: \"size-7\"\n },\n tone: {\n current: \"text-current\",\n primary: \"text-primary\",\n muted: \"text-muted-foreground\",\n danger: \"text-error\",\n success: \"text-success\",\n warning: \"text-warning\",\n info: \"text-info\"\n }\n },\n defaultVariants: {\n size: \"md\",\n tone: \"current\"\n }\n})\n\nexport type SpinnerProps = React.HTMLAttributes<SVGSVGElement> &\n VariantProps<typeof spinnerVariants>\n\nexport function Spinner({ className, size, tone, ...props }: SpinnerProps) {\n return (\n <LoaderCircle\n role=\"status\"\n aria-label=\"Carregando\"\n className={cn(spinnerVariants({ size, tone }), className)}\n {...props}\n />\n )\n}\n","import { Badge, type BadgeProps } from \"./badge\"\n\nexport type StatusBadgeStatus =\n | \"active\"\n | \"inactive\"\n | \"pending\"\n | \"completed\"\n | \"canceled\"\n | \"draft\"\n | \"blocked\"\n | \"archived\"\n\nconst statusConfig: Record<\n StatusBadgeStatus,\n {\n label: string\n tone: NonNullable<BadgeProps[\"tone\"]>\n }\n> = {\n active: {\n label: \"Ativo\",\n tone: \"success\"\n },\n inactive: {\n label: \"Inativo\",\n tone: \"neutral\"\n },\n pending: {\n label: \"Pendente\",\n tone: \"warning\"\n },\n completed: {\n label: \"Concluído\",\n tone: \"success\"\n },\n canceled: {\n label: \"Cancelado\",\n tone: \"danger\"\n },\n draft: {\n label: \"Rascunho\",\n tone: \"info\"\n },\n blocked: {\n label: \"Bloqueado\",\n tone: \"danger\"\n },\n archived: {\n label: \"Arquivado\",\n tone: \"secondary\"\n }\n}\n\nexport type StatusBadgeProps = Omit<BadgeProps, \"tone\"> & {\n status: StatusBadgeStatus\n label?: string\n tone?: BadgeProps[\"tone\"]\n}\n\nexport function StatusBadge({\n status,\n label,\n tone,\n variant = \"soft\",\n ...props\n}: StatusBadgeProps) {\n const config = statusConfig[status]\n\n return (\n <Badge tone={tone ?? config.tone} variant={variant} {...props}>\n {label ?? config.label}\n </Badge>\n )\n}\n","import * as SwitchPrimitive from \"@radix-ui/react-switch\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\nimport { Label } from \"./label\"\n\nexport type SwitchProps = React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> & {\n error?: boolean\n}\n\nexport const Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(({ className, error = false, ...props }, ref) => {\n return (\n <SwitchPrimitive.Root\n ref={ref}\n className={cn(\n \"peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-sm\",\n \"transition-colors duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/35\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=unchecked]:bg-input\",\n \"data-[state=checked]:bg-primary\",\n error && \"focus-visible:ring-destructive/25\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none block size-4 rounded-full bg-surface shadow-sm ring-0\",\n \"transition-transform duration-150\",\n \"data-[state=checked]:translate-x-4\",\n \"data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n )\n})\n\nSwitch.displayName = \"Switch\"\n\nexport type SwitchFieldProps = SwitchProps & {\n label: string\n description?: string\n errorMessage?: string\n className?: string\n}\n\nexport function SwitchField({\n id,\n label,\n description,\n errorMessage,\n required,\n className,\n ...props\n}: SwitchFieldProps) {\n const generatedId = React.useId()\n const fieldId = id ?? generatedId\n const descriptionId = description ? `${fieldId}-description` : undefined\n const errorId = errorMessage ? `${fieldId}-error` : undefined\n\n const describedBy = [descriptionId, errorId].filter(Boolean).join(\" \") || undefined\n\n return (\n <div className={cn(\"flex flex-col gap-1.5\", className)}>\n <div className=\"flex items-start justify-between gap-4 rounded-fds-md border border-border p-3\">\n <div className=\"grid gap-1\">\n <Label\n htmlFor={fieldId}\n required={required}\n className={cn(props.disabled && \"cursor-not-allowed opacity-60\")}\n >\n {label}\n </Label>\n\n {description ? (\n <p id={descriptionId} className=\"caption text-muted\">\n {description}\n </p>\n ) : null}\n </div>\n\n <Switch\n id={fieldId}\n required={required}\n aria-describedby={describedBy}\n aria-invalid={errorMessage ? true : undefined}\n error={Boolean(errorMessage)}\n {...props}\n />\n </div>\n\n {errorMessage ? (\n <p id={errorId} className=\"caption text-destructive\" role=\"alert\">\n {errorMessage}\n </p>\n ) : null}\n </div>\n )\n}\n","import * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport const Tabs = TabsPrimitive.Root\n\nexport const TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => {\n return (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-9 items-center justify-center rounded-fds-md bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n})\n\nTabsList.displayName = TabsPrimitive.List.displayName\n\nexport const TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => {\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1 text-sm font-medium\",\n \"transition-all duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/35\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"data-[state=active]:bg-surface\",\n \"data-[state=active]:text-on-surface\",\n \"data-[state=active]:shadow-sm\",\n className\n )}\n {...props}\n />\n )\n})\n\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nexport const TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => {\n return (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-4 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/35\",\n className\n )}\n {...props}\n />\n )\n})\n\nTabsContent.displayName = TabsPrimitive.Content.displayName\n","import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nconst textareaVariants = cva(\n [\n \"flex min-h-24 w-full\",\n \"rounded-fds-md border bg-surface px-3 py-2\",\n \"body-sm text-on-surface\",\n \"transition-colors duration-150\",\n \"placeholder:text-on-surface-variant\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-surface\",\n \"disabled:cursor-not-allowed disabled:opacity-50\"\n ],\n {\n variants: {\n state: {\n default: \"border-outline focus-visible:border-ring focus-visible:ring-ring\",\n error: \"border-error focus-visible:border-error focus-visible:ring-error\"\n }\n },\n defaultVariants: {\n state: \"default\"\n }\n }\n)\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement> &\n VariantProps<typeof textareaVariants>\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, state, ...props }, ref) => {\n const isInvalid = props[\"aria-invalid\"] === true || props[\"aria-invalid\"] === \"true\"\n\n return (\n <textarea\n ref={ref}\n className={cn(\n textareaVariants({\n state: isInvalid ? \"error\" : state\n }),\n className\n )}\n {...props}\n />\n )\n }\n)\n\nTextarea.displayName = \"Textarea\"\n","import * as ToastPrimitive from \"@radix-ui/react-toast\"\nimport { X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type ToastTone = \"default\" | \"success\" | \"warning\" | \"info\" | \"danger\" | \"error\"\n\nconst toneClasses: Record<Exclude<ToastTone, \"error\">, string> = {\n default: \"border-border bg-popover text-popover-foreground\",\n success: \"border-success/30 bg-success-container text-on-success-container\",\n warning: \"border-warning/30 bg-warning-container text-on-warning-container\",\n info: \"border-info/30 bg-info-container text-on-info-container\",\n danger: \"border-error/30 bg-error-container text-on-error-container\"\n}\n\nfunction normalizeTone(tone: ToastTone = \"default\") {\n return tone === \"error\" ? \"danger\" : tone\n}\n\nexport const ToastProvider = ToastPrimitive.Provider\nexport const ToastAction = ToastPrimitive.Action\n\nexport const ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Viewport>\n>(({ className, ...props }, ref) => {\n return (\n <ToastPrimitive.Viewport\n ref={ref}\n className={cn(\n \"fixed inset-x-0 bottom-0 z-50 flex max-h-screen w-full flex-col-reverse gap-2 p-4\",\n \"sm:inset-auto sm:bottom-4 sm:right-4 sm:max-w-sm\",\n className\n )}\n {...props}\n />\n )\n})\n\nToastViewport.displayName = ToastPrimitive.Viewport.displayName\n\nexport type ToastProps = React.ComponentPropsWithoutRef<typeof ToastPrimitive.Root> & {\n tone?: ToastTone\n}\n\nexport const Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Root>,\n ToastProps\n>(({ className, tone = \"default\", role, ...props }, ref) => {\n const currentTone = normalizeTone(tone)\n const semanticRole =\n role ?? (currentTone === \"danger\" || currentTone === \"warning\" ? \"alert\" : \"status\")\n\n return (\n <ToastPrimitive.Root\n ref={ref}\n role={semanticRole}\n className={cn(\n \"group pointer-events-auto relative grid w-full gap-2 overflow-hidden rounded-fds-lg border p-4 pr-11 shadow-lg\",\n \"transition-all duration-200\",\n \"data-[swipe=move]:translate-x-(--radix-toast-swipe-move-x)\",\n \"data-[swipe=cancel]:translate-x-0 data-[swipe=cancel]:transition-transform\",\n \"data-[swipe=end]:animate-out data-[swipe=end]:slide-out-to-right-full\",\n \"data-[state=open]:animate-in data-[state=open]:slide-in-from-bottom-full\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-80\",\n \"sm:data-[state=open]:slide-in-from-right-full\",\n toneClasses[currentTone],\n className\n )}\n {...props}\n />\n )\n})\n\nToast.displayName = ToastPrimitive.Root.displayName\n\nexport const ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Title>\n>(({ className, ...props }, ref) => {\n return (\n <ToastPrimitive.Title\n ref={ref}\n className={cn(\"body-sm font-semibold leading-5\", className)}\n {...props}\n />\n )\n})\n\nToastTitle.displayName = ToastPrimitive.Title.displayName\n\nexport const ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Description>\n>(({ className, ...props }, ref) => {\n return (\n <ToastPrimitive.Description\n ref={ref}\n className={cn(\"body-sm opacity-90\", className)}\n {...props}\n />\n )\n})\n\nToastDescription.displayName = ToastPrimitive.Description.displayName\n\nexport const ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Close>\n>(\n (\n { className, \"aria-label\": ariaLabel = \"Fechar notificação\", children, ...props },\n ref\n ) => {\n return (\n <ToastPrimitive.Close\n ref={ref}\n aria-label={ariaLabel}\n className={cn(\n \"absolute right-3 top-3 rounded-sm opacity-75 transition-opacity hover:opacity-100\",\n \"focus:outline-none focus:ring-2 focus:ring-ring/35\",\n \"disabled:pointer-events-none\",\n className\n )}\n {...props}\n >\n {children ?? <X aria-hidden=\"true\" className=\"size-4\" />}\n </ToastPrimitive.Close>\n )\n }\n)\n\nToastClose.displayName = ToastPrimitive.Close.displayName\n","import * as React from \"react\"\n\nimport type { ToastTone } from \"../components/toast\"\n\nexport type ToastInput = {\n title?: React.ReactNode\n description?: React.ReactNode\n action?: React.ReactNode\n tone?: ToastTone\n duration?: number\n}\n\nexport type ToastRecord = ToastInput & {\n id: string\n open: boolean\n}\n\nexport type ToastHandle = {\n id: string\n dismiss: () => void\n}\n\ntype ToastContextValue = {\n toasts: ToastRecord[]\n toast: (toast: ToastInput) => ToastHandle\n dismiss: (id: string) => void\n}\n\nexport const ToastContext = React.createContext<ToastContextValue | null>(null)\n\nexport function useToast() {\n const context = React.useContext(ToastContext)\n\n if (!context) {\n throw new Error(\"useToast deve ser usado dentro de <Toaster>.\")\n }\n\n return context\n}\n","import * as React from \"react\"\nimport { ToastContext, type ToastInput, type ToastRecord } from \"../hooks/use-toast\"\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport\n} from \"./toast\"\n\nexport type ToasterProps = {\n children?: React.ReactNode\n duration?: number\n swipeDirection?: React.ComponentProps<typeof ToastProvider>[\"swipeDirection\"]\n}\n\nlet toastCounter = 0\n\nfunction createToastId() {\n toastCounter += 1\n return `toast-${toastCounter}`\n}\n\nexport function Toaster({\n children,\n duration = 5000,\n swipeDirection = \"right\"\n}: ToasterProps) {\n const [toasts, setToasts] = React.useState<ToastRecord[]>([])\n\n const dismiss = React.useCallback((id: string) => {\n setToasts((current) =>\n current.map((toast) => (toast.id === id ? { ...toast, open: false } : toast))\n )\n }, [])\n\n const remove = React.useCallback((id: string) => {\n setToasts((current) => current.filter((toast) => toast.id !== id))\n }, [])\n\n const toast = React.useCallback(\n (input: ToastInput) => {\n const id = createToastId()\n setToasts((current) => [...current, { ...input, id, open: true }])\n\n return {\n id,\n dismiss: () => dismiss(id)\n }\n },\n [dismiss]\n )\n\n const value = React.useMemo(\n () => ({\n toasts,\n toast,\n dismiss\n }),\n [toasts, toast, dismiss]\n )\n\n return (\n <ToastContext.Provider value={value}>\n <ToastProvider duration={duration} swipeDirection={swipeDirection}>\n {children}\n\n {toasts.map((toast) => (\n <Toast\n key={toast.id}\n open={toast.open}\n tone={toast.tone}\n duration={toast.duration}\n onOpenChange={(open) => {\n if (!open) {\n dismiss(toast.id)\n }\n }}\n onAnimationEnd={() => {\n if (!toast.open) {\n remove(toast.id)\n }\n }}\n >\n {toast.title ? <ToastTitle>{toast.title}</ToastTitle> : null}\n {toast.description ? (\n <ToastDescription>{toast.description}</ToastDescription>\n ) : null}\n {toast.action}\n <ToastClose />\n </Toast>\n ))}\n\n <ToastViewport />\n </ToastProvider>\n </ToastContext.Provider>\n )\n}\n","import * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\nimport type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport const TooltipProvider = TooltipPrimitive.Provider\nexport const TooltipRoot = TooltipPrimitive.Root\nexport const TooltipTrigger = TooltipPrimitive.Trigger\n\nexport type TooltipProps = {\n children: React.ReactNode\n content: React.ReactNode\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n delayDuration?: number\n className?: string\n}\n\nexport function Tooltip({\n children,\n content,\n side = \"top\",\n align = \"center\",\n delayDuration = 300,\n className\n}: TooltipProps) {\n return (\n <TooltipPrimitive.Provider delayDuration={delayDuration}>\n <TooltipPrimitive.Root>\n <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>\n\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n sideOffset={6}\n className={cn(\n \"z-50 overflow-hidden rounded-fds-md border border-border\",\n \"bg-popover px-3 py-1.5 text-xs text-popover-foreground shadow-md\",\n \"data-[state=delayed-open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=delayed-open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=delayed-open]:zoom-in-95\",\n className\n )}\n >\n {content}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n )\n}\n","import type * as React from \"react\"\n\nimport { cn } from \"../utils/cn\"\n\nexport type TopbarProps = React.HTMLAttributes<HTMLDivElement> & {\n start?: React.ReactNode\n center?: React.ReactNode\n end?: React.ReactNode\n}\n\nexport function Topbar({\n start,\n center,\n end,\n className,\n children,\n ...props\n}: TopbarProps) {\n return (\n <div className={cn(\"flex min-h-16 items-center gap-4 px-6\", className)} {...props}>\n {children ?? (\n <>\n <div className=\"flex min-w-0 flex-1 items-center gap-3\">{start}</div>\n\n {center ? (\n <div className=\"hidden min-w-0 flex-1 items-center justify-center lg:flex\">\n {center}\n </div>\n ) : null}\n\n <div className=\"flex min-w-0 flex-1 items-center justify-end gap-2\">{end}</div>\n </>\n )}\n </div>\n )\n}\n","import { LogOut, Settings, User } from \"lucide-react\"\nimport type * as React from \"react\"\n\nimport { Avatar, AvatarFallback, AvatarImage, getInitials } from \"./avatar\"\nimport { Button } from \"./button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuTrigger\n} from \"./dropdown-menu\"\n\nexport type UserMenuItem = {\n label: string\n icon?: React.ReactNode\n shortcut?: React.ReactNode\n disabled?: boolean\n tone?: \"default\" | \"danger\"\n onSelect?: () => void\n}\n\nexport type UserMenuProps = {\n name: string\n email?: string\n avatarUrl?: string\n initials?: string\n items?: UserMenuItem[]\n footerItems?: UserMenuItem[]\n}\n\nconst defaultItems: UserMenuItem[] = [\n {\n label: \"Perfil\",\n icon: <User className=\"size-4\" />\n },\n {\n label: \"Configurações\",\n icon: <Settings className=\"size-4\" />,\n shortcut: \"⌘,\"\n }\n]\n\nconst defaultFooterItems: UserMenuItem[] = [\n {\n label: \"Sair\",\n icon: <LogOut className=\"size-4\" />,\n tone: \"danger\"\n }\n]\n\nexport function UserMenu({\n name,\n email,\n avatarUrl,\n initials,\n items = defaultItems,\n footerItems = defaultFooterItems\n}: UserMenuProps) {\n const fallback = initials ?? getInitials(name)\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"sm\" className=\"h-10 gap-3 px-2\">\n <Avatar className=\"size-7\">\n <AvatarImage src={avatarUrl} alt={name} />\n <AvatarFallback className=\"text-xs\">{fallback}</AvatarFallback>\n </Avatar>\n\n <span className=\"hidden min-w-0 flex-col items-start sm:flex\">\n <span className=\"max-w-32 truncate text-sm font-medium leading-4\">\n {name}\n </span>\n\n {email ? (\n <span className=\"max-w-32 truncate text-xs font-normal leading-4 text-muted-foreground\">\n {email}\n </span>\n ) : null}\n </span>\n </Button>\n </DropdownMenuTrigger>\n\n <DropdownMenuContent align=\"end\" className=\"w-64\">\n <DropdownMenuLabel>\n <div className=\"flex min-w-0 items-center gap-3\">\n <Avatar className=\"size-9\">\n <AvatarImage src={avatarUrl} alt={name} />\n <AvatarFallback>{fallback}</AvatarFallback>\n </Avatar>\n\n <div className=\"min-w-0\">\n <p className=\"truncate body-sm font-semibold normal-case tracking-normal text-on-surface\">\n {name}\n </p>\n\n {email ? (\n <p className=\"truncate caption normal-case tracking-normal text-muted\">\n {email}\n </p>\n ) : null}\n </div>\n </div>\n </DropdownMenuLabel>\n\n <DropdownMenuSeparator />\n\n {items.map((item) => (\n <DropdownMenuItem\n key={item.label}\n disabled={item.disabled}\n tone={item.tone}\n onSelect={item.onSelect}\n >\n {item.icon}\n {item.label}\n\n {item.shortcut ? (\n <DropdownMenuShortcut>{item.shortcut}</DropdownMenuShortcut>\n ) : null}\n </DropdownMenuItem>\n ))}\n\n {footerItems.length > 0 ? (\n <>\n <DropdownMenuSeparator />\n\n {footerItems.map((item) => (\n <DropdownMenuItem\n key={item.label}\n disabled={item.disabled}\n tone={item.tone}\n onSelect={item.onSelect}\n >\n {item.icon}\n {item.label}\n\n {item.shortcut ? (\n <DropdownMenuShortcut>{item.shortcut}</DropdownMenuShortcut>\n ) : null}\n </DropdownMenuItem>\n ))}\n </>\n ) : null}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n","import { applyTheme, type FreitasThemeInput, resolveTheme } from \"@freitas-ds/theme\"\nimport * as React from \"react\"\n\nexport type FreitasProviderProps = {\n theme?: FreitasThemeInput\n children: React.ReactNode\n}\n\nexport function FreitasProvider({ theme, children }: FreitasProviderProps) {\n const resolvedTheme = React.useMemo(() => {\n return resolveTheme(theme)\n }, [theme])\n\n React.useEffect(() => {\n applyTheme(resolvedTheme)\n }, [resolvedTheme])\n\n return <>{children}</>\n}\n"],"mappings":"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"}