@etus/ui 0.4.0-beta.3 → 0.4.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-2HM5Z2YP.js +834 -0
- package/dist/chunk-2HM5Z2YP.js.map +1 -0
- package/dist/{chunk-LMTNDUIP.js → chunk-2Y7PQ6ZL.js} +4 -4
- package/dist/{chunk-LMTNDUIP.js.map → chunk-2Y7PQ6ZL.js.map} +1 -1
- package/dist/{chunk-SAKW2OKH.js → chunk-32IJQOUV.js} +15 -26
- package/dist/chunk-32IJQOUV.js.map +1 -0
- package/dist/{chunk-CXHA5D3I.js → chunk-33JGPMUW.js} +4 -4
- package/dist/{chunk-CXHA5D3I.js.map → chunk-33JGPMUW.js.map} +1 -1
- package/dist/{chunk-JLVL76SW.js → chunk-36XTKR3B.js} +4 -4
- package/dist/{chunk-JLVL76SW.js.map → chunk-36XTKR3B.js.map} +1 -1
- package/dist/{chunk-CUWQUGGB.js → chunk-4GQN76L7.js} +3 -3
- package/dist/{chunk-CUWQUGGB.js.map → chunk-4GQN76L7.js.map} +1 -1
- package/dist/{chunk-7BAL24EU.js → chunk-5XQIH6WM.js} +4 -4
- package/dist/{chunk-7BAL24EU.js.map → chunk-5XQIH6WM.js.map} +1 -1
- package/dist/chunk-5ZWFIDO2.js +3 -0
- package/dist/{chunk-NNOGFX66.js.map → chunk-5ZWFIDO2.js.map} +1 -1
- package/dist/{chunk-CCUCWL6M.js → chunk-AB3S55W5.js} +11 -6
- package/dist/chunk-AB3S55W5.js.map +1 -0
- package/dist/{chunk-43SINRHH.js → chunk-AUCDXPWH.js} +5 -5
- package/dist/{chunk-43SINRHH.js.map → chunk-AUCDXPWH.js.map} +1 -1
- package/dist/{chunk-4HRQX2IA.js → chunk-AWYOWR5N.js} +3 -3
- package/dist/{chunk-4HRQX2IA.js.map → chunk-AWYOWR5N.js.map} +1 -1
- package/dist/{chunk-YTGYSNFR.js → chunk-B4ETIQOO.js} +4 -4
- package/dist/{chunk-YTGYSNFR.js.map → chunk-B4ETIQOO.js.map} +1 -1
- package/dist/{chunk-D5DM6GZB.js → chunk-D6TH3EGA.js} +12 -12
- package/dist/chunk-D6TH3EGA.js.map +1 -0
- package/dist/{chunk-ZJVZ3LQS.js → chunk-DDM2I5C6.js} +3 -3
- package/dist/{chunk-ZJVZ3LQS.js.map → chunk-DDM2I5C6.js.map} +1 -1
- package/dist/{chunk-3JIXCWJO.js → chunk-DDR24GOP.js} +3 -3
- package/dist/{chunk-3JIXCWJO.js.map → chunk-DDR24GOP.js.map} +1 -1
- package/dist/{chunk-GBTVAO4V.js → chunk-EGYWK2XX.js} +3 -3
- package/dist/{chunk-GBTVAO4V.js.map → chunk-EGYWK2XX.js.map} +1 -1
- package/dist/{chunk-KNH7JW6E.js → chunk-IBVCSZCH.js} +3 -3
- package/dist/{chunk-KNH7JW6E.js.map → chunk-IBVCSZCH.js.map} +1 -1
- package/dist/{chunk-VJITPUUS.js → chunk-ICM45N2K.js} +4 -4
- package/dist/{chunk-VJITPUUS.js.map → chunk-ICM45N2K.js.map} +1 -1
- package/dist/{chunk-GLEKBJLR.js → chunk-ILAV2AZ4.js} +3 -3
- package/dist/{chunk-GLEKBJLR.js.map → chunk-ILAV2AZ4.js.map} +1 -1
- package/dist/{chunk-MDQFZEIC.js → chunk-J62TFQHR.js} +6 -6
- package/dist/chunk-J62TFQHR.js.map +1 -0
- package/dist/{chunk-AWWBBMMY.js → chunk-JKYB5QAP.js} +5 -5
- package/dist/{chunk-AWWBBMMY.js.map → chunk-JKYB5QAP.js.map} +1 -1
- package/dist/{chunk-UKC3Q6OA.js → chunk-JMZ4CO6R.js} +3 -3
- package/dist/{chunk-UKC3Q6OA.js.map → chunk-JMZ4CO6R.js.map} +1 -1
- package/dist/{chunk-POZNQWZE.js → chunk-KC6CHPT3.js} +4 -4
- package/dist/{chunk-POZNQWZE.js.map → chunk-KC6CHPT3.js.map} +1 -1
- package/dist/{chunk-4J6DHPYY.js → chunk-KPNNSUXM.js} +3 -3
- package/dist/{chunk-4J6DHPYY.js.map → chunk-KPNNSUXM.js.map} +1 -1
- package/dist/{chunk-RPV77BCQ.js → chunk-ONQCNOLU.js} +4 -9
- package/dist/chunk-ONQCNOLU.js.map +1 -0
- package/dist/{chunk-QSY52N3A.js → chunk-OWOVCGUZ.js} +3 -3
- package/dist/{chunk-QSY52N3A.js.map → chunk-OWOVCGUZ.js.map} +1 -1
- package/dist/{chunk-QWRHPNBY.js → chunk-QIETN4UU.js} +4 -4
- package/dist/{chunk-QWRHPNBY.js.map → chunk-QIETN4UU.js.map} +1 -1
- package/dist/{chunk-NWFRMVI2.js → chunk-QZWKXUZP.js} +3 -3
- package/dist/{chunk-NWFRMVI2.js.map → chunk-QZWKXUZP.js.map} +1 -1
- package/dist/{chunk-7QDWREVG.js → chunk-R4UOT76L.js} +3 -3
- package/dist/{chunk-7QDWREVG.js.map → chunk-R4UOT76L.js.map} +1 -1
- package/dist/{chunk-HIEOL77G.js → chunk-RVUO7SDG.js} +4 -4
- package/dist/{chunk-HIEOL77G.js.map → chunk-RVUO7SDG.js.map} +1 -1
- package/dist/{chunk-XPVKJIWY.js → chunk-SCGKQ5RE.js} +3 -3
- package/dist/{chunk-XPVKJIWY.js.map → chunk-SCGKQ5RE.js.map} +1 -1
- package/dist/{chunk-UCGT2IR4.js → chunk-SJSYKUCL.js} +3 -3
- package/dist/{chunk-UCGT2IR4.js.map → chunk-SJSYKUCL.js.map} +1 -1
- package/dist/{chunk-KOTCWE7V.js → chunk-TNROOKX3.js} +11 -4
- package/dist/chunk-TNROOKX3.js.map +1 -0
- package/dist/{chunk-PGTCXLGY.js → chunk-U6EOAIPK.js} +3 -3
- package/dist/chunk-U6EOAIPK.js.map +1 -0
- package/dist/{chunk-KXSJSLPJ.js → chunk-V7XHE25E.js} +4 -4
- package/dist/{chunk-KXSJSLPJ.js.map → chunk-V7XHE25E.js.map} +1 -1
- package/dist/{chunk-FUCQNVJL.js → chunk-XLTSCY22.js} +10 -7
- package/dist/chunk-XLTSCY22.js.map +1 -0
- package/dist/{chunk-K3J7YLL4.js → chunk-XOGMDABS.js} +5 -6
- package/dist/chunk-XOGMDABS.js.map +1 -0
- package/dist/{chunk-53RWD44Z.js → chunk-XRMKL43Y.js} +3 -3
- package/dist/{chunk-53RWD44Z.js.map → chunk-XRMKL43Y.js.map} +1 -1
- package/dist/{chunk-DZALMUQD.js → chunk-Y3BOERVB.js} +3 -3
- package/dist/{chunk-DZALMUQD.js.map → chunk-Y3BOERVB.js.map} +1 -1
- package/dist/{chunk-AV5YQ2Z4.js → chunk-Y7UFBSAD.js} +3 -3
- package/dist/{chunk-AV5YQ2Z4.js.map → chunk-Y7UFBSAD.js.map} +1 -1
- package/dist/{chunk-HNYBLROK.js → chunk-YP2ATSXP.js} +11 -28
- package/dist/chunk-YP2ATSXP.js.map +1 -0
- package/dist/{chunk-75QBUI2P.js → chunk-ZO2EKJZM.js} +16 -8
- package/dist/chunk-ZO2EKJZM.js.map +1 -0
- package/dist/{chunk-VOCA4KZB.js → chunk-ZS2WS5NJ.js} +4 -4
- package/dist/{chunk-VOCA4KZB.js.map → chunk-ZS2WS5NJ.js.map} +1 -1
- package/dist/components/advanced/Calendar/index.js +3 -3
- package/dist/components/advanced/EventCalendar/index.js +3 -3
- package/dist/components/advanced/FilterBuilder/index.js +3 -3
- package/dist/components/advanced/ReportBuilder/index.js +11 -0
- package/dist/components/advanced/ReportBuilder/index.js.map +1 -0
- package/dist/components/advanced/index.js +12 -8
- package/dist/components/data-display/Callout/index.js +1 -1
- package/dist/components/data-display/Carousel/index.js +3 -3
- package/dist/components/data-display/ChartCard/index.js +2 -2
- package/dist/components/data-display/DashboardFilterbar/index.js +5 -5
- package/dist/components/data-display/DataTable/FilterBuilder/index.js +3 -3
- package/dist/components/data-display/DataTable/index.js +5 -5
- package/dist/components/data-display/KPICard/index.js +3 -2
- package/dist/components/data-display/List/index.js +3 -3
- package/dist/components/data-display/SingleStat/index.js +1 -1
- package/dist/components/data-display/VirtualTable/index.js +2 -2
- package/dist/components/data-display/index.js +30 -30
- package/dist/components/feedback/AlertDialog/index.js +3 -3
- package/dist/components/feedback/ConfirmModal/index.js +4 -4
- package/dist/components/feedback/Notification/index.js +2 -2
- package/dist/components/feedback/index.js +8 -8
- package/dist/components/forms/DatePicker/index.js +4 -4
- package/dist/components/forms/DateRangePicker/index.js +4 -4
- package/dist/components/forms/Field/index.js +2 -2
- package/dist/components/forms/Form/index.js +2 -2
- package/dist/components/forms/InputGroup/index.js +4 -4
- package/dist/components/forms/InputOTPField/index.js +3 -3
- package/dist/components/forms/NativeSelect/index.js +1 -1
- package/dist/components/forms/TagsInput/index.js +2 -2
- package/dist/components/forms/Textarea/index.js +1 -1
- package/dist/components/forms/TextareaField/index.js +4 -4
- package/dist/components/forms/index.js +28 -28
- package/dist/components/index.js +97 -96
- package/dist/components/layout/index.js +2 -2
- package/dist/components/navigation/AccountSwitch/index.js +3 -3
- package/dist/components/navigation/MobileSidebar/index.js +2 -2
- package/dist/components/navigation/Pagination/index.js +3 -3
- package/dist/components/navigation/Sidebar/index.js +4 -4
- package/dist/components/navigation/index.js +11 -11
- package/dist/components/primitives/Avatar/index.js +1 -1
- package/dist/components/primitives/Badge/index.js +1 -1
- package/dist/components/primitives/Button/index.js +2 -2
- package/dist/components/primitives/ConfirmButton/index.js +4 -4
- package/dist/components/primitives/Label/index.js +1 -1
- package/dist/components/primitives/SplitButton/index.js +1 -1
- package/dist/components/primitives/index.js +13 -13
- package/dist/components/workflow/ApprovalFlow/index.js +4 -4
- package/dist/components/workflow/CommentSystem/index.js +5 -5
- package/dist/components/workflow/Dashboard/index.js +3 -3
- package/dist/components/workflow/DashboardBuilder/index.js +4 -4
- package/dist/components/workflow/KanbanBoard/index.js +4 -4
- package/dist/components/workflow/ReportGenerator/index.js +4 -4
- package/dist/components/workflow/Wizard/index.js +3 -3
- package/dist/components/workflow/index.js +14 -14
- package/dist/fonts/inter-OFL.txt +92 -0
- package/dist/fonts/inter-latin-400-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-500-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-600-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-700-normal.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-OFL.txt +93 -0
- package/dist/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-latin-500-normal.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-latin-700-normal.woff2 +0 -0
- package/dist/index.d.ts +114 -27
- package/dist/index.js +97 -96
- package/dist/styles.css +284 -7
- package/package.json +2 -2
- package/dist/chunk-75QBUI2P.js.map +0 -1
- package/dist/chunk-CCUCWL6M.js.map +0 -1
- package/dist/chunk-D5DM6GZB.js.map +0 -1
- package/dist/chunk-FUCQNVJL.js.map +0 -1
- package/dist/chunk-HNYBLROK.js.map +0 -1
- package/dist/chunk-K3J7YLL4.js.map +0 -1
- package/dist/chunk-KOTCWE7V.js.map +0 -1
- package/dist/chunk-MDQFZEIC.js.map +0 -1
- package/dist/chunk-NNOGFX66.js +0 -3
- package/dist/chunk-PGTCXLGY.js.map +0 -1
- package/dist/chunk-RPV77BCQ.js.map +0 -1
- package/dist/chunk-SAKW2OKH.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/workflow/CommentSystem/CommentSystem.types.ts","../src/components/workflow/CommentSystem/CommentSystem.variants.ts","../src/components/workflow/CommentSystem/CommentSystem.tsx"],"names":[],"mappings":"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","file":"chunk-AWWBBMMY.js","sourcesContent":["import type { commentSystemVariants } from \"./CommentSystem.variants\"\nimport type { VariantProps } from \"class-variance-authority\"\n\n/**\n * User data structure for comment system\n */\nexport interface CommentUser {\n /** Avatar URL (optional) */\n avatar?: string\n /** Email address (optional) */\n email?: string\n /** Unique identifier */\n id: string\n /** Display name */\n name: string\n /** Role or title (optional) */\n role?: string\n}\n\n/**\n * Attachment data structure\n */\nexport interface CommentAttachment {\n /** Unique identifier */\n id: string\n /** File name */\n name: string\n /** File size in bytes (optional) */\n size?: number\n /** Thumbnail URL for images (optional) */\n thumbnail?: string\n /** Type of attachment */\n type: \"file\" | \"image\" | \"link\"\n /** File URL */\n url: string\n}\n\n/**\n * Reaction on a comment\n */\nexport interface CommentReaction {\n /** Number of users who reacted */\n count: number\n /** Emoji character */\n emoji: string\n /** Whether current user has reacted */\n hasReacted?: boolean\n /** IDs of users who reacted */\n users: string[]\n}\n\n/**\n * Available reaction configuration\n */\nexport interface Reaction {\n /** Emoji character */\n emoji: string\n /** Display label */\n label: string\n /** Shortcode identifier */\n shortcode: string\n}\n\n/**\n * Comment data structure\n */\nexport interface Comment {\n /** Attachments on this comment (optional) */\n attachments?: CommentAttachment[]\n /** Author of the comment */\n author: CommentUser\n /** Comment content (supports basic markdown) */\n content: string\n /** When the comment was created */\n createdAt: Date\n /** Unique identifier */\n id: string\n /** Whether the comment has been deleted (soft delete) */\n isDeleted?: boolean\n /** Whether the comment has been edited */\n isEdited?: boolean\n /** Whether the comment is pinned */\n isPinned?: boolean\n /** User IDs mentioned in this comment (optional) */\n mentions?: string[]\n /** Parent comment ID for replies (optional) */\n parentId?: string\n /** Reactions on this comment (optional) */\n reactions?: CommentReaction[]\n /** Nested replies (optional) */\n replies?: Comment[]\n /** When the comment was last updated (optional) */\n updatedAt?: Date\n}\n\n/**\n * Default reactions available in the system\n */\nexport const defaultReactions: Reaction[] = [\n { emoji: \"👍\", label: \"Curtir\", shortcode: \"thumbsup\" },\n { emoji: \"❤️\", label: \"Amei\", shortcode: \"heart\" },\n { emoji: \"😄\", label: \"Haha\", shortcode: \"smile\" },\n { emoji: \"🎉\", label: \"Celebrar\", shortcode: \"tada\" },\n { emoji: \"🤔\", label: \"Pensativo\", shortcode: \"thinking\" },\n { emoji: \"👀\", label: \"Olhando\", shortcode: \"eyes\" },\n]\n\n/**\n * Payload for onSubmit event\n */\nexport interface CommentSubmitPayload {\n /** Attachments (when allowAttachments is true) */\n attachments?: CommentAttachment[]\n /** Comment content */\n content: string\n /** User IDs mentioned in the comment */\n mentions: string[]\n /** Parent comment ID if replying */\n parentId?: string\n}\n\n/**\n * Payload for onEdit event\n */\nexport interface CommentEditPayload {\n /** New content */\n content: string\n /** ID of the comment being edited */\n id: string\n}\n\n/**\n * Payload for onDelete event\n */\nexport interface CommentDeletePayload {\n /** ID of the comment being deleted */\n id: string\n}\n\n/**\n * Payload for onReact event\n */\nexport interface CommentReactPayload {\n /** ID of the comment being reacted to */\n commentId: string\n /** Reaction emoji or shortcode */\n reaction: string\n}\n\n/**\n * Payload for onMention event\n */\nexport interface CommentMentionPayload {\n /** ID of the user being mentioned */\n userId: string\n}\n\n/**\n * Payload for onLoadMore event\n */\nexport interface CommentLoadMorePayload {\n /** Load comments before this ID (for pagination) */\n before?: string\n}\n\n/**\n * Props for CommentSystem component\n */\nexport interface CommentSystemProps\n extends Omit<React.ComponentProps<\"div\">, \"children\" | \"onSubmit\">,\n VariantProps<typeof commentSystemVariants> {\n /** Allow file attachments @default false */\n allowAttachments?: boolean\n /** Allow deleting own comments @default true */\n allowDeleting?: boolean\n /** Allow editing own comments @default true */\n allowEditing?: boolean\n /** Allow @mentions @default true */\n allowMentions?: boolean\n /** Allow reactions on comments @default true */\n allowReactions?: boolean\n /** Allow replies to comments @default true */\n allowReplies?: boolean\n /** Array of comments to display */\n comments: Comment[]\n /** Optional confirmation handler before deleting a comment */\n confirmDelete?: (comment: Comment) => boolean\n /** Currently logged in user (required for posting) */\n currentUser?: CommentUser\n /** Error state message */\n error?: string\n /** Loading state */\n isLoading?: boolean\n /** Maximum thread depth @default 3 */\n maxDepth?: number\n /** Users available for @mention */\n mentionableUsers?: CommentUser[]\n /** Called when a comment is deleted */\n onDelete?: (payload: CommentDeletePayload) => void\n /** Called when a comment is edited */\n onEdit?: (payload: CommentEditPayload) => void\n /** Called when more comments should be loaded */\n onLoadMore?: (payload: CommentLoadMorePayload) => void\n /** Called when a user is mentioned */\n onMention?: (payload: CommentMentionPayload) => void\n /** Called when a reaction is added/removed */\n onReact?: (payload: CommentReactPayload) => void\n /** Called when a new comment is submitted */\n onSubmit?: (payload: CommentSubmitPayload) => void\n /** Placeholder text for input */\n placeholder?: string\n /** Available reactions */\n reactions?: Reaction[]\n /** Read-only mode (no input, no actions) @default false */\n readOnly?: boolean\n}\n\n/**\n * Props for CommentItem component\n */\nexport interface CommentItemProps\n extends Omit<React.ComponentProps<\"article\">, \"children\"> {\n /** Allow deleting */\n allowDeleting?: boolean\n /** Allow editing */\n allowEditing?: boolean\n /** Allow mentions */\n allowMentions?: boolean\n /** Allow reactions */\n allowReactions?: boolean\n /** Allow replies */\n allowReplies?: boolean\n /** The comment to display */\n comment: Comment\n /** Optional confirmation handler before deleting a comment */\n confirmDelete?: (comment: Comment) => boolean\n /** Current user for permission checks */\n currentUser?: CommentUser\n /** Current depth in thread */\n depth?: number\n /** Layout style */\n layout?: \"chat\" | \"list\" | \"timeline\"\n /** Maximum thread depth */\n maxDepth?: number\n /** Mentionable users */\n mentionableUsers?: CommentUser[]\n /** Called when comment is deleted */\n onDelete?: (payload: CommentDeletePayload) => void\n /** Called when comment is edited */\n onEdit?: (payload: CommentEditPayload) => void\n /** Called when reaction is added/removed */\n onReact?: (payload: CommentReactPayload) => void\n /** Called when reply is submitted */\n onReply?: (payload: CommentSubmitPayload) => void\n /** Available reactions */\n reactions?: Reaction[]\n /** Read-only mode */\n readOnly?: boolean\n}\n\n/**\n * Props for CommentInput component\n */\nexport interface CommentInputProps\n extends Omit<React.ComponentProps<\"div\">, \"children\" | \"onSubmit\"> {\n /** Allow attachments */\n allowAttachments?: boolean\n /** Allow mentions */\n allowMentions?: boolean\n /** Cancel button label (for editing/replying) */\n cancelLabel?: string\n /** Initial content (for editing) */\n initialContent?: string\n /** Whether in edit mode */\n isEditing?: boolean\n /** Whether currently submitting */\n isSubmitting?: boolean\n /** Mentionable users */\n mentionableUsers?: CommentUser[]\n /** Called when cancel is clicked */\n onCancel?: () => void\n /** Called when a mention is triggered */\n onMention?: (payload: CommentMentionPayload) => void\n /** Called when form is submitted */\n onSubmit?: (payload: CommentSubmitPayload) => void\n /** Parent comment ID if replying */\n parentId?: string\n /** Placeholder text */\n placeholder?: string\n /** Show cancel button */\n showCancel?: boolean\n /** Submit button label */\n submitLabel?: string\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * CommentSystem container variants\n */\nexport const commentSystemVariants = cva(\n \"relative w-full transition-all duration-300\",\n {\n variants: {\n variant: {\n default: \"\",\n threaded: \"\",\n inline: \"border rounded-lg shadow-sm\",\n compact: \"\",\n },\n layout: {\n list: \"flex flex-col gap-4\",\n chat: \"flex flex-col gap-2\",\n timeline: \"flex flex-col\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n layout: \"list\",\n },\n }\n)\n\n/**\n * CommentItem variants\n */\nexport const commentItemVariants = cva(\n \"relative transition-all duration-200\",\n {\n variants: {\n layout: {\n list: \"rounded-lg border bg-card p-4\",\n chat: \"rounded-2xl px-4 py-2 max-w-[85%]\",\n timeline: \"relative pl-8 pb-6 border-l-2 border-muted-foreground/20 ml-4\",\n },\n isOwn: {\n true: \"\",\n false: \"\",\n },\n isPinned: {\n true: \"ring-1 ring-primary/30 bg-primary/5\",\n false: \"\",\n },\n isDeleted: {\n true: \"opacity-60\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n layout: \"chat\",\n isOwn: true,\n className: \"ml-auto bg-primary text-primary-foreground\",\n },\n {\n layout: \"chat\",\n isOwn: false,\n className: \"mr-auto bg-muted\",\n },\n ],\n defaultVariants: {\n layout: \"list\",\n isOwn: false,\n isPinned: false,\n isDeleted: false,\n },\n }\n)\n\n/**\n * Comment header variants (author info and timestamp)\n */\nexport const commentHeaderVariants = cva(\n \"flex items-center gap-3\",\n {\n variants: {\n layout: {\n list: \"\",\n chat: \"\",\n timeline: \"\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Comment content variants\n */\nexport const commentContentVariants = cva(\n \"text-sm\",\n {\n variants: {\n layout: {\n list: \"mt-2\",\n chat: \"\",\n timeline: \"mt-2\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Comment actions (reply, edit, delete, react)\n */\nexport const commentActionsVariants = cva(\n \"flex items-center gap-2 text-xs\",\n {\n variants: {\n layout: {\n list: \"mt-3 pt-3 border-t border-muted\",\n chat: \"mt-1\",\n timeline: \"mt-2\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Reply thread container variants\n */\nexport const commentRepliesVariants = cva(\n \"relative\",\n {\n variants: {\n layout: {\n list: \"pl-8 mt-4 space-y-4\",\n chat: \"pl-6 mt-2 space-y-2\",\n timeline: \"pl-4 mt-2 space-y-2\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Thread line connector\n */\nexport const commentThreadLineVariants = cva(\n \"absolute left-4 top-0 bottom-0 w-0.5 bg-muted-foreground/20\",\n {\n variants: {\n layout: {\n list: \"\",\n chat: \"left-3\",\n timeline: \"left-0\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Mention highlight in content\n */\nexport const commentMentionVariants = cva(\n \"inline-flex items-center rounded px-1 font-medium cursor-pointer hover:underline\",\n {\n variants: {\n style: {\n default: \"bg-primary/10 text-primary\",\n subtle: \"text-primary\",\n },\n },\n defaultVariants: {\n style: \"default\",\n },\n }\n)\n\n/**\n * Reaction badge variants\n */\nexport const commentReactionVariants = cva(\n \"inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs cursor-pointer transition-colors\",\n {\n variants: {\n hasReacted: {\n true: \"bg-primary/10 border-primary/30 text-primary\",\n false: \"bg-muted border-transparent text-muted-foreground hover:bg-muted-foreground/10\",\n },\n },\n defaultVariants: {\n hasReacted: false,\n },\n }\n)\n\n/**\n * Comment input container\n */\nexport const commentInputContainerVariants = cva(\n \"relative rounded-md border bg-background transition-all duration-200\",\n {\n variants: {\n isFocused: {\n true: \"ring-2 ring-ring ring-offset-2\",\n false: \"\",\n },\n isSubmitting: {\n true: \"opacity-70 pointer-events-none\",\n false: \"\",\n },\n },\n defaultVariants: {\n isFocused: false,\n isSubmitting: false,\n },\n }\n)\n\n/**\n * Mention suggestions popover\n */\nexport const mentionSuggestionsVariants = cva(\n \"absolute z-50 min-w-52 overflow-hidden rounded-md border bg-popover p-1 shadow-md\",\n {\n variants: {\n position: {\n above: \"bottom-full mb-1\",\n below: \"top-full mt-1\",\n },\n },\n defaultVariants: {\n position: \"below\",\n },\n }\n)\n\n/**\n * Mention suggestion item\n */\nexport const mentionSuggestionItemVariants = cva(\n \"flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm cursor-pointer transition-colors\",\n {\n variants: {\n isSelected: {\n true: \"bg-accent text-accent-foreground\",\n false: \"hover:bg-accent hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n isSelected: false,\n },\n }\n)\n\n/**\n * Empty state variants\n */\nexport const commentEmptyStateVariants = cva(\n \"flex flex-col items-center justify-center text-center p-8\",\n {\n variants: {\n variant: {\n default: \"\",\n compact: \"p-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n/**\n * Timeline marker for timeline layout\n */\nexport const commentTimelineMarkerVariants = cva(\n \"absolute -left-2 top-0 flex h-4 w-4 items-center justify-center rounded-full border-2 bg-background\",\n {\n variants: {\n status: {\n default: \"border-muted-foreground/50\",\n active: \"border-primary bg-primary\",\n },\n },\n defaultVariants: {\n status: \"default\",\n },\n }\n)\n\n// Export variant prop types\nexport type CommentSystemVariantProps = VariantProps<typeof commentSystemVariants>\nexport type CommentItemVariantProps = VariantProps<typeof commentItemVariants>\nexport type CommentReactionVariantProps = VariantProps<typeof commentReactionVariants>\nexport type CommentInputContainerVariantProps = VariantProps<typeof commentInputContainerVariants>\nexport type MentionSuggestionsVariantProps = VariantProps<typeof mentionSuggestionsVariants>\nexport type MentionSuggestionItemVariantProps = VariantProps<typeof mentionSuggestionItemVariants>\n","import type {\n Comment,\n CommentAttachment,\n CommentDeletePayload,\n CommentEditPayload,\n CommentInputProps,\n CommentItemProps,\n CommentMentionPayload,\n CommentReaction,\n CommentReactPayload,\n CommentSubmitPayload,\n CommentSystemProps,\n CommentUser,\n Reaction,\n} from \"./CommentSystem.types\"\nimport type { KeyboardEvent, ReactNode } from \"react\"\n\nimport {\n CornerDownRight,\n Edit2,\n MessageCircle,\n MoreHorizontal,\n Paperclip,\n Send,\n Smile,\n Trash2,\n X,\n} from \"lucide-react\"\nimport { useCallback, useId, useMemo, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Textarea } from \"../../forms/Textarea\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../primitives/Avatar\"\nimport { Button } from \"../../primitives/Button\"\nimport { defaultReactions } from \"./CommentSystem.types\"\nimport {\n commentActionsVariants,\n commentContentVariants,\n commentEmptyStateVariants,\n commentHeaderVariants,\n commentInputContainerVariants,\n commentItemVariants,\n commentMentionVariants,\n commentReactionVariants,\n commentRepliesVariants,\n commentSystemVariants,\n commentThreadLineVariants,\n commentTimelineMarkerVariants,\n mentionSuggestionItemVariants,\n mentionSuggestionsVariants,\n} from \"./CommentSystem.variants\"\n\n/**\n * Get initials from a name\n */\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .map((part) => part[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n}\n\n/**\n * Format relative time\n */\nfunction formatRelativeTime(date: Date): string {\n const now = new Date()\n const diffMs = now.getTime() - date.getTime()\n const diffSecs = Math.floor(diffMs / 1000)\n const diffMins = Math.floor(diffSecs / 60)\n const diffHours = Math.floor(diffMins / 60)\n const diffDays = Math.floor(diffHours / 24)\n\n if (diffSecs < 60) return \"agora\"\n if (diffMins < 60) return `${String(diffMins)}m atrás`\n if (diffHours < 24) return `${String(diffHours)}h atrás`\n if (diffDays < 7) return `${String(diffDays)}d atrás`\n\n return date.toLocaleDateString()\n}\n\n/**\n * Parse content and highlight mentions\n */\nfunction parseContent(\n content: string,\n mentionableUsers?: CommentUser[],\n onMentionClick?: (userId: string) => void\n): ReactNode {\n if (!content) return null\n\n // Pattern to match @mentions\n const mentionPattern = /@(\\w+)/g\n const parts: ReactNode[] = []\n let lastIndex = 0\n let match\n\n while ((match = mentionPattern.exec(content)) !== null) {\n // Add text before the mention\n if (match.index > lastIndex) {\n parts.push(content.slice(lastIndex, match.index))\n }\n\n const mentionName = match[1]\n const user = mentionableUsers?.find(\n (u) => u.name.toLowerCase().replaceAll(/\\s+/g, \"\") === mentionName?.toLowerCase()\n )\n\n parts.push(\n <span\n key={match.index}\n className={commentMentionVariants()}\n role=\"button\"\n tabIndex={0}\n onClick={() => { if (user) { onMentionClick?.(user.id); } }}\n onKeyDown={(e) => {\n if ((e.key === \"Enter\" || e.key === \" \") && user) {\n onMentionClick?.(user.id);\n }\n }}\n >\n @{mentionName}\n </span>\n )\n\n lastIndex = match.index + match[0].length\n }\n\n // Add remaining text\n if (lastIndex < content.length) {\n parts.push(content.slice(lastIndex))\n }\n\n return parts.length > 0 ? parts : content\n}\n\n/**\n * CommentInput component for writing new comments or editing\n */\nfunction CommentInput({\n placeholder = \"Escreva um comentário...\",\n allowMentions = true,\n allowAttachments = false,\n mentionableUsers = [],\n parentId,\n initialContent = \"\",\n submitLabel = \"Enviar\",\n cancelLabel = \"Cancelar\",\n isEditing = false,\n isSubmitting = false,\n showCancel = false,\n onSubmit,\n onCancel,\n onMention,\n className,\n ...props\n}: CommentInputProps) {\n const inputId = useId()\n const textareaRef = useRef<HTMLTextAreaElement>(null)\n const [content, setContent] = useState(initialContent)\n const [isFocused, setIsFocused] = useState(false)\n const [showMentions, setShowMentions] = useState(false)\n const [mentionSearch, setMentionSearch] = useState(\"\")\n const [selectedMentionIndex, setSelectedMentionIndex] = useState(0)\n\n const filteredUsers = useMemo(() => {\n if (!mentionSearch) return mentionableUsers.slice(0, 5)\n return mentionableUsers\n .filter((u) => u.name.toLowerCase().includes(mentionSearch.toLowerCase()))\n .slice(0, 5)\n }, [mentionableUsers, mentionSearch])\n\n const handleSubmit = useCallback(() => {\n if (!content.trim() || isSubmitting) return\n\n // Extract mentions from content\n const mentionPattern = /@(\\w+)/g\n const mentions: string[] = []\n let match\n\n while ((match = mentionPattern.exec(content)) !== null) {\n const matchName = match[1] ?? \"\"\n const user = mentionableUsers.find(\n (u) => u.name.toLowerCase().replaceAll(/\\s+/g, \"\") === matchName.toLowerCase()\n )\n if (user && !mentions.includes(user.id)) {\n mentions.push(user.id)\n }\n }\n\n onSubmit?.({\n content: content.trim(),\n parentId,\n mentions,\n })\n\n if (!isEditing) {\n setContent(\"\")\n }\n }, [content, isSubmitting, isEditing, parentId, mentionableUsers, onSubmit])\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (showMentions) {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n setSelectedMentionIndex((prev) =>\n Math.min(prev + 1, filteredUsers.length - 1)\n )\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n setSelectedMentionIndex((prev) => Math.max(prev - 1, 0))\n } else if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault()\n const selectedUser = filteredUsers[selectedMentionIndex]\n if (selectedUser) {\n insertMention(selectedUser)\n }\n } else if (e.key === \"Escape\") {\n setShowMentions(false)\n }\n } else if (e.key === \"Enter\" && (e.ctrlKey || e.metaKey)) {\n e.preventDefault()\n handleSubmit()\n }\n }\n\n const handleChange = (value: string) => {\n setContent(value)\n\n if (allowMentions) {\n // Check for @ trigger\n const cursorPos = textareaRef.current?.selectionStart ?? 0\n const textBeforeCursor = value.slice(0, cursorPos)\n const atMatch = /@(\\w*)$/.exec(textBeforeCursor)\n\n if (atMatch) {\n setShowMentions(true)\n setMentionSearch(atMatch[1] ?? \"\")\n setSelectedMentionIndex(0)\n } else {\n setShowMentions(false)\n setMentionSearch(\"\")\n }\n }\n }\n\n const insertMention = (user: CommentUser) => {\n const cursorPos = textareaRef.current?.selectionStart ?? 0\n const textBeforeCursor = content.slice(0, cursorPos)\n const textAfterCursor = content.slice(cursorPos)\n const atMatch = /@(\\w*)$/.exec(textBeforeCursor)\n\n if (atMatch) {\n const newTextBefore = textBeforeCursor.slice(0, atMatch.index)\n const mention = `@${user.name.replaceAll(/\\s+/g, \"\")} `\n setContent(newTextBefore + mention + textAfterCursor)\n setShowMentions(false)\n setMentionSearch(\"\")\n onMention?.({ userId: user.id })\n\n // Focus back on textarea\n setTimeout(() => {\n textareaRef.current?.focus()\n const newCursorPos = newTextBefore.length + mention.length\n textareaRef.current?.setSelectionRange(newCursorPos, newCursorPos)\n }, 0)\n }\n }\n\n return (\n <div\n className={cn(\n commentInputContainerVariants({ isFocused, isSubmitting }),\n className\n )}\n data-slot=\"comment-input\"\n {...props}\n >\n <div className=\"relative\">\n <Textarea\n ref={textareaRef}\n aria-describedby={`${inputId}-help`}\n aria-label={isEditing ? \"Editar comentário\" : \"Novo comentário\"}\n className=\"min-h-20 resize-none border-0 focus-visible:ring-0 focus-visible:ring-offset-0\"\n disabled={isSubmitting}\n id={inputId}\n placeholder={placeholder}\n value={content}\n onBlur={() => { setIsFocused(false); }}\n onChange={(e) => { handleChange(e.target.value); }}\n onFocus={() => { setIsFocused(true); }}\n onKeyDown={handleKeyDown}\n />\n\n {/* Mention suggestions */}\n {showMentions && filteredUsers.length > 0 && (\n <div\n className={mentionSuggestionsVariants({ position: \"below\" })}\n data-slot=\"comment-mention-suggestions\"\n role=\"listbox\"\n >\n {filteredUsers.map((user, index) => (\n <button\n key={user.id}\n className={mentionSuggestionItemVariants({\n isSelected: index === selectedMentionIndex,\n })}\n aria-selected={index === selectedMentionIndex}\n role=\"option\"\n type=\"button\"\n onClick={() => { insertMention(user); }}\n >\n <Avatar size=\"xs\">\n {user.avatar ? (\n <AvatarImage alt={user.name} src={user.avatar} />\n ) : null}\n <AvatarFallback>{getInitials(user.name)}</AvatarFallback>\n </Avatar>\n <span>{user.name}</span>\n {user.role && (\n <span className=\"text-muted-foreground text-xs\">\n {user.role}\n </span>\n )}\n </button>\n ))}\n </div>\n )}\n </div>\n\n <div className=\"flex items-center justify-between border-t p-2\">\n <div className=\"flex items-center gap-1\">\n {allowMentions && (\n <Button\n aria-label=\"Mencionar alguém\"\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => {\n const newContent = content + \"@\"\n setContent(newContent)\n handleChange(newContent)\n textareaRef.current?.focus()\n }}\n >\n <span className=\"text-sm font-medium\">@</span>\n </Button>\n )}\n {allowAttachments && (\n <Button\n aria-label=\"Anexar arquivo\"\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n <Paperclip className=\"h-4 w-4\" />\n </Button>\n )}\n <Button\n aria-label=\"Adicionar emoji\"\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n <Smile className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {showCancel && (\n <Button\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onCancel}\n >\n {cancelLabel}\n </Button>\n )}\n <Button\n disabled={!content.trim() || isSubmitting}\n size=\"sm\"\n type=\"button\"\n onClick={handleSubmit}\n >\n <Send className=\"mr-1 h-4 w-4\" />\n {submitLabel}\n </Button>\n </div>\n </div>\n\n <span className=\"sr-only\" id={`${inputId}-help`}>\n Pressione Ctrl+Enter para enviar. Use @ para mencionar alguém.\n </span>\n </div>\n )\n}\n\n/**\n * CommentReactions component displays and manages reactions\n */\nfunction CommentReactions({\n commentId,\n reactions = [],\n availableReactions = defaultReactions,\n readOnly = false,\n onReact,\n}: {\n availableReactions?: Reaction[]\n commentId: string\n onReact?: (payload: CommentReactPayload) => void\n reactions?: { count: number; emoji: string; hasReacted?: boolean; users: string[] }[]\n readOnly?: boolean\n}) {\n const [showPicker, setShowPicker] = useState(false)\n\n const handleReact = (emoji: string) => {\n onReact?.({ commentId, reaction: emoji })\n setShowPicker(false)\n }\n\n return (\n <div className=\"flex flex-wrap items-center gap-1\" data-slot=\"comment-reactions\">\n {reactions.map((reaction) => (\n <button\n key={reaction.emoji}\n className={commentReactionVariants({\n hasReacted: reaction.hasReacted,\n })}\n disabled={readOnly}\n title={`${String(reaction.count)} ${reaction.count === 1 ? \"pessoa\" : \"pessoas\"}`}\n type=\"button\"\n onClick={() => { handleReact(reaction.emoji); }}\n >\n <span>{reaction.emoji}</span>\n <span>{reaction.count}</span>\n </button>\n ))}\n\n {!readOnly && (\n <div className=\"relative\">\n <button\n className=\"inline-flex h-6 w-6 items-center justify-center rounded-full border border-dashed border-muted-foreground/30 text-muted-foreground transition-colors hover:border-muted-foreground hover:text-foreground\"\n title=\"Adicionar reação\"\n type=\"button\"\n onClick={() => { setShowPicker(!showPicker); }}\n >\n <Smile className=\"h-3 w-3\" />\n </button>\n\n {showPicker && (\n <div\n className=\"absolute bottom-full left-0 z-50 mb-1 flex gap-1 rounded-lg border bg-popover p-2 shadow-lg\"\n role=\"listbox\"\n >\n {availableReactions.map((reaction) => (\n <button\n key={reaction.shortcode}\n className=\"rounded p-1 text-lg transition-colors hover:bg-accent\"\n role=\"option\"\n title={reaction.label}\n type=\"button\"\n onClick={() => { handleReact(reaction.emoji); }}\n >\n {reaction.emoji}\n </button>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * CommentItem component renders a single comment\n */\nfunction CommentItem({\n comment,\n confirmDelete,\n currentUser,\n depth = 0,\n maxDepth = 3,\n layout = \"list\",\n allowReplies = true,\n allowReactions = true,\n allowEditing = true,\n allowDeleting = true,\n allowMentions = true,\n reactions = defaultReactions,\n mentionableUsers = [],\n readOnly = false,\n onReply,\n onEdit,\n onDelete,\n onReact,\n className,\n ...props\n}: CommentItemProps) {\n const commentId = useId()\n const [isReplying, setIsReplying] = useState(false)\n const [isEditing, setIsEditing] = useState(false)\n const [showActions, setShowActions] = useState(false)\n\n const isOwn = currentUser?.id === comment.author.id\n const canReply = allowReplies && depth < maxDepth && !readOnly\n const canEdit = allowEditing && isOwn && !readOnly && !comment.isDeleted\n const canDelete = allowDeleting && isOwn && !readOnly && !comment.isDeleted\n\n const handleReply = (payload: CommentSubmitPayload) => {\n onReply?.({ ...payload, parentId: comment.id })\n setIsReplying(false)\n }\n\n const handleEdit = (payload: CommentSubmitPayload) => {\n onEdit?.({ id: comment.id, content: payload.content })\n setIsEditing(false)\n }\n\n const handleDelete = () => {\n const shouldDelete = confirmDelete\n ? confirmDelete(comment)\n : window.confirm(\"Tem certeza que deseja excluir este comentário?\")\n\n if (shouldDelete) {\n onDelete?.({ id: comment.id })\n }\n }\n\n if (comment.isDeleted) {\n return (\n <article\n data-deleted\n aria-label=\"Comentário excluído\"\n className={cn(commentItemVariants({ layout, isDeleted: true }), className)}\n data-slot=\"comment-item\"\n {...props}\n >\n <p className=\"text-sm italic text-muted-foreground\">\n Este comentário foi excluído.\n </p>\n </article>\n )\n }\n\n return (\n <article\n className={cn(\n commentItemVariants({ layout, isOwn, isPinned: comment.isPinned }),\n className\n )}\n aria-describedby={`${commentId}-content`}\n aria-label={`Comentário de ${comment.author.name}`}\n data-slot=\"comment-item\"\n {...props}\n >\n {/* Timeline marker */}\n {layout === \"timeline\" && (\n <div\n className={commentTimelineMarkerVariants({ status: \"default\" })}\n data-slot=\"comment-timeline-marker\"\n />\n )}\n\n {/* Header */}\n <div className={commentHeaderVariants({ layout })} data-slot=\"comment-header\">\n {layout !== \"chat\" && (\n <Avatar size=\"sm\">\n {comment.author.avatar ? (\n <AvatarImage alt={comment.author.name} src={comment.author.avatar} />\n ) : null}\n <AvatarFallback>{getInitials(comment.author.name)}</AvatarFallback>\n </Avatar>\n )}\n\n <div className=\"flex flex-1 items-center gap-2\">\n <span className=\"text-sm font-medium text-foreground\">\n {comment.author.name}\n </span>\n <span className=\"text-xs text-muted-foreground\">\n {formatRelativeTime(comment.createdAt)}\n </span>\n {comment.isEdited && (\n <span className=\"text-xs text-muted-foreground\">(editado)</span>\n )}\n {comment.isPinned && (\n <span className=\"text-xs font-medium text-primary\">Fixado</span>\n )}\n </div>\n\n {(canEdit || canDelete) && (\n <div className=\"relative\">\n <Button\n aria-expanded={showActions}\n aria-haspopup=\"true\"\n aria-label=\"Mais ações\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => { setShowActions(!showActions); }}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n\n {showActions && (\n <div\n className=\"absolute right-0 top-full z-10 mt-1 min-w-28 rounded-md border bg-popover p-1 shadow-md\"\n role=\"menu\"\n >\n {canEdit && (\n <button\n className=\"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent\"\n role=\"menuitem\"\n type=\"button\"\n onClick={() => {\n setIsEditing(true)\n setShowActions(false)\n }}\n >\n <Edit2 className=\"h-3.5 w-3.5\" />\n Editar\n </button>\n )}\n {canDelete && (\n <button\n className=\"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-destructive hover:bg-accent\"\n role=\"menuitem\"\n type=\"button\"\n onClick={() => {\n handleDelete()\n setShowActions(false)\n }}\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n Excluir\n </button>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Content */}\n {isEditing ? (\n <div className=\"mt-2\">\n <CommentInput\n isEditing\n showCancel\n allowMentions={allowMentions}\n cancelLabel=\"Cancelar\"\n initialContent={comment.content}\n mentionableUsers={mentionableUsers}\n placeholder=\"Editar comentário...\"\n submitLabel=\"Salvar\"\n onCancel={() => { setIsEditing(false); }}\n onSubmit={handleEdit}\n />\n </div>\n ) : (\n <div\n className={commentContentVariants({ layout })}\n data-slot=\"comment-content\"\n id={`${commentId}-content`}\n >\n <p className=\"whitespace-pre-wrap\">\n {parseContent(comment.content, mentionableUsers)}\n </p>\n </div>\n )}\n\n {/* Attachments */}\n {comment.attachments && comment.attachments.length > 0 && (\n <div className=\"mt-2 flex flex-wrap gap-2\" data-slot=\"comment-attachments\">\n {comment.attachments.map((attachment) => (\n <a\n key={attachment.id}\n className=\"flex items-center gap-1 rounded border bg-muted/50 px-2 py-1 text-xs hover:bg-muted\"\n href={attachment.url}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n <Paperclip className=\"h-3 w-3\" />\n {attachment.name}\n </a>\n ))}\n </div>\n )}\n\n {/* Reactions */}\n {allowReactions && (\n <div className=\"mt-2\">\n <CommentReactions\n availableReactions={reactions}\n commentId={comment.id}\n reactions={comment.reactions}\n readOnly={readOnly}\n onReact={onReact}\n />\n </div>\n )}\n\n {/* Actions */}\n <div className={commentActionsVariants({ layout })} data-slot=\"comment-actions\">\n {canReply && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => { setIsReplying(!isReplying); }}\n >\n <CornerDownRight className=\"mr-1 h-3 w-3\" />\n Responder\n </Button>\n )}\n </div>\n\n {/* Reply input */}\n {isReplying && (\n <div className=\"mt-3\">\n <CommentInput\n showCancel\n allowMentions={allowMentions}\n mentionableUsers={mentionableUsers}\n parentId={comment.id}\n placeholder={`Responder a ${comment.author.name}...`}\n onCancel={() => { setIsReplying(false); }}\n onSubmit={handleReply}\n />\n </div>\n )}\n\n {/* Replies */}\n {comment.replies && comment.replies.length > 0 && (\n <div\n className={cn(\n commentRepliesVariants({ layout }),\n \"relative\"\n )}\n data-slot=\"comment-replies\"\n >\n {layout === \"list\" && (\n <div className={commentThreadLineVariants({ layout })} />\n )}\n {comment.replies.map((reply) => (\n <CommentItem\n key={reply.id}\n allowDeleting={allowDeleting}\n allowEditing={allowEditing}\n allowMentions={allowMentions}\n allowReactions={allowReactions}\n allowReplies={allowReplies}\n comment={reply}\n confirmDelete={confirmDelete}\n currentUser={currentUser}\n depth={depth + 1}\n layout={layout}\n maxDepth={maxDepth}\n mentionableUsers={mentionableUsers}\n reactions={reactions}\n readOnly={readOnly}\n onDelete={onDelete}\n onEdit={onEdit}\n onReact={onReact}\n onReply={onReply}\n />\n ))}\n </div>\n )}\n </article>\n )\n}\n\n/**\n * CommentSystem displays and manages a complete comment system\n * with threading, mentions, reactions, and moderation support.\n *\n * @example\n * ```tsx\n * const comments = [\n * {\n * id: '1',\n * content: 'Great work!',\n * author: { id: '1', name: 'John Doe' },\n * createdAt: new Date()\n * }\n * ]\n *\n * <CommentSystem\n * comments={comments}\n * currentUser={{ id: '2', name: 'Jane Doe' }}\n * onSubmit={({ content }) => console.log('New comment:', content)}\n * />\n * ```\n */\nfunction CommentSystem({\n comments,\n variant = \"default\",\n layout = \"list\",\n confirmDelete,\n currentUser,\n allowReplies = true,\n allowReactions = true,\n allowEditing = true,\n allowDeleting = true,\n allowMentions = true,\n allowAttachments = false,\n maxDepth = 3,\n mentionableUsers = [],\n reactions = defaultReactions,\n placeholder = \"Escreva um comentário...\",\n readOnly = false,\n isLoading = false,\n error,\n onSubmit,\n onEdit,\n onDelete,\n onReact,\n onMention,\n onLoadMore,\n className,\n \"aria-label\": ariaLabel = \"Sistema de comentários\",\n ...props\n}: CommentSystemProps) {\n const systemId = useId()\n\n const handleReply = (payload: CommentSubmitPayload) => {\n onSubmit?.(payload)\n }\n\n const hasComments = comments.length > 0\n const showInput = !readOnly && currentUser\n\n // Loading state\n if (isLoading) {\n return (\n <div\n data-loading\n aria-busy=\"true\"\n aria-label={ariaLabel}\n className={cn(commentSystemVariants({ variant, layout }), className)}\n data-slot=\"comment-system\"\n {...props}\n >\n <div className=\"flex flex-col gap-4\">\n {[1, 2, 3].map((i) => (\n <div\n key={i}\n className=\"animate-pulse rounded-lg border bg-card p-4\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"h-8 w-8 rounded-full bg-muted\" />\n <div className=\"space-y-2\">\n <div className=\"h-4 w-24 rounded bg-muted\" />\n <div className=\"h-3 w-16 rounded bg-muted\" />\n </div>\n </div>\n <div className=\"mt-3 space-y-2\">\n <div className=\"h-4 w-full rounded bg-muted\" />\n <div className=\"h-4 w-3/4 rounded bg-muted\" />\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n }\n\n // Error state\n if (error) {\n return (\n <div\n data-error\n aria-label={ariaLabel}\n className={cn(commentSystemVariants({ variant, layout }), className)}\n data-slot=\"comment-system\"\n {...props}\n >\n <div className=\"rounded-lg border border-destructive/50 bg-destructive/5 p-4 text-center\">\n <X className=\"mx-auto h-8 w-8 text-destructive\" />\n <p className=\"mt-2 text-sm text-destructive\">{error}</p>\n <Button\n className=\"mt-3\"\n size=\"sm\"\n variant=\"outline\"\n onClick={() => onLoadMore?.({})}\n >\n Tentar novamente\n </Button>\n </div>\n </div>\n )\n }\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(commentSystemVariants({ variant, layout }), className)}\n data-slot=\"comment-system\"\n data-variant={variant}\n id={systemId}\n {...props}\n >\n {/* Input for new comments */}\n {showInput && (\n <div className=\"mb-4\" data-slot=\"comment-system-input\">\n <CommentInput\n allowAttachments={allowAttachments}\n allowMentions={allowMentions}\n mentionableUsers={mentionableUsers}\n placeholder={placeholder}\n onMention={onMention}\n onSubmit={onSubmit}\n />\n </div>\n )}\n\n {/* Comments list */}\n {hasComments ? (\n <div data-slot=\"comment-system-list\" role=\"feed\">\n {comments.map((comment) => (\n <CommentItem\n key={comment.id}\n allowDeleting={allowDeleting}\n allowEditing={allowEditing}\n allowMentions={allowMentions}\n allowReactions={allowReactions}\n allowReplies={allowReplies}\n comment={comment}\n confirmDelete={confirmDelete}\n currentUser={currentUser}\n layout={layout ?? \"list\"}\n maxDepth={maxDepth}\n mentionableUsers={mentionableUsers}\n reactions={reactions}\n readOnly={readOnly}\n onDelete={onDelete}\n onEdit={onEdit}\n onReact={onReact}\n onReply={handleReply}\n />\n ))}\n </div>\n ) : (\n <div\n className={commentEmptyStateVariants({\n variant: variant === \"compact\" ? \"compact\" : \"default\",\n })}\n data-slot=\"comment-system-empty\"\n >\n <MessageCircle className=\"h-12 w-12 text-muted-foreground/50\" />\n <p className=\"mt-2 text-sm text-muted-foreground\">\n Nenhum comentário ainda.\n </p>\n {!readOnly && currentUser && (\n <p className=\"mt-1 text-xs text-muted-foreground\">\n Seja o primeiro a comentar!\n </p>\n )}\n </div>\n )}\n\n {/* Load more button */}\n {onLoadMore && hasComments && (\n <div className=\"mt-4 text-center\">\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => {\n onLoadMore({ before: comments[comments.length - 1]?.id })\n }}\n >\n Carregar mais comentários\n </Button>\n </div>\n )}\n </div>\n )\n}\n\nexport {\n commentActionsVariants,\n commentContentVariants,\n commentEmptyStateVariants,\n commentHeaderVariants,\n CommentInput,\n commentInputContainerVariants,\n CommentItem,\n commentItemVariants,\n commentMentionVariants,\n CommentReactions,\n commentReactionVariants,\n commentRepliesVariants,\n CommentSystem,\n commentSystemVariants,\n commentThreadLineVariants,\n commentTimelineMarkerVariants,\n defaultReactions,\n mentionSuggestionItemVariants,\n mentionSuggestionsVariants,\n}\n\nexport type {\n Comment,\n CommentAttachment,\n CommentDeletePayload,\n CommentEditPayload,\n CommentInputProps,\n CommentItemProps,\n CommentMentionPayload,\n CommentReaction,\n CommentReactPayload,\n CommentSubmitPayload,\n CommentSystemProps,\n CommentUser,\n Reaction,\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/workflow/CommentSystem/CommentSystem.types.ts","../src/components/workflow/CommentSystem/CommentSystem.variants.ts","../src/components/workflow/CommentSystem/CommentSystem.tsx"],"names":[],"mappings":"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","file":"chunk-JKYB5QAP.js","sourcesContent":["import type { commentSystemVariants } from \"./CommentSystem.variants\"\nimport type { VariantProps } from \"class-variance-authority\"\n\n/**\n * User data structure for comment system\n */\nexport interface CommentUser {\n /** Avatar URL (optional) */\n avatar?: string\n /** Email address (optional) */\n email?: string\n /** Unique identifier */\n id: string\n /** Display name */\n name: string\n /** Role or title (optional) */\n role?: string\n}\n\n/**\n * Attachment data structure\n */\nexport interface CommentAttachment {\n /** Unique identifier */\n id: string\n /** File name */\n name: string\n /** File size in bytes (optional) */\n size?: number\n /** Thumbnail URL for images (optional) */\n thumbnail?: string\n /** Type of attachment */\n type: \"file\" | \"image\" | \"link\"\n /** File URL */\n url: string\n}\n\n/**\n * Reaction on a comment\n */\nexport interface CommentReaction {\n /** Number of users who reacted */\n count: number\n /** Emoji character */\n emoji: string\n /** Whether current user has reacted */\n hasReacted?: boolean\n /** IDs of users who reacted */\n users: string[]\n}\n\n/**\n * Available reaction configuration\n */\nexport interface Reaction {\n /** Emoji character */\n emoji: string\n /** Display label */\n label: string\n /** Shortcode identifier */\n shortcode: string\n}\n\n/**\n * Comment data structure\n */\nexport interface Comment {\n /** Attachments on this comment (optional) */\n attachments?: CommentAttachment[]\n /** Author of the comment */\n author: CommentUser\n /** Comment content (supports basic markdown) */\n content: string\n /** When the comment was created */\n createdAt: Date\n /** Unique identifier */\n id: string\n /** Whether the comment has been deleted (soft delete) */\n isDeleted?: boolean\n /** Whether the comment has been edited */\n isEdited?: boolean\n /** Whether the comment is pinned */\n isPinned?: boolean\n /** User IDs mentioned in this comment (optional) */\n mentions?: string[]\n /** Parent comment ID for replies (optional) */\n parentId?: string\n /** Reactions on this comment (optional) */\n reactions?: CommentReaction[]\n /** Nested replies (optional) */\n replies?: Comment[]\n /** When the comment was last updated (optional) */\n updatedAt?: Date\n}\n\n/**\n * Default reactions available in the system\n */\nexport const defaultReactions: Reaction[] = [\n { emoji: \"👍\", label: \"Curtir\", shortcode: \"thumbsup\" },\n { emoji: \"❤️\", label: \"Amei\", shortcode: \"heart\" },\n { emoji: \"😄\", label: \"Haha\", shortcode: \"smile\" },\n { emoji: \"🎉\", label: \"Celebrar\", shortcode: \"tada\" },\n { emoji: \"🤔\", label: \"Pensativo\", shortcode: \"thinking\" },\n { emoji: \"👀\", label: \"Olhando\", shortcode: \"eyes\" },\n]\n\n/**\n * Payload for onSubmit event\n */\nexport interface CommentSubmitPayload {\n /** Attachments (when allowAttachments is true) */\n attachments?: CommentAttachment[]\n /** Comment content */\n content: string\n /** User IDs mentioned in the comment */\n mentions: string[]\n /** Parent comment ID if replying */\n parentId?: string\n}\n\n/**\n * Payload for onEdit event\n */\nexport interface CommentEditPayload {\n /** New content */\n content: string\n /** ID of the comment being edited */\n id: string\n}\n\n/**\n * Payload for onDelete event\n */\nexport interface CommentDeletePayload {\n /** ID of the comment being deleted */\n id: string\n}\n\n/**\n * Payload for onReact event\n */\nexport interface CommentReactPayload {\n /** ID of the comment being reacted to */\n commentId: string\n /** Reaction emoji or shortcode */\n reaction: string\n}\n\n/**\n * Payload for onMention event\n */\nexport interface CommentMentionPayload {\n /** ID of the user being mentioned */\n userId: string\n}\n\n/**\n * Payload for onLoadMore event\n */\nexport interface CommentLoadMorePayload {\n /** Load comments before this ID (for pagination) */\n before?: string\n}\n\n/**\n * Props for CommentSystem component\n */\nexport interface CommentSystemProps\n extends Omit<React.ComponentProps<\"div\">, \"children\" | \"onSubmit\">,\n VariantProps<typeof commentSystemVariants> {\n /** Allow file attachments @default false */\n allowAttachments?: boolean\n /** Allow deleting own comments @default true */\n allowDeleting?: boolean\n /** Allow editing own comments @default true */\n allowEditing?: boolean\n /** Allow @mentions @default true */\n allowMentions?: boolean\n /** Allow reactions on comments @default true */\n allowReactions?: boolean\n /** Allow replies to comments @default true */\n allowReplies?: boolean\n /** Array of comments to display */\n comments: Comment[]\n /** Optional confirmation handler before deleting a comment */\n confirmDelete?: (comment: Comment) => boolean\n /** Currently logged in user (required for posting) */\n currentUser?: CommentUser\n /** Error state message */\n error?: string\n /** Loading state */\n isLoading?: boolean\n /** Maximum thread depth @default 3 */\n maxDepth?: number\n /** Users available for @mention */\n mentionableUsers?: CommentUser[]\n /** Called when a comment is deleted */\n onDelete?: (payload: CommentDeletePayload) => void\n /** Called when a comment is edited */\n onEdit?: (payload: CommentEditPayload) => void\n /** Called when more comments should be loaded */\n onLoadMore?: (payload: CommentLoadMorePayload) => void\n /** Called when a user is mentioned */\n onMention?: (payload: CommentMentionPayload) => void\n /** Called when a reaction is added/removed */\n onReact?: (payload: CommentReactPayload) => void\n /** Called when a new comment is submitted */\n onSubmit?: (payload: CommentSubmitPayload) => void\n /** Placeholder text for input */\n placeholder?: string\n /** Available reactions */\n reactions?: Reaction[]\n /** Read-only mode (no input, no actions) @default false */\n readOnly?: boolean\n}\n\n/**\n * Props for CommentItem component\n */\nexport interface CommentItemProps\n extends Omit<React.ComponentProps<\"article\">, \"children\"> {\n /** Allow deleting */\n allowDeleting?: boolean\n /** Allow editing */\n allowEditing?: boolean\n /** Allow mentions */\n allowMentions?: boolean\n /** Allow reactions */\n allowReactions?: boolean\n /** Allow replies */\n allowReplies?: boolean\n /** The comment to display */\n comment: Comment\n /** Optional confirmation handler before deleting a comment */\n confirmDelete?: (comment: Comment) => boolean\n /** Current user for permission checks */\n currentUser?: CommentUser\n /** Current depth in thread */\n depth?: number\n /** Layout style */\n layout?: \"chat\" | \"list\" | \"timeline\"\n /** Maximum thread depth */\n maxDepth?: number\n /** Mentionable users */\n mentionableUsers?: CommentUser[]\n /** Called when comment is deleted */\n onDelete?: (payload: CommentDeletePayload) => void\n /** Called when comment is edited */\n onEdit?: (payload: CommentEditPayload) => void\n /** Called when reaction is added/removed */\n onReact?: (payload: CommentReactPayload) => void\n /** Called when reply is submitted */\n onReply?: (payload: CommentSubmitPayload) => void\n /** Available reactions */\n reactions?: Reaction[]\n /** Read-only mode */\n readOnly?: boolean\n}\n\n/**\n * Props for CommentInput component\n */\nexport interface CommentInputProps\n extends Omit<React.ComponentProps<\"div\">, \"children\" | \"onSubmit\"> {\n /** Allow attachments */\n allowAttachments?: boolean\n /** Allow mentions */\n allowMentions?: boolean\n /** Cancel button label (for editing/replying) */\n cancelLabel?: string\n /** Initial content (for editing) */\n initialContent?: string\n /** Whether in edit mode */\n isEditing?: boolean\n /** Whether currently submitting */\n isSubmitting?: boolean\n /** Mentionable users */\n mentionableUsers?: CommentUser[]\n /** Called when cancel is clicked */\n onCancel?: () => void\n /** Called when a mention is triggered */\n onMention?: (payload: CommentMentionPayload) => void\n /** Called when form is submitted */\n onSubmit?: (payload: CommentSubmitPayload) => void\n /** Parent comment ID if replying */\n parentId?: string\n /** Placeholder text */\n placeholder?: string\n /** Show cancel button */\n showCancel?: boolean\n /** Submit button label */\n submitLabel?: string\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * CommentSystem container variants\n */\nexport const commentSystemVariants = cva(\n \"relative w-full transition-all duration-300\",\n {\n variants: {\n variant: {\n default: \"\",\n threaded: \"\",\n inline: \"border rounded-lg shadow-sm\",\n compact: \"\",\n },\n layout: {\n list: \"flex flex-col gap-4\",\n chat: \"flex flex-col gap-2\",\n timeline: \"flex flex-col\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n layout: \"list\",\n },\n }\n)\n\n/**\n * CommentItem variants\n */\nexport const commentItemVariants = cva(\n \"relative transition-all duration-200\",\n {\n variants: {\n layout: {\n list: \"rounded-lg border bg-card p-4\",\n chat: \"rounded-2xl px-4 py-2 max-w-[85%]\",\n timeline: \"relative pl-8 pb-6 border-l-2 border-muted-foreground/20 ml-4\",\n },\n isOwn: {\n true: \"\",\n false: \"\",\n },\n isPinned: {\n true: \"ring-1 ring-primary/30 bg-primary/5\",\n false: \"\",\n },\n isDeleted: {\n true: \"opacity-60\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n layout: \"chat\",\n isOwn: true,\n className: \"ml-auto bg-primary text-primary-foreground\",\n },\n {\n layout: \"chat\",\n isOwn: false,\n className: \"mr-auto bg-muted\",\n },\n ],\n defaultVariants: {\n layout: \"list\",\n isOwn: false,\n isPinned: false,\n isDeleted: false,\n },\n }\n)\n\n/**\n * Comment header variants (author info and timestamp)\n */\nexport const commentHeaderVariants = cva(\n \"flex items-center gap-3\",\n {\n variants: {\n layout: {\n list: \"\",\n chat: \"\",\n timeline: \"\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Comment content variants\n */\nexport const commentContentVariants = cva(\n \"text-sm\",\n {\n variants: {\n layout: {\n list: \"mt-2\",\n chat: \"\",\n timeline: \"mt-2\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Comment actions (reply, edit, delete, react)\n */\nexport const commentActionsVariants = cva(\n \"flex items-center gap-2 text-xs\",\n {\n variants: {\n layout: {\n list: \"mt-3 pt-3 border-t border-muted\",\n chat: \"mt-1\",\n timeline: \"mt-2\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Reply thread container variants\n */\nexport const commentRepliesVariants = cva(\n \"relative\",\n {\n variants: {\n layout: {\n list: \"pl-8 mt-4 space-y-4\",\n chat: \"pl-6 mt-2 space-y-2\",\n timeline: \"pl-4 mt-2 space-y-2\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Thread line connector\n */\nexport const commentThreadLineVariants = cva(\n \"absolute left-4 top-0 bottom-0 w-0.5 bg-muted-foreground/20\",\n {\n variants: {\n layout: {\n list: \"\",\n chat: \"left-3\",\n timeline: \"left-0\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Mention highlight in content\n */\nexport const commentMentionVariants = cva(\n \"inline-flex items-center rounded px-1 font-medium cursor-pointer hover:underline\",\n {\n variants: {\n style: {\n default: \"bg-primary/10 text-primary\",\n subtle: \"text-primary\",\n },\n },\n defaultVariants: {\n style: \"default\",\n },\n }\n)\n\n/**\n * Reaction badge variants\n */\nexport const commentReactionVariants = cva(\n \"inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs cursor-pointer transition-colors\",\n {\n variants: {\n hasReacted: {\n true: \"bg-primary/10 border-primary/30 text-primary\",\n false: \"bg-muted border-transparent text-muted-foreground hover:bg-muted-foreground/10\",\n },\n },\n defaultVariants: {\n hasReacted: false,\n },\n }\n)\n\n/**\n * Comment input container\n */\nexport const commentInputContainerVariants = cva(\n \"relative rounded-md border bg-background transition-all duration-200\",\n {\n variants: {\n isFocused: {\n true: \"ring-2 ring-ring ring-offset-2\",\n false: \"\",\n },\n isSubmitting: {\n true: \"opacity-70 pointer-events-none\",\n false: \"\",\n },\n },\n defaultVariants: {\n isFocused: false,\n isSubmitting: false,\n },\n }\n)\n\n/**\n * Mention suggestions popover\n */\nexport const mentionSuggestionsVariants = cva(\n \"absolute z-50 min-w-52 overflow-hidden rounded-md border bg-popover p-1 shadow-md\",\n {\n variants: {\n position: {\n above: \"bottom-full mb-1\",\n below: \"top-full mt-1\",\n },\n },\n defaultVariants: {\n position: \"below\",\n },\n }\n)\n\n/**\n * Mention suggestion item\n */\nexport const mentionSuggestionItemVariants = cva(\n \"flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm cursor-pointer transition-colors\",\n {\n variants: {\n isSelected: {\n true: \"bg-accent text-accent-foreground\",\n false: \"hover:bg-accent hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n isSelected: false,\n },\n }\n)\n\n/**\n * Empty state variants\n */\nexport const commentEmptyStateVariants = cva(\n \"flex flex-col items-center justify-center text-center p-8\",\n {\n variants: {\n variant: {\n default: \"\",\n compact: \"p-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n/**\n * Timeline marker for timeline layout\n */\nexport const commentTimelineMarkerVariants = cva(\n \"absolute -left-2 top-0 flex h-4 w-4 items-center justify-center rounded-full border-2 bg-background\",\n {\n variants: {\n status: {\n default: \"border-muted-foreground/50\",\n active: \"border-primary bg-primary\",\n },\n },\n defaultVariants: {\n status: \"default\",\n },\n }\n)\n\n// Export variant prop types\nexport type CommentSystemVariantProps = VariantProps<typeof commentSystemVariants>\nexport type CommentItemVariantProps = VariantProps<typeof commentItemVariants>\nexport type CommentReactionVariantProps = VariantProps<typeof commentReactionVariants>\nexport type CommentInputContainerVariantProps = VariantProps<typeof commentInputContainerVariants>\nexport type MentionSuggestionsVariantProps = VariantProps<typeof mentionSuggestionsVariants>\nexport type MentionSuggestionItemVariantProps = VariantProps<typeof mentionSuggestionItemVariants>\n","import type {\n Comment,\n CommentAttachment,\n CommentDeletePayload,\n CommentEditPayload,\n CommentInputProps,\n CommentItemProps,\n CommentMentionPayload,\n CommentReaction,\n CommentReactPayload,\n CommentSubmitPayload,\n CommentSystemProps,\n CommentUser,\n Reaction,\n} from \"./CommentSystem.types\"\nimport type { KeyboardEvent, ReactNode } from \"react\"\n\nimport {\n CornerDownRight,\n Edit2,\n MessageCircle,\n MoreHorizontal,\n Paperclip,\n Send,\n Smile,\n Trash2,\n X,\n} from \"lucide-react\"\nimport { useCallback, useId, useMemo, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Textarea } from \"../../forms/Textarea\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../primitives/Avatar\"\nimport { Button } from \"../../primitives/Button\"\nimport { defaultReactions } from \"./CommentSystem.types\"\nimport {\n commentActionsVariants,\n commentContentVariants,\n commentEmptyStateVariants,\n commentHeaderVariants,\n commentInputContainerVariants,\n commentItemVariants,\n commentMentionVariants,\n commentReactionVariants,\n commentRepliesVariants,\n commentSystemVariants,\n commentThreadLineVariants,\n commentTimelineMarkerVariants,\n mentionSuggestionItemVariants,\n mentionSuggestionsVariants,\n} from \"./CommentSystem.variants\"\n\n/**\n * Get initials from a name\n */\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .map((part) => part[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n}\n\n/**\n * Format relative time\n */\nfunction formatRelativeTime(date: Date): string {\n const now = new Date()\n const diffMs = now.getTime() - date.getTime()\n const diffSecs = Math.floor(diffMs / 1000)\n const diffMins = Math.floor(diffSecs / 60)\n const diffHours = Math.floor(diffMins / 60)\n const diffDays = Math.floor(diffHours / 24)\n\n if (diffSecs < 60) return \"agora\"\n if (diffMins < 60) return `${String(diffMins)}m atrás`\n if (diffHours < 24) return `${String(diffHours)}h atrás`\n if (diffDays < 7) return `${String(diffDays)}d atrás`\n\n return date.toLocaleDateString()\n}\n\n/**\n * Parse content and highlight mentions\n */\nfunction parseContent(\n content: string,\n mentionableUsers?: CommentUser[],\n onMentionClick?: (userId: string) => void\n): ReactNode {\n if (!content) return null\n\n // Pattern to match @mentions\n const mentionPattern = /@(\\w+)/g\n const parts: ReactNode[] = []\n let lastIndex = 0\n let match\n\n while ((match = mentionPattern.exec(content)) !== null) {\n // Add text before the mention\n if (match.index > lastIndex) {\n parts.push(content.slice(lastIndex, match.index))\n }\n\n const mentionName = match[1]\n const user = mentionableUsers?.find(\n (u) => u.name.toLowerCase().replaceAll(/\\s+/g, \"\") === mentionName?.toLowerCase()\n )\n\n parts.push(\n <span\n key={match.index}\n className={commentMentionVariants()}\n role=\"button\"\n tabIndex={0}\n onClick={() => { if (user) { onMentionClick?.(user.id); } }}\n onKeyDown={(e) => {\n if ((e.key === \"Enter\" || e.key === \" \") && user) {\n onMentionClick?.(user.id);\n }\n }}\n >\n @{mentionName}\n </span>\n )\n\n lastIndex = match.index + match[0].length\n }\n\n // Add remaining text\n if (lastIndex < content.length) {\n parts.push(content.slice(lastIndex))\n }\n\n return parts.length > 0 ? parts : content\n}\n\n/**\n * CommentInput component for writing new comments or editing\n */\nfunction CommentInput({\n placeholder = \"Escreva um comentário...\",\n allowMentions = true,\n allowAttachments = false,\n mentionableUsers = [],\n parentId,\n initialContent = \"\",\n submitLabel = \"Enviar\",\n cancelLabel = \"Cancelar\",\n isEditing = false,\n isSubmitting = false,\n showCancel = false,\n onSubmit,\n onCancel,\n onMention,\n className,\n ...props\n}: CommentInputProps) {\n const inputId = useId()\n const textareaRef = useRef<HTMLTextAreaElement>(null)\n const [content, setContent] = useState(initialContent)\n const [isFocused, setIsFocused] = useState(false)\n const [showMentions, setShowMentions] = useState(false)\n const [mentionSearch, setMentionSearch] = useState(\"\")\n const [selectedMentionIndex, setSelectedMentionIndex] = useState(0)\n\n const filteredUsers = useMemo(() => {\n if (!mentionSearch) return mentionableUsers.slice(0, 5)\n return mentionableUsers\n .filter((u) => u.name.toLowerCase().includes(mentionSearch.toLowerCase()))\n .slice(0, 5)\n }, [mentionableUsers, mentionSearch])\n\n const handleSubmit = useCallback(() => {\n if (!content.trim() || isSubmitting) return\n\n // Extract mentions from content\n const mentionPattern = /@(\\w+)/g\n const mentions: string[] = []\n let match\n\n while ((match = mentionPattern.exec(content)) !== null) {\n const matchName = match[1] ?? \"\"\n const user = mentionableUsers.find(\n (u) => u.name.toLowerCase().replaceAll(/\\s+/g, \"\") === matchName.toLowerCase()\n )\n if (user && !mentions.includes(user.id)) {\n mentions.push(user.id)\n }\n }\n\n onSubmit?.({\n content: content.trim(),\n parentId,\n mentions,\n })\n\n if (!isEditing) {\n setContent(\"\")\n }\n }, [content, isSubmitting, isEditing, parentId, mentionableUsers, onSubmit])\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (showMentions) {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n setSelectedMentionIndex((prev) =>\n Math.min(prev + 1, filteredUsers.length - 1)\n )\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n setSelectedMentionIndex((prev) => Math.max(prev - 1, 0))\n } else if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault()\n const selectedUser = filteredUsers[selectedMentionIndex]\n if (selectedUser) {\n insertMention(selectedUser)\n }\n } else if (e.key === \"Escape\") {\n setShowMentions(false)\n }\n } else if (e.key === \"Enter\" && (e.ctrlKey || e.metaKey)) {\n e.preventDefault()\n handleSubmit()\n }\n }\n\n const handleChange = (value: string) => {\n setContent(value)\n\n if (allowMentions) {\n // Check for @ trigger\n const cursorPos = textareaRef.current?.selectionStart ?? 0\n const textBeforeCursor = value.slice(0, cursorPos)\n const atMatch = /@(\\w*)$/.exec(textBeforeCursor)\n\n if (atMatch) {\n setShowMentions(true)\n setMentionSearch(atMatch[1] ?? \"\")\n setSelectedMentionIndex(0)\n } else {\n setShowMentions(false)\n setMentionSearch(\"\")\n }\n }\n }\n\n const insertMention = (user: CommentUser) => {\n const cursorPos = textareaRef.current?.selectionStart ?? 0\n const textBeforeCursor = content.slice(0, cursorPos)\n const textAfterCursor = content.slice(cursorPos)\n const atMatch = /@(\\w*)$/.exec(textBeforeCursor)\n\n if (atMatch) {\n const newTextBefore = textBeforeCursor.slice(0, atMatch.index)\n const mention = `@${user.name.replaceAll(/\\s+/g, \"\")} `\n setContent(newTextBefore + mention + textAfterCursor)\n setShowMentions(false)\n setMentionSearch(\"\")\n onMention?.({ userId: user.id })\n\n // Focus back on textarea\n setTimeout(() => {\n textareaRef.current?.focus()\n const newCursorPos = newTextBefore.length + mention.length\n textareaRef.current?.setSelectionRange(newCursorPos, newCursorPos)\n }, 0)\n }\n }\n\n return (\n <div\n className={cn(\n commentInputContainerVariants({ isFocused, isSubmitting }),\n className\n )}\n data-slot=\"comment-input\"\n {...props}\n >\n <div className=\"relative\">\n <Textarea\n ref={textareaRef}\n aria-describedby={`${inputId}-help`}\n aria-label={isEditing ? \"Editar comentário\" : \"Novo comentário\"}\n className=\"min-h-20 resize-none border-0 focus-visible:ring-0 focus-visible:ring-offset-0\"\n disabled={isSubmitting}\n id={inputId}\n placeholder={placeholder}\n value={content}\n onBlur={() => { setIsFocused(false); }}\n onChange={(e) => { handleChange(e.target.value); }}\n onFocus={() => { setIsFocused(true); }}\n onKeyDown={handleKeyDown}\n />\n\n {/* Mention suggestions */}\n {showMentions && filteredUsers.length > 0 && (\n <div\n className={mentionSuggestionsVariants({ position: \"below\" })}\n data-slot=\"comment-mention-suggestions\"\n role=\"listbox\"\n >\n {filteredUsers.map((user, index) => (\n <button\n key={user.id}\n className={mentionSuggestionItemVariants({\n isSelected: index === selectedMentionIndex,\n })}\n aria-selected={index === selectedMentionIndex}\n role=\"option\"\n type=\"button\"\n onClick={() => { insertMention(user); }}\n >\n <Avatar size=\"xs\">\n {user.avatar ? (\n <AvatarImage alt={user.name} src={user.avatar} />\n ) : null}\n <AvatarFallback>{getInitials(user.name)}</AvatarFallback>\n </Avatar>\n <span>{user.name}</span>\n {user.role && (\n <span className=\"text-muted-foreground text-xs\">\n {user.role}\n </span>\n )}\n </button>\n ))}\n </div>\n )}\n </div>\n\n <div className=\"flex items-center justify-between border-t p-2\">\n <div className=\"flex items-center gap-1\">\n {allowMentions && (\n <Button\n aria-label=\"Mencionar alguém\"\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => {\n const newContent = content + \"@\"\n setContent(newContent)\n handleChange(newContent)\n textareaRef.current?.focus()\n }}\n >\n <span className=\"text-sm font-medium\">@</span>\n </Button>\n )}\n {allowAttachments && (\n <Button\n aria-label=\"Anexar arquivo\"\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n <Paperclip className=\"h-4 w-4\" />\n </Button>\n )}\n <Button\n aria-label=\"Adicionar emoji\"\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n <Smile className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {showCancel && (\n <Button\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onCancel}\n >\n {cancelLabel}\n </Button>\n )}\n <Button\n disabled={!content.trim() || isSubmitting}\n size=\"sm\"\n type=\"button\"\n onClick={handleSubmit}\n >\n <Send className=\"mr-1 h-4 w-4\" />\n {submitLabel}\n </Button>\n </div>\n </div>\n\n <span className=\"sr-only\" id={`${inputId}-help`}>\n Pressione Ctrl+Enter para enviar. Use @ para mencionar alguém.\n </span>\n </div>\n )\n}\n\n/**\n * CommentReactions component displays and manages reactions\n */\nfunction CommentReactions({\n commentId,\n reactions = [],\n availableReactions = defaultReactions,\n readOnly = false,\n onReact,\n}: {\n availableReactions?: Reaction[]\n commentId: string\n onReact?: (payload: CommentReactPayload) => void\n reactions?: { count: number; emoji: string; hasReacted?: boolean; users: string[] }[]\n readOnly?: boolean\n}) {\n const [showPicker, setShowPicker] = useState(false)\n\n const handleReact = (emoji: string) => {\n onReact?.({ commentId, reaction: emoji })\n setShowPicker(false)\n }\n\n return (\n <div className=\"flex flex-wrap items-center gap-1\" data-slot=\"comment-reactions\">\n {reactions.map((reaction) => (\n <button\n key={reaction.emoji}\n className={commentReactionVariants({\n hasReacted: reaction.hasReacted,\n })}\n disabled={readOnly}\n title={`${String(reaction.count)} ${reaction.count === 1 ? \"pessoa\" : \"pessoas\"}`}\n type=\"button\"\n onClick={() => { handleReact(reaction.emoji); }}\n >\n <span>{reaction.emoji}</span>\n <span>{reaction.count}</span>\n </button>\n ))}\n\n {!readOnly && (\n <div className=\"relative\">\n <button\n className=\"inline-flex h-6 w-6 items-center justify-center rounded-full border border-dashed border-muted-foreground/30 text-muted-foreground transition-colors hover:border-muted-foreground hover:text-foreground\"\n title=\"Adicionar reação\"\n type=\"button\"\n onClick={() => { setShowPicker(!showPicker); }}\n >\n <Smile className=\"h-3 w-3\" />\n </button>\n\n {showPicker && (\n <div\n className=\"absolute bottom-full left-0 z-50 mb-1 flex gap-1 rounded-lg border bg-popover p-2 shadow-lg\"\n role=\"listbox\"\n >\n {availableReactions.map((reaction) => (\n <button\n key={reaction.shortcode}\n className=\"rounded p-1 text-lg transition-colors hover:bg-accent\"\n role=\"option\"\n title={reaction.label}\n type=\"button\"\n onClick={() => { handleReact(reaction.emoji); }}\n >\n {reaction.emoji}\n </button>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * CommentItem component renders a single comment\n */\nfunction CommentItem({\n comment,\n confirmDelete,\n currentUser,\n depth = 0,\n maxDepth = 3,\n layout = \"list\",\n allowReplies = true,\n allowReactions = true,\n allowEditing = true,\n allowDeleting = true,\n allowMentions = true,\n reactions = defaultReactions,\n mentionableUsers = [],\n readOnly = false,\n onReply,\n onEdit,\n onDelete,\n onReact,\n className,\n ...props\n}: CommentItemProps) {\n const commentId = useId()\n const [isReplying, setIsReplying] = useState(false)\n const [isEditing, setIsEditing] = useState(false)\n const [showActions, setShowActions] = useState(false)\n\n const isOwn = currentUser?.id === comment.author.id\n const canReply = allowReplies && depth < maxDepth && !readOnly\n const canEdit = allowEditing && isOwn && !readOnly && !comment.isDeleted\n const canDelete = allowDeleting && isOwn && !readOnly && !comment.isDeleted\n\n const handleReply = (payload: CommentSubmitPayload) => {\n onReply?.({ ...payload, parentId: comment.id })\n setIsReplying(false)\n }\n\n const handleEdit = (payload: CommentSubmitPayload) => {\n onEdit?.({ id: comment.id, content: payload.content })\n setIsEditing(false)\n }\n\n const handleDelete = () => {\n const shouldDelete = confirmDelete\n ? confirmDelete(comment)\n : window.confirm(\"Tem certeza que deseja excluir este comentário?\")\n\n if (shouldDelete) {\n onDelete?.({ id: comment.id })\n }\n }\n\n if (comment.isDeleted) {\n return (\n <article\n data-deleted\n aria-label=\"Comentário excluído\"\n className={cn(commentItemVariants({ layout, isDeleted: true }), className)}\n data-slot=\"comment-item\"\n {...props}\n >\n <p className=\"text-sm italic text-muted-foreground\">\n Este comentário foi excluído.\n </p>\n </article>\n )\n }\n\n return (\n <article\n className={cn(\n commentItemVariants({ layout, isOwn, isPinned: comment.isPinned }),\n className\n )}\n aria-describedby={`${commentId}-content`}\n aria-label={`Comentário de ${comment.author.name}`}\n data-slot=\"comment-item\"\n {...props}\n >\n {/* Timeline marker */}\n {layout === \"timeline\" && (\n <div\n className={commentTimelineMarkerVariants({ status: \"default\" })}\n data-slot=\"comment-timeline-marker\"\n />\n )}\n\n {/* Header */}\n <div className={commentHeaderVariants({ layout })} data-slot=\"comment-header\">\n {layout !== \"chat\" && (\n <Avatar size=\"sm\">\n {comment.author.avatar ? (\n <AvatarImage alt={comment.author.name} src={comment.author.avatar} />\n ) : null}\n <AvatarFallback>{getInitials(comment.author.name)}</AvatarFallback>\n </Avatar>\n )}\n\n <div className=\"flex flex-1 items-center gap-2\">\n <span className=\"text-sm font-medium text-foreground\">\n {comment.author.name}\n </span>\n <span className=\"text-xs text-muted-foreground\">\n {formatRelativeTime(comment.createdAt)}\n </span>\n {comment.isEdited && (\n <span className=\"text-xs text-muted-foreground\">(editado)</span>\n )}\n {comment.isPinned && (\n <span className=\"text-xs font-medium text-primary\">Fixado</span>\n )}\n </div>\n\n {(canEdit || canDelete) && (\n <div className=\"relative\">\n <Button\n aria-expanded={showActions}\n aria-haspopup=\"true\"\n aria-label=\"Mais ações\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => { setShowActions(!showActions); }}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n\n {showActions && (\n <div\n className=\"absolute right-0 top-full z-10 mt-1 min-w-28 rounded-md border bg-popover p-1 shadow-md\"\n role=\"menu\"\n >\n {canEdit && (\n <button\n className=\"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent\"\n role=\"menuitem\"\n type=\"button\"\n onClick={() => {\n setIsEditing(true)\n setShowActions(false)\n }}\n >\n <Edit2 className=\"h-3.5 w-3.5\" />\n Editar\n </button>\n )}\n {canDelete && (\n <button\n className=\"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-destructive hover:bg-accent\"\n role=\"menuitem\"\n type=\"button\"\n onClick={() => {\n handleDelete()\n setShowActions(false)\n }}\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n Excluir\n </button>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Content */}\n {isEditing ? (\n <div className=\"mt-2\">\n <CommentInput\n isEditing\n showCancel\n allowMentions={allowMentions}\n cancelLabel=\"Cancelar\"\n initialContent={comment.content}\n mentionableUsers={mentionableUsers}\n placeholder=\"Editar comentário...\"\n submitLabel=\"Salvar\"\n onCancel={() => { setIsEditing(false); }}\n onSubmit={handleEdit}\n />\n </div>\n ) : (\n <div\n className={commentContentVariants({ layout })}\n data-slot=\"comment-content\"\n id={`${commentId}-content`}\n >\n <p className=\"whitespace-pre-wrap\">\n {parseContent(comment.content, mentionableUsers)}\n </p>\n </div>\n )}\n\n {/* Attachments */}\n {comment.attachments && comment.attachments.length > 0 && (\n <div className=\"mt-2 flex flex-wrap gap-2\" data-slot=\"comment-attachments\">\n {comment.attachments.map((attachment) => (\n <a\n key={attachment.id}\n className=\"flex items-center gap-1 rounded border bg-muted/50 px-2 py-1 text-xs hover:bg-muted\"\n href={attachment.url}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n <Paperclip className=\"h-3 w-3\" />\n {attachment.name}\n </a>\n ))}\n </div>\n )}\n\n {/* Reactions */}\n {allowReactions && (\n <div className=\"mt-2\">\n <CommentReactions\n availableReactions={reactions}\n commentId={comment.id}\n reactions={comment.reactions}\n readOnly={readOnly}\n onReact={onReact}\n />\n </div>\n )}\n\n {/* Actions */}\n <div className={commentActionsVariants({ layout })} data-slot=\"comment-actions\">\n {canReply && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => { setIsReplying(!isReplying); }}\n >\n <CornerDownRight className=\"mr-1 h-3 w-3\" />\n Responder\n </Button>\n )}\n </div>\n\n {/* Reply input */}\n {isReplying && (\n <div className=\"mt-3\">\n <CommentInput\n showCancel\n allowMentions={allowMentions}\n mentionableUsers={mentionableUsers}\n parentId={comment.id}\n placeholder={`Responder a ${comment.author.name}...`}\n onCancel={() => { setIsReplying(false); }}\n onSubmit={handleReply}\n />\n </div>\n )}\n\n {/* Replies */}\n {comment.replies && comment.replies.length > 0 && (\n <div\n className={cn(\n commentRepliesVariants({ layout }),\n \"relative\"\n )}\n data-slot=\"comment-replies\"\n >\n {layout === \"list\" && (\n <div className={commentThreadLineVariants({ layout })} />\n )}\n {comment.replies.map((reply) => (\n <CommentItem\n key={reply.id}\n allowDeleting={allowDeleting}\n allowEditing={allowEditing}\n allowMentions={allowMentions}\n allowReactions={allowReactions}\n allowReplies={allowReplies}\n comment={reply}\n confirmDelete={confirmDelete}\n currentUser={currentUser}\n depth={depth + 1}\n layout={layout}\n maxDepth={maxDepth}\n mentionableUsers={mentionableUsers}\n reactions={reactions}\n readOnly={readOnly}\n onDelete={onDelete}\n onEdit={onEdit}\n onReact={onReact}\n onReply={onReply}\n />\n ))}\n </div>\n )}\n </article>\n )\n}\n\n/**\n * CommentSystem displays and manages a complete comment system\n * with threading, mentions, reactions, and moderation support.\n *\n * @example\n * ```tsx\n * const comments = [\n * {\n * id: '1',\n * content: 'Great work!',\n * author: { id: '1', name: 'John Doe' },\n * createdAt: new Date()\n * }\n * ]\n *\n * <CommentSystem\n * comments={comments}\n * currentUser={{ id: '2', name: 'Jane Doe' }}\n * onSubmit={({ content }) => console.log('New comment:', content)}\n * />\n * ```\n */\nfunction CommentSystem({\n comments,\n variant = \"default\",\n layout = \"list\",\n confirmDelete,\n currentUser,\n allowReplies = true,\n allowReactions = true,\n allowEditing = true,\n allowDeleting = true,\n allowMentions = true,\n allowAttachments = false,\n maxDepth = 3,\n mentionableUsers = [],\n reactions = defaultReactions,\n placeholder = \"Escreva um comentário...\",\n readOnly = false,\n isLoading = false,\n error,\n onSubmit,\n onEdit,\n onDelete,\n onReact,\n onMention,\n onLoadMore,\n className,\n \"aria-label\": ariaLabel = \"Sistema de comentários\",\n ...props\n}: CommentSystemProps) {\n const systemId = useId()\n\n const handleReply = (payload: CommentSubmitPayload) => {\n onSubmit?.(payload)\n }\n\n const hasComments = comments.length > 0\n const showInput = !readOnly && currentUser\n\n // Loading state\n if (isLoading) {\n return (\n <div\n data-loading\n aria-busy=\"true\"\n aria-label={ariaLabel}\n className={cn(commentSystemVariants({ variant, layout }), className)}\n data-slot=\"comment-system\"\n {...props}\n >\n <div className=\"flex flex-col gap-4\">\n {[1, 2, 3].map((i) => (\n <div\n key={i}\n className=\"animate-pulse rounded-lg border bg-card p-4\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"h-8 w-8 rounded-full bg-muted\" />\n <div className=\"space-y-2\">\n <div className=\"h-4 w-24 rounded bg-muted\" />\n <div className=\"h-3 w-16 rounded bg-muted\" />\n </div>\n </div>\n <div className=\"mt-3 space-y-2\">\n <div className=\"h-4 w-full rounded bg-muted\" />\n <div className=\"h-4 w-3/4 rounded bg-muted\" />\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n }\n\n // Error state\n if (error) {\n return (\n <div\n data-error\n aria-label={ariaLabel}\n className={cn(commentSystemVariants({ variant, layout }), className)}\n data-slot=\"comment-system\"\n {...props}\n >\n <div className=\"rounded-lg border border-destructive/50 bg-destructive/5 p-4 text-center\">\n <X className=\"mx-auto h-8 w-8 text-destructive\" />\n <p className=\"mt-2 text-sm text-destructive\">{error}</p>\n <Button\n className=\"mt-3\"\n size=\"sm\"\n variant=\"outline\"\n onClick={() => onLoadMore?.({})}\n >\n Tentar novamente\n </Button>\n </div>\n </div>\n )\n }\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(commentSystemVariants({ variant, layout }), className)}\n data-slot=\"comment-system\"\n data-variant={variant}\n id={systemId}\n {...props}\n >\n {/* Input for new comments */}\n {showInput && (\n <div className=\"mb-4\" data-slot=\"comment-system-input\">\n <CommentInput\n allowAttachments={allowAttachments}\n allowMentions={allowMentions}\n mentionableUsers={mentionableUsers}\n placeholder={placeholder}\n onMention={onMention}\n onSubmit={onSubmit}\n />\n </div>\n )}\n\n {/* Comments list */}\n {hasComments ? (\n <div data-slot=\"comment-system-list\" role=\"feed\">\n {comments.map((comment) => (\n <CommentItem\n key={comment.id}\n allowDeleting={allowDeleting}\n allowEditing={allowEditing}\n allowMentions={allowMentions}\n allowReactions={allowReactions}\n allowReplies={allowReplies}\n comment={comment}\n confirmDelete={confirmDelete}\n currentUser={currentUser}\n layout={layout ?? \"list\"}\n maxDepth={maxDepth}\n mentionableUsers={mentionableUsers}\n reactions={reactions}\n readOnly={readOnly}\n onDelete={onDelete}\n onEdit={onEdit}\n onReact={onReact}\n onReply={handleReply}\n />\n ))}\n </div>\n ) : (\n <div\n className={commentEmptyStateVariants({\n variant: variant === \"compact\" ? \"compact\" : \"default\",\n })}\n data-slot=\"comment-system-empty\"\n >\n <MessageCircle className=\"h-12 w-12 text-muted-foreground/50\" />\n <p className=\"mt-2 text-sm text-muted-foreground\">\n Nenhum comentário ainda.\n </p>\n {!readOnly && currentUser && (\n <p className=\"mt-1 text-xs text-muted-foreground\">\n Seja o primeiro a comentar!\n </p>\n )}\n </div>\n )}\n\n {/* Load more button */}\n {onLoadMore && hasComments && (\n <div className=\"mt-4 text-center\">\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => {\n onLoadMore({ before: comments[comments.length - 1]?.id })\n }}\n >\n Carregar mais comentários\n </Button>\n </div>\n )}\n </div>\n )\n}\n\nexport {\n commentActionsVariants,\n commentContentVariants,\n commentEmptyStateVariants,\n commentHeaderVariants,\n CommentInput,\n commentInputContainerVariants,\n CommentItem,\n commentItemVariants,\n commentMentionVariants,\n CommentReactions,\n commentReactionVariants,\n commentRepliesVariants,\n CommentSystem,\n commentSystemVariants,\n commentThreadLineVariants,\n commentTimelineMarkerVariants,\n defaultReactions,\n mentionSuggestionItemVariants,\n mentionSuggestionsVariants,\n}\n\nexport type {\n Comment,\n CommentAttachment,\n CommentDeletePayload,\n CommentEditPayload,\n CommentInputProps,\n CommentItemProps,\n CommentMentionPayload,\n CommentReaction,\n CommentReactPayload,\n CommentSubmitPayload,\n CommentSystemProps,\n CommentUser,\n Reaction,\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Label } from './chunk-
|
|
1
|
+
import { Label } from './chunk-SCGKQ5RE.js';
|
|
2
2
|
import { cn } from './chunk-HRNDJU7D.js';
|
|
3
3
|
import { Slot } from '@radix-ui/react-slot';
|
|
4
4
|
import * as React from 'react';
|
|
@@ -155,5 +155,5 @@ function FormMessage({
|
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
export { Form, FormControl, FormDescription, FormField, FormFieldContext, FormItem, FormItemContext, FormLabel, FormMessage, formDescriptionVariants, formItemVariants, formLabelVariants, formMessageVariants, useFormField };
|
|
158
|
-
//# sourceMappingURL=chunk-
|
|
159
|
-
//# sourceMappingURL=chunk-
|
|
158
|
+
//# sourceMappingURL=chunk-JMZ4CO6R.js.map
|
|
159
|
+
//# sourceMappingURL=chunk-JMZ4CO6R.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/forms/Form/Form.variants.ts","../src/components/forms/Form/Form.tsx"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/forms/Form/Form.variants.ts","../src/components/forms/Form/Form.tsx"],"names":[],"mappings":"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","file":"chunk-JMZ4CO6R.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * FormItem variant styles using CVA\n *\n * Controls spacing and layout for form field containers.\n */\nexport const formItemVariants = cva(\"grid gap-2\", {\n variants: {\n spacing: {\n default: \"gap-2\",\n tight: \"gap-1\",\n loose: \"gap-3\",\n },\n },\n defaultVariants: {\n spacing: \"default\",\n },\n})\n\n/**\n * FormLabel variant styles using CVA\n *\n * Handles label styling with error state support.\n */\nexport const formLabelVariants = cva(\n \"text-[length:var(--form-label-size)] font-[var(--form-label-weight)] text-[color:var(--form-label-fg)] leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n {\n variants: {\n error: {\n true: \"text-[color:var(--form-error-fg)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n error: false,\n },\n }\n)\n\n/**\n * FormDescription variant styles using CVA\n *\n * Provides consistent styling for field helper text.\n */\nexport const formDescriptionVariants = cva(\"text-muted-foreground text-sm\", {\n variants: {\n size: {\n default: \"text-sm\",\n small: \"text-xs\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n})\n\n/**\n * FormMessage variant styles using CVA\n *\n * Styles validation messages with different states (error, success).\n */\nexport const formMessageVariants = cva(\"text-sm font-medium\", {\n variants: {\n state: {\n error: \"text-destructive\",\n success: \"text-success\",\n info: \"text-muted-foreground\",\n },\n },\n defaultVariants: {\n state: \"error\",\n },\n})\n\n// Export variant prop types\nexport type FormItemVariantProps = VariantProps<typeof formItemVariants>\nexport type FormLabelVariantProps = VariantProps<typeof formLabelVariants>\nexport type FormDescriptionVariantProps = VariantProps<\n typeof formDescriptionVariants\n>\nexport type FormMessageVariantProps = VariantProps<typeof formMessageVariants>\n","\"use client\"\n\nimport type {\n FormControlProps,\n FormDescriptionProps,\n FormFieldContextValue,\n FormItemContextValue,\n FormItemProps,\n FormLabelProps,\n FormMessageProps,\n} from \"./Form.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport * as React from \"react\"\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n useFormState,\n} from \"react-hook-form\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Label } from \"../../primitives/Label\"\nimport {\n formDescriptionVariants,\n formItemVariants,\n formLabelVariants,\n formMessageVariants,\n} from \"./Form.variants\"\n\nconst Form = FormProvider\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nfunction FormField<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({ ...props }: ControllerProps<TFieldValues, TName>) {\n return (\n <FormFieldContext value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.use(FormFieldContext)\n const itemContext = React.use(FormItemContext)\n const { getFieldState } = useFormContext()\n const formState = useFormState({ name: fieldContext.name })\n const fieldState = getFieldState(fieldContext.name, formState)\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nfunction FormItem({ className, spacing, ...props }: FormItemProps) {\n const id = React.useId()\n\n return (\n <FormItemContext value={{ id }}>\n <div\n className={cn(formItemVariants({ spacing }), className)}\n data-slot=\"form-item\"\n {...props}\n />\n </FormItemContext>\n )\n}\n\nfunction FormLabel({ className, ...props }: FormLabelProps) {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n className={cn(formLabelVariants({ error: !!error }), className)}\n data-error={!!error}\n data-slot=\"form-label\"\n htmlFor={formItemId}\n {...props}\n />\n )\n}\n\nfunction FormControl({ ...props }: FormControlProps) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n aria-describedby={\n !error\n ? formDescriptionId\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n data-slot=\"form-control\"\n id={formItemId}\n {...props}\n />\n )\n}\n\nfunction FormDescription({ className, size, ...props }: FormDescriptionProps) {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n className={cn(formDescriptionVariants({ size }), className)}\n data-slot=\"form-description\"\n id={formDescriptionId}\n {...props}\n />\n )\n}\n\nfunction FormMessage({\n className,\n state,\n children,\n ...props\n}: FormMessageProps) {\n const { error, formMessageId } = useFormField()\n const body = error ? (error.message ?? \"\") : children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n className={cn(formMessageVariants({ state }), className)}\n data-slot=\"form-message\"\n id={formMessageId}\n role=\"alert\"\n {...props}\n >\n {body}\n </p>\n )\n}\n\nexport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormFieldContext,\n FormItem,\n FormItemContext,\n FormLabel,\n FormMessage,\n useFormField,\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Label } from './chunk-
|
|
1
|
+
import { Label } from './chunk-SCGKQ5RE.js';
|
|
2
2
|
import { Checkbox } from './chunk-XETKCF73.js';
|
|
3
|
-
import { Button } from './chunk-
|
|
3
|
+
import { Button } from './chunk-ONQCNOLU.js';
|
|
4
4
|
import { cn } from './chunk-HRNDJU7D.js';
|
|
5
5
|
import { cva } from 'class-variance-authority';
|
|
6
6
|
import { Loader2, AlertCircle, ArrowLeft, ArrowRight, Check, Settings2, Table2, Filter, Eye, Clock, Download, Printer, FileJson, FileSpreadsheet, FileText, Calendar } from 'lucide-react';
|
|
@@ -991,5 +991,5 @@ function ReportGenerator({
|
|
|
991
991
|
}
|
|
992
992
|
|
|
993
993
|
export { ReportGenerator, configSectionVariants, errorStateVariants, exportButtonGroupVariants, formActionsVariants, loadingStateVariants, previewContainerVariants, previewContentVariants, previewHeaderVariants, reportGeneratorVariants, stepBadgeVariants, stepIndicatorVariants, stepItemVariants, templateCardVariants, templateGridVariants };
|
|
994
|
-
//# sourceMappingURL=chunk-
|
|
995
|
-
//# sourceMappingURL=chunk-
|
|
994
|
+
//# sourceMappingURL=chunk-KC6CHPT3.js.map
|
|
995
|
+
//# sourceMappingURL=chunk-KC6CHPT3.js.map
|