@snksergio/design-system 0.53.0 → 0.54.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.
Files changed (28) hide show
  1. package/dist-lib/chunks/{toggle-group-C9rrkkmh.cjs → toggle-group-BTnqY_nt.cjs} +23 -23
  2. package/dist-lib/chunks/toggle-group-BTnqY_nt.cjs.map +1 -0
  3. package/dist-lib/chunks/{toggle-group-mXbG8_Jm.mjs → toggle-group-BYmj8142.mjs} +22 -22
  4. package/dist-lib/chunks/toggle-group-BYmj8142.mjs.map +1 -0
  5. package/dist-lib/index.cjs +630 -1
  6. package/dist-lib/index.cjs.map +1 -1
  7. package/dist-lib/index.mjs +638 -9
  8. package/dist-lib/index.mjs.map +1 -1
  9. package/dist-lib/shadcn.cjs +1 -1
  10. package/dist-lib/shadcn.mjs +1 -1
  11. package/dist-lib/src/components/index.d.ts +1 -0
  12. package/dist-lib/src/components/index.d.ts.map +1 -1
  13. package/dist-lib/src/components/ui/TabsNavigation/index.d.ts +5 -0
  14. package/dist-lib/src/components/ui/TabsNavigation/index.d.ts.map +1 -0
  15. package/dist-lib/src/components/ui/TabsNavigation/tabs-navigation-context.d.ts +19 -0
  16. package/dist-lib/src/components/ui/TabsNavigation/tabs-navigation-context.d.ts.map +1 -0
  17. package/dist-lib/src/components/ui/TabsNavigation/tabs-navigation.d.ts +84 -0
  18. package/dist-lib/src/components/ui/TabsNavigation/tabs-navigation.d.ts.map +1 -0
  19. package/dist-lib/src/components/ui/TabsNavigation/tabs-navigation.styles.d.ts +393 -0
  20. package/dist-lib/src/components/ui/TabsNavigation/tabs-navigation.styles.d.ts.map +1 -0
  21. package/dist-lib/src/components/ui/TabsNavigation/tabs-navigation.types.d.ts +99 -0
  22. package/dist-lib/src/components/ui/TabsNavigation/tabs-navigation.types.d.ts.map +1 -0
  23. package/dist-lib/src/components/ui/TabsNavigation/use-arrastar-para-rolar.d.ts +26 -0
  24. package/dist-lib/src/components/ui/TabsNavigation/use-arrastar-para-rolar.d.ts.map +1 -0
  25. package/dist-lib/theme.css +15 -0
  26. package/package.json +1 -1
  27. package/dist-lib/chunks/toggle-group-C9rrkkmh.cjs.map +0 -1
  28. package/dist-lib/chunks/toggle-group-mXbG8_Jm.mjs.map +0 -1
@@ -4,6 +4,7 @@ const React = require("react");
4
4
  const RadioGroupPrimitive = require("@radix-ui/react-radio-group");
5
5
  const avatar = require("./avatar-DAmZ7fBZ.cjs");
6
6
  const SeparatorPrimitive = require("@radix-ui/react-separator");
7
+ const HoverCardPrimitive = require("@radix-ui/react-hover-card");
7
8
  const AccordionPrimitive = require("@radix-ui/react-accordion");
8
9
  const lucideReact = require("lucide-react");
9
10
  const classVarianceAuthority = require("class-variance-authority");
@@ -11,7 +12,6 @@ const reactSlot = require("@radix-ui/react-slot");
11
12
  const useEmblaCarousel = require("embla-carousel-react");
12
13
  const ContextMenuPrimitive = require("@radix-ui/react-context-menu");
13
14
  const vaul = require("vaul");
14
- const HoverCardPrimitive = require("@radix-ui/react-hover-card");
15
15
  const inputOtp = require("input-otp");
16
16
  const LabelPrimitive = require("@radix-ui/react-label");
17
17
  const MenubarPrimitive = require("@radix-ui/react-menubar");
@@ -41,9 +41,9 @@ function _interopNamespaceDefault(e) {
41
41
  const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
42
42
  const RadioGroupPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(RadioGroupPrimitive);
43
43
  const SeparatorPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(SeparatorPrimitive);
44
+ const HoverCardPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(HoverCardPrimitive);
44
45
  const AccordionPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(AccordionPrimitive);
45
46
  const ContextMenuPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(ContextMenuPrimitive);
46
- const HoverCardPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(HoverCardPrimitive);
47
47
  const LabelPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(LabelPrimitive);
48
48
  const MenubarPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(MenubarPrimitive);
49
49
  const NavigationMenuPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(NavigationMenuPrimitive);
@@ -116,6 +116,26 @@ function Skeleton({
116
116
  }
117
117
  );
118
118
  }
119
+ const HoverCard = ({
120
+ openDelay = 200,
121
+ closeDelay = 100,
122
+ ...props
123
+ }) => /* @__PURE__ */ jsxRuntime.jsx(HoverCardPrimitive__namespace.Root, { openDelay, closeDelay, ...props });
124
+ const HoverCardTrigger = HoverCardPrimitive__namespace.Trigger;
125
+ const HoverCardContent = React__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
126
+ HoverCardPrimitive__namespace.Content,
127
+ {
128
+ ref,
129
+ align,
130
+ sideOffset,
131
+ className: avatar.cn(
132
+ "z-50 w-64 relative rounded-[12px] border border-border-default bg-bg-dropdown p-pad-card-base text-fg-default shadow-sh-lg outline-float outline-none before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-hover-card-content-transform-origin]",
133
+ className
134
+ ),
135
+ ...props
136
+ }
137
+ ));
138
+ HoverCardContent.displayName = HoverCardPrimitive__namespace.Content.displayName;
119
139
  const Accordion = AccordionPrimitive__namespace.Root;
120
140
  const AccordionItem = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
121
141
  AccordionPrimitive__namespace.Item,
@@ -977,26 +997,6 @@ const DrawerDescription = React__namespace.forwardRef(({ className, ...props },
977
997
  }
978
998
  ));
979
999
  DrawerDescription.displayName = vaul.Drawer.Description.displayName;
980
- const HoverCard = ({
981
- openDelay = 200,
982
- closeDelay = 100,
983
- ...props
984
- }) => /* @__PURE__ */ jsxRuntime.jsx(HoverCardPrimitive__namespace.Root, { openDelay, closeDelay, ...props });
985
- const HoverCardTrigger = HoverCardPrimitive__namespace.Trigger;
986
- const HoverCardContent = React__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
987
- HoverCardPrimitive__namespace.Content,
988
- {
989
- ref,
990
- align,
991
- sideOffset,
992
- className: avatar.cn(
993
- "z-50 w-64 relative rounded-[12px] border border-border-default bg-bg-dropdown p-pad-card-base text-fg-default shadow-sh-lg outline-float outline-none before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-hover-card-content-transform-origin]",
994
- className
995
- ),
996
- ...props
997
- }
998
- ));
999
- HoverCardContent.displayName = HoverCardPrimitive__namespace.Content.displayName;
1000
1000
  const DEFAULTS = {
1001
1001
  variant: "connected",
1002
1002
  size: "md",
@@ -1757,4 +1757,4 @@ exports.badgeVariants = badgeVariants;
1757
1757
  exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle;
1758
1758
  exports.slotVariants = slotVariants;
1759
1759
  exports.toggleVariants = toggleVariants;
1760
- //# sourceMappingURL=toggle-group-C9rrkkmh.cjs.map
1760
+ //# sourceMappingURL=toggle-group-BTnqY_nt.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-group-BTnqY_nt.cjs","sources":["../../src/components/shadcn/radio-group.tsx","../../src/components/shadcn/separator.tsx","../../src/components/shadcn/skeleton.tsx","../../src/components/shadcn/hover-card.tsx","../../src/components/shadcn/accordion.tsx","../../src/components/shadcn/alert.tsx","../../src/components/shadcn/badge.tsx","../../src/components/shadcn/breadcrumb.tsx","../../src/components/shadcn/card.tsx","../../src/components/shadcn/carousel.tsx","../../src/components/shadcn/context-menu.tsx","../../src/components/shadcn/drawer.tsx","../../src/components/shadcn/input-otp.tsx","../../src/components/shadcn/label.tsx","../../src/components/shadcn/menubar.tsx","../../src/components/shadcn/navigation-menu.tsx","../../src/components/shadcn/progress.tsx","../../src/components/shadcn/scroll-area.tsx","../../src/components/shadcn/slider.tsx","../../src/components/shadcn/tabs.tsx","../../src/components/shadcn/toggle.tsx","../../src/components/shadcn/toggle-group.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\n\nimport { cn } from \"@/lib/utils\"\n\n/**\n * RadioGroup — alinhado com o pattern do Checkbox/Input do design-and-table-v2.\n *\n * Specs:\n * - 16x16, border 1.5px border-input, radius-full\n * - bg-input (light) / dark:bg-bg-muted\n * - hover: border-default\n * - checked: bg-brand + border-brand + inner dot white\n * - focus: shadow-sh-ring\n */\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid w-full gap-gp-xl\", className)}\n {...props}\n ref={ref}\n />\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"peer relative flex aspect-square size-4 shrink-0 cursor-pointer\",\n \"rounded-radius-full\",\n \"bg-bg-input dark:bg-bg-muted\",\n \"border-[1.5px] border-border-input\",\n \"transition-[background-color,border-color,box-shadow] outline-none\",\n \"hover:border-border-default\",\n \"focus-visible:shadow-sh-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-bg-brand data-[state=checked]:border-border-brand\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex size-full items-center justify-center\">\n <span className=\"size-[6px] rounded-radius-full bg-fg-on-brand\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n","\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Separator = React.forwardRef<\r\n React.ElementRef<typeof SeparatorPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\r\n>(\r\n (\r\n { className, orientation = \"horizontal\", decorative = true, ...props },\r\n ref\r\n ) => (\r\n <SeparatorPrimitive.Root\r\n ref={ref}\r\n decorative={decorative}\r\n orientation={orientation}\r\n className={cn(\r\n \"shrink-0 bg-border-default\",\r\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n)\r\nSeparator.displayName = SeparatorPrimitive.Root.displayName\r\n\r\nexport { Separator }\r\n","import * as React from \"react\";\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * Skeleton — placeholder de carregamento (pulse). Tokenizado iGreen:\r\n * `bg-bg-muted` + `rounded-radius-md`. Componha vários pra desenhar a\r\n * silhueta do conteúdo (linha de texto, avatar, card) enquanto carrega.\r\n */\r\nfunction Skeleton({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) {\r\n return (\r\n <div\r\n className={cn(\"animate-pulse rounded-radius-md bg-bg-muted\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport { Skeleton };\r\n","import * as React from \"react\"\r\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n/** Default snappy (openDelay 200 / closeDelay 100) — o default do Radix (700) é lento. */\r\nconst HoverCard = ({\r\n openDelay = 200,\r\n closeDelay = 100,\r\n ...props\r\n}: React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Root>) => (\r\n <HoverCardPrimitive.Root openDelay={openDelay} closeDelay={closeDelay} {...props} />\r\n)\r\n\r\nconst HoverCardTrigger = HoverCardPrimitive.Trigger\r\n\r\nconst HoverCardContent = React.forwardRef<\r\n React.ElementRef<typeof HoverCardPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\r\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\r\n <HoverCardPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 w-64 relative rounded-[12px] border border-border-default bg-bg-dropdown p-pad-card-base text-fg-default shadow-sh-lg outline-float outline-none before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-hover-card-content-transform-origin]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName\r\n\r\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\r\n","import * as React from \"react\"\r\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\r\nimport { ChevronDown } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Accordion = AccordionPrimitive.Root\r\n\r\nconst AccordionItem = React.forwardRef<\r\n React.ElementRef<typeof AccordionPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\r\n>(({ className, ...props }, ref) => (\r\n <AccordionPrimitive.Item\r\n ref={ref}\r\n className={cn(\"border-b border-border-subtle\", className)}\r\n {...props}\r\n />\r\n))\r\nAccordionItem.displayName = \"AccordionItem\"\r\n\r\nconst AccordionTrigger = React.forwardRef<\r\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n <AccordionPrimitive.Header className=\"flex\">\r\n <AccordionPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-1 items-center justify-between py-pad-2xl text-body-md font-medium text-fg-default transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronDown className=\"h-4 w-4 shrink-0 text-fg-muted transition-transform duration-200\" />\r\n </AccordionPrimitive.Trigger>\r\n </AccordionPrimitive.Header>\r\n))\r\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\r\n\r\nconst AccordionContent = React.forwardRef<\r\n React.ElementRef<typeof AccordionPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <AccordionPrimitive.Content\r\n ref={ref}\r\n className=\"overflow-hidden text-body-md text-fg-muted transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\r\n {...props}\r\n >\r\n <div className={cn(\"pb-pad-2xl pt-0\", className)}>{children}</div>\r\n </AccordionPrimitive.Content>\r\n))\r\n\r\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\r\n\r\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\r\n","import * as React from \"react\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst alertVariants = cva(\r\n \"relative w-full rounded-radius-2xl border px-pad-2xl py-pad-xl text-body-md [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-fg-default\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-bg-surface text-fg-default border-border-subtle\",\r\n destructive:\r\n \"border-border-danger-muted/50 text-fg-danger [&>svg]:text-fg-danger\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n }\r\n)\r\n\r\nconst Alert = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\r\n>(({ className, variant, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n role=\"alert\"\r\n className={cn(alertVariants({ variant }), className)}\r\n {...props}\r\n />\r\n))\r\nAlert.displayName = \"Alert\"\r\n\r\nconst AlertTitle = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n <h5\r\n ref={ref}\r\n className={cn(\"text-body-md font-medium text-fg-default mb-sp-xs leading-none tracking-tight\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertTitle.displayName = \"AlertTitle\"\r\n\r\nconst AlertDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n React.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"text-body-md text-fg-muted [&_p]:leading-relaxed\", className)}\r\n {...props}\r\n />\r\n))\r\nAlertDescription.displayName = \"AlertDescription\"\r\n\r\nexport { Alert, AlertTitle, AlertDescription }\r\n","import * as React from \"react\";\r\nimport { tv, type VariantProps } from \"@/utils/tv\";\r\n\r\n/**\r\n * Badge — pill/tag visual indicator alinhado com sandbox.\r\n *\r\n * Patterns suportados:\r\n * - Counter (.tbl-page-count): default shape (radius-sm 6px), soft primary\r\n * - Status chip (.chip): shape=\"pill\" (radius-full), soft + colored\r\n * - Inline tag: default shape, qualquer cor\r\n *\r\n * API:\r\n * color: primary | secondary | critical | success | warning | info\r\n * variant: solid | soft | outline | ghost\r\n * size: sm (20px) | md (24px, default) | lg (28px)\r\n * shape: default (radius 6px) | pill (radius full)\r\n */\r\nconst badgeVariants = tv({\r\n base: [\r\n \"inline-flex items-center justify-center\",\r\n \"border border-transparent\",\r\n \"font-semibold leading-none whitespace-nowrap\",\r\n \"transition-colors\",\r\n \"focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary\",\r\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\r\n ],\r\n\r\n variants: {\r\n color: {\r\n primary: \"\",\r\n secondary: \"\",\r\n critical: \"\",\r\n success: \"\",\r\n warning: \"\",\r\n info: \"\",\r\n },\r\n\r\n variant: {\r\n solid: \"\",\r\n soft: \"\",\r\n outline: \"bg-transparent\",\r\n ghost: \"bg-transparent border-transparent\",\r\n },\r\n\r\n size: {\r\n sm: \"h-comp-2xs px-pad-sm text-caption-xs gap-gp-2xs [&_svg]:size-3\", // 20px / 6 / 10\r\n md: \"h-comp-xs px-pad-md text-body-xs gap-gp-xs [&_svg]:size-3.5\", // 24px / 8 / 12 (default)\r\n lg: \"h-comp-sm px-pad-lg text-body-sm font-normal gap-gp-sm [&_svg]:size-4\", // 28px / 10 / 13\r\n },\r\n\r\n shape: {\r\n default: \"rounded-radius-sm\", // 6px — counter, value tags\r\n pill: \"rounded-radius-full\", // pill — status chips\r\n },\r\n },\r\n\r\n compoundVariants: [\r\n /* ── Primary (brand) ─────────────────────────────────────────────── */\r\n { color: \"primary\", variant: \"solid\", class: \"bg-bg-brand text-fg-on-brand\" },\r\n { color: \"primary\", variant: \"soft\", class: \"bg-bg-brand-subtle text-fg-brand\" },\r\n { color: \"primary\", variant: \"outline\", class: \"border-border-brand text-fg-brand\" },\r\n { color: \"primary\", variant: \"ghost\", class: \"text-fg-brand\" },\r\n\r\n /* ── Secondary (neutral) ─────────────────────────────────────────── */\r\n { color: \"secondary\", variant: \"solid\", class: \"bg-bg-emphasis text-fg-default\" },\r\n { color: \"secondary\", variant: \"soft\", class: \"bg-bg-muted text-fg-muted\" },\r\n { color: \"secondary\", variant: \"outline\", class: \"border-border-default text-fg-default\" },\r\n { color: \"secondary\", variant: \"ghost\", class: \"text-fg-muted\" },\r\n\r\n /* ── Critical (danger) ───────────────────────────────────────────── */\r\n { color: \"critical\", variant: \"solid\", class: \"bg-bg-danger text-fg-on-danger\" },\r\n { color: \"critical\", variant: \"soft\", class: \"bg-bg-danger-muted text-fg-danger\" },\r\n { color: \"critical\", variant: \"outline\", class: \"border-border-danger-muted text-fg-danger\" },\r\n { color: \"critical\", variant: \"ghost\", class: \"text-fg-danger\" },\r\n\r\n /* ── Success ─────────────────────────────────────────────────────── */\r\n { color: \"success\", variant: \"solid\", class: \"bg-bg-success text-fg-on-success\" },\r\n { color: \"success\", variant: \"soft\", class: \"bg-bg-success-muted text-fg-success\" },\r\n { color: \"success\", variant: \"outline\", class: \"border-border-success-muted text-fg-success\" },\r\n { color: \"success\", variant: \"ghost\", class: \"text-fg-success\" },\r\n\r\n /* ── Warning ─────────────────────────────────────────────────────── */\r\n { color: \"warning\", variant: \"solid\", class: \"bg-bg-warning text-fg-on-warning\" },\r\n { color: \"warning\", variant: \"soft\", class: \"bg-bg-warning-muted text-fg-warning\" },\r\n { color: \"warning\", variant: \"outline\", class: \"border-border-warning-muted text-fg-warning\" },\r\n { color: \"warning\", variant: \"ghost\", class: \"text-fg-warning\" },\r\n\r\n /* ── Info ────────────────────────────────────────────────────────── */\r\n { color: \"info\", variant: \"solid\", class: \"bg-bg-info text-fg-on-info\" },\r\n { color: \"info\", variant: \"soft\", class: \"bg-bg-info-muted text-fg-info\" },\r\n { color: \"info\", variant: \"outline\", class: \"border-border-info-muted text-fg-info\" },\r\n { color: \"info\", variant: \"ghost\", class: \"text-fg-info\" },\r\n ],\r\n\r\n defaultVariants: {\r\n color: \"secondary\",\r\n variant: \"soft\",\r\n size: \"md\",\r\n shape: \"default\",\r\n },\r\n});\r\n\r\nexport type BadgeVariantProps = VariantProps<typeof badgeVariants>;\r\n\r\nexport interface BadgeProps\r\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\">,\r\n BadgeVariantProps {\r\n asChild?: boolean;\r\n}\r\n\r\nfunction Badge({ className, color, variant, size, shape, ...props }: BadgeProps) {\r\n return (\r\n <span\r\n className={badgeVariants({ color, variant, size, shape, className })}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport { Badge, badgeVariants };\r\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\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n/**\r\n * Card — superfície de conteúdo, com `size` que escala o padding interno de TODAS as\r\n * partes e um `variant` de header em faixa.\r\n *\r\n * ## `size` — 3 densidades, propagadas por contexto\r\n *\r\n * lg → 24px (pad-4xl)\r\n * md → 20px (pad-3xl) ← DEFAULT\r\n * sm → 16px (pad-2xl)\r\n *\r\n * O valor é declarado **uma vez no `<Card>`** e chega em `CardHeader`/`CardContent`/\r\n * `CardFooter` por `CardSizeContext` — o mesmo mecanismo que o `Tabs` usa pro\r\n * `variant`. Repetir `size` nas partes é o erro que deixa uma seção com densidade\r\n * diferente do resto do card.\r\n *\r\n * ⚠️ **`md` (20px) é o default, e antes era 24px.** Mudança deliberada de 2026-08-19:\r\n * 24 virou o `lg`. Card que dependia dos 24px passa `size=\"lg\"`.\r\n *\r\n * ⚠️ Não existe 18px na escala de `pad` (vai 16 → 20 → 24), então `sm` é **16px**.\r\n *\r\n * ## O padding é dividido entre o Card e as partes — e é de propósito\r\n *\r\n * O `Card` carrega o padding **vertical** (`py-*`); cada parte carrega o\r\n * **horizontal** (`px-*`). Assim o `gap` do Card controla o respiro ENTRE seções sem\r\n * somar com padding de cada uma, e uma parte pode ser full-bleed (tabela que encosta\r\n * nas bordas, imagem de topo) só zerando o próprio `px`.\r\n *\r\n * ## `CardHeader variant=\"banded\"` — header em faixa\r\n *\r\n * Fundo `bg-subtle` + borda embaixo, encostado nas bordas do card. Espelha o padrão\r\n * das seções de `#/order-detail` e `?app=edit-page`, que era composição local do\r\n * showcase e agora é variante do componente.\r\n *\r\n * Mecânica: a faixa precisa **cancelar o padding vertical do Card** pra encostar no\r\n * topo (`-mt-*` do mesmo tamanho do `size`) e arredondar as quinas de cima\r\n * (`rounded-t-*`) — em vez de `overflow-hidden` no Card, que clipa qualquer coisa que\r\n * precise vazar. Ela também troca o `px-*` por padding nos 4 lados, senão o texto\r\n * cola na borda de cima.\r\n */\r\n\r\n/* ── size: contexto ──────────────────────────────────────────────────────── */\r\n\r\ntype CardSize = \"sm\" | \"md\" | \"lg\"\r\n\r\nconst CardSizeContext = React.createContext<CardSize>(\"md\")\r\n\r\n/**\r\n * Padding interno por size — via `pad-card-*`, a família de token **dedicada a\r\n * padding de card** (`tokens/.../components/spacing.ts`), não a escala genérica\r\n * `pad-*`. Os valores são iguais (16/20/24), mas o semântico existe pra isto: mudar\r\n * a densidade de card no futuro é mexer em `padCard`, num lugar, sem caçar\r\n * `pad-3xl` espalhado.\r\n *\r\n * A família é simétrica desde 2026-08-19 (`sm`/`md`/`lg`). O nome antigo `pad-card-base`\r\n * continua existindo como **alias de `md`**, só pra não quebrar quem já o consome — não\r\n * usar aqui nem em código novo. Ver o cabeçalho de `components/spacing.ts`.\r\n */\r\nconst PAD_X: Record<CardSize, string> = {\r\n sm: \"px-pad-card-sm\",\r\n md: \"px-pad-card-md\",\r\n lg: \"px-pad-card-lg\",\r\n}\r\nconst PAD_Y: Record<CardSize, string> = {\r\n sm: \"py-pad-card-sm\",\r\n md: \"py-pad-card-md\",\r\n lg: \"py-pad-card-lg\",\r\n}\r\nconst PAD_ALL: Record<CardSize, string> = {\r\n sm: \"p-pad-card-sm\",\r\n md: \"p-pad-card-md\",\r\n lg: \"p-pad-card-lg\",\r\n}\r\n/** Cancela o `py` do Card, pra faixa encostar no topo. */\r\nconst PULL_TOP: Record<CardSize, string> = {\r\n sm: \"-mt-pad-card-sm\",\r\n md: \"-mt-pad-card-md\",\r\n lg: \"-mt-pad-card-lg\",\r\n}\r\n\r\n/* ── Card ────────────────────────────────────────────────────────────────── */\r\n\r\nconst Card = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & { size?: CardSize }\r\n>(({ className, size = \"md\", ...props }, ref) => (\r\n <CardSizeContext.Provider value={size}>\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-col gap-gp-4xl rounded-radius-base bg-bg-surface text-body-md text-fg-default shadow-sh-lg ring-1 ring-fg-default/5 dark:ring-fg-default/10\",\r\n PAD_Y[size],\r\n className\r\n )}\r\n {...props}\r\n />\r\n </CardSizeContext.Provider>\r\n))\r\nCard.displayName = \"Card\"\r\n\r\n/* ── CardHeader ──────────────────────────────────────────────────────────── */\r\n\r\ntype CardHeaderVariant = \"plain\" | \"banded\"\r\n\r\n/**\r\n * Não há contexto de variante aqui de propósito. Houve um, por ~20 minutos em\r\n * 2026-08-19, pra a faixa deixar o título semibold enquanto o header plano ficava\r\n * medium — até descobrir que o preset `text-title-md` **já é 600** e que o `medium`\r\n * era um override indevido no `CardTitle`. Removido o override, o peso é o mesmo nas\r\n * duas variantes e o contexto virou código morto.\r\n */\r\nconst CardHeader = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & { variant?: CardHeaderVariant }\r\n>(({ className, variant = \"plain\", ...props }, ref) => {\r\n const size = React.useContext(CardSizeContext)\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n // `gap-gp-2xs` (2px) e não `gp-sm` (6px): título e subtítulo de card são UMA\r\n // unidade de leitura, não dois blocos. Com 6px o subtítulo lê como parágrafo\r\n // solto sob o título; com 2px lê como legenda dele. É o valor que o showcase\r\n // já aplicava no helper local dos cards de gráfico — a diferença apareceu ao\r\n // comparar o mesmo card montado com o helper e com este componente, e o\r\n // mantenedor escolheu o compacto como padrão (2026-08-19).\r\n //\r\n // ⚠️ Divergência DELIBERADA do shadcn upstream, que usa 6px: ao re-sincronizar\r\n // este primitivo, não reverter (mesma classe de cuidado da L-040).\r\n \"grid auto-rows-min items-start gap-gp-2xs\",\r\n variant === \"banded\"\r\n ? cn(\r\n // Faixa: padding nos 4 lados (o `px` sozinho deixaria o texto colado no\r\n // topo), fundo, divisória, e o `-mt` que cancela o `py` do Card pra\r\n // encostar na borda. `rounded-t` em vez de `overflow-hidden` no Card —\r\n // clipar o Card quebraria qualquer coisa que precise vazar dele.\r\n PAD_ALL[size],\r\n PULL_TOP[size],\r\n // `bg-subtle` + `border-subtle`: os mesmos tokens da referência\r\n // (`SectionCard` do order-detail / `?app=edit-page`), escolhidos pelo\r\n // mantenedor em 2026-08-19.\r\n //\r\n // ⚠️ Medido, pra quem for mexer não achar que é descuido: no **dark** o\r\n // `bg-subtle` é 1% de branco sobre um surface de 0.225 — ~0,8pp de\r\n // diferença, uma faixa **muito** discreta. No light são 0.973 sobre\r\n // 1.0, que lê normalmente. É restrição intencional, não bug: a decisão\r\n // veio de quem desenhou a tela de referência. Se um dia o dark precisar\r\n // de mais presença, `bg-muted` é 3× (e no light é idêntico ao subtle).\r\n \"rounded-t-radius-base border-b border-border-subtle bg-bg-subtle\"\r\n )\r\n : PAD_X[size],\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n})\r\nCardHeader.displayName = \"CardHeader\"\r\n\r\nconst CardTitle = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n // SEM `font-*`: o peso vem do preset. `text-title-md` já emite `font-weight: 600`\r\n // (conferido no tema gerado), o token declara *\"title: 600 (semibold) — mais usado\r\n // no projeto\"*, e o `DESIGN.md` lista `title-md · 600 · Card title (default)`.\r\n //\r\n // Aqui havia um `font-medium` que **anulava o próprio preset** e derrubava o título\r\n // pra 500 — sem estar documentado em lugar nenhum, e contra o spec do DS. Foi achado\r\n // em 2026-08-19 comparando o mesmo card montado com o helper local do showcase (que\r\n // acertava, `font-semibold`) e com este componente. Não reintroduzir: quem quer outro\r\n // peso passa `font-*` no `className`, que é o caminho de exceção.\r\n className={cn(\"text-title-md text-fg-default\", className)}\r\n {...props}\r\n />\r\n))\r\nCardTitle.displayName = \"CardTitle\"\r\n\r\nconst CardDescription = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n // `caption-md` (12px/400) e não `body-md` (14/400) — decisão do mantenedor\r\n // 2026-08-19: 14 competia com o conteúdo do card.\r\n //\r\n // Entre os dois presets de 12px, `caption-md` e não `body-xs`, por PESO: `body-xs`\r\n // é 12/**500**, o que deixaria o subtítulo mais pesado que os 400 de hoje e pediria\r\n // um `font-normal` por cima — reintroduzindo o override de preset que acabou de sair\r\n // do `CardTitle`. `caption-md` é 12/400: só o tamanho muda. E é o que o\r\n // `CardCheckbox.description` já usa, que é o análogo mais próximo no DS.\r\n className={cn(\"text-caption-md text-fg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nCardDescription.displayName = \"CardDescription\"\r\n\r\n/* ── CardContent · CardFooter ────────────────────────────────────────────── */\r\n\r\nconst CardContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const size = React.useContext(CardSizeContext)\r\n return <div ref={ref} className={cn(PAD_X[size], className)} {...props} />\r\n})\r\nCardContent.displayName = \"CardContent\"\r\n\r\nconst CardFooter = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const size = React.useContext(CardSizeContext)\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center\", PAD_X[size], className)}\r\n {...props}\r\n />\r\n )\r\n})\r\nCardFooter.displayName = \"CardFooter\"\r\n\r\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\r\nexport type { CardSize, CardHeaderVariant }\r\n","import * as React from \"react\"\r\nimport useEmblaCarousel, {\r\n type UseEmblaCarouselType,\r\n} from \"embla-carousel-react\"\r\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Button } from \"@/components/ui/Button\"\r\n\r\ntype CarouselApi = UseEmblaCarouselType[1]\r\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\r\ntype CarouselOptions = UseCarouselParameters[0]\r\ntype CarouselPlugin = UseCarouselParameters[1]\r\n\r\ntype CarouselProps = {\r\n opts?: CarouselOptions\r\n plugins?: CarouselPlugin\r\n orientation?: \"horizontal\" | \"vertical\"\r\n setApi?: (api: CarouselApi) => void\r\n}\r\n\r\ntype CarouselContextProps = {\r\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\r\n api: ReturnType<typeof useEmblaCarousel>[1]\r\n scrollPrev: () => void\r\n scrollNext: () => void\r\n canScrollPrev: boolean\r\n canScrollNext: boolean\r\n /** Índice do snap visível — o que o `CarouselDots` marca como atual. */\r\n selectedIndex: number\r\n /**\r\n * Um item por PONTO DE PARADA, não por slide.\r\n *\r\n * Vem do `api.scrollSnapList()` de propósito: com `slidesToScroll` ou vários slides\r\n * visíveis por vez, o número de paradas é menor que o de slides — contar\r\n * `CarouselItem` daria mais bolinhas do que posições alcançáveis, e clicar nas\r\n * últimas não iria a lugar nenhum.\r\n */\r\n scrollSnaps: number[]\r\n scrollTo: (index: number) => void\r\n} & CarouselProps\r\n\r\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\r\n\r\nfunction useCarousel() {\r\n const context = React.useContext(CarouselContext)\r\n\r\n if (!context) {\r\n throw new Error(\"useCarousel must be used within a <Carousel />\")\r\n }\r\n\r\n return context\r\n}\r\n\r\nconst Carousel = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\r\n>(\r\n (\r\n {\r\n orientation = \"horizontal\",\r\n opts,\r\n setApi,\r\n plugins,\r\n className,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [carouselRef, api] = useEmblaCarousel(\r\n {\r\n ...opts,\r\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\r\n },\r\n plugins\r\n )\r\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\r\n const [canScrollNext, setCanScrollNext] = React.useState(false)\r\n const [selectedIndex, setSelectedIndex] = React.useState(0)\r\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([])\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) {\r\n return\r\n }\r\n\r\n setCanScrollPrev(api.canScrollPrev())\r\n setCanScrollNext(api.canScrollNext())\r\n setSelectedIndex(api.selectedScrollSnap())\r\n }, [])\r\n\r\n /**\r\n * A lista de paradas muda em `reInit`, não em `select`.\r\n *\r\n * Separada do `onSelect` porque os gatilhos são outros: slide adicionado/removido,\r\n * resize que muda quantos cabem, troca de `slidesToScroll`. Calcular no `select`\r\n * também funcionaria e recomputaria a cada arraste, sem motivo.\r\n */\r\n const onInit = React.useCallback((api: CarouselApi) => {\r\n if (!api) {\r\n return\r\n }\r\n\r\n setScrollSnaps(api.scrollSnapList())\r\n }, [])\r\n\r\n const scrollPrev = React.useCallback(() => {\r\n api?.scrollPrev()\r\n }, [api])\r\n\r\n const scrollNext = React.useCallback(() => {\r\n api?.scrollNext()\r\n }, [api])\r\n\r\n const scrollTo = React.useCallback(\r\n (index: number) => {\r\n api?.scrollTo(index)\r\n },\r\n [api]\r\n )\r\n\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === \"ArrowLeft\") {\r\n event.preventDefault()\r\n scrollPrev()\r\n } else if (event.key === \"ArrowRight\") {\r\n event.preventDefault()\r\n scrollNext()\r\n }\r\n },\r\n [scrollPrev, scrollNext]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (!api || !setApi) {\r\n return\r\n }\r\n\r\n setApi(api)\r\n }, [api, setApi])\r\n\r\n React.useEffect(() => {\r\n if (!api) {\r\n return\r\n }\r\n\r\n onInit(api)\r\n onSelect(api)\r\n api.on(\"reInit\", onInit)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n\r\n return () => {\r\n // O `off(\"reInit\")` não existia aqui — só o de \"select\". Somando os dois\r\n // listeners novos, ficariam três órfãos por remontagem.\r\n api?.off(\"reInit\", onInit)\r\n api?.off(\"reInit\", onSelect)\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onInit, onSelect])\r\n\r\n return (\r\n <CarouselContext.Provider\r\n value={{\r\n carouselRef,\r\n api: api,\r\n opts,\r\n orientation:\r\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\r\n scrollPrev,\r\n scrollNext,\r\n canScrollPrev,\r\n canScrollNext,\r\n selectedIndex,\r\n scrollSnaps,\r\n scrollTo,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n onKeyDownCapture={handleKeyDown}\r\n className={cn(\"relative\", className)}\r\n role=\"region\"\r\n aria-roledescription=\"carousel\"\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </CarouselContext.Provider>\r\n )\r\n }\r\n)\r\nCarousel.displayName = \"Carousel\"\r\n\r\nconst CarouselContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { carouselRef, orientation } = useCarousel()\r\n\r\n return (\r\n /**\r\n * A folga de 4px existe pra borda do slide não ser comida pelo corte.\r\n *\r\n * O Embla posiciona o trilho com `translate` em pixel FRACIONÁRIO, e no padrão de\r\n * gutter do shadcn (`-ml-4` no trilho + `pl-4` no item) a borda esquerda do conteúdo\r\n * cai **exatamente** sobre o limite do `overflow-hidden`. Medido em 2026-08-24, no\r\n * slide 3: limite do clip em 651.5px e a borda do card em 649.99px — 1.5px inteiros\r\n * do lado de fora, então a borda de 1px desaparecia. E variava entre medições, porque\r\n * depende de onde o Embla para no sub-pixel: às vezes 2px dentro, às vezes fora. Só o\r\n * primeiro slide era imune (translate 0, sem fração) — o relato foi exatamente \"do\r\n * card 2 pra frente\".\r\n *\r\n * `overflow` corta no limite do PADDING box, então o padding dá a folga; a margem\r\n * negativa devolve a posição, pra geometria externa não mudar. Não revela o slide\r\n * vizinho: o que aparece nessa faixa é o gutter transparente de 16px do item.\r\n *\r\n * **4px e não 2px** porque o gutter do shadcn é só do lado ESQUERDO (`-ml`/`pl`): a\r\n * direita do último card visível encosta no limite por construção. Com 2px, o caso de\r\n * `slidesToScroll: 2` media −0.06px de folga na direita na última parada — o mesmo\r\n * defeito, menor. Com 4px as duas bordas ficam positivas em todas as paradas.\r\n */\r\n <div\r\n ref={carouselRef}\r\n className={cn(\r\n \"overflow-hidden\",\r\n // A folga vai no EIXO que rola: no vertical o gutter é `-mt`/`pt` e quem encosta\r\n // no corte é a borda de cima. Padding no eixo errado não conserta nada.\r\n orientation === \"horizontal\"\r\n ? \"px-sp-xs -mx-sp-xs\"\r\n : \"py-sp-xs -my-sp-xs\"\r\n )}\r\n >\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex\",\r\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n )\r\n})\r\nCarouselContent.displayName = \"CarouselContent\"\r\n\r\nconst CarouselItem = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { orientation } = useCarousel()\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n aria-roledescription=\"slide\"\r\n className={cn(\r\n \"min-w-0 shrink-0 grow-0 basis-full\",\r\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n})\r\nCarouselItem.displayName = \"CarouselItem\"\r\n\r\nconst CarouselPrevious = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<typeof Button>\r\n>(({ className, ...props }, ref) => {\r\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\r\n\r\n return (\r\n <Button\r\n ref={ref}\r\n color=\"secondary\"\r\n variant=\"outline\"\r\n size=\"icon-xs\"\r\n className={cn(\r\n \"absolute rounded-radius-full\",\r\n orientation === \"horizontal\"\r\n ? \"-left-12 top-1/2 -translate-y-1/2\"\r\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\r\n className\r\n )}\r\n disabled={!canScrollPrev}\r\n onClick={scrollPrev}\r\n {...props}\r\n >\r\n <ArrowLeft />\r\n <span className=\"sr-only\">Previous slide</span>\r\n </Button>\r\n )\r\n})\r\nCarouselPrevious.displayName = \"CarouselPrevious\"\r\n\r\nconst CarouselNext = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<typeof Button>\r\n>(({ className, ...props }, ref) => {\r\n const { orientation, scrollNext, canScrollNext } = useCarousel()\r\n\r\n return (\r\n <Button\r\n ref={ref}\r\n color=\"secondary\"\r\n variant=\"outline\"\r\n size=\"icon-xs\"\r\n className={cn(\r\n \"absolute rounded-radius-full\",\r\n orientation === \"horizontal\"\r\n ? \"-right-12 top-1/2 -translate-y-1/2\"\r\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\r\n className\r\n )}\r\n disabled={!canScrollNext}\r\n onClick={scrollNext}\r\n {...props}\r\n >\r\n <ArrowRight />\r\n <span className=\"sr-only\">Next slide</span>\r\n </Button>\r\n )\r\n})\r\nCarouselNext.displayName = \"CarouselNext\"\r\n\r\n/**\r\n * `CarouselDots` — indicador de posição, clicável.\r\n *\r\n * Decisões que não são óbvias no código:\r\n *\r\n * - **Um ponto por PARADA, não por slide** (`scrollSnapList()`). Com vários slides\r\n * visíveis por vez ou `slidesToScroll`, contar `CarouselItem` daria bolinhas que não\r\n * levam a lugar nenhum.\r\n * - **Some com 1 parada só.** Indicador de posição única não informa nada e ainda ocupa\r\n * linha — o `return null` é o comportamento certo, não um caso não tratado.\r\n * - **Alvo de 16px com bolinha de 8px dentro.** A bolinha sozinha seria um alvo de toque\r\n * de 8px; o botão amplia sem crescer o ponto (`place-items-center`). Os 8px seguem a\r\n * receita do `groupDot` da `List` — não há token de size abaixo de 16px.\r\n *\r\n * ⚠️ **Era 24px, e o espaçamento medido explicou a troca.** Com alvo de 24px e\r\n * `gap-gp-xs`, o espaço VISÍVEL entre pontos era **20px** — e só 4px vinham do gap: os\r\n * outros 16 eram sobra dos dois alvos. Baixar só o gap levaria a 18px, quase nada. Com\r\n * 16px de alvo e `gap-gp-2xs`, o espaço visível cai pra **10px**, metade.\r\n *\r\n * O custo é real e a escolha é deliberada: 16px fica abaixo dos 24px do WCAG 2.5.8.\r\n * Aceitável AQUI porque é indicador de posição, não ação destrutiva — errar o toque leva\r\n * ao slide vizinho e se desfaz com um toque. Não use este raciocínio pra encolher alvo de\r\n * ação com consequência.\r\n * - **`aria-current`, não `role=\"tab\"`.** Tab implica `tabpanel` associado por id, o que\r\n * este carrossel não tem — declarar a relação sem ela é pior que não declarar.\r\n */\r\nconst CarouselDots = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { scrollSnaps, selectedIndex, scrollTo, orientation } = useCarousel()\r\n\r\n if (scrollSnaps.length <= 1) {\r\n return null\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n aria-label=\"Posição no carrossel\"\r\n className={cn(\r\n \"flex items-center justify-center gap-gp-2xs\",\r\n orientation === \"vertical\" && \"flex-col\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {scrollSnaps.map((_, i) => {\r\n const atual = i === selectedIndex\r\n return (\r\n <button\r\n key={i}\r\n type=\"button\"\r\n onClick={() => scrollTo(i)}\r\n aria-label={`Ir para ${i + 1} de ${scrollSnaps.length}`}\r\n aria-current={atual ? \"true\" : undefined}\r\n className={cn(\r\n \"grid size-comp-3xs shrink-0 cursor-pointer place-items-center\",\r\n \"rounded-radius-full\",\r\n // Padrão 1 — focus estático\r\n \"focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-brand\"\r\n )}\r\n >\r\n <span\r\n className={cn(\r\n \"size-[8px] rounded-radius-full transition-colors\",\r\n atual ? \"bg-bg-brand\" : \"bg-bg-emphasis hover:bg-bg-accent\"\r\n )}\r\n />\r\n </button>\r\n )\r\n })}\r\n </div>\r\n )\r\n})\r\nCarouselDots.displayName = \"CarouselDots\"\r\n\r\nexport {\r\n type CarouselApi,\r\n Carousel,\r\n CarouselContent,\r\n CarouselDots,\r\n CarouselItem,\r\n CarouselPrevious,\r\n CarouselNext,\r\n}\r\n","import * as React from \"react\"\r\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst ContextMenu = ContextMenuPrimitive.Root\r\n\r\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger\r\n\r\nconst ContextMenuGroup = ContextMenuPrimitive.Group\r\n\r\nconst ContextMenuPortal = ContextMenuPrimitive.Portal\r\n\r\nconst ContextMenuSub = ContextMenuPrimitive.Sub\r\n\r\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup\r\n\r\nconst ContextMenuSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <ContextMenuPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-radius-sm px-pad-lg py-pad-md text-body-sm text-fg-muted outline-none transition-colors focus:bg-bg-muted focus:text-fg-default [&_svg]:text-fg-muted focus:[&_svg]:text-fg-default 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 h-4 w-4\" />\r\n </ContextMenuPrimitive.SubTrigger>\r\n))\r\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName\r\n\r\nconst ContextMenuSubContent = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.SubContent\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden relative rounded-[12px] border border-border-default bg-bg-dropdown p-pad-sm text-fg-muted shadow-sh-lg outline-float before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName\r\n\r\nconst ContextMenuContent = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.Portal>\r\n <ContextMenuPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden relative rounded-[12px] border border-border-default bg-bg-dropdown p-pad-sm text-fg-muted shadow-sh-lg outline-float before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 animate-in fade-in-80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </ContextMenuPrimitive.Portal>\r\n))\r\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName\r\n\r\nconst ContextMenuItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <ContextMenuPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-radius-sm px-pad-lg py-pad-md text-body-sm text-fg-muted outline-none transition-colors focus:bg-bg-muted focus:text-fg-default [&_svg]:text-fg-muted focus:[&_svg]:text-fg-default data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName\r\n\r\nconst ContextMenuCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <ContextMenuPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-radius-sm py-pad-md pl-8 pr-2 text-body-sm text-fg-muted outline-none transition-colors focus:bg-bg-muted focus:text-fg-default [&_svg]:text-fg-muted focus:[&_svg]:text-fg-default data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <ContextMenuPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </ContextMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </ContextMenuPrimitive.CheckboxItem>\r\n))\r\nContextMenuCheckboxItem.displayName =\r\n ContextMenuPrimitive.CheckboxItem.displayName\r\n\r\nconst ContextMenuRadioItem = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <ContextMenuPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-radius-sm py-pad-md pl-8 pr-2 text-body-sm text-fg-muted outline-none transition-colors focus:bg-bg-muted focus:text-fg-default [&_svg]:text-fg-muted focus:[&_svg]:text-fg-default data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <ContextMenuPrimitive.ItemIndicator>\r\n <Circle className=\"h-2 w-2 fill-current\" />\r\n </ContextMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </ContextMenuPrimitive.RadioItem>\r\n))\r\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName\r\n\r\nconst ContextMenuLabel = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <ContextMenuPrimitive.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\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName\r\n\r\nconst ContextMenuSeparator = React.forwardRef<\r\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <ContextMenuPrimitive.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\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName\r\n\r\nconst ContextMenuShortcut = ({\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\nContextMenuShortcut.displayName = \"ContextMenuShortcut\"\r\n\r\nexport {\r\n ContextMenu,\r\n ContextMenuTrigger,\r\n ContextMenuContent,\r\n ContextMenuItem,\r\n ContextMenuCheckboxItem,\r\n ContextMenuRadioItem,\r\n ContextMenuLabel,\r\n ContextMenuSeparator,\r\n ContextMenuShortcut,\r\n ContextMenuGroup,\r\n ContextMenuPortal,\r\n ContextMenuSub,\r\n ContextMenuSubContent,\r\n ContextMenuSubTrigger,\r\n ContextMenuRadioGroup,\r\n}\r\n","import * as React from \"react\"\r\nimport { Drawer as DrawerPrimitive } from \"vaul\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst Drawer = ({\r\n shouldScaleBackground = true,\r\n ...props\r\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\r\n <DrawerPrimitive.Root\r\n shouldScaleBackground={shouldScaleBackground}\r\n {...props}\r\n />\r\n)\r\nDrawer.displayName = \"Drawer\"\r\n\r\nconst DrawerTrigger = DrawerPrimitive.Trigger\r\n\r\nconst DrawerPortal = DrawerPrimitive.Portal\r\n\r\nconst DrawerClose = DrawerPrimitive.Close\r\n\r\nconst DrawerOverlay = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DrawerPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\"fixed inset-0 z-50 bg-black/80\", className)}\r\n {...props}\r\n />\r\n))\r\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName\r\n\r\nconst DrawerContent = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <DrawerPortal>\r\n <DrawerOverlay />\r\n <DrawerPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border border-border-default bg-bg-canvas\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-bg-muted\" />\r\n {children}\r\n </DrawerPrimitive.Content>\r\n </DrawerPortal>\r\n))\r\nDrawerContent.displayName = \"DrawerContent\"\r\n\r\nconst DrawerHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)}\r\n {...props}\r\n />\r\n)\r\nDrawerHeader.displayName = \"DrawerHeader\"\r\n\r\nconst DrawerFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\r\n {...props}\r\n />\r\n)\r\nDrawerFooter.displayName = \"DrawerFooter\"\r\n\r\nconst DrawerTitle = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DrawerPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-lg font-semibold leading-none tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName\r\n\r\nconst DrawerDescription = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DrawerPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-sm text-fg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName\r\n\r\nexport {\r\n Drawer,\r\n DrawerPortal,\r\n DrawerOverlay,\r\n DrawerTrigger,\r\n DrawerClose,\r\n DrawerContent,\r\n DrawerHeader,\r\n DrawerFooter,\r\n DrawerTitle,\r\n DrawerDescription,\r\n}\r\n","import * as React from \"react\";\r\nimport { OTPInput, OTPInputContext } from \"input-otp\";\r\nimport { cva } from \"class-variance-authority\";\r\nimport { Dot } from \"lucide-react\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n/**\r\n * InputOTP — entrada de código (OTP/2FA), tokenizado iGreen.\r\n *\r\n * ## Irmão do `Input` de texto, por decisão (2026-08-18)\r\n *\r\n * O slot usa a MESMA superfície do `input.tsx`: `bg-bg-input dark:bg-bg-muted`,\r\n * `border-border-input`, e foco por **borda verde + `shadow-sh-ring`** — não por\r\n * `ring-4`. Os `size` e `state` são os mesmos 4 de cada, com os mesmos tokens\r\n * `form-*`, então um OTP e um campo de texto lado a lado têm altura idêntica.\r\n *\r\n * size xxs = 28px (form-xs) · xs = 32px (form-sm) · sm = 36px (form-md) · md = 40px (form-lg)\r\n * state default · error · warning · success (mesmos tokens do Input)\r\n *\r\n * Antes disto o slot era `size-form-lg` cravado, sem bg, com `border-border-default`\r\n * e `ring-4 ring-ring-brand` no ativo — um campo de formulário que não parecia\r\n * com nenhum outro campo de formulário do DS.\r\n *\r\n * ## Variantes visuais\r\n *\r\n * connected slots colados, radius só nas pontas (DEFAULT — o look histórico)\r\n * outlined slots separados, borda e radius completos em cada\r\n * filled como outlined, com fundo e borda transparente\r\n * underline só a borda de baixo, sem fundo nem radius\r\n *\r\n * ## Por que `size`/`variant`/`state` vão por CONTEXTO e não por prop de slot\r\n *\r\n * O consumidor declara uma vez no root e os N slots herdam:\r\n *\r\n * <InputOTP maxLength={6} size=\"sm\" variant=\"outlined\" state=\"error\">\r\n *\r\n * A alternativa — repetir a prop em cada `<InputOTPSlot>` — erra silenciosamente\r\n * quando um slot fica de fora (fica de tamanho diferente no meio da fileira). O\r\n * `InputOTPGroup` também lê o contexto, porque `gap` e radius das pontas mudam\r\n * com a variante e são propriedade do GRUPO, não do slot.\r\n *\r\n * ⚠️ Não copie a receita do shadcn-studio (`className` no grupo com\r\n * `*:data-[slot=input-otp-slot]:rounded-lg`): ela usa Tailwind literal e\r\n * vocabulário da bridge (`bg-muted`), que não emitem CSS nos canais npm e\r\n * submódulo (L-039). Aqui a mesma capacidade vem por variante tokenizada.\r\n *\r\n * Composição: InputOTP > InputOTPGroup > InputOTPSlot (+ InputOTPSeparator).\r\n */\r\n\r\nexport type InputOTPVariant = \"connected\" | \"outlined\" | \"filled\" | \"underline\";\r\nexport type InputOTPSize = \"xxs\" | \"xs\" | \"sm\" | \"md\";\r\nexport type InputOTPState = \"default\" | \"error\" | \"warning\" | \"success\";\r\n\r\n/* ── Contexto de estilo ──────────────────────────────────────────────── */\r\n\r\ntype InputOTPStyleCtx = {\r\n variant: InputOTPVariant;\r\n size: InputOTPSize;\r\n state: InputOTPState;\r\n};\r\n\r\nconst DEFAULTS: InputOTPStyleCtx = {\r\n variant: \"connected\",\r\n size: \"md\",\r\n state: \"default\",\r\n};\r\n\r\nconst InputOTPStyleContext = React.createContext<InputOTPStyleCtx>(DEFAULTS);\r\n\r\n/* ── Slot ────────────────────────────────────────────────────────────── */\r\n\r\nconst slotVariants = cva(\r\n [\r\n \"relative flex items-center justify-center\",\r\n // Mesma superfície do input.tsx — ver o cabeçalho.\r\n \"bg-bg-input dark:bg-bg-muted\",\r\n \"text-fg-default tabular-nums\",\r\n \"transition-[border-color,box-shadow,background-color] outline-none\",\r\n ],\r\n {\r\n variants: {\r\n // Quadrado: a altura vem do MESMO token do Input, e a largura acompanha\r\n // pra o slot não virar retângulo. `size-form-*` = height e width juntos.\r\n size: {\r\n xxs: \"size-form-xs text-body-sm\",\r\n xs: \"size-form-sm text-body-sm\",\r\n sm: \"size-form-md text-body-md\",\r\n md: \"size-form-lg text-body-md\",\r\n },\r\n variant: {\r\n // Colados: cada slot desenha 3 lados; o 1º devolve a borda esquerda, e\r\n // as pontas recebem radius. Sem isso a fileira mostra borda dupla entre\r\n // slots vizinhos.\r\n connected: \"border-y border-r first:border-l\",\r\n outlined: \"border\",\r\n filled: \"border border-transparent\",\r\n // Sem fundo: a linha de baixo É o campo. `rounded-none` explícito\r\n // porque o radius das pontas do `connected` viria do grupo.\r\n underline: \"border-0 border-b-2 rounded-none bg-transparent dark:bg-transparent\",\r\n },\r\n // Cor de borda e anel de foco — os MESMOS pares do Input.\r\n state: {\r\n default: \"border-border-input\",\r\n error: \"border-border-danger-muted\",\r\n warning: \"border-border-warning-muted\",\r\n success: \"border-border-success-muted\",\r\n },\r\n /** Slot que o cursor está ocupando. O Radix não dá `:focus` aqui: o input\r\n * real é único e invisível, então o \"foco\" é estado do contexto do\r\n * `input-otp`, não do DOM. Daí ser variante e não `focus-visible:`. */\r\n active: { true: \"z-10\", false: \"\" },\r\n },\r\n compoundVariants: [\r\n // Foco = borda verde + anel, igual ao `focus-visible` do Input. Em erro/\r\n // aviso/sucesso a borda semântica MANDA (o usuário precisa continuar\r\n // vendo que o campo está inválido enquanto digita), e só o anel muda.\r\n { active: true, state: \"default\", class: \"border-border-brand shadow-sh-ring\" },\r\n { active: true, state: \"error\", class: \"shadow-sh-ring-danger\" },\r\n { active: true, state: \"warning\", class: \"shadow-sh-ring-warning\" },\r\n { active: true, state: \"success\", class: \"shadow-sh-ring-success\" },\r\n // Hover só onde há superfície pra reagir.\r\n { variant: \"connected\", class: \"hover:bg-bg-input-hover dark:hover:bg-bg-muted-hover\" },\r\n { variant: \"outlined\", class: \"hover:bg-bg-input-hover dark:hover:bg-bg-muted-hover\" },\r\n { variant: \"filled\", class: \"bg-bg-muted dark:bg-bg-muted hover:bg-bg-muted-hover\" },\r\n ],\r\n defaultVariants: { size: \"md\", variant: \"connected\", state: \"default\", active: false },\r\n },\r\n);\r\n\r\n/* ── Grupo ───────────────────────────────────────────────────────────── */\r\n\r\nconst groupVariants = cva(\"flex items-center\", {\r\n variants: {\r\n variant: {\r\n // Colados: zero gap, e o radius das pontas é do GRUPO (o slot não sabe se\r\n // é primeiro/último de um grupo quando há mais de um grupo na tela).\r\n connected: \"gap-0 [&>*:first-child]:rounded-l-radius-lg [&>*:last-child]:rounded-r-radius-lg\",\r\n outlined: \"gap-gp-md [&>*]:rounded-radius-lg\",\r\n filled: \"gap-gp-md [&>*]:rounded-radius-lg\",\r\n underline: \"gap-gp-md\",\r\n },\r\n // Radius acompanha o size, como no Input: os dois menores usam radius-md.\r\n size: { xxs: \"\", xs: \"\", sm: \"\", md: \"\" },\r\n },\r\n compoundVariants: [\r\n { variant: \"connected\", size: \"xxs\", class: \"[&>*:first-child]:rounded-l-radius-md [&>*:last-child]:rounded-r-radius-md\" },\r\n { variant: \"connected\", size: \"xs\", class: \"[&>*:first-child]:rounded-l-radius-md [&>*:last-child]:rounded-r-radius-md\" },\r\n { variant: \"outlined\", size: \"xxs\", class: \"[&>*]:rounded-radius-md\" },\r\n { variant: \"outlined\", size: \"xs\", class: \"[&>*]:rounded-radius-md\" },\r\n { variant: \"filled\", size: \"xxs\", class: \"[&>*]:rounded-radius-md\" },\r\n { variant: \"filled\", size: \"xs\", class: \"[&>*]:rounded-radius-md\" },\r\n ],\r\n defaultVariants: { variant: \"connected\", size: \"md\" },\r\n});\r\n\r\n/* ── Root ────────────────────────────────────────────────────────────── */\r\n\r\n/**\r\n * `Omit` que **distribui** sobre união. As props do `OTPInput` são uma união\r\n * discriminada (`render` XOR `children`), e `Omit<A | B, K>` colapsa a união num\r\n * objeto só — o discriminante se perde e o TS rejeita tanto `children` quanto\r\n * `render` (TS2322, \"Type 'InputOTPRenderFn' is not assignable to 'undefined'\").\r\n * Com `T extends any ? … : never` o Omit roda em cada membro e a união sobrevive.\r\n */\r\ntype DistributiveOmit<T, K extends keyof never> = T extends unknown ? Omit<T, K> : never;\r\n\r\n/**\r\n * Tipo, não `interface`: `interface extends` também colapsa a união acima.\r\n *\r\n * O `size` nativo do `<input>` (numérico) é omitido pra ceder o nome à nossa\r\n * variante — é a mesma decisão do `input.tsx`, que faz\r\n * `Omit<InputHTMLAttributes, \"size\">`. Sem isso: TS2430, e a mensagem não aponta\r\n * a causa.\r\n */\r\nexport type InputOTPProps = DistributiveOmit<\r\n React.ComponentPropsWithoutRef<typeof OTPInput>,\r\n \"size\"\r\n> & {\r\n /** Aparência dos slots. `connected` (default) = o look histórico do DS. */\r\n variant?: InputOTPVariant;\r\n /** Altura do slot, nos MESMOS tokens `form-*` do `Input`: 28/32/36/40px. */\r\n size?: InputOTPSize;\r\n /** Feedback de validação — mesmos pares de cor do `Input`. */\r\n state?: InputOTPState;\r\n};\r\n\r\nconst InputOTP = React.forwardRef<React.ElementRef<typeof OTPInput>, InputOTPProps>(\r\n ({ className, containerClassName, variant, size, state, ...props }, ref) => {\r\n const ctx = React.useMemo(\r\n () => ({\r\n variant: variant ?? DEFAULTS.variant,\r\n size: size ?? DEFAULTS.size,\r\n state: state ?? DEFAULTS.state,\r\n }),\r\n [variant, size, state],\r\n );\r\n\r\n return (\r\n <InputOTPStyleContext.Provider value={ctx}>\r\n {/* `children` NÃO é desestruturado de propósito: ele viaja dentro de\r\n `...props` pra preservar a união `render` XOR `children` do OTPInput.\r\n Extraí-lo e repassá-lo como children explícito reintroduz o TS2322. */}\r\n <OTPInput\r\n ref={ref}\r\n containerClassName={cn(\r\n \"flex items-center gap-gp-md has-[:disabled]:opacity-50\",\r\n containerClassName,\r\n )}\r\n className={cn(\"disabled:cursor-not-allowed\", className)}\r\n {...(props as React.ComponentPropsWithoutRef<typeof OTPInput>)}\r\n />\r\n </InputOTPStyleContext.Provider>\r\n );\r\n },\r\n);\r\nInputOTP.displayName = \"InputOTP\";\r\n\r\nconst InputOTPGroup = React.forwardRef<\r\n React.ElementRef<\"div\">,\r\n React.ComponentPropsWithoutRef<\"div\">\r\n>(({ className, ...props }, ref) => {\r\n const { variant, size } = React.useContext(InputOTPStyleContext);\r\n return (\r\n <div ref={ref} className={cn(groupVariants({ variant, size }), className)} {...props} />\r\n );\r\n});\r\nInputOTPGroup.displayName = \"InputOTPGroup\";\r\n\r\nexport interface InputOTPSlotProps extends React.ComponentPropsWithoutRef<\"div\"> {\r\n index: number;\r\n /** Override pontual. Em geral declare no `<InputOTP>` e deixe herdar. */\r\n variant?: InputOTPVariant;\r\n size?: InputOTPSize;\r\n state?: InputOTPState;\r\n}\r\n\r\nconst InputOTPSlot = React.forwardRef<React.ElementRef<\"div\">, InputOTPSlotProps>(\r\n ({ index, className, variant, size, state, ...props }, ref) => {\r\n const ctx = React.useContext(InputOTPStyleContext);\r\n const otp = React.useContext(OTPInputContext);\r\n const { char, hasFakeCaret, isActive } = otp.slots[index];\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-slot=\"input-otp-slot\"\r\n data-active={isActive ? \"true\" : undefined}\r\n className={cn(\r\n slotVariants({\r\n variant: variant ?? ctx.variant,\r\n size: size ?? ctx.size,\r\n state: state ?? ctx.state,\r\n active: isActive,\r\n }),\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {char}\r\n {hasFakeCaret && (\r\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\r\n <div className=\"h-4 w-px animate-caret-blink bg-fg-default duration-1000\" />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n },\r\n);\r\nInputOTPSlot.displayName = \"InputOTPSlot\";\r\n\r\nconst InputOTPSeparator = React.forwardRef<\r\n React.ElementRef<\"div\">,\r\n React.ComponentPropsWithoutRef<\"div\">\r\n>(({ className, children, ...props }, ref) => (\r\n <div ref={ref} role=\"separator\" className={cn(\"text-fg-muted\", className)} {...props}>\r\n {children ?? <Dot />}\r\n </div>\r\n));\r\nInputOTPSeparator.displayName = \"InputOTPSeparator\";\r\n\r\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator, slotVariants };\r\n","import * as React from \"react\"\r\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n/**\r\n * Label — alinhado com `.tbl-form-label` do design-and-table-v2.\r\n * Specs: 13px / 600 / fg-default / tracking 0.01em — boa prática WCAG\r\n * pra labels de form (contraste maior que helper text).\r\n *\r\n * Nota: usa `text-[13px]` literal (não preset `body-sm`) pra manter\r\n * `leading-none` previsível na inspeção — preset DS carrega lineHeight\r\n * 18px que pode conflitar com leading-none em alguns navegadores.\r\n */\r\nconst labelVariants = cva(\r\n \"text-body-sm font-semibold tracking-[0.01em] text-fg-default dark:text-fg-muted leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\r\n)\r\n\r\nconst Label = React.forwardRef<\r\n React.ElementRef<typeof LabelPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\r\n VariantProps<typeof labelVariants>\r\n>(({ className, ...props }, ref) => (\r\n <LabelPrimitive.Root\r\n ref={ref}\r\n className={cn(labelVariants(), className)}\r\n {...props}\r\n />\r\n))\r\nLabel.displayName = LabelPrimitive.Root.displayName\r\n\r\nexport { Label }\r\n","import * as React from \"react\"\r\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\"\r\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nfunction MenubarMenu({\r\n ...props\r\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\r\n return <MenubarPrimitive.Menu {...props} />\r\n}\r\n\r\nfunction MenubarGroup({\r\n ...props\r\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\r\n return <MenubarPrimitive.Group {...props} />\r\n}\r\n\r\nfunction MenubarPortal({\r\n ...props\r\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\r\n return <MenubarPrimitive.Portal {...props} />\r\n}\r\n\r\nfunction MenubarRadioGroup({\r\n ...props\r\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\r\n return <MenubarPrimitive.RadioGroup {...props} />\r\n}\r\n\r\nfunction MenubarSub({\r\n ...props\r\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\r\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />\r\n}\r\n\r\nconst Menubar = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"flex h-10 items-center space-x-1 rounded-radius-lg border border-border-default bg-bg-surface p-pad-xs\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nMenubar.displayName = MenubarPrimitive.Root.displayName\r\n\r\nconst MenubarTrigger = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-radius-sm px-pad-lg py-pad-md text-body-sm font-semibold outline-none focus:bg-bg-muted focus:text-fg-default data-[state=open]:bg-bg-muted data-[state=open]:text-fg-default\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName\r\n\r\nconst MenubarSubTrigger = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.SubTrigger>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, children, ...props }, ref) => (\r\n <MenubarPrimitive.SubTrigger\r\n ref={ref}\r\n className={cn(\r\n \"flex cursor-default select-none items-center rounded-radius-sm px-pad-lg py-pad-md text-body-sm text-fg-muted outline-none transition-colors focus:bg-bg-muted focus:text-fg-default [&_svg]:text-fg-muted focus:[&_svg]:text-fg-default 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 h-4 w-4\" />\r\n </MenubarPrimitive.SubTrigger>\r\n))\r\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName\r\n\r\nconst MenubarSubContent = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.SubContent>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.SubContent\r\n ref={ref}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden relative rounded-[12px] border border-border-default bg-bg-dropdown p-pad-sm text-fg-muted shadow-sh-lg outline-float before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-menubar-content-transform-origin]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName\r\n\r\nconst MenubarContent = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\r\n>(\r\n (\r\n { className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props },\r\n ref\r\n ) => (\r\n <MenubarPrimitive.Portal>\r\n <MenubarPrimitive.Content\r\n ref={ref}\r\n align={align}\r\n alignOffset={alignOffset}\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 min-w-[12rem] overflow-hidden relative rounded-[12px] border border-border-default bg-bg-dropdown p-pad-sm text-fg-muted shadow-sh-lg outline-float before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-menubar-content-transform-origin]\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </MenubarPrimitive.Portal>\r\n )\r\n)\r\nMenubarContent.displayName = MenubarPrimitive.Content.displayName\r\n\r\nconst MenubarItem = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <MenubarPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-radius-sm px-pad-lg py-pad-md text-body-sm text-fg-muted outline-none transition-colors focus:bg-bg-muted focus:text-fg-default [&_svg]:text-fg-muted focus:[&_svg]:text-fg-default data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nMenubarItem.displayName = MenubarPrimitive.Item.displayName\r\n\r\nconst MenubarCheckboxItem = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\r\n>(({ className, children, checked, ...props }, ref) => (\r\n <MenubarPrimitive.CheckboxItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-radius-sm py-pad-md pl-8 pr-2 text-body-sm text-fg-muted outline-none transition-colors focus:bg-bg-muted focus:text-fg-default [&_svg]:text-fg-muted focus:[&_svg]:text-fg-default data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <MenubarPrimitive.ItemIndicator>\r\n <Check className=\"h-4 w-4\" />\r\n </MenubarPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </MenubarPrimitive.CheckboxItem>\r\n))\r\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName\r\n\r\nconst MenubarRadioItem = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.RadioItem>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\r\n>(({ className, children, ...props }, ref) => (\r\n <MenubarPrimitive.RadioItem\r\n ref={ref}\r\n className={cn(\r\n \"relative flex cursor-default select-none items-center rounded-radius-sm py-pad-md pl-8 pr-2 text-body-sm text-fg-muted outline-none transition-colors focus:bg-bg-muted focus:text-fg-default [&_svg]:text-fg-muted focus:[&_svg]:text-fg-default data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\r\n <MenubarPrimitive.ItemIndicator>\r\n <Circle className=\"h-2 w-2 fill-current\" />\r\n </MenubarPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </MenubarPrimitive.RadioItem>\r\n))\r\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName\r\n\r\nconst MenubarLabel = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Label>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\r\n inset?: boolean\r\n }\r\n>(({ className, inset, ...props }, ref) => (\r\n <MenubarPrimitive.Label\r\n ref={ref}\r\n className={cn(\r\n \"px-pad-lg py-pad-md text-sm font-semibold\",\r\n inset && \"pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName\r\n\r\nconst MenubarSeparator = React.forwardRef<\r\n React.ElementRef<typeof MenubarPrimitive.Separator>,\r\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\r\n>(({ className, ...props }, ref) => (\r\n <MenubarPrimitive.Separator\r\n ref={ref}\r\n className={cn(\"-mx-1 my-1 h-px bg-bg-muted\", className)}\r\n {...props}\r\n />\r\n))\r\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName\r\n\r\nconst MenubarShortcut = ({\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\nMenubarShortcut.displayname = \"MenubarShortcut\"\r\n\r\nexport {\r\n Menubar,\r\n MenubarMenu,\r\n MenubarTrigger,\r\n MenubarContent,\r\n MenubarItem,\r\n MenubarSeparator,\r\n MenubarLabel,\r\n MenubarCheckboxItem,\r\n MenubarRadioGroup,\r\n MenubarRadioItem,\r\n MenubarPortal,\r\n MenubarSubContent,\r\n MenubarSubTrigger,\r\n MenubarGroup,\r\n MenubarSub,\r\n MenubarShortcut,\r\n}\r\n","import * as React from \"react\"\r\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\"\r\nimport { cva } from \"class-variance-authority\"\r\nimport { ChevronDown } from \"lucide-react\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst NavigationMenu = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\r\n>(({ className, children, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Root\r\n ref={ref}\r\n className={cn(\r\n \"relative z-10 flex max-w-max flex-1 items-center justify-center\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <NavigationMenuViewport />\r\n </NavigationMenuPrimitive.Root>\r\n))\r\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\r\n\r\nconst NavigationMenuList = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.List\r\n ref={ref}\r\n className={cn(\r\n \"group flex flex-1 list-none items-center justify-center space-x-1\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\r\n\r\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\r\n\r\nconst navigationMenuTriggerStyle = cva(\r\n \"group inline-flex min-h-form-lg w-max items-center justify-center rounded-radius-md bg-transparent px-pad-lg py-pad-md text-body-sm font-semibold text-fg-muted transition-colors hover:bg-bg-muted hover:text-fg-default focus:bg-bg-muted focus:text-fg-default focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-bg-muted data-[state=open]:text-fg-default\"\r\n)\r\n\r\nconst NavigationMenuTrigger = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\r\n>(({ className, children, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Trigger\r\n ref={ref}\r\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\r\n {...props}\r\n >\r\n {children}{\" \"}\r\n <ChevronDown\r\n className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\r\n aria-hidden=\"true\"\r\n />\r\n </NavigationMenuPrimitive.Trigger>\r\n))\r\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\r\n\r\nconst NavigationMenuContent = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto \",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\r\n\r\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\r\n\r\nconst NavigationMenuViewport = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\r\n>(({ className, ...props }, ref) => (\r\n <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\r\n <NavigationMenuPrimitive.Viewport\r\n className={cn(\r\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden relative rounded-[12px] border border-border-default bg-bg-dropdown text-fg-default shadow-sh-lg outline-float before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\r\n className\r\n )}\r\n ref={ref}\r\n {...props}\r\n />\r\n </div>\r\n))\r\nNavigationMenuViewport.displayName =\r\n NavigationMenuPrimitive.Viewport.displayName\r\n\r\nconst NavigationMenuIndicator = React.forwardRef<\r\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\r\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\r\n>(({ className, ...props }, ref) => (\r\n <NavigationMenuPrimitive.Indicator\r\n ref={ref}\r\n className={cn(\r\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-bg-surface border border-border-default shadow-sh-md\" />\r\n </NavigationMenuPrimitive.Indicator>\r\n))\r\nNavigationMenuIndicator.displayName =\r\n NavigationMenuPrimitive.Indicator.displayName\r\n\r\nexport {\r\n navigationMenuTriggerStyle,\r\n NavigationMenu,\r\n NavigationMenuList,\r\n NavigationMenuItem,\r\n NavigationMenuContent,\r\n NavigationMenuTrigger,\r\n NavigationMenuLink,\r\n NavigationMenuIndicator,\r\n NavigationMenuViewport,\r\n}\r\n","import * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Progress — barra de progresso linear.\n *\n * Specs:\n * - Track: h:12px (h-3), bg-emphasis (light, gray[100]) / bg-accent (dark, alpha 16%), radius-full\n * - Indicator: bg-bg-brand (verde brand)\n */\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex h-3 w-full items-center overflow-hidden rounded-radius-full\",\n \"bg-bg-emphasis dark:bg-bg-accent\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"size-full flex-1 bg-bg-brand transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n))\nProgress.displayName = ProgressPrimitive.Root.displayName\n\nexport { Progress }\n","import * as React from \"react\"\r\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n/**\r\n * ScrollArea — área rolável com scrollbar estilizada (Radix). Thumb usa\r\n * `bg-border-default` (token DS). Use pra listas/dropdowns longos com scroll\r\n * consistente entre navegadores.\r\n */\r\n\r\nconst ScrollArea = React.forwardRef<\r\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\r\n>(({ className, children, ...props }, ref) => (\r\n <ScrollAreaPrimitive.Root\r\n ref={ref}\r\n className={cn(\"relative overflow-hidden\", className)}\r\n {...props}\r\n >\r\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\r\n {children}\r\n </ScrollAreaPrimitive.Viewport>\r\n <ScrollBar />\r\n <ScrollAreaPrimitive.Corner />\r\n </ScrollAreaPrimitive.Root>\r\n))\r\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\r\n\r\nconst ScrollBar = React.forwardRef<\r\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\r\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\r\n <ScrollAreaPrimitive.ScrollAreaScrollbar\r\n ref={ref}\r\n orientation={orientation}\r\n className={cn(\r\n \"flex touch-none select-none transition-colors\",\r\n orientation === \"vertical\" &&\r\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\r\n orientation === \"horizontal\" &&\r\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border-default\" />\r\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\r\n))\r\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\r\n\r\nexport { ScrollArea, ScrollBar }\r\n","\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n/**\r\n * Slider — alinhado com tokens v3.\r\n *\r\n * Specs:\r\n * - Track: h:8px (h-2), bg-emphasis (light, gray[100]) / bg-accent (dark, alpha 16%), radius-full\r\n * - Range: bg-brand (filled portion)\r\n * - Thumb: 24x16 (oval), white com shadow-sh-md\r\n * - hover/focus: shadow-sh-ring (brand glow)\r\n */\r\nconst THUMB_CLASS = cn(\r\n \"block h-4 w-6 shrink-0 rounded-radius-full bg-white\",\r\n \"shadow-sh-md\",\r\n \"transition-[box-shadow] select-none outline-none\",\r\n \"hover:shadow-sh-ring\",\r\n \"focus-visible:shadow-sh-ring\",\r\n // A affordance do gesto: a mãozinha aberta convida a arrastar, a fechada confirma que\r\n // está arrastando. Mesmo par que o grab-to-scroll da DataTable usa.\r\n \"cursor-grab active:cursor-grabbing\",\r\n \"data-[disabled]:cursor-default\"\r\n);\r\n\r\nconst Slider = React.forwardRef<\r\n React.ElementRef<typeof SliderPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\r\n>(({ className, defaultValue, value, ...props }, ref) => {\r\n const thumbCount = (value ?? defaultValue ?? [0]).length;\r\n\r\n return (\r\n <SliderPrimitive.Root\r\n ref={ref}\r\n defaultValue={defaultValue}\r\n value={value}\r\n className={cn(\r\n \"relative flex w-full touch-none select-none items-center\",\r\n /**\r\n * Desabilitado escurece o COMPONENTE, não só o thumb — trilho, faixa preenchida e\r\n * thumb juntos, que é o que dá o aspecto de desabilitado.\r\n *\r\n * ⚠️ Tem que ser `data-[disabled]`. Até 2026-08-24 o thumb carregava\r\n * `disabled:pointer-events-none disabled:opacity-50` e isso era **código morto**: o\r\n * thumb é um `<span>`, não aceita o atributo `disabled`, e o Radix marca estado por\r\n * data attribute (L-012). Medido no browser antes de trocar — o thumb desabilitado\r\n * estava com `opacity: 1` e `pointer-events: auto`, ou seja, o estado não existia\r\n * visualmente e o gesto seguia aceito.\r\n */\r\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-radius-full bg-bg-emphasis dark:bg-bg-accent\">\r\n <SliderPrimitive.Range className=\"absolute h-full bg-bg-brand\" />\r\n </SliderPrimitive.Track>\r\n {Array.from({ length: thumbCount }, (_, i) => (\r\n <SliderPrimitive.Thumb key={i} className={THUMB_CLASS} />\r\n ))}\r\n </SliderPrimitive.Root>\r\n );\r\n})\r\nSlider.displayName = SliderPrimitive.Root.displayName\r\n\r\nexport { Slider }\r\n","import * as React from \"react\"\r\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\n/**\r\n * Tabs — 2 variantes + largura, tudo propagado por contexto a partir do `<Tabs>`.\r\n *\r\n * ## Qual variante\r\n *\r\n * - **\"segmented\" (default)** — pill group sobre `bg-muted`. Container `h-form-lg` (40px),\r\n * `p-[3px]`, `radius-lg`; tab `h-[34px] px-[14px] radius-md`; ativo = `bg-accent` +\r\n * `font-semibold` + `shadow-sm`. É a variante de **trocar conteúdo dentro de uma\r\n * superfície**: card, bloco, `Panel`, `FloatingPanel`, `Modal`, drawer.\r\n * - **\"line\"** — underline, pra **navegar seções de uma página** (nível de tela) ou pro 2º\r\n * nível abaixo de um `segmented`. O trilho (`border-b`) **atravessa o container**; o realce\r\n * de 2px fica só na aba ativa e sobrepõe o trilho via `-mb-px`.\r\n *\r\n * ⚠️ Não empilhe a MESMA variante em dois níveis — os dois passam a ler como o mesmo nível.\r\n *\r\n * ## `fullWidth` — por que isso é prop, e não classe\r\n *\r\n * Sem ela, encher a largura exigia **três** coisas escritas na mão: `w-full` no `<Tabs>`,\r\n * `w-full` no `<TabsList>` e `flex-1` em **cada** `<TabsTrigger>`. Medido em 2026-08-21, no\r\n * próprio DS: **11** `TabsList w-full`, **20** `TabsTrigger flex-1` e **1** uso de\r\n * `[&>*]:flex-1` (variante arbitrária, escrita justamente pra não repetir `flex-1` por\r\n * trigger — `ShowcasePageV2`). Contei 3 dessas na primeira medição e estava errado: as outras\r\n * duas são do `alert-dialog`, no footer de botões, que é outro caso.\r\n *\r\n * E o modo de errar era silencioso: `w-full` só no List **estica o container e deixa os\r\n * triggers agrupados na esquerda**. Era o que 6 dos 7 usos manuais faziam. Ou seja, o DS\r\n * obrigava a compor na unha o que ele deveria resolver, e quem consumia — IA inclusive —\r\n * acertava metade das vezes.\r\n *\r\n * **Use** em superfície compacta: `Panel` (560px), `FloatingPanel` (320–720 e\r\n * **redimensionável**), `Modal` até `lg` (720px), card, bloco.\r\n *\r\n * **Não use** em toolbar (é um controle entre controles — o `DataTable` usa hug de propósito),\r\n * em página livre, nem em `Modal` `xl` (1100px): full-width ali viraria uma barra de segmented\r\n * control gigante e pararia de ler como aba.\r\n *\r\n * O caso que a prop resolve e a doc não resolveria: o `FloatingPanel` é **redimensionável em\r\n * runtime**. Nenhuma regra estática de largura acerta ali — `flex-1` nos triggers acompanha o\r\n * arrasto do usuário.\r\n */\r\ntype TabsVariant = \"segmented\" | \"line\"\r\n\r\n/**\r\n * Variante + largura num contexto só. O `variant` já vinha por contexto; a largura entra pelo\r\n * mesmo caminho porque precisa alcançar o `TabsTrigger`, que é **neto** do `Tabs` — passar por\r\n * prop obrigaria a repetir em cada trigger, que é exatamente o problema que a prop resolve.\r\n */\r\ntype TabsCtx = { variant: TabsVariant; fullWidth: boolean }\r\nconst TabsVariantContext = React.createContext<TabsCtx>({\r\n variant: \"segmented\",\r\n fullWidth: false,\r\n})\r\n\r\nconst Tabs = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> & {\r\n variant?: TabsVariant\r\n /** Abas ocupam a largura do container e se distribuem igualmente. Ver o cabeçalho. */\r\n fullWidth?: boolean\r\n }\r\n>(({ variant = \"segmented\", fullWidth = false, className, ...props }, ref) => {\r\n const ctx = React.useMemo(() => ({ variant, fullWidth }), [variant, fullWidth])\r\n return (\r\n <TabsVariantContext.Provider value={ctx}>\r\n <TabsPrimitive.Root\r\n ref={ref}\r\n className={cn(fullWidth && \"w-full\", className)}\r\n {...props}\r\n />\r\n </TabsVariantContext.Provider>\r\n )\r\n})\r\nTabs.displayName = \"Tabs\"\r\n\r\nconst TabsList = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.List>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\r\n>(({ className, ...props }, ref) => {\r\n const { variant, fullWidth } = React.useContext(TabsVariantContext)\r\n return (\r\n <TabsPrimitive.List\r\n ref={ref}\r\n className={cn(\r\n variant === \"line\"\r\n ? /* O trilho atravessa o container por PADRÃO. Era `w-fit`, e aí o `border-b` parava\r\n onde as abas paravam — um divisor que não alcança as bordas lê como fragmento, não\r\n como divisória. Em toda referência (Material, Carbon, Ant) o trilho do underline é\r\n full-bleed e só o indicador acompanha a aba ativa. */\r\n \"inline-flex w-full items-center gap-gp-xl border-b border-border-subtle\"\r\n : \"inline-flex h-form-lg items-center bg-bg-muted p-[3px] gap-gp-2xs rounded-radius-lg\",\r\n variant === \"segmented\" && (fullWidth ? \"w-full\" : \"w-fit\"),\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n})\r\nTabsList.displayName = TabsPrimitive.List.displayName\r\n\r\nconst TabsTrigger = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Trigger>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\r\n>(({ className, ...props }, ref) => {\r\n const { variant, fullWidth } = React.useContext(TabsVariantContext)\r\n return (\r\n <TabsPrimitive.Trigger\r\n ref={ref}\r\n className={cn(\r\n \"inline-flex items-center justify-center gap-gp-sm whitespace-nowrap text-body-sm font-medium text-fg-muted transition-colors\",\r\n \"focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary\",\r\n \"hover:text-fg-default\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n variant === \"line\"\r\n ? \"-mb-px h-[38px] px-[2px] pb-[8px] border-b-2 border-transparent data-[state=active]:border-border-brand data-[state=active]:text-fg-default data-[state=active]:font-semibold\"\r\n : \"h-[34px] px-[14px] rounded-radius-md data-[state=active]:bg-bg-accent data-[state=active]:text-fg-default data-[state=active]:font-semibold data-[state=active]:shadow-sh-sm\",\r\n /* Sem isto, `w-full` no List estica o container e agrupa os triggers na esquerda — o\r\n defeito que 6 dos 7 usos manuais tinham. */\r\n fullWidth && \"flex-1\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n})\r\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\r\n\r\nconst TabsContent = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n <TabsPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"mt-sp-md flex-1 text-body-md outline-none\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nTabsContent.displayName = TabsPrimitive.Content.displayName\r\n\r\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\r\n","import * as React from \"react\"\r\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\r\nimport { cva, type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\n\r\nconst toggleVariants = cva(\r\n \"inline-flex items-center justify-center gap-gp-xs rounded-radius-md border border-transparent text-body-sm font-semibold transition-colors hover:bg-bg-muted hover:text-fg-muted focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-brand disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-bg-brand-subtle data-[state=on]:text-fg-brand [&_svg]:pointer-events-none [&_svg]:size-icon-sm [&_svg]:shrink-0\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"bg-transparent\",\r\n outline:\r\n \"border-border-default bg-transparent hover:bg-bg-muted hover:text-fg-default\",\r\n },\r\n size: {\r\n default: \"min-h-form-lg px-pad-lg min-w-form-lg\",\r\n sm: \"min-h-form-md px-pad-md min-w-form-md\",\r\n lg: \"min-h-form-xl px-pad-xl min-w-form-xl\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n }\r\n)\r\n\r\nconst Toggle = React.forwardRef<\r\n React.ElementRef<typeof TogglePrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> &\r\n VariantProps<typeof toggleVariants>\r\n>(({ className, variant, size, ...props }, ref) => (\r\n <TogglePrimitive.Root\r\n ref={ref}\r\n className={cn(toggleVariants({ variant, size, className }))}\r\n {...props}\r\n />\r\n))\r\n\r\nToggle.displayName = TogglePrimitive.Root.displayName\r\n\r\nexport { Toggle, toggleVariants }\r\n","import * as React from \"react\"\r\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\r\nimport { type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@/lib/utils\"\r\nimport { toggleVariants } from \"@/components/shadcn/toggle\"\r\n\r\nconst ToggleGroupContext = React.createContext<\r\n VariantProps<typeof toggleVariants>\r\n>({\r\n size: \"default\",\r\n variant: \"default\",\r\n})\r\n\r\nconst ToggleGroup = React.forwardRef<\r\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\r\n VariantProps<typeof toggleVariants>\r\n>(({ className, variant, size, children, ...props }, ref) => (\r\n <ToggleGroupPrimitive.Root\r\n ref={ref}\r\n className={cn(\"flex items-center justify-center gap-gp-xs\", className)}\r\n {...props}\r\n >\r\n <ToggleGroupContext.Provider value={{ variant, size }}>\r\n {children}\r\n </ToggleGroupContext.Provider>\r\n </ToggleGroupPrimitive.Root>\r\n))\r\n\r\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName\r\n\r\nconst ToggleGroupItem = React.forwardRef<\r\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\r\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\r\n VariantProps<typeof toggleVariants>\r\n>(({ className, children, variant, size, ...props }, ref) => {\r\n const context = React.useContext(ToggleGroupContext)\r\n\r\n return (\r\n <ToggleGroupPrimitive.Item\r\n ref={ref}\r\n className={cn(\r\n toggleVariants({\r\n variant: context.variant || variant,\r\n size: context.size || size,\r\n }),\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </ToggleGroupPrimitive.Item>\r\n )\r\n})\r\n\r\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName\r\n\r\nexport { ToggleGroup, ToggleGroupItem }\r\n"],"names":["React","jsx","RadioGroupPrimitive","cn","SeparatorPrimitive","HoverCardPrimitive","AccordionPrimitive","jsxs","ChevronDown","cva","tv","Slot","ChevronRight","MoreHorizontal","api","Button","ArrowLeft","ArrowRight","ContextMenuPrimitive","Check","Circle","DrawerPrimitive","OTPInput","OTPInputContext","Dot","LabelPrimitive","MenubarPrimitive","NavigationMenuPrimitive","ProgressPrimitive","ScrollAreaPrimitive","SliderPrimitive","TabsPrimitive","TogglePrimitive","ToggleGroupPrimitive"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAM,aAAaA,iBAAM,WAGvB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAAQ;AAClC,SACEC,2BAAAA;AAAAA,IAACC,+BAAoB;AAAA,IAApB;AAAA,MACC,WAAWC,OAAAA,GAAG,yBAAyB,SAAS;AAAA,MAC/C,GAAG;AAAA,MACJ;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;AACD,WAAW,cAAcD,+BAAoB,KAAK;AAElD,MAAM,iBAAiBF,iBAAM,WAG3B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAAQ;AAClC,SACEC,2BAAAA;AAAAA,IAACC,+BAAoB;AAAA,IAApB;AAAA,MACC;AAAA,MACA,WAAWC,OAAAA;AAAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MAEJ,UAAAF,2BAAAA,IAACC,+BAAoB,WAApB,EAA8B,WAAU,8CACvC,UAAAD,2BAAAA,IAAC,QAAA,EAAK,WAAU,gDAAA,CAAgD,EAAA,CAClE;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;AACD,eAAe,cAAcC,+BAAoB,KAAK;ACjDtD,MAAM,YAAYF,iBAAM;AAAA,EAItB,CACE,EAAE,WAAW,cAAc,cAAc,aAAa,MAAM,GAAG,SAC/D,QAEAC,2BAAAA;AAAAA,IAACG,8BAAmB;AAAA,IAAnB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAWD,OAAAA;AAAAA,QACT;AAAA,QACA,gBAAgB,eAAe,mBAAmB;AAAA,QAClD;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AACA,UAAU,cAAcC,8BAAmB,KAAK;ACpBhD,SAAS,SAAS;AAAA,EAChB;AAAA,EACA,GAAG;AACL,GAAyC;AACvC,SACEH,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWE,OAAAA,GAAG,+CAA+C,SAAS;AAAA,MACrE,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;ACZA,MAAM,YAAY,CAAC;AAAA,EACjB,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,GAAG;AACL,qCACGE,8BAAmB,MAAnB,EAAwB,WAAsB,YAAyB,GAAG,MAAA,CAAO;AAGpF,MAAM,mBAAmBA,8BAAmB;AAE5C,MAAM,mBAAmBL,iBAAM,WAG7B,CAAC,EAAE,WAAW,QAAQ,UAAU,aAAa,GAAG,GAAG,MAAA,GAAS,QAC5DC,2BAAAA;AAAAA,EAACI,8BAAmB;AAAA,EAAnB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAWF,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,iBAAiB,cAAcE,8BAAmB,QAAQ;ACzB1D,MAAM,YAAYC,8BAAmB;AAErC,MAAM,gBAAgBN,iBAAM,WAG1B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACK,8BAAmB;AAAA,EAAnB;AAAA,IACC;AAAA,IACA,WAAWH,OAAAA,GAAG,iCAAiC,SAAS;AAAA,IACvD,GAAG;AAAA,EAAA;AACN,CACD;AACD,cAAc,cAAc;AAE5B,MAAM,mBAAmBH,iBAAM,WAG7B,CAAC,EAAE,WAAW,UAAU,GAAG,MAAA,GAAS,QACpCC,2BAAAA,IAACK,8BAAmB,QAAnB,EAA0B,WAAU,QACnC,UAAAC,2BAAAA;AAAAA,EAACD,8BAAmB;AAAA,EAAnB;AAAA,IACC;AAAA,IACA,WAAWH,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,IAEH,UAAA;AAAA,MAAA;AAAA,MACDF,2BAAAA,IAACO,YAAAA,aAAA,EAAY,WAAU,mEAAA,CAAmE;AAAA,IAAA;AAAA,EAAA;AAC5F,GACF,CACD;AACD,iBAAiB,cAAcF,8BAAmB,QAAQ;AAE1D,MAAM,mBAAmBN,iBAAM,WAG7B,CAAC,EAAE,WAAW,UAAU,GAAG,SAAS,QACpCC,2BAAAA;AAAAA,EAACK,8BAAmB;AAAA,EAAnB;AAAA,IACC;AAAA,IACA,WAAU;AAAA,IACT,GAAG;AAAA,IAEJ,yCAAC,OAAA,EAAI,WAAWH,OAAAA,GAAG,mBAAmB,SAAS,GAAI,SAAA,CAAS;AAAA,EAAA;AAC9D,CACD;AAED,iBAAiB,cAAcG,8BAAmB,QAAQ;AChD1D,MAAM,gBAAgBG,uBAAAA;AAAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aACE;AAAA,MAAA;AAAA,IACJ;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAEA,MAAM,QAAQT,iBAAM,WAGlB,CAAC,EAAE,WAAW,SAAS,GAAG,SAAS,QACnCC,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,MAAK;AAAA,IACL,WAAWE,OAAAA,GAAG,cAAc,EAAE,QAAA,CAAS,GAAG,SAAS;AAAA,IAClD,GAAG;AAAA,EAAA;AACN,CACD;AACD,MAAM,cAAc;AAEpB,MAAM,aAAaH,iBAAM,WAGvB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWE,OAAAA,GAAG,iFAAiF,SAAS;AAAA,IACvG,GAAG;AAAA,EAAA;AACN,CACD;AACD,WAAW,cAAc;AAEzB,MAAM,mBAAmBH,iBAAM,WAG7B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWE,OAAAA,GAAG,oDAAoD,SAAS;AAAA,IAC1E,GAAG;AAAA,EAAA;AACN,CACD;AACD,iBAAiB,cAAc;ACvC/B,MAAM,gBAAgBO,OAAAA,GAAG;AAAA,EACvB,MAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAGF,UAAU;AAAA,IACR,OAAO;AAAA,MACL,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,IAGR,SAAS;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,IAGT,MAAM;AAAA,MACJ,IAAI;AAAA;AAAA,MACJ,IAAI;AAAA;AAAA,MACJ,IAAI;AAAA;AAAA,IAAA;AAAA,IAGN,OAAO;AAAA,MACL,SAAS;AAAA;AAAA,MACT,MAAM;AAAA;AAAA,IAAA;AAAA,EACR;AAAA,EAGF,kBAAkB;AAAA;AAAA,IAEhB,EAAE,OAAO,WAAW,SAAS,SAAW,OAAO,+BAAA;AAAA,IAC/C,EAAE,OAAO,WAAW,SAAS,QAAW,OAAO,mCAAA;AAAA,IAC/C,EAAE,OAAO,WAAW,SAAS,WAAW,OAAO,oCAAA;AAAA,IAC/C,EAAE,OAAO,WAAW,SAAS,SAAW,OAAO,gBAAA;AAAA;AAAA,IAG/C,EAAE,OAAO,aAAa,SAAS,SAAW,OAAO,iCAAA;AAAA,IACjD,EAAE,OAAO,aAAa,SAAS,QAAW,OAAO,4BAAA;AAAA,IACjD,EAAE,OAAO,aAAa,SAAS,WAAW,OAAO,wCAAA;AAAA,IACjD,EAAE,OAAO,aAAa,SAAS,SAAW,OAAO,gBAAA;AAAA;AAAA,IAGjD,EAAE,OAAO,YAAY,SAAS,SAAW,OAAO,iCAAA;AAAA,IAChD,EAAE,OAAO,YAAY,SAAS,QAAW,OAAO,oCAAA;AAAA,IAChD,EAAE,OAAO,YAAY,SAAS,WAAW,OAAO,4CAAA;AAAA,IAChD,EAAE,OAAO,YAAY,SAAS,SAAW,OAAO,iBAAA;AAAA;AAAA,IAGhD,EAAE,OAAO,WAAW,SAAS,SAAW,OAAO,mCAAA;AAAA,IAC/C,EAAE,OAAO,WAAW,SAAS,QAAW,OAAO,sCAAA;AAAA,IAC/C,EAAE,OAAO,WAAW,SAAS,WAAW,OAAO,8CAAA;AAAA,IAC/C,EAAE,OAAO,WAAW,SAAS,SAAW,OAAO,kBAAA;AAAA;AAAA,IAG/C,EAAE,OAAO,WAAW,SAAS,SAAW,OAAO,mCAAA;AAAA,IAC/C,EAAE,OAAO,WAAW,SAAS,QAAW,OAAO,sCAAA;AAAA,IAC/C,EAAE,OAAO,WAAW,SAAS,WAAW,OAAO,8CAAA;AAAA,IAC/C,EAAE,OAAO,WAAW,SAAS,SAAW,OAAO,kBAAA;AAAA;AAAA,IAG/C,EAAE,OAAO,QAAQ,SAAS,SAAW,OAAO,6BAAA;AAAA,IAC5C,EAAE,OAAO,QAAQ,SAAS,QAAW,OAAO,gCAAA;AAAA,IAC5C,EAAE,OAAO,QAAQ,SAAS,WAAW,OAAO,wCAAA;AAAA,IAC5C,EAAE,OAAO,QAAQ,SAAS,SAAW,OAAO,eAAA;AAAA,EAAe;AAAA,EAG7D,iBAAiB;AAAA,IACf,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAEX,CAAC;AAUD,SAAS,MAAM,EAAE,WAAW,OAAO,SAAS,MAAM,OAAO,GAAG,SAAqB;AAC/E,SACET,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,cAAc,EAAE,OAAO,SAAS,MAAM,OAAO,WAAW;AAAA,MAClE,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AC/GA,MAAM,aAAaD,iBAAM,WAKvB,CAAC,EAAE,GAAG,MAAA,GAAS,QAAQC,2BAAAA,IAAC,SAAI,KAAU,cAAW,cAAc,GAAG,OAAO,CAAE;AAC7E,WAAW,cAAc;AAEzB,MAAM,iBAAiBD,iBAAM,WAG3B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWE,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,eAAe,cAAc;AAE7B,MAAM,iBAAiBH,iBAAM,WAG3B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWE,OAAAA,GAAG,sCAAsC,SAAS;AAAA,IAC5D,GAAG;AAAA,EAAA;AACN,CACD;AACD,eAAe,cAAc;AAE7B,MAAM,iBAAiBH,iBAAM,WAK3B,CAAC,EAAE,SAAS,WAAW,GAAG,MAAA,GAAS,QAAQ;AAC3C,QAAM,OAAO,UAAUW,UAAAA,OAAO;AAE9B,SACEV,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,WAAWE,OAAAA,GAAG,2CAA2C,SAAS;AAAA,MACjE,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;AACD,eAAe,cAAc;AAE7B,MAAM,iBAAiBH,iBAAM,WAG3B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,MAAK;AAAA,IACL,iBAAc;AAAA,IACd,gBAAa;AAAA,IACb,WAAWE,OAAAA,GAAG,+BAA+B,SAAS;AAAA,IACrD,GAAG;AAAA,EAAA;AACN,CACD;AACD,eAAe,cAAc;AAE7B,MAAM,sBAAsB,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACEF,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,eAAY;AAAA,IACZ,WAAWE,OAAAA,GAAG,8CAA8C,SAAS;AAAA,IACpE,GAAG;AAAA,IAEH,UAAA,2CAAaS,YAAAA,cAAA,CAAA,CAAa;AAAA,EAAA;AAC7B;AAEF,oBAAoB,cAAc;AAElC,MAAM,qBAAqB,CAAC;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,MACEL,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,eAAY;AAAA,IACZ,WAAWJ,OAAAA,GAAG,2DAA2D,SAAS;AAAA,IACjF,GAAG;AAAA,IAEJ,UAAA;AAAA,MAAAF,2BAAAA,IAACY,YAAAA,gBAAA,EAAe,WAAU,UAAA,CAAU;AAAA,MACpCZ,2BAAAA,IAAC,QAAA,EAAK,WAAU,WAAU,UAAA,OAAA,CAAI;AAAA,IAAA;AAAA,EAAA;AAChC;AAEF,mBAAmB,cAAc;ACxDjC,MAAM,kBAAkBD,iBAAM,cAAwB,IAAI;AAa1D,MAAM,QAAkC;AAAA,EACtC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AACA,MAAM,QAAkC;AAAA,EACtC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AACA,MAAM,UAAoC;AAAA,EACxC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,MAAM,WAAqC;AAAA,EACzC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAIA,MAAM,OAAOA,iBAAM,WAGjB,CAAC,EAAE,WAAW,OAAO,MAAM,GAAG,MAAA,GAAS,QACvCC,2BAAAA,IAAC,gBAAgB,UAAhB,EAAyB,OAAO,MAC/B,UAAAA,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IACA,WAAWE,OAAAA;AAAAA,MACT;AAAA,MACA,MAAM,IAAI;AAAA,MACV;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,GACF,CACD;AACD,KAAK,cAAc;AAanB,MAAM,aAAaH,iBAAM,WAGvB,CAAC,EAAE,WAAW,UAAU,SAAS,GAAG,MAAA,GAAS,QAAQ;AACrD,QAAM,OAAOA,iBAAM,WAAW,eAAe;AAC7C,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,WAAWE,OAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,QAUT;AAAA,QACA,YAAY,WACRA,OAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,UAKE,QAAQ,IAAI;AAAA,UACZ,SAAS,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWb;AAAA,QAAA,IAEF,MAAM,IAAI;AAAA,QACd;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;AACD,WAAW,cAAc;AAEzB,MAAM,YAAYH,iBAAM,WAGtB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IAUA,WAAWE,OAAAA,GAAG,iCAAiC,SAAS;AAAA,IACvD,GAAG;AAAA,EAAA;AACN,CACD;AACD,UAAU,cAAc;AAExB,MAAM,kBAAkBH,iBAAM,WAG5B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC;AAAA,IASA,WAAWE,OAAAA,GAAG,iCAAiC,SAAS;AAAA,IACvD,GAAG;AAAA,EAAA;AACN,CACD;AACD,gBAAgB,cAAc;AAI9B,MAAM,cAAcH,iBAAM,WAGxB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAAQ;AAClC,QAAM,OAAOA,iBAAM,WAAW,eAAe;AAC7C,SAAOC,+BAAC,OAAA,EAAI,KAAU,WAAWE,OAAAA,GAAG,MAAM,IAAI,GAAG,SAAS,GAAI,GAAG,MAAA,CAAO;AAC1E,CAAC;AACD,YAAY,cAAc;AAE1B,MAAM,aAAaH,iBAAM,WAGvB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAAQ;AAClC,QAAM,OAAOA,iBAAM,WAAW,eAAe;AAC7C,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,WAAWE,OAAAA,GAAG,qBAAqB,MAAM,IAAI,GAAG,SAAS;AAAA,MACxD,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;AACD,WAAW,cAAc;ACzLzB,MAAM,kBAAkBH,iBAAM,cAA2C,IAAI;AAE7E,SAAS,cAAc;AACrB,QAAM,UAAUA,iBAAM,WAAW,eAAe;AAEhD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,SAAO;AACT;AAEA,MAAM,WAAWA,iBAAM;AAAA,EAIrB,CACE;AAAA,IACE,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,CAAC,aAAa,GAAG,IAAI;AAAA,MACzB;AAAA,QACE,GAAG;AAAA,QACH,MAAM,gBAAgB,eAAe,MAAM;AAAA,MAAA;AAAA,MAE7C;AAAA,IAAA;AAEF,UAAM,CAAC,eAAe,gBAAgB,IAAIA,iBAAM,SAAS,KAAK;AAC9D,UAAM,CAAC,eAAe,gBAAgB,IAAIA,iBAAM,SAAS,KAAK;AAC9D,UAAM,CAAC,eAAe,gBAAgB,IAAIA,iBAAM,SAAS,CAAC;AAC1D,UAAM,CAAC,aAAa,cAAc,IAAIA,iBAAM,SAAmB,CAAA,CAAE;AAEjE,UAAM,WAAWA,iBAAM,YAAY,CAACc,SAAqB;AACvD,UAAI,CAACA,MAAK;AACR;AAAA,MACF;AAEA,uBAAiBA,KAAI,eAAe;AACpC,uBAAiBA,KAAI,eAAe;AACpC,uBAAiBA,KAAI,oBAAoB;AAAA,IAC3C,GAAG,CAAA,CAAE;AASL,UAAM,SAASd,iBAAM,YAAY,CAACc,SAAqB;AACrD,UAAI,CAACA,MAAK;AACR;AAAA,MACF;AAEA,qBAAeA,KAAI,gBAAgB;AAAA,IACrC,GAAG,CAAA,CAAE;AAEL,UAAM,aAAad,iBAAM,YAAY,MAAM;AACzC,WAAK,WAAA;AAAA,IACP,GAAG,CAAC,GAAG,CAAC;AAER,UAAM,aAAaA,iBAAM,YAAY,MAAM;AACzC,WAAK,WAAA;AAAA,IACP,GAAG,CAAC,GAAG,CAAC;AAER,UAAM,WAAWA,iBAAM;AAAA,MACrB,CAAC,UAAkB;AACjB,aAAK,SAAS,KAAK;AAAA,MACrB;AAAA,MACA,CAAC,GAAG;AAAA,IAAA;AAGN,UAAM,gBAAgBA,iBAAM;AAAA,MAC1B,CAAC,UAA+C;AAC9C,YAAI,MAAM,QAAQ,aAAa;AAC7B,gBAAM,eAAA;AACN,qBAAA;AAAA,QACF,WAAW,MAAM,QAAQ,cAAc;AACrC,gBAAM,eAAA;AACN,qBAAA;AAAA,QACF;AAAA,MACF;AAAA,MACA,CAAC,YAAY,UAAU;AAAA,IAAA;AAGzBA,qBAAM,UAAU,MAAM;AACpB,UAAI,CAAC,OAAO,CAAC,QAAQ;AACnB;AAAA,MACF;AAEA,aAAO,GAAG;AAAA,IACZ,GAAG,CAAC,KAAK,MAAM,CAAC;AAEhBA,qBAAM,UAAU,MAAM;AACpB,UAAI,CAAC,KAAK;AACR;AAAA,MACF;AAEA,aAAO,GAAG;AACV,eAAS,GAAG;AACZ,UAAI,GAAG,UAAU,MAAM;AACvB,UAAI,GAAG,UAAU,QAAQ;AACzB,UAAI,GAAG,UAAU,QAAQ;AAEzB,aAAO,MAAM;AAGX,aAAK,IAAI,UAAU,MAAM;AACzB,aAAK,IAAI,UAAU,QAAQ;AAC3B,aAAK,IAAI,UAAU,QAAQ;AAAA,MAC7B;AAAA,IACF,GAAG,CAAC,KAAK,QAAQ,QAAQ,CAAC;AAE1B,WACEC,2BAAAA;AAAAA,MAAC,gBAAgB;AAAA,MAAhB;AAAA,QACC,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA,aACE,gBAAgB,MAAM,SAAS,MAAM,aAAa;AAAA,UACpD;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAGF,UAAAA,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,kBAAkB;AAAA,YAClB,WAAWE,OAAAA,GAAG,YAAY,SAAS;AAAA,YACnC,MAAK;AAAA,YACL,wBAAqB;AAAA,YACpB,GAAG;AAAA,YAEH;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAGN;AACF;AACA,SAAS,cAAc;AAEvB,MAAM,kBAAkBH,iBAAM,WAG5B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAAQ;AAClC,QAAM,EAAE,aAAa,YAAA,IAAgB,YAAA;AAErC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAsBEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACL,WAAWE,OAAAA;AAAAA,UACT;AAAA;AAAA;AAAA,UAGA,gBAAgB,eACZ,uBACA;AAAA,QAAA;AAAA,QAGN,UAAAF,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,WAAWE,OAAAA;AAAAA,cACT;AAAA,cACA,gBAAgB,eAAe,UAAU;AAAA,cACzC;AAAA,YAAA;AAAA,YAED,GAAG;AAAA,UAAA;AAAA,QAAA;AAAA,MACN;AAAA,IAAA;AAAA;AAGN,CAAC;AACD,gBAAgB,cAAc;AAE9B,MAAM,eAAeH,iBAAM,WAGzB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAAQ;AAClC,QAAM,EAAE,YAAA,IAAgB,YAAA;AAExB,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,wBAAqB;AAAA,MACrB,WAAWE,OAAAA;AAAAA,QACT;AAAA,QACA,gBAAgB,eAAe,SAAS;AAAA,QACxC;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;AACD,aAAa,cAAc;AAE3B,MAAM,mBAAmBH,iBAAM,WAG7B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAAQ;AAClC,QAAM,EAAE,aAAa,YAAY,cAAA,IAAkB,YAAA;AAEnD,SACEO,2BAAAA;AAAAA,IAACQ,OAAAA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,WAAWZ,OAAAA;AAAAA,QACT;AAAA,QACA,gBAAgB,eACZ,sCACA;AAAA,QACJ;AAAA,MAAA;AAAA,MAEF,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAAF,2BAAAA,IAACe,YAAAA,WAAA,EAAU;AAAA,QACXf,2BAAAA,IAAC,QAAA,EAAK,WAAU,WAAU,UAAA,iBAAA,CAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG9C,CAAC;AACD,iBAAiB,cAAc;AAE/B,MAAM,eAAeD,iBAAM,WAGzB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAAQ;AAClC,QAAM,EAAE,aAAa,YAAY,cAAA,IAAkB,YAAA;AAEnD,SACEO,2BAAAA;AAAAA,IAACQ,OAAAA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,WAAWZ,OAAAA;AAAAA,QACT;AAAA,QACA,gBAAgB,eACZ,uCACA;AAAA,QACJ;AAAA,MAAA;AAAA,MAEF,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,MACR,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAAF,2BAAAA,IAACgB,YAAAA,YAAA,EAAW;AAAA,QACZhB,2BAAAA,IAAC,QAAA,EAAK,WAAU,WAAU,UAAA,aAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG1C,CAAC;AACD,aAAa,cAAc;AA4B3B,MAAM,eAAeD,iBAAM,WAGzB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAAQ;AAClC,QAAM,EAAE,aAAa,eAAe,UAAU,YAAA,IAAgB,YAAA;AAE9D,MAAI,YAAY,UAAU,GAAG;AAC3B,WAAO;AAAA,EACT;AAEA,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,cAAW;AAAA,MACX,WAAWE,OAAAA;AAAAA,QACT;AAAA,QACA,gBAAgB,cAAc;AAAA,QAC9B;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MAEH,UAAA,YAAY,IAAI,CAAC,GAAG,MAAM;AACzB,cAAM,QAAQ,MAAM;AACpB,eACEF,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YAEC,MAAK;AAAA,YACL,SAAS,MAAM,SAAS,CAAC;AAAA,YACzB,cAAY,WAAW,IAAI,CAAC,OAAO,YAAY,MAAM;AAAA,YACrD,gBAAc,QAAQ,SAAS;AAAA,YAC/B,WAAWE,OAAAA;AAAAA,cACT;AAAA,cACA;AAAA;AAAA,cAEA;AAAA,YAAA;AAAA,YAGF,UAAAF,2BAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWE,OAAAA;AAAAA,kBACT;AAAA,kBACA,QAAQ,gBAAgB;AAAA,gBAAA;AAAA,cAC1B;AAAA,YAAA;AAAA,UACF;AAAA,UAjBK;AAAA,QAAA;AAAA,MAoBX,CAAC;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;AACD,aAAa,cAAc;ACjZ3B,MAAM,cAAce,gCAAqB;AAEzC,MAAM,qBAAqBA,gCAAqB;AAEhD,MAAM,mBAAmBA,gCAAqB;AAE9C,MAAM,oBAAoBA,gCAAqB;AAE/C,MAAM,iBAAiBA,gCAAqB;AAE5C,MAAM,wBAAwBA,gCAAqB;AAEnD,MAAM,wBAAwBlB,iBAAM,WAKlC,CAAC,EAAE,WAAW,OAAO,UAAU,GAAG,SAAS,QAC3CO,2BAAAA;AAAAA,EAACW,gCAAqB;AAAA,EAArB;AAAA,IACC;AAAA,IACA,WAAWf,OAAAA;AAAAA,MACT;AAAA,MACA,SAAS;AAAA,MACT;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,IAEH,UAAA;AAAA,MAAA;AAAA,MACDF,2BAAAA,IAACW,YAAAA,cAAA,EAAa,WAAU,kBAAA,CAAkB;AAAA,IAAA;AAAA,EAAA;AAC5C,CACD;AACD,sBAAsB,cAAcM,gCAAqB,WAAW;AAEpE,MAAM,wBAAwBlB,iBAAM,WAGlC,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACiB,gCAAqB;AAAA,EAArB;AAAA,IACC;AAAA,IACA,WAAWf,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,sBAAsB,cAAce,gCAAqB,WAAW;AAEpE,MAAM,qBAAqBlB,iBAAM,WAG/B,CAAC,EAAE,WAAW,GAAG,SAAS,QAC1BC,2BAAAA,IAACiB,gCAAqB,QAArB,EACC,UAAAjB,2BAAAA;AAAAA,EAACiB,gCAAqB;AAAA,EAArB;AAAA,IACC;AAAA,IACA,WAAWf,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,GACF,CACD;AACD,mBAAmB,cAAce,gCAAqB,QAAQ;AAE9D,MAAM,kBAAkBlB,iBAAM,WAK5B,CAAC,EAAE,WAAW,OAAO,GAAG,SAAS,QACjCC,2BAAAA;AAAAA,EAACiB,gCAAqB;AAAA,EAArB;AAAA,IACC;AAAA,IACA,WAAWf,OAAAA;AAAAA,MACT;AAAA,MACA,SAAS;AAAA,MACT;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,gBAAgB,cAAce,gCAAqB,KAAK;AAExD,MAAM,0BAA0BlB,iBAAM,WAGpC,CAAC,EAAE,WAAW,UAAU,SAAS,GAAG,SAAS,QAC7CO,2BAAAA;AAAAA,EAACW,gCAAqB;AAAA,EAArB;AAAA,IACC;AAAA,IACA,WAAWf,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAEF;AAAA,IACC,GAAG;AAAA,IAEJ,UAAA;AAAA,MAAAF,2BAAAA,IAAC,QAAA,EAAK,WAAU,gEACd,UAAAA,2BAAAA,IAACiB,gCAAqB,eAArB,EACC,UAAAjB,2BAAAA,IAACkB,mBAAA,EAAM,WAAU,UAAA,CAAU,EAAA,CAC7B,GACF;AAAA,MACC;AAAA,IAAA;AAAA,EAAA;AACH,CACD;AACD,wBAAwB,cACtBD,gCAAqB,aAAa;AAEpC,MAAM,uBAAuBlB,iBAAM,WAGjC,CAAC,EAAE,WAAW,UAAU,GAAG,SAAS,QACpCO,2BAAAA;AAAAA,EAACW,gCAAqB;AAAA,EAArB;AAAA,IACC;AAAA,IACA,WAAWf,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,IAEJ,UAAA;AAAA,MAAAF,2BAAAA,IAAC,QAAA,EAAK,WAAU,gEACd,UAAAA,2BAAAA,IAACiB,gCAAqB,eAArB,EACC,UAAAjB,2BAAAA,IAACmB,oBAAA,EAAO,WAAU,uBAAA,CAAuB,EAAA,CAC3C,GACF;AAAA,MACC;AAAA,IAAA;AAAA,EAAA;AACH,CACD;AACD,qBAAqB,cAAcF,gCAAqB,UAAU;AAElE,MAAM,mBAAmBlB,iBAAM,WAK7B,CAAC,EAAE,WAAW,OAAO,GAAG,SAAS,QACjCC,2BAAAA;AAAAA,EAACiB,gCAAqB;AAAA,EAArB;AAAA,IACC;AAAA,IACA,WAAWf,OAAAA;AAAAA,MACT;AAAA,MACA,SAAS;AAAA,MACT;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,iBAAiB,cAAce,gCAAqB,MAAM;AAE1D,MAAM,uBAAuBlB,iBAAM,WAGjC,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACiB,gCAAqB;AAAA,EAArB;AAAA,IACC;AAAA,IACA,WAAWf,OAAAA,GAAG,8CAA8C,SAAS;AAAA,IACpE,GAAG;AAAA,EAAA;AACN,CACD;AACD,qBAAqB,cAAce,gCAAqB,UAAU;AAElE,MAAM,sBAAsB,CAAC;AAAA,EAC3B;AAAA,EACA,GAAG;AACL,MAA6C;AAC3C,SACEjB,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWE,OAAAA;AAAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AACA,oBAAoB,cAAc;AC9KlC,MAAM,SAAS,CAAC;AAAA,EACd,wBAAwB;AAAA,EACxB,GAAG;AACL,MACEF,2BAAAA;AAAAA,EAACoB,KAAAA,OAAgB;AAAA,EAAhB;AAAA,IACC;AAAA,IACC,GAAG;AAAA,EAAA;AACN;AAEF,OAAO,cAAc;AAErB,MAAM,gBAAgBA,KAAAA,OAAgB;AAEtC,MAAM,eAAeA,KAAAA,OAAgB;AAErC,MAAM,cAAcA,KAAAA,OAAgB;AAEpC,MAAM,gBAAgBrB,iBAAM,WAG1B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACoB,KAAAA,OAAgB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAWlB,OAAAA,GAAG,kCAAkC,SAAS;AAAA,IACxD,GAAG;AAAA,EAAA;AACN,CACD;AACD,cAAc,cAAckB,YAAgB,QAAQ;AAEpD,MAAM,gBAAgBrB,iBAAM,WAG1B,CAAC,EAAE,WAAW,UAAU,GAAG,MAAA,GAAS,QACpCO,2BAAAA,KAAC,cAAA,EACC,UAAA;AAAA,EAAAN,2BAAAA,IAAC,eAAA,EAAc;AAAA,EACfM,2BAAAA;AAAAA,IAACc,KAAAA,OAAgB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAWlB,OAAAA;AAAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAAF,2BAAAA,IAAC,OAAA,EAAI,WAAU,sDAAA,CAAsD;AAAA,QACpE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AACH,GACF,CACD;AACD,cAAc,cAAc;AAE5B,MAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA,GAAG;AACL,MACEA,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWE,OAAAA,GAAG,6CAA6C,SAAS;AAAA,IACnE,GAAG;AAAA,EAAA;AACN;AAEF,aAAa,cAAc;AAE3B,MAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA,GAAG;AACL,MACEF,2BAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWE,OAAAA,GAAG,mCAAmC,SAAS;AAAA,IACzD,GAAG;AAAA,EAAA;AACN;AAEF,aAAa,cAAc;AAE3B,MAAM,cAAcH,iBAAM,WAGxB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACoB,KAAAA,OAAgB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAWlB,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,YAAY,cAAckB,YAAgB,MAAM;AAEhD,MAAM,oBAAoBrB,iBAAM,WAG9B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACoB,KAAAA,OAAgB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAWlB,OAAAA,GAAG,yBAAyB,SAAS;AAAA,IAC/C,GAAG;AAAA,EAAA;AACN,CACD;AACD,kBAAkB,cAAckB,YAAgB,YAAY;ACxC5D,MAAM,WAA6B;AAAA,EACjC,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AACT;AAEA,MAAM,uBAAuBrB,iBAAM,cAAgC,QAAQ;AAI3E,MAAM,eAAeS,uBAAAA;AAAAA,EACnB;AAAA,IACE;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE,UAAU;AAAA;AAAA;AAAA,MAGR,MAAM;AAAA,QACJ,KAAK;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,MAEN,SAAS;AAAA;AAAA;AAAA;AAAA,QAIP,WAAW;AAAA,QACX,UAAU;AAAA,QACV,QAAQ;AAAA;AAAA;AAAA,QAGR,WAAW;AAAA,MAAA;AAAA;AAAA,MAGb,OAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,MAAA;AAAA;AAAA;AAAA;AAAA,MAKX,QAAQ,EAAE,MAAM,QAAQ,OAAO,GAAA;AAAA,IAAG;AAAA,IAEpC,kBAAkB;AAAA;AAAA;AAAA;AAAA,MAIhB,EAAE,QAAQ,MAAM,OAAO,WAAW,OAAO,qCAAA;AAAA,MACzC,EAAE,QAAQ,MAAM,OAAO,SAAS,OAAO,wBAAA;AAAA,MACvC,EAAE,QAAQ,MAAM,OAAO,WAAW,OAAO,yBAAA;AAAA,MACzC,EAAE,QAAQ,MAAM,OAAO,WAAW,OAAO,yBAAA;AAAA;AAAA,MAEzC,EAAE,SAAS,aAAa,OAAO,uDAAA;AAAA,MAC/B,EAAE,SAAS,YAAY,OAAO,uDAAA;AAAA,MAC9B,EAAE,SAAS,UAAU,OAAO,uDAAA;AAAA,IAAuD;AAAA,IAErF,iBAAiB,EAAE,MAAM,MAAM,SAAS,aAAa,OAAO,WAAW,QAAQ,MAAA;AAAA,EAAM;AAEzF;AAIA,MAAM,gBAAgBA,uBAAAA,IAAI,qBAAqB;AAAA,EAC7C,UAAU;AAAA,IACR,SAAS;AAAA;AAAA;AAAA,MAGP,WAAW;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,WAAW;AAAA,IAAA;AAAA;AAAA,IAGb,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAA;AAAA,EAAG;AAAA,EAE1C,kBAAkB;AAAA,IAChB,EAAE,SAAS,aAAa,MAAM,OAAO,OAAO,6EAAA;AAAA,IAC5C,EAAE,SAAS,aAAa,MAAM,MAAM,OAAO,6EAAA;AAAA,IAC3C,EAAE,SAAS,YAAY,MAAM,OAAO,OAAO,0BAAA;AAAA,IAC3C,EAAE,SAAS,YAAY,MAAM,MAAM,OAAO,0BAAA;AAAA,IAC1C,EAAE,SAAS,UAAU,MAAM,OAAO,OAAO,0BAAA;AAAA,IACzC,EAAE,SAAS,UAAU,MAAM,MAAM,OAAO,0BAAA;AAAA,EAA0B;AAAA,EAEpE,iBAAiB,EAAE,SAAS,aAAa,MAAM,KAAA;AACjD,CAAC;AAiCD,MAAM,WAAWT,iBAAM;AAAA,EACrB,CAAC,EAAE,WAAW,oBAAoB,SAAS,MAAM,OAAO,GAAG,MAAA,GAAS,QAAQ;AAC1E,UAAM,MAAMA,iBAAM;AAAA,MAChB,OAAO;AAAA,QACL,SAAS,WAAW,SAAS;AAAA,QAC7B,MAAM,QAAQ,SAAS;AAAA,QACvB,OAAO,SAAS,SAAS;AAAA,MAAA;AAAA,MAE3B,CAAC,SAAS,MAAM,KAAK;AAAA,IAAA;AAGvB,WACEC,2BAAAA,IAAC,qBAAqB,UAArB,EAA8B,OAAO,KAIpC,UAAAA,2BAAAA;AAAAA,MAACqB,SAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA,oBAAoBnB,OAAAA;AAAAA,UAClB;AAAA,UACA;AAAA,QAAA;AAAA,QAEF,WAAWA,OAAAA,GAAG,+BAA+B,SAAS;AAAA,QACrD,GAAI;AAAA,MAAA;AAAA,IAAA,GAET;AAAA,EAEJ;AACF;AACA,SAAS,cAAc;AAEvB,MAAM,gBAAgBH,iBAAM,WAG1B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAAQ;AAClC,QAAM,EAAE,SAAS,KAAA,IAASA,iBAAM,WAAW,oBAAoB;AAC/D,SACEC,2BAAAA,IAAC,OAAA,EAAI,KAAU,WAAWE,OAAAA,GAAG,cAAc,EAAE,SAAS,KAAA,CAAM,GAAG,SAAS,GAAI,GAAG,MAAA,CAAO;AAE1F,CAAC;AACD,cAAc,cAAc;AAU5B,MAAM,eAAeH,iBAAM;AAAA,EACzB,CAAC,EAAE,OAAO,WAAW,SAAS,MAAM,OAAO,GAAG,MAAA,GAAS,QAAQ;AAC7D,UAAM,MAAMA,iBAAM,WAAW,oBAAoB;AACjD,UAAM,MAAMA,iBAAM,WAAWuB,wBAAe;AAC5C,UAAM,EAAE,MAAM,cAAc,aAAa,IAAI,MAAM,KAAK;AAExD,WACEhB,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,aAAU;AAAA,QACV,eAAa,WAAW,SAAS;AAAA,QACjC,WAAWJ,OAAAA;AAAAA,UACT,aAAa;AAAA,YACX,SAAS,WAAW,IAAI;AAAA,YACxB,MAAM,QAAQ,IAAI;AAAA,YAClB,OAAO,SAAS,IAAI;AAAA,YACpB,QAAQ;AAAA,UAAA,CACT;AAAA,UACD;AAAA,QAAA;AAAA,QAED,GAAG;AAAA,QAEH,UAAA;AAAA,UAAA;AAAA,UACA,+CACE,OAAA,EAAI,WAAU,yEACb,UAAAF,2BAAAA,IAAC,OAAA,EAAI,WAAU,2DAAA,CAA2D,EAAA,CAC5E;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AACA,aAAa,cAAc;AAE3B,MAAM,oBAAoBD,iBAAM,WAG9B,CAAC,EAAE,WAAW,UAAU,GAAG,MAAA,GAAS,QACpCC,2BAAAA,IAAC,OAAA,EAAI,KAAU,MAAK,aAAY,WAAWE,OAAAA,GAAG,iBAAiB,SAAS,GAAI,GAAG,OAC5E,UAAA,YAAYF,2BAAAA,IAACuB,iBAAA,CAAA,CAAI,EAAA,CACpB,CACD;AACD,kBAAkB,cAAc;ACxQhC,MAAM,gBAAgBf,uBAAAA;AAAAA,EACpB;AACF;AAEA,MAAM,QAAQT,iBAAM,WAIlB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACwB,0BAAe;AAAA,EAAf;AAAA,IACC;AAAA,IACA,WAAWtB,OAAAA,GAAG,cAAA,GAAiB,SAAS;AAAA,IACvC,GAAG;AAAA,EAAA;AACN,CACD;AACD,MAAM,cAAcsB,0BAAe,KAAK;ACxBxC,SAAS,YAAY;AAAA,EACnB,GAAG;AACL,GAAuD;AACrD,SAAOxB,2BAAAA,IAACyB,4BAAiB,MAAjB,EAAuB,GAAG,MAAA,CAAO;AAC3C;AAEA,SAAS,aAAa;AAAA,EACpB,GAAG;AACL,GAAwD;AACtD,SAAOzB,2BAAAA,IAACyB,4BAAiB,OAAjB,EAAwB,GAAG,MAAA,CAAO;AAC5C;AAEA,SAAS,cAAc;AAAA,EACrB,GAAG;AACL,GAAyD;AACvD,SAAOzB,2BAAAA,IAACyB,4BAAiB,QAAjB,EAAyB,GAAG,MAAA,CAAO;AAC7C;AAEA,SAAS,kBAAkB;AAAA,EACzB,GAAG;AACL,GAA6D;AAC3D,SAAOzB,2BAAAA,IAACyB,4BAAiB,YAAjB,EAA6B,GAAG,MAAA,CAAO;AACjD;AAEA,SAAS,WAAW;AAAA,EAClB,GAAG;AACL,GAAsD;AACpD,wCAAQA,4BAAiB,KAAjB,EAAqB,aAAU,eAAe,GAAG,OAAO;AAClE;AAEA,MAAM,UAAU1B,iBAAM,WAGpB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACyB,4BAAiB;AAAA,EAAjB;AAAA,IACC;AAAA,IACA,WAAWvB,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,QAAQ,cAAcuB,4BAAiB,KAAK;AAE5C,MAAM,iBAAiB1B,iBAAM,WAG3B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACyB,4BAAiB;AAAA,EAAjB;AAAA,IACC;AAAA,IACA,WAAWvB,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,eAAe,cAAcuB,4BAAiB,QAAQ;AAEtD,MAAM,oBAAoB1B,iBAAM,WAK9B,CAAC,EAAE,WAAW,OAAO,UAAU,GAAG,SAAS,QAC3CO,2BAAAA;AAAAA,EAACmB,4BAAiB;AAAA,EAAjB;AAAA,IACC;AAAA,IACA,WAAWvB,OAAAA;AAAAA,MACT;AAAA,MACA,SAAS;AAAA,MACT;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,IAEH,UAAA;AAAA,MAAA;AAAA,MACDF,2BAAAA,IAACW,YAAAA,cAAA,EAAa,WAAU,kBAAA,CAAkB;AAAA,IAAA;AAAA,EAAA;AAC5C,CACD;AACD,kBAAkB,cAAcc,4BAAiB,WAAW;AAE5D,MAAM,oBAAoB1B,iBAAM,WAG9B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACyB,4BAAiB;AAAA,EAAjB;AAAA,IACC;AAAA,IACA,WAAWvB,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,kBAAkB,cAAcuB,4BAAiB,WAAW;AAE5D,MAAM,iBAAiB1B,iBAAM;AAAA,EAI3B,CACE,EAAE,WAAW,QAAQ,SAAS,cAAc,IAAI,aAAa,GAAG,GAAG,SACnE,QAEAC,2BAAAA,IAACyB,4BAAiB,QAAjB,EACC,UAAAzB,2BAAAA;AAAAA,IAACyB,4BAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAWvB,OAAAA;AAAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA,EACN,CACF;AAEJ;AACA,eAAe,cAAcuB,4BAAiB,QAAQ;AAEtD,MAAM,cAAc1B,iBAAM,WAKxB,CAAC,EAAE,WAAW,OAAO,GAAG,SAAS,QACjCC,2BAAAA;AAAAA,EAACyB,4BAAiB;AAAA,EAAjB;AAAA,IACC;AAAA,IACA,WAAWvB,OAAAA;AAAAA,MACT;AAAA,MACA,SAAS;AAAA,MACT;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,YAAY,cAAcuB,4BAAiB,KAAK;AAEhD,MAAM,sBAAsB1B,iBAAM,WAGhC,CAAC,EAAE,WAAW,UAAU,SAAS,GAAG,SAAS,QAC7CO,2BAAAA;AAAAA,EAACmB,4BAAiB;AAAA,EAAjB;AAAA,IACC;AAAA,IACA,WAAWvB,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAEF;AAAA,IACC,GAAG;AAAA,IAEJ,UAAA;AAAA,MAAAF,2BAAAA,IAAC,QAAA,EAAK,WAAU,gEACd,UAAAA,2BAAAA,IAACyB,4BAAiB,eAAjB,EACC,UAAAzB,2BAAAA,IAACkB,mBAAA,EAAM,WAAU,UAAA,CAAU,EAAA,CAC7B,GACF;AAAA,MACC;AAAA,IAAA;AAAA,EAAA;AACH,CACD;AACD,oBAAoB,cAAcO,4BAAiB,aAAa;AAEhE,MAAM,mBAAmB1B,iBAAM,WAG7B,CAAC,EAAE,WAAW,UAAU,GAAG,SAAS,QACpCO,2BAAAA;AAAAA,EAACmB,4BAAiB;AAAA,EAAjB;AAAA,IACC;AAAA,IACA,WAAWvB,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,IAEJ,UAAA;AAAA,MAAAF,2BAAAA,IAAC,QAAA,EAAK,WAAU,gEACd,UAAAA,2BAAAA,IAACyB,4BAAiB,eAAjB,EACC,UAAAzB,2BAAAA,IAACmB,oBAAA,EAAO,WAAU,uBAAA,CAAuB,EAAA,CAC3C,GACF;AAAA,MACC;AAAA,IAAA;AAAA,EAAA;AACH,CACD;AACD,iBAAiB,cAAcM,4BAAiB,UAAU;AAE1D,MAAM,eAAe1B,iBAAM,WAKzB,CAAC,EAAE,WAAW,OAAO,GAAG,SAAS,QACjCC,2BAAAA;AAAAA,EAACyB,4BAAiB;AAAA,EAAjB;AAAA,IACC;AAAA,IACA,WAAWvB,OAAAA;AAAAA,MACT;AAAA,MACA,SAAS;AAAA,MACT;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,aAAa,cAAcuB,4BAAiB,MAAM;AAElD,MAAM,mBAAmB1B,iBAAM,WAG7B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACyB,4BAAiB;AAAA,EAAjB;AAAA,IACC;AAAA,IACA,WAAWvB,OAAAA,GAAG,+BAA+B,SAAS;AAAA,IACrD,GAAG;AAAA,EAAA;AACN,CACD;AACD,iBAAiB,cAAcuB,4BAAiB,UAAU;AAE1D,MAAM,kBAAkB,CAAC;AAAA,EACvB;AAAA,EACA,GAAG;AACL,MAA6C;AAC3C,SACEzB,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWE,OAAAA;AAAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AACA,gBAAgB,cAAc;ACnO9B,MAAM,iBAAiBH,iBAAM,WAG3B,CAAC,EAAE,WAAW,UAAU,GAAG,SAAS,QACpCO,2BAAAA;AAAAA,EAACoB,mCAAwB;AAAA,EAAxB;AAAA,IACC;AAAA,IACA,WAAWxB,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,IAEH,UAAA;AAAA,MAAA;AAAA,qCACA,wBAAA,CAAA,CAAuB;AAAA,IAAA;AAAA,EAAA;AAC1B,CACD;AACD,eAAe,cAAcwB,mCAAwB,KAAK;AAE1D,MAAM,qBAAqB3B,iBAAM,WAG/B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC0B,mCAAwB;AAAA,EAAxB;AAAA,IACC;AAAA,IACA,WAAWxB,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,mBAAmB,cAAcwB,mCAAwB,KAAK;AAE9D,MAAM,qBAAqBA,mCAAwB;AAEnD,MAAM,6BAA6BlB,uBAAAA;AAAAA,EACjC;AACF;AAEA,MAAM,wBAAwBT,iBAAM,WAGlC,CAAC,EAAE,WAAW,UAAU,GAAG,SAAS,QACpCO,2BAAAA;AAAAA,EAACoB,mCAAwB;AAAA,EAAxB;AAAA,IACC;AAAA,IACA,WAAWxB,OAAAA,GAAG,8BAA8B,SAAS,SAAS;AAAA,IAC7D,GAAG;AAAA,IAEH,UAAA;AAAA,MAAA;AAAA,MAAU;AAAA,MACXF,2BAAAA;AAAAA,QAACO,YAAAA;AAAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,eAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IACd;AAAA,EAAA;AACF,CACD;AACD,sBAAsB,cAAcmB,mCAAwB,QAAQ;AAEpE,MAAM,wBAAwB3B,iBAAM,WAGlC,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC0B,mCAAwB;AAAA,EAAxB;AAAA,IACC;AAAA,IACA,WAAWxB,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,sBAAsB,cAAcwB,mCAAwB,QAAQ;AAEpE,MAAM,qBAAqBA,mCAAwB;AAEnD,MAAM,yBAAyB3B,iBAAM,WAGnC,CAAC,EAAE,WAAW,GAAG,SAAS,QAC1BC,2BAAAA,IAAC,OAAA,EAAI,WAAWE,OAAAA,GAAG,8CAA8C,GAC/D,UAAAF,2BAAAA;AAAAA,EAAC0B,mCAAwB;AAAA,EAAxB;AAAA,IACC,WAAWxB,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAEF;AAAA,IACC,GAAG;AAAA,EAAA;AACN,GACF,CACD;AACD,uBAAuB,cACrBwB,mCAAwB,SAAS;AAEnC,MAAM,0BAA0B3B,iBAAM,WAGpC,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC0B,mCAAwB;AAAA,EAAxB;AAAA,IACC;AAAA,IACA,WAAWxB,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,IAEJ,UAAAF,2BAAAA,IAAC,OAAA,EAAI,WAAU,6GAAA,CAA6G;AAAA,EAAA;AAC9H,CACD;AACD,wBAAwB,cACtB0B,mCAAwB,UAAU;ACvGpC,MAAM,WAAW3B,iBAAM,WAGrB,CAAC,EAAE,WAAW,OAAO,GAAG,SAAS,QACjCC,2BAAAA;AAAAA,EAAC2B,6BAAkB;AAAA,EAAlB;AAAA,IACC;AAAA,IACA,WAAWzB,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,IAEJ,UAAAF,2BAAAA;AAAAA,MAAC2B,6BAAkB;AAAA,MAAlB;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,WAAW,eAAe,OAAO,SAAS,EAAE,KAAA;AAAA,MAAK;AAAA,IAAA;AAAA,EAC5D;AACF,CACD;AACD,SAAS,cAAcA,6BAAkB,KAAK;ACpB9C,MAAM,aAAa5B,iBAAM,WAGvB,CAAC,EAAE,WAAW,UAAU,GAAG,SAAS,QACpCO,2BAAAA;AAAAA,EAACsB,+BAAoB;AAAA,EAApB;AAAA,IACC;AAAA,IACA,WAAW1B,OAAAA,GAAG,4BAA4B,SAAS;AAAA,IAClD,GAAG;AAAA,IAEJ,UAAA;AAAA,MAAAF,2BAAAA,IAAC4B,+BAAoB,UAApB,EAA6B,WAAU,mCACrC,UACH;AAAA,qCACC,WAAA,EAAU;AAAA,MACX5B,+BAAC4B,+BAAoB,QAApB,CAAA,CAA2B;AAAA,IAAA;AAAA,EAAA;AAC9B,CACD;AACD,WAAW,cAAcA,+BAAoB,KAAK;AAElD,MAAM,YAAY7B,iBAAM,WAGtB,CAAC,EAAE,WAAW,cAAc,YAAY,GAAG,SAAS,QACpDC,2BAAAA;AAAAA,EAAC4B,+BAAoB;AAAA,EAApB;AAAA,IACC;AAAA,IACA;AAAA,IACA,WAAW1B,OAAAA;AAAAA,MACT;AAAA,MACA,gBAAgB,cACd;AAAA,MACF,gBAAgB,gBACd;AAAA,MACF;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,IAEJ,UAAAF,2BAAAA,IAAC4B,+BAAoB,iBAApB,EAAoC,WAAU,iDAAA,CAAiD;AAAA,EAAA;AAClG,CACD;AACD,UAAU,cAAcA,+BAAoB,oBAAoB;ACjChE,MAAM,cAAc1B,OAAAA;AAAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA,EAGA;AAAA,EACA;AACF;AAEA,MAAM,SAASH,iBAAM,WAGnB,CAAC,EAAE,WAAW,cAAc,OAAO,GAAG,MAAA,GAAS,QAAQ;AACvD,QAAM,cAAc,SAAS,gBAAgB,CAAC,CAAC,GAAG;AAElD,SACEO,2BAAAA;AAAAA,IAACuB,2BAAgB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW3B,OAAAA;AAAAA,QACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAYA;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAAF,2BAAAA,IAAC6B,2BAAgB,OAAhB,EAAsB,WAAU,iGAC/B,UAAA7B,+BAAC6B,2BAAgB,OAAhB,EAAsB,WAAU,8BAAA,CAA8B,EAAA,CACjE;AAAA,QACC,MAAM,KAAK,EAAE,QAAQ,WAAA,GAAc,CAAC,GAAG,MACtC7B,2BAAAA,IAAC6B,2BAAgB,OAAhB,EAA8B,WAAW,YAAA,GAAd,CAA2B,CACxD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;AACD,OAAO,cAAcA,2BAAgB,KAAK;ACb1C,MAAM,qBAAqB9B,iBAAM,cAAuB;AAAA,EACtD,SAAS;AAAA,EACT,WAAW;AACb,CAAC;AAED,MAAM,OAAOA,iBAAM,WAOjB,CAAC,EAAE,UAAU,aAAa,YAAY,OAAO,WAAW,GAAG,MAAA,GAAS,QAAQ;AAC5E,QAAM,MAAMA,iBAAM,QAAQ,OAAO,EAAE,SAAS,UAAA,IAAc,CAAC,SAAS,SAAS,CAAC;AAC9E,SACEC,2BAAAA,IAAC,mBAAmB,UAAnB,EAA4B,OAAO,KAClC,UAAAA,2BAAAA;AAAAA,IAAC8B,yBAAc;AAAA,IAAd;AAAA,MACC;AAAA,MACA,WAAW5B,OAAAA,GAAG,aAAa,UAAU,SAAS;AAAA,MAC7C,GAAG;AAAA,IAAA;AAAA,EAAA,GAER;AAEJ,CAAC;AACD,KAAK,cAAc;AAEnB,MAAM,WAAWH,iBAAM,WAGrB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAAQ;AAClC,QAAM,EAAE,SAAS,UAAA,IAAcA,iBAAM,WAAW,kBAAkB;AAClE,SACEC,2BAAAA;AAAAA,IAAC8B,yBAAc;AAAA,IAAd;AAAA,MACC;AAAA,MACA,WAAW5B,OAAAA;AAAAA,QACT,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,UAKR;AAAA,YACA;AAAA,QACJ,YAAY,gBAAgB,YAAY,WAAW;AAAA,QACnD;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;AACD,SAAS,cAAc4B,yBAAc,KAAK;AAE1C,MAAM,cAAc/B,iBAAM,WAGxB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAAQ;AAClC,QAAM,EAAE,SAAS,UAAA,IAAcA,iBAAM,WAAW,kBAAkB;AAClE,SACEC,2BAAAA;AAAAA,IAAC8B,yBAAc;AAAA,IAAd;AAAA,MACC;AAAA,MACA,WAAW5B,OAAAA;AAAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAY,SACR,kLACA;AAAA;AAAA;AAAA,QAGJ,aAAa;AAAA,QACb;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;AACD,YAAY,cAAc4B,yBAAc,QAAQ;AAEhD,MAAM,cAAc/B,iBAAM,WAGxB,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAAC8B,yBAAc;AAAA,EAAd;AAAA,IACC;AAAA,IACA,WAAW5B,OAAAA;AAAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AACD,YAAY,cAAc4B,yBAAc,QAAQ;AC1IhD,MAAM,iBAAiBtB,uBAAAA;AAAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SACE;AAAA,MAAA;AAAA,MAEJ,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;AAEA,MAAM,SAAST,iBAAM,WAInB,CAAC,EAAE,WAAW,SAAS,MAAM,GAAG,SAAS,QACzCC,2BAAAA;AAAAA,EAAC+B,2BAAgB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAW7B,OAAAA,GAAG,eAAe,EAAE,SAAS,MAAM,UAAA,CAAW,CAAC;AAAA,IACzD,GAAG;AAAA,EAAA;AACN,CACD;AAED,OAAO,cAAc6B,2BAAgB,KAAK;ACjC1C,MAAM,qBAAqBhC,iBAAM,cAE/B;AAAA,EACA,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AAED,MAAM,cAAcA,iBAAM,WAIxB,CAAC,EAAE,WAAW,SAAS,MAAM,UAAU,GAAG,MAAA,GAAS,QACnDC,2BAAAA;AAAAA,EAACgC,gCAAqB;AAAA,EAArB;AAAA,IACC;AAAA,IACA,WAAW9B,OAAAA,GAAG,8CAA8C,SAAS;AAAA,IACpE,GAAG;AAAA,IAEJ,UAAAF,2BAAAA,IAAC,mBAAmB,UAAnB,EAA4B,OAAO,EAAE,SAAS,KAAA,GAC5C,SAAA,CACH;AAAA,EAAA;AACF,CACD;AAED,YAAY,cAAcgC,gCAAqB,KAAK;AAEpD,MAAM,kBAAkBjC,iBAAM,WAI5B,CAAC,EAAE,WAAW,UAAU,SAAS,MAAM,GAAG,MAAA,GAAS,QAAQ;AAC3D,QAAM,UAAUA,iBAAM,WAAW,kBAAkB;AAEnD,SACEC,2BAAAA;AAAAA,IAACgC,gCAAqB;AAAA,IAArB;AAAA,MACC;AAAA,MACA,WAAW9B,OAAAA;AAAAA,QACT,eAAe;AAAA,UACb,SAAS,QAAQ,WAAW;AAAA,UAC5B,MAAM,QAAQ,QAAQ;AAAA,QAAA,CACvB;AAAA,QACD;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;AAED,gBAAgB,cAAc8B,gCAAqB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -3,6 +3,7 @@ import * as React from "react";
3
3
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
4
4
  import { c as cn, a8 as tv, a7 as Button } from "./avatar-FPbG1TRy.mjs";
5
5
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
6
+ import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
6
7
  import * as AccordionPrimitive from "@radix-ui/react-accordion";
7
8
  import { ChevronDown, MoreHorizontal, ChevronRight, ArrowLeft, ArrowRight, Check, Circle, Dot } from "lucide-react";
8
9
  import { cva } from "class-variance-authority";
@@ -10,7 +11,6 @@ import { Slot } from "@radix-ui/react-slot";
10
11
  import useEmblaCarousel from "embla-carousel-react";
11
12
  import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
12
13
  import { Drawer as Drawer$1 } from "vaul";
13
- import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
14
14
  import { OTPInput, OTPInputContext } from "input-otp";
15
15
  import * as LabelPrimitive from "@radix-ui/react-label";
16
16
  import * as MenubarPrimitive from "@radix-ui/react-menubar";
@@ -84,6 +84,26 @@ function Skeleton({
84
84
  }
85
85
  );
86
86
  }
87
+ const HoverCard = ({
88
+ openDelay = 200,
89
+ closeDelay = 100,
90
+ ...props
91
+ }) => /* @__PURE__ */ jsx(HoverCardPrimitive.Root, { openDelay, closeDelay, ...props });
92
+ const HoverCardTrigger = HoverCardPrimitive.Trigger;
93
+ const HoverCardContent = React.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
94
+ HoverCardPrimitive.Content,
95
+ {
96
+ ref,
97
+ align,
98
+ sideOffset,
99
+ className: cn(
100
+ "z-50 w-64 relative rounded-[12px] border border-border-default bg-bg-dropdown p-pad-card-base text-fg-default shadow-sh-lg outline-float outline-none before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-hover-card-content-transform-origin]",
101
+ className
102
+ ),
103
+ ...props
104
+ }
105
+ ));
106
+ HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
87
107
  const Accordion = AccordionPrimitive.Root;
88
108
  const AccordionItem = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
89
109
  AccordionPrimitive.Item,
@@ -945,26 +965,6 @@ const DrawerDescription = React.forwardRef(({ className, ...props }, ref) => /*
945
965
  }
946
966
  ));
947
967
  DrawerDescription.displayName = Drawer$1.Description.displayName;
948
- const HoverCard = ({
949
- openDelay = 200,
950
- closeDelay = 100,
951
- ...props
952
- }) => /* @__PURE__ */ jsx(HoverCardPrimitive.Root, { openDelay, closeDelay, ...props });
953
- const HoverCardTrigger = HoverCardPrimitive.Trigger;
954
- const HoverCardContent = React.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
955
- HoverCardPrimitive.Content,
956
- {
957
- ref,
958
- align,
959
- sideOffset,
960
- className: cn(
961
- "z-50 w-64 relative rounded-[12px] border border-border-default bg-bg-dropdown p-pad-card-base text-fg-default shadow-sh-lg outline-float outline-none before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-hover-card-content-transform-origin]",
962
- className
963
- ),
964
- ...props
965
- }
966
- ));
967
- HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
968
968
  const DEFAULTS = {
969
969
  variant: "connected",
970
970
  size: "md",
@@ -1727,4 +1727,4 @@ export {
1727
1727
  ContextMenu as y,
1728
1728
  ContextMenuCheckboxItem as z
1729
1729
  };
1730
- //# sourceMappingURL=toggle-group-mXbG8_Jm.mjs.map
1730
+ //# sourceMappingURL=toggle-group-BYmj8142.mjs.map