@snksergio/design-system 0.43.3 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-lib/chunks/{toggle-group-BEPs3e0Y.cjs → toggle-group-BC4eS3Gt.cjs} +85 -26
- package/dist-lib/chunks/toggle-group-BC4eS3Gt.cjs.map +1 -0
- package/dist-lib/chunks/{toggle-group-XMO6ReVo.mjs → toggle-group-CFiAGdm7.mjs} +85 -26
- package/dist-lib/chunks/toggle-group-CFiAGdm7.mjs.map +1 -0
- package/dist-lib/index.cjs +1 -1
- package/dist-lib/index.mjs +2 -2
- package/dist-lib/shadcn.cjs +1 -1
- package/dist-lib/shadcn.mjs +1 -1
- package/dist-lib/src/components/shadcn/card.d.ts +55 -2
- package/dist-lib/src/components/shadcn/card.d.ts.map +1 -1
- package/dist-lib/theme.css +3 -1
- package/dist-lib/tokens/brands/default/components/spacing.d.ts +41 -2
- package/dist-lib/tokens/brands/default/components/spacing.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist-lib/chunks/toggle-group-BEPs3e0Y.cjs.map +0 -1
- package/dist-lib/chunks/toggle-group-XMO6ReVo.mjs.map +0 -1
|
@@ -314,35 +314,88 @@ const BreadcrumbEllipsis = ({
|
|
|
314
314
|
}
|
|
315
315
|
);
|
|
316
316
|
BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
|
|
317
|
-
const
|
|
317
|
+
const CardSizeContext = React__namespace.createContext("md");
|
|
318
|
+
const PAD_X = {
|
|
319
|
+
sm: "px-pad-card-sm",
|
|
320
|
+
md: "px-pad-card-md",
|
|
321
|
+
lg: "px-pad-card-lg"
|
|
322
|
+
};
|
|
323
|
+
const PAD_Y = {
|
|
324
|
+
sm: "py-pad-card-sm",
|
|
325
|
+
md: "py-pad-card-md",
|
|
326
|
+
lg: "py-pad-card-lg"
|
|
327
|
+
};
|
|
328
|
+
const PAD_ALL = {
|
|
329
|
+
sm: "p-pad-card-sm",
|
|
330
|
+
md: "p-pad-card-md",
|
|
331
|
+
lg: "p-pad-card-lg"
|
|
332
|
+
};
|
|
333
|
+
const PULL_TOP = {
|
|
334
|
+
sm: "-mt-pad-card-sm",
|
|
335
|
+
md: "-mt-pad-card-md",
|
|
336
|
+
lg: "-mt-pad-card-lg"
|
|
337
|
+
};
|
|
338
|
+
const Card = React__namespace.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(CardSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
318
339
|
"div",
|
|
319
340
|
{
|
|
320
341
|
ref,
|
|
321
342
|
className: avatar.cn(
|
|
322
|
-
"flex flex-col gap-gp-4xl rounded-radius-base bg-bg-surface
|
|
343
|
+
"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",
|
|
344
|
+
PAD_Y[size],
|
|
323
345
|
className
|
|
324
346
|
),
|
|
325
347
|
...props
|
|
326
348
|
}
|
|
327
|
-
));
|
|
349
|
+
) }));
|
|
328
350
|
Card.displayName = "Card";
|
|
329
|
-
const CardHeader = React__namespace.forwardRef(({ className, ...props }, ref) =>
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
className
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
351
|
+
const CardHeader = React__namespace.forwardRef(({ className, variant = "plain", ...props }, ref) => {
|
|
352
|
+
const size = React__namespace.useContext(CardSizeContext);
|
|
353
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
354
|
+
"div",
|
|
355
|
+
{
|
|
356
|
+
ref,
|
|
357
|
+
className: avatar.cn(
|
|
358
|
+
// `gap-gp-2xs` (2px) e não `gp-sm` (6px): título e subtítulo de card são UMA
|
|
359
|
+
// unidade de leitura, não dois blocos. Com 6px o subtítulo lê como parágrafo
|
|
360
|
+
// solto sob o título; com 2px lê como legenda dele. É o valor que o showcase
|
|
361
|
+
// já aplicava no helper local dos cards de gráfico — a diferença apareceu ao
|
|
362
|
+
// comparar o mesmo card montado com o helper e com este componente, e o
|
|
363
|
+
// mantenedor escolheu o compacto como padrão (2026-08-19).
|
|
364
|
+
//
|
|
365
|
+
// ⚠️ Divergência DELIBERADA do shadcn upstream, que usa 6px: ao re-sincronizar
|
|
366
|
+
// este primitivo, não reverter (mesma classe de cuidado da L-040).
|
|
367
|
+
"grid auto-rows-min items-start gap-gp-2xs",
|
|
368
|
+
variant === "banded" ? avatar.cn(
|
|
369
|
+
// Faixa: padding nos 4 lados (o `px` sozinho deixaria o texto colado no
|
|
370
|
+
// topo), fundo, divisória, e o `-mt` que cancela o `py` do Card pra
|
|
371
|
+
// encostar na borda. `rounded-t` em vez de `overflow-hidden` no Card —
|
|
372
|
+
// clipar o Card quebraria qualquer coisa que precise vazar dele.
|
|
373
|
+
PAD_ALL[size],
|
|
374
|
+
PULL_TOP[size],
|
|
375
|
+
// `bg-subtle` + `border-subtle`: os mesmos tokens da referência
|
|
376
|
+
// (`SectionCard` do order-detail / `?app=edit-page`), escolhidos pelo
|
|
377
|
+
// mantenedor em 2026-08-19.
|
|
378
|
+
//
|
|
379
|
+
// ⚠️ Medido, pra quem for mexer não achar que é descuido: no **dark** o
|
|
380
|
+
// `bg-subtle` é 1% de branco sobre um surface de 0.225 — ~0,8pp de
|
|
381
|
+
// diferença, uma faixa **muito** discreta. No light são 0.973 sobre
|
|
382
|
+
// 1.0, que lê normalmente. É restrição intencional, não bug: a decisão
|
|
383
|
+
// veio de quem desenhou a tela de referência. Se um dia o dark precisar
|
|
384
|
+
// de mais presença, `bg-muted` é 3× (e no light é idêntico ao subtle).
|
|
385
|
+
"rounded-t-radius-base border-b border-border-subtle bg-bg-subtle"
|
|
386
|
+
) : PAD_X[size],
|
|
387
|
+
className
|
|
388
|
+
),
|
|
389
|
+
...props
|
|
390
|
+
}
|
|
391
|
+
);
|
|
392
|
+
});
|
|
340
393
|
CardHeader.displayName = "CardHeader";
|
|
341
394
|
const CardTitle = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
342
395
|
"div",
|
|
343
396
|
{
|
|
344
397
|
ref,
|
|
345
|
-
className: avatar.cn("text-title-md
|
|
398
|
+
className: avatar.cn("text-title-md text-fg-default", className),
|
|
346
399
|
...props
|
|
347
400
|
}
|
|
348
401
|
));
|
|
@@ -351,21 +404,27 @@ const CardDescription = React__namespace.forwardRef(({ className, ...props }, re
|
|
|
351
404
|
"div",
|
|
352
405
|
{
|
|
353
406
|
ref,
|
|
354
|
-
className: avatar.cn("text-
|
|
407
|
+
className: avatar.cn("text-caption-md text-fg-muted", className),
|
|
355
408
|
...props
|
|
356
409
|
}
|
|
357
410
|
));
|
|
358
411
|
CardDescription.displayName = "CardDescription";
|
|
359
|
-
const CardContent = React__namespace.forwardRef(({ className, ...props }, ref) =>
|
|
412
|
+
const CardContent = React__namespace.forwardRef(({ className, ...props }, ref) => {
|
|
413
|
+
const size = React__namespace.useContext(CardSizeContext);
|
|
414
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: avatar.cn(PAD_X[size], className), ...props });
|
|
415
|
+
});
|
|
360
416
|
CardContent.displayName = "CardContent";
|
|
361
|
-
const CardFooter = React__namespace.forwardRef(({ className, ...props }, ref) =>
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
417
|
+
const CardFooter = React__namespace.forwardRef(({ className, ...props }, ref) => {
|
|
418
|
+
const size = React__namespace.useContext(CardSizeContext);
|
|
419
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
420
|
+
"div",
|
|
421
|
+
{
|
|
422
|
+
ref,
|
|
423
|
+
className: avatar.cn("flex items-center", PAD_X[size], className),
|
|
424
|
+
...props
|
|
425
|
+
}
|
|
426
|
+
);
|
|
427
|
+
});
|
|
369
428
|
CardFooter.displayName = "CardFooter";
|
|
370
429
|
const CarouselContext = React__namespace.createContext(null);
|
|
371
430
|
function useCarousel() {
|
|
@@ -1540,4 +1599,4 @@ exports.badgeVariants = badgeVariants;
|
|
|
1540
1599
|
exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle;
|
|
1541
1600
|
exports.slotVariants = slotVariants;
|
|
1542
1601
|
exports.toggleVariants = toggleVariants;
|
|
1543
|
-
//# sourceMappingURL=toggle-group-
|
|
1602
|
+
//# sourceMappingURL=toggle-group-BC4eS3Gt.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggle-group-BC4eS3Gt.cjs","sources":["../../src/components/shadcn/separator.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/hover-card.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/radio-group.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":["\"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 * 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} & 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\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 }, [])\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 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 onSelect(api)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, 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 }}\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 <div ref={carouselRef} className=\"overflow-hidden\">\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\nexport {\r\n type CarouselApi,\r\n Carousel,\r\n CarouselContent,\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 * 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 { 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\"\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","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\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/lib/utils\"\n\n/**\n * Slider — alinhado com tokens v3.\n *\n * Specs:\n * - Track: h:8px (h-2), bg-emphasis (light, gray[100]) / bg-accent (dark, alpha 16%), radius-full\n * - Range: bg-brand (filled portion)\n * - Thumb: 24x16 (oval), white com shadow-sh-md\n * - hover/focus: shadow-sh-ring (brand glow)\n */\nconst THUMB_CLASS = cn(\n \"block h-4 w-6 shrink-0 rounded-radius-full bg-white\",\n \"shadow-sh-md\",\n \"transition-[box-shadow] select-none outline-none\",\n \"hover:shadow-sh-ring\",\n \"focus-visible:shadow-sh-ring\",\n \"disabled:pointer-events-none disabled:opacity-50\"\n);\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, defaultValue, value, ...props }, ref) => {\n const thumbCount = (value ?? defaultValue ?? [0]).length;\n\n return (\n <SliderPrimitive.Root\n ref={ref}\n defaultValue={defaultValue}\n value={value}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-radius-full bg-bg-emphasis dark:bg-bg-accent\">\n <SliderPrimitive.Range className=\"absolute h-full bg-bg-brand\" />\n </SliderPrimitive.Track>\n {Array.from({ length: thumbCount }, (_, i) => (\n <SliderPrimitive.Thumb key={i} className={THUMB_CLASS} />\n ))}\n </SliderPrimitive.Root>\n );\n})\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider }\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 (set via `variant` no <Tabs>, propagado por contexto):\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.\r\n * - \"line\": underline. List sem chrome, só border-b (border-subtle); tab sem bg,\r\n * border-b-2 transparente na base; ativo = border-border-brand + fg-default +\r\n * font-semibold (a borda de 2px sobrepõe a da list via -mb-px).\r\n */\r\ntype TabsVariant = \"segmented\" | \"line\"\r\nconst TabsVariantContext = React.createContext<TabsVariant>(\"segmented\")\r\n\r\nconst Tabs = React.forwardRef<\r\n React.ElementRef<typeof TabsPrimitive.Root>,\r\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> & { variant?: TabsVariant }\r\n>(({ variant = \"segmented\", ...props }, ref) => (\r\n <TabsVariantContext.Provider value={variant}>\r\n <TabsPrimitive.Root ref={ref} {...props} />\r\n </TabsVariantContext.Provider>\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 = React.useContext(TabsVariantContext)\r\n return (\r\n <TabsPrimitive.List\r\n ref={ref}\r\n className={cn(\r\n variant === \"line\"\r\n ? \"inline-flex w-fit items-center gap-gp-xl border-b border-border-subtle\"\r\n : \"inline-flex h-form-lg w-fit items-center bg-bg-muted p-[3px] gap-gp-2xs rounded-radius-lg\",\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 = 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 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","SeparatorPrimitive","cn","AccordionPrimitive","jsxs","ChevronDown","cva","tv","Slot","ChevronRight","MoreHorizontal","api","Button","ArrowLeft","ArrowRight","ContextMenuPrimitive","Check","Circle","DrawerPrimitive","HoverCardPrimitive","OTPInput","OTPInputContext","Dot","LabelPrimitive","MenubarPrimitive","NavigationMenuPrimitive","ProgressPrimitive","RadioGroupPrimitive","ScrollAreaPrimitive","SliderPrimitive","TabsPrimitive","TogglePrimitive","ToggleGroupPrimitive"],"mappings":"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"}
|
|
@@ -282,35 +282,88 @@ const BreadcrumbEllipsis = ({
|
|
|
282
282
|
}
|
|
283
283
|
);
|
|
284
284
|
BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
|
|
285
|
-
const
|
|
285
|
+
const CardSizeContext = React.createContext("md");
|
|
286
|
+
const PAD_X = {
|
|
287
|
+
sm: "px-pad-card-sm",
|
|
288
|
+
md: "px-pad-card-md",
|
|
289
|
+
lg: "px-pad-card-lg"
|
|
290
|
+
};
|
|
291
|
+
const PAD_Y = {
|
|
292
|
+
sm: "py-pad-card-sm",
|
|
293
|
+
md: "py-pad-card-md",
|
|
294
|
+
lg: "py-pad-card-lg"
|
|
295
|
+
};
|
|
296
|
+
const PAD_ALL = {
|
|
297
|
+
sm: "p-pad-card-sm",
|
|
298
|
+
md: "p-pad-card-md",
|
|
299
|
+
lg: "p-pad-card-lg"
|
|
300
|
+
};
|
|
301
|
+
const PULL_TOP = {
|
|
302
|
+
sm: "-mt-pad-card-sm",
|
|
303
|
+
md: "-mt-pad-card-md",
|
|
304
|
+
lg: "-mt-pad-card-lg"
|
|
305
|
+
};
|
|
306
|
+
const Card = React.forwardRef(({ className, size = "md", ...props }, ref) => /* @__PURE__ */ jsx(CardSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx(
|
|
286
307
|
"div",
|
|
287
308
|
{
|
|
288
309
|
ref,
|
|
289
310
|
className: cn(
|
|
290
|
-
"flex flex-col gap-gp-4xl rounded-radius-base bg-bg-surface
|
|
311
|
+
"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",
|
|
312
|
+
PAD_Y[size],
|
|
291
313
|
className
|
|
292
314
|
),
|
|
293
315
|
...props
|
|
294
316
|
}
|
|
295
|
-
));
|
|
317
|
+
) }));
|
|
296
318
|
Card.displayName = "Card";
|
|
297
|
-
const CardHeader = React.forwardRef(({ className, ...props }, ref) =>
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
className
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
319
|
+
const CardHeader = React.forwardRef(({ className, variant = "plain", ...props }, ref) => {
|
|
320
|
+
const size = React.useContext(CardSizeContext);
|
|
321
|
+
return /* @__PURE__ */ jsx(
|
|
322
|
+
"div",
|
|
323
|
+
{
|
|
324
|
+
ref,
|
|
325
|
+
className: cn(
|
|
326
|
+
// `gap-gp-2xs` (2px) e não `gp-sm` (6px): título e subtítulo de card são UMA
|
|
327
|
+
// unidade de leitura, não dois blocos. Com 6px o subtítulo lê como parágrafo
|
|
328
|
+
// solto sob o título; com 2px lê como legenda dele. É o valor que o showcase
|
|
329
|
+
// já aplicava no helper local dos cards de gráfico — a diferença apareceu ao
|
|
330
|
+
// comparar o mesmo card montado com o helper e com este componente, e o
|
|
331
|
+
// mantenedor escolheu o compacto como padrão (2026-08-19).
|
|
332
|
+
//
|
|
333
|
+
// ⚠️ Divergência DELIBERADA do shadcn upstream, que usa 6px: ao re-sincronizar
|
|
334
|
+
// este primitivo, não reverter (mesma classe de cuidado da L-040).
|
|
335
|
+
"grid auto-rows-min items-start gap-gp-2xs",
|
|
336
|
+
variant === "banded" ? cn(
|
|
337
|
+
// Faixa: padding nos 4 lados (o `px` sozinho deixaria o texto colado no
|
|
338
|
+
// topo), fundo, divisória, e o `-mt` que cancela o `py` do Card pra
|
|
339
|
+
// encostar na borda. `rounded-t` em vez de `overflow-hidden` no Card —
|
|
340
|
+
// clipar o Card quebraria qualquer coisa que precise vazar dele.
|
|
341
|
+
PAD_ALL[size],
|
|
342
|
+
PULL_TOP[size],
|
|
343
|
+
// `bg-subtle` + `border-subtle`: os mesmos tokens da referência
|
|
344
|
+
// (`SectionCard` do order-detail / `?app=edit-page`), escolhidos pelo
|
|
345
|
+
// mantenedor em 2026-08-19.
|
|
346
|
+
//
|
|
347
|
+
// ⚠️ Medido, pra quem for mexer não achar que é descuido: no **dark** o
|
|
348
|
+
// `bg-subtle` é 1% de branco sobre um surface de 0.225 — ~0,8pp de
|
|
349
|
+
// diferença, uma faixa **muito** discreta. No light são 0.973 sobre
|
|
350
|
+
// 1.0, que lê normalmente. É restrição intencional, não bug: a decisão
|
|
351
|
+
// veio de quem desenhou a tela de referência. Se um dia o dark precisar
|
|
352
|
+
// de mais presença, `bg-muted` é 3× (e no light é idêntico ao subtle).
|
|
353
|
+
"rounded-t-radius-base border-b border-border-subtle bg-bg-subtle"
|
|
354
|
+
) : PAD_X[size],
|
|
355
|
+
className
|
|
356
|
+
),
|
|
357
|
+
...props
|
|
358
|
+
}
|
|
359
|
+
);
|
|
360
|
+
});
|
|
308
361
|
CardHeader.displayName = "CardHeader";
|
|
309
362
|
const CardTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
310
363
|
"div",
|
|
311
364
|
{
|
|
312
365
|
ref,
|
|
313
|
-
className: cn("text-title-md
|
|
366
|
+
className: cn("text-title-md text-fg-default", className),
|
|
314
367
|
...props
|
|
315
368
|
}
|
|
316
369
|
));
|
|
@@ -319,21 +372,27 @@ const CardDescription = React.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
319
372
|
"div",
|
|
320
373
|
{
|
|
321
374
|
ref,
|
|
322
|
-
className: cn("text-
|
|
375
|
+
className: cn("text-caption-md text-fg-muted", className),
|
|
323
376
|
...props
|
|
324
377
|
}
|
|
325
378
|
));
|
|
326
379
|
CardDescription.displayName = "CardDescription";
|
|
327
|
-
const CardContent = React.forwardRef(({ className, ...props }, ref) =>
|
|
380
|
+
const CardContent = React.forwardRef(({ className, ...props }, ref) => {
|
|
381
|
+
const size = React.useContext(CardSizeContext);
|
|
382
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn(PAD_X[size], className), ...props });
|
|
383
|
+
});
|
|
328
384
|
CardContent.displayName = "CardContent";
|
|
329
|
-
const CardFooter = React.forwardRef(({ className, ...props }, ref) =>
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
385
|
+
const CardFooter = React.forwardRef(({ className, ...props }, ref) => {
|
|
386
|
+
const size = React.useContext(CardSizeContext);
|
|
387
|
+
return /* @__PURE__ */ jsx(
|
|
388
|
+
"div",
|
|
389
|
+
{
|
|
390
|
+
ref,
|
|
391
|
+
className: cn("flex items-center", PAD_X[size], className),
|
|
392
|
+
...props
|
|
393
|
+
}
|
|
394
|
+
);
|
|
395
|
+
});
|
|
337
396
|
CardFooter.displayName = "CardFooter";
|
|
338
397
|
const CarouselContext = React.createContext(null);
|
|
339
398
|
function useCarousel() {
|
|
@@ -1510,4 +1569,4 @@ export {
|
|
|
1510
1569
|
ContextMenuCheckboxItem as y,
|
|
1511
1570
|
ContextMenuContent as z
|
|
1512
1571
|
};
|
|
1513
|
-
//# sourceMappingURL=toggle-group-
|
|
1572
|
+
//# sourceMappingURL=toggle-group-CFiAGdm7.mjs.map
|