@fluencypassdevs/cycle 1.28.0 → 1.30.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/bin/components.generated.mjs +218 -10
- package/dist/{chunk-JPEQ4BYK.js → chunk-5AH2PNYW.js} +68 -3
- package/dist/chunk-5AH2PNYW.js.map +1 -0
- package/dist/{chunk-32NHCUEZ.js → chunk-C6VTOLNM.js} +2 -2
- package/dist/{chunk-32NHCUEZ.js.map → chunk-C6VTOLNM.js.map} +1 -1
- package/dist/{chunk-RPU3FY62.js → chunk-CLL76ZXJ.js} +3 -3
- package/dist/{chunk-RPU3FY62.js.map → chunk-CLL76ZXJ.js.map} +1 -1
- package/dist/chunk-KSAVYUNJ.js +3 -0
- package/dist/chunk-KSAVYUNJ.js.map +1 -0
- package/dist/{chunk-NKBTC4IF.js → chunk-MOSB7T52.js} +3 -3
- package/dist/{chunk-NKBTC4IF.js.map → chunk-MOSB7T52.js.map} +1 -1
- package/dist/{chunk-2KFWBA76.js → chunk-MQTQIX4N.js} +3 -3
- package/dist/{chunk-2KFWBA76.js.map → chunk-MQTQIX4N.js.map} +1 -1
- package/dist/{chunk-AHHT4FZS.js → chunk-NMIDTIUE.js} +3 -3
- package/dist/{chunk-AHHT4FZS.js.map → chunk-NMIDTIUE.js.map} +1 -1
- package/dist/{chunk-OLYW5LVG.js → chunk-NYO2JMQ7.js} +3 -3
- package/dist/{chunk-OLYW5LVG.js.map → chunk-NYO2JMQ7.js.map} +1 -1
- package/dist/{chunk-CLMO3IRS.js → chunk-OFGJDRRR.js} +61 -50
- package/dist/chunk-OFGJDRRR.js.map +1 -0
- package/dist/{chunk-T73O7F3B.js → chunk-R3RHMROE.js} +3 -3
- package/dist/{chunk-T73O7F3B.js.map → chunk-R3RHMROE.js.map} +1 -1
- package/dist/{chunk-GI7MEYSN.js → chunk-T5U4Q37E.js} +3 -3
- package/dist/{chunk-GI7MEYSN.js.map → chunk-T5U4Q37E.js.map} +1 -1
- package/dist/chunk-TJ4O3VAL.js +274 -0
- package/dist/chunk-TJ4O3VAL.js.map +1 -0
- package/dist/chunk-VE4QISBD.js +3 -0
- package/dist/chunk-VE4QISBD.js.map +1 -0
- package/dist/chunk-VMUNB4RA.js +102 -0
- package/dist/chunk-VMUNB4RA.js.map +1 -0
- package/dist/{chunk-KSEDDFGG.js → chunk-VZ2GYSNK.js} +3 -3
- package/dist/{chunk-KSEDDFGG.js.map → chunk-VZ2GYSNK.js.map} +1 -1
- package/dist/{chunk-LALM2LHM.js → chunk-W62WANUP.js} +2 -2
- package/dist/{chunk-LALM2LHM.js.map → chunk-W62WANUP.js.map} +1 -1
- package/dist/composites/chat-thread.d.ts +18 -7
- package/dist/composites/chat-thread.js +10 -7
- package/dist/index.d.ts +2 -0
- package/dist/index.js +22 -18
- package/dist/marketing/effects/index.js +1 -1
- package/dist/marketing/motion/index.js +1 -1
- package/dist/ui/alert-dialog.js +3 -2
- package/dist/ui/alert.d.ts +1 -1
- package/dist/ui/badge.js +2 -1
- package/dist/ui/button.js +2 -1
- package/dist/ui/chat-message.js +4 -3
- package/dist/ui/chat-panel.js +3 -2
- package/dist/ui/command.js +4 -3
- package/dist/ui/dialog.js +3 -2
- package/dist/ui/error-state.d.ts +61 -0
- package/dist/ui/error-state.js +10 -0
- package/dist/ui/error-state.js.map +1 -0
- package/dist/ui/like-dislike.js +3 -2
- package/dist/ui/live-waiting.js +3 -2
- package/dist/ui/message-bar.d.ts +4 -1
- package/dist/ui/message-bar.js +4 -1
- package/dist/ui/pagination.js +3 -2
- package/dist/ui/status-banner.d.ts +32 -0
- package/dist/ui/status-banner.js +12 -0
- package/dist/ui/status-banner.js.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-CLMO3IRS.js.map +0 -1
- package/dist/chunk-JPEQ4BYK.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/like-dislike.tsx"],"names":["e"],"mappings":"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","file":"chunk-RPU3FY62.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-CLL76ZXJ.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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-KSAVYUNJ.js"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Avatar, AvatarImage, AvatarFallback } from './chunk-T2TJG24M.js';
|
|
2
2
|
import { CycleIcon } from './chunk-US5LXJTO.js';
|
|
3
|
-
import { Badge } from './chunk-
|
|
3
|
+
import { Badge } from './chunk-C6VTOLNM.js';
|
|
4
4
|
import { cn } from './chunk-W4KJCBMW.js';
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { RadioIcon } from 'lucide-react';
|
|
@@ -93,5 +93,5 @@ function LiveWaiting({
|
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
export { LiveWaiting };
|
|
96
|
-
//# sourceMappingURL=chunk-
|
|
97
|
-
//# sourceMappingURL=chunk-
|
|
96
|
+
//# sourceMappingURL=chunk-MOSB7T52.js.map
|
|
97
|
+
//# sourceMappingURL=chunk-MOSB7T52.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/live-waiting.tsx"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/live-waiting.tsx"],"names":[],"mappings":"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","file":"chunk-MOSB7T52.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { RadioIcon } from \"lucide-react\"\nimport { CycleIcon } from \"@/components/icons/CycleIcon\"\nimport { Avatar, AvatarImage, AvatarFallback } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { cn } from \"@/lib/utils\"\n\n/* ─── Types ─── */\n\nexport interface LiveWaitingProps {\n /** Scheduled start time of the live */\n scheduledAt: Date\n /** Teacher/instructor display name */\n teacherName?: string\n /** Teacher avatar URL */\n teacherAvatar?: string\n /** Live class topic/subject */\n topic?: string\n className?: string\n}\n\n/* ─── Helpers ─── */\n\ninterface TimeLeft {\n days: number\n hours: number\n minutes: number\n seconds: number\n total: number\n}\n\nfunction calcTimeLeft(target: Date): TimeLeft {\n const total = Math.max(0, target.getTime() - Date.now())\n return {\n days: Math.floor(total / (1000 * 60 * 60 * 24)),\n hours: Math.floor((total / (1000 * 60 * 60)) % 24),\n minutes: Math.floor((total / (1000 * 60)) % 60),\n seconds: Math.floor((total / 1000) % 60),\n total,\n }\n}\n\nfunction padTwo(n: number): string {\n return n.toString().padStart(2, \"0\")\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .slice(0, 2)\n .map((w) => w[0])\n .join(\"\")\n .toUpperCase()\n}\n\n/* ─── Sub-components ─── */\n\nfunction CountdownUnit({ value, label }: { value: string; label: string }) {\n return (\n <div className=\"flex flex-col items-center gap-1\">\n <div className=\"flex items-center justify-center size-14 sm:size-16 rounded-xl bg-muted border border-border text-2xl sm:text-3xl font-bold text-foreground tabular-nums\">\n {value}\n </div>\n <span className=\"text-[11px] text-muted-foreground uppercase tracking-wider font-medium\">\n {label}\n </span>\n </div>\n )\n}\n\n/* ─── Component ─── */\n\nfunction LiveWaiting({\n scheduledAt,\n teacherName,\n teacherAvatar,\n topic,\n className,\n}: LiveWaitingProps) {\n const [timeLeft, setTimeLeft] = React.useState<TimeLeft>(() =>\n calcTimeLeft(scheduledAt)\n )\n\n React.useEffect(() => {\n const timer = setInterval(() => {\n setTimeLeft(calcTimeLeft(scheduledAt))\n }, 1000)\n return () => clearInterval(timer)\n }, [scheduledAt])\n\n const hasStarted = timeLeft.total === 0\n\n return (\n <div\n data-slot=\"live-waiting\"\n className={cn(\n \"flex flex-col items-center justify-center gap-6 py-12 sm:py-16 px-4\",\n className\n )}\n >\n {/* Live badge */}\n <Badge variant=\"destructive\" size=\"lg\" className=\"gap-1.5\">\n <CycleIcon icon={RadioIcon} size=\"2xs\" decorative />\n {hasStarted ? \"Começando...\" : \"Aula ao Vivo\"}\n </Badge>\n\n {/* Topic */}\n {topic && (\n <h2 className=\"text-lg sm:text-xl font-semibold text-foreground text-center max-w-md leading-snug\">\n {topic}\n </h2>\n )}\n\n {/* Countdown */}\n {!hasStarted && (\n <div className=\"flex items-center gap-3\">\n {timeLeft.days > 0 && (\n <>\n <CountdownUnit value={padTwo(timeLeft.days)} label=\"Dias\" />\n <span className=\"text-2xl font-bold text-muted-foreground mt-[-20px]\">:</span>\n </>\n )}\n <CountdownUnit value={padTwo(timeLeft.hours)} label=\"Horas\" />\n <span className=\"text-2xl font-bold text-muted-foreground mt-[-20px]\">:</span>\n <CountdownUnit value={padTwo(timeLeft.minutes)} label=\"Min\" />\n <span className=\"text-2xl font-bold text-muted-foreground mt-[-20px]\">:</span>\n <CountdownUnit value={padTwo(timeLeft.seconds)} label=\"Seg\" />\n </div>\n )}\n\n {/* Scheduled date */}\n <p className=\"text-sm text-muted-foreground\">\n {scheduledAt.toLocaleDateString(\"pt-BR\", {\n weekday: \"long\",\n day: \"numeric\",\n month: \"long\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n })}\n </p>\n\n {/* Teacher info */}\n {teacherName && (\n <div className=\"flex items-center gap-3 mt-2\">\n <Avatar size=\"lg\">\n {teacherAvatar && (\n <AvatarImage src={teacherAvatar} alt={teacherName} />\n )}\n <AvatarFallback className=\"bg-primary text-primary-foreground\">\n {getInitials(teacherName)}\n </AvatarFallback>\n </Avatar>\n <div className=\"flex flex-col\">\n <span className=\"text-sm font-medium text-foreground\">\n {teacherName}\n </span>\n <span className=\"text-xs text-muted-foreground\">Professor(a)</span>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nexport { LiveWaiting }\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Button } from './chunk-
|
|
1
|
+
import { Button } from './chunk-W62WANUP.js';
|
|
2
2
|
import { cn } from './chunk-W4KJCBMW.js';
|
|
3
3
|
import { __objRest, __spreadValues } from './chunk-2NMEKWO5.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-
|
|
180
|
-
//# sourceMappingURL=chunk-
|
|
179
|
+
//# sourceMappingURL=chunk-MQTQIX4N.js.map
|
|
180
|
+
//# sourceMappingURL=chunk-MQTQIX4N.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/alert-dialog.tsx"],"names":["AlertDialogPrimitive"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/alert-dialog.tsx"],"names":["AlertDialogPrimitive"],"mappings":"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","file":"chunk-MQTQIX4N.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,4 +1,4 @@
|
|
|
1
|
-
import { Button } from './chunk-
|
|
1
|
+
import { Button } from './chunk-W62WANUP.js';
|
|
2
2
|
import { cn } from './chunk-W4KJCBMW.js';
|
|
3
3
|
import { __objRest, __spreadValues, __spreadProps } from './chunk-2NMEKWO5.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-
|
|
147
|
-
//# sourceMappingURL=chunk-
|
|
146
|
+
//# sourceMappingURL=chunk-NMIDTIUE.js.map
|
|
147
|
+
//# sourceMappingURL=chunk-NMIDTIUE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/dialog.tsx"],"names":["DialogPrimitive"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/dialog.tsx"],"names":["DialogPrimitive"],"mappings":"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","file":"chunk-NMIDTIUE.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,7 +1,7 @@
|
|
|
1
1
|
import { ChatBubble } from './chunk-VHNPIT56.js';
|
|
2
2
|
import { ScrollArea } from './chunk-6ZID2UNI.js';
|
|
3
3
|
import { CycleIcon } from './chunk-US5LXJTO.js';
|
|
4
|
-
import { Button } from './chunk-
|
|
4
|
+
import { Button } from './chunk-W62WANUP.js';
|
|
5
5
|
import { cn } from './chunk-W4KJCBMW.js';
|
|
6
6
|
import { __objRest, __spreadProps, __spreadValues } from './chunk-2NMEKWO5.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-
|
|
104
|
-
//# sourceMappingURL=chunk-
|
|
103
|
+
//# sourceMappingURL=chunk-NYO2JMQ7.js.map
|
|
104
|
+
//# sourceMappingURL=chunk-NYO2JMQ7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/chat-panel.tsx"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/chat-panel.tsx"],"names":[],"mappings":"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","file":"chunk-NYO2JMQ7.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,44 +1,19 @@
|
|
|
1
|
-
import { AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from './chunk-
|
|
2
|
-
import { ChatMessage } from './chunk-
|
|
1
|
+
import { AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from './chunk-MQTQIX4N.js';
|
|
2
|
+
import { ChatMessage } from './chunk-VZ2GYSNK.js';
|
|
3
3
|
import { DEFAULT_MESSAGE_RATING_LABELS, MessageRating } from './chunk-YIOXPV2N.js';
|
|
4
|
-
import { MessageBar } from './chunk-
|
|
4
|
+
import { MessageBar } from './chunk-5AH2PNYW.js';
|
|
5
|
+
import { useCountdown, StatusBanner } from './chunk-VMUNB4RA.js';
|
|
5
6
|
import { cn } from './chunk-W4KJCBMW.js';
|
|
6
7
|
import { __objRest, __spreadValues, __spreadProps } from './chunk-2NMEKWO5.js';
|
|
7
8
|
import * as React from 'react';
|
|
8
9
|
import { Square } from 'lucide-react';
|
|
9
10
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
10
11
|
|
|
12
|
+
function isThenable(value) {
|
|
13
|
+
return !!value && (typeof value === "object" || typeof value === "function") && typeof value.then === "function";
|
|
14
|
+
}
|
|
11
15
|
var SCROLL_BOTTOM_THRESHOLD = 100;
|
|
12
16
|
var LOAD_MORE_THRESHOLD = 200;
|
|
13
|
-
function ChatThreadBanner({
|
|
14
|
-
variant,
|
|
15
|
-
children
|
|
16
|
-
}) {
|
|
17
|
-
return /* @__PURE__ */ jsx(
|
|
18
|
-
"div",
|
|
19
|
-
{
|
|
20
|
-
role: "status",
|
|
21
|
-
"aria-live": "polite",
|
|
22
|
-
className: cn(
|
|
23
|
-
"shrink-0 flex items-center gap-2 px-4 py-2 text-sm border-b",
|
|
24
|
-
variant === "offline" && "bg-destructive/10 text-destructive border-destructive/20",
|
|
25
|
-
variant === "rate-limit" && "bg-muted text-muted-foreground border-border"
|
|
26
|
-
),
|
|
27
|
-
children
|
|
28
|
-
}
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
function useCountdown(until) {
|
|
32
|
-
const [now, setNow] = React.useState(() => Date.now());
|
|
33
|
-
React.useEffect(() => {
|
|
34
|
-
if (!until || until <= Date.now()) return;
|
|
35
|
-
const id = setInterval(() => setNow(Date.now()), 1e3);
|
|
36
|
-
return () => clearInterval(id);
|
|
37
|
-
}, [until]);
|
|
38
|
-
if (!until) return 0;
|
|
39
|
-
const remainingMs = until - now;
|
|
40
|
-
return Math.max(0, Math.ceil(remainingMs / 1e3));
|
|
41
|
-
}
|
|
42
17
|
function StopResponseButton({
|
|
43
18
|
onClick,
|
|
44
19
|
label = "Parar resposta"
|
|
@@ -112,6 +87,7 @@ function ChatThread(_a) {
|
|
|
112
87
|
onStartRecording,
|
|
113
88
|
onPauseRecording,
|
|
114
89
|
onResumeRecording,
|
|
90
|
+
onRecordingError,
|
|
115
91
|
onCancelRecording,
|
|
116
92
|
onTogglePlay,
|
|
117
93
|
onSeekPlayback,
|
|
@@ -136,7 +112,7 @@ function ChatThread(_a) {
|
|
|
136
112
|
userAvatar,
|
|
137
113
|
userName,
|
|
138
114
|
userMessageTheme,
|
|
139
|
-
offlineBannerText
|
|
115
|
+
offlineBannerText,
|
|
140
116
|
retryButtonText = "Tentar novamente",
|
|
141
117
|
regenerateButtonText = "Regenerar resposta",
|
|
142
118
|
stopResponseText = "Parar resposta",
|
|
@@ -155,6 +131,7 @@ function ChatThread(_a) {
|
|
|
155
131
|
"onStartRecording",
|
|
156
132
|
"onPauseRecording",
|
|
157
133
|
"onResumeRecording",
|
|
134
|
+
"onRecordingError",
|
|
158
135
|
"onCancelRecording",
|
|
159
136
|
"onTogglePlay",
|
|
160
137
|
"onSeekPlayback",
|
|
@@ -271,27 +248,59 @@ function ChatThread(_a) {
|
|
|
271
248
|
);
|
|
272
249
|
const baseMessageBarState = audioOnlyMode ? "audio-only" : "default";
|
|
273
250
|
const [internalRecordingState, setInternalRecordingState] = React.useState("idle");
|
|
251
|
+
const recordingRequestTokenRef = React.useRef(0);
|
|
252
|
+
const isMountedRef = React.useRef(false);
|
|
253
|
+
React.useEffect(() => {
|
|
254
|
+
isMountedRef.current = true;
|
|
255
|
+
return () => {
|
|
256
|
+
isMountedRef.current = false;
|
|
257
|
+
recordingRequestTokenRef.current++;
|
|
258
|
+
};
|
|
259
|
+
}, []);
|
|
274
260
|
React.useEffect(() => {
|
|
275
261
|
if (internalRecordingState === "idle") return;
|
|
276
262
|
}, [audioOnlyMode, internalRecordingState]);
|
|
277
|
-
const messageBarState = isDisabled ? "disabled" : internalRecordingState === "recording" ? "recording" : internalRecordingState === "paused" ? "paused" : baseMessageBarState;
|
|
263
|
+
const messageBarState = isDisabled ? "disabled" : internalRecordingState === "recording" ? "recording" : internalRecordingState === "paused" ? "paused" : internalRecordingState === "requesting" ? "requesting" : baseMessageBarState;
|
|
264
|
+
const runRecordingRequest = React.useCallback(
|
|
265
|
+
(callback, fallbackState) => {
|
|
266
|
+
const result = callback == null ? void 0 : callback();
|
|
267
|
+
if (!isThenable(result)) {
|
|
268
|
+
setInternalRecordingState("recording");
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
const token = ++recordingRequestTokenRef.current;
|
|
272
|
+
setInternalRecordingState("requesting");
|
|
273
|
+
result.then(
|
|
274
|
+
() => {
|
|
275
|
+
if (!isMountedRef.current || recordingRequestTokenRef.current !== token) return;
|
|
276
|
+
setInternalRecordingState("recording");
|
|
277
|
+
},
|
|
278
|
+
(error) => {
|
|
279
|
+
if (!isMountedRef.current || recordingRequestTokenRef.current !== token) return;
|
|
280
|
+
setInternalRecordingState(fallbackState);
|
|
281
|
+
onRecordingError == null ? void 0 : onRecordingError(error);
|
|
282
|
+
}
|
|
283
|
+
);
|
|
284
|
+
},
|
|
285
|
+
[onRecordingError]
|
|
286
|
+
);
|
|
278
287
|
const handleStartRecordingInternal = React.useCallback(() => {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
}, [onStartRecording]);
|
|
288
|
+
runRecordingRequest(onStartRecording, "idle");
|
|
289
|
+
}, [onStartRecording, runRecordingRequest]);
|
|
282
290
|
const handlePauseRecordingInternal = React.useCallback(() => {
|
|
283
291
|
setInternalRecordingState("paused");
|
|
284
292
|
onPauseRecording == null ? void 0 : onPauseRecording();
|
|
285
293
|
}, [onPauseRecording]);
|
|
286
294
|
const handleResumeRecordingInternal = React.useCallback(() => {
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
}, [onResumeRecording]);
|
|
295
|
+
runRecordingRequest(onResumeRecording, "paused");
|
|
296
|
+
}, [onResumeRecording, runRecordingRequest]);
|
|
290
297
|
const handleCancelRecordingInternal = React.useCallback(() => {
|
|
298
|
+
recordingRequestTokenRef.current++;
|
|
291
299
|
setInternalRecordingState("idle");
|
|
292
300
|
onCancelRecording == null ? void 0 : onCancelRecording();
|
|
293
301
|
}, [onCancelRecording]);
|
|
294
302
|
const handleSendAudioInternal = React.useCallback(() => {
|
|
303
|
+
recordingRequestTokenRef.current++;
|
|
295
304
|
setInternalRecordingState("idle");
|
|
296
305
|
onSendAudio == null ? void 0 : onSendAudio();
|
|
297
306
|
}, [onSendAudio]);
|
|
@@ -317,14 +326,16 @@ function ChatThread(_a) {
|
|
|
317
326
|
className: cn("relative flex flex-col h-full bg-background", className)
|
|
318
327
|
}, props), {
|
|
319
328
|
children: [
|
|
320
|
-
offline && /* @__PURE__ */
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
329
|
+
offline && /* @__PURE__ */ jsx(StatusBanner, { kind: "offline", className: "shrink-0 rounded-none border-x-0 border-t-0", children: offlineBannerText }),
|
|
330
|
+
isRateLimited && /* @__PURE__ */ jsx(
|
|
331
|
+
StatusBanner,
|
|
332
|
+
{
|
|
333
|
+
kind: "rate-limit",
|
|
334
|
+
until: rateLimitedUntil,
|
|
335
|
+
rateLimitText: rateLimitBannerText,
|
|
336
|
+
className: "shrink-0 rounded-none border-x-0 border-t-0"
|
|
337
|
+
}
|
|
338
|
+
),
|
|
328
339
|
/* @__PURE__ */ jsxs(
|
|
329
340
|
"div",
|
|
330
341
|
{
|
|
@@ -449,5 +460,5 @@ function ChatThread(_a) {
|
|
|
449
460
|
}
|
|
450
461
|
|
|
451
462
|
export { ChatThread };
|
|
452
|
-
//# sourceMappingURL=chunk-
|
|
453
|
-
//# sourceMappingURL=chunk-
|
|
463
|
+
//# sourceMappingURL=chunk-OFGJDRRR.js.map
|
|
464
|
+
//# sourceMappingURL=chunk-OFGJDRRR.js.map
|