maquinaweb-ui 2.61.0 → 2.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { ComponentProps, ElementType } from "react";
2
- import * as react_jsx_runtime1 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime4 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/container-animation/container-animation.d.ts
5
5
  type ContainerAnimationProps<T extends ElementType = 'div'> = ComponentProps<'div'> & ComponentProps<T> & {
@@ -23,7 +23,7 @@ declare const ContainerAnimation: <T extends ElementType = "div">({
23
23
  distance,
24
24
  hideNotInView,
25
25
  ...props
26
- }: ContainerAnimationProps<T>) => react_jsx_runtime1.JSX.Element;
26
+ }: ContainerAnimationProps<T>) => react_jsx_runtime4.JSX.Element;
27
27
  //#endregion
28
28
  export { ContainerAnimation, type ContainerAnimationProps };
29
29
  //# sourceMappingURL=container-animation.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { FieldPath, FieldValues, UseControllerProps } from "react-hook-form";
2
- import * as react_jsx_runtime4 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
3
  import { Matcher } from "react-day-picker";
4
4
 
5
5
  //#region src/components/date-field/DateField.d.ts
@@ -29,7 +29,7 @@ declare function DateField<TFieldValues extends FieldValues = FieldValues, TFiel
29
29
  required,
30
30
  help,
31
31
  dateOnly
32
- }: DateFieldProps<TFieldValues, TFieldName>): react_jsx_runtime4.JSX.Element;
32
+ }: DateFieldProps<TFieldValues, TFieldName>): react_jsx_runtime0.JSX.Element;
33
33
  //#endregion
34
34
  export { DateField, type DateFieldProps };
35
35
  //# sourceMappingURL=date-field.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { FieldPath, FieldValues, UseControllerProps } from "react-hook-form";
2
- import * as react_jsx_runtime3 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime5 from "react/jsx-runtime";
3
3
  import { Matcher } from "react-day-picker";
4
4
 
5
5
  //#region src/components/date-hour-field/DateHourField.d.ts
@@ -29,7 +29,7 @@ declare function DateHourField<TFieldValues extends FieldValues = FieldValues, T
29
29
  help,
30
30
  hourPlaceholder,
31
31
  valueType
32
- }: DateHourFieldProps<TFieldValues, TFieldName>): react_jsx_runtime3.JSX.Element;
32
+ }: DateHourFieldProps<TFieldValues, TFieldName>): react_jsx_runtime5.JSX.Element;
33
33
  //#endregion
34
34
  export { DateHourField, type DateHourFieldProps };
35
35
  //# sourceMappingURL=date-hour-field.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import { n as Options, t as Mask } from "./with-mask-BLZS7b9k.js";
2
2
  import { FieldPath, FieldValues, UseControllerProps } from "react-hook-form";
3
3
  import { Dispatch, SetStateAction } from "react";
4
- import * as react_jsx_runtime5 from "react/jsx-runtime";
4
+ import * as react_jsx_runtime8 from "react/jsx-runtime";
5
5
  import { PopoverProps } from "@radix-ui/react-popover";
6
6
 
7
7
  //#region src/components/input-suggest/input-suggest.d.ts
@@ -71,7 +71,7 @@ declare function InputSuggest<TFieldValues extends FieldValues = FieldValues, TF
71
71
  debounceTime,
72
72
  maxWait,
73
73
  ...props
74
- }: InputSuggestProps<TFieldValues, TFieldName> & PopoverProps): react_jsx_runtime5.JSX.Element;
74
+ }: InputSuggestProps<TFieldValues, TFieldName> & PopoverProps): react_jsx_runtime8.JSX.Element;
75
75
  //#endregion
76
76
  export { InputSuggest, type InputSuggestProps };
77
77
  //# sourceMappingURL=input-suggest.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { Dispatch, ReactNode, RefObject, SetStateAction } from "react";
2
- import * as react_jsx_runtime12 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime14 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/kanban-dnd/types.d.ts
5
5
  type KanbanSelectableItem = {
@@ -94,7 +94,7 @@ declare function KanbanCardItem({
94
94
  className,
95
95
  getSelectedCardIds,
96
96
  getSelectableItems
97
- }: KanbanCardItemProps): react_jsx_runtime12.JSX.Element;
97
+ }: KanbanCardItemProps): react_jsx_runtime14.JSX.Element;
98
98
  //#endregion
99
99
  //#region src/components/kanban-dnd/kanban-dnd-monitor.d.ts
100
100
  declare function KanbanDndMonitor<TColumn>({
@@ -118,7 +118,7 @@ declare function KanbanDndMonitor<TColumn>({
118
118
  isAutoScrollEnabled,
119
119
  renderIdleLayer,
120
120
  className
121
- }: KanbanDndMonitorProps<TColumn>): react_jsx_runtime12.JSX.Element;
121
+ }: KanbanDndMonitorProps<TColumn>): react_jsx_runtime14.JSX.Element;
122
122
  //#endregion
123
123
  //#region src/components/kanban-dnd/kanban-dropzone.d.ts
124
124
  declare function KanbanDropZone({
@@ -126,14 +126,14 @@ declare function KanbanDropZone({
126
126
  id,
127
127
  className,
128
128
  isOverClassName
129
- }: KanbanDropZoneProps): react_jsx_runtime12.JSX.Element;
129
+ }: KanbanDropZoneProps): react_jsx_runtime14.JSX.Element;
130
130
  //#endregion
131
131
  //#region src/components/kanban-dnd/kanban-selector.d.ts
132
132
  declare function KanbanSelector({
133
133
  dragAreaId,
134
134
  autoScrollMargin,
135
135
  ignoredSlots
136
- }: KanbanSelectorProps): react_jsx_runtime12.JSX.Element | null;
136
+ }: KanbanSelectorProps): react_jsx_runtime14.JSX.Element | null;
137
137
  //#endregion
138
138
  //#region src/components/kanban-dnd/move-cards.d.ts
139
139
  type MoveCardsResolvers<TColumn, TCard> = {
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime2 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime9 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/components/page-header/page-header.d.ts
4
4
  interface PageHeaderProps {
@@ -10,7 +10,7 @@ declare function PageHeader({
10
10
  title,
11
11
  help,
12
12
  description
13
- }: PageHeaderProps): react_jsx_runtime2.JSX.Element;
13
+ }: PageHeaderProps): react_jsx_runtime9.JSX.Element;
14
14
  //#endregion
15
15
  export { PageHeader, type PageHeaderProps };
16
16
  //# sourceMappingURL=page-header.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { FieldPath, FieldPathValue, FieldValues, UseControllerProps } from "react-hook-form";
2
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime6 from "react/jsx-runtime";
3
3
  import { Options } from "nuqs";
4
4
  import { PopoverProps } from "@radix-ui/react-popover";
5
5
 
@@ -40,6 +40,7 @@ type SelectorProps<T> = {
40
40
  imageField?: keyof T;
41
41
  disabledField?: keyof T;
42
42
  onDisabledClick?: (item: T) => void;
43
+ itemRightElement?: (item: T) => React.ReactNode;
43
44
  loadMore?: () => void;
44
45
  hasMore?: boolean;
45
46
  isLoading?: boolean;
@@ -80,7 +81,7 @@ declare function RemoteSelectorField<T, TFieldValues extends FieldValues = Field
80
81
  ...props
81
82
  }: RemoteSelectorFieldProps<TFieldValues, TFieldName> & BaseRemoteSelectorProps<T> & {
82
83
  withPortal?: boolean;
83
- }): react_jsx_runtime0.JSX.Element;
84
+ }): react_jsx_runtime6.JSX.Element;
84
85
  interface RemoteSelectorQueryProps<T> extends BaseRemoteSelectorProps<T> {
85
86
  name: string;
86
87
  defaultValue?: string;
@@ -100,7 +101,7 @@ declare function RemoteSelectorQuery<T>({
100
101
  fieldLabel,
101
102
  type,
102
103
  ...props
103
- }: RemoteSelectorQueryProps<T>): react_jsx_runtime0.JSX.Element;
104
+ }: RemoteSelectorQueryProps<T>): react_jsx_runtime6.JSX.Element;
104
105
  //#endregion
105
106
  export { type BaseRemoteSelectorProps, RemoteSelectorField as RemoteSelector, RemoteSelectorField, type RemoteSelectorFieldProps, RemoteSelectorQuery, type RemoteSelectorQueryProps, type TUseData };
106
107
  //# sourceMappingURL=remote-selector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote-selector.d.ts","names":[],"sources":["../src/components/ui/selector.tsx","../src/components/remote-selector/remote-selector.tsx"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-selector.d.ts","names":[],"sources":["../src/components/ui/selector.tsx","../src/components/remote-selector/remote-selector.tsx"],"sourcesContent":[],"mappings":"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"}
@@ -252,7 +252,7 @@ var tree_item_renderer_default = TreeItemRenderer;
252
252
 
253
253
  //#endregion
254
254
  //#region src/components/ui/selector.tsx
255
- function Selector({ type = "single", value, onChange, search, onSearch, items, withPortal = true, label, placeholder, fieldLabel, fieldKey, groupBy, treeRender = false, fieldChildren, fieldParent, fieldDisabled, searchPlaceholder, name, empty = "Nenhuma opção encontrada...", disabled = false, className, required, error, selectFirstIsOne, help, extra, extraOnClick, open, setOpen, maxVisibleBadges = 3, id, imageField, disabledField, onDisabledClick, loadMore, hasMore, isLoading,...props }) {
255
+ function Selector({ type = "single", value, onChange, search, onSearch, items, withPortal = true, label, placeholder, fieldLabel, fieldKey, groupBy, treeRender = false, fieldChildren, fieldParent, fieldDisabled, searchPlaceholder, name, empty = "Nenhuma opção encontrada...", disabled = false, className, required, error, selectFirstIsOne, help, extra, extraOnClick, open, setOpen, maxVisibleBadges = 3, id, imageField, disabledField, onDisabledClick, itemRightElement, loadMore, hasMore, isLoading,...props }) {
256
256
  const itemKey = fieldKey || fieldLabel;
257
257
  const childrenKey = fieldChildren || "children";
258
258
  const parentKey = fieldParent || "parent";
@@ -396,7 +396,7 @@ function Selector({ type = "single", value, onChange, search, onSearch, items, w
396
396
  children: group.items.map((item) => {
397
397
  const isDisabled = disabledField ? !!item[disabledField] : false;
398
398
  return /* @__PURE__ */ jsxs(CommandItem, {
399
- className: cn("transition-all p-2", isMultiple && "gap-2", !isMultiple && isItemSelected(item) && "bg-accent! text-accent-foreground", isDisabled && "opacity-50"),
399
+ className: cn("transition-all p-2", isMultiple && "gap-2", !isMultiple && isItemSelected(item) && "bg-accent! text-accent-foreground", isDisabled && !onDisabledClick && !itemRightElement && "opacity-50"),
400
400
  onSelect: () => {
401
401
  if (isDisabled && onDisabledClick) {
402
402
  onDisabledClick(item);
@@ -412,15 +412,19 @@ function Selector({ type = "single", value, onChange, search, onSearch, items, w
412
412
  className: "relative w-8 h-8 overflow-hidden rounded-md border bg-muted shrink-0",
413
413
  children: item[imageField] ? /* @__PURE__ */ jsx("img", {
414
414
  alt: item[fieldLabel],
415
- className: "w-full h-full object-cover",
416
- src: item[imageField]
415
+ src: item[imageField],
416
+ className: "w-full h-full object-cover"
417
417
  }) : /* @__PURE__ */ jsx("div", {
418
418
  className: "w-full h-full flex items-center justify-center",
419
419
  children: /* @__PURE__ */ jsx(Package, { className: "h-4 w-4 text-muted-foreground" })
420
420
  })
421
421
  }),
422
- item[fieldLabel],
423
- !isMultiple && isItemSelected(item) && /* @__PURE__ */ jsx(Check, { className: "ml-auto h-4 w-4" })
422
+ /* @__PURE__ */ jsx("span", {
423
+ className: cn("flex-1 text-left min-w-0 pr-2", isDisabled && "opacity-50"),
424
+ children: item[fieldLabel]
425
+ }),
426
+ itemRightElement?.(item),
427
+ !isMultiple && isItemSelected(item) && !isDisabled && /* @__PURE__ */ jsx(Check, { className: "ml-auto h-4 w-4 shrink-0" })
424
428
  ]
425
429
  }, `item-${item[itemKey]}`);
426
430
  })
@@ -1 +1 @@
1
- {"version":3,"file":"remote-selector.js","names":["Checkbox","CheckboxPrimitive","CheckboxIndicatorPrimitive","Command","CommandPrimitive","buildGroups","Checkbox","DEFAULT_GROUP_ID","UNDEFINED_GROUP_ID","roots: T[]","Command","TreeItemRenderer","Checkbox","id"],"sources":["../src/components/ui/badge.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/command.tsx","../src/components/ui/tree-item-renderer.tsx","../src/components/ui/selector.tsx","../src/components/remote-selector/remote-selector.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',\n warning: 'border-transparent bg-warning text-warning-foreground',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","'use client';\n\nimport * as React from 'react';\n\nimport {\n Indicator as CheckboxIndicatorPrimitive,\n Checkbox as CheckboxPrimitive,\n} from '@radix-ui/react-checkbox';\n\nimport { cn } from '@/lib/utils';\nimport type { HTMLMotionProps } from 'motion/react';\nimport * as motion from 'motion/react-m';\n\ntype CheckboxProps = React.ComponentProps<typeof CheckboxPrimitive> &\n HTMLMotionProps<'button'>;\n\nfunction Checkbox({ className, onCheckedChange, ...props }: CheckboxProps) {\n const [isChecked, setIsChecked] = React.useState(\n props?.checked ?? props?.defaultChecked ?? false\n );\n\n React.useEffect(() => {\n if (props?.checked !== undefined) setIsChecked(props.checked);\n }, [props?.checked]);\n\n const handleCheckedChange = React.useCallback(\n (checked: boolean) => {\n setIsChecked(checked);\n onCheckedChange?.(checked);\n },\n [onCheckedChange]\n );\n\n return (\n <CheckboxPrimitive {...props} asChild onCheckedChange={handleCheckedChange}>\n <motion.span\n className={cn(\n 'peer size-4 flex items-center justify-center shrink-0 rounded-[3px] border border-primary transition-colors duration-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground cursor-pointer',\n className\n )}\n data-slot=\"checkbox\"\n whileHover={{ scale: 1.05 }}\n whileTap={{ scale: 0.95 }}\n {...props}\n >\n <CheckboxIndicatorPrimitive asChild forceMount>\n <motion.svg\n animate={isChecked ? 'checked' : 'unchecked'}\n className={cn('size-3', isChecked && 'text-primary-foreground')}\n data-slot=\"checkbox-indicator\"\n fill=\"none\"\n initial=\"unchecked\"\n stroke=\"currentColor\"\n strokeWidth=\"3.5\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <motion.path\n d=\"M4.5 12.75l6 6 9-13.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n variants={{\n checked: {\n pathLength: 1,\n opacity: 1,\n transition: {\n duration: 0.2,\n delay: 0.2,\n },\n },\n unchecked: {\n pathLength: 0,\n opacity: 0,\n transition: {\n duration: 0.2,\n },\n },\n }}\n />\n </motion.svg>\n </CheckboxIndicatorPrimitive>\n </motion.span>\n </CheckboxPrimitive>\n );\n}\n\nexport { Checkbox, type CheckboxProps };\n","'use client';\n\nimport * as React from 'react';\n\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n className={cn(\n 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n className\n )}\n data-slot=\"command\"\n {...props}\n />\n );\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n data-slot=\"command-input-wrapper\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n className={cn(\n 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-slot=\"command-input\"\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n className={cn(\n 'max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto',\n className\n )}\n data-slot=\"command-list\"\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n className=\"py-6 text-center text-sm\"\n data-slot=\"command-empty\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n className={cn(\n 'text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',\n className\n )}\n data-slot=\"command-group\"\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n className={cn('bg-border -mx-1 h-px', className)}\n data-slot=\"command-separator\"\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n data-slot=\"command-item\"\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n className={cn(\n 'text-muted-foreground ml-auto text-xs tracking-widest',\n className\n )}\n data-slot=\"command-shortcut\"\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","'use client';\n\nimport { Fragment, memo, useMemo } from 'react';\n\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { Checkbox } from './checkbox';\nimport { CommandItem } from './command';\n\ntype TreeItemRendererProps<T> = {\n items: T[];\n itemKey: keyof T;\n labelKey: keyof T;\n childrenKey: keyof T;\n parentKey?: keyof T;\n groupBy?: keyof T;\n disabledKey?: keyof T;\n isMultiple?: boolean;\n isItemSelected: (item: T) => boolean;\n onSelect: (item: T) => void;\n level?: number;\n};\n\nconst TreeItemRendererComponent = <T,>({\n items,\n itemKey,\n labelKey,\n childrenKey,\n parentKey,\n groupBy,\n disabledKey,\n isMultiple = false,\n isItemSelected,\n onSelect,\n level = 0,\n}: TreeItemRendererProps<T>) => {\n const parsedItems = useMemo(\n () =>\n level === 0\n ? normalizeTreeItems(\n items,\n itemKey,\n childrenKey,\n (parentKey || 'parent') as keyof T\n )\n : items,\n [level, items, itemKey, childrenKey, parentKey]\n );\n\n return (\n <>\n {parsedItems.map((item) => {\n const children = Array.isArray(item[childrenKey])\n ? (item[childrenKey] as T[])\n : [];\n const childrenGroups = buildGroups(children, groupBy);\n\n return (\n <Fragment key={`tree-item-${String(item[itemKey])}-${level}`}>\n <div className=\"relative\">\n {level > 0 && (\n <div className=\"pointer-events-none absolute left-0 top-1/2 -translate-y-1/2 w-4 h-px bg-gray-300\" />\n )}\n <CommandItem\n className={cn(\n 'transition-all p-2',\n level > 0 && 'ml-4',\n !isMultiple &&\n isItemSelected(item) &&\n 'bg-accent! text-accent-foreground'\n )}\n disabled={disabledKey ? Boolean(item[disabledKey]) : false}\n key={`item-${String(item[itemKey])}`}\n onSelect={() => onSelect(item)}\n value={String(item[itemKey])}\n >\n <div\n className={cn(\n 'flex items-center w-full gap-2',\n level > 0 && 'pl-2'\n )}\n >\n {isMultiple && <Checkbox checked={isItemSelected(item)} />}\n <span className=\"truncate\">\n {String(item[labelKey] || '')}\n </span>\n {!isMultiple && isItemSelected(item) && (\n <Check className=\"ml-auto h-4 w-4\" />\n )}\n </div>\n </CommandItem>\n </div>\n <div\n className={cn(\n children.length > 0 &&\n 'ml-4 relative before:absolute before:left-0 before:top-0 before:bottom-4 before:border-l before:border-gray-300'\n )}\n >\n {children.length > 0 && (\n <>\n {childrenGroups.map((group) => (\n <div\n key={`tree-group-${String(item[itemKey])}-${group.id}`}\n >\n {groupBy && (\n <div className=\"px-2 py-1 ml-4 text-[11px] font-medium text-muted-foreground/90 uppercase tracking-wide\">\n {group.heading || 'Outros'}\n </div>\n )}\n <TreeItemRenderer\n childrenKey={childrenKey}\n disabledKey={disabledKey}\n groupBy={groupBy}\n isItemSelected={isItemSelected}\n isMultiple={isMultiple}\n itemKey={itemKey}\n items={group.items}\n labelKey={labelKey}\n level={level + 1}\n onSelect={onSelect}\n parentKey={parentKey}\n />\n </div>\n ))}\n </>\n )}\n </div>\n </Fragment>\n );\n })}\n </>\n );\n};\n\nconst TreeItemRenderer = memo(\n TreeItemRendererComponent\n) as typeof TreeItemRendererComponent;\n\ntype TreeGroup<T> = {\n id: string;\n heading?: string;\n items: T[];\n};\n\nconst DEFAULT_GROUP_ID = 'tree-group-default';\nconst UNDEFINED_GROUP_ID = 'tree-group-undefined';\n\nconst buildGroups = <T,>(items: T[], groupBy?: keyof T): TreeGroup<T>[] => {\n if (!groupBy) return [{ id: DEFAULT_GROUP_ID, items }];\n\n return Object.values(\n items.reduce<Record<string, TreeGroup<T>>>((acc, item) => {\n const rawValue = item[groupBy];\n const heading = rawValue == null ? undefined : String(rawValue);\n const groupId = heading ?? UNDEFINED_GROUP_ID;\n\n if (!acc[groupId]) {\n acc[groupId] = { id: groupId, heading, items: [] };\n }\n\n acc[groupId].items.push(item);\n return acc;\n }, {})\n );\n};\n\nconst normalizeTreeItems = <T,>(\n items: T[],\n itemKey: keyof T,\n childrenKey: keyof T,\n parentKey: keyof T\n): T[] => {\n if (items.length === 0) return items;\n\n const hasNestedChildren = items.some(\n (item) =>\n Array.isArray(item[childrenKey]) &&\n (item[childrenKey] as unknown[]).length > 0\n );\n\n if (hasNestedChildren) return items;\n\n const hasParentField = items.some((item) =>\n Object.prototype.hasOwnProperty.call(\n item as object,\n parentKey as PropertyKey\n )\n );\n\n if (!hasParentField) return items;\n\n const nodes = new Map<string, T>();\n const roots: T[] = [];\n\n for (const item of items) {\n nodes.set(String(item[itemKey]), {\n ...(item as object),\n [childrenKey]: [],\n } as T);\n }\n\n for (const item of items) {\n const node = nodes.get(String(item[itemKey]));\n if (!node) continue;\n\n const parentValue = item[parentKey] as unknown;\n const hasParent =\n parentValue !== null &&\n parentValue !== undefined &&\n String(parentValue) !== '';\n\n if (!hasParent) {\n roots.push(node);\n continue;\n }\n\n const parentNode = nodes.get(String(parentValue));\n if (!parentNode) {\n roots.push(node);\n continue;\n }\n\n (parentNode[childrenKey] as unknown[]).push(node);\n }\n\n return roots;\n};\n\nexport default TreeItemRenderer;\n","'use client';\n\nimport { useEffect, useMemo } from 'react';\n\nimport type { PopoverProps } from '@radix-ui/react-popover';\nimport { ScrollArea, ScrollAreaViewport } from '@radix-ui/react-scroll-area';\n\nimport { Check, ChevronsUpDown, Loader2, Package, X } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { useInView } from 'react-intersection-observer';\nimport { Badge } from './badge';\nimport { Button } from './button';\nimport { Checkbox } from './checkbox';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from './command';\nimport { InputHelp } from './input-help';\nimport { Popover, PopoverContent, PopoverTrigger } from './popover';\nimport { ScrollBar } from './scroll-area';\nimport TreeItemRenderer from './tree-item-renderer';\n\nexport type SelectorOption = {\n id: string | number;\n name: string;\n value?: any;\n children?: SelectorOption[];\n disabled?: boolean;\n};\n\nexport type SelectorProps<T> = {\n type?: 'single' | 'multiple';\n value?: T | T[];\n onChange?: (item: T | T[] | undefined | null) => void;\n search?: string;\n onSearch?: (search: string) => void;\n placeholder?: string;\n empty?: React.ReactNode;\n items: T[];\n fieldLabel: keyof T;\n withPortal?: boolean;\n fieldKey?: keyof T;\n groupBy?: keyof T;\n treeRender?: boolean;\n fieldChildren?: keyof T;\n fieldParent?: keyof T;\n fieldDisabled?: keyof T;\n disabled?: boolean;\n searchPlaceholder?: string;\n label?: string;\n name?: string;\n className?: string;\n required?: boolean;\n error?: React.ReactNode;\n selectFirstIsOne?: boolean;\n help?: string;\n extra?: string;\n extraOnClick?: (\n onChange?: (item: T | T[] | undefined | null) => void\n ) => Promise<void> | void;\n open?: boolean;\n setOpen?: (open: boolean) => void;\n maxVisibleBadges?: number;\n id?: string;\n imageField?: keyof T;\n disabledField?: keyof T;\n onDisabledClick?: (item: T) => void;\n loadMore?: () => void;\n hasMore?: boolean;\n isLoading?: boolean;\n} & PopoverProps;\n\ntype SelectorGroup<T> = {\n id: string;\n heading?: string;\n items: T[];\n};\n\nexport function Selector<T>({\n type = 'single',\n value,\n onChange,\n search,\n onSearch,\n items,\n withPortal = true,\n label,\n placeholder,\n fieldLabel,\n fieldKey,\n groupBy,\n treeRender = false,\n fieldChildren,\n fieldParent,\n fieldDisabled,\n searchPlaceholder,\n name,\n empty = 'Nenhuma opção encontrada...',\n disabled = false,\n className,\n required,\n error,\n selectFirstIsOne,\n help,\n extra,\n extraOnClick,\n open,\n setOpen,\n maxVisibleBadges = 3,\n id,\n imageField,\n disabledField,\n onDisabledClick,\n loadMore,\n hasMore,\n isLoading,\n ...props\n}: SelectorProps<T>) {\n const itemKey = fieldKey || fieldLabel;\n const childrenKey = (fieldChildren || 'children') as keyof T;\n const parentKey = (fieldParent || 'parent') as keyof T;\n\n const isMultiple = type === 'multiple';\n const selectedItems = isMultiple && Array.isArray(value) ? value : [];\n const singleValue = !isMultiple && !Array.isArray(value) ? value : undefined;\n const itensGroups = useMemo(\n () => buildGroups(items, groupBy),\n [items, groupBy]\n );\n\n // Infinite scroll\n const { ref: loadMoreRef, inView } = useInView({\n threshold: 0,\n rootMargin: '100px',\n skip: !hasMore || isLoading,\n });\n\n useEffect(() => {\n if (inView && hasMore && loadMore && !isLoading) {\n loadMore();\n }\n }, [inView, hasMore, loadMore, isLoading]);\n\n const isItemSelected = (item: T): boolean => {\n if (isMultiple) {\n return selectedItems.some(\n (selected) => selected[itemKey] === item[itemKey]\n );\n }\n return singleValue?.[itemKey] === item[itemKey];\n };\n\n const handleItemSelect = (item: T) => {\n if (isMultiple) {\n const isSelected = isItemSelected(item);\n const newValue = isSelected\n ? selectedItems.filter(\n (selected) => selected[itemKey] !== item[itemKey]\n )\n : [...selectedItems, item];\n onChange?.(newValue.length > 0 ? newValue : null);\n } else {\n onChange?.(item);\n setOpen?.(false);\n }\n };\n\n useEffect(() => {\n if (selectFirstIsOne && items && items.length === 1 && !value) {\n onChange?.(items[0] as any);\n }\n }, [items]);\n\n return (\n <div\n className={cn('w-full flex flex-col gap-1', className)}\n id={id || `selector-${name}`}\n >\n {label && (\n <div className=\"flex items-end gap-1.5\">\n <label\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n htmlFor={id || name}\n >\n {label}:\n {required && (\n <span className=\"text-red-500 text-lg leading-px\">*</span>\n )}\n </label>\n\n <InputHelp help={help} name={name} />\n </div>\n )}\n <div className=\"flex flex-col gap-1\">\n <Popover onOpenChange={setOpen} open={open} {...props}>\n <PopoverTrigger asChild>\n <Button\n aria-expanded={open}\n aria-label=\"Carregando opções...\"\n className={cn(\n 'mt-0! justify-between w-full hover:bg-transparent cursor-pointer',\n !value && 'text-muted-foreground',\n error && 'border-destructive'\n )}\n disabled={disabled}\n id={id || name}\n role=\"combobox\"\n variant=\"outline\"\n >\n {isMultiple && selectedItems.length > 0 ? (\n <div className=\"flex gap-1 flex-1 min-w-0 overflow-hidden\">\n {selectedItems\n .slice(0, maxVisibleBadges)\n .map((item, index) => (\n <Badge\n className=\"truncate shrink min-w-0\"\n key={`badge-${item[itemKey]}-${index}`}\n variant=\"secondary\"\n >\n <span className=\"truncate block\">\n {item[fieldLabel] as string}\n </span>\n </Badge>\n ))}\n {selectedItems.length > maxVisibleBadges && (\n <Badge className=\"shrink-0\" variant=\"secondary\">\n +{selectedItems.length - maxVisibleBadges}\n </Badge>\n )}\n </div>\n ) : (\n <span className=\"truncate\">\n {!isMultiple && singleValue\n ? (singleValue[fieldLabel] as string)\n : placeholder || `Selecione a ${label?.toLowerCase()}`}\n </span>\n )}\n <div className=\"flex items-center shrink-0\">\n <div className=\"relative size-4\">\n {((isMultiple && selectedItems.length > 0) ||\n (!isMultiple && singleValue !== undefined)) && (\n <div\n className=\"absolute left-1/2 -translate-x-1/2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onChange?.(null);\n }}\n >\n <X className=\"size-4\" />\n </div>\n )}\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-(--radix-popover-trigger-width) max-w-2xl p-0\"\n withPortal={withPortal}\n >\n <Command shouldFilter={false}>\n <CommandInput\n onValueChange={onSearch}\n placeholder={\n searchPlaceholder ||\n `Pesquise por uma ${label?.toLowerCase()}`\n }\n value={search}\n />\n <CommandList\n className=\"max-h-none overflow-visible\"\n onWheel={(e) => e.stopPropagation()}\n >\n <ScrollArea className=\"h-fit max-h-75\" id=\"scroll\">\n <ScrollAreaViewport className=\"w-full h-fit max-h-75 relative\">\n <CommandEmpty className=\"text-sm p-3 text-foreground/60\">\n {empty}\n </CommandEmpty>\n {treeRender\n ? items.length > 0 && (\n <CommandGroup>\n <TreeItemRenderer\n childrenKey={childrenKey}\n disabledKey={fieldDisabled}\n groupBy={groupBy}\n isItemSelected={isItemSelected}\n isMultiple={isMultiple}\n itemKey={itemKey}\n items={items}\n labelKey={fieldLabel}\n onSelect={handleItemSelect}\n parentKey={parentKey}\n />\n </CommandGroup>\n )\n : itensGroups.length > 0 &&\n itensGroups.some((group) => group.items.length > 0) &&\n itensGroups.map((group) => (\n <CommandGroup\n heading={\n group.heading ||\n (group.id === UNDEFINED_GROUP_ID && 'Outros')\n }\n key={`group-${group.id}`}\n >\n {group.items.map((item) => {\n const isDisabled = disabledField\n ? !!item[disabledField]\n : false;\n\n return (\n <CommandItem\n className={cn(\n 'transition-all p-2',\n isMultiple && 'gap-2',\n !isMultiple &&\n isItemSelected(item) &&\n 'bg-accent! text-accent-foreground',\n isDisabled && 'opacity-50'\n )}\n key={`item-${item[itemKey]}`}\n onSelect={() => {\n if (isDisabled && onDisabledClick) {\n onDisabledClick(item);\n return;\n }\n\n if (isDisabled) return;\n handleItemSelect(item);\n }}\n value={String(item[itemKey])}\n >\n {isMultiple && (\n <Checkbox checked={isItemSelected(item)} />\n )}\n {isMultiple && imageField && (\n <div className=\"relative w-8 h-8 overflow-hidden rounded-md border bg-muted shrink-0\">\n {item[imageField] ? (\n <img\n alt={item[fieldLabel] as string}\n className=\"w-full h-full object-cover\"\n src={item[imageField] as string}\n />\n ) : (\n <div className=\"w-full h-full flex items-center justify-center\">\n <Package className=\"h-4 w-4 text-muted-foreground\" />\n </div>\n )}\n </div>\n )}\n {item[fieldLabel] as string}\n {!isMultiple && isItemSelected(item) && (\n <Check className=\"ml-auto h-4 w-4\" />\n )}\n </CommandItem>\n );\n })}\n </CommandGroup>\n ))}\n {extra && (\n <CommandItem\n className={cn(\n 'transition-all p-2 sticky bottom-0 bg-white hover:bg-accent! aria-selected:bg-accent!'\n )}\n onSelect={() => {\n extraOnClick?.(onChange);\n setOpen?.(false);\n }}\n >\n {extra}\n </CommandItem>\n )}\n {/* Infinite scroll sentinel */}\n {hasMore && (\n <div\n className=\"flex justify-center py-2\"\n ref={loadMoreRef}\n >\n {isLoading && (\n <Loader2 className=\"h-4 w-4 animate-spin text-muted-foreground\" />\n )}\n </div>\n )}\n </ScrollAreaViewport>\n <ScrollBar />\n </ScrollArea>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n {error && error}\n </div>\n </div>\n );\n}\n\nconst DEFAULT_GROUP_ID = 'selector-default-group';\nconst UNDEFINED_GROUP_ID = 'selector-undefined-group';\n\nconst buildGroups = <T,>(items: T[], groupBy?: keyof T): SelectorGroup<T>[] => {\n if (!groupBy) return [{ id: DEFAULT_GROUP_ID, items }];\n\n return Object.values(\n items.reduce<Record<string, SelectorGroup<T>>>((acc, item) => {\n const rawValue = item[groupBy];\n const heading = rawValue == null ? undefined : String(rawValue);\n const groupId = heading ?? UNDEFINED_GROUP_ID;\n\n if (!acc[groupId]) {\n acc[groupId] = { id: groupId, heading, items: [] };\n }\n\n acc[groupId].items.push(item);\n return acc;\n }, {})\n );\n};\n","'use client';\n\nimport { useEffect, useId, useMemo, useState } from 'react';\n\nimport {\n type FieldPath,\n type FieldPathValue,\n type FieldValues,\n type UseControllerProps,\n useController,\n useFormContext,\n} from 'react-hook-form';\nimport { useDebounce } from 'use-debounce';\n\nimport { FormItem, FormMessage } from '@/components/ui/form';\nimport { Selector, type SelectorProps } from '../ui/selector';\n\nimport {\n type Options,\n parseAsArrayOf,\n parseAsString,\n useQueryState,\n} from 'nuqs';\n\nexport type TUseData<T> = (\n search?: string,\n initialParams?: any,\n disabled?: boolean\n) => {\n data: T[];\n loadMore?: () => void;\n hasMore?: boolean;\n isLoading?: boolean;\n};\n\nexport type BaseRemoteSelectorProps<T> = {\n useData: TUseData<T>;\n initialParams?: Parameters<TUseData<T>>[1];\n initialRequest?: boolean;\n forceToggle?: boolean;\n} & Omit<\n SelectorProps<T>,\n 'items' | 'value' | 'onChange' | 'search' | 'onSearch' | 'open' | 'setOpen' | 'loadMore' | 'hasMore' | 'isLoading'\n>;\n\nexport interface RemoteSelectorFieldProps<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> extends UseControllerProps<TFieldValues, TFieldName> {\n disabled?: boolean;\n required?: boolean;\n defaultValue?: FieldPathValue<TFieldValues, TFieldName>;\n onChange?: (value: any) => Promise<void> | void;\n nameValue?: string;\n}\n\nexport function RemoteSelectorField<\n T,\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n name,\n nameValue,\n className,\n required,\n defaultValue,\n onChange: onChangeCallback,\n useData,\n initialParams,\n withPortal = true,\n initialRequest = false,\n forceToggle = false,\n ...props\n}: RemoteSelectorFieldProps<TFieldValues, TFieldName> &\n BaseRemoteSelectorProps<T> & {\n withPortal?: boolean;\n }) {\n type TItem = NonNullable<ReturnType<TUseData<T>>['data']>[number];\n\n const { control, setValue } = useFormContext();\n const { field, fieldState } = useController({\n control,\n name,\n rules: { required: required ? 'Campo obrigatório' : false },\n defaultValue,\n });\n\n const id = useId();\n\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const [searchDebounced] = useDebounce(search, 100, {\n maxWait: 200,\n });\n\n const { data, loadMore, hasMore, isLoading } = useData(\n searchDebounced,\n initialParams,\n !open && !initialRequest\n );\n\n const handleChange = (value: any) => {\n field.onChange(value as TItem);\n if (nameValue && props.fieldKey) {\n if (value) {\n if (Array.isArray(value)) {\n setValue(\n nameValue,\n value.map((item) => item[props.fieldKey] as string)\n );\n } else {\n setValue(nameValue, value[props.fieldKey] as string);\n }\n } else {\n setValue(nameValue, null);\n }\n }\n onChangeCallback?.(value as TItem);\n };\n\n useEffect(() => {\n setOpen(forceToggle);\n }, [forceToggle]);\n\n return (\n <FormItem className={className}>\n <Selector\n {...props}\n withPortal={withPortal}\n error={fieldState?.error && <FormMessage />}\n hasMore={hasMore}\n id={`${id}-${name.replaceAll('.', '-')}`}\n isLoading={isLoading}\n items={data as TItem[]}\n loadMore={loadMore}\n name={name}\n onChange={handleChange}\n onSearch={setSearch}\n open={open}\n required={required}\n search={search}\n setOpen={setOpen}\n value={field.value as TItem}\n />\n </FormItem>\n );\n}\n\nexport interface RemoteSelectorQueryProps<T>\n extends BaseRemoteSelectorProps<T> {\n name: string;\n defaultValue?: string;\n options?: Options;\n onChange?: (value: T | T[] | null) => void;\n}\n\nexport function RemoteSelectorQuery<T>({\n name,\n defaultValue,\n options,\n useData,\n initialParams,\n initialRequest = false,\n forceToggle = false,\n onChange: onChangeCallback,\n fieldKey,\n fieldLabel,\n type = 'single',\n ...props\n}: RemoteSelectorQueryProps<T>) {\n type TItem = NonNullable<ReturnType<TUseData<T>>['data']>[number];\n\n const id = useId();\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const [searchDebounced] = useDebounce(search, 100, {\n maxWait: 200,\n });\n\n const { data, loadMore, hasMore, isLoading } = useData(\n searchDebounced,\n initialParams,\n !open && !initialRequest\n );\n\n useEffect(() => {\n setOpen(forceToggle);\n }, [forceToggle]);\n\n const itemKey = fieldKey || fieldLabel;\n const isMultiple = type === 'multiple';\n const childrenKey = props.treeRender\n ? ((props.fieldChildren || 'children') as keyof TItem)\n : undefined;\n\n const allItems = useMemo(\n () => flattenItems(data as TItem[], childrenKey),\n [data, childrenKey]\n );\n\n const parser = isMultiple\n ? parseAsArrayOf(parseAsString).withDefault([])\n : parseAsString.withDefault(defaultValue ?? '');\n\n const [queryIds, setQueryIds] = useQueryState(\n name,\n parser.withOptions({\n clearOnDefault: true,\n shallow: false,\n ...options,\n })\n );\n\n const value =\n isMultiple && Array.isArray(queryIds)\n ? queryIds\n .map((id) => allItems.find((item) => String(item[itemKey]) === id))\n .filter((item): item is TItem => !!item)\n : allItems.find((item) => String(item[itemKey]) === queryIds) || null;\n\n const handleChange = (newValue: T | T[] | null | undefined) => {\n if (!newValue) {\n setQueryIds(isMultiple ? ([] as any) : null);\n } else if (isMultiple && Array.isArray(newValue)) {\n setQueryIds(newValue.map((item) => String(item[itemKey])) as any);\n } else {\n setQueryIds(String((newValue as T)[itemKey]) as any);\n }\n onChangeCallback?.(newValue as T | T[] | null);\n };\n\n return (\n <Selector\n {...props}\n fieldKey={fieldKey}\n fieldLabel={fieldLabel}\n hasMore={hasMore}\n id={`${id}-${name}`}\n isLoading={isLoading}\n items={data as TItem[]}\n loadMore={loadMore}\n name={name}\n onChange={handleChange}\n onSearch={setSearch}\n open={open}\n search={search}\n setOpen={setOpen}\n type={type}\n value={value as TItem}\n />\n );\n}\n\nconst flattenItems = <T,>(items: T[], childrenKey?: keyof T): T[] => {\n if (!childrenKey) return items;\n\n return items.reduce<T[]>((acc, item) => {\n const children = item[childrenKey];\n const childrenItems = Array.isArray(children) ? (children as T[]) : [];\n\n acc.push(item, ...flattenItems(childrenItems, childrenKey));\n return acc;\n }, []);\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"remote-selector.js","names":["Checkbox","CheckboxPrimitive","CheckboxIndicatorPrimitive","Command","CommandPrimitive","buildGroups","Checkbox","DEFAULT_GROUP_ID","UNDEFINED_GROUP_ID","roots: T[]","Command","TreeItemRenderer","Checkbox","id"],"sources":["../src/components/ui/badge.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/command.tsx","../src/components/ui/tree-item-renderer.tsx","../src/components/ui/selector.tsx","../src/components/remote-selector/remote-selector.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',\n warning: 'border-transparent bg-warning text-warning-foreground',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","'use client';\n\nimport * as React from 'react';\n\nimport {\n Indicator as CheckboxIndicatorPrimitive,\n Checkbox as CheckboxPrimitive,\n} from '@radix-ui/react-checkbox';\n\nimport { cn } from '@/lib/utils';\nimport type { HTMLMotionProps } from 'motion/react';\nimport * as motion from 'motion/react-m';\n\ntype CheckboxProps = React.ComponentProps<typeof CheckboxPrimitive> &\n HTMLMotionProps<'button'>;\n\nfunction Checkbox({ className, onCheckedChange, ...props }: CheckboxProps) {\n const [isChecked, setIsChecked] = React.useState(\n props?.checked ?? props?.defaultChecked ?? false\n );\n\n React.useEffect(() => {\n if (props?.checked !== undefined) setIsChecked(props.checked);\n }, [props?.checked]);\n\n const handleCheckedChange = React.useCallback(\n (checked: boolean) => {\n setIsChecked(checked);\n onCheckedChange?.(checked);\n },\n [onCheckedChange]\n );\n\n return (\n <CheckboxPrimitive {...props} asChild onCheckedChange={handleCheckedChange}>\n <motion.span\n className={cn(\n 'peer size-4 flex items-center justify-center shrink-0 rounded-[3px] border border-primary transition-colors duration-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground cursor-pointer',\n className\n )}\n data-slot=\"checkbox\"\n whileHover={{ scale: 1.05 }}\n whileTap={{ scale: 0.95 }}\n {...props}\n >\n <CheckboxIndicatorPrimitive asChild forceMount>\n <motion.svg\n animate={isChecked ? 'checked' : 'unchecked'}\n className={cn('size-3', isChecked && 'text-primary-foreground')}\n data-slot=\"checkbox-indicator\"\n fill=\"none\"\n initial=\"unchecked\"\n stroke=\"currentColor\"\n strokeWidth=\"3.5\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <motion.path\n d=\"M4.5 12.75l6 6 9-13.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n variants={{\n checked: {\n pathLength: 1,\n opacity: 1,\n transition: {\n duration: 0.2,\n delay: 0.2,\n },\n },\n unchecked: {\n pathLength: 0,\n opacity: 0,\n transition: {\n duration: 0.2,\n },\n },\n }}\n />\n </motion.svg>\n </CheckboxIndicatorPrimitive>\n </motion.span>\n </CheckboxPrimitive>\n );\n}\n\nexport { Checkbox, type CheckboxProps };\n","'use client';\n\nimport * as React from 'react';\n\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n className={cn(\n 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n className\n )}\n data-slot=\"command\"\n {...props}\n />\n );\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n data-slot=\"command-input-wrapper\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n className={cn(\n 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-slot=\"command-input\"\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n className={cn(\n 'max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto',\n className\n )}\n data-slot=\"command-list\"\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n className=\"py-6 text-center text-sm\"\n data-slot=\"command-empty\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n className={cn(\n 'text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',\n className\n )}\n data-slot=\"command-group\"\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n className={cn('bg-border -mx-1 h-px', className)}\n data-slot=\"command-separator\"\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n data-slot=\"command-item\"\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n className={cn(\n 'text-muted-foreground ml-auto text-xs tracking-widest',\n className\n )}\n data-slot=\"command-shortcut\"\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","'use client';\n\nimport { Fragment, memo, useMemo } from 'react';\n\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { Checkbox } from './checkbox';\nimport { CommandItem } from './command';\n\ntype TreeItemRendererProps<T> = {\n items: T[];\n itemKey: keyof T;\n labelKey: keyof T;\n childrenKey: keyof T;\n parentKey?: keyof T;\n groupBy?: keyof T;\n disabledKey?: keyof T;\n isMultiple?: boolean;\n isItemSelected: (item: T) => boolean;\n onSelect: (item: T) => void;\n level?: number;\n};\n\nconst TreeItemRendererComponent = <T,>({\n items,\n itemKey,\n labelKey,\n childrenKey,\n parentKey,\n groupBy,\n disabledKey,\n isMultiple = false,\n isItemSelected,\n onSelect,\n level = 0,\n}: TreeItemRendererProps<T>) => {\n const parsedItems = useMemo(\n () =>\n level === 0\n ? normalizeTreeItems(\n items,\n itemKey,\n childrenKey,\n (parentKey || 'parent') as keyof T\n )\n : items,\n [level, items, itemKey, childrenKey, parentKey]\n );\n\n return (\n <>\n {parsedItems.map((item) => {\n const children = Array.isArray(item[childrenKey])\n ? (item[childrenKey] as T[])\n : [];\n const childrenGroups = buildGroups(children, groupBy);\n\n return (\n <Fragment key={`tree-item-${String(item[itemKey])}-${level}`}>\n <div className=\"relative\">\n {level > 0 && (\n <div className=\"pointer-events-none absolute left-0 top-1/2 -translate-y-1/2 w-4 h-px bg-gray-300\" />\n )}\n <CommandItem\n className={cn(\n 'transition-all p-2',\n level > 0 && 'ml-4',\n !isMultiple &&\n isItemSelected(item) &&\n 'bg-accent! text-accent-foreground'\n )}\n disabled={disabledKey ? Boolean(item[disabledKey]) : false}\n key={`item-${String(item[itemKey])}`}\n onSelect={() => onSelect(item)}\n value={String(item[itemKey])}\n >\n <div\n className={cn(\n 'flex items-center w-full gap-2',\n level > 0 && 'pl-2'\n )}\n >\n {isMultiple && <Checkbox checked={isItemSelected(item)} />}\n <span className=\"truncate\">\n {String(item[labelKey] || '')}\n </span>\n {!isMultiple && isItemSelected(item) && (\n <Check className=\"ml-auto h-4 w-4\" />\n )}\n </div>\n </CommandItem>\n </div>\n <div\n className={cn(\n children.length > 0 &&\n 'ml-4 relative before:absolute before:left-0 before:top-0 before:bottom-4 before:border-l before:border-gray-300'\n )}\n >\n {children.length > 0 && (\n <>\n {childrenGroups.map((group) => (\n <div\n key={`tree-group-${String(item[itemKey])}-${group.id}`}\n >\n {groupBy && (\n <div className=\"px-2 py-1 ml-4 text-[11px] font-medium text-muted-foreground/90 uppercase tracking-wide\">\n {group.heading || 'Outros'}\n </div>\n )}\n <TreeItemRenderer\n childrenKey={childrenKey}\n disabledKey={disabledKey}\n groupBy={groupBy}\n isItemSelected={isItemSelected}\n isMultiple={isMultiple}\n itemKey={itemKey}\n items={group.items}\n labelKey={labelKey}\n level={level + 1}\n onSelect={onSelect}\n parentKey={parentKey}\n />\n </div>\n ))}\n </>\n )}\n </div>\n </Fragment>\n );\n })}\n </>\n );\n};\n\nconst TreeItemRenderer = memo(\n TreeItemRendererComponent\n) as typeof TreeItemRendererComponent;\n\ntype TreeGroup<T> = {\n id: string;\n heading?: string;\n items: T[];\n};\n\nconst DEFAULT_GROUP_ID = 'tree-group-default';\nconst UNDEFINED_GROUP_ID = 'tree-group-undefined';\n\nconst buildGroups = <T,>(items: T[], groupBy?: keyof T): TreeGroup<T>[] => {\n if (!groupBy) return [{ id: DEFAULT_GROUP_ID, items }];\n\n return Object.values(\n items.reduce<Record<string, TreeGroup<T>>>((acc, item) => {\n const rawValue = item[groupBy];\n const heading = rawValue == null ? undefined : String(rawValue);\n const groupId = heading ?? UNDEFINED_GROUP_ID;\n\n if (!acc[groupId]) {\n acc[groupId] = { id: groupId, heading, items: [] };\n }\n\n acc[groupId].items.push(item);\n return acc;\n }, {})\n );\n};\n\nconst normalizeTreeItems = <T,>(\n items: T[],\n itemKey: keyof T,\n childrenKey: keyof T,\n parentKey: keyof T\n): T[] => {\n if (items.length === 0) return items;\n\n const hasNestedChildren = items.some(\n (item) =>\n Array.isArray(item[childrenKey]) &&\n (item[childrenKey] as unknown[]).length > 0\n );\n\n if (hasNestedChildren) return items;\n\n const hasParentField = items.some((item) =>\n Object.prototype.hasOwnProperty.call(\n item as object,\n parentKey as PropertyKey\n )\n );\n\n if (!hasParentField) return items;\n\n const nodes = new Map<string, T>();\n const roots: T[] = [];\n\n for (const item of items) {\n nodes.set(String(item[itemKey]), {\n ...(item as object),\n [childrenKey]: [],\n } as T);\n }\n\n for (const item of items) {\n const node = nodes.get(String(item[itemKey]));\n if (!node) continue;\n\n const parentValue = item[parentKey] as unknown;\n const hasParent =\n parentValue !== null &&\n parentValue !== undefined &&\n String(parentValue) !== '';\n\n if (!hasParent) {\n roots.push(node);\n continue;\n }\n\n const parentNode = nodes.get(String(parentValue));\n if (!parentNode) {\n roots.push(node);\n continue;\n }\n\n (parentNode[childrenKey] as unknown[]).push(node);\n }\n\n return roots;\n};\n\nexport default TreeItemRenderer;\n","'use client';\n\nimport { useEffect, useMemo } from 'react';\n\nimport type { PopoverProps } from '@radix-ui/react-popover';\nimport { ScrollArea, ScrollAreaViewport } from '@radix-ui/react-scroll-area';\n\nimport { Check, ChevronsUpDown, Loader2, Package, X } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { useInView } from 'react-intersection-observer';\nimport { Badge } from './badge';\nimport { Button } from './button';\nimport { Checkbox } from './checkbox';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from './command';\nimport { InputHelp } from './input-help';\nimport { Popover, PopoverContent, PopoverTrigger } from './popover';\nimport { ScrollBar } from './scroll-area';\nimport TreeItemRenderer from './tree-item-renderer';\n\nexport type SelectorOption = {\n id: string | number;\n name: string;\n value?: any;\n children?: SelectorOption[];\n disabled?: boolean;\n};\n\nexport type SelectorProps<T> = {\n type?: 'single' | 'multiple';\n value?: T | T[];\n onChange?: (item: T | T[] | undefined | null) => void;\n search?: string;\n onSearch?: (search: string) => void;\n placeholder?: string;\n empty?: React.ReactNode;\n items: T[];\n fieldLabel: keyof T;\n withPortal?: boolean;\n fieldKey?: keyof T;\n groupBy?: keyof T;\n treeRender?: boolean;\n fieldChildren?: keyof T;\n fieldParent?: keyof T;\n fieldDisabled?: keyof T;\n disabled?: boolean;\n searchPlaceholder?: string;\n label?: string;\n name?: string;\n className?: string;\n required?: boolean;\n error?: React.ReactNode;\n selectFirstIsOne?: boolean;\n help?: string;\n extra?: string;\n extraOnClick?: (\n onChange?: (item: T | T[] | undefined | null) => void\n ) => Promise<void> | void;\n open?: boolean;\n setOpen?: (open: boolean) => void;\n maxVisibleBadges?: number;\n id?: string;\n imageField?: keyof T;\n disabledField?: keyof T;\n onDisabledClick?: (item: T) => void;\n itemRightElement?: (item: T) => React.ReactNode;\n loadMore?: () => void;\n hasMore?: boolean;\n isLoading?: boolean;\n} & PopoverProps;\n\ntype SelectorGroup<T> = {\n id: string;\n heading?: string;\n items: T[];\n};\n\nexport function Selector<T>({\n type = 'single',\n value,\n onChange,\n search,\n onSearch,\n items,\n withPortal = true,\n label,\n placeholder,\n fieldLabel,\n fieldKey,\n groupBy,\n treeRender = false,\n fieldChildren,\n fieldParent,\n fieldDisabled,\n searchPlaceholder,\n name,\n empty = 'Nenhuma opção encontrada...',\n disabled = false,\n className,\n required,\n error,\n selectFirstIsOne,\n help,\n extra,\n extraOnClick,\n open,\n setOpen,\n maxVisibleBadges = 3,\n id,\n imageField,\n disabledField,\n onDisabledClick,\n itemRightElement,\n loadMore,\n hasMore,\n isLoading,\n ...props\n}: SelectorProps<T>) {\n const itemKey = fieldKey || fieldLabel;\n const childrenKey = (fieldChildren || 'children') as keyof T;\n const parentKey = (fieldParent || 'parent') as keyof T;\n\n const isMultiple = type === 'multiple';\n const selectedItems = isMultiple && Array.isArray(value) ? value : [];\n const singleValue = !isMultiple && !Array.isArray(value) ? value : undefined;\n const itensGroups = useMemo(\n () => buildGroups(items, groupBy),\n [items, groupBy]\n );\n\n // Infinite scroll\n const { ref: loadMoreRef, inView } = useInView({\n threshold: 0,\n rootMargin: '100px',\n skip: !hasMore || isLoading,\n });\n\n useEffect(() => {\n if (inView && hasMore && loadMore && !isLoading) {\n loadMore();\n }\n }, [inView, hasMore, loadMore, isLoading]);\n\n const isItemSelected = (item: T): boolean => {\n if (isMultiple) {\n return selectedItems.some(\n (selected) => selected[itemKey] === item[itemKey]\n );\n }\n return singleValue?.[itemKey] === item[itemKey];\n };\n\n const handleItemSelect = (item: T) => {\n if (isMultiple) {\n const isSelected = isItemSelected(item);\n const newValue = isSelected\n ? selectedItems.filter(\n (selected) => selected[itemKey] !== item[itemKey]\n )\n : [...selectedItems, item];\n onChange?.(newValue.length > 0 ? newValue : null);\n } else {\n onChange?.(item);\n setOpen?.(false);\n }\n };\n\n useEffect(() => {\n if (selectFirstIsOne && items && items.length === 1 && !value) {\n onChange?.(items[0] as any);\n }\n }, [items]);\n\n return (\n <div\n className={cn('w-full flex flex-col gap-1', className)}\n id={id || `selector-${name}`}\n >\n {label && (\n <div className=\"flex items-end gap-1.5\">\n <label\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n htmlFor={id || name}\n >\n {label}:\n {required && (\n <span className=\"text-red-500 text-lg leading-px\">*</span>\n )}\n </label>\n\n <InputHelp help={help} name={name} />\n </div>\n )}\n <div className=\"flex flex-col gap-1\">\n <Popover onOpenChange={setOpen} open={open} {...props}>\n <PopoverTrigger asChild>\n <Button\n aria-expanded={open}\n aria-label=\"Carregando opções...\"\n className={cn(\n 'mt-0! justify-between w-full hover:bg-transparent cursor-pointer',\n !value && 'text-muted-foreground',\n error && 'border-destructive'\n )}\n disabled={disabled}\n id={id || name}\n role=\"combobox\"\n variant=\"outline\"\n >\n {isMultiple && selectedItems.length > 0 ? (\n <div className=\"flex gap-1 flex-1 min-w-0 overflow-hidden\">\n {selectedItems\n .slice(0, maxVisibleBadges)\n .map((item, index) => (\n <Badge\n className=\"truncate shrink min-w-0\"\n key={`badge-${item[itemKey]}-${index}`}\n variant=\"secondary\"\n >\n <span className=\"truncate block\">\n {item[fieldLabel] as string}\n </span>\n </Badge>\n ))}\n {selectedItems.length > maxVisibleBadges && (\n <Badge className=\"shrink-0\" variant=\"secondary\">\n +{selectedItems.length - maxVisibleBadges}\n </Badge>\n )}\n </div>\n ) : (\n <span className=\"truncate\">\n {!isMultiple && singleValue\n ? (singleValue[fieldLabel] as string)\n : placeholder || `Selecione a ${label?.toLowerCase()}`}\n </span>\n )}\n <div className=\"flex items-center shrink-0\">\n <div className=\"relative size-4\">\n {((isMultiple && selectedItems.length > 0) ||\n (!isMultiple && singleValue !== undefined)) && (\n <div\n className=\"absolute left-1/2 -translate-x-1/2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onChange?.(null);\n }}\n >\n <X className=\"size-4\" />\n </div>\n )}\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-(--radix-popover-trigger-width) max-w-2xl p-0\"\n withPortal={withPortal}\n >\n <Command shouldFilter={false}>\n <CommandInput\n onValueChange={onSearch}\n placeholder={\n searchPlaceholder ||\n `Pesquise por uma ${label?.toLowerCase()}`\n }\n value={search}\n />\n <CommandList\n className=\"max-h-none overflow-visible\"\n onWheel={(e) => e.stopPropagation()}\n >\n <ScrollArea className=\"h-fit max-h-75\" id=\"scroll\">\n <ScrollAreaViewport className=\"w-full h-fit max-h-75 relative\">\n <CommandEmpty className=\"text-sm p-3 text-foreground/60\">\n {empty}\n </CommandEmpty>\n {treeRender\n ? items.length > 0 && (\n <CommandGroup>\n <TreeItemRenderer\n childrenKey={childrenKey}\n disabledKey={fieldDisabled}\n groupBy={groupBy}\n isItemSelected={isItemSelected}\n isMultiple={isMultiple}\n itemKey={itemKey}\n items={items}\n labelKey={fieldLabel}\n onSelect={handleItemSelect}\n parentKey={parentKey}\n />\n </CommandGroup>\n )\n : itensGroups.length > 0 &&\n itensGroups.some((group) => group.items.length > 0) &&\n itensGroups.map((group) => (\n <CommandGroup\n heading={\n group.heading ||\n (group.id === UNDEFINED_GROUP_ID && 'Outros')\n }\n key={`group-${group.id}`}\n >\n {group.items.map((item) => {\n const isDisabled = disabledField ? !!item[disabledField] : false;\n return (\n <CommandItem\n className={cn(\n 'transition-all p-2',\n isMultiple && 'gap-2',\n !isMultiple &&\n isItemSelected(item) &&\n 'bg-accent! text-accent-foreground',\n isDisabled && !onDisabledClick && !itemRightElement && 'opacity-50'\n )}\n key={`item-${item[itemKey]}`}\n onSelect={() => {\n if (isDisabled && onDisabledClick) {\n onDisabledClick(item);\n return;\n }\n if (isDisabled) return;\n handleItemSelect(item);\n }}\n value={String(item[itemKey])}\n >\n {isMultiple && (\n <Checkbox checked={isItemSelected(item)} />\n )}\n {isMultiple && imageField && (\n <div className=\"relative w-8 h-8 overflow-hidden rounded-md border bg-muted shrink-0\">\n {item[imageField] ? (\n <img\n alt={item[fieldLabel] as string}\n src={item[imageField] as string}\n className=\"w-full h-full object-cover\"\n />\n ) : (\n <div className=\"w-full h-full flex items-center justify-center\">\n <Package className=\"h-4 w-4 text-muted-foreground\" />\n </div>\n )}\n </div>\n )}\n <span className={cn('flex-1 text-left min-w-0 pr-2', isDisabled && 'opacity-50')}>\n {item[fieldLabel] as string}\n </span>\n {itemRightElement?.(item)}\n {!isMultiple && isItemSelected(item) && !isDisabled && (\n <Check className=\"ml-auto h-4 w-4 shrink-0\" />\n )}\n </CommandItem>\n );\n })}\n </CommandGroup>\n ))}\n {extra && (\n <CommandItem\n className={cn(\n 'transition-all p-2 sticky bottom-0 bg-white hover:bg-accent! aria-selected:bg-accent!'\n )}\n onSelect={() => {\n extraOnClick?.(onChange);\n setOpen?.(false);\n }}\n >\n {extra}\n </CommandItem>\n )}\n {/* Infinite scroll sentinel */}\n {hasMore && (\n <div\n className=\"flex justify-center py-2\"\n ref={loadMoreRef}\n >\n {isLoading && (\n <Loader2 className=\"h-4 w-4 animate-spin text-muted-foreground\" />\n )}\n </div>\n )}\n </ScrollAreaViewport>\n <ScrollBar />\n </ScrollArea>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n {error && error}\n </div>\n </div>\n );\n}\n\nconst DEFAULT_GROUP_ID = 'selector-default-group';\nconst UNDEFINED_GROUP_ID = 'selector-undefined-group';\n\nconst buildGroups = <T,>(items: T[], groupBy?: keyof T): SelectorGroup<T>[] => {\n if (!groupBy) return [{ id: DEFAULT_GROUP_ID, items }];\n\n return Object.values(\n items.reduce<Record<string, SelectorGroup<T>>>((acc, item) => {\n const rawValue = item[groupBy];\n const heading = rawValue == null ? undefined : String(rawValue);\n const groupId = heading ?? UNDEFINED_GROUP_ID;\n\n if (!acc[groupId]) {\n acc[groupId] = { id: groupId, heading, items: [] };\n }\n\n acc[groupId].items.push(item);\n return acc;\n }, {})\n );\n};\n","'use client';\n\nimport { useEffect, useId, useMemo, useState } from 'react';\n\nimport {\n type FieldPath,\n type FieldPathValue,\n type FieldValues,\n type UseControllerProps,\n useController,\n useFormContext,\n} from 'react-hook-form';\nimport { useDebounce } from 'use-debounce';\n\nimport { FormItem, FormMessage } from '@/components/ui/form';\nimport { Selector, type SelectorProps } from '../ui/selector';\n\nimport {\n type Options,\n parseAsArrayOf,\n parseAsString,\n useQueryState,\n} from 'nuqs';\n\nexport type TUseData<T> = (\n search?: string,\n initialParams?: any,\n disabled?: boolean\n) => {\n data: T[];\n loadMore?: () => void;\n hasMore?: boolean;\n isLoading?: boolean;\n};\n\nexport type BaseRemoteSelectorProps<T> = {\n useData: TUseData<T>;\n initialParams?: Parameters<TUseData<T>>[1];\n initialRequest?: boolean;\n forceToggle?: boolean;\n} & Omit<\n SelectorProps<T>,\n 'items' | 'value' | 'onChange' | 'search' | 'onSearch' | 'open' | 'setOpen' | 'loadMore' | 'hasMore' | 'isLoading'\n>;\n\nexport interface RemoteSelectorFieldProps<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> extends UseControllerProps<TFieldValues, TFieldName> {\n disabled?: boolean;\n required?: boolean;\n defaultValue?: FieldPathValue<TFieldValues, TFieldName>;\n onChange?: (value: any) => Promise<void> | void;\n nameValue?: string;\n}\n\nexport function RemoteSelectorField<\n T,\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n name,\n nameValue,\n className,\n required,\n defaultValue,\n onChange: onChangeCallback,\n useData,\n initialParams,\n withPortal = true,\n initialRequest = false,\n forceToggle = false,\n ...props\n}: RemoteSelectorFieldProps<TFieldValues, TFieldName> &\n BaseRemoteSelectorProps<T> & {\n withPortal?: boolean;\n }) {\n type TItem = NonNullable<ReturnType<TUseData<T>>['data']>[number];\n\n const { control, setValue } = useFormContext();\n const { field, fieldState } = useController({\n control,\n name,\n rules: { required: required ? 'Campo obrigatório' : false },\n defaultValue,\n });\n\n const id = useId();\n\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const [searchDebounced] = useDebounce(search, 100, {\n maxWait: 200,\n });\n\n const { data, loadMore, hasMore, isLoading } = useData(\n searchDebounced,\n initialParams,\n !open && !initialRequest\n );\n\n const handleChange = (value: any) => {\n field.onChange(value as TItem);\n if (nameValue && props.fieldKey) {\n if (value) {\n if (Array.isArray(value)) {\n setValue(\n nameValue,\n value.map((item) => item[props.fieldKey] as string)\n );\n } else {\n setValue(nameValue, value[props.fieldKey] as string);\n }\n } else {\n setValue(nameValue, null);\n }\n }\n onChangeCallback?.(value as TItem);\n };\n\n useEffect(() => {\n setOpen(forceToggle);\n }, [forceToggle]);\n\n return (\n <FormItem className={className}>\n <Selector\n {...props}\n withPortal={withPortal}\n error={fieldState?.error && <FormMessage />}\n hasMore={hasMore}\n id={`${id}-${name.replaceAll('.', '-')}`}\n isLoading={isLoading}\n items={data as TItem[]}\n loadMore={loadMore}\n name={name}\n onChange={handleChange}\n onSearch={setSearch}\n open={open}\n required={required}\n search={search}\n setOpen={setOpen}\n value={field.value as TItem}\n />\n </FormItem>\n );\n}\n\nexport interface RemoteSelectorQueryProps<T>\n extends BaseRemoteSelectorProps<T> {\n name: string;\n defaultValue?: string;\n options?: Options;\n onChange?: (value: T | T[] | null) => void;\n}\n\nexport function RemoteSelectorQuery<T>({\n name,\n defaultValue,\n options,\n useData,\n initialParams,\n initialRequest = false,\n forceToggle = false,\n onChange: onChangeCallback,\n fieldKey,\n fieldLabel,\n type = 'single',\n ...props\n}: RemoteSelectorQueryProps<T>) {\n type TItem = NonNullable<ReturnType<TUseData<T>>['data']>[number];\n\n const id = useId();\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const [searchDebounced] = useDebounce(search, 100, {\n maxWait: 200,\n });\n\n const { data, loadMore, hasMore, isLoading } = useData(\n searchDebounced,\n initialParams,\n !open && !initialRequest\n );\n\n useEffect(() => {\n setOpen(forceToggle);\n }, [forceToggle]);\n\n const itemKey = fieldKey || fieldLabel;\n const isMultiple = type === 'multiple';\n const childrenKey = props.treeRender\n ? ((props.fieldChildren || 'children') as keyof TItem)\n : undefined;\n\n const allItems = useMemo(\n () => flattenItems(data as TItem[], childrenKey),\n [data, childrenKey]\n );\n\n const parser = isMultiple\n ? parseAsArrayOf(parseAsString).withDefault([])\n : parseAsString.withDefault(defaultValue ?? '');\n\n const [queryIds, setQueryIds] = useQueryState(\n name,\n parser.withOptions({\n clearOnDefault: true,\n shallow: false,\n ...options,\n })\n );\n\n const value =\n isMultiple && Array.isArray(queryIds)\n ? queryIds\n .map((id) => allItems.find((item) => String(item[itemKey]) === id))\n .filter((item): item is TItem => !!item)\n : allItems.find((item) => String(item[itemKey]) === queryIds) || null;\n\n const handleChange = (newValue: T | T[] | null | undefined) => {\n if (!newValue) {\n setQueryIds(isMultiple ? ([] as any) : null);\n } else if (isMultiple && Array.isArray(newValue)) {\n setQueryIds(newValue.map((item) => String(item[itemKey])) as any);\n } else {\n setQueryIds(String((newValue as T)[itemKey]) as any);\n }\n onChangeCallback?.(newValue as T | T[] | null);\n };\n\n return (\n <Selector\n {...props}\n fieldKey={fieldKey}\n fieldLabel={fieldLabel}\n hasMore={hasMore}\n id={`${id}-${name}`}\n isLoading={isLoading}\n items={data as TItem[]}\n loadMore={loadMore}\n name={name}\n onChange={handleChange}\n onSearch={setSearch}\n open={open}\n search={search}\n setOpen={setOpen}\n type={type}\n value={value as TItem}\n />\n );\n}\n\nconst flattenItems = <T,>(items: T[], childrenKey?: keyof T): T[] => {\n if (!childrenKey) return items;\n\n return items.reduce<T[]>((acc, item) => {\n const children = item[childrenKey];\n const childrenItems = Array.isArray(children) ? (children as T[]) : [];\n\n acc.push(item, ...flattenItems(childrenItems, childrenKey));\n return acc;\n }, []);\n};\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { n as Options$1 } from "./with-mask-BLZS7b9k.js";
2
2
  import { FieldPath, FieldPathValue, FieldValues, UseControllerProps } from "react-hook-form";
3
- import * as react_jsx_runtime6 from "react/jsx-runtime";
3
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
4
  import { Options } from "nuqs";
5
5
 
6
6
  //#region src/components/text-field/TextField.d.ts
@@ -57,7 +57,7 @@ declare function InputText({
57
57
  name,
58
58
  onChange,
59
59
  ...props
60
- }: InputTextProps): react_jsx_runtime6.JSX.Element;
60
+ }: InputTextProps): react_jsx_runtime0.JSX.Element;
61
61
  interface TextFieldProps<TFieldValues extends FieldValues = FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends UseControllerProps<TFieldValues, TFieldName> {
62
62
  disabled?: boolean;
63
63
  required?: boolean;
@@ -75,7 +75,7 @@ declare function TextField<TFieldValues extends FieldValues = FieldValues, TFiel
75
75
  transform,
76
76
  prefix,
77
77
  ...props
78
- }: TextFieldProps<TFieldValues, TFieldName> & Omit<InputTextProps, 'onChange'>): react_jsx_runtime6.JSX.Element;
78
+ }: TextFieldProps<TFieldValues, TFieldName> & Omit<InputTextProps, 'onChange'>): react_jsx_runtime0.JSX.Element;
79
79
  interface QueryTextFieldProps extends Omit<InputTextProps, 'onChange'> {
80
80
  name: string;
81
81
  defaultValue?: string;
@@ -87,7 +87,7 @@ declare function QueryTextField({
87
87
  defaultValue,
88
88
  options,
89
89
  ...props
90
- }: QueryTextFieldProps): react_jsx_runtime6.JSX.Element;
90
+ }: QueryTextFieldProps): react_jsx_runtime0.JSX.Element;
91
91
  interface CookieTextFieldProps extends InputTextProps {
92
92
  name: string;
93
93
  maxAge?: number;
@@ -97,7 +97,7 @@ declare function CookieTextField({
97
97
  maxAge,
98
98
  onChange,
99
99
  ...inputProps
100
- }: CookieTextFieldProps): react_jsx_runtime6.JSX.Element;
100
+ }: CookieTextFieldProps): react_jsx_runtime0.JSX.Element;
101
101
  //#endregion
102
102
  export { CookieTextField, type CookieTextFieldProps, InputText, type InputTextProps, QueryTextField, type QueryTextFieldProps, TextField, type TextFieldProps };
103
103
  //# sourceMappingURL=text-field.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from "react";
2
- import * as react_jsx_runtime16 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime10 from "react/jsx-runtime";
3
3
  import { Item, Root } from "@radix-ui/react-toggle-group";
4
4
  import { VariantProps } from "class-variance-authority";
5
5
  import * as class_variance_authority_types0 from "class-variance-authority/types";
@@ -28,7 +28,7 @@ declare function ToggleGroup({
28
28
  transition,
29
29
  activeClassName,
30
30
  ...props
31
- }: ToggleGroupProps): react_jsx_runtime16.JSX.Element;
31
+ }: ToggleGroupProps): react_jsx_runtime10.JSX.Element;
32
32
  //#endregion
33
33
  //#region src/components/toggle-field/ToggleField.d.ts
34
34
  type ToggleOption = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "maquinaweb-ui",
3
- "version": "2.61.0",
3
+ "version": "2.62.0",
4
4
  "description": "A minimal React component library",
5
5
  "type": "module",
6
6
  "sideEffects": false,