@snksergio/design-system 0.54.0 → 0.56.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.
- package/dist-lib/chunks/{avatar-DAmZ7fBZ.cjs → avatar-CMWPg3A3.cjs} +157 -70
- package/dist-lib/chunks/avatar-CMWPg3A3.cjs.map +1 -0
- package/dist-lib/chunks/{avatar-FPbG1TRy.mjs → avatar-CZRLkTxt.mjs} +214 -127
- package/dist-lib/chunks/avatar-CZRLkTxt.mjs.map +1 -0
- package/dist-lib/chunks/{input-tjIT8HNE.mjs → input-BQABJR2N.mjs} +2 -2
- package/dist-lib/chunks/{input-tjIT8HNE.mjs.map → input-BQABJR2N.mjs.map} +1 -1
- package/dist-lib/chunks/{input-Ci_2-5Te.cjs → input-DqaLFxER.cjs} +2 -2
- package/dist-lib/chunks/{input-Ci_2-5Te.cjs.map → input-DqaLFxER.cjs.map} +1 -1
- package/dist-lib/chunks/{kpi-delta-BRTgTaO1.mjs → kpi-delta-Bfs_oVpq.mjs} +3 -3
- package/dist-lib/chunks/{kpi-delta-BRTgTaO1.mjs.map → kpi-delta-Bfs_oVpq.mjs.map} +1 -1
- package/dist-lib/chunks/{kpi-delta-1-gsPFvU.cjs → kpi-delta-wEzw5zSu.cjs} +3 -3
- package/dist-lib/chunks/{kpi-delta-1-gsPFvU.cjs.map → kpi-delta-wEzw5zSu.cjs.map} +1 -1
- package/dist-lib/chunks/{page-header-DrKDiVFN.cjs → page-header-sValhWca.cjs} +2 -2
- package/dist-lib/chunks/{page-header-DrKDiVFN.cjs.map → page-header-sValhWca.cjs.map} +1 -1
- package/dist-lib/chunks/{page-header-DdWp9c-r.mjs → page-header-t5hFIp7o.mjs} +2 -2
- package/dist-lib/chunks/{page-header-DdWp9c-r.mjs.map → page-header-t5hFIp7o.mjs.map} +1 -1
- package/dist-lib/chunks/{panel-DsOKm4Im.mjs → panel-C3puLY_V.mjs} +5 -5
- package/dist-lib/chunks/{panel-DsOKm4Im.mjs.map → panel-C3puLY_V.mjs.map} +1 -1
- package/dist-lib/chunks/{panel-CTbiCa0_.cjs → panel-DmnK2n5_.cjs} +5 -5
- package/dist-lib/chunks/{panel-CTbiCa0_.cjs.map → panel-DmnK2n5_.cjs.map} +1 -1
- package/dist-lib/chunks/{sheet-DIpYkRYS.mjs → sheet-Bjjo4ZaT.mjs} +2 -2
- package/dist-lib/chunks/{sheet-DIpYkRYS.mjs.map → sheet-Bjjo4ZaT.mjs.map} +1 -1
- package/dist-lib/chunks/{sheet-rg6uupt1.cjs → sheet-BrYriaDN.cjs} +2 -2
- package/dist-lib/chunks/{sheet-rg6uupt1.cjs.map → sheet-BrYriaDN.cjs.map} +1 -1
- package/dist-lib/chunks/{toggle-group-BTnqY_nt.cjs → toggle-group-DeoBmogo.cjs} +2 -89
- package/dist-lib/chunks/toggle-group-DeoBmogo.cjs.map +1 -0
- package/dist-lib/chunks/{toggle-group-BYmj8142.mjs → toggle-group-XMgZgL-H.mjs} +90 -177
- package/dist-lib/chunks/toggle-group-XMgZgL-H.mjs.map +1 -0
- package/dist-lib/chunks/{useTheme-Dh3POjCr.cjs → useTheme-BTjHuaT2.cjs} +225 -84
- package/dist-lib/chunks/useTheme-BTjHuaT2.cjs.map +1 -0
- package/dist-lib/chunks/{useTheme-Bk8AYqLr.mjs → useTheme-caPM-I73.mjs} +267 -126
- package/dist-lib/chunks/useTheme-caPM-I73.mjs.map +1 -0
- package/dist-lib/index.cjs +2535 -11
- package/dist-lib/index.cjs.map +1 -1
- package/dist-lib/index.mjs +2956 -432
- package/dist-lib/index.mjs.map +1 -1
- package/dist-lib/preview/chat.cjs +3 -3
- package/dist-lib/preview/chat.mjs +3 -3
- package/dist-lib/preview/clientes.cjs +6 -6
- package/dist-lib/preview/clientes.mjs +6 -6
- package/dist-lib/preview/dashboard.cjs +4 -4
- package/dist-lib/preview/dashboard.mjs +4 -4
- package/dist-lib/shadcn.cjs +11 -11
- package/dist-lib/shadcn.mjs +153 -153
- package/dist-lib/src/components/index.d.ts +2 -0
- package/dist-lib/src/components/index.d.ts.map +1 -1
- package/dist-lib/src/components/ui/Breadcrumb/breadcrumb-switcher.d.ts +35 -0
- package/dist-lib/src/components/ui/Breadcrumb/breadcrumb-switcher.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Breadcrumb/breadcrumb-switcher.styles.d.ts +94 -0
- package/dist-lib/src/components/ui/Breadcrumb/breadcrumb-switcher.styles.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Breadcrumb/breadcrumb-switcher.types.d.ts +50 -0
- package/dist-lib/src/components/ui/Breadcrumb/breadcrumb-switcher.types.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Breadcrumb/breadcrumb.d.ts +32 -0
- package/dist-lib/src/components/ui/Breadcrumb/breadcrumb.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Breadcrumb/breadcrumb.styles.d.ts +111 -0
- package/dist-lib/src/components/ui/Breadcrumb/breadcrumb.styles.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Breadcrumb/breadcrumb.types.d.ts +40 -0
- package/dist-lib/src/components/ui/Breadcrumb/breadcrumb.types.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Breadcrumb/index.d.ts +21 -0
- package/dist-lib/src/components/ui/Breadcrumb/index.d.ts.map +1 -0
- package/dist-lib/src/components/ui/DataTable/parts/data-table-cell-addons.styles.d.ts +3 -3
- package/dist-lib/src/components/ui/Header/header-breadcrumb.d.ts +13 -3
- package/dist-lib/src/components/ui/Header/header-breadcrumb.d.ts.map +1 -1
- package/dist-lib/src/components/ui/Header/header.styles.d.ts +12 -33
- package/dist-lib/src/components/ui/Header/header.styles.d.ts.map +1 -1
- package/dist-lib/src/components/ui/Header/header.types.d.ts +17 -0
- package/dist-lib/src/components/ui/Header/header.types.d.ts.map +1 -1
- package/dist-lib/src/components/ui/Scheduler/hooks/layout.d.ts +165 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/layout.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-media-query.d.ts +21 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-media-query.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-dnd.d.ts +41 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-dnd.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-filter.d.ts +35 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-filter.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-keyboard.d.ts +47 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-keyboard.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-state.d.ts +44 -0
- package/dist-lib/src/components/ui/Scheduler/hooks/use-scheduler-state.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/index.d.ts +14 -0
- package/dist-lib/src/components/ui/Scheduler/index.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/parts/draggable-event.d.ts +30 -0
- package/dist-lib/src/components/ui/Scheduler/parts/draggable-event.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/parts/mini-month.d.ts +28 -0
- package/dist-lib/src/components/ui/Scheduler/parts/mini-month.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/parts/scheduler-event.d.ts +53 -0
- package/dist-lib/src/components/ui/Scheduler/parts/scheduler-event.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/parts/scheduler-filter-panel.d.ts +41 -0
- package/dist-lib/src/components/ui/Scheduler/parts/scheduler-filter-panel.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/parts/scheduler-toolbar.d.ts +31 -0
- package/dist-lib/src/components/ui/Scheduler/parts/scheduler-toolbar.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/scheduler.d.ts +44 -0
- package/dist-lib/src/components/ui/Scheduler/scheduler.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/scheduler.styles.d.ts +820 -0
- package/dist-lib/src/components/ui/Scheduler/scheduler.styles.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/scheduler.types.d.ts +285 -0
- package/dist-lib/src/components/ui/Scheduler/scheduler.types.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/views/list.d.ts +33 -0
- package/dist-lib/src/components/ui/Scheduler/views/list.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/views/month.d.ts +47 -0
- package/dist-lib/src/components/ui/Scheduler/views/month.d.ts.map +1 -0
- package/dist-lib/src/components/ui/Scheduler/views/time-grid.d.ts +48 -0
- package/dist-lib/src/components/ui/Scheduler/views/time-grid.d.ts.map +1 -0
- package/package.json +210 -210
- package/dist-lib/chunks/avatar-DAmZ7fBZ.cjs.map +0 -1
- package/dist-lib/chunks/avatar-FPbG1TRy.mjs.map +0 -1
- package/dist-lib/chunks/toggle-group-BTnqY_nt.cjs.map +0 -1
- package/dist-lib/chunks/toggle-group-BYmj8142.mjs.map +0 -1
- package/dist-lib/chunks/useTheme-Bk8AYqLr.mjs.map +0 -1
- package/dist-lib/chunks/useTheme-Dh3POjCr.cjs.map +0 -1
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
const jsxRuntime = require("react/jsx-runtime");
|
|
3
3
|
const React = require("react");
|
|
4
4
|
const tailwindVariants = require("tailwind-variants");
|
|
5
|
-
const
|
|
5
|
+
const reactSlot = require("@radix-ui/react-slot");
|
|
6
6
|
const lucideReact = require("lucide-react");
|
|
7
|
-
const SheetPrimitive = require("@radix-ui/react-dialog");
|
|
8
7
|
const PopoverPrimitive = require("@radix-ui/react-popover");
|
|
8
|
+
const cmdk = require("cmdk");
|
|
9
|
+
const SheetPrimitive = require("@radix-ui/react-dialog");
|
|
9
10
|
const classVarianceAuthority = require("class-variance-authority");
|
|
10
11
|
const DropdownMenuPrimitive = require("@radix-ui/react-dropdown-menu");
|
|
11
12
|
const TooltipPrimitive = require("@radix-ui/react-tooltip");
|
|
@@ -30,8 +31,8 @@ function _interopNamespaceDefault(e) {
|
|
|
30
31
|
return Object.freeze(n);
|
|
31
32
|
}
|
|
32
33
|
const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
|
|
33
|
-
const SheetPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SheetPrimitive);
|
|
34
34
|
const PopoverPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(PopoverPrimitive);
|
|
35
|
+
const SheetPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SheetPrimitive);
|
|
35
36
|
const DropdownMenuPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(DropdownMenuPrimitive);
|
|
36
37
|
const TooltipPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(TooltipPrimitive);
|
|
37
38
|
const CollapsiblePrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(CollapsiblePrimitive);
|
|
@@ -460,6 +461,151 @@ function Spinner() {
|
|
|
460
461
|
}
|
|
461
462
|
);
|
|
462
463
|
}
|
|
464
|
+
const Breadcrumb = React__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("nav", { ref, "aria-label": "breadcrumb", ...props }));
|
|
465
|
+
Breadcrumb.displayName = "Breadcrumb";
|
|
466
|
+
const BreadcrumbList = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
467
|
+
"ol",
|
|
468
|
+
{
|
|
469
|
+
ref,
|
|
470
|
+
className: cn(
|
|
471
|
+
"flex flex-wrap items-center gap-gp-sm break-words text-body-md text-fg-muted sm:gap-gp-lg",
|
|
472
|
+
className
|
|
473
|
+
),
|
|
474
|
+
...props
|
|
475
|
+
}
|
|
476
|
+
));
|
|
477
|
+
BreadcrumbList.displayName = "BreadcrumbList";
|
|
478
|
+
const BreadcrumbItem = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
479
|
+
"li",
|
|
480
|
+
{
|
|
481
|
+
ref,
|
|
482
|
+
className: cn("inline-flex items-center gap-gp-sm", className),
|
|
483
|
+
...props
|
|
484
|
+
}
|
|
485
|
+
));
|
|
486
|
+
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
487
|
+
const BreadcrumbLink = React__namespace.forwardRef(({ asChild, className, ...props }, ref) => {
|
|
488
|
+
const Comp = asChild ? reactSlot.Slot : "a";
|
|
489
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
490
|
+
Comp,
|
|
491
|
+
{
|
|
492
|
+
ref,
|
|
493
|
+
className: cn("transition-colors hover:text-fg-default", className),
|
|
494
|
+
...props
|
|
495
|
+
}
|
|
496
|
+
);
|
|
497
|
+
});
|
|
498
|
+
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
499
|
+
const BreadcrumbPage = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
500
|
+
"span",
|
|
501
|
+
{
|
|
502
|
+
ref,
|
|
503
|
+
role: "link",
|
|
504
|
+
"aria-disabled": "true",
|
|
505
|
+
"aria-current": "page",
|
|
506
|
+
className: cn("font-normal text-fg-default", className),
|
|
507
|
+
...props
|
|
508
|
+
}
|
|
509
|
+
));
|
|
510
|
+
BreadcrumbPage.displayName = "BreadcrumbPage";
|
|
511
|
+
const BreadcrumbSeparator = ({
|
|
512
|
+
children,
|
|
513
|
+
className,
|
|
514
|
+
...props
|
|
515
|
+
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
516
|
+
"li",
|
|
517
|
+
{
|
|
518
|
+
role: "presentation",
|
|
519
|
+
"aria-hidden": "true",
|
|
520
|
+
className: cn("[&>svg]:w-3.5 [&>svg]:h-3.5 text-fg-subtle", className),
|
|
521
|
+
...props,
|
|
522
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, {})
|
|
523
|
+
}
|
|
524
|
+
);
|
|
525
|
+
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
526
|
+
const BreadcrumbEllipsis = ({
|
|
527
|
+
className,
|
|
528
|
+
...props
|
|
529
|
+
}) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
530
|
+
"span",
|
|
531
|
+
{
|
|
532
|
+
role: "presentation",
|
|
533
|
+
"aria-hidden": "true",
|
|
534
|
+
className: cn("flex h-9 w-9 items-center justify-center text-fg-subtle", className),
|
|
535
|
+
...props,
|
|
536
|
+
children: [
|
|
537
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "h-4 w-4" }),
|
|
538
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "More" })
|
|
539
|
+
]
|
|
540
|
+
}
|
|
541
|
+
);
|
|
542
|
+
BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
|
|
543
|
+
const Popover = PopoverPrimitive__namespace.Root;
|
|
544
|
+
const PopoverTrigger = PopoverPrimitive__namespace.Trigger;
|
|
545
|
+
const PopoverAnchor = PopoverPrimitive__namespace.Anchor;
|
|
546
|
+
const PopoverClose = PopoverPrimitive__namespace.Close;
|
|
547
|
+
const POPOVER_MOBILE_SHEET = [
|
|
548
|
+
"max-md:w-full max-md:min-w-0 max-md:max-w-none",
|
|
549
|
+
"max-md:!max-h-[92vh]",
|
|
550
|
+
"max-md:rounded-b-none max-md:rounded-t-[12px]",
|
|
551
|
+
"max-md:border-x-0 max-md:border-b-0",
|
|
552
|
+
"max-md:outline-none max-md:shadow-none",
|
|
553
|
+
// Respiro de 20px (pad-3xl) no rodapé pra o conteúdo (footer/última seção)
|
|
554
|
+
// não colar na borda inferior do device quando vira sheet.
|
|
555
|
+
"max-md:pb-pad-3xl",
|
|
556
|
+
"max-md:data-[state=open]:zoom-in-100 max-md:data-[state=closed]:zoom-out-100",
|
|
557
|
+
"max-md:data-[state=open]:slide-in-from-bottom-12 max-md:data-[state=closed]:slide-out-to-bottom-12"
|
|
558
|
+
].join(" ");
|
|
559
|
+
const PopoverSheetBackdrop = () => /* @__PURE__ */ jsxRuntime.jsx(
|
|
560
|
+
"div",
|
|
561
|
+
{
|
|
562
|
+
"aria-hidden": "true",
|
|
563
|
+
className: "fixed inset-0 z-[55] bg-overlay-scrim pointer-events-auto md:hidden animate-in fade-in-0 duration-150"
|
|
564
|
+
}
|
|
565
|
+
);
|
|
566
|
+
const PopoverContent = React__namespace.forwardRef(
|
|
567
|
+
({ className, align = "center", sideOffset = 6, disablePortal, mobileSheet = true, ...props }, ref) => {
|
|
568
|
+
const content = /* @__PURE__ */ jsxRuntime.jsx(
|
|
569
|
+
PopoverPrimitive__namespace.Content,
|
|
570
|
+
{
|
|
571
|
+
ref,
|
|
572
|
+
align,
|
|
573
|
+
sideOffset,
|
|
574
|
+
"data-mobile-sheet": mobileSheet ? "" : void 0,
|
|
575
|
+
className: cn(
|
|
576
|
+
"relative z-50",
|
|
577
|
+
// Unificado com DropdownMenu/Select: bg-bg-dropdown (frosted no dark)
|
|
578
|
+
// + border-border-default + outline-float. O `before` pseudo-element
|
|
579
|
+
// aplica o blur backdrop (necessário pra bg-bg-dropdown semi-transparente
|
|
580
|
+
// render correto no dark mode).
|
|
581
|
+
"bg-bg-dropdown",
|
|
582
|
+
"border border-border-default rounded-[12px] shadow-sh-lg outline-float",
|
|
583
|
+
"before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150",
|
|
584
|
+
"text-fg-default",
|
|
585
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
586
|
+
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
587
|
+
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
588
|
+
"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2",
|
|
589
|
+
"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
590
|
+
mobileSheet && POPOVER_MOBILE_SHEET,
|
|
591
|
+
className
|
|
592
|
+
),
|
|
593
|
+
...props
|
|
594
|
+
}
|
|
595
|
+
);
|
|
596
|
+
if (disablePortal) {
|
|
597
|
+
return mobileSheet ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
598
|
+
/* @__PURE__ */ jsxRuntime.jsx(PopoverSheetBackdrop, {}),
|
|
599
|
+
content
|
|
600
|
+
] }) : content;
|
|
601
|
+
}
|
|
602
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
603
|
+
mobileSheet && /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(PopoverSheetBackdrop, {}) }),
|
|
604
|
+
/* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: content })
|
|
605
|
+
] });
|
|
606
|
+
}
|
|
607
|
+
);
|
|
608
|
+
PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
|
|
463
609
|
const Dialog = SheetPrimitive__namespace.Root;
|
|
464
610
|
const DialogTrigger = SheetPrimitive__namespace.Trigger;
|
|
465
611
|
const DialogPortal = SheetPrimitive__namespace.Portal;
|
|
@@ -696,72 +842,6 @@ const CommandShortcut = ({
|
|
|
696
842
|
);
|
|
697
843
|
};
|
|
698
844
|
CommandShortcut.displayName = "CommandShortcut";
|
|
699
|
-
const Popover = PopoverPrimitive__namespace.Root;
|
|
700
|
-
const PopoverTrigger = PopoverPrimitive__namespace.Trigger;
|
|
701
|
-
const PopoverAnchor = PopoverPrimitive__namespace.Anchor;
|
|
702
|
-
const PopoverClose = PopoverPrimitive__namespace.Close;
|
|
703
|
-
const POPOVER_MOBILE_SHEET = [
|
|
704
|
-
"max-md:w-full max-md:min-w-0 max-md:max-w-none",
|
|
705
|
-
"max-md:!max-h-[92vh]",
|
|
706
|
-
"max-md:rounded-b-none max-md:rounded-t-[12px]",
|
|
707
|
-
"max-md:border-x-0 max-md:border-b-0",
|
|
708
|
-
"max-md:outline-none max-md:shadow-none",
|
|
709
|
-
// Respiro de 20px (pad-3xl) no rodapé pra o conteúdo (footer/última seção)
|
|
710
|
-
// não colar na borda inferior do device quando vira sheet.
|
|
711
|
-
"max-md:pb-pad-3xl",
|
|
712
|
-
"max-md:data-[state=open]:zoom-in-100 max-md:data-[state=closed]:zoom-out-100",
|
|
713
|
-
"max-md:data-[state=open]:slide-in-from-bottom-12 max-md:data-[state=closed]:slide-out-to-bottom-12"
|
|
714
|
-
].join(" ");
|
|
715
|
-
const PopoverSheetBackdrop = () => /* @__PURE__ */ jsxRuntime.jsx(
|
|
716
|
-
"div",
|
|
717
|
-
{
|
|
718
|
-
"aria-hidden": "true",
|
|
719
|
-
className: "fixed inset-0 z-[55] bg-overlay-scrim pointer-events-auto md:hidden animate-in fade-in-0 duration-150"
|
|
720
|
-
}
|
|
721
|
-
);
|
|
722
|
-
const PopoverContent = React__namespace.forwardRef(
|
|
723
|
-
({ className, align = "center", sideOffset = 6, disablePortal, mobileSheet = true, ...props }, ref) => {
|
|
724
|
-
const content = /* @__PURE__ */ jsxRuntime.jsx(
|
|
725
|
-
PopoverPrimitive__namespace.Content,
|
|
726
|
-
{
|
|
727
|
-
ref,
|
|
728
|
-
align,
|
|
729
|
-
sideOffset,
|
|
730
|
-
"data-mobile-sheet": mobileSheet ? "" : void 0,
|
|
731
|
-
className: cn(
|
|
732
|
-
"relative z-50",
|
|
733
|
-
// Unificado com DropdownMenu/Select: bg-bg-dropdown (frosted no dark)
|
|
734
|
-
// + border-border-default + outline-float. O `before` pseudo-element
|
|
735
|
-
// aplica o blur backdrop (necessário pra bg-bg-dropdown semi-transparente
|
|
736
|
-
// render correto no dark mode).
|
|
737
|
-
"bg-bg-dropdown",
|
|
738
|
-
"border border-border-default rounded-[12px] shadow-sh-lg outline-float",
|
|
739
|
-
"before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150",
|
|
740
|
-
"text-fg-default",
|
|
741
|
-
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
742
|
-
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
743
|
-
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
744
|
-
"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2",
|
|
745
|
-
"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
746
|
-
mobileSheet && POPOVER_MOBILE_SHEET,
|
|
747
|
-
className
|
|
748
|
-
),
|
|
749
|
-
...props
|
|
750
|
-
}
|
|
751
|
-
);
|
|
752
|
-
if (disablePortal) {
|
|
753
|
-
return mobileSheet ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
754
|
-
/* @__PURE__ */ jsxRuntime.jsx(PopoverSheetBackdrop, {}),
|
|
755
|
-
content
|
|
756
|
-
] }) : content;
|
|
757
|
-
}
|
|
758
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
759
|
-
mobileSheet && /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(PopoverSheetBackdrop, {}) }),
|
|
760
|
-
/* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: content })
|
|
761
|
-
] });
|
|
762
|
-
}
|
|
763
|
-
);
|
|
764
|
-
PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
|
|
765
845
|
const inputGroupVariants = classVarianceAuthority.cva(
|
|
766
846
|
[
|
|
767
847
|
"group/input-group relative flex w-full items-center",
|
|
@@ -1194,6 +1274,13 @@ AvatarFallback.displayName = AvatarPrimitive__namespace.Fallback.displayName;
|
|
|
1194
1274
|
exports.Avatar = Avatar;
|
|
1195
1275
|
exports.AvatarFallback = AvatarFallback;
|
|
1196
1276
|
exports.AvatarImage = AvatarImage;
|
|
1277
|
+
exports.Breadcrumb = Breadcrumb;
|
|
1278
|
+
exports.BreadcrumbEllipsis = BreadcrumbEllipsis;
|
|
1279
|
+
exports.BreadcrumbItem = BreadcrumbItem;
|
|
1280
|
+
exports.BreadcrumbLink = BreadcrumbLink;
|
|
1281
|
+
exports.BreadcrumbList = BreadcrumbList;
|
|
1282
|
+
exports.BreadcrumbPage = BreadcrumbPage;
|
|
1283
|
+
exports.BreadcrumbSeparator = BreadcrumbSeparator;
|
|
1197
1284
|
exports.Button = Button;
|
|
1198
1285
|
exports.Collapsible = Collapsible;
|
|
1199
1286
|
exports.CollapsibleContent = CollapsibleContent;
|
|
@@ -1255,4 +1342,4 @@ exports.inputGroupInputVariants = inputGroupInputVariants;
|
|
|
1255
1342
|
exports.inputGroupTextareaVariants = inputGroupTextareaVariants;
|
|
1256
1343
|
exports.inputGroupVariants = inputGroupVariants;
|
|
1257
1344
|
exports.tv = tv;
|
|
1258
|
-
//# sourceMappingURL=avatar-
|
|
1345
|
+
//# sourceMappingURL=avatar-CMWPg3A3.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-CMWPg3A3.cjs","sources":["../../src/lib/utils.ts","../../src/utils/tv.ts","../../src/components/ui/Button/button.styles.ts","../../src/components/ui/Button/button.tsx","../../src/components/shadcn/breadcrumb.tsx","../../src/components/shadcn/popover.tsx","../../src/components/shadcn/dialog.tsx","../../src/components/shadcn/command.tsx","../../src/components/shadcn/input-group.tsx","../../src/components/shadcn/dropdown-menu.tsx","../../src/components/shadcn/tooltip.tsx","../../src/components/shadcn/collapsible.tsx","../../src/components/shadcn/avatar.tsx"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\r\nimport { extendTailwindMerge } from \"tailwind-merge\";\r\n\r\n/**\r\n * tw-merge configurado pra reconhecer:\r\n *\r\n * 1) Presets tipográficos do iGreen DS como `font-size` (e não text-color).\r\n * Sem isso, `text-title-md` e `text-fg-default` colidem e um é removido.\r\n *\r\n * 2) Prefixos DS (pad-*, sp-*, gp-*, radius-*, sh-*, form-*) como conflitantes\r\n * com utilitários nativos do Tailwind. Sem isso, `p-pad-4xl` + `p-0` no cn()\r\n * deixava AMBOS no className final (24px + 0 = 24px ganhava).\r\n */\r\n\r\n/** Padding/Margin spacing: pad-* (padding contexts), sp-* (geral) */\r\nconst isDsPad = (v: string) => /^(pad|sp)-/.test(v);\r\n/** Gap: gp-* */\r\nconst isDsGap = (v: string) => /^gp-/.test(v);\r\n/** Border-radius: radius-* */\r\nconst isDsRadius = (v: string) => /^radius-/.test(v);\r\n/** Shadow: sh-* */\r\nconst isDsShadow = (v: string) => /^sh-/.test(v);\r\n/** Form heights: form-* (min-h, h, w, size) */\r\nconst isDsForm = (v: string) => /^form-/.test(v);\r\n\r\nconst twMerge = extendTailwindMerge({\r\n extend: {\r\n classGroups: {\r\n \"font-size\": [\r\n {\r\n // Lista 1:1 com tokens/brands/default/semantic/typography.ts.\r\n // Manter sincronizado com src/utils/tv.ts. Ver L-016.\r\n text: [\r\n // Displays (fluid clamp)\r\n \"display-2xl\", \"display-xl\", \"display-lg\", \"display-md\",\r\n // Headings (xs estático, sm-xl fluid clamp)\r\n \"heading-xl\", \"heading-lg\", \"heading-md\", \"heading-sm\", \"heading-xs\",\r\n // Titles (weight 600 default)\r\n \"title-lg\", \"title-md\", \"title-sm\",\r\n // Body (xs/sm = weight 500 interactive; md-2xl = 400 corrido)\r\n \"body-2xl\", \"body-xl\", \"body-lg\", \"body-md\", \"body-sm\", \"body-xs\",\r\n // Captions (weight 400)\r\n \"caption-md\", \"caption-sm\", \"caption-xs\",\r\n // Stat (número de métrica/KPI — estático, bold, leading tight)\r\n \"stat-xl\", \"stat-lg\", \"stat-md\", \"stat-sm\",\r\n // Code (mono regular)\r\n \"code-md\", \"code-sm\",\r\n ],\r\n },\r\n ],\r\n\r\n /* ── Padding ──────────────────────────────────────────────────────── */\r\n p: [{ p: [isDsPad] }],\r\n px: [{ px: [isDsPad] }],\r\n py: [{ py: [isDsPad] }],\r\n pt: [{ pt: [isDsPad] }],\r\n pr: [{ pr: [isDsPad] }],\r\n pb: [{ pb: [isDsPad] }],\r\n pl: [{ pl: [isDsPad] }],\r\n ps: [{ ps: [isDsPad] }],\r\n pe: [{ pe: [isDsPad] }],\r\n\r\n /* ── Margin (usa mesmo sp-*) ──────────────────────────────────────── */\r\n m: [{ m: [isDsPad] }],\r\n mx: [{ mx: [isDsPad] }],\r\n my: [{ my: [isDsPad] }],\r\n mt: [{ mt: [isDsPad] }],\r\n mr: [{ mr: [isDsPad] }],\r\n mb: [{ mb: [isDsPad] }],\r\n ml: [{ ml: [isDsPad] }],\r\n ms: [{ ms: [isDsPad] }],\r\n me: [{ me: [isDsPad] }],\r\n\r\n /* ── Inset / position (top/right/bottom/left) ─────────────────────── */\r\n inset: [{ inset: [isDsPad] }],\r\n \"inset-x\": [{ \"inset-x\": [isDsPad] }],\r\n \"inset-y\": [{ \"inset-y\": [isDsPad] }],\r\n \"top\": [{ top: [isDsPad] }],\r\n \"right\": [{ right: [isDsPad] }],\r\n \"bottom\": [{ bottom: [isDsPad] }],\r\n \"left\": [{ left: [isDsPad] }],\r\n \"start\": [{ start: [isDsPad] }],\r\n \"end\": [{ end: [isDsPad] }],\r\n\r\n /* ── Gap ──────────────────────────────────────────────────────────── */\r\n gap: [{ gap: [isDsGap] }],\r\n \"gap-x\": [{ \"gap-x\": [isDsGap] }],\r\n \"gap-y\": [{ \"gap-y\": [isDsGap] }],\r\n\r\n /* ── Rounded (todas as cantos) ────────────────────────────────────── */\r\n rounded: [{ rounded: [isDsRadius] }],\r\n \"rounded-s\": [{ \"rounded-s\": [isDsRadius] }],\r\n \"rounded-e\": [{ \"rounded-e\": [isDsRadius] }],\r\n \"rounded-t\": [{ \"rounded-t\": [isDsRadius] }],\r\n \"rounded-r\": [{ \"rounded-r\": [isDsRadius] }],\r\n \"rounded-b\": [{ \"rounded-b\": [isDsRadius] }],\r\n \"rounded-l\": [{ \"rounded-l\": [isDsRadius] }],\r\n \"rounded-ss\": [{ \"rounded-ss\": [isDsRadius] }],\r\n \"rounded-se\": [{ \"rounded-se\": [isDsRadius] }],\r\n \"rounded-ee\": [{ \"rounded-ee\": [isDsRadius] }],\r\n \"rounded-es\": [{ \"rounded-es\": [isDsRadius] }],\r\n \"rounded-tl\": [{ \"rounded-tl\": [isDsRadius] }],\r\n \"rounded-tr\": [{ \"rounded-tr\": [isDsRadius] }],\r\n \"rounded-br\": [{ \"rounded-br\": [isDsRadius] }],\r\n \"rounded-bl\": [{ \"rounded-bl\": [isDsRadius] }],\r\n\r\n /* ── Shadow ───────────────────────────────────────────────────────── */\r\n shadow: [{ shadow: [isDsShadow] }],\r\n\r\n /* ── Form sizes (min-h, h, w, size) ───────────────────────────────── */\r\n \"min-h\": [{ \"min-h\": [isDsForm] }],\r\n h: [{ h: [isDsForm] }],\r\n w: [{ w: [isDsForm] }],\r\n size: [{ size: [isDsForm] }],\r\n },\r\n },\r\n});\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","// src/utils/tv.ts\r\n// tv() customizado que ensina o tailwind-merge a reconhecer\r\n// os presets tipográficos do iGreen como font-size, não text-color.\r\nimport { tv as tvBase, type TVConfig } from \"tailwind-variants\";\r\n\r\n// Objeto de config — NÃO é o resultado de extendTailwindMerge()\r\n// TV3 recebe o config diretamente e aplica o merge internamente\r\nconst twMergeConfig = {\r\n extend: {\r\n classGroups: {\r\n \"font-size\": [\r\n {\r\n text: [\r\n // Displays (fluid clamp)\r\n \"display-2xl\", \"display-xl\", \"display-lg\", \"display-md\",\r\n // Headings (xs estático, sm-xl fluid clamp)\r\n \"heading-xl\", \"heading-lg\", \"heading-md\", \"heading-sm\", \"heading-xs\",\r\n // Titles (weight 600 default)\r\n \"title-lg\", \"title-md\", \"title-sm\",\r\n // Body (xs/sm = weight 500 interactive; md-2xl = 400 corrido)\r\n \"body-2xl\", \"body-xl\", \"body-lg\", \"body-md\", \"body-sm\", \"body-xs\",\r\n // Captions (weight 400)\r\n \"caption-md\", \"caption-sm\", \"caption-xs\",\r\n // Stat (número de métrica/KPI — estático, bold, leading tight)\r\n \"stat-xl\", \"stat-lg\", \"stat-md\", \"stat-sm\",\r\n // Code (mono regular)\r\n \"code-md\", \"code-sm\",\r\n ],\r\n },\r\n ],\r\n },\r\n },\r\n};\r\n\r\nexport const tv: typeof tvBase = (options, config) =>\r\n tvBase(options, {\r\n ...config,\r\n twMergeConfig,\r\n } as TVConfig);\r\n\r\nexport type { VariantProps } from \"tailwind-variants\";\r\n","import { tv, type VariantProps } from \"@/utils/tv\";\r\n\r\n/**\r\n * Button styles — V3 tokens (alinhado com /design-and-table-v2)\r\n *\r\n * Specs base:\r\n * - font-size 13px (text-body-md font-medium = 0.8125rem / 600)\r\n * - border-radius 10px (rounded-radius-lg)\r\n * - secondary usa fg-secondary\r\n * - rings cor-pura via ring.{brand|danger|success|warning|secondary}\r\n *\r\n * Variants color: primary/secondary/critical/success/warning\r\n * - primary → bg-brand / fg-brand / border-brand\r\n * - critical → bg-danger / fg-danger / border-danger-muted\r\n * - secondary → neutros (bg-muted, fg-secondary, border-default)\r\n *\r\n * Variants visual: filled/outline/soft/ghost\r\n *\r\n * Sizes mantidas (largura/espaçamento como estavam).\r\n *\r\n * Disabled: opacity-50 (v3 não tem bg-disabled token).\r\n */\r\nexport const buttonVariants = tv({\r\n base: [\r\n \"inline-flex items-center justify-center\",\r\n \"select-none whitespace-nowrap\",\r\n \"focus-visible:outline-none\",\r\n \"border border-transparent\",\r\n \"text-body-sm font-semibold leading-none\", // 13px / 600 — alinhado com sandbox btn\r\n \"[&_svg]:shrink-0\", // SVG não diminui; tamanho controlado por size\r\n \"transition-all duration-200 ease-out\",\r\n \"cursor-pointer\",\r\n \"focus-visible:ring-4\",\r\n ],\r\n\r\n variants: {\r\n color: {\r\n primary: \"focus-visible:ring-ring-brand\",\r\n secondary: \"focus-visible:ring-ring-secondary\",\r\n critical: \"focus-visible:ring-ring-danger\",\r\n success: \"focus-visible:ring-ring-success\",\r\n warning: \"focus-visible:ring-ring-warning\",\r\n },\r\n\r\n variant: {\r\n filled: \"\",\r\n outline: \"\",\r\n soft: \"\",\r\n ghost: \"bg-transparent\",\r\n },\r\n\r\n size: {\r\n // h28 / pad 10 / gap 6 / radius 8 / icon 12\r\n \"2xs\": \"min-h-form-xs px-pad-lg gap-gp-sm rounded-radius-md [&_svg]:size-[12px]\",\r\n // h32 / pad 12 / gap 6 / radius 8 / icon 14\r\n xs: \"min-h-form-sm px-pad-xl gap-gp-sm rounded-radius-md [&_svg]:size-[14px]\",\r\n // h36 / pad 12 / gap 6 / radius 10 / icon 14\r\n sm: \"min-h-form-md px-pad-xl gap-gp-sm rounded-radius-lg [&_svg]:size-[14px]\",\r\n // h40 / pad 16 / gap 6 / radius 10 / icon 14 (alinhado com sandbox Exportar)\r\n md: \"min-h-form-lg px-pad-2xl gap-gp-sm rounded-radius-lg [&_svg]:size-[14px]\",\r\n // h44 / pad 16 / gap 8 / radius 10 / icon 16\r\n lg: \"min-h-form-xl px-pad-2xl gap-gp-md rounded-radius-lg [&_svg]:size-[16px]\",\r\n\r\n // Icon buttons — width = height (square). Regra: SVG +2px vs versão com label\r\n // (precisa preencher mais o quadrado sem o texto carregando peso visual).\r\n \"icon-2xs\": \"size-form-xs rounded-radius-md p-0 [&_svg]:size-[14px]\", // 28×28 / +2 (12→14)\r\n \"icon-xs\": \"size-form-sm rounded-radius-md p-0 [&_svg]:size-[16px]\", // 32×32 / +2 (14→16)\r\n \"icon-sm\": \"size-form-md rounded-radius-lg p-0 [&_svg]:size-[16px]\", // 36×36 / +2 (14→16)\r\n \"icon-md\": \"size-form-lg rounded-radius-lg p-0 [&_svg]:size-[16px]\", // 40×40 / +2 (14→16)\r\n \"icon-lg\": \"size-form-xl rounded-radius-lg p-0 [&_svg]:size-[18px]\", // 44×44 / +2 (16→18)\r\n },\r\n\r\n fullWidth: {\r\n true: \"w-full flex-1\",\r\n },\r\n\r\n /**\r\n * Shape do botão:\r\n * - rounded (default): mantém o radius da `size` (varia por tamanho)\r\n * - pill: força `rounded-full` (override com `!` pra ganhar do size)\r\n */\r\n shape: {\r\n rounded: \"\",\r\n pill: \"!rounded-full\",\r\n },\r\n\r\n disabled: {\r\n true: \"pointer-events-none opacity-50\",\r\n },\r\n },\r\n\r\n compoundVariants: [\r\n // ── Primary (brand) ─────────────────────────────────────────────\r\n {\r\n color: \"primary\", variant: \"filled\",\r\n class: \"bg-bg-brand text-fg-on-brand hover:bg-bg-brand-hover\",\r\n },\r\n {\r\n color: \"primary\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-brand text-fg-brand shadow-sh-sm hover:bg-bg-brand-subtle hover:border-transparent hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"primary\", variant: \"soft\",\r\n class: \"bg-bg-brand-subtle text-fg-brand hover:bg-bg-brand-subtle-hover\",\r\n },\r\n {\r\n color: \"primary\", variant: \"ghost\",\r\n class: \"text-fg-brand hover:bg-bg-brand-subtle\",\r\n },\r\n\r\n // ── Secondary (neutro) ──────────────────────────────────────────\r\n {\r\n color: \"secondary\", variant: \"filled\",\r\n class: \"bg-bg-muted text-fg-muted hover:bg-bg-muted-hover hover:text-fg-default\",\r\n },\r\n {\r\n // Outline alinhado com `.btn.tbl-tool-btn` do design-and-table-v2:\r\n // light = bg-surface + border-subtle + fg-default + shadow-sm (mantém no hover)\r\n // dark = bg-muted + border-input + fg-muted + sem shadow\r\n color: \"secondary\", variant: \"outline\",\r\n class: [\r\n \"bg-bg-surface border-border-subtle text-fg-default shadow-sh-sm\",\r\n \"dark:bg-bg-muted dark:border-border-input dark:text-fg-muted dark:shadow-sh-none\",\r\n \"hover:bg-bg-muted-hover hover:text-fg-default\",\r\n \"dark:hover:bg-bg-muted-hover dark:hover:text-fg-default\",\r\n ].join(\" \"),\r\n },\r\n {\r\n color: \"secondary\", variant: \"soft\",\r\n class: \"bg-bg-muted text-fg-muted hover:bg-bg-muted-hover hover:text-fg-default\",\r\n },\r\n {\r\n color: \"secondary\", variant: \"ghost\",\r\n class: \"text-fg-muted hover:bg-bg-muted hover:text-fg-default\",\r\n },\r\n\r\n // ── Critical (danger) ───────────────────────────────────────────\r\n {\r\n color: \"critical\", variant: \"filled\",\r\n class: \"bg-bg-danger text-fg-on-danger hover:bg-bg-danger-hover\",\r\n },\r\n {\r\n color: \"critical\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-danger-muted text-fg-danger shadow-sh-sm hover:bg-bg-danger-muted hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"critical\", variant: \"soft\",\r\n class: \"bg-bg-danger-muted text-fg-danger hover:bg-bg-danger-muted-hover\",\r\n },\r\n {\r\n color: \"critical\", variant: \"ghost\",\r\n class: \"text-fg-danger hover:bg-bg-danger-muted\",\r\n },\r\n\r\n // ── Success ─────────────────────────────────────────────────────\r\n {\r\n color: \"success\", variant: \"filled\",\r\n class: \"bg-bg-success text-fg-on-success hover:bg-bg-success-hover\",\r\n },\r\n {\r\n color: \"success\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-success-muted text-fg-success shadow-sh-sm hover:bg-bg-success-muted hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"success\", variant: \"soft\",\r\n class: \"bg-bg-success-muted text-fg-success hover:bg-bg-success-muted-hover\",\r\n },\r\n {\r\n color: \"success\", variant: \"ghost\",\r\n class: \"text-fg-success hover:bg-bg-success-muted\",\r\n },\r\n\r\n // ── Warning ─────────────────────────────────────────────────────\r\n {\r\n color: \"warning\", variant: \"filled\",\r\n class: \"bg-bg-warning text-fg-on-warning hover:bg-bg-warning-hover\",\r\n },\r\n {\r\n color: \"warning\", variant: \"outline\",\r\n class: \"bg-bg-surface border-border-warning-muted text-fg-warning shadow-sh-sm hover:bg-bg-warning-muted hover:shadow-sh-none\",\r\n },\r\n {\r\n color: \"warning\", variant: \"soft\",\r\n class: \"bg-bg-warning-muted text-fg-warning hover:bg-bg-warning-muted-hover\",\r\n },\r\n {\r\n color: \"warning\", variant: \"ghost\",\r\n class: \"text-fg-warning hover:bg-bg-warning-muted\",\r\n },\r\n\r\n // ── Disabled — SEMPRE por último ────────────────────────────────\r\n { disabled: true, class: \"pointer-events-none opacity-50\" },\r\n ],\r\n\r\n defaultVariants: {\r\n color: \"primary\",\r\n variant: \"filled\",\r\n size: \"md\",\r\n shape: \"rounded\",\r\n },\r\n});\r\n\r\nexport type ButtonVariantProps = VariantProps<typeof buttonVariants>;\r\n","import { forwardRef } from \"react\";\nimport type { ButtonProps } from \"./button.types\";\nimport { buttonVariants } from \"./button.styles\";\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n function Button(\n {\n color,\n variant,\n size,\n shape,\n fullWidth,\n loading = false,\n disabled = false,\n iconLeft,\n iconRight,\n children,\n className,\n type = \"button\",\n ...rest\n },\n ref,\n ) {\n const isDisabled = disabled || loading;\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={isDisabled}\n className={buttonVariants({\n color,\n variant,\n size,\n shape,\n fullWidth,\n disabled: isDisabled,\n className,\n })}\n {...rest}\n >\n {loading && <Spinner />}\n {!loading && iconLeft}\n {children}\n {!loading && iconRight}\n </button>\n );\n },\n);\n\nfunction Spinner() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"animate-spin\"\n >\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray=\"28\"\n strokeDashoffset=\"8\"\n className=\"opacity-70\"\n />\n </svg>\n );\n}\n","import * as React from \"react\"\r\nimport { Slot } from \"@radix-ui/react-slot\"\r\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Breadcrumb = React.forwardRef<\r\n HTMLElement,\r\n React.ComponentPropsWithoutRef<\"nav\"> & {\r\n separator?: React.ReactNode\r\n }\r\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\r\nBreadcrumb.displayName = \"Breadcrumb\"\r\n\r\nconst BreadcrumbList = React.forwardRef<\r\n HTMLOListElement,\r\n React.ComponentPropsWithoutRef<\"ol\">\r\n>(({ className, ...props }, ref) => (\r\n <ol\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-wrap items-center gap-gp-sm break-words text-body-md text-fg-muted sm:gap-gp-lg\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbList.displayName = \"BreadcrumbList\"\r\n\r\nconst BreadcrumbItem = React.forwardRef<\r\n HTMLLIElement,\r\n React.ComponentPropsWithoutRef<\"li\">\r\n>(({ className, ...props }, ref) => (\r\n <li\r\n ref={ref}\r\n className={cn(\"inline-flex items-center gap-gp-sm\", className)}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\r\n\r\nconst BreadcrumbLink = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentPropsWithoutRef<\"a\"> & {\r\n asChild?: boolean\r\n }\r\n>(({ asChild, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"a\"\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n className={cn(\"transition-colors hover:text-fg-default\", className)}\r\n {...props}\r\n />\r\n )\r\n})\r\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\r\n\r\nconst BreadcrumbPage = React.forwardRef<\r\n HTMLSpanElement,\r\n React.ComponentPropsWithoutRef<\"span\">\r\n>(({ className, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n role=\"link\"\r\n aria-disabled=\"true\"\r\n aria-current=\"page\"\r\n className={cn(\"font-normal text-fg-default\", className)}\r\n {...props}\r\n />\r\n))\r\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\r\n\r\nconst BreadcrumbSeparator = ({\r\n children,\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"li\">) => (\r\n <li\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n className={cn(\"[&>svg]:w-3.5 [&>svg]:h-3.5 text-fg-subtle\", className)}\r\n {...props}\r\n >\r\n {children ?? <ChevronRight />}\r\n </li>\r\n)\r\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\r\n\r\nconst BreadcrumbEllipsis = ({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"span\">) => (\r\n <span\r\n role=\"presentation\"\r\n aria-hidden=\"true\"\r\n className={cn(\"flex h-9 w-9 items-center justify-center text-fg-subtle\", className)}\r\n {...props}\r\n >\r\n <MoreHorizontal className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">More</span>\r\n </span>\r\n)\r\nBreadcrumbEllipsis.displayName = \"BreadcrumbElipssis\"\r\n\r\nexport {\r\n Breadcrumb,\r\n BreadcrumbList,\r\n BreadcrumbItem,\r\n BreadcrumbLink,\r\n BreadcrumbPage,\r\n BreadcrumbSeparator,\r\n BreadcrumbEllipsis,\r\n}\r\n","import * as React from \"react\";\r\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * Popover — primitives baixo nível pra menus flutuantes (Cols, Sort, Filter, Views).\r\n *\r\n * Visual unificado com DropdownMenu/Select: bg-bg-dropdown (frosted-glass no\r\n * dark via `before:backdrop-blur-2xl`), border-default, radius 12px, shadow-lg\r\n * + outline-float (halo). Padronizado pra evitar inconsistência visual entre\r\n * menus de ação (DropdownMenu) e menus de configuração (Popover de Filtros,\r\n * Sort, Cols, Views).\r\n *\r\n * Não tem `Item` próprio — o consumer monta o conteúdo do popover livremente.\r\n * Pra menus de ação com items semânticos, prefira `DropdownMenu`.\r\n */\r\n\r\nconst Popover = PopoverPrimitive.Root;\r\nconst PopoverTrigger = PopoverPrimitive.Trigger;\r\nconst PopoverAnchor = PopoverPrimitive.Anchor;\r\nconst PopoverClose = PopoverPrimitive.Close;\r\n\r\n/* ── Mobile sheet (<md) ───────────────────────────────────────────────\r\n * Em telas <md o conteúdo vira sheet bottom-up colado nas bordas: full-width,\r\n * só cantos superiores arredondados, flush, sem outline/shadow, cap 92vh.\r\n * O wrapper do Radix Popper é reposicionado no globals.css via a regra\r\n * `[data-radix-popper-content-wrapper]:has([data-mobile-sheet])` (mesma usada\r\n * pelo DropdownMenu). Animação: neutraliza o zoom e desliza de baixo. */\r\nconst POPOVER_MOBILE_SHEET = [\r\n \"max-md:w-full max-md:min-w-0 max-md:max-w-none\",\r\n \"max-md:!max-h-[92vh]\",\r\n \"max-md:rounded-b-none max-md:rounded-t-[12px]\",\r\n \"max-md:border-x-0 max-md:border-b-0\",\r\n \"max-md:outline-none max-md:shadow-none\",\r\n // Respiro de 20px (pad-3xl) no rodapé pra o conteúdo (footer/última seção)\r\n // não colar na borda inferior do device quando vira sheet.\r\n \"max-md:pb-pad-3xl\",\r\n \"max-md:data-[state=open]:zoom-in-100 max-md:data-[state=closed]:zoom-out-100\",\r\n \"max-md:data-[state=open]:slide-in-from-bottom-12 max-md:data-[state=closed]:slide-out-to-bottom-12\",\r\n].join(\" \");\r\n\r\n/** Backdrop suave — só mobile (md:hidden). Toque fecha via dismiss do Radix. */\r\nconst PopoverSheetBackdrop = () => (\r\n <div\r\n aria-hidden=\"true\"\r\n className=\"fixed inset-0 z-[55] bg-overlay-scrim pointer-events-auto md:hidden animate-in fade-in-0 duration-150\"\r\n />\r\n);\r\n\r\ntype PopoverContentProps = React.ComponentPropsWithoutRef<\r\n typeof PopoverPrimitive.Content\r\n> & {\r\n /**\r\n * Renderiza o conteúdo SEM `<Portal>`. Útil quando o conteúdo interno usa\r\n * libs como dnd-kit que conflitam com o transform do Floating UI do Portal.\r\n * Default `false` (usa portal — comportamento padrão).\r\n */\r\n disablePortal?: boolean;\r\n /**\r\n * Em telas <md, transforma o popover em **sheet bottom-up** colado nas bordas,\r\n * com backdrop suave (toque fora fecha). No desktop não muda nada. Default `true`.\r\n * Passe `false` pra manter o popover ancorado no trigger também em mobile.\r\n * (Mesmo nome da prop do `DropdownMenu` — comportamento consistente.)\r\n */\r\n mobileSheet?: boolean;\r\n};\r\n\r\nconst PopoverContent = React.forwardRef<\r\n React.ElementRef<typeof PopoverPrimitive.Content>,\r\n PopoverContentProps\r\n>(\r\n (\r\n { className, align = \"center\", sideOffset = 6, disablePortal, mobileSheet = true, ...props },\r\n ref,\r\n ) => {\r\n const content = (\r\n <PopoverPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n sideOffset={sideOffset}\r\n data-mobile-sheet={mobileSheet ? \"\" : undefined}\r\n className={cn(\r\n \"relative z-50\",\r\n // Unificado com DropdownMenu/Select: bg-bg-dropdown (frosted no dark)\r\n // + border-border-default + outline-float. O `before` pseudo-element\r\n // aplica o blur backdrop (necessário pra bg-bg-dropdown semi-transparente\r\n // render correto no dark mode).\r\n \"bg-bg-dropdown\",\r\n \"border border-border-default rounded-[12px] shadow-sh-lg outline-float\",\r\n \"before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150\",\r\n \"text-fg-default\",\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\r\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\r\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\r\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n mobileSheet && POPOVER_MOBILE_SHEET,\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n\r\n if (disablePortal) {\r\n // Sem portal: backdrop inline (fixed escapa do flow mesmo assim).\r\n return mobileSheet ? (\r\n <>\r\n <PopoverSheetBackdrop />\r\n {content}\r\n </>\r\n ) : (\r\n content\r\n );\r\n }\r\n\r\n // Com portal: backdrop em Portal próprio (cada Portal Radix aceita 1 filho\r\n // e é montado/desmontado junto com o popover via Presence).\r\n return (\r\n <>\r\n {mobileSheet && (\r\n <PopoverPrimitive.Portal>\r\n <PopoverSheetBackdrop />\r\n </PopoverPrimitive.Portal>\r\n )}\r\n <PopoverPrimitive.Portal>{content}</PopoverPrimitive.Portal>\r\n </>\r\n );\r\n },\r\n);\r\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\r\n\r\nexport { Popover, PopoverTrigger, PopoverAnchor, PopoverClose, PopoverContent };\r\n","import * as React from \"react\"\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\r\nimport { X } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Dialog = DialogPrimitive.Root\r\n\r\nconst DialogTrigger = DialogPrimitive.Trigger\r\n\r\nconst DialogPortal = DialogPrimitive.Portal\r\n\r\nconst DialogClose = DialogPrimitive.Close\r\n\r\nconst DialogOverlay = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-0 z-50 bg-black/30 supports-[backdrop-filter]:backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\r\n\r\nconst DialogContent = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\r\n /** Esconde o botão \"X\" (Close) no canto superior direito. Default: false. */\r\n hideClose?: boolean;\r\n }\r\n>(({ className, children, hideClose, ...props }, ref) => (\r\n <DialogPortal>\r\n <DialogOverlay />\r\n <DialogPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-gp-4xl rounded-radius-base bg-bg-surface p-pad-4xl text-body-md text-fg-default shadow-sh-xl outline-float duration-200 sm:max-w-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\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n {!hideClose && (\r\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-radius-sm opacity-70 transition-opacity hover:opacity-100 outline-none ring-0 ring-ring-brand focus-visible:ring-4 disabled:pointer-events-none data-[state=open]:bg-bg-muted data-[state=open]:text-fg-muted\">\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n )}\r\n </DialogPrimitive.Content>\r\n </DialogPortal>\r\n))\r\nDialogContent.displayName = DialogPrimitive.Content.displayName\r\n\r\nconst DialogHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\"flex flex-col gap-gp-sm\", className)}\r\n {...props}\r\n />\r\n)\r\nDialogHeader.displayName = \"DialogHeader\"\r\n\r\nconst DialogFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse gap-gp-md sm:flex-row sm:justify-end\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n)\r\nDialogFooter.displayName = \"DialogFooter\"\r\n\r\nconst DialogTitle = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-title-md font-medium text-fg-default leading-none\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDialogTitle.displayName = DialogPrimitive.Title.displayName\r\n\r\nconst DialogDescription = React.forwardRef<\r\n React.ElementRef<typeof DialogPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DialogPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-body-md text-fg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nDialogDescription.displayName = DialogPrimitive.Description.displayName\r\n\r\nexport {\r\n Dialog,\r\n DialogPortal,\r\n DialogOverlay,\r\n DialogClose,\r\n DialogTrigger,\r\n DialogContent,\r\n DialogHeader,\r\n DialogFooter,\r\n DialogTitle,\r\n DialogDescription,\r\n}\r\n","\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { type DialogProps } from \"@radix-ui/react-dialog\"\r\nimport { Command as CommandPrimitive } from \"cmdk\"\r\nimport { Search } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Dialog, DialogContent, DialogTitle } from \"@/components/shadcn/dialog\"\r\n\r\n/**\r\n * Command — alinhado com o views-popover do design-and-table-v2.\r\n *\r\n * Estrutura:\r\n * - <Command> raiz (flex column)\r\n * - <CommandInput> = input \"real\" boxed (bg-input + border + radius-lg + shadow)\r\n * - <CommandList> com padding 4px\r\n * - <CommandGroup> heading uppercase + items\r\n * - <CommandItem> radius-lg (10px), px 12, py 8, font 13px, ícones 18px\r\n *\r\n * Pattern do input replica `.tbl-views-pop-search` exatamente.\r\n */\r\n\r\nconst Command = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive\r\n ref={ref}\r\n className={cn(\r\n // `bg-popover`/`text-popover-foreground` são vocabulário SHADCN, não do DS —\r\n // dependem da bridge do `globals.css`/`index.css`, que NÃO viaja pros canais npm\r\n // e submódulo. Lá a var não existe e a cor cai em `currentColor` (L-039/L-040).\r\n //\r\n // ⚠️ O substituto é `bg-bg-surface`, NÃO `bg-bg-dropdown`. A primeira troca (v0.36.0)\r\n // usou `dropdown` por ser o token da receita de flutuante — mas ele é TRANSLÚCIDO no\r\n // dark (`canvas` a 70%, pareado com `before:backdrop-blur-2xl`, que este componente\r\n // não tem), enquanto a bridge resolvia `popover` pra `surface-elevated`, OPACO.\r\n // Medido: light idêntico nos dois; dark `oklch(0.225 0 0)` vs `oklab(0.205 0 0 / 0.7)`.\r\n // `bg-bg-surface` reproduz o valor original nos DOIS modos.\r\n \"flex h-full w-full flex-col overflow-hidden p-pad-xl bg-bg-surface text-fg-default\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCommand.displayName = CommandPrimitive.displayName\r\n\r\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\r\n return (\r\n <Dialog {...props}>\r\n <DialogContent\r\n hideClose\r\n // A11y: Radix exige título; aqui é sr-only (paleta de comando não tem\r\n // header visível) e opt-out de descrição.\r\n aria-describedby={undefined}\r\n className={cn(\r\n \"overflow-hidden p-0 gap-0 sm:max-w-[384px]\",\r\n \"rounded-[12px] border border-border-default\",\r\n // Outline padrão de elementos flutuantes\r\n \"outline-float\"\r\n )}\r\n >\r\n <DialogTitle className=\"sr-only\">Comando</DialogTitle>\r\n <Command>{children}</Command>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n\r\n/* ── Input boxed (igual views-popover search) ─────────────────────────────── */\r\nconst CommandInput = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Input>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n cmdk-input-wrapper=\"\"\r\n className={cn(\r\n \"flex items-center gap-gp-md h-form-md px-pad-xl rounded-radius-lg\",\r\n \"bg-bg-input border border-border-subtle shadow-sh-sm\",\r\n \"transition-[border-color,box-shadow,background-color] duration-150\",\r\n \"focus-within:border-border-brand focus-within:shadow-sh-ring\",\r\n \"dark:bg-bg-muted dark:border-border-input dark:shadow-sh-none\"\r\n )}\r\n >\r\n <Search className=\"size-[14px] text-fg-muted shrink-0\" strokeWidth={1.8} />\r\n <CommandPrimitive.Input\r\n ref={ref}\r\n className={cn(\r\n \"flex-1 min-w-0 bg-transparent border-0 outline-none\",\r\n \"text-body-sm font-normal text-fg-default placeholder:text-fg-muted\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n))\r\nCommandInput.displayName = CommandPrimitive.Input.displayName\r\n\r\n/* ── List ─────────────────────────────────────────────────────────────────── */\r\nconst CommandList = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.List\r\n ref={ref}\r\n className={cn(\r\n \"max-h-[300px] overflow-y-auto overflow-x-hidden mt-pad-md scrollbar-thin\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCommandList.displayName = CommandPrimitive.List.displayName\r\n\r\nconst CommandEmpty = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Empty>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\r\n>((props, ref) => (\r\n <CommandPrimitive.Empty\r\n ref={ref}\r\n className=\"py-pad-5xl text-center text-body-md text-fg-muted\"\r\n {...props}\r\n />\r\n))\r\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\r\n\r\n/* ── Group (heading uppercase 28px, sem padding extra no group) ──────────── */\r\nconst CommandGroup = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Group>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Group\r\n ref={ref}\r\n className={cn(\r\n \"overflow-hidden text-fg-default\",\r\n \"[&_[cmdk-group-heading]]:flex [&_[cmdk-group-heading]]:items-center\",\r\n \"[&_[cmdk-group-heading]]:h-[28px] [&_[cmdk-group-heading]]:px-pad-xl\",\r\n \"[&_[cmdk-group-heading]]:text-caption-xs [&_[cmdk-group-heading]]:font-bold\",\r\n \"[&_[cmdk-group-heading]]:uppercase [&_[cmdk-group-heading]]:tracking-wider\",\r\n \"[&_[cmdk-group-heading]]:text-fg-subtle\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCommandGroup.displayName = CommandPrimitive.Group.displayName\r\n\r\nconst CommandSeparator = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"mx-pad-xs my-pad-xs h-px bg-border-default\", className)}\r\n {...props}\r\n />\r\n))\r\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\r\n\r\n/* ── Item: px-12 py-8, radius-lg (10px), font 13px, ícones 18px ───────────── */\r\nconst CommandItem = React.forwardRef<\r\n React.ElementRef<typeof CommandPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\r\n>(({ className, ...props }, ref) => (\r\n <CommandPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center gap-gp-md\",\r\n \"rounded-radius-lg px-pad-xl py-pad-md\",\r\n \"text-body-sm font-medium text-fg-muted\",\r\n \"outline-none transition-colors\",\r\n \"data-[selected='true']:bg-bg-muted data-[selected='true']:text-fg-default data-[selected='true']:[&_svg]:text-fg-default\",\r\n \"data-[disabled='true']:pointer-events-none data-[disabled='true']:opacity-50\",\r\n \"[&_svg]:pointer-events-none [&_svg]:size-[18px] [&_svg]:shrink-0 [&_svg]:text-fg-muted\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nCommandItem.displayName = CommandPrimitive.Item.displayName\r\n\r\nconst CommandShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span\r\n className={cn(\r\n \"ml-auto text-caption-sm tracking-wider text-fg-subtle\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\nCommandShortcut.displayName = \"CommandShortcut\"\r\n\r\nexport {\r\n Command,\r\n CommandDialog,\r\n CommandInput,\r\n CommandList,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandItem,\r\n CommandShortcut,\r\n CommandSeparator,\r\n}\r\n","import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * InputGroup — composição rica pra inputs com addons (prefixo, sufixo, ícone, botão).\r\n *\r\n * Estrutura:\r\n * <InputGroup>\r\n * <InputGroupAddon align=\"inline-start\"><Icon /></InputGroupAddon>\r\n * <InputGroupInput placeholder=\"...\" />\r\n * <InputGroupAddon align=\"inline-end\">\r\n * <InputGroupButton><X /></InputGroupButton>\r\n * </InputGroupAddon>\r\n * </InputGroup>\r\n *\r\n * Visual alinhado com `.tbl-form-input` (mesmo bg/border/radius do <Input>).\r\n * State (default/error/warning/success) afeta borda + focus ring (shadow-sh-ring-*).\r\n */\r\n\r\nexport type InputGroupState = \"default\" | \"error\" | \"warning\" | \"success\";\r\n\r\n/* ── Wrapper ─────────────────────────────────────────────────────────────── */\r\nconst inputGroupVariants = cva(\r\n [\r\n \"group/input-group relative flex w-full items-center\",\r\n \"bg-bg-input dark:bg-bg-muted\",\r\n \"hover:bg-bg-input-hover dark:hover:bg-bg-muted-hover\",\r\n \"border border-border-input rounded-radius-lg\",\r\n \"transition-[border-color,box-shadow,background-color] outline-none\",\r\n \"has-[input:disabled]:cursor-not-allowed has-[input:disabled]:opacity-50 has-[input:disabled]:hover:bg-bg-input dark:has-[input:disabled]:hover:bg-bg-muted\",\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n xxs: \"min-h-form-xs px-pad-md gap-gp-xs rounded-radius-md text-body-sm font-normal\",\r\n xs: \"min-h-form-sm px-pad-xl gap-gp-md rounded-radius-md text-body-sm font-normal\",\r\n sm: \"min-h-form-md px-pad-xl gap-gp-md rounded-radius-lg text-body-sm font-normal\",\r\n md: \"min-h-form-lg px-pad-xl gap-gp-md rounded-radius-lg text-body-sm font-normal\",\r\n },\r\n state: {\r\n default: \"focus-within:border-border-brand focus-within:shadow-sh-ring\",\r\n error: \"border-border-danger-muted focus-within:border-border-danger-muted focus-within:shadow-sh-ring-danger\",\r\n warning: \"border-border-warning-muted focus-within:border-border-warning-muted focus-within:shadow-sh-ring-warning\",\r\n success: \"border-border-success-muted focus-within:border-border-success-muted focus-within:shadow-sh-ring-success\",\r\n },\r\n },\r\n defaultVariants: { size: \"md\", state: \"default\" },\r\n },\r\n);\r\n\r\nexport type InputGroupVariantProps = VariantProps<typeof inputGroupVariants>;\r\n\r\nexport interface InputGroupProps\r\n extends React.HTMLAttributes<HTMLDivElement>,\r\n InputGroupVariantProps {}\r\n\r\nexport const InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\r\n ({ className, size, state, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n data-slot=\"input-group\"\r\n className={cn(inputGroupVariants({ size, state }), className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\nInputGroup.displayName = \"InputGroup\";\r\n\r\n/* ── Input (sem bg/border — herda do wrapper) ─────────────────────────── */\r\nconst inputGroupInputVariants = cva([\r\n \"flex-1 min-w-0 bg-transparent border-0 outline-none\",\r\n \"text-body-sm font-normal text-fg-default placeholder:text-fg-muted placeholder:opacity-70\",\r\n \"disabled:cursor-not-allowed\",\r\n \"file:inline-flex file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-fg-default\",\r\n]);\r\n\r\nexport interface InputGroupInputProps\r\n extends React.InputHTMLAttributes<HTMLInputElement> {}\r\n\r\nexport const InputGroupInput = React.forwardRef<\r\n HTMLInputElement,\r\n InputGroupInputProps\r\n>(({ className, type, ...props }, ref) => (\r\n <input\r\n ref={ref}\r\n type={type}\r\n data-slot=\"input-group-input\"\r\n className={cn(inputGroupInputVariants(), className)}\r\n {...props}\r\n />\r\n));\r\nInputGroupInput.displayName = \"InputGroupInput\";\r\n\r\n/* ── Textarea ──────────────────────────────────────────────────────────── */\r\nconst inputGroupTextareaVariants = cva([\r\n \"flex-1 min-w-0 bg-transparent border-0 outline-none resize-y\",\r\n \"py-pad-md\",\r\n \"text-body-sm font-normal leading-[1.5] text-fg-default placeholder:text-fg-muted placeholder:opacity-70\",\r\n \"disabled:cursor-not-allowed\",\r\n]);\r\n\r\nexport interface InputGroupTextareaProps\r\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\r\n\r\nexport const InputGroupTextarea = React.forwardRef<\r\n HTMLTextAreaElement,\r\n InputGroupTextareaProps\r\n>(({ className, ...props }, ref) => (\r\n <textarea\r\n ref={ref}\r\n data-slot=\"input-group-textarea\"\r\n className={cn(inputGroupTextareaVariants(), className)}\r\n {...props}\r\n />\r\n));\r\nInputGroupTextarea.displayName = \"InputGroupTextarea\";\r\n\r\n/* ── Addon (prefix/suffix slot) ───────────────────────────────────────── */\r\nconst inputGroupAddonVariants = cva(\r\n \"flex items-center text-fg-muted shrink-0 select-none [&_svg]:size-4 [&_svg]:shrink-0\",\r\n {\r\n variants: {\r\n align: {\r\n // Inline = horizontal (start/end do eixo do texto)\r\n \"inline-start\": \"\",\r\n \"inline-end\": \"\",\r\n // Block = vertical (top/bottom — multi-linha em textarea)\r\n \"block-start\": \"\",\r\n \"block-end\": \"\",\r\n },\r\n },\r\n defaultVariants: { align: \"inline-start\" },\r\n },\r\n);\r\n\r\nexport type InputGroupAddonAlign =\r\n | \"inline-start\"\r\n | \"inline-end\"\r\n | \"block-start\"\r\n | \"block-end\";\r\n\r\nexport interface InputGroupAddonProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n align?: InputGroupAddonAlign;\r\n}\r\n\r\nexport const InputGroupAddon = React.forwardRef<\r\n HTMLDivElement,\r\n InputGroupAddonProps\r\n>(({ className, align = \"inline-start\", onClick, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n data-slot=\"input-group-addon\"\r\n data-align={align}\r\n className={cn(inputGroupAddonVariants({ align }), className)}\r\n onClick={(e) => {\r\n // Click no addon (ícone, texto, espaço vazio) → foca o input do grupo.\r\n // Botões dentro do addon (`InputGroupButton`) continuam funcionando.\r\n if ((e.target as HTMLElement).closest(\"button\")) {\r\n onClick?.(e);\r\n return;\r\n }\r\n e.currentTarget.parentElement\r\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>(\r\n \"input, textarea\",\r\n )\r\n ?.focus();\r\n onClick?.(e);\r\n }}\r\n {...props}\r\n />\r\n));\r\nInputGroupAddon.displayName = \"InputGroupAddon\";\r\n\r\n/* ── Text (texto formatado dentro do addon) ───────────────────────────── */\r\nexport interface InputGroupTextProps\r\n extends React.HTMLAttributes<HTMLSpanElement> {}\r\n\r\nexport const InputGroupText = React.forwardRef<\r\n HTMLSpanElement,\r\n InputGroupTextProps\r\n>(({ className, ...props }, ref) => (\r\n <span\r\n ref={ref}\r\n data-slot=\"input-group-text\"\r\n className={cn(\r\n \"text-body-xs text-fg-muted whitespace-nowrap\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nInputGroupText.displayName = \"InputGroupText\";\r\n\r\n/* ── Button (botão dentro do addon — ex copy/clear) ───────────────────── */\r\nconst inputGroupButtonVariants = cva(\r\n [\r\n \"inline-flex items-center justify-center shrink-0\",\r\n \"rounded-radius-md transition-colors outline-none cursor-pointer\",\r\n \"focus-visible:ring-4 focus-visible:ring-ring-brand\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50\",\r\n \"[&_svg]:size-4 [&_svg]:shrink-0\",\r\n ],\r\n {\r\n variants: {\r\n size: {\r\n xs: \"h-form-xs px-pad-md gap-gp-xs text-body-xs font-normal\",\r\n \"icon-xs\": \"size-form-xs\",\r\n sm: \"h-form-sm px-pad-lg gap-gp-md text-body-xs font-normal\",\r\n \"icon-sm\": \"size-form-sm\",\r\n },\r\n variant: {\r\n default: \"bg-bg-muted text-fg-default hover:bg-bg-muted-hover\",\r\n destructive: \"bg-bg-danger text-fg-on-danger hover:bg-bg-danger-hover\",\r\n outline: \"border border-border-input bg-transparent text-fg-default hover:bg-bg-muted\",\r\n secondary: \"bg-bg-emphasis text-fg-default hover:bg-bg-muted-hover\",\r\n ghost: \"bg-transparent text-fg-muted hover:bg-bg-muted hover:text-fg-default\",\r\n link: \"bg-transparent text-fg-brand underline-offset-4 hover:underline\",\r\n },\r\n },\r\n defaultVariants: { size: \"xs\", variant: \"ghost\" },\r\n },\r\n);\r\n\r\nexport interface InputGroupButtonProps\r\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"size\">,\r\n VariantProps<typeof inputGroupButtonVariants> {}\r\n\r\nexport const InputGroupButton = React.forwardRef<\r\n HTMLButtonElement,\r\n InputGroupButtonProps\r\n>(({ className, size, variant, type = \"button\", ...props }, ref) => (\r\n <button\r\n ref={ref}\r\n type={type}\r\n data-slot=\"input-group-button\"\r\n className={cn(inputGroupButtonVariants({ size, variant }), className)}\r\n {...props}\r\n />\r\n));\r\nInputGroupButton.displayName = \"InputGroupButton\";\r\n\r\nexport {\r\n inputGroupVariants,\r\n inputGroupInputVariants,\r\n inputGroupTextareaVariants,\r\n inputGroupAddonVariants,\r\n inputGroupButtonVariants,\r\n};\r\n","\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\r\nimport { Check, ChevronRight } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n/**\r\n * DropdownMenu — alinhado com `.tbl-row-actions-menu` / `.tbl-more-menu`\r\n * do design-and-table-v2.\r\n *\r\n * Container:\r\n * - bg-bg-dropdown (token frosted-glass — solid no light, 70% transparent + blur no dark)\r\n * - border 1px + radius 12px + padding 6px + shadow-lg\r\n * - min-w 180px, items separados por 1px (gap-px)\r\n *\r\n * Item:\r\n * - h variavel, padding 8/10, radius 6px, gap 10, font 13px medium\r\n * - rest: fg-muted (texto + ícone), hover/focus: bg-muted + fg-default\r\n * - variant=\"destructive\": fg-danger + hover bg-danger-muted\r\n *\r\n * Divider:\r\n * - 1px bg-border-default com margin 4px (não estende além do padding)\r\n */\r\n\r\nconst DropdownMenu = DropdownMenuPrimitive.Root\r\n\r\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\r\n\r\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\r\n\r\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\r\n\r\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\r\n\r\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\r\n\r\n/* ── Container (Content + SubContent) ─────────────────────────────────────── */\r\nconst CONTAINER_CLASSES = [\r\n \"relative z-50 min-w-[180px] overflow-hidden\",\r\n \"flex flex-col gap-px\",\r\n \"rounded-[12px] bg-bg-dropdown p-pad-sm\",\r\n \"border border-border-default shadow-sh-lg\",\r\n // Outline padrão de elementos flutuantes\r\n \"outline-float\",\r\n \"text-fg-muted\",\r\n // Frosted-glass blur (necessário pra fazer o bg-dropdown semi-transparent render correto no dark)\r\n \"before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150\",\r\n // Animações Radix\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\r\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\r\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\r\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\r\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n \"origin-[--radix-dropdown-menu-content-transform-origin]\",\r\n].join(\" \")\r\n\r\n/* ── Mobile sheet (só Content, <md) ───────────────────────────────────────\r\n * Em telas <md o Content vira sheet bottom-up colado nas bordas: full-width,\r\n * só cantos superiores arredondados, flush, sem outline/shadow, cap 92vh.\r\n * O reposicionamento do wrapper Radix é feito no globals.css via [data-mobile-sheet].\r\n * Animação: neutraliza o zoom e desliza de baixo (sobrescreve os slides por side).\r\n */\r\nconst MOBILE_SHEET_CLASSES = [\r\n \"max-md:w-full max-md:min-w-0 max-md:max-w-none\",\r\n \"max-md:!max-h-[92vh]\",\r\n \"max-md:rounded-b-none max-md:rounded-t-[12px]\",\r\n \"max-md:border-x-0 max-md:border-b-0\",\r\n \"max-md:outline-none max-md:shadow-none\",\r\n \"max-md:data-[state=open]:zoom-in-100 max-md:data-[state=closed]:zoom-out-100\",\r\n \"max-md:data-[state=open]:slide-in-from-bottom-12 max-md:data-[state=closed]:slide-out-to-bottom-12\",\r\n].join(\" \")\r\n\r\n/* ── Item base ────────────────────────────────────────────────────────────── */\r\nconst ITEM_BASE = [\r\n \"relative flex cursor-default select-none items-center\",\r\n \"gap-pad-lg px-pad-lg py-pad-md rounded-radius-sm\",\r\n \"text-body-sm font-medium\",\r\n \"outline-none transition-colors\",\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n \"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\r\n].join(\" \")\r\n\r\nconst ITEM_VARIANT_DEFAULT = [\r\n \"text-fg-muted [&_svg]:text-fg-muted\",\r\n \"focus:bg-bg-muted focus:text-fg-default focus:[&_svg]:text-fg-default\",\r\n].join(\" \")\r\n\r\nconst ITEM_VARIANT_DESTRUCTIVE = [\r\n \"text-fg-danger [&_svg]:text-fg-danger\",\r\n \"focus:bg-bg-danger-muted focus:text-fg-danger focus:[&_svg]:text-fg-danger\",\r\n].join(\" \")\r\n\r\n/* ── SubTrigger ───────────────────────────────────────────────────────────── */\r\nconst DropdownMenuSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n ITEM_BASE,\r\n ITEM_VARIANT_DEFAULT,\r\n \"data-[state=open]:bg-bg-muted data-[state=open]:text-fg-default\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRight className=\"ml-auto\" />\r\n </DropdownMenuPrimitive.SubTrigger>\r\n))\r\nDropdownMenuSubTrigger.displayName =\r\n DropdownMenuPrimitive.SubTrigger.displayName\r\n\r\n/* ── SubContent ───────────────────────────────────────────────────────────── */\r\nconst DropdownMenuSubContent = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.SubContent\r\n ref={ref}\r\n className={cn(CONTAINER_CLASSES, className)}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuSubContent.displayName =\r\n DropdownMenuPrimitive.SubContent.displayName\r\n\r\n/* ── Content ──────────────────────────────────────────────────────────────── */\r\nconst DropdownMenuContent = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content> & {\r\n /**\r\n * Em telas <md, transforma o menu em sheet bottom-up colado nas bordas,\r\n * com backdrop suave (toque fora fecha via dismiss do Radix). Default true.\r\n * Passe `false` pra manter o popover ancorado no trigger também em mobile.\r\n */\r\n mobileSheet?: boolean\r\n }\r\n>(({ className, sideOffset = 8, mobileSheet = true, ...props }, ref) => (\r\n <>\r\n {/* Backdrop suave — só mobile (md:hidden), em Portal próprio (cada Portal\r\n Radix aceita 1 filho e é montado/desmontado junto com o menu via Presence).\r\n\r\n ⚠️ pointer-events-NONE (não auto). O DropdownMenu do Radix abre no\r\n `pointerdown`; o backdrop monta via React no meio do gesto e, com\r\n pointer-events-auto, captura o `pointerup`/`click` seguinte → o menu\r\n abre e fecha no mesmo toque (bug do avatar/UserMenu dentro do drawer\r\n mobile). Com pointer-events-none o gesto de abertura passa direto e o\r\n dismiss por toque-fora continua funcionando (Radix escuta pointerdown\r\n a nível de document, independente do backdrop capturar). z-[55] fica\r\n acima do drawer mobile (z-50) só pra escurecer; o Content vai a z-60. */}\r\n {mobileSheet && (\r\n <DropdownMenuPrimitive.Portal>\r\n <div\r\n aria-hidden=\"true\"\r\n className=\"fixed inset-0 z-[55] bg-overlay-scrim pointer-events-none md:hidden animate-in fade-in-0 duration-150\"\r\n />\r\n </DropdownMenuPrimitive.Portal>\r\n )}\r\n <DropdownMenuPrimitive.Portal>\r\n <DropdownMenuPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n data-mobile-sheet={mobileSheet ? \"\" : undefined}\r\n className={cn(\r\n CONTAINER_CLASSES,\r\n \"max-h-[var(--radix-dropdown-menu-content-available-height)] overflow-y-auto overflow-x-hidden\",\r\n mobileSheet && MOBILE_SHEET_CLASSES,\r\n className\r\n )}\r\n {...props}\r\n />\r\n </DropdownMenuPrimitive.Portal>\r\n </>\r\n))\r\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\r\n\r\n/* ── Item ─────────────────────────────────────────────────────────────────── */\r\nconst DropdownMenuItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\r\n inset?: boolean\r\n /** Variante semântica — \"destructive\" pinta fg-danger e usa bg-danger-muted no hover */\r\n variant?: \"default\" | \"destructive\"\r\n }\r\n>(({ className, inset, variant = \"default\", ...props }, ref) => (\r\n <DropdownMenuPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n ITEM_BASE,\r\n variant === \"destructive\" ? ITEM_VARIANT_DESTRUCTIVE : ITEM_VARIANT_DEFAULT,\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\r\n\r\n/* ── CheckboxItem ─────────────────────────────────────────────────────────── */\r\nconst DropdownMenuCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <DropdownMenuPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n ITEM_BASE,\r\n ITEM_VARIANT_DEFAULT,\r\n \"pl-8 pr-pad-lg\",\r\n className\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-pad-md flex h-3.5 w-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.CheckboxItem>\r\n))\r\nDropdownMenuCheckboxItem.displayName =\r\n DropdownMenuPrimitive.CheckboxItem.displayName\r\n\r\n/* ── RadioItem ────────────────────────────────────────────────────────────── */\r\n/**\r\n * RadioItem — item selecionado ganha tom brand:\r\n * - rest: fg-muted (igual default item)\r\n * - hover: bg-muted + fg-default (igual default item)\r\n * - checked: bg-bg-brand-subtle + fg-fg-brand (estado ativo destacado)\r\n *\r\n * Indicator: `<Check />` consistente com `<DropdownMenuCheckboxItem>` (antes era `<Circle />`).\r\n */\r\nconst DropdownMenuRadioItem = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <DropdownMenuPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n ITEM_BASE,\r\n ITEM_VARIANT_DEFAULT,\r\n \"pl-8 pr-pad-lg\",\r\n // Selected state — brand tint (mantém no focus pra não voltar pra muted)\r\n \"data-[state=checked]:bg-bg-brand-subtle data-[state=checked]:text-fg-brand\",\r\n \"data-[state=checked]:[&_svg]:text-fg-brand\",\r\n \"data-[state=checked]:focus:bg-bg-brand-subtle data-[state=checked]:focus:text-fg-brand\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-pad-md flex h-3.5 w-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <Check className=\"size-4\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.RadioItem>\r\n))\r\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\r\n\r\n/* ── Label ────────────────────────────────────────────────────────────────── */\r\nconst DropdownMenuLabel = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Label\r\n ref={ref}\r\n className={cn(\r\n \"px-pad-lg py-pad-sm text-caption-sm font-semibold uppercase tracking-wider text-fg-subtle\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\r\n\r\n/* ── Separator (divider) ──────────────────────────────────────────────────── */\r\nconst DropdownMenuSeparator = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <DropdownMenuPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"mx-pad-xs my-pad-xs h-px bg-border-default\", className)}\r\n {...props}\r\n />\r\n))\r\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\r\n\r\n/* ── Shortcut (texto à direita do item) ───────────────────────────────────── */\r\nconst DropdownMenuShortcut = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLSpanElement>) => {\r\n return (\r\n <span\r\n className={cn(\"ml-auto text-caption-sm tracking-wider text-fg-subtle\", className)}\r\n {...props}\r\n />\r\n )\r\n}\r\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\r\n\r\nexport {\r\n DropdownMenu,\r\n DropdownMenuTrigger,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuCheckboxItem,\r\n DropdownMenuRadioItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuShortcut,\r\n DropdownMenuGroup,\r\n DropdownMenuPortal,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuRadioGroup,\r\n}\r\n","import * as React from \"react\";\r\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * Tooltip — dica flutuante curta (Radix Tooltip) remapeada para tokens DS.\r\n *\r\n * Visual: bolha neutra de ênfase (`bg-bg-emphasis` — theme-aware, mais visível\r\n * que `muted` e diferente das superfícies brancas de Popover/Dropdown), texto\r\n * `caption-sm`, `rounded-radius-md`, `shadow-sh-md`. A seta reaproveita o mesmo\r\n * fundo via `fill-bg-emphasis`.\r\n *\r\n * O DS **não tem** superfície escura invertida (`surface-inverted`), então a\r\n * tooltip é uma bolha neutra clara (light) / clara-sobre-escuro (dark) — em vez\r\n * do bubble preto clássico. É a escolha token-nativa: nenhum token novo.\r\n *\r\n * `<Tooltip>` já embrulha um `<TooltipProvider>` internamente, então uma tooltip\r\n * avulsa funciona sem provider no topo da app. Provider aninhado é seguro no\r\n * Radix (o mais interno vence) — se quiser um `delayDuration` global, monte um\r\n * `<TooltipProvider>` você mesmo em volta de vários `<Tooltip>`.\r\n */\r\n\r\nconst TooltipProvider = TooltipPrimitive.Provider;\r\n\r\nconst TooltipTrigger = TooltipPrimitive.Trigger;\r\n\r\ntype TooltipProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root>;\r\n\r\n/**\r\n * Sem espera, por default.\r\n *\r\n * ⚠️ Até 2026-08-24 este componente **não passava `delayDuration`**, então valia o default do\r\n * Radix — `DEFAULT_DELAY_DURATION = 700` (conferido no pacote instalado, não de memória).\r\n * Três arquivos de doc afirmavam \"delayDuration default = 200ms\", incluindo o\r\n * `shadcn-gotchas.md` que é distribuído: a afirmação nunca foi verdade pro Tooltip. O que\r\n * tinha 200 de fato era o `HoverCard`, que passa `openDelay={200}` explícito.\r\n *\r\n * 700ms numa dica curta é tempo de a pessoa desistir e ir clicar pra descobrir. `0` deixa a\r\n * dica instantânea, que é o comportamento esperado de tooltip de ícone.\r\n *\r\n * O `delayDuration` vai no Provider **e** no Root porque cada um governa uma coisa: o Provider\r\n * define o padrão do grupo (e o `skipDelayDuration` entre triggers vizinhos), o Root vence pra\r\n * esta tooltip. Continua sobrescritível — `<Tooltip delayDuration={400}>`.\r\n *\r\n * A animação de entrada não regride: com delay 0 o Radix emite `data-state=\"instant-open\"` em\r\n * vez de `delayed-open`, e as classes já cobrem os dois estados (ver `TooltipContent`).\r\n */\r\nconst Tooltip = ({ children, delayDuration = 0, ...props }: TooltipProps) => (\r\n <TooltipProvider delayDuration={delayDuration}>\r\n <TooltipPrimitive.Root delayDuration={delayDuration} {...props}>\r\n {children}\r\n </TooltipPrimitive.Root>\r\n </TooltipProvider>\r\n);\r\nTooltip.displayName = \"Tooltip\";\r\n\r\ntype TooltipContentProps = React.ComponentPropsWithoutRef<\r\n typeof TooltipPrimitive.Content\r\n> & {\r\n /** Renderiza a seta apontando pro trigger. Default `true`. */\r\n showArrow?: boolean;\r\n};\r\n\r\nconst TooltipContent = React.forwardRef<\r\n React.ElementRef<typeof TooltipPrimitive.Content>,\r\n TooltipContentProps\r\n>(({ className, sideOffset = 6, showArrow = true, children, ...props }, ref) => (\r\n <TooltipPrimitive.Portal>\r\n <TooltipPrimitive.Content\r\n ref={ref}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 max-w-[16rem] select-none\",\r\n \"bg-bg-emphasis text-fg-default\",\r\n \"rounded-radius-md px-pad-lg py-pad-xs\",\r\n \"text-caption-sm\",\r\n \"shadow-sh-md\",\r\n \"origin-[--radix-tooltip-content-transform-origin]\",\r\n \"data-[state=delayed-open]:animate-in data-[state=instant-open]:animate-in data-[state=closed]:animate-out\",\r\n \"data-[state=closed]:fade-out-0 data-[state=delayed-open]:fade-in-0 data-[state=instant-open]:fade-in-0\",\r\n \"data-[state=closed]:zoom-out-95 data-[state=delayed-open]:zoom-in-95 data-[state=instant-open]:zoom-in-95\",\r\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\r\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n {showArrow && (\r\n <TooltipPrimitive.Arrow\r\n width={11}\r\n height={5}\r\n className=\"fill-bg-emphasis\"\r\n />\r\n )}\r\n </TooltipPrimitive.Content>\r\n </TooltipPrimitive.Portal>\r\n));\r\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\r\n\r\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\r\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\r\n\r\nconst Collapsible = CollapsiblePrimitive.Root\r\n\r\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\r\n\r\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\r\n\r\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\r\n","import * as React from \"react\"\r\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Avatar = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nAvatar.displayName = AvatarPrimitive.Root.displayName\r\n\r\nconst AvatarImage = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Image>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Image\r\n ref={ref}\r\n className={cn(\"aspect-square h-full w-full\", className)}\r\n {...props}\r\n />\r\n))\r\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\r\n\r\n/**\r\n * AvatarFallback — `text-body-sm font-normal` (13px) como default mais compacto.\r\n *\r\n * Antes usava `text-body-md font-medium` (14px) que ficava grande demais em avatares\r\n * pequenos (≤24px), forçando consumer a sobrescrever via className. Caption\r\n * é mais seguro como default — consumer ainda pode override (ex: `text-caption-xs`\r\n * pra container muito pequeno, ou `text-body-lg font-medium` pra avatar grande).\r\n */\r\nconst AvatarFallback = React.forwardRef<\r\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\r\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\r\n>(({ className, ...props }, ref) => (\r\n <AvatarPrimitive.Fallback\r\n ref={ref}\r\n className={cn(\r\n \"flex h-full w-full items-center justify-center rounded-full bg-bg-muted text-fg-muted text-body-sm font-normal\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\r\n\r\nexport { Avatar, AvatarImage, AvatarFallback }\r\n"],"names":["extendTailwindMerge","clsx","tvBase","forwardRef","Button","jsxs","jsx","React","Slot","ChevronRight","MoreHorizontal","PopoverPrimitive","Fragment","DialogPrimitive","X","CommandPrimitive","Search","cva","DropdownMenuPrimitive","Check","TooltipPrimitive","CollapsiblePrimitive","AvatarPrimitive"],"mappings":"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"}
|