@fluencypassdevs/cycle 0.8.1 → 0.8.2

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/bin/mcp.mjs CHANGED
@@ -18,7 +18,7 @@ const COMPONENTS = [
18
18
  {
19
19
  name: "Button",
20
20
  import: `import { Button } from "@fluencypassdevs/cycle"`,
21
- description: "Botao com 6 variants (default, destructive, outline, secondary, ghost, link), 8 sizes (xs, sm, default, lg, icon-xs, icon-sm, icon-default, icon-lg). Suporte a temas via .theme-*.",
21
+ description: "Botao com 6 variants (default, destructive, outline, secondary, ghost, link), 8 sizes (xs, sm, default, lg, icon-xs, icon-sm, icon-default, icon-lg). Pressed state (scale+brightness). Touch target 44px (WCAG 2.5.8). Suporte a temas via .theme-*.",
22
22
  props: [
23
23
  { name: "variant", type: '"default" | "destructive" | "outline" | "secondary" | "ghost" | "link"', default: '"default"' },
24
24
  { name: "size", type: '"xs" | "sm" | "default" | "lg" | "icon-xs" | "icon-sm" | "icon-default" | "icon-lg"', default: '"default"' },
@@ -1,4 +1,4 @@
1
- import { Button } from './chunk-7UMEJDC3.js';
1
+ import { Button } from './chunk-5I4PGGLN.js';
2
2
  import { cn } from './chunk-TYCPXAXF.js';
3
3
  import { __objRest, __spreadValues } from './chunk-YINJ5YZ5.js';
4
4
  import { AlertDialog as AlertDialog$1 } from 'radix-ui';
@@ -176,5 +176,5 @@ function AlertDialogCancel(_a) {
176
176
  }
177
177
 
178
178
  export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
179
- //# sourceMappingURL=chunk-5AZSRHJE.js.map
180
- //# sourceMappingURL=chunk-5AZSRHJE.js.map
179
+ //# sourceMappingURL=chunk-3EFI7PYC.js.map
180
+ //# sourceMappingURL=chunk-3EFI7PYC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/alert-dialog.tsx"],"names":["AlertDialogPrimitive"],"mappings":"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","file":"chunk-5AZSRHJE.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n size?: \"default\" | \"sm\"\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n \"group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n \"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n \"text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"mb-2 inline-flex size-16 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Action\n data-slot=\"alert-dialog-action\"\n className={cn(className)}\n {...props}\n />\n </Button>\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Cancel\n data-slot=\"alert-dialog-cancel\"\n className={cn(className)}\n {...props}\n />\n </Button>\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n"]}
1
+ {"version":3,"sources":["../src/components/ui/alert-dialog.tsx"],"names":["AlertDialogPrimitive"],"mappings":"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","file":"chunk-3EFI7PYC.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n size?: \"default\" | \"sm\"\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n \"group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n \"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n \"text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"mb-2 inline-flex size-16 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Action\n data-slot=\"alert-dialog-action\"\n className={cn(className)}\n {...props}\n />\n </Button>\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Cancel\n data-slot=\"alert-dialog-cancel\"\n className={cn(className)}\n {...props}\n />\n </Button>\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n"]}
@@ -5,7 +5,7 @@ import { Slot } from 'radix-ui';
5
5
  import { jsx } from 'react/jsx-runtime';
6
6
 
7
7
  var buttonVariants = cva(
8
- "inline-flex shrink-0 items-center justify-center gap-2 rounded-lg whitespace-nowrap transition-all outline-none cursor-pointer focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0",
8
+ "relative inline-flex shrink-0 items-center justify-center gap-2 rounded-lg whitespace-nowrap transition-all duration-150 outline-none cursor-pointer active:scale-[0.97] active:brightness-[0.92] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 disabled:active:scale-100 disabled:active:brightness-100 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 after:absolute after:top-1/2 after:left-1/2 after:-translate-x-1/2 after:-translate-y-1/2 after:size-full after:min-h-11 after:min-w-11",
9
9
  {
10
10
  variants: {
11
11
  variant: {
@@ -14,7 +14,7 @@ var buttonVariants = cva(
14
14
  outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
15
15
  secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
16
16
  ghost: "text-primary hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
17
- link: "text-primary underline-offset-4 hover:underline"
17
+ link: "text-primary underline-offset-4 hover:underline active:scale-100 active:brightness-100"
18
18
  },
19
19
  size: {
20
20
  default: "h-10 px-4 py-2 button-md has-[>svg]:px-3 [&_svg:not([class*='size-'])]:size-6 [&_svg]:stroke-[1.5]",
@@ -58,5 +58,5 @@ function Button(_a) {
58
58
  }
59
59
 
60
60
  export { Button, buttonVariants };
61
- //# sourceMappingURL=chunk-7UMEJDC3.js.map
62
- //# sourceMappingURL=chunk-7UMEJDC3.js.map
61
+ //# sourceMappingURL=chunk-5I4PGGLN.js.map
62
+ //# sourceMappingURL=chunk-5I4PGGLN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/button.tsx"],"names":[],"mappings":";;;;;;AAMA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACrB,upBAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wDAAA;AAAA,QACT,WAAA,EACE,oKAAA;AAAA,QACF,OAAA,EACE,uIAAA;AAAA,QACF,SAAA,EACE,8DAAA;AAAA,QACF,KAAA,EACE,mFAAA;AAAA,QACF,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,oGAAA;AAAA,QACT,EAAA,EAAI,mGAAA;AAAA,QACJ,EAAA,EAAI,qGAAA;AAAA,QACJ,EAAA,EAAI,oGAAA;AAAA,QACJ,IAAA,EAAM,mEAAA;AAAA,QACN,SAAA,EAAW,gEAAA;AAAA,QACX,SAAA,EAAW,kEAAA;AAAA,QACX,SAAA,EAAW;AAAA;AACb,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAQA,SAAS,OAAO,EAAA,EAMA;AANA,EAAA,IAAA,EAAA,GAAA,EAAA,EACd;AAAA,IAAA,SAAA;AAAA,IACA,OAAA,GAAU,SAAA;AAAA,IACV,IAAA,GAAO,SAAA;AAAA,IACP,OAAA,GAAU;AAAA,GAlDZ,GA8CgB,EAAA,EAKX,KAAA,GAAA,SAAA,CALW,EAAA,EAKX;AAAA,IAJH,WAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,IAAA,GAAO,OAAA,GAAU,IAAA,CAAK,IAAA,GAAO,QAAA;AAEnC,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC;AAAA,KAAA,EACtD,KAAA;AAAA,GACN;AAEJ","file":"chunk-5I4PGGLN.js","sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"relative inline-flex shrink-0 items-center justify-center gap-2 rounded-lg whitespace-nowrap transition-all duration-150 outline-none cursor-pointer active:scale-[0.97] active:brightness-[0.92] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 disabled:active:scale-100 disabled:active:brightness-100 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 after:absolute after:top-1/2 after:left-1/2 after:-translate-x-1/2 after:-translate-y-1/2 after:size-full after:min-h-11 after:min-w-11\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"text-primary hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline active:scale-100 active:brightness-100\",\n },\n size: {\n default: \"h-10 px-4 py-2 button-md has-[>svg]:px-3 [&_svg:not([class*='size-'])]:size-6 [&_svg]:stroke-[1.5]\",\n xs: \"h-6 px-2 py-1 button-sm has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3 [&_svg]:stroke-[1]\",\n sm: \"h-8 px-3 py-2 button-sm has-[>svg]:px-2.5 [&_svg:not([class*='size-'])]:size-4 [&_svg]:stroke-[1.2]\",\n lg: \"h-12 px-6 py-3 button-lg has-[>svg]:px-4 [&_svg:not([class*='size-'])]:size-6 [&_svg]:stroke-[1.5]\",\n icon: \"size-10 [&_svg:not([class*='size-'])]:size-6 [&_svg]:stroke-[1.5]\",\n \"icon-xs\": \"size-6 [&_svg:not([class*='size-'])]:size-3 [&_svg]:stroke-[1]\",\n \"icon-sm\": \"size-8 [&_svg:not([class*='size-'])]:size-4 [&_svg]:stroke-[1.2]\",\n \"icon-lg\": \"size-12 [&_svg:not([class*='size-'])]:size-6 [&_svg]:stroke-[1.5]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ComponentProps<\"button\">,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n"]}
@@ -1,4 +1,4 @@
1
- import { Button } from './chunk-7UMEJDC3.js';
1
+ import { Button } from './chunk-5I4PGGLN.js';
2
2
  import { cn } from './chunk-TYCPXAXF.js';
3
3
  import { __objRest, __spreadValues, __spreadProps } from './chunk-YINJ5YZ5.js';
4
4
  import { XIcon } from 'lucide-react';
@@ -143,5 +143,5 @@ function DialogDescription(_a) {
143
143
  }
144
144
 
145
145
  export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
146
- //# sourceMappingURL=chunk-TZ7BEYQ7.js.map
147
- //# sourceMappingURL=chunk-TZ7BEYQ7.js.map
146
+ //# sourceMappingURL=chunk-5NKTYXWQ.js.map
147
+ //# sourceMappingURL=chunk-5NKTYXWQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/dialog.tsx"],"names":["DialogPrimitive"],"mappings":"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","file":"chunk-TZ7BEYQ7.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n"]}
1
+ {"version":3,"sources":["../src/components/ui/dialog.tsx"],"names":["DialogPrimitive"],"mappings":"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","file":"chunk-5NKTYXWQ.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"outline\">Close</Button>\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { CycleIcon } from './chunk-V7M2NHUO.js';
2
- import { Button } from './chunk-7UMEJDC3.js';
2
+ import { Button } from './chunk-5I4PGGLN.js';
3
3
  import { Textarea } from './chunk-JJETOZMI.js';
4
4
  import { cn } from './chunk-TYCPXAXF.js';
5
5
  import { __objRest, __spreadProps, __spreadValues } from './chunk-YINJ5YZ5.js';
@@ -253,5 +253,5 @@ function LikeDislike(_a) {
253
253
  }
254
254
 
255
255
  export { LikeDislike, likeDislikeVariants };
256
- //# sourceMappingURL=chunk-MSFBYHUF.js.map
257
- //# sourceMappingURL=chunk-MSFBYHUF.js.map
256
+ //# sourceMappingURL=chunk-F2XA2Z75.js.map
257
+ //# sourceMappingURL=chunk-F2XA2Z75.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/like-dislike.tsx"],"names":["e"],"mappings":"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","file":"chunk-MSFBYHUF.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { ThumbsUp, ThumbsDown, X, Check } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { CycleIcon } from \"@/components/icons\"\nimport { Button } from \"@/components/ui/button\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\n/* ---------------------------------- CVA ---------------------------------- */\n\nconst likeDislikeVariants = cva(\"inline-flex flex-col\", {\n variants: {\n size: {\n default: \"gap-2\",\n xs: \"gap-1.5\",\n sm: \"gap-1.5\",\n lg: \"gap-3\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n})\n\n/** Maps component size → toggle button dimensions + icon size + burst ray size */\nconst sizeConfig = {\n xs: { iconBtn: \"size-6\", icon: \"xs\" as const, text: \"text-xs\", rayH: \"h-1\", rayW: \"w-[2px]\" },\n sm: { iconBtn: \"size-8\", icon: \"xs\" as const, text: \"text-xs\", rayH: \"h-1.5\", rayW: \"w-[2px]\" },\n default: { iconBtn: \"size-10\", icon: \"sm\" as const, text: \"text-sm\", rayH: \"h-2\", rayW: \"w-[2px]\" },\n lg: { iconBtn: \"size-12\", icon: \"sm\" as const, text: \"text-base\", rayH: \"h-2.5\", rayW: \"w-[3px]\" },\n} as const\n\n/** Angles and colors for the burst rays */\nconst BURST_RAYS = [\n { angle: 0, delay: \"0ms\" },\n { angle: 45, delay: \"30ms\" },\n { angle: 90, delay: \"60ms\" },\n { angle: 135, delay: \"20ms\" },\n { angle: 180, delay: \"50ms\" },\n { angle: 225, delay: \"10ms\" },\n { angle: 270, delay: \"40ms\" },\n { angle: 315, delay: \"25ms\" },\n]\n\n/* -------------------------------- Types --------------------------------- */\n\nexport type LikeDislikeValue = \"like\" | \"dislike\" | null\n\nexport interface LikeDislikeProps\n extends Omit<React.ComponentProps<\"div\">, \"onChange\" | \"defaultValue\">,\n VariantProps<typeof likeDislikeVariants> {\n /** Current value — controlled */\n value?: LikeDislikeValue\n /** Default value — uncontrolled */\n defaultValue?: LikeDislikeValue\n /** Called when the value changes */\n onValueChange?: (value: LikeDislikeValue) => void\n /** Show feedback textarea when dislike is selected */\n showFeedback?: boolean\n /** Placeholder for the feedback textarea */\n feedbackPlaceholder?: string\n /** Label for the feedback submit button */\n feedbackSubmitLabel?: string\n /** Called when feedback is submitted. Can return a Promise for async handling. */\n onFeedbackSubmit?: (feedback: string) => void | Promise<void>\n /** Message shown after feedback is submitted */\n feedbackSuccessMessage?: string\n /** Delay in ms before auto-closing after submit. Default: 2000. Set 0 to disable. */\n feedbackAutoCloseDelay?: number\n /** Theme class for the burst animation rays (e.g. \"theme-brand\"). Default: \"theme-brand\" */\n burstTheme?: string\n /** Disabled state */\n disabled?: boolean\n}\n\n/* ------------------------------ Component ------------------------------- */\n\nfunction LikeDislike({\n className,\n size = \"default\",\n value: valueProp,\n defaultValue = null,\n onValueChange,\n showFeedback = false,\n feedbackPlaceholder = \"O que voce nao gostou?\",\n feedbackSubmitLabel = \"Enviar\",\n onFeedbackSubmit,\n feedbackSuccessMessage = \"Obrigado pelo feedback!\",\n feedbackAutoCloseDelay = 2000,\n burstTheme = \"theme-brand\",\n disabled = false,\n ...props\n}: LikeDislikeProps) {\n /* --- State --- */\n const isControlled = valueProp !== undefined\n const [internalValue, setInternalValue] = React.useState<LikeDislikeValue>(defaultValue)\n const currentValue = isControlled ? valueProp : internalValue\n\n const [feedbackText, setFeedbackText] = React.useState(\"\")\n const [isBursting, setIsBursting] = React.useState(false)\n const [feedbackDismissed, setFeedbackDismissed] = React.useState(false)\n const [feedbackStatus, setFeedbackStatus] = React.useState<\"idle\" | \"submitting\" | \"submitted\">(\"idle\")\n const autoCloseTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const s = sizeConfig[size ?? \"default\"]\n\n /* --- Handlers --- */\n function handleClick(target: \"like\" | \"dislike\") {\n if (disabled) return\n const next: LikeDislikeValue = currentValue === target ? null : target\n\n if (!isControlled) setInternalValue(next)\n onValueChange?.(next)\n setFeedbackDismissed(false)\n setFeedbackStatus(\"idle\")\n setFeedbackText(\"\")\n if (autoCloseTimerRef.current) clearTimeout(autoCloseTimerRef.current)\n\n // Trigger burst animation when transitioning TO like\n if (target === \"like\" && next === \"like\") {\n setIsBursting(true)\n }\n }\n\n function handleBurstEnd() {\n setIsBursting(false)\n }\n\n // Cleanup auto-close timer\n React.useEffect(() => {\n return () => {\n if (autoCloseTimerRef.current) clearTimeout(autoCloseTimerRef.current)\n }\n }, [])\n\n async function handleFeedbackSubmit(e: React.FormEvent) {\n e.preventDefault()\n if (!feedbackText.trim() || feedbackStatus === \"submitting\") return\n\n setFeedbackStatus(\"submitting\")\n try {\n await onFeedbackSubmit?.(feedbackText.trim())\n setFeedbackStatus(\"submitted\")\n setFeedbackText(\"\")\n\n // Auto-close after delay\n if (feedbackAutoCloseDelay > 0) {\n autoCloseTimerRef.current = setTimeout(() => {\n setFeedbackDismissed(true)\n setFeedbackStatus(\"idle\")\n }, feedbackAutoCloseDelay)\n }\n } catch {\n // If the callback throws, reset to idle so the user can retry\n setFeedbackStatus(\"idle\")\n }\n }\n\n const isLiked = currentValue === \"like\"\n const isDisliked = currentValue === \"dislike\"\n const showFeedbackPanel = isDisliked && showFeedback && !feedbackDismissed\n\n /* --- Shared button classes --- */\n const btnBase = cn(\n \"relative inline-flex shrink-0 items-center justify-center rounded-lg transition-[color,box-shadow,background-color] outline-none cursor-pointer\",\n \"hover:bg-muted hover:text-muted-foreground\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n s.iconBtn\n )\n\n return (\n <div\n data-slot=\"like-dislike\"\n className={cn(\"relative inline-flex\", className)}\n {...props}\n >\n {/* Button row */}\n <div className=\"inline-flex items-center gap-1\" role=\"group\" aria-label=\"Avaliar conteudo\">\n {/* Like */}\n <button\n type=\"button\"\n aria-pressed={isLiked}\n aria-label=\"Gostei\"\n disabled={disabled}\n onClick={() => handleClick(\"like\")}\n className={cn(\n btnBase,\n isLiked && \"bg-accent text-accent-foreground [&_svg]:fill-current\"\n )}\n >\n {/* Burst rays (behind the icon) */}\n {isBursting && (\n <span\n className={cn(\"absolute inset-0 z-0 pointer-events-none\", burstTheme)}\n aria-hidden=\"true\"\n >\n {BURST_RAYS.map(({ angle, delay }) => (\n <span\n key={angle}\n className=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\"\n style={{ rotate: `${angle}deg` }}\n >\n <span\n className={cn(\n \"block rounded-full bg-primary opacity-0 animate-like-burst\",\n s.rayW, s.rayH\n )}\n style={{ animationDelay: delay }}\n />\n </span>\n ))}\n </span>\n )}\n\n {/* Icon with pop animation (above rays) */}\n <span\n className={cn(\"relative z-10\", isBursting && \"animate-like-pop\")}\n onAnimationEnd={handleBurstEnd}\n >\n <CycleIcon icon={ThumbsUp} size={s.icon} decorative />\n </span>\n </button>\n\n {/* Dislike */}\n <button\n type=\"button\"\n aria-pressed={isDisliked}\n aria-label=\"Nao gostei\"\n disabled={disabled}\n onClick={() => handleClick(\"dislike\")}\n className={cn(\n btnBase,\n isDisliked && \"bg-accent text-accent-foreground [&_svg]:fill-current\"\n )}\n >\n <CycleIcon icon={ThumbsDown} size={s.icon} decorative />\n </button>\n </div>\n\n {/* Floating feedback panel */}\n {showFeedbackPanel && (\n <div className=\"absolute left-0 top-full z-50 mt-2 w-72 rounded-lg border border-border bg-background p-3 shadow-md animate-in fade-in-0 zoom-in-95 slide-in-from-top-2\">\n {feedbackStatus === \"submitted\" ? (\n /* --- Success state --- */\n <div className=\"flex items-center gap-2 py-2\">\n <span className=\"inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground\">\n <CycleIcon icon={Check} size=\"xs\" decorative />\n </span>\n <p className={cn(\"text-foreground\", s.text)}>\n {feedbackSuccessMessage}\n </p>\n </div>\n ) : (\n /* --- Form state --- */\n <>\n <div className=\"flex items-center justify-between mb-2\">\n <p className={cn(\"font-medium text-foreground\", s.text)}>\n {feedbackPlaceholder}\n </p>\n <button\n type=\"button\"\n onClick={() => setFeedbackDismissed(true)}\n className=\"inline-flex size-6 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground transition-colors cursor-pointer\"\n aria-label=\"Fechar\"\n >\n <CycleIcon icon={X} size=\"xs\" decorative />\n </button>\n </div>\n <form onSubmit={handleFeedbackSubmit} className=\"flex flex-col gap-2\">\n <Textarea\n textareaSize=\"sm\"\n value={feedbackText}\n onChange={(e) => setFeedbackText(e.target.value)}\n placeholder=\"Conte-nos mais...\"\n disabled={disabled || feedbackStatus === \"submitting\"}\n className=\"resize-none min-h-[60px]\"\n aria-label=\"Feedback\"\n />\n <div className=\"flex justify-end\">\n <Button\n type=\"submit\"\n size=\"sm\"\n disabled={disabled || !feedbackText.trim() || feedbackStatus === \"submitting\"}\n >\n {feedbackStatus === \"submitting\" ? \"Enviando...\" : feedbackSubmitLabel}\n </Button>\n </div>\n </form>\n </>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport { LikeDislike, likeDislikeVariants }\n"]}
1
+ {"version":3,"sources":["../src/components/ui/like-dislike.tsx"],"names":["e"],"mappings":"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","file":"chunk-F2XA2Z75.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { ThumbsUp, ThumbsDown, X, Check } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { CycleIcon } from \"@/components/icons\"\nimport { Button } from \"@/components/ui/button\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\n/* ---------------------------------- CVA ---------------------------------- */\n\nconst likeDislikeVariants = cva(\"inline-flex flex-col\", {\n variants: {\n size: {\n default: \"gap-2\",\n xs: \"gap-1.5\",\n sm: \"gap-1.5\",\n lg: \"gap-3\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n})\n\n/** Maps component size → toggle button dimensions + icon size + burst ray size */\nconst sizeConfig = {\n xs: { iconBtn: \"size-6\", icon: \"xs\" as const, text: \"text-xs\", rayH: \"h-1\", rayW: \"w-[2px]\" },\n sm: { iconBtn: \"size-8\", icon: \"xs\" as const, text: \"text-xs\", rayH: \"h-1.5\", rayW: \"w-[2px]\" },\n default: { iconBtn: \"size-10\", icon: \"sm\" as const, text: \"text-sm\", rayH: \"h-2\", rayW: \"w-[2px]\" },\n lg: { iconBtn: \"size-12\", icon: \"sm\" as const, text: \"text-base\", rayH: \"h-2.5\", rayW: \"w-[3px]\" },\n} as const\n\n/** Angles and colors for the burst rays */\nconst BURST_RAYS = [\n { angle: 0, delay: \"0ms\" },\n { angle: 45, delay: \"30ms\" },\n { angle: 90, delay: \"60ms\" },\n { angle: 135, delay: \"20ms\" },\n { angle: 180, delay: \"50ms\" },\n { angle: 225, delay: \"10ms\" },\n { angle: 270, delay: \"40ms\" },\n { angle: 315, delay: \"25ms\" },\n]\n\n/* -------------------------------- Types --------------------------------- */\n\nexport type LikeDislikeValue = \"like\" | \"dislike\" | null\n\nexport interface LikeDislikeProps\n extends Omit<React.ComponentProps<\"div\">, \"onChange\" | \"defaultValue\">,\n VariantProps<typeof likeDislikeVariants> {\n /** Current value — controlled */\n value?: LikeDislikeValue\n /** Default value — uncontrolled */\n defaultValue?: LikeDislikeValue\n /** Called when the value changes */\n onValueChange?: (value: LikeDislikeValue) => void\n /** Show feedback textarea when dislike is selected */\n showFeedback?: boolean\n /** Placeholder for the feedback textarea */\n feedbackPlaceholder?: string\n /** Label for the feedback submit button */\n feedbackSubmitLabel?: string\n /** Called when feedback is submitted. Can return a Promise for async handling. */\n onFeedbackSubmit?: (feedback: string) => void | Promise<void>\n /** Message shown after feedback is submitted */\n feedbackSuccessMessage?: string\n /** Delay in ms before auto-closing after submit. Default: 2000. Set 0 to disable. */\n feedbackAutoCloseDelay?: number\n /** Theme class for the burst animation rays (e.g. \"theme-brand\"). Default: \"theme-brand\" */\n burstTheme?: string\n /** Disabled state */\n disabled?: boolean\n}\n\n/* ------------------------------ Component ------------------------------- */\n\nfunction LikeDislike({\n className,\n size = \"default\",\n value: valueProp,\n defaultValue = null,\n onValueChange,\n showFeedback = false,\n feedbackPlaceholder = \"O que voce nao gostou?\",\n feedbackSubmitLabel = \"Enviar\",\n onFeedbackSubmit,\n feedbackSuccessMessage = \"Obrigado pelo feedback!\",\n feedbackAutoCloseDelay = 2000,\n burstTheme = \"theme-brand\",\n disabled = false,\n ...props\n}: LikeDislikeProps) {\n /* --- State --- */\n const isControlled = valueProp !== undefined\n const [internalValue, setInternalValue] = React.useState<LikeDislikeValue>(defaultValue)\n const currentValue = isControlled ? valueProp : internalValue\n\n const [feedbackText, setFeedbackText] = React.useState(\"\")\n const [isBursting, setIsBursting] = React.useState(false)\n const [feedbackDismissed, setFeedbackDismissed] = React.useState(false)\n const [feedbackStatus, setFeedbackStatus] = React.useState<\"idle\" | \"submitting\" | \"submitted\">(\"idle\")\n const autoCloseTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const s = sizeConfig[size ?? \"default\"]\n\n /* --- Handlers --- */\n function handleClick(target: \"like\" | \"dislike\") {\n if (disabled) return\n const next: LikeDislikeValue = currentValue === target ? null : target\n\n if (!isControlled) setInternalValue(next)\n onValueChange?.(next)\n setFeedbackDismissed(false)\n setFeedbackStatus(\"idle\")\n setFeedbackText(\"\")\n if (autoCloseTimerRef.current) clearTimeout(autoCloseTimerRef.current)\n\n // Trigger burst animation when transitioning TO like\n if (target === \"like\" && next === \"like\") {\n setIsBursting(true)\n }\n }\n\n function handleBurstEnd() {\n setIsBursting(false)\n }\n\n // Cleanup auto-close timer\n React.useEffect(() => {\n return () => {\n if (autoCloseTimerRef.current) clearTimeout(autoCloseTimerRef.current)\n }\n }, [])\n\n async function handleFeedbackSubmit(e: React.FormEvent) {\n e.preventDefault()\n if (!feedbackText.trim() || feedbackStatus === \"submitting\") return\n\n setFeedbackStatus(\"submitting\")\n try {\n await onFeedbackSubmit?.(feedbackText.trim())\n setFeedbackStatus(\"submitted\")\n setFeedbackText(\"\")\n\n // Auto-close after delay\n if (feedbackAutoCloseDelay > 0) {\n autoCloseTimerRef.current = setTimeout(() => {\n setFeedbackDismissed(true)\n setFeedbackStatus(\"idle\")\n }, feedbackAutoCloseDelay)\n }\n } catch {\n // If the callback throws, reset to idle so the user can retry\n setFeedbackStatus(\"idle\")\n }\n }\n\n const isLiked = currentValue === \"like\"\n const isDisliked = currentValue === \"dislike\"\n const showFeedbackPanel = isDisliked && showFeedback && !feedbackDismissed\n\n /* --- Shared button classes --- */\n const btnBase = cn(\n \"relative inline-flex shrink-0 items-center justify-center rounded-lg transition-[color,box-shadow,background-color] outline-none cursor-pointer\",\n \"hover:bg-muted hover:text-muted-foreground\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n s.iconBtn\n )\n\n return (\n <div\n data-slot=\"like-dislike\"\n className={cn(\"relative inline-flex\", className)}\n {...props}\n >\n {/* Button row */}\n <div className=\"inline-flex items-center gap-1\" role=\"group\" aria-label=\"Avaliar conteudo\">\n {/* Like */}\n <button\n type=\"button\"\n aria-pressed={isLiked}\n aria-label=\"Gostei\"\n disabled={disabled}\n onClick={() => handleClick(\"like\")}\n className={cn(\n btnBase,\n isLiked && \"bg-accent text-accent-foreground [&_svg]:fill-current\"\n )}\n >\n {/* Burst rays (behind the icon) */}\n {isBursting && (\n <span\n className={cn(\"absolute inset-0 z-0 pointer-events-none\", burstTheme)}\n aria-hidden=\"true\"\n >\n {BURST_RAYS.map(({ angle, delay }) => (\n <span\n key={angle}\n className=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\"\n style={{ rotate: `${angle}deg` }}\n >\n <span\n className={cn(\n \"block rounded-full bg-primary opacity-0 animate-like-burst\",\n s.rayW, s.rayH\n )}\n style={{ animationDelay: delay }}\n />\n </span>\n ))}\n </span>\n )}\n\n {/* Icon with pop animation (above rays) */}\n <span\n className={cn(\"relative z-10\", isBursting && \"animate-like-pop\")}\n onAnimationEnd={handleBurstEnd}\n >\n <CycleIcon icon={ThumbsUp} size={s.icon} decorative />\n </span>\n </button>\n\n {/* Dislike */}\n <button\n type=\"button\"\n aria-pressed={isDisliked}\n aria-label=\"Nao gostei\"\n disabled={disabled}\n onClick={() => handleClick(\"dislike\")}\n className={cn(\n btnBase,\n isDisliked && \"bg-accent text-accent-foreground [&_svg]:fill-current\"\n )}\n >\n <CycleIcon icon={ThumbsDown} size={s.icon} decorative />\n </button>\n </div>\n\n {/* Floating feedback panel */}\n {showFeedbackPanel && (\n <div className=\"absolute left-0 top-full z-50 mt-2 w-72 rounded-lg border border-border bg-background p-3 shadow-md animate-in fade-in-0 zoom-in-95 slide-in-from-top-2\">\n {feedbackStatus === \"submitted\" ? (\n /* --- Success state --- */\n <div className=\"flex items-center gap-2 py-2\">\n <span className=\"inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground\">\n <CycleIcon icon={Check} size=\"xs\" decorative />\n </span>\n <p className={cn(\"text-foreground\", s.text)}>\n {feedbackSuccessMessage}\n </p>\n </div>\n ) : (\n /* --- Form state --- */\n <>\n <div className=\"flex items-center justify-between mb-2\">\n <p className={cn(\"font-medium text-foreground\", s.text)}>\n {feedbackPlaceholder}\n </p>\n <button\n type=\"button\"\n onClick={() => setFeedbackDismissed(true)}\n className=\"inline-flex size-6 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground transition-colors cursor-pointer\"\n aria-label=\"Fechar\"\n >\n <CycleIcon icon={X} size=\"xs\" decorative />\n </button>\n </div>\n <form onSubmit={handleFeedbackSubmit} className=\"flex flex-col gap-2\">\n <Textarea\n textareaSize=\"sm\"\n value={feedbackText}\n onChange={(e) => setFeedbackText(e.target.value)}\n placeholder=\"Conte-nos mais...\"\n disabled={disabled || feedbackStatus === \"submitting\"}\n className=\"resize-none min-h-[60px]\"\n aria-label=\"Feedback\"\n />\n <div className=\"flex justify-end\">\n <Button\n type=\"submit\"\n size=\"sm\"\n disabled={disabled || !feedbackText.trim() || feedbackStatus === \"submitting\"}\n >\n {feedbackStatus === \"submitting\" ? \"Enviando...\" : feedbackSubmitLabel}\n </Button>\n </div>\n </form>\n </>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport { LikeDislike, likeDislikeVariants }\n"]}
@@ -1,7 +1,7 @@
1
1
  import { ChatBubble } from './chunk-HZJRM5EK.js';
2
2
  import { CycleIcon } from './chunk-V7M2NHUO.js';
3
3
  import { ScrollArea } from './chunk-3LXU5C35.js';
4
- import { Button } from './chunk-7UMEJDC3.js';
4
+ import { Button } from './chunk-5I4PGGLN.js';
5
5
  import { cn } from './chunk-TYCPXAXF.js';
6
6
  import { __objRest, __spreadProps, __spreadValues } from './chunk-YINJ5YZ5.js';
7
7
  import * as React from 'react';
@@ -100,5 +100,5 @@ function ChatPanel(_a) {
100
100
  }
101
101
 
102
102
  export { ChatPanel };
103
- //# sourceMappingURL=chunk-WUZODCC2.js.map
104
- //# sourceMappingURL=chunk-WUZODCC2.js.map
103
+ //# sourceMappingURL=chunk-L32AMI4K.js.map
104
+ //# sourceMappingURL=chunk-L32AMI4K.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/chat-panel.tsx"],"names":[],"mappings":"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","file":"chunk-WUZODCC2.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { SendIcon } from \"lucide-react\"\nimport { CycleIcon } from \"@/components/icons/CycleIcon\"\nimport { Button } from \"@/components/ui/button\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\nimport { ChatBubble, type ChatBubbleProps } from \"@/components/ui/chat-bubble\"\nimport { cn } from \"@/lib/utils\"\n\n/* ─── Types ─── */\n\nexport interface ChatMessage {\n /** Unique message ID */\n id: string\n /** Author display name */\n author: string\n /** Avatar URL */\n avatar?: string\n /** Message text */\n message: string\n /** Timestamp label (e.g. \"14:32\") */\n timestamp?: string\n /** Message variant */\n variant?: ChatBubbleProps[\"variant\"]\n}\n\nexport interface ChatPanelProps extends React.ComponentProps<\"div\"> {\n /** Chat messages array */\n messages: ChatMessage[]\n /** Callback when the user sends a message */\n onSendMessage?: (message: string) => void\n /** Disable the input (e.g. when chat is read-only or ended) */\n disabled?: boolean\n /** Input placeholder text */\n placeholder?: string\n /** Title shown at the top of the panel */\n title?: string\n}\n\n/* ─── Component ─── */\n\nfunction ChatPanel({\n messages,\n onSendMessage,\n disabled = false,\n placeholder = \"Envie uma mensagem...\",\n title = \"Chat\",\n className,\n ...props\n}: ChatPanelProps) {\n const [input, setInput] = React.useState(\"\")\n const scrollRef = React.useRef<HTMLDivElement>(null)\n\n /* Auto-scroll to bottom on new messages */\n React.useEffect(() => {\n const el = scrollRef.current\n if (el) {\n el.scrollTop = el.scrollHeight\n }\n }, [messages.length])\n\n function handleSubmit(e: React.FormEvent) {\n e.preventDefault()\n const trimmed = input.trim()\n if (!trimmed || disabled) return\n onSendMessage?.(trimmed)\n setInput(\"\")\n }\n\n return (\n <div\n data-slot=\"chat-panel\"\n className={cn(\n \"flex flex-col bg-background border-l border-border\",\n className\n )}\n {...props}\n >\n {/* Header */}\n <div className=\"shrink-0 flex items-center h-12 px-4 border-b border-border\">\n <h3 className=\"text-sm font-semibold text-foreground\">{title}</h3>\n </div>\n\n {/* Messages */}\n <ScrollArea className=\"flex-1 min-h-0\">\n <div ref={scrollRef} className=\"flex flex-col gap-3 p-4\">\n {messages.length === 0 && (\n <p className=\"text-sm text-muted-foreground text-center py-8\">\n Nenhuma mensagem ainda.\n </p>\n )}\n {messages.map((msg) => (\n <ChatBubble\n key={msg.id}\n author={msg.author}\n avatar={msg.avatar}\n message={msg.message}\n timestamp={msg.timestamp}\n variant={msg.variant}\n />\n ))}\n </div>\n </ScrollArea>\n\n {/* Input */}\n {onSendMessage && (\n <form\n onSubmit={handleSubmit}\n className=\"shrink-0 flex items-center gap-2 p-3 border-t border-border\"\n >\n <input\n type=\"text\"\n value={input}\n onChange={(e) => setInput(e.target.value)}\n placeholder={placeholder}\n disabled={disabled}\n className=\"flex-1 min-w-0 h-9 rounded-lg border border-input bg-background px-3 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-1 ring-offset-background disabled:opacity-50 disabled:cursor-not-allowed\"\n />\n <Button\n type=\"submit\"\n size=\"icon-sm\"\n disabled={disabled || !input.trim()}\n className=\"shrink-0\"\n >\n <CycleIcon icon={SendIcon} size=\"xs\" decorative />\n </Button>\n </form>\n )}\n </div>\n )\n}\n\nexport { ChatPanel }\n"]}
1
+ {"version":3,"sources":["../src/components/ui/chat-panel.tsx"],"names":[],"mappings":"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","file":"chunk-L32AMI4K.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { SendIcon } from \"lucide-react\"\nimport { CycleIcon } from \"@/components/icons/CycleIcon\"\nimport { Button } from \"@/components/ui/button\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\nimport { ChatBubble, type ChatBubbleProps } from \"@/components/ui/chat-bubble\"\nimport { cn } from \"@/lib/utils\"\n\n/* ─── Types ─── */\n\nexport interface ChatMessage {\n /** Unique message ID */\n id: string\n /** Author display name */\n author: string\n /** Avatar URL */\n avatar?: string\n /** Message text */\n message: string\n /** Timestamp label (e.g. \"14:32\") */\n timestamp?: string\n /** Message variant */\n variant?: ChatBubbleProps[\"variant\"]\n}\n\nexport interface ChatPanelProps extends React.ComponentProps<\"div\"> {\n /** Chat messages array */\n messages: ChatMessage[]\n /** Callback when the user sends a message */\n onSendMessage?: (message: string) => void\n /** Disable the input (e.g. when chat is read-only or ended) */\n disabled?: boolean\n /** Input placeholder text */\n placeholder?: string\n /** Title shown at the top of the panel */\n title?: string\n}\n\n/* ─── Component ─── */\n\nfunction ChatPanel({\n messages,\n onSendMessage,\n disabled = false,\n placeholder = \"Envie uma mensagem...\",\n title = \"Chat\",\n className,\n ...props\n}: ChatPanelProps) {\n const [input, setInput] = React.useState(\"\")\n const scrollRef = React.useRef<HTMLDivElement>(null)\n\n /* Auto-scroll to bottom on new messages */\n React.useEffect(() => {\n const el = scrollRef.current\n if (el) {\n el.scrollTop = el.scrollHeight\n }\n }, [messages.length])\n\n function handleSubmit(e: React.FormEvent) {\n e.preventDefault()\n const trimmed = input.trim()\n if (!trimmed || disabled) return\n onSendMessage?.(trimmed)\n setInput(\"\")\n }\n\n return (\n <div\n data-slot=\"chat-panel\"\n className={cn(\n \"flex flex-col bg-background border-l border-border\",\n className\n )}\n {...props}\n >\n {/* Header */}\n <div className=\"shrink-0 flex items-center h-12 px-4 border-b border-border\">\n <h3 className=\"text-sm font-semibold text-foreground\">{title}</h3>\n </div>\n\n {/* Messages */}\n <ScrollArea className=\"flex-1 min-h-0\">\n <div ref={scrollRef} className=\"flex flex-col gap-3 p-4\">\n {messages.length === 0 && (\n <p className=\"text-sm text-muted-foreground text-center py-8\">\n Nenhuma mensagem ainda.\n </p>\n )}\n {messages.map((msg) => (\n <ChatBubble\n key={msg.id}\n author={msg.author}\n avatar={msg.avatar}\n message={msg.message}\n timestamp={msg.timestamp}\n variant={msg.variant}\n />\n ))}\n </div>\n </ScrollArea>\n\n {/* Input */}\n {onSendMessage && (\n <form\n onSubmit={handleSubmit}\n className=\"shrink-0 flex items-center gap-2 p-3 border-t border-border\"\n >\n <input\n type=\"text\"\n value={input}\n onChange={(e) => setInput(e.target.value)}\n placeholder={placeholder}\n disabled={disabled}\n className=\"flex-1 min-w-0 h-9 rounded-lg border border-input bg-background px-3 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-1 ring-offset-background disabled:opacity-50 disabled:cursor-not-allowed\"\n />\n <Button\n type=\"submit\"\n size=\"icon-sm\"\n disabled={disabled || !input.trim()}\n className=\"shrink-0\"\n >\n <CycleIcon icon={SendIcon} size=\"xs\" decorative />\n </Button>\n </form>\n )}\n </div>\n )\n}\n\nexport { ChatPanel }\n"]}
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ export { ResizableHandle, ResizablePanel, ResizablePanelGroup } from './chunk-PY
3
3
  export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle } from './chunk-F2Q3E2ZM.js';
4
4
  export { Skeleton } from './chunk-2EKU7RP4.js';
5
5
  export { Spinner } from './chunk-5XNYJECW.js';
6
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from './chunk-TZ7BEYQ7.js';
6
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from './chunk-5NKTYXWQ.js';
7
7
  export { Fab, fabVariants } from './chunk-7NFHHOAE.js';
8
8
  export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger } from './chunk-YJ4U7ISM.js';
9
9
  export { FluencypassIcon, FluencypassLogo } from './chunk-5LZHXNBV.js';
@@ -11,16 +11,16 @@ export { AudioPlayer } from './chunk-UAHCRXAG.js';
11
11
  export { VideoPlayer } from './chunk-QAK6IWRA.js';
12
12
  export { Toaster, cycleToast } from './chunk-ELZCZ6ZH.js';
13
13
  export { Alert, AlertAction, AlertClose, AlertDescription, AlertTitle, alertVariants } from './chunk-7ZXAU2CD.js';
14
- export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger } from './chunk-5AZSRHJE.js';
14
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger } from './chunk-3EFI7PYC.js';
15
15
  export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue } from './chunk-SZUWVHP4.js';
16
16
  export { Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger } from './chunk-EF6FQT4Y.js';
17
17
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './chunk-IGMII4BK.js';
18
18
  export { ProgressStage } from './chunk-NYJMA2T7.js';
19
19
  export { ProgressDot, dotVariants, progressDotVariants } from './chunk-ZTANTDKS.js';
20
20
  export { FileCard, fileCardVariants } from './chunk-JMNMW54C.js';
21
- export { ChatPanel } from './chunk-WUZODCC2.js';
21
+ export { ChatPanel } from './chunk-L32AMI4K.js';
22
22
  export { ChatBubble, chatBubbleVariants } from './chunk-HZJRM5EK.js';
23
- export { LikeDislike, likeDislikeVariants } from './chunk-MSFBYHUF.js';
23
+ export { LikeDislike, likeDislikeVariants } from './chunk-F2XA2Z75.js';
24
24
  export { Achievement, Answer, Badge as BadgeIcon, Certificate, Chat as ChatIcon, Checkpoint, Completion, Conversation, Course, Deadline, Dialogue, Dictionary, Diploma, DotLive, Exercise, Feedback, Flashcard, Fluency, Goal, Grammar, GroupClass, Highlight, Language, Lesson, Listening, Live, MemoryCard, Milestone, Module, Presentation, PrivateClass, Progress as ProgressIcon, Question, Quiz, Ray, Reading, Recap, RecordedClass, Recurring, Repetition, Required, Schedule, Sentence, Streak, Task, Translate, Unit, Vocabulary, Whiteboard } from './chunk-D4QCYBCD.js';
25
25
  export { LiveWaiting } from './chunk-FPXSUEJO.js';
26
26
  export { Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage } from './chunk-MSLQRGSP.js';
@@ -33,7 +33,7 @@ export { Switch, switchVariants } from './chunk-NVA4ZJOS.js';
33
33
  export { Slider, sliderVariants } from './chunk-AL2ALTBH.js';
34
34
  export { Toggle, toggleVariants } from './chunk-CIM6KJH5.js';
35
35
  export { Progress, indicatorVariants, progressVariants } from './chunk-MTKKVYNS.js';
36
- export { Button, buttonVariants } from './chunk-7UMEJDC3.js';
36
+ export { Button, buttonVariants } from './chunk-5I4PGGLN.js';
37
37
  export { Input } from './chunk-74WKJRW7.js';
38
38
  export { Textarea } from './chunk-JJETOZMI.js';
39
39
  export { Label } from './chunk-726XFHED.js';
@@ -1,5 +1,5 @@
1
- export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger } from '../chunk-5AZSRHJE.js';
2
- import '../chunk-7UMEJDC3.js';
1
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger } from '../chunk-3EFI7PYC.js';
2
+ import '../chunk-5I4PGGLN.js';
3
3
  import '../chunk-TYCPXAXF.js';
4
4
  import '../chunk-YINJ5YZ5.js';
5
5
  //# sourceMappingURL=alert-dialog.js.map
package/dist/ui/button.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Button, buttonVariants } from '../chunk-7UMEJDC3.js';
1
+ export { Button, buttonVariants } from '../chunk-5I4PGGLN.js';
2
2
  import '../chunk-TYCPXAXF.js';
3
3
  import '../chunk-YINJ5YZ5.js';
4
4
  //# sourceMappingURL=button.js.map
@@ -1,9 +1,9 @@
1
- export { ChatPanel } from '../chunk-WUZODCC2.js';
1
+ export { ChatPanel } from '../chunk-L32AMI4K.js';
2
2
  import '../chunk-HZJRM5EK.js';
3
3
  import '../chunk-MSLQRGSP.js';
4
4
  import '../chunk-V7M2NHUO.js';
5
5
  import '../chunk-3LXU5C35.js';
6
- import '../chunk-7UMEJDC3.js';
6
+ import '../chunk-5I4PGGLN.js';
7
7
  import '../chunk-TYCPXAXF.js';
8
8
  import '../chunk-YINJ5YZ5.js';
9
9
  //# sourceMappingURL=chat-panel.js.map
package/dist/ui/dialog.js CHANGED
@@ -1,5 +1,5 @@
1
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from '../chunk-TZ7BEYQ7.js';
2
- import '../chunk-7UMEJDC3.js';
1
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from '../chunk-5NKTYXWQ.js';
2
+ import '../chunk-5I4PGGLN.js';
3
3
  import '../chunk-TYCPXAXF.js';
4
4
  import '../chunk-YINJ5YZ5.js';
5
5
  //# sourceMappingURL=dialog.js.map
@@ -1,7 +1,7 @@
1
- export { LikeDislike, likeDislikeVariants } from '../chunk-MSFBYHUF.js';
1
+ export { LikeDislike, likeDislikeVariants } from '../chunk-F2XA2Z75.js';
2
2
  import '../chunk-D4QCYBCD.js';
3
3
  import '../chunk-V7M2NHUO.js';
4
- import '../chunk-7UMEJDC3.js';
4
+ import '../chunk-5I4PGGLN.js';
5
5
  import '../chunk-JJETOZMI.js';
6
6
  import '../chunk-TYCPXAXF.js';
7
7
  import '../chunk-YINJ5YZ5.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluencypassdevs/cycle",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "description": "Cycle Design System — UI component library by Fluencypass",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/ui/button.tsx"],"names":[],"mappings":";;;;;;AAMA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACrB,mZAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wDAAA;AAAA,QACT,WAAA,EACE,oKAAA;AAAA,QACF,OAAA,EACE,uIAAA;AAAA,QACF,SAAA,EACE,8DAAA;AAAA,QACF,KAAA,EACE,mFAAA;AAAA,QACF,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,oGAAA;AAAA,QACT,EAAA,EAAI,mGAAA;AAAA,QACJ,EAAA,EAAI,qGAAA;AAAA,QACJ,EAAA,EAAI,oGAAA;AAAA,QACJ,IAAA,EAAM,mEAAA;AAAA,QACN,SAAA,EAAW,gEAAA;AAAA,QACX,SAAA,EAAW,kEAAA;AAAA,QACX,SAAA,EAAW;AAAA;AACb,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAQA,SAAS,OAAO,EAAA,EAMA;AANA,EAAA,IAAA,EAAA,GAAA,EAAA,EACd;AAAA,IAAA,SAAA;AAAA,IACA,OAAA,GAAU,SAAA;AAAA,IACV,IAAA,GAAO,SAAA;AAAA,IACP,OAAA,GAAU;AAAA,GAlDZ,GA8CgB,EAAA,EAKX,KAAA,GAAA,SAAA,CALW,EAAA,EAKX;AAAA,IAJH,WAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,IAAA,GAAO,OAAA,GAAU,IAAA,CAAK,IAAA,GAAO,QAAA;AAEnC,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC;AAAA,KAAA,EACtD,KAAA;AAAA,GACN;AAEJ","file":"chunk-7UMEJDC3.js","sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center gap-2 rounded-lg whitespace-nowrap transition-all outline-none cursor-pointer focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"text-primary hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2 button-md has-[>svg]:px-3 [&_svg:not([class*='size-'])]:size-6 [&_svg]:stroke-[1.5]\",\n xs: \"h-6 px-2 py-1 button-sm has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3 [&_svg]:stroke-[1]\",\n sm: \"h-8 px-3 py-2 button-sm has-[>svg]:px-2.5 [&_svg:not([class*='size-'])]:size-4 [&_svg]:stroke-[1.2]\",\n lg: \"h-12 px-6 py-3 button-lg has-[>svg]:px-4 [&_svg:not([class*='size-'])]:size-6 [&_svg]:stroke-[1.5]\",\n icon: \"size-10 [&_svg:not([class*='size-'])]:size-6 [&_svg]:stroke-[1.5]\",\n \"icon-xs\": \"size-6 [&_svg:not([class*='size-'])]:size-3 [&_svg]:stroke-[1]\",\n \"icon-sm\": \"size-8 [&_svg:not([class*='size-'])]:size-4 [&_svg]:stroke-[1.2]\",\n \"icon-lg\": \"size-12 [&_svg:not([class*='size-'])]:size-6 [&_svg]:stroke-[1.5]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ComponentProps<\"button\">,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n"]}