UNPKG

@phsa.tec/design-system-react

Version:

A modern React component library built with TypeScript, Tailwind CSS, and Radix UI.

1,185 lines (1,159 loc) 168 kB
"use client" "use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { AlertDialog: () => AlertDialog2, Avatar: () => Avatar, AvatarFallback: () => AvatarFallback, AvatarImage: () => AvatarImage, Badge: () => Badge, Breadcrumb: () => Breadcrumb, BreadcrumbEllipsis: () => BreadcrumbEllipsis, BreadcrumbItem: () => BreadcrumbItem, BreadcrumbLink: () => BreadcrumbLink, BreadcrumbList: () => BreadcrumbList, BreadcrumbPage: () => BreadcrumbPage, BreadcrumbSeparator: () => BreadcrumbSeparator, Button: () => Button2, Checkbox: () => Checkbox2, Collapsible: () => Collapsible, CollapsibleContent: () => CollapsibleContent2, CollapsibleTrigger: () => CollapsibleTrigger2, CustomDrawer: () => CustomDrawer, DataPairList: () => DataPairList, Dialog: () => Dialog2, DialogWithForm: () => DialogWithForm, Drawer: () => Drawer, DrawerClose: () => DrawerClose, DrawerContent: () => DrawerContent, DrawerDescription: () => DrawerDescription, DrawerFooter: () => DrawerFooter, DrawerHeader: () => DrawerHeader, DrawerOverlay: () => DrawerOverlay, DrawerPortal: () => DrawerPortal, DrawerTitle: () => DrawerTitle, DrawerTrigger: () => DrawerTrigger, DropdownMenu: () => DropdownMenu, DropdownMenuCheckboxItem: () => DropdownMenuCheckboxItem, DropdownMenuContent: () => DropdownMenuContent, DropdownMenuGroup: () => DropdownMenuGroup, DropdownMenuItem: () => DropdownMenuItem, DropdownMenuLabel: () => DropdownMenuLabel, DropdownMenuPortal: () => DropdownMenuPortal, DropdownMenuRadioGroup: () => DropdownMenuRadioGroup, DropdownMenuRadioItem: () => DropdownMenuRadioItem, DropdownMenuSeparator: () => DropdownMenuSeparator, DropdownMenuShortcut: () => DropdownMenuShortcut, DropdownMenuSub: () => DropdownMenuSub, DropdownMenuSubContent: () => DropdownMenuSubContent, DropdownMenuSubTrigger: () => DropdownMenuSubTrigger, DropdownMenuTrigger: () => DropdownMenuTrigger, DynamicTable: () => DynamicTable, Form: () => Form, FormControl: () => FormControl, FormDescription: () => FormDescription, FormField: () => FormField, FormItem: () => FormItem, FormLabel: () => FormLabel, FormMessage: () => FormMessage, Icon: () => Icon2, Input: () => Input2, MaskInput: () => MaskInput, MultiSelect: () => MultiSelect, MultipleInput: () => MultipleInput, MultipleMaskInput: () => MultipleMaskInput, NavUser: () => NavUser, NumberInput: () => NumberInput, PageLayout: () => PageLayout, Select: () => Select2, Separator: () => Separator3, Sheet: () => Sheet2, Sidebar: () => Sidebar2, Spinner: () => Spinner, Steps: () => Steps, Switch: () => Switch2, Tabs: () => Tabs2, Text: () => Text, Toaster: () => Toaster, badgeVariants: () => badgeVariants, reducer: () => reducer, toast: () => toast, useFormContext: () => import_react_hook_form2.useFormContext, useFormField: () => useFormField, useToast: () => useToast }); module.exports = __toCommonJS(src_exports); // src/components/dataDisplay/Table/components/DynamicTable/index.tsx var React5 = __toESM(require("react")); var import_react_table = require("@tanstack/react-table"); // src/components/ui/table.tsx var React = __toESM(require("react")); // src/lib/utils.ts var import_clsx = require("clsx"); var import_tailwind_merge = require("tailwind-merge"); function cn(...inputs) { return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs)); } // src/components/ui/table.tsx var import_jsx_runtime = require("react/jsx-runtime"); var Table = React.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)( "table", __spreadValues({ ref, className: cn("w-full caption-bottom text-sm", className) }, props) ) }); }); Table.displayName = "Table"; var TableHeader = React.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("thead", __spreadValues({ ref, className: cn("[&_tr]:border-b", className) }, props)); }); TableHeader.displayName = "TableHeader"; var TableBody = React.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( "tbody", __spreadValues({ ref, className: cn("[&_tr:last-child]:border-0", className) }, props) ); }); TableBody.displayName = "TableBody"; var TableFooter = React.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( "tfoot", __spreadValues({ ref, className: cn( "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className ) }, props) ); }); TableFooter.displayName = "TableFooter"; var TableRow = React.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( "tr", __spreadValues({ ref, className: cn( "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted", className ) }, props) ); }); TableRow.displayName = "TableRow"; var TableHead = React.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( "th", __spreadValues({ ref, className: cn( "h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", className ) }, props) ); }); TableHead.displayName = "TableHead"; var TableCell = React.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( "td", __spreadValues({ ref, className: cn( "p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", className ) }, props) ); }); TableCell.displayName = "TableCell"; var TableCaption = React.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( "caption", __spreadValues({ ref, className: cn("mt-4 text-sm text-muted-foreground", className) }, props) ); }); TableCaption.displayName = "TableCaption"; // src/components/dataDisplay/Table/components/DynamicTable/data-table-view-options.tsx var import_react_dropdown_menu = require("@radix-ui/react-dropdown-menu"); var import_react_icons = require("@radix-ui/react-icons"); // src/components/ui/button.tsx var React2 = __toESM(require("react")); var import_react_slot = require("@radix-ui/react-slot"); var import_class_variance_authority = require("class-variance-authority"); var import_jsx_runtime2 = require("react/jsx-runtime"); var buttonVariants = (0, import_class_variance_authority.cva)( "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", { variants: { variant: { default: "bg-primary text-primary-foreground shadow hover:bg-primary/90", destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", ghost: "hover:bg-accent hover:text-accent-foreground", link: "text-primary underline-offset-4 hover:underline" }, size: { default: "h-9 px-4 py-2", sm: "h-8 rounded-md px-3 text-xs", lg: "h-10 rounded-md px-8", icon: "h-9 w-9" } }, defaultVariants: { variant: "default", size: "default" } } ); var Button = React2.forwardRef( (_a, ref) => { var _b = _a, { className, variant, size, asChild = false } = _b, props = __objRest(_b, ["className", "variant", "size", "asChild"]); const Comp = asChild ? import_react_slot.Slot : "button"; return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( Comp, __spreadValues({ className: cn(buttonVariants({ variant, size, className })), ref }, props) ); } ); Button.displayName = "Button"; // src/components/ui/dropdown-menu.tsx var React3 = __toESM(require("react")); var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu")); var import_lucide_react = require("lucide-react"); var import_jsx_runtime3 = require("react/jsx-runtime"); var DropdownMenu = DropdownMenuPrimitive.Root; var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; var DropdownMenuGroup = DropdownMenuPrimitive.Group; var DropdownMenuPortal = DropdownMenuPrimitive.Portal; var DropdownMenuSub = DropdownMenuPrimitive.Sub; var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; var DropdownMenuSubTrigger = React3.forwardRef((_a, ref) => { var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]); return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)( DropdownMenuPrimitive.SubTrigger, __spreadProps(__spreadValues({ ref, className: cn( "flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", inset && "pl-8", className ) }, props), { children: [ children, /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.ChevronRight, { className: "ml-auto" }) ] }) ); }); DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName; var DropdownMenuSubContent = React3.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( DropdownMenuPrimitive.SubContent, __spreadValues({ ref, className: cn( "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className ) }, props) ); }); DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName; var DropdownMenuContent = React3.forwardRef((_a, ref) => { var _b = _a, { className, sideOffset = 4 } = _b, props = __objRest(_b, ["className", "sideOffset"]); return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( DropdownMenuPrimitive.Content, __spreadValues({ ref, sideOffset, className: cn( "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md", "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className ) }, props) ) }); }); DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; var DropdownMenuItem = React3.forwardRef((_a, ref) => { var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]); return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( DropdownMenuPrimitive.Item, __spreadValues({ ref, className: cn( "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0", inset && "pl-8", className ) }, props) ); }); DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; var DropdownMenuCheckboxItem = React3.forwardRef((_a, ref) => { var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]); return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)( DropdownMenuPrimitive.CheckboxItem, __spreadProps(__spreadValues({ ref, className: cn( "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className ), checked }, props), { children: [ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.Check, { className: "h-4 w-4" }) }) }), children ] }) ); }); DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName; var DropdownMenuRadioItem = React3.forwardRef((_a, ref) => { var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]); return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)( DropdownMenuPrimitive.RadioItem, __spreadProps(__spreadValues({ ref, className: cn( "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className ) }, props), { children: [ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.Circle, { className: "h-2 w-2 fill-current" }) }) }), children ] }) ); }); DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; var DropdownMenuLabel = React3.forwardRef((_a, ref) => { var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]); return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( DropdownMenuPrimitive.Label, __spreadValues({ ref, className: cn( "px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className ) }, props) ); }); DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; var DropdownMenuSeparator = React3.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( DropdownMenuPrimitive.Separator, __spreadValues({ ref, className: cn("-mx-1 my-1 h-px bg-muted", className) }, props) ); }); DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; var DropdownMenuShortcut = (_a) => { var _b = _a, { className } = _b, props = __objRest(_b, [ "className" ]); return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( "span", __spreadValues({ className: cn("ml-auto text-xs tracking-widest opacity-60", className) }, props) ); }; DropdownMenuShortcut.displayName = "DropdownMenuShortcut"; // src/components/dataDisplay/Table/components/DynamicTable/data-table-view-options.tsx var import_jsx_runtime4 = require("react/jsx-runtime"); function DataTableViewOptions({ table }) { return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(DropdownMenu, { children: [ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_dropdown_menu.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)( Button, { variant: "outline", size: "sm", className: "ml-auto hidden h-8 lg:flex", children: [ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_icons.MixerHorizontalIcon, { className: "mr-2 h-4 w-4" }), "Colunas" ] } ) }), /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(DropdownMenuContent, { align: "end", className: "w-[150px]", children: [ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(DropdownMenuLabel, { children: "Colunas vis\xEDveis" }), /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(DropdownMenuSeparator, {}), table.getAllColumns().filter( (column) => typeof column.accessorFn !== "undefined" && column.getCanHide() ).map((column) => { return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( DropdownMenuCheckboxItem, { className: "capitalize", checked: column.getIsVisible(), onCheckedChange: (value) => column.toggleVisibility(!!value), children: column.id }, column.id ); }) ] }) ] }); } // src/components/dataDisplay/Table/components/DynamicTable/data-table-toolbar.tsx var import_jsx_runtime5 = require("react/jsx-runtime"); function DataTableToolbar({ table, filters, showColumnVisibility }) { return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center justify-between", children: [ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "flex flex-1 items-center space-x-2", children: filters }), showColumnVisibility && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(DataTableViewOptions, { table }) ] }); } // src/components/dataDisplay/Table/components/DynamicTable/data-table-pagination.tsx var import_react_icons2 = require("@radix-ui/react-icons"); // src/components/ui/select.tsx var React4 = __toESM(require("react")); var SelectPrimitive = __toESM(require("@radix-ui/react-select")); var import_lucide_react2 = require("lucide-react"); var import_jsx_runtime6 = require("react/jsx-runtime"); var Select = SelectPrimitive.Root; var SelectValue = SelectPrimitive.Value; var SelectTrigger = React4.forwardRef((_a, ref) => { var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]); return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)( SelectPrimitive.Trigger, __spreadProps(__spreadValues({ ref, className: cn( "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1", className ) }, props), { children: [ children, /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react2.ChevronDown, { className: "h-4 w-4 opacity-50" }) }) ] }) ); }); SelectTrigger.displayName = SelectPrimitive.Trigger.displayName; var SelectScrollUpButton = React4.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( SelectPrimitive.ScrollUpButton, __spreadProps(__spreadValues({ ref, className: cn( "flex cursor-default items-center justify-center py-1", className ) }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react2.ChevronUp, { className: "h-4 w-4" }) }) ); }); SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName; var SelectScrollDownButton = React4.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( SelectPrimitive.ScrollDownButton, __spreadProps(__spreadValues({ ref, className: cn( "flex cursor-default items-center justify-center py-1", className ) }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react2.ChevronDown, { className: "h-4 w-4" }) }) ); }); SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName; var SelectContent = React4.forwardRef((_a, ref) => { var _b = _a, { className, children, position = "popper" } = _b, props = __objRest(_b, ["className", "children", "position"]); return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)( SelectPrimitive.Content, __spreadProps(__spreadValues({ ref, className: cn( "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className ), position }, props), { children: [ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectScrollUpButton, {}), /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( SelectPrimitive.Viewport, { className: cn( "p-1", position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]" ), children } ), /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectScrollDownButton, {}) ] }) ) }); }); SelectContent.displayName = SelectPrimitive.Content.displayName; var SelectLabel = React4.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( SelectPrimitive.Label, __spreadValues({ ref, className: cn("px-2 py-1.5 text-sm font-semibold", className) }, props) ); }); SelectLabel.displayName = SelectPrimitive.Label.displayName; var SelectItem = React4.forwardRef((_a, ref) => { var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]); return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)( SelectPrimitive.Item, __spreadProps(__spreadValues({ ref, className: cn( "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className ) }, props), { children: [ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react2.Check, { className: "h-4 w-4" }) }) }), /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.ItemText, { children }) ] }) ); }); SelectItem.displayName = SelectPrimitive.Item.displayName; var SelectSeparator = React4.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( SelectPrimitive.Separator, __spreadValues({ ref, className: cn("-mx-1 my-1 h-px bg-muted", className) }, props) ); }); SelectSeparator.displayName = SelectPrimitive.Separator.displayName; // src/components/dataDisplay/Table/components/DynamicTable/data-table-pagination.tsx var import_jsx_runtime7 = require("react/jsx-runtime"); function DataTablePagination({ table, pageSizeOptions = [10, 20, 30, 40, 50] }) { return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center justify-between px-2", children: [ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex-1 text-sm text-muted-foreground", children: [ table.getFilteredSelectedRowModel().rows.length, " de", " ", table.getFilteredRowModel().rows.length, " linha(s) selecionada(s)." ] }), /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center space-x-6 lg:space-x-8", children: [ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center space-x-2", children: [ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-sm font-medium", children: "Linhas por p\xE1gina" }), /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)( Select, { value: `${table.getState().pagination.pageSize}`, onValueChange: (value) => { table.setPageSize(Number(value)); }, children: [ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(SelectTrigger, { className: "h-8 w-[70px]", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(SelectValue, { placeholder: table.getState().pagination.pageSize }) }), /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(SelectContent, { side: "top", children: pageSizeOptions.map((pageSize) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(SelectItem, { value: `${pageSize}`, children: pageSize }, pageSize)) }) ] } ) ] }), /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex w-[100px] items-center justify-center text-sm font-medium", children: [ "P\xE1gina ", table.getState().pagination.pageIndex + 1, " de", " ", table.getPageCount() ] }), /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center space-x-2", children: [ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( Button, { variant: "outline", className: "hidden h-8 w-8 p-0 lg:flex", onClick: () => table.setPageIndex(0), disabled: !table.getCanPreviousPage(), children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react_icons2.DoubleArrowLeftIcon, { className: "h-4 w-4" }) } ), /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( Button, { variant: "outline", className: "h-8 w-8 p-0", onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react_icons2.ChevronLeftIcon, { className: "h-4 w-4" }) } ), /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( Button, { variant: "outline", className: "h-8 w-8 p-0", onClick: () => table.nextPage(), disabled: !table.getCanNextPage(), children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react_icons2.ChevronRightIcon, { className: "h-4 w-4" }) } ), /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( Button, { variant: "outline", className: "hidden h-8 w-8 p-0 lg:flex", onClick: () => table.setPageIndex(table.getPageCount() - 1), disabled: !table.getCanNextPage(), children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react_icons2.DoubleArrowRightIcon, { className: "h-4 w-4" }) } ) ] }) ] }) ] }); } // src/components/dataDisplay/Table/components/DynamicTable/data-table-column-header.tsx var import_react_icons3 = require("@radix-ui/react-icons"); var import_jsx_runtime8 = require("react/jsx-runtime"); function DataTableColumnHeader({ column, title, className }) { if (!column.getCanSort()) { return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: cn(className), children: title }); } return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: cn("flex items-center space-x-2", className), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DropdownMenu, { children: [ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)( Button, { variant: "ghost", size: "sm", className: "-ml-3 h-8 data-[state=open]:bg-accent", children: [ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: title }), column.getIsSorted() === "desc" ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_icons3.ArrowDownIcon, { className: "ml-2 h-4 w-4" }) : column.getIsSorted() === "asc" ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_icons3.ArrowUpIcon, { className: "ml-2 h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_icons3.CaretSortIcon, { className: "ml-2 h-4 w-4" }) ] } ) }), /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DropdownMenuContent, { align: "start", children: [ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DropdownMenuItem, { onClick: () => column.toggleSorting(false), children: [ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_icons3.ArrowUpIcon, { className: "mr-2 h-3.5 w-3.5 text-muted-foreground/70" }), "Crescente" ] }), /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DropdownMenuItem, { onClick: () => column.toggleSorting(true), children: [ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_icons3.ArrowDownIcon, { className: "mr-2 h-3.5 w-3.5 text-muted-foreground/70" }), "Decrescente" ] }), /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(DropdownMenuSeparator, {}), /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(DropdownMenuItem, { onClick: () => column.toggleVisibility(false), children: [ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_icons3.EyeNoneIcon, { className: "mr-2 h-3.5 w-3.5 text-muted-foreground/70" }), "Ocultar" ] }) ] }) ] }) }); } // src/components/dataDisplay/Table/components/DynamicTable/index.tsx var import_jsx_runtime9 = require("react/jsx-runtime"); function DynamicTable({ data, columns, className, toolbar, pagination: showPagination = true, sorting: showSorting = true, columnVisibility: showColumnVisibility = true, filters, rowsPerPage = [10, 20, 30, 40, 50], defaultSort = [], defaultVisibility = {} }) { var _a; const [sorting, setSorting] = React5.useState(defaultSort); const [columnVisibility, setColumnVisibility] = React5.useState(defaultVisibility); const [{ pageIndex, pageSize }, setPagination] = React5.useState({ pageIndex: 0, pageSize: rowsPerPage[0] }); const pagination = React5.useMemo( () => ({ pageIndex, pageSize }), [pageIndex, pageSize] ); const table = (0, import_react_table.useReactTable)({ data, columns, getCoreRowModel: (0, import_react_table.getCoreRowModel)(), onSortingChange: setSorting, getSortedRowModel: showSorting ? (0, import_react_table.getSortedRowModel)() : void 0, getPaginationRowModel: (0, import_react_table.getPaginationRowModel)(), onColumnVisibilityChange: setColumnVisibility, onPaginationChange: setPagination, manualPagination: false, pageCount: Math.ceil(data.length / pageSize), state: { sorting, columnVisibility, pagination }, enableSorting: showSorting }); return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "space-y-4", children: [ (toolbar || filters || showColumnVisibility) && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( DataTableToolbar, { table, filters, showColumnVisibility } ), /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: cn("rounded-md border", className), children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(Table, { children: [ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableHead, { children: header.isPlaceholder ? null : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( DataTableColumnHeader, { column: header.column, title: header.column.columnDef.header } ) }, header.id)) }, headerGroup.id)) }), /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableBody, { children: ((_a = table.getRowModel().rows) == null ? void 0 : _a.length) ? table.getRowModel().rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableRow, { children: row.getVisibleCells().map((cell) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableCell, { children: (0, import_react_table.flexRender)( cell.column.columnDef.cell, cell.getContext() ) }, cell.id)) }, row.id)) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( TableCell, { colSpan: columns.length, className: "h-24 text-center", children: "Nenhum resultado encontrado." } ) }) }) ] }) }), showPagination && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DataTablePagination, { table, pageSizeOptions: rowsPerPage }) ] }); } // src/components/ui/badge.tsx var import_class_variance_authority2 = require("class-variance-authority"); var import_jsx_runtime10 = require("react/jsx-runtime"); var badgeVariants = (0, import_class_variance_authority2.cva)( "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", { variants: { variant: { default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80", secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80", success: "border-transparent bg-success text-primary-foreground shadow hover:bg-success/80", warning: "border-transparent bg-warning text-primary-foreground shadow hover:bg-warning/80", outline: "text-foreground" } }, defaultVariants: { variant: "default" } } ); function Badge(_a) { var _b = _a, { className, variant } = _b, props = __objRest(_b, ["className", "variant"]); return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", __spreadValues({ className: cn(badgeVariants({ variant }), className) }, props)); } // src/components/dataDisplay/Icon/Icon.tsx var import_react = require("react"); var import_react_icons4 = require("react-icons"); var import_jsx_runtime11 = require("react/jsx-runtime"); var Icon2 = (_a) => { var _b = _a, { name, size = 24 } = _b, rest = __objRest(_b, ["name", "size"]); const nameIcon = (0, import_react.useMemo)(() => name, [name]); const iconsModulePath = (0, import_react.useMemo)( () => ({ // eslint-disable-next-line @typescript-eslint/no-require-imports md: require("react-icons/md"), // eslint-disable-next-line @typescript-eslint/no-require-imports fa: require("react-icons/fa"), // eslint-disable-next-line @typescript-eslint/no-require-imports bs: require("react-icons/bs") }), [] ); const typeIcon = (0, import_react.useMemo)(() => { var _a2; const matches = [...nameIcon.matchAll(/[A-Z]/g)]; return String( nameIcon.slice(0, (_a2 = matches[1]) == null ? void 0 : _a2.index) || "" ).toLocaleLowerCase(); }, [nameIcon]); const Icon3 = (0, import_react.useCallback)( (props) => { var _a2, _b2; try { if (!typeIcon || !nameIcon) return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_jsx_runtime11.Fragment, {}); return (_b2 = (_a2 = iconsModulePath[typeIcon])[nameIcon]) == null ? void 0 : _b2.call(_a2, props); } catch (e) { return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_jsx_runtime11.Fragment, {}); } }, [iconsModulePath, nameIcon, typeIcon] ); return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_react_icons4.IconContext.Provider, { value: { size: String(size) }, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon3, __spreadValues({}, rest)) }); }; // src/components/ui/avatar.tsx var React7 = __toESM(require("react")); var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar")); var import_jsx_runtime12 = require("react/jsx-runtime"); var Avatar = React7.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)( AvatarPrimitive.Root, __spreadValues({ ref, className: cn( "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full", className ) }, props) ); }); Avatar.displayName = AvatarPrimitive.Root.displayName; var AvatarImage = React7.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)( AvatarPrimitive.Image, __spreadValues({ ref, className: cn("aspect-square h-full w-full", className) }, props) ); }); AvatarImage.displayName = AvatarPrimitive.Image.displayName; var AvatarFallback = React7.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)( AvatarPrimitive.Fallback, __spreadValues({ ref, className: cn( "flex h-full w-full items-center justify-center rounded-full bg-muted", className ) }, props) ); }); AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName; // src/components/dataDisplay/DataPairList/DataPairList.tsx var import_lodash = require("lodash"); // src/components/dataDisplay/Text/Text.tsx var import_class_variance_authority3 = require("class-variance-authority"); var import_jsx_runtime13 = require("react/jsx-runtime"); var textVariants = (0, import_class_variance_authority3.cva)("", { variants: { variant: { display: "text-5xl font-extrabold tracking-tight", title: "text-3xl font-bold tracking-tight", subtitle: "text-2xl font-semibold", normal: "text-base font-normal", caption: "text-sm font-medium", muted: "text-sm font-normal text-muted-foreground" }, align: { left: "text-left", center: "text-center", right: "text-right", justify: "text-justify" } }, defaultVariants: { variant: "normal", align: "left" } }); var tagMap = { display: "h1", title: "h2", subtitle: "h3", normal: "p", caption: "small", muted: "p" }; function Text({ variant = "normal", align, className, children }) { const Tag = tagMap[variant || "normal"] || "p"; return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Tag, { className: cn(textVariants({ variant, align }), className), children }); } // src/components/dataDisplay/DataPairList/DataPairList.tsx var import_jsx_runtime14 = require("react/jsx-runtime"); var DataPairList = ({ title, data, labels, className, infoDirection = "horizontal", direction = "vertical", withBorder = false, header = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, {}) }) => { if ((0, import_lodash.isEmpty)(data)) return null; return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)( "div", { className: cn( "flex flex-col gap-2 rounded-md p-4", withBorder && "border border-muted", className ), children: [ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex gap-3", children: [ title && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Text, { variant: "title", children: title }), header ] }), /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( "div", { className: cn( "grid grid-cols-1 mt-5", direction === "vertical" ? "gap-3" : "sm:grid-cols-2 md:grid-cols-4 gap-10" ), children: Object.entries(data || {}).map(([key, value], index) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)( "div", { className: cn( "flex gap-3", infoDirection === "horizontal" ? "flex-row" : "flex-col" ), children: [ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Text, { className: "uppercase text-muted-foreground font-bold", children: [ (labels == null ? void 0 : labels[key]) || key, ":" ] }), /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Text, { children: value }) ] }, index )) } ) ] } ); }; // src/components/dataInput/checkbox/Checkbox.tsx var import_react_hook_form3 = require("react-hook-form"); // src/components/ui/checkbox.tsx var React8 = __toESM(require("react")); var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox")); var import_lucide_react3 = require("lucide-react"); var import_jsx_runtime15 = require("react/jsx-runtime"); var Checkbox = React8.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)( CheckboxPrimitive.Root, __spreadProps(__spreadValues({ ref, className: cn( "peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground", className ) }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)( CheckboxPrimitive.Indicator, { className: cn("flex items-center justify-center text-current"), children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react3.Check, { className: "h-4 w-4" }) } ) }) ); }); Checkbox.displayName = CheckboxPrimitive.Root.displayName; // src/components/ui/label.tsx var React9 = __toESM(require("react")); var LabelPrimitive = __toESM(require("@radix-ui/react-label")); var import_class_variance_authority4 = require("class-variance-authority"); var import_jsx_runtime16 = require("react/jsx-runtime"); var labelVariants = (0, import_class_variance_authority4.cva)( "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" ); var Label3 = React9.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( LabelPrimitive.Root, __spreadValues({ ref, className: cn(labelVariants(), className) }, props) ); }); Label3.displayName = LabelPrimitive.Root.displayName; // src/components/dataInput/form/index.ts var import_react_hook_form2 = require("react-hook-form"); // src/components/ui/form.tsx var React10 = __toESM(require("react")); var import_react_slot2 = require("@radix-ui/react-slot"); var import_react_hook_form = require("react-hook-form"); var import_jsx_runtime17 = require("react/jsx-runtime"); var Form = import_react_hook_form.FormProvider; var FormFieldContext = React10.createContext( {} ); var FormField = (_a) => { var props = __objRest(_a, []); return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_react_hook_form.Controller, __spreadValues({}, props)) }); }; var useFormField = () => { const fieldContext = React10.useContext(FormFieldContext); const itemContext = React10.useContext(FormItemContext); const { getFieldState, formState } = (0, import_react_hook_form.useFormContext)(); const fieldState = getFieldState(fieldContext.name, formState); if (!fieldContext) { throw new Error("useFormField should be used within <FormField>"); } const { id } = itemContext; return __spreadValues({ id, name: fieldContext.name, formItemId: `${id}-form-item`, formDescriptionId: `${id}-form-item-description`, formMessageId: `${id}-form-item-message` }, fieldState); }; var FormItemContext = React10.createContext( {} ); var FormItem = React10.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); const id = React10.useId(); return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", __spreadValues({ ref, className: cn("space-y-2", className) }, props)) }); }); FormItem.displayName = "FormItem"; var FormLabel = React10.forwardRef((_a, ref) => { var _b = _a, { className } = _b, props = __objRest(_b, ["className"]); const { error, formItemId } = useFormField(); return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)( Label3, __spreadValues({ ref, className: cn(error && "text-destructive", className), htmlFor: formItemId }, props) ); }); FormLabel.displayName = "FormLabel"; var FormControl = React10.forwardRef((_a, ref) => { var props = __objRest(_a, []); const { error, formItemId, formDescriptionId, formMessageId } = useFormField(); return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)( import_react_slot2.Slot, __spreadValues({ ref, id: formItemId, "aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`, "aria-invalid": !!error }, props) ); }); FormControl.displayName = "FormCon